minerva-design 1.0.0 → 1.0.2

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 (138) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/custom-elements.json +663 -0
  3. package/dist/angular/fesm2022/minerva-angular.mjs +1163 -34
  4. package/dist/angular/fesm2022/minerva-angular.mjs.map +1 -1
  5. package/dist/angular/types/minerva-angular.d.ts +237 -1
  6. package/dist/core/calendar-date.d.cts +5 -0
  7. package/dist/core/calendar-date.d.ts +5 -0
  8. package/dist/core/contracts.cjs +1 -1
  9. package/dist/core/contracts.cjs.map +1 -1
  10. package/dist/core/contracts.js +1 -1
  11. package/dist/core/contracts.js.map +1 -1
  12. package/dist/core/index.cjs +6 -6
  13. package/dist/core/index.cjs.map +1 -1
  14. package/dist/core/index.js +671 -630
  15. package/dist/core/index.js.map +1 -1
  16. package/dist/core/styling-hooks/components/date-picker.d.cts +45 -0
  17. package/dist/core/styling-hooks/components/date-picker.d.ts +45 -0
  18. package/dist/core/styling-hooks/manifest.d.cts +44 -0
  19. package/dist/core/styling-hooks/manifest.d.ts +44 -0
  20. package/dist/core/styling-hooks.cjs +1 -1
  21. package/dist/core/styling-hooks.cjs.map +1 -1
  22. package/dist/core/styling-hooks.js +62 -0
  23. package/dist/core/styling-hooks.js.map +1 -1
  24. package/dist/native/components/Calendar/Calendar.cjs +1 -1
  25. package/dist/native/components/Calendar/Calendar.cjs.map +1 -1
  26. package/dist/native/components/Calendar/Calendar.d.cts +2 -0
  27. package/dist/native/components/Calendar/Calendar.d.ts +2 -0
  28. package/dist/native/components/Calendar/Calendar.js +115 -112
  29. package/dist/native/components/Calendar/Calendar.js.map +1 -1
  30. package/dist/native/components/Checkbox/Checkbox.cjs +1 -1
  31. package/dist/native/components/Checkbox/Checkbox.cjs.map +1 -1
  32. package/dist/native/components/Checkbox/Checkbox.js +8 -8
  33. package/dist/native/components/Checkbox/CheckboxGroup.cjs +1 -1
  34. package/dist/native/components/Checkbox/CheckboxGroup.cjs.map +1 -1
  35. package/dist/native/components/Checkbox/CheckboxGroup.js +6 -6
  36. package/dist/native/components/DatePicker/DatePicker.cjs +2 -0
  37. package/dist/native/components/DatePicker/DatePicker.cjs.map +1 -0
  38. package/dist/native/components/DatePicker/DatePicker.d.cts +40 -0
  39. package/dist/native/components/DatePicker/DatePicker.d.ts +40 -0
  40. package/dist/native/components/DatePicker/DatePicker.js +110 -0
  41. package/dist/native/components/DatePicker/DatePicker.js.map +1 -0
  42. package/dist/native/components/DatePicker/index.cjs +1 -0
  43. package/dist/native/components/DatePicker/index.d.cts +2 -0
  44. package/dist/native/components/DatePicker/index.d.ts +2 -0
  45. package/dist/native/components/DatePicker/index.js +2 -0
  46. package/dist/native/components/Radio/RadioGroup.cjs +1 -1
  47. package/dist/native/components/Radio/RadioGroup.cjs.map +1 -1
  48. package/dist/native/components/Radio/RadioGroup.js +9 -9
  49. package/dist/native/components/Switch/Switch.cjs +1 -1
  50. package/dist/native/components/Switch/Switch.cjs.map +1 -1
  51. package/dist/native/components/Switch/Switch.js +23 -23
  52. package/dist/native/components/Switch/Switch.js.map +1 -1
  53. package/dist/native/index.cjs +1 -1
  54. package/dist/native/index.d.cts +1 -0
  55. package/dist/native/index.d.ts +1 -0
  56. package/dist/native/index.js +70 -68
  57. package/dist/native/source/components/Calendar/Calendar.tsx +14 -6
  58. package/dist/native/source/components/DatePicker/DatePicker.tsx +201 -0
  59. package/dist/native/source/components/DatePicker/index.ts +2 -0
  60. package/dist/native/source/index.ts +1 -0
  61. package/dist/native/source/manifest.ts +6 -0
  62. package/dist/react/components/DatePicker/DatePicker.cjs +2 -0
  63. package/dist/react/components/DatePicker/DatePicker.cjs.map +1 -0
  64. package/dist/react/components/DatePicker/DatePicker.d.cts +13 -0
  65. package/dist/react/components/DatePicker/DatePicker.d.ts +13 -0
  66. package/dist/react/components/DatePicker/DatePicker.js +315 -0
  67. package/dist/react/components/DatePicker/DatePicker.js.map +1 -0
  68. package/dist/react/components/DatePicker/datePicker.module.scss.cjs +2 -0
  69. package/dist/react/components/DatePicker/datePicker.module.scss.cjs.map +1 -0
  70. package/dist/react/components/DatePicker/datePicker.module.scss.js +23 -0
  71. package/dist/react/components/DatePicker/datePicker.module.scss.js.map +1 -0
  72. package/dist/react/components/DatePicker/index.cjs +1 -0
  73. package/dist/react/components/DatePicker/index.d.cts +5 -0
  74. package/dist/react/components/DatePicker/index.d.ts +5 -0
  75. package/dist/react/components/DatePicker/index.js +3 -0
  76. package/dist/react/components/DatePicker/types.d.cts +97 -0
  77. package/dist/react/components/DatePicker/types.d.ts +97 -0
  78. package/dist/react/components/Tooltip/Tooltip.cjs +1 -1
  79. package/dist/react/components/Tooltip/Tooltip.cjs.map +1 -1
  80. package/dist/react/components/Tooltip/Tooltip.js +5 -5
  81. package/dist/react/components/Tooltip/Tooltip.js.map +1 -1
  82. package/dist/react/components/index.cjs +1 -1
  83. package/dist/react/components/index.d.cts +1 -0
  84. package/dist/react/components/index.d.ts +1 -0
  85. package/dist/react/components/index.js +3 -1
  86. package/dist/react/index.cjs +1 -1
  87. package/dist/react/index.js +7 -6
  88. package/dist/react/style.css +1 -0
  89. package/dist/react/styles/date-picker.css +7 -0
  90. package/dist/taro/date-picker.d.ts +20 -0
  91. package/dist/taro/index.d.ts +1 -0
  92. package/dist/taro/index.js +1155 -990
  93. package/dist/uni/DatePicker.vue +225 -0
  94. package/dist/uni/DatePicker.vue.d.ts +36 -0
  95. package/dist/uni/MonthCalendar.vue +2 -0
  96. package/dist/uni/MonthCalendar.vue.d.ts +2 -0
  97. package/dist/uni/index.d.ts +1 -0
  98. package/dist/uni/index.js +1 -0
  99. package/dist/uni/manifest.d.ts +7 -0
  100. package/dist/uni/manifest.js +8 -0
  101. package/dist/vue/components/DatePicker/DatePicker.vue.d.ts +36 -0
  102. package/dist/vue/components/DatePicker/DatePicker.vue.js +7 -0
  103. package/dist/vue/components/DatePicker/DatePicker.vue.js.map +1 -0
  104. package/dist/vue/components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +380 -0
  105. package/dist/vue/components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  106. package/dist/vue/components/DatePicker/index.d.ts +2 -0
  107. package/dist/vue/components/DatePicker/index.js +2 -0
  108. package/dist/vue/components/DatePicker/types.d.ts +26 -0
  109. package/dist/vue/components/MonthCalendar/MonthCalendar.vue.d.ts +1 -1
  110. package/dist/vue/global.d.ts +108 -0
  111. package/dist/vue/groups/forms-pickers.d.ts +1 -0
  112. package/dist/vue/groups/forms-pickers.js +5 -2
  113. package/dist/vue/groups/forms-pickers.js.map +1 -1
  114. package/dist/vue/index.js +95 -94
  115. package/dist/weapp/controls.js +259 -76
  116. package/dist/weapp/date-picker/index.js +1 -0
  117. package/dist/weapp/date-picker/index.json +1 -0
  118. package/dist/weapp/date-picker/index.wxml +1 -0
  119. package/dist/weapp/date-picker/index.wxss +1 -0
  120. package/dist/weapp/types.d.ts +19 -0
  121. package/dist/web-components/cdn/minerva.js +461 -335
  122. package/dist/web-components/cdn/minerva.js.map +1 -1
  123. package/dist/web-components/components/date-picker/date-picker.d.ts +110 -0
  124. package/dist/web-components/components/date-picker/date-picker.js +378 -0
  125. package/dist/web-components/components/date-picker/date-picker.js.map +1 -0
  126. package/dist/web-components/elements/date-picker.d.ts +1 -0
  127. package/dist/web-components/elements/date-picker.js +8 -0
  128. package/dist/web-components/elements/date-picker.js.map +1 -0
  129. package/dist/web-components/html-custom-data.json +85 -0
  130. package/dist/web-components/index.d.ts +1 -0
  131. package/dist/web-components/index.js +8 -6
  132. package/dist/web-components/styles/DatePicker/datePicker.css.js +6 -0
  133. package/dist/web-components/styles/DatePicker/datePicker.css.js.map +1 -0
  134. package/dist/web-components/types/react.d.ts +12 -0
  135. package/dist/web-components/types/solid.d.ts +9 -0
  136. package/dist/web-components/types/svelte.d.ts +9 -0
  137. package/dist/web-components/types/vue.d.ts +10 -0
  138. package/package.json +9 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.cjs","names":["createContext","useFormControlProps","useTheme","useContext","useMachine","createCheckboxMachine","colorRole","TOGGLE_BOX","textStyle","controlFontSize","Pressable","hitSlopFor","part","placementStyle","_Fragment","View","Icon","ToggleLabel","bindFormControl","require_MinervaProvider","require_parts","require_styles","require_Icon","require_useMachine","require_FormControlContext","require_toggleControl","require_formControl","react","react_native","_minerva_core","react_jsx_runtime","CheckboxGroupContext","Checkbox","colorProp","sizeProp","shapeProp","errorProp","rest","props","t","group","inGroup","value","groupChecked","size","color","shape","error","inactive","disabled","state","send","checked","onChange","next","role","box","on","radius","content","label","children","lineHeight","accessibilityState","hitSlop","labelPlacement","style","pressed","icon","fonts","labelStyle"],"sources":["../../../../../native/src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFormControlProps } from \"../../internal/FormControlContext\";\nimport { createContext, useContext, type ReactNode } from \"react\";\nimport {\n Pressable,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { createCheckboxMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { Icon } from \"../../internal/Icon\";\nimport { part } from \"../../internal/parts\";\nimport {\n colorRole,\n hitSlopFor,\n textStyle,\n controlFontSize,\n type NativeSize,\n type SemanticColor,\n} from \"../../internal/styles\";\nimport {\n TOGGLE_BOX,\n ToggleLabel,\n placementStyle,\n type LabelPlacement,\n} from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\n\nexport type CheckboxSize = NativeSize;\nexport type CheckboxShape = \"square\" | \"rounded\" | \"circle\";\nexport type CheckboxColor = SemanticColor;\nexport type CheckboxLabelPlacement = LabelPlacement;\n\n/** What a CheckboxGroup shares with its checkboxes */\nexport interface CheckboxGroupContextValue {\n value: readonly string[];\n toggle: (value: string) => void;\n disabled: boolean;\n /** `max` reached: unchecked boxes are disabled */\n full: boolean;\n error: boolean;\n size?: CheckboxSize;\n color?: CheckboxColor;\n shape?: CheckboxShape;\n}\n\nexport const CheckboxGroupContext =\n createContext<CheckboxGroupContextValue | null>(null);\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"children\" | \"style\" | \"disabled\" | \"onPress\"\n> {\n /** Checked state (controlled). Ignored inside a CheckboxGroup */\n checked?: boolean;\n /**\n * Initial checked state (uncontrolled)\n * @default false\n */\n defaultChecked?: boolean;\n /** Called with the requested state and the checkbox `value` */\n onChange?: (checked: boolean, value?: string) => void;\n /**\n * Shows the indeterminate (partially checked) state; a press checks the\n * box (and reports `onChange(true)`) while the prop stays in charge\n * @default false\n */\n indeterminate?: boolean;\n /**\n * Disables the checkbox (also set by a disabled group)\n * @default false\n */\n disabled?: boolean;\n /** Label content (a string becomes Text and names the checkbox) */\n label?: ReactNode;\n /** Label content, when `label` is not set */\n children?: ReactNode;\n /**\n * Semantic color of the checked / indeterminate box (a CheckboxGroup\n * color overrides it)\n * @default \"primary\"\n */\n color?: CheckboxColor;\n /**\n * Box and label size (a CheckboxGroup size overrides it)\n * @default \"medium\"\n */\n size?: CheckboxSize;\n /**\n * Box shape (a CheckboxGroup shape overrides it)\n * @default \"square\"\n */\n shape?: CheckboxShape;\n /** Value of the checkbox: identifies it inside a CheckboxGroup */\n value?: string;\n /**\n * Error state: danger border (also set by an invalid group)\n * @default false\n */\n error?: boolean;\n /**\n * Position of the label relative to the box\n * @default \"end\"\n */\n labelPlacement?: CheckboxLabelPlacement;\n /** Custom glyph shown in the checked box */\n icon?: ReactNode;\n /** Style of the pressable root */\n style?: StyleProp<ViewStyle>;\n /** Style of the label text */\n labelStyle?: StyleProp<TextStyle>;\n}\n\n/**\n * A checkbox on the checkbox machine of @minerva/core: checked /\n * indeterminate (`accessibilityState.checked: \"mixed\"`), square / rounded /\n * circle box, label at any side, semantic colors, three sizes. Inside a\n * `CheckboxGroup` (with a `value`) it reads and toggles the group.\n */\nexport function Checkbox(props: CheckboxProps) {\n const {\n checked,\n defaultChecked = false,\n onChange,\n indeterminate = false,\n disabled = false,\n label,\n children,\n color: colorProp,\n size: sizeProp,\n shape: shapeProp,\n value,\n error: errorProp = false,\n labelPlacement = \"end\",\n icon,\n style,\n labelStyle,\n accessibilityState,\n hitSlop,\n ...rest\n } = useFormControlProps(props);\n const { tokens: t, fonts } = useTheme();\n const group = useContext(CheckboxGroupContext);\n const inGroup = group !== null && value !== undefined;\n const groupChecked = inGroup ? group.value.includes(value) : undefined;\n const size = group?.size ?? sizeProp ?? \"medium\";\n const color = group?.color ?? colorProp ?? \"primary\";\n const shape = group?.shape ?? shapeProp ?? \"square\";\n const error = errorProp || !!group?.error;\n const inactive =\n disabled || !!group?.disabled || (inGroup && !groupChecked && group.full);\n\n const [state, send] = useMachine(createCheckboxMachine, {\n checked: inGroup ? groupChecked : checked,\n defaultChecked,\n indeterminate,\n disabled: inactive,\n onCheckedChange: (next: boolean) => {\n if (inGroup) group.toggle(value);\n onChange?.(next, value);\n },\n });\n\n const role = colorRole(t, color);\n const box = TOGGLE_BOX[size];\n const on = state.checked || state.indeterminate;\n const radius =\n shape === \"circle\"\n ? box / 2\n : shape === \"rounded\"\n ? t.radius.sm\n : Math.max(2, Math.round(t.radius.sm / 2));\n const content = label ?? children;\n const lineHeight = textStyle(t, controlFontSize(t, size)).lineHeight ?? box;\n\n return (\n <Pressable\n accessibilityRole=\"checkbox\"\n accessibilityState={{\n ...accessibilityState,\n checked: state.indeterminate ? \"mixed\" : state.checked,\n disabled: inactive,\n }}\n aria-checked={state.indeterminate ? \"mixed\" : state.checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={() => send({ type: \"TOGGLE\" })}\n hitSlop={hitSlop ?? hitSlopFor(t, Math.max(box, lineHeight))}\n {...part(\"checkbox\", \"root\", {\n checked: state.checked,\n indeterminate: state.indeterminate,\n disabled: inactive,\n size,\n color,\n shape,\n invalid: error,\n })}\n {...rest}\n style={[\n placementStyle(labelPlacement),\n { gap: t.space[\"2\"], opacity: inactive ? 0.5 : 1 },\n style,\n ]}\n >\n {({ pressed }) => (\n <>\n <View\n style={{\n width: box,\n height: box,\n borderRadius: radius,\n borderWidth: on ? 0 : 1.5,\n borderColor: error\n ? t.colors[\"danger-color\"]\n : pressed\n ? role.solid\n : t.colors[\"border-strong-color\"],\n backgroundColor: on\n ? pressed\n ? role.pressed\n : role.solid\n : pressed\n ? role.subtle\n : t.colors[\"surface-color\"],\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n {...part(\"checkbox\", \"control\", {\n checked: state.checked,\n indeterminate: state.indeterminate,\n })}\n >\n {state.indeterminate ? (\n <Icon name=\"minus\" size={box * 0.9} color={role.onSolid} />\n ) : state.checked ? (\n (icon ?? (\n <Icon name=\"check\" size={box * 0.8} color={role.onSolid} />\n ))\n ) : null}\n </View>\n <ToggleLabel\n t={t}\n component=\"checkbox\"\n size={size}\n disabled={inactive}\n fontFamily={fonts.sans}\n style={labelStyle}\n >\n {content}\n </ToggleLabel>\n </>\n )}\n </Pressable>\n );\n}\n\nbindFormControl(Checkbox, {\n valuePropName: \"checked\",\n emptyValue: false,\n commitOnChange: true,\n invalidPropName: \"error\",\n requiredKey: \"validation.checkMissing\",\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"Checkbox.cjs","names":["createContext","useFormControlProps","useTheme","useContext","useMachine","createCheckboxMachine","colorRole","TOGGLE_BOX","textStyle","controlFontSize","Pressable","hitSlopFor","part","placementStyle","_Fragment","View","Icon","ToggleLabel","bindFormControl","require_MinervaProvider","require_parts","require_styles","require_Icon","require_useMachine","require_FormControlContext","require_formControl","require_toggleControl","react","react_native","_minerva_core","react_jsx_runtime","CheckboxGroupContext","Checkbox","colorProp","sizeProp","shapeProp","errorProp","rest","props","t","group","inGroup","value","groupChecked","size","color","shape","error","inactive","disabled","state","send","checked","onChange","next","role","box","on","radius","content","label","children","lineHeight","accessibilityState","hitSlop","labelPlacement","style","pressed","icon","fonts","labelStyle"],"sources":["../../../../../native/src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { useFormControlProps } from \"../../internal/FormControlContext\";\nimport { createContext, useContext, type ReactNode } from \"react\";\nimport {\n Pressable,\n View,\n type PressableProps,\n type StyleProp,\n type TextStyle,\n type ViewStyle,\n} from \"react-native\";\nimport { createCheckboxMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { Icon } from \"../../internal/Icon\";\nimport { part } from \"../../internal/parts\";\nimport {\n colorRole,\n hitSlopFor,\n textStyle,\n controlFontSize,\n type NativeSize,\n type SemanticColor,\n} from \"../../internal/styles\";\nimport {\n TOGGLE_BOX,\n ToggleLabel,\n placementStyle,\n type LabelPlacement,\n} from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\n\nexport type CheckboxSize = NativeSize;\nexport type CheckboxShape = \"square\" | \"rounded\" | \"circle\";\nexport type CheckboxColor = SemanticColor;\nexport type CheckboxLabelPlacement = LabelPlacement;\n\n/** What a CheckboxGroup shares with its checkboxes */\nexport interface CheckboxGroupContextValue {\n value: readonly string[];\n toggle: (value: string) => void;\n disabled: boolean;\n /** `max` reached: unchecked boxes are disabled */\n full: boolean;\n error: boolean;\n size?: CheckboxSize;\n color?: CheckboxColor;\n shape?: CheckboxShape;\n}\n\nexport const CheckboxGroupContext =\n createContext<CheckboxGroupContextValue | null>(null);\n\nexport interface CheckboxProps extends Omit<\n PressableProps,\n \"children\" | \"style\" | \"disabled\" | \"onPress\"\n> {\n /** Checked state (controlled). Ignored inside a CheckboxGroup */\n checked?: boolean;\n /**\n * Initial checked state (uncontrolled)\n * @default false\n */\n defaultChecked?: boolean;\n /** Called with the requested state and the checkbox `value` */\n onChange?: (checked: boolean, value?: string) => void;\n /**\n * Shows the indeterminate (partially checked) state; a press checks the\n * box (and reports `onChange(true)`) while the prop stays in charge\n * @default false\n */\n indeterminate?: boolean;\n /**\n * Disables the checkbox (also set by a disabled group)\n * @default false\n */\n disabled?: boolean;\n /** Label content (a string becomes Text and names the checkbox) */\n label?: ReactNode;\n /** Label content, when `label` is not set */\n children?: ReactNode;\n /**\n * Semantic color of the checked / indeterminate box (a CheckboxGroup\n * color overrides it)\n * @default \"primary\"\n */\n color?: CheckboxColor;\n /**\n * Box and label size (a CheckboxGroup size overrides it)\n * @default \"medium\"\n */\n size?: CheckboxSize;\n /**\n * Box shape (a CheckboxGroup shape overrides it)\n * @default \"square\"\n */\n shape?: CheckboxShape;\n /** Value of the checkbox: identifies it inside a CheckboxGroup */\n value?: string;\n /**\n * Error state: danger border (also set by an invalid group)\n * @default false\n */\n error?: boolean;\n /**\n * Position of the label relative to the box\n * @default \"end\"\n */\n labelPlacement?: CheckboxLabelPlacement;\n /** Custom glyph shown in the checked box */\n icon?: ReactNode;\n /** Style of the pressable root */\n style?: StyleProp<ViewStyle>;\n /** Style of the label text */\n labelStyle?: StyleProp<TextStyle>;\n}\n\n/**\n * A checkbox on the checkbox machine of @minerva/core: checked /\n * indeterminate (`accessibilityState.checked: \"mixed\"`), square / rounded /\n * circle box, label at any side, semantic colors, three sizes. Inside a\n * `CheckboxGroup` (with a `value`) it reads and toggles the group.\n */\nexport function Checkbox(props: CheckboxProps) {\n const {\n checked,\n defaultChecked = false,\n onChange,\n indeterminate = false,\n disabled = false,\n label,\n children,\n color: colorProp,\n size: sizeProp,\n shape: shapeProp,\n value,\n error: errorProp = false,\n labelPlacement = \"end\",\n icon,\n style,\n labelStyle,\n accessibilityState,\n hitSlop,\n ...rest\n } = useFormControlProps(props);\n const { tokens: t, fonts } = useTheme();\n const group = useContext(CheckboxGroupContext);\n const inGroup = group !== null && value !== undefined;\n const groupChecked = inGroup ? group.value.includes(value) : undefined;\n const size = group?.size ?? sizeProp ?? \"medium\";\n const color = group?.color ?? colorProp ?? \"primary\";\n const shape = group?.shape ?? shapeProp ?? \"square\";\n const error = errorProp || !!group?.error;\n const inactive =\n disabled || !!group?.disabled || (inGroup && !groupChecked && group.full);\n\n const [state, send] = useMachine(createCheckboxMachine, {\n checked: inGroup ? groupChecked : checked,\n defaultChecked,\n indeterminate,\n disabled: inactive,\n onCheckedChange: (next: boolean) => {\n if (inGroup) group.toggle(value);\n onChange?.(next, value);\n },\n });\n\n const role = colorRole(t, color);\n const box = TOGGLE_BOX[size];\n const on = state.checked || state.indeterminate;\n const radius =\n shape === \"circle\"\n ? box / 2\n : shape === \"rounded\"\n ? t.radius.sm\n : Math.max(2, Math.round(t.radius.sm / 2));\n const content = label ?? children;\n const lineHeight = textStyle(t, controlFontSize(t, size)).lineHeight ?? box;\n\n return (\n <Pressable\n accessibilityRole=\"checkbox\"\n accessibilityState={{\n ...accessibilityState,\n checked: state.indeterminate ? \"mixed\" : state.checked,\n disabled: inactive,\n }}\n aria-checked={state.indeterminate ? \"mixed\" : state.checked}\n aria-disabled={inactive}\n disabled={inactive}\n onPress={() => send({ type: \"TOGGLE\" })}\n hitSlop={hitSlop ?? hitSlopFor(t, Math.max(box, lineHeight))}\n {...part(\"checkbox\", \"root\", {\n checked: state.checked,\n indeterminate: state.indeterminate,\n disabled: inactive,\n size,\n color,\n shape,\n invalid: error,\n })}\n {...rest}\n style={[\n placementStyle(labelPlacement),\n { gap: t.space[\"2\"], opacity: inactive ? 0.5 : 1 },\n style,\n ]}\n >\n {({ pressed }) => (\n <>\n <View\n style={{\n width: box,\n height: box,\n borderRadius: radius,\n borderWidth: on ? 0 : 1.5,\n borderColor: error\n ? t.colors[\"danger-color\"]\n : pressed\n ? role.solid\n : t.colors[\"border-strong-color\"],\n backgroundColor: on\n ? pressed\n ? role.pressed\n : role.solid\n : pressed\n ? role.subtle\n : t.colors[\"surface-color\"],\n alignItems: \"center\",\n justifyContent: \"center\",\n }}\n {...part(\"checkbox\", \"control\", {\n checked: state.checked,\n indeterminate: state.indeterminate,\n })}\n >\n {state.indeterminate ? (\n <Icon name=\"minus\" size={box * 0.9} color={role.onSolid} />\n ) : state.checked ? (\n (icon ?? (\n <Icon name=\"check\" size={box * 0.8} color={role.onSolid} />\n ))\n ) : null}\n </View>\n <ToggleLabel\n t={t}\n component=\"checkbox\"\n size={size}\n disabled={inactive}\n fontFamily={fonts.sans}\n style={labelStyle}\n >\n {content}\n </ToggleLabel>\n </>\n )}\n </Pressable>\n );\n}\n\nbindFormControl(Checkbox, {\n valuePropName: \"checked\",\n emptyValue: false,\n commitOnChange: true,\n invalidPropName: \"error\",\n requiredKey: \"validation.checkMissing\",\n});\n"],"mappings":"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"}
@@ -4,16 +4,16 @@ import { colorRole as n, controlFontSize as r, hitSlopFor as i, textStyle as a }
4
4
  import { Icon as o } from "../../internal/Icon.js";
5
5
  import { useMachine as s } from "../../internal/useMachine.js";
6
6
  import { useFormControlProps as c } from "../../internal/FormControlContext.js";
7
- import { TOGGLE_BOX as l, ToggleLabel as u, placementStyle as d } from "../../internal/toggleControl.js";
8
- import { bindFormControl as f } from "../../internal/formControl.js";
7
+ import { bindFormControl as l } from "../../internal/formControl.js";
8
+ import { TOGGLE_BOX as u, ToggleLabel as d, placementStyle as f } from "../../internal/toggleControl.js";
9
9
  import { createContext as p, useContext as m } from "react";
10
10
  import { Pressable as h, View as g } from "react-native";
11
11
  import { createCheckboxMachine as _ } from "../../../core/index.js";
12
12
  import { Fragment as v, jsx as y, jsxs as b } from "react/jsx-runtime";
13
13
  //#region src/components/Checkbox/Checkbox.tsx
14
14
  var x = p(null);
15
- function S(f) {
16
- let { checked: p, defaultChecked: S = !1, onChange: C, indeterminate: w = !1, disabled: T = !1, label: E, children: D, color: O, size: k, shape: A, value: j, error: M = !1, labelPlacement: N = "end", icon: P, style: F, labelStyle: I, accessibilityState: L, hitSlop: R, ...ee } = c(f), { tokens: z, fonts: B } = e(), V = m(x), H = V !== null && j !== void 0, U = H ? V.value.includes(j) : void 0, W = V?.size ?? k ?? "medium", G = V?.color ?? O ?? "primary", K = V?.shape ?? A ?? "square", q = M || !!V?.error, J = T || !!V?.disabled || H && !U && V.full, [Y, X] = s(_, {
15
+ function S(l) {
16
+ let { checked: p, defaultChecked: S = !1, onChange: C, indeterminate: w = !1, disabled: T = !1, label: E, children: D, color: O, size: k, shape: A, value: j, error: M = !1, labelPlacement: N = "end", icon: P, style: F, labelStyle: I, accessibilityState: L, hitSlop: R, ...ee } = c(l), { tokens: z, fonts: B } = e(), V = m(x), H = V !== null && j !== void 0, U = H ? V.value.includes(j) : void 0, W = V?.size ?? k ?? "medium", G = V?.color ?? O ?? "primary", K = V?.shape ?? A ?? "square", q = M || !!V?.error, J = T || !!V?.disabled || H && !U && V.full, [Y, X] = s(_, {
17
17
  checked: H ? U : p,
18
18
  defaultChecked: S,
19
19
  indeterminate: w,
@@ -21,7 +21,7 @@ function S(f) {
21
21
  onCheckedChange: (e) => {
22
22
  H && V.toggle(j), C?.(e, j);
23
23
  }
24
- }), Z = n(z, G), Q = l[W], $ = Y.checked || Y.indeterminate, te = K === "circle" ? Q / 2 : K === "rounded" ? z.radius.sm : Math.max(2, Math.round(z.radius.sm / 2)), ne = E ?? D, re = a(z, r(z, W)).lineHeight ?? Q;
24
+ }), Z = n(z, G), Q = u[W], $ = Y.checked || Y.indeterminate, te = K === "circle" ? Q / 2 : K === "rounded" ? z.radius.sm : Math.max(2, Math.round(z.radius.sm / 2)), ne = E ?? D, re = a(z, r(z, W)).lineHeight ?? Q;
25
25
  return /* @__PURE__ */ y(h, {
26
26
  accessibilityRole: "checkbox",
27
27
  accessibilityState: {
@@ -45,7 +45,7 @@ function S(f) {
45
45
  }),
46
46
  ...ee,
47
47
  style: [
48
- d(N),
48
+ f(N),
49
49
  {
50
50
  gap: z.space[2],
51
51
  opacity: J ? .5 : 1
@@ -76,7 +76,7 @@ function S(f) {
76
76
  size: Q * .8,
77
77
  color: Z.onSolid
78
78
  }) : null
79
- }), /* @__PURE__ */ y(u, {
79
+ }), /* @__PURE__ */ y(d, {
80
80
  t: z,
81
81
  component: "checkbox",
82
82
  size: W,
@@ -87,7 +87,7 @@ function S(f) {
87
87
  })] })
88
88
  });
89
89
  }
90
- f(S, {
90
+ l(S, {
91
91
  valuePropName: "checked",
92
92
  emptyValue: !1,
93
93
  commitOnChange: !0,
@@ -1,2 +1,2 @@
1
- const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/useMachine.cjs"),n=require("../../internal/toggleControl.cjs"),r=require("../../internal/formControl.cjs"),i=require("./Checkbox.cjs");let a=require("react"),o=require("../../../core/index.cjs"),s=require("react/jsx-runtime");function c({value:r,defaultValue:c=[],onChange:l,max:u,disabled:d=!1,direction:f=`vertical`,label:p,options:m,size:h,color:g,shape:_,error:v=!1,children:y,style:b,accessibilityLabel:x,...S}){let{tokens:C,fonts:w}=e.useTheme(),[T,E]=t.useMachine(o.createSelectionMachine,{mode:`multiple`,value:r,defaultValue:c,max:u,onValueChange:l}),D=T.value,O=u!==void 0&&D.length>=u,k=(0,a.useMemo)(()=>({value:D,toggle:e=>E({type:`TOGGLE`,value:e}),disabled:d,full:O,error:v,size:h,color:g,shape:_}),[D,E,d,O,v,h,g,_]);return(0,s.jsx)(i.CheckboxGroupContext.Provider,{value:k,children:(0,s.jsxs)(n.ToggleGroupFrame,{t:C,component:`checkbox-group`,role:`group`,label:p,accessibilityLabel:x,direction:f,disabled:d,fontFamily:w.sans,style:b,rest:S,children:[m?.map(e=>{let t=typeof e==`string`?{label:e,value:e}:e;return(0,s.jsx)(i.Checkbox,{value:t.value,label:t.label,disabled:t.disabled},t.value)}),y]})})}r.bindFormControl(c,{emptyValue:[],commitOnChange:!0,invalidPropName:`error`}),exports.CheckboxGroup=c;
1
+ const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/useMachine.cjs"),n=require("../../internal/formControl.cjs"),r=require("../../internal/toggleControl.cjs"),i=require("./Checkbox.cjs");let a=require("react"),o=require("../../../core/index.cjs"),s=require("react/jsx-runtime");function c({value:n,defaultValue:c=[],onChange:l,max:u,disabled:d=!1,direction:f=`vertical`,label:p,options:m,size:h,color:g,shape:_,error:v=!1,children:y,style:b,accessibilityLabel:x,...S}){let{tokens:C,fonts:w}=e.useTheme(),[T,E]=t.useMachine(o.createSelectionMachine,{mode:`multiple`,value:n,defaultValue:c,max:u,onValueChange:l}),D=T.value,O=u!==void 0&&D.length>=u,k=(0,a.useMemo)(()=>({value:D,toggle:e=>E({type:`TOGGLE`,value:e}),disabled:d,full:O,error:v,size:h,color:g,shape:_}),[D,E,d,O,v,h,g,_]);return(0,s.jsx)(i.CheckboxGroupContext.Provider,{value:k,children:(0,s.jsxs)(r.ToggleGroupFrame,{t:C,component:`checkbox-group`,role:`group`,label:p,accessibilityLabel:x,direction:f,disabled:d,fontFamily:w.sans,style:b,rest:S,children:[m?.map(e=>{let t=typeof e==`string`?{label:e,value:e}:e;return(0,s.jsx)(i.Checkbox,{value:t.value,label:t.label,disabled:t.disabled},t.value)}),y]})})}n.bindFormControl(c,{emptyValue:[],commitOnChange:!0,invalidPropName:`error`}),exports.CheckboxGroup=c;
2
2
  //# sourceMappingURL=CheckboxGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxGroup.cjs","names":["useTheme","useMachine","createSelectionMachine","useMemo","CheckboxGroupContext","ToggleGroupFrame","Checkbox","bindFormControl","require_MinervaProvider","require_useMachine","require_toggleControl","require_formControl","require_Checkbox","react","_minerva_core","react_jsx_runtime","CheckboxGroup","rest","t","state","send","onChange","selected","full","max","context","v","disabled","error","size","color","shape","fonts","options","item","option","children"],"sources":["../../../../../native/src/components/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport type { StyleProp, ViewProps, ViewStyle } from \"react-native\";\nimport { createSelectionMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { ToggleGroupFrame } from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\nimport {\n Checkbox,\n CheckboxGroupContext,\n type CheckboxColor,\n type CheckboxShape,\n type CheckboxSize,\n} from \"./Checkbox\";\n\n/** An option of a CheckboxGroup built from `options` */\nexport interface CheckboxGroupOption {\n label: ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps extends Omit<ViewProps, \"style\"> {\n /** Checked values (controlled) */\n value?: readonly string[];\n /**\n * Initially checked values (uncontrolled)\n * @default []\n */\n defaultValue?: readonly string[];\n /** Called with the requested checked values, in check order */\n onChange?: (value: string[]) => void;\n /** Most boxes checked at once (the others are disabled when reached) */\n max?: number;\n /**\n * Disables every checkbox\n * @default false\n */\n disabled?: boolean;\n /**\n * Layout of the checkboxes\n * @default \"vertical\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /** Visible label of the group; a string is also its accessible name */\n label?: ReactNode;\n /** Checkboxes built from data (else pass `<Checkbox value>` children) */\n options?: readonly (string | CheckboxGroupOption)[];\n /** Size of every checkbox @default each checkbox's own */\n size?: CheckboxSize;\n /** Color of every checkbox @default each checkbox's own */\n color?: CheckboxColor;\n /** Shape of every checkbox @default each checkbox's own */\n shape?: CheckboxShape;\n /**\n * Error state of every checkbox\n * @default false\n */\n error?: boolean;\n /** `<Checkbox value>` children */\n children?: ReactNode;\n /** Style of the root view */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * A group of checkboxes sharing one `string[]` value on the selection\n * machine of @minerva/core (multiple mode, optional `max`): `role=\"group\"`\n * container named by its label, vertical or horizontal.\n */\nexport function CheckboxGroup({\n value,\n defaultValue = [],\n onChange,\n max,\n disabled = false,\n direction = \"vertical\",\n label,\n options,\n size,\n color,\n shape,\n error = false,\n children,\n style,\n accessibilityLabel,\n ...rest\n}: CheckboxGroupProps) {\n const { tokens: t, fonts } = useTheme();\n const [state, send] = useMachine(createSelectionMachine<string>, {\n mode: \"multiple\",\n value,\n defaultValue,\n max,\n onValueChange: onChange,\n });\n const selected = state.value;\n const full = max !== undefined && selected.length >= max;\n const context = useMemo(\n () => ({\n value: selected,\n toggle: (v: string) => send({ type: \"TOGGLE\", value: v }),\n disabled,\n full,\n error,\n size,\n color,\n shape,\n }),\n [selected, send, disabled, full, error, size, color, shape],\n );\n\n return (\n <CheckboxGroupContext.Provider value={context}>\n <ToggleGroupFrame\n t={t}\n component=\"checkbox-group\"\n role=\"group\"\n label={label}\n accessibilityLabel={accessibilityLabel}\n direction={direction}\n disabled={disabled}\n fontFamily={fonts.sans}\n style={style}\n rest={rest}\n >\n {options?.map((option) => {\n const item =\n typeof option === \"string\"\n ? { label: option, value: option }\n : option;\n return (\n <Checkbox\n key={item.value}\n value={item.value}\n label={item.label}\n disabled={item.disabled}\n />\n );\n })}\n {children}\n </ToggleGroupFrame>\n </CheckboxGroupContext.Provider>\n );\n}\n\nbindFormControl(CheckboxGroup, {\n emptyValue: [],\n commitOnChange: true,\n invalidPropName: \"error\",\n});\n"],"mappings":"+SAsEA,SAAgBgB,EAAc,CAC5B,QACA,eAAe,CAAC,EAChB,WACA,MACA,WAAW,GACX,YAAY,WACZ,QACA,UACA,OACA,QACA,QACA,QAAQ,GACR,WACA,QACA,qBACA,GAAGC,GACkB,CACrB,GAAM,CAAE,OAAQC,EAAG,SAAUlB,EAAAA,SAAS,EAChC,CAACmB,EAAOC,GAAQnB,EAAAA,WAAWC,EAAAA,uBAAgC,CAC/D,KAAM,WACN,QACA,eACA,MACA,cAAemB,CACjB,CAAC,EACKC,EAAWH,EAAM,MACjBI,EAAOC,IAAQ,IAAA,IAAaF,EAAS,QAAUE,EAC/CC,GAAA,EAAUtB,EAAAA,QAAAA,MACP,CACL,MAAOmB,EACP,OAAS,GAAcF,EAAK,CAAE,KAAM,SAAU,MAAOM,CAAE,CAAC,EACxD,WACA,OACA,QACA,OACA,QACA,OACF,GACA,CAACJ,EAAUF,EAAMO,EAAUJ,EAAMK,EAAOC,EAAMC,EAAOC,CAAK,CAC5D,EAEA,OACE,EAAAhB,EAAA,IAAA,CAACX,EAAAA,qBAAqB,SAAtB,CAA+B,MAAOqB,EACpC,UAAA,EAAAV,EAAA,KAAA,CAACV,EAAAA,iBAAD,CACK,IACH,UAAU,iBACV,KAAK,QACE,QACa,qBACT,YACD,WACV,WAAY2B,EAAM,KACX,QACD,OAVR,SAAA,CAYGC,GAAS,IAAK,GAAW,CACxB,IAAMC,EACJ,OAAOC,GAAW,SACd,CAAE,MAAOA,EAAQ,MAAOA,CAAO,EAC/BA,EACN,OACE,EAAApB,EAAA,IAAA,CAACT,EAAAA,SAAD,CAEE,MAAO4B,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,QAChB,EAJMA,EAAK,KAIX,CAEL,CAAC,EACAE,CACe,GACW,CAAA,CAEnC,CAEA7B,EAAAA,gBAAgBS,EAAe,CAC7B,WAAY,CAAC,EACb,eAAgB,GAChB,gBAAiB,OACnB,CAAC"}
1
+ {"version":3,"file":"CheckboxGroup.cjs","names":["useTheme","useMachine","createSelectionMachine","useMemo","CheckboxGroupContext","ToggleGroupFrame","Checkbox","bindFormControl","require_MinervaProvider","require_useMachine","require_formControl","require_toggleControl","require_Checkbox","react","_minerva_core","react_jsx_runtime","CheckboxGroup","rest","t","state","send","onChange","selected","full","max","context","v","disabled","error","size","color","shape","fonts","options","item","option","children"],"sources":["../../../../../native/src/components/Checkbox/CheckboxGroup.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport type { StyleProp, ViewProps, ViewStyle } from \"react-native\";\nimport { createSelectionMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { ToggleGroupFrame } from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\nimport {\n Checkbox,\n CheckboxGroupContext,\n type CheckboxColor,\n type CheckboxShape,\n type CheckboxSize,\n} from \"./Checkbox\";\n\n/** An option of a CheckboxGroup built from `options` */\nexport interface CheckboxGroupOption {\n label: ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface CheckboxGroupProps extends Omit<ViewProps, \"style\"> {\n /** Checked values (controlled) */\n value?: readonly string[];\n /**\n * Initially checked values (uncontrolled)\n * @default []\n */\n defaultValue?: readonly string[];\n /** Called with the requested checked values, in check order */\n onChange?: (value: string[]) => void;\n /** Most boxes checked at once (the others are disabled when reached) */\n max?: number;\n /**\n * Disables every checkbox\n * @default false\n */\n disabled?: boolean;\n /**\n * Layout of the checkboxes\n * @default \"vertical\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /** Visible label of the group; a string is also its accessible name */\n label?: ReactNode;\n /** Checkboxes built from data (else pass `<Checkbox value>` children) */\n options?: readonly (string | CheckboxGroupOption)[];\n /** Size of every checkbox @default each checkbox's own */\n size?: CheckboxSize;\n /** Color of every checkbox @default each checkbox's own */\n color?: CheckboxColor;\n /** Shape of every checkbox @default each checkbox's own */\n shape?: CheckboxShape;\n /**\n * Error state of every checkbox\n * @default false\n */\n error?: boolean;\n /** `<Checkbox value>` children */\n children?: ReactNode;\n /** Style of the root view */\n style?: StyleProp<ViewStyle>;\n}\n\n/**\n * A group of checkboxes sharing one `string[]` value on the selection\n * machine of @minerva/core (multiple mode, optional `max`): `role=\"group\"`\n * container named by its label, vertical or horizontal.\n */\nexport function CheckboxGroup({\n value,\n defaultValue = [],\n onChange,\n max,\n disabled = false,\n direction = \"vertical\",\n label,\n options,\n size,\n color,\n shape,\n error = false,\n children,\n style,\n accessibilityLabel,\n ...rest\n}: CheckboxGroupProps) {\n const { tokens: t, fonts } = useTheme();\n const [state, send] = useMachine(createSelectionMachine<string>, {\n mode: \"multiple\",\n value,\n defaultValue,\n max,\n onValueChange: onChange,\n });\n const selected = state.value;\n const full = max !== undefined && selected.length >= max;\n const context = useMemo(\n () => ({\n value: selected,\n toggle: (v: string) => send({ type: \"TOGGLE\", value: v }),\n disabled,\n full,\n error,\n size,\n color,\n shape,\n }),\n [selected, send, disabled, full, error, size, color, shape],\n );\n\n return (\n <CheckboxGroupContext.Provider value={context}>\n <ToggleGroupFrame\n t={t}\n component=\"checkbox-group\"\n role=\"group\"\n label={label}\n accessibilityLabel={accessibilityLabel}\n direction={direction}\n disabled={disabled}\n fontFamily={fonts.sans}\n style={style}\n rest={rest}\n >\n {options?.map((option) => {\n const item =\n typeof option === \"string\"\n ? { label: option, value: option }\n : option;\n return (\n <Checkbox\n key={item.value}\n value={item.value}\n label={item.label}\n disabled={item.disabled}\n />\n );\n })}\n {children}\n </ToggleGroupFrame>\n </CheckboxGroupContext.Provider>\n );\n}\n\nbindFormControl(CheckboxGroup, {\n emptyValue: [],\n commitOnChange: true,\n invalidPropName: \"error\",\n});\n"],"mappings":"+SAsEA,SAAgBgB,EAAc,CAC5B,QACA,eAAe,CAAC,EAChB,WACA,MACA,WAAW,GACX,YAAY,WACZ,QACA,UACA,OACA,QACA,QACA,QAAQ,GACR,WACA,QACA,qBACA,GAAGC,GACkB,CACrB,GAAM,CAAE,OAAQC,EAAG,SAAUlB,EAAAA,SAAS,EAChC,CAACmB,EAAOC,GAAQnB,EAAAA,WAAWC,EAAAA,uBAAgC,CAC/D,KAAM,WACN,QACA,eACA,MACA,cAAemB,CACjB,CAAC,EACKC,EAAWH,EAAM,MACjBI,EAAOC,IAAQ,IAAA,IAAaF,EAAS,QAAUE,EAC/CC,GAAA,EAAUtB,EAAAA,QAAAA,MACP,CACL,MAAOmB,EACP,OAAS,GAAcF,EAAK,CAAE,KAAM,SAAU,MAAOM,CAAE,CAAC,EACxD,WACA,OACA,QACA,OACA,QACA,OACF,GACA,CAACJ,EAAUF,EAAMO,EAAUJ,EAAMK,EAAOC,EAAMC,EAAOC,CAAK,CAC5D,EAEA,OACE,EAAAhB,EAAA,IAAA,CAACX,EAAAA,qBAAqB,SAAtB,CAA+B,MAAOqB,EACpC,UAAA,EAAAV,EAAA,KAAA,CAACV,EAAAA,iBAAD,CACK,IACH,UAAU,iBACV,KAAK,QACE,QACa,qBACT,YACD,WACV,WAAY2B,EAAM,KACX,QACD,OAVR,SAAA,CAYGC,GAAS,IAAK,GAAW,CACxB,IAAMC,EACJ,OAAOC,GAAW,SACd,CAAE,MAAOA,EAAQ,MAAOA,CAAO,EAC/BA,EACN,OACE,EAAApB,EAAA,IAAA,CAACT,EAAAA,SAAD,CAEE,MAAO4B,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,QAChB,EAJMA,EAAK,KAIX,CAEL,CAAC,EACAE,CACe,GACW,CAAA,CAEnC,CAEA7B,EAAAA,gBAAgBS,EAAe,CAC7B,WAAY,CAAC,EACb,eAAgB,GAChB,gBAAiB,OACnB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { useTheme as e } from "../../theme/MinervaProvider.js";
2
2
  import { useMachine as t } from "../../internal/useMachine.js";
3
- import { ToggleGroupFrame as n } from "../../internal/toggleControl.js";
4
- import { bindFormControl as r } from "../../internal/formControl.js";
3
+ import { bindFormControl as n } from "../../internal/formControl.js";
4
+ import { ToggleGroupFrame as r } from "../../internal/toggleControl.js";
5
5
  import { Checkbox as i, CheckboxGroupContext as a } from "./Checkbox.js";
6
6
  import { useMemo as o } from "react";
7
7
  import { createSelectionMachine as s } from "../../../core/index.js";
8
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
9
9
  //#region src/components/Checkbox/CheckboxGroup.tsx
10
- function u({ value: r, defaultValue: u = [], onChange: d, max: f, disabled: p = !1, direction: m = "vertical", label: h, options: g, size: _, color: v, shape: y, error: b = !1, children: x, style: S, accessibilityLabel: C, ...w }) {
10
+ function u({ value: n, defaultValue: u = [], onChange: d, max: f, disabled: p = !1, direction: m = "vertical", label: h, options: g, size: _, color: v, shape: y, error: b = !1, children: x, style: S, accessibilityLabel: C, ...w }) {
11
11
  let { tokens: T, fonts: E } = e(), [D, O] = t(s, {
12
12
  mode: "multiple",
13
- value: r,
13
+ value: n,
14
14
  defaultValue: u,
15
15
  max: f,
16
16
  onValueChange: d
@@ -38,7 +38,7 @@ function u({ value: r, defaultValue: u = [], onChange: d, max: f, disabled: p =
38
38
  ]);
39
39
  return /* @__PURE__ */ c(a.Provider, {
40
40
  value: j,
41
- children: /* @__PURE__ */ l(n, {
41
+ children: /* @__PURE__ */ l(r, {
42
42
  t: T,
43
43
  component: "checkbox-group",
44
44
  role: "group",
@@ -63,7 +63,7 @@ function u({ value: r, defaultValue: u = [], onChange: d, max: f, disabled: p =
63
63
  })
64
64
  });
65
65
  }
66
- r(u, {
66
+ n(u, {
67
67
  emptyValue: [],
68
68
  commitOnChange: !0,
69
69
  invalidPropName: "error"
@@ -0,0 +1,2 @@
1
+ const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/parts.cjs"),n=require("../../internal/styles.cjs"),r=require("../Button/Button.cjs");require("../Button/index.cjs");const i=require("../Dialog/Dialog.cjs");require("../Dialog/index.cjs");const a=require("../../internal/useControllable.cjs"),o=require("../Calendar/Calendar.cjs");require("../Calendar/index.cjs");const s=require("../../internal/FormControlContext.cjs"),c=require("../../internal/formControl.cjs");let l=require("react"),u=require("react-native"),d=require("../../../core/index.cjs"),f=require("react/jsx-runtime");function p(c){let{value:p,defaultValue:m,onChange:h,onOpenChange:g,placeholder:_,label:v,accessibilityLabel:y,accessibilityHint:b,nativeID:x,disabled:S=!1,readOnly:C=!1,invalid:w=!1,clearable:T=!0,size:E=`medium`,minDate:D,maxDate:O,locale:k,style:A,testID:j}=s.useFormControlProps(c),{tokens:M}=e.useTheme(),{t:N,language:P}=e.useI18n(),[F,I]=a.useControllable(p===null?``:p,m??``,h),[L,R]=(0,l.useState)(!1),[z,B]=(0,l.useState)(()=>(0,d.monthStart)((0,d.parseDayKey)(F)??new Date)),V=S||C,H=v??y??N(`datePicker.label`),U=F||_||N(`datePicker.placeholder`),W=e=>!!(D&&e<D||O&&e>O),G=e=>{if(!(e&&V)&&e!==L){if(e){let e=(0,d.parseDayKey)(F)??new Date;D&&(0,d.dayKey)(e)<D&&(e=(0,d.parseDayKey)(D)??e),O&&(0,d.dayKey)(e)>O&&(e=(0,d.parseDayKey)(O)??e),B((0,d.monthStart)(e))}R(e),g?.(e)}},K=e=>{let t=(0,d.dayKey)(e);V||W(t)||(I(t),G(!1))},q=new Date;return(0,f.jsxs)(u.View,{...t.part(`date-picker`,`root`,{disabled:S,readOnly:C,size:E}),style:A,testID:j,children:[v&&(0,f.jsx)(u.Text,{style:[n.textStyle(M),{marginBottom:M.space[1]}],children:v}),(0,f.jsx)(u.Pressable,{accessibilityRole:`combobox`,accessibilityLabel:H,accessibilityHint:b,nativeID:x,accessibilityValue:{text:U},accessibilityState:{expanded:L&&!V,disabled:V},"aria-invalid":w||void 0,disabled:V,onPress:()=>G(!0),style:{minHeight:M.touchTargetMin,justifyContent:`center`,padding:M.space[E===`small`?`2`:E===`large`?`4`:`3`],borderWidth:1,borderColor:M.colors[w?`danger-color`:`border-color`],borderRadius:M.radius.md,opacity:S?.5:1},children:(0,f.jsx)(u.Text,{style:[n.textStyle(M),{color:M.colors[F?`text-color`:`text-muted-color`]}],children:U})}),T&&F&&!V&&(0,f.jsx)(r.Button,{variant:`link`,accessibilityLabel:N(`datePicker.clear`),onPress:()=>I(``),children:N(`datePicker.clear`)}),(0,f.jsx)(i.Dialog,{open:L&&!V,onOpenChange:G,title:H,footer:(0,f.jsx)(r.Button,{variant:`ghost`,disabled:V||W((0,d.dayKey)(q)),onPress:()=>K(q),children:N(`datePicker.today`)}),children:(0,f.jsx)(o.Calendar,{value:(0,d.parseDayKey)(F)??null,month:z,onMonthChange:B,onSelect:K,minDate:D?(0,d.parseDayKey)(D)??void 0:void 0,maxDate:O?(0,d.parseDayKey)(O)??void 0:void 0,firstDayOfWeek:1,disabled:V,size:E,locale:k??P})})]})}c.bindFormControl(p,{emptyValue:``,commitOnChange:!0}),exports.DatePicker=p;
2
+ //# sourceMappingURL=DatePicker.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.cjs","names":["useFormControlProps","useTheme","useI18n","useControllable","useState","monthStart","parseDayKey","dayKey","View","part","Text","textStyle","Pressable","Button","Dialog","Calendar","bindFormControl","require_MinervaProvider","require_parts","require_styles","require_Button","require_Dialog","require_useControllable","require_Calendar","require_FormControlContext","require_formControl","react","react_native","_minerva_core","react_jsx_runtime","DatePicker","props","t","translate","current","setCurrent","value","defaultValue","onChange","open","setOpen","month","setMonth","locked","disabled","readOnly","accessibleName","label","accessibilityLabel","displayValue","placeholder","outsideRange","minDate","key","maxDate","show","next","date","onOpenChange","select","today","invalid","size","clearable","locale","language"],"sources":["../../../../../native/src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { dayKey, monthStart, parseDayKey } from \"@minerva/core\";\nimport { useI18n, useTheme } from \"../../theme/MinervaProvider\";\nimport { useControllable } from \"../../internal/useControllable\";\nimport { useFormControlProps } from \"../../internal/FormControlContext\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { textStyle } from \"../../internal/styles\";\nimport { part } from \"../../internal/parts\";\nimport { Button } from \"../Button\";\nimport { Calendar } from \"../Calendar\";\nimport { Dialog } from \"../Dialog\";\n\nexport interface DatePickerProps {\n /** Selected local date, YYYY-MM-DD. null and \"\" remain controlled empty values. */\n value?: string | null;\n /** Initial local date while uncontrolled. */\n defaultValue?: string;\n /** Selected YYYY-MM-DD day, or \"\" when cleared. */\n onChange?: (value: string) => void;\n /** Called when the calendar opens or closes. */\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n /** Visible label and accessible name. */\n label?: string;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n nativeID?: string;\n /** @default false */\n disabled?: boolean;\n /** Prevents opening, selection and clearing. */\n readOnly?: boolean;\n invalid?: boolean;\n /** @default true */\n clearable?: boolean;\n /** @default \"medium\" */\n size?: \"small\" | \"medium\" | \"large\";\n /** Earliest selectable local day, YYYY-MM-DD, inclusive. */\n minDate?: string;\n /** Latest selectable local day, YYYY-MM-DD, inclusive. */\n maxDate?: string;\n /** Locale for calendar month and date names; defaults to provider language. */\n locale?: string;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\n/**\n * Native touch date field with an accessible calendar dialog. Selection commits\n * immediately; clearing emits \"\". Dates use local YYYY-MM-DD strings, matching\n * the web DatePicker value contract; native input uses day buttons, not typing.\n */\nexport function DatePicker(props: DatePickerProps) {\n const {\n value,\n defaultValue,\n onChange,\n onOpenChange,\n placeholder,\n label,\n accessibilityLabel,\n accessibilityHint,\n nativeID,\n disabled = false,\n readOnly = false,\n invalid = false,\n clearable = true,\n size = \"medium\",\n minDate,\n maxDate,\n locale,\n style,\n testID,\n } = useFormControlProps(props);\n const { tokens: t } = useTheme();\n const { t: translate, language } = useI18n();\n const [current, setCurrent] = useControllable<string>(\n value === null ? \"\" : value,\n defaultValue ?? \"\",\n onChange,\n );\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState(() =>\n monthStart(parseDayKey(current) ?? new Date()),\n );\n const locked = disabled || readOnly;\n const accessibleName =\n label ?? accessibilityLabel ?? translate(\"datePicker.label\");\n const displayValue =\n current || placeholder || translate(\"datePicker.placeholder\");\n const outsideRange = (key: string) =>\n !!((minDate && key < minDate) || (maxDate && key > maxDate));\n const show = (next: boolean) => {\n if (next && locked) return;\n if (next === open) return;\n if (next) {\n let date = parseDayKey(current) ?? new Date();\n if (minDate && dayKey(date) < minDate)\n date = parseDayKey(minDate) ?? date;\n if (maxDate && dayKey(date) > maxDate)\n date = parseDayKey(maxDate) ?? date;\n setMonth(monthStart(date));\n }\n setOpen(next);\n onOpenChange?.(next);\n };\n const select = (date: Date) => {\n const key = dayKey(date);\n if (locked || outsideRange(key)) return;\n setCurrent(key);\n show(false);\n };\n const today = new Date();\n return (\n <View\n {...part(\"date-picker\", \"root\", { disabled, readOnly, size })}\n style={style}\n testID={testID}\n >\n {label && (\n <Text style={[textStyle(t), { marginBottom: t.space[\"1\"] }]}>\n {label}\n </Text>\n )}\n <Pressable\n accessibilityRole=\"combobox\"\n accessibilityLabel={accessibleName}\n accessibilityHint={accessibilityHint}\n nativeID={nativeID}\n accessibilityValue={{ text: displayValue }}\n accessibilityState={{ expanded: open && !locked, disabled: locked }}\n aria-invalid={invalid || undefined}\n disabled={locked}\n onPress={() => show(true)}\n style={{\n minHeight: t.touchTargetMin,\n justifyContent: \"center\",\n padding:\n t.space[size === \"small\" ? \"2\" : size === \"large\" ? \"4\" : \"3\"],\n borderWidth: 1,\n borderColor: t.colors[invalid ? \"danger-color\" : \"border-color\"],\n borderRadius: t.radius.md,\n opacity: disabled ? 0.5 : 1,\n }}\n >\n <Text\n style={[\n textStyle(t),\n { color: t.colors[current ? \"text-color\" : \"text-muted-color\"] },\n ]}\n >\n {displayValue}\n </Text>\n </Pressable>\n {clearable && current && !locked && (\n <Button\n variant=\"link\"\n accessibilityLabel={translate(\"datePicker.clear\")}\n onPress={() => setCurrent(\"\")}\n >\n {translate(\"datePicker.clear\")}\n </Button>\n )}\n <Dialog\n open={open && !locked}\n onOpenChange={show}\n title={accessibleName}\n footer={\n <Button\n variant=\"ghost\"\n disabled={locked || outsideRange(dayKey(today))}\n onPress={() => select(today)}\n >\n {translate(\"datePicker.today\")}\n </Button>\n }\n >\n <Calendar\n value={parseDayKey(current) ?? null}\n month={month}\n onMonthChange={setMonth}\n onSelect={select}\n minDate={minDate ? (parseDayKey(minDate) ?? undefined) : undefined}\n maxDate={maxDate ? (parseDayKey(maxDate) ?? undefined) : undefined}\n firstDayOfWeek={1}\n disabled={locked}\n size={size}\n locale={locale ?? language}\n />\n </Dialog>\n </View>\n );\n}\n\nbindFormControl(DatePicker, { emptyValue: \"\", commitOnChange: true });\n"],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { StyleProp, ViewStyle } from 'react-native';
2
+ export interface DatePickerProps {
3
+ /** Selected local date, YYYY-MM-DD. null and "" remain controlled empty values. */
4
+ value?: string | null;
5
+ /** Initial local date while uncontrolled. */
6
+ defaultValue?: string;
7
+ /** Selected YYYY-MM-DD day, or "" when cleared. */
8
+ onChange?: (value: string) => void;
9
+ /** Called when the calendar opens or closes. */
10
+ onOpenChange?: (open: boolean) => void;
11
+ placeholder?: string;
12
+ /** Visible label and accessible name. */
13
+ label?: string;
14
+ accessibilityLabel?: string;
15
+ accessibilityHint?: string;
16
+ nativeID?: string;
17
+ /** @default false */
18
+ disabled?: boolean;
19
+ /** Prevents opening, selection and clearing. */
20
+ readOnly?: boolean;
21
+ invalid?: boolean;
22
+ /** @default true */
23
+ clearable?: boolean;
24
+ /** @default "medium" */
25
+ size?: "small" | "medium" | "large";
26
+ /** Earliest selectable local day, YYYY-MM-DD, inclusive. */
27
+ minDate?: string;
28
+ /** Latest selectable local day, YYYY-MM-DD, inclusive. */
29
+ maxDate?: string;
30
+ /** Locale for calendar month and date names; defaults to provider language. */
31
+ locale?: string;
32
+ style?: StyleProp<ViewStyle>;
33
+ testID?: string;
34
+ }
35
+ /**
36
+ * Native touch date field with an accessible calendar dialog. Selection commits
37
+ * immediately; clearing emits "". Dates use local YYYY-MM-DD strings, matching
38
+ * the web DatePicker value contract; native input uses day buttons, not typing.
39
+ */
40
+ export declare function DatePicker(props: DatePickerProps): import('react').JSX.Element;
@@ -0,0 +1,40 @@
1
+ import { StyleProp, ViewStyle } from 'react-native';
2
+ export interface DatePickerProps {
3
+ /** Selected local date, YYYY-MM-DD. null and "" remain controlled empty values. */
4
+ value?: string | null;
5
+ /** Initial local date while uncontrolled. */
6
+ defaultValue?: string;
7
+ /** Selected YYYY-MM-DD day, or "" when cleared. */
8
+ onChange?: (value: string) => void;
9
+ /** Called when the calendar opens or closes. */
10
+ onOpenChange?: (open: boolean) => void;
11
+ placeholder?: string;
12
+ /** Visible label and accessible name. */
13
+ label?: string;
14
+ accessibilityLabel?: string;
15
+ accessibilityHint?: string;
16
+ nativeID?: string;
17
+ /** @default false */
18
+ disabled?: boolean;
19
+ /** Prevents opening, selection and clearing. */
20
+ readOnly?: boolean;
21
+ invalid?: boolean;
22
+ /** @default true */
23
+ clearable?: boolean;
24
+ /** @default "medium" */
25
+ size?: "small" | "medium" | "large";
26
+ /** Earliest selectable local day, YYYY-MM-DD, inclusive. */
27
+ minDate?: string;
28
+ /** Latest selectable local day, YYYY-MM-DD, inclusive. */
29
+ maxDate?: string;
30
+ /** Locale for calendar month and date names; defaults to provider language. */
31
+ locale?: string;
32
+ style?: StyleProp<ViewStyle>;
33
+ testID?: string;
34
+ }
35
+ /**
36
+ * Native touch date field with an accessible calendar dialog. Selection commits
37
+ * immediately; clearing emits "". Dates use local YYYY-MM-DD strings, matching
38
+ * the web DatePicker value contract; native input uses day buttons, not typing.
39
+ */
40
+ export declare function DatePicker(props: DatePickerProps): import('react').JSX.Element;
@@ -0,0 +1,110 @@
1
+ import { useI18n as e, useTheme as t } from "../../theme/MinervaProvider.js";
2
+ import { part as n } from "../../internal/parts.js";
3
+ import { textStyle as r } from "../../internal/styles.js";
4
+ import { Button as i } from "../Button/Button.js";
5
+ import "../Button/index.js";
6
+ import { Dialog as a } from "../Dialog/Dialog.js";
7
+ import "../Dialog/index.js";
8
+ import { useControllable as o } from "../../internal/useControllable.js";
9
+ import { Calendar as s } from "../Calendar/Calendar.js";
10
+ import "../Calendar/index.js";
11
+ import { useFormControlProps as c } from "../../internal/FormControlContext.js";
12
+ import { bindFormControl as l } from "../../internal/formControl.js";
13
+ import { useState as u } from "react";
14
+ import { Pressable as d, Text as f, View as p } from "react-native";
15
+ import { dayKey as m, monthStart as h, parseDayKey as g } from "../../../core/index.js";
16
+ import { jsx as _, jsxs as v } from "react/jsx-runtime";
17
+ //#region src/components/DatePicker/DatePicker.tsx
18
+ function y(l) {
19
+ let { value: y, defaultValue: b, onChange: x, onOpenChange: S, placeholder: C, label: w, accessibilityLabel: T, accessibilityHint: E, nativeID: D, disabled: O = !1, readOnly: k = !1, invalid: A = !1, clearable: j = !0, size: M = "medium", minDate: N, maxDate: P, locale: F, style: I, testID: L } = c(l), { tokens: R } = t(), { t: z, language: B } = e(), [V, H] = o(y === null ? "" : y, b ?? "", x), [U, W] = u(!1), [G, K] = u(() => h(g(V) ?? /* @__PURE__ */ new Date())), q = O || k, J = w ?? T ?? z("datePicker.label"), Y = V || C || z("datePicker.placeholder"), X = (e) => !!(N && e < N || P && e > P), Z = (e) => {
20
+ if (!(e && q) && e !== U) {
21
+ if (e) {
22
+ let e = g(V) ?? /* @__PURE__ */ new Date();
23
+ N && m(e) < N && (e = g(N) ?? e), P && m(e) > P && (e = g(P) ?? e), K(h(e));
24
+ }
25
+ W(e), S?.(e);
26
+ }
27
+ }, Q = (e) => {
28
+ let t = m(e);
29
+ q || X(t) || (H(t), Z(!1));
30
+ }, $ = /* @__PURE__ */ new Date();
31
+ return /* @__PURE__ */ v(p, {
32
+ ...n("date-picker", "root", {
33
+ disabled: O,
34
+ readOnly: k,
35
+ size: M
36
+ }),
37
+ style: I,
38
+ testID: L,
39
+ children: [
40
+ w && /* @__PURE__ */ _(f, {
41
+ style: [r(R), { marginBottom: R.space[1] }],
42
+ children: w
43
+ }),
44
+ /* @__PURE__ */ _(d, {
45
+ accessibilityRole: "combobox",
46
+ accessibilityLabel: J,
47
+ accessibilityHint: E,
48
+ nativeID: D,
49
+ accessibilityValue: { text: Y },
50
+ accessibilityState: {
51
+ expanded: U && !q,
52
+ disabled: q
53
+ },
54
+ "aria-invalid": A || void 0,
55
+ disabled: q,
56
+ onPress: () => Z(!0),
57
+ style: {
58
+ minHeight: R.touchTargetMin,
59
+ justifyContent: "center",
60
+ padding: R.space[M === "small" ? "2" : M === "large" ? "4" : "3"],
61
+ borderWidth: 1,
62
+ borderColor: R.colors[A ? "danger-color" : "border-color"],
63
+ borderRadius: R.radius.md,
64
+ opacity: O ? .5 : 1
65
+ },
66
+ children: /* @__PURE__ */ _(f, {
67
+ style: [r(R), { color: R.colors[V ? "text-color" : "text-muted-color"] }],
68
+ children: Y
69
+ })
70
+ }),
71
+ j && V && !q && /* @__PURE__ */ _(i, {
72
+ variant: "link",
73
+ accessibilityLabel: z("datePicker.clear"),
74
+ onPress: () => H(""),
75
+ children: z("datePicker.clear")
76
+ }),
77
+ /* @__PURE__ */ _(a, {
78
+ open: U && !q,
79
+ onOpenChange: Z,
80
+ title: J,
81
+ footer: /* @__PURE__ */ _(i, {
82
+ variant: "ghost",
83
+ disabled: q || X(m($)),
84
+ onPress: () => Q($),
85
+ children: z("datePicker.today")
86
+ }),
87
+ children: /* @__PURE__ */ _(s, {
88
+ value: g(V) ?? null,
89
+ month: G,
90
+ onMonthChange: K,
91
+ onSelect: Q,
92
+ minDate: N ? g(N) ?? void 0 : void 0,
93
+ maxDate: P ? g(P) ?? void 0 : void 0,
94
+ firstDayOfWeek: 1,
95
+ disabled: q,
96
+ size: M,
97
+ locale: F ?? B
98
+ })
99
+ })
100
+ ]
101
+ });
102
+ }
103
+ l(y, {
104
+ emptyValue: "",
105
+ commitOnChange: !0
106
+ });
107
+ //#endregion
108
+ export { y as DatePicker };
109
+
110
+ //# sourceMappingURL=DatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","names":["DatePicker","useFormControlProps","props","t","useTheme","translate","useI18n","current","setCurrent","useControllable","value","defaultValue","onChange","open","setOpen","useState","month","setMonth","monthStart","parseDayKey","locked","disabled","readOnly","accessibleName","label","accessibilityLabel","displayValue","placeholder","outsideRange","minDate","key","maxDate","show","next","date","dayKey","onOpenChange","select","today","View","part","Text","textStyle","Pressable","invalid","size","clearable","Button","Dialog","Calendar","locale","language","bindFormControl"],"sources":["../../../../../native/src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n Pressable,\n Text,\n View,\n type StyleProp,\n type ViewStyle,\n} from \"react-native\";\nimport { dayKey, monthStart, parseDayKey } from \"@minerva/core\";\nimport { useI18n, useTheme } from \"../../theme/MinervaProvider\";\nimport { useControllable } from \"../../internal/useControllable\";\nimport { useFormControlProps } from \"../../internal/FormControlContext\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { textStyle } from \"../../internal/styles\";\nimport { part } from \"../../internal/parts\";\nimport { Button } from \"../Button\";\nimport { Calendar } from \"../Calendar\";\nimport { Dialog } from \"../Dialog\";\n\nexport interface DatePickerProps {\n /** Selected local date, YYYY-MM-DD. null and \"\" remain controlled empty values. */\n value?: string | null;\n /** Initial local date while uncontrolled. */\n defaultValue?: string;\n /** Selected YYYY-MM-DD day, or \"\" when cleared. */\n onChange?: (value: string) => void;\n /** Called when the calendar opens or closes. */\n onOpenChange?: (open: boolean) => void;\n placeholder?: string;\n /** Visible label and accessible name. */\n label?: string;\n accessibilityLabel?: string;\n accessibilityHint?: string;\n nativeID?: string;\n /** @default false */\n disabled?: boolean;\n /** Prevents opening, selection and clearing. */\n readOnly?: boolean;\n invalid?: boolean;\n /** @default true */\n clearable?: boolean;\n /** @default \"medium\" */\n size?: \"small\" | \"medium\" | \"large\";\n /** Earliest selectable local day, YYYY-MM-DD, inclusive. */\n minDate?: string;\n /** Latest selectable local day, YYYY-MM-DD, inclusive. */\n maxDate?: string;\n /** Locale for calendar month and date names; defaults to provider language. */\n locale?: string;\n style?: StyleProp<ViewStyle>;\n testID?: string;\n}\n\n/**\n * Native touch date field with an accessible calendar dialog. Selection commits\n * immediately; clearing emits \"\". Dates use local YYYY-MM-DD strings, matching\n * the web DatePicker value contract; native input uses day buttons, not typing.\n */\nexport function DatePicker(props: DatePickerProps) {\n const {\n value,\n defaultValue,\n onChange,\n onOpenChange,\n placeholder,\n label,\n accessibilityLabel,\n accessibilityHint,\n nativeID,\n disabled = false,\n readOnly = false,\n invalid = false,\n clearable = true,\n size = \"medium\",\n minDate,\n maxDate,\n locale,\n style,\n testID,\n } = useFormControlProps(props);\n const { tokens: t } = useTheme();\n const { t: translate, language } = useI18n();\n const [current, setCurrent] = useControllable<string>(\n value === null ? \"\" : value,\n defaultValue ?? \"\",\n onChange,\n );\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState(() =>\n monthStart(parseDayKey(current) ?? new Date()),\n );\n const locked = disabled || readOnly;\n const accessibleName =\n label ?? accessibilityLabel ?? translate(\"datePicker.label\");\n const displayValue =\n current || placeholder || translate(\"datePicker.placeholder\");\n const outsideRange = (key: string) =>\n !!((minDate && key < minDate) || (maxDate && key > maxDate));\n const show = (next: boolean) => {\n if (next && locked) return;\n if (next === open) return;\n if (next) {\n let date = parseDayKey(current) ?? new Date();\n if (minDate && dayKey(date) < minDate)\n date = parseDayKey(minDate) ?? date;\n if (maxDate && dayKey(date) > maxDate)\n date = parseDayKey(maxDate) ?? date;\n setMonth(monthStart(date));\n }\n setOpen(next);\n onOpenChange?.(next);\n };\n const select = (date: Date) => {\n const key = dayKey(date);\n if (locked || outsideRange(key)) return;\n setCurrent(key);\n show(false);\n };\n const today = new Date();\n return (\n <View\n {...part(\"date-picker\", \"root\", { disabled, readOnly, size })}\n style={style}\n testID={testID}\n >\n {label && (\n <Text style={[textStyle(t), { marginBottom: t.space[\"1\"] }]}>\n {label}\n </Text>\n )}\n <Pressable\n accessibilityRole=\"combobox\"\n accessibilityLabel={accessibleName}\n accessibilityHint={accessibilityHint}\n nativeID={nativeID}\n accessibilityValue={{ text: displayValue }}\n accessibilityState={{ expanded: open && !locked, disabled: locked }}\n aria-invalid={invalid || undefined}\n disabled={locked}\n onPress={() => show(true)}\n style={{\n minHeight: t.touchTargetMin,\n justifyContent: \"center\",\n padding:\n t.space[size === \"small\" ? \"2\" : size === \"large\" ? \"4\" : \"3\"],\n borderWidth: 1,\n borderColor: t.colors[invalid ? \"danger-color\" : \"border-color\"],\n borderRadius: t.radius.md,\n opacity: disabled ? 0.5 : 1,\n }}\n >\n <Text\n style={[\n textStyle(t),\n { color: t.colors[current ? \"text-color\" : \"text-muted-color\"] },\n ]}\n >\n {displayValue}\n </Text>\n </Pressable>\n {clearable && current && !locked && (\n <Button\n variant=\"link\"\n accessibilityLabel={translate(\"datePicker.clear\")}\n onPress={() => setCurrent(\"\")}\n >\n {translate(\"datePicker.clear\")}\n </Button>\n )}\n <Dialog\n open={open && !locked}\n onOpenChange={show}\n title={accessibleName}\n footer={\n <Button\n variant=\"ghost\"\n disabled={locked || outsideRange(dayKey(today))}\n onPress={() => select(today)}\n >\n {translate(\"datePicker.today\")}\n </Button>\n }\n >\n <Calendar\n value={parseDayKey(current) ?? null}\n month={month}\n onMonthChange={setMonth}\n onSelect={select}\n minDate={minDate ? (parseDayKey(minDate) ?? undefined) : undefined}\n maxDate={maxDate ? (parseDayKey(maxDate) ?? undefined) : undefined}\n firstDayOfWeek={1}\n disabled={locked}\n size={size}\n locale={locale ?? language}\n />\n </Dialog>\n </View>\n );\n}\n\nbindFormControl(DatePicker, { emptyValue: \"\", commitOnChange: true });\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ const e=require("./DatePicker.cjs");exports.DatePicker=e.DatePicker;
@@ -0,0 +1,2 @@
1
+ export { DatePicker } from './DatePicker.cjs';
2
+ export type { DatePickerProps } from './DatePicker.cjs';
@@ -0,0 +1,2 @@
1
+ export { DatePicker } from './DatePicker.js';
2
+ export type { DatePickerProps } from './DatePicker.js';
@@ -0,0 +1,2 @@
1
+ import { DatePicker as e } from "./DatePicker.js";
2
+ export { e as DatePicker };
@@ -1,2 +1,2 @@
1
- const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/useMachine.cjs"),n=require("../../internal/toggleControl.cjs"),r=require("./Radio.cjs"),i=require("../../internal/formControl.cjs");let a=require("react"),o=require("../../../core/index.cjs"),s=require("react/jsx-runtime");var c=e=>typeof e==`string`?{label:e,value:e}:e;function l({value:i,defaultValue:l=null,onChange:u,direction:d=`vertical`,disabled:f=!1,readOnly:p=!1,size:m,color:h,label:g,error:_=!1,options:v,children:y,style:b,accessibilityLabel:x,...S}){let{tokens:C,fonts:w}=e.useTheme(),T=(0,a.useMemo)(()=>(v??[]).map(c).map(e=>({value:e.value,disabled:e.disabled})),[v]),[E,D]=t.useMachine(o.createRadioGroupMachine,{value:i,defaultValue:l,items:T,disabled:f,readOnly:p,orientation:d,onValueChange:u}),O=E.value,k=(0,a.useMemo)(()=>({value:O,select:e=>D({type:`SELECT`,value:e}),disabled:f,readOnly:p,error:_,size:m,color:h}),[O,D,f,p,_,m,h]);return(0,s.jsx)(r.RadioGroupContext.Provider,{value:k,children:(0,s.jsxs)(n.ToggleGroupFrame,{t:C,component:`radio-group`,role:`radiogroup`,label:g,accessibilityLabel:x,direction:d,disabled:f,fontFamily:w.sans,style:b,rest:S,children:[v?.map(e=>{let t=c(e);return(0,s.jsx)(r.Radio,{value:t.value,label:t.label,disabled:t.disabled},t.value)}),y]})})}i.bindFormControl(l,{emptyValue:null,commitOnChange:!0,invalidPropName:`error`,requiredKey:`validation.radioMissing`}),exports.RadioGroup=l;
1
+ const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/useMachine.cjs"),n=require("../../internal/formControl.cjs"),r=require("../../internal/toggleControl.cjs"),i=require("./Radio.cjs");let a=require("react"),o=require("../../../core/index.cjs"),s=require("react/jsx-runtime");var c=e=>typeof e==`string`?{label:e,value:e}:e;function l({value:n,defaultValue:l=null,onChange:u,direction:d=`vertical`,disabled:f=!1,readOnly:p=!1,size:m,color:h,label:g,error:_=!1,options:v,children:y,style:b,accessibilityLabel:x,...S}){let{tokens:C,fonts:w}=e.useTheme(),T=(0,a.useMemo)(()=>(v??[]).map(c).map(e=>({value:e.value,disabled:e.disabled})),[v]),[E,D]=t.useMachine(o.createRadioGroupMachine,{value:n,defaultValue:l,items:T,disabled:f,readOnly:p,orientation:d,onValueChange:u}),O=E.value,k=(0,a.useMemo)(()=>({value:O,select:e=>D({type:`SELECT`,value:e}),disabled:f,readOnly:p,error:_,size:m,color:h}),[O,D,f,p,_,m,h]);return(0,s.jsx)(i.RadioGroupContext.Provider,{value:k,children:(0,s.jsxs)(r.ToggleGroupFrame,{t:C,component:`radio-group`,role:`radiogroup`,label:g,accessibilityLabel:x,direction:d,disabled:f,fontFamily:w.sans,style:b,rest:S,children:[v?.map(e=>{let t=c(e);return(0,s.jsx)(i.Radio,{value:t.value,label:t.label,disabled:t.disabled},t.value)}),y]})})}n.bindFormControl(l,{emptyValue:null,commitOnChange:!0,invalidPropName:`error`,requiredKey:`validation.radioMissing`}),exports.RadioGroup=l;
2
2
  //# sourceMappingURL=RadioGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.cjs","names":["useTheme","useMemo","useMachine","createRadioGroupMachine","RadioGroupContext","ToggleGroupFrame","Radio","bindFormControl","require_MinervaProvider","require_useMachine","require_toggleControl","require_Radio","require_formControl","react","_minerva_core","react_jsx_runtime","toOption","option","RadioGroup","rest","t","items","options","o","state","send","direction","onChange","selected","context","v","disabled","readOnly","error","size","color","fonts","item","children"],"sources":["../../../../../native/src/components/Radio/RadioGroup.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport type { StyleProp, ViewProps, ViewStyle } from \"react-native\";\nimport { createRadioGroupMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { ToggleGroupFrame } from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\nimport {\n Radio,\n RadioGroupContext,\n type RadioColor,\n type RadioSize,\n} from \"./Radio\";\n\n/** An option of a RadioGroup built from `options` */\nexport interface RadioGroupOption {\n label: ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<ViewProps, \"style\"> {\n /** Value of the selected radio (controlled; `null`: none selected) */\n value?: string | null;\n /**\n * Initially selected value (uncontrolled)\n * @default null\n */\n defaultValue?: string | null;\n /** Called with the value of the radio the user selected */\n onChange?: (value: string) => void;\n /**\n * Layout direction of the radios\n * @default \"vertical\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /**\n * Disables every radio in the group\n * @default false\n */\n disabled?: boolean;\n /**\n * Radios show the value but presses do not change it\n * @default false\n */\n readOnly?: boolean;\n /** Size of every radio @default each radio's own */\n size?: RadioSize;\n /** Color of every checked radio @default each radio's own */\n color?: RadioColor;\n /** Visible label of the group; a string is also its accessible name */\n label?: ReactNode;\n /**\n * Error state of every radio\n * @default false\n */\n error?: boolean;\n /** Radios built from data (else pass `<Radio value>` children) */\n options?: readonly (string | RadioGroupOption)[];\n /** `<Radio value>` children */\n children?: ReactNode;\n /** Style of the root view */\n style?: StyleProp<ViewStyle>;\n}\n\nconst toOption = (option: string | RadioGroupOption): RadioGroupOption =>\n typeof option === \"string\" ? { label: option, value: option } : option;\n\n/**\n * A single-choice group on the radio-group machine of @minerva/core:\n * `role=\"radiogroup\"` container named by its label (not an accessibility\n * element itself), radios from `options` or `<Radio value>` children.\n */\nexport function RadioGroup({\n value,\n defaultValue = null,\n onChange,\n direction = \"vertical\",\n disabled = false,\n readOnly = false,\n size,\n color,\n label,\n error = false,\n options,\n children,\n style,\n accessibilityLabel,\n ...rest\n}: RadioGroupProps) {\n const { tokens: t, fonts } = useTheme();\n const items = useMemo(\n () =>\n (options ?? []).map(toOption).map((o) => ({\n value: o.value,\n disabled: o.disabled,\n })),\n [options],\n );\n const [state, send] = useMachine(createRadioGroupMachine, {\n value,\n defaultValue,\n items,\n disabled,\n readOnly,\n orientation: direction,\n onValueChange: onChange,\n });\n const selected = state.value;\n const context = useMemo(\n () => ({\n value: selected,\n select: (v: string) => send({ type: \"SELECT\", value: v }),\n disabled,\n readOnly,\n error,\n size,\n color,\n }),\n [selected, send, disabled, readOnly, error, size, color],\n );\n\n return (\n <RadioGroupContext.Provider value={context}>\n <ToggleGroupFrame\n t={t}\n component=\"radio-group\"\n role=\"radiogroup\"\n label={label}\n accessibilityLabel={accessibilityLabel}\n direction={direction}\n disabled={disabled}\n fontFamily={fonts.sans}\n style={style}\n rest={rest}\n >\n {options?.map((option) => {\n const item = toOption(option);\n return (\n <Radio\n key={item.value}\n value={item.value}\n label={item.label}\n disabled={item.disabled}\n />\n );\n })}\n {children}\n </ToggleGroupFrame>\n </RadioGroupContext.Provider>\n );\n}\n\nbindFormControl(RadioGroup, {\n emptyValue: null,\n commitOnChange: true,\n invalidPropName: \"error\",\n requiredKey: \"validation.radioMissing\",\n});\n"],"mappings":"4SAiEA,IAAMgB,EAAY,GAChB,OAAOC,GAAW,SAAW,CAAE,MAAOA,EAAQ,MAAOA,CAAO,EAAIA,EAOlE,SAAgBC,EAAW,CACzB,QACA,eAAe,KACf,WACA,YAAY,WACZ,WAAW,GACX,WAAW,GACX,OACA,QACA,QACA,QAAQ,GACR,UACA,WACA,QACA,qBACA,GAAGC,GACe,CAClB,GAAM,CAAE,OAAQC,EAAG,SAAUpB,EAAAA,SAAS,EAChCqB,GAAA,EAAQpB,EAAAA,QAAAA,MAETqB,GAAW,CAAC,EAAA,CAAG,IAAIN,CAAQ,CAAC,CAAC,IAAK,IAAO,CACxC,MAAOO,EAAE,MACT,SAAUA,EAAE,QACd,EAAE,EACJ,CAACD,CAAO,CACV,EACM,CAACE,EAAOC,GAAQvB,EAAAA,WAAWC,EAAAA,wBAAyB,CACxD,QACA,eACA,QACA,WACA,WACA,YAAauB,EACb,cAAeC,CACjB,CAAC,EACKC,EAAWJ,EAAM,MACjBK,GAAA,EAAU5B,EAAAA,QAAAA,MACP,CACL,MAAO2B,EACP,OAAS,GAAcH,EAAK,CAAE,KAAM,SAAU,MAAOK,CAAE,CAAC,EACxD,WACA,WACA,QACA,OACA,OACF,GACA,CAACF,EAAUH,EAAMM,EAAUC,EAAUC,EAAOC,EAAMC,CAAK,CACzD,EAEA,OACE,EAAApB,EAAA,IAAA,CAACX,EAAAA,kBAAkB,SAAnB,CAA4B,MAAOyB,EACjC,UAAA,EAAAd,EAAA,KAAA,CAACV,EAAAA,iBAAD,CACK,IACH,UAAU,cACV,KAAK,aACE,QACa,qBACT,YACD,WACV,WAAY+B,EAAM,KACX,QACD,OAVR,SAAA,CAYGd,GAAS,IAAK,GAAW,CACxB,IAAMe,EAAOrB,EAASC,CAAM,EAC5B,OACE,EAAAF,EAAA,IAAA,CAACT,EAAAA,MAAD,CAEE,MAAO+B,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,QAChB,EAJMA,EAAK,KAIX,CAEL,CAAC,EACAC,CACe,GACQ,CAAA,CAEhC,CAEA/B,EAAAA,gBAAgBW,EAAY,CAC1B,WAAY,KACZ,eAAgB,GAChB,gBAAiB,QACjB,YAAa,yBACf,CAAC"}
1
+ {"version":3,"file":"RadioGroup.cjs","names":["useTheme","useMemo","useMachine","createRadioGroupMachine","RadioGroupContext","ToggleGroupFrame","Radio","bindFormControl","require_MinervaProvider","require_useMachine","require_formControl","require_toggleControl","require_Radio","react","_minerva_core","react_jsx_runtime","toOption","option","RadioGroup","rest","t","items","options","o","state","send","direction","onChange","selected","context","v","disabled","readOnly","error","size","color","fonts","item","children"],"sources":["../../../../../native/src/components/Radio/RadioGroup.tsx"],"sourcesContent":["import { useMemo, type ReactNode } from \"react\";\nimport type { StyleProp, ViewProps, ViewStyle } from \"react-native\";\nimport { createRadioGroupMachine } from \"@minerva/core\";\nimport { useTheme } from \"../../theme/MinervaProvider\";\nimport { bindFormControl } from \"../../internal/formControl\";\nimport { ToggleGroupFrame } from \"../../internal/toggleControl\";\nimport { useMachine } from \"../../internal/useMachine\";\nimport {\n Radio,\n RadioGroupContext,\n type RadioColor,\n type RadioSize,\n} from \"./Radio\";\n\n/** An option of a RadioGroup built from `options` */\nexport interface RadioGroupOption {\n label: ReactNode;\n value: string;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps extends Omit<ViewProps, \"style\"> {\n /** Value of the selected radio (controlled; `null`: none selected) */\n value?: string | null;\n /**\n * Initially selected value (uncontrolled)\n * @default null\n */\n defaultValue?: string | null;\n /** Called with the value of the radio the user selected */\n onChange?: (value: string) => void;\n /**\n * Layout direction of the radios\n * @default \"vertical\"\n */\n direction?: \"vertical\" | \"horizontal\";\n /**\n * Disables every radio in the group\n * @default false\n */\n disabled?: boolean;\n /**\n * Radios show the value but presses do not change it\n * @default false\n */\n readOnly?: boolean;\n /** Size of every radio @default each radio's own */\n size?: RadioSize;\n /** Color of every checked radio @default each radio's own */\n color?: RadioColor;\n /** Visible label of the group; a string is also its accessible name */\n label?: ReactNode;\n /**\n * Error state of every radio\n * @default false\n */\n error?: boolean;\n /** Radios built from data (else pass `<Radio value>` children) */\n options?: readonly (string | RadioGroupOption)[];\n /** `<Radio value>` children */\n children?: ReactNode;\n /** Style of the root view */\n style?: StyleProp<ViewStyle>;\n}\n\nconst toOption = (option: string | RadioGroupOption): RadioGroupOption =>\n typeof option === \"string\" ? { label: option, value: option } : option;\n\n/**\n * A single-choice group on the radio-group machine of @minerva/core:\n * `role=\"radiogroup\"` container named by its label (not an accessibility\n * element itself), radios from `options` or `<Radio value>` children.\n */\nexport function RadioGroup({\n value,\n defaultValue = null,\n onChange,\n direction = \"vertical\",\n disabled = false,\n readOnly = false,\n size,\n color,\n label,\n error = false,\n options,\n children,\n style,\n accessibilityLabel,\n ...rest\n}: RadioGroupProps) {\n const { tokens: t, fonts } = useTheme();\n const items = useMemo(\n () =>\n (options ?? []).map(toOption).map((o) => ({\n value: o.value,\n disabled: o.disabled,\n })),\n [options],\n );\n const [state, send] = useMachine(createRadioGroupMachine, {\n value,\n defaultValue,\n items,\n disabled,\n readOnly,\n orientation: direction,\n onValueChange: onChange,\n });\n const selected = state.value;\n const context = useMemo(\n () => ({\n value: selected,\n select: (v: string) => send({ type: \"SELECT\", value: v }),\n disabled,\n readOnly,\n error,\n size,\n color,\n }),\n [selected, send, disabled, readOnly, error, size, color],\n );\n\n return (\n <RadioGroupContext.Provider value={context}>\n <ToggleGroupFrame\n t={t}\n component=\"radio-group\"\n role=\"radiogroup\"\n label={label}\n accessibilityLabel={accessibilityLabel}\n direction={direction}\n disabled={disabled}\n fontFamily={fonts.sans}\n style={style}\n rest={rest}\n >\n {options?.map((option) => {\n const item = toOption(option);\n return (\n <Radio\n key={item.value}\n value={item.value}\n label={item.label}\n disabled={item.disabled}\n />\n );\n })}\n {children}\n </ToggleGroupFrame>\n </RadioGroupContext.Provider>\n );\n}\n\nbindFormControl(RadioGroup, {\n emptyValue: null,\n commitOnChange: true,\n invalidPropName: \"error\",\n requiredKey: \"validation.radioMissing\",\n});\n"],"mappings":"4SAiEA,IAAMgB,EAAY,GAChB,OAAOC,GAAW,SAAW,CAAE,MAAOA,EAAQ,MAAOA,CAAO,EAAIA,EAOlE,SAAgBC,EAAW,CACzB,QACA,eAAe,KACf,WACA,YAAY,WACZ,WAAW,GACX,WAAW,GACX,OACA,QACA,QACA,QAAQ,GACR,UACA,WACA,QACA,qBACA,GAAGC,GACe,CAClB,GAAM,CAAE,OAAQC,EAAG,SAAUpB,EAAAA,SAAS,EAChCqB,GAAA,EAAQpB,EAAAA,QAAAA,MAETqB,GAAW,CAAC,EAAA,CAAG,IAAIN,CAAQ,CAAC,CAAC,IAAK,IAAO,CACxC,MAAOO,EAAE,MACT,SAAUA,EAAE,QACd,EAAE,EACJ,CAACD,CAAO,CACV,EACM,CAACE,EAAOC,GAAQvB,EAAAA,WAAWC,EAAAA,wBAAyB,CACxD,QACA,eACA,QACA,WACA,WACA,YAAauB,EACb,cAAeC,CACjB,CAAC,EACKC,EAAWJ,EAAM,MACjBK,GAAA,EAAU5B,EAAAA,QAAAA,MACP,CACL,MAAO2B,EACP,OAAS,GAAcH,EAAK,CAAE,KAAM,SAAU,MAAOK,CAAE,CAAC,EACxD,WACA,WACA,QACA,OACA,OACF,GACA,CAACF,EAAUH,EAAMM,EAAUC,EAAUC,EAAOC,EAAMC,CAAK,CACzD,EAEA,OACE,EAAApB,EAAA,IAAA,CAACX,EAAAA,kBAAkB,SAAnB,CAA4B,MAAOyB,EACjC,UAAA,EAAAd,EAAA,KAAA,CAACV,EAAAA,iBAAD,CACK,IACH,UAAU,cACV,KAAK,aACE,QACa,qBACT,YACD,WACV,WAAY+B,EAAM,KACX,QACD,OAVR,SAAA,CAYGd,GAAS,IAAK,GAAW,CACxB,IAAMe,EAAOrB,EAASC,CAAM,EAC5B,OACE,EAAAF,EAAA,IAAA,CAACT,EAAAA,MAAD,CAEE,MAAO+B,EAAK,MACZ,MAAOA,EAAK,MACZ,SAAUA,EAAK,QAChB,EAJMA,EAAK,KAIX,CAEL,CAAC,EACAC,CACe,GACQ,CAAA,CAEhC,CAEA/B,EAAAA,gBAAgBW,EAAY,CAC1B,WAAY,KACZ,eAAgB,GAChB,gBAAiB,QACjB,YAAa,yBACf,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { useTheme as e } from "../../theme/MinervaProvider.js";
2
2
  import { useMachine as t } from "../../internal/useMachine.js";
3
- import { ToggleGroupFrame as n } from "../../internal/toggleControl.js";
4
- import { Radio as r, RadioGroupContext as i } from "./Radio.js";
5
- import { bindFormControl as a } from "../../internal/formControl.js";
3
+ import { bindFormControl as n } from "../../internal/formControl.js";
4
+ import { ToggleGroupFrame as r } from "../../internal/toggleControl.js";
5
+ import { Radio as i, RadioGroupContext as a } from "./Radio.js";
6
6
  import { useMemo as o } from "react";
7
7
  import { createRadioGroupMachine as s } from "../../../core/index.js";
8
8
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
@@ -11,12 +11,12 @@ var u = (e) => typeof e == "string" ? {
11
11
  label: e,
12
12
  value: e
13
13
  } : e;
14
- function d({ value: a, defaultValue: d = null, onChange: f, direction: p = "vertical", disabled: m = !1, readOnly: h = !1, size: g, color: _, label: v, error: y = !1, options: b, children: x, style: S, accessibilityLabel: C, ...w }) {
14
+ function d({ value: n, defaultValue: d = null, onChange: f, direction: p = "vertical", disabled: m = !1, readOnly: h = !1, size: g, color: _, label: v, error: y = !1, options: b, children: x, style: S, accessibilityLabel: C, ...w }) {
15
15
  let { tokens: T, fonts: E } = e(), D = o(() => (b ?? []).map(u).map((e) => ({
16
16
  value: e.value,
17
17
  disabled: e.disabled
18
18
  })), [b]), [O, k] = t(s, {
19
- value: a,
19
+ value: n,
20
20
  defaultValue: d,
21
21
  items: D,
22
22
  disabled: m,
@@ -43,9 +43,9 @@ function d({ value: a, defaultValue: d = null, onChange: f, direction: p = "vert
43
43
  g,
44
44
  _
45
45
  ]);
46
- return /* @__PURE__ */ c(i.Provider, {
46
+ return /* @__PURE__ */ c(a.Provider, {
47
47
  value: j,
48
- children: /* @__PURE__ */ l(n, {
48
+ children: /* @__PURE__ */ l(r, {
49
49
  t: T,
50
50
  component: "radio-group",
51
51
  role: "radiogroup",
@@ -58,7 +58,7 @@ function d({ value: a, defaultValue: d = null, onChange: f, direction: p = "vert
58
58
  rest: w,
59
59
  children: [b?.map((e) => {
60
60
  let t = u(e);
61
- return /* @__PURE__ */ c(r, {
61
+ return /* @__PURE__ */ c(i, {
62
62
  value: t.value,
63
63
  label: t.label,
64
64
  disabled: t.disabled
@@ -67,7 +67,7 @@ function d({ value: a, defaultValue: d = null, onChange: f, direction: p = "vert
67
67
  })
68
68
  });
69
69
  }
70
- a(d, {
70
+ n(d, {
71
71
  emptyValue: null,
72
72
  commitOnChange: !0,
73
73
  invalidPropName: "error",
@@ -1,2 +1,2 @@
1
- const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/parts.cjs"),n=require("../../internal/styles.cjs"),r=require("../../internal/useMachine.cjs"),i=require("../../internal/FormControlContext.cjs"),a=require("../../internal/toggleControl.cjs"),o=require("../../internal/formControl.cjs");let s=require("react"),c=require("react-native"),l=require("../../../core/index.cjs"),u=require("react/jsx-runtime");var d=c.Platform.OS!==`web`;function f(o){let{checked:f,defaultChecked:p=!1,onChange:m,disabled:h=!1,loading:g=!1,size:_=`medium`,color:v=`primary`,shape:y=`round`,label:b,labelPlacement:x=`end`,onLabel:S,offLabel:C,value:w,style:T,trackStyle:E,thumbStyle:D,labelStyle:O,accessibilityState:k,hitSlop:A,...j}=i.useFormControlProps(o),{tokens:M,fonts:N}=e.useTheme(),P=h||g,[F,I]=r.useMachine(l.createSwitchMachine,{checked:f,defaultChecked:p,disabled:P,onCheckedChange:m}),L=F.checked,[R]=(0,s.useState)(()=>new c.Animated.Value(+!!L)),[z,B]=(0,s.useState)(null),V=n.duration(M,`fast`);(0,s.useEffect)(()=>{let e=+!!L;if(V<=0){R.setValue(e);return}let t=c.Animated.timing(R,{toValue:e,duration:V,easing:c.Easing.out(c.Easing.quad),useNativeDriver:d});return t.start(),()=>t.stop()},[L,V,R]);let H=n.colorRole(M,v),U=Math.round(n.controlHeight(M,_)*.64),W=U-4,G=S!==void 0||C!==void 0,K=Math.round(U*1.75),q=Math.max(K,z??0),J=q-W-4,Y=y===`round`?U/2:M.radius.sm,X=y===`round`?W/2:Math.max(2,M.radius.sm-2),Z={color:L?H.onSolid:M.colors[`text-secondary-color`],fontSize:_===`large`?M.fontSize.sm:M.fontSize.xs,fontWeight:n.weight(M,`medium`),...N.sans?{fontFamily:N.sans}:null},Q=L?S:C;return(0,u.jsx)(c.Pressable,{accessibilityRole:`switch`,accessibilityState:{...k,checked:L,disabled:P,busy:g},"aria-checked":L,"aria-disabled":P,"aria-busy":g,disabled:P,onPress:()=>I({type:`TOGGLE`}),hitSlop:A??n.hitSlopFor(M,U,q),...t.part(`switch`,`root`,{checked:L,disabled:h,loading:g,size:_,color:v,shape:y,value:w}),...j,style:[a.placementStyle(x),{gap:M.space[`2-5`],opacity:h?.5:1},T],children:({pressed:e})=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(c.View,{onLayout:G?e=>B(e.nativeEvent.layout.width):void 0,style:[{minWidth:K,height:U,borderRadius:Y,backgroundColor:M.colors[`border-strong-color`],overflow:`hidden`,justifyContent:`center`,paddingLeft:L?M.space[2]:W+2+M.space[1],paddingRight:L?W+2+M.space[1]:M.space[2]},E],...t.part(`switch`,`track`,{checked:L}),children:[(0,u.jsx)(c.Animated.View,{style:{position:`absolute`,top:0,bottom:0,left:0,right:0,backgroundColor:e?H.pressed:H.solid,opacity:R},...t.part(`switch`,`fill`)}),G?(0,u.jsx)(c.View,{accessible:!1,importantForAccessibility:`no-hide-descendants`,accessibilityElementsHidden:!0,...t.part(`switch`,`track-label`),children:typeof Q==`string`||typeof Q==`number`?(0,u.jsx)(c.Text,{numberOfLines:1,style:Z,children:Q}):Q}):null,(0,u.jsx)(c.Animated.View,{style:[{position:`absolute`,top:2,left:2,width:W,height:W,borderRadius:X,backgroundColor:M.colors[`surface-elevated-color`],alignItems:`center`,justifyContent:`center`,transform:[{translateX:R.interpolate({inputRange:[0,1],outputRange:[0,J]})}],...n.shadowStyle(M.shadows.sm)},D],...t.part(`switch`,`thumb`),children:g?(0,u.jsx)(c.ActivityIndicator,{size:`small`,color:L?H.solid:M.colors[`text-muted-color`],style:{transform:[{scale:W/24}]},...t.part(`switch`,`spinner`)}):null})]}),(0,u.jsx)(a.ToggleLabel,{t:M,component:`switch`,size:_,disabled:h,fontFamily:N.sans,style:O,children:b})]})})}o.bindFormControl(f,{valuePropName:`checked`,emptyValue:!1,commitOnChange:!0,invalidPropName:null,requiredKey:`validation.checkMissing`}),exports.Switch=f;
1
+ const e=require("../../theme/MinervaProvider.cjs"),t=require("../../internal/parts.cjs"),n=require("../../internal/styles.cjs"),r=require("../../internal/useMachine.cjs"),i=require("../../internal/FormControlContext.cjs"),a=require("../../internal/formControl.cjs"),o=require("../../internal/toggleControl.cjs");let s=require("react"),c=require("react-native"),l=require("../../../core/index.cjs"),u=require("react/jsx-runtime");var d=c.Platform.OS!==`web`;function f(a){let{checked:f,defaultChecked:p=!1,onChange:m,disabled:h=!1,loading:g=!1,size:_=`medium`,color:v=`primary`,shape:y=`round`,label:b,labelPlacement:x=`end`,onLabel:S,offLabel:C,value:w,style:T,trackStyle:E,thumbStyle:D,labelStyle:O,accessibilityState:k,hitSlop:A,...j}=i.useFormControlProps(a),{tokens:M,fonts:N}=e.useTheme(),P=h||g,[F,I]=r.useMachine(l.createSwitchMachine,{checked:f,defaultChecked:p,disabled:P,onCheckedChange:m}),L=F.checked,[R]=(0,s.useState)(()=>new c.Animated.Value(+!!L)),[z,B]=(0,s.useState)(null),V=n.duration(M,`fast`);(0,s.useEffect)(()=>{let e=+!!L;if(V<=0){R.setValue(e);return}let t=c.Animated.timing(R,{toValue:e,duration:V,easing:c.Easing.out(c.Easing.quad),useNativeDriver:d});return t.start(),()=>t.stop()},[L,V,R]);let H=n.colorRole(M,v),U=Math.round(n.controlHeight(M,_)*.64),W=U-4,G=S!==void 0||C!==void 0,K=Math.round(U*1.75),q=Math.max(K,z??0),J=q-W-4,Y=y===`round`?U/2:M.radius.sm,X=y===`round`?W/2:Math.max(2,M.radius.sm-2),Z={color:L?H.onSolid:M.colors[`text-secondary-color`],fontSize:_===`large`?M.fontSize.sm:M.fontSize.xs,fontWeight:n.weight(M,`medium`),...N.sans?{fontFamily:N.sans}:null},Q=L?S:C;return(0,u.jsx)(c.Pressable,{accessibilityRole:`switch`,accessibilityState:{...k,checked:L,disabled:P,busy:g},"aria-checked":L,"aria-disabled":P,"aria-busy":g,disabled:P,onPress:()=>I({type:`TOGGLE`}),hitSlop:A??n.hitSlopFor(M,U,q),...t.part(`switch`,`root`,{checked:L,disabled:h,loading:g,size:_,color:v,shape:y,value:w}),...j,style:[o.placementStyle(x),{gap:M.space[`2-5`],opacity:h?.5:1},T],children:({pressed:e})=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsxs)(c.View,{onLayout:G?e=>B(e.nativeEvent.layout.width):void 0,style:[{minWidth:K,height:U,borderRadius:Y,backgroundColor:M.colors[`border-strong-color`],overflow:`hidden`,justifyContent:`center`,paddingLeft:L?M.space[2]:W+2+M.space[1],paddingRight:L?W+2+M.space[1]:M.space[2]},E],...t.part(`switch`,`track`,{checked:L}),children:[(0,u.jsx)(c.Animated.View,{style:{position:`absolute`,top:0,bottom:0,left:0,right:0,backgroundColor:e?H.pressed:H.solid,opacity:R},...t.part(`switch`,`fill`)}),G?(0,u.jsx)(c.View,{accessible:!1,importantForAccessibility:`no-hide-descendants`,accessibilityElementsHidden:!0,...t.part(`switch`,`track-label`),children:typeof Q==`string`||typeof Q==`number`?(0,u.jsx)(c.Text,{numberOfLines:1,style:Z,children:Q}):Q}):null,(0,u.jsx)(c.Animated.View,{style:[{position:`absolute`,top:2,left:2,width:W,height:W,borderRadius:X,backgroundColor:M.colors[`surface-elevated-color`],alignItems:`center`,justifyContent:`center`,transform:[{translateX:R.interpolate({inputRange:[0,1],outputRange:[0,J]})}],...n.shadowStyle(M.shadows.sm)},D],...t.part(`switch`,`thumb`),children:g?(0,u.jsx)(c.ActivityIndicator,{size:`small`,color:L?H.solid:M.colors[`text-muted-color`],style:{transform:[{scale:W/24}]},...t.part(`switch`,`spinner`)}):null})]}),(0,u.jsx)(o.ToggleLabel,{t:M,component:`switch`,size:_,disabled:h,fontFamily:N.sans,style:O,children:b})]})})}a.bindFormControl(f,{valuePropName:`checked`,emptyValue:!1,commitOnChange:!0,invalidPropName:null,requiredKey:`validation.checkMissing`}),exports.Switch=f;
2
2
  //# sourceMappingURL=Switch.cjs.map