@portnet/ui 6.0.2 → 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 (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -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 -38
  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 +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  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 +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  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 -21
  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 +81 -86
  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 +155 -59
  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 +37 -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 +2 -3
  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 +15 -17
  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 +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  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 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  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 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  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 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  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 +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  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 +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  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 +152 -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 +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBar.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_Typography","_IconButton","_ArrowBack","_ChevronRight","_Home","_useMediaQuery","_styles","_Button","_OverflowMenu","_tokens","_mergeLabels","_jsxRuntime","_excluded","_excluded2","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_objectWithoutProperties","source","excluded","target","_objectWithoutPropertiesLoose","i","getOwnPropertySymbols","sourceSymbolKeys","length","indexOf","propertyIsEnumerable","sourceKeys","keys","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e2","f","TypeError","normalCompletion","didErr","err","step","next","_e3","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","iter","from","_arrayLikeToArray","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","toString","slice","constructor","name","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","push","ownKeys","object","enumerableOnly","symbols","filter","sym","enumerable","apply","_objectSpread","arguments","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","Number","DEFAULT_LABELS","freeze","back","breadcrumb","home","expandCrumbs","CRUMB_LINK_BASE_SX","display","alignItems","gap","textDecoration","cursor","borderRadius","padding","margin","background","outline","outlineOffset","CRUMB_ELLIPSIS_SX","border","font","fontSize","lineHeight","isStructuredCrumb","entry","isValidElement","getCrumbColor","isLast","useAccent","renderCrumbContent","baseColor","baseFontWeight","jsx","component","sx","color","fontWeight","children","label","icon","onClick","href","ariaLabel","computedAria","jsxs","type","ActionBar","_ref","title","subtitle","primary","_ref$secondary","secondary","_ref$overflow","overflow","_ref$maxVisible","maxVisible","meta","_ref$sticky","sticky","_ref$surface","surface","_ref$collapseAfter","collapseAfter","labels","L","mergeLabels","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","_React$useState","useState","_React$useState2","crumbsExpanded","setCrumbsExpanded","effectiveBreadcrumb","useMemo","base","homeItem","concat","shouldCollapse","Math","max","orderedAll","list","_slot","_iterator","_step","_iterator2","_step2","visibleActions","hiddenActions","visiblePrimary","a","visibleOthers","hasNavRow","accentOrFgMuted","accentOrFg","resolveVariant","action","variant","renderButton","actionIcon","iconRight","disabled","loading","_variant","rest","size","lastCrumbIndex","chevron","transform","renderCrumbItems","map","b","first","last","borderBottom","xs","sm","lg","position","top","zIndex","marginBottom","minWidth","listStyle","flexWrap","justifyContent","flex","whiteSpace","textOverflow","width","flexShrink","actions","_ref2","WebkitBoxOrient","WebkitLineClamp","marginTop","_default","exports"],"sources":["../../../src/lib/v2/patterns/ActionBar.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport HomeIcon from \"@mui/icons-material/Home\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport type { ButtonProps } from \"../components/Button\";\r\nimport OverflowMenu from \"../components/OverflowMenu\";\r\nimport { zIndex } from \"../tokens\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ActionBar - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 — render order (left → right):\r\n *\r\n * [ghost/secondary…] [primary] […overflow]\r\n *\r\n * Slot-based variant resolution:\r\n * slot=\"primary\" → Button variant=\"primary\"\r\n * slot=\"secondary\" → Button variant={action.variant || \"secondary\"}\r\n * slot=\"overflow\" → Button variant={action.variant || \"ghost\"}\r\n *\r\n * maxVisible (default 2):\r\n * orderedAll = [primary, ...secondary, ...overflow]\r\n * first maxVisible → visible buttons / rest → \"…\"\r\n *\r\n * Breadcrumb collapse (R-RS.5):\r\n * Below the `sm` breakpoint TOKEN (< 481px) a long trail used to\r\n * flex-wrap onto several lines, pushing the page title down. When the\r\n * trail has more than `collapseAfter` crumbs (default 3) the middle is\r\n * collapsed to a single \"…\" toggle that shows [first] › … › [last];\r\n * pressing it expands the full trail in place. Desktop always renders\r\n * the full trail. Keeps the nav to one line on phones (WCAG 1.4.10\r\n * Reflow) without hiding navigation from AT — the toggle is a real\r\n * button with an accessible name.\r\n *\r\n * ── `surface` DEFAULTS TO false — A PAGE HEADER IS NOT A CARD ────────\r\n *\r\n * The platform rule is that a page header sits on the page background, never\r\n * on a white card. This default used to be `true`, which meant every call site\r\n * that did not opt out rendered a --surface card with a bottom border — making\r\n * the exception the norm across the GU modules.\r\n *\r\n * Note that `surface` drives TWO things, because `useAccent` is derived from\r\n * it: the background/border AND the colour of the title, icon, back-arrow and\r\n * crumb trail (--accent when non-surface, --fg / --fg-subtle when surfaced).\r\n * They are deliberately coupled — an accent title on a white card reads as a\r\n * link, and a near-black title on the page background loses the visual anchor\r\n * the header needs. Decoupling them would need a separate prop and a design\r\n * decision, not a default change.\r\n *\r\n * Pass surface={true} to opt back in to the card treatment where a header is\r\n * genuinely nested inside a panel rather than heading a page.\r\n *\r\n * ── Subtitle visibility (S-01) ───────────────────────────────────────\r\n *\r\n * The subtitle renders at EVERY breakpoint. It used to be hidden below the `sm`\r\n * token via `display: none`, which made every consuming module fail the\r\n * mandatory \"Never omit subtitles\" pattern on phones — and removed the text from\r\n * the accessibility tree, not just from the layout. On `xs` it is now bounded to\r\n * two lines with a line-clamp instead; `sm` and above are unchanged. See the\r\n * inline note at the render site for the full rationale.\r\n */\r\n\r\n/** Variant union, derived from Button (single source of truth). */\r\ntype ActionVariant = NonNullable<ButtonProps[\"variant\"]>;\r\n\r\n/** Structured breadcrumb entry (as opposed to a plain renderable node). */\r\nexport interface BreadcrumbItem {\r\n label?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n href?: string | undefined;\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\n/** A breadcrumb entry is either a plain node or a structured item. */\r\nexport type CrumbEntry = React.ReactNode | BreadcrumbItem;\r\n\r\n/** Action descriptor for primary / secondary / overflow slots. */\r\nexport interface ActionBarAction {\r\n label?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n iconRight?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n disabled?: boolean | undefined;\r\n loading?: boolean | undefined;\r\n variant?: ActionVariant | undefined;\r\n /** Overflow-only (surfaced when the action falls into the OverflowMenu). */\r\n shortcut?: React.ReactNode | undefined;\r\n danger?: boolean | undefined;\r\n divider?: boolean | undefined;\r\n /**\r\n * ARIA attributes, forwarded verbatim to the rendered `<Button>`.\r\n *\r\n * `renderButton` destructures the known fields above and spreads the\r\n * REMAINDER onto the Button (`{...rest}`), so any `aria-*` key a host supplies\r\n * already reaches the DOM at runtime. This pattern index signature declares\r\n * that contract, which was previously implemented but undeclared — forcing\r\n * strict-mode consumers to either drop the attribute (losing the behaviour) or\r\n * assert their way past the type.\r\n *\r\n * Primary use case: `aria-keyshortcuts` on a page's create CTA, so screen\r\n * reader users discover a keyboard shortcut on focus (WCAG 2.1.4).\r\n */\r\n [ariaAttribute: `aria-${string}`]: string | undefined;\r\n}\r\n\r\ntype SlotName = \"primary\" | \"secondary\" | \"overflow\";\r\ntype SlottedAction = ActionBarAction & { _slot: SlotName };\r\n\r\nexport interface ActionBarLabels {\r\n back?: string | undefined;\r\n breadcrumb?: string | undefined;\r\n home?: string | undefined;\r\n expandCrumbs?: string | undefined;\r\n}\r\n\r\nexport interface ActionBarProps {\r\n /** Home crumb: a callback (onClick) or an href string. */\r\n home?: string | (() => void) | undefined;\r\n /** Back-arrow callback (top-bar). */\r\n back?: (() => void) | undefined;\r\n breadcrumb?: CrumbEntry[] | undefined;\r\n title: React.ReactNode;\r\n subtitle?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n primary?: ActionBarAction | undefined;\r\n secondary?: ActionBarAction[] | undefined;\r\n overflow?: ActionBarAction[] | undefined;\r\n /** Number of actions shown before the rest collapse into the menu. @default 2 */\r\n maxVisible?: number | undefined;\r\n meta?: React.ReactNode | undefined;\r\n sticky?: boolean | undefined;\r\n /**\r\n * Render the header as a raised white card instead of on the page\r\n * background.\r\n *\r\n * @default false — a page header sits on the background (platform rule).\r\n *\r\n * Also governs text colour: when false, the title, icon, back-arrow and\r\n * crumbs render in --accent; when true they render in --fg / --fg-subtle.\r\n * See the note in the module docstring for why the two are coupled.\r\n *\r\n * Pass true only where the header genuinely heads a panel rather than a page.\r\n */\r\n surface?: boolean | undefined;\r\n /** Collapse the breadcrumb middle on mobile past this many crumbs. @default 3 */\r\n collapseAfter?: number | undefined;\r\n labels?: ActionBarLabels | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n back: \"Retour\",\r\n breadcrumb: \"Fil d'Ariane\",\r\n home: \"Accueil\",\r\n expandCrumbs: \"Afficher le chemin complet\",\r\n});\r\n\r\nconst CRUMB_LINK_BASE_SX = Object.freeze({\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n textDecoration: \"none\",\r\n cursor: \"pointer\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"2px 4px\",\r\n margin: \"-2px -4px\",\r\n \"&:hover\": { background: \"var(--bg-hover)\" },\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset-inset, 0)\" },\r\n});\r\n\r\nconst CRUMB_ELLIPSIS_SX = Object.freeze({\r\n ...CRUMB_LINK_BASE_SX,\r\n background: \"none\",\r\n border: \"none\",\r\n font: \"inherit\",\r\n fontSize: \"var(--text-xs)\",\r\n lineHeight: 1,\r\n});\r\n\r\nfunction isStructuredCrumb(entry: CrumbEntry): entry is BreadcrumbItem {\r\n return entry != null && typeof entry === \"object\" && !React.isValidElement(entry);\r\n}\r\n\r\nfunction getCrumbColor(isLast: boolean, useAccent: boolean): string {\r\n if (useAccent) return \"var(--accent)\";\r\n return isLast ? \"var(--fg)\" : \"var(--fg-subtle)\";\r\n}\r\n\r\nfunction renderCrumbContent(entry: CrumbEntry, isLast: boolean, useAccent: boolean) {\r\n const baseColor = getCrumbColor(isLast, useAccent);\r\n const baseFontWeight = isLast ? \"var(--fw-semibold)\" : \"var(--fw-regular)\";\r\n\r\n if (!isStructuredCrumb(entry)) {\r\n return (\r\n <Box component=\"span\" aria-current={isLast ? \"page\" : undefined}\r\n sx={{ color: baseColor, fontWeight: baseFontWeight }}>\r\n {entry}\r\n </Box>\r\n );\r\n }\r\n\r\n const { label, icon, onClick, href, ariaLabel } = entry;\r\n const computedAria = ariaLabel || (typeof label === \"string\" ? label : undefined);\r\n\r\n if (isLast) {\r\n return (\r\n <Box component=\"span\" aria-current=\"page\"\r\n sx={{ color: baseColor, fontWeight: baseFontWeight, display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n if (href) {\r\n return (\r\n <Box component=\"a\" href={href} onClick={onClick} aria-label={computedAria}\r\n sx={{ ...CRUMB_LINK_BASE_SX, color: baseColor }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n if (onClick) {\r\n return (\r\n <Box component=\"button\" type=\"button\" onClick={onClick} aria-label={computedAria}\r\n sx={{ ...CRUMB_LINK_BASE_SX, color: baseColor, background: \"none\", border: \"none\", font: \"inherit\", fontSize: \"var(--text-xs)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box component=\"span\"\r\n sx={{ color: baseColor, fontWeight: baseFontWeight, display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n}\r\n\r\nfunction ActionBar({\r\n home,\r\n back,\r\n breadcrumb,\r\n title,\r\n subtitle,\r\n icon,\r\n primary,\r\n secondary = [],\r\n overflow = [],\r\n maxVisible = 2,\r\n meta,\r\n sticky = true,\r\n /*\r\n * DEFAULT FLIPPED TO false. A page header sits on the page background, never\r\n * on a white card — see the note in the module docstring. Opt back in with\r\n * surface={true} for a header that heads a panel rather than a page.\r\n */\r\n surface = false,\r\n collapseAfter = 3,\r\n labels,\r\n}: ActionBarProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // R-RS.5 — collapse the middle of a long breadcrumb on mobile (< sm\r\n // token, 481px). Reads the live theme so a host breakpoint override is\r\n // honoured. `crumbsExpanded` lets the user reveal the full trail in place.\r\n const theme = useTheme();\r\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const [crumbsExpanded, setCrumbsExpanded] = React.useState(false);\r\n\r\n const effectiveBreadcrumb = React.useMemo<CrumbEntry[]>(() => {\r\n const base = breadcrumb || [];\r\n if (!home) return base;\r\n const homeItem: BreadcrumbItem = {\r\n icon: <HomeIcon fontSize=\"small\" />,\r\n ariaLabel: L.home,\r\n ...(typeof home === \"function\" ? { onClick: home } : { href: home }),\r\n };\r\n return [homeItem, ...base];\r\n }, [home, breadcrumb, L.home]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Decide whether to collapse: only on mobile, only when the trail is\r\n // longer than collapseAfter, and only while not user-expanded.\r\n const shouldCollapse =\r\n isMobile &&\r\n !crumbsExpanded &&\r\n effectiveBreadcrumb.length > Math.max(2, collapseAfter);\r\n\r\n const orderedAll = React.useMemo<SlottedAction[]>(() => {\r\n const list: SlottedAction[] = [];\r\n if (primary) list.push({ ...primary, _slot: \"primary\" });\r\n for (const s of (secondary || [])) list.push({ ...s, _slot: \"secondary\" });\r\n for (const o of (overflow || [])) list.push({ ...o, _slot: \"overflow\" });\r\n return list;\r\n }, [primary, secondary, overflow]);\r\n\r\n const visibleActions = orderedAll.slice(0, maxVisible);\r\n const hiddenActions = orderedAll.slice(maxVisible);\r\n\r\n const visiblePrimary = visibleActions.filter((a) => a._slot === \"primary\");\r\n const visibleOthers = visibleActions.filter((a) => a._slot !== \"primary\");\r\n\r\n const hasNavRow = !!(back || effectiveBreadcrumb.length > 0);\r\n const useAccent = !surface;\r\n const accentOrFgMuted = useAccent ? \"var(--accent)\" : \"var(--fg-muted)\";\r\n const accentOrFg = useAccent ? \"var(--accent)\" : \"var(--fg)\";\r\n\r\n function resolveVariant(action: SlottedAction): ActionVariant {\r\n if (action._slot === \"primary\") return \"primary\";\r\n if (action._slot === \"overflow\") return action.variant || \"ghost\";\r\n return action.variant || \"secondary\";\r\n }\r\n\r\n function renderButton(action: SlottedAction, i: React.Key) {\r\n const { _slot, label, icon: actionIcon, iconRight, onClick, disabled, loading, variant: _variant, ...rest } = action;\r\n return (\r\n <Button key={i} variant={resolveVariant(action)} size=\"sm\"\r\n icon={actionIcon} iconRight={iconRight}\r\n onClick={onClick} disabled={disabled} {...rest}\r\n {...(loading !== undefined ? { loading } : {})}>\r\n {label}\r\n </Button>\r\n );\r\n }\r\n\r\n const lastCrumbIndex = effectiveBreadcrumb.length - 1;\r\n const chevron = (\r\n <ChevronRightIcon aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\", transform: \"scaleX(var(--pui-rtl-flip, 1))\" }} />\r\n );\r\n\r\n /* Render either the full trail or the collapsed [first] › … › [last].\r\n * Each branch returns an array of <li> rows so the <ol> stays valid. */\r\n function renderCrumbItems() {\r\n if (!shouldCollapse) {\r\n return effectiveBreadcrumb.map((b, i) => {\r\n const isLast = i === lastCrumbIndex;\r\n return (\r\n <Box component=\"li\" key={i} sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(b, isLast, useAccent)}\r\n {!isLast && chevron}\r\n </Box>\r\n );\r\n });\r\n }\r\n\r\n // Collapsed: first crumb, an expand toggle, then the last crumb.\r\n const first = effectiveBreadcrumb[0];\r\n const last = effectiveBreadcrumb[lastCrumbIndex];\r\n return [\r\n <Box component=\"li\" key=\"first\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(first, false, useAccent)}\r\n {chevron}\r\n </Box>,\r\n <Box component=\"li\" key=\"ellipsis\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n <Box component=\"button\" type=\"button\"\r\n onClick={() => setCrumbsExpanded(true)}\r\n aria-label={L.expandCrumbs} aria-expanded=\"false\"\r\n sx={{ ...CRUMB_ELLIPSIS_SX, color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\" }}>\r\n …\r\n </Box>\r\n {chevron}\r\n </Box>,\r\n <Box component=\"li\" key=\"last\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(last, true, useAccent)}\r\n </Box>,\r\n ];\r\n }\r\n\r\n return (\r\n <Box\r\n sx={{\r\n background: surface ? \"var(--surface)\" : \"var(--bg)\",\r\n borderBottom: surface ? \"1px solid var(--border)\" : \"none\",\r\n padding: { xs: \"var(--s-3)\", sm: \"var(--s-3) var(--s-4)\", lg: \"var(--s-3) var(--s-6)\" },\r\n position: sticky ? \"sticky\" : \"static\",\r\n top: 0,\r\n zIndex: zIndex.sticky,\r\n }}\r\n >\r\n {/* Breadcrumb / back row */}\r\n {hasNavRow && (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, marginBottom: 1 }}>\r\n {back && (\r\n <IconButton size=\"small\" onClick={back} aria-label={L.back}\r\n sx={{ color: accentOrFgMuted, \"& svg\": { transform: \"scaleX(var(--pui-rtl-flip, 1))\" } }}>\r\n <ArrowBackIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n {effectiveBreadcrumb.length > 0 && (\r\n <Box component=\"nav\" aria-label={L.breadcrumb} sx={{ minWidth: 0 }}>\r\n <Box component=\"ol\"\r\n sx={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", alignItems: \"center\", flexWrap: { xs: \"nowrap\", sm: \"wrap\" }, gap: 0.5, fontSize: \"var(--text-xs)\", color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\", minWidth: 0 }}>\r\n {renderCrumbItems()}\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {/* Main row */}\r\n <Box sx={{ display: \"flex\", alignItems: { xs: \"flex-start\", sm: \"center\" }, justifyContent: \"space-between\", flexWrap: { xs: \"wrap\", sm: \"nowrap\" }, gap: { xs: \"var(--s-2)\", sm: 2 } }}>\r\n <Box sx={{ minWidth: 0, flex: 1, display: \"flex\", alignItems: \"center\", gap: 1, color: accentOrFg, \"& svg\": { color: \"inherit\" } }}>\r\n {icon}\r\n <Typography component=\"h1\"\r\n sx={{ fontSize: { xs: 18, sm: 22 }, fontWeight: \"var(--fw-bold)\", color: accentOrFg, lineHeight: \"var(--lh-tight)\", whiteSpace: { xs: \"normal\", sm: \"nowrap\" }, overflow: { xs: \"visible\", sm: \"hidden\" }, textOverflow: { xs: \"clip\", sm: \"ellipsis\" } }}>\r\n {title}\r\n </Typography>\r\n {meta}\r\n </Box>\r\n\r\n {/* Actions: [secondary/ghost] [primary] [...] */}\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, width: { xs: \"100%\", sm: \"auto\" }, justifyContent: { xs: \"flex-end\", sm: \"flex-start\" }, flexShrink: 0 }}>\r\n {visibleOthers.map((action, i) => renderButton(action, i))}\r\n {visiblePrimary.map((action, i) => renderButton(action, `p${i}`))}\r\n {hiddenActions.length > 0 && (\r\n <OverflowMenu actions={hiddenActions.map(({ _slot: _s, ...a }) => a)} />\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n /* ── S-01 — THE SUBTITLE IS RENDERED AT EVERY BREAKPOINT ──────────\r\n *\r\n * This was `display: { xs: \"none\", sm: \"block\" }`, which removed the\r\n * subtitle below the sm token (481 px) from the layout AND from the\r\n * accessibility tree. On a 320-414 px viewport it did not exist for\r\n * any user, sighted or not.\r\n *\r\n * That conflicted with three normative rules at once:\r\n * - Platform Mandatory UX Patterns / Page Subtitle: \"Mandatory.\r\n * Every page must contain a meaningful subtitle describing the\r\n * purpose of the page. NEVER OMIT SUBTITLES.\"\r\n * - the same document lists `missing subtitle` under Forbidden\r\n * Practices, i.e. a certification failure;\r\n * - Responsive Pattern mandates support from 320 px, so `xs` is the\r\n * primary mobile range, not an edge case.\r\n *\r\n * Charter 7.1 bis also puts \"Page title (H1) + subtitle + CTA\" in the\r\n * canonical vertical order, with no breakpoint exemption.\r\n *\r\n * The original motivation was presumably vertical space on phones.\r\n * That concern is met by BOUNDING the height instead of deleting the\r\n * content -- two lines, mirroring the EmptyState rule already in this\r\n * library (\"description <= 2 lignes\"). Clamped text stays in the\r\n * accessibility tree, so screen-reader users get the full string.\r\n *\r\n * SCOPED TO xs ON PURPOSE. At sm and above `display: block` makes\r\n * line-clamp inert, so the rendering is byte-identical to before this\r\n * fix. Clamping desktop too would be a NEW restriction on existing\r\n * behaviour and could truncate a long subtitle that a module renders\r\n * over three lines today. Zero regression surface for the ~150\r\n * services consuming this component.\r\n *\r\n * Raised from procuration-portnet-fe (Batch 3), fixed here rather\r\n * than worked around locally: a module-side subtitle would duplicate\r\n * a shared component's responsibility (R-2.1 / R-AI.2) and would need\r\n * local breakpoint logic to avoid doubling at >= sm.\r\n * ──────────────────────────────────────────────────────────────── */\r\n display: { xs: \"-webkit-box\", sm: \"block\" },\r\n WebkitBoxOrient: \"vertical\",\r\n WebkitLineClamp: 2,\r\n overflow: { xs: \"hidden\", sm: \"visible\" },\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: 0.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ActionBar;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ActionBar.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_Typography","_IconButton","_ArrowBack","_ChevronRight","_Home","_useMediaQuery","_styles","_Button","_OverflowMenu","_tokens","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_LABELS","freeze","back","breadcrumb","home","expandCrumbs","CRUMB_LINK_BASE_SX","display","alignItems","gap","textDecoration","cursor","borderRadius","padding","margin","background","outline","outlineOffset","CRUMB_ELLIPSIS_SX","border","font","fontSize","lineHeight","isStructuredCrumb","entry","isValidElement","getCrumbColor","isLast","useAccent","renderCrumbContent","baseColor","baseFontWeight","jsx","component","undefined","sx","color","fontWeight","children","label","icon","onClick","href","ariaLabel","computedAria","jsxs","type","ActionBar","title","subtitle","primary","secondary","overflow","maxVisible","meta","sticky","surface","collapseAfter","labels","L","mergeLabels","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","crumbsExpanded","setCrumbsExpanded","useState","effectiveBreadcrumb","useMemo","base","homeItem","shouldCollapse","length","Math","max","orderedAll","list","push","_slot","s","visibleActions","slice","hiddenActions","visiblePrimary","filter","a","visibleOthers","hasNavRow","accentOrFgMuted","accentOrFg","resolveVariant","action","variant","renderButton","actionIcon","iconRight","disabled","loading","_variant","rest","size","lastCrumbIndex","chevron","transform","renderCrumbItems","map","b","first","last","borderBottom","xs","sm","lg","position","top","zIndex","marginBottom","minWidth","listStyle","flexWrap","justifyContent","flex","whiteSpace","textOverflow","width","flexShrink","actions","_s","WebkitBoxOrient","WebkitLineClamp","marginTop","_default","exports"],"sources":["../../../src/lib/v2/patterns/ActionBar.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\nimport ChevronRightIcon from \"@mui/icons-material/ChevronRight\";\r\nimport HomeIcon from \"@mui/icons-material/Home\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport type { ButtonProps } from \"../components/Button\";\r\nimport OverflowMenu from \"../components/OverflowMenu\";\r\nimport { zIndex } from \"../tokens\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ActionBar - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 — render order (left → right):\r\n *\r\n * [ghost/secondary…] [primary] […overflow]\r\n *\r\n * Slot-based variant resolution:\r\n * slot=\"primary\" → Button variant=\"primary\"\r\n * slot=\"secondary\" → Button variant={action.variant || \"secondary\"}\r\n * slot=\"overflow\" → Button variant={action.variant || \"ghost\"}\r\n *\r\n * maxVisible (default 2):\r\n * orderedAll = [primary, ...secondary, ...overflow]\r\n * first maxVisible → visible buttons / rest → \"…\"\r\n *\r\n * Breadcrumb collapse (R-RS.5):\r\n * Below the `sm` breakpoint TOKEN (< 481px) a long trail used to\r\n * flex-wrap onto several lines, pushing the page title down. When the\r\n * trail has more than `collapseAfter` crumbs (default 3) the middle is\r\n * collapsed to a single \"…\" toggle that shows [first] › … › [last];\r\n * pressing it expands the full trail in place. Desktop always renders\r\n * the full trail. Keeps the nav to one line on phones (WCAG 1.4.10\r\n * Reflow) without hiding navigation from AT — the toggle is a real\r\n * button with an accessible name.\r\n *\r\n * ── `surface` DEFAULTS TO false — A PAGE HEADER IS NOT A CARD ────────\r\n *\r\n * The platform rule is that a page header sits on the page background, never\r\n * on a white card. This default used to be `true`, which meant every call site\r\n * that did not opt out rendered a --surface card with a bottom border — making\r\n * the exception the norm across the GU modules.\r\n *\r\n * Note that `surface` drives TWO things, because `useAccent` is derived from\r\n * it: the background/border AND the colour of the title, icon, back-arrow and\r\n * crumb trail (--accent when non-surface, --fg / --fg-subtle when surfaced).\r\n * They are deliberately coupled — an accent title on a white card reads as a\r\n * link, and a near-black title on the page background loses the visual anchor\r\n * the header needs. Decoupling them would need a separate prop and a design\r\n * decision, not a default change.\r\n *\r\n * Pass surface={true} to opt back in to the card treatment where a header is\r\n * genuinely nested inside a panel rather than heading a page.\r\n *\r\n * ── Subtitle visibility (S-01) ───────────────────────────────────────\r\n *\r\n * The subtitle renders at EVERY breakpoint. It used to be hidden below the `sm`\r\n * token via `display: none`, which made every consuming module fail the\r\n * mandatory \"Never omit subtitles\" pattern on phones — and removed the text from\r\n * the accessibility tree, not just from the layout. On `xs` it is now bounded to\r\n * two lines with a line-clamp instead; `sm` and above are unchanged. See the\r\n * inline note at the render site for the full rationale.\r\n */\r\n\r\n/** Variant union, derived from Button (single source of truth). */\r\ntype ActionVariant = NonNullable<ButtonProps[\"variant\"]>;\r\n\r\n/** Structured breadcrumb entry (as opposed to a plain renderable node). */\r\nexport interface BreadcrumbItem {\r\n label?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n href?: string | undefined;\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\n/** A breadcrumb entry is either a plain node or a structured item. */\r\nexport type CrumbEntry = React.ReactNode | BreadcrumbItem;\r\n\r\n/** Action descriptor for primary / secondary / overflow slots. */\r\nexport interface ActionBarAction {\r\n label?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n iconRight?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n disabled?: boolean | undefined;\r\n loading?: boolean | undefined;\r\n variant?: ActionVariant | undefined;\r\n /** Overflow-only (surfaced when the action falls into the OverflowMenu). */\r\n shortcut?: React.ReactNode | undefined;\r\n danger?: boolean | undefined;\r\n divider?: boolean | undefined;\r\n /**\r\n * ARIA attributes, forwarded verbatim to the rendered `<Button>`.\r\n *\r\n * `renderButton` destructures the known fields above and spreads the\r\n * REMAINDER onto the Button (`{...rest}`), so any `aria-*` key a host supplies\r\n * already reaches the DOM at runtime. This pattern index signature declares\r\n * that contract, which was previously implemented but undeclared — forcing\r\n * strict-mode consumers to either drop the attribute (losing the behaviour) or\r\n * assert their way past the type.\r\n *\r\n * Primary use case: `aria-keyshortcuts` on a page's create CTA, so screen\r\n * reader users discover a keyboard shortcut on focus (WCAG 2.1.4).\r\n */\r\n [ariaAttribute: `aria-${string}`]: string | undefined;\r\n}\r\n\r\ntype SlotName = \"primary\" | \"secondary\" | \"overflow\";\r\ntype SlottedAction = ActionBarAction & { _slot: SlotName };\r\n\r\nexport interface ActionBarLabels {\r\n back?: string | undefined;\r\n breadcrumb?: string | undefined;\r\n home?: string | undefined;\r\n expandCrumbs?: string | undefined;\r\n}\r\n\r\nexport interface ActionBarProps {\r\n /** Home crumb: a callback (onClick) or an href string. */\r\n home?: string | (() => void) | undefined;\r\n /** Back-arrow callback (top-bar). */\r\n back?: (() => void) | undefined;\r\n breadcrumb?: CrumbEntry[] | undefined;\r\n title: React.ReactNode;\r\n subtitle?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n primary?: ActionBarAction | undefined;\r\n secondary?: ActionBarAction[] | undefined;\r\n overflow?: ActionBarAction[] | undefined;\r\n /** Number of actions shown before the rest collapse into the menu. @default 2 */\r\n maxVisible?: number | undefined;\r\n meta?: React.ReactNode | undefined;\r\n sticky?: boolean | undefined;\r\n /**\r\n * Render the header as a raised white card instead of on the page\r\n * background.\r\n *\r\n * @default false — a page header sits on the background (platform rule).\r\n *\r\n * Also governs text colour: when false, the title, icon, back-arrow and\r\n * crumbs render in --accent; when true they render in --fg / --fg-subtle.\r\n * See the note in the module docstring for why the two are coupled.\r\n *\r\n * Pass true only where the header genuinely heads a panel rather than a page.\r\n */\r\n surface?: boolean | undefined;\r\n /** Collapse the breadcrumb middle on mobile past this many crumbs. @default 3 */\r\n collapseAfter?: number | undefined;\r\n labels?: ActionBarLabels | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n back: \"Retour\",\r\n breadcrumb: \"Fil d'Ariane\",\r\n home: \"Accueil\",\r\n expandCrumbs: \"Afficher le chemin complet\",\r\n});\r\n\r\nconst CRUMB_LINK_BASE_SX = Object.freeze({\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n textDecoration: \"none\",\r\n cursor: \"pointer\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"2px 4px\",\r\n margin: \"-2px -4px\",\r\n \"&:hover\": { background: \"var(--bg-hover)\" },\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset-inset, 0)\" },\r\n});\r\n\r\nconst CRUMB_ELLIPSIS_SX = Object.freeze({\r\n ...CRUMB_LINK_BASE_SX,\r\n background: \"none\",\r\n border: \"none\",\r\n font: \"inherit\",\r\n fontSize: \"var(--text-xs)\",\r\n lineHeight: 1,\r\n});\r\n\r\nfunction isStructuredCrumb(entry: CrumbEntry): entry is BreadcrumbItem {\r\n return entry != null && typeof entry === \"object\" && !React.isValidElement(entry);\r\n}\r\n\r\nfunction getCrumbColor(isLast: boolean, useAccent: boolean): string {\r\n if (useAccent) return \"var(--accent)\";\r\n return isLast ? \"var(--fg)\" : \"var(--fg-subtle)\";\r\n}\r\n\r\nfunction renderCrumbContent(entry: CrumbEntry, isLast: boolean, useAccent: boolean) {\r\n const baseColor = getCrumbColor(isLast, useAccent);\r\n const baseFontWeight = isLast ? \"var(--fw-semibold)\" : \"var(--fw-regular)\";\r\n\r\n if (!isStructuredCrumb(entry)) {\r\n return (\r\n <Box component=\"span\" aria-current={isLast ? \"page\" : undefined}\r\n sx={{ color: baseColor, fontWeight: baseFontWeight }}>\r\n {entry}\r\n </Box>\r\n );\r\n }\r\n\r\n const { label, icon, onClick, href, ariaLabel } = entry;\r\n const computedAria = ariaLabel || (typeof label === \"string\" ? label : undefined);\r\n\r\n if (isLast) {\r\n return (\r\n <Box component=\"span\" aria-current=\"page\"\r\n sx={{ color: baseColor, fontWeight: baseFontWeight, display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n if (href) {\r\n return (\r\n <Box component=\"a\" href={href} onClick={onClick} aria-label={computedAria}\r\n sx={{ ...CRUMB_LINK_BASE_SX, color: baseColor }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n if (onClick) {\r\n return (\r\n <Box component=\"button\" type=\"button\" onClick={onClick} aria-label={computedAria}\r\n sx={{ ...CRUMB_LINK_BASE_SX, color: baseColor, background: \"none\", border: \"none\", font: \"inherit\", fontSize: \"var(--text-xs)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <Box component=\"span\"\r\n sx={{ color: baseColor, fontWeight: baseFontWeight, display: \"inline-flex\", alignItems: \"center\", gap: \"var(--s-1)\" }}>\r\n {icon}{label}\r\n </Box>\r\n );\r\n}\r\n\r\nfunction ActionBar({\r\n home,\r\n back,\r\n breadcrumb,\r\n title,\r\n subtitle,\r\n icon,\r\n primary,\r\n secondary = [],\r\n overflow = [],\r\n maxVisible = 2,\r\n meta,\r\n sticky = true,\r\n /*\r\n * DEFAULT FLIPPED TO false. A page header sits on the page background, never\r\n * on a white card — see the note in the module docstring. Opt back in with\r\n * surface={true} for a header that heads a panel rather than a page.\r\n */\r\n surface = false,\r\n collapseAfter = 3,\r\n labels,\r\n}: ActionBarProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // R-RS.5 — collapse the middle of a long breadcrumb on mobile (< sm\r\n // token, 481px). Reads the live theme so a host breakpoint override is\r\n // honoured. `crumbsExpanded` lets the user reveal the full trail in place.\r\n const theme = useTheme();\r\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const [crumbsExpanded, setCrumbsExpanded] = React.useState(false);\r\n\r\n const effectiveBreadcrumb = React.useMemo<CrumbEntry[]>(() => {\r\n const base = breadcrumb || [];\r\n if (!home) return base;\r\n const homeItem: BreadcrumbItem = {\r\n icon: <HomeIcon fontSize=\"small\" />,\r\n ariaLabel: L.home,\r\n ...(typeof home === \"function\" ? { onClick: home } : { href: home }),\r\n };\r\n return [homeItem, ...base];\r\n }, [home, breadcrumb, L.home]);\r\n\r\n // Decide whether to collapse: only on mobile, only when the trail is\r\n // longer than collapseAfter, and only while not user-expanded.\r\n const shouldCollapse =\r\n isMobile &&\r\n !crumbsExpanded &&\r\n effectiveBreadcrumb.length > Math.max(2, collapseAfter);\r\n\r\n const orderedAll = React.useMemo<SlottedAction[]>(() => {\r\n const list: SlottedAction[] = [];\r\n if (primary) list.push({ ...primary, _slot: \"primary\" });\r\n for (const s of (secondary || [])) list.push({ ...s, _slot: \"secondary\" });\r\n for (const o of (overflow || [])) list.push({ ...o, _slot: \"overflow\" });\r\n return list;\r\n }, [primary, secondary, overflow]);\r\n\r\n const visibleActions = orderedAll.slice(0, maxVisible);\r\n const hiddenActions = orderedAll.slice(maxVisible);\r\n\r\n const visiblePrimary = visibleActions.filter((a) => a._slot === \"primary\");\r\n const visibleOthers = visibleActions.filter((a) => a._slot !== \"primary\");\r\n\r\n const hasNavRow = !!(back || effectiveBreadcrumb.length > 0);\r\n const useAccent = !surface;\r\n const accentOrFgMuted = useAccent ? \"var(--accent)\" : \"var(--fg-muted)\";\r\n const accentOrFg = useAccent ? \"var(--accent)\" : \"var(--fg)\";\r\n\r\n function resolveVariant(action: SlottedAction): ActionVariant {\r\n if (action._slot === \"primary\") return \"primary\";\r\n if (action._slot === \"overflow\") return action.variant || \"ghost\";\r\n return action.variant || \"secondary\";\r\n }\r\n\r\n function renderButton(action: SlottedAction, i: React.Key) {\r\n const { _slot, label, icon: actionIcon, iconRight, onClick, disabled, loading, variant: _variant, ...rest } = action;\r\n return (\r\n <Button key={i} variant={resolveVariant(action)} size=\"sm\"\r\n icon={actionIcon} iconRight={iconRight}\r\n onClick={onClick} disabled={disabled} {...rest}\r\n {...(loading !== undefined ? { loading } : {})}>\r\n {label}\r\n </Button>\r\n );\r\n }\r\n\r\n const lastCrumbIndex = effectiveBreadcrumb.length - 1;\r\n const chevron = (\r\n <ChevronRightIcon aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\", transform: \"scaleX(var(--pui-rtl-flip, 1))\" }} />\r\n );\r\n\r\n /* Render either the full trail or the collapsed [first] › … › [last].\r\n * Each branch returns an array of <li> rows so the <ol> stays valid. */\r\n function renderCrumbItems() {\r\n if (!shouldCollapse) {\r\n return effectiveBreadcrumb.map((b, i) => {\r\n const isLast = i === lastCrumbIndex;\r\n return (\r\n <Box component=\"li\" key={i} sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(b, isLast, useAccent)}\r\n {!isLast && chevron}\r\n </Box>\r\n );\r\n });\r\n }\r\n\r\n // Collapsed: first crumb, an expand toggle, then the last crumb.\r\n const first = effectiveBreadcrumb[0];\r\n const last = effectiveBreadcrumb[lastCrumbIndex];\r\n return [\r\n <Box component=\"li\" key=\"first\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(first, false, useAccent)}\r\n {chevron}\r\n </Box>,\r\n <Box component=\"li\" key=\"ellipsis\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n <Box component=\"button\" type=\"button\"\r\n onClick={() => setCrumbsExpanded(true)}\r\n aria-label={L.expandCrumbs} aria-expanded=\"false\"\r\n sx={{ ...CRUMB_ELLIPSIS_SX, color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\" }}>\r\n …\r\n </Box>\r\n {chevron}\r\n </Box>,\r\n <Box component=\"li\" key=\"last\" sx={{ display: \"inline-flex\", alignItems: \"center\", gap: 0.5 }}>\r\n {renderCrumbContent(last, true, useAccent)}\r\n </Box>,\r\n ];\r\n }\r\n\r\n return (\r\n <Box\r\n sx={{\r\n background: surface ? \"var(--surface)\" : \"var(--bg)\",\r\n borderBottom: surface ? \"1px solid var(--border)\" : \"none\",\r\n padding: { xs: \"var(--s-3)\", sm: \"var(--s-3) var(--s-4)\", lg: \"var(--s-3) var(--s-6)\" },\r\n position: sticky ? \"sticky\" : \"static\",\r\n top: 0,\r\n zIndex: zIndex.sticky,\r\n }}\r\n >\r\n {/* Breadcrumb / back row */}\r\n {hasNavRow && (\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, marginBottom: 1 }}>\r\n {back && (\r\n <IconButton size=\"small\" onClick={back} aria-label={L.back}\r\n sx={{ color: accentOrFgMuted, \"& svg\": { transform: \"scaleX(var(--pui-rtl-flip, 1))\" } }}>\r\n <ArrowBackIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n {effectiveBreadcrumb.length > 0 && (\r\n <Box component=\"nav\" aria-label={L.breadcrumb} sx={{ minWidth: 0 }}>\r\n <Box component=\"ol\"\r\n sx={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", alignItems: \"center\", flexWrap: { xs: \"nowrap\", sm: \"wrap\" }, gap: 0.5, fontSize: \"var(--text-xs)\", color: useAccent ? \"var(--accent)\" : \"var(--fg-subtle)\", minWidth: 0 }}>\r\n {renderCrumbItems()}\r\n </Box>\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {/* Main row */}\r\n <Box sx={{ display: \"flex\", alignItems: { xs: \"flex-start\", sm: \"center\" }, justifyContent: \"space-between\", flexWrap: { xs: \"wrap\", sm: \"nowrap\" }, gap: { xs: \"var(--s-2)\", sm: 2 } }}>\r\n <Box sx={{ minWidth: 0, flex: 1, display: \"flex\", alignItems: \"center\", gap: 1, color: accentOrFg, \"& svg\": { color: \"inherit\" } }}>\r\n {icon}\r\n <Typography component=\"h1\"\r\n sx={{ fontSize: { xs: 18, sm: 22 }, fontWeight: \"var(--fw-bold)\", color: accentOrFg, lineHeight: \"var(--lh-tight)\", whiteSpace: { xs: \"normal\", sm: \"nowrap\" }, overflow: { xs: \"visible\", sm: \"hidden\" }, textOverflow: { xs: \"clip\", sm: \"ellipsis\" } }}>\r\n {title}\r\n </Typography>\r\n {meta}\r\n </Box>\r\n\r\n {/* Actions: [secondary/ghost] [primary] [...] */}\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: 1, width: { xs: \"100%\", sm: \"auto\" }, justifyContent: { xs: \"flex-end\", sm: \"flex-start\" }, flexShrink: 0 }}>\r\n {visibleOthers.map((action, i) => renderButton(action, i))}\r\n {visiblePrimary.map((action, i) => renderButton(action, `p${i}`))}\r\n {hiddenActions.length > 0 && (\r\n <OverflowMenu actions={hiddenActions.map(({ _slot: _s, ...a }) => a)} />\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {subtitle && (\r\n <Typography\r\n sx={{\r\n /* ── S-01 — THE SUBTITLE IS RENDERED AT EVERY BREAKPOINT ──────────\r\n *\r\n * This was `display: { xs: \"none\", sm: \"block\" }`, which removed the\r\n * subtitle below the sm token (481 px) from the layout AND from the\r\n * accessibility tree. On a 320-414 px viewport it did not exist for\r\n * any user, sighted or not.\r\n *\r\n * That conflicted with three normative rules at once:\r\n * - Platform Mandatory UX Patterns / Page Subtitle: \"Mandatory.\r\n * Every page must contain a meaningful subtitle describing the\r\n * purpose of the page. NEVER OMIT SUBTITLES.\"\r\n * - the same document lists `missing subtitle` under Forbidden\r\n * Practices, i.e. a certification failure;\r\n * - Responsive Pattern mandates support from 320 px, so `xs` is the\r\n * primary mobile range, not an edge case.\r\n *\r\n * Charter 7.1 bis also puts \"Page title (H1) + subtitle + CTA\" in the\r\n * canonical vertical order, with no breakpoint exemption.\r\n *\r\n * The original motivation was presumably vertical space on phones.\r\n * That concern is met by BOUNDING the height instead of deleting the\r\n * content -- two lines, mirroring the EmptyState rule already in this\r\n * library (\"description <= 2 lignes\"). Clamped text stays in the\r\n * accessibility tree, so screen-reader users get the full string.\r\n *\r\n * SCOPED TO xs ON PURPOSE. At sm and above `display: block` makes\r\n * line-clamp inert, so the rendering is byte-identical to before this\r\n * fix. Clamping desktop too would be a NEW restriction on existing\r\n * behaviour and could truncate a long subtitle that a module renders\r\n * over three lines today. Zero regression surface for the ~150\r\n * services consuming this component.\r\n *\r\n * Raised from procuration-portnet-fe (Batch 3), fixed here rather\r\n * than worked around locally: a module-side subtitle would duplicate\r\n * a shared component's responsibility (R-2.1 / R-AI.2) and would need\r\n * local breakpoint logic to avoid doubling at >= sm.\r\n * ──────────────────────────────────────────────────────────────── */\r\n display: { xs: \"-webkit-box\", sm: \"block\" },\r\n WebkitBoxOrient: \"vertical\",\r\n WebkitLineClamp: 2,\r\n overflow: { xs: \"hidden\", sm: \"visible\" },\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: 0.5,\r\n }}\r\n >\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ActionBar;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ import * as React from "react";
2
+ /**
3
+ * AppMain — the `<main>` landmark, Portnet UI v2 (pattern)
4
+ *
5
+ * Mount it inside the host shell, with `SkipLink` as the first focusable
6
+ * element of the page:
7
+ *
8
+ * <SkipLink />
9
+ * …
10
+ * <AppMain>
11
+ * <Outlet />
12
+ * </AppMain>
13
+ *
14
+ * ─────────────────────────────────────────────────────────────────────────────
15
+ * WHY THIS BELONGS IN THE LIBRARY (capability gap G-53)
16
+ *
17
+ * The library shipped HALF of a two-part contract and documented the other half
18
+ * without providing it. `SkipLink`'s own docblock says, in so many words:
19
+ *
20
+ * <SkipLink href="#main-content" />
21
+ * …
22
+ * <main id="main-content">
23
+ *
24
+ * The `<main>` never existed here. So every module wrote it, and it is not a
25
+ * one-liner — it carries three things that are easy to get subtly wrong:
26
+ *
27
+ * 1. `tabIndex={-1}`, without which the skip link SCROLLS but does not move
28
+ * focus in Safari (SkipLink compensates by setting the attribute itself at
29
+ * click time, which is a patch for a landmark that should have been
30
+ * focusable from the start);
31
+ * 2. `outline: none`, because a focus ring drawn around the whole page is not
32
+ * what R-F.1 asks for — the ring belongs on real controls;
33
+ * 3. the CONTENT MEASURE of R-L.5, a MUST the library did not honour
34
+ * anywhere: "Max-width content : 1440 px (wide table) ou 720 px (form
35
+ * mono-colonne)". `PageContent` owns the canonical padding and the section
36
+ * gap, and caps NOTHING — so on a 1920 px display a certified module still
37
+ * stretched its tables edge to edge unless it capped them itself.
38
+ *
39
+ * And the cap has a companion nobody remembers: WITHOUT `margin-inline: auto`
40
+ * the capped content pins to the left and leaves a 480 px gutter on the right
41
+ * of a 1920 px screen, which looks more broken than not capping at all.
42
+ *
43
+ * Raised from `autorisation-admis-pour-conforme-fe` (Area 5). The certified
44
+ * reference module `ms-ti-fe` carries the same local landmark, so this was two
45
+ * copies of the same twenty lines plus an unmet MUST — the definition of a gap.
46
+ *
47
+ * SCOPE, because §07 is explicit about it: the Sidebar and the global Topbar
48
+ * belong to the HOST shell (PMPCE / Guichet Unique), not to a module and not to
49
+ * this component. `AppMain` is the content region INSIDE that shell. It renders
50
+ * no breadcrumb and no page header either — those carry route-specific title,
51
+ * subtitle and actions, so they belong to each page's `ActionBar` (R-L.1 /
52
+ * R-L.2).
53
+ * ─────────────────────────────────────────────────────────────────────────────
54
+ */
55
+ /** Which measure of R-L.5 applies to this region. */
56
+ export type AppMainMeasure = "wide" | "form" | "full";
57
+ export interface AppMainProps {
58
+ children?: React.ReactNode | undefined;
59
+ /**
60
+ * The id the skip link targets. Defaults to `"main-content"`, which is
61
+ * `SkipLink`'s own default — change both together or the link goes nowhere.
62
+ */
63
+ id?: string | undefined;
64
+ /**
65
+ * Content measure (R-L.5). Defaults to `"wide"`: it is the value that fits
66
+ * listings, detail and dashboard pages, which is what a module is mostly made
67
+ * of. A genuinely mono-column form should narrow ITSELF rather than have the
68
+ * shared region widened for it.
69
+ */
70
+ measure?: AppMainMeasure | undefined;
71
+ /**
72
+ * Minimum height of the region. Defaults to `100vh` so a short page still
73
+ * paints its background down the viewport instead of ending in a band of
74
+ * whatever sits behind, and so the region reserves its space before content
75
+ * arrives (R-R.4, anti-CLS).
76
+ */
77
+ minHeight?: string | undefined;
78
+ className?: string | undefined;
79
+ /** Escape hatch. Merged last, so it wins over the computed style. */
80
+ style?: React.CSSProperties | undefined;
81
+ /**
82
+ * Accessible name for the landmark.
83
+ *
84
+ * Normally UNNECESSARY, and better left off: a `<main>` is the page's one
85
+ * main region and assistive tech announces it as such. It exists for the
86
+ * PRE-CONTENT case — a host that renders the landmark before its router
87
+ * mounts, as R-Pp.1 requires ("jamais d'écran blanc"), has nothing inside to
88
+ * name it, and "main region" alone tells the user nothing about what is
89
+ * happening.
90
+ *
91
+ * Added for a real consumer and not on speculation: the pre-auth shell of
92
+ * `autorisation-admis-pour-conforme-fe` (Area 10) hand-wrote this entire
93
+ * landmark — id, tabIndex, outline, minHeight — BECAUSE it could not express
94
+ * these two attributes through this component. A pattern that forces a host
95
+ * to reimplement it in order to name it has not finished its job.
96
+ */
97
+ ariaLabel?: string | undefined;
98
+ /**
99
+ * Marks the region busy while its content is being prepared.
100
+ *
101
+ * Goes with `ariaLabel`, and the pairing is the point: `aria-busy` tells
102
+ * assistive tech that what it reads is incomplete. Without it, a landmark
103
+ * that is merely EMPTY is indistinguishable from one that failed.
104
+ */
105
+ ariaBusy?: boolean | undefined;
106
+ }
107
+ declare function AppMain({ children, id, measure, minHeight, className, style, ariaLabel, ariaBusy, }: AppMainProps): React.JSX.Element;
108
+ export default AppMain;
109
+ //# sourceMappingURL=AppMain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppMain.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/patterns/AppMain.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,qDAAqD;AACrD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAYtD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,qEAAqE;IACrE,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IACxC;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC;AAED,iBAAS,OAAO,CAAC,EACf,QAAQ,EACR,EAAmB,EACnB,OAAgB,EAChB,SAAmB,EACnB,SAAS,EACT,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,YAAY,qBA0Bd;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ /**
11
+ * AppMain — the `<main>` landmark, Portnet UI v2 (pattern)
12
+ *
13
+ * Mount it inside the host shell, with `SkipLink` as the first focusable
14
+ * element of the page:
15
+ *
16
+ * <SkipLink />
17
+ * …
18
+ * <AppMain>
19
+ * <Outlet />
20
+ * </AppMain>
21
+ *
22
+ * ─────────────────────────────────────────────────────────────────────────────
23
+ * WHY THIS BELONGS IN THE LIBRARY (capability gap G-53)
24
+ *
25
+ * The library shipped HALF of a two-part contract and documented the other half
26
+ * without providing it. `SkipLink`'s own docblock says, in so many words:
27
+ *
28
+ * <SkipLink href="#main-content" />
29
+ * …
30
+ * <main id="main-content">
31
+ *
32
+ * The `<main>` never existed here. So every module wrote it, and it is not a
33
+ * one-liner — it carries three things that are easy to get subtly wrong:
34
+ *
35
+ * 1. `tabIndex={-1}`, without which the skip link SCROLLS but does not move
36
+ * focus in Safari (SkipLink compensates by setting the attribute itself at
37
+ * click time, which is a patch for a landmark that should have been
38
+ * focusable from the start);
39
+ * 2. `outline: none`, because a focus ring drawn around the whole page is not
40
+ * what R-F.1 asks for — the ring belongs on real controls;
41
+ * 3. the CONTENT MEASURE of R-L.5, a MUST the library did not honour
42
+ * anywhere: "Max-width content : 1440 px (wide table) ou 720 px (form
43
+ * mono-colonne)". `PageContent` owns the canonical padding and the section
44
+ * gap, and caps NOTHING — so on a 1920 px display a certified module still
45
+ * stretched its tables edge to edge unless it capped them itself.
46
+ *
47
+ * And the cap has a companion nobody remembers: WITHOUT `margin-inline: auto`
48
+ * the capped content pins to the left and leaves a 480 px gutter on the right
49
+ * of a 1920 px screen, which looks more broken than not capping at all.
50
+ *
51
+ * Raised from `autorisation-admis-pour-conforme-fe` (Area 5). The certified
52
+ * reference module `ms-ti-fe` carries the same local landmark, so this was two
53
+ * copies of the same twenty lines plus an unmet MUST — the definition of a gap.
54
+ *
55
+ * SCOPE, because §07 is explicit about it: the Sidebar and the global Topbar
56
+ * belong to the HOST shell (PMPCE / Guichet Unique), not to a module and not to
57
+ * this component. `AppMain` is the content region INSIDE that shell. It renders
58
+ * no breadcrumb and no page header either — those carry route-specific title,
59
+ * subtitle and actions, so they belong to each page's `ActionBar` (R-L.1 /
60
+ * R-L.2).
61
+ * ─────────────────────────────────────────────────────────────────────────────
62
+ */
63
+
64
+ /** Which measure of R-L.5 applies to this region. */
65
+
66
+ const MAX_WIDTH_BY_MEASURE = {
67
+ /** `--content-max` (1440) — listings, dashboards, detail pages. */
68
+ wide: "var(--content-max)",
69
+ /** `--form-max` (720) — a single-column form owning the whole region. */
70
+ form: "var(--form-max)",
71
+ /** No cap. Say why at the call site: R-L.5 is a MUST, not a default. */
72
+ full: undefined
73
+ };
74
+ function AppMain({
75
+ children,
76
+ id = "main-content",
77
+ measure = "wide",
78
+ minHeight = "100vh",
79
+ className,
80
+ style,
81
+ ariaLabel,
82
+ ariaBusy
83
+ }) {
84
+ const maxWidth = MAX_WIDTH_BY_MEASURE[measure];
85
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("main", {
86
+ id: id
87
+ /* Focusable programmatically, NOT in the tab order — so the skip link can
88
+ land here (WCAG 2.4.1) without adding a stop for every other user. */,
89
+ tabIndex: -1,
90
+ ...(ariaLabel !== undefined ? {
91
+ "aria-label": ariaLabel
92
+ } : {}),
93
+ ...(ariaBusy !== undefined ? {
94
+ "aria-busy": ariaBusy
95
+ } : {}),
96
+ ...(className !== undefined ? {
97
+ className
98
+ } : {}),
99
+ style: {
100
+ outline: "none",
101
+ minHeight,
102
+ ...(maxWidth !== undefined ?
103
+ /* `marginInline: auto` is not decoration: without it the cap pins
104
+ the content left and leaves the whole surplus as one gutter. */
105
+ {
106
+ maxWidth,
107
+ marginInline: "auto"
108
+ } : {}),
109
+ ...style
110
+ },
111
+ children: children
112
+ });
113
+ }
114
+ var _default = exports.default = AppMain;
115
+ //# sourceMappingURL=AppMain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppMain.js","names":["React","_interopRequireWildcard","require","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","MAX_WIDTH_BY_MEASURE","wide","form","full","undefined","AppMain","children","id","measure","minHeight","className","style","ariaLabel","ariaBusy","maxWidth","jsx","tabIndex","outline","marginInline","_default","exports"],"sources":["../../../src/lib/v2/patterns/AppMain.tsx"],"sourcesContent":["import * as React from \"react\";\r\n\r\n/**\r\n * AppMain — the `<main>` landmark, Portnet UI v2 (pattern)\r\n *\r\n * Mount it inside the host shell, with `SkipLink` as the first focusable\r\n * element of the page:\r\n *\r\n * <SkipLink />\r\n * …\r\n * <AppMain>\r\n * <Outlet />\r\n * </AppMain>\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-53)\r\n *\r\n * The library shipped HALF of a two-part contract and documented the other half\r\n * without providing it. `SkipLink`'s own docblock says, in so many words:\r\n *\r\n * <SkipLink href=\"#main-content\" />\r\n * …\r\n * <main id=\"main-content\">\r\n *\r\n * The `<main>` never existed here. So every module wrote it, and it is not a\r\n * one-liner — it carries three things that are easy to get subtly wrong:\r\n *\r\n * 1. `tabIndex={-1}`, without which the skip link SCROLLS but does not move\r\n * focus in Safari (SkipLink compensates by setting the attribute itself at\r\n * click time, which is a patch for a landmark that should have been\r\n * focusable from the start);\r\n * 2. `outline: none`, because a focus ring drawn around the whole page is not\r\n * what R-F.1 asks for — the ring belongs on real controls;\r\n * 3. the CONTENT MEASURE of R-L.5, a MUST the library did not honour\r\n * anywhere: \"Max-width content : 1440 px (wide table) ou 720 px (form\r\n * mono-colonne)\". `PageContent` owns the canonical padding and the section\r\n * gap, and caps NOTHING — so on a 1920 px display a certified module still\r\n * stretched its tables edge to edge unless it capped them itself.\r\n *\r\n * And the cap has a companion nobody remembers: WITHOUT `margin-inline: auto`\r\n * the capped content pins to the left and leaves a 480 px gutter on the right\r\n * of a 1920 px screen, which looks more broken than not capping at all.\r\n *\r\n * Raised from `autorisation-admis-pour-conforme-fe` (Area 5). The certified\r\n * reference module `ms-ti-fe` carries the same local landmark, so this was two\r\n * copies of the same twenty lines plus an unmet MUST — the definition of a gap.\r\n *\r\n * SCOPE, because §07 is explicit about it: the Sidebar and the global Topbar\r\n * belong to the HOST shell (PMPCE / Guichet Unique), not to a module and not to\r\n * this component. `AppMain` is the content region INSIDE that shell. It renders\r\n * no breadcrumb and no page header either — those carry route-specific title,\r\n * subtitle and actions, so they belong to each page's `ActionBar` (R-L.1 /\r\n * R-L.2).\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n */\r\n\r\n/** Which measure of R-L.5 applies to this region. */\r\nexport type AppMainMeasure = \"wide\" | \"form\" | \"full\";\r\n\r\nconst MAX_WIDTH_BY_MEASURE: Readonly<Record<AppMainMeasure, string | undefined>> =\r\n {\r\n /** `--content-max` (1440) — listings, dashboards, detail pages. */\r\n wide: \"var(--content-max)\",\r\n /** `--form-max` (720) — a single-column form owning the whole region. */\r\n form: \"var(--form-max)\",\r\n /** No cap. Say why at the call site: R-L.5 is a MUST, not a default. */\r\n full: undefined,\r\n };\r\n\r\nexport interface AppMainProps {\r\n children?: React.ReactNode | undefined;\r\n /**\r\n * The id the skip link targets. Defaults to `\"main-content\"`, which is\r\n * `SkipLink`'s own default — change both together or the link goes nowhere.\r\n */\r\n id?: string | undefined;\r\n /**\r\n * Content measure (R-L.5). Defaults to `\"wide\"`: it is the value that fits\r\n * listings, detail and dashboard pages, which is what a module is mostly made\r\n * of. A genuinely mono-column form should narrow ITSELF rather than have the\r\n * shared region widened for it.\r\n */\r\n measure?: AppMainMeasure | undefined;\r\n /**\r\n * Minimum height of the region. Defaults to `100vh` so a short page still\r\n * paints its background down the viewport instead of ending in a band of\r\n * whatever sits behind, and so the region reserves its space before content\r\n * arrives (R-R.4, anti-CLS).\r\n */\r\n minHeight?: string | undefined;\r\n className?: string | undefined;\r\n /** Escape hatch. Merged last, so it wins over the computed style. */\r\n style?: React.CSSProperties | undefined;\r\n /**\r\n * Accessible name for the landmark.\r\n *\r\n * Normally UNNECESSARY, and better left off: a `<main>` is the page's one\r\n * main region and assistive tech announces it as such. It exists for the\r\n * PRE-CONTENT case — a host that renders the landmark before its router\r\n * mounts, as R-Pp.1 requires (\"jamais d'écran blanc\"), has nothing inside to\r\n * name it, and \"main region\" alone tells the user nothing about what is\r\n * happening.\r\n *\r\n * Added for a real consumer and not on speculation: the pre-auth shell of\r\n * `autorisation-admis-pour-conforme-fe` (Area 10) hand-wrote this entire\r\n * landmark — id, tabIndex, outline, minHeight — BECAUSE it could not express\r\n * these two attributes through this component. A pattern that forces a host\r\n * to reimplement it in order to name it has not finished its job.\r\n */\r\n ariaLabel?: string | undefined;\r\n /**\r\n * Marks the region busy while its content is being prepared.\r\n *\r\n * Goes with `ariaLabel`, and the pairing is the point: `aria-busy` tells\r\n * assistive tech that what it reads is incomplete. Without it, a landmark\r\n * that is merely EMPTY is indistinguishable from one that failed.\r\n */\r\n ariaBusy?: boolean | undefined;\r\n}\r\n\r\nfunction AppMain({\r\n children,\r\n id = \"main-content\",\r\n measure = \"wide\",\r\n minHeight = \"100vh\",\r\n className,\r\n style,\r\n ariaLabel,\r\n ariaBusy,\r\n}: AppMainProps) {\r\n const maxWidth = MAX_WIDTH_BY_MEASURE[measure];\r\n\r\n return (\r\n <main\r\n id={id}\r\n /* Focusable programmatically, NOT in the tab order — so the skip link can\r\n land here (WCAG 2.4.1) without adding a stop for every other user. */\r\n tabIndex={-1}\r\n {...(ariaLabel !== undefined ? { \"aria-label\": ariaLabel } : {})}\r\n {...(ariaBusy !== undefined ? { \"aria-busy\": ariaBusy } : {})}\r\n {...(className !== undefined ? { className } : {})}\r\n style={{\r\n outline: \"none\",\r\n minHeight,\r\n ...(maxWidth !== undefined\r\n ? /* `marginInline: auto` is not decoration: without it the cap pins\r\n the content left and leaves the whole surplus as one gutter. */\r\n { maxWidth, marginInline: \"auto\" }\r\n : {}),\r\n ...style,\r\n }}\r\n >\r\n {children}\r\n </main>\r\n );\r\n}\r\n\r\nexport default AppMain;\r\n"],"mappings":"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","ignoreList":[]}
@@ -3,21 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
9
9
  var _Button = _interopRequireDefault(require("../components/Button"));
10
10
  var _mergeLabels = require("../utils/mergeLabels");
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- 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); }
16
- 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; }
17
- 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; }
18
- 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; }
19
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
20
- 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); } /**
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ /**
21
15
  * BulkActionBar - Portnet UI v2 (pattern)
22
16
  *
23
17
  * Charter R-DG.8 - sélection multiple → bulk bar sticky bottom-center.
@@ -54,31 +48,29 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
54
48
  * edges on a phone. maxWidth caps it to the viewport and flexWrap lets
55
49
  * surplus actions wrap to a second centred row instead of overflowing.
56
50
  */
57
- var DEFAULT_LABELS = Object.freeze({
58
- selection: function selection(n) {
59
- return "".concat(n, " \xE9l\xE9ment").concat(n > 1 ? "s" : "", " s\xE9lectionn\xE9").concat(n > 1 ? "s" : "");
60
- },
51
+
52
+ const DEFAULT_LABELS = Object.freeze({
53
+ selection: n => `${n} élément${n > 1 ? "s" : ""} sélectionné${n > 1 ? "s" : ""}`,
61
54
  toolbarAria: "Actions sur la sélection",
62
55
  clear: "Désélectionner"
63
56
  });
64
- function BulkActionBar(_ref) {
65
- var _ref$count = _ref.count,
66
- count = _ref$count === void 0 ? 0 : _ref$count,
67
- onClear = _ref.onClear,
68
- _ref$actions = _ref.actions,
69
- actions = _ref$actions === void 0 ? [] : _ref$actions,
70
- label = _ref.label,
71
- labels = _ref.labels;
57
+ function BulkActionBar({
58
+ count = 0,
59
+ onClear,
60
+ actions = [],
61
+ label,
62
+ labels
63
+ }) {
72
64
  if (count <= 0) return null;
73
- var L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
65
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
74
66
  // Legacy `label` prop wins over labels.selection for back-compat.
75
- var text = label != null ? label : L.selection(count);
67
+ const text = label != null ? label : L.selection(count);
76
68
 
77
69
  // R-AI.1 - currentColor-derived overlays so hover & divider auto-adapt
78
70
  // to the bar's fg-inverse value (was hard-coded white rgba).
79
- var overlayHover = "color-mix(in srgb, currentColor 15%, transparent)";
80
- var dividerOverlay = "color-mix(in srgb, currentColor 22%, transparent)";
81
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
71
+ const overlayHover = "color-mix(in srgb, currentColor 15%, transparent)";
72
+ const dividerOverlay = "color-mix(in srgb, currentColor 22%, transparent)";
73
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
82
74
  role: "toolbar",
83
75
  "aria-label": L.toolbarAria,
84
76
  sx: {
@@ -101,7 +93,7 @@ function BulkActionBar(_ref) {
101
93
  borderRadius: "var(--r-full)",
102
94
  boxShadow: "var(--shadow-lg)"
103
95
  },
104
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"]
96
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default
105
97
  // R-A.1 - polite live region so SR users hear each count change
106
98
  // without losing context. aria-atomic ensures the full sentence is
107
99
  // re-read on update, not just the diff.
@@ -115,28 +107,34 @@ function BulkActionBar(_ref) {
115
107
  fontVariantNumeric: "tabular-nums"
116
108
  },
117
109
  children: text
118
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
110
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
119
111
  sx: {
120
112
  width: 1,
121
113
  height: 24,
122
114
  background: dividerOverlay
123
115
  }
124
- }), actions.map(function (a, i) {
125
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
126
- size: "sm",
127
- variant: a.variant || "ghost",
128
- icon: a.icon,
129
- onClick: a.onClick,
130
- disabled: a.disabled,
131
- sx: _objectSpread({}, a.variant !== "danger" ? {
116
+ }), actions.map((a, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
117
+ size: "sm",
118
+ variant: a.variant || "ghost",
119
+ icon: a.icon,
120
+ onClick: a.onClick,
121
+ disabled: a.disabled,
122
+ sx: {
123
+ // Danger keeps its own palette; every other variant is forced
124
+ // to the inverse foreground with a currentColor hover overlay.
125
+ // (JS set color/"&:hover" to undefined on danger; under
126
+ // exactOptionalPropertyTypes that's present-with-undefined for
127
+ // the csstype color + selector value, so it's folded into one
128
+ // conditional spread — behaviour-identical.)
129
+ ...(a.variant !== "danger" ? {
132
130
  color: "var(--fg-inverse) !important",
133
131
  "&:hover": {
134
132
  background: overlayHover
135
133
  }
136
- } : {}),
137
- children: a.label
138
- }, i);
139
- }), onClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
134
+ } : {})
135
+ },
136
+ children: a.label
137
+ }, i)), onClear && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
140
138
  size: "sm",
141
139
  variant: "ghost",
142
140
  onClick: onClear,
@@ -150,5 +148,5 @@ function BulkActionBar(_ref) {
150
148
  })]
151
149
  });
152
150
  }
153
- var _default = exports["default"] = BulkActionBar;
151
+ var _default = exports.default = BulkActionBar;
154
152
  //# sourceMappingURL=BulkActionBar.js.map