@payfit/unity-components 1.2.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 (460) hide show
  1. package/dist/esm/components/action-bar/ActionBar.js +14 -14
  2. package/dist/esm/components/actionable/Actionable.js +31 -28
  3. package/dist/esm/components/alert/Alert.js +41 -29
  4. package/dist/esm/components/alert/parts/AlertTitle.js +8 -8
  5. package/dist/esm/components/app-layout/AppLayout.d.ts +2 -0
  6. package/dist/esm/components/app-layout/AppLayout.js +17 -17
  7. package/dist/esm/components/app-menu/parts/AppMenuFooter.js +23 -23
  8. package/dist/esm/components/app-menu/parts/AppMenuHeader.d.ts +87 -5
  9. package/dist/esm/components/app-menu/parts/AppMenuHeader.js +25 -25
  10. package/dist/esm/components/autocomplete/Autocomplete.d.ts +0 -9
  11. package/dist/esm/components/autocomplete/Autocomplete.js +54 -57
  12. package/dist/esm/components/autocomplete/parts/AutocompleteItem.js +8 -8
  13. package/dist/esm/components/avatar/Avatar.variants.js +1 -1
  14. package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
  15. package/dist/esm/components/badge/Badge.js +1 -1
  16. package/dist/esm/components/breadcrumbs/Breadcrumbs.context.js +3 -3
  17. package/dist/esm/components/breadcrumbs/Breadcrumbs.d.ts +19 -11
  18. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +29 -18
  19. package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
  20. package/dist/esm/components/breadcrumbs/parts/Breadcrumb.d.ts +30 -5
  21. package/dist/esm/components/breadcrumbs/parts/Breadcrumb.js +35 -27
  22. package/dist/esm/components/breadcrumbs/parts/RawBreadcrumbLink.d.ts +37 -0
  23. package/dist/esm/components/breadcrumbs/parts/RawBreadcrumbLink.js +36 -0
  24. package/dist/esm/components/button/Button.js +6 -6
  25. package/dist/esm/components/button/Button.variants.d.ts +1 -0
  26. package/dist/esm/components/button/Button.variants.js +22 -15
  27. package/dist/esm/components/card/Card.context.d.ts +5 -0
  28. package/dist/esm/components/card/Card.context.js +14 -0
  29. package/dist/esm/components/card/Card.d.ts +210 -0
  30. package/dist/esm/components/card/Card.js +93 -0
  31. package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
  32. package/dist/esm/components/card/parts/CardContent.js +8 -0
  33. package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
  34. package/dist/esm/components/card/parts/CardTitle.js +33 -0
  35. package/dist/esm/components/checkbox/Checkbox.js +38 -30
  36. package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
  37. package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
  38. package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
  39. package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
  40. package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
  41. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
  42. package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
  43. package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
  44. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
  45. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
  46. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
  47. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
  48. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
  49. package/dist/esm/components/client-side-pagination/ClientSidePagination.d.ts +103 -0
  50. package/dist/esm/components/client-side-pagination/ClientSidePagination.js +177 -0
  51. package/dist/esm/components/client-side-pagination/parts/PaginationEllipsis.d.ts +11 -0
  52. package/dist/esm/components/client-side-pagination/parts/PaginationEllipsis.js +30 -0
  53. package/dist/esm/components/client-side-pagination/parts/PaginationJumpDialog.d.ts +8 -0
  54. package/dist/esm/components/{pagination → client-side-pagination}/parts/PaginationNavButton.js +1 -1
  55. package/dist/esm/components/{pagination/parts/PaginationLink.d.ts → client-side-pagination/parts/RawPaginationLink.d.ts} +2 -2
  56. package/dist/esm/components/{pagination/parts/PaginationLink.js → client-side-pagination/parts/RawPaginationLink.js} +12 -12
  57. package/dist/esm/components/client-side-pagination/utils/pagination-window.d.ts +8 -0
  58. package/dist/esm/components/client-side-pagination/utils/pagination-window.js +33 -0
  59. package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
  60. package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
  61. package/dist/esm/components/data-table/DataTable.d.ts +109 -16
  62. package/dist/esm/components/data-table/DataTable.js +107 -93
  63. package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
  64. package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
  65. package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
  66. package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
  67. package/dist/esm/components/date-picker/DatePicker.js +59 -50
  68. package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
  69. package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
  70. package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
  71. package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
  72. package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
  73. package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
  74. package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
  75. package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
  76. package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
  77. package/dist/esm/components/dialog/Dialog.d.ts +34 -22
  78. package/dist/esm/components/dialog/Dialog.js +90 -52
  79. package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
  80. package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
  81. package/dist/esm/components/dialog/test-utils.d.ts +28 -0
  82. package/dist/esm/components/dialog/test-utils.js +78 -0
  83. package/dist/esm/components/error-state/ErrorState.d.ts +13 -1
  84. package/dist/esm/components/error-state/ErrorState.js +133 -92
  85. package/dist/esm/components/error-state/initConfig.js +1 -1
  86. package/dist/esm/components/fieldset/Fieldset.d.ts +19 -0
  87. package/dist/esm/components/fieldset/Fieldset.js +32 -26
  88. package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
  89. package/dist/esm/components/filter/Filter.controls.js +45 -0
  90. package/dist/esm/components/filter/Filter.d.ts +189 -0
  91. package/dist/esm/components/filter/Filter.js +147 -0
  92. package/dist/esm/components/filter/Filter.types.d.ts +121 -0
  93. package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
  94. package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
  95. package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
  96. package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
  97. package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
  98. package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
  99. package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
  100. package/dist/esm/components/filter/parts/FilterButton.js +55 -0
  101. package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
  102. package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
  103. package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
  104. package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
  105. package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
  106. package/dist/esm/components/filter/utils/value-formatters.js +14 -0
  107. package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
  108. package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
  109. package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
  110. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
  111. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
  112. package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
  113. package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
  114. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
  115. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
  116. package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
  117. package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
  118. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
  119. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
  120. package/dist/esm/components/flex/Flex.js +52 -37
  121. package/dist/esm/components/form/Form.d.ts +2 -0
  122. package/dist/esm/components/form/TanstackForm.d.ts +24 -0
  123. package/dist/esm/components/form/TanstackForm.js +29 -0
  124. package/dist/esm/components/form-field/FormField.d.ts +2 -0
  125. package/dist/esm/components/form-field/FormField.js +12 -12
  126. package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
  127. package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
  128. package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
  129. package/dist/esm/components/form-field/TanstackFormField.js +46 -0
  130. package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
  131. package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
  132. package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
  133. package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
  134. package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +22 -0
  135. package/dist/esm/components/form-field/parts/RawFormContextualLink.js +39 -0
  136. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
  137. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
  138. package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
  139. package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
  140. package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
  141. package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
  142. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
  143. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
  144. package/dist/esm/components/funnel-layout/parts/FunnelSidebar.d.ts +2 -2
  145. package/dist/esm/components/icon/Icon.js +23 -19
  146. package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
  147. package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
  148. package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
  149. package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
  150. package/dist/esm/components/input/Input.js +36 -35
  151. package/dist/esm/components/input/TanstackInput.d.ts +22 -0
  152. package/dist/esm/components/input/TanstackInput.js +38 -0
  153. package/dist/esm/components/label/Label.js +12 -12
  154. package/dist/esm/components/link/{Link.variants.d.ts → RawLink.d.ts} +92 -0
  155. package/dist/esm/components/link/{Link.variants.js → RawLink.js} +78 -5
  156. package/dist/esm/components/list-view/ListView.d.ts +56 -0
  157. package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
  158. package/dist/esm/components/list-view/ListView.js +44 -0
  159. package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
  160. package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
  161. package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
  162. package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
  163. package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
  164. package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
  165. package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
  166. package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
  167. package/dist/esm/components/menu/parts/{MenuItem.d.ts → RawMenuItem.d.ts} +3 -4
  168. package/dist/esm/components/menu/parts/{MenuItem.js → RawMenuItem.js} +9 -9
  169. package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
  170. package/dist/esm/components/multi-select/MultiSelect.js +199 -176
  171. package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
  172. package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
  173. package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
  174. package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
  175. package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
  176. package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
  177. package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
  178. package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
  179. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
  180. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
  181. package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
  182. package/dist/esm/components/multi-select-field/test-utils.js +45 -0
  183. package/dist/esm/components/nav/parts/NavGroup.d.ts +3 -3
  184. package/dist/esm/components/nav/parts/NavGroup.js +62 -51
  185. package/dist/esm/components/nav/parts/{NavItem.d.ts → RawNavItem.d.ts} +102 -5
  186. package/dist/esm/components/nav/parts/RawNavItem.js +106 -0
  187. package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
  188. package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
  189. package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
  190. package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
  191. package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
  192. package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
  193. package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
  194. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
  195. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
  196. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
  197. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
  198. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
  199. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
  200. package/dist/esm/components/number-field/NumberField.d.ts +2 -0
  201. package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
  202. package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
  203. package/dist/esm/components/number-input/NumberInput.js +31 -29
  204. package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
  205. package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
  206. package/dist/esm/components/page/Page.js +13 -12
  207. package/dist/esm/components/page/parts/PageHeader.d.ts +79 -9
  208. package/dist/esm/components/page/parts/PageHeader.js +22 -20
  209. package/dist/esm/components/pagination/Pagination.d.ts +23 -44
  210. package/dist/esm/components/pagination/Pagination.js +89 -163
  211. package/dist/esm/components/pagination/PaginationContext.d.ts +11 -0
  212. package/dist/esm/components/pagination/PaginationContext.js +15 -0
  213. package/dist/esm/components/pagination/hooks/use-pagination-state.d.ts +63 -0
  214. package/dist/esm/components/pagination/hooks/use-pagination-state.js +27 -0
  215. package/dist/esm/components/pagination/hooks/use-pagination-window.d.ts +64 -0
  216. package/dist/esm/components/pagination/hooks/use-pagination-window.js +15 -0
  217. package/dist/esm/components/pagination/parts/PaginationContent.d.ts +30 -0
  218. package/dist/esm/components/pagination/parts/PaginationContent.js +37 -0
  219. package/dist/esm/components/pagination/parts/PaginationEllipsis.d.ts +23 -4
  220. package/dist/esm/components/pagination/parts/PaginationEllipsis.js +20 -16
  221. package/dist/esm/components/pagination/parts/PaginationItem.d.ts +38 -0
  222. package/dist/esm/components/pagination/parts/PaginationItem.js +22 -0
  223. package/dist/esm/components/pagination/parts/RawPaginationLink.d.ts +11 -0
  224. package/dist/esm/components/pagination/parts/RawPaginationLink.js +60 -0
  225. package/dist/esm/components/pagination/parts/RawPaginationNext.d.ts +22 -0
  226. package/dist/esm/components/pagination/parts/RawPaginationNext.js +70 -0
  227. package/dist/esm/components/pagination/parts/RawPaginationPrevious.d.ts +22 -0
  228. package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +67 -0
  229. package/dist/esm/components/pagination/utils/pagination-window.js +29 -20
  230. package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
  231. package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
  232. package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
  233. package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
  234. package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
  235. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
  236. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
  237. package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
  238. package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
  239. package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
  240. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
  241. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
  242. package/dist/esm/components/pill/Pill.d.ts +2 -2
  243. package/dist/esm/components/pill/Pill.js +8 -8
  244. package/dist/esm/components/popover/Popover.js +6 -6
  245. package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
  246. package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
  247. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
  248. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
  249. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
  250. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
  251. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
  252. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
  253. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
  254. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
  255. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
  256. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
  257. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
  258. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
  259. package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
  260. package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
  261. package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
  262. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
  263. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
  264. package/dist/esm/components/search/Search.js +46 -46
  265. package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
  266. package/dist/esm/components/select/Select.d.ts +5 -4
  267. package/dist/esm/components/select/Select.js +79 -53
  268. package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
  269. package/dist/esm/components/select/TanstackSelect.js +34 -0
  270. package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
  271. package/dist/esm/components/select/parts/SearchInput.js +49 -31
  272. package/dist/esm/components/select/parts/SelectButton.js +19 -17
  273. package/dist/esm/components/select/parts/SelectOption.js +9 -9
  274. package/dist/esm/components/select-field/SelectField.d.ts +2 -0
  275. package/dist/esm/components/select-field/SelectField.js +8 -9
  276. package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
  277. package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
  278. package/dist/esm/components/select-list/SelectList.d.ts +95 -0
  279. package/dist/esm/components/select-list/SelectList.js +79 -0
  280. package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
  281. package/dist/esm/components/select-list/constants.d.ts +36 -0
  282. package/dist/esm/components/select-list/constants.js +29 -0
  283. package/dist/esm/components/select-list/helpers.d.ts +42 -0
  284. package/dist/esm/components/select-list/helpers.js +48 -0
  285. package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
  286. package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
  287. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
  288. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
  289. package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
  290. package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
  291. package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
  292. package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
  293. package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
  294. package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
  295. package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
  296. package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
  297. package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
  298. package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
  299. package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
  300. package/dist/esm/components/select-list/utils/partition.js +9 -0
  301. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
  302. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
  303. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
  304. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
  305. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
  306. package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
  307. package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
  308. package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
  309. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
  310. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
  311. package/dist/esm/components/selectable-card/internals/Description.js +1 -1
  312. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
  313. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
  314. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
  315. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
  316. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
  317. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
  318. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
  319. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
  320. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
  321. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
  322. package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
  323. package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
  324. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
  325. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
  326. package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
  327. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
  328. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
  329. package/dist/esm/components/skip-links/SkipLinks.js +1 -1
  330. package/dist/esm/components/table/Table.context.d.ts +5 -0
  331. package/dist/esm/components/table/Table.context.js +14 -13
  332. package/dist/esm/components/table/Table.d.ts +94 -0
  333. package/dist/esm/components/table/Table.js +145 -108
  334. package/dist/esm/components/table/hooks/useTableKeyboardNavigation.js +6 -6
  335. package/dist/esm/components/table/parts/TableBody.js +83 -21
  336. package/dist/esm/components/table/parts/TableCell.js +29 -26
  337. package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
  338. package/dist/esm/components/table/parts/TableHeader.js +1 -1
  339. package/dist/esm/components/table/parts/TablePagination.d.ts +5 -5
  340. package/dist/esm/components/table/parts/TablePagination.js +11 -11
  341. package/dist/esm/components/table/parts/TableRow.js +22 -18
  342. package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
  343. package/dist/esm/components/tabs/Tabs.variant.js +11 -12
  344. package/dist/esm/components/tabs/parts/{Tab.d.ts → RawTab.d.ts} +2 -2
  345. package/dist/esm/components/tabs/parts/{Tab.js → RawTab.js} +6 -6
  346. package/dist/esm/components/task-menu/TaskMenu.d.ts +4 -4
  347. package/dist/esm/components/task-menu/parts/{SubTask.d.ts → RawSubTask.d.ts} +7 -7
  348. package/dist/esm/components/task-menu/parts/{SubTask.js → RawSubTask.js} +43 -43
  349. package/dist/esm/components/task-menu/parts/{Task.d.ts → RawTask.d.ts} +7 -7
  350. package/dist/esm/components/task-menu/parts/{Task.js → RawTask.js} +45 -41
  351. package/dist/esm/components/task-menu/parts/TaskGroup.d.ts +5 -5
  352. package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
  353. package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
  354. package/dist/esm/components/text/Text.d.ts +11 -1
  355. package/dist/esm/components/text/Text.js +43 -30
  356. package/dist/esm/components/text/Text.variants.d.ts +12 -0
  357. package/dist/esm/components/text/Text.variants.js +4 -0
  358. package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
  359. package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
  360. package/dist/esm/components/text-area/TextArea.js +31 -29
  361. package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
  362. package/dist/esm/components/text-field/TanstackTextField.js +60 -0
  363. package/dist/esm/components/text-field/TextField.d.ts +2 -0
  364. package/dist/esm/components/toast/UnityToast.js +5 -5
  365. package/dist/esm/components/toast/test-utils.d.ts +36 -0
  366. package/dist/esm/components/toast/test-utils.js +118 -0
  367. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
  368. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
  369. package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
  370. package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
  371. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
  372. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
  373. package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
  374. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
  375. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
  376. package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
  377. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
  378. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
  379. package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
  380. package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
  381. package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
  382. package/dist/esm/hooks/tanstack-form-context.js +8 -0
  383. package/dist/esm/hooks/use-container-query-level.d.ts +42 -0
  384. package/dist/esm/hooks/use-container-query-level.js +33 -0
  385. package/dist/esm/hooks/use-form.d.ts +2 -0
  386. package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
  387. package/dist/esm/hooks/use-has-scroll.js +75 -0
  388. package/dist/esm/hooks/use-tanstack-form.d.ts +369 -0
  389. package/dist/esm/hooks/use-tanstack-form.js +209 -0
  390. package/dist/esm/index.d.ts +64 -30
  391. package/dist/esm/index.js +482 -394
  392. package/dist/esm/index.storybook-testing.d.ts +3 -0
  393. package/dist/esm/integrations/tanstack-router/components/breadcrumbs/Breadcrumb.d.ts +23 -0
  394. package/dist/esm/integrations/tanstack-router/components/breadcrumbs/BreadcrumbLink.d.ts +38 -0
  395. package/dist/esm/integrations/tanstack-router/components/breadcrumbs/BreadcrumbLink.js +7 -0
  396. package/dist/esm/integrations/tanstack-router/components/breadcrumbs/Breadcrumbs.d.ts +23 -0
  397. package/dist/esm/integrations/tanstack-router/components/breadcrumbs/use-route-breadcrumb.d.ts +53 -0
  398. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +45 -0
  399. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.js +7 -0
  400. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
  401. package/dist/esm/integrations/tanstack-router/components/link/Link.d.ts +33 -0
  402. package/dist/esm/integrations/tanstack-router/components/link/Link.js +7 -0
  403. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
  404. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
  405. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
  406. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
  407. package/dist/esm/integrations/tanstack-router/components/menu-item/MenuItem.d.ts +49 -0
  408. package/dist/esm/integrations/tanstack-router/components/menu-item/MenuItem.js +16 -0
  409. package/dist/esm/integrations/tanstack-router/components/nav-item/NavItem.d.ts +52 -0
  410. package/dist/esm/integrations/tanstack-router/components/nav-item/NavItem.js +29 -0
  411. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
  412. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
  413. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationLink.d.ts +54 -0
  414. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationLink.js +21 -0
  415. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationNext.d.ts +52 -0
  416. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationNext.js +22 -0
  417. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationPrevious.d.ts +51 -0
  418. package/dist/esm/integrations/tanstack-router/components/pagination/PaginationPrevious.js +22 -0
  419. package/dist/esm/integrations/tanstack-router/components/tabs/Tabs.d.ts +82 -0
  420. package/dist/esm/integrations/tanstack-router/components/tabs/Tabs.js +41 -0
  421. package/dist/esm/integrations/tanstack-router/components/tabs/parts/Tab.d.ts +52 -0
  422. package/dist/esm/integrations/tanstack-router/components/tabs/parts/Tab.js +15 -0
  423. package/dist/esm/integrations/tanstack-router/components/tabs/parts/TabList.d.ts +5 -0
  424. package/dist/esm/integrations/tanstack-router/components/tabs/parts/TabPanel.d.ts +77 -0
  425. package/dist/esm/integrations/tanstack-router/components/tabs/parts/TabPanel.js +16 -0
  426. package/dist/esm/integrations/tanstack-router/components/task-menu/SubTask.d.ts +69 -0
  427. package/dist/esm/integrations/tanstack-router/components/task-menu/SubTask.js +14 -0
  428. package/dist/esm/integrations/tanstack-router/components/task-menu/Task.d.ts +64 -0
  429. package/dist/esm/integrations/tanstack-router/components/task-menu/Task.js +14 -0
  430. package/dist/esm/integrations/tanstack-router/index.d.ts +19 -0
  431. package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +23 -0
  432. package/dist/esm/integrations/tanstack-router.js +40 -0
  433. package/dist/esm/mocks/employees.d.ts +1 -5
  434. package/dist/esm/providers/router/RouterProvider.d.ts +7 -2
  435. package/dist/esm/providers/router/RouterProvider.js +14 -10
  436. package/dist/esm/storybook-testing.js +8 -2
  437. package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
  438. package/dist/esm/types/DataAttributes.d.ts +1 -1
  439. package/dist/esm/utils/scroll-detection.d.ts +77 -0
  440. package/dist/esm/utils/scroll-detection.js +33 -0
  441. package/dist/esm/utils/spacing.d.ts +63 -0
  442. package/dist/esm/utils/spacing.js +15 -0
  443. package/i18n/en-GB.json +22 -8
  444. package/i18n/es-ES.json +24 -10
  445. package/i18n/fr-FR.json +25 -11
  446. package/package.json +66 -45
  447. package/dist/esm/components/form-field/parts/FormContextualLink.d.ts +0 -20
  448. package/dist/esm/components/form-field/parts/FormContextualLink.js +0 -37
  449. package/dist/esm/components/link/Link.d.ts +0 -93
  450. package/dist/esm/components/link/Link.js +0 -68
  451. package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
  452. package/dist/esm/components/nav/parts/NavItem.js +0 -95
  453. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
  454. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
  455. package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
  456. package/dist/esm/integrations/react-router/v5.js +0 -4
  457. /package/dist/esm/components/{pagination → client-side-pagination}/hooks/use-pagination.d.ts +0 -0
  458. /package/dist/esm/components/{pagination → client-side-pagination}/hooks/use-pagination.js +0 -0
  459. /package/dist/esm/components/{pagination → client-side-pagination}/parts/PaginationJumpDialog.js +0 -0
  460. /package/dist/esm/components/{pagination → client-side-pagination}/parts/PaginationNavButton.d.ts +0 -0
@@ -1,15 +1,14 @@
1
1
  import { PropsWithChildren, ReactNode } from 'react';
2
2
  import { MenuItemProps as MenuItemAriaComponentProps } from 'react-aria-components';
3
3
  import { DataAttributes } from '../../../types/DataAttributes.js';
4
- interface MenuItemProps extends DataAttributes {
4
+ export interface MenuItemProps extends DataAttributes {
5
5
  children?: MenuItemAriaComponentProps['children'];
6
6
  href?: MenuItemAriaComponentProps['href'];
7
7
  onAction?: MenuItemAriaComponentProps['onAction'];
8
8
  prefix?: ReactNode;
9
9
  className?: string;
10
10
  }
11
- export declare function MenuItem({ prefix, children, href, onAction, className, ...dataAttributes }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
12
- export declare namespace MenuItem {
11
+ export declare function RawMenuItem({ prefix, children, href, onAction, className, ...dataAttributes }: PropsWithChildren<MenuItemProps>): import("react/jsx-runtime").JSX.Element;
12
+ export declare namespace RawMenuItem {
13
13
  var displayName: string;
14
14
  }
15
- export {};
@@ -1,4 +1,4 @@
1
- import { jsxs as s, jsx as o } from "react/jsx-runtime";
1
+ import { jsxs as o, jsx as s } from "react/jsx-runtime";
2
2
  import { uyMerge as y } from "@payfit/unity-themes";
3
3
  import { MenuItem as i } from "react-aria-components";
4
4
  function l({
@@ -6,27 +6,27 @@ function l({
6
6
  children: u,
7
7
  href: t,
8
8
  onAction: r,
9
- className: n,
10
- ...a
9
+ className: a,
10
+ ...n
11
11
  }) {
12
- return /* @__PURE__ */ s(
12
+ return /* @__PURE__ */ o(
13
13
  i,
14
14
  {
15
15
  href: t,
16
16
  onAction: r,
17
17
  className: y(
18
18
  "uy:cursor-pointer uy:flex uy:p-100 uy:items-start uy:gap-100 uy:rounded-25 uy:typography-body uy:text-content-neutral uy:hover:bg-surface-neutral-hover uy:data-[pressed]:bg-surface-neutral-pressed uy:focus-visible:outline-utility-focus-ring uy:active:bg-surface-neutral-active",
19
- n
19
+ a
20
20
  ),
21
- ...a,
21
+ ...n,
22
22
  children: [
23
- /* @__PURE__ */ o("div", { className: "uy:text-content-neutral-low", children: e || null }),
23
+ /* @__PURE__ */ s("div", { className: "uy:text-content-neutral-low", children: e || null }),
24
24
  u
25
25
  ]
26
26
  }
27
27
  );
28
28
  }
29
- l.displayName = "MenuItem";
29
+ l.displayName = "RawMenuItem";
30
30
  export {
31
- l as MenuItem
31
+ l as RawMenuItem
32
32
  };
@@ -1,5 +1,4 @@
1
- import { MultiSelectComponent, MultiSelectProps } from './Multiselect.types.js';
2
- declare const MultiSelectComponent: <TItem extends Record<string | number, unknown>, TItemKey extends keyof TItem, TKeyType extends TItem[TItemKey] & (string | number)>(props: MultiSelectProps<TItem, TItemKey, TKeyType>, ref: React.ForwardedRef<HTMLButtonElement>) => import("react/jsx-runtime").JSX.Element;
1
+ import { MultiSelectComponent } from './MultiselectTypes.js';
3
2
  /**
4
3
  * The MultiSelect component allows users to select multiple items from a dropdown list.
5
4
  * The component provides two different APIs:
@@ -52,11 +51,10 @@ declare const MultiSelectComponent: <TItem extends Record<string | number, unkno
52
51
  * </MultiSelect>
53
52
  * ```
54
53
  * @component
55
- * @template TItem - The type of items in the collection. When using the dynamic API, it must be a Record or an object. For the static API, it defaults to a string or number.
56
- * @template TItemKey - The key name within TItem used as the selection value (must be a key of TItem). Applies only to the dynamic API.
57
- * @template TKeyType - The type of the property at TItem[TItemKey] (must be string or number). Applies only to the dynamic API.
54
+ * @template TItems - The type of the items collection. Use `Set<T>` for flat lists or `Map<string, T[]>` for grouped lists. When omitted or undefined, the component uses the static API with React children.
58
55
  * @remarks
59
56
  * [API & Docs](https://unity-components.payfit.io/?path=/docs/inputs-multiselect--docs) • [Design Guidelines](https://www.payfit.design/24f360409/p/928776-multiselect)
60
57
  */
61
- export declare const MultiSelect: MultiSelectComponent;
62
- export {};
58
+ export declare const MultiSelect: MultiSelectComponent & {
59
+ displayName: string;
60
+ };
@@ -1,233 +1,256 @@
1
- import { jsx as i, jsxs as q } from "react/jsx-runtime";
2
- import { forwardRef as Se, useMemo as S, useCallback as d } from "react";
3
- import { ComboboxProvider as pe, SelectProvider as z } from "@ariakit/react";
1
+ import { jsx as f, jsxs as ie, Fragment as fe } from "react/jsx-runtime";
2
+ import { forwardRef as de, useMemo as I, useCallback as i, useRef as me } from "react";
3
+ import { ComboboxProvider as Se, SelectProvider as q, useSelectContext as ye, useStoreState as pe } from "@ariakit/react";
4
4
  import { useComboboxFilter as he } from "./hooks/use-combobox-filter.js";
5
5
  import { useMultiSelectionState as Ve } from "./hooks/use-multiselection-state.js";
6
- import { MultiSelectContext as J } from "./Multiselect.context.js";
7
- import { MultiSelectButton as U } from "./parts/MultiSelectButton.js";
8
- import { MultiSelectPopover as W } from "./parts/MultiSelectPopover.js";
9
- function X(t) {
6
+ import { MultiSelectContext as z } from "./Multiselect.context.js";
7
+ import { MultiSelectButton as ge } from "./parts/MultiSelectButton.js";
8
+ import { MultiSelectPopover as ve } from "./parts/MultiSelectPopover.js";
9
+ function J(t) {
10
10
  return t instanceof Map;
11
11
  }
12
- function ge(t) {
12
+ function Ie(t) {
13
13
  return !Object.prototype.hasOwnProperty.call(t, "items");
14
14
  }
15
15
  function a(t) {
16
16
  return String(t);
17
17
  }
18
- function p(t) {
18
+ function b(t) {
19
19
  return isNaN(Number(t)) ? t : Number(t);
20
20
  }
21
- function Z(t) {
21
+ function X(t) {
22
22
  return Array.from(t, a);
23
23
  }
24
- function Y(t) {
25
- return new Set(Z(t));
24
+ function U(t) {
25
+ return new Set(X(t));
26
26
  }
27
- const $ = (t, P) => {
28
- const n = ge(t), A = (e) => {
29
- if (Object.hasOwnProperty.call(e, "value"))
30
- return e.value;
31
- if (Object.prototype.hasOwnProperty.call(e, "id"))
32
- return e.id;
33
- if (typeof e == "string")
34
- return e;
35
- const r = Object.keys(e)[0];
36
- return e[r];
37
- }, ee = n ? (e) => Array.from(e).map(String).join(", ") : (e) => Array.from(e).map((r) => A(r)).join(", "), m = t, w = t, c = S(
38
- () => n ? void 0 : m.items,
39
- [n, m.items]
40
- ), s = n ? void 0 : m.getItemValue ?? A, { children: V } = n ? w : m, te = n ? void 0 : m.searchOptions, { children: C } = w, {
27
+ function W({
28
+ props: t,
29
+ ref: C,
30
+ content: r,
31
+ typedRenderValue: A,
32
+ selectedItemsForDisplay: O
33
+ }) {
34
+ const K = ye(), P = pe(K, "open"), u = me(!1), {
35
+ placeholder: M,
36
+ isDisabled: c,
37
+ isReadOnly: y,
38
+ isLoading: p,
39
+ isInvalid: w,
40
+ onClearButtonPress: x,
41
+ onBlur: n,
42
+ onFocus: R,
43
+ ...j
44
+ } = t, h = i(() => {
45
+ P || !u.current && n && (u.current = !0, n());
46
+ }, [P, n]), d = i(() => {
47
+ u.current = !1, R?.();
48
+ }, [R]), V = i(() => {
49
+ setTimeout(() => {
50
+ const S = document.activeElement, g = K?.getState().contentElement;
51
+ g && S !== g && !g.contains(S) && !u.current && n && (u.current = !0, n());
52
+ }, 0);
53
+ }, [n, K]);
54
+ return /* @__PURE__ */ ie(fe, { children: [
55
+ /* @__PURE__ */ f(
56
+ ge,
57
+ {
58
+ ref: C,
59
+ placeholder: M,
60
+ isDisabled: c,
61
+ isReadOnly: y,
62
+ isLoading: p,
63
+ isInvalid: w,
64
+ renderValue: A,
65
+ selectedItems: O,
66
+ onClearButtonPress: x,
67
+ onBlur: h,
68
+ onFocus: d,
69
+ ...j
70
+ }
71
+ ),
72
+ /* @__PURE__ */ f(ve, { onBlur: V, children: r })
73
+ ] });
74
+ }
75
+ const be = (t, C) => {
76
+ const r = Ie(t), A = (e) => typeof e == "object" && e !== null && "value" in e && (typeof e.value == "string" || typeof e.value == "number") ? e.value : typeof e == "object" && e !== null && "id" in e && (typeof e.id == "string" || typeof e.id == "number") ? e.id : typeof e == "string" || typeof e == "number" ? e : String(e), P = r ? (e) => Array.from(e).map(String).join(", ") : (e) => Array.from(e).map((o) => A(o)).join(", "), u = t, M = t, c = I(
77
+ () => r ? void 0 : u.items,
78
+ [r, u.items]
79
+ ), y = r ? void 0 : u.getItemValue, { children: p } = r ? M : u, w = r ? void 0 : u.searchOptions, { children: x } = M, n = i(
80
+ (e) => r || !y ? A(e) : y(e),
81
+ [r, y]
82
+ ), {
41
83
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
- children: be,
84
+ children: R,
43
85
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
44
- getItemValue: Ke,
45
- value: g,
46
- defaultValue: f,
47
- onChange: v,
48
- onBlur: O,
49
- isDisabled: M,
50
- isInvalid: x,
51
- isLoading: j,
52
- isReadOnly: D,
53
- isSearchable: h,
54
- placeholder: R,
55
- onClearButtonPress: F,
56
- renderValue: re,
57
- maxVisibleItems: N = 7,
58
- ...B
59
- } = t, ne = re ?? ee, y = d(() => n || !c ? [] : X(c) ? Array.from(c.values()).flat() : Array.from(c), [c, n]), oe = d(() => {
86
+ getItemValue: j,
87
+ value: h,
88
+ defaultValue: d,
89
+ onChange: V,
90
+ isSearchable: S,
91
+ renderValue: g,
92
+ maxVisibleItems: N = 7
93
+ } = t, Y = g ?? P, v = i(() => r || !c ? [] : J(c) ? Array.from(c.values()).flat() : Array.from(c), [c, r]), Z = i(() => {
60
94
  if ("value" in t)
61
- return g ? Y(g) : /* @__PURE__ */ new Set();
62
- }, [t, g]), le = d(() => f ? Y(f) : /* @__PURE__ */ new Set(), [f]), ae = d(
95
+ return h ? U(h) : /* @__PURE__ */ new Set();
96
+ }, [t, h]), $ = i(() => d ? U(d) : /* @__PURE__ */ new Set(), [d]), ee = i(
63
97
  (e) => {
64
- if (!v) return;
65
- const r = new Set(
66
- Array.from(e).map((l) => p(l))
98
+ if (!V) return;
99
+ const o = new Set(
100
+ Array.from(e).map((s) => b(s))
67
101
  );
68
- v(r);
102
+ V(o);
69
103
  },
70
- [v]
104
+ [V]
71
105
  ), {
72
- selectedKeys: u,
73
- selectKey: L,
106
+ selectedKeys: m,
107
+ selectKey: E,
74
108
  unselectKey: T
75
109
  } = Ve({
76
- selectedKeys: oe(),
77
- defaultSelectedKeys: le(),
78
- onSelectionChange: ae
79
- }), se = d(
110
+ selectedKeys: Z(),
111
+ defaultSelectedKeys: $(),
112
+ onSelectionChange: ee
113
+ }), te = i(
80
114
  (e) => {
81
- L(a(e));
115
+ E(a(e));
82
116
  },
83
- [L]
84
- ), ce = d(
117
+ [E]
118
+ ), re = i(
85
119
  (e) => {
86
120
  T(a(e));
87
121
  },
88
122
  [T]
89
- ), { setSearchQuery: ue, matchingItems: I } = he({
90
- items: y(),
91
- extractSearchableText: (e) => n ? [""] : [
92
- a(
93
- s?.(e) || ""
94
- )
95
- ],
96
- enabled: h,
97
- searchOptions: te
98
- }), ie = () => {
99
- if (n) return Array.from(u);
100
- const e = y();
101
- return Array.from(u).map((r) => {
102
- const l = e.find(
103
- (o) => a(
104
- s?.(o) || ""
105
- ) === r
123
+ ), { setSearchQuery: ne, matchingItems: F } = he({
124
+ items: v(),
125
+ extractSearchableText: (e) => r ? [""] : [a(n(e))],
126
+ enabled: S,
127
+ searchOptions: w
128
+ }), oe = () => {
129
+ if (r) return Array.from(m);
130
+ const e = v();
131
+ return Array.from(m).map((o) => {
132
+ const s = e.find(
133
+ (l) => a(n(l)) === o
106
134
  );
107
- return l && s ? s(l) : p(r);
135
+ return s ? n(s) : b(o);
108
136
  });
109
- }, de = () => {
110
- if (n)
137
+ }, le = () => {
138
+ if (r)
111
139
  return new Set(
112
- Array.from(u).map((l) => p(l))
140
+ Array.from(m).map((s) => b(s))
113
141
  );
114
- const e = y(), r = /* @__PURE__ */ new Set();
115
- return Array.from(u).forEach((l) => {
116
- const o = e.find(
117
- (K) => a(
118
- s?.(K) || ""
119
- ) === l
142
+ const e = v(), o = /* @__PURE__ */ new Set();
143
+ return Array.from(m).forEach((s) => {
144
+ const l = e.find(
145
+ (D) => a(n(D)) === s
120
146
  );
121
- o && r.add(o);
122
- }), r;
123
- }, fe = () => {
124
- if (f)
125
- return Z(f);
126
- }, b = S(ie, [
127
- u,
147
+ l && o.add(l);
148
+ }), o;
149
+ }, se = () => {
150
+ if (d)
151
+ return X(d);
152
+ }, B = I(oe, [
153
+ m,
154
+ r,
128
155
  n,
129
- s,
130
- y
131
- ]), _ = S(de, [
132
- u,
156
+ v
157
+ ]), G = I(le, [
158
+ m,
159
+ r,
133
160
  n,
134
- s,
135
- y
136
- ]), G = S(fe, [f]), k = (e) => {
137
- const r = new Set(e), l = new Set(
138
- b.map((o) => a(o))
139
- );
140
- for (const o of r)
141
- l.has(o) || se(p(o));
142
- for (const o of l)
143
- r.has(o) || ce(p(o));
144
- }, E = d(() => n ? C : c ? X(c) ? Array.from(c.entries()).map(([e, r]) => {
145
- const l = r.filter(
146
- (o) => I.some((K) => {
147
- const me = s?.(o) || "", ye = s?.(K) || "";
148
- return a(ye) === a(me);
149
- })
161
+ v
162
+ ]), L = I(se, [d]), _ = (e) => {
163
+ const o = new Set(e), s = new Set(B.map((l) => a(l)));
164
+ for (const l of o)
165
+ s.has(l) || te(b(l));
166
+ for (const l of s)
167
+ o.has(l) || re(b(l));
168
+ }, H = i(() => {
169
+ if (r)
170
+ return x;
171
+ if (!c) return null;
172
+ if (J(c)) {
173
+ const e = c;
174
+ return Array.from(e.entries()).map(
175
+ ([o, s]) => {
176
+ const l = s.filter(
177
+ (D) => F.some((ue) => {
178
+ const ce = n(D), ae = n(ue);
179
+ return a(ae) === a(ce);
180
+ })
181
+ );
182
+ return p(o, l);
183
+ }
184
+ );
185
+ }
186
+ return F.map(
187
+ (e) => p(e)
150
188
  );
151
- return V(e, l);
152
- }) : I.map(
153
- (e) => V(
154
- e
155
- )
156
- ) : null, [V, c, I, C, s, n]), H = S(() => E(), [E]), Q = ne;
157
- return h ? /* @__PURE__ */ i(pe, { resetValueOnHide: !0, setValue: ue, children: /* @__PURE__ */ i(
158
- z,
189
+ }, [
190
+ p,
191
+ c,
192
+ F,
193
+ x,
194
+ n,
195
+ r
196
+ ]), Q = I(() => H(), [H]), k = Y;
197
+ return S ? /* @__PURE__ */ f(Se, { resetValueOnHide: !0, setValue: ne, children: /* @__PURE__ */ f(
198
+ q,
159
199
  {
160
- value: b.map(
200
+ value: B.map(
161
201
  (e) => a(e)
162
202
  ),
163
- defaultValue: G,
164
- setValue: k,
203
+ defaultValue: L,
204
+ setValue: _,
165
205
  focusLoop: !0,
166
- children: /* @__PURE__ */ q(
167
- J.Provider,
206
+ children: /* @__PURE__ */ f(
207
+ z.Provider,
168
208
  {
169
- value: { isSearchable: h, maxVisibleItems: N, selectedKeys: u },
170
- children: [
171
- /* @__PURE__ */ i(
172
- U,
173
- {
174
- ref: P,
175
- placeholder: R,
176
- isDisabled: M,
177
- isReadOnly: D,
178
- isLoading: j,
179
- isInvalid: x,
180
- renderValue: Q,
181
- selectedItems: _,
182
- onClearButtonPress: F,
183
- ...B
184
- }
185
- ),
186
- /* @__PURE__ */ i(W, { onBlur: O, children: H })
187
- ]
209
+ value: { isSearchable: S, maxVisibleItems: N, selectedKeys: m },
210
+ children: /* @__PURE__ */ f(
211
+ W,
212
+ {
213
+ props: t,
214
+ ref: C,
215
+ content: Q,
216
+ typedRenderValue: k,
217
+ selectedItemsForDisplay: G
218
+ }
219
+ )
188
220
  }
189
221
  )
190
222
  }
191
- ) }) : /* @__PURE__ */ i(
192
- z,
223
+ ) }) : /* @__PURE__ */ f(
224
+ q,
193
225
  {
194
- value: b.map(
226
+ value: B.map(
195
227
  (e) => a(e)
196
228
  ),
197
- defaultValue: G,
198
- setValue: k,
229
+ defaultValue: L,
230
+ setValue: _,
199
231
  focusLoop: !0,
200
- children: /* @__PURE__ */ q(
201
- J.Provider,
232
+ children: /* @__PURE__ */ f(
233
+ z.Provider,
202
234
  {
203
- value: { isSearchable: h, maxVisibleItems: N, selectedKeys: u },
204
- children: [
205
- /* @__PURE__ */ i(
206
- U,
207
- {
208
- ref: P,
209
- placeholder: R,
210
- isDisabled: M,
211
- isReadOnly: D,
212
- isLoading: j,
213
- isInvalid: x,
214
- renderValue: Q,
215
- selectedItems: _,
216
- onClearButtonPress: F,
217
- ...B
218
- }
219
- ),
220
- /* @__PURE__ */ i(W, { onBlur: O, children: H })
221
- ]
235
+ value: { isSearchable: S, maxVisibleItems: N, selectedKeys: m },
236
+ children: /* @__PURE__ */ f(
237
+ W,
238
+ {
239
+ props: t,
240
+ ref: C,
241
+ content: Q,
242
+ typedRenderValue: k,
243
+ selectedItemsForDisplay: G
244
+ }
245
+ )
222
246
  }
223
247
  )
224
248
  }
225
249
  );
226
- };
227
- $.displayName = "MultiSelect";
228
- const De = Se(
229
- $
250
+ }, Ce = de(
251
+ be
230
252
  );
253
+ Ce.displayName = "MultiSelect";
231
254
  export {
232
- De as MultiSelect
255
+ Ce as MultiSelect
233
256
  };
@@ -0,0 +1,114 @@
1
+ import { UseComboboxFilterProps } from './hooks/use-combobox-filter.js';
2
+ type Key = string | number;
3
+ /**
4
+ * Common props shared by all MultiSelect variants.
5
+ */
6
+ export interface MultiSelectBaseProps {
7
+ /** The ID of the element */
8
+ id?: string;
9
+ /** Default content when no value is selected */
10
+ placeholder?: string;
11
+ /** Whether the select is searchable and shows a search input on top of the options */
12
+ isSearchable?: boolean;
13
+ /** Whether the select is disabled */
14
+ isDisabled?: boolean;
15
+ /** Whether the select is invalid */
16
+ isInvalid?: boolean;
17
+ /** Whether the select is read only */
18
+ isReadOnly?: boolean;
19
+ /** Whether the select is in a loading state */
20
+ isLoading?: boolean;
21
+ /** Callback when the clear button is pressed */
22
+ onClearButtonPress?: () => void;
23
+ /** Maximum number of items to show in the select button before showing a counter badge */
24
+ maxVisibleItems?: number;
25
+ /** Callback when the select is focused */
26
+ onFocus?: () => void;
27
+ /** Callback when the select is blurred */
28
+ onBlur?: () => void;
29
+ /** The ID of the element that labels this select when no visible label is provided */
30
+ 'aria-labelledby'?: string;
31
+ /** The ID of the element that labels this select when no visible label is provided */
32
+ 'aria-label'?: string;
33
+ }
34
+ /**
35
+ * Props for flat (non-grouped) dynamic items MultiSelect.
36
+ * @template TItems The type of set of items.
37
+ */
38
+ export interface FlatSelectProps<TItems extends Set<unknown>> extends MultiSelectBaseProps {
39
+ /** The items to display in the select */
40
+ items: TItems;
41
+ /** Function to get the value from an item, defaults to String(item) */ getItemValue?: (item: TItems extends Set<infer U> ? U : never) => Key;
42
+ /** The currently selected values (controlled mode) */
43
+ value?: Set<Key>;
44
+ /** The default selected values (uncontrolled mode) */
45
+ defaultValue?: Set<Key>;
46
+ /** Callback when the selection changes */
47
+ onChange?: (value: Set<Key>) => void;
48
+ /** Function to render the selected value(s) in the button */
49
+ renderValue?: (value: Set<TItems extends Set<infer U> ? U : never>) => string;
50
+ /** Children must be a render function that returns Option components */ children: (item: TItems extends Set<infer U> ? U : never) => React.JSX.Element;
51
+ /** Options for filtering the items */
52
+ searchOptions?: UseComboboxFilterProps<TItems extends Set<infer U> ? U : never>['searchOptions'];
53
+ }
54
+ /**
55
+ * Props for grouped dynamic items MultiSelect.
56
+ * @template TItems The type of map from group key to array of items.
57
+ */
58
+ export interface GroupedSelectProps<TItems extends Map<string, unknown[]>> extends MultiSelectBaseProps {
59
+ /** The items to display in the select, grouped by category */
60
+ items: TItems;
61
+ /** Function to get the value from an item, defaults to String(item) */
62
+ getItemValue?: (item: TItems extends Map<string, Array<infer U>> ? U : never) => Key;
63
+ /** The currently selected values (controlled mode) */
64
+ value?: Set<Key>;
65
+ /** The default selected values (uncontrolled mode) */
66
+ defaultValue?: Set<Key>;
67
+ /** Callback when the selection changes */
68
+ onChange?: (value: Set<Key>) => void;
69
+ /** Function to render the selected value(s) in the button */
70
+ renderValue?: (value: Set<TItems extends Map<string, Array<infer U>> ? U : never>) => string;
71
+ /** Children must be a render function that returns OptGroup components */
72
+ children: (groupKey: string, items: TItems extends Map<string, Array<infer U>> ? U[] : never) => React.JSX.Element;
73
+ /** Options for filtering the items */
74
+ searchOptions?: UseComboboxFilterProps<TItems extends Map<string, Array<infer U>> ? U : never>['searchOptions'];
75
+ }
76
+ /**
77
+ * Props for static MultiSelect API (all items are defined via React children).
78
+ */
79
+ export interface StaticItemsProps<TItem = Key> extends MultiSelectBaseProps {
80
+ /** The items to display in the select (for dynamic API) */
81
+ items?: never;
82
+ /** Function to get the value from an item, defaults to String(item) */
83
+ getItemValue?: never;
84
+ /** The currently selected values (controlled mode) */
85
+ value?: Set<TItem>;
86
+ /** The default selected values (uncontrolled mode) */
87
+ defaultValue?: Set<TItem>;
88
+ /** Callback when the selection changes */
89
+ onChange?: (value: Set<TItem>) => void;
90
+ /** Function to render the selected value(s) in the button */
91
+ renderValue?: (value: Set<TItem>) => string;
92
+ /** Children must be Option components */
93
+ children: React.ReactNode;
94
+ /** Options for filtering the items */
95
+ searchOptions?: UseComboboxFilterProps<TItem>['searchOptions'];
96
+ }
97
+ /**
98
+ * Helper type to simplify usage for dynamic MultiSelect props.
99
+ * Picks flat or grouped variant depending on items type.
100
+ */
101
+ export type DynamicMultiSelectProps<TItems = Set<unknown> | Map<string, unknown[]>> = TItems extends Set<unknown> ? FlatSelectProps<TItems> : TItems extends Map<string, unknown[]> ? GroupedSelectProps<TItems> : never;
102
+ /**
103
+ * Top-level MultiSelect props type, picks static or dynamic variant as appropriate.
104
+ */
105
+ export type MultiSelectProps<TItems = Set<unknown> | Map<string, unknown[]> | undefined> = TItems extends undefined ? StaticItemsProps : DynamicMultiSelectProps<TItems>;
106
+ /**
107
+ * MultiSelect component type signature.
108
+ */
109
+ export type MultiSelectComponent = <TItems = undefined>(props: MultiSelectProps<TItems> & {
110
+ ref?: React.ForwardedRef<HTMLButtonElement>;
111
+ } & {
112
+ displayName?: string;
113
+ }) => React.JSX.Element;
114
+ export {};
@@ -0,0 +1,7 @@
1
+ import { MultiSelectComponent, MultiSelectProps } from './MultiselectTypes.js';
2
+ export type TanstackMultiSelectProps<TItems = undefined> = Omit<MultiSelectProps<TItems>, 'value' | 'defaultValue' | 'onChange' | 'onBlur' | 'isInvalid'> & {
3
+ children?: MultiSelectProps<TItems>['children'];
4
+ };
5
+ export declare const TanstackMultiSelect: MultiSelectComponent & {
6
+ displayName: string;
7
+ };