diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index e49b4d394..fbcb73cb2 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -26,6 +26,10 @@ export interface TabDefinition { focused?: boolean; } +function getSystemTheme() { + return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'theme-dark' : 'theme-light'; +} + export function writableWithStorage(defaultValue: T, storageName) { const init = localStorage.getItem(storageName); const res = writable(init ? safeJsonParse(init, defaultValue, true) : defaultValue); @@ -100,8 +104,8 @@ export const extensions = writable(null); export const visibleCommandPalette = writable(null); export const commands = writable({}); export const currentTheme = getElectron() - ? writableSettingsValue('theme-light', 'currentTheme') - : writableWithStorage('theme-light', 'currentTheme'); + ? writableSettingsValue(getSystemTheme(), 'currentTheme') + : writableWithStorage(getSystemTheme(), 'currentTheme'); export const currentEditorTheme = getElectron() ? writableSettingsValue(null, 'currentEditorTheme') : writableWithStorage(null, 'currentEditorTheme'); @@ -194,8 +198,13 @@ export const connectionAppObjectSearchSettings = writableWithStorage( ); export const currentThemeDefinition = derived([currentTheme, extensions], ([$currentTheme, $extensions]) => - $extensions.themes.find(x => x.themeClassName == $currentTheme) + $extensions?.themes?.find(x => x.themeClassName == $currentTheme) ); +currentThemeDefinition.subscribe(value => { + if (value?.themeType) { + localStorage.setItem('currentThemeType', value?.themeType); + } +}); export const openedConnectionsWithTemporary = derived( [openedConnections, temporaryOpenedConnections, openedSingleDatabaseConnections], ([$openedConnections, $temporaryOpenedConnections, $openedSingleDatabaseConnections]) => diff --git a/packages/web/src/widgets/AppStartInfo.svelte b/packages/web/src/widgets/AppStartInfo.svelte index 7f46b0542..0597874da 100644 --- a/packages/web/src/widgets/AppStartInfo.svelte +++ b/packages/web/src/widgets/AppStartInfo.svelte @@ -1,8 +1,14 @@ -
+
@@ -15,21 +21,34 @@