diff --git a/packages/web/src/jsonui/JsonUiContentRenderer.svelte b/packages/web/src/jsonui/JsonUiContentRenderer.svelte
new file mode 100644
index 000000000..b1562d16d
--- /dev/null
+++ b/packages/web/src/jsonui/JsonUiContentRenderer.svelte
@@ -0,0 +1,22 @@
+
+
+{#each blocks as block, i}
+ {#if block.type in componentMap}
+
+ {/if}
+{/each}
diff --git a/packages/web/src/jsonui/JsonUiHeading.svelte b/packages/web/src/jsonui/JsonUiHeading.svelte
new file mode 100644
index 000000000..4217c7555
--- /dev/null
+++ b/packages/web/src/jsonui/JsonUiHeading.svelte
@@ -0,0 +1,13 @@
+
+
+{text}
+
+
\ No newline at end of file
diff --git a/packages/web/src/jsonui/JsonUiLinkButton.svelte b/packages/web/src/jsonui/JsonUiLinkButton.svelte
new file mode 100644
index 000000000..fe3ac24f5
--- /dev/null
+++ b/packages/web/src/jsonui/JsonUiLinkButton.svelte
@@ -0,0 +1,21 @@
+
+
+
+ openWebLink(link)} value={text} skipWidth />
+
+
+
diff --git a/packages/web/src/jsonui/JsonUiTextBlock.svelte b/packages/web/src/jsonui/JsonUiTextBlock.svelte
new file mode 100644
index 000000000..222cbca2a
--- /dev/null
+++ b/packages/web/src/jsonui/JsonUiTextBlock.svelte
@@ -0,0 +1,11 @@
+
+
+{text}
+
+
\ No newline at end of file
diff --git a/packages/web/src/jsonui/JsonUiTickList.svelte b/packages/web/src/jsonui/JsonUiTickList.svelte
new file mode 100644
index 000000000..4cff70e97
--- /dev/null
+++ b/packages/web/src/jsonui/JsonUiTickList.svelte
@@ -0,0 +1,22 @@
+
+
+
+ {#each items as item}
+ - {item}
+ {/each}
+
+
+
diff --git a/packages/web/src/jsonui/jsonuitypes.ts b/packages/web/src/jsonui/jsonuitypes.ts
new file mode 100644
index 000000000..37848b9a2
--- /dev/null
+++ b/packages/web/src/jsonui/jsonuitypes.ts
@@ -0,0 +1,5 @@
+export type JsonUiBlock =
+ | { type: 'text'; text: string }
+ | { type: 'heading'; text: string; level?: 1|2|3|4|5|6 }
+ | { type: 'ticklist'; items: string[] }
+ | { type: 'button'; text: string; link: string; newTab?: boolean };
diff --git a/packages/web/src/widgets/AdminPremiumPromoWidget.svelte b/packages/web/src/widgets/AdminPremiumPromoWidget.svelte
index ea274d411..b6717c27c 100644
--- a/packages/web/src/widgets/AdminPremiumPromoWidget.svelte
+++ b/packages/web/src/widgets/AdminPremiumPromoWidget.svelte
@@ -1,55 +1,59 @@
-
- Try DbGate Premium
-
- Upgrade to get exclusive features:
-
-
- - Query designer
- - AI powered database chat
- - Unlimited DbGate Cloud storage
- - Shared cloud folders
- - Charts from query result
- - Compare database models
- - Synchronize database structure
- - Backup & restore database
- - Advanced ER diagram settings
- - Export database model
- - Firestore, libSQL, Turso, CosmosDB, Redshift support
- - Amazon and Azure identity providers
- - E-mail support
-
-
- Download DbGate Premium
-
- - Free 30 day trial
- - DbGate Premium will reuse your connections and files from DbGate Community
-
-
-
- openWebLink('https://www.dbgate.io/download')} value="Download" />
-
-
- Purchase DbGate Premium
-
- - Use monthly or yearly subscription
-
-
-
- openWebLink('https://www.dbgate.io/purchase/premium')} value="Purchase" />
-
-
- Get PREMIUM license for free
- Your feedback is very valuable for us. We have time-limited offers available for users who provide feedback.
-
-
- openWebLink('https://www.dbgate.io/review?utm_campaign=communityWidget')} value="View current offer" skipWidth />
-
+