From c8648659c78a55859c4744a1769e1780344cf649 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Tue, 1 Oct 2024 16:13:35 +0500 Subject: [PATCH] theme: add support for setting default theme via global variable --- packages/theme/src/index.ts | 8 +++++++- packages/theme/src/theme-engine/index.ts | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index cfdb333ae..53fe3cabe 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -18,7 +18,8 @@ along with this program. If not, see . */ import { SchemeColors, - SchemeColorsAsCSSVariables + SchemeColorsAsCSSVariables, + ThemeDefinition } from "./theme-engine/types.js"; export * from "./theme/index.js"; @@ -26,6 +27,11 @@ export * from "./theme-engine/index.js"; export * from "./theme-engine/types.js"; export * from "./emotion/index.js"; +declare global { + // eslint-disable-next-line no-var + var DEFAULT_THEME: ThemeDefinition | undefined; +} + declare module "csstype" { interface Properties { backgroundColor?: diff --git a/packages/theme/src/theme-engine/index.ts b/packages/theme/src/theme-engine/index.ts index c7c13cc8b..4e8892847 100644 --- a/packages/theme/src/theme-engine/index.ts +++ b/packages/theme/src/theme-engine/index.ts @@ -43,7 +43,7 @@ type ThemeEngineState = { setTheme: (theme: ThemeDefinition) => void; }; const useThemeEngineStore = create((set) => ({ - theme: ThemeLight, + theme: globalThis.DEFAULT_THEME || ThemeLight, setTheme: (theme) => set({ theme }) }));