@payfit/unity-components 0.0.0-alpha.6 → 0.0.0-alpha.7

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 (273) hide show
  1. package/dist/cjs/components/anchor/Anchor.d.ts +1 -1
  2. package/dist/cjs/components/app-layout/AppLayout.d.ts +6 -1
  3. package/dist/cjs/components/app-layout/AppLayout.js +1 -1
  4. package/dist/cjs/components/app-menu/AppMenu.d.ts +9 -0
  5. package/dist/cjs/components/app-menu/AppMenu.js +1 -0
  6. package/dist/cjs/components/app-menu/parts/AppMenu.context.d.ts +9 -0
  7. package/dist/cjs/components/app-menu/parts/AppMenu.context.js +1 -0
  8. package/dist/cjs/components/app-menu/parts/AppMenuFooter.d.ts +31 -0
  9. package/dist/cjs/components/app-menu/parts/AppMenuFooter.js +1 -0
  10. package/dist/cjs/components/app-menu/parts/AppMenuHeader.d.ts +9 -0
  11. package/dist/cjs/components/app-menu/parts/AppMenuHeader.js +1 -0
  12. package/dist/cjs/components/app-menu/parts/AppMenuNavContent.d.ts +5 -0
  13. package/dist/cjs/components/app-menu/parts/AppMenuNavContent.js +1 -0
  14. package/dist/cjs/components/avatar/Avatar.context.d.ts +1 -1
  15. package/dist/cjs/components/avatar/parts/AvatarFallback.d.ts +1 -1
  16. package/dist/cjs/components/avatar/parts/AvatarFallback.js +1 -1
  17. package/dist/cjs/components/avatar/parts/AvatarPair.d.ts +20 -0
  18. package/dist/cjs/components/avatar/utils.d.ts +1 -0
  19. package/dist/cjs/components/avatar/utils.js +1 -0
  20. package/dist/cjs/components/breadcrumbs/Breadcrumbs.context.d.ts +1 -1
  21. package/dist/cjs/components/button/Button.d.ts +2 -1
  22. package/dist/cjs/components/checkbox/Checkbox.d.ts +225 -0
  23. package/dist/cjs/components/checkbox/Checkbox.js +1 -0
  24. package/dist/cjs/components/checkbox/parts/CheckboxIndicator.d.ts +13 -0
  25. package/dist/cjs/components/checkbox/parts/CheckboxIndicator.js +1 -0
  26. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +74 -0
  27. package/dist/cjs/components/checkbox-field/CheckboxField.js +1 -0
  28. package/dist/cjs/components/checkbox-group/CheckboxGroup.d.ts +65 -0
  29. package/dist/cjs/components/checkbox-group/CheckboxGroup.js +1 -0
  30. package/dist/cjs/components/checkbox-group-field/CheckboxGroupField.d.ts +79 -0
  31. package/dist/cjs/components/checkbox-group-field/CheckboxGroupField.js +1 -0
  32. package/dist/cjs/components/date-picker/DatePicker.d.ts +67 -0
  33. package/dist/cjs/components/date-picker/DatePicker.js +1 -0
  34. package/dist/cjs/components/date-picker/hooks/useMonthsList.d.ts +4 -0
  35. package/dist/cjs/components/date-picker/hooks/useMonthsList.js +1 -0
  36. package/dist/cjs/components/date-picker/hooks/useYearsList.d.ts +10 -0
  37. package/dist/cjs/components/date-picker/hooks/useYearsList.js +1 -0
  38. package/dist/cjs/components/date-picker/parts/DateCalendar.d.ts +9 -0
  39. package/dist/cjs/components/date-picker/parts/DateCalendar.js +1 -0
  40. package/dist/cjs/components/date-picker/parts/DateInput.d.ts +155 -0
  41. package/dist/cjs/components/date-picker/parts/DateInput.js +1 -0
  42. package/dist/cjs/components/date-picker/parts/DateSegmentSelect.d.ts +15 -0
  43. package/dist/cjs/components/date-picker/parts/DateSegmentSelect.js +1 -0
  44. package/dist/cjs/components/date-picker/utils.d.ts +12 -0
  45. package/dist/cjs/components/date-picker-field/DatePickerField.d.ts +83 -0
  46. package/dist/cjs/components/date-picker-field/DatePickerField.js +1 -0
  47. package/dist/cjs/components/dialog/Dialog.d.ts +1 -1
  48. package/dist/cjs/components/dialog/parts/DialogActions/DialogButton.d.ts +1 -1
  49. package/dist/cjs/components/dialog/parts/DialogActions.d.ts +1 -1
  50. package/dist/cjs/components/dialog/parts/DialogTitle.d.ts +1 -1
  51. package/dist/cjs/components/form/Form.context.d.ts +1 -1
  52. package/dist/cjs/components/form/Form.context.js +1 -1
  53. package/dist/cjs/components/form/Form.js +1 -1
  54. package/dist/cjs/components/form-field/FormField.context.d.ts +32 -14
  55. package/dist/cjs/components/form-field/FormField.context.js +1 -0
  56. package/dist/cjs/components/form-field/FormField.d.ts +40 -16
  57. package/dist/cjs/components/form-field/FormField.js +1 -0
  58. package/dist/cjs/components/form-field/parts/FormContextualLink.js +1 -0
  59. package/dist/cjs/components/form-field/parts/FormControl.d.ts +7 -0
  60. package/dist/cjs/components/form-field/parts/FormControl.js +1 -0
  61. package/dist/cjs/components/form-field/parts/FormFeedbackText.js +1 -0
  62. package/dist/cjs/components/form-field/parts/FormHelperText.d.ts +1 -1
  63. package/dist/cjs/components/form-field/parts/FormHelperText.js +1 -0
  64. package/dist/cjs/components/form-field/parts/FormLabel.d.ts +3 -3
  65. package/dist/cjs/components/form-field/parts/FormLabel.js +1 -0
  66. package/dist/cjs/components/form-field/utils/isFieldRequired.d.ts +8 -0
  67. package/dist/cjs/components/form-field/utils/isFieldRequired.js +1 -0
  68. package/dist/cjs/components/full-page-loader/FullPageLoader.d.ts +13 -0
  69. package/dist/cjs/components/full-page-loader/FullPageLoader.js +1 -0
  70. package/dist/cjs/components/icon/Icon.d.ts +1 -1
  71. package/dist/cjs/components/icon-button/CircularIconButton.d.ts +1 -1
  72. package/dist/cjs/components/icon-button/IconButton.d.ts +1 -1
  73. package/dist/cjs/components/index.d.ts +4 -0
  74. package/dist/cjs/components/input/Input.d.ts +48 -0
  75. package/dist/cjs/components/input/Input.js +1 -0
  76. package/dist/cjs/components/label/Label.d.ts +17 -0
  77. package/dist/cjs/components/label/Label.js +1 -0
  78. package/dist/cjs/components/link/Link.d.ts +10 -0
  79. package/dist/cjs/components/link/Link.js +1 -1
  80. package/dist/cjs/components/menu/Menu.d.ts +1 -1
  81. package/dist/cjs/components/menu/parts/MenuContent.d.ts +1 -1
  82. package/dist/cjs/components/menu/parts/MenuHeader.d.ts +1 -1
  83. package/dist/cjs/components/menu/parts/MenuItem.d.ts +2 -2
  84. package/dist/cjs/components/menu/parts/MenuSeparator.d.ts +1 -1
  85. package/dist/cjs/components/menu/parts/MenuTrigger.d.ts +1 -1
  86. package/dist/cjs/components/nav/Nav.d.ts +1 -1
  87. package/dist/cjs/components/nav/parts/NavGroup.d.ts +1 -1
  88. package/dist/cjs/components/nav/parts/NavItem.d.ts +1 -1
  89. package/dist/cjs/components/select/Select.d.ts +52 -0
  90. package/dist/cjs/components/select/Select.js +1 -0
  91. package/dist/cjs/components/select/parts/SearchInput.d.ts +2 -0
  92. package/dist/cjs/components/select/parts/SearchInput.js +1 -0
  93. package/dist/cjs/components/select/parts/SelectButton.d.ts +8 -0
  94. package/dist/cjs/components/select/parts/SelectButton.js +1 -0
  95. package/dist/cjs/components/select/parts/SelectOption.context.d.ts +8 -0
  96. package/dist/cjs/components/select/parts/SelectOption.context.js +1 -0
  97. package/dist/cjs/components/select/parts/SelectOption.d.ts +6 -0
  98. package/dist/cjs/components/select/parts/SelectOption.js +1 -0
  99. package/dist/cjs/components/select/parts/SelectOptionGroup.d.ts +12 -0
  100. package/dist/cjs/components/select/parts/SelectOptionGroup.js +1 -0
  101. package/dist/cjs/components/select/parts/SelectOptionHelper.d.ts +4 -0
  102. package/dist/cjs/components/select/parts/SelectOptionHelper.js +1 -0
  103. package/dist/cjs/components/select-field/SelectField.d.ts +50 -0
  104. package/dist/cjs/components/select-field/SelectField.js +1 -0
  105. package/dist/cjs/components/spinner/Spinner.d.ts +2 -2
  106. package/dist/cjs/components/spinner/Spinner.js +1 -1
  107. package/dist/cjs/components/spinner/dynamic-content.d.ts +1 -1
  108. package/dist/cjs/components/stepper/Stepper.context.d.ts +1 -1
  109. package/dist/cjs/components/tabs/Tabs.context.d.ts +1 -1
  110. package/dist/cjs/components/tabs/parts/NavigationButton.d.ts +1 -1
  111. package/dist/cjs/components/tabs/parts/Tab.d.ts +3 -1
  112. package/dist/cjs/components/text/Text.d.ts +1 -1
  113. package/dist/cjs/components/text-area/TextArea.d.ts +220 -0
  114. package/dist/cjs/components/text-area/TextArea.js +1 -0
  115. package/dist/cjs/components/text-field/TextField.d.ts +63 -0
  116. package/dist/cjs/components/text-field/TextField.js +1 -0
  117. package/dist/cjs/components/toast/Toast.context.d.ts +1 -1
  118. package/dist/cjs/components/toast/ToastManager.d.ts +1 -1
  119. package/dist/cjs/components/toast/UnityToast.d.ts +1 -1
  120. package/dist/cjs/components/toast/parts/ToastAction.d.ts +1 -1
  121. package/dist/cjs/components/toast/parts/ToastContent.d.ts +1 -1
  122. package/dist/cjs/components/toast/parts/ToastTitle.d.ts +1 -1
  123. package/dist/cjs/components/tooltip/Tooltip.d.ts +1 -1
  124. package/dist/cjs/docs/blocks/Cards.d.ts +7 -7
  125. package/dist/cjs/hooks/use-form.d.ts +5 -5
  126. package/dist/cjs/hooks/use-form.js +1 -0
  127. package/dist/cjs/hooks/use-resizable.d.ts +13 -0
  128. package/dist/cjs/hooks/use-resizable.js +1 -0
  129. package/dist/cjs/index.d.ts +30 -0
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/cjs/providers/router/RouterProvider.d.ts +1 -1
  132. package/dist/cjs/providers/router/integrations/UnityReactRouterV5Provider.d.ts +1 -1
  133. package/dist/esm/components/anchor/Anchor.d.mts +1 -1
  134. package/dist/esm/components/app-layout/AppLayout.d.mts +6 -1
  135. package/dist/esm/components/app-layout/AppLayout.mjs +35 -23
  136. package/dist/esm/components/app-menu/AppMenu.d.mts +9 -0
  137. package/dist/esm/components/app-menu/AppMenu.mjs +14 -0
  138. package/dist/esm/components/app-menu/parts/AppMenu.context.d.mts +9 -0
  139. package/dist/esm/components/app-menu/parts/AppMenu.context.mjs +25 -0
  140. package/dist/esm/components/app-menu/parts/AppMenuFooter.d.mts +31 -0
  141. package/dist/esm/components/app-menu/parts/AppMenuFooter.mjs +224 -0
  142. package/dist/esm/components/app-menu/parts/AppMenuHeader.d.mts +9 -0
  143. package/dist/esm/components/app-menu/parts/AppMenuHeader.mjs +41 -0
  144. package/dist/esm/components/app-menu/parts/AppMenuNavContent.d.mts +5 -0
  145. package/dist/esm/components/app-menu/parts/AppMenuNavContent.mjs +23 -0
  146. package/dist/esm/components/avatar/Avatar.context.d.mts +1 -1
  147. package/dist/esm/components/avatar/parts/AvatarFallback.d.mts +1 -1
  148. package/dist/esm/components/avatar/parts/AvatarFallback.mjs +9 -8
  149. package/dist/esm/components/avatar/parts/AvatarPair.d.mts +20 -0
  150. package/dist/esm/components/avatar/utils.d.mts +1 -0
  151. package/dist/esm/components/avatar/utils.mjs +4 -0
  152. package/dist/esm/components/breadcrumbs/Breadcrumbs.context.d.mts +1 -1
  153. package/dist/esm/components/button/Button.d.mts +2 -1
  154. package/dist/esm/components/checkbox/Checkbox.d.mts +225 -0
  155. package/dist/esm/components/checkbox/Checkbox.mjs +146 -0
  156. package/dist/esm/components/checkbox/parts/CheckboxIndicator.d.mts +13 -0
  157. package/dist/esm/components/checkbox/parts/CheckboxIndicator.mjs +146 -0
  158. package/dist/esm/components/checkbox-field/CheckboxField.d.mts +74 -0
  159. package/dist/esm/components/checkbox-field/CheckboxField.mjs +61 -0
  160. package/dist/esm/components/checkbox-group/CheckboxGroup.d.mts +65 -0
  161. package/dist/esm/components/checkbox-group/CheckboxGroup.mjs +66 -0
  162. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.mts +79 -0
  163. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.mjs +54 -0
  164. package/dist/esm/components/date-picker/DatePicker.d.mts +67 -0
  165. package/dist/esm/components/date-picker/DatePicker.mjs +163 -0
  166. package/dist/esm/components/date-picker/hooks/useMonthsList.d.mts +4 -0
  167. package/dist/esm/components/date-picker/hooks/useMonthsList.mjs +26 -0
  168. package/dist/esm/components/date-picker/hooks/useYearsList.d.mts +10 -0
  169. package/dist/esm/components/date-picker/hooks/useYearsList.mjs +33 -0
  170. package/dist/esm/components/date-picker/parts/DateCalendar.d.mts +9 -0
  171. package/dist/esm/components/date-picker/parts/DateCalendar.mjs +172 -0
  172. package/dist/esm/components/date-picker/parts/DateInput.d.mts +155 -0
  173. package/dist/esm/components/date-picker/parts/DateInput.mjs +124 -0
  174. package/dist/esm/components/date-picker/parts/DateSegmentSelect.d.mts +15 -0
  175. package/dist/esm/components/date-picker/parts/DateSegmentSelect.mjs +69 -0
  176. package/dist/esm/components/date-picker/utils.d.mts +12 -0
  177. package/dist/esm/components/date-picker-field/DatePickerField.d.mts +83 -0
  178. package/dist/esm/components/date-picker-field/DatePickerField.mjs +73 -0
  179. package/dist/esm/components/dialog/Dialog.d.mts +1 -1
  180. package/dist/esm/components/dialog/parts/DialogActions/DialogButton.d.mts +1 -1
  181. package/dist/esm/components/dialog/parts/DialogActions.d.mts +1 -1
  182. package/dist/esm/components/dialog/parts/DialogTitle.d.mts +1 -1
  183. package/dist/esm/components/form/Form.context.d.mts +1 -1
  184. package/dist/esm/components/form/Form.context.mjs +21 -14
  185. package/dist/esm/components/form/Form.mjs +1 -1
  186. package/dist/esm/components/form-field/FormField.context.d.mts +32 -14
  187. package/dist/esm/components/form-field/FormField.context.mjs +81 -0
  188. package/dist/esm/components/form-field/FormField.d.mts +40 -16
  189. package/dist/esm/components/form-field/FormField.mjs +60 -0
  190. package/dist/esm/components/form-field/parts/FormContextualLink.mjs +35 -0
  191. package/dist/esm/components/form-field/parts/FormControl.d.mts +7 -0
  192. package/dist/esm/components/form-field/parts/FormControl.mjs +50 -0
  193. package/dist/esm/components/form-field/parts/FormFeedbackText.mjs +25 -0
  194. package/dist/esm/components/form-field/parts/FormHelperText.d.mts +1 -1
  195. package/dist/esm/components/form-field/parts/FormHelperText.mjs +25 -0
  196. package/dist/esm/components/form-field/parts/FormLabel.d.mts +3 -3
  197. package/dist/esm/components/form-field/parts/FormLabel.mjs +30 -0
  198. package/dist/esm/components/form-field/utils/isFieldRequired.d.mts +8 -0
  199. package/dist/esm/components/form-field/utils/isFieldRequired.mjs +23 -0
  200. package/dist/esm/components/full-page-loader/FullPageLoader.d.mts +13 -0
  201. package/dist/esm/components/full-page-loader/FullPageLoader.mjs +26 -0
  202. package/dist/esm/components/icon/Icon.d.mts +1 -1
  203. package/dist/esm/components/icon-button/CircularIconButton.d.mts +1 -1
  204. package/dist/esm/components/icon-button/IconButton.d.mts +1 -1
  205. package/dist/esm/components/index.d.mts +4 -0
  206. package/dist/esm/components/input/Input.d.mts +48 -0
  207. package/dist/esm/components/input/Input.mjs +148 -0
  208. package/dist/esm/components/label/Label.d.mts +17 -0
  209. package/dist/esm/components/label/Label.mjs +56 -0
  210. package/dist/esm/components/link/Link.d.mts +10 -0
  211. package/dist/esm/components/link/Link.mjs +26 -24
  212. package/dist/esm/components/menu/Menu.d.mts +1 -1
  213. package/dist/esm/components/menu/parts/MenuContent.d.mts +1 -1
  214. package/dist/esm/components/menu/parts/MenuHeader.d.mts +1 -1
  215. package/dist/esm/components/menu/parts/MenuItem.d.mts +2 -2
  216. package/dist/esm/components/menu/parts/MenuSeparator.d.mts +1 -1
  217. package/dist/esm/components/menu/parts/MenuTrigger.d.mts +1 -1
  218. package/dist/esm/components/nav/Nav.d.mts +1 -1
  219. package/dist/esm/components/nav/parts/NavGroup.d.mts +1 -1
  220. package/dist/esm/components/nav/parts/NavItem.d.mts +1 -1
  221. package/dist/esm/components/select/Select.d.mts +52 -0
  222. package/dist/esm/components/select/Select.mjs +63 -0
  223. package/dist/esm/components/select/parts/SearchInput.d.mts +2 -0
  224. package/dist/esm/components/select/parts/SearchInput.mjs +39 -0
  225. package/dist/esm/components/select/parts/SelectButton.d.mts +8 -0
  226. package/dist/esm/components/select/parts/SelectButton.mjs +87 -0
  227. package/dist/esm/components/select/parts/SelectOption.context.d.mts +8 -0
  228. package/dist/esm/components/select/parts/SelectOption.context.mjs +24 -0
  229. package/dist/esm/components/select/parts/SelectOption.d.mts +6 -0
  230. package/dist/esm/components/select/parts/SelectOption.mjs +63 -0
  231. package/dist/esm/components/select/parts/SelectOptionGroup.d.mts +12 -0
  232. package/dist/esm/components/select/parts/SelectOptionGroup.mjs +26 -0
  233. package/dist/esm/components/select/parts/SelectOptionHelper.d.mts +4 -0
  234. package/dist/esm/components/select/parts/SelectOptionHelper.mjs +20 -0
  235. package/dist/esm/components/select-field/SelectField.d.mts +50 -0
  236. package/dist/esm/components/select-field/SelectField.mjs +65 -0
  237. package/dist/esm/components/spinner/Spinner.d.mts +2 -2
  238. package/dist/esm/components/spinner/Spinner.mjs +34 -27
  239. package/dist/esm/components/spinner/dynamic-content.d.mts +1 -1
  240. package/dist/esm/components/stepper/Stepper.context.d.mts +1 -1
  241. package/dist/esm/components/tabs/Tabs.context.d.mts +1 -1
  242. package/dist/esm/components/tabs/parts/NavigationButton.d.mts +1 -1
  243. package/dist/esm/components/tabs/parts/Tab.d.mts +3 -1
  244. package/dist/esm/components/text/Text.d.mts +1 -1
  245. package/dist/esm/components/text-area/TextArea.d.mts +220 -0
  246. package/dist/esm/components/text-area/TextArea.mjs +163 -0
  247. package/dist/esm/components/text-field/TextField.d.mts +63 -0
  248. package/dist/esm/components/text-field/TextField.mjs +78 -0
  249. package/dist/esm/components/toast/Toast.context.d.mts +1 -1
  250. package/dist/esm/components/toast/ToastManager.d.mts +1 -1
  251. package/dist/esm/components/toast/UnityToast.d.mts +1 -1
  252. package/dist/esm/components/toast/parts/ToastAction.d.mts +1 -1
  253. package/dist/esm/components/toast/parts/ToastContent.d.mts +1 -1
  254. package/dist/esm/components/toast/parts/ToastTitle.d.mts +1 -1
  255. package/dist/esm/components/tooltip/Tooltip.d.mts +1 -1
  256. package/dist/esm/docs/blocks/Cards.d.mts +7 -7
  257. package/dist/esm/hooks/use-form.d.mts +5 -5
  258. package/dist/esm/hooks/use-form.mjs +32 -0
  259. package/dist/esm/hooks/use-resizable.d.mts +13 -0
  260. package/dist/esm/hooks/use-resizable.mjs +51 -0
  261. package/dist/esm/index.d.mts +30 -0
  262. package/dist/esm/index.mjs +175 -109
  263. package/dist/esm/providers/router/RouterProvider.d.mts +1 -1
  264. package/dist/esm/providers/router/integrations/UnityReactRouterV5Provider.d.mts +1 -1
  265. package/i18n/en-GB.json +14 -3
  266. package/i18n/es-ES.json +14 -3
  267. package/i18n/fr-FR.json +14 -3
  268. package/package.json +21 -18
  269. package/dist/cjs/components/form-field/parts/FormInput.d.ts +0 -15
  270. package/dist/cjs/components/spinner/Spinner.module.css.js +0 -1
  271. package/dist/esm/components/form-field/parts/FormInput.d.mts +0 -15
  272. package/dist/esm/components/spinner/Spinner.module.css.mjs +0 -10
  273. package/dist/style.css +0 -1
@@ -1,16 +1,12 @@
1
- import { TextFieldProps } from 'react-aria-components';
1
+ import { default as React } from 'react';
2
2
  import { Control, FieldPath, FieldValues } from 'react-hook-form';
3
- export interface FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends TextFieldProps {
3
+ export interface FormFieldProps<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>> extends React.PropsWithChildren<object> {
4
4
  /** The form control from react-hook-form */
5
5
  control: Control<TFieldValues>;
6
6
  /** The name of the field in the form */
7
7
  name: TName;
8
- /** The type of the field */
9
- type: TextFieldProps['type'];
10
8
  /** Whether the field is required */
11
9
  isRequired?: boolean;
12
- /** The variant of the required indicator */
13
- requiredVariant?: 'required' | 'optional';
14
10
  /** Whether the field is in an invalid state */
15
11
  isInvalid?: boolean;
16
12
  /** Whether the field is in a loading state */
@@ -19,19 +15,47 @@ export interface FormFieldProps<TFieldValues extends FieldValues = FieldValues,
19
15
  isDisabled?: boolean;
20
16
  /** Whether the field is read-only */
21
17
  isReadOnly?: boolean;
18
+ /** Additional class name */
19
+ className?: string;
22
20
  }
23
21
  /**
24
22
  * The `FormField` component represents a single field in a Unity form. It provides a set of features to manage the state of the field and its interactions, as well as a deep integration with its parent `Form` component.
25
- *
26
23
  * Use this component to create a field in a form with a schema-based approach. It will only work if it is a child of a [`Form` component](/?path=/docs/forms-formfield--docs).
24
+ * @param {FormFieldProps} props - component props to control the field name, and the reference to its form control
25
+ * @see {@link FormFieldProps} for all available props
26
+ * @example
27
+ * ```tsx
28
+ * import { Button, Input, FormLabel, FormControl, FormHelperText, FormFeedbackText } from '@payfit/unity-components'
29
+ * import { useUnityForm } from '@payfit/unity-components'
30
+ * import { z } from 'zod'
31
+ *
32
+ * const loginSchema = z.object({
33
+ * email: z.string().email('Invalid email address'),
34
+ * password: z.string().min(8, 'Password must be at least 8 characters'),
35
+ * })
36
+ *
37
+ * const MyForm = () => {
38
+ * const { Form, FormField } = useUnityForm(loginSchema)
27
39
  *
28
- * A `FormField` is composed of the following parts:
29
- * - `FormLabel`: The label of the field.
30
- * - `FormHelperText`: A helper text that gives additional context to the field.
31
- * - `FormFeedbackText`: An error message that appears when the field is in an invalid state.
32
- * - `FormInput`: The input element of the field.
40
+ * const submitForm = (values: z.infer<typeof loginSchema>) => {
41
+ * console.log(values)
42
+ * }
43
+ *
44
+ * return (
45
+ * <Form action={submitForm}>
46
+ * <FormField name="email">
47
+ * <FormLabel>Email</FormLabel>
48
+ * <FormHelperText>Enter your primary email address</FormHelperText>
49
+ * <FormControl>
50
+ * <Input type="email"/>
51
+ * </FormControl>
52
+ * <FormFeedbackText/>
53
+ * </FormField>
54
+ * </Form>
55
+ * )
56
+ * }
57
+ * ```
58
+ * @note Use this component directly from the `useUnityForm` hook to have type-safety based on the form schema.
33
59
  */
34
- export declare function FormField<TFieldValues extends FieldValues, TName extends FieldPath<TFieldValues>>({ children, control, type, name, isRequired: isRequiredProp, requiredVariant, isInvalid, isLoading, isDisabled: isDisabledProp, isReadOnly, }: FormFieldProps<TFieldValues, TName>): JSX.Element;
35
- export declare namespace FormField {
36
- var displayName: string;
37
- }
60
+ declare const FormField: React.ForwardRefExoticComponent<FormFieldProps<FieldValues, string> & React.RefAttributes<HTMLDivElement>>;
61
+ export { FormField };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),o=require("react"),L=require("react-hook-form"),_=require("tailwind-variants"),g=require("../../hooks/use-id.js"),P=require("../form/Form.context.js"),D=require("./FormField.context.js"),I=require("./parts/FormContextualLink.js"),M=require("./parts/FormHelperText.js"),w=require("./utils/isFieldRequired.js"),E=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},c=E(o),N=_.tv({slots:{base:"uy-flex uy-flex-col uy-gap-100"}}),m=o.forwardRef(({children:e,control:f,name:r,isInvalid:p,isLoading:F,isReadOnly:x,className:q,isRequired:h,isDisabled:y},b)=>{const C=g(),{schema:i}=P.useUnityFormProvider(),{fieldState:{invalid:R},formState:s}=L.useController({name:r,control:f}),v=o.useMemo(()=>w.isFieldRequired(i,r),[i,r]),{hasHelperText:j,hasContextualLink:k}=o.useMemo(()=>{let n=!1,l=!1;const a=T=>{c.default.Children.forEach(T,u=>{if(!c.default.isValidElement(u))return;const t=u;t.type===M.FormHelperText?n=!0:t.type===I.FormContextualLink&&(l=!0),t.props&&typeof t.props=="object"&&"children"in t.props&&a(t.props.children)})};return a(e),{hasHelperText:n,hasContextualLink:l}},[e]),H={name:r,isLoading:F,isReadOnly:x,hasHelperText:j,hasContextualLink:k,id:C,isRequired:h??v,isInvalid:p??R,isDisabled:y??(s.isSubmitting||s.disabled)},{base:S}=N();return d.jsx("div",{ref:b,className:S({className:q}),children:d.jsx(D.FormFieldProvider,{...H,children:e})})});m.displayName="FormField";exports.FormField=m;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),s=require("react"),u=require("react-aria-components"),l=require("../../link/Link.js"),c=require("../../text/Text.js"),d=require("../FormField.context.js"),a=s.forwardRef(({children:e,href:n,onPress:i},o)=>{const{formContextualLinkId:r}=d.useFormField();return n?t.jsx(l.Link,{id:r,color:"secondary",variant:"standalone","data-unity-slot":"contextual-link",href:n,ref:o,children:t.jsx(c.Text,{variant:"actionSmall",children:e})}):t.jsx(u.Button,{id:r,onPress:i,"data-unity-slot":"contextual-link",className:"uy-typography-body-small uy-w-fit",ref:o,children:e})});a.displayName="FormContextualLink";exports.FormContextualLink=a;
@@ -0,0 +1,7 @@
1
+ import { Slot } from '@radix-ui/react-slot';
2
+ export type FormControlProps = React.ComponentProps<typeof Slot>;
3
+ declare function FormControl({ ...props }: FormControlProps): import("react/jsx-runtime").JSX.Element;
4
+ declare namespace FormControl {
5
+ var displayName: string;
6
+ }
7
+ export { FormControl };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const I=require("react/jsx-runtime"),g=require("react"),v=require("@radix-ui/react-slot"),x=require("react-aria"),a=require("react-hook-form"),C=require("../FormField.context.js");function n({...d}){const{name:l,hasHelperText:i,hasContextualLink:c,fieldState:e,formLabelId:u,formItemId:m,formDescriptionId:o,formMessageId:s,formContextualLinkId:b}=C.useFormField(),{control:f}=a.useFormContext(),{field:{ref:p,...q}}=a.useController({name:l,control:f}),{error:t}=e,y=g.useMemo(()=>[t?s:void 0,i?o:void 0].filter(Boolean).join(" "),[t,i,o,s]),r={isDisabled:e.isDisabled,isInvalid:e.isInvalid,isLoading:e.isLoading,isReadOnly:e.isReadOnly,isRequired:e.isRequired},F=x.mergeProps(d,r,q);return I.jsx(v.Slot,{...F,ref:p,"data-slot":"form-control",id:m,"aria-labelledby":u,"aria-describedby":y,"aria-details":c?b:void 0,"aria-invalid":r.isInvalid,"aria-disabled":r.isDisabled,"aria-required":r.isRequired,"aria-busy":r.isLoading})}n.displayName="FormControl";exports.FormControl=n;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),c=require("react"),l=require("../../text/Text.js"),u=require("../FormField.context.js"),r=c.forwardRef(({children:o,...s},n)=>{const{fieldState:{error:e,isInvalid:a},formMessageId:i}=u.useFormField(),t=e?String(e.message):o;return!a||!t?null:d.jsx(l.Text,{...s,id:i,ref:n,"data-unity-slot":"form-feedback-text",className:"uy-typography-body-small-strong uy-text-content-form-invalid",children:t})});r.displayName="FormFeedbackText";exports.FormFeedbackText=r;
@@ -3,5 +3,5 @@
3
3
  */
4
4
  declare const FormHelperText: import('react').ForwardRefExoticComponent<{
5
5
  children?: import('react').ReactNode | undefined;
6
- } & import('react').RefAttributes<HTMLParagraphElement>>;
6
+ } & import('react').RefAttributes<HTMLElement>>;
7
7
  export { FormHelperText };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),l=require("react"),s=require("../../text/Text.js"),c=require("../FormField.context.js"),e=l.forwardRef(({children:t,...r},o)=>{const{formDescriptionId:n}=c.useFormField();return i.jsx(s.Text,{...r,id:n,"data-unity-slot":"helper-text",variant:"bodySmall",color:"content.neutral.low",ref:o,children:t})});e.displayName="HelperText";exports.FormHelperText=e;
@@ -1,8 +1,8 @@
1
+ import { LabelProps } from '../../label/Label.js';
2
+ export type FormLabelProps = Omit<LabelProps, 'isRequired'>;
1
3
  /**
2
4
  * FormLabel is a component that displays a label for a form field.
3
5
  * It is used to provide context for the form field.
4
6
  */
5
- declare const FormLabel: import('react').ForwardRefExoticComponent<{
6
- children?: import('react').ReactNode | undefined;
7
- } & import('react').RefAttributes<HTMLLabelElement>>;
7
+ declare const FormLabel: import('react').ForwardRefExoticComponent<FormLabelProps & import('react').RefAttributes<HTMLLabelElement>>;
8
8
  export { FormLabel };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),d=require("react"),u=require("../../label/Label.js"),c=require("../FormField.context.js"),r=d.forwardRef(({children:t,...e},o)=>{const{requiredVariant:a}=e,{formLabelId:i,formItemId:l,fieldState:{isRequired:s}}=c.useFormField();return n.jsx(u.Label,{ref:o,id:i,isRequired:s,requiredVariant:a,htmlFor:l,className:"uy-leading-100",...e,children:t})});r.displayName="Label";exports.FormLabel=r;
@@ -0,0 +1,8 @@
1
+ import { ZodObject, ZodRawShape } from 'zod';
2
+ /**
3
+ * Determines if a field is required based on its path in a Zod schema
4
+ * @param schema - The Zod schema object
5
+ * @param fieldPath - The path to the field (e.g., "preferences.marketing")
6
+ * @returns true if the field is required, false if optional or not found
7
+ */
8
+ export declare function isFieldRequired(schema: ZodObject<ZodRawShape> | null | undefined, fieldPath: string): boolean;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("zod");function f(n,l){try{if(!n)return!1;const r=l.split(".");let i=n.shape,e;for(let t=0;t<r.length;t++){const o=r[t];if(e=i[o],!e)return!1;if(t<r.length-1){const s=e instanceof a.z.ZodOptional?e._def.innerType.shape:e.shape;if(!s)return!1;i=s}}return e?!(e instanceof a.z.ZodOptional):!1}catch{return!1}}exports.isFieldRequired=f;
@@ -0,0 +1,13 @@
1
+ import { ReactNode } from 'react';
2
+ export declare const fullPageLoader: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy-w-full uy-h-screen uy-flex uy-place-items-center uy-justify-center", import('tailwind-variants/dist/config').TVConfig<unknown, {} | {}>, {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy-w-full uy-h-screen uy-flex uy-place-items-center uy-justify-center", import('tailwind-variants/dist/config').TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
3
+ export type FullPageLoaderProps = {
4
+ label?: ReactNode;
5
+ };
6
+ /**
7
+ * The `FullPageLoader` component should used to inform the user that the entire page content is loading
8
+ */
9
+ declare const FullPageLoader: {
10
+ ({ label }: FullPageLoaderProps): import("react/jsx-runtime").JSX.Element;
11
+ displayName: string;
12
+ };
13
+ export { FullPageLoader };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react-aria"),n=require("react-intl"),i=require("tailwind-variants"),u=require("../spinner/Spinner.js"),a=i.tv({base:"uy-w-full uy-h-screen uy-flex uy-place-items-center uy-justify-center"}),r=({label:s})=>{const t=l.useId();return e.jsxs("main",{id:t,className:a(),"aria-busy":"true",children:[e.jsx("h1",{className:"uy-sr-only",children:s??e.jsx(n.FormattedMessage,{id:"unity:component:full-page-loader:label",defaultMessage:"Content is loading..."})}),e.jsx(u.Spinner,{label:"",size:"medium",role:"presentation"})]})};r.displayName="FullPageLoader";exports.FullPageLoader=r;exports.fullPageLoader=a;
@@ -570,5 +570,5 @@ export type IconProps = VariantProps<typeof icon> & Pick<HTMLAttributes<HTMLSpan
570
570
  /**
571
571
  * The `Icon` component displays an icon from the Unity icon set.
572
572
  */
573
- export declare function Icon({ alt, color, size, src, role, display, ...rest }: IconProps): JSX.Element;
573
+ export declare function Icon({ alt, color, size, src, role, display, ...rest }: IconProps): import("react/jsx-runtime").JSX.Element;
574
574
  export {};
@@ -7,7 +7,7 @@ export type CircularIconButtonProps = AriaButtonProps & {
7
7
  isDisabled?: boolean;
8
8
  };
9
9
  export declare const circularIconButton: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy-w-300 uy-h-300 uy-rounded-circle uy-flex uy-items-center uy-justify-center uy-text-content-neutral uy-transition-colors hover:uy-bg-surface-neutral-hover active:uy-bg-surface-neutral-active data-[pressed]:uy-bg-surface-neutral-pressed focus-visible:uy-outline-2 focus-visible:uy-outline-offset-2 focus-visible:uy-outline-utility-focus-ring disabled:uy-cursor-not-allowed disabled:uy-text-content-neutral-disabled aria-busy:uy-cursor-not-allowed aria-busy:uy-text-content-neutral-disabled", import('tailwind-variants/dist/config').TVConfig<unknown, {} | {}>, {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy-w-300 uy-h-300 uy-rounded-circle uy-flex uy-items-center uy-justify-center uy-text-content-neutral uy-transition-colors hover:uy-bg-surface-neutral-hover active:uy-bg-surface-neutral-active data-[pressed]:uy-bg-surface-neutral-pressed focus-visible:uy-outline-2 focus-visible:uy-outline-offset-2 focus-visible:uy-outline-utility-focus-ring disabled:uy-cursor-not-allowed disabled:uy-text-content-neutral-disabled aria-busy:uy-cursor-not-allowed aria-busy:uy-text-content-neutral-disabled", import('tailwind-variants/dist/config').TVConfig<unknown, {} | {}>, unknown, unknown, undefined>>;
10
- export declare function CircularIconButton(props: CircularIconButtonProps): JSX.Element;
10
+ export declare function CircularIconButton(props: CircularIconButtonProps): import("react/jsx-runtime").JSX.Element;
11
11
  export declare namespace CircularIconButton {
12
12
  var displayName: string;
13
13
  }
@@ -19,7 +19,7 @@ interface IconButtonVariantsSecondaryProps extends IconButtonBaseProps, Omit<Ico
19
19
  }
20
20
  interface IconButtonVariantsGhostProps extends IconButtonBaseProps, Omit<IconButtonGhost, 'variant' | 'color'>, Required<Pick<IconButtonGhost, 'variant' | 'color'>> {
21
21
  }
22
- export declare function IconButton(props: IconButtonVariantsPrimaryProps | IconButtonVariantsSecondaryProps | IconButtonVariantsGhostProps): JSX.Element;
22
+ export declare function IconButton(props: IconButtonVariantsPrimaryProps | IconButtonVariantsSecondaryProps | IconButtonVariantsGhostProps): import("react/jsx-runtime").JSX.Element;
23
23
  export declare namespace IconButton {
24
24
  var displayName: string;
25
25
  }
@@ -0,0 +1,4 @@
1
+ export { CheckboxGroup } from './checkbox-group/CheckboxGroup.js';
2
+ export type { CheckboxGroupProps } from './checkbox-group/CheckboxGroup.js';
3
+ export { CheckboxGroupField } from './checkbox-group-field/CheckboxGroupField.js';
4
+ export type { CheckboxGroupFieldProps } from './checkbox-group-field/CheckboxGroupField.js';
@@ -0,0 +1,48 @@
1
+ import { ReactElement } from 'react';
2
+ import { InputProps as AriaInputProps } from 'react-aria-components';
3
+ export interface InputProps extends Omit<AriaInputProps, 'prefix' | 'style' | 'className'> {
4
+ /**
5
+ * The type of the input field
6
+ * @default 'text'
7
+ */
8
+ type?: 'text' | 'password' | 'email' | 'tel' | 'url' | 'search';
9
+ /** Element to display before the input field */
10
+ prefix?: ReactElement;
11
+ /** Element to display after the input field */
12
+ suffix?: ReactElement;
13
+ /** Whether the field is required */
14
+ isRequired?: boolean;
15
+ /** Whether the field is in an invalid state */
16
+ isInvalid?: boolean;
17
+ /** Whether the field is in a loading state */
18
+ isLoading?: boolean;
19
+ /** Whether the field is disabled */
20
+ isDisabled?: boolean;
21
+ /** Whether the field is read-only */
22
+ isReadOnly?: boolean;
23
+ /**
24
+ * Clear button click handler
25
+ */
26
+ onClearButtonPress?: () => void;
27
+ }
28
+ /**
29
+ * The `Input` components displays a styled, single HTML `<input>` field whose type is text-compatible (`text`, `password`, `email`, `tel`, `url`, `search`), and follows the Unity design system language. It supports multiple states out of the box and can be used as a controlled or uncontrolled component. It is also compatible with the `Form` and `FormField` component as a form control.
30
+ * @param {InputProps} props - Regular props from the `<input>` HTML element, plus state-related props
31
+ * @see {@link InputProps} for all available props
32
+ * @example
33
+ * ```tsx
34
+ * import { Input } from '@payfit/unity-components'
35
+ *
36
+ * function Example() {
37
+ * const [value, setValue] = useState()
38
+ *
39
+ * const handleInputChange = (e) => {
40
+ * setValue(e.target.value)
41
+ * }
42
+ *
43
+ * return <Input type="text" placeholder="write something..." value={value} onChange={handleInputChange} />
44
+ * }
45
+ * ```
46
+ */
47
+ declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
48
+ export { Input };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),h=require("react"),w=require("react-aria-components"),I=require("react-intl"),j=require("tailwind-variants"),N=require("../icon-button/CircularIconButton.js"),q=require("../icon/Icon.js"),M=require("../spinner/Spinner.js"),S=j.tv({slots:{base:"uy-flex uy-h-500 uy-border uy-rounded-100 focus-within:uy-outline-none focus-within:uy-ring-2 focus-within:uy-ring-utility-focus-ring focus-within:uy-ring-offset-2 active:uy-border-border-form-active",prefix:"uy-flex-grow-0 uy-content-center uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-border-r uy-rounded-l-100 active:uy-border-border-form-active",inputWrapper:"uy-flex uy-gap-50 uy-flex-grow uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-rounded-100",input:"uy-flex-grow uy-outline-none uy-typography-body placeholder:uy-text-content-neutral-lowest",state:"uy-flex uy-gap-50 uy-items-center",suffix:"uy-flex-grow-0 uy-content-center uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-border-l uy-rounded-r-100 active:uy-border-border-form-active"},variants:{isInvalid:{true:{base:"uy-border-border-form-error uy-bg-surface-form-error",prefix:"uy-bg-surface-form-error uy-border-border-form-error",inputWrapper:"uy-bg-surface-form-error",input:"uy-bg-surface-form-error",state:"uy-text-content-form-error",suffix:"uy-bg-surface-form-error uy-border-border-form-error"}},isReadOnly:{true:{base:"uy-border-border-form-disabled uy-bg-surface-form-disabled",prefix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-readonly",inputWrapper:"uy-border-border-form-disabled uy-bg-surface-form-disabled",input:"uy-bg-surface-form-disabled uy-text-content-form-readonly",suffix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-readonly"}},isDisabled:{true:{base:"uy-border-border-form-disabled uy-bg-surface-form-disabled",prefix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-disabled",inputWrapper:"uy-bg-surface-form-disabled uy-text-content-form-disabled",input:"uy-bg-surface-form-disabled uy-text-content-form-disabled",suffix:"uy-bg-surface-form-disabled uy-border-border-form-disabled uy-text-content-form-disabled"}}},compoundVariants:[{isInvalid:!1,isDisabled:!1,isReadOnly:!1,className:{base:"uy-border-border-form-enabled uy-bg-surface-form-enabled",prefix:"uy-bg-surface-neutral-low uy-border-border-form-enabled uy-text-content-form-enabled",inputWrapper:"uy-border-border-form-enabled uy-bg-surface-form-enabled",input:"uy-text-content-form-enabled uy-bg-surface-form-enabled",state:"uy-text-content-neutral-disabled",suffix:"uy-border-border-form-enabled uy-bg-surface-neutral-low uy-text-content-form-enabled"}}]}),l=h.forwardRef(({type:f="text",prefix:a,suffix:s,isInvalid:d,isLoading:r,isDisabled:u,isReadOnly:o,onClearButtonPress:t,...i},y)=>{const n=I.useIntl(),{base:b,prefix:c,inputWrapper:m,input:p,state:x,suffix:g}=S({isInvalid:!!d,isReadOnly:!!o,isDisabled:!!u}),v=i.value&&!r&&!o&&!u;return e.jsxs("div",{className:b(),children:[a?e.jsx("span",{className:c(),children:a}):null,e.jsxs("div",{className:m(),children:[e.jsx(w.Input,{...i,ref:y,type:f,className:p(),"aria-busy":r,readOnly:o,disabled:u}),e.jsxs("div",{className:x(),children:[r&&e.jsx(M.Spinner,{color:"inherit",size:"small",label:n.formatMessage({id:"unity:component:form-field:form-input:spinner:label",defaultMessage:"Loading"})}),d&&e.jsx(q.Icon,{src:"WarningCircleOutlined",color:"content.form.invalid",alt:n.formatMessage({id:"unity:component:form-field:form-input:error:alt",defaultMessage:"Error"})}),v&&e.jsx(N.CircularIconButton,{title:n.formatMessage({id:"unity:component:form-field:form-input:clear:title",defaultMessage:"Clear"}),className:"uy-text-content-neutral-enabled",icon:"CloseOutlined",onPress:()=>{t==null||t()}})]})]}),s?e.jsx("span",{className:g(),children:s}):null]})});l.displayName="Input";exports.Input=l;
@@ -0,0 +1,17 @@
1
+ import { LabelProps as AriaLabelProps } from 'react-aria-components';
2
+ export interface LabelProps extends AriaLabelProps {
3
+ /**
4
+ * Whether the field is required.
5
+ */
6
+ isRequired?: boolean;
7
+ /**
8
+ * The variant of the required label.
9
+ */
10
+ requiredVariant?: 'required' | 'optional';
11
+ }
12
+ /**
13
+ * FormLabel is a component that displays a label for a form field.
14
+ * It is used to provide context for the form field.
15
+ */
16
+ declare const Label: import('react').ForwardRefExoticComponent<LabelProps & import('react').RefAttributes<HTMLLabelElement>>;
17
+ export { Label };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("react"),g=require("react-aria"),t=require("react-aria-components"),m=require("tailwind-variants"),q=m.tv({slots:{base:"uy-typography-body-strong uy-text-content-form-enabled uy-flex uy-gap-25",asterisk:"uy-text-content-danger",optionalTag:"uy-typography-body"},variants:{variant:{strong:{base:"uy-typography-body-strong"},body:{base:"uy-typography-body"}}},defaultVariants:{variant:"strong"}}),o=b.forwardRef(({children:i,...a},l)=>{const s=t.useSlottedContext(t.InputContext),c=g.mergeProps({isRequired:s==null?void 0:s["aria-required"]},a),{isRequired:r=!1,requiredVariant:n="required",...u}=c,{base:y,asterisk:d,optionalTag:p}=q();return e.jsxs(t.Label,{...u,ref:l,className:y({className:a.className}),children:[i,n==="required"&&r&&e.jsxs("span",{className:d(),children:["*",e.jsx("span",{className:"uy-sr-only",children:"required"})]}),n==="optional"&&!r&&e.jsx("span",{className:p({className:a.className}),children:"(optional)"})]})});o.displayName="Label";exports.Label=o;
@@ -8,6 +8,10 @@ export type LinkProps = Omit<AriaLinkProps, 'style' | 'className'> & {
8
8
  * The URL the link navigates to.
9
9
  */
10
10
  href: HTMLAnchorElement['href'] | NavRouterLinkProps['to'];
11
+ /**
12
+ * The link id
13
+ */
14
+ id?: HTMLAttributes<HTMLLinkElement>['id'];
11
15
  /**
12
16
  * The link's display variant. Links can be inline with text or standalone (block).
13
17
  * @default 'inline'
@@ -38,6 +42,10 @@ declare const Link: import('react').ForwardRefExoticComponent<Omit<AriaLinkProps
38
42
  * The URL the link navigates to.
39
43
  */
40
44
  href: HTMLAnchorElement["href"] | NavRouterLinkProps["to"];
45
+ /**
46
+ * The link id
47
+ */
48
+ id?: HTMLAttributes<HTMLLinkElement>["id"];
41
49
  /**
42
50
  * The link's display variant. Links can be inline with text or standalone (block).
43
51
  * @default 'inline'
@@ -59,5 +67,7 @@ declare const Link: import('react').ForwardRefExoticComponent<Omit<AriaLinkProps
59
67
  */
60
68
  isCurrent?: Pick<HTMLAttributes<HTMLAnchorElement>, "aria-current"> | undefined;
61
69
  maxCharactersTruncation?: number;
70
+ } & {
71
+ children?: import('react').ReactNode | undefined;
62
72
  } & import('react').RefAttributes<HTMLAnchorElement>>;
63
73
  export { Link };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),q=require("react"),v=require("@payfit/unity-icons"),g=require("react-aria-components"),x=require("../../providers/router/RouterProvider.js"),L=require("./Link.variants.js"),R=require("./utils.js"),u=q.forwardRef(({href:t,children:a,variant:l="inline",color:d="primary",isDisabled:i=!1,isCurrent:m=void 0,isExternal:y,maxCharactersTruncation:o,...e},k)=>{const s=x.useRouter(),r=y??R.isExternalUrl(t),n=!r&&s?s.isActive(t.toString()):m,p=L.link({variant:l,color:d,isDisabled:i,isTruncated:!!o});return c.jsxs(g.Link,{...e,href:t,ref:k,style:{"--uy-link-max-w":`${o}ch`},className:p,isDisabled:i,target:r?"_blank":e.target,rel:r&&!e.rel?"noopener noreferrer":e.rel,...n!==void 0&&{"data-current":n,"aria-current":n?"page":void 0},children:[a,r&&c.jsx(v.IconSprite,{src:"ArrowSquareOutOutlined",color:"currentColor",width:"1em",height:"1em",role:"presentation",className:"uy-self-center uy-inline"})]})});u.displayName="Link";exports.Link=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),v=require("react"),g=require("@payfit/unity-icons"),x=require("react-aria-components"),L=require("../../providers/router/RouterProvider.js"),R=require("./Link.variants.js"),S=require("./utils.js"),u=v.forwardRef(({href:t,children:l,variant:a="inline",color:d="primary",isDisabled:o=!1,isCurrent:y=void 0,isExternal:k,maxCharactersTruncation:n,...e},m)=>{const s=L.useRouter(),r=k??S.isExternalUrl(t),i=!r&&s?s.isActive(t.toString()):y,p=R.link({variant:a,color:d,isDisabled:o,isTruncated:!!n}),q=!!n;return c.jsxs(x.Link,{...e,href:t,ref:m,style:q?{"--uy-link-max-w":`${n}ch`}:{},className:p,isDisabled:o,target:r?"_blank":e.target,rel:r&&!e.rel?"noopener noreferrer":e.rel,...i!==void 0&&{"data-current":i,"aria-current":i?"page":void 0},children:[l,r&&c.jsx(g.IconSprite,{src:"ArrowSquareOutOutlined",color:"currentColor",width:"1em",height:"1em",role:"presentation",className:"uy-self-center uy-inline"})]})});u.displayName="Link";exports.Link=u;
@@ -3,7 +3,7 @@ interface MenuProps {
3
3
  defaultOpen?: MenuTriggerProps['defaultOpen'];
4
4
  children?: MenuTriggerProps['children'];
5
5
  }
6
- export declare function Menu({ defaultOpen, children }: MenuProps): JSX.Element;
6
+ export declare function Menu({ defaultOpen, children }: MenuProps): import("react/jsx-runtime").JSX.Element;
7
7
  export declare namespace Menu {
8
8
  var displayName: string;
9
9
  }
@@ -4,7 +4,7 @@ interface MenuContent {
4
4
  placement?: PopoverProps['placement'];
5
5
  width?: number;
6
6
  }
7
- export declare function MenuContent({ children, placement, width, }: PropsWithChildren<MenuContent>): JSX.Element;
7
+ export declare function MenuContent({ children, placement, width, }: PropsWithChildren<MenuContent>): import("react/jsx-runtime").JSX.Element;
8
8
  export declare namespace MenuContent {
9
9
  var displayName: string;
10
10
  }
@@ -2,7 +2,7 @@ import { PropsWithChildren } from 'react';
2
2
  interface MenuHeaderProps {
3
3
  className?: string;
4
4
  }
5
- export declare function MenuHeader({ children, className, }: PropsWithChildren<MenuHeaderProps>): JSX.Element;
5
+ export declare function MenuHeader({ children, className, }: PropsWithChildren<MenuHeaderProps>): import("react/jsx-runtime").JSX.Element;
6
6
  export declare namespace MenuHeader {
7
7
  var displayName: string;
8
8
  }
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { PropsWithChildren, ReactNode } from 'react';
2
2
  import { MenuItemProps as MenuItemAriaComponentProps } from 'react-aria-components';
3
3
  import { DataAttributes } from '../../../types/DataAttributes.js';
4
4
  interface MenuItemProps extends DataAttributes {
@@ -8,7 +8,7 @@ interface MenuItemProps extends DataAttributes {
8
8
  prefix?: ReactNode;
9
9
  className?: string;
10
10
  }
11
- export declare function MenuItem({ prefix, children, href, onAction, className, ...dataAttributes }: MenuItemProps): JSX.Element;
11
+ export declare function MenuItem({ prefix, children, href, onAction, className, ...dataAttributes }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
12
12
  export declare namespace MenuItem {
13
13
  var displayName: string;
14
14
  }
@@ -1,4 +1,4 @@
1
- export declare function MenuSeparator(): JSX.Element;
1
+ export declare function MenuSeparator(): import("react/jsx-runtime").JSX.Element;
2
2
  export declare namespace MenuSeparator {
3
3
  var displayName: string;
4
4
  }
@@ -3,7 +3,7 @@ interface MenuTriggerProps {
3
3
  className?: string;
4
4
  asChild?: boolean;
5
5
  }
6
- export declare function MenuTrigger({ children, asChild, className, }: PropsWithChildren<MenuTriggerProps>): JSX.Element;
6
+ export declare function MenuTrigger({ children, asChild, className, }: PropsWithChildren<MenuTriggerProps>): import("react/jsx-runtime").JSX.Element;
7
7
  export declare namespace MenuTrigger {
8
8
  var displayName: string;
9
9
  }
@@ -6,7 +6,7 @@ export type NavProps = PropsWithChildren<Pick<HTMLAttributes<HTMLDivElement>, 'a
6
6
  /**
7
7
  * The `Nav` component represents a vertical navigation menu with optional title and navigation items of multiple types.
8
8
  */
9
- export declare function Nav({ children, title, ...rest }: NavProps): JSX.Element;
9
+ export declare function Nav({ children, title, ...rest }: NavProps): import("react/jsx-runtime").JSX.Element;
10
10
  export declare namespace Nav {
11
11
  var displayName: string;
12
12
  }
@@ -23,7 +23,7 @@ type NavGroupProps = {
23
23
  /**
24
24
  * The `NavGroup` component represents a tree of navigation items grouped under a single root element in a `Nav` component. It can be expanded or collapsed to show or hide its children.
25
25
  */
26
- export declare function NavGroup({ children, label, prefix, suffix, defaultExpanded, isExpanded: controlledIsExpanded, onToggle, ...dataAttributes }: NavGroupProps): JSX.Element;
26
+ export declare function NavGroup({ children, label, prefix, suffix, defaultExpanded, isExpanded: controlledIsExpanded, onToggle, ...dataAttributes }: NavGroupProps): import("react/jsx-runtime").JSX.Element;
27
27
  export declare namespace NavGroup {
28
28
  var displayName: string;
29
29
  }
@@ -272,7 +272,7 @@ export type NavItemProps = Pick<VariantProps<typeof navItem>, 'level'> & PropsWi
272
272
  /**
273
273
  * The `NavItem` component represents a single, fully accessible navigation item in a `Nav` component, with support for custom elements at the start or the end of the element. It can render a link or a button depending on the provided properties.
274
274
  */
275
- export declare function NavItem({ children, level, prefix, suffix, onPress, href, isCurrent, isDisabled, ...dataAttributes }: NavItemProps): JSX.Element;
275
+ export declare function NavItem({ children, level, prefix, suffix, onPress, href, isCurrent, isDisabled, ...dataAttributes }: NavItemProps): import("react/jsx-runtime").JSX.Element;
276
276
  export declare namespace NavItem {
277
277
  var displayName: string;
278
278
  }
@@ -0,0 +1,52 @@
1
+ import { ForwardedRef, JSX, ReactNode } from 'react';
2
+ import { SelectProps as AriaSelectProps } from 'react-aria-components';
3
+ export interface SelectProps<T extends object> extends Omit<AriaSelectProps<T>, 'children' | 'label' | 'style' | 'className' | 'selectedKey' | 'onSelectionChange'> {
4
+ /** In static mode, contains <SelectOption /> and <SelectOptionGroup /> components, in dynamic mode, contains a function to render items passed to the component*/
5
+ children: ReactNode | ((item: T) => ReactNode);
6
+ /** In dynamic mode, contains the items to display in the select */
7
+ items?: Iterable<T>;
8
+ /** Whether the field is read-only */
9
+ isReadOnly?: boolean;
10
+ /** The value of the selected item */
11
+ value?: AriaSelectProps<T>['selectedKey'];
12
+ /** Function trigger when a item is selected */
13
+ onChange?: AriaSelectProps<T>['onSelectionChange'];
14
+ /** Whether the search input should be displayed or not */
15
+ isSearchable?: boolean;
16
+ }
17
+ type SelectComponent = (<TItems extends object>(props: SelectProps<TItems> & {
18
+ ref?: ForwardedRef<HTMLDivElement>;
19
+ }) => JSX.Element) & {
20
+ displayName?: string;
21
+ };
22
+ /**
23
+ * The `Select` component is used to render a list of options
24
+ * @example
25
+ * ```tsx
26
+ * const schema = z.object({
27
+ * vegetable: z.string()
28
+ * })
29
+ *
30
+ * function MyForm() {
31
+ * const { Form, FormField } = useUnityForm(schema)
32
+ *
33
+ * return (
34
+ * <Form action={handleSubmit}>
35
+ * <FormField name="vegetable">
36
+ * <FormLabel>Vegetables</FormLabel>
37
+ * <FormHelperText>Select your favorite vegetable</FormHelperText>
38
+ * <FormControl>
39
+ * <Select>
40
+ * <SelectOption id="Cabbage">Cabbage</SelectOption>
41
+ * <SelectOption id="Broccoli">Broccoli</SelectOption>
42
+ * <SelectOption id="Carrots">Carrots</SelectOption>
43
+ * </Select>
44
+ * </FormControl>
45
+ * </FormField>
46
+ * </Form>
47
+ * )
48
+ * }
49
+ * ```
50
+ */
51
+ declare const Select: SelectComponent;
52
+ export { Select };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),t=require("react-aria-components"),v=require("tailwind-variants"),q=require("./parts/SearchInput.js"),w=require("./parts/SelectButton.js"),N=v.tv({slots:{base:"uy-flex uy-flex-col uy-gap-100 uy-w-full",popover:"uy-rounded-75 uy-border uy-border-border-neutral uy-w-[var(--trigger-width)] uy-bg-surface-neutral",listbox:"uy-overflow-y-auto uy-max-h-[296px] uy-pt-100 uy-pb-100 uy-pl-100 uy-pr-100"}}),B=({children:s,items:o,placeholder:r,name:p,isDisabled:n,isInvalid:c,isReadOnly:u,value:y,onChange:d,isSearchable:x=!1,...f},S)=>{const[b,m]=a.useState(!1),{contains:g}=t.useFilter({sensitivity:"base"}),{base:h,popover:j,listbox:l}=N();return e.jsxs(t.Select,{onOpenChange:m,...f,ref:S,className:h(),placeholder:n?void 0:r,name:p,isDisabled:n||u,isInvalid:c,selectedKey:y,onSelectionChange:d,children:[e.jsx(w.SelectButton,{isDisabled:n,isInvalid:c,isReadOnly:u,isOpen:b}),e.jsx(t.Popover,{offset:1,containerPadding:8,className:j(),children:x?e.jsxs(t.Autocomplete,{filter:g,children:[e.jsx(q.SearchInput,{}),e.jsx(t.ListBox,{items:o,className:l(),children:s})]}):e.jsx(t.ListBox,{items:o,className:l(),children:s})})]})},i=a.forwardRef(function(o,r){return B(o,r)});i.displayName="Select";exports.Select=i;
@@ -0,0 +1,2 @@
1
+ declare const SearchInput: import('react').ForwardRefExoticComponent<import('react').RefAttributes<HTMLDivElement>>;
2
+ export { SearchInput };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),t=require("react-aria-components"),l=require("react-intl"),y=require("tailwind-variants"),d=require("../../icon-button/CircularIconButton.js"),m=require("../../icon/Icon.js"),p=y.tv({slots:{base:"uy-flex uy-gap-100 uy-border uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-rounded-75 uy-border-border-form-active uy-text-content-form-active uy-mt-100 uy-mb-100 uy-ml-100 uy-mr-100",input:"uy-flex-grow uy-outline-none [&::-webkit-search-cancel-button]:uy-hidden",button:"uy-text-content-neutral-enabled",separator:"uy-h-[1px] uy-bg-surface-neutral-lowest uy-w-full uy-mt-100"}}),r=i.forwardRef((b,n)=>{const u=l.useIntl(),{base:a,input:s,button:o,separator:c}=p();return e.jsxs(e.Fragment,{children:[e.jsxs(t.SearchField,{className:a(),ref:n,children:[e.jsx(m.Icon,{src:"MagnifyingGlassOutlined","aria-hidden":"true"}),e.jsx(t.Input,{className:s()}),e.jsx(d.CircularIconButton,{title:u.formatMessage({id:"unity:component:form-field:form-input:clear:title",defaultMessage:"Clear"}),className:o(),icon:"CloseOutlined"})]}),e.jsx("div",{"aria-hidden":"true",className:c()})]})});r.displayName="SearchInput";exports.SearchInput=r;
@@ -0,0 +1,8 @@
1
+ export interface SelectButtonProps {
2
+ isDisabled?: boolean;
3
+ isInvalid?: boolean;
4
+ isReadOnly?: boolean;
5
+ isOpen: boolean;
6
+ }
7
+ declare const SelectButton: import('react').ForwardRefExoticComponent<SelectButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
8
+ export { SelectButton };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("react"),o=require("react-aria-components"),m=require("react-intl"),p=require("tailwind-variants"),a=require("../../icon/Icon.js"),v=p.tv({slots:{base:"uy-flex uy-flex-row uy-gap-100 uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-rounded-100 focus-visible:uy-ring-2 focus-visible:uy-ring-utility-focus-ring focus-visible:uy-ring-offset-2 uy-outline-none uy-border",selectValue:"uy-whitespace-nowrap uy-text-ellipsis uy-typography-body uy-flex-grow uy-text-left data-[placeholder]:uy-text-content-neutral-lowest",iconWrapper:"uy-flex uy-gap-50",icon:""},variants:{isDisabled:{true:{base:"uy-border-border-form-disabled uy-bg-surface-form-disabled",selectValue:"uy-text-content-form-disabled"}},isInvalid:{true:{base:"uy-border-border-form-error uy-bg-surface-form-error"}},isReadOnly:{true:{base:"uy-border-border-form-disabled",selectValue:"uy-text-content-form-readonly",icon:"uy-text-content-primary-disabled"}}},compoundVariants:[{isDisabled:!1,isInvalid:!1,isReadOnly:!1,className:{base:"uy-border-border-form-enabled hover:uy-border-border-form-hover uy-bg-surface-form-enabled hover:uy-bg-surface-form-hover active:uy-border-border-form-active",selectValue:"uy-text-content-neutral-enabled hover:uy-text-content-neutral-hover",icon:"uy-text-content-form-enabled hover:uy-text-content-form-hover"}}],defaultVariants:{isDisabled:!1,isInvalid:!1,isReadOnly:!1}}),n=b.forwardRef(({isDisabled:r,isInvalid:t,isReadOnly:s,isOpen:u},l)=>{const i=m.useIntl(),{base:c,selectValue:d,iconWrapper:y,icon:f}=v({isDisabled:r,isInvalid:t,isReadOnly:s});return e.jsxs(o.Button,{className:c(),ref:l,isDisabled:r,children:[e.jsx(o.SelectValue,{className:d()}),e.jsxs("div",{className:y(),children:[t&&e.jsx(a.Icon,{src:"WarningCircleOutlined",color:"content.form.invalid",alt:i.formatMessage({id:"unity:component:form-field:form-input:error:alt",defaultMessage:"Error"})}),e.jsx(a.Icon,{className:f(),"aria-hidden":"true",src:u?"CaretUpOutlined":"CaretDownOutlined"})]})]})});n.displayName="SelectButton";exports.SelectButton=n;
@@ -0,0 +1,8 @@
1
+ import { PropsWithChildren } from 'react';
2
+ interface SelectOptionContextValue {
3
+ isDisabled: boolean | undefined;
4
+ }
5
+ export declare const SelectOptionContext: import('react').Context<SelectOptionContextValue>;
6
+ export declare function SelectOptionProvider({ children, isDisabled, }: PropsWithChildren<SelectOptionContextValue>): import("react/jsx-runtime").JSX.Element;
7
+ export declare function useSelectOptionContext(): SelectOptionContextValue;
8
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),o=require("react"),t=o.createContext({isDisabled:void 0});function r({children:e,isDisabled:n}){return i.jsx(t.Provider,{value:{isDisabled:n},children:e})}function c(){const e=o.useContext(t);if(!e)throw new Error("useSelectOptionContext must be used within an SelectOptionProvider");return e}exports.SelectOptionContext=t;exports.SelectOptionProvider=r;exports.useSelectOptionContext=c;
@@ -0,0 +1,6 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { ListBoxItemProps } from 'react-aria-components';
3
+ declare const SelectOption: React.ForwardRefExoticComponent<Omit<ListBoxItemProps<object>, "children"> & {
4
+ children: ReactNode;
5
+ } & React.RefAttributes<HTMLDivElement>>;
6
+ export { SelectOption };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("react"),f=require("react-aria-components"),x=require("tailwind-variants"),p=require("../../icon/Icon.js"),b=require("./SelectOption.context.js"),m=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},r=m(i),v=x.tv({base:"uy-flex uy-flex-col uy-typography-body uy-rounded-50 uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150 uy-outline-none",variants:{isFocusVisible:{true:"uy-outline-offset-2 uy-outline-2 uy-outline-utility-focus-ring"},isHovered:{true:"uy-bg-surface-neutral-hover uy-text-content-neutral"},isPressed:{true:"uy-bg-surface-neutral-pressed uy-text-content-neutral-pressed"},isSelected:{true:"uy-bg-surface-neutral-active uy-text-content-neutral-active"},isDisabled:{true:"uy-text-content-neutral-disabled"}},compoundVariants:[{isFocusVisible:!1,isHovered:!1,isPressed:!1,isSelected:!1,isDisabled:!1,class:"uy-bg-surface-neutral-enabled uy-text-content-neutral-enabled"}]}),l=i.forwardRef((t,a)=>{const{children:s,isDisabled:u}=t,o=typeof r.default.Children.toArray(s)[0]=="string"?r.default.Children.toArray(s)[0]:void 0;return e.jsx(f.ListBoxItem,{ref:a,...t,textValue:o,className:({isHovered:n,isPressed:c,isFocusVisible:d,isSelected:y})=>v({isHovered:n,isPressed:c,isFocusVisible:d,isSelected:y,isDisabled:u}),children:({isSelected:n})=>e.jsx(b.SelectOptionProvider,{isDisabled:u,children:n?e.jsxs("div",{className:"uy-flex uy-justify-between",children:[e.jsx("div",{className:"uy-flex uy-flex-col",children:e.jsx(e.Fragment,{children:s})}),e.jsx(p.Icon,{src:"CheckOutlined"})]}):e.jsx(e.Fragment,{children:s})})})});l.displayName="SelectOption";exports.SelectOption=l;
@@ -0,0 +1,12 @@
1
+ import { ForwardedRef, JSX } from 'react';
2
+ import { ListBoxSectionProps } from 'react-aria-components';
3
+ export interface SelectOptionGroupProps<T extends object> extends ListBoxSectionProps<T> {
4
+ label: string;
5
+ }
6
+ type SelectOptionGroupComponent = (<TItems extends object>(props: SelectOptionGroupProps<TItems> & {
7
+ ref?: ForwardedRef<HTMLDivElement>;
8
+ }) => JSX.Element) & {
9
+ displayName?: string;
10
+ };
11
+ declare const SelectOptionGroup: SelectOptionGroupComponent;
12
+ export { SelectOptionGroup };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),l=require("react"),o=require("react-aria-components"),p=require("tailwind-variants"),y=p.tv({slots:{base:"",header:"uy-text-content-neutral-enabled uy-typography-body-strong uy-pt-100 uy-pb-100 uy-pl-150 uy-pr-150",separator:"uy-h-[1px] uy-bg-surface-neutral-lowest uy-w-full uy-mb-100 uy-mt-100 last:uy-hidden"}}),d=({label:n,children:r,items:t},a)=>{const{base:u,header:i,separator:c}=y();return e.jsxs(e.Fragment,{children:[e.jsxs(o.ListBoxSection,{ref:a,className:u(),id:n,items:t,children:[e.jsx(o.Header,{className:i(),children:n}),t?e.jsx(o.Collection,{items:t,children:r}):e.jsx(e.Fragment,{children:r})]}),e.jsx(o.Separator,{orientation:"horizontal",className:c()})]})},s=l.forwardRef(function(r,t){return d(r,t)});s.displayName="SelectOptionGroup";exports.SelectOptionGroup=s;
@@ -0,0 +1,4 @@
1
+ declare const SelectOptionHelper: import('react').ForwardRefExoticComponent<{
2
+ children?: import('react').ReactNode | undefined;
3
+ } & import('react').RefAttributes<HTMLSpanElement>>;
4
+ export { SelectOptionHelper };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),i=require("react"),l=require("tailwind-variants"),a=require("./SelectOption.context.js"),c=l.tv({base:"uy-typography-body",variants:{isDisabled:{true:"uy-text-content-neutral-disabled",false:"uy-text-content-neutral-low"}}}),e=i.forwardRef(({children:t},n)=>{const{isDisabled:s}=a.useSelectOptionContext(),o=c({isDisabled:s});return r.jsx("span",{className:o,ref:n,children:t})});e.displayName="SelectOptionHelper";exports.SelectOptionHelper=e;