@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
@@ -0,0 +1,149 @@
1
+ import { VariantProps } from '@payfit/unity-themes';
2
+ import { PropsWithChildren } from 'react';
3
+ export declare const promoDialog: import('tailwind-variants').TVReturnType<{
4
+ [key: string]: {
5
+ [key: string]: import('tailwind-merge').ClassNameValue | {
6
+ content?: import('tailwind-merge').ClassNameValue;
7
+ overlay?: import('tailwind-merge').ClassNameValue;
8
+ layoutWrapper?: import('tailwind-merge').ClassNameValue;
9
+ wrapper?: import('tailwind-merge').ClassNameValue;
10
+ dismissIcon?: import('tailwind-merge').ClassNameValue;
11
+ contentColumn?: import('tailwind-merge').ClassNameValue;
12
+ scrollableContent?: import('tailwind-merge').ClassNameValue;
13
+ actionsWrapper?: import('tailwind-merge').ClassNameValue;
14
+ };
15
+ };
16
+ } | {
17
+ [x: string]: {
18
+ [x: string]: import('tailwind-merge').ClassNameValue | {
19
+ content?: import('tailwind-merge').ClassNameValue;
20
+ overlay?: import('tailwind-merge').ClassNameValue;
21
+ layoutWrapper?: import('tailwind-merge').ClassNameValue;
22
+ wrapper?: import('tailwind-merge').ClassNameValue;
23
+ dismissIcon?: import('tailwind-merge').ClassNameValue;
24
+ contentColumn?: import('tailwind-merge').ClassNameValue;
25
+ scrollableContent?: import('tailwind-merge').ClassNameValue;
26
+ actionsWrapper?: import('tailwind-merge').ClassNameValue;
27
+ };
28
+ };
29
+ } | {}, {
30
+ overlay: string[];
31
+ wrapper: string[];
32
+ content: string[];
33
+ dismissIcon: string[];
34
+ layoutWrapper: string[];
35
+ contentColumn: string[];
36
+ scrollableContent: string[];
37
+ actionsWrapper: string[];
38
+ }, undefined, {
39
+ [key: string]: {
40
+ [key: string]: import('tailwind-merge').ClassNameValue | {
41
+ content?: import('tailwind-merge').ClassNameValue;
42
+ overlay?: import('tailwind-merge').ClassNameValue;
43
+ layoutWrapper?: import('tailwind-merge').ClassNameValue;
44
+ wrapper?: import('tailwind-merge').ClassNameValue;
45
+ dismissIcon?: import('tailwind-merge').ClassNameValue;
46
+ contentColumn?: import('tailwind-merge').ClassNameValue;
47
+ scrollableContent?: import('tailwind-merge').ClassNameValue;
48
+ actionsWrapper?: import('tailwind-merge').ClassNameValue;
49
+ };
50
+ };
51
+ } | {}, {
52
+ overlay: string[];
53
+ wrapper: string[];
54
+ content: string[];
55
+ dismissIcon: string[];
56
+ layoutWrapper: string[];
57
+ contentColumn: string[];
58
+ scrollableContent: string[];
59
+ actionsWrapper: string[];
60
+ }, import('tailwind-variants').TVReturnType<unknown, {
61
+ overlay: string[];
62
+ wrapper: string[];
63
+ content: string[];
64
+ dismissIcon: string[];
65
+ layoutWrapper: string[];
66
+ contentColumn: string[];
67
+ scrollableContent: string[];
68
+ actionsWrapper: string[];
69
+ }, undefined, unknown, unknown, undefined>>;
70
+ export interface PromoDialogProps extends PropsWithChildren<VariantProps<typeof promoDialog>> {
71
+ /** aria-label has to be defined if the dialog does not have a visible label*/
72
+ 'aria-label'?: string;
73
+ /** Controls the open state of the dialog. Use only in controlled mode (along with the `onOpenChange` callback) */
74
+ isOpen?: boolean;
75
+ /** it is used for controlled mode (need to be used with isOpen property) */
76
+ onOpenChange?: (isOpen: boolean) => void;
77
+ /** if false it does not allow to close the modal when click outside, default: true*/
78
+ isDismissable?: boolean;
79
+ }
80
+ /**
81
+ * The PromoDialog component provides a specialized modal interface for promotional content,
82
+ * feature announcements, and important communications that benefit from visual emphasis.
83
+ *
84
+ * Use PromoDialog when you want to introduce new features, highlight important updates, or present
85
+ * promotional content with a compelling illustration. It features a hero section for illustrations
86
+ * and automatically adapts its layout between mobile (vertical stack) and desktop (horizontal split).
87
+ *
88
+ * The PromoDialog requires several parts working together:
89
+ * - `PromoDialogHero`: Contains the promotional illustration (required)
90
+ * - `PromoDialogTitle`: Displays the title of the dialog
91
+ * - `PromoDialogContent`: Contains the main content of the dialog (required)
92
+ * - `PromoDialogActions`: Contains action buttons for user interaction
93
+ * - `DialogButton`: Handles specific actions (close, confirm, or danger)
94
+ * @param props - The props for the PromoDialog component
95
+ * @param props.children - The dialog content including hero, title, content, and actions
96
+ * @param props.isOpen - Controls the open state in controlled mode
97
+ * @param props.onOpenChange - Callback fired when open state changes
98
+ * @param props.isDismissable - Whether the dialog can be dismissed by clicking outside or pressing Escape
99
+ * @see {@link PromoDialogProps} for all available props
100
+ * @example
101
+ * ```tsx
102
+ * import {
103
+ * PromoDialog,
104
+ * DialogTrigger,
105
+ * PromoDialogHero,
106
+ * PromoDialogTitle,
107
+ * PromoDialogContent,
108
+ * PromoDialogActions,
109
+ * DialogButton
110
+ * } from '@payfit/unity-components'
111
+ * import { Illustration } from '@payfit/unity-illustrations'
112
+ *
113
+ * function FeatureAnnouncement() {
114
+ * return (
115
+ * <DialogTrigger>
116
+ * <Button>Learn more</Button>
117
+ * <PromoDialog>
118
+ * <PromoDialogHero>
119
+ * <Illustration src={ContractSignature} variant="picture" />
120
+ * </PromoDialogHero>
121
+ * <PromoDialogTitle>Introducing our new feature</PromoDialogTitle>
122
+ * <PromoDialogContent>
123
+ * Discover how this feature can help you...
124
+ * </PromoDialogContent>
125
+ * <PromoDialogActions>
126
+ * <DialogButton variant="close">Maybe later</DialogButton>
127
+ * <DialogButton variant="confirm">Get started</DialogButton>
128
+ * </PromoDialogActions>
129
+ * </PromoDialog>
130
+ * </DialogTrigger>
131
+ * )
132
+ * }
133
+ * ```
134
+ * @remarks
135
+ * - Content scrolls when it overflows, with a sticky footer
136
+ * - Layout adapts automatically: vertical on mobile, horizontal split on desktop
137
+ * - Hero section is mandatory and displays on the left (desktop) or top (mobile)
138
+ * - Shadow appears on footer when content is scrollable
139
+ * - **Accessibility**: Either `PromoDialogTitle` or `aria-label` prop is required for screen readers
140
+ * - **Accessibility**: Dialog traps focus and can be closed with Escape key when dismissable
141
+ * - **Accessibility**: Close button is keyboard accessible with proper ARIA labels
142
+ * - **Accessibility**: Supports prefers-reduced-motion for users with motion sensitivities
143
+ * [API Docs](https://unity-components.payfit.io/?path=/docs/feedback-promodialog--docs) • [Design Docs](https://www.payfit.design/24f360409/p/01f5dc-dialog)
144
+ */
145
+ declare function PromoDialog({ children, isOpen, onOpenChange, isDismissable, ...rest }: PromoDialogProps): import("react/jsx-runtime").JSX.Element;
146
+ declare namespace PromoDialog {
147
+ var displayName: string;
148
+ }
149
+ export { PromoDialog };
@@ -0,0 +1,219 @@
1
+ import { jsx as t, jsxs as c } from "react/jsx-runtime";
2
+ import { useRef as P, Children as m, isValidElement as l, useLayoutEffect as v } from "react";
3
+ import { uyTv as N } from "@payfit/unity-themes";
4
+ import { useId as C } from "react-aria";
5
+ import { ModalOverlay as A, Modal as E, DialogContext as I, Dialog as j } from "react-aria-components";
6
+ import { useIntl as z } from "react-intl";
7
+ import { useHasScroll as M } from "../../hooks/use-has-scroll.js";
8
+ import { DialogButton as H } from "../dialog/parts/DialogActions/DialogButton.js";
9
+ import { CircularIconButton as T } from "../icon-button/CircularIconButton.js";
10
+ import { PromoDialogActions as b } from "./parts/PromoDialogActions.js";
11
+ import { PromoDialogHero as W } from "./parts/PromoDialogHero.js";
12
+ import { PromoDialogTitle as _ } from "./parts/PromoDialogTitle.js";
13
+ const k = N({
14
+ slots: {
15
+ overlay: [
16
+ "uy:@container",
17
+ "uy:fixed uy:inset-0 uy:z-30 uy:overflow-y-auto",
18
+ "uy:min-h-full",
19
+ "uy:flex uy:items-end uy:md:items-center uy:md:justify-center uy:md:text-center",
20
+ "uy:bg-utility-backdrop",
21
+ // enter/leave animation
22
+ "uy:data-[entering]:animate-fade-in uy:data-[exiting]:animate-fade-out",
23
+ "uy:motion-reduce:data-[entering]:animate-none uy:motion-reduce:data-[exiting]:animate-none"
24
+ ],
25
+ wrapper: [
26
+ "uy:w-full uy:relative uy:isolate",
27
+ "uy:m-0",
28
+ "uy:rounded-t-300 uy:md:rounded-300",
29
+ "uy:bg-surface-neutral",
30
+ "uy:text-left uy:align-middle uy:shadow-floating",
31
+ // Mobile: enter/leave animation
32
+ "uy:data-[entering]:animate-slide-up-fade-in uy:data-[exiting]:animate-slide-down-fade-out",
33
+ "uy:md:[animation-delay:100ms]",
34
+ // Desktop: enter/leave animation
35
+ "uy:md:data-[entering]:animate-zoom-in uy:md:data-[exiting]:animate-zoom-out",
36
+ "uy:motion-reduce:data-[entering]:animate-none uy:motion-reduce:data-[exiting]:animate-none",
37
+ // Mobile: scrollable with max height
38
+ "uy:max-h-[95dvh] uy:overflow-y-auto",
39
+ // Desktop: max height (adapts to content), no overflow on wrapper
40
+ "uy:md:h-[82dvh] uy:md:max-h-65 uy:lg:max-h-85 uy:md:overflow-hidden",
41
+ "uy:md:w-10/12 uy:md:max-w-[1000px] uy:p-300 uy:pb-0 uy:md:p-200"
42
+ ],
43
+ content: [
44
+ "uy:group/promo-dialog uy:outline-none uy:relative",
45
+ // Mobile: auto height (wrapper scrolls)
46
+ "uy:h-auto",
47
+ // Desktop: full height (content scrolls internally)
48
+ "uy:md:h-full"
49
+ ],
50
+ dismissIcon: [
51
+ // Mobile: sticky button that takes some padding at the top
52
+ "uy:sticky uy:top-0 uy:right-0 uy:flex uy:justify-end",
53
+ // Desktop: close button is positioned absolutely at the top-right corner
54
+ "uy:md:absolute uy:md:right-100 uy:md:top-100 uy:md:z-20"
55
+ ],
56
+ // Layout slots
57
+ layoutWrapper: [
58
+ "uy:flex uy:flex-col uy:md:flex-row",
59
+ // Mobile: auto height (wrapper scrolls)
60
+ "uy:h-auto",
61
+ // Desktop: full height for flex layout
62
+ "uy:md:h-full uy:gap-300 uy:md:gap-0"
63
+ ],
64
+ contentColumn: [
65
+ "uy:group/content-column",
66
+ "uy:flex uy:flex-col",
67
+ // Mobile: auto height
68
+ "uy:h-auto",
69
+ // Desktop: takes 2/3 of width, fixed max height, enables scrolling
70
+ "uy:md:basis-2/3 uy:md:h-full uy:md:max-h-85 uy:md:overflow-y-auto uy:md:pt-600"
71
+ ],
72
+ scrollableContent: [
73
+ "uy:md:pl-[clamp(var(--uy-spacing-400),11%,var(--uy-spacing-800))] uy:md:pr-1000 uy:[scrollbar-width:thin] uy:md:scroll-mt-1000",
74
+ // Mobile: flex-1 to fill space (wrapper scrolls)
75
+ "uy:flex-1",
76
+ // desktop: centered layout
77
+ "uy:md:flex uy:md:flex-col uy:md:justify-center"
78
+ ],
79
+ actionsWrapper: [
80
+ "uy:py-300 uy:md:py-0 uy:sticky uy:-bottom-px uy:bg-surface-neutral",
81
+ // Apply shadow when parent group has scroll
82
+ "uy:group-data-[has-scroll=true]/content-column:shadow-[0_-1px_6px_0_var(--uy-color-utility-shadow-floating)]"
83
+ ]
84
+ }
85
+ }), B = (r) => {
86
+ const n = m.toArray(r).find(
87
+ (e) => l(e) && e.type === b
88
+ );
89
+ return l(
90
+ n
91
+ ) ? m.toArray(n.props.children).some(
92
+ (e) => l(
93
+ e
94
+ ) && e.type === H && e.props.variant === "danger"
95
+ ) : !1;
96
+ };
97
+ function q({
98
+ children: r,
99
+ isOpen: n,
100
+ onOpenChange: e,
101
+ isDismissable: p = !0,
102
+ ...y
103
+ }) {
104
+ const f = z(), d = C(), g = P(null), { hasAnyScroll: i } = M(g, {
105
+ strategy: "both",
106
+ watchMutations: !1
107
+ }), s = m.toArray(r), u = s.find(
108
+ (o) => l(o) && o.type === W
109
+ ), h = s.find(
110
+ (o) => l(o) && o.type === b
111
+ ), w = s.filter(
112
+ (o) => o !== u && o !== h
113
+ );
114
+ v(() => {
115
+ u || console.error(
116
+ "PromoDialog: PromoDialogHero is required. Please add <PromoDialogHero> as a child of your PromoDialog component."
117
+ );
118
+ }, [u]), v(() => {
119
+ const D = m.toArray(r).some(
120
+ (x) => l(x) && x.type === _
121
+ );
122
+ !y["aria-label"] && !D && console.error(
123
+ "PromoDialog: Either an aria-label or a PromoDialogTitle is required for accessibility. Provide one to ensure screen reader users can identify the dialog."
124
+ );
125
+ }, [r, y]);
126
+ const a = k();
127
+ return /* @__PURE__ */ t(
128
+ A,
129
+ {
130
+ isDismissable: p,
131
+ isOpen: n,
132
+ onOpenChange: e,
133
+ className: a.overlay(),
134
+ children: /* @__PURE__ */ t(
135
+ E,
136
+ {
137
+ className: a.wrapper(),
138
+ "data-unity-promo-dialog": !0,
139
+ "data-dd-privacy": "allow",
140
+ children: /* @__PURE__ */ t(I.Provider, { value: { "aria-describedby": d }, children: /* @__PURE__ */ c(
141
+ j,
142
+ {
143
+ role: B(r) ? "alertdialog" : "dialog",
144
+ "aria-modal": "true",
145
+ className: a.content(),
146
+ "aria-label": y["aria-label"],
147
+ "aria-describedby": d,
148
+ "data-unity-slot": "promo-dialog",
149
+ children: [
150
+ p && /* @__PURE__ */ t("div", { className: a.dismissIcon(), children: /* @__PURE__ */ t(
151
+ T,
152
+ {
153
+ asElement: "button",
154
+ icon: "CloseOutlined",
155
+ color: "content.neutral.low",
156
+ size: "large",
157
+ title: f.formatMessage({
158
+ id: "unity:component:common:close:label"
159
+ }),
160
+ slot: "close",
161
+ className: "uy:relative uy:-top-100 uy:-right-100 uy:md:static"
162
+ }
163
+ ) }),
164
+ /* @__PURE__ */ c(
165
+ "div",
166
+ {
167
+ className: a.layoutWrapper(),
168
+ "data-slot": "promo-dialog.layout-wrapper",
169
+ children: [
170
+ u,
171
+ /* @__PURE__ */ c(
172
+ "div",
173
+ {
174
+ ref: g,
175
+ className: a.contentColumn(),
176
+ "data-slot": "promo-dialog.content-column",
177
+ "data-has-scroll": i,
178
+ role: i ? "region" : void 0,
179
+ "aria-label": i ? f.formatMessage({
180
+ id: "unity:component:common:scrollable-content:label"
181
+ }) : void 0,
182
+ tabIndex: i ? 0 : void 0,
183
+ children: [
184
+ /* @__PURE__ */ t(
185
+ "div",
186
+ {
187
+ id: d,
188
+ className: a.scrollableContent(),
189
+ "data-slot": "promo-dialog.scrollable-content",
190
+ children: w
191
+ }
192
+ ),
193
+ /* @__PURE__ */ t(
194
+ "div",
195
+ {
196
+ className: a.actionsWrapper(),
197
+ "data-slot": "promo-dialog.actions-wrapper",
198
+ children: h
199
+ }
200
+ )
201
+ ]
202
+ }
203
+ )
204
+ ]
205
+ }
206
+ )
207
+ ]
208
+ }
209
+ ) })
210
+ }
211
+ )
212
+ }
213
+ );
214
+ }
215
+ q.displayName = "PromoDialog";
216
+ export {
217
+ q as PromoDialog,
218
+ k as promoDialog
219
+ };
@@ -0,0 +1,44 @@
1
+ import { PropsWithChildren } from 'react';
2
+ /**
3
+ * PromoDialogActions contains the action buttons for a promo dialog.
4
+ * It provides consistent layout and spacing for dialog action buttons.
5
+ *
6
+ * This component should be used within a `PromoDialog` to display action buttons like
7
+ * confirm, cancel, or close actions. The buttons are automatically arranged in a row
8
+ * on desktop and stacked on mobile.
9
+ * @param props - The props for the PromoDialogActions component
10
+ * @param props.children - The action buttons (typically DialogButton components)
11
+ * @example
12
+ * ```tsx
13
+ * import { PromoDialog, PromoDialogHero, DialogTitle, PromoDialogContent, PromoDialogActions, DialogButton } from '@payfit/unity-components'
14
+ * import { Illustration } from '@payfit/unity-illustrations'
15
+ * import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
16
+ *
17
+ * function PromoExample() {
18
+ * return (
19
+ * <PromoDialog>
20
+ * <PromoDialogHero>
21
+ * <Illustration src={ContractSignature} variant="picture" />
22
+ * </PromoDialogHero>
23
+ * <DialogTitle>Welcome</DialogTitle>
24
+ * <PromoDialogContent>
25
+ * <p>Content here...</p>
26
+ * </PromoDialogContent>
27
+ * <PromoDialogActions>
28
+ * <DialogButton variant="close">Skip</DialogButton>
29
+ * <DialogButton variant="confirm">Continue</DialogButton>
30
+ * </PromoDialogActions>
31
+ * </PromoDialog>
32
+ * )
33
+ * }
34
+ * ```
35
+ * @remarks
36
+ * - Buttons are stacked vertically on mobile (reverse order) and horizontal on desktop
37
+ * - Use DialogButton components as children for consistent styling
38
+ * - **Accessibility**: Actions are grouped with role="group" for better screen reader navigation
39
+ */
40
+ declare const PromoDialogActions: {
41
+ ({ children }: PropsWithChildren<object>): import("react/jsx-runtime").JSX.Element;
42
+ displayName: string;
43
+ };
44
+ export { PromoDialogActions };
@@ -0,0 +1,29 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { uyTv as i } from "@payfit/unity-themes";
3
+ import { useIntl as r } from "react-intl";
4
+ const s = i({
5
+ base: [
6
+ "uy:md:pt-250 uy:md:pb-100 uy:md:px-200 uy:flex uy:flex-col-reverse uy:md:flex-row uy:md:justify-end uy:md:items-start",
7
+ "uy:gap-150 uy:md:gap-100",
8
+ "uy:self-stretch"
9
+ ]
10
+ }), e = ({ children: o }) => {
11
+ const t = r();
12
+ return /* @__PURE__ */ a(
13
+ "div",
14
+ {
15
+ role: "group",
16
+ "aria-label": t.formatMessage({
17
+ id: "unity:component:dialog:actions:label"
18
+ }),
19
+ className: s(),
20
+ "data-unity-slot": "promo-dialog.actions",
21
+ "data-dd-privacy": "allow",
22
+ children: o
23
+ }
24
+ );
25
+ };
26
+ e.displayName = "PromoDialogActions";
27
+ export {
28
+ e as PromoDialogActions
29
+ };
@@ -0,0 +1,43 @@
1
+ import { PropsWithChildren } from 'react';
2
+ /**
3
+ * PromoDialogContent contains the main content of a promo dialog.
4
+ * It provides consistent spacing and typography for dialog content.
5
+ *
6
+ * This component should be used within a `PromoDialog` to display the main message,
7
+ * description, or any other content that needs to be presented to the user.
8
+ * @param props - The props for the PromoDialogContent component
9
+ * @param props.children - The content to be displayed in the dialog body
10
+ * @example
11
+ * ```tsx
12
+ * import { PromoDialog, PromoDialogHero, DialogTitle, PromoDialogContent, PromoDialogActions, DialogButton } from '@payfit/unity-components'
13
+ * import { Illustration } from '@payfit/unity-illustrations'
14
+ * import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
15
+ *
16
+ * function PromoExample() {
17
+ * return (
18
+ * <PromoDialog>
19
+ * <PromoDialogHero>
20
+ * <Illustration src={ContractSignature} variant="picture" />
21
+ * </PromoDialogHero>
22
+ * <DialogTitle>Welcome</DialogTitle>
23
+ * <PromoDialogContent>
24
+ * <p>This is the main content of the promo dialog.</p>
25
+ * </PromoDialogContent>
26
+ * <PromoDialogActions>
27
+ * <DialogButton variant="close">Skip</DialogButton>
28
+ * <DialogButton variant="confirm">Continue</DialogButton>
29
+ * </PromoDialogActions>
30
+ * </PromoDialog>
31
+ * )
32
+ * }
33
+ * ```
34
+ * @remarks
35
+ * - Use this component for the main body text and content
36
+ * - Content will automatically scroll when it overflows
37
+ * - Maintains consistent spacing with other promo dialog parts
38
+ */
39
+ declare const PromoDialogContent: {
40
+ ({ children }: PropsWithChildren<object>): import("react/jsx-runtime").JSX.Element;
41
+ displayName: string;
42
+ };
43
+ export { PromoDialogContent };
@@ -0,0 +1,20 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { uyTv as n } from "@payfit/unity-themes";
3
+ const a = n({
4
+ base: [
5
+ "uy:flex uy:flex-col uy:gap-200",
6
+ "uy:text-content-neutral",
7
+ "uy:typography-body"
8
+ ]
9
+ }), e = ({ children: o }) => /* @__PURE__ */ t(
10
+ "div",
11
+ {
12
+ className: a(),
13
+ "data-unity-slot": "promo-dialog.content",
14
+ children: o
15
+ }
16
+ );
17
+ e.displayName = "PromoDialogContent";
18
+ export {
19
+ e as PromoDialogContent
20
+ };
@@ -0,0 +1,47 @@
1
+ import { PropsWithChildren } from 'react';
2
+ export interface PromoDialogHeroProps extends PropsWithChildren {
3
+ /**
4
+ * Additional class names for the hero
5
+ */
6
+ className?: string;
7
+ }
8
+ /**
9
+ * PromoDialogHero displays a promotional illustration or hero image in promo dialogs.
10
+ * It's designed to complement important announcements, feature introductions, or promotional content.
11
+ *
12
+ * This component is required when using `PromoDialog` and automatically triggers
13
+ * a special layout with the hero section on the left (desktop) or top (mobile), and content on the right/bottom.
14
+ * @param props - The props for the PromoDialogHero component
15
+ * @param props.children - The hero content, typically an Illustration component
16
+ * @example
17
+ * ```tsx
18
+ * import { PromoDialog, PromoDialogHero, DialogTitle, DialogContent } from '@payfit/unity-components'
19
+ * import { Illustration } from '@payfit/unity-illustrations'
20
+ * import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
21
+ *
22
+ * function PromoExample() {
23
+ * return (
24
+ * <PromoDialog>
25
+ * <PromoDialogHero>
26
+ * <Illustration src={ContractSignature} variant="picture" />
27
+ * </PromoDialogHero>
28
+ * <DialogTitle>Welcome to our new feature</DialogTitle>
29
+ * <DialogContent>
30
+ * Discover how this feature can help you...
31
+ * </DialogContent>
32
+ * </PromoDialog>
33
+ * )
34
+ * }
35
+ * ```
36
+ * @remarks
37
+ * - This component is specifically designed for promo dialogs and triggers a special horizontal split layout on desktop
38
+ * - On mobile devices, the layout automatically adjusts to a vertical stack
39
+ * - The hero section has a light blue background by default
40
+ * - Use with illustrations from `@payfit/unity-illustrations` for consistent branding
41
+ * - **Accessibility**: Hero content is marked as decorative (aria-hidden) as it's purely visual
42
+ */
43
+ declare const PromoDialogHero: {
44
+ ({ children, className }: PromoDialogHeroProps): import("react/jsx-runtime").JSX.Element;
45
+ displayName: string;
46
+ };
47
+ export { PromoDialogHero };
@@ -0,0 +1,25 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { uyTv as e } from "@payfit/unity-themes";
3
+ const t = e({
4
+ base: [
5
+ "uy:rounded-150 uy:bg-surface-neutral-lowest",
6
+ "uy:flex uy:items-center uy:justify-center",
7
+ // Mobile: auto height for vertical stack
8
+ "uy:h-auto",
9
+ // Desktop: takes 1/3 of width, stretches to row height
10
+ "uy:md:basis-[40%] uy:lg:basis-[37.2%] uy:md:shrink-0"
11
+ ]
12
+ }), u = ({ children: o, className: r }) => /* @__PURE__ */ a(
13
+ "div",
14
+ {
15
+ className: t({ className: r }),
16
+ "data-unity-slot": "promo-dialog.hero",
17
+ "data-dd-privacy": "allow",
18
+ "aria-hidden": "true",
19
+ children: o
20
+ }
21
+ );
22
+ u.displayName = "PromoDialogHero";
23
+ export {
24
+ u as PromoDialogHero
25
+ };
@@ -0,0 +1,53 @@
1
+ import { TextProps } from '../../text/Text.js';
2
+ export type PromoDialogSubtitleProps = Omit<TextProps, 'variant' | 'color'>;
3
+ /**
4
+ * PromoDialogSubtitle displays a subtitle text above the title in a promo dialog.
5
+ * It provides consistent styling with body variant and neutral lowest color.
6
+ *
7
+ * This component should be used within a `PromoDialog` to display additional context
8
+ * or information above the main title, such as step indicators or feature labels.
9
+ * @param props - The props for the PromoDialogSubtitle component
10
+ * @param props.children - The subtitle text to be displayed
11
+ * @example
12
+ * ```tsx
13
+ * import {
14
+ * PromoDialog,
15
+ * PromoDialogHero,
16
+ * PromoDialogSubtitle,
17
+ * PromoDialogTitle,
18
+ * PromoDialogContent,
19
+ * PromoDialogActions,
20
+ * DialogButton,
21
+ * } from '@payfit/unity-components'
22
+ * import { Illustration } from '@payfit/unity-illustrations'
23
+ * import ContractSignature from '@payfit/unity-illustrations/assets/ContractSignature'
24
+ *
25
+ * function PromoExample() {
26
+ * return (
27
+ * <PromoDialog>
28
+ * <PromoDialogHero>
29
+ * <Illustration src={ContractSignature} variant="picture" />
30
+ * </PromoDialogHero>
31
+ * <PromoDialogSubtitle>Step 1/3</PromoDialogSubtitle>
32
+ * <PromoDialogTitle>Welcome</PromoDialogTitle>
33
+ * <PromoDialogContent>
34
+ * <p>This is the main content of the promo dialog.</p>
35
+ * </PromoDialogContent>
36
+ * <PromoDialogActions>
37
+ * <DialogButton variant="close">Skip</DialogButton>
38
+ * <DialogButton variant="confirm">Continue</DialogButton>
39
+ * </PromoDialogActions>
40
+ * </PromoDialog>
41
+ * )
42
+ * }
43
+ * ```
44
+ * @remarks
45
+ * - Use this component for displaying contextual information above the title
46
+ * - Styled with body variant and content.neutral.lowest color
47
+ * - Automatically positioned above PromoDialogTitle when used together
48
+ */
49
+ declare const PromoDialogSubtitle: {
50
+ ({ children, ...rest }: PromoDialogSubtitleProps): import("react/jsx-runtime").JSX.Element;
51
+ displayName: string;
52
+ };
53
+ export { PromoDialogSubtitle };
@@ -0,0 +1,21 @@
1
+ import { jsx as a } from "react/jsx-runtime";
2
+ import { Text as l } from "../../text/Text.js";
3
+ const r = ({
4
+ children: o,
5
+ ...t
6
+ }) => /* @__PURE__ */ a(
7
+ l,
8
+ {
9
+ ...t,
10
+ variant: "body",
11
+ asElement: "h4",
12
+ color: "content.neutral.lowest",
13
+ "data-unity-slot": "promo-dialog.subtitle",
14
+ className: "uy:typography-body-small uy:md:typography-body uy:mb-100",
15
+ children: o
16
+ }
17
+ );
18
+ r.displayName = "PromoDialogSubtitle";
19
+ export {
20
+ r as PromoDialogSubtitle
21
+ };
@@ -0,0 +1,6 @@
1
+ import { PropsWithChildren } from 'react';
2
+ declare const PromoDialogTitle: {
3
+ ({ children }: PropsWithChildren<object>): import("react/jsx-runtime").JSX.Element;
4
+ displayName: string;
5
+ };
6
+ export { PromoDialogTitle };