@korsolutions/ui 0.0.77 → 0.0.79
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/module/hooks/use-color-scheme.js +34 -0
- package/dist/module/hooks/use-color-scheme.js.map +1 -0
- package/dist/module/themes/provider.js +8 -9
- package/dist/module/themes/provider.js.map +1 -1
- package/dist/typescript/src/hooks/use-color-scheme.d.ts +10 -0
- package/dist/typescript/src/hooks/use-color-scheme.d.ts.map +1 -0
- package/dist/typescript/src/themes/provider.d.ts +4 -1
- package/dist/typescript/src/themes/provider.d.ts.map +1 -1
- package/dist/typescript/src/themes/types.d.ts +4 -0
- package/dist/typescript/src/themes/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/hooks/use-color-scheme.ts +44 -0
- package/src/themes/provider.tsx +9 -19
- package/src/themes/types.ts +5 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { useColorScheme as useSystemColorScheme } from "react-native";
|
|
5
|
+
const getColorScheme = (storageGetCallback, systemColorScheme) => {
|
|
6
|
+
if (storageGetCallback) {
|
|
7
|
+
const storedScheme = storageGetCallback();
|
|
8
|
+
if (storedScheme) return storedScheme;
|
|
9
|
+
}
|
|
10
|
+
if (systemColorScheme) {
|
|
11
|
+
return systemColorScheme === "dark" ? "dark" : "light";
|
|
12
|
+
}
|
|
13
|
+
return "light";
|
|
14
|
+
};
|
|
15
|
+
export function useColorScheme({
|
|
16
|
+
colorSchemeStorage
|
|
17
|
+
}) {
|
|
18
|
+
const systemColorScheme = useSystemColorScheme();
|
|
19
|
+
const [_colorScheme, _setColorScheme] = useState(getColorScheme(colorSchemeStorage?.get, systemColorScheme));
|
|
20
|
+
const setColorScheme = scheme => {
|
|
21
|
+
_setColorScheme(scheme);
|
|
22
|
+
colorSchemeStorage?.set(scheme);
|
|
23
|
+
};
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
const newScheme = getColorScheme(colorSchemeStorage?.get, systemColorScheme);
|
|
26
|
+
if (newScheme === _colorScheme) return;
|
|
27
|
+
setColorScheme(newScheme);
|
|
28
|
+
}, [systemColorScheme]);
|
|
29
|
+
return {
|
|
30
|
+
colorScheme: _colorScheme,
|
|
31
|
+
setColorScheme
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=use-color-scheme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","useColorScheme","useSystemColorScheme","getColorScheme","storageGetCallback","systemColorScheme","storedScheme","colorSchemeStorage","_colorScheme","_setColorScheme","get","setColorScheme","scheme","set","newScheme","colorScheme"],"sourceRoot":"../../../src","sources":["hooks/use-color-scheme.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,cAAc,IAAIC,oBAAoB,QAAQ,cAAc;AAGrE,MAAMC,cAAc,GAAGA,CACrBC,kBAA6C,EAC7CC,iBAA2D,KAC3C;EAChB,IAAID,kBAAkB,EAAE;IACtB,MAAME,YAAY,GAAGF,kBAAkB,CAAC,CAAC;IACzC,IAAIE,YAAY,EAAE,OAAOA,YAAY;EACvC;EACA,IAAID,iBAAiB,EAAE;IACrB,OAAOA,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO;EACxD;EACA,OAAO,OAAO;AAChB,CAAC;AAMD,OAAO,SAASJ,cAAcA,CAAC;EAAEM;AAAwC,CAAC,EAAE;EAC1E,MAAMF,iBAAiB,GAAGH,oBAAoB,CAAC,CAAC;EAChD,MAAM,CAACM,YAAY,EAAEC,eAAe,CAAC,GAAGT,QAAQ,CAC9CG,cAAc,CAACI,kBAAkB,EAAEG,GAAG,EAAEL,iBAAiB,CAC3D,CAAC;EAED,MAAMM,cAAc,GAAIC,MAAmB,IAAK;IAC9CH,eAAe,CAACG,MAAM,CAAC;IACvBL,kBAAkB,EAAEM,GAAG,CAACD,MAAM,CAAC;EACjC,CAAC;EAEDb,SAAS,CAAC,MAAM;IACd,MAAMe,SAAS,GAAGX,cAAc,CAC9BI,kBAAkB,EAAEG,GAAG,EACvBL,iBACF,CAAC;IACD,IAAIS,SAAS,KAAKN,YAAY,EAAE;IAChCG,cAAc,CAACG,SAAS,CAAC;EAC3B,CAAC,EAAE,CAACT,iBAAiB,CAAC,CAAC;EAEvB,OAAO;IAAEU,WAAW,EAAEP,YAAY;IAAEG;EAAe,CAAC;AACtD","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { createContext, useContext
|
|
4
|
-
import { useColorScheme } from "
|
|
3
|
+
import { createContext, useContext } from "react";
|
|
4
|
+
import { useColorScheme } from "../hooks/use-color-scheme.js";
|
|
5
5
|
import { defaultThemeAssets } from "./default/index.js";
|
|
6
6
|
import { mergeThemeAssets } from "./utils.js";
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
@@ -12,15 +12,14 @@ export const ThemeProvider = props => {
|
|
|
12
12
|
theme,
|
|
13
13
|
components
|
|
14
14
|
} = props;
|
|
15
|
-
const
|
|
16
|
-
|
|
15
|
+
const {
|
|
16
|
+
colorScheme,
|
|
17
|
+
setColorScheme
|
|
18
|
+
} = useColorScheme({
|
|
19
|
+
colorSchemeStorage: components?.colorScheme?.storage
|
|
20
|
+
});
|
|
17
21
|
const themeAssets = theme ? mergeThemeAssets(defaultThemeAssets, theme) : defaultThemeAssets;
|
|
18
22
|
const colors = themeAssets.colors[colorScheme];
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (systemColorScheme) {
|
|
21
|
-
setColorScheme(systemColorScheme === "dark" ? "dark" : "light");
|
|
22
|
-
}
|
|
23
|
-
}, [systemColorScheme]);
|
|
24
23
|
return /*#__PURE__*/_jsx(ThemeContext.Provider, {
|
|
25
24
|
value: {
|
|
26
25
|
colorScheme,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useColorScheme","defaultThemeAssets","mergeThemeAssets","jsx","_jsx","ThemeContext","ThemeProvider","props","children","theme","components","colorScheme","setColorScheme","colorSchemeStorage","storage","themeAssets","colors","Provider","value","radius","fontFamily","letterSpacing","fontSize","useTheme","context","Error","useComponentsConfig"],"sourceRoot":"../../../src","sources":["themes/provider.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAA0BC,UAAU,QAAQ,OAAO;AAEzE,SAASC,cAAc,QAAQ,8BAA2B;AAG1D,SAASC,kBAAkB,QAAQ,oBAAW;AAW9C,SAASC,gBAAgB,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA+B3C,MAAMC,YAAY,gBAAGP,aAAa,CAAsB,IAAI,CAAC;AAO7D,OAAO,MAAMQ,aAAa,GAAIC,KAAyB,IAAK;EAC1D,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC;EAAW,CAAC,GAAGH,KAAK;EAC7C,MAAM;IAAEI,WAAW;IAAEC;EAAe,CAAC,GAAGZ,cAAc,CAAC;IACrDa,kBAAkB,EAAEH,UAAU,EAAEC,WAAW,EAAEG;EAC/C,CAAC,CAAC;EAEF,MAAMC,WAAW,GAAGN,KAAK,GACrBP,gBAAgB,CAACD,kBAAkB,EAAEQ,KAAK,CAAC,GAC3CR,kBAAkB;EAEtB,MAAMe,MAAM,GAAGD,WAAW,CAACC,MAAM,CAACL,WAAW,CAAC;EAE9C,oBACEP,IAAA,CAACC,YAAY,CAACY,QAAQ;IACpBC,KAAK,EAAE;MACLP,WAAW;MACXC,cAAc;MACdI,MAAM;MACNG,MAAM,EAAEJ,WAAW,CAACI,MAAM;MAC1BC,UAAU,EAAEL,WAAW,CAACK,UAAU;MAClCC,aAAa,EAAEN,WAAW,CAACM,aAAa;MACxCC,QAAQ,EAAEP,WAAW,CAACO,QAAQ;MAC9BZ;IACF,CAAE;IAAAF,QAAA,EAEDA;EAAQ,CACY,CAAC;AAE5B,CAAC;AAED,OAAO,MAAMe,QAAQ,GAAGA,CAAA,KAAM;EAC5B,MAAMC,OAAO,GAAGzB,UAAU,CAACM,YAAY,CAAC;EACxC,IAAI,CAACmB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,8CAA8C,CAAC;EACjE;EACA,OAAOD,OAAO;AAChB,CAAC;AAED,OAAO,MAAME,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAMF,OAAO,GAAGzB,UAAU,CAACM,YAAY,CAAC;EACxC,IAAI,CAACmB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAOD,OAAO,CAACd,UAAU;AAC3B,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ColorScheme, StorageClient } from "../themes/types";
|
|
2
|
+
interface UseColorSchemeProps {
|
|
3
|
+
colorSchemeStorage?: StorageClient<ColorScheme>;
|
|
4
|
+
}
|
|
5
|
+
export declare function useColorScheme({ colorSchemeStorage }: UseColorSchemeProps): {
|
|
6
|
+
colorScheme: ColorScheme;
|
|
7
|
+
setColorScheme: (scheme: ColorScheme) => void;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=use-color-scheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-color-scheme.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-color-scheme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgBlE,UAAU,mBAAmB;IAC3B,kBAAkB,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;CACjD;AAED,wBAAgB,cAAc,CAAC,EAAE,kBAAkB,EAAE,EAAE,mBAAmB;;6BAMxC,WAAW;EAe5C"}
|
|
@@ -2,7 +2,7 @@ import { type PropsWithChildren } from "react";
|
|
|
2
2
|
import type { ToastVariants } from "../components/toast/variants";
|
|
3
3
|
import type { SvgProps } from "../types/props.types";
|
|
4
4
|
import type { DeepPartial } from "../types/util.types";
|
|
5
|
-
import type { Colors, ColorScheme, FontFamily, FontSize, LetterSpacing, Radius, ThemeAssets } from "./types";
|
|
5
|
+
import type { Colors, ColorScheme, FontFamily, FontSize, LetterSpacing, Radius, StorageClient, ThemeAssets } from "./types";
|
|
6
6
|
interface ThemeContext {
|
|
7
7
|
colors: Colors;
|
|
8
8
|
radius: Radius;
|
|
@@ -14,6 +14,9 @@ interface ThemeContext {
|
|
|
14
14
|
components?: ComponentsConfig;
|
|
15
15
|
}
|
|
16
16
|
export interface ComponentsConfig {
|
|
17
|
+
colorScheme?: {
|
|
18
|
+
storage?: StorageClient<ColorScheme>;
|
|
19
|
+
};
|
|
17
20
|
toast?: {
|
|
18
21
|
icons?: Partial<Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>>;
|
|
19
22
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/themes/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/themes/provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAc,MAAM,OAAO,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,UAAU,EACV,QAAQ,EACR,aAAa,EACb,MAAM,EACN,aAAa,EACb,WAAW,EACZ,MAAM,SAAS,CAAC;AAGjB,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;KACtC,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,OAAO,CACb,MAAM,CAAC,MAAM,OAAO,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;KACH,CAAC;IACF,IAAI,CAAC,EAAE;QACL,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KAC1C,CAAC;CACH;AAED,QAAA,MAAM,YAAY,8CAA2C,CAAC;AAE9D,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,KAAK,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,gCA4BtD,CAAC;AAEF,eAAO,MAAM,QAAQ,oBAMpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,oCAM/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/themes/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,KAAK,KAAK,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,iBAAiB,EAAE,KAAK,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC;IACjB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,KAAK,CAAC;IACvB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AACnC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/themes/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,KAAK,KAAK,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AAEtD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,KAAK,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,iBAAiB,EAAE,KAAK,CAAC;IACzB,SAAS,EAAE,KAAK,CAAC;IACjB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,EAAE,KAAK,CAAC;IACvB,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AACnC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;IAC7B,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import { useColorScheme as useSystemColorScheme } from "react-native";
|
|
3
|
+
import type { ColorScheme, StorageClient } from "../themes/types";
|
|
4
|
+
|
|
5
|
+
const getColorScheme = (
|
|
6
|
+
storageGetCallback?: () => ColorScheme | null,
|
|
7
|
+
systemColorScheme?: ReturnType<typeof useSystemColorScheme>,
|
|
8
|
+
): ColorScheme => {
|
|
9
|
+
if (storageGetCallback) {
|
|
10
|
+
const storedScheme = storageGetCallback();
|
|
11
|
+
if (storedScheme) return storedScheme;
|
|
12
|
+
}
|
|
13
|
+
if (systemColorScheme) {
|
|
14
|
+
return systemColorScheme === "dark" ? "dark" : "light";
|
|
15
|
+
}
|
|
16
|
+
return "light";
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
interface UseColorSchemeProps {
|
|
20
|
+
colorSchemeStorage?: StorageClient<ColorScheme>;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function useColorScheme({ colorSchemeStorage }: UseColorSchemeProps) {
|
|
24
|
+
const systemColorScheme = useSystemColorScheme();
|
|
25
|
+
const [_colorScheme, _setColorScheme] = useState<ColorScheme>(
|
|
26
|
+
getColorScheme(colorSchemeStorage?.get, systemColorScheme),
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
const setColorScheme = (scheme: ColorScheme) => {
|
|
30
|
+
_setColorScheme(scheme);
|
|
31
|
+
colorSchemeStorage?.set(scheme);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
const newScheme = getColorScheme(
|
|
36
|
+
colorSchemeStorage?.get,
|
|
37
|
+
systemColorScheme,
|
|
38
|
+
);
|
|
39
|
+
if (newScheme === _colorScheme) return;
|
|
40
|
+
setColorScheme(newScheme);
|
|
41
|
+
}, [systemColorScheme]);
|
|
42
|
+
|
|
43
|
+
return { colorScheme: _colorScheme, setColorScheme };
|
|
44
|
+
}
|
package/src/themes/provider.tsx
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createContext,
|
|
3
|
-
type PropsWithChildren,
|
|
4
|
-
useContext,
|
|
5
|
-
useEffect,
|
|
6
|
-
useState,
|
|
7
|
-
} from "react";
|
|
8
|
-
import { useColorScheme } from "react-native";
|
|
1
|
+
import { createContext, type PropsWithChildren, useContext } from "react";
|
|
9
2
|
import type { ToastVariants } from "../components/toast/variants";
|
|
3
|
+
import { useColorScheme } from "../hooks/use-color-scheme";
|
|
10
4
|
import type { SvgProps } from "../types/props.types";
|
|
11
5
|
import type { DeepPartial } from "../types/util.types";
|
|
12
6
|
import { defaultThemeAssets } from "./default";
|
|
@@ -17,6 +11,7 @@ import type {
|
|
|
17
11
|
FontSize,
|
|
18
12
|
LetterSpacing,
|
|
19
13
|
Radius,
|
|
14
|
+
StorageClient,
|
|
20
15
|
ThemeAssets,
|
|
21
16
|
} from "./types";
|
|
22
17
|
import { mergeThemeAssets } from "./utils";
|
|
@@ -33,6 +28,9 @@ interface ThemeContext {
|
|
|
33
28
|
}
|
|
34
29
|
|
|
35
30
|
export interface ComponentsConfig {
|
|
31
|
+
colorScheme?: {
|
|
32
|
+
storage?: StorageClient<ColorScheme>;
|
|
33
|
+
};
|
|
36
34
|
toast?: {
|
|
37
35
|
icons?: Partial<
|
|
38
36
|
Record<keyof typeof ToastVariants, React.ComponentType<SvgProps>>
|
|
@@ -56,11 +54,9 @@ export interface ThemeProviderProps extends PropsWithChildren {
|
|
|
56
54
|
|
|
57
55
|
export const ThemeProvider = (props: ThemeProviderProps) => {
|
|
58
56
|
const { children, theme, components } = props;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
systemColorScheme === "dark" ? "dark" : "light",
|
|
63
|
-
);
|
|
57
|
+
const { colorScheme, setColorScheme } = useColorScheme({
|
|
58
|
+
colorSchemeStorage: components?.colorScheme?.storage,
|
|
59
|
+
});
|
|
64
60
|
|
|
65
61
|
const themeAssets = theme
|
|
66
62
|
? mergeThemeAssets(defaultThemeAssets, theme)
|
|
@@ -68,12 +64,6 @@ export const ThemeProvider = (props: ThemeProviderProps) => {
|
|
|
68
64
|
|
|
69
65
|
const colors = themeAssets.colors[colorScheme];
|
|
70
66
|
|
|
71
|
-
useEffect(() => {
|
|
72
|
-
if (systemColorScheme) {
|
|
73
|
-
setColorScheme(systemColorScheme === "dark" ? "dark" : "light");
|
|
74
|
-
}
|
|
75
|
-
}, [systemColorScheme]);
|
|
76
|
-
|
|
77
67
|
return (
|
|
78
68
|
<ThemeContext.Provider
|
|
79
69
|
value={{
|