@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,48 @@
1
+ import { partition as l } from "./utils/partition.js";
2
+ function c(r) {
3
+ return typeof r == "object" && r !== null && "children" in r && Array.isArray(r.children);
4
+ }
5
+ function d(r) {
6
+ const t = r[Symbol.iterator]().next();
7
+ return t.done ? !1 : c(t.value);
8
+ }
9
+ function u(r, n) {
10
+ const t = Array.from(r), [i, s] = l(
11
+ t,
12
+ (e) => n.has(e.id)
13
+ );
14
+ return { selectedItems: i, remainingItems: s };
15
+ }
16
+ function m(r) {
17
+ const n = [];
18
+ return Array.from(r).forEach((t) => {
19
+ c(t) && t.children.forEach((i) => {
20
+ n.push(i);
21
+ });
22
+ }), { allItems: n };
23
+ }
24
+ function h(r, n) {
25
+ const { allItems: t } = m(r), i = t.filter((e) => n.has(e.id)), s = Array.from(r).map((e) => {
26
+ if (c(e)) {
27
+ const o = e.children.filter(
28
+ (a) => !n.has(a.id)
29
+ );
30
+ return {
31
+ ...e,
32
+ children: o
33
+ };
34
+ }
35
+ return e;
36
+ }).filter((e) => c(e) && e.children.length > 0);
37
+ return {
38
+ selectedItems: i,
39
+ remainingSections: s
40
+ };
41
+ }
42
+ export {
43
+ m as extractAllSelectableItems,
44
+ c as hasSectionChildren,
45
+ d as isNestedStructure,
46
+ u as processSelectedItemsForFlatDynamicItems,
47
+ h as processSelectedItemsForNestedDynamicItems
48
+ };
@@ -0,0 +1,23 @@
1
+ import { Key, Selection } from 'react-aria-components';
2
+ /**
3
+ * Hook to manage controlled/uncontrolled selection state.
4
+ * Follows React's controlled component pattern.
5
+ * @param value - Controlled value (undefined for uncontrolled mode)
6
+ * @param onChange - Callback when selection changes
7
+ * @returns Tuple of [currentSelection, handleSelectionChange]
8
+ * @example
9
+ * ```tsx
10
+ * // Controlled mode
11
+ * const [selection, setSelection] = useControlledSelection(
12
+ * selectedKeys,
13
+ * handleChange
14
+ * )
15
+ *
16
+ * // Uncontrolled mode
17
+ * const [selection, setSelection] = useControlledSelection(
18
+ * undefined,
19
+ * handleChange
20
+ * )
21
+ * ```
22
+ */
23
+ export declare function useControlledSelection(value: 'all' | Iterable<Key> | undefined, onChange?: (keys: Selection) => void): [Selection, (keys: Selection) => void];
@@ -0,0 +1,16 @@
1
+ import { useState as i, useMemo as S, useCallback as a } from "react";
2
+ function m(e, o) {
3
+ const [l, s] = i(/* @__PURE__ */ new Set()), t = e !== void 0, c = S(
4
+ () => t ? e === "all" ? "all" : e instanceof Set ? e : new Set(e) : l,
5
+ [t, e, l]
6
+ ), r = a(
7
+ (n) => {
8
+ t || s(n === "all" ? /* @__PURE__ */ new Set() : n), o?.(n);
9
+ },
10
+ [t, o]
11
+ );
12
+ return [c, r];
13
+ }
14
+ export {
15
+ m as useControlledSelection
16
+ };
@@ -0,0 +1,23 @@
1
+ import { Selection } from 'react-aria-components';
2
+ interface ProcessedItems<TType> {
3
+ selectedItems: TType[];
4
+ remainingItems: Iterable<TType> | undefined;
5
+ }
6
+ /**
7
+ * Hook to process items for selected-first sorting.
8
+ * Separates selected items into a dedicated section at the top.
9
+ * @param items - The items to process (flat or nested structure)
10
+ * @param selectedKeys - Currently selected keys
11
+ * @param enabled - Whether selected-first sorting is enabled
12
+ * @returns Processed items with selected items separated
13
+ * @example
14
+ * ```tsx
15
+ * const processed = useSelectedFirstSorting(
16
+ * items,
17
+ * selectedKeys,
18
+ * sortSelectedFirst
19
+ * )
20
+ * ```
21
+ */
22
+ export declare function useSelectedFirstSorting<TType extends object>(items: Iterable<TType> | undefined, selectedKeys: Selection, enabled: boolean): ProcessedItems<TType>;
23
+ export {};
@@ -0,0 +1,31 @@
1
+ import { useMemo as m } from "react";
2
+ import { isNestedStructure as c, processSelectedItemsForNestedDynamicItems as i, processSelectedItemsForFlatDynamicItems as o } from "../helpers.js";
3
+ function d(e, s, n) {
4
+ const r = m(() => s === "all" ? /* @__PURE__ */ new Set() : s, [s]);
5
+ return m(() => {
6
+ if (!n || !e || r.size === 0)
7
+ return { selectedItems: [], remainingItems: e };
8
+ if (c(e)) {
9
+ const t = i(
10
+ e,
11
+ r
12
+ );
13
+ return {
14
+ selectedItems: t.selectedItems,
15
+ remainingItems: t.remainingSections
16
+ };
17
+ } else {
18
+ const t = o(
19
+ e,
20
+ r
21
+ );
22
+ return {
23
+ selectedItems: t.selectedItems,
24
+ remainingItems: t.remainingItems
25
+ };
26
+ }
27
+ }, [e, r, n]);
28
+ }
29
+ export {
30
+ d as useSelectedFirstSorting
31
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Component displayed when no search results are found
3
+ * @internal
4
+ */
5
+ export declare const SelectListEmptyState: {
6
+ (): import("react/jsx-runtime").JSX.Element;
7
+ displayName: string;
8
+ };
@@ -0,0 +1,25 @@
1
+ import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
+ import { Icon as s } from "@payfit/unity-icons";
3
+ import { FormattedMessage as u } from "react-intl";
4
+ import { Text as t } from "../../text/Text.js";
5
+ const a = () => /* @__PURE__ */ r("div", { className: "uy:flex uy:flex-col uy:gap-200 uy:items-center uy:justify-center uy:h-full uy:py-600", children: [
6
+ /* @__PURE__ */ e(
7
+ t,
8
+ {
9
+ variant: "body",
10
+ className: "uy:w-500 uy:h-500 uy:bg-surface-neutral-lowest uy:flex uy:items-center uy:justify-center uy:rounded-75",
11
+ children: /* @__PURE__ */ e(s, { size: 24, src: "MagnifyingGlassOutlined" })
12
+ }
13
+ ),
14
+ /* @__PURE__ */ e(t, { variant: "bodyLarge", children: /* @__PURE__ */ e(
15
+ u,
16
+ {
17
+ id: "unity:component:autocomplete:panel:empty:label",
18
+ defaultMessage: "No results found"
19
+ }
20
+ ) })
21
+ ] });
22
+ a.displayName = "SelectListEmptyState";
23
+ export {
24
+ a as SelectListEmptyState
25
+ };
@@ -0,0 +1,118 @@
1
+ import { ListBoxSectionProps } from 'react-aria-components';
2
+ export declare const selectListOptGroup: import('tailwind-variants').TVReturnType<{
3
+ [key: string]: {
4
+ [key: string]: import('tailwind-merge').ClassNameValue | {
5
+ base?: import('tailwind-merge').ClassNameValue;
6
+ label?: import('tailwind-merge').ClassNameValue;
7
+ separator?: import('tailwind-merge').ClassNameValue;
8
+ };
9
+ };
10
+ } | {
11
+ [x: string]: {
12
+ [x: string]: import('tailwind-merge').ClassNameValue | {
13
+ base?: import('tailwind-merge').ClassNameValue;
14
+ label?: import('tailwind-merge').ClassNameValue;
15
+ separator?: import('tailwind-merge').ClassNameValue;
16
+ };
17
+ };
18
+ } | {}, {
19
+ base: string;
20
+ label: string;
21
+ separator: string;
22
+ }, undefined, {
23
+ [key: string]: {
24
+ [key: string]: import('tailwind-merge').ClassNameValue | {
25
+ base?: import('tailwind-merge').ClassNameValue;
26
+ label?: import('tailwind-merge').ClassNameValue;
27
+ separator?: import('tailwind-merge').ClassNameValue;
28
+ };
29
+ };
30
+ } | {}, {
31
+ base: string;
32
+ label: string;
33
+ separator: string;
34
+ }, import('tailwind-variants').TVReturnType<unknown, {
35
+ base: string;
36
+ label: string;
37
+ separator: string;
38
+ }, undefined, unknown, unknown, undefined>>;
39
+ /**
40
+ * Props for the SelectListOptGroup component.
41
+ * @template TType - The type of items when using the dynamic API
42
+ */
43
+ export interface SelectListOptGroupProps<TType extends object> extends ListBoxSectionProps<TType> {
44
+ /**
45
+ * The heading text for this group of options. Displayed above the group's options to provide visual and semantic organization.
46
+ */
47
+ label: string;
48
+ /**
49
+ * Adds a visual separator line below this group to create clear visual boundaries between groups. Set to `true` to enhance visual separation.
50
+ * @default false
51
+ */
52
+ withSeparator?: boolean;
53
+ }
54
+ /**
55
+ * Organizes related options into labeled sections within a `SelectList` component.
56
+ * Use this component to group related options together under a common label, improving scannability and organization for users. The component supports both static (directly nested children) and dynamic (items array with render function) APIs, and can optionally display a separator line to create clear visual boundaries between groups.
57
+ * @param {SelectListOptGroupProps} props - Regular props from React Aria's ListBoxSection, plus label and separator configuration
58
+ * @example
59
+ * ```tsx
60
+ * import { SelectList, SelectListOptGroup, SelectListOption } from '@payfit/unity-components'
61
+ *
62
+ * function Example() {
63
+ * const sections = [
64
+ * {
65
+ * id: 'fruits',
66
+ * label: 'Fruits',
67
+ * children: [
68
+ * { id: 'apple', label: 'Apple' },
69
+ * { id: 'banana', label: 'Banana' }
70
+ * ]
71
+ * },
72
+ * {
73
+ * id: 'vegetables',
74
+ * label: 'Vegetables',
75
+ * children: [
76
+ * { id: 'carrot', label: 'Carrot' },
77
+ * { id: 'lettuce', label: 'Lettuce' }
78
+ * ]
79
+ * }
80
+ * ]
81
+ *
82
+ * return (
83
+ * <SelectList items={sections} selectionMode="multiple" value={new Set()} onChange={() => {}}>
84
+ * {section => (
85
+ * <SelectListOptGroup
86
+ * id={section.id}
87
+ * label={section.label}
88
+ * items={section.children}
89
+ * withSeparator
90
+ * >
91
+ * {item => (
92
+ * <SelectListOption id={item.id}>
93
+ * {item.label}
94
+ * </SelectListOption>
95
+ * )}
96
+ * </SelectListOptGroup>
97
+ * )}
98
+ * </SelectList>
99
+ * )
100
+ * }
101
+ * ```
102
+ * @remarks
103
+ * - Use the `label` prop to provide a descriptive heading that clearly identifies the group's category
104
+ * - Set `withSeparator` to `true` to add a visual separator line below the group for enhanced visual organization
105
+ * - Supports both static API (directly nest `SelectListOption` components) and dynamic API (provide `items` array with render function)
106
+ * - This component must be used within a `SelectList` parent component to function properly
107
+ * - Groups are accessible with proper ARIA semantics for screen readers
108
+ * @see {@link SelectListOptGroupProps} for all available props
109
+ * @see {@link SelectListOption} for the child option component
110
+ * @see {@link SelectList} for the parent component's API
111
+ * @see Source code in {@link https://github.com/PayFit/hr-apps/tree/master/libs/shared/unity/components/src/components/select-list/parts GitHub}
112
+ * @see Developer docs in {@link https://unity-components.payfit.io/?path=/docs/data-selectlist-selectlistoptgroup unity-components.payfit.io}
113
+ */
114
+ declare function SelectListOptGroup<T extends object>(props: SelectListOptGroupProps<T>): import("react/jsx-runtime").JSX.Element;
115
+ declare namespace SelectListOptGroup {
116
+ var displayName: string;
117
+ }
118
+ export { SelectListOptGroup };
@@ -0,0 +1,28 @@
1
+ import { jsxs as y, jsx as t } from "react/jsx-runtime";
2
+ import { uyTv as c } from "@payfit/unity-themes";
3
+ import { ListBoxSection as i, Header as p, Collection as b, Separator as m } from "react-aria-components";
4
+ const d = c({
5
+ slots: {
6
+ base: "uy:flex uy:flex-col uy:bg-surface-neutral",
7
+ label: "uy:px-150 uy:py-100 uy:typography-body-strong uy:text-content-neutral",
8
+ separator: "uy:my-100 uy:border-t uy:border-border-neutral uy:border-solid"
9
+ }
10
+ });
11
+ function f(r) {
12
+ const { base: l, label: s, separator: a } = d(), {
13
+ label: o,
14
+ withSeparator: u = !1,
15
+ children: e,
16
+ ...n
17
+ } = r;
18
+ return /* @__PURE__ */ y(i, { ...n, className: l(), children: [
19
+ o && /* @__PURE__ */ t(p, { className: s(), children: o }),
20
+ typeof e == "function" ? /* @__PURE__ */ t(b, { items: r.items, children: e }) : e,
21
+ u && /* @__PURE__ */ t(m, { className: a() })
22
+ ] });
23
+ }
24
+ f.displayName = "SelectListOptGroup";
25
+ export {
26
+ f as SelectListOptGroup,
27
+ d as selectListOptGroup
28
+ };
@@ -0,0 +1,24 @@
1
+ import { default as React, ReactNode } from 'react';
2
+ import { ListBoxItemProps } from 'react-aria-components';
3
+ /**
4
+ * Props for the SelectListOption component.
5
+ * @template TType - The type of the item this option represents
6
+ */
7
+ export interface SelectListOptionProps<TType extends object> extends Omit<ListBoxItemProps<TType>, 'ref' | 'className' | 'style'> {
8
+ /**
9
+ * The content to display for this option. Typically a text label or rich content.
10
+ */
11
+ children: ReactNode;
12
+ /**
13
+ * Prevents the option from being selected when set to `true`. Disabled options are visually dimmed and cannot receive focus or interaction.
14
+ * @default false
15
+ */
16
+ isDisabled?: boolean;
17
+ /**
18
+ * Supplementary text displayed below the main option label. Use this to provide additional context or description about the option.
19
+ */
20
+ helperText?: string;
21
+ }
22
+ export declare const SelectListOption: <T extends object>(props: SelectListOptionProps<T> & {
23
+ ref?: React.ForwardedRef<HTMLDivElement>;
24
+ }) => React.JSX.Element;
@@ -0,0 +1,72 @@
1
+ import { jsx as t, jsxs as s } from "react/jsx-runtime";
2
+ import { forwardRef as f } from "react";
3
+ import { uyTv as b } from "@payfit/unity-themes";
4
+ import { ListBoxItem as m } from "react-aria-components";
5
+ import x from "../../../hooks/use-id.js";
6
+ import { CheckboxIndicator as v } from "../../checkbox/parts/CheckboxIndicator.js";
7
+ const h = b({
8
+ slots: {
9
+ base: [
10
+ "uy:flex uy:flex-col uy:transition",
11
+ "uy:w-full uy:px-150 uy:py-100",
12
+ "uy:rounded-50 uy:cursor-pointer",
13
+ "uy:hover:bg-surface-neutral-hover",
14
+ "uy:active:bg-surface-neutral-pressed",
15
+ "uy:data-[focus-visible]:outline uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:-outline-offset-2"
16
+ ],
17
+ label: "uy:inline-flex uy:items-center uy:gap-100 uy:text-content-neutral uy:typography-body",
18
+ helperText: "uy:inline-block uy:typography-body uy:text-content-neutral-low uy:pl-300"
19
+ },
20
+ variants: {
21
+ isDisabled: {
22
+ true: {
23
+ base: "uy:cursor-not-allowed!",
24
+ label: "uy:text-content-neutral-disabled"
25
+ },
26
+ false: {
27
+ base: ""
28
+ }
29
+ }
30
+ }
31
+ });
32
+ function a({
33
+ children: o,
34
+ isDisabled: i = !1,
35
+ textValue: u,
36
+ helperText: e,
37
+ ...r
38
+ }, n) {
39
+ const l = x(), {
40
+ base: y,
41
+ label: c,
42
+ helperText: d
43
+ } = h({ isDisabled: i });
44
+ return /* @__PURE__ */ t(
45
+ m,
46
+ {
47
+ "data-dd-privacy": "mask",
48
+ ...r,
49
+ className: y(),
50
+ textValue: u ?? o,
51
+ "aria-describedby": e ? `${l}-helper-text` : void 0,
52
+ children: ({ isSelected: p }) => /* @__PURE__ */ s("div", { ref: n, children: [
53
+ /* @__PURE__ */ s("div", { className: c(), children: [
54
+ /* @__PURE__ */ t(
55
+ v,
56
+ {
57
+ isSelected: p,
58
+ isDisabled: i
59
+ }
60
+ ),
61
+ o
62
+ ] }),
63
+ e && /* @__PURE__ */ t("span", { id: `${l}-helper-text`, className: d(), children: e })
64
+ ] })
65
+ }
66
+ );
67
+ }
68
+ a.displayName = "SelectListOption";
69
+ const C = f(a);
70
+ export {
71
+ C as SelectListOption
72
+ };
@@ -0,0 +1,2 @@
1
+ declare const SelectListSearchInput: import('react').ForwardRefExoticComponent<import('react').RefAttributes<HTMLDivElement>>;
2
+ export { SelectListSearchInput };
@@ -0,0 +1,43 @@
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { forwardRef as s } from "react";
3
+ import { uyTv as a } from "@payfit/unity-themes";
4
+ import { SearchField as c, Input as l } from "react-aria-components";
5
+ import { useIntl as y } from "react-intl";
6
+ import { CircularIconButton as m } from "../../icon-button/CircularIconButton.js";
7
+ import { Icon as p } from "../../icon/Icon.js";
8
+ const f = a({
9
+ slots: {
10
+ base: "uy:flex uy:gap-100 uy:items-center uy:transition-colors uy:py-125 uy:sm:py-100 uy:px-150 uy:rounded-100 uy:sm:rounded-75 uy:bg-surface-form-high-enabled uy:focus-within:outline-utility-focus-ring uy:focus-within:outline-2 uy:focus-within:outline-offset-2 uy:text-content-form-active uy:typography-body",
11
+ input: "uy:flex-grow uy:outline-none uy:[&::-webkit-search-cancel-button]:hidden",
12
+ button: "uy:text-content-neutral-enabled"
13
+ }
14
+ }), d = s((h, e) => {
15
+ const o = y(), { base: n, input: u, button: r } = f();
16
+ return /* @__PURE__ */ i(c, { className: n(), ref: e, "data-dd-privacy": "mask", children: [
17
+ /* @__PURE__ */ t(
18
+ p,
19
+ {
20
+ src: "MagnifyingGlassOutlined",
21
+ role: "presentation",
22
+ color: "content.neutral.lowest"
23
+ }
24
+ ),
25
+ /* @__PURE__ */ t(l, { className: u() }),
26
+ /* @__PURE__ */ t(
27
+ m,
28
+ {
29
+ title: o.formatMessage({
30
+ id: "unity:component:common:clear:title",
31
+ defaultMessage: "Clear"
32
+ }),
33
+ className: r(),
34
+ icon: "CloseOutlined",
35
+ asElement: "button"
36
+ }
37
+ )
38
+ ] });
39
+ });
40
+ d.displayName = "SelectListSearchInput";
41
+ export {
42
+ d as SelectListSearchInput
43
+ };
@@ -0,0 +1,54 @@
1
+ import { SelectionBehavior } from '@react-types/shared';
2
+ import { Key, Selection, SelectionMode } from 'react-aria-components';
3
+ interface SelectableItem {
4
+ id: Key;
5
+ label: string;
6
+ [key: string]: unknown;
7
+ }
8
+ export interface SelectedItemsSectionProps<TType extends SelectableItem> {
9
+ /**
10
+ * Array of selected items to display
11
+ */
12
+ items: TType[];
13
+ /**
14
+ * Currently selected keys
15
+ */
16
+ selectedKeys: Selection;
17
+ /**
18
+ * Callback when selection changes
19
+ */
20
+ onSelectionChange: (keys: Selection) => void;
21
+ /**
22
+ * Selection mode (single, multiple)
23
+ */
24
+ selectionMode?: SelectionMode;
25
+ /**
26
+ * Selection behavior (toggle, replace)
27
+ */
28
+ selectionBehavior?: SelectionBehavior;
29
+ /**
30
+ * Accessible label for the section
31
+ */
32
+ label: string;
33
+ /**
34
+ * CSS class for the ListBox
35
+ */
36
+ className: string;
37
+ }
38
+ /**
39
+ * Displays selected items in a dedicated section at the top of the list.
40
+ * Items in this section can be deselected to move them back to the main list.
41
+ * @example
42
+ * ```tsx
43
+ * <SelectedItemsSection
44
+ * items={selectedItems}
45
+ * selectedKeys={selectedKeys}
46
+ * onSelectionChange={handleChange}
47
+ * selectionMode="multiple"
48
+ * label="Selected Options"
49
+ * className={selectedListBoxStyles}
50
+ * />
51
+ * ```
52
+ */
53
+ export declare function SelectedItemsSection<TType extends SelectableItem>({ items, selectedKeys, onSelectionChange, selectionMode, selectionBehavior, label, className, ...rest }: SelectedItemsSectionProps<TType>): import("react/jsx-runtime").JSX.Element | null;
54
+ export {};
@@ -0,0 +1,35 @@
1
+ import { jsxs as a, jsx as e } from "react/jsx-runtime";
2
+ import { Header as h, ListBox as p, Collection as u } from "react-aria-components";
3
+ import { SelectListOption as f } from "./SelectListOption.js";
4
+ function S({
5
+ items: r,
6
+ selectedKeys: o,
7
+ onSelectionChange: n,
8
+ selectionMode: i,
9
+ selectionBehavior: c,
10
+ label: t,
11
+ className: d,
12
+ ...s
13
+ }) {
14
+ return r.length === 0 ? null : /* @__PURE__ */ a("div", { children: [
15
+ /* @__PURE__ */ e(h, { className: "uy:sr-only", children: t }),
16
+ /* @__PURE__ */ e(
17
+ p,
18
+ {
19
+ className: d,
20
+ items: r,
21
+ selectedKeys: o,
22
+ onSelectionChange: n,
23
+ selectionMode: i,
24
+ selectionBehavior: c,
25
+ escapeKeyBehavior: "none",
26
+ shouldFocusWrap: !1,
27
+ ...s,
28
+ children: /* @__PURE__ */ e(u, { items: r, children: (l) => /* @__PURE__ */ e(f, { id: l.id, children: l.label }) })
29
+ }
30
+ )
31
+ ] });
32
+ }
33
+ export {
34
+ S as SelectedItemsSection
35
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Partitions an array into two arrays based on a predicate function.
3
+ * More efficient than using filter twice.
4
+ * @param array - Array to partition
5
+ * @param predicate - Function to test each element
6
+ * @returns Tuple of [passing items, failing items]
7
+ * @example
8
+ * ```tsx
9
+ * const [evens, odds] = partition([1, 2, 3, 4], n => n % 2 === 0)
10
+ * // evens: [2, 4], odds: [1, 3]
11
+ * ```
12
+ */
13
+ export declare function partition<T>(array: T[], predicate: (item: T) => boolean): [T[], T[]];
@@ -0,0 +1,9 @@
1
+ function e(n, i) {
2
+ const o = [], s = [];
3
+ for (const t of n)
4
+ i(t) ? o.push(t) : s.push(t);
5
+ return [o, s];
6
+ }
7
+ export {
8
+ e as partition
9
+ };
@@ -1,6 +1,2 @@
1
1
  import { ToggleGroupState } from 'react-stately';
2
- export interface SelectableButtonGroupContextValue {
3
- state: ToggleGroupState;
4
- isInvalid?: boolean;
5
- }
6
- export declare const SelectableButtonGroupContext: import('react').Context<SelectableButtonGroupContextValue | null>;
2
+ export declare const SelectableButtonGroupContext: import('react').Context<ToggleGroupState | null>;
@@ -1,7 +1,7 @@
1
1
  import { VariantProps } from '@payfit/unity-themes';
2
2
  import { AriaToggleButtonGroupProps } from 'react-aria';
3
3
  import { Key } from 'react-stately';
4
- export declare const selectableButtonGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy:flex uy:gap-100", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy:flex uy:gap-100", unknown, unknown, undefined>>;
4
+ export declare const selectableButtonGroup: import('tailwind-variants').TVReturnType<{} | {} | {}, undefined, "uy:group uy:flex uy:gap-100 uy:flex-wrap", {} | {}, undefined, import('tailwind-variants').TVReturnType<unknown, undefined, "uy:group uy:flex uy:gap-100 uy:flex-wrap", unknown, unknown, undefined>>;
5
5
  export interface SelectableButtonGroupProps extends VariantProps<typeof selectableButtonGroup>, Omit<AriaToggleButtonGroupProps, 'selectedKeys' | 'defaultSelectedKeys' | 'onSelectionChange' | 'style'> {
6
6
  /**
7
7
  * The SelectableButton components to render within the group.
@@ -26,6 +26,11 @@ export interface SelectableButtonGroupProps extends VariantProps<typeof selectab
26
26
  * Required when using the component in controlled mode.
27
27
  */
28
28
  onChange?: (keys: Key[]) => void;
29
+ /**
30
+ * Callback fired when focus leaves the group.
31
+ * Useful for form validation and tracking user interaction.
32
+ */
33
+ onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
29
34
  /**
30
35
  * Marks the group and all contained buttons as invalid, applying error styles.
31
36
  * Use this to indicate a validation error for the group.