@payfit/unity-components 2.0.0 → 2.1.4

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 (353) hide show
  1. package/dist/esm/components/alert/Alert.js +41 -29
  2. package/dist/esm/components/alert/parts/AlertTitle.js +8 -8
  3. package/dist/esm/components/app-layout/AppLayout.d.ts +2 -0
  4. package/dist/esm/components/app-menu/parts/AppMenuFooter.js +23 -23
  5. package/dist/esm/components/app-menu/parts/AppMenuHeader.d.ts +1 -1
  6. package/dist/esm/components/app-menu/parts/AppMenuHeader.js +9 -9
  7. package/dist/esm/components/autocomplete/Autocomplete.d.ts +0 -9
  8. package/dist/esm/components/autocomplete/Autocomplete.js +54 -57
  9. package/dist/esm/components/autocomplete/parts/AutocompleteItem.js +8 -8
  10. package/dist/esm/components/avatar/Avatar.variants.js +1 -1
  11. package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
  12. package/dist/esm/components/badge/Badge.js +1 -1
  13. package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
  14. package/dist/esm/components/button/Button.js +6 -6
  15. package/dist/esm/components/button/Button.variants.d.ts +1 -0
  16. package/dist/esm/components/button/Button.variants.js +22 -15
  17. package/dist/esm/components/card/Card.context.d.ts +5 -0
  18. package/dist/esm/components/card/Card.context.js +14 -0
  19. package/dist/esm/components/card/Card.d.ts +210 -0
  20. package/dist/esm/components/card/Card.js +93 -0
  21. package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
  22. package/dist/esm/components/card/parts/CardContent.js +8 -0
  23. package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
  24. package/dist/esm/components/card/parts/CardTitle.js +33 -0
  25. package/dist/esm/components/checkbox/Checkbox.js +38 -30
  26. package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
  27. package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
  28. package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
  29. package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
  30. package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
  31. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
  32. package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
  33. package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
  34. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
  35. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
  36. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
  37. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
  38. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
  39. package/dist/esm/components/client-side-pagination/parts/PaginationNavButton.js +1 -1
  40. package/dist/esm/components/client-side-pagination/parts/RawPaginationLink.js +10 -10
  41. package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
  42. package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
  43. package/dist/esm/components/data-table/DataTable.d.ts +109 -16
  44. package/dist/esm/components/data-table/DataTable.js +107 -93
  45. package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
  46. package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
  47. package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
  48. package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
  49. package/dist/esm/components/date-picker/DatePicker.js +59 -50
  50. package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
  51. package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
  52. package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
  53. package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
  54. package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
  55. package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
  56. package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
  57. package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
  58. package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
  59. package/dist/esm/components/dialog/Dialog.d.ts +34 -22
  60. package/dist/esm/components/dialog/Dialog.js +90 -52
  61. package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
  62. package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
  63. package/dist/esm/components/dialog/test-utils.d.ts +28 -0
  64. package/dist/esm/components/dialog/test-utils.js +78 -0
  65. package/dist/esm/components/error-state/ErrorState.js +7 -7
  66. package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
  67. package/dist/esm/components/filter/Filter.controls.js +45 -0
  68. package/dist/esm/components/filter/Filter.d.ts +189 -0
  69. package/dist/esm/components/filter/Filter.js +147 -0
  70. package/dist/esm/components/filter/Filter.types.d.ts +121 -0
  71. package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
  72. package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
  73. package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
  74. package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
  75. package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
  76. package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
  77. package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
  78. package/dist/esm/components/filter/parts/FilterButton.js +55 -0
  79. package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
  80. package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
  81. package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
  82. package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
  83. package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
  84. package/dist/esm/components/filter/utils/value-formatters.js +14 -0
  85. package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
  86. package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
  87. package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
  88. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
  89. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
  90. package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
  91. package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
  92. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
  93. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
  94. package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
  95. package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
  96. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
  97. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
  98. package/dist/esm/components/form/Form.d.ts +2 -0
  99. package/dist/esm/components/form/TanstackForm.d.ts +24 -0
  100. package/dist/esm/components/form/TanstackForm.js +29 -0
  101. package/dist/esm/components/form-field/FormField.d.ts +2 -0
  102. package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
  103. package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
  104. package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
  105. package/dist/esm/components/form-field/TanstackFormField.js +46 -0
  106. package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
  107. package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
  108. package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
  109. package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
  110. package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +2 -0
  111. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
  112. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
  113. package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
  114. package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
  115. package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
  116. package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
  117. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
  118. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
  119. package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
  120. package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
  121. package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
  122. package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
  123. package/dist/esm/components/input/Input.js +36 -35
  124. package/dist/esm/components/input/TanstackInput.d.ts +22 -0
  125. package/dist/esm/components/input/TanstackInput.js +38 -0
  126. package/dist/esm/components/label/Label.js +12 -12
  127. package/dist/esm/components/link/RawLink.js +38 -31
  128. package/dist/esm/components/list-view/ListView.d.ts +56 -0
  129. package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
  130. package/dist/esm/components/list-view/ListView.js +44 -0
  131. package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
  132. package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
  133. package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
  134. package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
  135. package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
  136. package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
  137. package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
  138. package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
  139. package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
  140. package/dist/esm/components/multi-select/MultiSelect.js +199 -176
  141. package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
  142. package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
  143. package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
  144. package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
  145. package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
  146. package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
  147. package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
  148. package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
  149. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
  150. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
  151. package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
  152. package/dist/esm/components/multi-select-field/test-utils.js +45 -0
  153. package/dist/esm/components/nav/parts/RawNavItem.js +6 -6
  154. package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
  155. package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
  156. package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
  157. package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
  158. package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
  159. package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
  160. package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
  161. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
  162. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
  163. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
  164. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
  165. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
  166. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
  167. package/dist/esm/components/number-field/NumberField.d.ts +2 -0
  168. package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
  169. package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
  170. package/dist/esm/components/number-input/NumberInput.js +31 -29
  171. package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
  172. package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
  173. package/dist/esm/components/page/Page.js +12 -11
  174. package/dist/esm/components/pagination/parts/RawPaginationLink.js +22 -22
  175. package/dist/esm/components/pagination/parts/RawPaginationNext.js +13 -13
  176. package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +10 -10
  177. package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
  178. package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
  179. package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
  180. package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
  181. package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
  182. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
  183. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
  184. package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
  185. package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
  186. package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
  187. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
  188. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
  189. package/dist/esm/components/pill/Pill.d.ts +2 -2
  190. package/dist/esm/components/pill/Pill.js +8 -8
  191. package/dist/esm/components/popover/Popover.js +6 -6
  192. package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
  193. package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
  194. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
  195. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
  196. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
  197. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
  198. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
  199. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
  200. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
  201. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
  202. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
  203. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
  204. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
  205. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
  206. package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
  207. package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
  208. package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
  209. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
  210. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
  211. package/dist/esm/components/search/Search.js +46 -46
  212. package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
  213. package/dist/esm/components/select/Select.d.ts +5 -4
  214. package/dist/esm/components/select/Select.js +53 -45
  215. package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
  216. package/dist/esm/components/select/TanstackSelect.js +34 -0
  217. package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
  218. package/dist/esm/components/select/parts/SearchInput.js +49 -31
  219. package/dist/esm/components/select/parts/SelectButton.js +19 -17
  220. package/dist/esm/components/select-field/SelectField.d.ts +2 -0
  221. package/dist/esm/components/select-field/SelectField.js +8 -9
  222. package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
  223. package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
  224. package/dist/esm/components/select-list/SelectList.d.ts +95 -0
  225. package/dist/esm/components/select-list/SelectList.js +79 -0
  226. package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
  227. package/dist/esm/components/select-list/constants.d.ts +36 -0
  228. package/dist/esm/components/select-list/constants.js +29 -0
  229. package/dist/esm/components/select-list/helpers.d.ts +42 -0
  230. package/dist/esm/components/select-list/helpers.js +48 -0
  231. package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
  232. package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
  233. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
  234. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
  235. package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
  236. package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
  237. package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
  238. package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
  239. package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
  240. package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
  241. package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
  242. package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
  243. package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
  244. package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
  245. package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
  246. package/dist/esm/components/select-list/utils/partition.js +9 -0
  247. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
  248. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
  249. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
  250. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
  251. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
  252. package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
  253. package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
  254. package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
  255. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
  256. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
  257. package/dist/esm/components/selectable-card/internals/Description.js +1 -1
  258. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
  259. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
  260. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
  261. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
  262. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
  263. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
  264. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
  265. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
  266. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
  267. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
  268. package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
  269. package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
  270. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
  271. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
  272. package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
  273. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
  274. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
  275. package/dist/esm/components/table/Table.context.d.ts +5 -0
  276. package/dist/esm/components/table/Table.context.js +14 -13
  277. package/dist/esm/components/table/Table.d.ts +93 -0
  278. package/dist/esm/components/table/Table.js +135 -107
  279. package/dist/esm/components/table/parts/TableBody.js +83 -21
  280. package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
  281. package/dist/esm/components/table/parts/TableHeader.js +1 -1
  282. package/dist/esm/components/table/parts/TablePagination.js +1 -1
  283. package/dist/esm/components/table/parts/TableRow.js +1 -0
  284. package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
  285. package/dist/esm/components/tabs/Tabs.variant.js +11 -12
  286. package/dist/esm/components/task-menu/parts/RawSubTask.js +26 -26
  287. package/dist/esm/components/task-menu/parts/RawTask.js +32 -28
  288. package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
  289. package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
  290. package/dist/esm/components/text/Text.d.ts +11 -1
  291. package/dist/esm/components/text/Text.js +41 -31
  292. package/dist/esm/components/text/Text.variants.d.ts +12 -0
  293. package/dist/esm/components/text/Text.variants.js +4 -0
  294. package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
  295. package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
  296. package/dist/esm/components/text-area/TextArea.js +31 -29
  297. package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
  298. package/dist/esm/components/text-field/TanstackTextField.js +60 -0
  299. package/dist/esm/components/text-field/TextField.d.ts +2 -0
  300. package/dist/esm/components/toast/UnityToast.js +5 -5
  301. package/dist/esm/components/toast/test-utils.d.ts +36 -0
  302. package/dist/esm/components/toast/test-utils.js +118 -0
  303. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
  304. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
  305. package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
  306. package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
  307. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
  308. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
  309. package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
  310. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
  311. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
  312. package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
  313. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
  314. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
  315. package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
  316. package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
  317. package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
  318. package/dist/esm/hooks/tanstack-form-context.js +8 -0
  319. package/dist/esm/hooks/use-form.d.ts +2 -0
  320. package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
  321. package/dist/esm/hooks/use-has-scroll.js +75 -0
  322. package/dist/esm/hooks/use-tanstack-form.d.ts +369 -0
  323. package/dist/esm/hooks/use-tanstack-form.js +209 -0
  324. package/dist/esm/index.d.ts +44 -20
  325. package/dist/esm/index.js +457 -394
  326. package/dist/esm/index.storybook-testing.d.ts +3 -0
  327. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +6 -1
  328. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
  329. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
  330. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
  331. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
  332. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
  333. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
  334. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
  335. package/dist/esm/integrations/tanstack-router/index.d.ts +3 -0
  336. package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +1 -1
  337. package/dist/esm/integrations/tanstack-router.js +32 -26
  338. package/dist/esm/mocks/employees.d.ts +1 -5
  339. package/dist/esm/storybook-testing.js +8 -2
  340. package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
  341. package/dist/esm/utils/scroll-detection.d.ts +77 -0
  342. package/dist/esm/utils/scroll-detection.js +33 -0
  343. package/dist/esm/utils/spacing.d.ts +63 -0
  344. package/dist/esm/utils/spacing.js +15 -0
  345. package/i18n/en-GB.json +21 -8
  346. package/i18n/es-ES.json +23 -10
  347. package/i18n/fr-FR.json +24 -11
  348. package/package.json +41 -42
  349. package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
  350. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
  351. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
  352. package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
  353. package/dist/esm/integrations/react-router/v5.js +0 -4
@@ -0,0 +1,18 @@
1
+ import { VariantProps } from '@payfit/unity-themes';
2
+ import { ListBoxItemProps } from 'react-aria-components';
3
+ export declare const addFilterItem: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, string[], {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, string[], unknown, unknown, undefined>>;
4
+ export interface AddFilterItemProps extends VariantProps<typeof addFilterItem>, ListBoxItemProps {
5
+ }
6
+ /**
7
+ * Internal component that renders individual filter options in the add filter menu.
8
+ * Each item represents a filter that can be added to the toolbar.
9
+ * @param props - AddFilterItem component props
10
+ * @param props.id - Unique identifier for the filter item
11
+ * @param props.children - Label content to display for the filter
12
+ * @internal
13
+ */
14
+ declare const AddFilterItem: {
15
+ ({ id, children, ...rest }: AddFilterItemProps): import("react/jsx-runtime").JSX.Element;
16
+ displayName: string;
17
+ };
18
+ export { AddFilterItem };
@@ -0,0 +1,18 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { uyTv as o } from "@payfit/unity-themes";
3
+ import { ListBoxItem as i } from "react-aria-components";
4
+ const s = o({
5
+ base: [
6
+ "uy:flex uy:items-center uy:gap-100 uy:text-content-neutral uy:typography-body",
7
+ "uy:px-150 uy:py-100",
8
+ "uy:rounded-50 uy:cursor-pointer",
9
+ "uy:hover:bg-surface-neutral-hover",
10
+ "uy:active:bg-surface-neutral-pressed",
11
+ "uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:outline-offset-2"
12
+ ]
13
+ }), y = ({ id: e, children: t, ...u }) => /* @__PURE__ */ r(i, { className: s(), id: e, ...u, children: t });
14
+ y.displayName = "AddFilterItem";
15
+ export {
16
+ y as AddFilterItem,
17
+ s as addFilterItem
18
+ };
@@ -0,0 +1,93 @@
1
+ import { ColumnFiltersState } from '@tanstack/react-table';
2
+ import { AppliedFilter } from '../FilterToolbar.types.js';
3
+ /**
4
+ * Adapters for converting FilterToolbar's AppliedFilter format to and from external formats.
5
+ *
6
+ * Use these adapters to integrate FilterToolbar with other libraries like Tanstack Table.
7
+ * Each adapter provides bidirectional conversion methods.
8
+ * @example
9
+ * ```tsx
10
+ * import { FilterAdapters } from '@payfit/unity-components'
11
+ *
12
+ * // Convert FilterToolbar filters to Tanstack Table format
13
+ * const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
14
+ *
15
+ * // Convert Tanstack Table filters back to FilterToolbar format
16
+ * const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(columnFilters)
17
+ * ```
18
+ */
19
+ export declare const FilterAdapters: {
20
+ /**
21
+ * Adapter for Tanstack Table integration.
22
+ *
23
+ * Handles conversion between FilterToolbar's AppliedFilter format and
24
+ * Tanstack Table's ColumnFiltersState format.
25
+ * @example
26
+ * ```tsx
27
+ * const [appliedFilters, setAppliedFilters] = useState<AppliedFilter[]>([])
28
+ * const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
29
+ *
30
+ * const table = useReactTable({
31
+ * state: { columnFilters },
32
+ * // ... other config
33
+ * })
34
+ *
35
+ * return (
36
+ * <>
37
+ * <FilterToolbar
38
+ * filterDefs={filterDefs}
39
+ * initialValue={appliedFilters}
40
+ * onChange={setAppliedFilters}
41
+ * />
42
+ * <DataTable table={table} />
43
+ * </>
44
+ * )
45
+ * ```
46
+ * @see {@link https://tanstack.com/table/latest/docs/guide/filters Tanstack Table Filters Documentation}
47
+ */
48
+ TanstackTable: {
49
+ /**
50
+ * Converts FilterToolbar's AppliedFilter format to Tanstack Table's ColumnFiltersState format.
51
+ *
52
+ * This method handles two key transformations:
53
+ * 1. Filters out empty filters (filters without values) so the table shows all results
54
+ * 2. Converts Set values to Arrays (React Aria uses Set, Tanstack Table uses Array)
55
+ * @param appliedFilters - Array of applied filters from FilterToolbar's onChange callback
56
+ * @returns Column filters compatible with Tanstack Table's state.columnFilters
57
+ * @remarks
58
+ * - Empty filters (undefined values or empty Sets) are excluded from the result
59
+ * - This ensures that adding a filter without selecting values doesn't hide all table rows
60
+ * - Set values are converted to Arrays for compatibility with Tanstack Table's filter functions
61
+ * @example
62
+ * ```tsx
63
+ * const columnFilters = FilterAdapters.TanstackTable.toColumnFilters([
64
+ * { id: 'status', value: new Set(['active', 'pending']) },
65
+ * { id: 'department', value: undefined }, // Will be filtered out
66
+ * ])
67
+ * // Result: [{ id: 'status', value: ['active', 'pending'] }]
68
+ * ```
69
+ */
70
+ toColumnFilters(appliedFilters: AppliedFilter[]): ColumnFiltersState;
71
+ /**
72
+ * Converts Tanstack Table's ColumnFiltersState format to FilterToolbar's AppliedFilter format.
73
+ *
74
+ * This is useful when you need to initialize FilterToolbar from existing table state,
75
+ * URL parameters, or server-side filter state.
76
+ * @param columnFilters - Column filters from Tanstack Table's state
77
+ * @returns Array of applied filters compatible with FilterToolbar's initialValue
78
+ * @remarks
79
+ * - Array values are converted to Sets for compatibility with React Aria's SelectList
80
+ * - In most cases, you should make FilterToolbar the source of truth and use toColumnFilters
81
+ * to derive table state instead of syncing bidirectionally
82
+ * @example
83
+ * ```tsx
84
+ * // Initialize FilterToolbar from URL params
85
+ * const urlFilters = parseUrlToColumnFilters(searchParams)
86
+ * const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(urlFilters)
87
+ *
88
+ * return <FilterToolbar initialValue={appliedFilters} />
89
+ * ```
90
+ */
91
+ fromColumnFilters(columnFilters: ColumnFiltersState): AppliedFilter[];
92
+ };
93
+ };
@@ -0,0 +1,88 @@
1
+ const u = {
2
+ /**
3
+ * Adapter for Tanstack Table integration.
4
+ *
5
+ * Handles conversion between FilterToolbar's AppliedFilter format and
6
+ * Tanstack Table's ColumnFiltersState format.
7
+ * @example
8
+ * ```tsx
9
+ * const [appliedFilters, setAppliedFilters] = useState<AppliedFilter[]>([])
10
+ * const columnFilters = FilterAdapters.TanstackTable.toColumnFilters(appliedFilters)
11
+ *
12
+ * const table = useReactTable({
13
+ * state: { columnFilters },
14
+ * // ... other config
15
+ * })
16
+ *
17
+ * return (
18
+ * <>
19
+ * <FilterToolbar
20
+ * filterDefs={filterDefs}
21
+ * initialValue={appliedFilters}
22
+ * onChange={setAppliedFilters}
23
+ * />
24
+ * <DataTable table={table} />
25
+ * </>
26
+ * )
27
+ * ```
28
+ * @see {@link https://tanstack.com/table/latest/docs/guide/filters Tanstack Table Filters Documentation}
29
+ */
30
+ TanstackTable: {
31
+ /**
32
+ * Converts FilterToolbar's AppliedFilter format to Tanstack Table's ColumnFiltersState format.
33
+ *
34
+ * This method handles two key transformations:
35
+ * 1. Filters out empty filters (filters without values) so the table shows all results
36
+ * 2. Converts Set values to Arrays (React Aria uses Set, Tanstack Table uses Array)
37
+ * @param appliedFilters - Array of applied filters from FilterToolbar's onChange callback
38
+ * @returns Column filters compatible with Tanstack Table's state.columnFilters
39
+ * @remarks
40
+ * - Empty filters (undefined values or empty Sets) are excluded from the result
41
+ * - This ensures that adding a filter without selecting values doesn't hide all table rows
42
+ * - Set values are converted to Arrays for compatibility with Tanstack Table's filter functions
43
+ * @example
44
+ * ```tsx
45
+ * const columnFilters = FilterAdapters.TanstackTable.toColumnFilters([
46
+ * { id: 'status', value: new Set(['active', 'pending']) },
47
+ * { id: 'department', value: undefined }, // Will be filtered out
48
+ * ])
49
+ * // Result: [{ id: 'status', value: ['active', 'pending'] }]
50
+ * ```
51
+ */
52
+ toColumnFilters(e) {
53
+ return e.filter((a) => a.value instanceof Set ? a.value.size > 0 : a.value !== void 0 && a.value !== null).map((a) => ({
54
+ id: a.id,
55
+ value: a.value instanceof Set ? Array.from(a.value) : a.value
56
+ }));
57
+ },
58
+ /**
59
+ * Converts Tanstack Table's ColumnFiltersState format to FilterToolbar's AppliedFilter format.
60
+ *
61
+ * This is useful when you need to initialize FilterToolbar from existing table state,
62
+ * URL parameters, or server-side filter state.
63
+ * @param columnFilters - Column filters from Tanstack Table's state
64
+ * @returns Array of applied filters compatible with FilterToolbar's initialValue
65
+ * @remarks
66
+ * - Array values are converted to Sets for compatibility with React Aria's SelectList
67
+ * - In most cases, you should make FilterToolbar the source of truth and use toColumnFilters
68
+ * to derive table state instead of syncing bidirectionally
69
+ * @example
70
+ * ```tsx
71
+ * // Initialize FilterToolbar from URL params
72
+ * const urlFilters = parseUrlToColumnFilters(searchParams)
73
+ * const appliedFilters = FilterAdapters.TanstackTable.fromColumnFilters(urlFilters)
74
+ *
75
+ * return <FilterToolbar initialValue={appliedFilters} />
76
+ * ```
77
+ */
78
+ fromColumnFilters(e) {
79
+ return e.map((a) => ({
80
+ id: a.id,
81
+ value: Array.isArray(a.value) ? new Set(a.value) : a.value
82
+ }));
83
+ }
84
+ }
85
+ };
86
+ export {
87
+ u as FilterAdapters
88
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Normalizes filter values to serializable formats (string or string array).
3
+ * This ensures filter values can be safely serialized to URLs or JSON.
4
+ * Handles various JavaScript types including primitives, arrays, Sets, Dates, and objects.
5
+ * @param value - The filter value to normalize (can be any type)
6
+ * @returns A string, string array, or undefined
7
+ * @example
8
+ * ```ts
9
+ * // React Aria Selection (Set)
10
+ * normalizeFilterValue(new Set(['apple', 'banana'])) // ['apple', 'banana']
11
+ *
12
+ * // Arrays
13
+ * normalizeFilterValue(['apple', 'banana', 123]) // ['apple', 'banana', '123']
14
+ *
15
+ * // Primitives
16
+ * normalizeFilterValue(42) // '42'
17
+ * normalizeFilterValue('hello') // 'hello'
18
+ *
19
+ * // Objects
20
+ * normalizeFilterValue({ key: 'value' }) // '{"key":"value"}'
21
+ * ```
22
+ * @internal
23
+ */
24
+ export declare function normalizeFilterValue(value: unknown): string | string[] | undefined;
@@ -0,0 +1,19 @@
1
+ function i(r) {
2
+ if (r != null) {
3
+ if (Array.isArray(r))
4
+ return r.map((t) => String(t));
5
+ if (typeof r == "object" && Symbol.iterator in r)
6
+ return Array.from(r).map((t) => String(t));
7
+ if (r instanceof Date)
8
+ return r.toISOString();
9
+ if (typeof r == "object")
10
+ return JSON.stringify(r);
11
+ if (typeof r == "string")
12
+ return r;
13
+ if (typeof r == "number" || typeof r == "boolean")
14
+ return String(r);
15
+ }
16
+ }
17
+ export {
18
+ i as normalizeFilterValue
19
+ };
@@ -36,6 +36,8 @@ type FormComponent = {
36
36
  * ```bash
37
37
  * $ yarn add zod react-hook-form
38
38
  * ```
39
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
40
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
39
41
  */
40
42
  declare const Form: FormComponent;
41
43
  export { Form };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `TanstackForm` is a form wrapper bound to the TanStack form context.
3
+ * It prevents the default browser submission, delegates to the TanStack form
4
+ * `handleSubmit`, and then invokes the provided `onSubmit` (if any).
5
+ *
6
+ * Behavior:
7
+ * - `onSubmit` handler: prevents default, calls `form.handleSubmit(event)`, then
8
+ * forwards the event to the user-provided `onSubmit`.
9
+ * - Exposes a standard `<form>` element API via `ComponentProps<'form'>`.
10
+ *
11
+ * Usage:
12
+ * ```tsx
13
+ * function Example() {
14
+ * const form = useTanstackUnityForm<{ name: string }>({ validators: {} })
15
+ * return (
16
+ * <TanstackForm>
17
+ * <form.AppField name="name">{() => <TanstackInput />}</form.AppField>
18
+ * </TanstackForm>
19
+ * )
20
+ * }
21
+ * ```
22
+ */
23
+ declare const TanstackForm: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>, "ref"> & import('react').RefAttributes<HTMLFormElement>>;
24
+ export { TanstackForm };
@@ -0,0 +1,29 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as p } from "react";
3
+ import { uyTv as c } from "@payfit/unity-themes";
4
+ import { useFormContext as f } from "../../hooks/tanstack-form-context.js";
5
+ const u = c({
6
+ base: []
7
+ }), d = p(
8
+ ({ children: t, onSubmit: r, className: a, ...m }, s) => {
9
+ const i = f();
10
+ return /* @__PURE__ */ n(
11
+ "form",
12
+ {
13
+ "data-dd-privacy": "mask",
14
+ onSubmit: (o) => {
15
+ o.preventDefault(), o.stopPropagation(), i.handleSubmit(o), r?.(o);
16
+ },
17
+ ...m,
18
+ ref: s,
19
+ noValidate: !0,
20
+ className: u({ className: a }),
21
+ children: t
22
+ }
23
+ );
24
+ }
25
+ );
26
+ d.displayName = "TanstackForm";
27
+ export {
28
+ d as TanstackForm
29
+ };
@@ -54,6 +54,8 @@ export interface FormFieldProps<TFieldValues extends FieldValues = FieldValues,
54
54
  * }
55
55
  * ```
56
56
  * @note Use this component directly from the `useUnityForm` hook to have type-safety based on the form schema.
57
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
58
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
57
59
  */
58
60
  declare const FormField: React.ForwardRefExoticComponent<FormFieldProps<FieldValues, string> & React.RefAttributes<HTMLDivElement>>;
59
61
  export { FormField };
@@ -0,0 +1,10 @@
1
+ export type FieldA11yContextValue = {
2
+ fieldGroupId: string;
3
+ labelId: string;
4
+ inputId: string;
5
+ feedbackTextId: string;
6
+ helperTextId?: string;
7
+ contextualLinkId?: string;
8
+ };
9
+ export declare const FieldA11yContext: import('react').Context<FieldA11yContextValue>;
10
+ export declare function useFieldA11yContext(): FieldA11yContextValue;
@@ -0,0 +1,14 @@
1
+ import { useContext as e, createContext as t } from "react";
2
+ const o = t({
3
+ fieldGroupId: "",
4
+ labelId: "",
5
+ inputId: "",
6
+ feedbackTextId: ""
7
+ });
8
+ function d() {
9
+ return e(o);
10
+ }
11
+ export {
12
+ o as FieldA11yContext,
13
+ d as useFieldA11yContext
14
+ };
@@ -0,0 +1,49 @@
1
+ export interface FormFieldProps extends React.PropsWithChildren {
2
+ /** Additional class name */
3
+ className?: string;
4
+ }
5
+ /**
6
+ * The `FormField` component represents a single field in a Unity form. It provides a set of features to manage the proper accessibility of the a form field's parts, such as the label and the helper text
7
+ * @example
8
+ * ```tsx
9
+ * import { useTanstackUnityForm } from '@payfit/unity-components'
10
+ * import { z } from 'zod'
11
+ *
12
+ * const loginSchema = z.object({
13
+ * email: z.string().email('Invalid email address'),
14
+ * password: z.string().min(8, 'Password must be at least 8 characters'),
15
+ * })
16
+ *
17
+ * const MyForm = () => {
18
+ * const form = useTanstackUnityForm({
19
+ * validators: {
20
+ * onBlur: loginSchema,
21
+ * },
22
+ * defaultValues: {
23
+ * email: '',
24
+ * password: '',
25
+ * },
26
+ * })
27
+ *
28
+ * const submitForm = (values: z.infer<typeof loginSchema>) => {
29
+ * console.log(values)
30
+ * }
31
+ *
32
+ * return (
33
+ * <form.Form>
34
+ * <form.FormField>
35
+ * <form.FormLabel>Email</form.FormLabel>
36
+ * <form.FormHelperText>Enter your primary email address</form.FormHelperText>
37
+ * <form.Input type="email"/>
38
+ * <form.FormFeedbackText/>
39
+ * </form.FormField>
40
+ * </Form>
41
+ * )
42
+ * }
43
+ * ```
44
+ * @note Use this component directly from the `useUnityForm` hook to have type-safety and proper state management.
45
+ */
46
+ export declare function TanstackFormField({ children, className }: FormFieldProps): import("react/jsx-runtime").JSX.Element;
47
+ export declare namespace TanstackFormField {
48
+ var displayName: string;
49
+ }
@@ -0,0 +1,46 @@
1
+ import { jsx as f } from "react/jsx-runtime";
2
+ import { useId as I, useRef as k, useState as u, useLayoutEffect as _, useMemo as T } from "react";
3
+ import { uyTv as F } from "@payfit/unity-themes";
4
+ import { useFieldContext as $ } from "../../hooks/tanstack-form-context.js";
5
+ import { FieldA11yContext as b } from "./TanstackFormField.context.js";
6
+ const h = F({
7
+ base: ["uy:group/field", "uy:flex uy:flex-col uy:gap-100"]
8
+ });
9
+ function v({ children: l, className: c }) {
10
+ const m = I(), r = k(null), o = $(), n = o.form.formId || m, a = o.name.replace(/[^\w-]/g, "-"), [i, p] = u(!1), [s, x] = u(!1);
11
+ _(() => {
12
+ const e = r.current;
13
+ if (!e) return;
14
+ const t = e.querySelector(
15
+ '[data-unity-slot="form-field-helper-text"]'
16
+ ), y = e.querySelector(
17
+ '[data-unity-slot="form-field-contextual-link"]'
18
+ );
19
+ p(!!t), x(!!y);
20
+ }, [l]);
21
+ const d = T(() => {
22
+ const e = `form-${n}-field-${a}`, t = {
23
+ fieldGroupId: e,
24
+ labelId: `${e}__label`,
25
+ inputId: `${e}__input`,
26
+ feedbackTextId: `${e}__feedback-text`
27
+ };
28
+ return i && (t.helperTextId = `${e}__helper-text`), s && (t.contextualLinkId = `${e}__contextual-link`), t;
29
+ }, [n, a, i, s]);
30
+ return /* @__PURE__ */ f(b.Provider, { value: d, children: /* @__PURE__ */ f(
31
+ "div",
32
+ {
33
+ ref: r,
34
+ id: d.fieldGroupId,
35
+ role: "group",
36
+ className: h({ className: c }),
37
+ "data-unity-slot": "form-field",
38
+ "data-invalid": !o.state.meta.isValid,
39
+ children: l
40
+ }
41
+ ) });
42
+ }
43
+ v.displayName = "TanstackFormField";
44
+ export {
45
+ v as TanstackFormField
46
+ };
@@ -22,6 +22,8 @@ export type FormControlProps = React.ComponentProps<typeof Slot>;
22
22
  * ```
23
23
  * @remarks
24
24
  * [API & Docs](https://unity-components.payfit.io/?path=/docs/forms-formfield-formcontrol--docs)
25
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
26
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
25
27
  */
26
28
  declare function FormControl({ ...props }: FormControlProps): import("react/jsx-runtime").JSX.Element;
27
29
  declare namespace FormControl {
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * FormErrorText is a component that displays error text for a form field.
3
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
4
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
3
5
  */
4
6
  declare const FormFeedbackText: import('react').ForwardRefExoticComponent<{
5
7
  children?: import('react').ReactNode | undefined;
@@ -1,5 +1,7 @@
1
1
  /**
2
2
  * FormHelperText is a component that displays helper text for a form field.
3
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
4
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
3
5
  */
4
6
  declare const FormHelperText: import('react').ForwardRefExoticComponent<{
5
7
  children?: import('react').ReactNode | undefined;
@@ -3,6 +3,8 @@ export type FormLabelProps = Omit<LabelProps, 'isRequired'>;
3
3
  /**
4
4
  * FormLabel is a component that displays a label for a form field.
5
5
  * It is used to provide context for the form field.
6
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
7
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
6
8
  */
7
9
  declare const FormLabel: import('react').ForwardRefExoticComponent<FormLabelProps & import('react').RefAttributes<HTMLLabelElement>>;
8
10
  export { FormLabel };
@@ -15,6 +15,8 @@ interface FormContextualLinkActionProps {
15
15
  }
16
16
  /**
17
17
  * FormContextualLink is a component that displays a contextual link for a form field.
18
+ * @deprecated React Hook Form components are deprecated. Use the TanStack Form version instead.
19
+ * @see Storybook docs: https://unity-components.payfit.io/?path=/docs/forms-introduction-to-unity-forms--docs
18
20
  */
19
21
  declare const RawFormContextualLink: import('react').ForwardRefExoticComponent<PropsWithChildren<FormContextualLinkProps | FormContextualLinkActionProps> & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
20
22
  export { RawFormContextualLink };
@@ -0,0 +1,12 @@
1
+ import { TextProps } from '../../text/Text.js';
2
+ export type TanstackFormFeedbackTextProps = Omit<TextProps, 'variant' | 'color' | 'className'>;
3
+ /**
4
+ * `TanstackFormFeedbackText` renders the first validation message for the
5
+ * current TanStack form field when the field is invalid
6
+ *
7
+ * Behavior:
8
+ * - Returns `null` when the field is valid or has no errors.
9
+ * - When invalid, renders the first error message.
10
+ */
11
+ declare const TanstackFormFeedbackText: import('react').ForwardRefExoticComponent<TanstackFormFeedbackTextProps & import('react').RefAttributes<HTMLSpanElement>>;
12
+ export { TanstackFormFeedbackText };
@@ -0,0 +1,32 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { useStore as s } from "@tanstack/react-form";
4
+ import { useFieldContext as c } from "../../../hooks/tanstack-form-context.js";
5
+ import { Text as f } from "../../text/Text.js";
6
+ import { useFieldA11yContext as u } from "../TanstackFormField.context.js";
7
+ const x = l((r, t) => {
8
+ const a = c(), i = u(), { errors: o, invalid: d, isTouched: m } = s(a.store, (e) => ({
9
+ errors: e.meta.errors,
10
+ invalid: !e.meta.isValid,
11
+ isTouched: e.meta.isTouched
12
+ }));
13
+ return !m || !d || o.length === 0 ? null : /* @__PURE__ */ n(
14
+ f,
15
+ {
16
+ "data-dd-privacy": "allow",
17
+ ...r,
18
+ ref: t,
19
+ id: i.feedbackTextId || r.id,
20
+ role: "alert",
21
+ "data-unity-slot": "form-feedback-text",
22
+ variant: "bodySmallStrong",
23
+ color: "content.form.invalid",
24
+ asElement: "span",
25
+ children: o[0].message
26
+ }
27
+ );
28
+ });
29
+ x.displayName = "TanstackFormFeedbackText";
30
+ export {
31
+ x as TanstackFormFeedbackText
32
+ };
@@ -0,0 +1,11 @@
1
+ import { TextProps } from '../../text/Text.js';
2
+ export type TanstackFormHelperTextProps = Omit<TextProps, 'variant' | 'color' | 'className'>;
3
+ /**
4
+ * `TanstackFormHelperText` displays non-blocking helper text for the current
5
+ * TanStack form field.
6
+ *
7
+ * Usage:
8
+ * - Place directly under an input/textarea within a `<form.AppField name="…">`.
9
+ */
10
+ declare const TanstackFormHelperText: import('react').ForwardRefExoticComponent<TanstackFormHelperTextProps & import('react').RefAttributes<HTMLSpanElement>>;
11
+ export { TanstackFormHelperText };
@@ -0,0 +1,25 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { Text as m } from "../../text/Text.js";
4
+ import { useFieldA11yContext as n } from "../TanstackFormField.context.js";
5
+ const d = l(({ children: e, ...t }, r) => {
6
+ const o = n();
7
+ return /* @__PURE__ */ a(
8
+ m,
9
+ {
10
+ "data-dd-privacy": "allow",
11
+ ...t,
12
+ id: o.helperTextId || t.id,
13
+ "data-unity-slot": "form-field-helper-text",
14
+ variant: "bodySmall",
15
+ asElement: "span",
16
+ color: "content.neutral.low",
17
+ ref: r,
18
+ children: e
19
+ }
20
+ );
21
+ });
22
+ d.displayName = "TanstackFormHelperText";
23
+ export {
24
+ d as TanstackFormHelperText
25
+ };
@@ -0,0 +1,8 @@
1
+ import { LabelProps } from '../../label/Label.js';
2
+ export type FormLabelProps = LabelProps;
3
+ /**
4
+ * `TanstackFormLabel` renders the label for the current TanStack form field.
5
+ * It is used to provide context for the form field.
6
+ */
7
+ declare const TanstackFormLabel: import('react').ForwardRefExoticComponent<LabelProps & import('react').RefAttributes<HTMLLabelElement>>;
8
+ export { TanstackFormLabel };
@@ -0,0 +1,26 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { forwardRef as l } from "react";
3
+ import { Label as n } from "../../label/Label.js";
4
+ import { useFieldA11yContext as d } from "../TanstackFormField.context.js";
5
+ const s = l(
6
+ ({ children: e, isRequired: o, ...r }, t) => {
7
+ const { requiredVariant: m } = r, a = d();
8
+ return /* @__PURE__ */ i(
9
+ n,
10
+ {
11
+ ref: t,
12
+ htmlFor: a.inputId,
13
+ id: a.labelId,
14
+ isRequired: o,
15
+ requiredVariant: m,
16
+ className: "uy:leading-[1]!",
17
+ ...r,
18
+ children: e
19
+ }
20
+ );
21
+ }
22
+ );
23
+ s.displayName = "Label";
24
+ export {
25
+ s as TanstackFormLabel
26
+ };