@payfit/unity-components 2.0.0 → 2.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/esm/components/alert/Alert.js +41 -29
  2. package/dist/esm/components/alert/parts/AlertTitle.js +8 -8
  3. package/dist/esm/components/app-layout/AppLayout.d.ts +2 -0
  4. package/dist/esm/components/app-menu/parts/AppMenuFooter.js +23 -23
  5. package/dist/esm/components/app-menu/parts/AppMenuHeader.d.ts +1 -1
  6. package/dist/esm/components/app-menu/parts/AppMenuHeader.js +9 -9
  7. package/dist/esm/components/autocomplete/Autocomplete.d.ts +0 -9
  8. package/dist/esm/components/autocomplete/Autocomplete.js +54 -57
  9. package/dist/esm/components/autocomplete/parts/AutocompleteItem.js +8 -8
  10. package/dist/esm/components/avatar/Avatar.variants.js +1 -1
  11. package/dist/esm/components/avatar/parts/AvatarFallback.js +26 -27
  12. package/dist/esm/components/badge/Badge.js +1 -1
  13. package/dist/esm/components/breadcrumbs/Breadcrumbs.variant.js +1 -1
  14. package/dist/esm/components/button/Button.js +6 -6
  15. package/dist/esm/components/button/Button.variants.d.ts +1 -0
  16. package/dist/esm/components/button/Button.variants.js +22 -15
  17. package/dist/esm/components/card/Card.context.d.ts +5 -0
  18. package/dist/esm/components/card/Card.context.js +14 -0
  19. package/dist/esm/components/card/Card.d.ts +210 -0
  20. package/dist/esm/components/card/Card.js +93 -0
  21. package/dist/esm/components/card/parts/CardContent.d.ts +37 -0
  22. package/dist/esm/components/card/parts/CardContent.js +8 -0
  23. package/dist/esm/components/card/parts/CardTitle.d.ts +55 -0
  24. package/dist/esm/components/card/parts/CardTitle.js +33 -0
  25. package/dist/esm/components/checkbox/Checkbox.js +38 -30
  26. package/dist/esm/components/checkbox/Checkbox.variants.d.ts +9 -9
  27. package/dist/esm/components/checkbox/Checkbox.variants.js +23 -7
  28. package/dist/esm/components/checkbox/TanstackCheckbox.d.ts +28 -0
  29. package/dist/esm/components/checkbox/TanstackCheckbox.js +51 -0
  30. package/dist/esm/components/checkbox/parts/CheckboxIndicator.js +7 -7
  31. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +2 -0
  32. package/dist/esm/components/checkbox-field/TanstackCheckboxField.d.ts +14 -0
  33. package/dist/esm/components/checkbox-field/TanstackCheckboxField.js +40 -0
  34. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.d.ts +4 -0
  35. package/dist/esm/components/checkbox-group/TanstackCheckboxGroup.js +37 -0
  36. package/dist/esm/components/checkbox-group-field/CheckboxGroupField.d.ts +2 -0
  37. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.d.ts +72 -0
  38. package/dist/esm/components/checkbox-group-field/TanstackCheckGroupField.js +40 -0
  39. package/dist/esm/components/client-side-pagination/parts/PaginationNavButton.js +1 -1
  40. package/dist/esm/components/client-side-pagination/parts/RawPaginationLink.js +10 -10
  41. package/dist/esm/components/collapsible/parts/CollapsibleContent.js +5 -5
  42. package/dist/esm/components/collapsible/parts/CollapsibleTitle.js +8 -8
  43. package/dist/esm/components/data-table/DataTable.d.ts +109 -16
  44. package/dist/esm/components/data-table/DataTable.js +107 -93
  45. package/dist/esm/components/data-table/mocks/employee-data.d.ts +1 -0
  46. package/dist/esm/components/date-calendar/DateCalendar.js +1 -1
  47. package/dist/esm/components/date-calendar/parts/DateSegmentSelect.js +1 -1
  48. package/dist/esm/components/date-picker/DatePicker.d.ts +1 -1
  49. package/dist/esm/components/date-picker/DatePicker.js +59 -50
  50. package/dist/esm/components/date-picker/TanstackDatePicker.d.ts +22 -0
  51. package/dist/esm/components/date-picker/TanstackDatePicker.js +53 -0
  52. package/dist/esm/components/date-picker/parts/DateInput.js +4 -4
  53. package/dist/esm/components/date-picker-field/DatePickerField.d.ts +2 -0
  54. package/dist/esm/components/date-picker-field/TanstackDatePickerField.d.ts +71 -0
  55. package/dist/esm/components/date-picker-field/TanstackDatePickerField.js +41 -0
  56. package/dist/esm/components/definition-list/DefinitionList.context.d.ts +19 -0
  57. package/dist/esm/components/definition-list/DefinitionList.d.ts +24 -0
  58. package/dist/esm/components/definition-list/parts/DefinitionItem.d.ts +25 -0
  59. package/dist/esm/components/dialog/Dialog.d.ts +34 -22
  60. package/dist/esm/components/dialog/Dialog.js +90 -52
  61. package/dist/esm/components/dialog/parts/DialogActions.js +6 -6
  62. package/dist/esm/components/dialog/parts/DialogTitle.js +7 -4
  63. package/dist/esm/components/dialog/test-utils.d.ts +28 -0
  64. package/dist/esm/components/dialog/test-utils.js +78 -0
  65. package/dist/esm/components/error-state/ErrorState.js +7 -7
  66. package/dist/esm/components/filter/Filter.controls.d.ts +192 -0
  67. package/dist/esm/components/filter/Filter.controls.js +45 -0
  68. package/dist/esm/components/filter/Filter.d.ts +189 -0
  69. package/dist/esm/components/filter/Filter.js +147 -0
  70. package/dist/esm/components/filter/Filter.types.d.ts +121 -0
  71. package/dist/esm/components/filter/hooks/useFilterIds.d.ts +49 -0
  72. package/dist/esm/components/filter/hooks/useFilterIds.js +13 -0
  73. package/dist/esm/components/filter/hooks/useFilterState.d.ts +74 -0
  74. package/dist/esm/components/filter/hooks/useFilterState.js +23 -0
  75. package/dist/esm/components/filter/hooks/useFilterValue.d.ts +61 -0
  76. package/dist/esm/components/filter/hooks/useFilterValue.js +31 -0
  77. package/dist/esm/components/filter/parts/FilterButton.d.ts +75 -0
  78. package/dist/esm/components/filter/parts/FilterButton.js +55 -0
  79. package/dist/esm/components/filter/parts/FilterLabel.d.ts +96 -0
  80. package/dist/esm/components/filter/parts/FilterLabel.js +57 -0
  81. package/dist/esm/components/filter/parts/FilterPopover.d.ts +95 -0
  82. package/dist/esm/components/filter/parts/FilterPopover.js +79 -0
  83. package/dist/esm/components/filter/utils/value-formatters.d.ts +62 -0
  84. package/dist/esm/components/filter/utils/value-formatters.js +14 -0
  85. package/dist/esm/components/filter-toolbar/FilterToolbar.d.ts +110 -0
  86. package/dist/esm/components/filter-toolbar/FilterToolbar.js +172 -0
  87. package/dist/esm/components/filter-toolbar/FilterToolbar.types.d.ts +119 -0
  88. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.d.ts +96 -0
  89. package/dist/esm/components/filter-toolbar/hooks/use-filter-toolbar-state.js +132 -0
  90. package/dist/esm/components/filter-toolbar/parts/AddFilter.d.ts +63 -0
  91. package/dist/esm/components/filter-toolbar/parts/AddFilter.js +107 -0
  92. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.d.ts +18 -0
  93. package/dist/esm/components/filter-toolbar/parts/AddFilterItem.js +18 -0
  94. package/dist/esm/components/filter-toolbar/utils/filter-adapters.d.ts +93 -0
  95. package/dist/esm/components/filter-toolbar/utils/filter-adapters.js +88 -0
  96. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.d.ts +24 -0
  97. package/dist/esm/components/filter-toolbar/utils/normalize-filter-value.js +19 -0
  98. package/dist/esm/components/form/Form.d.ts +2 -0
  99. package/dist/esm/components/form/TanstackForm.d.ts +24 -0
  100. package/dist/esm/components/form/TanstackForm.js +29 -0
  101. package/dist/esm/components/form-field/FormField.d.ts +2 -0
  102. package/dist/esm/components/form-field/TanstackFormField.context.d.ts +10 -0
  103. package/dist/esm/components/form-field/TanstackFormField.context.js +14 -0
  104. package/dist/esm/components/form-field/TanstackFormField.d.ts +49 -0
  105. package/dist/esm/components/form-field/TanstackFormField.js +46 -0
  106. package/dist/esm/components/form-field/parts/FormControl.d.ts +2 -0
  107. package/dist/esm/components/form-field/parts/FormFeedbackText.d.ts +2 -0
  108. package/dist/esm/components/form-field/parts/FormHelperText.d.ts +2 -0
  109. package/dist/esm/components/form-field/parts/FormLabel.d.ts +2 -0
  110. package/dist/esm/components/form-field/parts/RawFormContextualLink.d.ts +2 -0
  111. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.d.ts +12 -0
  112. package/dist/esm/components/form-field/parts/TanstackFormFeedbackText.js +32 -0
  113. package/dist/esm/components/form-field/parts/TanstackFormHelperText.d.ts +11 -0
  114. package/dist/esm/components/form-field/parts/TanstackFormHelperText.js +25 -0
  115. package/dist/esm/components/form-field/parts/TanstackFormLabel.d.ts +8 -0
  116. package/dist/esm/components/form-field/parts/TanstackFormLabel.js +26 -0
  117. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.d.ts +26 -0
  118. package/dist/esm/components/form-field/parts/TanstackRawFormContextualLink.js +45 -0
  119. package/dist/esm/components/icon-button/CircularIconButton.d.ts +9 -9
  120. package/dist/esm/components/icon-button/CircularIconButton.js +53 -36
  121. package/dist/esm/components/icon-button/IconButton.variants.d.ts +1 -0
  122. package/dist/esm/components/icon-button/IconButton.variants.js +44 -28
  123. package/dist/esm/components/input/Input.js +36 -35
  124. package/dist/esm/components/input/TanstackInput.d.ts +22 -0
  125. package/dist/esm/components/input/TanstackInput.js +38 -0
  126. package/dist/esm/components/label/Label.js +12 -12
  127. package/dist/esm/components/link/RawLink.js +38 -31
  128. package/dist/esm/components/list-view/ListView.d.ts +56 -0
  129. package/dist/esm/components/list-view/ListView.fixtures.d.ts +20 -0
  130. package/dist/esm/components/list-view/ListView.js +44 -0
  131. package/dist/esm/components/list-view/parts/ListViewItemLabel.d.ts +34 -0
  132. package/dist/esm/components/list-view/parts/ListViewItemLabel.js +22 -0
  133. package/dist/esm/components/list-view/parts/ListViewItemText.d.ts +33 -0
  134. package/dist/esm/components/list-view/parts/ListViewItemText.js +22 -0
  135. package/dist/esm/components/list-view/parts/ListViewSection.d.ts +14 -0
  136. package/dist/esm/components/list-view/parts/ListViewSection.js +21 -0
  137. package/dist/esm/components/list-view/parts/RawListViewItem.d.ts +102 -0
  138. package/dist/esm/components/list-view/parts/RawListViewItem.js +80 -0
  139. package/dist/esm/components/multi-select/MultiSelect.d.ts +5 -7
  140. package/dist/esm/components/multi-select/MultiSelect.js +199 -176
  141. package/dist/esm/components/multi-select/MultiselectTypes.d.ts +114 -0
  142. package/dist/esm/components/multi-select/TanstackMultiSelect.d.ts +7 -0
  143. package/dist/esm/components/multi-select/TanstackMultiSelect.js +41 -0
  144. package/dist/esm/components/multi-select/parts/MultiSelectButton.d.ts +2 -0
  145. package/dist/esm/components/multi-select/parts/MultiSelectButton.js +62 -46
  146. package/dist/esm/components/multi-select/parts/MultiSelectPopover.js +15 -15
  147. package/dist/esm/components/multi-select-field/MultiSelectField.d.ts +45 -12
  148. package/dist/esm/components/multi-select-field/MultiSelectField.js +56 -66
  149. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.d.ts +92 -0
  150. package/dist/esm/components/multi-select-field/TanstackMultiSelectField.js +48 -0
  151. package/dist/esm/components/multi-select-field/test-utils.d.ts +17 -0
  152. package/dist/esm/components/multi-select-field/test-utils.js +45 -0
  153. package/dist/esm/components/nav/parts/RawNavItem.js +6 -6
  154. package/dist/esm/components/navigation-card/NavigationCard.context.d.ts +31 -0
  155. package/dist/esm/components/navigation-card/NavigationCard.context.js +13 -0
  156. package/dist/esm/components/navigation-card/NavigationCard.d.ts +46 -0
  157. package/dist/esm/components/navigation-card/NavigationCard.js +62 -0
  158. package/dist/esm/components/navigation-card/NavigationCard.types.d.ts +37 -0
  159. package/dist/esm/components/navigation-card/NavigationCard.variants.d.ts +1147 -0
  160. package/dist/esm/components/navigation-card/NavigationCard.variants.js +164 -0
  161. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.d.ts +39 -0
  162. package/dist/esm/components/navigation-card/parts/NavigationCardDescription.js +22 -0
  163. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.d.ts +146 -0
  164. package/dist/esm/components/navigation-card/parts/NavigationCardGroup.js +93 -0
  165. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.d.ts +32 -0
  166. package/dist/esm/components/navigation-card/parts/NavigationCardLabel.js +24 -0
  167. package/dist/esm/components/number-field/NumberField.d.ts +2 -0
  168. package/dist/esm/components/number-field/TanstackNumberField.d.ts +74 -0
  169. package/dist/esm/components/number-field/TanstackNumberField.js +44 -0
  170. package/dist/esm/components/number-input/NumberInput.js +31 -29
  171. package/dist/esm/components/number-input/TanstackNumberInput.d.ts +58 -0
  172. package/dist/esm/components/number-input/TanstackNumberInput.js +38 -0
  173. package/dist/esm/components/page/Page.js +12 -11
  174. package/dist/esm/components/pagination/parts/RawPaginationLink.js +22 -22
  175. package/dist/esm/components/pagination/parts/RawPaginationNext.js +13 -13
  176. package/dist/esm/components/pagination/parts/RawPaginationPrevious.js +10 -10
  177. package/dist/esm/components/payfit-brand/PayFitBrand.d.ts +4 -0
  178. package/dist/esm/components/payfit-brand/PayFitBrand.js +30 -22
  179. package/dist/esm/components/payfit-brand/PayFitPreprod.js +25 -25
  180. package/dist/esm/components/phone-number/PhoneNumberInput.d.ts +67 -0
  181. package/dist/esm/components/phone-number/PhoneNumberInput.js +322 -0
  182. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.d.ts +64 -0
  183. package/dist/esm/components/phone-number/TanstackPhoneNumberInput.js +33 -0
  184. package/dist/esm/components/phone-number/parts/PhoneNumberItem.d.ts +42 -0
  185. package/dist/esm/components/phone-number/parts/PhoneNumberItem.js +68 -0
  186. package/dist/esm/components/phone-number/unknownFlag.svg.js +4 -0
  187. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.d.ts +15 -0
  188. package/dist/esm/components/phone-number-field/TanstackPhoneNumberField.js +32 -0
  189. package/dist/esm/components/pill/Pill.d.ts +2 -2
  190. package/dist/esm/components/pill/Pill.js +8 -8
  191. package/dist/esm/components/popover/Popover.js +6 -6
  192. package/dist/esm/components/promo-dialog/PromoDialog.d.ts +149 -0
  193. package/dist/esm/components/promo-dialog/PromoDialog.js +219 -0
  194. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.d.ts +44 -0
  195. package/dist/esm/components/promo-dialog/parts/PromoDialogActions.js +29 -0
  196. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.d.ts +43 -0
  197. package/dist/esm/components/promo-dialog/parts/PromoDialogContent.js +20 -0
  198. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.d.ts +47 -0
  199. package/dist/esm/components/promo-dialog/parts/PromoDialogHero.js +25 -0
  200. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.d.ts +53 -0
  201. package/dist/esm/components/promo-dialog/parts/PromoDialogSubtitle.js +21 -0
  202. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.d.ts +6 -0
  203. package/dist/esm/components/promo-dialog/parts/PromoDialogTitle.js +18 -0
  204. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.d.ts +13 -0
  205. package/dist/esm/components/radio-button-group/TanstackRadioButtonGroup.js +43 -0
  206. package/dist/esm/components/radio-button-group/parts/RadioButton.d.ts +29 -11
  207. package/dist/esm/components/radio-button-group/parts/RadioButton.js +53 -51
  208. package/dist/esm/components/radio-button-group-field/RadioButtonGroupField.d.ts +2 -0
  209. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.d.ts +13 -0
  210. package/dist/esm/components/radio-button-group-field/TanstackRadioButtonGroupField.js +38 -0
  211. package/dist/esm/components/search/Search.js +46 -46
  212. package/dist/esm/components/segmented-button-group/parts/ToggleButton.js +5 -5
  213. package/dist/esm/components/select/Select.d.ts +5 -4
  214. package/dist/esm/components/select/Select.js +53 -45
  215. package/dist/esm/components/select/TanstackSelect.d.ts +80 -0
  216. package/dist/esm/components/select/TanstackSelect.js +34 -0
  217. package/dist/esm/components/select/parts/SearchInput.d.ts +4 -1
  218. package/dist/esm/components/select/parts/SearchInput.js +49 -31
  219. package/dist/esm/components/select/parts/SelectButton.js +19 -17
  220. package/dist/esm/components/select-field/SelectField.d.ts +2 -0
  221. package/dist/esm/components/select-field/SelectField.js +8 -9
  222. package/dist/esm/components/select-field/TanstackSelectField.d.ts +124 -0
  223. package/dist/esm/components/select-field/TanstackSelectField.js +44 -0
  224. package/dist/esm/components/select-list/SelectList.d.ts +95 -0
  225. package/dist/esm/components/select-list/SelectList.js +79 -0
  226. package/dist/esm/components/select-list/SelectList.types.d.ts +29 -0
  227. package/dist/esm/components/select-list/constants.d.ts +36 -0
  228. package/dist/esm/components/select-list/constants.js +29 -0
  229. package/dist/esm/components/select-list/helpers.d.ts +42 -0
  230. package/dist/esm/components/select-list/helpers.js +48 -0
  231. package/dist/esm/components/select-list/hooks/useControlledSelection.d.ts +23 -0
  232. package/dist/esm/components/select-list/hooks/useControlledSelection.js +16 -0
  233. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.d.ts +23 -0
  234. package/dist/esm/components/select-list/hooks/useSelectedFirstSorting.js +31 -0
  235. package/dist/esm/components/select-list/parts/SelectListEmptyState.d.ts +8 -0
  236. package/dist/esm/components/select-list/parts/SelectListEmptyState.js +25 -0
  237. package/dist/esm/components/select-list/parts/SelectListOptGroup.d.ts +118 -0
  238. package/dist/esm/components/select-list/parts/SelectListOptGroup.js +28 -0
  239. package/dist/esm/components/select-list/parts/SelectListOption.d.ts +24 -0
  240. package/dist/esm/components/select-list/parts/SelectListOption.js +72 -0
  241. package/dist/esm/components/select-list/parts/SelectListSearchInput.d.ts +2 -0
  242. package/dist/esm/components/select-list/parts/SelectListSearchInput.js +43 -0
  243. package/dist/esm/components/select-list/parts/SelectedItemsSection.d.ts +54 -0
  244. package/dist/esm/components/select-list/parts/SelectedItemsSection.js +35 -0
  245. package/dist/esm/components/select-list/utils/partition.d.ts +13 -0
  246. package/dist/esm/components/select-list/utils/partition.js +9 -0
  247. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.context.d.ts +1 -5
  248. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.d.ts +6 -1
  249. package/dist/esm/components/selectable-button-group/SelectableButtonGroup.js +23 -23
  250. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.d.ts +27 -0
  251. package/dist/esm/components/selectable-button-group/TanstackSelectableButtonGroup.js +34 -0
  252. package/dist/esm/components/selectable-button-group/parts/SelectableButton.d.ts +1 -16
  253. package/dist/esm/components/selectable-button-group/parts/SelectableButton.js +56 -57
  254. package/dist/esm/components/selectable-button-group-field/SelectableButtonGroupField.d.ts +2 -0
  255. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.d.ts +81 -0
  256. package/dist/esm/components/selectable-button-group-field/TanstackSelectableButtonGroupField.js +47 -0
  257. package/dist/esm/components/selectable-card/internals/Description.js +1 -1
  258. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/SelectableCardCheckboxGroup.js +1 -1
  259. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.d.ts +26 -0
  260. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/TanstackSelectableCardCheckboxGroup.js +32 -0
  261. package/dist/esm/components/selectable-card/selectable-card-checkbox-group/parts/SelectableCardCheckbox.js +24 -24
  262. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.d.ts +2 -0
  263. package/dist/esm/components/selectable-card/selectable-card-radio-group/SelectableCardRadioGroup.js +12 -14
  264. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.d.ts +28 -0
  265. package/dist/esm/components/selectable-card/selectable-card-radio-group/TanstackSelectableCardRadioGroup.js +32 -0
  266. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/RadioIndicator.js +14 -13
  267. package/dist/esm/components/selectable-card/selectable-card-radio-group/parts/SelectableCardRadio.js +27 -25
  268. package/dist/esm/components/selectable-card/selectableCard.variant.js +5 -5
  269. package/dist/esm/components/selectable-card-checkbox-group-field/SelectableCardCheckboxGroupField.d.ts +2 -0
  270. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.d.ts +10 -0
  271. package/dist/esm/components/selectable-card-checkbox-group-field/TanstackSelectableCardCheckboxGroupField.js +38 -0
  272. package/dist/esm/components/selectable-card-radio-group-field/SelectableCardRadioGroupField.d.ts +2 -0
  273. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.d.ts +10 -0
  274. package/dist/esm/components/selectable-card-radio-group-field/TanstackSelectableCardRadioGroupField.js +38 -0
  275. package/dist/esm/components/table/Table.context.d.ts +5 -0
  276. package/dist/esm/components/table/Table.context.js +14 -13
  277. package/dist/esm/components/table/Table.d.ts +93 -0
  278. package/dist/esm/components/table/Table.js +135 -107
  279. package/dist/esm/components/table/parts/TableBody.js +83 -21
  280. package/dist/esm/components/table/parts/TableEmptyState.js +6 -6
  281. package/dist/esm/components/table/parts/TableHeader.js +1 -1
  282. package/dist/esm/components/table/parts/TablePagination.js +1 -1
  283. package/dist/esm/components/table/parts/TableRow.js +1 -0
  284. package/dist/esm/components/tabs/Tabs.variant.d.ts +0 -6
  285. package/dist/esm/components/tabs/Tabs.variant.js +11 -12
  286. package/dist/esm/components/task-menu/parts/RawSubTask.js +26 -26
  287. package/dist/esm/components/task-menu/parts/RawTask.js +32 -28
  288. package/dist/esm/components/task-menu/parts/TaskGroup.js +30 -26
  289. package/dist/esm/components/task-menu/parts/task.variants.js +4 -2
  290. package/dist/esm/components/text/Text.d.ts +11 -1
  291. package/dist/esm/components/text/Text.js +41 -31
  292. package/dist/esm/components/text/Text.variants.d.ts +12 -0
  293. package/dist/esm/components/text/Text.variants.js +4 -0
  294. package/dist/esm/components/text-area/TanstackTextArea.d.ts +21 -0
  295. package/dist/esm/components/text-area/TanstackTextArea.js +35 -0
  296. package/dist/esm/components/text-area/TextArea.js +31 -29
  297. package/dist/esm/components/text-field/TanstackTextField.d.ts +79 -0
  298. package/dist/esm/components/text-field/TanstackTextField.js +60 -0
  299. package/dist/esm/components/text-field/TextField.d.ts +2 -0
  300. package/dist/esm/components/toast/UnityToast.js +5 -5
  301. package/dist/esm/components/toast/test-utils.d.ts +36 -0
  302. package/dist/esm/components/toast/test-utils.js +118 -0
  303. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.d.ts +46 -0
  304. package/dist/esm/components/toggle-switch/TanstackToggleSwitch.js +25 -0
  305. package/dist/esm/components/toggle-switch/ToggleSwitch.d.ts +21 -9
  306. package/dist/esm/components/toggle-switch/ToggleSwitch.js +71 -32
  307. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.d.ts +11 -0
  308. package/dist/esm/components/toggle-switch-field/TanstackToggleSwitchField.js +34 -0
  309. package/dist/esm/components/toggle-switch-field/ToggleSwitchField.d.ts +2 -0
  310. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.d.ts +57 -0
  311. package/dist/esm/components/toggle-switch-group/TanstackToggleSwitchGroup.js +23 -0
  312. package/dist/esm/components/toggle-switch-group/ToggleSwitchGroup.js +1 -1
  313. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.d.ts +19 -0
  314. package/dist/esm/components/toggle-switch-group-field/TanstackToggleSwitchGroupField.js +50 -0
  315. package/dist/esm/components/toggle-switch-group-field/ToggleSwitchGroupField.d.ts +2 -0
  316. package/dist/esm/docs/{table → examples/data}/mocks/employee-columns.d.ts +1 -1
  317. package/dist/esm/hooks/tanstack-form-context.d.ts +1 -0
  318. package/dist/esm/hooks/tanstack-form-context.js +8 -0
  319. package/dist/esm/hooks/use-form.d.ts +2 -0
  320. package/dist/esm/hooks/use-has-scroll.d.ts +71 -0
  321. package/dist/esm/hooks/use-has-scroll.js +75 -0
  322. package/dist/esm/hooks/use-tanstack-form.d.ts +369 -0
  323. package/dist/esm/hooks/use-tanstack-form.js +209 -0
  324. package/dist/esm/index.d.ts +44 -20
  325. package/dist/esm/index.js +457 -394
  326. package/dist/esm/index.storybook-testing.d.ts +3 -0
  327. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/FormContextualLink.d.ts +6 -1
  328. package/dist/esm/integrations/tanstack-router/components/form-contextual-link/TanstackFormContextualLink.d.ts +43 -0
  329. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.d.ts +34 -0
  330. package/dist/esm/integrations/tanstack-router/components/list-view/ListView.js +25 -0
  331. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.d.ts +51 -0
  332. package/dist/esm/integrations/tanstack-router/components/list-view/parts/ListViewItem.js +32 -0
  333. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.d.ts +73 -0
  334. package/dist/esm/integrations/tanstack-router/components/navigation-card/NavigationCard.js +37 -0
  335. package/dist/esm/integrations/tanstack-router/index.d.ts +3 -0
  336. package/dist/esm/integrations/tanstack-router/utils/decorators.d.ts +1 -1
  337. package/dist/esm/integrations/tanstack-router.js +32 -26
  338. package/dist/esm/mocks/employees.d.ts +1 -5
  339. package/dist/esm/storybook-testing.js +8 -2
  340. package/dist/esm/storybook-utilities/previewTransform.d.ts +1 -0
  341. package/dist/esm/utils/scroll-detection.d.ts +77 -0
  342. package/dist/esm/utils/scroll-detection.js +33 -0
  343. package/dist/esm/utils/spacing.d.ts +63 -0
  344. package/dist/esm/utils/spacing.js +15 -0
  345. package/i18n/en-GB.json +21 -8
  346. package/i18n/es-ES.json +23 -10
  347. package/i18n/fr-FR.json +24 -11
  348. package/package.json +41 -42
  349. package/dist/esm/components/multi-select/Multiselect.types.d.ts +0 -109
  350. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.d.ts +0 -6
  351. package/dist/esm/integrations/react-router/v5/UnityReactRouterV5Provider.js +0 -28
  352. package/dist/esm/integrations/react-router/v5/index.d.ts +0 -1
  353. package/dist/esm/integrations/react-router/v5.js +0 -4
@@ -0,0 +1,15 @@
1
+ import { ReactNode } from 'react';
2
+ import { LabelProps } from '../label/Label.js';
3
+ import { TanstackPhoneNumberInputProps } from '../phone-number/TanstackPhoneNumberInput.js';
4
+ interface FieldProps extends Pick<LabelProps, 'isRequired' | 'requiredVariant'> {
5
+ /** The label for the text field. */
6
+ label: string;
7
+ /** Helper text to display below the text field. */
8
+ helperText?: ReactNode;
9
+ /** A contextual link to display below the select field. */
10
+ contextualLink?: ReactNode;
11
+ }
12
+ export interface PhoneNumberFieldProps extends FieldProps, TanstackPhoneNumberInputProps {
13
+ }
14
+ declare const TanstackPhoneNumberField: import('react').ForwardRefExoticComponent<PhoneNumberFieldProps & import('react').RefAttributes<unknown>>;
15
+ export { TanstackPhoneNumberField };
@@ -0,0 +1,32 @@
1
+ import { jsxs as i, jsx as r } from "react/jsx-runtime";
2
+ import { forwardRef as c } from "react";
3
+ import { TanstackFormFeedbackText as s } from "../form-field/parts/TanstackFormFeedbackText.js";
4
+ import { TanstackFormHelperText as p } from "../form-field/parts/TanstackFormHelperText.js";
5
+ import { TanstackFormLabel as d } from "../form-field/parts/TanstackFormLabel.js";
6
+ import { TanstackFormField as l } from "../form-field/TanstackFormField.js";
7
+ import { TanstackPhoneNumberInput as f } from "../phone-number/TanstackPhoneNumberInput.js";
8
+ const F = ({
9
+ label: m,
10
+ isRequired: e,
11
+ requiredVariant: t,
12
+ helperText: o,
13
+ contextualLink: a,
14
+ ...n
15
+ }) => /* @__PURE__ */ i(l, { children: [
16
+ /* @__PURE__ */ r(
17
+ d,
18
+ {
19
+ requiredVariant: t,
20
+ isRequired: e,
21
+ children: m
22
+ }
23
+ ),
24
+ o && /* @__PURE__ */ r(p, { children: o }),
25
+ /* @__PURE__ */ r(f, { ...n }),
26
+ /* @__PURE__ */ r(s, {}),
27
+ a
28
+ ] }), k = c(F);
29
+ k.displayName = "TanstackPhoneNumberField";
30
+ export {
31
+ k as TanstackPhoneNumberField
32
+ };
@@ -14,7 +14,7 @@ declare const pill: import('tailwind-variants').TVReturnType<{
14
14
  true: string;
15
15
  false: string;
16
16
  };
17
- }, undefined, "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small", {
17
+ }, undefined, "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong", {
18
18
  variant: {
19
19
  critical: string;
20
20
  info: string;
@@ -42,7 +42,7 @@ declare const pill: import('tailwind-variants').TVReturnType<{
42
42
  true: string;
43
43
  false: string;
44
44
  };
45
- }, undefined, "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small", unknown, unknown, undefined>>;
45
+ }, undefined, "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong", unknown, unknown, undefined>>;
46
46
  export type PillProps = Partial<Pick<HTMLDivElement, 'id'>> & Required<Pick<AriaAttributes, 'aria-label'>> & Pick<AriaAttributes, 'aria-details' | 'aria-describedby' | 'aria-live'> & {
47
47
  /** The value to be displayed inside the Pill */
48
48
  value: number;
@@ -2,7 +2,7 @@ import { jsx as s } from "react/jsx-runtime";
2
2
  import { forwardRef as c } from "react";
3
3
  import { uyTv as o } from "@payfit/unity-themes";
4
4
  const y = o({
5
- base: "uy:min-w-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small",
5
+ base: "uy:min-w-200 uy:h-200 uy:max-w-400 uy:inline-flex uy:items-center uy:justify-center uy:text-center uy:typography-body-small-strong",
6
6
  variants: {
7
7
  variant: {
8
8
  critical: "uy:bg-surface-danger uy:text-content-inverted",
@@ -23,15 +23,15 @@ const y = o({
23
23
  shape: "pill",
24
24
  isVisible: !0
25
25
  }
26
- }), p = (t, i) => {
27
- const e = 10 ** i - 1;
26
+ }), p = (t, r) => {
27
+ const e = 10 ** r - 1;
28
28
  return t > e ? `${e}+` : t.toString();
29
29
  }, d = c(
30
- ({ variant: t = "critical", isVisible: i = !0, maxDigits: e = 2, value: a, ...l }, n) => {
31
- const r = p(Math.abs(a), e), u = y({
30
+ ({ variant: t = "critical", isVisible: r = !0, maxDigits: e = 2, value: a, ...l }, n) => {
31
+ const i = p(Math.abs(a), e), u = y({
32
32
  variant: t,
33
- isVisible: i,
34
- shape: r.length === 1 ? "circle" : "pill"
33
+ isVisible: r,
34
+ shape: i.length === 1 ? "circle" : "pill"
35
35
  });
36
36
  return /* @__PURE__ */ s(
37
37
  "span",
@@ -42,7 +42,7 @@ const y = o({
42
42
  role: "status",
43
43
  className: u,
44
44
  "aria-atomic": "true",
45
- children: r
45
+ children: i
46
46
  }
47
47
  );
48
48
  }
@@ -1,5 +1,5 @@
1
- import { jsx as t, jsxs as y } from "react/jsx-runtime";
2
- import { forwardRef as s } from "react";
1
+ import { jsx as t, jsxs as d } from "react/jsx-runtime";
2
+ import { forwardRef as y } from "react";
3
3
  import { uyTv as p } from "@payfit/unity-themes";
4
4
  import { Popover as g, Dialog as m, DialogTrigger as c } from "react-aria-components";
5
5
  import { DialogTrigger as j } from "react-aria-components";
@@ -16,12 +16,12 @@ const x = p({
16
16
  ],
17
17
  dialog: [
18
18
  "uy:flex uy:flex-col uy:rounded-100",
19
- "uy:focus:outline-2 uy:focus:outline-offset-2 uy:focus:outline-solid uy:focus:outline-utility-focus-ring"
19
+ "uy:focus-visible:outline-2 uy:focus-visible:outline-offset-2 uy:focus-visible:outline-solid uy:focus-visible:outline-utility-focus-ring"
20
20
  ]
21
21
  }
22
- }), b = s((a, e) => {
23
- const { children: o, title: r, isTitleSrOnly: n, displayCloseButton: i, ...l } = a, { base: u, dialog: d } = x();
24
- return /* @__PURE__ */ t(g, { ref: e, className: u(), offset: 8, ...l, children: /* @__PURE__ */ y(m, { className: d(), role: "dialog", children: [
22
+ }), b = y((a, e) => {
23
+ const { children: o, title: r, isTitleSrOnly: n, displayCloseButton: i, ...l } = a, { base: u, dialog: s } = x();
24
+ return /* @__PURE__ */ t(g, { ref: e, className: u(), offset: 8, ...l, children: /* @__PURE__ */ d(m, { className: s(), role: "dialog", children: [
25
25
  /* @__PURE__ */ t(
26
26
  f,
27
27
  {
@@ -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
+ };