@os-design/theming-tools 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/utils/createThemeOverrider.js.map +1 -1
- package/dist/cjs/utils/createThemeProvider.js.map +1 -1
- package/dist/cjs/utils/overrideTheme.js +2 -7
- package/dist/cjs/utils/overrideTheme.js.map +1 -1
- package/dist/esm/utils/createThemeOverrider.js.map +1 -1
- package/dist/esm/utils/createThemeProvider.js.map +1 -1
- package/dist/esm/utils/overrideTheme.js +2 -2
- package/dist/esm/utils/overrideTheme.js.map +1 -1
- package/dist/types/utils/createThemeOverrider.d.ts.map +1 -1
- package/dist/types/utils/createThemeProvider.d.ts.map +1 -1
- package/dist/types/utils/overrideTheme.d.ts +1 -1
- package/dist/types/utils/overrideTheme.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeOverrider.js","names":["createThemeOverrider","TC","useTheme","activeTheme","overrides","children","themes","parentTheme","theme","parentOverrides","parentActiveTheme","setActiveTheme","localActiveTheme","localOverrides","useMemo","localTheme","overrideTheme","contextValue"],"sources":["../../../src/utils/createThemeOverrider.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"createThemeOverrider.js","names":["createThemeOverrider","TC","useTheme","activeTheme","overrides","children","themes","parentTheme","theme","parentOverrides","parentActiveTheme","setActiveTheme","localActiveTheme","localOverrides","useMemo","localTheme","overrideTheme","contextValue"],"sources":["../../../src/utils/createThemeOverrider.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n ThemeProvider as EmotionThemeProvider,\n ThemeProviderProps as EmotionThemeProviderProps,\n} from '@emotion/react';\nimport { ThemeContext, ThemeMap } from './createThemeContext';\nimport { UseTheme } from './createUseTheme';\nimport overrideTheme from './overrideTheme';\n\nexport interface ThemeOverriderProps<T> {\n /**\n * The active theme of children.\n * @default undefined\n */\n activeTheme?: keyof ThemeMap<T>;\n /**\n * Overrides the active theme parameters.\n * @default undefined\n */\n overrides?: Partial<T> | ((theme: T) => Partial<T>);\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\nexport type ThemeOverrider<T> = React.FC<ThemeOverriderProps<T>>;\n\nfunction createThemeOverrider<T>(\n TC: ThemeContext<T>,\n useTheme: UseTheme<T>\n): ThemeOverrider<T> {\n // eslint-disable-next-line func-names\n return function ({ activeTheme, overrides = {}, children }) {\n const {\n themes,\n theme: parentTheme,\n overrides: parentOverrides,\n activeTheme: parentActiveTheme,\n setActiveTheme,\n } = useTheme();\n\n const localActiveTheme = activeTheme || parentActiveTheme;\n\n // Parents overrides are ignored if the active theme was specified\n const localOverrides = useMemo<Partial<T>>(\n () => ({\n ...(activeTheme ? {} : parentOverrides),\n ...(typeof overrides === 'function'\n ? (overrides as Function)(parentTheme)\n : overrides),\n }),\n [activeTheme, parentOverrides, overrides, parentTheme]\n );\n\n // Make the local theme\n const localTheme = useMemo<T>(\n () => overrideTheme(themes[localActiveTheme], localOverrides),\n [themes, localActiveTheme, localOverrides]\n );\n\n const contextValue = useMemo(\n () => ({\n themes,\n overrides: localOverrides,\n activeTheme: localActiveTheme,\n setActiveTheme,\n }),\n [localActiveTheme, localOverrides, setActiveTheme, themes]\n );\n\n return (\n <TC.Provider value={contextValue}>\n <EmotionThemeProvider\n theme={localTheme as EmotionThemeProviderProps['theme']}\n >\n {children}\n </EmotionThemeProvider>\n </TC.Provider>\n );\n };\n}\n\nexport default createThemeOverrider;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;AAMA;;;;;;;;;;;;;;AAsBA,SAASA,oBAAT,CACEC,EADF,EAEEC,QAFF,EAGqB;EACnB;EACA,OAAO,gBAAqD;IAAA,IAAzCC,WAAyC,QAAzCA,WAAyC;IAAA,0BAA5BC,SAA4B;IAAA,IAA5BA,SAA4B,+BAAhB,EAAgB;IAAA,IAAZC,QAAY,QAAZA,QAAY;;IAC1D,gBAMIH,QAAQ,EANZ;IAAA,IACEI,MADF,aACEA,MADF;IAAA,IAESC,WAFT,aAEEC,KAFF;IAAA,IAGaC,eAHb,aAGEL,SAHF;IAAA,IAIeM,iBAJf,aAIEP,WAJF;IAAA,IAKEQ,cALF,aAKEA,cALF;;IAQA,IAAMC,gBAAgB,GAAGT,WAAW,IAAIO,iBAAxC,CAT0D,CAW1D;;IACA,IAAMG,cAAc,GAAG,IAAAC,cAAA,EACrB;MAAA,uCACMX,WAAW,GAAG,EAAH,GAAQM,eADzB,GAEM,OAAOL,SAAP,KAAqB,UAArB,GACCA,SAAD,CAAwBG,WAAxB,CADA,GAEAH,SAJN;IAAA,CADqB,EAOrB,CAACD,WAAD,EAAcM,eAAd,EAA+BL,SAA/B,EAA0CG,WAA1C,CAPqB,CAAvB,CAZ0D,CAsB1D;;IACA,IAAMQ,UAAU,GAAG,IAAAD,cAAA,EACjB;MAAA,OAAM,IAAAE,yBAAA,EAAcV,MAAM,CAACM,gBAAD,CAApB,EAAwCC,cAAxC,CAAN;IAAA,CADiB,EAEjB,CAACP,MAAD,EAASM,gBAAT,EAA2BC,cAA3B,CAFiB,CAAnB;IAKA,IAAMI,YAAY,GAAG,IAAAH,cAAA,EACnB;MAAA,OAAO;QACLR,MAAM,EAANA,MADK;QAELF,SAAS,EAAES,cAFN;QAGLV,WAAW,EAAES,gBAHR;QAILD,cAAc,EAAdA;MAJK,CAAP;IAAA,CADmB,EAOnB,CAACC,gBAAD,EAAmBC,cAAnB,EAAmCF,cAAnC,EAAmDL,MAAnD,CAPmB,CAArB;IAUA,oBACE,gCAAC,EAAD,CAAI,QAAJ;MAAa,KAAK,EAAEW;IAApB,gBACE,gCAAC,qBAAD;MACE,KAAK,EAAEF;IADT,GAGGV,QAHH,CADF,CADF;EASD,CA/CD;AAgDD;;eAEcL,oB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeProvider.js","names":["createThemeProvider","TC","defaultThemes","localStorage","getItem","setItem","themes","initialTheme","storageKey","children","useState","activeTheme","setActiveTheme","useEffect","getSavedTheme","saved","contextValue","useMemo","overrides","name"],"sources":["../../../src/utils/createThemeProvider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"createThemeProvider.js","names":["createThemeProvider","TC","defaultThemes","localStorage","getItem","setItem","themes","initialTheme","storageKey","children","useState","activeTheme","setActiveTheme","useEffect","getSavedTheme","saved","contextValue","useMemo","overrides","name"],"sources":["../../../src/utils/createThemeProvider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n ThemeProvider as EmotionThemeProvider,\n ThemeProviderProps as EmotionThemeProviderProps,\n} from '@emotion/react';\nimport { ThemeContext, ThemeMap } from './createThemeContext';\n\nexport interface ThemeProviderProps<T> {\n /**\n * Available themes.\n * @default undefined\n */\n themes?: ThemeMap<T>;\n /**\n * The theme used by default.\n * @default light\n */\n initialTheme?: 'light' | 'dark' | string;\n /**\n * The key in the local storage where the active theme is saved.\n * @default theme\n */\n storageKey?: string;\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\nexport type ThemeProvider<T> = React.FC<ThemeProviderProps<T>>;\n\nexport interface LocalStorage {\n getItem: (key: string) => string | null | Promise<string | null>;\n setItem: (key: string, value: string) => void | Promise<void>;\n}\n\nfunction createThemeProvider<T>(\n TC: ThemeContext<T>,\n defaultThemes: ThemeMap<T>,\n localStorage: LocalStorage = {\n getItem: () => null,\n setItem: () => {},\n }\n): ThemeProvider<T> {\n // eslint-disable-next-line func-names\n return function ({\n themes = defaultThemes,\n initialTheme = 'light',\n storageKey = 'theme',\n children,\n }) {\n const [activeTheme, setActiveTheme] = useState(\n themes[initialTheme] ? initialTheme : 'light'\n );\n\n useEffect(() => {\n const getSavedTheme = async () => {\n const saved = await localStorage.getItem(storageKey);\n if (saved && themes[saved]) setActiveTheme(saved);\n };\n getSavedTheme();\n }, [storageKey, themes]);\n\n const contextValue = useMemo(\n () => ({\n themes,\n overrides: {},\n activeTheme,\n setActiveTheme: (name) => {\n setActiveTheme(name);\n localStorage.setItem(storageKey, name);\n },\n }),\n [activeTheme, storageKey, themes]\n );\n\n return (\n <TC.Provider value={contextValue}>\n <EmotionThemeProvider\n theme={themes[activeTheme] as EmotionThemeProviderProps['theme']}\n >\n {children}\n </EmotionThemeProvider>\n </TC.Provider>\n );\n };\n}\n\nexport default createThemeProvider;\n"],"mappings":";;;;;;;;;AAAA;;AACA;;;;;;+CAAA,oJ;;;;;;;;;;;;;;;;;;AAoCA,SAASA,mBAAT,CACEC,EADF,EAEEC,aAFF,EAOoB;EAAA,IAJlBC,YAIkB,uEAJW;IAC3BC,OAAO,EAAE;MAAA,OAAM,IAAN;IAAA,CADkB;IAE3BC,OAAO,EAAE,mBAAM,CAAE;EAFU,CAIX;EAClB;EACA,OAAO,gBAKJ;IAAA,uBAJDC,MAIC;IAAA,IAJDA,MAIC,4BAJQJ,aAIR;IAAA,6BAHDK,YAGC;IAAA,IAHDA,YAGC,kCAHc,OAGd;IAAA,2BAFDC,UAEC;IAAA,IAFDA,UAEC,gCAFY,OAEZ;IAAA,IADDC,QACC,QADDA,QACC;;IACD,gBAAsC,IAAAC,eAAA,EACpCJ,MAAM,CAACC,YAAD,CAAN,GAAuBA,YAAvB,GAAsC,OADF,CAAtC;IAAA;IAAA,IAAOI,WAAP;IAAA,IAAoBC,eAApB;;IAIA,IAAAC,gBAAA,EAAU,YAAM;MACd,IAAMC,aAAa;QAAA,uEAAG;UAAA;UAAA;YAAA;cAAA;gBAAA;kBAAA;kBAAA,OACAX,YAAY,CAACC,OAAb,CAAqBI,UAArB,CADA;;gBAAA;kBACdO,KADc;kBAEpB,IAAIA,KAAK,IAAIT,MAAM,CAACS,KAAD,CAAnB,EAA4BH,eAAc,CAACG,KAAD,CAAd;;gBAFR;gBAAA;kBAAA;cAAA;YAAA;UAAA;QAAA,CAAH;;QAAA,gBAAbD,aAAa;UAAA;QAAA;MAAA,GAAnB;;MAIAA,aAAa;IACd,CAND,EAMG,CAACN,UAAD,EAAaF,MAAb,CANH;IAQA,IAAMU,YAAY,GAAG,IAAAC,cAAA,EACnB;MAAA,OAAO;QACLX,MAAM,EAANA,MADK;QAELY,SAAS,EAAE,EAFN;QAGLP,WAAW,EAAXA,WAHK;QAILC,cAAc,EAAE,wBAACO,IAAD,EAAU;UACxBP,eAAc,CAACO,IAAD,CAAd;;UACAhB,YAAY,CAACE,OAAb,CAAqBG,UAArB,EAAiCW,IAAjC;QACD;MAPI,CAAP;IAAA,CADmB,EAUnB,CAACR,WAAD,EAAcH,UAAd,EAA0BF,MAA1B,CAVmB,CAArB;IAaA,oBACE,gCAAC,EAAD,CAAI,QAAJ;MAAa,KAAK,EAAEU;IAApB,gBACE,gCAAC,qBAAD;MACE,KAAK,EAAEV,MAAM,CAACK,WAAD;IADf,GAGGF,QAHH,CADF,CADF;EASD,CAxCD;AAyCD;;eAEcT,mB"}
|
|
@@ -5,14 +5,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
7
|
|
|
8
|
-
var overrideTheme = function overrideTheme() {
|
|
8
|
+
var overrideTheme = function overrideTheme(theme1, theme2) {
|
|
9
9
|
var res = {};
|
|
10
|
-
|
|
11
|
-
for (var _len = arguments.length, themes = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
12
|
-
themes[_key] = arguments[_key];
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
themes.forEach(function (theme) {
|
|
10
|
+
[theme1, theme2].forEach(function (theme) {
|
|
16
11
|
var props = Object.keys(theme);
|
|
17
12
|
props.forEach(function (prop) {
|
|
18
13
|
var descriptor = Object.getOwnPropertyDescriptor(theme, prop);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrideTheme.js","names":["overrideTheme","
|
|
1
|
+
{"version":3,"file":"overrideTheme.js","names":["overrideTheme","theme1","theme2","res","forEach","theme","props","Object","keys","prop","descriptor","getOwnPropertyDescriptor","defineProperty"],"sources":["../../../src/utils/overrideTheme.ts"],"sourcesContent":["const overrideTheme = <T>(theme1: T, theme2: Partial<T>): T => {\n const res = {};\n\n [theme1, theme2].forEach((theme) => {\n const props = Object.keys(theme);\n props.forEach((prop) => {\n const descriptor = Object.getOwnPropertyDescriptor(theme, prop);\n if (!descriptor) return;\n Object.defineProperty(res, prop, descriptor);\n });\n });\n\n return res as T;\n};\n\nexport default overrideTheme;\n"],"mappings":";;;;;;;AAAA,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAAIC,MAAJ,EAAeC,MAAf,EAAyC;EAC7D,IAAMC,GAAG,GAAG,EAAZ;EAEA,CAACF,MAAD,EAASC,MAAT,EAAiBE,OAAjB,CAAyB,UAACC,KAAD,EAAW;IAClC,IAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYH,KAAZ,CAAd;IACAC,KAAK,CAACF,OAAN,CAAc,UAACK,IAAD,EAAU;MACtB,IAAMC,UAAU,GAAGH,MAAM,CAACI,wBAAP,CAAgCN,KAAhC,EAAuCI,IAAvC,CAAnB;MACA,IAAI,CAACC,UAAL,EAAiB;MACjBH,MAAM,CAACK,cAAP,CAAsBT,GAAtB,EAA2BM,IAA3B,EAAiCC,UAAjC;IACD,CAJD;EAKD,CAPD;EASA,OAAOP,GAAP;AACD,CAbD;;eAeeH,a"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeOverrider.js","names":["React","useMemo","ThemeProvider","EmotionThemeProvider","overrideTheme","createThemeOverrider","TC","useTheme","activeTheme","overrides","children","themes","theme","parentTheme","parentOverrides","parentActiveTheme","setActiveTheme","localActiveTheme","localOverrides","localTheme","contextValue"],"sources":["../../../src/utils/createThemeOverrider.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"createThemeOverrider.js","names":["React","useMemo","ThemeProvider","EmotionThemeProvider","overrideTheme","createThemeOverrider","TC","useTheme","activeTheme","overrides","children","themes","theme","parentTheme","parentOverrides","parentActiveTheme","setActiveTheme","localActiveTheme","localOverrides","localTheme","contextValue"],"sources":["../../../src/utils/createThemeOverrider.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n ThemeProvider as EmotionThemeProvider,\n ThemeProviderProps as EmotionThemeProviderProps,\n} from '@emotion/react';\nimport { ThemeContext, ThemeMap } from './createThemeContext';\nimport { UseTheme } from './createUseTheme';\nimport overrideTheme from './overrideTheme';\n\nexport interface ThemeOverriderProps<T> {\n /**\n * The active theme of children.\n * @default undefined\n */\n activeTheme?: keyof ThemeMap<T>;\n /**\n * Overrides the active theme parameters.\n * @default undefined\n */\n overrides?: Partial<T> | ((theme: T) => Partial<T>);\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\nexport type ThemeOverrider<T> = React.FC<ThemeOverriderProps<T>>;\n\nfunction createThemeOverrider<T>(\n TC: ThemeContext<T>,\n useTheme: UseTheme<T>\n): ThemeOverrider<T> {\n // eslint-disable-next-line func-names\n return function ({ activeTheme, overrides = {}, children }) {\n const {\n themes,\n theme: parentTheme,\n overrides: parentOverrides,\n activeTheme: parentActiveTheme,\n setActiveTheme,\n } = useTheme();\n\n const localActiveTheme = activeTheme || parentActiveTheme;\n\n // Parents overrides are ignored if the active theme was specified\n const localOverrides = useMemo<Partial<T>>(\n () => ({\n ...(activeTheme ? {} : parentOverrides),\n ...(typeof overrides === 'function'\n ? (overrides as Function)(parentTheme)\n : overrides),\n }),\n [activeTheme, parentOverrides, overrides, parentTheme]\n );\n\n // Make the local theme\n const localTheme = useMemo<T>(\n () => overrideTheme(themes[localActiveTheme], localOverrides),\n [themes, localActiveTheme, localOverrides]\n );\n\n const contextValue = useMemo(\n () => ({\n themes,\n overrides: localOverrides,\n activeTheme: localActiveTheme,\n setActiveTheme,\n }),\n [localActiveTheme, localOverrides, setActiveTheme, themes]\n );\n\n return (\n <TC.Provider value={contextValue}>\n <EmotionThemeProvider\n theme={localTheme as EmotionThemeProviderProps['theme']}\n >\n {children}\n </EmotionThemeProvider>\n </TC.Provider>\n );\n };\n}\n\nexport default createThemeOverrider;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AACA,SACEC,aAAa,IAAIC,oBADnB,QAGO,gBAHP;AAMA,OAAOC,aAAP,MAA0B,iBAA1B;;AAsBA,SAASC,oBAAT,CACEC,EADF,EAEEC,QAFF,EAGqB;EACnB;EACA,OAAO,UAAU;IAAEC,WAAF;IAAeC,SAAS,GAAG,EAA3B;IAA+BC;EAA/B,CAAV,EAAqD;IAC1D,MAAM;MACJC,MADI;MAEJC,KAAK,EAAEC,WAFH;MAGJJ,SAAS,EAAEK,eAHP;MAIJN,WAAW,EAAEO,iBAJT;MAKJC;IALI,IAMFT,QAAQ,EANZ;IAQA,MAAMU,gBAAgB,GAAGT,WAAW,IAAIO,iBAAxC,CAT0D,CAW1D;;IACA,MAAMG,cAAc,GAAGjB,OAAO,CAC5B,OAAO,EACL,IAAIO,WAAW,GAAG,EAAH,GAAQM,eAAvB,CADK;MAEL,IAAI,OAAOL,SAAP,KAAqB,UAArB,GACCA,SAAD,CAAwBI,WAAxB,CADA,GAEAJ,SAFJ;IAFK,CAAP,CAD4B,EAO5B,CAACD,WAAD,EAAcM,eAAd,EAA+BL,SAA/B,EAA0CI,WAA1C,CAP4B,CAA9B,CAZ0D,CAsB1D;;IACA,MAAMM,UAAU,GAAGlB,OAAO,CACxB,MAAMG,aAAa,CAACO,MAAM,CAACM,gBAAD,CAAP,EAA2BC,cAA3B,CADK,EAExB,CAACP,MAAD,EAASM,gBAAT,EAA2BC,cAA3B,CAFwB,CAA1B;IAKA,MAAME,YAAY,GAAGnB,OAAO,CAC1B,OAAO;MACLU,MADK;MAELF,SAAS,EAAES,cAFN;MAGLV,WAAW,EAAES,gBAHR;MAILD;IAJK,CAAP,CAD0B,EAO1B,CAACC,gBAAD,EAAmBC,cAAnB,EAAmCF,cAAnC,EAAmDL,MAAnD,CAP0B,CAA5B;IAUA,oBACE,oBAAC,EAAD,CAAI,QAAJ;MAAa,KAAK,EAAES;IAApB,gBACE,oBAAC,oBAAD;MACE,KAAK,EAAED;IADT,GAGGT,QAHH,CADF,CADF;EASD,CA/CD;AAgDD;;AAED,eAAeL,oBAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeProvider.js","names":["React","useEffect","useMemo","useState","ThemeProvider","EmotionThemeProvider","createThemeProvider","TC","defaultThemes","localStorage","getItem","setItem","themes","initialTheme","storageKey","children","activeTheme","setActiveTheme","getSavedTheme","saved","contextValue","overrides","name"],"sources":["../../../src/utils/createThemeProvider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"createThemeProvider.js","names":["React","useEffect","useMemo","useState","ThemeProvider","EmotionThemeProvider","createThemeProvider","TC","defaultThemes","localStorage","getItem","setItem","themes","initialTheme","storageKey","children","activeTheme","setActiveTheme","getSavedTheme","saved","contextValue","overrides","name"],"sources":["../../../src/utils/createThemeProvider.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n ThemeProvider as EmotionThemeProvider,\n ThemeProviderProps as EmotionThemeProviderProps,\n} from '@emotion/react';\nimport { ThemeContext, ThemeMap } from './createThemeContext';\n\nexport interface ThemeProviderProps<T> {\n /**\n * Available themes.\n * @default undefined\n */\n themes?: ThemeMap<T>;\n /**\n * The theme used by default.\n * @default light\n */\n initialTheme?: 'light' | 'dark' | string;\n /**\n * The key in the local storage where the active theme is saved.\n * @default theme\n */\n storageKey?: string;\n /**\n * The children.\n * @default undefined\n */\n children?: React.ReactNode;\n}\n\nexport type ThemeProvider<T> = React.FC<ThemeProviderProps<T>>;\n\nexport interface LocalStorage {\n getItem: (key: string) => string | null | Promise<string | null>;\n setItem: (key: string, value: string) => void | Promise<void>;\n}\n\nfunction createThemeProvider<T>(\n TC: ThemeContext<T>,\n defaultThemes: ThemeMap<T>,\n localStorage: LocalStorage = {\n getItem: () => null,\n setItem: () => {},\n }\n): ThemeProvider<T> {\n // eslint-disable-next-line func-names\n return function ({\n themes = defaultThemes,\n initialTheme = 'light',\n storageKey = 'theme',\n children,\n }) {\n const [activeTheme, setActiveTheme] = useState(\n themes[initialTheme] ? initialTheme : 'light'\n );\n\n useEffect(() => {\n const getSavedTheme = async () => {\n const saved = await localStorage.getItem(storageKey);\n if (saved && themes[saved]) setActiveTheme(saved);\n };\n getSavedTheme();\n }, [storageKey, themes]);\n\n const contextValue = useMemo(\n () => ({\n themes,\n overrides: {},\n activeTheme,\n setActiveTheme: (name) => {\n setActiveTheme(name);\n localStorage.setItem(storageKey, name);\n },\n }),\n [activeTheme, storageKey, themes]\n );\n\n return (\n <TC.Provider value={contextValue}>\n <EmotionThemeProvider\n theme={themes[activeTheme] as EmotionThemeProviderProps['theme']}\n >\n {children}\n </EmotionThemeProvider>\n </TC.Provider>\n );\n };\n}\n\nexport default createThemeProvider;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,EAA2BC,OAA3B,EAAoCC,QAApC,QAAoD,OAApD;AACA,SACEC,aAAa,IAAIC,oBADnB,QAGO,gBAHP;;AAoCA,SAASC,mBAAT,CACEC,EADF,EAEEC,aAFF,EAGEC,YAA0B,GAAG;EAC3BC,OAAO,EAAE,MAAM,IADY;EAE3BC,OAAO,EAAE,MAAM,CAAE;AAFU,CAH/B,EAOoB;EAClB;EACA,OAAO,UAAU;IACfC,MAAM,GAAGJ,aADM;IAEfK,YAAY,GAAG,OAFA;IAGfC,UAAU,GAAG,OAHE;IAIfC;EAJe,CAAV,EAKJ;IACD,MAAM,CAACC,WAAD,EAAcC,cAAd,IAAgCd,QAAQ,CAC5CS,MAAM,CAACC,YAAD,CAAN,GAAuBA,YAAvB,GAAsC,OADM,CAA9C;IAIAZ,SAAS,CAAC,MAAM;MACd,MAAMiB,aAAa,GAAG,YAAY;QAChC,MAAMC,KAAK,GAAG,MAAMV,YAAY,CAACC,OAAb,CAAqBI,UAArB,CAApB;QACA,IAAIK,KAAK,IAAIP,MAAM,CAACO,KAAD,CAAnB,EAA4BF,cAAc,CAACE,KAAD,CAAd;MAC7B,CAHD;;MAIAD,aAAa;IACd,CANQ,EAMN,CAACJ,UAAD,EAAaF,MAAb,CANM,CAAT;IAQA,MAAMQ,YAAY,GAAGlB,OAAO,CAC1B,OAAO;MACLU,MADK;MAELS,SAAS,EAAE,EAFN;MAGLL,WAHK;MAILC,cAAc,EAAGK,IAAD,IAAU;QACxBL,cAAc,CAACK,IAAD,CAAd;QACAb,YAAY,CAACE,OAAb,CAAqBG,UAArB,EAAiCQ,IAAjC;MACD;IAPI,CAAP,CAD0B,EAU1B,CAACN,WAAD,EAAcF,UAAd,EAA0BF,MAA1B,CAV0B,CAA5B;IAaA,oBACE,oBAAC,EAAD,CAAI,QAAJ;MAAa,KAAK,EAAEQ;IAApB,gBACE,oBAAC,oBAAD;MACE,KAAK,EAAER,MAAM,CAACI,WAAD;IADf,GAGGD,QAHH,CADF,CADF;EASD,CAxCD;AAyCD;;AAED,eAAeT,mBAAf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const overrideTheme = (
|
|
1
|
+
const overrideTheme = (theme1, theme2) => {
|
|
2
2
|
const res = {};
|
|
3
|
-
|
|
3
|
+
[theme1, theme2].forEach(theme => {
|
|
4
4
|
const props = Object.keys(theme);
|
|
5
5
|
props.forEach(prop => {
|
|
6
6
|
const descriptor = Object.getOwnPropertyDescriptor(theme, prop);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrideTheme.js","names":["overrideTheme","
|
|
1
|
+
{"version":3,"file":"overrideTheme.js","names":["overrideTheme","theme1","theme2","res","forEach","theme","props","Object","keys","prop","descriptor","getOwnPropertyDescriptor","defineProperty"],"sources":["../../../src/utils/overrideTheme.ts"],"sourcesContent":["const overrideTheme = <T>(theme1: T, theme2: Partial<T>): T => {\n const res = {};\n\n [theme1, theme2].forEach((theme) => {\n const props = Object.keys(theme);\n props.forEach((prop) => {\n const descriptor = Object.getOwnPropertyDescriptor(theme, prop);\n if (!descriptor) return;\n Object.defineProperty(res, prop, descriptor);\n });\n });\n\n return res as T;\n};\n\nexport default overrideTheme;\n"],"mappings":"AAAA,MAAMA,aAAa,GAAG,CAAIC,MAAJ,EAAeC,MAAf,KAAyC;EAC7D,MAAMC,GAAG,GAAG,EAAZ;EAEA,CAACF,MAAD,EAASC,MAAT,EAAiBE,OAAjB,CAA0BC,KAAD,IAAW;IAClC,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYH,KAAZ,CAAd;IACAC,KAAK,CAACF,OAAN,CAAeK,IAAD,IAAU;MACtB,MAAMC,UAAU,GAAGH,MAAM,CAACI,wBAAP,CAAgCN,KAAhC,EAAuCI,IAAvC,CAAnB;MACA,IAAI,CAACC,UAAL,EAAiB;MACjBH,MAAM,CAACK,cAAP,CAAsBT,GAAtB,EAA2BM,IAA3B,EAAiCC,UAAjC;IACD,CAJD;EAKD,CAPD;EASA,OAAOP,GAAP;AACD,CAbD;;AAeA,eAAeH,aAAf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeOverrider.d.ts","sourceRoot":"","sources":["../../../src/utils/createThemeOverrider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"createThemeOverrider.d.ts","sourceRoot":"","sources":["../../../src/utils/createThemeOverrider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG5C,MAAM,WAAW,mBAAmB,CAAC,CAAC;IAKpC,WAAW,CAAC,EAAE,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAKhC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAKpD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,oBAAY,cAAc,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjE,iBAAS,oBAAoB,CAAC,CAAC,EAC7B,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GACpB,cAAc,CAAC,CAAC,CAAC,CAkDnB;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/utils/createThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"createThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/utils/createThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,kBAAkB,CAAC,CAAC;IAKnC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAKrB,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAKzC,UAAU,CAAC,EAAE,MAAM,CAAC;IAKpB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,oBAAY,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,iBAAS,mBAAmB,CAAC,CAAC,EAC5B,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,EAC1B,YAAY,GAAE,YAGb,GACA,aAAa,CAAC,CAAC,CAAC,CA2ClB;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrideTheme.d.ts","sourceRoot":"","sources":["../../../src/utils/overrideTheme.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"overrideTheme.d.ts","sourceRoot":"","sources":["../../../src/utils/overrideTheme.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,aAAa,yCAalB,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@os-design/theming-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"repository": "git@gitlab.com:os-team/libs/os-design.git",
|
|
6
6
|
"main": "dist/cjs/index.js",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"@emotion/react": ">=11",
|
|
36
36
|
"react": ">=18"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "5b1feb3671b98c041f2ed5e0780ad469f6475f2c"
|
|
39
39
|
}
|