diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte index 12d572ecc4..0ce9e096f2 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPreview.svelte @@ -249,7 +249,7 @@
{#if loading}
diff --git a/packages/builder/src/pages/builder/portal/apps/[appId]/index.svelte b/packages/builder/src/pages/builder/portal/apps/[appId]/index.svelte index a08189a400..d7e0e35289 100644 --- a/packages/builder/src/pages/builder/portal/apps/[appId]/index.svelte +++ b/packages/builder/src/pages/builder/portal/apps/[appId]/index.svelte @@ -20,7 +20,7 @@ import { sdk } from "@budibase/shared-core" import { API } from "api" import ErrorSVG from "./ErrorSVG.svelte" - import { ClientAppSkeleton } from "@budibase/frontend-core" + import { getBaseTheme, ClientAppSkeleton } from "@budibase/frontend-core" $: app = $enrichedApps.find(app => app.appId === $params.appId) $: iframeUrl = getIframeURL(app) @@ -137,7 +137,9 @@ class:hide={!loading || !app?.features?.skeletonLoader} class="loading" > -
+
{ }) const syncAppTheme = app => { - store.update(state => ({ - ...state, - theme: app.theme || "spectrum--light", - customTheme: app.customTheme, - })) + store.update(state => { + const theme = app.theme || "spectrum--light" + return { + ...state, + theme, + baseTheme: getBaseTheme(theme), + customTheme: app.customTheme, + } + }) } const save = async (theme, appId) => { diff --git a/packages/client/src/stores/theme.js b/packages/client/src/stores/theme.js index 8877556f0c..50dad12fa4 100644 --- a/packages/client/src/stores/theme.js +++ b/packages/client/src/stores/theme.js @@ -1,7 +1,7 @@ import { derived } from "svelte/store" import { appStore } from "./app" import { builderStore } from "./builder" -import { Constants } from "@budibase/frontend-core" +import { getBaseTheme } from "@budibase/frontend-core" // This is the good old acorn bug where having the word "g l o b a l" makes it // think that this is not ES6 compatible and starts throwing errors when using @@ -29,13 +29,6 @@ const createThemeStore = () => { // Ensure theme is set theme = theme || defaultTheme - // Get base theme - let base = - Constants.Themes.find(x => `spectrum--${x.class}` === theme)?.base || "" - if (base) { - base = `spectrum--${base}` - } - // Delete and nullish keys from the custom theme if (customTheme) { Object.entries(customTheme).forEach(([key, value]) => { @@ -59,7 +52,7 @@ const createThemeStore = () => { return { theme, - baseTheme: base, + baseTheme: getBaseTheme(theme), customTheme, customThemeCss, } diff --git a/packages/frontend-core/src/utils/index.js b/packages/frontend-core/src/utils/index.js index 98998b7f0e..6b79e1d040 100644 --- a/packages/frontend-core/src/utils/index.js +++ b/packages/frontend-core/src/utils/index.js @@ -7,3 +7,4 @@ export * as RowUtils from "./rows" export { memo, derivedMemo } from "./memo" export { createWebsocket } from "./websocket" export * from "./download" +export * from "./theme" diff --git a/packages/frontend-core/src/utils/theme.js b/packages/frontend-core/src/utils/theme.js new file mode 100644 index 0000000000..165f7c9782 --- /dev/null +++ b/packages/frontend-core/src/utils/theme.js @@ -0,0 +1,12 @@ +import { Themes } from "../constants.js" + +export const getBaseTheme = theme => { + if (!theme) { + return "" + } + let base = Themes.find(x => `spectrum--${x.class}` === theme)?.base || "" + if (base) { + base = `spectrum--${base}` + } + return base +}