@korsolutions/ui 0.0.76 → 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/components/menu/components/menu-checkbox-item.js +5 -5
- package/dist/module/components/menu/components/menu-checkbox-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-item.js +3 -1
- package/dist/module/components/menu/components/menu-item.js.map +1 -1
- package/dist/module/components/menu/components/menu-radio-group.js +2 -2
- package/dist/module/components/menu/components/menu-radio-group.js.map +1 -1
- package/dist/module/components/menu/components/menu-radio-item.js +2 -2
- package/dist/module/components/menu/components/menu-radio-item.js.map +1 -1
- 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/components/menu/components/menu-checkbox-item.d.ts +2 -3
- package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-item.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts.map +1 -1
- package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts +0 -1
- package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts.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/components/menu/components/menu-checkbox-item.tsx +7 -8
- package/src/components/menu/components/menu-item.tsx +3 -1
- package/src/components/menu/components/menu-radio-group.tsx +3 -3
- package/src/components/menu/components/menu-radio-item.tsx +2 -3
- package/src/hooks/use-color-scheme.ts +44 -0
- package/src/themes/provider.tsx +9 -19
- package/src/themes/types.ts +5 -0
|
@@ -18,10 +18,10 @@ export function MenuCheckboxItem(props) {
|
|
|
18
18
|
const composedStyle = [menu.styles?.checkboxItem?.default, menu.styles?.checkboxItem?.[state], props.style];
|
|
19
19
|
const handlePress = () => {
|
|
20
20
|
if (props.disabled) return;
|
|
21
|
-
props.
|
|
22
|
-
|
|
21
|
+
props.onChange(!props.value);
|
|
22
|
+
requestAnimationFrame(() => {
|
|
23
23
|
menu.setIsOpen(false);
|
|
24
|
-
}
|
|
24
|
+
});
|
|
25
25
|
};
|
|
26
26
|
const textStyles = menu.styles?.itemText;
|
|
27
27
|
const iconStyles = menu.styles?.itemIcon;
|
|
@@ -41,12 +41,12 @@ export function MenuCheckboxItem(props) {
|
|
|
41
41
|
disabled: props.disabled,
|
|
42
42
|
accessibilityRole: "checkbox",
|
|
43
43
|
accessibilityState: {
|
|
44
|
-
checked: props.
|
|
44
|
+
checked: props.value,
|
|
45
45
|
disabled: props.disabled
|
|
46
46
|
},
|
|
47
47
|
style: composedStyle,
|
|
48
48
|
children: [organizedChildren, /*#__PURE__*/_jsx(MenuSelectionIndicator, {
|
|
49
|
-
isSelected: props.
|
|
49
|
+
isSelected: props.value
|
|
50
50
|
})]
|
|
51
51
|
});
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","disabled","MenuCheckboxItem","props","menu","setIsHovered","state","composedStyle","styles","checkboxItem","default","style","handlePress","
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","disabled","MenuCheckboxItem","props","menu","setIsHovered","state","composedStyle","styles","checkboxItem","default","style","handlePress","onChange","value","requestAnimationFrame","setIsOpen","textStyles","itemText","iconStyles","itemIcon","organizedChildren","children","render","onPress","onPointerEnter","onPointerLeave","accessibilityRole","accessibilityState","checked","isSelected"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-checkbox-item.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAwC,cAAc;AACxE,SAASC,oBAAoB,QAAQ,0CAAuC;AAC5E,SAASC,OAAO,QAAQ,eAAY;AAEpC,SAASC,sBAAsB,QAAQ,+BAA4B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWpE,MAAMC,cAAc,GAAGA,CACrBC,SAAkB,EAClBC,QAAkB,KACQ;EAC1B,IAAIA,QAAQ,EAAE,OAAO,UAAU;EAC/B,IAAID,SAAS,EAAE,OAAO,SAAS;EAC/B,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASE,gBAAgBA,CAACC,KAA4B,EAAE;EAC7D,MAAMC,IAAI,GAAGb,OAAO,CAAC,CAAC;EACtB,MAAM,CAACS,SAAS,EAAEK,YAAY,CAAC,GAAGjB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMkB,KAAK,GAAGP,cAAc,CAACC,SAAS,EAAEG,KAAK,CAACF,QAAQ,CAAC;EAEvD,MAAMM,aAAa,GAAG,CACpBH,IAAI,CAACI,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAClCN,IAAI,CAACI,MAAM,EAAEC,YAAY,GAAGH,KAAK,CAAC,EAClCH,KAAK,CAACQ,KAAK,CACZ;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIT,KAAK,CAACF,QAAQ,EAAE;IACpBE,KAAK,CAACU,QAAQ,CAAC,CAACV,KAAK,CAACW,KAAK,CAAC;IAC5BC,qBAAqB,CAAC,MAAM;MAC1BX,IAAI,CAACY,SAAS,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,UAAU,GAAGb,IAAI,CAACI,MAAM,EAAEU,QAAQ;EACxC,MAAMC,UAAU,GAAGf,IAAI,CAACI,MAAM,EAAEY,QAAQ;EAExC,MAAMC,iBAAiB,GAAG/B,oBAAoB,CAC5Ca,KAAK,CAACmB,QAAQ,EACdL,UAAU,EACVE,UACF,CAAC;EAED,IAAIhB,KAAK,CAACoB,MAAM,EAAE;IAChB,oBACE3B,IAAA,CAAAF,SAAA;MAAA4B,QAAA,EACGnB,KAAK,CAACoB,MAAM,CAAC;QACZ,GAAGpB,KAAK;QACRmB,QAAQ,EAAED;MACZ,CAAC;IAAC,CACF,CAAC;EAEP;EAEA,oBACEvB,KAAA,CAACT,SAAS;IACRmC,OAAO,EAAEZ,WAAY;IACrBa,cAAc,EAAEA,CAAA,KAAMpB,YAAY,CAAC,IAAI,CAAE;IACzCqB,cAAc,EAAEA,CAAA,KAAMrB,YAAY,CAAC,KAAK,CAAE;IAC1CJ,QAAQ,EAAEE,KAAK,CAACF,QAAS;IACzB0B,iBAAiB,EAAC,UAAU;IAC5BC,kBAAkB,EAAE;MAAEC,OAAO,EAAE1B,KAAK,CAACW,KAAK;MAAEb,QAAQ,EAAEE,KAAK,CAACF;IAAS,CAAE;IACvEU,KAAK,EAAEJ,aAAc;IAAAe,QAAA,GAEpBD,iBAAiB,eAClBzB,IAAA,CAACJ,sBAAsB;MAACsC,UAAU,EAAE3B,KAAK,CAACW;IAAM,CAAE,CAAC;EAAA,CAC1C,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -18,7 +18,9 @@ export function MenuItem(props) {
|
|
|
18
18
|
const composedStyle = [menu.styles?.item?.default, menu.styles?.item?.[state], props.style];
|
|
19
19
|
const handlePress = () => {
|
|
20
20
|
props.onPress?.();
|
|
21
|
-
|
|
21
|
+
requestAnimationFrame(() => {
|
|
22
|
+
menu.setIsOpen(false);
|
|
23
|
+
});
|
|
22
24
|
};
|
|
23
25
|
const textStyles = menu.styles?.itemText;
|
|
24
26
|
const iconStyles = menu.styles?.itemIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","Fragment","_Fragment","jsx","_jsx","calculateState","isHovered","MenuItem","props","menu","setIsHovered","state","composedStyle","styles","item","default","style","handlePress","onPress","
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","Fragment","_Fragment","jsx","_jsx","calculateState","isHovered","MenuItem","props","menu","setIsHovered","state","composedStyle","styles","item","default","style","handlePress","onPress","requestAnimationFrame","setIsOpen","textStyles","itemText","iconStyles","itemIcon","organizedChildren","children","render","onPointerEnter","onPointerLeave"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-item.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAwC,cAAc;AACxE,SAASC,oBAAoB,QAAQ,0CAAuC;AAC5E,SAASC,OAAO,QAAQ,eAAY;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAWrC,MAAMC,cAAc,GAAIC,SAAkB,IAAsB;EAC9D,IAAIA,SAAS,EAAE;IACb,OAAO,SAAS;EAClB;EACA,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAE;EAC7C,MAAMC,IAAI,GAAGT,OAAO,CAAC,CAAC;EACtB,MAAM,CAACM,SAAS,EAAEI,YAAY,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMc,KAAK,GAAGN,cAAc,CAACC,SAAS,CAAC;EACvC,MAAMM,aAAa,GAAG,CACpBH,IAAI,CAACI,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAC1BN,IAAI,CAACI,MAAM,EAAEC,IAAI,GAAGH,KAAK,CAAC,EAC1BH,KAAK,CAACQ,KAAK,CACZ;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxBT,KAAK,CAACU,OAAO,GAAG,CAAC;IACjBC,qBAAqB,CAAC,MAAM;MAC1BV,IAAI,CAACW,SAAS,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,UAAU,GAAGZ,IAAI,CAACI,MAAM,EAAES,QAAQ;EACxC,MAAMC,UAAU,GAAGd,IAAI,CAACI,MAAM,EAAEW,QAAQ;EAExC,MAAMC,iBAAiB,GAAG1B,oBAAoB,CAC5CS,KAAK,CAACkB,QAAQ,EACdL,UAAU,EACVE,UACF,CAAC;EAED,IAAIf,KAAK,CAACmB,MAAM,EAAE;IAChB,oBACEvB,IAAA,CAAAF,SAAA;MAAAwB,QAAA,EACGlB,KAAK,CAACmB,MAAM,CAAC;QACZ,GAAGnB,KAAK;QACRkB,QAAQ,EAAED;MACZ,CAAC;IAAC,CACF,CAAC;EAEP;EAEA,oBACErB,IAAA,CAACN,SAAS;IACRoB,OAAO,EAAED,WAAY;IACrBW,cAAc,EAAEA,CAAA,KAAMlB,YAAY,CAAC,IAAI,CAAE;IACzCmB,cAAc,EAAEA,CAAA,KAAMnB,YAAY,CAAC,KAAK,CAAE;IAC1CM,KAAK,EAAEJ,aAAc;IAAAc,QAAA,EAEpBD;EAAiB,CACT,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -9,8 +9,8 @@ export function MenuRadioGroup(props) {
|
|
|
9
9
|
const composedStyle = [menu.styles?.radioGroup, props.style];
|
|
10
10
|
const contextValue = useMemo(() => ({
|
|
11
11
|
value: props.value,
|
|
12
|
-
onValueChange: props.
|
|
13
|
-
}), [props.value, props.
|
|
12
|
+
onValueChange: props.onChange
|
|
13
|
+
}), [props.value, props.onChange]);
|
|
14
14
|
return /*#__PURE__*/_jsx(MenuRadioGroupContext.Provider, {
|
|
15
15
|
value: contextValue,
|
|
16
16
|
children: /*#__PURE__*/_jsx(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","View","MenuRadioGroupContext","useMenu","jsx","_jsx","MenuRadioGroup","props","menu","composedStyle","styles","radioGroup","style","contextValue","value","onValueChange","Provider","children","accessibilityRole","role"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-radio-group.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,qBAAqB,EAAEC,OAAO,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS5D,OAAO,SAASC,cAAcA,CAACC,KAA0B,EAAE;EACzD,MAAMC,IAAI,GAAGL,OAAO,CAAC,CAAC;EACtB,MAAMM,aAAa,GAAG,CAACD,IAAI,CAACE,MAAM,EAAEC,UAAU,EAAEJ,KAAK,CAACK,KAAK,CAAC;EAE5D,MAAMC,YAAY,GAAGb,OAAO,CAC1B,OAAO;IACLc,KAAK,EAAEP,KAAK,CAACO,KAAK;IAClBC,aAAa,EAAER,KAAK,
|
|
1
|
+
{"version":3,"names":["React","useMemo","View","MenuRadioGroupContext","useMenu","jsx","_jsx","MenuRadioGroup","props","menu","composedStyle","styles","radioGroup","style","contextValue","value","onValueChange","onChange","Provider","children","accessibilityRole","role"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-radio-group.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AACtC,SAASC,IAAI,QAAwC,cAAc;AACnE,SAASC,qBAAqB,EAAEC,OAAO,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAS5D,OAAO,SAASC,cAAcA,CAACC,KAA0B,EAAE;EACzD,MAAMC,IAAI,GAAGL,OAAO,CAAC,CAAC;EACtB,MAAMM,aAAa,GAAG,CAACD,IAAI,CAACE,MAAM,EAAEC,UAAU,EAAEJ,KAAK,CAACK,KAAK,CAAC;EAE5D,MAAMC,YAAY,GAAGb,OAAO,CAC1B,OAAO;IACLc,KAAK,EAAEP,KAAK,CAACO,KAAK;IAClBC,aAAa,EAAER,KAAK,CAACS;EACvB,CAAC,CAAC,EACF,CAACT,KAAK,CAACO,KAAK,EAAEP,KAAK,CAACS,QAAQ,CAC9B,CAAC;EAED,oBACEX,IAAA,CAACH,qBAAqB,CAACe,QAAQ;IAACH,KAAK,EAAED,YAAa;IAAAK,QAAA,eAClDb,IAAA,CAACJ,IAAI;MACHkB,iBAAiB,EAAC,YAAY;MAC9BC,IAAI,EAAC,YAAY;MACjBR,KAAK,EAAEH,aAAc;MAAAS,QAAA,EAEpBX,KAAK,CAACW;IAAQ,CACX;EAAC,CACuB,CAAC;AAErC","ignoreList":[]}
|
|
@@ -22,9 +22,9 @@ export function MenuRadioItem(props) {
|
|
|
22
22
|
const handlePress = () => {
|
|
23
23
|
if (props.disabled) return;
|
|
24
24
|
radioGroup.onValueChange(props.value);
|
|
25
|
-
|
|
25
|
+
requestAnimationFrame(() => {
|
|
26
26
|
menu.setIsOpen(false);
|
|
27
|
-
}
|
|
27
|
+
});
|
|
28
28
|
};
|
|
29
29
|
const textStyles = menu.styles?.itemText;
|
|
30
30
|
const iconStyles = menu.styles?.itemIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","useMenuRadioGroup","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","isSelected","disabled","MenuRadioItem","props","menu","radioGroup","setIsHovered","value","state","composedStyle","styles","radioItem","default","style","handlePress","onValueChange","
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useOrganizedChildren","useMenu","useMenuRadioGroup","MenuSelectionIndicator","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","calculateState","isHovered","isSelected","disabled","MenuRadioItem","props","menu","radioGroup","setIsHovered","value","state","composedStyle","styles","radioItem","default","style","handlePress","onValueChange","requestAnimationFrame","setIsOpen","textStyles","itemText","iconStyles","itemIcon","organizedChildren","children","render","onPress","onPointerEnter","onPointerLeave","accessibilityRole","accessibilityState","checked"],"sourceRoot":"../../../../../src","sources":["components/menu/components/menu-radio-item.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,SAAS,QAAwC,cAAc;AACxE,SAASC,oBAAoB,QAAQ,0CAAuC;AAC5E,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,eAAY;AAEvD,SAASC,sBAAsB,QAAQ,+BAA4B;AAAC,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAUpE,MAAMC,cAAc,GAAGA,CACrBC,SAAkB,EAClBC,UAAmB,EACnBC,QAAkB,KACK;EACvB,IAAIA,QAAQ,EAAE,OAAO,UAAU;EAC/B,IAAID,UAAU,EAAE,OAAO,UAAU;EACjC,IAAID,SAAS,EAAE,OAAO,SAAS;EAC/B,OAAO,SAAS;AAClB,CAAC;AAED,OAAO,SAASG,aAAaA,CAACC,KAAyB,EAAE;EACvD,MAAMC,IAAI,GAAGf,OAAO,CAAC,CAAC;EACtB,MAAMgB,UAAU,GAAGf,iBAAiB,CAAC,CAAC;EACtC,MAAM,CAACS,SAAS,EAAEO,YAAY,CAAC,GAAGpB,QAAQ,CAAC,KAAK,CAAC;EACjD,MAAMc,UAAU,GAAGK,UAAU,CAACE,KAAK,KAAKJ,KAAK,CAACI,KAAK;EACnD,MAAMC,KAAK,GAAGV,cAAc,CAACC,SAAS,EAAEC,UAAU,EAAEG,KAAK,CAACF,QAAQ,CAAC;EAEnE,MAAMQ,aAAa,GAAG,CACpBL,IAAI,CAACM,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAC/BR,IAAI,CAACM,MAAM,EAAEC,SAAS,GAAGH,KAAK,CAAC,EAC/BL,KAAK,CAACU,KAAK,CACZ;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIX,KAAK,CAACF,QAAQ,EAAE;IACpBI,UAAU,CAACU,aAAa,CAACZ,KAAK,CAACI,KAAK,CAAC;IACrCS,qBAAqB,CAAC,MAAM;MAC1BZ,IAAI,CAACa,SAAS,CAAC,KAAK,CAAC;IACvB,CAAC,CAAC;EACJ,CAAC;EAED,MAAMC,UAAU,GAAGd,IAAI,CAACM,MAAM,EAAES,QAAQ;EACxC,MAAMC,UAAU,GAAGhB,IAAI,CAACM,MAAM,EAAEW,QAAQ;EAExC,MAAMC,iBAAiB,GAAGlC,oBAAoB,CAC5Ce,KAAK,CAACoB,QAAQ,EACdL,UAAU,EACVE,UACF,CAAC;EAED,IAAIjB,KAAK,CAACqB,MAAM,EAAE;IAChB,oBACE7B,IAAA,CAAAF,SAAA;MAAA8B,QAAA,EACGpB,KAAK,CAACqB,MAAM,CAAC;QACZ,GAAGrB,KAAK;QACRoB,QAAQ,EAAED;MACZ,CAAC;IAAC,CACF,CAAC;EAEP;EAEA,oBACEzB,KAAA,CAACV,SAAS;IACRsC,OAAO,EAAEX,WAAY;IACrBY,cAAc,EAAEA,CAAA,KAAMpB,YAAY,CAAC,IAAI,CAAE;IACzCqB,cAAc,EAAEA,CAAA,KAAMrB,YAAY,CAAC,KAAK,CAAE;IAC1CL,QAAQ,EAAEE,KAAK,CAACF,QAAS;IACzB2B,iBAAiB,EAAC,OAAO;IACzBC,kBAAkB,EAAE;MAAEC,OAAO,EAAE9B,UAAU;MAAEC,QAAQ,EAAEE,KAAK,CAACF;IAAS,CAAE;IACtEY,KAAK,EAAEJ,aAAc;IAAAc,QAAA,GAEpBD,iBAAiB,eAClB3B,IAAA,CAACJ,sBAAsB;MAACS,UAAU,EAAEA;IAAW,CAAE,CAAC;EAAA,CACzC,CAAC;AAEhB","ignoreList":[]}
|
|
@@ -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":[]}
|
|
@@ -2,10 +2,9 @@ import React from "react";
|
|
|
2
2
|
import { type StyleProp, type ViewStyle } from "react-native";
|
|
3
3
|
export interface MenuCheckboxItemProps {
|
|
4
4
|
children: React.ReactNode;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
value: boolean;
|
|
6
|
+
onChange: (value: boolean) => void;
|
|
7
7
|
disabled?: boolean;
|
|
8
|
-
closeOnPress?: boolean;
|
|
9
8
|
render?: (props: MenuCheckboxItemProps) => React.ReactNode;
|
|
10
9
|
style?: StyleProp<ViewStyle>;
|
|
11
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-checkbox-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-checkbox-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"menu-checkbox-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-checkbox-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAWD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,qBAqD5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAC;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AASD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"menu-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAC;IACnD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AASD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,qBA+C5C"}
|
|
@@ -3,7 +3,7 @@ import { type StyleProp, type ViewStyle } from "react-native";
|
|
|
3
3
|
export interface MenuRadioGroupProps {
|
|
4
4
|
children?: React.ReactNode;
|
|
5
5
|
value: string;
|
|
6
|
-
|
|
6
|
+
onChange: (value: string) => void;
|
|
7
7
|
style?: StyleProp<ViewStyle>;
|
|
8
8
|
}
|
|
9
9
|
export declare function MenuRadioGroup(props: MenuRadioGroupProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-radio-group.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-radio-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,
|
|
1
|
+
{"version":3,"file":"menu-radio-group.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-radio-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAuBxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-radio-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-radio-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,
|
|
1
|
+
{"version":3,"file":"menu-radio-item.d.ts","sourceRoot":"","sources":["../../../../../../src/components/menu/components/menu-radio-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AACxC,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,KAAK,CAAC,SAAS,CAAC;IACxD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAaD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,qBAuDtD"}
|
|
@@ -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
|
@@ -7,10 +7,9 @@ import { MenuSelectionIndicator } from "./menu-selection-indicator";
|
|
|
7
7
|
|
|
8
8
|
export interface MenuCheckboxItemProps {
|
|
9
9
|
children: React.ReactNode;
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
value: boolean;
|
|
11
|
+
onChange: (value: boolean) => void;
|
|
12
12
|
disabled?: boolean;
|
|
13
|
-
closeOnPress?: boolean;
|
|
14
13
|
render?: (props: MenuCheckboxItemProps) => React.ReactNode;
|
|
15
14
|
style?: StyleProp<ViewStyle>;
|
|
16
15
|
}
|
|
@@ -37,10 +36,10 @@ export function MenuCheckboxItem(props: MenuCheckboxItemProps) {
|
|
|
37
36
|
|
|
38
37
|
const handlePress = () => {
|
|
39
38
|
if (props.disabled) return;
|
|
40
|
-
props.
|
|
41
|
-
|
|
39
|
+
props.onChange(!props.value);
|
|
40
|
+
requestAnimationFrame(() => {
|
|
42
41
|
menu.setIsOpen(false);
|
|
43
|
-
}
|
|
42
|
+
});
|
|
44
43
|
};
|
|
45
44
|
|
|
46
45
|
const textStyles = menu.styles?.itemText;
|
|
@@ -70,11 +69,11 @@ export function MenuCheckboxItem(props: MenuCheckboxItemProps) {
|
|
|
70
69
|
onPointerLeave={() => setIsHovered(false)}
|
|
71
70
|
disabled={props.disabled}
|
|
72
71
|
accessibilityRole="checkbox"
|
|
73
|
-
accessibilityState={{ checked: props.
|
|
72
|
+
accessibilityState={{ checked: props.value, disabled: props.disabled }}
|
|
74
73
|
style={composedStyle}
|
|
75
74
|
>
|
|
76
75
|
{organizedChildren}
|
|
77
|
-
<MenuSelectionIndicator isSelected={props.
|
|
76
|
+
<MenuSelectionIndicator isSelected={props.value} />
|
|
78
77
|
</Pressable>
|
|
79
78
|
);
|
|
80
79
|
}
|
|
@@ -31,7 +31,9 @@ export function MenuItem(props: MenuItemProps) {
|
|
|
31
31
|
|
|
32
32
|
const handlePress = () => {
|
|
33
33
|
props.onPress?.();
|
|
34
|
-
|
|
34
|
+
requestAnimationFrame(() => {
|
|
35
|
+
menu.setIsOpen(false);
|
|
36
|
+
});
|
|
35
37
|
};
|
|
36
38
|
|
|
37
39
|
const textStyles = menu.styles?.itemText;
|
|
@@ -5,7 +5,7 @@ import { MenuRadioGroupContext, useMenu } from "../context";
|
|
|
5
5
|
export interface MenuRadioGroupProps {
|
|
6
6
|
children?: React.ReactNode;
|
|
7
7
|
value: string;
|
|
8
|
-
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
9
|
style?: StyleProp<ViewStyle>;
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -16,9 +16,9 @@ export function MenuRadioGroup(props: MenuRadioGroupProps) {
|
|
|
16
16
|
const contextValue = useMemo(
|
|
17
17
|
() => ({
|
|
18
18
|
value: props.value,
|
|
19
|
-
onValueChange: props.
|
|
19
|
+
onValueChange: props.onChange,
|
|
20
20
|
}),
|
|
21
|
-
[props.value, props.
|
|
21
|
+
[props.value, props.onChange],
|
|
22
22
|
);
|
|
23
23
|
|
|
24
24
|
return (
|
|
@@ -9,7 +9,6 @@ export interface MenuRadioItemProps {
|
|
|
9
9
|
children: React.ReactNode;
|
|
10
10
|
value: string;
|
|
11
11
|
disabled?: boolean;
|
|
12
|
-
closeOnPress?: boolean;
|
|
13
12
|
render?: (props: MenuRadioItemProps) => React.ReactNode;
|
|
14
13
|
style?: StyleProp<ViewStyle>;
|
|
15
14
|
}
|
|
@@ -41,9 +40,9 @@ export function MenuRadioItem(props: MenuRadioItemProps) {
|
|
|
41
40
|
const handlePress = () => {
|
|
42
41
|
if (props.disabled) return;
|
|
43
42
|
radioGroup.onValueChange(props.value);
|
|
44
|
-
|
|
43
|
+
requestAnimationFrame(() => {
|
|
45
44
|
menu.setIsOpen(false);
|
|
46
|
-
}
|
|
45
|
+
});
|
|
47
46
|
};
|
|
48
47
|
|
|
49
48
|
const textStyles = menu.styles?.itemText;
|
|
@@ -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={{
|