@payfit/unity-components 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) 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.context.d.ts +2 -1
  11. package/dist/esm/components/avatar/Avatar.context.js +13 -11
  12. package/dist/esm/components/avatar/Avatar.d.ts +126 -0
  13. package/dist/esm/components/avatar/Avatar.js +34 -20
  14. package/dist/esm/components/avatar/Avatar.variants.d.ts +39 -0
  15. package/dist/esm/components/avatar/Avatar.variants.js +23 -5
  16. package/dist/esm/components/avatar/parts/AvatarFallback.d.ts +52 -0
  17. package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
  18. package/dist/esm/components/avatar/parts/AvatarIcon.d.ts +31 -0
  19. package/dist/esm/components/avatar/parts/AvatarIcon.js +40 -0
  20. package/dist/esm/components/badge/Badge.js +1 -1
  21. package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
  22. package/dist/esm/components/button/Button.js +12 -11
  23. package/dist/esm/components/button/Button.variants.d.ts +1 -0
  24. package/dist/esm/components/button/Button.variants.js +22 -15
  25. package/dist/esm/components/card/Card.context.d.ts +5 -0
  26. package/dist/esm/components/card/Card.context.js +14 -0
  27. package/dist/esm/components/card/Card.d.ts +210 -0
  28. package/dist/esm/components/card/Card.js +93 -0
  29. package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
  30. package/dist/esm/components/card/parts/CardContent.js +8 -0
  31. package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
  32. package/dist/esm/components/card/parts/CardTitle.js +33 -0
  33. package/dist/esm/components/checkbox/Checkbox.js +38 -30
  34. package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
  35. package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
  36. package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
  37. package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
  38. package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
  39. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
  40. package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
  41. package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
  42. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
  43. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
  44. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
  45. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
  46. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
  47. package/dist/esm/components/client-side-pagination/parts/PaginationNavButton.js +1 -1
  48. package/dist/esm/components/client-side-pagination/parts/RawPaginationLink.js +10 -10
  49. package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
  50. package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
  51. package/dist/esm/components/data-table/DataTable.d.ts +109 -16
  52. package/dist/esm/components/data-table/DataTable.js +107 -93
  53. package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
  54. package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
  55. package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
  56. package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
  57. package/dist/esm/components/date-picker/DatePicker.js +59 -50
  58. package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
  59. package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
  60. package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
  61. package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
  62. package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
  63. package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
  64. package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
  65. package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
  66. package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
  67. package/dist/esm/components/dialog/Dialog.d.ts +34 -22
  68. package/dist/esm/components/dialog/Dialog.js +90 -52
  69. package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
  70. package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
  71. package/dist/esm/components/dialog/test-utils.d.ts +28 -0
  72. package/dist/esm/components/dialog/test-utils.js +78 -0
  73. package/dist/esm/components/error-state/ErrorState.js +7 -7
  74. package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
  75. package/dist/esm/components/filter/Filter.controls.js +45 -0
  76. package/dist/esm/components/filter/Filter.d.ts +189 -0
  77. package/dist/esm/components/filter/Filter.js +147 -0
  78. package/dist/esm/components/filter/Filter.types.d.ts +121 -0
  79. package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
  80. package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
  81. package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
  82. package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
  83. package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
  84. package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
  85. package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
  86. package/dist/esm/components/filter/parts/FilterButton.js +55 -0
  87. package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
  88. package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
  89. package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
  90. package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
  91. package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
  92. package/dist/esm/components/filter/utils/value-formatters.js +14 -0
  93. package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
  94. package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
  95. package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
  96. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
  97. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
  98. package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
  99. package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
  100. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
  101. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
  102. package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
  103. package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
  104. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
  105. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
  106. package/dist/esm/components/form/Form.d.ts +2 -0
  107. package/dist/esm/components/form/TanstackForm.d.ts +24 -0
  108. package/dist/esm/components/form/TanstackForm.js +29 -0
  109. package/dist/esm/components/form-field/FormField.d.ts +2 -0
  110. package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
  111. package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
  112. package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
  113. package/dist/esm/components/form-field/TanstackFormField.js +46 -0
  114. package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
  115. package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
  116. package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
  117. package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
  118. package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +2 -0
  119. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
  120. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
  121. package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
  122. package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
  123. package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
  124. package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
  125. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
  126. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
  127. package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
  128. package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
  129. package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
  130. package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
  131. package/dist/esm/components/inline-field-group/InlineFieldGroup.context.d.ts +23 -0
  132. package/dist/esm/components/inline-field-group/InlineFieldGroup.context.js +6 -0
  133. package/dist/esm/components/inline-field-group/InlineFieldGroup.d.ts +119 -0
  134. package/dist/esm/components/inline-field-group/InlineFieldGroup.js +185 -0
  135. package/dist/esm/components/inline-field-group/hooks/useInlineFieldGroupMode.d.ts +46 -0
  136. package/dist/esm/components/inline-field-group/hooks/useInlineFieldGroupMode.js +27 -0
  137. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupEditView.d.ts +64 -0
  138. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupEditView.js +56 -0
  139. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupHeader.d.ts +95 -0
  140. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupHeader.js +106 -0
  141. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupReadView.d.ts +56 -0
  142. package/dist/esm/components/inline-field-group/parts/InlineFieldGroupReadView.js +28 -0
  143. package/dist/esm/components/input/Input.js +36 -35
  144. package/dist/esm/components/input/TanstackInput.d.ts +22 -0
  145. package/dist/esm/components/input/TanstackInput.js +38 -0
  146. package/dist/esm/components/label/Label.js +12 -12
  147. package/dist/esm/components/link/RawLink.js +38 -31
  148. package/dist/esm/components/list-view/ListView.d.ts +56 -0
  149. package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
  150. package/dist/esm/components/list-view/ListView.js +44 -0
  151. package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
  152. package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
  153. package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
  154. package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
  155. package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
  156. package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
  157. package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
  158. package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
  159. package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
  160. package/dist/esm/components/multi-select/MultiSelect.js +199 -176
  161. package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
  162. package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
  163. package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
  164. package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
  165. package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
  166. package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
  167. package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
  168. package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
  169. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
  170. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
  171. package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
  172. package/dist/esm/components/multi-select-field/test-utils.js +45 -0
  173. package/dist/esm/components/nav/parts/RawNavItem.js +6 -6
  174. package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
  175. package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
  176. package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
  177. package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
  178. package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
  179. package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
  180. package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
  181. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
  182. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
  183. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
  184. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
  185. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
  186. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
  187. package/dist/esm/components/number-field/NumberField.d.ts +2 -0
  188. package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
  189. package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
  190. package/dist/esm/components/number-input/NumberInput.js +31 -29
  191. package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
  192. package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
  193. package/dist/esm/components/page/Page.js +12 -11
  194. package/dist/esm/components/pagination/parts/RawPaginationLink.js +22 -22
  195. package/dist/esm/components/pagination/parts/RawPaginationNext.js +13 -13
  196. package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +10 -10
  197. package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
  198. package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
  199. package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
  200. package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
  201. package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
  202. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
  203. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
  204. package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
  205. package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
  206. package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
  207. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
  208. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
  209. package/dist/esm/components/pill/Pill.d.ts +2 -2
  210. package/dist/esm/components/pill/Pill.js +8 -8
  211. package/dist/esm/components/popover/Popover.js +6 -6
  212. package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
  213. package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
  214. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
  215. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
  216. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
  217. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
  218. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
  219. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
  220. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
  221. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
  222. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
  223. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
  224. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
  225. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
  226. package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
  227. package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
  228. package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
  229. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
  230. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
  231. package/dist/esm/components/search/Search.js +46 -46
  232. package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
  233. package/dist/esm/components/select/Select.d.ts +5 -4
  234. package/dist/esm/components/select/Select.js +53 -45
  235. package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
  236. package/dist/esm/components/select/TanstackSelect.js +34 -0
  237. package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
  238. package/dist/esm/components/select/parts/SearchInput.js +49 -31
  239. package/dist/esm/components/select/parts/SelectButton.js +19 -17
  240. package/dist/esm/components/select-field/SelectField.d.ts +2 -0
  241. package/dist/esm/components/select-field/SelectField.js +8 -9
  242. package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
  243. package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
  244. package/dist/esm/components/select-list/SelectList.d.ts +95 -0
  245. package/dist/esm/components/select-list/SelectList.js +79 -0
  246. package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
  247. package/dist/esm/components/select-list/constants.d.ts +36 -0
  248. package/dist/esm/components/select-list/constants.js +29 -0
  249. package/dist/esm/components/select-list/helpers.d.ts +42 -0
  250. package/dist/esm/components/select-list/helpers.js +48 -0
  251. package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
  252. package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
  253. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
  254. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
  255. package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
  256. package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
  257. package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
  258. package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
  259. package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
  260. package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
  261. package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
  262. package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
  263. package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
  264. package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
  265. package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
  266. package/dist/esm/components/select-list/utils/partition.js +9 -0
  267. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
  268. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
  269. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
  270. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
  271. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
  272. package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
  273. package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
  274. package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
  275. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
  276. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
  277. package/dist/esm/components/selectable-card/internals/Description.js +1 -1
  278. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
  279. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
  280. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
  281. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
  282. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
  283. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
  284. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
  285. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
  286. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
  287. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
  288. package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
  289. package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
  290. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
  291. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
  292. package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
  293. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
  294. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
  295. package/dist/esm/components/side-panel/parts/SidePanelFooter.js +19 -10
  296. package/dist/esm/components/table/Table.context.d.ts +5 -0
  297. package/dist/esm/components/table/Table.context.js +14 -13
  298. package/dist/esm/components/table/Table.d.ts +93 -0
  299. package/dist/esm/components/table/Table.js +135 -107
  300. package/dist/esm/components/table/parts/TableBody.js +83 -21
  301. package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
  302. package/dist/esm/components/table/parts/TableHeader.js +1 -1
  303. package/dist/esm/components/table/parts/TablePagination.js +1 -1
  304. package/dist/esm/components/table/parts/TableRow.js +1 -0
  305. package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
  306. package/dist/esm/components/tabs/Tabs.variant.js +11 -12
  307. package/dist/esm/components/task-menu/parts/RawSubTask.js +26 -26
  308. package/dist/esm/components/task-menu/parts/RawTask.js +32 -28
  309. package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
  310. package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
  311. package/dist/esm/components/text/Text.d.ts +11 -1
  312. package/dist/esm/components/text/Text.js +41 -31
  313. package/dist/esm/components/text/Text.variants.d.ts +12 -0
  314. package/dist/esm/components/text/Text.variants.js +4 -0
  315. package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
  316. package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
  317. package/dist/esm/components/text-area/TextArea.js +31 -29
  318. package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
  319. package/dist/esm/components/text-field/TanstackTextField.js +60 -0
  320. package/dist/esm/components/text-field/TextField.d.ts +2 -0
  321. package/dist/esm/components/toast/UnityToast.js +5 -5
  322. package/dist/esm/components/toast/test-utils.d.ts +36 -0
  323. package/dist/esm/components/toast/test-utils.js +118 -0
  324. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
  325. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
  326. package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
  327. package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
  328. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
  329. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
  330. package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
  331. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
  332. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
  333. package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
  334. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
  335. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
  336. package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
  337. package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
  338. package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
  339. package/dist/esm/hooks/tanstack-form-context.js +8 -0
  340. package/dist/esm/hooks/use-form.d.ts +2 -0
  341. package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
  342. package/dist/esm/hooks/use-has-scroll.js +75 -0
  343. package/dist/esm/hooks/use-tanstack-form.d.ts +393 -0
  344. package/dist/esm/hooks/use-tanstack-form.js +232 -0
  345. package/dist/esm/index.d.ts +45 -20
  346. package/dist/esm/index.js +472 -407
  347. package/dist/esm/index.storybook-testing.d.ts +3 -0
  348. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +6 -1
  349. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
  350. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
  351. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
  352. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
  353. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
  354. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
  355. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
  356. package/dist/esm/integrations/tanstack-router/index.d.ts +3 -0
  357. package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +1 -1
  358. package/dist/esm/integrations/tanstack-router.js +32 -26
  359. package/dist/esm/mocks/employees.d.ts +1 -5
  360. package/dist/esm/storybook-testing.js +8 -2
  361. package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
  362. package/dist/esm/utils/scroll-detection.d.ts +77 -0
  363. package/dist/esm/utils/scroll-detection.js +33 -0
  364. package/dist/esm/utils/spacing.d.ts +63 -0
  365. package/dist/esm/utils/spacing.js +15 -0
  366. package/i18n/en-GB.json +27 -8
  367. package/i18n/es-ES.json +29 -10
  368. package/i18n/fr-FR.json +30 -11
  369. package/package.json +41 -42
  370. package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
  371. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
  372. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
  373. package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
  374. package/dist/esm/integrations/react-router/v5.js +0 -4
@@ -0,0 +1,26 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { ButtonProps } from 'react-aria-components';
3
+ import { RawLinkProps } from '../../link/RawLink.js';
4
+ export interface FormContextualLinkProps extends RawLinkProps {
5
+ /**
6
+ * The href of the contextual link
7
+ */
8
+ href: string;
9
+ onPress?: never;
10
+ }
11
+ export interface FormContextualLinkActionProps extends ButtonProps {
12
+ /**
13
+ * A function to open a contextual panel
14
+ */
15
+ onPress: () => void;
16
+ href?: never;
17
+ }
18
+ export type TanstackRawFormContextualLinkProps = PropsWithChildren<FormContextualLinkProps | FormContextualLinkActionProps>;
19
+ /**
20
+ * `TanstackRawFormContextualLink` renders a contextual action associated with the
21
+ * current TanStack form field. It can render either:
22
+ * - an anchor (`RawLink`) when `href` is provided; or
23
+ * - a button (from `react-aria-components`) when `onPress` is provided.
24
+ */
25
+ declare const TanstackRawFormContextualLink: import('react').ForwardRefExoticComponent<TanstackRawFormContextualLinkProps & import('react').RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
26
+ export { TanstackRawFormContextualLink };
@@ -0,0 +1,45 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { forwardRef as e } from "react";
3
+ import { Button as s } from "react-aria-components";
4
+ import { RawLink as m } from "../../link/RawLink.js";
5
+ import { useFieldA11yContext as c } from "../TanstackFormField.context.js";
6
+ const u = e((t, a) => {
7
+ const { children: o, href: n, onPress: d, ...i } = t, r = c();
8
+ return n ? (
9
+ // @ts-expect-error - it's okay in this case
10
+ /* @__PURE__ */ l(
11
+ m,
12
+ {
13
+ id: r.contextualLinkId || t.id,
14
+ size: "small",
15
+ color: "secondary",
16
+ variant: "standalone",
17
+ "data-unity-slot": "form-field-contextual-link",
18
+ href: n,
19
+ ref: a,
20
+ "data-dd-privacy": "allow",
21
+ ...i,
22
+ children: o
23
+ }
24
+ )
25
+ ) : (
26
+ // @ts-expect-error - it's okay in this case
27
+ /* @__PURE__ */ l(
28
+ s,
29
+ {
30
+ id: r.contextualLinkId || t.id,
31
+ onPress: d,
32
+ "data-unity-slot": "contextual-link",
33
+ className: "uy:typography-body-small uy:w-fit",
34
+ ref: a,
35
+ "data-dd-privacy": "allow",
36
+ ...i,
37
+ children: o
38
+ }
39
+ )
40
+ );
41
+ });
42
+ u.displayName = "TanstackRawFormContextualLink";
43
+ export {
44
+ u as TanstackRawFormContextualLink
45
+ };
@@ -7,9 +7,9 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
7
7
  large: string;
8
8
  };
9
9
  color: {
10
- 'content.neutral': string;
11
- 'content.neutral.low': string;
12
- 'content.neutral.lowest': string;
10
+ 'content.neutral': string[];
11
+ 'content.neutral.low': string[];
12
+ 'content.neutral.lowest': string[];
13
13
  };
14
14
  }, undefined, string[], {
15
15
  size: {
@@ -17,9 +17,9 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
17
17
  large: string;
18
18
  };
19
19
  color: {
20
- 'content.neutral': string;
21
- 'content.neutral.low': string;
22
- 'content.neutral.lowest': string;
20
+ 'content.neutral': string[];
21
+ 'content.neutral.low': string[];
22
+ 'content.neutral.lowest': string[];
23
23
  };
24
24
  }, undefined, import('tailwind-variants').TVReturnType<{
25
25
  size: {
@@ -27,9 +27,9 @@ export declare const circularIconButton: import('tailwind-variants').TVReturnTyp
27
27
  large: string;
28
28
  };
29
29
  color: {
30
- 'content.neutral': string;
31
- 'content.neutral.low': string;
32
- 'content.neutral.lowest': string;
30
+ 'content.neutral': string[];
31
+ 'content.neutral.low': string[];
32
+ 'content.neutral.lowest': string[];
33
33
  };
34
34
  }, undefined, string[], unknown, unknown, undefined>>;
35
35
  export interface CircularIconButtonProps extends Omit<AriaButtonProps, 'className'>, VariantProps<typeof circularIconButton> {
@@ -1,17 +1,15 @@
1
1
  import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
- import { uyTv as w } from "@payfit/unity-themes";
2
+ import { uyTv as h } from "@payfit/unity-themes";
3
3
  import { Button as x, Pressable as z } from "react-aria-components";
4
4
  import I from "../../hooks/use-id.js";
5
5
  import { Icon as d } from "../icon/Icon.js";
6
6
  import { Spinner as y } from "../spinner/Spinner.js";
7
7
  import { Tooltip as b } from "../tooltip/Tooltip.js";
8
- const N = w({
8
+ const N = h({
9
9
  base: [
10
10
  "uy:rounded-circle uy:cursor-pointer uy:flex uy:items-center uy:justify-center uy:transition-colors",
11
- "uy:active:bg-surface-neutral-active",
12
- "uy:data-[pressed]:bg-surface-neutral-pressed",
11
+ 'uy:disabled:cursor-not-allowed uy:disabled:text-content-neutral-disabled uy:disabled:data-[hovered="true"]:bg-transparent',
13
12
  "uy:focus-visible:outline-2 uy:focus-visible:outline-offset-2 uy:focus-visible:outline-utility-focus-ring",
14
- "uy:data-[disabled]:cursor-not-allowed uy:data-[disabled]:text-content-neutral-disabled",
15
13
  "uy:aria-busy:text-content-neutral-disabled uy:aria-busy:cursor-progress"
16
14
  ],
17
15
  variants: {
@@ -20,9 +18,28 @@ const N = w({
20
18
  large: "uy:w-400 uy:h-400"
21
19
  },
22
20
  color: {
23
- "content.neutral": "uy:text-content-neutral",
24
- "content.neutral.low": "uy:text-content-neutral-low",
25
- "content.neutral.lowest": "uy:text-content-neutral-lowest"
21
+ "content.neutral": [
22
+ "uy:text-content-neutral-low",
23
+ 'uy:data-[hovered="true"]:bg-surface-neutral-hover',
24
+ "uy:active:bg-surface-neutral-active",
25
+ "uy:data-[pressed=true]:bg-surface-neutral-active"
26
+ ],
27
+ "content.neutral.low": [
28
+ "uy:text-content-neutral-low",
29
+ 'uy:data-[hovered="true"]:bg-surface-neutral-low-hover',
30
+ "uy:active:bg-surface-neutral-low-active",
31
+ "uy:data-[pressed=true]:bg-surface-neutral-low-active",
32
+ "uy:focus-visible:bg-surface-neutral-low-focus",
33
+ "uy:disabled:bg-surface-neutral-low-disabled"
34
+ ],
35
+ "content.neutral.lowest": [
36
+ "uy:text-content-neutral-low",
37
+ 'uy:data-[hovered="true"]:bg-surface-neutral-lowest-hover',
38
+ "uy:active:bg-surface-neutral-lowest-active",
39
+ "uy:data-[pressed=true]:bg-surface-neutral-lowest-active",
40
+ "uy:focus-visible:bg-surface-neutral-lowest-focus",
41
+ "uy:disabled:bg-surface-neutral-lowest-disabled"
42
+ ]
26
43
  }
27
44
  },
28
45
  defaultVariants: {
@@ -30,63 +47,63 @@ const N = w({
30
47
  color: "content.neutral.low"
31
48
  }
32
49
  });
33
- function B(m) {
34
- const f = I(), {
35
- onPress: i,
36
- icon: n,
37
- color: p,
38
- size: r,
50
+ function B(f) {
51
+ const v = I(), {
52
+ onPress: o,
53
+ icon: u,
54
+ color: m,
55
+ size: l,
39
56
  isLoading: t,
40
57
  title: a,
41
- isDisabled: o,
42
- asElement: h = "default",
58
+ isDisabled: s,
59
+ asElement: p = "default",
43
60
  className: g,
44
- "aria-labelledby": v,
45
- ...s
46
- } = m, l = `icon-button-label-${f}`, u = N({ class: g, color: p, size: r });
47
- return h === "button" ? /* @__PURE__ */ e(b, { title: a, children: /* @__PURE__ */ c(
61
+ "aria-labelledby": w,
62
+ ...i
63
+ } = f, r = `icon-button-label-${v}`, n = N({ class: g, color: m, size: l });
64
+ return p === "button" ? /* @__PURE__ */ e(b, { title: a, children: /* @__PURE__ */ c(
48
65
  x,
49
66
  {
50
67
  "data-dd-privacy": "allow",
51
- ...s,
52
- onPress: i,
53
- isDisabled: o || t,
54
- "aria-labelledby": v ?? l,
68
+ ...i,
69
+ onPress: o,
70
+ isDisabled: s || t,
71
+ "aria-labelledby": w ?? r,
55
72
  "aria-busy": t,
56
- className: u,
73
+ className: n,
57
74
  children: [
58
75
  t ? /* @__PURE__ */ e(y, { size: "small", label: "Loading", color: "inherit" }) : /* @__PURE__ */ e(
59
76
  d,
60
77
  {
61
- src: n,
62
- size: r === "large" ? 24 : 20,
78
+ src: u,
79
+ size: l === "large" ? 24 : 20,
63
80
  color: "inherit",
64
81
  role: "presentation"
65
82
  }
66
83
  ),
67
- /* @__PURE__ */ e("span", { id: l, className: "uy:sr-only", children: a })
84
+ /* @__PURE__ */ e("span", { id: r, className: "uy:sr-only", children: a })
68
85
  ]
69
86
  }
70
87
  ) }) : /* @__PURE__ */ e(b, { title: a, children: /* @__PURE__ */ e(
71
88
  z,
72
89
  {
73
90
  "data-dd-privacy": "allow",
74
- ...s,
75
- onPress: i,
76
- isDisabled: o || t,
77
- "aria-labelledby": l,
91
+ ...i,
92
+ onPress: o,
93
+ isDisabled: s || t,
94
+ "aria-labelledby": r,
78
95
  "aria-busy": t,
79
- children: /* @__PURE__ */ c("div", { role: "button", "aria-disabled": o, className: u, children: [
96
+ children: /* @__PURE__ */ c("div", { role: "button", className: n, children: [
80
97
  t ? /* @__PURE__ */ e(y, { size: "small", label: "Loading", color: "inherit" }) : /* @__PURE__ */ e(
81
98
  d,
82
99
  {
83
- src: n,
84
- size: r === "large" ? 24 : 20,
100
+ src: u,
101
+ size: l === "large" ? 24 : 20,
85
102
  color: "inherit",
86
103
  role: "presentation"
87
104
  }
88
105
  ),
89
- /* @__PURE__ */ e("span", { id: l, className: "uy:sr-only", children: a })
106
+ /* @__PURE__ */ e("span", { id: r, className: "uy:sr-only", children: a })
90
107
  ] })
91
108
  }
92
109
  ) });
@@ -195,6 +195,7 @@ export declare const iconButtonGhost: import('tailwind-variants').TVReturnType<{
195
195
  };
196
196
  color: {
197
197
  neutral: string;
198
+ 'neutral.lowest': string;
198
199
  primary: string;
199
200
  danger: string;
200
201
  warning: string;
@@ -3,8 +3,9 @@ const t = e({
3
3
  slots: {
4
4
  button: [
5
5
  "uy:group",
6
- "uy:w-500 uy:min-w-500 uy:h-500 uy:min-h-500 uy:flex uy:justify-center uy:items-center uy:rounded-75 uy:cursor-pointer",
7
- "uy:focus-visible:outline-2 uy:focus-visible:outline-offset-2 uy:focus-visible:outline-utility-focus-ring"
6
+ "uy:w-5.5 uy:min-w-5.5 uy:h-5.5 uy:sm:w-500 uy:sm:min-w-500 uy:sm:h-500 uy:min-h-500 uy:flex uy:justify-center uy:items-center uy:rounded-100 uy:sm:rounded-75 uy:cursor-pointer",
7
+ "uy:focus-visible:outline-2 uy:focus-visible:outline-offset-2 uy:focus-visible:outline-utility-focus-ring",
8
+ "uy:transition-colors"
8
9
  ],
9
10
  icon: "uy:w-250 uy:h-250"
10
11
  },
@@ -31,7 +32,7 @@ const t = e({
31
32
  isDisabled: !1,
32
33
  isLoading: !1
33
34
  }
34
- }), n = e({
35
+ }), a = e({
35
36
  extend: t,
36
37
  variants: {
37
38
  variant: {
@@ -53,14 +54,14 @@ const t = e({
53
54
  class: {
54
55
  button: [
55
56
  "uy:bg-surface-primary-enabled",
56
- "uy:hover:bg-surface-primary-hover",
57
+ 'uy:data-[hovered="true"]:bg-surface-primary-hover',
57
58
  "uy:active:bg-surface-primary-active",
58
59
  "uy:focus-visible:bg-surface-primary-focus",
59
60
  "uy:data-[pressed]:bg-surface-primary-pressed"
60
61
  ],
61
62
  icon: [
62
63
  "uy:text-content-inverted-enabled",
63
- "uy:group-hover:text-content-inverted-hover",
64
+ 'uy:group-data-[hovered="true"]:text-content-inverted-hover',
64
65
  "uy:active:text-content-inverted-active",
65
66
  "uy:focus-visible:text-content-inverted-focus",
66
67
  "uy:data-[pressed]:text-content-inverted-pressed"
@@ -75,14 +76,14 @@ const t = e({
75
76
  class: {
76
77
  button: [
77
78
  "uy:bg-surface-danger-enabled",
78
- "uy:hover:bg-surface-danger-hover",
79
+ 'uy:data-[hovered="true"]:bg-surface-danger-hover',
79
80
  "uy:active:bg-surface-danger-active",
80
81
  "uy:focus:bg-surface-danger-focus",
81
82
  "uy:data-[pressed]:bg-surface-danger-pressed"
82
83
  ],
83
84
  icon: [
84
85
  "uy:text-content-inverted-enabled",
85
- "uy:group-hover:text-content-inverted-hover",
86
+ 'uy:group-data-[hovered="true"]:text-content-inverted-hover',
86
87
  "uy:active:text-content-inverted-active",
87
88
  "uy:focus:text-content-inverted-focus",
88
89
  "uy:data-[pressed]:text-content-inverted-pressed"
@@ -97,14 +98,14 @@ const t = e({
97
98
  class: {
98
99
  button: [
99
100
  "uy:bg-surface-warning-enabled",
100
- "uy:hover:bg-surface-warning-hover",
101
+ 'uy:data-[hovered="true"]:bg-surface-warning-hover',
101
102
  "uy:active:bg-surface-warning-pressed",
102
103
  "uy:focus-visible:bg-surface-warning-focus",
103
104
  "uy:data-[pressed]:bg-surface-warning-pressed"
104
105
  ],
105
106
  icon: [
106
107
  "uy:text-content-neutral-enabled",
107
- "uy:group-hover:text-content-neutral-hover",
108
+ 'uy:group-data-[hovered="true"]:text-content-neutral-hover',
108
109
  "uy:active:text-content-neutral-pressed",
109
110
  "uy:focus-visible:text-content-neutral-focus",
110
111
  "uy:data-[pressed]:text-content-neutral-pressed"
@@ -119,14 +120,14 @@ const t = e({
119
120
  class: {
120
121
  button: [
121
122
  "uy:bg-surface-neutral-enabled",
122
- "uy:hover:bg-surface-neutral-hover",
123
+ 'uy:data-[hovered="true"]:bg-surface-neutral-hover',
123
124
  "uy:active:bg-surface-neutral-pressed",
124
125
  "uy:focus-visible:bg-surface-neutral-focus",
125
126
  "uy:data-[pressed]:bg-surface-neutral-pressed"
126
127
  ],
127
128
  icon: [
128
129
  "uy:text-content-neutral-enabled",
129
- "uy:group-hover:text-content-neutral-hover",
130
+ 'uy:group-data-[hovered="true"]:text-content-neutral-hover',
130
131
  "uy:active:text-content-neutral-pressed",
131
132
  "uy:focus-visible:text-content-neutral-focus",
132
133
  "uy:data-[pressed]:text-content-neutral-pressed"
@@ -154,7 +155,7 @@ const t = e({
154
155
  }
155
156
  }
156
157
  ]
157
- }), a = e({
158
+ }), n = e({
158
159
  extend: t,
159
160
  variants: {
160
161
  variant: {
@@ -173,13 +174,13 @@ const t = e({
173
174
  class: {
174
175
  button: [
175
176
  "uy:border uy:border-solid uy:border-border-neutral-high-enabled",
176
- "uy:hover:border-border-neutral-high-hover",
177
+ 'uy:data-[hovered="true"]:border-border-neutral-high-hover',
177
178
  "uy:active:border-border-neutral-high-active",
178
179
  "uy:data-[pressed]:border-border-neutral-high-pressed"
179
180
  ],
180
181
  icon: [
181
182
  "uy:text-content-neutral-low-enabled",
182
- "uy:group-hover:text-content-low-neutral-hover",
183
+ 'uy:group-data-[hovered="true"]:text-content-low-neutral-hover',
183
184
  "uy:active:text-content-neutral-low-active",
184
185
  "uy:data-[pressed]:text-content-neutral-low-pressed",
185
186
  "uy:focus-visible:text-content-neutral-low-focus"
@@ -217,14 +218,14 @@ const t = e({
217
218
  class: {
218
219
  button: [
219
220
  "uy:border uy:border-solid uy:border-border-inverted",
220
- "uy:hover:border-border-inverted-hover",
221
+ 'uy:data-[hovered="true"]:border-border-inverted-hover',
221
222
  "uy:data-[pressed]:border-border-inverted-pressed",
222
223
  "uy:active:border-border-inverted-active",
223
224
  "uy:focus-visible:border-border-inverted-focus uy:focus-visible:outline-utility-inverted-focus-ring"
224
225
  ],
225
226
  icon: [
226
227
  "uy:text-content-inverted",
227
- "uy:group-hover:text-content-inverted-hover",
228
+ 'uy:group-data-[hovered="true"]:text-content-inverted-hover',
228
229
  "uy:data-[pressed]:text-content-inverted-pressed",
229
230
  "uy:active:text-content-inverted-active",
230
231
  "uy:focus-visible:text-content-inverted-focus"
@@ -252,6 +253,7 @@ const t = e({
252
253
  },
253
254
  color: {
254
255
  neutral: "",
256
+ "neutral.lowest": "",
255
257
  primary: "",
256
258
  danger: "",
257
259
  warning: "",
@@ -266,7 +268,7 @@ const t = e({
266
268
  class: {
267
269
  button: [
268
270
  "uy:bg-transparent",
269
- "uy:hover:bg-surface-inverted-hover",
271
+ 'uy:data-[hovered="true"]:bg-surface-inverted-hover',
270
272
  "uy:active:bg-surface-inverted-active",
271
273
  "uy:data-[pressed=true]:bg-surface-inverted-pressed",
272
274
  "uy:focus-visible:outline-utility-inverted-focus-ring",
@@ -274,7 +276,7 @@ const t = e({
274
276
  ],
275
277
  icon: [
276
278
  "uy:text-content-inverted",
277
- "uy:group-hover:text-content-inverted-hover",
279
+ 'uy:group-data-[hovered="true"]:text-content-inverted-hover',
278
280
  "uy:data-[pressed]:text-content-inverted-pressed",
279
281
  "uy:active:text-content-inverted-active",
280
282
  "uy:focus-visible:text-content-inverted-focus"
@@ -287,9 +289,23 @@ const t = e({
287
289
  isLoading: !1,
288
290
  class: {
289
291
  button: [
290
- "uy:hover:bg-surface-neutral-hover",
292
+ 'uy:data-[hovered="true"]:bg-surface-neutral-hover',
291
293
  "uy:data-[pressed]:bg-surface-neutral-pressed",
292
- "uy:active:bg-surface-neutral-active"
294
+ "uy:active:bg-surface-neutral-active",
295
+ "uy:data-[pressed=true]:bg-surface-neutral-pressed"
296
+ ],
297
+ icon: ["uy:text-content-neutral-low"]
298
+ }
299
+ },
300
+ {
301
+ color: "neutral.lowest",
302
+ isDisabled: !1,
303
+ isLoading: !1,
304
+ class: {
305
+ button: [
306
+ 'uy:data-[hovered="true"]:bg-surface-neutral-lowest-hover',
307
+ "uy:active:bg-surface-neutral-lowest-active",
308
+ "uy:data-[pressed=true]:bg-surface-neutral-lowest-pressed"
293
309
  ],
294
310
  icon: ["uy:text-content-neutral-low"]
295
311
  }
@@ -301,13 +317,13 @@ const t = e({
301
317
  class: {
302
318
  button: [
303
319
  "uy:text-content-primary-enabled",
304
- "uy:hover:bg-surface-primary-lowest-hover",
320
+ 'uy:data-[hovered="true"]:bg-surface-primary-lowest-hover',
305
321
  "uy:data-[pressed]:bg-surface-primary-lowest-pressed",
306
322
  "uy:active:bg-surface-primary-lowest-active"
307
323
  ],
308
324
  icon: [
309
325
  "uy:text-content-primary",
310
- "uy:group-hover:text-content-primary",
326
+ 'uy:group-data-[hovered="true"]:text-content-primary',
311
327
  "uy:data-[pressed]:text-content-primary",
312
328
  "uy:focus-visible:text-content-primary",
313
329
  "uy:active:text-content-primary"
@@ -320,13 +336,13 @@ const t = e({
320
336
  isLoading: !1,
321
337
  class: {
322
338
  button: [
323
- "uy:hover:bg-surface-danger-lowest-hover",
339
+ 'uy:data-[hovered="true"]:bg-surface-danger-lowest-hover',
324
340
  "uy:data-[pressed]:bg-surface-danger-lowest-pressed",
325
341
  "uy:active:bg-surface-danger-lowest-active"
326
342
  ],
327
343
  icon: [
328
344
  "uy:text-content-danger",
329
- "uy:group-hover:text-content-danger",
345
+ 'uy:group-data-[hovered="true"]:text-content-danger',
330
346
  "uy:data-[pressed]:text-content-danger",
331
347
  "uy:focus-visible:text-content-danger",
332
348
  "uy:active:text-content-danger"
@@ -339,13 +355,13 @@ const t = e({
339
355
  isLoading: !1,
340
356
  class: {
341
357
  button: [
342
- "uy:hover:bg-surface-warning-lowest-hover",
358
+ 'uy:data-[hovered="true"]:bg-surface-warning-lowest-hover',
343
359
  "uy:data-[pressed]:bg-surface-warning-lowest-pressed",
344
360
  "uy:active:bg-surface-warning-lowest-active"
345
361
  ],
346
362
  icon: [
347
363
  "uy:text-content-warning-high",
348
- "uy:group-hover:text-content-warning-high",
364
+ 'uy:group-data-[hovered="true"]:text-content-warning-high',
349
365
  "uy:data-[pressed]:text-content-warning-high",
350
366
  "uy:focus-visible:text-content-warning-high",
351
367
  "uy:active:text-content-warning-high"
@@ -374,6 +390,6 @@ const t = e({
374
390
  });
375
391
  export {
376
392
  s as iconButtonGhost,
377
- n as iconButtonPrimary,
378
- a as iconButtonSecondary
393
+ a as iconButtonPrimary,
394
+ n as iconButtonSecondary
379
395
  };
@@ -0,0 +1,23 @@
1
+ import { RefObject } from 'react';
2
+ export type InlineFieldGroupMode = 'read' | 'edit';
3
+ export interface InlineFieldGroupContextValue {
4
+ /** Current mode: read or edit */
5
+ mode: InlineFieldGroupMode;
6
+ /** Switch to edit mode */
7
+ enterEditMode: () => void;
8
+ /** Exit edit mode (cancel or save) */
9
+ exitEditMode: () => void;
10
+ /** Unique ID for the field group (for aria attributes) */
11
+ groupId: string;
12
+ /** ID for the header title (for aria-labelledby) */
13
+ headerId: string;
14
+ /** ID for the edit view container (for aria-controls) */
15
+ editViewId: string;
16
+ /** Whether the component is in a loading state */
17
+ isLoading?: boolean;
18
+ /** Ref to the edit button for focus management */
19
+ editButtonRef?: RefObject<HTMLButtonElement>;
20
+ /** Ref to the edit view container for focus management */
21
+ editViewRef?: RefObject<HTMLFieldSetElement>;
22
+ }
23
+ export declare const InlineFieldGroupContext: import('react').Context<InlineFieldGroupContextValue | undefined>;
@@ -0,0 +1,6 @@
1
+ import { createContext as e } from "react";
2
+ const o = e(void 0);
3
+ o.displayName = "InlineFieldGroupContext";
4
+ export {
5
+ o as InlineFieldGroupContext
6
+ };
@@ -0,0 +1,119 @@
1
+ import { default as React, PropsWithChildren } from 'react';
2
+ import { InlineFieldGroupMode } from './InlineFieldGroup.context.js';
3
+ /**
4
+ * Imperative handle for InlineFieldGroup component.
5
+ * Provides methods for programmatic control when needed for advanced use cases.
6
+ */
7
+ export interface InlineFieldGroupHandle {
8
+ /**
9
+ * Focuses the first invalid field in the edit view.
10
+ * Useful for custom validation error handling.
11
+ */
12
+ focusFirstInvalidField: () => void;
13
+ /**
14
+ * Exits edit mode programmatically.
15
+ */
16
+ exitEditMode: () => void;
17
+ /**
18
+ * Enters edit mode programmatically.
19
+ */
20
+ enterEditMode: () => void;
21
+ }
22
+ export interface InlineFieldGroupProps extends PropsWithChildren {
23
+ /**
24
+ * Controlled mode value. When provided, the component operates in controlled mode.
25
+ */
26
+ mode?: InlineFieldGroupMode;
27
+ /**
28
+ * Default mode value for uncontrolled mode.
29
+ * @default 'read'
30
+ */
31
+ defaultMode?: InlineFieldGroupMode;
32
+ /**
33
+ * Callback fired when mode changes.
34
+ */
35
+ onModeChange?: (mode: InlineFieldGroupMode) => void;
36
+ /**
37
+ * Callback to intercept and potentially prevent mode changes.
38
+ * Return `false` to prevent the mode transition.
39
+ * Return `true` or `undefined` to allow the transition.
40
+ */
41
+ shouldModeChange?: (fromMode: InlineFieldGroupMode, toMode: InlineFieldGroupMode) => boolean | undefined;
42
+ /**
43
+ * Whether the component is in a loading state (e.g., during async save).
44
+ */
45
+ isLoading?: boolean;
46
+ /**
47
+ * Optional className for custom styling
48
+ */
49
+ className?: string;
50
+ /**
51
+ * Optional aria-label for the form element.
52
+ * If not provided, aria-labelledby will reference the header title.
53
+ */
54
+ 'aria-label'?: string;
55
+ /**
56
+ * Success message to announce when save succeeds.
57
+ * If not provided, no success announcement is made.
58
+ */
59
+ successMessage?: string;
60
+ /**
61
+ * Error message to announce when save or validation fails.
62
+ * If not provided, generic validation errors are announced.
63
+ */
64
+ errorMessage?: string;
65
+ }
66
+ /**
67
+ * InlineFieldGroup enables group-level inline editing with read/edit mode switching.
68
+ * It integrates with TanStack Form for validation and state management, providing
69
+ * a complete pattern for displaying data in read mode and editing it in edit mode.
70
+ * The component handles the full edit lifecycle: mode transitions, form submission,
71
+ * validation error handling, and accessibility announcements.
72
+ * @example
73
+ * ```tsx
74
+ * import { useTanstackUnityForm } from '@payfit/unity-components'
75
+ *
76
+ * function ContactForm() {
77
+ * const form = useTanstackUnityForm({
78
+ * defaultValues: { email: 'user@example.com', phone: '+1234567890' },
79
+ * onSubmit: async ({ value }) => {
80
+ * await saveContact(value)
81
+ * }
82
+ * })
83
+ *
84
+ * return (
85
+ * <form.AppForm>
86
+ * <form.InlineFieldGroup successMessage="Contact saved!">
87
+ * <form.InlineFieldGroupHeader title="Contact Information" />
88
+ * <form.InlineFieldGroupReadView>
89
+ * <DefinitionList>
90
+ * <DefinitionItem term="Email" description={form.state.values.email} />
91
+ * </DefinitionList>
92
+ * </form.InlineFieldGroupReadView>
93
+ * <form.InlineFieldGroupEditView legend="Edit contact">
94
+ * <form.AppField name="email">
95
+ * {field => <field.TextField label="Email" />}
96
+ * </form.AppField>
97
+ * </form.InlineFieldGroupEditView>
98
+ * </form.InlineFieldGroup>
99
+ * </form.AppForm>
100
+ * )
101
+ * }
102
+ * ```
103
+ * @remarks
104
+ * - The component automatically exits edit mode on successful form submission
105
+ * - Press Escape to cancel editing and reset form values
106
+ * - Focus moves to the first form field when entering edit mode
107
+ * - Focus returns to the edit button when exiting edit mode
108
+ * - Focus is retained under a scope when in edit mode, to prevent users for leaving unfinished changes
109
+ * - Use `shouldModeChange` to intercept and conditionally prevent mode transitions
110
+ * - Use `successMessage` and `errorMessage` for accessible announcements via live regions
111
+ * @see {@link InlineFieldGroupProps} for all available props
112
+ * @see {@link InlineFieldGroupHandle} for imperative handle methods
113
+ * @see {@link InlineFieldGroupHeader} for the header component with action buttons
114
+ * @see {@link InlineFieldGroupReadView} for read mode content
115
+ * @see {@link InlineFieldGroupEditView} for edit mode form fields
116
+ * @see Source code in {@link https://github.com/PayFit/hr-apps/tree/master/libs/shared/unity/components/src/components/inline-field-group GitHub}
117
+ * @see Developer docs in {@link https://unity-components.payfit.io/?path=/docs/forms-reference-inlinefieldgroup--docs unity-components.payfit.io}
118
+ */
119
+ export declare const InlineFieldGroup: React.ForwardRefExoticComponent<InlineFieldGroupProps & React.RefAttributes<InlineFieldGroupHandle>>;