@hjmds/react-native 1.34.0 → 1.35.0

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 (174) hide show
  1. package/dist/actions.d.ts +12 -72
  2. package/dist/actions.d.ts.map +1 -1
  3. package/dist/actions.js +1 -1
  4. package/dist/actions.js.map +1 -1
  5. package/dist/auth-screen.d.ts.map +1 -1
  6. package/dist/auth-screen.js +3 -2
  7. package/dist/auth-screen.js.map +1 -1
  8. package/dist/calendar.d.ts.map +1 -1
  9. package/dist/calendar.js.map +1 -1
  10. package/dist/carousel.d.ts +10 -2
  11. package/dist/carousel.d.ts.map +1 -1
  12. package/dist/carousel.js +12 -6
  13. package/dist/carousel.js.map +1 -1
  14. package/dist/collapsible.d.ts +7 -1
  15. package/dist/collapsible.d.ts.map +1 -1
  16. package/dist/collapsible.js +14 -12
  17. package/dist/collapsible.js.map +1 -1
  18. package/dist/collection-editing.d.ts.map +1 -1
  19. package/dist/collection-editing.js.map +1 -1
  20. package/dist/collection-rail.d.ts +4 -4
  21. package/dist/collection-rail.d.ts.map +1 -1
  22. package/dist/collection-rail.js.map +1 -1
  23. package/dist/communication.d.ts.map +1 -1
  24. package/dist/communication.js.map +1 -1
  25. package/dist/conversation-row.d.ts.map +1 -1
  26. package/dist/conversation-row.js +4 -1
  27. package/dist/conversation-row.js.map +1 -1
  28. package/dist/data-display.d.ts +62 -8
  29. package/dist/data-display.d.ts.map +1 -1
  30. package/dist/data-display.js +135 -90
  31. package/dist/data-display.js.map +1 -1
  32. package/dist/data-table.d.ts +3 -1
  33. package/dist/data-table.d.ts.map +1 -1
  34. package/dist/data-table.js +15 -3
  35. package/dist/data-table.js.map +1 -1
  36. package/dist/date-picker.d.ts.map +1 -1
  37. package/dist/date-picker.js +1 -1
  38. package/dist/date-picker.js.map +1 -1
  39. package/dist/effect-surface.js.map +1 -1
  40. package/dist/evidence.d.ts +1 -1
  41. package/dist/evidence.d.ts.map +1 -1
  42. package/dist/evidence.js +2 -1
  43. package/dist/evidence.js.map +1 -1
  44. package/dist/feedback.d.ts +6 -1
  45. package/dist/feedback.d.ts.map +1 -1
  46. package/dist/feedback.js +7 -5
  47. package/dist/feedback.js.map +1 -1
  48. package/dist/floating-action-button.d.ts +3 -12
  49. package/dist/floating-action-button.d.ts.map +1 -1
  50. package/dist/floating-action-button.js +1 -1
  51. package/dist/floating-action-button.js.map +1 -1
  52. package/dist/forms.d.ts +2 -1
  53. package/dist/forms.d.ts.map +1 -1
  54. package/dist/forms.js +36 -3
  55. package/dist/forms.js.map +1 -1
  56. package/dist/image-choice.d.ts.map +1 -1
  57. package/dist/image-choice.js +8 -6
  58. package/dist/image-choice.js.map +1 -1
  59. package/dist/image-viewer.d.ts.map +1 -1
  60. package/dist/image-viewer.js +7 -4
  61. package/dist/image-viewer.js.map +1 -1
  62. package/dist/index.d.ts +4 -3
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +3 -2
  65. package/dist/index.js.map +1 -1
  66. package/dist/inputs.d.ts +26 -8
  67. package/dist/inputs.d.ts.map +1 -1
  68. package/dist/inputs.js +102 -51
  69. package/dist/inputs.js.map +1 -1
  70. package/dist/internal/accessible-focus.d.ts +2 -1
  71. package/dist/internal/accessible-focus.d.ts.map +1 -1
  72. package/dist/internal/accessible-focus.js +1 -1
  73. package/dist/internal/accessible-focus.js.map +1 -1
  74. package/dist/internal/field-frame.d.ts +8 -4
  75. package/dist/internal/field-frame.d.ts.map +1 -1
  76. package/dist/internal/field-frame.js +6 -6
  77. package/dist/internal/field-frame.js.map +1 -1
  78. package/dist/internal/field-private.d.ts +1 -0
  79. package/dist/internal/field-private.d.ts.map +1 -1
  80. package/dist/internal/field-visibility.d.ts +6 -0
  81. package/dist/internal/field-visibility.d.ts.map +1 -0
  82. package/dist/internal/field-visibility.js +13 -0
  83. package/dist/internal/field-visibility.js.map +1 -0
  84. package/dist/internal/initial-focus.d.ts +8 -1
  85. package/dist/internal/initial-focus.d.ts.map +1 -1
  86. package/dist/internal/initial-focus.js +17 -8
  87. package/dist/internal/initial-focus.js.map +1 -1
  88. package/dist/internal/message-reactions.d.ts.map +1 -1
  89. package/dist/internal/message-reactions.js.map +1 -1
  90. package/dist/internal/modal-lifecycle.d.ts.map +1 -1
  91. package/dist/internal/modal-lifecycle.js +5 -2
  92. package/dist/internal/modal-lifecycle.js.map +1 -1
  93. package/dist/internal/pending-content.d.ts +11 -0
  94. package/dist/internal/pending-content.d.ts.map +1 -0
  95. package/dist/internal/pending-content.js +16 -0
  96. package/dist/internal/pending-content.js.map +1 -0
  97. package/dist/internal/recipe-button.d.ts +8 -31
  98. package/dist/internal/recipe-button.d.ts.map +1 -1
  99. package/dist/internal/recipe-button.js +49 -12
  100. package/dist/internal/recipe-button.js.map +1 -1
  101. package/dist/internal/screen-dismiss.d.ts +10 -0
  102. package/dist/internal/screen-dismiss.d.ts.map +1 -0
  103. package/dist/internal/screen-dismiss.js +62 -0
  104. package/dist/internal/screen-dismiss.js.map +1 -0
  105. package/dist/internal/screen-footer.d.ts +1 -1
  106. package/dist/internal/text-align.d.ts +2 -2
  107. package/dist/internal/text-align.d.ts.map +1 -1
  108. package/dist/keyboard.d.ts +3 -2
  109. package/dist/keyboard.d.ts.map +1 -1
  110. package/dist/keyboard.js +3 -1
  111. package/dist/keyboard.js.map +1 -1
  112. package/dist/mentions.js.map +1 -1
  113. package/dist/navigation.d.ts +3 -1
  114. package/dist/navigation.d.ts.map +1 -1
  115. package/dist/navigation.js +29 -8
  116. package/dist/navigation.js.map +1 -1
  117. package/dist/number-field.d.ts +3 -26
  118. package/dist/number-field.d.ts.map +1 -1
  119. package/dist/number-field.js +2 -1
  120. package/dist/number-field.js.map +1 -1
  121. package/dist/overlays.d.ts +11 -6
  122. package/dist/overlays.d.ts.map +1 -1
  123. package/dist/overlays.js +19 -14
  124. package/dist/overlays.js.map +1 -1
  125. package/dist/primitives.d.ts +5 -31
  126. package/dist/primitives.d.ts.map +1 -1
  127. package/dist/primitives.js.map +1 -1
  128. package/dist/provider.d.ts.map +1 -1
  129. package/dist/provider.js +9 -2
  130. package/dist/provider.js.map +1 -1
  131. package/dist/public-exports.generated.d.ts +6 -0
  132. package/dist/public-exports.generated.d.ts.map +1 -1
  133. package/dist/public-exports.generated.js +18 -0
  134. package/dist/public-exports.generated.js.map +1 -1
  135. package/dist/screen-flows.d.ts +12 -5
  136. package/dist/screen-flows.d.ts.map +1 -1
  137. package/dist/screen-flows.js +25 -14
  138. package/dist/screen-flows.js.map +1 -1
  139. package/dist/screens.d.ts +33 -8
  140. package/dist/screens.d.ts.map +1 -1
  141. package/dist/screens.js +37 -15
  142. package/dist/screens.js.map +1 -1
  143. package/dist/sheet-gesture.d.ts +5 -2
  144. package/dist/sheet-gesture.d.ts.map +1 -1
  145. package/dist/sheet-gesture.js.map +1 -1
  146. package/dist/sheet-panel.d.ts +24 -0
  147. package/dist/sheet-panel.d.ts.map +1 -0
  148. package/dist/sheet-panel.js +111 -0
  149. package/dist/sheet-panel.js.map +1 -0
  150. package/dist/shortcut-rail.d.ts +28 -0
  151. package/dist/shortcut-rail.d.ts.map +1 -0
  152. package/dist/shortcut-rail.js +50 -0
  153. package/dist/shortcut-rail.js.map +1 -0
  154. package/dist/slider.d.ts +3 -20
  155. package/dist/slider.d.ts.map +1 -1
  156. package/dist/slider.js.map +1 -1
  157. package/dist/status-text.d.ts +3 -6
  158. package/dist/status-text.d.ts.map +1 -1
  159. package/dist/status-text.js.map +1 -1
  160. package/dist/steps.d.ts +2 -1
  161. package/dist/steps.d.ts.map +1 -1
  162. package/dist/steps.js +8 -5
  163. package/dist/steps.js.map +1 -1
  164. package/dist/table-family.d.ts.map +1 -1
  165. package/dist/table-family.js.map +1 -1
  166. package/dist/task-list.d.ts +3 -1
  167. package/dist/task-list.d.ts.map +1 -1
  168. package/dist/task-list.js +2 -2
  169. package/dist/task-list.js.map +1 -1
  170. package/dist/time-picker.d.ts +9 -0
  171. package/dist/time-picker.d.ts.map +1 -0
  172. package/dist/time-picker.js +59 -0
  173. package/dist/time-picker.js.map +1 -0
  174. package/package.json +44 -25
package/dist/inputs.d.ts CHANGED
@@ -1,10 +1,12 @@
1
+ import type { ComponentRef } from "react";
1
2
  import { type FieldAlign, type FieldShape, type FieldVariant } from "@hjmds/design-contracts/recipes/base";
2
3
  import { type ChipSize, type SearchFieldSize, type SegmentedControlSize, type SelectionControlPresentation, type SelectionControlSize, type SwitchSize, type SwitchPresentation } from "@hjmds/design-contracts/recipes";
3
4
  import { type PasswordFieldAutofillHint, type PasswordFieldSize } from "@hjmds/design-contracts/components/password-field";
4
5
  import { type OtpFieldSize, type OtpFieldPresentation } from "@hjmds/design-contracts/components/otp-field";
5
6
  import { type CheckboxGroupSelection, type CheckboxState, type SelectionItemDescriptor, type SelectionOrientation } from "@hjmds/design-contracts/behaviors";
6
- import { type ReactNode } from "react";
7
+ import { forwardRef, type ReactNode } from "react";
7
8
  import { TextInput, View, type GestureResponderEvent, type SwitchProps as NativeSwitchProps, type TextInputProps } from "react-native";
9
+ import type { GridDescriptor } from "@hjmds/design-contracts/grid";
8
10
  import type { HjmCompositionStyleProp } from "./composition-style.js";
9
11
  type FieldAccessibleName = Readonly<{
10
12
  label: string;
@@ -53,12 +55,12 @@ type BaseFieldProps = Omit<TextInputProps, "accessibilityLabel" | "defaultValue"
53
55
  }>;
54
56
  type AccessibleFieldProps = BaseFieldProps & FieldAccessibleName;
55
57
  export type TextFieldProps = AccessibleFieldProps;
56
- export declare const TextField: import("react").ForwardRefExoticComponent<AccessibleFieldProps & import("react").RefAttributes<TextInput>>;
58
+ export declare const TextField: ReturnType<typeof forwardRef<ComponentRef<typeof TextInput>, TextFieldProps>>;
57
59
  export type TextAreaProps = AccessibleFieldProps & Readonly<{
58
60
  trailing?: ReactNode;
59
61
  leadingAction?: ReactNode;
60
62
  }>;
61
- export declare const TextArea: import("react").ForwardRefExoticComponent<TextAreaProps & import("react").RefAttributes<TextInput>>;
63
+ export declare const TextArea: ReturnType<typeof forwardRef<ComponentRef<typeof TextInput>, TextAreaProps>>;
62
64
  export type SearchFieldAffordanceRenderProps = Readonly<{
63
65
  color: string;
64
66
  size: number;
@@ -79,7 +81,7 @@ export type SearchFieldProps = AccessibleFieldProps & Readonly<{
79
81
  renderClearIcon?: (props: SearchFieldAffordanceRenderProps) => ReactNode;
80
82
  renderBusyIndicator?: (props: SearchFieldAffordanceRenderProps) => ReactNode;
81
83
  }>;
82
- export declare const SearchField: import("react").ForwardRefExoticComponent<SearchFieldProps & import("react").RefAttributes<TextInput>>;
84
+ export declare const SearchField: ReturnType<typeof forwardRef<ComponentRef<typeof TextInput>, SearchFieldProps>>;
83
85
  export type PasswordFieldToggleRenderProps = Readonly<{
84
86
  name: "visibility" | "visibilityOff";
85
87
  color: string;
@@ -101,7 +103,7 @@ export type PasswordFieldProps = Omit<BaseFieldProps, "autoComplete" | "defaultV
101
103
  renderToggleIcon?: (props: PasswordFieldToggleRenderProps) => ReactNode;
102
104
  }>;
103
105
  /** Password input with independent reveal state and native autofill translation. */
104
- export declare const PasswordField: import("react").ForwardRefExoticComponent<PasswordFieldProps & import("react").RefAttributes<TextInput>>;
106
+ export declare const PasswordField: ReturnType<typeof forwardRef<ComponentRef<typeof TextInput>, PasswordFieldProps>>;
105
107
  export type OtpFieldProps = Omit<BaseFieldProps, "autoComplete" | "defaultValue" | "inputStyle" | "keyboardType" | "multiline" | "onChangeText" | "secureTextEntry" | "textContentType" | "value"> & FieldAccessibleName & Readonly<{
106
108
  length: number;
107
109
  value?: string;
@@ -112,7 +114,7 @@ export type OtpFieldProps = Omit<BaseFieldProps, "autoComplete" | "defaultValue"
112
114
  presentation?: OtpFieldPresentation;
113
115
  }>;
114
116
  /** One accessible numeric TextInput rendered through decorative OTP slots. */
115
- export declare const OtpField: import("react").ForwardRefExoticComponent<OtpFieldProps & import("react").RefAttributes<TextInput>>;
117
+ export declare const OtpField: ReturnType<typeof forwardRef<ComponentRef<typeof TextInput>, OtpFieldProps>>;
116
118
  export type ChoiceVisualRenderProps = Readonly<{
117
119
  checked: CheckboxState;
118
120
  selected: boolean;
@@ -174,9 +176,17 @@ export type RadioGroupItem<Value extends string = string> = Readonly<{
174
176
  disabled?: boolean;
175
177
  accessibilityHint?: string;
176
178
  leading?: ReactNode;
179
+ action?: Readonly<{
180
+ label: string;
181
+ accessibilityLabel?: string;
182
+ onAction: () => void;
183
+ disabled?: boolean;
184
+ }>;
177
185
  }>;
178
186
  type ChoiceGroupVisualProps = ChoiceVisualProps & Readonly<{
179
187
  orientation?: SelectionOrientation;
188
+ /** Equal-width responsive options, measured and arranged by the shared Grid. */
189
+ grid?: GridDescriptor;
180
190
  disabled?: boolean;
181
191
  readOnly?: boolean;
182
192
  invalid?: boolean;
@@ -196,6 +206,8 @@ export type RadioGroupProps<Value extends string = string> = ChoiceGroupVisualPr
196
206
  value?: Value | null;
197
207
  defaultValue?: Value | null;
198
208
  onValueChange?: (value: Value | null) => void;
209
+ /** Visual preview only; the string label remains the accessible name. */
210
+ renderLabel?: (item: RadioGroupItem<Value>) => ReactNode;
199
211
  renderLeading?: (item: RadioGroupItem<Value>, props: ChoiceVisualRenderProps) => ReactNode;
200
212
  renderIndicator?: (item: RadioGroupItem<Value>, props: ChoiceVisualRenderProps) => ReactNode;
201
213
  }>;
@@ -208,7 +220,7 @@ export type CheckboxGroupProps<Value extends string = string> = ChoiceGroupVisua
208
220
  renderIndicator?: (item: SelectionItemDescriptor<Value>, props: ChoiceVisualRenderProps) => ReactNode;
209
221
  }>;
210
222
  /** Validated controlled/uncontrolled checkbox collection using immutable Sets. */
211
- export declare function CheckboxGroup<Value extends string = string>({ label, accessibilityLabel, items, value, defaultValue, onValueChange, required, disabled, readOnly, invalid, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation, presentation, size, indicator, renderLeading, renderIndicator, layoutStyle, ...slotStyles }: CheckboxGroupProps<Value>): import("react").JSX.Element;
223
+ export declare function CheckboxGroup<Value extends string = string>({ label, accessibilityLabel, items, value, defaultValue, onValueChange, required, disabled, readOnly, invalid, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation, grid, presentation, size, indicator, renderLeading, renderIndicator, layoutStyle, ...slotStyles }: CheckboxGroupProps<Value>): import("react").JSX.Element;
212
224
  type SwitchBaseProps = Omit<NativeSwitchProps, "accessibilityHint" | "accessibilityLabel" | "defaultValue" | "onValueChange" | "style" | "value"> & Readonly<{
213
225
  label: string;
214
226
  /** Use inside a labelled ListRow; the accessible name and hint remain present. */
@@ -234,6 +246,8 @@ export declare function Switch({ label, labelVisibility, presentation, testID, d
234
246
  export type SegmentedControlItem<Value extends string = string> = Readonly<{
235
247
  value: Value;
236
248
  label: string;
249
+ /** Full spoken name when the visible label is abbreviated. */
250
+ accessibilityLabel?: string;
237
251
  disabled?: boolean;
238
252
  leading?: ReactNode;
239
253
  renderLeading?: (props: SegmentedControlLeadingRenderProps) => ReactNode;
@@ -258,6 +272,10 @@ export type SegmentedControlProps<Value extends string = string> = SegmentedCont
258
272
  /** Move only decorative selection artwork, never labels or hit targets. */
259
273
  selectionMotion?: "none" | "slide";
260
274
  disabled?: boolean;
275
+ /** Pills wrap by default; a rail keeps one row while actions remain outside the selection group. */
276
+ overflow?: "wrap" | "scroll";
277
+ actions?: ReactNode;
278
+ testID?: string;
261
279
  /** Canonical layout-only placement. Controlled visual keys are excluded. */
262
280
  layoutStyle?: HjmCompositionStyleProp;
263
281
  }>;
@@ -295,6 +313,6 @@ type SelectionChipProps = Readonly<{
295
313
  export type ChipProps = ChipBaseProps & (ActionChipProps | SelectionChipProps);
296
314
  /** Action/filter chip with role-specific, controlled selection semantics. */
297
315
  /** Forwards the host View ref so a chip can be a focus-return target (2026-10-16, DiscoveryGallery). */
298
- export declare const Chip: import("react").ForwardRefExoticComponent<ChipProps & import("react").RefAttributes<View>>;
316
+ export declare const Chip: ReturnType<typeof forwardRef<ComponentRef<typeof View>, ChipProps>>;
299
317
  export {};
300
318
  //# sourceMappingURL=inputs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../src/inputs.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../src/inputs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAiB1C,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAOL,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,kBAAkB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAGL,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAaL,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,UAAU,EAQV,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAUL,SAAS,EACT,IAAI,EACJ,KAAK,qBAAqB,EAC1B,KAAK,WAAW,IAAI,iBAAiB,EACrC,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAWtB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,KAAK,mBAAmB,GACpB,QAAQ,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC,GACF,QAAQ,CAAC;IACP,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEP,KAAK,cAAc,GAAG,IAAI,CACxB,cAAc,EACZ,oBAAoB,GACpB,cAAc,GACd,WAAW,GACX,cAAc,GACd,OAAO,GACP,OAAO,CACV,GACC,QAAQ,CAAC;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC,CAAC;AAEL,KAAK,oBAAoB,GAAG,cAAc,GAAG,mBAAmB,CAAC;AA6UjE,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,CAAC,EAAE,cAAc,CAAC,CAElG,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,aAAa,CAAC,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEjH,eAAO,MAAM,QAAQ,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,CAAC,EAAE,aAAa,CAAC,CAEhG,CAAC;AAEH,MAAM,MAAM,gCAAgC,GAAG,QAAQ,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,GACjD,QAAQ,CAAC;IACP,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,SAAS,CAAC;IACvE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,SAAS,CAAC;IACzE,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,KAAK,SAAS,CAAC;CAC9E,CAAC,CAAC;AAEL,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,CAAC,EAAE,gBAAgB,CAAC,CA6FtG,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,YAAY,GAAG,eAAe,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,cAAc,EACZ,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,OAAO,CACV,GAAG,mBAAmB,GACrB,QAAQ,CAAC;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,YAAY,EAAE,yBAAyB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,8BAA8B,KAAK,SAAS,CAAC;CACzE,CAAC,CAAC;AA6CL,oFAAoF;AACpF,eAAO,MAAM,aAAa,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,CAAC,EAAE,kBAAkB,CAAC,CA8F1G,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,cAAc,EACZ,cAAc,GACd,cAAc,GACd,YAAY,GACZ,cAAc,GACd,WAAW,GACX,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,OAAO,CACV,GAAG,mBAAmB,GACrB,QAAQ,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAC;CAErC,CAAC,CAAC;AAEL,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,SAAS,CAAC,EAAE,aAAa,CAAC,CA2LhG,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,KAAK,iBAAiB,GAAG,QAAQ,CAAC;IAChC,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC/B,6GAA6G;IAC7G,WAAW,CAAC,EAAE,uBAAuB,CAAC;CAKvC,CAAC,CAAC;AAyMH,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC9D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,GAAG,MAAM,EACV,EAAE,aAAa,+BA8Bf;AAED,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC9D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH,sFAAsF;AACtF,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,OAAO,EACP,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,GAAG,MAAM,EACV,EAAE,UAAU,+BA8BZ;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IACnE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC7G,CAAC,CAAC;AAEH,KAAK,sBAAsB,GAAG,iBAAiB,GAAG,QAAQ,CAAC;IACzD,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,gFAAgF;IAChF,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,KAAK,yBAAyB,CAAC,KAAK,SAAS,MAAM,IAAI,QAAQ,CAAC;IAAE,KAAK,EAAE,SAAS,cAAc,CAAC,KAAK,CAAC,EAAE,CAAA;CAAE,CAAC,CAAC;AAE7G,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,sBAAsB,GACjF,yBAAyB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,yEAAyE;IACzE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;IACzD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IAC3F,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;CAC9F,CAAC,CAAC;AAsFL,wBAAgB,UAAU,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,+BA2GtF;AAED,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,sBAAsB,GACpF,sBAAsB,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,SAAS,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;IACjD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;IACpG,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,uBAAuB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,uBAAuB,KAAK,SAAS,CAAC;CACvG,CAAC,CAAC;AAEL,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,EAC3D,KAAK,EACL,kBAAkB,EAClB,KAAK,EACL,KAAK,EACL,YAA+B,EAC/B,aAAa,EACb,QAAgB,EAChB,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,WAAW,EACX,KAAK,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAwD,EACxD,IAAI,EACJ,YAAyD,EACzD,IAA2C,EAC3C,SAAqB,EACrB,aAAa,EACb,eAAe,EACf,WAAW,EACX,GAAG,UAAU,EACd,EAAE,kBAAkB,CAAC,KAAK,CAAC,+BA0D3B;AAED,KAAK,eAAe,GAAG,IAAI,CACzB,iBAAiB,EACf,mBAAmB,GACnB,oBAAoB,GACpB,cAAc,GACd,eAAe,GACf,OAAO,GACP,OAAO,CACV,GACC,QAAQ,CAAC;IACP,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,eAAe,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,KAAK,yBAAyB,GAAG,QAAQ,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,yBAAyB,CAAC;AAEtE,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,eAA2B,EAC3B,YAAuD,EACvD,MAAM,EACN,WAAW,EACX,IAAiC,EACjC,OAAO,EACP,cAAc,EACd,eAAe,EACf,QAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,GAAG,KAAK,EACT,EAAE,WAAW,+BAuHb;AAED,MAAM,MAAM,oBAAoB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IACzE,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kCAAkC,KAAK,SAAS,CAAC;CAC1E,CAAC,CAAC;AAEH,MAAM,MAAM,kCAAkC,GAAG,QAAQ,CAAC;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAAC;AAEH,KAAK,+BAA+B,CAAC,KAAK,SAAS,MAAM,IAAI,QAAQ,CAAC;IAAE,KAAK,EAAE,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAA;CAAE,CAAC,CAAC;AAuBzH,MAAM,MAAM,qBAAqB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IAC7D,+BAA+B,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACvC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IAC5B,YAAY,CAAC,EAAE,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,YAAY,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACpC,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oGAAoG;IACpG,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC7B,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC,CAAC,CAAC;AAEL,wBAAgB,gBAAgB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,+BA+OlG;AAED,KAAK,aAAa,GAAG,QAAQ,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC;QAC1C,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,KAAK,SAAS,CAAC;CAClB,CAAC,CAAC;AAEH,KAAK,eAAe,GAAG,QAAQ,CAAC;IAC9B,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACjD,CAAC,CAAC;AAEH,KAAK,kBAAkB,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,QAAQ,GAAG,UAAU,CAAC;IACrC,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACpE,CAAC,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,eAAe,GAAG,kBAAkB,CAAC,CAAC;AAE/E,6EAA6E;AAC7E,wGAAwG;AACxG,eAAO,MAAM,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,EAAE,SAAS,CAAC,CA0HnF,CAAC"}
package/dist/inputs.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { createElement as _createElement } from "react";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button } from "./actions.js";
3
4
  import { useInitialFocusTarget } from "./internal/initial-focus.js";
5
+ import { setInputVisibilityFrame } from "./internal/field-visibility.js";
4
6
  import { assertNoRemovedStyleProps } from "./internal/diagnostics.js";
5
7
  import { FixedGlyph } from "./internal/fixed-glyph.js";
6
8
  import { SelectionMark } from "./internal/selection-mark.js";
@@ -16,9 +18,9 @@ import { getCheckboxNextState, reconcileCheckboxSelection, resolveControlAccessi
16
18
  import { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useLayoutEffect, useRef, useState, } from "react";
17
19
  import { ActivityIndicator, Animated, AppState, Easing, Platform, Pressable, ScrollView, Switch as NativeSwitch, Text as NativeText, TextInput, View, } from "react-native";
18
20
  import { mixedCheckboxState, useControllableState } from "./internal/state.js";
19
- import { webChoiceProps, webOnly } from "./internal/web-a11y.js";
21
+ import { isWebRenderer, webChoiceProps, webOnly } from "./internal/web-a11y.js";
20
22
  import { logicalTextAlign, minimumTargetStyle, resolveNativeFontStyle, resolveNativeTextScaleProps, } from "./internal/styles.js";
21
- import { Text } from "./primitives.js";
23
+ import { Grid, Text } from "./primitives.js";
22
24
  import { useHjmNativeTheme } from "./provider.js";
23
25
  function resolveFieldAccessibleName(label, accessibilityLabel) {
24
26
  const visibleLabel = label?.trim();
@@ -32,19 +34,24 @@ function resolveFieldAccessibleName(label, accessibilityLabel) {
32
34
  ...(visibleLabel ? { visibleLabel } : {}),
33
35
  };
34
36
  }
35
- const FieldRenderer = forwardRef(function FieldRenderer({ label, value, defaultValue = "", onValueChange, description, error, invalid = false, accessibilityHint, required = false, disabled = false, busy = false, variant = fieldRecipe.defaults.variant, shape, accessibilityLabel, layoutStyle, allowFontScaling, multiline, maxVisibleLines, minVisibleLines, align = fieldRecipe.defaults.align, search, recipeMinHeight, recipeTextVariant, disabledOpacity, searchSize = searchFieldRecipe.defaults.size, leading, trailing, leadingAction, hjmCompactMultiline = false, initialFocusTarget, onBlur, onFocus, onContentSizeChange, onSelectionChange, ...props }, ref) {
37
+ const FieldRenderer = forwardRef(function FieldRenderer({ label, value, defaultValue = "", onValueChange, description, error, invalid = false, accessibilityHint, required = false, disabled = false, busy = false, variant = fieldRecipe.defaults.variant, shape, accessibilityLabel, layoutStyle, allowFontScaling, multiline, maxVisibleLines, minVisibleLines, align = fieldRecipe.defaults.align, search, recipeMinHeight, recipeTextVariant, disabledOpacity, searchSize = searchFieldRecipe.defaults.size, leading, trailing, leadingAction, hjmCompactMultiline = false, hjmDescriptionAlign = "start", initialFocusTarget, onBlur, onFocus, onContentSizeChange, onSelectionChange, ...props }, ref) {
36
38
  const resolvedDisabledOpacity = disabledOpacity ?? (search ? searchFieldRecipe.states.disabledOpacity : fieldRecipe.disabledOpacity);
37
39
  const theme = useHjmNativeTheme();
38
40
  const { colors, environment, textScaling } = theme;
39
41
  const [focused, setFocused] = useState(false);
40
42
  const [contentHeight, setContentHeight] = useState(0);
41
43
  const inputRef = useRef(null);
44
+ const fieldFrameRef = useRef(null);
42
45
  const restoreFocusRef = useRef(false);
43
46
  const selectionRef = useRef(null);
44
47
  const attachInput = useCallback((node) => {
45
48
  if (node === null)
46
49
  restoreFocusRef.current = inputRef.current?.isFocused?.() ?? false;
50
+ if (inputRef.current)
51
+ setInputVisibilityFrame(inputRef.current, null);
47
52
  inputRef.current = node;
53
+ if (node)
54
+ setInputVisibilityFrame(node, fieldFrameRef);
48
55
  }, []);
49
56
  const [currentValue, setCurrentValue] = useControllableState({
50
57
  ...(value === undefined ? {} : { value }),
@@ -60,9 +67,8 @@ const FieldRenderer = forwardRef(function FieldRenderer({ label, value, defaultV
60
67
  (search ? searchFieldRecipe.defaults.shape : fieldRecipe.defaults.shape);
61
68
  const searchSizing = searchFieldRecipe.sizes[searchSize];
62
69
  const resolvedMaxVisibleLines = maxVisibleLines ?? fieldRecipe.multilineMaxVisibleLines;
63
- const borderWidth = search
64
- ? searchFieldRecipe.borderWidth
65
- : fieldRecipe.borderWidth;
70
+ const borderWidth = error || invalid ? fieldRecipe.states.invalid.borderWidth
71
+ : search ? searchFieldRecipe.borderWidth : fieldRecipe.borderWidth;
66
72
  const borderColor = search
67
73
  ? resolveColorReference(error || invalid
68
74
  ? searchFieldRecipe.colors.invalid
@@ -170,7 +176,7 @@ const FieldRenderer = forwardRef(function FieldRenderer({ label, value, defaultV
170
176
  setFocused(true);
171
177
  onFocus?.(event);
172
178
  }, placeholderTextColor: placeholderColor, value: currentValue }, editorKey));
173
- return (_jsx(NativeFieldFrame, { ...(visibleLabel === undefined ? {} : { label: visibleLabel }), required: required, ...(error === undefined ? {} : { error }), ...(supportText === undefined ? {} : { description: supportText }), ...(disabled ? { disabledOpacity: resolvedDisabledOpacity } : {}), style: layoutStyle, children: _jsxs(View, { style: {
179
+ return (_jsx(NativeFieldFrame, { frameRef: fieldFrameRef, descriptionAlign: hjmDescriptionAlign, ...(visibleLabel === undefined ? {} : { label: visibleLabel }), required: required, ...(error === undefined ? {} : { error }), ...(supportText === undefined ? {} : { description: supportText }), ...(disabled ? { disabledOpacity: resolvedDisabledOpacity } : {}), style: layoutStyle, children: _jsxs(View, { style: {
174
180
  opacity: disabled ? resolvedDisabledOpacity : 1,
175
181
  alignItems: multiline ? "stretch" : "center",
176
182
  backgroundColor,
@@ -404,12 +410,15 @@ layoutStyle, allowFontScaling, onBlur, onFocus, ...props }, ref) {
404
410
  }) })] }), _jsx(FieldMessage, { ...(error === undefined ? {} : { error }), ...(supportText === undefined ? {} : { supportText }) })] })] }));
405
411
  });
406
412
  // UI control labels keep the ui font even when their metric variant is body; content still uses reading.
407
- function ChoiceRow({ kind, label, description, checked, disabled, readOnly, required, invalid, readOnlyLabel, requiredLabel, invalidLabel, accessibilityHint, presentation = selectionControlRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", leading, renderLeading, renderIndicator, onActivate, webTabIndex, layoutStyle, }) {
413
+ function ChoiceRow({ kind, label, labelContent, action, description, checked, disabled, readOnly, required, invalid, readOnlyLabel, requiredLabel, invalidLabel, accessibilityHint, presentation = selectionControlRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", leading, renderLeading, renderIndicator, onActivate, webTabIndex, layoutStyle, }) {
408
414
  const theme = useHjmNativeTheme();
409
415
  const metrics = selectionControlRecipe.sizes[size];
416
+ const chips = presentation === "chips", chipMetrics = chipRecipe.sizes[size];
417
+ const rowMinHeight = chips ? visibleControlHeight(chipMetrics.height, theme.environment.minimumVisualTarget) : metrics.rowMinHeight;
410
418
  const plate = selectionControlRecipe.presentations[presentation];
411
419
  const selected = checked === true || checked === "mixed";
412
- const indicatorColor = resolveColorReference(selectionControlRecipe.states.indicator, theme.palette);
420
+ const chipState = chipRecipe.states[selected ? "selected" : "idle"];
421
+ const indicatorColor = resolveColorReference(chips ? chipState.content : selectionControlRecipe.states.indicator, theme.palette);
413
422
  const appearance = {
414
423
  checked,
415
424
  selected,
@@ -419,21 +428,28 @@ function ChoiceRow({ kind, label, description, checked, disabled, readOnly, requ
419
428
  size: metrics.control,
420
429
  };
421
430
  const resolvedLeading = leading ?? renderLeading?.(appearance);
422
- const plateBackground = selected
431
+ const plateBackground = chips ? chipState.background : selected
423
432
  ? selectionControlRecipe.states.selectedBackground
424
433
  : plate.background ?? selectionControlRecipe.states.idleBackground;
425
434
  const plateBorder = invalid
426
435
  ? selectionControlRecipe.states.invalidBorder
427
- : selected
436
+ : chips ? chipState.border : selected
428
437
  ? selectionControlRecipe.states.selectedBorder
429
438
  : plate.border;
439
+ const frameStyle = {
440
+ ...(chips ? { maxWidth: "100%" } : {}),
441
+ backgroundColor: resolveColorReference(plateBackground, theme.palette),
442
+ borderColor: plateBorder ? resolveColorReference(plateBorder, theme.palette) : "transparent",
443
+ borderRadius: theme.tokens.radius[plate.radius],
444
+ borderWidth: plate.borderWidth,
445
+ };
430
446
  const resolvedHint = [
431
447
  accessibilityHint ?? description,
432
448
  required ? requiredLabel : undefined,
433
449
  readOnly ? readOnlyLabel : undefined,
434
450
  invalid ? invalidLabel : undefined,
435
451
  ].filter(Boolean).join(". ") || undefined;
436
- return (_jsxs(Pressable, { accessibilityHint: resolvedHint, accessibilityLabel: label, accessibilityRole: kind,
452
+ const target = (_jsxs(Pressable, { accessibilityHint: resolvedHint, accessibilityLabel: label, accessibilityRole: kind,
437
453
  // See mixedCheckboxState: a checkbox leaving "mixed" kept the suffix on Android.
438
454
  accessibilityState: kind === "checkbox" ? mixedCheckboxState(checked, { disabled: disabled || readOnly }) : { checked, disabled: disabled || readOnly }, ...webOnly(webChoiceProps({
439
455
  kind,
@@ -442,44 +458,52 @@ function ChoiceRow({ kind, label, description, checked, disabled, readOnly, requ
442
458
  readOnly,
443
459
  onActivate,
444
460
  ...(webTabIndex === undefined ? {} : { tabIndex: webTabIndex }),
445
- })), disabled: disabled || readOnly, hitSlop: plate.useSizePadding ? 0 : metrics.hitSlop, onPress: () => {
461
+ })), disabled: disabled || readOnly, hitSlop: chips ? chipMetrics.hitSlop : plate.useSizePadding ? 0 : metrics.hitSlop, onPress: () => {
446
462
  if (!readOnly)
447
463
  onActivate();
448
464
  }, style: ({ pressed }) => [
449
465
  {
450
466
  alignItems: "center",
451
- alignSelf: "stretch",
452
- backgroundColor: resolveColorReference(plateBackground, theme.palette),
453
- borderColor: plateBorder
454
- ? resolveColorReference(plateBorder, theme.palette)
455
- : "transparent",
456
- borderRadius: theme.tokens.radius[plate.radius],
457
- borderWidth: plate.borderWidth,
467
+ alignSelf: chips ? "flex-start" : "stretch",
468
+ // Grid cells stretch to the tallest sibling; the visible card must fill that cell too.
469
+ flexGrow: presentation === "card" ? 1 : undefined,
470
+ ...frameStyle,
458
471
  direction: theme.environment.direction,
459
472
  flexDirection: "row",
460
- gap: metrics.gap,
461
- minHeight: metrics.rowMinHeight,
473
+ gap: chips ? chipMetrics.gap : metrics.gap,
474
+ minHeight: rowMinHeight,
462
475
  opacity: disabled
463
476
  ? selectionControlRecipe.states.disabledOpacity
464
477
  : pressed && !readOnly
465
478
  ? 0.86
466
479
  : 1,
467
- paddingHorizontal: plate.useSizePadding ? metrics.paddingHorizontal : 0,
468
- paddingVertical: plate.useSizePadding ? metrics.paddingVertical : 0,
480
+ paddingHorizontal: chips ? chipMetrics.paddingHorizontal : plate.useSizePadding ? metrics.paddingHorizontal : 0,
481
+ paddingVertical: chips ? 0 : plate.useSizePadding ? metrics.paddingVertical : 0,
469
482
  },
470
- layoutStyle,
471
- ], children: [indicator === "default" ? (_jsx(SelectionMark, { kind: kind, checked: checked, size: size, invalid: invalid ?? false, children: renderIndicator?.(appearance) })) : null, resolvedLeading ? (_jsx(View, { accessibilityElementsHidden: true, accessible: false, importantForAccessibility: "no-hide-descendants", children: resolvedLeading })) : null, _jsxs(View, { style: [{ flexGrow: 1, flexShrink: 1, gap: spacing.xxs, minWidth: 0 }], children: [_jsx(Text, { fontRole: "ui", style: [
483
+ action ? { flex: 1, minWidth: 0, backgroundColor: "transparent", borderWidth: 0, borderRadius: 0, opacity: pressed && !readOnly && !disabled ? 0.86 : 1 } : layoutStyle,
484
+ ], children: [chips && indicator === "default" && renderIndicator ? (_jsx(View, { accessible: false, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", children: renderIndicator(appearance) })) : !chips && indicator === "default" ? (_jsx(SelectionMark, { kind: kind, checked: checked, size: size, invalid: invalid ?? false, children: renderIndicator?.(appearance) })) : null, resolvedLeading ? (_jsx(View, { accessibilityElementsHidden: true, accessible: false, importantForAccessibility: "no-hide-descendants", children: resolvedLeading })) : null, _jsxs(View, { style: [{ flexGrow: chips ? 0 : 1, flexShrink: 1, gap: spacing.xxs, minWidth: 0 }], children: [labelContent != null && typeof labelContent !== "string" && typeof labelContent !== "number" ? labelContent : _jsx(Text, { fontRole: "ui", style: [
472
485
  {
473
- color: resolveColorReference(selectionControlRecipe.label.color, theme.palette),
486
+ color: resolveColorReference(chips ? chipState.content : selectionControlRecipe.label.color, theme.palette),
474
487
  fontWeight: selected
475
488
  ? selectionControlRecipe.label.checkedFontWeight
476
489
  : selectionControlRecipe.label.fontWeight,
477
490
  },
478
- ], variant: metrics.labelVariant, children: label }), description ? (_jsx(Text, { style: [
491
+ ], variant: chips ? chipMetrics.textVariant : metrics.labelVariant, children: labelContent ?? label }), description ? (_jsx(Text, { style: [
479
492
  {
480
493
  color: resolveColorReference(selectionControlRecipe.description.color, theme.palette),
481
494
  },
482
495
  ], variant: metrics.descriptionVariant, children: description })) : null] })] }));
496
+ if (!action)
497
+ return target;
498
+ // The selection target owns its accessible label; the action is a separate sibling
499
+ // so rename/manage never changes the selected option or nests a button in a radio.
500
+ return _jsxs(View, { style: [{
501
+ alignItems: "center", alignSelf: chips ? "flex-start" : "stretch", flexDirection: "row", direction: theme.environment.direction,
502
+ minHeight: rowMinHeight,
503
+ flexGrow: presentation === "card" ? 1 : undefined,
504
+ ...frameStyle,
505
+ opacity: disabled ? selectionControlRecipe.states.disabledOpacity : 1,
506
+ }, layoutStyle], children: [target, _jsx(View, { style: { paddingEnd: spacing.xs }, children: _jsx(Button, { tone: "ghost", size: "small", disabled: disabled || action.disabled === true, accessibilityLabel: action.accessibilityLabel, onPress: action.onAction, children: action.label }) })] });
483
507
  }
484
508
  export function Checkbox({ label, checked, defaultChecked = false, onCheckedChange, disabled = false, readOnly = false, required = false, invalid = false, description, readOnlyLabel, requiredLabel, invalidLabel, leading, renderLeading, renderIndicator, accessibilityHint, ...visual }) {
485
509
  const [selected, setSelected] = useControllableState({
@@ -502,7 +526,7 @@ export function Radio({ label, checked, defaultChecked = false, onCheckedChange,
502
526
  });
503
527
  return (_jsx(ChoiceRow, { ...visual, accessibilityHint: accessibilityHint, checked: selected, description: description, disabled: disabled, indicator: visual.indicator ?? "default", invalid: invalid, invalidLabel: invalidLabel, kind: "radio", label: label, leading: leading, onActivate: () => setSelected(true), readOnly: readOnly, readOnlyLabel: readOnlyLabel, renderIndicator: renderIndicator, renderLeading: renderLeading, required: required, requiredLabel: requiredLabel }));
504
528
  }
505
- function ChoiceGroupFrame({ label, accessibilityLabel, required, requiredLabel, readOnly, readOnlyLabel, disabled, description, error, role, orientation, presentation, layoutStyle, children, }) {
529
+ function ChoiceGroupFrame({ label, accessibilityLabel, required, requiredLabel, readOnly, readOnlyLabel, disabled, description, error, role, orientation, presentation, grid, layoutStyle, children, }) {
506
530
  const theme = useHjmNativeTheme();
507
531
  const id = useId().replaceAll(":", "");
508
532
  const labelId = `${id}-label`;
@@ -515,16 +539,15 @@ function ChoiceGroupFrame({ label, accessibilityLabel, required, requiredLabel,
515
539
  const gap = selectionGroupRecipe.orientations[orientation].gap[presentation];
516
540
  useFieldErrorAnnouncement(error);
517
541
  return (_jsxs(View, { accessibilityHint: [error ?? description, readOnly ? readOnlyLabel : undefined]
518
- .filter(Boolean).join(". ") || undefined, accessibilityLabel: announcedName, accessibilityLabelledBy: label ? labelId : undefined, accessibilityRole: role, accessibilityState: { disabled: disabled || readOnly }, accessibilityValue: error ? { text: error } : undefined, style: [{ direction: theme.environment.direction, gap: selectionGroupRecipe.supportGap }, layoutStyle], children: [label ? (_jsxs(Text, { nativeID: labelId, tone: "primary", variant: selectionGroupRecipe.label.textVariant, children: [label, required ? requiredLabel ? ` (${requiredLabel})` : " *" : ""] })) : null, description && !error ? (_jsx(Text, { tone: "muted", variant: selectionGroupRecipe.description.textVariant, children: description })) : null, _jsx(View, { style: {
542
+ .filter(Boolean).join(". ") || undefined, accessibilityLabel: announcedName, accessibilityLabelledBy: label ? labelId : undefined, accessibilityRole: role, accessibilityState: { disabled: disabled || readOnly }, accessibilityValue: error ? { text: error } : undefined, style: [{ direction: theme.environment.direction, gap: selectionGroupRecipe.supportGap }, layoutStyle], children: [label ? (_jsxs(Text, { nativeID: labelId, tone: "primary", variant: selectionGroupRecipe.label.textVariant, children: [label, required ? requiredLabel ? ` (${requiredLabel})` : " *" : ""] })) : null, description && !error ? (_jsx(Text, { tone: "muted", variant: selectionGroupRecipe.description.textVariant, children: description })) : null, grid ? _jsx(Grid, { ...grid, children: children }) : (_jsx(View, { style: {
519
543
  direction: theme.environment.direction,
520
- flexDirection: orientation === "horizontal" && theme.environment.textScale < 1.6
521
- ? "row"
522
- : "column",
544
+ flexDirection: presentation === "chips" || (orientation === "horizontal" && theme.environment.textScale < 1.6) ? "row" : "column",
545
+ flexWrap: presentation === "chips" ? "wrap" : undefined,
523
546
  gap,
524
- }, children: children }), error ? (_jsx(Text, { accessibilityLiveRegion: "assertive", accessibilityRole: "alert", tone: "danger", variant: selectionGroupRecipe.error.textVariant, children: error })) : null] }));
547
+ }, children: children })), error ? (_jsx(Text, { accessibilityLiveRegion: "assertive", accessibilityRole: "alert", tone: "danger", variant: selectionGroupRecipe.error.textVariant, children: error })) : null] }));
525
548
  }
526
549
  export function RadioGroup(props) {
527
- const { label, accessibilityLabel, items, value, defaultValue, onValueChange, required = false, disabled = false, readOnly = false, invalid = false, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation = selectionGroupBehaviorDefaults.orientation, presentation = selectionGroupRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", renderLeading, renderIndicator, layoutStyle, ...slotStyles } = props;
550
+ const { label, accessibilityLabel, items, value, defaultValue, onValueChange, required = false, disabled = false, readOnly = false, invalid = false, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation = selectionGroupBehaviorDefaults.orientation, grid, presentation = selectionGroupRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", renderLeading, renderLabel, renderIndicator, layoutStyle, ...slotStyles } = props;
528
551
  // Removed aliases must not silently change the selected collection in JavaScript callers.
529
552
  if ("options" in props || !Array.isArray(items))
530
553
  throw new TypeError("RadioGroup requires items; options was removed");
@@ -556,14 +579,14 @@ export function RadioGroup(props) {
556
579
  setSelected(selected);
557
580
  }, [selected, setSelected, storedValue, value]);
558
581
  const hasError = invalid || error !== undefined;
559
- return (_jsx(ChoiceGroupFrame, { accessibilityLabel: accessibilityLabel, description: description, disabled: disabled, error: error, label: label, orientation: orientation, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, required: required, requiredLabel: requiredLabel, role: "radiogroup", layoutStyle: layoutStyle, children: resolvedItems.map((item) => {
582
+ return (_jsx(ChoiceGroupFrame, { accessibilityLabel: accessibilityLabel, description: description, disabled: disabled, error: error, label: label, orientation: orientation, grid: grid, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, required: required, requiredLabel: requiredLabel, role: "radiogroup", layoutStyle: layoutStyle, children: resolvedItems.map((item) => {
560
583
  const optionDisabled = disabled || item.disabled === true;
561
584
  const optionSelected = selected === item.value;
562
- return (_createElement(ChoiceRow, { ...slotStyles, key: item.value, accessibilityHint: item.accessibilityHint, checked: optionSelected, description: item.description, disabled: optionDisabled, indicator: indicator, invalid: hasError, invalidLabel: invalidLabel ?? error, kind: "radio", label: item.label, leading: item.leading, onActivate: () => setSelected(item.value), webTabIndex: !optionDisabled && !readOnly && item.value === webTabStop ? 0 : -1, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, renderIndicator: renderIndicator ? (props) => renderIndicator(item, props) : undefined, renderLeading: renderLeading ? (props) => renderLeading(item, props) : undefined, required: required, requiredLabel: requiredLabel, size: size }));
585
+ return (_createElement(ChoiceRow, { ...slotStyles, key: item.value, accessibilityHint: item.accessibilityHint, checked: optionSelected, description: item.description, disabled: optionDisabled, indicator: indicator, invalid: hasError, invalidLabel: invalidLabel ?? error, kind: "radio", label: item.label, labelContent: renderLabel?.(item), ...(item.action ? { action: item.action } : {}), leading: item.leading, onActivate: () => setSelected(item.value), webTabIndex: !optionDisabled && !readOnly && item.value === webTabStop ? 0 : -1, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, renderIndicator: renderIndicator ? (props) => renderIndicator(item, props) : undefined, renderLeading: renderLeading ? (props) => renderLeading(item, props) : undefined, required: required, requiredLabel: requiredLabel, size: size }));
563
586
  }) }));
564
587
  }
565
588
  /** Validated controlled/uncontrolled checkbox collection using immutable Sets. */
566
- export function CheckboxGroup({ label, accessibilityLabel, items, value, defaultValue = new Set(), onValueChange, required = false, disabled = false, readOnly = false, invalid = false, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation = selectionGroupBehaviorDefaults.orientation, presentation = selectionGroupRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", renderLeading, renderIndicator, layoutStyle, ...slotStyles }) {
589
+ export function CheckboxGroup({ label, accessibilityLabel, items, value, defaultValue = new Set(), onValueChange, required = false, disabled = false, readOnly = false, invalid = false, description, error, requiredLabel, readOnlyLabel, invalidLabel, orientation = selectionGroupBehaviorDefaults.orientation, grid, presentation = selectionGroupRecipe.defaults.presentation, size = selectionControlRecipe.defaults.size, indicator = "default", renderLeading, renderIndicator, layoutStyle, ...slotStyles }) {
567
590
  validateSelectionItems(items);
568
591
  if (value !== undefined)
569
592
  validateCheckboxSelection(items, value);
@@ -578,7 +601,7 @@ export function CheckboxGroup({ label, accessibilityLabel, items, value, default
578
601
  setSelected(selected);
579
602
  }, [selected, setSelected, storedValue, value]);
580
603
  const hasError = invalid || error !== undefined;
581
- return (_jsx(ChoiceGroupFrame, { accessibilityLabel: accessibilityLabel, description: description, disabled: disabled, error: error, label: label, orientation: orientation, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, required: required, requiredLabel: requiredLabel, layoutStyle: layoutStyle, children: items.map((item) => {
604
+ return (_jsx(ChoiceGroupFrame, { accessibilityLabel: accessibilityLabel, description: description, disabled: disabled, error: error, label: label, orientation: orientation, grid: grid, presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, required: required, requiredLabel: requiredLabel, layoutStyle: layoutStyle, children: items.map((item) => {
582
605
  const optionDisabled = disabled || item.disabled === true;
583
606
  const optionSelected = selected.has(item.id);
584
607
  return (_createElement(ChoiceRow, { ...slotStyles, key: item.id, checked: optionSelected, description: item.description, disabled: optionDisabled, indicator: indicator, invalid: hasError, invalidLabel: invalidLabel ?? error, kind: "checkbox", label: item.label, onActivate: () => setSelected(toggleCheckboxSelection(items, selected, item.id)), presentation: presentation, readOnly: readOnly, readOnlyLabel: readOnlyLabel, renderIndicator: renderIndicator ? (props) => renderIndicator(item, props) : undefined, renderLeading: renderLeading ? (props) => renderLeading(item, props) : undefined, required: required, requiredLabel: requiredLabel, size: size }));
@@ -611,7 +634,8 @@ export function Switch({ label, labelVisibility = "visible", presentation = swit
611
634
  ? {}
612
635
  : { onChange: onCheckedChange }),
613
636
  });
614
- return (_jsxs(Pressable, { testID: testID, accessibilityHint: accessibilityHint ?? description, accessibilityLabel: accessibilityLabel ?? label, accessibilityRole: "switch", accessibilityState: { checked: enabled, disabled }, disabled: disabled, onPress: () => setEnabled(!enabled), style: ({ pressed }) => [
637
+ return (_jsxs(Pressable, { testID: testID, accessibilityHint: accessibilityHint ?? description, accessibilityLabel: accessibilityLabel ?? label, accessibilityRole: "switch", accessibilityState: { checked: enabled, disabled }, ...webOnly(webChoiceProps({ kind: "checkbox", checked: enabled, disabled, readOnly: false,
638
+ onActivate: () => setEnabled(!enabled) })), disabled: disabled, onPress: () => setEnabled(!enabled), style: ({ pressed }) => [
615
639
  minimumTargetStyle,
616
640
  {
617
641
  alignItems: stacked ? "flex-start" : "center",
@@ -632,7 +656,14 @@ export function Switch({ label, labelVisibility = "visible", presentation = swit
632
656
  flex: stacked || presentation === "inline" ? undefined : 1,
633
657
  gap: spacing.xxs,
634
658
  opacity: disabled ? switchRecipe.states.disabledOpacity : 1,
635
- }, children: [_jsx(Text, { fontRole: "ui", tone: "body", variant: presentation === "row" ? switchRecipe.rowLabelTextVariant : "bodyLarge", children: label }), description ? (_jsx(Text, { tone: "muted", variant: "caption", children: description })) : null] }) : null, _jsx(NativeSwitch, { ...props, accessible: false, disabled: disabled, ios_backgroundColor: trackOff, pointerEvents: "none", style: Platform.OS === "ios"
659
+ }, children: [_jsx(Text, { fontRole: "ui", tone: "body", variant: presentation === "row" ? switchRecipe.rowLabelTextVariant : "bodyLarge", children: label }), description ? (_jsx(Text, { tone: "muted", variant: "caption", children: description })) : null] }) : null, isWebRenderer ? _jsx(View, { ...props, "aria-hidden": true, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", pointerEvents: "none", style: { width: dimensions.width, height: dimensions.height, flexDirection: "row", alignItems: "center",
660
+ justifyContent: enabled ? "flex-end" : "flex-start", direction: environment.direction,
661
+ borderRadius: dimensions.height / 2, borderWidth: 1, padding: dimensions.inset - 1,
662
+ borderColor: resolveColorReference(disabled ? enabled ? switchColors.trackOnBorderDisabled : switchColors.trackOffBorderDisabled : enabled ? switchColors.trackOnBorder : switchColors.trackOffBorder, palette),
663
+ backgroundColor: enabled ? trackOn : trackOff }, children: _jsx(View, { style: { width: dimensions.thumb, height: dimensions.thumb, borderRadius: dimensions.thumb / 2,
664
+ borderWidth: enabled && !disabled ? 0 : 1,
665
+ borderColor: resolveColorReference(disabled ? switchColors.thumbDisabledBorder : switchColors.thumbOffBorder, palette),
666
+ backgroundColor: resolveColorReference(disabled ? switchColors.thumbDisabled : enabled ? switchColors.thumbOn : switchColors.thumbOff, palette) } }) }) : _jsx(NativeSwitch, { ...props, accessible: false, disabled: disabled, ios_backgroundColor: trackOff, pointerEvents: "none", style: Platform.OS === "ios"
636
667
  ? { alignSelf: stacked ? "flex-start" : "center" }
637
668
  : { height: dimensions.height, width: dimensions.width }, thumbColor: thumb, trackColor: { false: trackOff, true: trackOn }, value: enabled })] }));
638
669
  }
@@ -664,7 +695,7 @@ function NativeSelectionHighlight({ rect, selection, reducedMotion, pills, disab
664
695
  return _jsx(Animated.View, { pointerEvents: "none", accessible: false, accessibilityElementsHidden: true, importantForAccessibility: "no-hide-descendants", style: { position: "absolute", left: positions.x, top: positions.y, width: positions.width, height: positions.height, borderRadius: pills ? segmentedControlRecipe.pills.radius : theme.tokens.radius[segmentedControlRecipe.item.radius], backgroundColor: resolveColorReference(pills ? segmentedControlRecipe.pills.selectedBackground : segmentedControlRecipe.item.selectedBackground, theme.palette), borderColor: resolveColorReference(segmentedControlRecipe.item.selectedBorder, theme.palette), borderWidth: pills ? 0 : segmentedControlRecipe.item.selectedBorderWidth, opacity: disabled ? segmentedControlRecipe.item.disabledOpacity : 1 } });
665
696
  }
666
697
  export function SegmentedControl(props) {
667
- const { label, items, value, defaultValue, onValueChange, size = segmentedControlRecipe.defaults.size, presentation = "connected", textEmphasis = "strong", selectionMotion: suppliedSelectionMotion, disabled = false, layoutStyle, } = props;
698
+ const { label, items, value, defaultValue, onValueChange, size = segmentedControlRecipe.defaults.size, presentation = "connected", textEmphasis = "strong", selectionMotion: suppliedSelectionMotion, disabled = false, layoutStyle, overflow = "wrap", actions, testID, } = props;
668
699
  // Removed aliases must not silently change the selected collection in JavaScript callers.
669
700
  if ("options" in props || !Array.isArray(items))
670
701
  throw new TypeError("SegmentedControl requires items; options was removed");
@@ -724,8 +755,22 @@ export function SegmentedControl(props) {
724
755
  // Connected rows follow Web .hjm-segmented__items: items never shrink below their label (min-inline-size:
725
756
  // max-content), spare width is shared, and an over-wide row scrolls instead of breaking labels mid-word
726
757
  // (2026-10-17 review N6). Labels are not truncated; the horizontal scroll content leaves them unconstrained.
727
- const scrollRow = !stacked && !pills && !textOnly;
758
+ const scrollRow = overflow === "scroll" || (!stacked && !pills && !textOnly);
728
759
  const [trackWidth, setTrackWidth] = useState(0);
760
+ const railRef = useRef(null);
761
+ const railOffset = useRef(0);
762
+ const reveal = (rect) => {
763
+ if (!scrollRow || !rect || trackWidth <= 0)
764
+ return;
765
+ const offset = railOffset.current;
766
+ const next = rect.x < offset ? Math.max(0, rect.x) : rect.x + rect.width > offset + trackWidth
767
+ ? Math.max(0, rect.x + rect.width - trackWidth) : offset;
768
+ if (next !== offset) {
769
+ railOffset.current = next;
770
+ railRef.current?.scrollTo({ x: next, animated: false });
771
+ }
772
+ };
773
+ useEffect(() => { reveal(selectedRect); }, [selectedRect, trackWidth, scrollRow]);
729
774
  const borderWidth = pills || textOnly ? 0 : segmentedControlRecipe.container.borderWidth;
730
775
  const containerStyle = {
731
776
  backgroundColor: pills || textOnly ? "transparent" : resolveColorReference(segmentedControlRecipe.container.background, theme.palette),
@@ -736,7 +781,7 @@ export function SegmentedControl(props) {
736
781
  };
737
782
  const rowStyle = {
738
783
  flexDirection: stacked ? "column" : "row",
739
- flexWrap: pills ? "wrap" : "nowrap",
784
+ flexWrap: pills && !scrollRow ? "wrap" : "nowrap",
740
785
  gap: textOnly ? segmentedControlRecipe.text.gap : pills ? segmentedControlRecipe.pills.gap : segmentedControlRecipe.container.gap,
741
786
  padding: pills || textOnly ? 0 : segmentedControlRecipe.container.padding,
742
787
  };
@@ -752,7 +797,7 @@ export function SegmentedControl(props) {
752
797
  color: textOnly ? (isSelected ? theme.colors.text : theme.colors.textMuted) : contentColor,
753
798
  size: glyph.sm,
754
799
  });
755
- return (_jsxs(Pressable, { onLayout: selectionMotion === "slide" ? event => {
800
+ return (_jsxs(Pressable, { onFocus: () => reveal(itemRects[item.value]), onLayout: selectionMotion === "slide" || scrollRow ? event => {
756
801
  const { x, y, width, height } = event.nativeEvent.layout;
757
802
  if (width <= 0 || height <= 0)
758
803
  return;
@@ -760,7 +805,9 @@ export function SegmentedControl(props) {
760
805
  const old = previous[item.value];
761
806
  return old && old.x === x && old.y === y && old.width === width && old.height === height ? previous : { ...previous, [item.value]: { x, y, width, height } };
762
807
  });
763
- } : undefined, accessibilityLabel: item.label, accessibilityRole: "radio", accessibilityState: { checked: isSelected, disabled: optionDisabled }, disabled: optionDisabled, hitSlop: pills || textOnly ? undefined : { top: itemHitSlop, bottom: itemHitSlop }, onPress: () => setSelected(item.value), style: ({ pressed }) => [
808
+ } : undefined, accessibilityLabel: item.accessibilityLabel ?? item.label, accessibilityRole: "radio", accessibilityState: { checked: isSelected, disabled: optionDisabled }, ...webOnly(webChoiceProps({ kind: "radio", checked: isSelected, disabled: optionDisabled,
809
+ readOnly: false, tabIndex: isSelected && !optionDisabled ? 0 : -1,
810
+ onActivate: () => setSelected(item.value) })), disabled: optionDisabled, hitSlop: pills || textOnly ? undefined : { top: itemHitSlop, bottom: itemHitSlop }, onPress: () => setSelected(item.value), style: ({ pressed }) => [
764
811
  {
765
812
  alignItems: "center",
766
813
  backgroundColor: !textOnly && !movingHighlight && !pills && isSelected
@@ -774,20 +821,20 @@ export function SegmentedControl(props) {
774
821
  ? segmentedControlRecipe.item.selectedBorderWidth
775
822
  : 0,
776
823
  flexBasis: scrollRow ? "auto" : undefined,
777
- flexGrow: scrollRow ? 1 : undefined,
824
+ flexGrow: scrollRow && !pills && !textOnly ? 1 : undefined,
778
825
  flexShrink: scrollRow ? 0 : undefined,
779
826
  maxWidth: pills ? "100%" : undefined,
780
827
  // Leading artwork and its label share a row; column layout squeezed theme options.
781
828
  flexDirection: textOnly ? "column" : "row",
782
829
  gap: segmentedControlRecipe.item.gap,
783
830
  justifyContent: "center",
784
- minHeight: pills ? segmentedControlRecipe.pills.minHeight : textOnly ? segmentedControlRecipe.text.minHeight : itemMinHeight,
831
+ minHeight: pills ? Math.max(segmentedControlRecipe.pills.minHeight, outerHeight + 2 * segmentedControlRecipe.pills.inset) : textOnly ? segmentedControlRecipe.text.minHeight : itemMinHeight,
785
832
  opacity: optionDisabled
786
833
  ? segmentedControlRecipe.item.disabledOpacity
787
834
  : pressed
788
835
  ? segmentedControlRecipe.item.pressedOpacity
789
836
  : 1,
790
- paddingHorizontal: textOnly ? 0 : pills ? spacing.md : sizeContract.paddingHorizontal,
837
+ paddingHorizontal: textOnly ? 0 : pills ? chipRecipe.sizes[size].paddingHorizontal : sizeContract.paddingHorizontal,
791
838
  paddingVertical: pills ? segmentedControlRecipe.pills.inset : undefined,
792
839
  width: stacked ? "100%" : undefined,
793
840
  },
@@ -796,11 +843,15 @@ export function SegmentedControl(props) {
796
843
  fontWeight: textOnly ? segmentedControlRecipe.text[textEmphasis][isSelected ? "selected" : "idle"] : isSelected
797
844
  ? segmentedControlRecipe.item.selectedFontWeight
798
845
  : segmentedControlRecipe.item.fontWeight,
799
- }, tone: isSelected ? "brand" : "muted", variant: textOnly ? "bodyLarge" : sizeContract.textVariant, children: item.label }), textOnly ? _jsx(View, { accessible: false, style: { width: segmentedControlRecipe.text.indicatorWidth, height: segmentedControlRecipe.text.indicatorHeight, borderRadius: segmentedControlRecipe.text.indicatorRadius, backgroundColor: isSelected ? theme.colors.contentBrand : "transparent" } }) : null] }, item.value));
846
+ }, tone: isSelected ? "brand" : "muted", variant: textOnly ? "bodyLarge" : pills ? chipRecipe.sizes[size].textVariant : sizeContract.textVariant, children: item.label }), textOnly ? _jsx(View, { accessible: false, style: { width: segmentedControlRecipe.text.indicatorWidth, height: segmentedControlRecipe.text.indicatorHeight, borderRadius: segmentedControlRecipe.text.indicatorRadius, backgroundColor: isSelected ? theme.colors.contentBrand : "transparent" } }) : null] }, item.value));
800
847
  })] }));
801
848
  // The scroller clips its content, so it reaches `outerSlop` past the 36 track on each block side (negative
802
849
  // margin, no layout growth) and the options' vertical slop can complete the 44 target like Chip's hitSlop.
803
- return scrollRow ? (_jsx(View, { accessibilityLabel: label, accessibilityRole: "radiogroup", style: [{ flexGrow: 0 }, layoutStyle], children: _jsx(ScrollView, { horizontal: true, showsHorizontalScrollIndicator: false, onLayout: event => setTrackWidth(event.nativeEvent.layout.width), style: { flexGrow: 0, marginVertical: -outerSlop }, contentContainerStyle: { minWidth: trackWidth, paddingVertical: outerSlop }, children: _jsx(View, { style: [containerStyle, rowStyle, { flexGrow: 1 }], children: content }) }) })) : (_jsx(View, { accessibilityLabel: label, accessibilityRole: "radiogroup", style: [containerStyle, rowStyle, layoutStyle], children: content }));
850
+ // An explicit flexGrow:0 overrides Yoga's flex:1 shorthand. Apply it only without actions,
851
+ // otherwise the radio rail collapses to zero while its fixed actions remain visible.
852
+ const group = scrollRow ? (_jsx(View, { accessibilityLabel: label, accessibilityRole: "radiogroup", testID: actions == null ? testID : undefined, style: [actions == null ? { flexGrow: 0 } : { flex: 1, minWidth: 0 }, actions == null ? layoutStyle : undefined], children: _jsx(ScrollView, { ref: railRef, horizontal: true, keyboardShouldPersistTaps: "handled", onScroll: event => { railOffset.current = event.nativeEvent.contentOffset.x; }, scrollEventThrottle: 16, showsHorizontalScrollIndicator: false, onLayout: event => setTrackWidth(event.nativeEvent.layout.width), style: { direction: "ltr", flexGrow: 0, marginVertical: pills || textOnly ? 0 : -outerSlop }, contentContainerStyle: { minWidth: pills || textOnly ? undefined : trackWidth, paddingVertical: pills || textOnly ? 0 : outerSlop }, children: _jsx(View, { style: [containerStyle, rowStyle, { flexGrow: 1 }], children: content }) }) })) : (_jsx(View, { accessibilityLabel: label, accessibilityRole: "radiogroup", testID: actions == null ? testID : undefined, style: [containerStyle, rowStyle, actions == null ? layoutStyle : { flex: 1, minWidth: 0 }], children: content }));
853
+ // Actions are siblings, not radio options, and stay visible while the filter row scrolls (Spint spot rail).
854
+ return actions == null ? group : _jsxs(View, { testID: testID, style: [{ flexDirection: "row", direction: environment.direction, alignItems: "center", gap: spacing.xs }, layoutStyle], children: [group, actions] });
804
855
  }
805
856
  /** Action/filter chip with role-specific, controlled selection semantics. */
806
857
  /** Forwards the host View ref so a chip can be a focus-return target (2026-10-16, DiscoveryGallery). */