@portnet/ui 6.0.1 → 6.0.3

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 (1011) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/dist/esm/index.js +90 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +118 -90
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +210 -52
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +64 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +14 -4
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -50
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -84
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +235 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  346. package/dist/esm/v2/personalization/capabilities/index.js +5 -0
  347. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
  348. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  349. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  350. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  351. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  352. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  353. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  354. package/dist/esm/v2/personalization/index.js +35 -0
  355. package/dist/esm/v2/personalization/index.js.map +1 -1
  356. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  357. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  358. package/dist/esm/v2/personalization/schema.js +8 -9
  359. package/dist/esm/v2/personalization/schema.js.map +1 -1
  360. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  361. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  362. package/dist/esm/v2/referentiel/types.js +2 -0
  363. package/dist/esm/v2/referentiel/types.js.map +1 -0
  364. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  365. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  367. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  368. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  369. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  370. package/dist/esm/v2/theme/_brand.js +8 -24
  371. package/dist/esm/v2/theme/_brand.js.map +1 -1
  372. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  373. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  374. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  375. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  376. package/dist/esm/v2/theme/cssVariables.js +62 -69
  377. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  378. package/dist/esm/v2/theme/index.js +5 -5
  379. package/dist/esm/v2/theme/index.js.map +1 -1
  380. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  381. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  382. package/dist/esm/v2/tokens/chart.js +261 -0
  383. package/dist/esm/v2/tokens/chart.js.map +1 -0
  384. package/dist/esm/v2/tokens/colors.js +22 -22
  385. package/dist/esm/v2/tokens/colors.js.map +1 -1
  386. package/dist/esm/v2/tokens/density.js +62 -7
  387. package/dist/esm/v2/tokens/density.js.map +1 -1
  388. package/dist/esm/v2/tokens/index.js +49 -34
  389. package/dist/esm/v2/tokens/index.js.map +1 -1
  390. package/dist/esm/v2/tokens/motion.js +12 -20
  391. package/dist/esm/v2/tokens/motion.js.map +1 -1
  392. package/dist/esm/v2/tokens/radius.js +1 -1
  393. package/dist/esm/v2/tokens/radius.js.map +1 -1
  394. package/dist/esm/v2/tokens/shadows.js +6 -6
  395. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  396. package/dist/esm/v2/tokens/spacing.js +2 -2
  397. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  398. package/dist/esm/v2/tokens/state.js +1 -1
  399. package/dist/esm/v2/tokens/state.js.map +1 -1
  400. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  401. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  402. package/dist/esm/v2/tokens/tokens.json +6 -1
  403. package/dist/esm/v2/tokens/typography.js +13 -13
  404. package/dist/esm/v2/tokens/typography.js.map +1 -1
  405. package/dist/esm/v2/tokens/zIndex.js +1 -1
  406. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  407. package/dist/esm/v2/types/datagrid.js.map +1 -1
  408. package/dist/esm/v2/utils/apiError.js +16 -37
  409. package/dist/esm/v2/utils/apiError.js.map +1 -1
  410. package/dist/esm/v2/utils/contrast.js +31 -32
  411. package/dist/esm/v2/utils/contrast.js.map +1 -1
  412. package/dist/esm/v2/utils/cx.js +5 -25
  413. package/dist/esm/v2/utils/cx.js.map +1 -1
  414. package/dist/esm/v2/utils/fileDownload.js +23 -26
  415. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  416. package/dist/esm/v2/utils/fileValidation.js +209 -0
  417. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtDate.js +111 -0
  419. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  420. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  421. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  422. package/dist/esm/v2/utils/formikErrors.js +78 -0
  423. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  424. package/dist/esm/v2/utils/index.js +35 -2
  425. package/dist/esm/v2/utils/index.js.map +1 -1
  426. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  427. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  428. package/dist/esm/v2/utils/networkStatus.js +12 -12
  429. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  430. package/dist/index.d.ts +9 -1
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +122 -47
  433. package/dist/index.js.map +1 -1
  434. package/dist/v2/__tests__/AppMain.test.js +133 -0
  435. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  436. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  437. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  438. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  439. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  440. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  441. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  442. package/dist/v2/__tests__/FieldError.test.js +98 -69
  443. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  444. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  445. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  446. package/dist/v2/__tests__/FieldWidth.test.js +148 -0
  447. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  448. package/dist/v2/__tests__/FileCard.test.js +45 -48
  449. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
  451. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  452. package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
  453. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  455. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  456. package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
  457. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  458. package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
  459. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  460. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  461. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  462. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  463. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  464. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  465. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  466. package/dist/v2/__tests__/apiError.test.js +50 -69
  467. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  468. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  469. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  470. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  471. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  472. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  473. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  474. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  475. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  476. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  477. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  478. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  479. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  480. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  481. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  482. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  483. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  484. package/dist/v2/__tests__/labels-merge.test.js +38 -46
  485. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  486. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  487. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  488. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  489. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  490. package/dist/v2/__tests__/rowActions.test.js +186 -0
  491. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  493. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  494. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  495. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  496. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  497. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  498. package/dist/v2/components/Accordion.js +60 -82
  499. package/dist/v2/components/Accordion.js.map +1 -1
  500. package/dist/v2/components/ActionStrip.js +40 -52
  501. package/dist/v2/components/ActionStrip.js.map +1 -1
  502. package/dist/v2/components/Banner.js +42 -41
  503. package/dist/v2/components/Banner.js.map +1 -1
  504. package/dist/v2/components/Busy.js +22 -27
  505. package/dist/v2/components/Busy.js.map +1 -1
  506. package/dist/v2/components/Button.js +39 -50
  507. package/dist/v2/components/Button.js.map +1 -1
  508. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  509. package/dist/v2/components/CategoryTag.js +49 -32
  510. package/dist/v2/components/CategoryTag.js.map +1 -1
  511. package/dist/v2/components/Checkbox.js +39 -45
  512. package/dist/v2/components/Checkbox.js.map +1 -1
  513. package/dist/v2/components/Chip.js +29 -42
  514. package/dist/v2/components/Chip.js.map +1 -1
  515. package/dist/v2/components/Combobox.js +122 -144
  516. package/dist/v2/components/Combobox.js.map +1 -1
  517. package/dist/v2/components/CommandPalette.js +138 -225
  518. package/dist/v2/components/CommandPalette.js.map +1 -1
  519. package/dist/v2/components/ConfirmDialog.js +46 -56
  520. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  521. package/dist/v2/components/DatePicker.js +81 -86
  522. package/dist/v2/components/DatePicker.js.map +1 -1
  523. package/dist/v2/components/DateRangePicker.js +77 -87
  524. package/dist/v2/components/DateRangePicker.js.map +1 -1
  525. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  526. package/dist/v2/components/DateTimePicker.js +121 -95
  527. package/dist/v2/components/DateTimePicker.js.map +1 -1
  528. package/dist/v2/components/Drawer.d.ts.map +1 -1
  529. package/dist/v2/components/Drawer.js +93 -88
  530. package/dist/v2/components/Drawer.js.map +1 -1
  531. package/dist/v2/components/Dropzone.js +150 -196
  532. package/dist/v2/components/Dropzone.js.map +1 -1
  533. package/dist/v2/components/EmptyState.js +18 -20
  534. package/dist/v2/components/EmptyState.js.map +1 -1
  535. package/dist/v2/components/FavoriteToggle.js +28 -39
  536. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  537. package/dist/v2/components/Field.d.ts +121 -5
  538. package/dist/v2/components/Field.d.ts.map +1 -1
  539. package/dist/v2/components/Field.js +221 -62
  540. package/dist/v2/components/Field.js.map +1 -1
  541. package/dist/v2/components/FieldError.js +18 -21
  542. package/dist/v2/components/FieldError.js.map +1 -1
  543. package/dist/v2/components/FieldHelp.js +40 -60
  544. package/dist/v2/components/FieldHelp.js.map +1 -1
  545. package/dist/v2/components/FileCard.js +27 -31
  546. package/dist/v2/components/FileCard.js.map +1 -1
  547. package/dist/v2/components/FilterTab.js +30 -38
  548. package/dist/v2/components/FilterTab.js.map +1 -1
  549. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  550. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  551. package/dist/v2/components/ForbiddenPage.js +37 -17
  552. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  553. package/dist/v2/components/FormGrid.js +53 -59
  554. package/dist/v2/components/FormGrid.js.map +1 -1
  555. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  556. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  557. package/dist/v2/components/FormikDisplay.js +108 -33
  558. package/dist/v2/components/FormikDisplay.js.map +1 -1
  559. package/dist/v2/components/Input.d.ts +40 -0
  560. package/dist/v2/components/Input.d.ts.map +1 -1
  561. package/dist/v2/components/Input.js +81 -41
  562. package/dist/v2/components/Input.js.map +1 -1
  563. package/dist/v2/components/KPICard.js +57 -67
  564. package/dist/v2/components/KPICard.js.map +1 -1
  565. package/dist/v2/components/KPIStrip.js +16 -22
  566. package/dist/v2/components/KPIStrip.js.map +1 -1
  567. package/dist/v2/components/KV.js +25 -31
  568. package/dist/v2/components/KV.js.map +1 -1
  569. package/dist/v2/components/KVGrid.js +19 -26
  570. package/dist/v2/components/KVGrid.js.map +1 -1
  571. package/dist/v2/components/Layout.js +91 -120
  572. package/dist/v2/components/Layout.js.map +1 -1
  573. package/dist/v2/components/MobileRowCard.js +79 -91
  574. package/dist/v2/components/MobileRowCard.js.map +1 -1
  575. package/dist/v2/components/Modal.js +61 -69
  576. package/dist/v2/components/Modal.js.map +1 -1
  577. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  578. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  579. package/dist/v2/components/NetworkErrorPage.js +38 -21
  580. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  581. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  582. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  583. package/dist/v2/components/NotFoundPage.js +37 -18
  584. package/dist/v2/components/NotFoundPage.js.map +1 -1
  585. package/dist/v2/components/NumberInput.js +88 -118
  586. package/dist/v2/components/NumberInput.js.map +1 -1
  587. package/dist/v2/components/OverflowMenu.js +38 -56
  588. package/dist/v2/components/OverflowMenu.js.map +1 -1
  589. package/dist/v2/components/PdfViewer.js +34 -45
  590. package/dist/v2/components/PdfViewer.js.map +1 -1
  591. package/dist/v2/components/ProgressBar.js +42 -49
  592. package/dist/v2/components/ProgressBar.js.map +1 -1
  593. package/dist/v2/components/Radio.js +59 -67
  594. package/dist/v2/components/Radio.js.map +1 -1
  595. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  596. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  597. package/dist/v2/components/SectionHeader.js +34 -41
  598. package/dist/v2/components/SectionHeader.js.map +1 -1
  599. package/dist/v2/components/Segmented.js +69 -93
  600. package/dist/v2/components/Segmented.js.map +1 -1
  601. package/dist/v2/components/Select.d.ts +26 -2
  602. package/dist/v2/components/Select.d.ts.map +1 -1
  603. package/dist/v2/components/Select.js +120 -155
  604. package/dist/v2/components/Select.js.map +1 -1
  605. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  606. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  607. package/dist/v2/components/ServerErrorPage.js +37 -20
  608. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  609. package/dist/v2/components/Skeleton.js +86 -100
  610. package/dist/v2/components/Skeleton.js.map +1 -1
  611. package/dist/v2/components/SkipLink.js +9 -12
  612. package/dist/v2/components/SkipLink.js.map +1 -1
  613. package/dist/v2/components/Spinner.js +16 -25
  614. package/dist/v2/components/Spinner.js.map +1 -1
  615. package/dist/v2/components/Status.js +18 -29
  616. package/dist/v2/components/Status.js.map +1 -1
  617. package/dist/v2/components/Stepper.js +80 -82
  618. package/dist/v2/components/Stepper.js.map +1 -1
  619. package/dist/v2/components/Surface.js +34 -49
  620. package/dist/v2/components/Surface.js.map +1 -1
  621. package/dist/v2/components/Switch.js +29 -37
  622. package/dist/v2/components/Switch.js.map +1 -1
  623. package/dist/v2/components/TabPanel.d.ts +17 -0
  624. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  625. package/dist/v2/components/TabPanel.js +90 -0
  626. package/dist/v2/components/TabPanel.js.map +1 -0
  627. package/dist/v2/components/Tabs.d.ts +25 -0
  628. package/dist/v2/components/Tabs.d.ts.map +1 -1
  629. package/dist/v2/components/Tabs.js +53 -29
  630. package/dist/v2/components/Tabs.js.map +1 -1
  631. package/dist/v2/components/TelInput.js +80 -115
  632. package/dist/v2/components/TelInput.js.map +1 -1
  633. package/dist/v2/components/Textarea.js +26 -35
  634. package/dist/v2/components/Textarea.js.map +1 -1
  635. package/dist/v2/components/TimePicker.js +62 -74
  636. package/dist/v2/components/TimePicker.js.map +1 -1
  637. package/dist/v2/components/Toast.js +119 -174
  638. package/dist/v2/components/Toast.js.map +1 -1
  639. package/dist/v2/components/Tooltip.js +23 -38
  640. package/dist/v2/components/Tooltip.js.map +1 -1
  641. package/dist/v2/components/_ErrorPageBody.js +15 -16
  642. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  643. package/dist/v2/components/_pickerShared.js +5 -5
  644. package/dist/v2/components/_pickerShared.js.map +1 -1
  645. package/dist/v2/components/index.d.ts +67 -1
  646. package/dist/v2/components/index.d.ts.map +1 -1
  647. package/dist/v2/components/index.js +153 -136
  648. package/dist/v2/components/index.js.map +1 -1
  649. package/dist/v2/hooks/index.d.ts +65 -0
  650. package/dist/v2/hooks/index.d.ts.map +1 -1
  651. package/dist/v2/hooks/index.js +63 -24
  652. package/dist/v2/hooks/index.js.map +1 -1
  653. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  654. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  655. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  656. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  657. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  658. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  659. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  660. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  661. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  662. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  663. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  664. package/dist/v2/hooks/useDensity.js +14 -18
  665. package/dist/v2/hooks/useDensity.js.map +1 -1
  666. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  667. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  668. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  669. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  670. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  671. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  672. package/dist/v2/hooks/useFocusTrap.js +20 -24
  673. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  674. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  675. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  676. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  677. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  678. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  679. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  680. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  681. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  682. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  683. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  684. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  685. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  687. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  688. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  689. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  690. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  691. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  692. package/dist/v2/hooks/useSortedRows.js +4 -6
  693. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  694. package/dist/v2/hooks/useTabLoading.js +7 -22
  695. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  696. package/dist/v2/index.d.ts.map +1 -1
  697. package/dist/v2/index.js +143 -145
  698. package/dist/v2/index.js.map +1 -1
  699. package/dist/v2/modalContext.js +2 -2
  700. package/dist/v2/modalContext.js.map +1 -1
  701. package/dist/v2/models/favorite.d.ts +8 -9
  702. package/dist/v2/models/favorite.d.ts.map +1 -1
  703. package/dist/v2/models/favorite.js.map +1 -1
  704. package/dist/v2/models/index.js +4 -4
  705. package/dist/v2/models/index.js.map +1 -1
  706. package/dist/v2/models/personalization.d.ts +44 -48
  707. package/dist/v2/models/personalization.d.ts.map +1 -1
  708. package/dist/v2/models/personalization.js.map +1 -1
  709. package/dist/v2/models/referentiel.d.ts +32 -50
  710. package/dist/v2/models/referentiel.d.ts.map +1 -1
  711. package/dist/v2/models/referentiel.js.map +1 -1
  712. package/dist/v2/models/savedFilter.d.ts +8 -17
  713. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  714. package/dist/v2/models/savedFilter.js.map +1 -1
  715. package/dist/v2/patterns/ActionBar.js +152 -187
  716. package/dist/v2/patterns/ActionBar.js.map +1 -1
  717. package/dist/v2/patterns/AppMain.d.ts +109 -0
  718. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  719. package/dist/v2/patterns/AppMain.js +115 -0
  720. package/dist/v2/patterns/AppMain.js.map +1 -0
  721. package/dist/v2/patterns/BulkActionBar.js +40 -42
  722. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  723. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  724. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  725. package/dist/v2/patterns/ChartFigure.js +159 -0
  726. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  727. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  728. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  729. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  730. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  731. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGrid.js +262 -297
  733. package/dist/v2/patterns/DataGrid.js.map +1 -1
  734. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  735. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  736. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  737. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  738. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  739. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  740. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  741. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  742. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  743. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  744. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  745. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  746. package/dist/v2/patterns/DetailSplit.js +116 -0
  747. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  748. package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
  749. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  750. package/dist/v2/patterns/FavoriteColumn.js +32 -80
  751. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  752. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  753. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  754. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  755. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  756. package/dist/v2/patterns/FilterTabBar.js +120 -0
  757. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  758. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  759. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  760. package/dist/v2/patterns/FormPageShell.js +53 -50
  761. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  762. package/dist/v2/patterns/FormSection.d.ts +8 -3
  763. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormSection.js +44 -51
  765. package/dist/v2/patterns/FormSection.js.map +1 -1
  766. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  767. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  768. package/dist/v2/patterns/FormikCheckbox.js +138 -0
  769. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  770. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  771. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  772. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  773. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  774. package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
  775. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  776. package/dist/v2/patterns/FormikCombobox.js +55 -69
  777. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  778. package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
  779. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikDatePicker.js +59 -106
  781. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  782. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  783. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  784. package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
  785. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  786. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  787. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  788. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  789. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  791. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  792. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  793. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  794. package/dist/v2/patterns/FormikFile.js +99 -83
  795. package/dist/v2/patterns/FormikFile.js.map +1 -1
  796. package/dist/v2/patterns/FormikInput.d.ts +11 -1
  797. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  798. package/dist/v2/patterns/FormikInput.js +45 -55
  799. package/dist/v2/patterns/FormikInput.js.map +1 -1
  800. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  801. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  802. package/dist/v2/patterns/FormikRadioGroup.js +137 -0
  803. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  804. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  805. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  807. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/FormikSelect.d.ts +9 -1
  809. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  810. package/dist/v2/patterns/FormikSelect.js +70 -89
  811. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  812. package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
  813. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  814. package/dist/v2/patterns/FormikTextarea.js +35 -48
  815. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  816. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
  817. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  818. package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
  819. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  820. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  821. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  822. package/dist/v2/patterns/PageContent.js +17 -20
  823. package/dist/v2/patterns/PageContent.js.map +1 -1
  824. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  825. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  826. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  827. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  828. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  829. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  830. package/dist/v2/patterns/ReferentielField.js +347 -327
  831. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  832. package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
  833. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  834. package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
  835. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  836. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  837. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  838. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  839. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  840. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  841. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  842. package/dist/v2/patterns/SortableHeader.js +35 -57
  843. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  844. package/dist/v2/patterns/Tour.js +121 -142
  845. package/dist/v2/patterns/Tour.js.map +1 -1
  846. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  847. package/dist/v2/patterns/_dataGridShared.js +131 -147
  848. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  849. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  850. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  851. package/dist/v2/patterns/_pickerSerialisation.js +80 -0
  852. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  853. package/dist/v2/patterns/_sort.js +17 -33
  854. package/dist/v2/patterns/_sort.js.map +1 -1
  855. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  856. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  857. package/dist/v2/patterns/_useColumnResize.js +80 -99
  858. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  859. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  860. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  861. package/dist/v2/patterns/filterCriteria.js +110 -0
  862. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  863. package/dist/v2/patterns/index.d.ts +247 -0
  864. package/dist/v2/patterns/index.d.ts.map +1 -1
  865. package/dist/v2/patterns/index.js +182 -70
  866. package/dist/v2/patterns/index.js.map +1 -1
  867. package/dist/v2/patterns/rowActions.d.ts +150 -0
  868. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  869. package/dist/v2/patterns/rowActions.js +232 -0
  870. package/dist/v2/patterns/rowActions.js.map +1 -0
  871. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  872. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  873. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  874. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  875. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  876. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  877. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  878. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  879. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  880. package/dist/v2/personalization/adapters/index.js +5 -5
  881. package/dist/v2/personalization/adapters/index.js.map +1 -1
  882. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  883. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  884. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  885. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  886. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  887. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  888. package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
  889. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  890. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  891. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  892. package/dist/v2/personalization/capabilities/index.js +23 -10
  893. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  894. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  895. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  896. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  897. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  898. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  899. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  900. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  901. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  902. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  903. package/dist/v2/personalization/index.d.ts +34 -0
  904. package/dist/v2/personalization/index.d.ts.map +1 -1
  905. package/dist/v2/personalization/index.js +41 -21
  906. package/dist/v2/personalization/index.js.map +1 -1
  907. package/dist/v2/personalization/personalizationContext.js +10 -12
  908. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  909. package/dist/v2/personalization/schema.js +8 -9
  910. package/dist/v2/personalization/schema.js.map +1 -1
  911. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  912. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  913. package/dist/v2/referentiel/index.js +11 -13
  914. package/dist/v2/referentiel/index.js.map +1 -1
  915. package/dist/v2/referentiel/types.d.ts +105 -0
  916. package/dist/v2/referentiel/types.d.ts.map +1 -0
  917. package/dist/v2/referentiel/types.js +6 -0
  918. package/dist/v2/referentiel/types.js.map +1 -0
  919. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  920. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  921. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  922. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  923. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  924. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  925. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  926. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  927. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  928. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  929. package/dist/v2/theme/_brand.js +12 -26
  930. package/dist/v2/theme/_brand.js.map +1 -1
  931. package/dist/v2/theme/_brandSecondary.js +12 -26
  932. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  933. package/dist/v2/theme/createPortnetTheme.js +41 -49
  934. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  935. package/dist/v2/theme/cssVariables.d.ts +3 -3
  936. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  937. package/dist/v2/theme/cssVariables.js +65 -70
  938. package/dist/v2/theme/cssVariables.js.map +1 -1
  939. package/dist/v2/theme/index.js +10 -10
  940. package/dist/v2/theme/index.js.map +1 -1
  941. package/dist/v2/tokens/breakpoints.js +16 -16
  942. package/dist/v2/tokens/breakpoints.js.map +1 -1
  943. package/dist/v2/tokens/chart.d.ts +103 -0
  944. package/dist/v2/tokens/chart.d.ts.map +1 -0
  945. package/dist/v2/tokens/chart.js +270 -0
  946. package/dist/v2/tokens/chart.js.map +1 -0
  947. package/dist/v2/tokens/colors.js +24 -24
  948. package/dist/v2/tokens/colors.js.map +1 -1
  949. package/dist/v2/tokens/density.d.ts +104 -0
  950. package/dist/v2/tokens/density.d.ts.map +1 -1
  951. package/dist/v2/tokens/density.js +67 -12
  952. package/dist/v2/tokens/density.js.map +1 -1
  953. package/dist/v2/tokens/index.d.ts +50 -1
  954. package/dist/v2/tokens/index.d.ts.map +1 -1
  955. package/dist/v2/tokens/index.js +116 -68
  956. package/dist/v2/tokens/index.js.map +1 -1
  957. package/dist/v2/tokens/motion.js +16 -22
  958. package/dist/v2/tokens/motion.js.map +1 -1
  959. package/dist/v2/tokens/radius.js +3 -3
  960. package/dist/v2/tokens/radius.js.map +1 -1
  961. package/dist/v2/tokens/shadows.js +8 -8
  962. package/dist/v2/tokens/shadows.js.map +1 -1
  963. package/dist/v2/tokens/spacing.js +4 -4
  964. package/dist/v2/tokens/spacing.js.map +1 -1
  965. package/dist/v2/tokens/state.js +3 -3
  966. package/dist/v2/tokens/state.js.map +1 -1
  967. package/dist/v2/tokens/statusPalette.js +21 -23
  968. package/dist/v2/tokens/statusPalette.js.map +1 -1
  969. package/dist/v2/tokens/tokens.json +6 -1
  970. package/dist/v2/tokens/typography.js +15 -15
  971. package/dist/v2/tokens/typography.js.map +1 -1
  972. package/dist/v2/tokens/zIndex.js +3 -3
  973. package/dist/v2/tokens/zIndex.js.map +1 -1
  974. package/dist/v2/types/datagrid.d.ts +9 -1
  975. package/dist/v2/types/datagrid.d.ts.map +1 -1
  976. package/dist/v2/types/datagrid.js.map +1 -1
  977. package/dist/v2/types/index.js +2 -2
  978. package/dist/v2/types/index.js.map +1 -1
  979. package/dist/v2/utils/apiError.js +16 -37
  980. package/dist/v2/utils/apiError.js.map +1 -1
  981. package/dist/v2/utils/contrast.js +31 -32
  982. package/dist/v2/utils/contrast.js.map +1 -1
  983. package/dist/v2/utils/cx.js +7 -27
  984. package/dist/v2/utils/cx.js.map +1 -1
  985. package/dist/v2/utils/fileDownload.js +25 -28
  986. package/dist/v2/utils/fileDownload.js.map +1 -1
  987. package/dist/v2/utils/fileValidation.d.ts +116 -0
  988. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  989. package/dist/v2/utils/fileValidation.js +220 -0
  990. package/dist/v2/utils/fileValidation.js.map +1 -0
  991. package/dist/v2/utils/fmtDate.d.ts +103 -0
  992. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  993. package/dist/v2/utils/fmtDate.js +119 -0
  994. package/dist/v2/utils/fmtDate.js.map +1 -0
  995. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  996. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  997. package/dist/v2/utils/fmtMoney.js +9 -11
  998. package/dist/v2/utils/fmtMoney.js.map +1 -1
  999. package/dist/v2/utils/formikErrors.d.ts +67 -0
  1000. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  1001. package/dist/v2/utils/formikErrors.js +85 -0
  1002. package/dist/v2/utils/formikErrors.js.map +1 -0
  1003. package/dist/v2/utils/index.d.ts +5 -0
  1004. package/dist/v2/utils/index.d.ts.map +1 -1
  1005. package/dist/v2/utils/index.js +67 -18
  1006. package/dist/v2/utils/index.js.map +1 -1
  1007. package/dist/v2/utils/mergeLabels.js +9 -14
  1008. package/dist/v2/utils/mergeLabels.js.map +1 -1
  1009. package/dist/v2/utils/networkStatus.js +14 -14
  1010. package/dist/v2/utils/networkStatus.js.map +1 -1
  1011. package/package.json +26 -9
@@ -0,0 +1,150 @@
1
+ import * as React from "react";
2
+ import type { OverflowMenuAction } from "../components/OverflowMenu";
3
+ /**
4
+ * rowActions — business action descriptors → the row's kebab menu
5
+ * (capability gap G-41).
6
+ *
7
+ * ─────────────────────────────────────────────────────────────────────────────
8
+ * WHY THIS BELONGS IN THE LIBRARY
9
+ *
10
+ * The library ships both halves already: `OverflowMenu` renders a flat list of
11
+ * actions, and `DataGrid.rowActions` takes a `(row) => ReactNode` renderer. The
12
+ * step between them is what every listing writes for itself — turning the
13
+ * BUSINESS description of an action ("visible only on a draft", "greyed out
14
+ * while the request is in flight") into a menu for ONE row.
15
+ *
16
+ * That step is not glue. It carries three rules the Charter imposes, and each
17
+ * one is a rule a host can only get right by re-deriving it:
18
+ *
19
+ * R-3.3 ≤ 1 primary + ≤ 3 secondary actions per screen, hence the kebab.
20
+ * R-B.6 a destructive action is separated and marked, not merely last.
21
+ * R-K.1 every mouse-reachable action is keyboard-reachable — which is what
22
+ * `OverflowMenu` gives and what hover-revealed icon rows never did.
23
+ *
24
+ * Promoted from `refonte-frontend` (Area 5), where it served TWELVE screens and
25
+ * had already replaced a local `TableActions` that revealed its actions on
26
+ * hover, via a `mouseup` listener on `document`, with no keyboard equivalent
27
+ * and no `role` / `aria-*`. On those screens, consulting, editing or deleting a
28
+ * file was unreachable without a mouse — the Charter lists "hover-only
29
+ * interactions" among its Forbidden Practices for exactly this reason.
30
+ * ─────────────────────────────────────────────────────────────────────────────
31
+ *
32
+ * PREDICATES, NOT BOOLEANS, AND THAT IS THE WHOLE POINT. `hidden` and
33
+ * `disabled` take the ROW: an action's availability depends on the state of
34
+ * that row, so it must be evaluated per row, at render. A boolean would force
35
+ * the host to rebuild the descriptor array per row — which is how a card and a
36
+ * table row end up offering different actions for the same record.
37
+ *
38
+ * >>> THE TWO SURFACES ARE WHY `buildRowActionMenu` IS EXPORTED SEPARATELY.
39
+ * >>> A row appears twice: as a table row and, below the mobile breakpoint, as
40
+ * >>> a `MobileRowCard` whose `actions` prop takes `OverflowMenuAction[]` —
41
+ * >>> not a node. With only the renderer exported, a host had to rebuild the
42
+ * >>> menu by hand for the card, and the two copies drifted on the danger
43
+ * >>> separator, the overflow warning and the evaluation of the predicates.
44
+ * >>> The library documents that exact failure for `RowFavoriteToggle`
45
+ * >>> (gap G-36): the local twin announced "Ajouter aux favoris" while the
46
+ * >>> grid column on the same page said "Suivre". Same shape, one level up. <
47
+ *
48
+ * Usage:
49
+ *
50
+ * const descriptors: RowActionDescriptor<Dossier>[] = [
51
+ * { id: "open", label: "Consulter le dossier", icon: <Visibility />, onClick: open },
52
+ * { id: "del", label: "Supprimer définitivement", icon: <Delete />,
53
+ * onClick: remove, danger: true, hidden: (row) => row.status !== "DRAFT" },
54
+ * ];
55
+ *
56
+ * <DataGrid rowActions={buildRowActions(descriptors, `Actions sur ${row.reference}`)} />
57
+ * <MobileRowCard actions={buildRowActionMenu(descriptors, row)} />
58
+ */
59
+ /** Charter contract of `OverflowMenu`: ancillary row actions, ≤ 7 items. */
60
+ export declare const MAX_ROW_ACTIONS = 7;
61
+ /**
62
+ * One row action, described by the business.
63
+ *
64
+ * `hidden` and `disabled` are PREDICATES on the row, not booleans — see the
65
+ * note above.
66
+ */
67
+ export interface RowActionDescriptor<T> {
68
+ /** Stable identifier — render key and test anchor. */
69
+ id: string;
70
+ /** Menu label. Verb + object (R-B.3, §9.2). */
71
+ label: React.ReactNode;
72
+ icon?: React.ReactNode | undefined;
73
+ onClick: (row: T) => void;
74
+ /** Hides the action for this row. */
75
+ hidden?: ((row: T) => boolean) | undefined;
76
+ /** Shows the action but disables it for this row. */
77
+ disabled?: ((row: T) => boolean) | undefined;
78
+ /** Destructive: separator before, danger styling (R-B.6). */
79
+ danger?: boolean | undefined;
80
+ /** Keyboard shortcut rendered at the end of the item. */
81
+ shortcut?: React.ReactNode | undefined;
82
+ }
83
+ /**
84
+ * Menu items for ONE row. Predicates are evaluated here, per call.
85
+ *
86
+ * Returns an empty array when nothing is visible, so a caller can decide to
87
+ * render no trigger at all rather than an empty menu.
88
+ */
89
+ export declare function buildRowActionMenu<T>(descriptors: readonly RowActionDescriptor<T>[], row: T): OverflowMenuAction[];
90
+ /**
91
+ * Options of {@link buildRowActions}.
92
+ */
93
+ export interface BuildRowActionsOptions {
94
+ /**
95
+ * Render the row's VISIBLE actions as icon buttons while their count is
96
+ * at most this value; fall back to the kebab menu above it.
97
+ *
98
+ * Omitted — the default — always renders the kebab, so existing callers
99
+ * are untouched.
100
+ *
101
+ * The threshold counts actions visible FOR THAT ROW, never the number
102
+ * declared: five descriptors whose `hidden` predicates are mutually
103
+ * exclusive by status typically leave two or three per row.
104
+ */
105
+ iconsUpTo?: number | undefined;
106
+ }
107
+ /**
108
+ * Renderer for `DataGrid.rowActions`.
109
+ *
110
+ * Predicates are evaluated per row, at each cell render. Renders nothing when
111
+ * no action is visible for that row, rather than a trigger that opens an empty
112
+ * menu.
113
+ *
114
+ * NO DEFAULT `ariaLabel` (defect D-12). It used to default to the literal
115
+ * "Actions", which was forwarded to `OverflowMenu`'s `ariaLabel` — and that
116
+ * prop WINS over `labels.trigger`. So a row kebab built here announced
117
+ * "Actions" while every other kebab in the fleet announced OverflowMenu's
118
+ * canonical "Plus d'actions": one concept, two names, which R-2.4 forbids.
119
+ * `MobileRowCard` had the identical defect and was fixed by removing its
120
+ * default; this is the same repair, applied one level up. Omit the argument
121
+ * and OverflowMenu now names itself.
122
+ *
123
+ * PASS A CONTEXTUAL NAME ANYWAY. Neither default is good in a list: twenty
124
+ * identically-named kebabs give a screen-reader user no way to tell which row
125
+ * they are on. `Actions sur le dossier 2025-IM-00042` does.
126
+ *
127
+ * TWO SHAPES, ONE CONTRACT (`iconsUpTo` — promoted from `refonte-frontend`,
128
+ * Area 5). The kebab is the right shape for many or ancillary actions; a row
129
+ * with two or three primary ones reads better as icon buttons, and
130
+ * §Row Interaction treats those as COMPLEMENTARY to the row click. Hosts were
131
+ * writing that second shape themselves — this module served twelve screens
132
+ * with a local copy — which put the R-B.5 `aria-label`, the danger variant and
133
+ * the fallback rule outside the library.
134
+ *
135
+ * NOT hover-only, and that distinction is what makes it admissible: `DataGrid`
136
+ * reveals this renderer's output through `ROW_ACTIONS_OVERLAY_SX`, which keys
137
+ * on `tr:hover`, `tr:focus-within` AND `@media (pointer: coarse)` — so the
138
+ * buttons are reachable by keyboard and on touch (R-K.1). A host that renders
139
+ * an icon row elsewhere, without that overlay, owns that requirement itself.
140
+ *
141
+ * Above the threshold the menu is built by {@link buildRowActionMenu}, so the
142
+ * danger separator and the R-3.3 overflow warning are not re-derived here.
143
+ *
144
+ * @param descriptors actions in display order
145
+ * @param ariaLabel accessible name of the trigger. Omit to inherit
146
+ * OverflowMenu's canonical name; prefer a row-specific one.
147
+ * @param options `{ iconsUpTo }` — see {@link BuildRowActionsOptions}
148
+ */
149
+ export declare function buildRowActions<T>(descriptors: readonly RowActionDescriptor<T>[], ariaLabel?: string, options?: BuildRowActionsOptions): (row: T) => React.ReactNode;
150
+ //# sourceMappingURL=rowActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowActions.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/patterns/rowActions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAIrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1B,qCAAqC;IACrC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7C,6DAA6D;IAC7D,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CACxC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,WAAW,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAC9C,GAAG,EAAE,CAAC,GACL,kBAAkB,EAAE,CA4CtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,WAAW,EAAE,SAAS,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAC9C,SAAS,CAAC,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CA2D7B"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.MAX_ROW_ACTIONS = void 0;
7
+ exports.buildRowActionMenu = buildRowActionMenu;
8
+ exports.buildRowActions = buildRowActions;
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _OverflowMenu = _interopRequireDefault(require("../components/OverflowMenu"));
11
+ var _Button = _interopRequireDefault(require("../components/Button"));
12
+ var _Tooltip = _interopRequireDefault(require("../components/Tooltip"));
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ /**
17
+ * rowActions — business action descriptors → the row's kebab menu
18
+ * (capability gap G-41).
19
+ *
20
+ * ─────────────────────────────────────────────────────────────────────────────
21
+ * WHY THIS BELONGS IN THE LIBRARY
22
+ *
23
+ * The library ships both halves already: `OverflowMenu` renders a flat list of
24
+ * actions, and `DataGrid.rowActions` takes a `(row) => ReactNode` renderer. The
25
+ * step between them is what every listing writes for itself — turning the
26
+ * BUSINESS description of an action ("visible only on a draft", "greyed out
27
+ * while the request is in flight") into a menu for ONE row.
28
+ *
29
+ * That step is not glue. It carries three rules the Charter imposes, and each
30
+ * one is a rule a host can only get right by re-deriving it:
31
+ *
32
+ * R-3.3 ≤ 1 primary + ≤ 3 secondary actions per screen, hence the kebab.
33
+ * R-B.6 a destructive action is separated and marked, not merely last.
34
+ * R-K.1 every mouse-reachable action is keyboard-reachable — which is what
35
+ * `OverflowMenu` gives and what hover-revealed icon rows never did.
36
+ *
37
+ * Promoted from `refonte-frontend` (Area 5), where it served TWELVE screens and
38
+ * had already replaced a local `TableActions` that revealed its actions on
39
+ * hover, via a `mouseup` listener on `document`, with no keyboard equivalent
40
+ * and no `role` / `aria-*`. On those screens, consulting, editing or deleting a
41
+ * file was unreachable without a mouse — the Charter lists "hover-only
42
+ * interactions" among its Forbidden Practices for exactly this reason.
43
+ * ─────────────────────────────────────────────────────────────────────────────
44
+ *
45
+ * PREDICATES, NOT BOOLEANS, AND THAT IS THE WHOLE POINT. `hidden` and
46
+ * `disabled` take the ROW: an action's availability depends on the state of
47
+ * that row, so it must be evaluated per row, at render. A boolean would force
48
+ * the host to rebuild the descriptor array per row — which is how a card and a
49
+ * table row end up offering different actions for the same record.
50
+ *
51
+ * >>> THE TWO SURFACES ARE WHY `buildRowActionMenu` IS EXPORTED SEPARATELY.
52
+ * >>> A row appears twice: as a table row and, below the mobile breakpoint, as
53
+ * >>> a `MobileRowCard` whose `actions` prop takes `OverflowMenuAction[]` —
54
+ * >>> not a node. With only the renderer exported, a host had to rebuild the
55
+ * >>> menu by hand for the card, and the two copies drifted on the danger
56
+ * >>> separator, the overflow warning and the evaluation of the predicates.
57
+ * >>> The library documents that exact failure for `RowFavoriteToggle`
58
+ * >>> (gap G-36): the local twin announced "Ajouter aux favoris" while the
59
+ * >>> grid column on the same page said "Suivre". Same shape, one level up. <
60
+ *
61
+ * Usage:
62
+ *
63
+ * const descriptors: RowActionDescriptor<Dossier>[] = [
64
+ * { id: "open", label: "Consulter le dossier", icon: <Visibility />, onClick: open },
65
+ * { id: "del", label: "Supprimer définitivement", icon: <Delete />,
66
+ * onClick: remove, danger: true, hidden: (row) => row.status !== "DRAFT" },
67
+ * ];
68
+ *
69
+ * <DataGrid rowActions={buildRowActions(descriptors, `Actions sur ${row.reference}`)} />
70
+ * <MobileRowCard actions={buildRowActionMenu(descriptors, row)} />
71
+ */
72
+
73
+ /** Charter contract of `OverflowMenu`: ancillary row actions, ≤ 7 items. */
74
+ const MAX_ROW_ACTIONS = exports.MAX_ROW_ACTIONS = 7;
75
+
76
+ /**
77
+ * One row action, described by the business.
78
+ *
79
+ * `hidden` and `disabled` are PREDICATES on the row, not booleans — see the
80
+ * note above.
81
+ */
82
+
83
+ /**
84
+ * Menu items for ONE row. Predicates are evaluated here, per call.
85
+ *
86
+ * Returns an empty array when nothing is visible, so a caller can decide to
87
+ * render no trigger at all rather than an empty menu.
88
+ */
89
+ function buildRowActionMenu(descriptors, row) {
90
+ const visible = descriptors.filter(d => !d.hidden?.(row));
91
+ if (visible.length === 0) return [];
92
+
93
+ /* `process.env["NODE_ENV"]` and not `.NODE_ENV`:
94
+ * `noPropertyAccessFromIndexSignature` is mandatory platform-wide, precisely
95
+ * so a missing key cannot read as a guaranteed field. */
96
+ if (process.env["NODE_ENV"] !== "production" && visible.length > MAX_ROW_ACTIONS) {
97
+ // eslint-disable-next-line no-console
98
+ console.warn(`[@portnet/ui] buildRowActionMenu: ${visible.length} actions visible on ` + `one row; OverflowMenu's contract recommends at most ${MAX_ROW_ACTIONS} ` + `(R-3.3). Group them, or move some to the detail page.`);
99
+ }
100
+ const items = [];
101
+ let separatorPlaced = false;
102
+ visible.forEach(d => {
103
+ /* Separator before the FIRST destructive action, and only if something
104
+ * precedes it — a menu does not open on a rule. */
105
+ if (d.danger && !separatorPlaced && items.length > 0) {
106
+ items.push({
107
+ divider: true
108
+ });
109
+ separatorPlaced = true;
110
+ }
111
+ /* Conditional spreads, not `undefined` values: `exactOptionalPropertyTypes`
112
+ * is mandatory platform-wide, so an explicit `undefined` is not the same as
113
+ * an absent key — and `mergeLabels` exists in this library because a spread
114
+ * of `undefined` had silently deleted defaults elsewhere. */
115
+ items.push({
116
+ label: d.label,
117
+ ...(d.icon !== undefined ? {
118
+ icon: d.icon
119
+ } : {}),
120
+ onClick: () => d.onClick(row),
121
+ ...(d.danger !== undefined ? {
122
+ danger: d.danger
123
+ } : {}),
124
+ ...(d.disabled ? {
125
+ disabled: d.disabled(row)
126
+ } : {}),
127
+ ...(d.shortcut !== undefined ? {
128
+ shortcut: d.shortcut
129
+ } : {})
130
+ });
131
+ });
132
+ return items;
133
+ }
134
+
135
+ /**
136
+ * Options of {@link buildRowActions}.
137
+ */
138
+
139
+ /**
140
+ * Renderer for `DataGrid.rowActions`.
141
+ *
142
+ * Predicates are evaluated per row, at each cell render. Renders nothing when
143
+ * no action is visible for that row, rather than a trigger that opens an empty
144
+ * menu.
145
+ *
146
+ * NO DEFAULT `ariaLabel` (defect D-12). It used to default to the literal
147
+ * "Actions", which was forwarded to `OverflowMenu`'s `ariaLabel` — and that
148
+ * prop WINS over `labels.trigger`. So a row kebab built here announced
149
+ * "Actions" while every other kebab in the fleet announced OverflowMenu's
150
+ * canonical "Plus d'actions": one concept, two names, which R-2.4 forbids.
151
+ * `MobileRowCard` had the identical defect and was fixed by removing its
152
+ * default; this is the same repair, applied one level up. Omit the argument
153
+ * and OverflowMenu now names itself.
154
+ *
155
+ * PASS A CONTEXTUAL NAME ANYWAY. Neither default is good in a list: twenty
156
+ * identically-named kebabs give a screen-reader user no way to tell which row
157
+ * they are on. `Actions sur le dossier 2025-IM-00042` does.
158
+ *
159
+ * TWO SHAPES, ONE CONTRACT (`iconsUpTo` — promoted from `refonte-frontend`,
160
+ * Area 5). The kebab is the right shape for many or ancillary actions; a row
161
+ * with two or three primary ones reads better as icon buttons, and
162
+ * §Row Interaction treats those as COMPLEMENTARY to the row click. Hosts were
163
+ * writing that second shape themselves — this module served twelve screens
164
+ * with a local copy — which put the R-B.5 `aria-label`, the danger variant and
165
+ * the fallback rule outside the library.
166
+ *
167
+ * NOT hover-only, and that distinction is what makes it admissible: `DataGrid`
168
+ * reveals this renderer's output through `ROW_ACTIONS_OVERLAY_SX`, which keys
169
+ * on `tr:hover`, `tr:focus-within` AND `@media (pointer: coarse)` — so the
170
+ * buttons are reachable by keyboard and on touch (R-K.1). A host that renders
171
+ * an icon row elsewhere, without that overlay, owns that requirement itself.
172
+ *
173
+ * Above the threshold the menu is built by {@link buildRowActionMenu}, so the
174
+ * danger separator and the R-3.3 overflow warning are not re-derived here.
175
+ *
176
+ * @param descriptors actions in display order
177
+ * @param ariaLabel accessible name of the trigger. Omit to inherit
178
+ * OverflowMenu's canonical name; prefer a row-specific one.
179
+ * @param options `{ iconsUpTo }` — see {@link BuildRowActionsOptions}
180
+ */
181
+ function buildRowActions(descriptors, ariaLabel, options) {
182
+ const iconsUpTo = options?.iconsUpTo;
183
+ return row => {
184
+ /* SAME predicate as `buildRowActionMenu`: how many actions this row
185
+ * actually shows decides the shape, so it must be known before the menu
186
+ * is built. */
187
+ const visible = descriptors.filter(d => !d.hidden?.(row));
188
+ if (visible.length === 0) return null;
189
+ if (iconsUpTo !== undefined && visible.length <= iconsUpTo) {
190
+ /* No spacing container here: `ROW_ACTIONS_OVERLAY_SX` (DataGrid) is
191
+ * already a flex row with `gap: var(--s-1)`. Re-posing one would
192
+ * duplicate the same token one level lower. */
193
+ return visible.map(d => {
194
+ const textLabel = typeof d.label === "string" ? d.label : undefined;
195
+ if (process.env["NODE_ENV"] !== "production" && textLabel === undefined) {
196
+ // eslint-disable-next-line no-console
197
+ console.warn(`[@portnet/ui] buildRowActions: action "${d.id}" has a non-textual ` + "label, so its icon button gets no explicit aria-label (R-B.5). " + "Give the descriptor a string label, or drop `iconsUpTo` for this grid.");
198
+ }
199
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
200
+ title: d.label,
201
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
202
+ iconOnly: true,
203
+ variant: d.danger ? "danger" : "ghost",
204
+ size: "sm",
205
+ ...(d.icon !== undefined ? {
206
+ icon: d.icon
207
+ } : {}),
208
+ onClick: () => d.onClick(row),
209
+ ...(d.disabled ? {
210
+ disabled: d.disabled(row)
211
+ } : {}),
212
+ ...(textLabel !== undefined ? {
213
+ "aria-label": textLabel
214
+ } : {})
215
+ })
216
+ }, d.id);
217
+ });
218
+ }
219
+ const items = buildRowActionMenu(descriptors, row);
220
+ if (items.length === 0) return null;
221
+ /* Conditional spread rather than ariaLabel={ariaLabel}: passing an
222
+ * explicit undefined would still override OverflowMenu's own label
223
+ * under exactOptionalPropertyTypes semantics (defect D-12). */
224
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OverflowMenu.default, {
225
+ actions: items,
226
+ ...(ariaLabel !== undefined ? {
227
+ ariaLabel
228
+ } : {})
229
+ });
230
+ };
231
+ }
232
+ //# sourceMappingURL=rowActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowActions.js","names":["React","_interopRequireWildcard","require","_OverflowMenu","_interopRequireDefault","_Button","_Tooltip","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MAX_ROW_ACTIONS","exports","buildRowActionMenu","descriptors","row","visible","filter","d","hidden","length","process","env","console","warn","items","separatorPlaced","forEach","danger","push","divider","label","icon","undefined","onClick","disabled","shortcut","buildRowActions","ariaLabel","options","iconsUpTo","map","textLabel","id","jsx","title","children","iconOnly","variant","size","actions"],"sources":["../../../src/lib/v2/patterns/rowActions.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport OverflowMenu from \"../components/OverflowMenu\";\r\nimport type { OverflowMenuAction } from \"../components/OverflowMenu\";\r\nimport Button from \"../components/Button\";\r\nimport Tooltip from \"../components/Tooltip\";\r\n\r\n/**\r\n * rowActions — business action descriptors → the row's kebab menu\r\n * (capability gap G-41).\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY\r\n *\r\n * The library ships both halves already: `OverflowMenu` renders a flat list of\r\n * actions, and `DataGrid.rowActions` takes a `(row) => ReactNode` renderer. The\r\n * step between them is what every listing writes for itself — turning the\r\n * BUSINESS description of an action (\"visible only on a draft\", \"greyed out\r\n * while the request is in flight\") into a menu for ONE row.\r\n *\r\n * That step is not glue. It carries three rules the Charter imposes, and each\r\n * one is a rule a host can only get right by re-deriving it:\r\n *\r\n * R-3.3 ≤ 1 primary + ≤ 3 secondary actions per screen, hence the kebab.\r\n * R-B.6 a destructive action is separated and marked, not merely last.\r\n * R-K.1 every mouse-reachable action is keyboard-reachable — which is what\r\n * `OverflowMenu` gives and what hover-revealed icon rows never did.\r\n *\r\n * Promoted from `refonte-frontend` (Area 5), where it served TWELVE screens and\r\n * had already replaced a local `TableActions` that revealed its actions on\r\n * hover, via a `mouseup` listener on `document`, with no keyboard equivalent\r\n * and no `role` / `aria-*`. On those screens, consulting, editing or deleting a\r\n * file was unreachable without a mouse — the Charter lists \"hover-only\r\n * interactions\" among its Forbidden Practices for exactly this reason.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * PREDICATES, NOT BOOLEANS, AND THAT IS THE WHOLE POINT. `hidden` and\r\n * `disabled` take the ROW: an action's availability depends on the state of\r\n * that row, so it must be evaluated per row, at render. A boolean would force\r\n * the host to rebuild the descriptor array per row — which is how a card and a\r\n * table row end up offering different actions for the same record.\r\n *\r\n * >>> THE TWO SURFACES ARE WHY `buildRowActionMenu` IS EXPORTED SEPARATELY.\r\n * >>> A row appears twice: as a table row and, below the mobile breakpoint, as\r\n * >>> a `MobileRowCard` whose `actions` prop takes `OverflowMenuAction[]` —\r\n * >>> not a node. With only the renderer exported, a host had to rebuild the\r\n * >>> menu by hand for the card, and the two copies drifted on the danger\r\n * >>> separator, the overflow warning and the evaluation of the predicates.\r\n * >>> The library documents that exact failure for `RowFavoriteToggle`\r\n * >>> (gap G-36): the local twin announced \"Ajouter aux favoris\" while the\r\n * >>> grid column on the same page said \"Suivre\". Same shape, one level up. <\r\n *\r\n * Usage:\r\n *\r\n * const descriptors: RowActionDescriptor<Dossier>[] = [\r\n * { id: \"open\", label: \"Consulter le dossier\", icon: <Visibility />, onClick: open },\r\n * { id: \"del\", label: \"Supprimer définitivement\", icon: <Delete />,\r\n * onClick: remove, danger: true, hidden: (row) => row.status !== \"DRAFT\" },\r\n * ];\r\n *\r\n * <DataGrid rowActions={buildRowActions(descriptors, `Actions sur ${row.reference}`)} />\r\n * <MobileRowCard actions={buildRowActionMenu(descriptors, row)} />\r\n */\r\n\r\n/** Charter contract of `OverflowMenu`: ancillary row actions, ≤ 7 items. */\r\nexport const MAX_ROW_ACTIONS = 7;\r\n\r\n/**\r\n * One row action, described by the business.\r\n *\r\n * `hidden` and `disabled` are PREDICATES on the row, not booleans — see the\r\n * note above.\r\n */\r\nexport interface RowActionDescriptor<T> {\r\n /** Stable identifier — render key and test anchor. */\r\n id: string;\r\n /** Menu label. Verb + object (R-B.3, §9.2). */\r\n label: React.ReactNode;\r\n icon?: React.ReactNode | undefined;\r\n onClick: (row: T) => void;\r\n /** Hides the action for this row. */\r\n hidden?: ((row: T) => boolean) | undefined;\r\n /** Shows the action but disables it for this row. */\r\n disabled?: ((row: T) => boolean) | undefined;\r\n /** Destructive: separator before, danger styling (R-B.6). */\r\n danger?: boolean | undefined;\r\n /** Keyboard shortcut rendered at the end of the item. */\r\n shortcut?: React.ReactNode | undefined;\r\n}\r\n\r\n/**\r\n * Menu items for ONE row. Predicates are evaluated here, per call.\r\n *\r\n * Returns an empty array when nothing is visible, so a caller can decide to\r\n * render no trigger at all rather than an empty menu.\r\n */\r\nexport function buildRowActionMenu<T>(\r\n descriptors: readonly RowActionDescriptor<T>[],\r\n row: T\r\n): OverflowMenuAction[] {\r\n const visible = descriptors.filter((d) => !d.hidden?.(row));\r\n if (visible.length === 0) return [];\r\n\r\n /* `process.env[\"NODE_ENV\"]` and not `.NODE_ENV`:\r\n * `noPropertyAccessFromIndexSignature` is mandatory platform-wide, precisely\r\n * so a missing key cannot read as a guaranteed field. */\r\n if (\r\n process.env[\"NODE_ENV\"] !== \"production\" &&\r\n visible.length > MAX_ROW_ACTIONS\r\n ) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui] buildRowActionMenu: ${visible.length} actions visible on ` +\r\n `one row; OverflowMenu's contract recommends at most ${MAX_ROW_ACTIONS} ` +\r\n `(R-3.3). Group them, or move some to the detail page.`\r\n );\r\n }\r\n\r\n const items: OverflowMenuAction[] = [];\r\n let separatorPlaced = false;\r\n\r\n visible.forEach((d) => {\r\n /* Separator before the FIRST destructive action, and only if something\r\n * precedes it — a menu does not open on a rule. */\r\n if (d.danger && !separatorPlaced && items.length > 0) {\r\n items.push({ divider: true });\r\n separatorPlaced = true;\r\n }\r\n /* Conditional spreads, not `undefined` values: `exactOptionalPropertyTypes`\r\n * is mandatory platform-wide, so an explicit `undefined` is not the same as\r\n * an absent key — and `mergeLabels` exists in this library because a spread\r\n * of `undefined` had silently deleted defaults elsewhere. */\r\n items.push({\r\n label: d.label,\r\n ...(d.icon !== undefined ? { icon: d.icon } : {}),\r\n onClick: () => d.onClick(row),\r\n ...(d.danger !== undefined ? { danger: d.danger } : {}),\r\n ...(d.disabled ? { disabled: d.disabled(row) } : {}),\r\n ...(d.shortcut !== undefined ? { shortcut: d.shortcut } : {}),\r\n });\r\n });\r\n\r\n return items;\r\n}\r\n\r\n/**\r\n * Options of {@link buildRowActions}.\r\n */\r\nexport interface BuildRowActionsOptions {\r\n /**\r\n * Render the row's VISIBLE actions as icon buttons while their count is\r\n * at most this value; fall back to the kebab menu above it.\r\n *\r\n * Omitted — the default — always renders the kebab, so existing callers\r\n * are untouched.\r\n *\r\n * The threshold counts actions visible FOR THAT ROW, never the number\r\n * declared: five descriptors whose `hidden` predicates are mutually\r\n * exclusive by status typically leave two or three per row.\r\n */\r\n iconsUpTo?: number | undefined;\r\n}\r\n\r\n/**\r\n * Renderer for `DataGrid.rowActions`.\r\n *\r\n * Predicates are evaluated per row, at each cell render. Renders nothing when\r\n * no action is visible for that row, rather than a trigger that opens an empty\r\n * menu.\r\n *\r\n * NO DEFAULT `ariaLabel` (defect D-12). It used to default to the literal\r\n * \"Actions\", which was forwarded to `OverflowMenu`'s `ariaLabel` — and that\r\n * prop WINS over `labels.trigger`. So a row kebab built here announced\r\n * \"Actions\" while every other kebab in the fleet announced OverflowMenu's\r\n * canonical \"Plus d'actions\": one concept, two names, which R-2.4 forbids.\r\n * `MobileRowCard` had the identical defect and was fixed by removing its\r\n * default; this is the same repair, applied one level up. Omit the argument\r\n * and OverflowMenu now names itself.\r\n *\r\n * PASS A CONTEXTUAL NAME ANYWAY. Neither default is good in a list: twenty\r\n * identically-named kebabs give a screen-reader user no way to tell which row\r\n * they are on. `Actions sur le dossier 2025-IM-00042` does.\r\n *\r\n * TWO SHAPES, ONE CONTRACT (`iconsUpTo` — promoted from `refonte-frontend`,\r\n * Area 5). The kebab is the right shape for many or ancillary actions; a row\r\n * with two or three primary ones reads better as icon buttons, and\r\n * §Row Interaction treats those as COMPLEMENTARY to the row click. Hosts were\r\n * writing that second shape themselves — this module served twelve screens\r\n * with a local copy — which put the R-B.5 `aria-label`, the danger variant and\r\n * the fallback rule outside the library.\r\n *\r\n * NOT hover-only, and that distinction is what makes it admissible: `DataGrid`\r\n * reveals this renderer's output through `ROW_ACTIONS_OVERLAY_SX`, which keys\r\n * on `tr:hover`, `tr:focus-within` AND `@media (pointer: coarse)` — so the\r\n * buttons are reachable by keyboard and on touch (R-K.1). A host that renders\r\n * an icon row elsewhere, without that overlay, owns that requirement itself.\r\n *\r\n * Above the threshold the menu is built by {@link buildRowActionMenu}, so the\r\n * danger separator and the R-3.3 overflow warning are not re-derived here.\r\n *\r\n * @param descriptors actions in display order\r\n * @param ariaLabel accessible name of the trigger. Omit to inherit\r\n * OverflowMenu's canonical name; prefer a row-specific one.\r\n * @param options `{ iconsUpTo }` — see {@link BuildRowActionsOptions}\r\n */\r\nexport function buildRowActions<T>(\r\n descriptors: readonly RowActionDescriptor<T>[],\r\n ariaLabel?: string,\r\n options?: BuildRowActionsOptions\r\n): (row: T) => React.ReactNode {\r\n const iconsUpTo = options?.iconsUpTo;\r\n\r\n return (row: T) => {\r\n /* SAME predicate as `buildRowActionMenu`: how many actions this row\r\n * actually shows decides the shape, so it must be known before the menu\r\n * is built. */\r\n const visible = descriptors.filter((d) => !d.hidden?.(row));\r\n if (visible.length === 0) return null;\r\n\r\n if (iconsUpTo !== undefined && visible.length <= iconsUpTo) {\r\n /* No spacing container here: `ROW_ACTIONS_OVERLAY_SX` (DataGrid) is\r\n * already a flex row with `gap: var(--s-1)`. Re-posing one would\r\n * duplicate the same token one level lower. */\r\n return visible.map((d) => {\r\n const textLabel = typeof d.label === \"string\" ? d.label : undefined;\r\n\r\n if (\r\n process.env[\"NODE_ENV\"] !== \"production\" &&\r\n textLabel === undefined\r\n ) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui] buildRowActions: action \"${d.id}\" has a non-textual ` +\r\n \"label, so its icon button gets no explicit aria-label (R-B.5). \" +\r\n \"Give the descriptor a string label, or drop `iconsUpTo` for this grid.\"\r\n );\r\n }\r\n\r\n return (\r\n <Tooltip key={d.id} title={d.label}>\r\n <Button\r\n iconOnly\r\n variant={d.danger ? \"danger\" : \"ghost\"}\r\n size=\"sm\"\r\n {...(d.icon !== undefined ? { icon: d.icon } : {})}\r\n onClick={() => d.onClick(row)}\r\n {...(d.disabled ? { disabled: d.disabled(row) } : {})}\r\n {...(textLabel !== undefined\r\n ? { \"aria-label\": textLabel }\r\n : {})}\r\n />\r\n </Tooltip>\r\n );\r\n });\r\n }\r\n\r\n const items = buildRowActionMenu(descriptors, row);\r\n if (items.length === 0) return null;\r\n /* Conditional spread rather than ariaLabel={ariaLabel}: passing an\r\n * explicit undefined would still override OverflowMenu's own label\r\n * under exactOptionalPropertyTypes semantics (defect D-12). */\r\n return (\r\n <OverflowMenu\r\n actions={items}\r\n {...(ariaLabel !== undefined ? { ariaLabel } : {})}\r\n />\r\n );\r\n };\r\n}"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"PersonalizationProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/PersonalizationProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAS,MAAM,SAAS,CAAC;AAO/D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;EAqBT,CAAC;AAEnC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;IACpD,gFAAgF;IAChF,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAClD,qGAAqG;IACrG,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC/C;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GACtC,KAAK,CAAC,GAAG,CAAC,OAAO,CA6HnB;AAED,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"PersonalizationProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/PersonalizationProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAS,MAAM,SAAS,CAAC;AAO/D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;EAqBT,CAAC;AAEnC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;IACpD,gFAAgF;IAChF,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAClD,qGAAqG;IACrG,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC/C;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GACtC,KAAK,CAAC,GAAG,CAAC,OAAO,CA+HnB;AAED,eAAe,2BAA2B,CAAC"}
@@ -5,21 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.DEFAULT_PERSONALIZATION_LABELS = void 0;
7
7
  exports.UserPersonalizationProvider = UserPersonalizationProvider;
8
- exports["default"] = void 0;
8
+ exports.default = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _personalizationContext = require("./personalizationContext");
11
11
  var _createPersonalizationStore = _interopRequireDefault(require("./createPersonalizationStore"));
12
12
  var _createLocalStorageAdapter = _interopRequireDefault(require("./adapters/createLocalStorageAdapter"));
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
18
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
20
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
22
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /**
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ /**
23
17
  * UserPersonalizationProvider — Portnet UI v2 · personalization
24
18
  *
25
19
  * The single configuration point for per-user personalization. Mount it
@@ -47,7 +41,8 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
47
41
  *
48
42
  * React 18/19 compatible: no 19-only API is required.
49
43
  */
50
- var isDev = typeof process !== "undefined" && process.env && process.env["NODE_ENV"] !== "production";
44
+
45
+ const isDev = typeof process !== "undefined" && process.env && process.env["NODE_ENV"] !== "production";
51
46
 
52
47
  /**
53
48
  * Default labels for the whole foundation (FR — charter default). Hosts
@@ -55,7 +50,7 @@ var isDev = typeof process !== "undefined" && process.env && process.env["NODE_E
55
50
  * Front-loaded here so the favorites (Batch 3) and saved-filters (Batch 4)
56
51
  * components read consistent copy from one place.
57
52
  */
58
- var DEFAULT_PERSONALIZATION_LABELS = exports.DEFAULT_PERSONALIZATION_LABELS = Object.freeze({
53
+ const DEFAULT_PERSONALIZATION_LABELS = exports.DEFAULT_PERSONALIZATION_LABELS = Object.freeze({
59
54
  // Follow / "suivis" (Batch 3)
60
55
  addFavorite: "Suivre",
61
56
  removeFavorite: "Ne plus suivre",
@@ -78,51 +73,57 @@ var DEFAULT_PERSONALIZATION_LABELS = exports.DEFAULT_PERSONALIZATION_LABELS = Ob
78
73
  cancel: "Annuler"
79
74
  });
80
75
  function UserPersonalizationProvider(props) {
81
- var children = props.children,
82
- userId = props.userId,
83
- tenantId = props.tenantId,
84
- appId = props.appId,
85
- adapter = props.adapter,
86
- defaults = props.defaults,
87
- labels = props.labels,
88
- onError = props.onError,
89
- _props$hydrateStrateg = props.hydrateStrategy,
90
- hydrateStrategy = _props$hydrateStrateg === void 0 ? "remote-wins" : _props$hydrateStrateg;
76
+ const {
77
+ children,
78
+ userId,
79
+ tenantId,
80
+ appId,
81
+ adapter,
82
+ defaults,
83
+ labels,
84
+ onError,
85
+ hydrateStrategy = "remote-wins"
86
+ } = props;
87
+
88
+ // eslint-disable-next-line no-console
91
89
  if (isDev && !userId && typeof console !== "undefined" && console.warn) {
92
90
  // eslint-disable-next-line no-console
93
91
  console.warn("[@portnet/ui v2] UserPersonalizationProvider: `userId` is required to scope personalization. " + "Falling back to 'anonymous' — persisted preferences will be shared across unauthenticated sessions.");
94
92
  }
95
- var resolvedUserId = userId || "anonymous";
96
- var scope = React.useMemo(function buildScope() {
97
- return _objectSpread(_objectSpread({
98
- userId: resolvedUserId
99
- }, tenantId !== undefined ? {
100
- tenantId: tenantId
101
- } : {}), appId !== undefined ? {
102
- appId: appId
103
- } : {});
93
+ const resolvedUserId = userId || "anonymous";
94
+ const scope = React.useMemo(function buildScope() {
95
+ return {
96
+ userId: resolvedUserId,
97
+ ...(tenantId !== undefined ? {
98
+ tenantId
99
+ } : {}),
100
+ ...(appId !== undefined ? {
101
+ appId
102
+ } : {})
103
+ };
104
104
  }, [resolvedUserId, tenantId, appId]);
105
105
 
106
106
  // Default adapter created once; a provided adapter is trusted to be stable.
107
- var defaultAdapterRef = React.useRef(null);
107
+ const defaultAdapterRef = React.useRef(null);
108
108
  if (!adapter && !defaultAdapterRef.current) {
109
- defaultAdapterRef.current = (0, _createLocalStorageAdapter["default"])();
109
+ defaultAdapterRef.current = (0, _createLocalStorageAdapter.default)();
110
110
  }
111
- var resolvedAdapter = adapter || defaultAdapterRef.current;
111
+ const resolvedAdapter = adapter || defaultAdapterRef.current;
112
112
 
113
113
  // One store per (scope, adapter). Intentionally NOT keyed on
114
114
  // defaults/onError/hydrateStrategy: those are fed live below.
115
- var store = React.useMemo(function buildStore() {
116
- return (0, _createPersonalizationStore["default"])(_objectSpread(_objectSpread(_objectSpread({
115
+ const store = React.useMemo(function buildStore() {
116
+ return (0, _createPersonalizationStore.default)({
117
117
  scope: scope,
118
- adapter: resolvedAdapter
119
- }, defaults !== undefined ? {
120
- defaults: defaults
121
- } : {}), onError !== undefined ? {
122
- onError: onError
123
- } : {}), {}, {
118
+ adapter: resolvedAdapter,
119
+ ...(defaults !== undefined ? {
120
+ defaults
121
+ } : {}),
122
+ ...(onError !== undefined ? {
123
+ onError
124
+ } : {}),
124
125
  hydrateStrategy: hydrateStrategy
125
- }));
126
+ });
126
127
  },
127
128
  // eslint-disable-next-line react-hooks/exhaustive-deps
128
129
  [scope, resolvedAdapter]);
@@ -130,7 +131,7 @@ function UserPersonalizationProvider(props) {
130
131
  // Hydrate + cross-tab connect; dispose on store change / unmount.
131
132
  React.useEffect(function lifecycle() {
132
133
  store.hydrate();
133
- var off = store.connect();
134
+ const off = store.connect();
134
135
  return function teardown() {
135
136
  if (typeof off === "function") off();
136
137
  store.dispose();
@@ -139,27 +140,30 @@ function UserPersonalizationProvider(props) {
139
140
 
140
141
  // Push live runtime options without recreating the store.
141
142
  React.useEffect(function syncRuntime() {
142
- store.setRuntime(_objectSpread(_objectSpread({}, onError !== undefined ? {
143
- onError: onError
144
- } : {}), {}, {
143
+ store.setRuntime({
144
+ ...(onError !== undefined ? {
145
+ onError
146
+ } : {}),
145
147
  hydrateStrategy: hydrateStrategy
146
- }));
148
+ });
147
149
  }, [store, onError, hydrateStrategy]);
148
150
 
149
151
  // Dev guard: a non-memoised adapter prop would recreate the store each
150
152
  // render and wipe in-memory state. Warn so it's caught early.
151
- var prevAdapterRef = React.useRef(resolvedAdapter);
153
+ const prevAdapterRef = React.useRef(resolvedAdapter);
152
154
  React.useEffect(function guardAdapterIdentity() {
153
- if (isDev && prevAdapterRef.current !== resolvedAdapter && typeof console !== "undefined" && console.warn) {
155
+ if (isDev && prevAdapterRef.current !== resolvedAdapter && typeof console !== "undefined" &&
156
+ // eslint-disable-next-line no-console
157
+ console.warn) {
154
158
  // eslint-disable-next-line no-console
155
159
  console.warn("[@portnet/ui v2] UserPersonalizationProvider: the `adapter` prop changed identity between " + "renders. Memoise it (useMemo or a module singleton) to avoid re-creating the personalization store.");
156
160
  }
157
161
  prevAdapterRef.current = resolvedAdapter;
158
162
  }, [resolvedAdapter]);
159
- var mergedLabels = React.useMemo(function mergeLabels() {
163
+ const mergedLabels = React.useMemo(function mergeLabels() {
160
164
  return labels ? Object.assign({}, DEFAULT_PERSONALIZATION_LABELS, labels) : DEFAULT_PERSONALIZATION_LABELS;
161
165
  }, [labels]);
162
- var configValue = React.useMemo(function buildConfig() {
166
+ const configValue = React.useMemo(function buildConfig() {
163
167
  return {
164
168
  scope: scope,
165
169
  labels: mergedLabels
@@ -173,5 +177,5 @@ function UserPersonalizationProvider(props) {
173
177
  })
174
178
  });
175
179
  }
176
- var _default = exports["default"] = UserPersonalizationProvider;
180
+ var _default = exports.default = UserPersonalizationProvider;
177
181
  //# sourceMappingURL=PersonalizationProvider.js.map