@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
@@ -1 +1 @@
1
- {"version":3,"file":"Status.js","names":["React","STATUS_KEYS","STATUS_LABELS_FR","jsx","_jsx","Status","_ref","_ref2","_ref$kind","kind","label","labels","_ref$className","className","rest","_objectWithoutProperties","_excluded","safe","includes","text","_objectSpread","concat","trim","children"],"sources":["../../../../src/lib/v2/components/Status.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { STATUS_KEYS, STATUS_LABELS_FR } from \"../tokens/statusPalette\";\r\n\r\n/**\r\n * Status - Portnet UI v2\r\n *\r\n * Charter §02.1 — workflow status chip. Six and only six kinds.\r\n * Any other business status MUST map onto one of these.\r\n *\r\n * <Status kind=\"approved\" /> // → \"Approuvé\" (FR fallback)\r\n * <Status kind=\"pending\" label=\"Custom\" /> // explicit override (single)\r\n * <Status kind=\"approved\"\r\n * labels={{ approved: t(\"status.approved\"),\r\n * rejected: t(\"status.rejected\"), ... }} />\r\n *\r\n * Label resolution (highest priority first)\r\n * 1. `label` prop — single explicit override.\r\n * 2. `labels[kind]` — i18n map provided by the host.\r\n * 3. STATUS_LABELS_FR[kind] — legacy FR fallback.\r\n *\r\n * A11y note (R-Ar.1, R-Ar.3):\r\n * This component renders a plain inline <span>. It does NOT carry\r\n * role=\"status\" / aria-live — those are reserved for status MESSAGES\r\n * (toasts, banners). A status pill is a styled label; promoting it\r\n * to a live region causes SRs to announce every chip on mount and on\r\n * each re-render (e.g., on every DataGrid pagination tick).\r\n *\r\n * When the chip's *value* changes (e.g., a workflow transition just\r\n * succeeded), it is the host's responsibility to surface that change\r\n * via the canonical feedback channel — toast (R-A.1) or row flash\r\n * (.pui-row-updated) — NOT by mutating the chip alone.\r\n *\r\n * Forbidden: ad-hoc colours. Use Chip for filter pills, not Status.\r\n */\r\n\r\nexport type StatusKind = keyof typeof STATUS_LABELS_FR;\r\n\r\nexport interface StatusProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n kind?: StatusKind | undefined;\r\n label?: React.ReactNode | undefined;\r\n labels?: Partial<Record<StatusKind, React.ReactNode>> | undefined;\r\n}\r\n\r\nfunction Status({ kind = \"neutral\", label, labels, className = \"\", ...rest }: StatusProps) {\r\n const safe = STATUS_KEYS.includes(kind) ? kind : \"neutral\";\r\n const text =\r\n label\r\n ?? (labels && labels[safe])\r\n ?? STATUS_LABELS_FR[safe];\r\n return (\r\n <span\r\n className={`pui-status ${className}`.trim()}\r\n data-kind={safe}\r\n {...rest}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Status;\r\n"],"mappings":";;;;;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,WAAW,EAAEC,gBAAgB,QAAQ,yBAAyB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA9BA,SAAAC,GAAA,IAAAC,IAAA;AAwCA,SAASC,MAAMA,CAAAC,IAAA,EAA4E;EAAA,IAAAC,KAAA;EAAA,IAAAC,SAAA,GAAAF,IAAA,CAAzEG,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,SAAS,GAAAA,SAAA;IAAEE,KAAK,GAAAJ,IAAA,CAALI,KAAK;IAAEC,MAAM,GAAAL,IAAA,CAANK,MAAM;IAAAC,cAAA,GAAAN,IAAA,CAAEO,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,EAAE,GAAAA,cAAA;IAAKE,IAAI,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EACxE,IAAMC,IAAI,GAAGhB,WAAW,CAACiB,QAAQ,CAACT,IAAI,CAAC,GAAGA,IAAI,GAAG,SAAS;EAC1D,IAAMU,IAAI,IAAAZ,KAAA,GACRG,KAAK,aAALA,KAAK,cAALA,KAAK,GACCC,MAAM,IAAIA,MAAM,CAACM,IAAI,CAAC,cAAAV,KAAA,cAAAA,KAAA,GACvBL,gBAAgB,CAACe,IAAI,CAAC;EAC7B,oBACEb,IAAA,SAAAgB,aAAA,CAAAA,aAAA;IACEP,SAAS,EAAE,cAAAQ,MAAA,CAAcR,SAAS,EAAGS,IAAI,CAAC,CAAE;IAC5C,aAAWL;EAAK,GACZH,IAAI;IAAAS,QAAA,EAEPJ;EAAI,EACD,CAAC;AAEX;AAEA,eAAed,MAAM","ignoreList":[]}
1
+ {"version":3,"file":"Status.js","names":["React","STATUS_KEYS","STATUS_LABELS_FR","jsx","_jsx","Status","kind","label","labels","className","rest","safe","includes","text","trim","children"],"sources":["../../../../src/lib/v2/components/Status.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { STATUS_KEYS, STATUS_LABELS_FR } from \"../tokens/statusPalette\";\r\n\r\n/**\r\n * Status - Portnet UI v2\r\n *\r\n * Charter §02.1 — workflow status chip. Six and only six kinds.\r\n * Any other business status MUST map onto one of these.\r\n *\r\n * <Status kind=\"approved\" /> // → \"Approuvé\" (FR fallback)\r\n * <Status kind=\"pending\" label=\"Custom\" /> // explicit override (single)\r\n * <Status kind=\"approved\"\r\n * labels={{ approved: t(\"status.approved\"),\r\n * rejected: t(\"status.rejected\"), ... }} />\r\n *\r\n * Label resolution (highest priority first)\r\n * 1. `label` prop — single explicit override.\r\n * 2. `labels[kind]` — i18n map provided by the host.\r\n * 3. STATUS_LABELS_FR[kind] — legacy FR fallback.\r\n *\r\n * A11y note (R-Ar.1, R-Ar.3):\r\n * This component renders a plain inline <span>. It does NOT carry\r\n * role=\"status\" / aria-live — those are reserved for status MESSAGES\r\n * (toasts, banners). A status pill is a styled label; promoting it\r\n * to a live region causes SRs to announce every chip on mount and on\r\n * each re-render (e.g., on every DataGrid pagination tick).\r\n *\r\n * When the chip's *value* changes (e.g., a workflow transition just\r\n * succeeded), it is the host's responsibility to surface that change\r\n * via the canonical feedback channel — toast (R-A.1) or row flash\r\n * (.pui-row-updated) — NOT by mutating the chip alone.\r\n *\r\n * Forbidden: ad-hoc colours. Use Chip for filter pills, not Status.\r\n */\r\n\r\nexport type StatusKind = keyof typeof STATUS_LABELS_FR;\r\n\r\nexport interface StatusProps extends React.HTMLAttributes<HTMLSpanElement> {\r\n kind?: StatusKind | undefined;\r\n label?: React.ReactNode | undefined;\r\n labels?: Partial<Record<StatusKind, React.ReactNode>> | undefined;\r\n}\r\n\r\nfunction Status({ kind = \"neutral\", label, labels, className = \"\", ...rest }: StatusProps) {\r\n const safe = STATUS_KEYS.includes(kind) ? kind : \"neutral\";\r\n const text =\r\n label\r\n ?? (labels && labels[safe])\r\n ?? STATUS_LABELS_FR[safe];\r\n return (\r\n <span\r\n className={`pui-status ${className}`.trim()}\r\n data-kind={safe}\r\n {...rest}\r\n >\r\n {text}\r\n </span>\r\n );\r\n}\r\n\r\nexport default Status;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,WAAW,EAAEC,gBAAgB,QAAQ,yBAAyB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA9BA,SAAAC,GAAA,IAAAC,IAAA;AAwCA,SAASC,MAAMA,CAAC;EAAEC,IAAI,GAAG,SAAS;EAAEC,KAAK;EAAEC,MAAM;EAAEC,SAAS,GAAG,EAAE;EAAE,GAAGC;AAAkB,CAAC,EAAE;EACzF,MAAMC,IAAI,GAAGV,WAAW,CAACW,QAAQ,CAACN,IAAI,CAAC,GAAGA,IAAI,GAAG,SAAS;EAC1D,MAAMO,IAAI,GACRN,KAAK,KACCC,MAAM,IAAIA,MAAM,CAACG,IAAI,CAAC,CAAC,IACxBT,gBAAgB,CAACS,IAAI,CAAC;EAC7B,oBACEP,IAAA;IACEK,SAAS,EAAE,cAAcA,SAAS,EAAE,CAACK,IAAI,CAAC,CAAE;IAC5C,aAAWH,IAAK;IAAA,GACZD,IAAI;IAAAK,QAAA,EAEPF;EAAI,CACD,CAAC;AAEX;AAEA,eAAeR,MAAM","ignoreList":[]}
@@ -1,9 +1,3 @@
1
- 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); }
2
- 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; }
3
- 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; }
4
- 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; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- 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); }
7
1
  import * as React from "react";
8
2
  import CheckIcon from "@mui/icons-material/Check";
9
3
  import Box from "@mui/material/Box";
@@ -78,14 +72,14 @@ import { mergeLabels } from "../utils/mergeLabels";
78
72
  * `titleAs` so the page heading hierarchy stays consistent.
79
73
  */
80
74
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
81
- var DEFAULT_H_LABELS = Object.freeze({
75
+ const DEFAULT_H_LABELS = Object.freeze({
82
76
  nav: "Étapes du formulaire",
83
- item: function item(n, label, state) {
84
- var suffix = state === "complete" ? " (complétée)" : state === "active" ? " (en cours)" : state === "disabled" ? " (verrouillée)" : " (à venir)";
85
- return "\xC9tape ".concat(n, " : ").concat(label).concat(suffix);
77
+ item: (n, label, state) => {
78
+ const suffix = state === "complete" ? " (complétée)" : state === "active" ? " (en cours)" : state === "disabled" ? " (verrouillée)" : " (à venir)";
79
+ return `Étape ${n} : ${label}${suffix}`;
86
80
  }
87
81
  });
88
- var DEFAULT_V_LABELS = Object.freeze({
82
+ const DEFAULT_V_LABELS = Object.freeze({
89
83
  nav: "Historique des étapes",
90
84
  state: Object.freeze({
91
85
  complete: "Étape complétée. ",
@@ -101,7 +95,7 @@ var DEFAULT_V_LABELS = Object.freeze({
101
95
  disabled: "Étape verrouillée. "
102
96
  })
103
97
  });
104
- var dotBaseStyle = {
98
+ const dotBaseStyle = {
105
99
  width: 24,
106
100
  height: 24,
107
101
  borderRadius: "50%",
@@ -113,7 +107,7 @@ var dotBaseStyle = {
113
107
  border: "2px solid",
114
108
  transition: "background var(--duration-base, 180ms), color var(--duration-base, 180ms), border-color var(--duration-base, 180ms)"
115
109
  };
116
- var stateStyle = function stateStyle(state) {
110
+ const stateStyle = state => {
117
111
  if (state === "complete") {
118
112
  return {
119
113
  background: "var(--accent)",
@@ -143,13 +137,17 @@ var stateStyle = function stateStyle(state) {
143
137
  };
144
138
  // Inner content shared between the clickable <button> and the
145
139
  // non-interactive <span> renderings of an HStepper step.
146
- function StepInner(_ref) {
147
- var index = _ref.index,
148
- label = _ref.label,
149
- state = _ref.state;
140
+ function StepInner({
141
+ index,
142
+ label,
143
+ state
144
+ }) {
150
145
  return /*#__PURE__*/_jsxs(_Fragment, {
151
146
  children: [/*#__PURE__*/_jsx("span", {
152
- style: _objectSpread(_objectSpread({}, dotBaseStyle), stateStyle(state)),
147
+ style: {
148
+ ...dotBaseStyle,
149
+ ...stateStyle(state)
150
+ },
153
151
  children: state === "complete" ? /*#__PURE__*/_jsx(CheckIcon, {
154
152
  fontSize: "inherit"
155
153
  }) : index + 1
@@ -166,7 +164,7 @@ function StepInner(_ref) {
166
164
  })]
167
165
  });
168
166
  }
169
- var stepBoxSx = {
167
+ const stepBoxSx = {
170
168
  display: "flex",
171
169
  alignItems: "center",
172
170
  gap: 1,
@@ -190,7 +188,7 @@ var stepBoxSx = {
190
188
  * for VStepper also carries title/meta/etc., so narrowing to
191
189
  * HStepperRichStep here would hide those fields. */
192
190
  function isRichStep(s) {
193
- return s != null && _typeof(s) === "object" && !Array.isArray(s) && ! /*#__PURE__*/React.isValidElement(s) && ("label" in s || "status" in s);
191
+ return s != null && typeof s === "object" && !Array.isArray(s) && ! /*#__PURE__*/React.isValidElement(s) && ("label" in s || "status" in s);
194
192
  }
195
193
  function normaliseStatusToState(status) {
196
194
  if (status === "current" || status === "active") return "active";
@@ -204,14 +202,13 @@ function normaliseStatusToState(status) {
204
202
  function normaliseSteps(steps, current) {
205
203
  if (steps.length === 0) return [];
206
204
  if (isRichStep(steps[0])) {
207
- return steps.map(function (s, i) {
208
- var _rich$id;
209
- var rich = s;
210
- var state = normaliseStatusToState(rich.status);
205
+ return steps.map((s, i) => {
206
+ const rich = s;
207
+ const state = normaliseStatusToState(rich.status);
211
208
  return {
212
- key: (_rich$id = rich.id) !== null && _rich$id !== void 0 ? _rich$id : i,
209
+ key: rich.id ?? i,
213
210
  label: rich.label,
214
- state: state,
211
+ state,
215
212
  // Disabled steps are never clickable. Other rich states
216
213
  // remain clickable so the host can offer free navigation.
217
214
  clickable: state !== "disabled"
@@ -219,27 +216,25 @@ function normaliseSteps(steps, current) {
219
216
  });
220
217
  }
221
218
  // Legacy: plain labels driven by `current`.
222
- return steps.map(function (label, i) {
223
- return {
224
- key: i,
225
- label: label,
226
- state: i < current ? "complete" : i === current ? "active" : "pending",
227
- clickable: i <= current
228
- };
229
- });
219
+ return steps.map((label, i) => ({
220
+ key: i,
221
+ label: label,
222
+ state: i < current ? "complete" : i === current ? "active" : "pending",
223
+ clickable: i <= current
224
+ }));
230
225
  }
231
- export function HStepper(_ref2) {
232
- var steps = _ref2.steps,
233
- _ref2$current = _ref2.current,
234
- current = _ref2$current === void 0 ? 0 : _ref2$current,
235
- onJump = _ref2.onJump,
236
- onStepClick = _ref2.onStepClick,
237
- ariaLabel = _ref2.ariaLabel,
238
- labels = _ref2.labels;
239
- var L = mergeLabels(DEFAULT_H_LABELS, labels);
240
- var navLabel = ariaLabel || L.nav;
241
- var jumpHandler = onJump || onStepClick;
242
- var normalised = normaliseSteps(steps, current);
226
+ export function HStepper({
227
+ steps,
228
+ current = 0,
229
+ onJump,
230
+ onStepClick,
231
+ ariaLabel,
232
+ labels
233
+ }) {
234
+ const L = mergeLabels(DEFAULT_H_LABELS, labels);
235
+ const navLabel = ariaLabel || L.nav;
236
+ const jumpHandler = onJump || onStepClick;
237
+ const normalised = normaliseSteps(steps, current);
243
238
  return /*#__PURE__*/_jsx("nav", {
244
239
  "aria-label": navLabel,
245
240
  style: {
@@ -249,20 +244,19 @@ export function HStepper(_ref2) {
249
244
  padding: "12px 0",
250
245
  overflowX: "auto"
251
246
  },
252
- children: normalised.map(function (step, i) {
253
- var a11yLabel = L.item(i + 1, step.label, step.state);
247
+ children: normalised.map((step, i) => {
248
+ const a11yLabel = L.item(i + 1, step.label, step.state);
254
249
  return /*#__PURE__*/_jsxs(React.Fragment, {
255
250
  children: [step.clickable ? /*#__PURE__*/_jsx(Box, {
256
251
  component: "button",
257
252
  type: "button",
258
253
  "aria-current": step.state === "active" ? "step" : undefined,
259
254
  "aria-label": a11yLabel,
260
- onClick: function onClick() {
261
- return jumpHandler === null || jumpHandler === void 0 ? void 0 : jumpHandler(i);
262
- },
263
- sx: _objectSpread(_objectSpread({}, stepBoxSx), {}, {
255
+ onClick: () => jumpHandler?.(i),
256
+ sx: {
257
+ ...stepBoxSx,
264
258
  cursor: "pointer"
265
- }),
259
+ },
266
260
  children: /*#__PURE__*/_jsx(StepInner, {
267
261
  index: i,
268
262
  label: step.label,
@@ -272,9 +266,10 @@ export function HStepper(_ref2) {
272
266
  component: "span",
273
267
  "aria-label": a11yLabel,
274
268
  "aria-disabled": step.state === "disabled" ? "true" : undefined,
275
- sx: _objectSpread(_objectSpread({}, stepBoxSx), {}, {
269
+ sx: {
270
+ ...stepBoxSx,
276
271
  cursor: "default"
277
- }),
272
+ },
278
273
  children: /*#__PURE__*/_jsx(StepInner, {
279
274
  index: i,
280
275
  label: step.label,
@@ -308,12 +303,12 @@ export function HStepper(_ref2) {
308
303
  * opt out of heading semantics entirely.
309
304
  * @param labels - i18n overrides; see file header.
310
305
  */
311
- export function VStepper(_ref3) {
312
- var items = _ref3.items,
313
- _ref3$titleAs = _ref3.titleAs,
314
- titleAs = _ref3$titleAs === void 0 ? "h4" : _ref3$titleAs,
315
- labels = _ref3.labels,
316
- ariaLabel = _ref3.ariaLabel;
306
+ export function VStepper({
307
+ items,
308
+ titleAs = "h4",
309
+ labels,
310
+ ariaLabel
311
+ }) {
317
312
  /*
318
313
  * Nested-dictionary merge, both levels through the shared undefined-safe helper
319
314
  * (gap G-24, fourth instance after Dropzone.reasons and DataGridLabels.
@@ -331,19 +326,19 @@ export function VStepper(_ref3) {
331
326
  * two explicit levels can be read, a recursive helper hides how deep it goes.
332
327
  * Same convention as _dataGridShared.
333
328
  */
334
- var L = labels ? mergeLabels(DEFAULT_V_LABELS, _objectSpread(_objectSpread({}, labels), {}, {
329
+ const L = labels ? mergeLabels(DEFAULT_V_LABELS, {
330
+ ...labels,
335
331
  state: mergeLabels(DEFAULT_V_LABELS.state, labels.state)
336
- })) : DEFAULT_V_LABELS;
337
- var navLabel = ariaLabel || L.nav;
332
+ }) : DEFAULT_V_LABELS;
333
+ const navLabel = ariaLabel || L.nav;
338
334
 
339
335
  /* Accept the same rich-step shape HStepper uses, so host modules
340
336
  * can pass the same array to both steppers without re-mapping. */
341
- var normalisedItems = items.map(function (it) {
337
+ const normalisedItems = items.map(it => {
342
338
  if (isRichStep(it) && it.status !== undefined) {
343
- var _it$title;
344
339
  return {
345
340
  state: normaliseStatusToState(it.status),
346
- title: (_it$title = it.title) !== null && _it$title !== void 0 ? _it$title : it.label,
341
+ title: it.title ?? it.label,
347
342
  meta: it.meta,
348
343
  timestamp: it.timestamp,
349
344
  actor: it.actor
@@ -358,9 +353,8 @@ export function VStepper(_ref3) {
358
353
  margin: 0
359
354
  },
360
355
  "aria-label": navLabel,
361
- children: normalisedItems.map(function (it, i) {
362
- var _it$state;
363
- var st = (_it$state = it.state) !== null && _it$state !== void 0 ? _it$state : "pending";
356
+ children: normalisedItems.map((it, i) => {
357
+ const st = it.state ?? "pending";
364
358
  return /*#__PURE__*/_jsxs("li", {
365
359
  "aria-current": st === "active" ? "step" : undefined,
366
360
  style: {
@@ -371,7 +365,10 @@ export function VStepper(_ref3) {
371
365
  },
372
366
  children: [/*#__PURE__*/_jsx("span", {
373
367
  "aria-hidden": "true",
374
- style: _objectSpread(_objectSpread({}, dotBaseStyle), stateStyle(st)),
368
+ style: {
369
+ ...dotBaseStyle,
370
+ ...stateStyle(st)
371
+ },
375
372
  children: st === "complete" ? /*#__PURE__*/_jsx(CheckIcon, {
376
373
  fontSize: "inherit"
377
374
  }) : i + 1
@@ -1 +1 @@
1
- {"version":3,"file":"Stepper.js","names":["React","CheckIcon","Box","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_H_LABELS","Object","freeze","nav","item","n","label","state","suffix","concat","DEFAULT_V_LABELS","complete","active","pending","disabled","dotBaseStyle","width","height","borderRadius","display","placeItems","fontSize","fontWeight","flex","border","transition","stateStyle","background","borderColor","color","StepInner","_ref","index","children","style","_objectSpread","whiteSpace","stepBoxSx","alignItems","gap","padding","font","textAlign","outline","outlineOffset","isRichStep","s","_typeof","Array","isArray","isValidElement","normaliseStatusToState","status","normaliseSteps","steps","current","length","map","i","_rich$id","rich","key","id","clickable","HStepper","_ref2","_ref2$current","onJump","onStepClick","ariaLabel","labels","L","navLabel","jumpHandler","normalised","overflowX","step","a11yLabel","component","type","undefined","onClick","sx","cursor","minWidth","VStepper","_ref3","items","_ref3$titleAs","titleAs","normalisedItems","it","_it$title","title","meta","timestamp","actor","listStyle","margin","_it$state","st","paddingBottom","position","className","lineHeight","left","top","bottom"],"sources":["../../../../src/lib/v2/components/Stepper.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Stepper - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Stepper\". Required on flows ≥ 3 steps (R-3.4).\r\n *\r\n * Two ways to drive HStepper:\r\n *\r\n * 1. SIMPLE mode — plain labels + `current` index (Charter default):\r\n *\r\n * <HStepper\r\n * steps={[\"Identification\", \"Marchandise\", \"Banque\", \"Validation\"]}\r\n * current={1}\r\n * onJump={i => goTo(i)}\r\n * />\r\n *\r\n * 2. RICH mode — objects carry their own state, including a \"disabled\"\r\n * state for locked future steps (used by wizards where step N is\r\n * unavailable until step N-1 has been submitted):\r\n *\r\n * <HStepper\r\n * steps={[\r\n * { id: \"importateur\", label: \"Importateur\", status: \"completed\" },\r\n * { id: \"donneesTI\", label: \"Données\", status: \"current\" },\r\n * { id: \"marchandises\",label: \"Marchandises\", status: \"disabled\" },\r\n * { id: \"revision\", label: \"Révision\", status: \"pending\" },\r\n * ]}\r\n * onStepClick={i => goTo(i)}\r\n * ariaLabel=\"Étapes de création du titre\"\r\n * />\r\n *\r\n * status values: \"current\" | \"active\" | \"completed\" | \"complete\" |\r\n * \"pending\" | \"disabled\"\r\n * (\"current\"/\"active\" and \"completed\"/\"complete\" are accepted as\r\n * synonyms to ease migration from host modules.)\r\n *\r\n * VStepper — vertical history/progression timeline. Each item may carry\r\n * `timestamp` (date/time of the action) and `actor` (the user who did it);\r\n * they render as a muted \"timestamp · actor\" line under the title. `meta`\r\n * still works for free-form text (e.g. \"En cours\" on the active step):\r\n *\r\n * <VStepper items={[\r\n * { status: \"completed\", title: \"Titre d'importation créé\",\r\n * timestamp: \"27/03/2025 09:48\", actor: \"dsmoimp\" },\r\n * { status: \"completed\", title: \"Soumis à la banque (CITIBANK)\",\r\n * timestamp: \"27/03/2025 10:16\", actor: \"Transit Jebli\" },\r\n * { status: \"active\", title: \"En attente de réponse banque\", meta: \"En cours\" },\r\n * ]} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <HStepper labels={{\r\n * nav: \"Form steps\",\r\n * item: (n, label, state) =>\r\n * `Step ${n}: ${label} (${\r\n * state === \"complete\" ? \"completed\" :\r\n * state === \"active\" ? \"in progress\" : \"upcoming\"\r\n * })`,\r\n * }} />\r\n *\r\n * <VStepper labels={{\r\n * nav: \"Step history\",\r\n * state: { complete: \"Completed step.\", active: \"Current step.\", pending: \"Upcoming step.\" },\r\n * }} />\r\n *\r\n * A11y note (R-Ar.1):\r\n * Clickable HStepper steps render as real <button> elements.\r\n * VStepper's per-item title element is host-configurable via\r\n * `titleAs` so the page heading hierarchy stays consistent.\r\n */\r\n\r\nexport type StepState = \"complete\" | \"active\" | \"pending\" | \"disabled\";\r\nexport type StepStatus =\r\n | \"current\"\r\n | \"active\"\r\n | \"completed\"\r\n | \"complete\"\r\n | \"pending\"\r\n | \"disabled\";\r\n\r\nexport interface HStepperRichStep {\r\n id?: string | number | undefined;\r\n label?: React.ReactNode | undefined;\r\n status?: StepStatus | undefined;\r\n}\r\n\r\nexport type HStepperStep = React.ReactNode | HStepperRichStep;\r\n\r\ninterface NormalisedStep {\r\n key: React.Key;\r\n label: React.ReactNode;\r\n state: StepState;\r\n clickable: boolean;\r\n}\r\n\r\nconst DEFAULT_H_LABELS = Object.freeze({\r\n nav: \"Étapes du formulaire\",\r\n item: (n: number, label: React.ReactNode, state: StepState): string => {\r\n const suffix =\r\n state === \"complete\" ? \" (complétée)\" :\r\n state === \"active\" ? \" (en cours)\" :\r\n state === \"disabled\" ? \" (verrouillée)\" : \" (à venir)\";\r\n return `Étape ${n} : ${label}${suffix}`;\r\n },\r\n});\r\n\r\nconst DEFAULT_V_LABELS: {\r\n nav: string;\r\n state: Partial<Record<StepState, string>>;\r\n} = Object.freeze({\r\n nav: \"Historique des étapes\",\r\n state: Object.freeze({\r\n complete: \"Étape complétée. \",\r\n active: \"Étape en cours. \",\r\n pending: \"Étape à venir. \",\r\n /* WCAG 1.4.1 — the fourth state was MISSING. VStepper accepts the same rich\r\n * item shape as HStepper (see normalisedItems below: \"so host modules can pass\r\n * the same array to both steppers\"), and HStepper documents\r\n * `status: \"disabled\"` for wizard steps locked until the previous one is\r\n * submitted. So a disabled step could reach VStepper and render an EMPTY\r\n * sr-only span — its state conveyed by colour alone, which is precisely what\r\n * the comment on that span forbids. No host had to do anything wrong. */\r\n disabled: \"Étape verrouillée. \",\r\n }),\r\n});\r\n\r\nconst dotBaseStyle: React.CSSProperties = {\r\n width: 24,\r\n height: 24,\r\n borderRadius: \"50%\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n flex: \"0 0 auto\",\r\n border: \"2px solid\",\r\n transition:\r\n \"background var(--duration-base, 180ms), color var(--duration-base, 180ms), border-color var(--duration-base, 180ms)\",\r\n};\r\n\r\nconst stateStyle = (state: StepState): React.CSSProperties => {\r\n if (state === \"complete\") {\r\n return { background: \"var(--accent)\", borderColor: \"var(--accent)\", color: \"var(--accent-fg)\" };\r\n }\r\n if (state === \"active\") {\r\n return { background: \"var(--surface)\", borderColor: \"var(--accent)\", color: \"var(--accent)\" };\r\n }\r\n if (state === \"disabled\") {\r\n return { background: \"var(--bg-subtle)\", borderColor: \"var(--border)\", color: \"var(--fg-subtle)\" };\r\n }\r\n return { background: \"var(--surface)\", borderColor: \"var(--border-strong)\", color: \"var(--fg-subtle)\" };\r\n};\r\n\r\ninterface StepInnerProps {\r\n index: number;\r\n label: React.ReactNode;\r\n state: StepState;\r\n}\r\n\r\n// Inner content shared between the clickable <button> and the\r\n// non-interactive <span> renderings of an HStepper step.\r\nfunction StepInner({ index, label, state }: StepInnerProps) {\r\n return (\r\n <>\r\n <span style={{ ...dotBaseStyle, ...stateStyle(state) }}>\r\n {state === \"complete\" ? <CheckIcon fontSize=\"inherit\" /> : index + 1}\r\n </span>\r\n <span\r\n style={{\r\n fontSize: \"var(--text-sm)\",\r\n // Was 650 (non-standard, banned by Batch 1 typography tokens).\r\n // var(--fw-semibold) (600) is the canonical \"emphasised\" weight.\r\n fontWeight: state === \"active\" ? \"var(--fw-semibold)\" : \"var(--fw-medium)\",\r\n color:\r\n state === \"pending\" ? \"var(--fg-subtle)\" :\r\n state === \"disabled\" ? \"var(--fg-muted)\" : \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n >\r\n {label}\r\n </span>\r\n </>\r\n );\r\n}\r\n\r\nconst stepBoxSx = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1,\r\n padding: \"var(--s-1) calc(var(--s-1) + 2px)\",\r\n borderRadius: \"var(--r-md)\",\r\n // Reset native <button> styling to match the previous Box look.\r\n background: \"transparent\",\r\n border: 0,\r\n font: \"inherit\",\r\n textAlign: \"left\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n} satisfies SxProps<Theme>;\r\n\r\n/* Detect whether the `steps` array carries plain labels (legacy)\r\n * or rich {id, label, status} objects. ReactElements (icons,\r\n * fragments) and strings are treated as plain labels.\r\n * Plain boolean predicate (not a type guard): the rich object shape\r\n * for VStepper also carries title/meta/etc., so narrowing to\r\n * HStepperRichStep here would hide those fields. */\r\nfunction isRichStep(s: unknown): boolean {\r\n return (\r\n s != null &&\r\n typeof s === \"object\" &&\r\n !Array.isArray(s) &&\r\n !React.isValidElement(s) &&\r\n (\"label\" in s || \"status\" in s)\r\n );\r\n}\r\n\r\nfunction normaliseStatusToState(status: StepStatus | undefined): StepState {\r\n if (status === \"current\" || status === \"active\") return \"active\";\r\n if (status === \"completed\" || status === \"complete\") return \"complete\";\r\n if (status === \"disabled\") return \"disabled\";\r\n return \"pending\";\r\n}\r\n\r\n/* Convert rich steps to the legacy { label, state, clickable, key }\r\n * shape consumed by the rendering loop. */\r\nfunction normaliseSteps(steps: HStepperStep[], current: number): NormalisedStep[] {\r\n if (steps.length === 0) return [];\r\n if (isRichStep(steps[0])) {\r\n return steps.map((s, i): NormalisedStep => {\r\n const rich = s as HStepperRichStep;\r\n const state = normaliseStatusToState(rich.status);\r\n return {\r\n key: rich.id ?? i,\r\n label: rich.label,\r\n state,\r\n // Disabled steps are never clickable. Other rich states\r\n // remain clickable so the host can offer free navigation.\r\n clickable: state !== \"disabled\",\r\n };\r\n });\r\n }\r\n // Legacy: plain labels driven by `current`.\r\n return steps.map((label, i): NormalisedStep => ({\r\n key: i,\r\n label: label as React.ReactNode,\r\n state: i < current ? \"complete\" : i === current ? \"active\" : \"pending\",\r\n clickable: i <= current,\r\n }));\r\n}\r\n\r\nexport interface HStepperLabels {\r\n nav?: string | undefined;\r\n item?: ((n: number, label: React.ReactNode, state: StepState) => string) | undefined;\r\n}\r\n\r\nexport interface HStepperProps {\r\n /**\r\n * Either an array of plain labels (strings/nodes) driven by\r\n * `current`, or an array of `{ id?, label, status }` objects\r\n * where status carries the per-step state.\r\n */\r\n steps: HStepperStep[];\r\n /** Legacy: index of the active step. Ignored when `steps` are rich objects. */\r\n current?: number | undefined;\r\n /** Click handler. Receives the step index. */\r\n onJump?: ((index: number) => void) | undefined;\r\n /** Alias of `onJump` (some host modules used this name). */\r\n onStepClick?: ((index: number) => void) | undefined;\r\n /** Shortcut for `labels.nav`. */\r\n ariaLabel?: string | undefined;\r\n /** Full i18n override; see file header. */\r\n labels?: HStepperLabels | undefined;\r\n}\r\n\r\nexport function HStepper({\r\n steps,\r\n current = 0,\r\n onJump,\r\n onStepClick,\r\n ariaLabel,\r\n labels,\r\n}: HStepperProps) {\r\n const L = mergeLabels(DEFAULT_H_LABELS, labels);\r\n const navLabel = ariaLabel || L.nav;\r\n const jumpHandler = onJump || onStepClick;\r\n\r\n const normalised = normaliseSteps(steps, current);\r\n\r\n return (\r\n <nav\r\n aria-label={navLabel}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n padding: \"12px 0\",\r\n overflowX: \"auto\",\r\n }}\r\n >\r\n {normalised.map((step, i) => {\r\n const a11yLabel = L.item(i + 1, step.label, step.state);\r\n return (\r\n <React.Fragment key={step.key}>\r\n {step.clickable ? (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n aria-current={step.state === \"active\" ? \"step\" : undefined}\r\n aria-label={a11yLabel}\r\n onClick={() => jumpHandler?.(i)}\r\n sx={{ ...stepBoxSx, cursor: \"pointer\" }}\r\n >\r\n <StepInner index={i} label={step.label} state={step.state} />\r\n </Box>\r\n ) : (\r\n <Box\r\n component=\"span\"\r\n aria-label={a11yLabel}\r\n aria-disabled={step.state === \"disabled\" ? \"true\" : undefined}\r\n sx={{ ...stepBoxSx, cursor: \"default\" }}\r\n >\r\n <StepInner index={i} label={step.label} state={step.state} />\r\n </Box>\r\n )}\r\n {i < normalised.length - 1 && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n flex: 1,\r\n minWidth: 24,\r\n height: 2,\r\n background: step.state === \"complete\" ? \"var(--accent)\" : \"var(--border)\",\r\n borderRadius: 1,\r\n }}\r\n />\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </nav>\r\n );\r\n}\r\n\r\nexport interface VStepperItem {\r\n state?: StepState | undefined;\r\n status?: StepStatus | undefined;\r\n title?: React.ReactNode | undefined;\r\n label?: React.ReactNode | undefined;\r\n meta?: React.ReactNode | undefined;\r\n timestamp?: React.ReactNode | undefined;\r\n actor?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface VStepperLabels {\r\n nav?: string | undefined;\r\n /**\r\n * SR-only sentence per step state. Widened from the three visible states to the\r\n * full `StepState` union: `disabled` was unreachable for hosts even though\r\n * VStepper accepts disabled items, so its text alternative could not be\r\n * translated (WCAG 1.4.1 + R-Ar.3).\r\n */\r\n state?: Partial<Record<StepState, string>> | undefined;\r\n}\r\n\r\nexport interface VStepperProps {\r\n items: VStepperItem[];\r\n titleAs?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\" | \"span\" | \"p\" | undefined;\r\n ariaLabel?: string | undefined;\r\n labels?: VStepperLabels | undefined;\r\n}\r\n\r\n/**\r\n * VStepper - vertical historical / progression stepper.\r\n *\r\n * @param items - list of { state|status, title, meta?, timestamp?, actor? }.\r\n * `timestamp` (date/time) + `actor` (user) render as a\r\n * muted \"timestamp · actor\" line under the title; `meta`\r\n * renders on its own line (free-form, e.g. \"En cours\").\r\n * @param titleAs - element used for each step title. Defaults to \"h4\".\r\n * Hosts whose outline already used h2/h3 above the\r\n * stepper should pick the next level (e.g. titleAs=\"h3\"\r\n * after an h2 ActionBar title). Pass \"div\"/\"span\" to\r\n * opt out of heading semantics entirely.\r\n * @param labels - i18n overrides; see file header.\r\n */\r\nexport function VStepper({ items, titleAs = \"h4\", labels, ariaLabel }: VStepperProps) {\r\n /*\r\n * Nested-dictionary merge, both levels through the shared undefined-safe helper\r\n * (gap G-24, fourth instance after Dropzone.reasons and DataGridLabels.\r\n * pagination).\r\n *\r\n * The previous form spread `...labels` at the top level, so an explicitly-passed\r\n * `undefined` on `nav` DELETED the default and left the <ol> without an\r\n * accessible name (R-Ar.5). And the inner `|| {}` guarded the `state` sub-object\r\n * against being undefined without guarding its VALUES — so\r\n * `state: { complete: undefined }` emptied the sr-only span below and reduced the\r\n * step's state to colour alone, defeating the WCAG 1.4.1 rule its own comment\r\n * invokes.\r\n *\r\n * `state` is merged at its OWN level rather than through a recursive deep merge:\r\n * two explicit levels can be read, a recursive helper hides how deep it goes.\r\n * Same convention as _dataGridShared.\r\n */\r\n const L = labels\r\n ? mergeLabels(DEFAULT_V_LABELS, {\r\n ...labels,\r\n state: mergeLabels(DEFAULT_V_LABELS.state, labels.state),\r\n })\r\n : DEFAULT_V_LABELS;\r\n const navLabel = ariaLabel || L.nav;\r\n\r\n /* Accept the same rich-step shape HStepper uses, so host modules\r\n * can pass the same array to both steppers without re-mapping. */\r\n const normalisedItems = items.map((it) => {\r\n if (isRichStep(it) && it.status !== undefined) {\r\n return {\r\n state: normaliseStatusToState(it.status),\r\n title: it.title ?? it.label,\r\n meta: it.meta,\r\n timestamp: it.timestamp,\r\n actor: it.actor,\r\n };\r\n }\r\n return it;\r\n });\r\n\r\n return (\r\n <ol style={{ listStyle: \"none\", padding: 0, margin: 0 }} aria-label={navLabel}>\r\n {normalisedItems.map((it, i) => {\r\n const st: StepState = it.state ?? \"pending\";\r\n return (\r\n <li\r\n key={i}\r\n aria-current={st === \"active\" ? \"step\" : undefined}\r\n style={{\r\n display: \"flex\",\r\n gap: 12,\r\n paddingBottom: i < normalisedItems.length - 1 ? 16 : 0,\r\n position: \"relative\",\r\n }}\r\n >\r\n <span aria-hidden=\"true\" style={{ ...dotBaseStyle, ...stateStyle(st) }}>\r\n {st === \"complete\" ? <CheckIcon fontSize=\"inherit\" /> : i + 1}\r\n </span>\r\n {/* WCAG 1.4.1 - convey state in text, not only colour. */}\r\n <span className=\"pui-sr-only\">{L.state[st]}</span>\r\n <div style={{ flex: 1 }}>\r\n <Box\r\n component={titleAs}\r\n sx={{\r\n margin: 0,\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {it.title}\r\n </Box>\r\n {(it.timestamp != null || it.actor != null) && (\r\n <p\r\n style={{\r\n margin: \"2px 0 0\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {it.timestamp != null ? it.timestamp : null}\r\n {it.timestamp != null && it.actor != null ? \" · \" : null}\r\n {it.actor != null ? (\r\n <span style={{ color: \"var(--fg-muted)\", fontWeight: \"var(--fw-medium)\" }}>\r\n {it.actor}\r\n </span>\r\n ) : null}\r\n </p>\r\n )}\r\n {it.meta != null && it.meta !== \"\" && (\r\n <p\r\n style={{\r\n margin: \"2px 0 0\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {it.meta}\r\n </p>\r\n )}\r\n </div>\r\n {i < normalisedItems.length - 1 && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: \"absolute\",\r\n left: 11, top: 26, bottom: 0,\r\n width: 2,\r\n background: \"var(--border)\",\r\n }}\r\n />\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n\r\nexport default HStepper;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Stepper.js","names":["React","CheckIcon","Box","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_H_LABELS","Object","freeze","nav","item","n","label","state","suffix","DEFAULT_V_LABELS","complete","active","pending","disabled","dotBaseStyle","width","height","borderRadius","display","placeItems","fontSize","fontWeight","flex","border","transition","stateStyle","background","borderColor","color","StepInner","index","children","style","whiteSpace","stepBoxSx","alignItems","gap","padding","font","textAlign","outline","outlineOffset","isRichStep","s","Array","isArray","isValidElement","normaliseStatusToState","status","normaliseSteps","steps","current","length","map","i","rich","key","id","clickable","HStepper","onJump","onStepClick","ariaLabel","labels","L","navLabel","jumpHandler","normalised","overflowX","step","a11yLabel","component","type","undefined","onClick","sx","cursor","minWidth","VStepper","items","titleAs","normalisedItems","it","title","meta","timestamp","actor","listStyle","margin","st","paddingBottom","position","className","lineHeight","left","top","bottom"],"sources":["../../../../src/lib/v2/components/Stepper.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Stepper - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Stepper\". Required on flows ≥ 3 steps (R-3.4).\r\n *\r\n * Two ways to drive HStepper:\r\n *\r\n * 1. SIMPLE mode — plain labels + `current` index (Charter default):\r\n *\r\n * <HStepper\r\n * steps={[\"Identification\", \"Marchandise\", \"Banque\", \"Validation\"]}\r\n * current={1}\r\n * onJump={i => goTo(i)}\r\n * />\r\n *\r\n * 2. RICH mode — objects carry their own state, including a \"disabled\"\r\n * state for locked future steps (used by wizards where step N is\r\n * unavailable until step N-1 has been submitted):\r\n *\r\n * <HStepper\r\n * steps={[\r\n * { id: \"importateur\", label: \"Importateur\", status: \"completed\" },\r\n * { id: \"donneesTI\", label: \"Données\", status: \"current\" },\r\n * { id: \"marchandises\",label: \"Marchandises\", status: \"disabled\" },\r\n * { id: \"revision\", label: \"Révision\", status: \"pending\" },\r\n * ]}\r\n * onStepClick={i => goTo(i)}\r\n * ariaLabel=\"Étapes de création du titre\"\r\n * />\r\n *\r\n * status values: \"current\" | \"active\" | \"completed\" | \"complete\" |\r\n * \"pending\" | \"disabled\"\r\n * (\"current\"/\"active\" and \"completed\"/\"complete\" are accepted as\r\n * synonyms to ease migration from host modules.)\r\n *\r\n * VStepper — vertical history/progression timeline. Each item may carry\r\n * `timestamp` (date/time of the action) and `actor` (the user who did it);\r\n * they render as a muted \"timestamp · actor\" line under the title. `meta`\r\n * still works for free-form text (e.g. \"En cours\" on the active step):\r\n *\r\n * <VStepper items={[\r\n * { status: \"completed\", title: \"Titre d'importation créé\",\r\n * timestamp: \"27/03/2025 09:48\", actor: \"dsmoimp\" },\r\n * { status: \"completed\", title: \"Soumis à la banque (CITIBANK)\",\r\n * timestamp: \"27/03/2025 10:16\", actor: \"Transit Jebli\" },\r\n * { status: \"active\", title: \"En attente de réponse banque\", meta: \"En cours\" },\r\n * ]} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <HStepper labels={{\r\n * nav: \"Form steps\",\r\n * item: (n, label, state) =>\r\n * `Step ${n}: ${label} (${\r\n * state === \"complete\" ? \"completed\" :\r\n * state === \"active\" ? \"in progress\" : \"upcoming\"\r\n * })`,\r\n * }} />\r\n *\r\n * <VStepper labels={{\r\n * nav: \"Step history\",\r\n * state: { complete: \"Completed step.\", active: \"Current step.\", pending: \"Upcoming step.\" },\r\n * }} />\r\n *\r\n * A11y note (R-Ar.1):\r\n * Clickable HStepper steps render as real <button> elements.\r\n * VStepper's per-item title element is host-configurable via\r\n * `titleAs` so the page heading hierarchy stays consistent.\r\n */\r\n\r\nexport type StepState = \"complete\" | \"active\" | \"pending\" | \"disabled\";\r\nexport type StepStatus =\r\n | \"current\"\r\n | \"active\"\r\n | \"completed\"\r\n | \"complete\"\r\n | \"pending\"\r\n | \"disabled\";\r\n\r\nexport interface HStepperRichStep {\r\n id?: string | number | undefined;\r\n label?: React.ReactNode | undefined;\r\n status?: StepStatus | undefined;\r\n}\r\n\r\nexport type HStepperStep = React.ReactNode | HStepperRichStep;\r\n\r\ninterface NormalisedStep {\r\n key: React.Key;\r\n label: React.ReactNode;\r\n state: StepState;\r\n clickable: boolean;\r\n}\r\n\r\nconst DEFAULT_H_LABELS = Object.freeze({\r\n nav: \"Étapes du formulaire\",\r\n item: (n: number, label: React.ReactNode, state: StepState): string => {\r\n const suffix =\r\n state === \"complete\" ? \" (complétée)\" :\r\n state === \"active\" ? \" (en cours)\" :\r\n state === \"disabled\" ? \" (verrouillée)\" : \" (à venir)\";\r\n return `Étape ${n} : ${label}${suffix}`;\r\n },\r\n});\r\n\r\nconst DEFAULT_V_LABELS: {\r\n nav: string;\r\n state: Partial<Record<StepState, string>>;\r\n} = Object.freeze({\r\n nav: \"Historique des étapes\",\r\n state: Object.freeze({\r\n complete: \"Étape complétée. \",\r\n active: \"Étape en cours. \",\r\n pending: \"Étape à venir. \",\r\n /* WCAG 1.4.1 — the fourth state was MISSING. VStepper accepts the same rich\r\n * item shape as HStepper (see normalisedItems below: \"so host modules can pass\r\n * the same array to both steppers\"), and HStepper documents\r\n * `status: \"disabled\"` for wizard steps locked until the previous one is\r\n * submitted. So a disabled step could reach VStepper and render an EMPTY\r\n * sr-only span — its state conveyed by colour alone, which is precisely what\r\n * the comment on that span forbids. No host had to do anything wrong. */\r\n disabled: \"Étape verrouillée. \",\r\n }),\r\n});\r\n\r\nconst dotBaseStyle: React.CSSProperties = {\r\n width: 24,\r\n height: 24,\r\n borderRadius: \"50%\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n flex: \"0 0 auto\",\r\n border: \"2px solid\",\r\n transition:\r\n \"background var(--duration-base, 180ms), color var(--duration-base, 180ms), border-color var(--duration-base, 180ms)\",\r\n};\r\n\r\nconst stateStyle = (state: StepState): React.CSSProperties => {\r\n if (state === \"complete\") {\r\n return { background: \"var(--accent)\", borderColor: \"var(--accent)\", color: \"var(--accent-fg)\" };\r\n }\r\n if (state === \"active\") {\r\n return { background: \"var(--surface)\", borderColor: \"var(--accent)\", color: \"var(--accent)\" };\r\n }\r\n if (state === \"disabled\") {\r\n return { background: \"var(--bg-subtle)\", borderColor: \"var(--border)\", color: \"var(--fg-subtle)\" };\r\n }\r\n return { background: \"var(--surface)\", borderColor: \"var(--border-strong)\", color: \"var(--fg-subtle)\" };\r\n};\r\n\r\ninterface StepInnerProps {\r\n index: number;\r\n label: React.ReactNode;\r\n state: StepState;\r\n}\r\n\r\n// Inner content shared between the clickable <button> and the\r\n// non-interactive <span> renderings of an HStepper step.\r\nfunction StepInner({ index, label, state }: StepInnerProps) {\r\n return (\r\n <>\r\n <span style={{ ...dotBaseStyle, ...stateStyle(state) }}>\r\n {state === \"complete\" ? <CheckIcon fontSize=\"inherit\" /> : index + 1}\r\n </span>\r\n <span\r\n style={{\r\n fontSize: \"var(--text-sm)\",\r\n // Was 650 (non-standard, banned by Batch 1 typography tokens).\r\n // var(--fw-semibold) (600) is the canonical \"emphasised\" weight.\r\n fontWeight: state === \"active\" ? \"var(--fw-semibold)\" : \"var(--fw-medium)\",\r\n color:\r\n state === \"pending\" ? \"var(--fg-subtle)\" :\r\n state === \"disabled\" ? \"var(--fg-muted)\" : \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n >\r\n {label}\r\n </span>\r\n </>\r\n );\r\n}\r\n\r\nconst stepBoxSx = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1,\r\n padding: \"var(--s-1) calc(var(--s-1) + 2px)\",\r\n borderRadius: \"var(--r-md)\",\r\n // Reset native <button> styling to match the previous Box look.\r\n background: \"transparent\",\r\n border: 0,\r\n font: \"inherit\",\r\n textAlign: \"left\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n} satisfies SxProps<Theme>;\r\n\r\n/* Detect whether the `steps` array carries plain labels (legacy)\r\n * or rich {id, label, status} objects. ReactElements (icons,\r\n * fragments) and strings are treated as plain labels.\r\n * Plain boolean predicate (not a type guard): the rich object shape\r\n * for VStepper also carries title/meta/etc., so narrowing to\r\n * HStepperRichStep here would hide those fields. */\r\nfunction isRichStep(s: unknown): boolean {\r\n return (\r\n s != null &&\r\n typeof s === \"object\" &&\r\n !Array.isArray(s) &&\r\n !React.isValidElement(s) &&\r\n (\"label\" in s || \"status\" in s)\r\n );\r\n}\r\n\r\nfunction normaliseStatusToState(status: StepStatus | undefined): StepState {\r\n if (status === \"current\" || status === \"active\") return \"active\";\r\n if (status === \"completed\" || status === \"complete\") return \"complete\";\r\n if (status === \"disabled\") return \"disabled\";\r\n return \"pending\";\r\n}\r\n\r\n/* Convert rich steps to the legacy { label, state, clickable, key }\r\n * shape consumed by the rendering loop. */\r\nfunction normaliseSteps(steps: HStepperStep[], current: number): NormalisedStep[] {\r\n if (steps.length === 0) return [];\r\n if (isRichStep(steps[0])) {\r\n return steps.map((s, i): NormalisedStep => {\r\n const rich = s as HStepperRichStep;\r\n const state = normaliseStatusToState(rich.status);\r\n return {\r\n key: rich.id ?? i,\r\n label: rich.label,\r\n state,\r\n // Disabled steps are never clickable. Other rich states\r\n // remain clickable so the host can offer free navigation.\r\n clickable: state !== \"disabled\",\r\n };\r\n });\r\n }\r\n // Legacy: plain labels driven by `current`.\r\n return steps.map((label, i): NormalisedStep => ({\r\n key: i,\r\n label: label as React.ReactNode,\r\n state: i < current ? \"complete\" : i === current ? \"active\" : \"pending\",\r\n clickable: i <= current,\r\n }));\r\n}\r\n\r\nexport interface HStepperLabels {\r\n nav?: string | undefined;\r\n item?: ((n: number, label: React.ReactNode, state: StepState) => string) | undefined;\r\n}\r\n\r\nexport interface HStepperProps {\r\n /**\r\n * Either an array of plain labels (strings/nodes) driven by\r\n * `current`, or an array of `{ id?, label, status }` objects\r\n * where status carries the per-step state.\r\n */\r\n steps: HStepperStep[];\r\n /** Legacy: index of the active step. Ignored when `steps` are rich objects. */\r\n current?: number | undefined;\r\n /** Click handler. Receives the step index. */\r\n onJump?: ((index: number) => void) | undefined;\r\n /** Alias of `onJump` (some host modules used this name). */\r\n onStepClick?: ((index: number) => void) | undefined;\r\n /** Shortcut for `labels.nav`. */\r\n ariaLabel?: string | undefined;\r\n /** Full i18n override; see file header. */\r\n labels?: HStepperLabels | undefined;\r\n}\r\n\r\nexport function HStepper({\r\n steps,\r\n current = 0,\r\n onJump,\r\n onStepClick,\r\n ariaLabel,\r\n labels,\r\n}: HStepperProps) {\r\n const L = mergeLabels(DEFAULT_H_LABELS, labels);\r\n const navLabel = ariaLabel || L.nav;\r\n const jumpHandler = onJump || onStepClick;\r\n\r\n const normalised = normaliseSteps(steps, current);\r\n\r\n return (\r\n <nav\r\n aria-label={navLabel}\r\n style={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 8,\r\n padding: \"12px 0\",\r\n overflowX: \"auto\",\r\n }}\r\n >\r\n {normalised.map((step, i) => {\r\n const a11yLabel = L.item(i + 1, step.label, step.state);\r\n return (\r\n <React.Fragment key={step.key}>\r\n {step.clickable ? (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n aria-current={step.state === \"active\" ? \"step\" : undefined}\r\n aria-label={a11yLabel}\r\n onClick={() => jumpHandler?.(i)}\r\n sx={{ ...stepBoxSx, cursor: \"pointer\" }}\r\n >\r\n <StepInner index={i} label={step.label} state={step.state} />\r\n </Box>\r\n ) : (\r\n <Box\r\n component=\"span\"\r\n aria-label={a11yLabel}\r\n aria-disabled={step.state === \"disabled\" ? \"true\" : undefined}\r\n sx={{ ...stepBoxSx, cursor: \"default\" }}\r\n >\r\n <StepInner index={i} label={step.label} state={step.state} />\r\n </Box>\r\n )}\r\n {i < normalised.length - 1 && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n flex: 1,\r\n minWidth: 24,\r\n height: 2,\r\n background: step.state === \"complete\" ? \"var(--accent)\" : \"var(--border)\",\r\n borderRadius: 1,\r\n }}\r\n />\r\n )}\r\n </React.Fragment>\r\n );\r\n })}\r\n </nav>\r\n );\r\n}\r\n\r\nexport interface VStepperItem {\r\n state?: StepState | undefined;\r\n status?: StepStatus | undefined;\r\n title?: React.ReactNode | undefined;\r\n label?: React.ReactNode | undefined;\r\n meta?: React.ReactNode | undefined;\r\n timestamp?: React.ReactNode | undefined;\r\n actor?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface VStepperLabels {\r\n nav?: string | undefined;\r\n /**\r\n * SR-only sentence per step state. Widened from the three visible states to the\r\n * full `StepState` union: `disabled` was unreachable for hosts even though\r\n * VStepper accepts disabled items, so its text alternative could not be\r\n * translated (WCAG 1.4.1 + R-Ar.3).\r\n */\r\n state?: Partial<Record<StepState, string>> | undefined;\r\n}\r\n\r\nexport interface VStepperProps {\r\n items: VStepperItem[];\r\n titleAs?: \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"div\" | \"span\" | \"p\" | undefined;\r\n ariaLabel?: string | undefined;\r\n labels?: VStepperLabels | undefined;\r\n}\r\n\r\n/**\r\n * VStepper - vertical historical / progression stepper.\r\n *\r\n * @param items - list of { state|status, title, meta?, timestamp?, actor? }.\r\n * `timestamp` (date/time) + `actor` (user) render as a\r\n * muted \"timestamp · actor\" line under the title; `meta`\r\n * renders on its own line (free-form, e.g. \"En cours\").\r\n * @param titleAs - element used for each step title. Defaults to \"h4\".\r\n * Hosts whose outline already used h2/h3 above the\r\n * stepper should pick the next level (e.g. titleAs=\"h3\"\r\n * after an h2 ActionBar title). Pass \"div\"/\"span\" to\r\n * opt out of heading semantics entirely.\r\n * @param labels - i18n overrides; see file header.\r\n */\r\nexport function VStepper({ items, titleAs = \"h4\", labels, ariaLabel }: VStepperProps) {\r\n /*\r\n * Nested-dictionary merge, both levels through the shared undefined-safe helper\r\n * (gap G-24, fourth instance after Dropzone.reasons and DataGridLabels.\r\n * pagination).\r\n *\r\n * The previous form spread `...labels` at the top level, so an explicitly-passed\r\n * `undefined` on `nav` DELETED the default and left the <ol> without an\r\n * accessible name (R-Ar.5). And the inner `|| {}` guarded the `state` sub-object\r\n * against being undefined without guarding its VALUES — so\r\n * `state: { complete: undefined }` emptied the sr-only span below and reduced the\r\n * step's state to colour alone, defeating the WCAG 1.4.1 rule its own comment\r\n * invokes.\r\n *\r\n * `state` is merged at its OWN level rather than through a recursive deep merge:\r\n * two explicit levels can be read, a recursive helper hides how deep it goes.\r\n * Same convention as _dataGridShared.\r\n */\r\n const L = labels\r\n ? mergeLabels(DEFAULT_V_LABELS, {\r\n ...labels,\r\n state: mergeLabels(DEFAULT_V_LABELS.state, labels.state),\r\n })\r\n : DEFAULT_V_LABELS;\r\n const navLabel = ariaLabel || L.nav;\r\n\r\n /* Accept the same rich-step shape HStepper uses, so host modules\r\n * can pass the same array to both steppers without re-mapping. */\r\n const normalisedItems = items.map((it) => {\r\n if (isRichStep(it) && it.status !== undefined) {\r\n return {\r\n state: normaliseStatusToState(it.status),\r\n title: it.title ?? it.label,\r\n meta: it.meta,\r\n timestamp: it.timestamp,\r\n actor: it.actor,\r\n };\r\n }\r\n return it;\r\n });\r\n\r\n return (\r\n <ol style={{ listStyle: \"none\", padding: 0, margin: 0 }} aria-label={navLabel}>\r\n {normalisedItems.map((it, i) => {\r\n const st: StepState = it.state ?? \"pending\";\r\n return (\r\n <li\r\n key={i}\r\n aria-current={st === \"active\" ? \"step\" : undefined}\r\n style={{\r\n display: \"flex\",\r\n gap: 12,\r\n paddingBottom: i < normalisedItems.length - 1 ? 16 : 0,\r\n position: \"relative\",\r\n }}\r\n >\r\n <span aria-hidden=\"true\" style={{ ...dotBaseStyle, ...stateStyle(st) }}>\r\n {st === \"complete\" ? <CheckIcon fontSize=\"inherit\" /> : i + 1}\r\n </span>\r\n {/* WCAG 1.4.1 - convey state in text, not only colour. */}\r\n <span className=\"pui-sr-only\">{L.state[st]}</span>\r\n <div style={{ flex: 1 }}>\r\n <Box\r\n component={titleAs}\r\n sx={{\r\n margin: 0,\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {it.title}\r\n </Box>\r\n {(it.timestamp != null || it.actor != null) && (\r\n <p\r\n style={{\r\n margin: \"2px 0 0\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {it.timestamp != null ? it.timestamp : null}\r\n {it.timestamp != null && it.actor != null ? \" · \" : null}\r\n {it.actor != null ? (\r\n <span style={{ color: \"var(--fg-muted)\", fontWeight: \"var(--fw-medium)\" }}>\r\n {it.actor}\r\n </span>\r\n ) : null}\r\n </p>\r\n )}\r\n {it.meta != null && it.meta !== \"\" && (\r\n <p\r\n style={{\r\n margin: \"2px 0 0\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {it.meta}\r\n </p>\r\n )}\r\n </div>\r\n {i < normalisedItems.length - 1 && (\r\n <span\r\n aria-hidden=\"true\"\r\n style={{\r\n position: \"absolute\",\r\n left: 11, top: 26, bottom: 0,\r\n width: 2,\r\n background: \"var(--border)\",\r\n }}\r\n />\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ol>\r\n );\r\n}\r\n\r\nexport default HStepper;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,18 +1,3 @@
1
- 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); }
2
- var _excluded = ["component", "tone", "elevation", "radius", "padding", "clip", "sx", "children"];
3
- 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; }
4
- 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; }
5
- 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; }
6
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
- 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); }
8
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
9
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
12
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
13
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
14
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
15
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
16
1
  import * as React from "react";
17
2
  import Box from "@mui/material/Box";
18
3
 
@@ -85,46 +70,41 @@ import Box from "@mui/material/Box";
85
70
  * full-width hero whose padding must shrink on a phone.
86
71
  */
87
72
  import { jsx as _jsx } from "react/jsx-runtime";
88
- var TONE = {
73
+ const TONE = {
89
74
  surface: "var(--surface)",
90
75
  subtle: "var(--bg-subtle)"
91
76
  };
92
- var ELEVATION = {
77
+ const ELEVATION = {
93
78
  none: "none",
94
79
  xs: "var(--shadow-xs)",
95
80
  sm: "var(--shadow-sm)"
96
81
  };
97
- var RADIUS = {
82
+ const RADIUS = {
98
83
  md: "var(--r-md)",
99
84
  lg: "var(--r-lg)"
100
85
  };
101
- var PADDING = {
86
+ const PADDING = {
102
87
  none: "0",
103
88
  compact: "var(--s-3) var(--s-4)",
104
- "default": "var(--s-5)",
89
+ default: "var(--s-5)",
105
90
  responsive: {
106
91
  xs: "var(--s-4)",
107
92
  sm: "var(--s-5)",
108
93
  lg: "var(--s-6)"
109
94
  }
110
95
  };
111
- function Surface(_ref) {
112
- var _ref$component = _ref.component,
113
- component = _ref$component === void 0 ? "div" : _ref$component,
114
- _ref$tone = _ref.tone,
115
- tone = _ref$tone === void 0 ? "surface" : _ref$tone,
116
- _ref$elevation = _ref.elevation,
117
- elevation = _ref$elevation === void 0 ? "none" : _ref$elevation,
118
- _ref$radius = _ref.radius,
119
- radius = _ref$radius === void 0 ? "lg" : _ref$radius,
120
- _ref$padding = _ref.padding,
121
- padding = _ref$padding === void 0 ? "default" : _ref$padding,
122
- _ref$clip = _ref.clip,
123
- clip = _ref$clip === void 0 ? false : _ref$clip,
124
- sx = _ref.sx,
125
- children = _ref.children,
126
- rest = _objectWithoutProperties(_ref, _excluded);
127
- return /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread({
96
+ function Surface({
97
+ component = "div",
98
+ tone = "surface",
99
+ elevation = "none",
100
+ radius = "lg",
101
+ padding = "default",
102
+ clip = false,
103
+ sx,
104
+ children,
105
+ ...rest
106
+ }) {
107
+ return /*#__PURE__*/_jsx(Box, {
128
108
  component: component
129
109
  /*
130
110
  * ARRAY form, not an object spread (gap G-23). `SxProps<Theme>` admits an
@@ -138,7 +118,7 @@ function Surface(_ref) {
138
118
  * `KPICard` already did this correctly; 33 other components in this library
139
119
  * still spread. I wrote three of those before noticing, including this file.
140
120
  */,
141
- sx: [_objectSpread({
121
+ sx: [{
142
122
  background: TONE[tone],
143
123
  border: "1px solid var(--border)",
144
124
  borderRadius: RADIUS[radius],
@@ -147,13 +127,14 @@ function Surface(_ref) {
147
127
  // Guards a card whose child is a wide table or a long unbroken string:
148
128
  // without it the flex/grid parent refuses to shrink and the page gains a
149
129
  // horizontal scrollbar (WCAG 1.4.10 Reflow).
150
- minWidth: 0
151
- }, clip ? {
152
- overflow: "hidden"
153
- } : null)].concat(_toConsumableArray(Array.isArray(sx) ? sx : sx ? [sx] : []))
154
- }, rest), {}, {
130
+ minWidth: 0,
131
+ ...(clip ? {
132
+ overflow: "hidden"
133
+ } : null)
134
+ }, ...(Array.isArray(sx) ? sx : sx ? [sx] : [])],
135
+ ...rest,
155
136
  children: children
156
- }));
137
+ });
157
138
  }
158
139
  export default Surface;
159
140
  //# sourceMappingURL=Surface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Surface.js","names":["React","Box","jsx","_jsx","TONE","surface","subtle","ELEVATION","none","xs","sm","RADIUS","md","lg","PADDING","compact","responsive","Surface","_ref","_ref$component","component","_ref$tone","tone","_ref$elevation","elevation","_ref$radius","radius","_ref$padding","padding","_ref$clip","clip","sx","children","rest","_objectWithoutProperties","_excluded","_objectSpread","background","border","borderRadius","boxShadow","minWidth","overflow","concat","_toConsumableArray","Array","isArray"],"sources":["../../../../src/lib/v2/components/Surface.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Surface — Portnet UI v2\r\n *\r\n * The bare card container. Charter §02.4 assigns `-r-lg` to « Cards, datagrid »\r\n * and §02.5 assigns `--shadow-xs` to « Inputs, KPI cards » / `--shadow-sm` to\r\n * « Default cards » — so the charter defines a card, in tokens, precisely.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-10)\r\n *\r\n * The card recipe existed in the library, but only WELDED INSIDE `FormSection`,\r\n * which also imposes a numbered heading, a description slot and an inner\r\n * `FormGrid`. A consumer needing just the container — a DataGrid shell, a hero\r\n * card, a sticky side rail, a nested file row — could not reach it and wrote the\r\n * four-line recipe again. In addpe-fe alone: `DATAGRID_CARD_SX`, `HERO_CARD_SX`,\r\n * `LIFECYCLE_CARD_SX`, and a document-card block repeated in three files.\r\n *\r\n * That is the failure mode a design system exists to prevent, and it is worse\r\n * than plain duplication: each copy picked its own elevation and its own radius\r\n * from memory, so cards that should be visually identical drifted apart within a\r\n * single page — and a charter change to `--shadow-sm` or `-r-lg` would have to\r\n * be chased across every module by hand.\r\n *\r\n * The variant axes below are DERIVED from those observed copies, not invented:\r\n * each one is a difference that really existed between two of them.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * // DataGrid shell — the grid owns its own padding, and `clip` makes the\r\n * // rounded corner cut the table's first/last row borders.\r\n * <Surface padding=\"none\" elevation=\"xs\" clip>\r\n * <DataGrid … />\r\n * </Surface>\r\n *\r\n * // Detail hero — responsive padding ladder, default card elevation.\r\n * <Surface padding=\"responsive\" elevation=\"sm\">…</Surface>\r\n *\r\n * // Nested inset block (attached file, document row) — subtle tone, the\r\n * // smaller radius the charter assigns to inner blocks.\r\n * <Surface tone=\"subtle\" radius=\"md\" padding=\"compact\">…</Surface>\r\n *\r\n * Composition, not configuration: `Surface` deliberately has NO title, NO\r\n * actions and NO header. A titled section is `FormSection`; a metric tile is\r\n * `KPICard`; an attached file is `FileCard`. Those compose this. If you find\r\n * yourself wanting a `title` prop here, you want one of them instead.\r\n */\r\n\r\n/** Background token. `subtle` is for a block INSET INTO an existing surface. */\r\nexport type SurfaceTone = \"surface\" | \"subtle\";\r\n\r\n/**\r\n * Elevation, restricted to the two card levels of Charter §02.5.\r\n * `md` / `lg` are reserved for popovers and modals and are not offered here —\r\n * a card that needs them is a `Modal` or a `Drawer`.\r\n */\r\nexport type SurfaceElevation = \"none\" | \"xs\" | \"sm\";\r\n\r\n/**\r\n * Corner radius. `lg` = a card (charter §02.4 « Cards, datagrid »); `md` = a\r\n * block nested inside another surface, which reads wrong at the card radius.\r\n */\r\nexport type SurfaceRadius = \"md\" | \"lg\";\r\n\r\n/**\r\n * Inner padding.\r\n * none — the child owns it (DataGrid, a nested grid, a table).\r\n * compact — a single-row block. Asymmetric on purpose: a one-line row\r\n * needs more horizontal than vertical breathing space.\r\n * default — charter §2.3 « Padding card body » (--s-5).\r\n * responsive — the page-level ladder, aligned with `PageContent`'s, for a\r\n * full-width hero whose padding must shrink on a phone.\r\n */\r\nexport type SurfacePadding = \"none\" | \"compact\" | \"default\" | \"responsive\";\r\n\r\nconst TONE: Record<SurfaceTone, string> = {\r\n surface: \"var(--surface)\",\r\n subtle: \"var(--bg-subtle)\",\r\n};\r\n\r\nconst ELEVATION: Record<SurfaceElevation, string> = {\r\n none: \"none\",\r\n xs: \"var(--shadow-xs)\",\r\n sm: \"var(--shadow-sm)\",\r\n};\r\n\r\nconst RADIUS: Record<SurfaceRadius, string> = {\r\n md: \"var(--r-md)\",\r\n lg: \"var(--r-lg)\",\r\n};\r\n\r\ntype PaddingValue = string | Record<string, string>;\r\n\r\nconst PADDING: Record<SurfacePadding, PaddingValue> = {\r\n none: \"0\",\r\n compact: \"var(--s-3) var(--s-4)\",\r\n default: \"var(--s-5)\",\r\n responsive: { xs: \"var(--s-4)\", sm: \"var(--s-5)\", lg: \"var(--s-6)\" },\r\n};\r\n\r\nexport interface SurfaceProps\r\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\r\n /** Rendered element. @default \"div\" */\r\n component?: React.ElementType | undefined;\r\n /** @default \"surface\" */\r\n tone?: SurfaceTone | undefined;\r\n /** @default \"none\" */\r\n elevation?: SurfaceElevation | undefined;\r\n /** @default \"lg\" */\r\n radius?: SurfaceRadius | undefined;\r\n /** @default \"default\" */\r\n padding?: SurfacePadding | undefined;\r\n /**\r\n * `overflow: hidden`, so the rounded corner CLIPS a child that draws its own\r\n * edges — a DataGrid's sticky header and row borders, most commonly. Without\r\n * it the table's square corners poke through the card's radius.\r\n * @default false\r\n */\r\n clip?: boolean | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction Surface({\r\n component = \"div\",\r\n tone = \"surface\",\r\n elevation = \"none\",\r\n radius = \"lg\",\r\n padding = \"default\",\r\n clip = false,\r\n sx,\r\n children,\r\n ...rest\r\n}: SurfaceProps) {\r\n return (\r\n <Box\r\n component={component}\r\n /*\r\n * ARRAY form, not an object spread (gap G-23). `SxProps<Theme>` admits an\r\n * object, an ARRAY or a FUNCTION, and spreading the last two destroys them\r\n * silently: `{...[a, b]}` yields `{0: a, 1: b}` and `{...fn}` yields `{}`.\r\n * So a host using MUI's own standard idiom —\r\n * `sx={[base, condition && override]}` — would lose every style, with no\r\n * error. The array form is what MUI documents for composition, and it\r\n * handles all three shapes plus null/undefined (falsy entries are ignored).\r\n *\r\n * `KPICard` already did this correctly; 33 other components in this library\r\n * still spread. I wrote three of those before noticing, including this file.\r\n */\r\n sx={[\r\n {\r\n background: TONE[tone],\r\n border: \"1px solid var(--border)\",\r\n borderRadius: RADIUS[radius],\r\n boxShadow: ELEVATION[elevation],\r\n padding: PADDING[padding],\r\n // Guards a card whose child is a wide table or a long unbroken string:\r\n // without it the flex/grid parent refuses to shrink and the page gains a\r\n // horizontal scrollbar (WCAG 1.4.10 Reflow).\r\n minWidth: 0,\r\n ...(clip ? { overflow: \"hidden\" } : null),\r\n },\r\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\r\n ]}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Surface;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Surface.js","names":["React","Box","jsx","_jsx","TONE","surface","subtle","ELEVATION","none","xs","sm","RADIUS","md","lg","PADDING","compact","default","responsive","Surface","component","tone","elevation","radius","padding","clip","sx","children","rest","background","border","borderRadius","boxShadow","minWidth","overflow","Array","isArray"],"sources":["../../../../src/lib/v2/components/Surface.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Surface — Portnet UI v2\r\n *\r\n * The bare card container. Charter §02.4 assigns `-r-lg` to « Cards, datagrid »\r\n * and §02.5 assigns `--shadow-xs` to « Inputs, KPI cards » / `--shadow-sm` to\r\n * « Default cards » — so the charter defines a card, in tokens, precisely.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-10)\r\n *\r\n * The card recipe existed in the library, but only WELDED INSIDE `FormSection`,\r\n * which also imposes a numbered heading, a description slot and an inner\r\n * `FormGrid`. A consumer needing just the container — a DataGrid shell, a hero\r\n * card, a sticky side rail, a nested file row — could not reach it and wrote the\r\n * four-line recipe again. In addpe-fe alone: `DATAGRID_CARD_SX`, `HERO_CARD_SX`,\r\n * `LIFECYCLE_CARD_SX`, and a document-card block repeated in three files.\r\n *\r\n * That is the failure mode a design system exists to prevent, and it is worse\r\n * than plain duplication: each copy picked its own elevation and its own radius\r\n * from memory, so cards that should be visually identical drifted apart within a\r\n * single page — and a charter change to `--shadow-sm` or `-r-lg` would have to\r\n * be chased across every module by hand.\r\n *\r\n * The variant axes below are DERIVED from those observed copies, not invented:\r\n * each one is a difference that really existed between two of them.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * // DataGrid shell — the grid owns its own padding, and `clip` makes the\r\n * // rounded corner cut the table's first/last row borders.\r\n * <Surface padding=\"none\" elevation=\"xs\" clip>\r\n * <DataGrid … />\r\n * </Surface>\r\n *\r\n * // Detail hero — responsive padding ladder, default card elevation.\r\n * <Surface padding=\"responsive\" elevation=\"sm\">…</Surface>\r\n *\r\n * // Nested inset block (attached file, document row) — subtle tone, the\r\n * // smaller radius the charter assigns to inner blocks.\r\n * <Surface tone=\"subtle\" radius=\"md\" padding=\"compact\">…</Surface>\r\n *\r\n * Composition, not configuration: `Surface` deliberately has NO title, NO\r\n * actions and NO header. A titled section is `FormSection`; a metric tile is\r\n * `KPICard`; an attached file is `FileCard`. Those compose this. If you find\r\n * yourself wanting a `title` prop here, you want one of them instead.\r\n */\r\n\r\n/** Background token. `subtle` is for a block INSET INTO an existing surface. */\r\nexport type SurfaceTone = \"surface\" | \"subtle\";\r\n\r\n/**\r\n * Elevation, restricted to the two card levels of Charter §02.5.\r\n * `md` / `lg` are reserved for popovers and modals and are not offered here —\r\n * a card that needs them is a `Modal` or a `Drawer`.\r\n */\r\nexport type SurfaceElevation = \"none\" | \"xs\" | \"sm\";\r\n\r\n/**\r\n * Corner radius. `lg` = a card (charter §02.4 « Cards, datagrid »); `md` = a\r\n * block nested inside another surface, which reads wrong at the card radius.\r\n */\r\nexport type SurfaceRadius = \"md\" | \"lg\";\r\n\r\n/**\r\n * Inner padding.\r\n * none — the child owns it (DataGrid, a nested grid, a table).\r\n * compact — a single-row block. Asymmetric on purpose: a one-line row\r\n * needs more horizontal than vertical breathing space.\r\n * default — charter §2.3 « Padding card body » (--s-5).\r\n * responsive — the page-level ladder, aligned with `PageContent`'s, for a\r\n * full-width hero whose padding must shrink on a phone.\r\n */\r\nexport type SurfacePadding = \"none\" | \"compact\" | \"default\" | \"responsive\";\r\n\r\nconst TONE: Record<SurfaceTone, string> = {\r\n surface: \"var(--surface)\",\r\n subtle: \"var(--bg-subtle)\",\r\n};\r\n\r\nconst ELEVATION: Record<SurfaceElevation, string> = {\r\n none: \"none\",\r\n xs: \"var(--shadow-xs)\",\r\n sm: \"var(--shadow-sm)\",\r\n};\r\n\r\nconst RADIUS: Record<SurfaceRadius, string> = {\r\n md: \"var(--r-md)\",\r\n lg: \"var(--r-lg)\",\r\n};\r\n\r\ntype PaddingValue = string | Record<string, string>;\r\n\r\nconst PADDING: Record<SurfacePadding, PaddingValue> = {\r\n none: \"0\",\r\n compact: \"var(--s-3) var(--s-4)\",\r\n default: \"var(--s-5)\",\r\n responsive: { xs: \"var(--s-4)\", sm: \"var(--s-5)\", lg: \"var(--s-6)\" },\r\n};\r\n\r\nexport interface SurfaceProps\r\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\r\n /** Rendered element. @default \"div\" */\r\n component?: React.ElementType | undefined;\r\n /** @default \"surface\" */\r\n tone?: SurfaceTone | undefined;\r\n /** @default \"none\" */\r\n elevation?: SurfaceElevation | undefined;\r\n /** @default \"lg\" */\r\n radius?: SurfaceRadius | undefined;\r\n /** @default \"default\" */\r\n padding?: SurfacePadding | undefined;\r\n /**\r\n * `overflow: hidden`, so the rounded corner CLIPS a child that draws its own\r\n * edges — a DataGrid's sticky header and row borders, most commonly. Without\r\n * it the table's square corners poke through the card's radius.\r\n * @default false\r\n */\r\n clip?: boolean | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction Surface({\r\n component = \"div\",\r\n tone = \"surface\",\r\n elevation = \"none\",\r\n radius = \"lg\",\r\n padding = \"default\",\r\n clip = false,\r\n sx,\r\n children,\r\n ...rest\r\n}: SurfaceProps) {\r\n return (\r\n <Box\r\n component={component}\r\n /*\r\n * ARRAY form, not an object spread (gap G-23). `SxProps<Theme>` admits an\r\n * object, an ARRAY or a FUNCTION, and spreading the last two destroys them\r\n * silently: `{...[a, b]}` yields `{0: a, 1: b}` and `{...fn}` yields `{}`.\r\n * So a host using MUI's own standard idiom —\r\n * `sx={[base, condition && override]}` — would lose every style, with no\r\n * error. The array form is what MUI documents for composition, and it\r\n * handles all three shapes plus null/undefined (falsy entries are ignored).\r\n *\r\n * `KPICard` already did this correctly; 33 other components in this library\r\n * still spread. I wrote three of those before noticing, including this file.\r\n */\r\n sx={[\r\n {\r\n background: TONE[tone],\r\n border: \"1px solid var(--border)\",\r\n borderRadius: RADIUS[radius],\r\n boxShadow: ELEVATION[elevation],\r\n padding: PADDING[padding],\r\n // Guards a card whose child is a wide table or a long unbroken string:\r\n // without it the flex/grid parent refuses to shrink and the page gains a\r\n // horizontal scrollbar (WCAG 1.4.10 Reflow).\r\n minWidth: 0,\r\n ...(clip ? { overflow: \"hidden\" } : null),\r\n },\r\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\r\n ]}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Surface;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;;AAGnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAGA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARA,SAAAC,GAAA,IAAAC,IAAA;AAWA,MAAMC,IAAiC,GAAG;EACxCC,OAAO,EAAE,gBAAgB;EACzBC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,SAA2C,GAAG;EAClDC,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,kBAAkB;EACtBC,EAAE,EAAE;AACN,CAAC;AAED,MAAMC,MAAqC,GAAG;EAC5CC,EAAE,EAAE,aAAa;EACjBC,EAAE,EAAE;AACN,CAAC;AAID,MAAMC,OAA6C,GAAG;EACpDN,IAAI,EAAE,GAAG;EACTO,OAAO,EAAE,uBAAuB;EAChCC,OAAO,EAAE,YAAY;EACrBC,UAAU,EAAE;IAAER,EAAE,EAAE,YAAY;IAAEC,EAAE,EAAE,YAAY;IAAEG,EAAE,EAAE;EAAa;AACrE,CAAC;AAyBD,SAASK,OAAOA,CAAC;EACfC,SAAS,GAAG,KAAK;EACjBC,IAAI,GAAG,SAAS;EAChBC,SAAS,GAAG,MAAM;EAClBC,MAAM,GAAG,IAAI;EACbC,OAAO,GAAG,SAAS;EACnBC,IAAI,GAAG,KAAK;EACZC,EAAE;EACFC,QAAQ;EACR,GAAGC;AACS,CAAC,EAAE;EACf,oBACExB,IAAA,CAACF,GAAG;IACFkB,SAAS,EAAEA;IACX;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAXM;IAYAM,EAAE,EAAE,CACF;MACEG,UAAU,EAAExB,IAAI,CAACgB,IAAI,CAAC;MACtBS,MAAM,EAAE,yBAAyB;MACjCC,YAAY,EAAEnB,MAAM,CAACW,MAAM,CAAC;MAC5BS,SAAS,EAAExB,SAAS,CAACc,SAAS,CAAC;MAC/BE,OAAO,EAAET,OAAO,CAACS,OAAO,CAAC;MACzB;MACA;MACA;MACAS,QAAQ,EAAE,CAAC;MACX,IAAIR,IAAI,GAAG;QAAES,QAAQ,EAAE;MAAS,CAAC,GAAG,IAAI;IAC1C,CAAC,EACD,IAAIC,KAAK,CAACC,OAAO,CAACV,EAAE,CAAC,GAAGA,EAAE,GAAGA,EAAE,GAAG,CAACA,EAAE,CAAC,GAAG,EAAE,CAAC,CAC5C;IAAA,GACEE,IAAI;IAAAD,QAAA,EAEPA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeR,OAAO","ignoreList":[]}