@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.
Files changed (33) hide show
  1. package/dist/module/components/menu/components/menu-checkbox-item.js +5 -5
  2. package/dist/module/components/menu/components/menu-checkbox-item.js.map +1 -1
  3. package/dist/module/components/menu/components/menu-item.js +3 -1
  4. package/dist/module/components/menu/components/menu-item.js.map +1 -1
  5. package/dist/module/components/menu/components/menu-radio-group.js +2 -2
  6. package/dist/module/components/menu/components/menu-radio-group.js.map +1 -1
  7. package/dist/module/components/menu/components/menu-radio-item.js +2 -2
  8. package/dist/module/components/menu/components/menu-radio-item.js.map +1 -1
  9. package/dist/module/hooks/use-color-scheme.js +34 -0
  10. package/dist/module/hooks/use-color-scheme.js.map +1 -0
  11. package/dist/module/themes/provider.js +8 -9
  12. package/dist/module/themes/provider.js.map +1 -1
  13. package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts +2 -3
  14. package/dist/typescript/src/components/menu/components/menu-checkbox-item.d.ts.map +1 -1
  15. package/dist/typescript/src/components/menu/components/menu-item.d.ts.map +1 -1
  16. package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts +1 -1
  17. package/dist/typescript/src/components/menu/components/menu-radio-group.d.ts.map +1 -1
  18. package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts +0 -1
  19. package/dist/typescript/src/components/menu/components/menu-radio-item.d.ts.map +1 -1
  20. package/dist/typescript/src/hooks/use-color-scheme.d.ts +10 -0
  21. package/dist/typescript/src/hooks/use-color-scheme.d.ts.map +1 -0
  22. package/dist/typescript/src/themes/provider.d.ts +4 -1
  23. package/dist/typescript/src/themes/provider.d.ts.map +1 -1
  24. package/dist/typescript/src/themes/types.d.ts +4 -0
  25. package/dist/typescript/src/themes/types.d.ts.map +1 -1
  26. package/package.json +1 -1
  27. package/src/components/menu/components/menu-checkbox-item.tsx +7 -8
  28. package/src/components/menu/components/menu-item.tsx +3 -1
  29. package/src/components/menu/components/menu-radio-group.tsx +3 -3
  30. package/src/components/menu/components/menu-radio-item.tsx +2 -3
  31. package/src/hooks/use-color-scheme.ts +44 -0
  32. package/src/themes/provider.tsx +9 -19
  33. 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.onCheckedChange(!props.checked);
22
- if (props.closeOnPress) {
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.checked,
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.checked
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","onCheckedChange","checked","closeOnPress","setIsOpen","textStyles","itemText","iconStyles","itemIcon","organizedChildren","children","render","onPress","onPointerEnter","onPointerLeave","accessibilityRole","accessibilityState","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;AAYpE,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,eAAe,CAAC,CAACV,KAAK,CAACW,OAAO,CAAC;IACrC,IAAIX,KAAK,CAACY,YAAY,EAAE;MACtBX,IAAI,CAACY,SAAS,CAAC,KAAK,CAAC;IACvB;EACF,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;MAAEd,OAAO,EAAEX,KAAK,CAACW,OAAO;MAAEb,QAAQ,EAAEE,KAAK,CAACF;IAAS,CAAE;IACzEU,KAAK,EAAEJ,aAAc;IAAAe,QAAA,GAEpBD,iBAAiB,eAClBzB,IAAA,CAACJ,sBAAsB;MAACqC,UAAU,EAAE1B,KAAK,CAACW;IAAQ,CAAE,CAAC;EAAA,CAC5C,CAAC;AAEhB","ignoreList":[]}
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
- menu.setIsOpen(prev => !prev);
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","setIsOpen","prev","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;IACjBT,IAAI,CAACU,SAAS,CAAEC,IAAI,IAAK,CAACA,IAAI,CAAC;EACjC,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":[]}
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.onValueChange
13
- }), [props.value, props.onValueChange]);
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,CAACQ;EACvB,CAAC,CAAC,EACF,CAACR,KAAK,CAACO,KAAK,EAAEP,KAAK,CAACQ,aAAa,CACnC,CAAC;EAED,oBACEV,IAAA,CAACH,qBAAqB,CAACc,QAAQ;IAACF,KAAK,EAAED,YAAa;IAAAI,QAAA,eAClDZ,IAAA,CAACJ,IAAI;MACHiB,iBAAiB,EAAC,YAAY;MAC9BC,IAAI,EAAC,YAAY;MACjBP,KAAK,EAAEH,aAAc;MAAAQ,QAAA,EAEpBV,KAAK,CAACU;IAAQ,CACX;EAAC,CACuB,CAAC;AAErC","ignoreList":[]}
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
- if (props.closeOnPress) {
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","closeOnPress","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;AAWpE,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;IACrC,IAAIJ,KAAK,CAACa,YAAY,EAAE;MACtBZ,IAAI,CAACa,SAAS,CAAC,KAAK,CAAC;IACvB;EACF,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":[]}
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, useEffect, useState } from "react";
4
- import { useColorScheme } from "react-native";
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 systemColorScheme = useColorScheme();
16
- const [colorScheme, setColorScheme] = useState(systemColorScheme === "dark" ? "dark" : "light");
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","useEffect","useState","useColorScheme","defaultThemeAssets","mergeThemeAssets","jsx","_jsx","ThemeContext","ThemeProvider","props","children","theme","components","systemColorScheme","colorScheme","setColorScheme","themeAssets","colors","Provider","value","radius","fontFamily","letterSpacing","fontSize","useTheme","context","Error","useComponentsConfig"],"sourceRoot":"../../../src","sources":["themes/provider.tsx"],"mappings":";;AAAA,SACEA,aAAa,EAEbC,UAAU,EACVC,SAAS,EACTC,QAAQ,QACH,OAAO;AACd,SAASC,cAAc,QAAQ,cAAc;AAI7C,SAASC,kBAAkB,QAAQ,oBAAW;AAU9C,SAASC,gBAAgB,QAAQ,YAAS;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA4B3C,MAAMC,YAAY,gBAAGT,aAAa,CAAsB,IAAI,CAAC;AAO7D,OAAO,MAAMU,aAAa,GAAIC,KAAyB,IAAK;EAC1D,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC;EAAW,CAAC,GAAGH,KAAK;EAE7C,MAAMI,iBAAiB,GAAGX,cAAc,CAAC,CAAC;EAC1C,MAAM,CAACY,WAAW,EAAEC,cAAc,CAAC,GAAGd,QAAQ,CAC5CY,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,OAC1C,CAAC;EAED,MAAMG,WAAW,GAAGL,KAAK,GACrBP,gBAAgB,CAACD,kBAAkB,EAAEQ,KAAK,CAAC,GAC3CR,kBAAkB;EAEtB,MAAMc,MAAM,GAAGD,WAAW,CAACC,MAAM,CAACH,WAAW,CAAC;EAE9Cd,SAAS,CAAC,MAAM;IACd,IAAIa,iBAAiB,EAAE;MACrBE,cAAc,CAACF,iBAAiB,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjE;EACF,CAAC,EAAE,CAACA,iBAAiB,CAAC,CAAC;EAEvB,oBACEP,IAAA,CAACC,YAAY,CAACW,QAAQ;IACpBC,KAAK,EAAE;MACLL,WAAW;MACXC,cAAc;MACdE,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;MAC9BX;IACF,CAAE;IAAAF,QAAA,EAEDA;EAAQ,CACY,CAAC;AAE5B,CAAC;AAED,OAAO,MAAMc,QAAQ,GAAGA,CAAA,KAAM;EAC5B,MAAMC,OAAO,GAAG1B,UAAU,CAACQ,YAAY,CAAC;EACxC,IAAI,CAACkB,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,GAAG1B,UAAU,CAACQ,YAAY,CAAC;EACxC,IAAI,CAACkB,OAAO,EAAE;IACZ,MAAM,IAAIC,KAAK,CAAC,yDAAyD,CAAC;EAC5E;EACA,OAAOD,OAAO,CAACb,UAAU;AAC3B,CAAC","ignoreList":[]}
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
- checked: boolean;
6
- onCheckedChange: (checked: boolean) => void;
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,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,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
+ {"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,qBA6C5C"}
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
- onValueChange: (value: string) => void;
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,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,qBAuBxD"}
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"}
@@ -4,7 +4,6 @@ export interface MenuRadioItemProps {
4
4
  children: React.ReactNode;
5
5
  value: string;
6
6
  disabled?: boolean;
7
- closeOnPress?: boolean;
8
7
  render?: (props: MenuRadioItemProps) => React.ReactNode;
9
8
  style?: StyleProp<ViewStyle>;
10
9
  }
@@ -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,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,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"}
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,EAEL,KAAK,iBAAiB,EAIvB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,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,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,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,gCAoCtD,CAAC;AAEF,eAAO,MAAM,QAAQ,oBAMpB,CAAC;AAEF,eAAO,MAAM,mBAAmB,oCAM/B,CAAC"}
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"}
@@ -27,5 +27,9 @@ export interface ThemeAssets {
27
27
  letterSpacing: LetterSpacing;
28
28
  fontSize: FontSize;
29
29
  }
30
+ export type StorageClient<T> = {
31
+ set: (value: T) => void;
32
+ get: () => T | null;
33
+ };
30
34
  export {};
31
35
  //# sourceMappingURL=types.d.ts.map
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@korsolutions/ui",
3
- "version": "0.0.76",
3
+ "version": "0.0.79",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -7,10 +7,9 @@ import { MenuSelectionIndicator } from "./menu-selection-indicator";
7
7
 
8
8
  export interface MenuCheckboxItemProps {
9
9
  children: React.ReactNode;
10
- checked: boolean;
11
- onCheckedChange: (checked: boolean) => void;
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.onCheckedChange(!props.checked);
41
- if (props.closeOnPress) {
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.checked, disabled: props.disabled }}
72
+ accessibilityState={{ checked: props.value, disabled: props.disabled }}
74
73
  style={composedStyle}
75
74
  >
76
75
  {organizedChildren}
77
- <MenuSelectionIndicator isSelected={props.checked} />
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
- menu.setIsOpen((prev) => !prev);
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
- onValueChange: (value: string) => void;
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.onValueChange,
19
+ onValueChange: props.onChange,
20
20
  }),
21
- [props.value, props.onValueChange],
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
- if (props.closeOnPress) {
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
+ }
@@ -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
- const systemColorScheme = useColorScheme();
61
- const [colorScheme, setColorScheme] = useState<ColorScheme>(
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={{
@@ -31,3 +31,8 @@ export interface ThemeAssets {
31
31
  letterSpacing: LetterSpacing;
32
32
  fontSize: FontSize;
33
33
  }
34
+
35
+ export type StorageClient<T> = {
36
+ set: (value: T) => void;
37
+ get: () => T | null;
38
+ };