diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte
index 74acfea14..0c00fd046 100644
--- a/packages/web/src/icons/FontIcon.svelte
+++ b/packages/web/src/icons/FontIcon.svelte
@@ -217,6 +217,8 @@
'icon autocommit-on': 'mdi mdi-check-circle',
'icon autocommit-off': 'mdi mdi-check-circle-outline',
+ 'icon premium': 'mdi mdi-star',
+
'img ok': 'mdi mdi-check-circle color-icon-green',
'img ok-inv': 'mdi mdi-check-circle color-icon-inv-green',
'img alert': 'mdi mdi-alert-circle color-icon-blue',
diff --git a/packages/web/src/widgets/AdminPremiumPromoWidget.svelte b/packages/web/src/widgets/AdminPremiumPromoWidget.svelte
new file mode 100644
index 000000000..a26f494a6
--- /dev/null
+++ b/packages/web/src/widgets/AdminPremiumPromoWidget.svelte
@@ -0,0 +1,79 @@
+
+
+
+ Try DbGate Premium
+
+ Upgrade to get exclusive features:
+
+
+ - Query designer
+ - Compare database models
+ - Synchronize database structure
+ - Backup & restore database
+ - Export database model
+ - AI assistant
+ - 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://dbgate.io/download')} value="Download" />
+
+
+ Purchase DbGate Premium
+
+ - Use monthly or yearly subscription
+
+
+
+ openWebLink('https://dbgate.io/purchase/premium')} value="Purchase" />
+
+
+
+
diff --git a/packages/web/src/widgets/WidgetContainer.svelte b/packages/web/src/widgets/WidgetContainer.svelte
index 096c920c8..814a60c96 100644
--- a/packages/web/src/widgets/WidgetContainer.svelte
+++ b/packages/web/src/widgets/WidgetContainer.svelte
@@ -8,6 +8,7 @@
import HistoryWidget from './HistoryWidget.svelte';
import AppWidget from './AppWidget.svelte';
import AdminMenuWidget from './AdminMenuWidget.svelte';
+ import AdminPremiumPromoWidget from './AdminPremiumPromoWidget.svelte';
@@ -33,3 +34,6 @@
{#if $visibleSelectedWidget == 'admin'}
{/if}
+{#if $visibleSelectedWidget == 'premium'}
+
+{/if}
diff --git a/packages/web/src/widgets/WidgetIconPanel.svelte b/packages/web/src/widgets/WidgetIconPanel.svelte
index 8214d1953..dec384ed0 100644
--- a/packages/web/src/widgets/WidgetIconPanel.svelte
+++ b/packages/web/src/widgets/WidgetIconPanel.svelte
@@ -12,6 +12,7 @@
} from '../stores';
import mainMenuDefinition from '../../../../app/src/mainMenuDefinition';
import hasPermission from '../utility/hasPermission';
+ import { isProApp } from '../utility/proTools';
let domSettings;
let domMainMenu;
@@ -61,6 +62,12 @@
name: 'app',
title: 'Application layers',
},
+ {
+ icon: 'icon premium',
+ name: 'premium',
+ title: 'Premium promo',
+ isPremiumPromo: true,
+ },
// {
// icon: 'icon settings',
// name: 'settings',
@@ -104,7 +111,9 @@
{/if}
- {#each widgets.filter(x => x && hasPermission(`widgets/${x.name}`)) as item}
+ {#each widgets
+ .filter(x => x && hasPermission(`widgets/${x.name}`))
+ .filter(x => !x.isPremiumPromo || !isProApp()) as item}
handleChangeWidget(item.name)}
>
+ {#if item.isPremiumPromo}
+
Premium
+ {/if}
{/each}
@@ -141,6 +153,7 @@
align-items: center;
justify-content: center;
color: var(--theme-font-inv-2);
+ position: relative;
}
.wrapper:hover {
color: var(--theme-font-inv-1);
@@ -154,4 +167,15 @@
flex: 1;
flex-direction: column;
}
+
+ .premium-promo {
+ position: absolute;
+ text-transform: uppercase;
+ font-size: 6pt;
+ background: var(--theme-bg-inv-3);
+ color: var(--theme-font-inv-2);
+ padding: 1px 3px;
+ border-radius: 3px;
+ bottom: 0;
+ }