@portnet/ui 6.0.1 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1011) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/dist/esm/index.js +90 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +118 -90
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +210 -52
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +64 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +14 -4
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -50
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -84
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +235 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  346. package/dist/esm/v2/personalization/capabilities/index.js +5 -0
  347. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
  348. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  349. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  350. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  351. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  352. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  353. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  354. package/dist/esm/v2/personalization/index.js +35 -0
  355. package/dist/esm/v2/personalization/index.js.map +1 -1
  356. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  357. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  358. package/dist/esm/v2/personalization/schema.js +8 -9
  359. package/dist/esm/v2/personalization/schema.js.map +1 -1
  360. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  361. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  362. package/dist/esm/v2/referentiel/types.js +2 -0
  363. package/dist/esm/v2/referentiel/types.js.map +1 -0
  364. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  365. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  367. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  368. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  369. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  370. package/dist/esm/v2/theme/_brand.js +8 -24
  371. package/dist/esm/v2/theme/_brand.js.map +1 -1
  372. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  373. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  374. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  375. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  376. package/dist/esm/v2/theme/cssVariables.js +62 -69
  377. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  378. package/dist/esm/v2/theme/index.js +5 -5
  379. package/dist/esm/v2/theme/index.js.map +1 -1
  380. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  381. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  382. package/dist/esm/v2/tokens/chart.js +261 -0
  383. package/dist/esm/v2/tokens/chart.js.map +1 -0
  384. package/dist/esm/v2/tokens/colors.js +22 -22
  385. package/dist/esm/v2/tokens/colors.js.map +1 -1
  386. package/dist/esm/v2/tokens/density.js +62 -7
  387. package/dist/esm/v2/tokens/density.js.map +1 -1
  388. package/dist/esm/v2/tokens/index.js +49 -34
  389. package/dist/esm/v2/tokens/index.js.map +1 -1
  390. package/dist/esm/v2/tokens/motion.js +12 -20
  391. package/dist/esm/v2/tokens/motion.js.map +1 -1
  392. package/dist/esm/v2/tokens/radius.js +1 -1
  393. package/dist/esm/v2/tokens/radius.js.map +1 -1
  394. package/dist/esm/v2/tokens/shadows.js +6 -6
  395. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  396. package/dist/esm/v2/tokens/spacing.js +2 -2
  397. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  398. package/dist/esm/v2/tokens/state.js +1 -1
  399. package/dist/esm/v2/tokens/state.js.map +1 -1
  400. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  401. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  402. package/dist/esm/v2/tokens/tokens.json +6 -1
  403. package/dist/esm/v2/tokens/typography.js +13 -13
  404. package/dist/esm/v2/tokens/typography.js.map +1 -1
  405. package/dist/esm/v2/tokens/zIndex.js +1 -1
  406. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  407. package/dist/esm/v2/types/datagrid.js.map +1 -1
  408. package/dist/esm/v2/utils/apiError.js +16 -37
  409. package/dist/esm/v2/utils/apiError.js.map +1 -1
  410. package/dist/esm/v2/utils/contrast.js +31 -32
  411. package/dist/esm/v2/utils/contrast.js.map +1 -1
  412. package/dist/esm/v2/utils/cx.js +5 -25
  413. package/dist/esm/v2/utils/cx.js.map +1 -1
  414. package/dist/esm/v2/utils/fileDownload.js +23 -26
  415. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  416. package/dist/esm/v2/utils/fileValidation.js +209 -0
  417. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtDate.js +111 -0
  419. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  420. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  421. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  422. package/dist/esm/v2/utils/formikErrors.js +78 -0
  423. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  424. package/dist/esm/v2/utils/index.js +35 -2
  425. package/dist/esm/v2/utils/index.js.map +1 -1
  426. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  427. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  428. package/dist/esm/v2/utils/networkStatus.js +12 -12
  429. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  430. package/dist/index.d.ts +9 -1
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +122 -47
  433. package/dist/index.js.map +1 -1
  434. package/dist/v2/__tests__/AppMain.test.js +133 -0
  435. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  436. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  437. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  438. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  439. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  440. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  441. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  442. package/dist/v2/__tests__/FieldError.test.js +98 -69
  443. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  444. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  445. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  446. package/dist/v2/__tests__/FieldWidth.test.js +148 -0
  447. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  448. package/dist/v2/__tests__/FileCard.test.js +45 -48
  449. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
  451. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  452. package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
  453. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  455. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  456. package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
  457. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  458. package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
  459. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  460. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  461. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  462. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  463. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  464. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  465. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  466. package/dist/v2/__tests__/apiError.test.js +50 -69
  467. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  468. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  469. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  470. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  471. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  472. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  473. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  474. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  475. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  476. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  477. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  478. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  479. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  480. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  481. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  482. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  483. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  484. package/dist/v2/__tests__/labels-merge.test.js +38 -46
  485. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  486. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  487. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  488. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  489. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  490. package/dist/v2/__tests__/rowActions.test.js +186 -0
  491. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  493. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  494. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  495. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  496. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  497. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  498. package/dist/v2/components/Accordion.js +60 -82
  499. package/dist/v2/components/Accordion.js.map +1 -1
  500. package/dist/v2/components/ActionStrip.js +40 -52
  501. package/dist/v2/components/ActionStrip.js.map +1 -1
  502. package/dist/v2/components/Banner.js +42 -41
  503. package/dist/v2/components/Banner.js.map +1 -1
  504. package/dist/v2/components/Busy.js +22 -27
  505. package/dist/v2/components/Busy.js.map +1 -1
  506. package/dist/v2/components/Button.js +39 -50
  507. package/dist/v2/components/Button.js.map +1 -1
  508. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  509. package/dist/v2/components/CategoryTag.js +49 -32
  510. package/dist/v2/components/CategoryTag.js.map +1 -1
  511. package/dist/v2/components/Checkbox.js +39 -45
  512. package/dist/v2/components/Checkbox.js.map +1 -1
  513. package/dist/v2/components/Chip.js +29 -42
  514. package/dist/v2/components/Chip.js.map +1 -1
  515. package/dist/v2/components/Combobox.js +122 -144
  516. package/dist/v2/components/Combobox.js.map +1 -1
  517. package/dist/v2/components/CommandPalette.js +138 -225
  518. package/dist/v2/components/CommandPalette.js.map +1 -1
  519. package/dist/v2/components/ConfirmDialog.js +46 -56
  520. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  521. package/dist/v2/components/DatePicker.js +81 -86
  522. package/dist/v2/components/DatePicker.js.map +1 -1
  523. package/dist/v2/components/DateRangePicker.js +77 -87
  524. package/dist/v2/components/DateRangePicker.js.map +1 -1
  525. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  526. package/dist/v2/components/DateTimePicker.js +121 -95
  527. package/dist/v2/components/DateTimePicker.js.map +1 -1
  528. package/dist/v2/components/Drawer.d.ts.map +1 -1
  529. package/dist/v2/components/Drawer.js +93 -88
  530. package/dist/v2/components/Drawer.js.map +1 -1
  531. package/dist/v2/components/Dropzone.js +150 -196
  532. package/dist/v2/components/Dropzone.js.map +1 -1
  533. package/dist/v2/components/EmptyState.js +18 -20
  534. package/dist/v2/components/EmptyState.js.map +1 -1
  535. package/dist/v2/components/FavoriteToggle.js +28 -39
  536. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  537. package/dist/v2/components/Field.d.ts +121 -5
  538. package/dist/v2/components/Field.d.ts.map +1 -1
  539. package/dist/v2/components/Field.js +221 -62
  540. package/dist/v2/components/Field.js.map +1 -1
  541. package/dist/v2/components/FieldError.js +18 -21
  542. package/dist/v2/components/FieldError.js.map +1 -1
  543. package/dist/v2/components/FieldHelp.js +40 -60
  544. package/dist/v2/components/FieldHelp.js.map +1 -1
  545. package/dist/v2/components/FileCard.js +27 -31
  546. package/dist/v2/components/FileCard.js.map +1 -1
  547. package/dist/v2/components/FilterTab.js +30 -38
  548. package/dist/v2/components/FilterTab.js.map +1 -1
  549. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  550. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  551. package/dist/v2/components/ForbiddenPage.js +37 -17
  552. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  553. package/dist/v2/components/FormGrid.js +53 -59
  554. package/dist/v2/components/FormGrid.js.map +1 -1
  555. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  556. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  557. package/dist/v2/components/FormikDisplay.js +108 -33
  558. package/dist/v2/components/FormikDisplay.js.map +1 -1
  559. package/dist/v2/components/Input.d.ts +40 -0
  560. package/dist/v2/components/Input.d.ts.map +1 -1
  561. package/dist/v2/components/Input.js +81 -41
  562. package/dist/v2/components/Input.js.map +1 -1
  563. package/dist/v2/components/KPICard.js +57 -67
  564. package/dist/v2/components/KPICard.js.map +1 -1
  565. package/dist/v2/components/KPIStrip.js +16 -22
  566. package/dist/v2/components/KPIStrip.js.map +1 -1
  567. package/dist/v2/components/KV.js +25 -31
  568. package/dist/v2/components/KV.js.map +1 -1
  569. package/dist/v2/components/KVGrid.js +19 -26
  570. package/dist/v2/components/KVGrid.js.map +1 -1
  571. package/dist/v2/components/Layout.js +91 -120
  572. package/dist/v2/components/Layout.js.map +1 -1
  573. package/dist/v2/components/MobileRowCard.js +79 -91
  574. package/dist/v2/components/MobileRowCard.js.map +1 -1
  575. package/dist/v2/components/Modal.js +61 -69
  576. package/dist/v2/components/Modal.js.map +1 -1
  577. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  578. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  579. package/dist/v2/components/NetworkErrorPage.js +38 -21
  580. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  581. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  582. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  583. package/dist/v2/components/NotFoundPage.js +37 -18
  584. package/dist/v2/components/NotFoundPage.js.map +1 -1
  585. package/dist/v2/components/NumberInput.js +88 -118
  586. package/dist/v2/components/NumberInput.js.map +1 -1
  587. package/dist/v2/components/OverflowMenu.js +38 -56
  588. package/dist/v2/components/OverflowMenu.js.map +1 -1
  589. package/dist/v2/components/PdfViewer.js +34 -45
  590. package/dist/v2/components/PdfViewer.js.map +1 -1
  591. package/dist/v2/components/ProgressBar.js +42 -49
  592. package/dist/v2/components/ProgressBar.js.map +1 -1
  593. package/dist/v2/components/Radio.js +59 -67
  594. package/dist/v2/components/Radio.js.map +1 -1
  595. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  596. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  597. package/dist/v2/components/SectionHeader.js +34 -41
  598. package/dist/v2/components/SectionHeader.js.map +1 -1
  599. package/dist/v2/components/Segmented.js +69 -93
  600. package/dist/v2/components/Segmented.js.map +1 -1
  601. package/dist/v2/components/Select.d.ts +26 -2
  602. package/dist/v2/components/Select.d.ts.map +1 -1
  603. package/dist/v2/components/Select.js +120 -155
  604. package/dist/v2/components/Select.js.map +1 -1
  605. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  606. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  607. package/dist/v2/components/ServerErrorPage.js +37 -20
  608. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  609. package/dist/v2/components/Skeleton.js +86 -100
  610. package/dist/v2/components/Skeleton.js.map +1 -1
  611. package/dist/v2/components/SkipLink.js +9 -12
  612. package/dist/v2/components/SkipLink.js.map +1 -1
  613. package/dist/v2/components/Spinner.js +16 -25
  614. package/dist/v2/components/Spinner.js.map +1 -1
  615. package/dist/v2/components/Status.js +18 -29
  616. package/dist/v2/components/Status.js.map +1 -1
  617. package/dist/v2/components/Stepper.js +80 -82
  618. package/dist/v2/components/Stepper.js.map +1 -1
  619. package/dist/v2/components/Surface.js +34 -49
  620. package/dist/v2/components/Surface.js.map +1 -1
  621. package/dist/v2/components/Switch.js +29 -37
  622. package/dist/v2/components/Switch.js.map +1 -1
  623. package/dist/v2/components/TabPanel.d.ts +17 -0
  624. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  625. package/dist/v2/components/TabPanel.js +90 -0
  626. package/dist/v2/components/TabPanel.js.map +1 -0
  627. package/dist/v2/components/Tabs.d.ts +25 -0
  628. package/dist/v2/components/Tabs.d.ts.map +1 -1
  629. package/dist/v2/components/Tabs.js +53 -29
  630. package/dist/v2/components/Tabs.js.map +1 -1
  631. package/dist/v2/components/TelInput.js +80 -115
  632. package/dist/v2/components/TelInput.js.map +1 -1
  633. package/dist/v2/components/Textarea.js +26 -35
  634. package/dist/v2/components/Textarea.js.map +1 -1
  635. package/dist/v2/components/TimePicker.js +62 -74
  636. package/dist/v2/components/TimePicker.js.map +1 -1
  637. package/dist/v2/components/Toast.js +119 -174
  638. package/dist/v2/components/Toast.js.map +1 -1
  639. package/dist/v2/components/Tooltip.js +23 -38
  640. package/dist/v2/components/Tooltip.js.map +1 -1
  641. package/dist/v2/components/_ErrorPageBody.js +15 -16
  642. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  643. package/dist/v2/components/_pickerShared.js +5 -5
  644. package/dist/v2/components/_pickerShared.js.map +1 -1
  645. package/dist/v2/components/index.d.ts +67 -1
  646. package/dist/v2/components/index.d.ts.map +1 -1
  647. package/dist/v2/components/index.js +153 -136
  648. package/dist/v2/components/index.js.map +1 -1
  649. package/dist/v2/hooks/index.d.ts +65 -0
  650. package/dist/v2/hooks/index.d.ts.map +1 -1
  651. package/dist/v2/hooks/index.js +63 -24
  652. package/dist/v2/hooks/index.js.map +1 -1
  653. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  654. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  655. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  656. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  657. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  658. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  659. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  660. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  661. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  662. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  663. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  664. package/dist/v2/hooks/useDensity.js +14 -18
  665. package/dist/v2/hooks/useDensity.js.map +1 -1
  666. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  667. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  668. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  669. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  670. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  671. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  672. package/dist/v2/hooks/useFocusTrap.js +20 -24
  673. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  674. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  675. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  676. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  677. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  678. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  679. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  680. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  681. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  682. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  683. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  684. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  685. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  687. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  688. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  689. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  690. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  691. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  692. package/dist/v2/hooks/useSortedRows.js +4 -6
  693. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  694. package/dist/v2/hooks/useTabLoading.js +7 -22
  695. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  696. package/dist/v2/index.d.ts.map +1 -1
  697. package/dist/v2/index.js +143 -145
  698. package/dist/v2/index.js.map +1 -1
  699. package/dist/v2/modalContext.js +2 -2
  700. package/dist/v2/modalContext.js.map +1 -1
  701. package/dist/v2/models/favorite.d.ts +8 -9
  702. package/dist/v2/models/favorite.d.ts.map +1 -1
  703. package/dist/v2/models/favorite.js.map +1 -1
  704. package/dist/v2/models/index.js +4 -4
  705. package/dist/v2/models/index.js.map +1 -1
  706. package/dist/v2/models/personalization.d.ts +44 -48
  707. package/dist/v2/models/personalization.d.ts.map +1 -1
  708. package/dist/v2/models/personalization.js.map +1 -1
  709. package/dist/v2/models/referentiel.d.ts +32 -50
  710. package/dist/v2/models/referentiel.d.ts.map +1 -1
  711. package/dist/v2/models/referentiel.js.map +1 -1
  712. package/dist/v2/models/savedFilter.d.ts +8 -17
  713. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  714. package/dist/v2/models/savedFilter.js.map +1 -1
  715. package/dist/v2/patterns/ActionBar.js +152 -187
  716. package/dist/v2/patterns/ActionBar.js.map +1 -1
  717. package/dist/v2/patterns/AppMain.d.ts +109 -0
  718. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  719. package/dist/v2/patterns/AppMain.js +115 -0
  720. package/dist/v2/patterns/AppMain.js.map +1 -0
  721. package/dist/v2/patterns/BulkActionBar.js +40 -42
  722. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  723. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  724. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  725. package/dist/v2/patterns/ChartFigure.js +159 -0
  726. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  727. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  728. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  729. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  730. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  731. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGrid.js +262 -297
  733. package/dist/v2/patterns/DataGrid.js.map +1 -1
  734. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  735. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  736. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  737. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  738. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  739. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  740. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  741. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  742. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  743. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  744. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  745. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  746. package/dist/v2/patterns/DetailSplit.js +116 -0
  747. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  748. package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
  749. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  750. package/dist/v2/patterns/FavoriteColumn.js +32 -80
  751. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  752. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  753. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  754. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  755. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  756. package/dist/v2/patterns/FilterTabBar.js +120 -0
  757. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  758. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  759. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  760. package/dist/v2/patterns/FormPageShell.js +53 -50
  761. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  762. package/dist/v2/patterns/FormSection.d.ts +8 -3
  763. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormSection.js +44 -51
  765. package/dist/v2/patterns/FormSection.js.map +1 -1
  766. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  767. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  768. package/dist/v2/patterns/FormikCheckbox.js +138 -0
  769. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  770. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  771. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  772. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  773. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  774. package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
  775. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  776. package/dist/v2/patterns/FormikCombobox.js +55 -69
  777. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  778. package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
  779. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikDatePicker.js +59 -106
  781. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  782. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  783. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  784. package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
  785. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  786. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  787. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  788. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  789. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  791. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  792. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  793. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  794. package/dist/v2/patterns/FormikFile.js +99 -83
  795. package/dist/v2/patterns/FormikFile.js.map +1 -1
  796. package/dist/v2/patterns/FormikInput.d.ts +11 -1
  797. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  798. package/dist/v2/patterns/FormikInput.js +45 -55
  799. package/dist/v2/patterns/FormikInput.js.map +1 -1
  800. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  801. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  802. package/dist/v2/patterns/FormikRadioGroup.js +137 -0
  803. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  804. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  805. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  807. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/FormikSelect.d.ts +9 -1
  809. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  810. package/dist/v2/patterns/FormikSelect.js +70 -89
  811. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  812. package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
  813. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  814. package/dist/v2/patterns/FormikTextarea.js +35 -48
  815. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  816. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
  817. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  818. package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
  819. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  820. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  821. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  822. package/dist/v2/patterns/PageContent.js +17 -20
  823. package/dist/v2/patterns/PageContent.js.map +1 -1
  824. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  825. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  826. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  827. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  828. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  829. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  830. package/dist/v2/patterns/ReferentielField.js +347 -327
  831. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  832. package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
  833. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  834. package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
  835. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  836. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  837. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  838. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  839. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  840. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  841. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  842. package/dist/v2/patterns/SortableHeader.js +35 -57
  843. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  844. package/dist/v2/patterns/Tour.js +121 -142
  845. package/dist/v2/patterns/Tour.js.map +1 -1
  846. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  847. package/dist/v2/patterns/_dataGridShared.js +131 -147
  848. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  849. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  850. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  851. package/dist/v2/patterns/_pickerSerialisation.js +80 -0
  852. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  853. package/dist/v2/patterns/_sort.js +17 -33
  854. package/dist/v2/patterns/_sort.js.map +1 -1
  855. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  856. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  857. package/dist/v2/patterns/_useColumnResize.js +80 -99
  858. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  859. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  860. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  861. package/dist/v2/patterns/filterCriteria.js +110 -0
  862. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  863. package/dist/v2/patterns/index.d.ts +247 -0
  864. package/dist/v2/patterns/index.d.ts.map +1 -1
  865. package/dist/v2/patterns/index.js +182 -70
  866. package/dist/v2/patterns/index.js.map +1 -1
  867. package/dist/v2/patterns/rowActions.d.ts +150 -0
  868. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  869. package/dist/v2/patterns/rowActions.js +232 -0
  870. package/dist/v2/patterns/rowActions.js.map +1 -0
  871. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  872. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  873. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  874. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  875. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  876. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  877. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  878. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  879. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  880. package/dist/v2/personalization/adapters/index.js +5 -5
  881. package/dist/v2/personalization/adapters/index.js.map +1 -1
  882. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  883. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  884. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  885. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  886. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  887. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  888. package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
  889. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  890. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  891. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  892. package/dist/v2/personalization/capabilities/index.js +23 -10
  893. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  894. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  895. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  896. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  897. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  898. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  899. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  900. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  901. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  902. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  903. package/dist/v2/personalization/index.d.ts +34 -0
  904. package/dist/v2/personalization/index.d.ts.map +1 -1
  905. package/dist/v2/personalization/index.js +41 -21
  906. package/dist/v2/personalization/index.js.map +1 -1
  907. package/dist/v2/personalization/personalizationContext.js +10 -12
  908. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  909. package/dist/v2/personalization/schema.js +8 -9
  910. package/dist/v2/personalization/schema.js.map +1 -1
  911. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  912. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  913. package/dist/v2/referentiel/index.js +11 -13
  914. package/dist/v2/referentiel/index.js.map +1 -1
  915. package/dist/v2/referentiel/types.d.ts +105 -0
  916. package/dist/v2/referentiel/types.d.ts.map +1 -0
  917. package/dist/v2/referentiel/types.js +6 -0
  918. package/dist/v2/referentiel/types.js.map +1 -0
  919. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  920. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  921. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  922. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  923. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  924. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  925. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  926. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  927. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  928. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  929. package/dist/v2/theme/_brand.js +12 -26
  930. package/dist/v2/theme/_brand.js.map +1 -1
  931. package/dist/v2/theme/_brandSecondary.js +12 -26
  932. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  933. package/dist/v2/theme/createPortnetTheme.js +41 -49
  934. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  935. package/dist/v2/theme/cssVariables.d.ts +3 -3
  936. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  937. package/dist/v2/theme/cssVariables.js +65 -70
  938. package/dist/v2/theme/cssVariables.js.map +1 -1
  939. package/dist/v2/theme/index.js +10 -10
  940. package/dist/v2/theme/index.js.map +1 -1
  941. package/dist/v2/tokens/breakpoints.js +16 -16
  942. package/dist/v2/tokens/breakpoints.js.map +1 -1
  943. package/dist/v2/tokens/chart.d.ts +103 -0
  944. package/dist/v2/tokens/chart.d.ts.map +1 -0
  945. package/dist/v2/tokens/chart.js +270 -0
  946. package/dist/v2/tokens/chart.js.map +1 -0
  947. package/dist/v2/tokens/colors.js +24 -24
  948. package/dist/v2/tokens/colors.js.map +1 -1
  949. package/dist/v2/tokens/density.d.ts +104 -0
  950. package/dist/v2/tokens/density.d.ts.map +1 -1
  951. package/dist/v2/tokens/density.js +67 -12
  952. package/dist/v2/tokens/density.js.map +1 -1
  953. package/dist/v2/tokens/index.d.ts +50 -1
  954. package/dist/v2/tokens/index.d.ts.map +1 -1
  955. package/dist/v2/tokens/index.js +116 -68
  956. package/dist/v2/tokens/index.js.map +1 -1
  957. package/dist/v2/tokens/motion.js +16 -22
  958. package/dist/v2/tokens/motion.js.map +1 -1
  959. package/dist/v2/tokens/radius.js +3 -3
  960. package/dist/v2/tokens/radius.js.map +1 -1
  961. package/dist/v2/tokens/shadows.js +8 -8
  962. package/dist/v2/tokens/shadows.js.map +1 -1
  963. package/dist/v2/tokens/spacing.js +4 -4
  964. package/dist/v2/tokens/spacing.js.map +1 -1
  965. package/dist/v2/tokens/state.js +3 -3
  966. package/dist/v2/tokens/state.js.map +1 -1
  967. package/dist/v2/tokens/statusPalette.js +21 -23
  968. package/dist/v2/tokens/statusPalette.js.map +1 -1
  969. package/dist/v2/tokens/tokens.json +6 -1
  970. package/dist/v2/tokens/typography.js +15 -15
  971. package/dist/v2/tokens/typography.js.map +1 -1
  972. package/dist/v2/tokens/zIndex.js +3 -3
  973. package/dist/v2/tokens/zIndex.js.map +1 -1
  974. package/dist/v2/types/datagrid.d.ts +9 -1
  975. package/dist/v2/types/datagrid.d.ts.map +1 -1
  976. package/dist/v2/types/datagrid.js.map +1 -1
  977. package/dist/v2/types/index.js +2 -2
  978. package/dist/v2/types/index.js.map +1 -1
  979. package/dist/v2/utils/apiError.js +16 -37
  980. package/dist/v2/utils/apiError.js.map +1 -1
  981. package/dist/v2/utils/contrast.js +31 -32
  982. package/dist/v2/utils/contrast.js.map +1 -1
  983. package/dist/v2/utils/cx.js +7 -27
  984. package/dist/v2/utils/cx.js.map +1 -1
  985. package/dist/v2/utils/fileDownload.js +25 -28
  986. package/dist/v2/utils/fileDownload.js.map +1 -1
  987. package/dist/v2/utils/fileValidation.d.ts +116 -0
  988. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  989. package/dist/v2/utils/fileValidation.js +220 -0
  990. package/dist/v2/utils/fileValidation.js.map +1 -0
  991. package/dist/v2/utils/fmtDate.d.ts +103 -0
  992. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  993. package/dist/v2/utils/fmtDate.js +119 -0
  994. package/dist/v2/utils/fmtDate.js.map +1 -0
  995. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  996. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  997. package/dist/v2/utils/fmtMoney.js +9 -11
  998. package/dist/v2/utils/fmtMoney.js.map +1 -1
  999. package/dist/v2/utils/formikErrors.d.ts +67 -0
  1000. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  1001. package/dist/v2/utils/formikErrors.js +85 -0
  1002. package/dist/v2/utils/formikErrors.js.map +1 -0
  1003. package/dist/v2/utils/index.d.ts +5 -0
  1004. package/dist/v2/utils/index.d.ts.map +1 -1
  1005. package/dist/v2/utils/index.js +67 -18
  1006. package/dist/v2/utils/index.js.map +1 -1
  1007. package/dist/v2/utils/mergeLabels.js +9 -14
  1008. package/dist/v2/utils/mergeLabels.js.map +1 -1
  1009. package/dist/v2/utils/networkStatus.js +14 -14
  1010. package/dist/v2/utils/networkStatus.js.map +1 -1
  1011. package/package.json +26 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","names":["React","_interopRequireWildcard","require","_ExpandMore","_interopRequireDefault","_Box","_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","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","AccordionContext","createContext","Accordion","_ref","children","defaultOpen","open","onChange","_ref$mode","mode","sx","rest","controlled","_React$useState","useState","Set","_React$useState2","internalOpen","setInternalOpen","openSet","useMemo","toggle","useCallback","id","clear","add","nextArr","ctx","jsx","Provider","display","flexDirection","gap","AccordionItem","_ref2","title","badge","icon","useContext","Error","isOpen","handleClick","e","preventDefault","jsxs","component","border","borderRadius","background","listStyle","onClick","alignItems","padding","cursor","userSelect","fontSize","fontWeight","color","outline","outlineOffset","flex","minWidth","transition","transform","borderTop","_default","exports","assign","Item"],"sources":["../../../src/lib/v2/components/Accordion.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { BoxProps } from \"@mui/material/Box\";\r\n\r\n/**\r\n * Accordion — Portnet UI v2\r\n *\r\n * Charter §03 · atomic disclosure primitive. Replaces the local\r\n * AppAccordion wrapper that host modules previously maintained\r\n * (audit Batch 2 violation C1 in ms-ti-fe — direct MUI Accordion\r\n * with no tokens / a11y harmonisation).\r\n *\r\n * Implementation uses native <details>/<summary> elements so the\r\n * keyboard interaction (Enter/Space to toggle, Tab to enter\r\n * content) and ARIA role/state mapping come from the browser\r\n * (WCAG 2.1 SC 4.1.2, R-Ar.1).\r\n *\r\n * Compound-component API:\r\n *\r\n * <Accordion defaultOpen={[\"general\"]}>\r\n * <Accordion.Item id=\"general\" title=\"Informations générales\">\r\n * … content …\r\n * </Accordion.Item>\r\n * <Accordion.Item id=\"documents\" title=\"Documents joints\" badge=\"5\">\r\n * … content …\r\n * </Accordion.Item>\r\n * </Accordion>\r\n *\r\n * Controlled mode:\r\n *\r\n * const [open, setOpen] = useState([\"general\"]);\r\n * <Accordion open={open} onChange={setOpen}>…</Accordion>\r\n *\r\n * Modes:\r\n * \"multiple\" (default) — any number of items may be open\r\n * \"single\" — only one item open at a time\r\n * (mutually-exclusive accordion)\r\n */\r\n\r\nexport type AccordionMode = \"multiple\" | \"single\";\r\n\r\ninterface AccordionContextValue {\r\n openSet: Set<string>;\r\n toggle: (id: string) => void;\r\n}\r\n\r\nconst AccordionContext = React.createContext<AccordionContextValue | null>(null);\r\n\r\nexport interface AccordionProps extends Omit<BoxProps, \"onChange\"> {\r\n defaultOpen?: string[] | undefined;\r\n open?: string[] | undefined;\r\n onChange?: ((open: string[]) => void) | undefined;\r\n mode?: AccordionMode | undefined;\r\n}\r\n\r\nfunction Accordion({\r\n children,\r\n defaultOpen,\r\n open,\r\n onChange,\r\n mode = \"multiple\",\r\n sx,\r\n ...rest\r\n}: AccordionProps) {\r\n const controlled = open !== undefined;\r\n const [internalOpen, setInternalOpen] = React.useState<Set<string>>(() =>\r\n new Set<string>(defaultOpen || [])\r\n );\r\n\r\n const openSet = React.useMemo(\r\n () => (controlled ? new Set<string>(open) : internalOpen),\r\n [controlled, open, internalOpen]\r\n );\r\n\r\n const toggle = React.useCallback(\r\n (id: string) => {\r\n const next = new Set<string>(openSet);\r\n if (next.has(id)) {\r\n next.delete(id);\r\n } else {\r\n if (mode === \"single\") next.clear();\r\n next.add(id);\r\n }\r\n const nextArr = Array.from(next);\r\n if (!controlled) setInternalOpen(next);\r\n onChange?.(nextArr);\r\n },\r\n [openSet, mode, controlled, onChange]\r\n );\r\n\r\n const ctx = React.useMemo<AccordionContextValue>(\r\n () => ({ openSet, toggle }),\r\n [openSet, toggle]\r\n );\r\n\r\n return (\r\n <AccordionContext.Provider value={ctx}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"var(--s-2)\",\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n </AccordionContext.Provider>\r\n );\r\n}\r\n\r\n// BoxProps<\"details\">: AccordionItem always renders through native <details>,\r\n// so its inherited DOM-attribute surface (onClick, onCopy, aria-*, ...) must\r\n// be typed against HTMLDetailsElement, not the plain-BoxProps default of\r\n// HTMLDivElement — otherwise every handler mismatches the details overload\r\n// once `component=\"details\"` resolves cleanly (TS2769). `component` / `open` /\r\n// `name` are additionally omitted: this item owns `open` via Accordion's\r\n// context state and is never meant to be re-parented or native-name-grouped,\r\n// so neither should be an externally settable prop.\r\nexport interface AccordionItemProps\r\n extends Omit<BoxProps<\"details\">, \"id\" | \"title\" | \"open\" | \"name\" | \"component\"> {\r\n id: string;\r\n title: React.ReactNode;\r\n badge?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction AccordionItem({ id, title, badge, icon, children, sx, ...rest }: AccordionItemProps) {\r\n const ctx = React.useContext(AccordionContext);\r\n if (!ctx) {\r\n throw new Error(\"Accordion.Item must be rendered inside <Accordion>.\");\r\n }\r\n const isOpen = ctx.openSet.has(id);\r\n\r\n /* React's controlled <details>/open is fiddly — we use the native\r\n * element but intercept the click on the summary, preventing the\r\n * default toggle so our state stays the single source of truth. */\r\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\r\n e.preventDefault();\r\n ctx.toggle(id);\r\n };\r\n\r\n return (\r\n <Box\r\n component=\"details\"\r\n // We re-render with the boolean so React/DOM stay in sync.\r\n open={isOpen || undefined}\r\n sx={{\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n background: \"var(--surface)\",\r\n // Remove the default browser triangle marker — we render\r\n // our own chevron in the summary content.\r\n \"& > summary::-webkit-details-marker\": { display: \"none\" },\r\n \"& > summary\": { listStyle: \"none\" },\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n <Box\r\n component=\"summary\"\r\n onClick={handleClick}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n borderRadius: \"var(--r-md)\",\r\n fontSize: \"var(--text-body)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n color: \"var(--fg-muted)\",\r\n display: \"inline-flex\",\r\n \"& svg\": { fontSize: 18 },\r\n }}\r\n >\r\n {icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0 }}>{title}</Box>\r\n {badge != null && (\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n borderRadius: \"var(--r-full)\",\r\n padding: \"2px 8px\",\r\n }}\r\n >\r\n {badge}\r\n </Box>\r\n )}\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: \"var(--fg-muted)\",\r\n transition: \"transform var(--duration-base, 180ms)\",\r\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\r\n \"& svg\": { fontSize: 20 },\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n transition: \"none\",\r\n },\r\n }}\r\n >\r\n <ExpandMoreIcon />\r\n </Box>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n padding: \"var(--s-2) var(--s-4) var(--s-4)\",\r\n borderTop: \"1px solid var(--border-subtle, var(--border))\",\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Object.assign(Accordion, { Item: AccordionItem });\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Accordion.js","names":["React","_interopRequireWildcard","require","_ExpandMore","_interopRequireDefault","_Box","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AccordionContext","createContext","Accordion","children","defaultOpen","open","onChange","mode","sx","rest","controlled","undefined","internalOpen","setInternalOpen","useState","Set","openSet","useMemo","toggle","useCallback","id","next","delete","clear","add","nextArr","Array","from","ctx","jsx","Provider","value","display","flexDirection","gap","AccordionItem","title","badge","icon","useContext","Error","isOpen","handleClick","preventDefault","jsxs","component","border","borderRadius","background","listStyle","onClick","alignItems","padding","cursor","userSelect","fontSize","fontWeight","color","outline","outlineOffset","flex","minWidth","transition","transform","borderTop","_default","exports","assign","Item"],"sources":["../../../src/lib/v2/components/Accordion.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { BoxProps } from \"@mui/material/Box\";\r\n\r\n/**\r\n * Accordion — Portnet UI v2\r\n *\r\n * Charter §03 · atomic disclosure primitive. Replaces the local\r\n * AppAccordion wrapper that host modules previously maintained\r\n * (audit Batch 2 violation C1 in ms-ti-fe — direct MUI Accordion\r\n * with no tokens / a11y harmonisation).\r\n *\r\n * Implementation uses native <details>/<summary> elements so the\r\n * keyboard interaction (Enter/Space to toggle, Tab to enter\r\n * content) and ARIA role/state mapping come from the browser\r\n * (WCAG 2.1 SC 4.1.2, R-Ar.1).\r\n *\r\n * Compound-component API:\r\n *\r\n * <Accordion defaultOpen={[\"general\"]}>\r\n * <Accordion.Item id=\"general\" title=\"Informations générales\">\r\n * … content …\r\n * </Accordion.Item>\r\n * <Accordion.Item id=\"documents\" title=\"Documents joints\" badge=\"5\">\r\n * … content …\r\n * </Accordion.Item>\r\n * </Accordion>\r\n *\r\n * Controlled mode:\r\n *\r\n * const [open, setOpen] = useState([\"general\"]);\r\n * <Accordion open={open} onChange={setOpen}>…</Accordion>\r\n *\r\n * Modes:\r\n * \"multiple\" (default) — any number of items may be open\r\n * \"single\" — only one item open at a time\r\n * (mutually-exclusive accordion)\r\n */\r\n\r\nexport type AccordionMode = \"multiple\" | \"single\";\r\n\r\ninterface AccordionContextValue {\r\n openSet: Set<string>;\r\n toggle: (id: string) => void;\r\n}\r\n\r\nconst AccordionContext = React.createContext<AccordionContextValue | null>(null);\r\n\r\nexport interface AccordionProps extends Omit<BoxProps, \"onChange\"> {\r\n defaultOpen?: string[] | undefined;\r\n open?: string[] | undefined;\r\n onChange?: ((open: string[]) => void) | undefined;\r\n mode?: AccordionMode | undefined;\r\n}\r\n\r\nfunction Accordion({\r\n children,\r\n defaultOpen,\r\n open,\r\n onChange,\r\n mode = \"multiple\",\r\n sx,\r\n ...rest\r\n}: AccordionProps) {\r\n const controlled = open !== undefined;\r\n const [internalOpen, setInternalOpen] = React.useState<Set<string>>(() =>\r\n new Set<string>(defaultOpen || [])\r\n );\r\n\r\n const openSet = React.useMemo(\r\n () => (controlled ? new Set<string>(open) : internalOpen),\r\n [controlled, open, internalOpen]\r\n );\r\n\r\n const toggle = React.useCallback(\r\n (id: string) => {\r\n const next = new Set<string>(openSet);\r\n if (next.has(id)) {\r\n next.delete(id);\r\n } else {\r\n if (mode === \"single\") next.clear();\r\n next.add(id);\r\n }\r\n const nextArr = Array.from(next);\r\n if (!controlled) setInternalOpen(next);\r\n onChange?.(nextArr);\r\n },\r\n [openSet, mode, controlled, onChange]\r\n );\r\n\r\n const ctx = React.useMemo<AccordionContextValue>(\r\n () => ({ openSet, toggle }),\r\n [openSet, toggle]\r\n );\r\n\r\n return (\r\n <AccordionContext.Provider value={ctx}>\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"var(--s-2)\",\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {children}\r\n </Box>\r\n </AccordionContext.Provider>\r\n );\r\n}\r\n\r\n// BoxProps<\"details\">: AccordionItem always renders through native <details>,\r\n// so its inherited DOM-attribute surface (onClick, onCopy, aria-*, ...) must\r\n// be typed against HTMLDetailsElement, not the plain-BoxProps default of\r\n// HTMLDivElement — otherwise every handler mismatches the details overload\r\n// once `component=\"details\"` resolves cleanly (TS2769). `component` / `open` /\r\n// `name` are additionally omitted: this item owns `open` via Accordion's\r\n// context state and is never meant to be re-parented or native-name-grouped,\r\n// so neither should be an externally settable prop.\r\nexport interface AccordionItemProps\r\n extends Omit<BoxProps<\"details\">, \"id\" | \"title\" | \"open\" | \"name\" | \"component\"> {\r\n id: string;\r\n title: React.ReactNode;\r\n badge?: React.ReactNode | undefined;\r\n icon?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction AccordionItem({ id, title, badge, icon, children, sx, ...rest }: AccordionItemProps) {\r\n const ctx = React.useContext(AccordionContext);\r\n if (!ctx) {\r\n throw new Error(\"Accordion.Item must be rendered inside <Accordion>.\");\r\n }\r\n const isOpen = ctx.openSet.has(id);\r\n\r\n /* React's controlled <details>/open is fiddly — we use the native\r\n * element but intercept the click on the summary, preventing the\r\n * default toggle so our state stays the single source of truth. */\r\n const handleClick = (e: React.MouseEvent<HTMLElement>) => {\r\n e.preventDefault();\r\n ctx.toggle(id);\r\n };\r\n\r\n return (\r\n <Box\r\n component=\"details\"\r\n // We re-render with the boolean so React/DOM stay in sync.\r\n open={isOpen || undefined}\r\n sx={{\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n background: \"var(--surface)\",\r\n // Remove the default browser triangle marker — we render\r\n // our own chevron in the summary content.\r\n \"& > summary::-webkit-details-marker\": { display: \"none\" },\r\n \"& > summary\": { listStyle: \"none\" },\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n <Box\r\n component=\"summary\"\r\n onClick={handleClick}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n cursor: \"pointer\",\r\n userSelect: \"none\",\r\n borderRadius: \"var(--r-md)\",\r\n fontSize: \"var(--text-body)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n color: \"var(--fg-muted)\",\r\n display: \"inline-flex\",\r\n \"& svg\": { fontSize: 18 },\r\n }}\r\n >\r\n {icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0 }}>{title}</Box>\r\n {badge != null && (\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n borderRadius: \"var(--r-full)\",\r\n padding: \"2px 8px\",\r\n }}\r\n >\r\n {badge}\r\n </Box>\r\n )}\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: \"var(--fg-muted)\",\r\n transition: \"transform var(--duration-base, 180ms)\",\r\n transform: isOpen ? \"rotate(180deg)\" : \"rotate(0deg)\",\r\n \"& svg\": { fontSize: 20 },\r\n \"@media (prefers-reduced-motion: reduce)\": {\r\n transition: \"none\",\r\n },\r\n }}\r\n >\r\n <ExpandMoreIcon />\r\n </Box>\r\n </Box>\r\n\r\n <Box\r\n sx={{\r\n padding: \"var(--s-2) var(--s-4) var(--s-4)\",\r\n borderTop: \"1px solid var(--border-subtle, var(--border))\",\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Object.assign(Accordion, { Item: AccordionItem });\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports["default"] = void 0;
6
+ exports.default = void 0;
8
7
  var React = _interopRequireWildcard(require("react"));
9
8
  var _ArrowBack = _interopRequireDefault(require("@mui/icons-material/ArrowBack"));
10
9
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
11
10
  var _Button = _interopRequireDefault(require("./Button"));
12
11
  var _jsxRuntime = require("react/jsx-runtime");
13
- var _excluded = ["back", "backLabel", "secondary", "primary", "align", "sx"];
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
14
  /**
15
15
  * ActionStrip — Portnet UI v2
16
16
  *
@@ -55,29 +55,18 @@ var _excluded = ["back", "backLabel", "secondary", "primary", "align", "sx"];
55
55
  * column-reverse with stretched (full-width) buttons; the outer
56
56
  * container is column-reverse too, so Back sits at the very bottom.
57
57
  */
58
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
59
- 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); }
60
- 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; }
61
- 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; }
62
- 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; }
63
- 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; }
64
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
65
- 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); }
66
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
67
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
68
- function ActionStrip(_ref) {
69
- var back = _ref.back,
70
- _ref$backLabel = _ref.backLabel,
71
- backLabel = _ref$backLabel === void 0 ? "Retour" : _ref$backLabel,
72
- _ref$secondary = _ref.secondary,
73
- secondary = _ref$secondary === void 0 ? [] : _ref$secondary,
74
- primary = _ref.primary,
75
- _ref$align = _ref.align,
76
- align = _ref$align === void 0 ? "end" : _ref$align,
77
- sx = _ref.sx,
78
- rest = _objectWithoutProperties(_ref, _excluded);
79
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], _objectSpread(_objectSpread({
80
- sx: _objectSpread({
58
+
59
+ function ActionStrip({
60
+ back,
61
+ backLabel = "Retour",
62
+ secondary = [],
63
+ primary,
64
+ align = "end",
65
+ sx,
66
+ ...rest
67
+ }) {
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
69
+ sx: {
81
70
  display: "flex",
82
71
  flexDirection: {
83
72
  xs: "column-reverse",
@@ -91,22 +80,23 @@ function ActionStrip(_ref) {
91
80
  gap: "var(--s-3)",
92
81
  marginTop: "var(--s-5)",
93
82
  paddingTop: "var(--s-4)",
94
- borderTop: "1px solid var(--border)"
95
- }, sx)
96
- }, rest), {}, {
97
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
83
+ borderTop: "1px solid var(--border)",
84
+ ...sx
85
+ },
86
+ ...rest,
87
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
98
88
  sx: {
99
89
  display: "flex",
100
90
  alignItems: "center",
101
91
  gap: "var(--s-2)"
102
92
  },
103
- children: back && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
93
+ children: back && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
104
94
  variant: "ghost",
105
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack["default"], {}),
95
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack.default, {}),
106
96
  onClick: back,
107
97
  children: backLabel
108
98
  })
109
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
99
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
110
100
  sx: {
111
101
  display: "flex",
112
102
  flexDirection: {
@@ -124,31 +114,29 @@ function ActionStrip(_ref) {
124
114
  sm: "flex-end"
125
115
  }
126
116
  },
127
- children: [secondary.map(function (action, i) {
128
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], _objectSpread(_objectSpread({
129
- variant: action.variant || "ghost",
130
- icon: action.icon,
131
- onClick: action.onClick,
132
- disabled: action.disabled,
133
- type: action.type
134
- }, action.loading !== undefined ? {
117
+ children: [secondary.map((action, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
118
+ variant: action.variant || "ghost",
119
+ icon: action.icon,
120
+ onClick: action.onClick,
121
+ disabled: action.disabled,
122
+ type: action.type,
123
+ ...(action.loading !== undefined ? {
135
124
  loading: action.loading
136
- } : {}), {}, {
137
- children: action.label
138
- }), action.id || "sec-".concat(i));
139
- }), primary && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], _objectSpread(_objectSpread({
125
+ } : {}),
126
+ children: action.label
127
+ }, action.id || `sec-${i}`)), primary && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
140
128
  variant: primary.variant || "primary",
141
129
  icon: primary.icon,
142
130
  onClick: primary.onClick,
143
131
  disabled: primary.disabled,
144
- type: primary.type
145
- }, primary.loading !== undefined ? {
146
- loading: primary.loading
147
- } : {}), {}, {
132
+ type: primary.type,
133
+ ...(primary.loading !== undefined ? {
134
+ loading: primary.loading
135
+ } : {}),
148
136
  children: primary.label
149
- }))]
137
+ })]
150
138
  })]
151
- }));
139
+ });
152
140
  }
153
- var _default = exports["default"] = ActionStrip;
141
+ var _default = exports.default = ActionStrip;
154
142
  //# sourceMappingURL=ActionStrip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionStrip.js","names":["React","_interopRequireWildcard","require","_ArrowBack","_interopRequireDefault","_Box","_Button","_jsxRuntime","_excluded","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","ActionStrip","_ref","back","_ref$backLabel","backLabel","_ref$secondary","secondary","primary","_ref$align","align","sx","rest","jsxs","display","flexDirection","xs","sm","alignItems","justifyContent","gap","marginTop","paddingTop","borderTop","children","jsx","variant","icon","onClick","flexWrap","map","action","disabled","type","loading","label","id","concat","_default","exports"],"sources":["../../../src/lib/v2/components/ActionStrip.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { BoxProps } from \"@mui/material/Box\";\r\nimport Button from \"./Button\";\r\nimport type { ButtonProps } from \"./Button\";\r\n\r\n/**\r\n * ActionStrip — Portnet UI v2\r\n *\r\n * Charter §03 · footer-level action row. Distinct from ActionBar\r\n * (page header) and BulkActionBar (selection toolbar). Use this\r\n * primitive at the BOTTOM of a form or below a section's content\r\n * to anchor the principal CTAs.\r\n *\r\n * ┌─────────────────────────────────────────────────────────┐\r\n * │ ← Retour Annuler ✉ Envoyer │\r\n * └─────────────────────────────────────────────────────────┘\r\n *\r\n * Replaces:\r\n * - AppGlobalActions wrapper (audit Batch 2 M17)\r\n * - AppButtonsGroup wrapper (audit Batch 2 M13)\r\n * - inline `display:flex; justifyContent: flex-end; gap: var(--s-3)`\r\n * Box blocks in CreationTIMarchandises update dialog, etc.\r\n *\r\n * API:\r\n *\r\n * <ActionStrip\r\n * back={() => navigate(-1)} // omit if no Back affordance\r\n * backLabel=\"Retour\"\r\n * secondary={[\r\n * { label: \"Annuler\", variant: \"ghost\", onClick: cancel },\r\n * ]}\r\n * primary={{\r\n * label: \"Envoyer\",\r\n * icon: <SendIcon />,\r\n * onClick: submit,\r\n * loading: isSubmitting,\r\n * }}\r\n * />\r\n *\r\n * Single-CTA shortcut:\r\n *\r\n * <ActionStrip primary={{ label: \"Valider\", onClick: confirm }} />\r\n *\r\n * Responsive: on the `xs` breakpoint the strip becomes a vertical\r\n * stack of primary → secondary → back so the primary CTA stays\r\n * above the fold and reachable by thumb. The right cluster stacks\r\n * column-reverse with stretched (full-width) buttons; the outer\r\n * container is column-reverse too, so Back sits at the very bottom.\r\n */\r\n\r\nexport interface ActionStripAction {\r\n id?: string | undefined;\r\n label: React.ReactNode;\r\n onClick?: ButtonProps[\"onClick\"] | undefined;\r\n icon?: React.ReactNode | undefined;\r\n variant?: ButtonProps[\"variant\"] | undefined;\r\n loading?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n type?: \"button\" | \"submit\" | \"reset\" | undefined;\r\n}\r\n\r\nexport interface ActionStripProps extends BoxProps {\r\n back?: ButtonProps[\"onClick\"] | undefined;\r\n backLabel?: React.ReactNode | undefined;\r\n secondary?: ActionStripAction[] | undefined;\r\n primary?: ActionStripAction | undefined;\r\n align?: \"start\" | \"end\" | undefined;\r\n}\r\n\r\nfunction ActionStrip({\r\n back,\r\n backLabel = \"Retour\",\r\n secondary = [],\r\n primary,\r\n align = \"end\",\r\n sx,\r\n ...rest\r\n}: ActionStripProps) {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column-reverse\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n justifyContent: align === \"start\" ? \"flex-start\" : \"space-between\",\r\n gap: \"var(--s-3)\",\r\n marginTop: \"var(--s-5)\",\r\n paddingTop: \"var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {/* Left cluster — Back affordance */}\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"var(--s-2)\" }}>\r\n {back && (\r\n <Button\r\n variant=\"ghost\"\r\n icon={<ArrowBackIcon />}\r\n onClick={back}\r\n >\r\n {backLabel}\r\n </Button>\r\n )}\r\n </Box>\r\n\r\n {/* Right cluster — secondary + primary.\r\n xs : column-reverse + stretch → full-width buttons, primary on\r\n top (primary → secondary), reachable by thumb.\r\n sm+ : single centred row, primary anchored to the right edge. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column-reverse\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n gap: \"var(--s-3)\",\r\n flexWrap: \"wrap\",\r\n justifyContent: { xs: \"flex-start\", sm: \"flex-end\" },\r\n }}\r\n >\r\n {secondary.map((action, i) => (\r\n <Button\r\n key={action.id || `sec-${i}`}\r\n variant={action.variant || \"ghost\"}\r\n icon={action.icon}\r\n onClick={action.onClick}\r\n disabled={action.disabled}\r\n type={action.type}\r\n {...(action.loading !== undefined ? { loading: action.loading } : {})}\r\n >\r\n {action.label}\r\n </Button>\r\n ))}\r\n {primary && (\r\n <Button\r\n variant={primary.variant || \"primary\"}\r\n icon={primary.icon}\r\n onClick={primary.onClick}\r\n disabled={primary.disabled}\r\n type={primary.type}\r\n {...(primary.loading !== undefined ? { loading: primary.loading } : {})}\r\n >\r\n {primary.label}\r\n </Button>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ActionStrip;\r\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,IAAA,GAAAD,sBAAA,CAAAF,OAAA;AAEA,IAAAI,OAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA8B,IAAAK,WAAA,GAAAL,OAAA;AAAA,IAAAM,SAAA;AAG9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3CA,SAAAJ,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAX,wBAAAQ,GAAA,EAAAG,WAAA,SAAAA,WAAA,IAAAH,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAO,OAAA,CAAAP,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAQ,KAAA,GAAAN,wBAAA,CAAAC,WAAA,OAAAK,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,cAAAX,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAZ,MAAA,CAAAY,IAAA,CAAAF,MAAA,OAAAV,MAAA,CAAAa,qBAAA,QAAAC,OAAA,GAAAd,MAAA,CAAAa,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAhB,MAAA,CAAAE,wBAAA,CAAAQ,MAAA,EAAAM,GAAA,EAAAC,UAAA,OAAAL,IAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAQ,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAb,OAAA,CAAAT,MAAA,CAAAyB,MAAA,OAAAC,OAAA,WAAAvB,GAAA,IAAAwB,eAAA,CAAAN,MAAA,EAAAlB,GAAA,EAAAsB,MAAA,CAAAtB,GAAA,SAAAH,MAAA,CAAA4B,yBAAA,GAAA5B,MAAA,CAAA6B,gBAAA,CAAAR,MAAA,EAAArB,MAAA,CAAA4B,yBAAA,CAAAH,MAAA,KAAAhB,OAAA,CAAAT,MAAA,CAAAyB,MAAA,GAAAC,OAAA,WAAAvB,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAoB,MAAA,EAAAlB,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAAuB,MAAA,EAAAtB,GAAA,iBAAAkB,MAAA;AAAA,SAAAM,gBAAAxC,GAAA,EAAAgB,GAAA,EAAA2B,KAAA,IAAA3B,GAAA,GAAA4B,cAAA,CAAA5B,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAA2B,KAAA,EAAAA,KAAA,EAAAb,UAAA,QAAAe,YAAA,QAAAC,QAAA,oBAAA9C,GAAA,CAAAgB,GAAA,IAAA2B,KAAA,WAAA3C,GAAA;AAAA,SAAA4C,eAAAG,GAAA,QAAA/B,GAAA,GAAAgC,YAAA,CAAAD,GAAA,oBAAAxC,OAAA,CAAAS,GAAA,iBAAAA,GAAA,GAAAiC,MAAA,CAAAjC,GAAA;AAAA,SAAAgC,aAAAE,KAAA,EAAAC,IAAA,QAAA5C,OAAA,CAAA2C,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAjC,IAAA,CAAA+B,KAAA,EAAAC,IAAA,oBAAA5C,OAAA,CAAAiD,GAAA,uBAAAA,GAAA,YAAAC,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA;AAAA,SAAAS,yBAAArB,MAAA,EAAAsB,QAAA,QAAAtB,MAAA,yBAAAJ,MAAA,GAAA2B,6BAAA,CAAAvB,MAAA,EAAAsB,QAAA,OAAA5C,GAAA,EAAAmB,CAAA,MAAAtB,MAAA,CAAAa,qBAAA,QAAAoC,gBAAA,GAAAjD,MAAA,CAAAa,qBAAA,CAAAY,MAAA,QAAAH,CAAA,MAAAA,CAAA,GAAA2B,gBAAA,CAAAzB,MAAA,EAAAF,CAAA,MAAAnB,GAAA,GAAA8C,gBAAA,CAAA3B,CAAA,OAAAyB,QAAA,CAAAG,OAAA,CAAA/C,GAAA,uBAAAH,MAAA,CAAAI,SAAA,CAAA+C,oBAAA,CAAA7C,IAAA,CAAAmB,MAAA,EAAAtB,GAAA,aAAAkB,MAAA,CAAAlB,GAAA,IAAAsB,MAAA,CAAAtB,GAAA,cAAAkB,MAAA;AAAA,SAAA2B,8BAAAvB,MAAA,EAAAsB,QAAA,QAAAtB,MAAA,yBAAAJ,MAAA,WAAA+B,UAAA,GAAApD,MAAA,CAAAY,IAAA,CAAAa,MAAA,OAAAtB,GAAA,EAAAmB,CAAA,OAAAA,CAAA,MAAAA,CAAA,GAAA8B,UAAA,CAAA5B,MAAA,EAAAF,CAAA,MAAAnB,GAAA,GAAAiD,UAAA,CAAA9B,CAAA,OAAAyB,QAAA,CAAAG,OAAA,CAAA/C,GAAA,kBAAAkB,MAAA,CAAAlB,GAAA,IAAAsB,MAAA,CAAAtB,GAAA,YAAAkB,MAAA;AAgEA,SAASgC,WAAWA,CAAAC,IAAA,EAQC;EAAA,IAPnBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAAC,cAAA,GAAAF,IAAA,CACJG,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,QAAQ,GAAAA,cAAA;IAAAE,cAAA,GAAAJ,IAAA,CACpBK,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,EAAE,GAAAA,cAAA;IACdE,OAAO,GAAAN,IAAA,CAAPM,OAAO;IAAAC,UAAA,GAAAP,IAAA,CACPQ,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAG,KAAK,GAAAA,UAAA;IACbE,EAAE,GAAAT,IAAA,CAAFS,EAAE;IACCC,IAAI,GAAAlB,wBAAA,CAAAQ,IAAA,EAAApE,SAAA;EAEP,oBACE,IAAAD,WAAA,CAAAgF,IAAA,EAAClF,IAAA,WAAG,EAAAqC,aAAA,CAAAA,aAAA;IACF2C,EAAE,EAAA3C,aAAA;MACA8C,OAAO,EAAE,MAAM;MACfC,aAAa,EAAE;QAAEC,EAAE,EAAE,gBAAgB;QAAEC,EAAE,EAAE;MAAM,CAAC;MAClDC,UAAU,EAAE;QAAEF,EAAE,EAAE,SAAS;QAAEC,EAAE,EAAE;MAAS,CAAC;MAC3CE,cAAc,EAAET,KAAK,KAAK,OAAO,GAAG,YAAY,GAAG,eAAe;MAClEU,GAAG,EAAE,YAAY;MACjBC,SAAS,EAAE,YAAY;MACvBC,UAAU,EAAE,YAAY;MACxBC,SAAS,EAAE;IAAyB,GACjCZ,EAAE;EACL,GACEC,IAAI;IAAAY,QAAA,gBAGR,IAAA3F,WAAA,CAAA4F,GAAA,EAAC9F,IAAA,WAAG;MAACgF,EAAE,EAAE;QAAEG,OAAO,EAAE,MAAM;QAAEI,UAAU,EAAE,QAAQ;QAAEE,GAAG,EAAE;MAAa,CAAE;MAAAI,QAAA,EACnErB,IAAI,iBACH,IAAAtE,WAAA,CAAA4F,GAAA,EAAC7F,OAAA,WAAM;QACL8F,OAAO,EAAC,OAAO;QACfC,IAAI,eAAE,IAAA9F,WAAA,CAAA4F,GAAA,EAAChG,UAAA,WAAa,IAAE,CAAE;QACxBmG,OAAO,EAAEzB,IAAK;QAAAqB,QAAA,EAEbnB;MAAS,CACJ;IACT,CACE,CAAC,eAMN,IAAAxE,WAAA,CAAAgF,IAAA,EAAClF,IAAA,WAAG;MACFgF,EAAE,EAAE;QACFG,OAAO,EAAE,MAAM;QACfC,aAAa,EAAE;UAAEC,EAAE,EAAE,gBAAgB;UAAEC,EAAE,EAAE;QAAM,CAAC;QAClDC,UAAU,EAAE;UAAEF,EAAE,EAAE,SAAS;UAAEC,EAAE,EAAE;QAAS,CAAC;QAC3CG,GAAG,EAAE,YAAY;QACjBS,QAAQ,EAAE,MAAM;QAChBV,cAAc,EAAE;UAAEH,EAAE,EAAE,YAAY;UAAEC,EAAE,EAAE;QAAW;MACrD,CAAE;MAAAO,QAAA,GAEDjB,SAAS,CAACuB,GAAG,CAAC,UAACC,MAAM,EAAE7D,CAAC;QAAA,oBACvB,IAAArC,WAAA,CAAA4F,GAAA,EAAC7F,OAAA,WAAM,EAAAoC,aAAA,CAAAA,aAAA;UAEL0D,OAAO,EAAEK,MAAM,CAACL,OAAO,IAAI,OAAQ;UACnCC,IAAI,EAAEI,MAAM,CAACJ,IAAK;UAClBC,OAAO,EAAEG,MAAM,CAACH,OAAQ;UACxBI,QAAQ,EAAED,MAAM,CAACC,QAAS;UAC1BC,IAAI,EAAEF,MAAM,CAACE;QAAK,GACbF,MAAM,CAACG,OAAO,KAAK5C,SAAS,GAAG;UAAE4C,OAAO,EAAEH,MAAM,CAACG;QAAQ,CAAC,GAAG,CAAC,CAAC;UAAAV,QAAA,EAEnEO,MAAM,CAACI;QAAK,IARRJ,MAAM,CAACK,EAAE,WAAAC,MAAA,CAAWnE,CAAC,CASpB,CAAC;MAAA,CACV,CAAC,EACDsC,OAAO,iBACN,IAAA3E,WAAA,CAAA4F,GAAA,EAAC7F,OAAA,WAAM,EAAAoC,aAAA,CAAAA,aAAA;QACL0D,OAAO,EAAElB,OAAO,CAACkB,OAAO,IAAI,SAAU;QACtCC,IAAI,EAAEnB,OAAO,CAACmB,IAAK;QACnBC,OAAO,EAAEpB,OAAO,CAACoB,OAAQ;QACzBI,QAAQ,EAAExB,OAAO,CAACwB,QAAS;QAC3BC,IAAI,EAAEzB,OAAO,CAACyB;MAAK,GACdzB,OAAO,CAAC0B,OAAO,KAAK5C,SAAS,GAAG;QAAE4C,OAAO,EAAE1B,OAAO,CAAC0B;MAAQ,CAAC,GAAG,CAAC,CAAC;QAAAV,QAAA,EAErEhB,OAAO,CAAC2B;MAAK,EACR,CACT;IAAA,CACE,CAAC;EAAA,EACH,CAAC;AAEV;AAAC,IAAAG,QAAA,GAAAC,OAAA,cAEctC,WAAW","ignoreList":[]}
1
+ {"version":3,"file":"ActionStrip.js","names":["React","_interopRequireWildcard","require","_ArrowBack","_interopRequireDefault","_Box","_Button","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ActionStrip","back","backLabel","secondary","primary","align","sx","rest","jsxs","display","flexDirection","xs","sm","alignItems","justifyContent","gap","marginTop","paddingTop","borderTop","children","jsx","variant","icon","onClick","flexWrap","map","action","disabled","type","loading","undefined","label","id","_default","exports"],"sources":["../../../src/lib/v2/components/ActionStrip.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ArrowBackIcon from \"@mui/icons-material/ArrowBack\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { BoxProps } from \"@mui/material/Box\";\r\nimport Button from \"./Button\";\r\nimport type { ButtonProps } from \"./Button\";\r\n\r\n/**\r\n * ActionStrip — Portnet UI v2\r\n *\r\n * Charter §03 · footer-level action row. Distinct from ActionBar\r\n * (page header) and BulkActionBar (selection toolbar). Use this\r\n * primitive at the BOTTOM of a form or below a section's content\r\n * to anchor the principal CTAs.\r\n *\r\n * ┌─────────────────────────────────────────────────────────┐\r\n * │ ← Retour Annuler ✉ Envoyer │\r\n * └─────────────────────────────────────────────────────────┘\r\n *\r\n * Replaces:\r\n * - AppGlobalActions wrapper (audit Batch 2 M17)\r\n * - AppButtonsGroup wrapper (audit Batch 2 M13)\r\n * - inline `display:flex; justifyContent: flex-end; gap: var(--s-3)`\r\n * Box blocks in CreationTIMarchandises update dialog, etc.\r\n *\r\n * API:\r\n *\r\n * <ActionStrip\r\n * back={() => navigate(-1)} // omit if no Back affordance\r\n * backLabel=\"Retour\"\r\n * secondary={[\r\n * { label: \"Annuler\", variant: \"ghost\", onClick: cancel },\r\n * ]}\r\n * primary={{\r\n * label: \"Envoyer\",\r\n * icon: <SendIcon />,\r\n * onClick: submit,\r\n * loading: isSubmitting,\r\n * }}\r\n * />\r\n *\r\n * Single-CTA shortcut:\r\n *\r\n * <ActionStrip primary={{ label: \"Valider\", onClick: confirm }} />\r\n *\r\n * Responsive: on the `xs` breakpoint the strip becomes a vertical\r\n * stack of primary → secondary → back so the primary CTA stays\r\n * above the fold and reachable by thumb. The right cluster stacks\r\n * column-reverse with stretched (full-width) buttons; the outer\r\n * container is column-reverse too, so Back sits at the very bottom.\r\n */\r\n\r\nexport interface ActionStripAction {\r\n id?: string | undefined;\r\n label: React.ReactNode;\r\n onClick?: ButtonProps[\"onClick\"] | undefined;\r\n icon?: React.ReactNode | undefined;\r\n variant?: ButtonProps[\"variant\"] | undefined;\r\n loading?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n type?: \"button\" | \"submit\" | \"reset\" | undefined;\r\n}\r\n\r\nexport interface ActionStripProps extends BoxProps {\r\n back?: ButtonProps[\"onClick\"] | undefined;\r\n backLabel?: React.ReactNode | undefined;\r\n secondary?: ActionStripAction[] | undefined;\r\n primary?: ActionStripAction | undefined;\r\n align?: \"start\" | \"end\" | undefined;\r\n}\r\n\r\nfunction ActionStrip({\r\n back,\r\n backLabel = \"Retour\",\r\n secondary = [],\r\n primary,\r\n align = \"end\",\r\n sx,\r\n ...rest\r\n}: ActionStripProps) {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column-reverse\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n justifyContent: align === \"start\" ? \"flex-start\" : \"space-between\",\r\n gap: \"var(--s-3)\",\r\n marginTop: \"var(--s-5)\",\r\n paddingTop: \"var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {/* Left cluster — Back affordance */}\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", gap: \"var(--s-2)\" }}>\r\n {back && (\r\n <Button\r\n variant=\"ghost\"\r\n icon={<ArrowBackIcon />}\r\n onClick={back}\r\n >\r\n {backLabel}\r\n </Button>\r\n )}\r\n </Box>\r\n\r\n {/* Right cluster — secondary + primary.\r\n xs : column-reverse + stretch → full-width buttons, primary on\r\n top (primary → secondary), reachable by thumb.\r\n sm+ : single centred row, primary anchored to the right edge. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: { xs: \"column-reverse\", sm: \"row\" },\r\n alignItems: { xs: \"stretch\", sm: \"center\" },\r\n gap: \"var(--s-3)\",\r\n flexWrap: \"wrap\",\r\n justifyContent: { xs: \"flex-start\", sm: \"flex-end\" },\r\n }}\r\n >\r\n {secondary.map((action, i) => (\r\n <Button\r\n key={action.id || `sec-${i}`}\r\n variant={action.variant || \"ghost\"}\r\n icon={action.icon}\r\n onClick={action.onClick}\r\n disabled={action.disabled}\r\n type={action.type}\r\n {...(action.loading !== undefined ? { loading: action.loading } : {})}\r\n >\r\n {action.label}\r\n </Button>\r\n ))}\r\n {primary && (\r\n <Button\r\n variant={primary.variant || \"primary\"}\r\n icon={primary.icon}\r\n onClick={primary.onClick}\r\n disabled={primary.disabled}\r\n type={primary.type}\r\n {...(primary.loading !== undefined ? { loading: primary.loading } : {})}\r\n >\r\n {primary.label}\r\n </Button>\r\n )}\r\n </Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ActionStrip;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports["default"] = void 0;
6
+ exports.default = void 0;
8
7
  var React = _interopRequireWildcard(require("react"));
9
8
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
9
  var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
@@ -14,9 +13,8 @@ var _ErrorOutlined = _interopRequireDefault(require("@mui/icons-material/ErrorOu
14
13
  var _WarningAmberOutlined = _interopRequireDefault(require("@mui/icons-material/WarningAmberOutlined"));
15
14
  var _InfoOutlined = _interopRequireDefault(require("@mui/icons-material/InfoOutlined"));
16
15
  var _jsxRuntime = require("react/jsx-runtime");
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
- 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); }
19
- 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; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ 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); }
20
18
  /**
21
19
  * Banner - Portnet UI v2
22
20
  *
@@ -77,30 +75,30 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
77
75
  * Defense-in-depth.
78
76
  */
79
77
 
80
- var VARIANT = {
78
+ const VARIANT = {
81
79
  info: {
82
80
  bg: "var(--info-soft)",
83
81
  fg: "var(--info)",
84
82
  text: "var(--info-fg)",
85
- icon: _InfoOutlined["default"]
83
+ icon: _InfoOutlined.default
86
84
  },
87
85
  success: {
88
86
  bg: "var(--success-soft)",
89
87
  fg: "var(--success)",
90
88
  text: "var(--success-fg)",
91
- icon: _Check["default"]
89
+ icon: _Check.default
92
90
  },
93
91
  warning: {
94
92
  bg: "var(--warning-soft)",
95
93
  fg: "var(--warning)",
96
94
  text: "var(--warning-fg)",
97
- icon: _WarningAmberOutlined["default"]
95
+ icon: _WarningAmberOutlined.default
98
96
  },
99
97
  error: {
100
98
  bg: "var(--danger-soft)",
101
99
  fg: "var(--danger)",
102
100
  text: "var(--danger-fg)",
103
- icon: _ErrorOutlined["default"]
101
+ icon: _ErrorOutlined.default
104
102
  }
105
103
  };
106
104
  /**
@@ -113,12 +111,13 @@ var VARIANT = {
113
111
  * text and 1.4.11 (≥ 3:1) as a UI boundary on the soft background. Do not swap
114
112
  * it for `cfg.fg`, which only clears the non-text threshold.
115
113
  */
116
- function BannerActionButton(_ref) {
117
- var action = _ref.action,
118
- color = _ref.color,
119
- emphasis = _ref.emphasis;
120
- var isPrimary = emphasis === "primary";
121
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
114
+ function BannerActionButton({
115
+ action,
116
+ color,
117
+ emphasis
118
+ }) {
119
+ const isPrimary = emphasis === "primary";
120
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
122
121
  component: "button",
123
122
  type: "button",
124
123
  onClick: action.onClick,
@@ -129,8 +128,8 @@ function BannerActionButton(_ref) {
129
128
  background: "transparent",
130
129
  /* Transparent border on the secondary keeps both buttons on the same
131
130
  * baseline and the same height — without it the cluster jitters. */
132
- border: "1px solid ".concat(isPrimary ? color : "transparent"),
133
- color: color,
131
+ border: `1px solid ${isPrimary ? color : "transparent"}`,
132
+ color,
134
133
  padding: "var(--s-1) var(--s-3)",
135
134
  borderRadius: "var(--r-sm)",
136
135
  fontSize: "var(--text-xs)",
@@ -149,7 +148,7 @@ function BannerActionButton(_ref) {
149
148
  outlineOffset: "var(--pui-outline-offset)"
150
149
  }
151
150
  },
152
- children: [action.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
151
+ children: [action.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
153
152
  component: "span",
154
153
  "aria-hidden": "true",
155
154
  sx: {
@@ -165,20 +164,22 @@ function BannerActionButton(_ref) {
165
164
  }), action.label]
166
165
  });
167
166
  }
168
- function Banner(_ref2) {
169
- var _ref2$variant = _ref2.variant,
170
- variant = _ref2$variant === void 0 ? "info" : _ref2$variant,
171
- children = _ref2.children,
172
- title = _ref2.title,
173
- action = _ref2.action,
174
- secondaryAction = _ref2.secondaryAction,
175
- onClose = _ref2.onClose,
176
- _ref2$closeLabel = _ref2.closeLabel,
177
- closeLabel = _ref2$closeLabel === void 0 ? "Fermer" : _ref2$closeLabel;
178
- var cfg = VARIANT[variant] || VARIANT.info;
179
- var Icon = cfg.icon;
180
- var isErr = variant === "error";
181
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
167
+ function Banner({
168
+ variant = "info",
169
+ children,
170
+ title,
171
+ action,
172
+ // { label, onClick, icon } — primary
173
+ secondaryAction,
174
+ // { label, onClick, icon } — subordinate (G-19)
175
+ onClose,
176
+ // optional dismissal (✕), distinct from an action
177
+ closeLabel = "Fermer"
178
+ }) {
179
+ const cfg = VARIANT[variant] || VARIANT.info;
180
+ const Icon = cfg.icon;
181
+ const isErr = variant === "error";
182
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
182
183
  role: isErr ? "alert" : "status",
183
184
  "aria-live": isErr ? "assertive" : "polite",
184
185
  "aria-relevant": "additions text",
@@ -193,7 +194,7 @@ function Banner(_ref2) {
193
194
  // maximum legibility (the soft bg is light, --fg is the darkest).
194
195
  color: "var(--fg)",
195
196
  // Border on the saturated variant colour - meets 1.4.11.
196
- border: "1px solid ".concat(cfg.fg),
197
+ border: `1px solid ${cfg.fg}`,
197
198
  fontSize: "var(--text-sm)"
198
199
  },
199
200
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Icon, {
@@ -211,24 +212,24 @@ function Banner(_ref2) {
211
212
  marginTop: 2,
212
213
  flexShrink: 0
213
214
  }
214
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
215
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
215
216
  sx: {
216
217
  flex: 1
217
218
  },
218
219
  children: [title &&
219
220
  /*#__PURE__*/
220
221
  // Title uses cfg.text - passes 1.4.3 (≥ 4.5:1) on cfg.bg.
221
- (0, _jsxRuntime.jsx)(_Box["default"], {
222
+ (0, _jsxRuntime.jsx)(_Box.default, {
222
223
  sx: {
223
224
  fontWeight: "var(--fw-semibold)",
224
225
  marginBottom: "var(--s-1)",
225
226
  color: cfg.text
226
227
  },
227
228
  children: title
228
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
229
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
229
230
  children: children
230
231
  })]
231
- }), (action || secondaryAction) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
232
+ }), (action || secondaryAction) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
232
233
  sx: {
233
234
  display: "flex",
234
235
  alignItems: "center",
@@ -244,7 +245,7 @@ function Banner(_ref2) {
244
245
  color: cfg.text,
245
246
  emphasis: "primary"
246
247
  })]
247
- }), onClose && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton["default"], {
248
+ }), onClose && /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
248
249
  "aria-label": closeLabel,
249
250
  size: "small",
250
251
  onClick: onClose
@@ -254,11 +255,11 @@ function Banner(_ref2) {
254
255
  color: cfg.fg,
255
256
  marginRight: "calc(-1 * var(--s-1))"
256
257
  },
257
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Close["default"], {
258
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Close.default, {
258
259
  fontSize: "small"
259
260
  })
260
261
  })]
261
262
  });
262
263
  }
263
- var _default = exports["default"] = Banner;
264
+ var _default = exports.default = Banner;
264
265
  //# sourceMappingURL=Banner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Banner.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_IconButton","_Close","_Check","_ErrorOutlined","_WarningAmberOutlined","_InfoOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","VARIANT","info","bg","fg","text","icon","InfoIcon","success","CheckIcon","warning","WarningIcon","error","ErrorIcon","BannerActionButton","_ref","action","color","emphasis","isPrimary","jsxs","component","type","onClick","sx","display","alignItems","gap","background","border","concat","padding","borderRadius","fontSize","fontWeight","textDecoration","cursor","fontFamily","whiteSpace","transition","outline","outlineOffset","children","jsx","flexShrink","label","Banner","_ref2","_ref2$variant","variant","title","secondaryAction","onClose","_ref2$closeLabel","closeLabel","cfg","Icon","isErr","role","style","marginTop","flex","marginBottom","size","marginRight","_default","exports"],"sources":["../../../src/lib/v2/components/Banner.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport type { SvgIconComponent } from \"@mui/icons-material\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\nimport WarningIcon from \"@mui/icons-material/WarningAmberOutlined\";\r\nimport InfoIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * Banner - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Banner\". For persistent system-wide messages\r\n * (network error, maintenance, banner alerts on top of a section).\r\n *\r\n * R-A.2 - Erreur bloquante = role=\"alert\" aria-live=\"assertive\".\r\n * R-F.1 - Focus visible required on the action button.\r\n *\r\n * <Banner variant=\"error\" action={{ label: \"Réessayer\", onClick: retry }}>\r\n * Connexion perdue.\r\n * </Banner>\r\n *\r\n * Action cluster (capability gap G-19)\r\n * ------------------------------------\r\n * `action` is the primary affordance (outlined). `secondaryAction` is the\r\n * subordinate one (borderless + underlined), rendered to its LEFT per the\r\n * charter's R-M.6 ordering (« action principale à droite, secondaire à gauche »).\r\n * Both accept an optional leading `icon`.\r\n *\r\n * <Banner\r\n * variant=\"info\"\r\n * title=\"Brouillon trouvé\"\r\n * action={{ label: \"Restaurer\", onClick: restore }}\r\n * secondaryAction={{ label: \"Ignorer\", onClick: discard }}\r\n * >\r\n * Une saisie en cours a été détectée sur ce poste.\r\n * </Banner>\r\n *\r\n * WHY THIS WAS ADDED. Banner previously destructured a FIXED prop list with no\r\n * rest spread and supported neither `secondaryAction` nor `action.icon`. Every\r\n * audited module had nonetheless passed them — four dead props in addpe-fe alone\r\n * (its own comments record the discovery) — so the affordances silently did not\r\n * exist: a draft-restore banner offered \"Restaurer\" with NO way to dismiss, and\r\n * error banners lost their intended escape hatch. Props that look supported and\r\n * are dropped in silence are worse than absent ones, because a reviewer reading\r\n * the call site believes the affordance ships.\r\n *\r\n * `onClose` remains a distinct concern: it is DISMISSAL (an ✕ icon-button), not\r\n * an action. Use `secondaryAction` when the second choice carries business\r\n * meaning (\"Ignorer\" clears a draft; \"Retour à la liste\" navigates).\r\n *\r\n * Localisation (FR / EN / AR):\r\n * - `action.label` / `secondaryAction.label` are consumer-controlled.\r\n * - `closeLabel` overrides the dismiss button's aria-label\r\n * (default \"Fermer\").\r\n *\r\n * A11y note (WCAG 1.4.3):\r\n * Each variant carries TWO colours - a saturated one for icons + border\r\n * (passes 1.4.11 ≥ 3:1) and a darker -fg one for text (passes 1.4.3\r\n * ≥ 4.5:1) on the soft background. Don't collapse them.\r\n *\r\n * A11y note (live regions, R-A.1 / R-A.2):\r\n * aria-relevant=\"additions text\" is set explicitly. Per WAI-ARIA both\r\n * role=\"alert\" and role=\"status\" imply this default, but real-world\r\n * SR + browser combos (NVDA + Firefox especially) have shipped\r\n * announcement-skipping bugs in the absence of an explicit attribute.\r\n * Defense-in-depth.\r\n */\r\n\r\nexport type BannerVariant = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\ninterface BannerVariantConfig {\r\n bg: string;\r\n fg: string;\r\n text: string;\r\n icon: SvgIconComponent;\r\n}\r\n\r\nconst VARIANT: Record<BannerVariant, BannerVariantConfig> = {\r\n info: { bg: \"var(--info-soft)\", fg: \"var(--info)\", text: \"var(--info-fg)\", icon: InfoIcon },\r\n success: { bg: \"var(--success-soft)\", fg: \"var(--success)\", text: \"var(--success-fg)\", icon: CheckIcon },\r\n warning: { bg: \"var(--warning-soft)\", fg: \"var(--warning)\", text: \"var(--warning-fg)\", icon: WarningIcon },\r\n error: { bg: \"var(--danger-soft)\", fg: \"var(--danger)\", text: \"var(--danger-fg)\", icon: ErrorIcon },\r\n};\r\n\r\nexport interface BannerAction {\r\n label: React.ReactNode;\r\n onClick?: (() => void) | undefined;\r\n /**\r\n * Optional leading icon. Rendered `aria-hidden` — the label carries the\r\n * accessible name (R-Ar.2), so an icon-only banner action is not supported by\r\n * design: a banner action must read as a verb+object CTA (§09.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface BannerProps {\r\n variant?: BannerVariant | undefined;\r\n children: React.ReactNode;\r\n title?: React.ReactNode | undefined;\r\n /** Primary affordance — outlined, rendered rightmost of the cluster. */\r\n action?: BannerAction | undefined;\r\n /** Subordinate affordance — borderless, rendered LEFT of `action` (R-M.6). */\r\n secondaryAction?: BannerAction | undefined;\r\n onClose?: (() => void) | undefined;\r\n closeLabel?: string | undefined;\r\n}\r\n\r\n/**\r\n * One button of the action cluster. Extracted rather than duplicated: the two\r\n * emphases differ only by border and underline, and a second inline copy of a\r\n * 25-line `sx` block is exactly how the focus-visible and contrast guarantees\r\n * below drift apart.\r\n *\r\n * Colour is `cfg.text` for BOTH border and label — it passes 1.4.3 (≥ 4.5:1) as\r\n * text and 1.4.11 (≥ 3:1) as a UI boundary on the soft background. Do not swap\r\n * it for `cfg.fg`, which only clears the non-text threshold.\r\n */\r\nfunction BannerActionButton({\r\n action,\r\n color,\r\n emphasis,\r\n}: {\r\n action: BannerAction;\r\n color: string;\r\n emphasis: \"primary\" | \"secondary\";\r\n}) {\r\n const isPrimary = emphasis === \"primary\";\r\n return (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={action.onClick}\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n background: \"transparent\",\r\n /* Transparent border on the secondary keeps both buttons on the same\r\n * baseline and the same height — without it the cluster jitters. */\r\n border: `1px solid ${isPrimary ? color : \"transparent\"}`,\r\n color,\r\n padding: \"var(--s-1) var(--s-3)\",\r\n borderRadius: \"var(--r-sm)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n textDecoration: isPrimary ? \"none\" : \"underline\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n whiteSpace: \"nowrap\",\r\n transition: \"background var(--duration-fast) ease\",\r\n \"&:hover\": {\r\n background: \"color-mix(in srgb, currentColor 10%, transparent)\",\r\n },\r\n // R-F.1 - focus-visible required, charter §05.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid currentColor\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {action.icon && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n /* Normalise a consumer-supplied MUI icon (24px by default) onto the\r\n * label's optical scale. --text-h3 is the 16px token. */\r\n \"& > *\": { fontSize: \"var(--text-h3)\" },\r\n }}\r\n >\r\n {action.icon}\r\n </Box>\r\n )}\r\n {action.label}\r\n </Box>\r\n );\r\n}\r\n\r\nfunction Banner({\r\n variant = \"info\",\r\n children,\r\n title,\r\n action, // { label, onClick, icon } — primary\r\n secondaryAction, // { label, onClick, icon } — subordinate (G-19)\r\n onClose, // optional dismissal (✕), distinct from an action\r\n closeLabel = \"Fermer\",\r\n}: BannerProps) {\r\n const cfg = VARIANT[variant] || VARIANT.info;\r\n const Icon = cfg.icon;\r\n const isErr = variant === \"error\";\r\n\r\n return (\r\n <Box\r\n role={isErr ? \"alert\" : \"status\"}\r\n aria-live={isErr ? \"assertive\" : \"polite\"}\r\n aria-relevant=\"additions text\"\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n background: cfg.bg,\r\n // Body text inherits this colour - keep at standard --fg for\r\n // maximum legibility (the soft bg is light, --fg is the darkest).\r\n color: \"var(--fg)\",\r\n // Border on the saturated variant colour - meets 1.4.11.\r\n border: `1px solid ${cfg.fg}`,\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n <Icon\r\n fontSize=\"small\"\r\n aria-hidden=\"true\"\r\n // Icon stays on cfg.fg - passes 1.4.11 (≥ 3:1) for non-text UI.\r\n sx={{ color: cfg.fg }}\r\n // Optical alignment of the icon with the first text line -\r\n // deliberate non-token value (not a spacing token concern).\r\n style={{ marginTop: 2, flexShrink: 0 }}\r\n />\r\n <Box sx={{ flex: 1 }}>\r\n {title && (\r\n // Title uses cfg.text - passes 1.4.3 (≥ 4.5:1) on cfg.bg.\r\n <Box sx={{ fontWeight: \"var(--fw-semibold)\", marginBottom: \"var(--s-1)\", color: cfg.text }}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box>{children}</Box>\r\n </Box>\r\n {(action || secondaryAction) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {/* R-M.6 — secondary on the LEFT, primary on the right. */}\r\n {secondaryAction && (\r\n <BannerActionButton\r\n action={secondaryAction}\r\n color={cfg.text}\r\n emphasis=\"secondary\"\r\n />\r\n )}\r\n {action && (\r\n <BannerActionButton\r\n action={action}\r\n color={cfg.text}\r\n emphasis=\"primary\"\r\n />\r\n )}\r\n </Box>\r\n )}\r\n {onClose && (\r\n <IconButton\r\n aria-label={closeLabel}\r\n size=\"small\"\r\n onClick={onClose}\r\n // Close icon is non-text UI - cfg.fg is fine (1.4.11).\r\n sx={{ color: cfg.fg, marginRight: \"calc(-1 * var(--s-1))\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Banner;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Banner.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_IconButton","_Close","_Check","_ErrorOutlined","_WarningAmberOutlined","_InfoOutlined","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","VARIANT","info","bg","fg","text","icon","InfoIcon","success","CheckIcon","warning","WarningIcon","error","ErrorIcon","BannerActionButton","action","color","emphasis","isPrimary","jsxs","component","type","onClick","sx","display","alignItems","gap","background","border","padding","borderRadius","fontSize","fontWeight","textDecoration","cursor","fontFamily","whiteSpace","transition","outline","outlineOffset","children","jsx","flexShrink","label","Banner","variant","title","secondaryAction","onClose","closeLabel","cfg","Icon","isErr","role","style","marginTop","flex","marginBottom","size","marginRight","_default","exports"],"sources":["../../../src/lib/v2/components/Banner.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport type { SvgIconComponent } from \"@mui/icons-material\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\nimport WarningIcon from \"@mui/icons-material/WarningAmberOutlined\";\r\nimport InfoIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * Banner - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Banner\". For persistent system-wide messages\r\n * (network error, maintenance, banner alerts on top of a section).\r\n *\r\n * R-A.2 - Erreur bloquante = role=\"alert\" aria-live=\"assertive\".\r\n * R-F.1 - Focus visible required on the action button.\r\n *\r\n * <Banner variant=\"error\" action={{ label: \"Réessayer\", onClick: retry }}>\r\n * Connexion perdue.\r\n * </Banner>\r\n *\r\n * Action cluster (capability gap G-19)\r\n * ------------------------------------\r\n * `action` is the primary affordance (outlined). `secondaryAction` is the\r\n * subordinate one (borderless + underlined), rendered to its LEFT per the\r\n * charter's R-M.6 ordering (« action principale à droite, secondaire à gauche »).\r\n * Both accept an optional leading `icon`.\r\n *\r\n * <Banner\r\n * variant=\"info\"\r\n * title=\"Brouillon trouvé\"\r\n * action={{ label: \"Restaurer\", onClick: restore }}\r\n * secondaryAction={{ label: \"Ignorer\", onClick: discard }}\r\n * >\r\n * Une saisie en cours a été détectée sur ce poste.\r\n * </Banner>\r\n *\r\n * WHY THIS WAS ADDED. Banner previously destructured a FIXED prop list with no\r\n * rest spread and supported neither `secondaryAction` nor `action.icon`. Every\r\n * audited module had nonetheless passed them — four dead props in addpe-fe alone\r\n * (its own comments record the discovery) — so the affordances silently did not\r\n * exist: a draft-restore banner offered \"Restaurer\" with NO way to dismiss, and\r\n * error banners lost their intended escape hatch. Props that look supported and\r\n * are dropped in silence are worse than absent ones, because a reviewer reading\r\n * the call site believes the affordance ships.\r\n *\r\n * `onClose` remains a distinct concern: it is DISMISSAL (an ✕ icon-button), not\r\n * an action. Use `secondaryAction` when the second choice carries business\r\n * meaning (\"Ignorer\" clears a draft; \"Retour à la liste\" navigates).\r\n *\r\n * Localisation (FR / EN / AR):\r\n * - `action.label` / `secondaryAction.label` are consumer-controlled.\r\n * - `closeLabel` overrides the dismiss button's aria-label\r\n * (default \"Fermer\").\r\n *\r\n * A11y note (WCAG 1.4.3):\r\n * Each variant carries TWO colours - a saturated one for icons + border\r\n * (passes 1.4.11 ≥ 3:1) and a darker -fg one for text (passes 1.4.3\r\n * ≥ 4.5:1) on the soft background. Don't collapse them.\r\n *\r\n * A11y note (live regions, R-A.1 / R-A.2):\r\n * aria-relevant=\"additions text\" is set explicitly. Per WAI-ARIA both\r\n * role=\"alert\" and role=\"status\" imply this default, but real-world\r\n * SR + browser combos (NVDA + Firefox especially) have shipped\r\n * announcement-skipping bugs in the absence of an explicit attribute.\r\n * Defense-in-depth.\r\n */\r\n\r\nexport type BannerVariant = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\ninterface BannerVariantConfig {\r\n bg: string;\r\n fg: string;\r\n text: string;\r\n icon: SvgIconComponent;\r\n}\r\n\r\nconst VARIANT: Record<BannerVariant, BannerVariantConfig> = {\r\n info: { bg: \"var(--info-soft)\", fg: \"var(--info)\", text: \"var(--info-fg)\", icon: InfoIcon },\r\n success: { bg: \"var(--success-soft)\", fg: \"var(--success)\", text: \"var(--success-fg)\", icon: CheckIcon },\r\n warning: { bg: \"var(--warning-soft)\", fg: \"var(--warning)\", text: \"var(--warning-fg)\", icon: WarningIcon },\r\n error: { bg: \"var(--danger-soft)\", fg: \"var(--danger)\", text: \"var(--danger-fg)\", icon: ErrorIcon },\r\n};\r\n\r\nexport interface BannerAction {\r\n label: React.ReactNode;\r\n onClick?: (() => void) | undefined;\r\n /**\r\n * Optional leading icon. Rendered `aria-hidden` — the label carries the\r\n * accessible name (R-Ar.2), so an icon-only banner action is not supported by\r\n * design: a banner action must read as a verb+object CTA (§09.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface BannerProps {\r\n variant?: BannerVariant | undefined;\r\n children: React.ReactNode;\r\n title?: React.ReactNode | undefined;\r\n /** Primary affordance — outlined, rendered rightmost of the cluster. */\r\n action?: BannerAction | undefined;\r\n /** Subordinate affordance — borderless, rendered LEFT of `action` (R-M.6). */\r\n secondaryAction?: BannerAction | undefined;\r\n onClose?: (() => void) | undefined;\r\n closeLabel?: string | undefined;\r\n}\r\n\r\n/**\r\n * One button of the action cluster. Extracted rather than duplicated: the two\r\n * emphases differ only by border and underline, and a second inline copy of a\r\n * 25-line `sx` block is exactly how the focus-visible and contrast guarantees\r\n * below drift apart.\r\n *\r\n * Colour is `cfg.text` for BOTH border and label — it passes 1.4.3 (≥ 4.5:1) as\r\n * text and 1.4.11 (≥ 3:1) as a UI boundary on the soft background. Do not swap\r\n * it for `cfg.fg`, which only clears the non-text threshold.\r\n */\r\nfunction BannerActionButton({\r\n action,\r\n color,\r\n emphasis,\r\n}: {\r\n action: BannerAction;\r\n color: string;\r\n emphasis: \"primary\" | \"secondary\";\r\n}) {\r\n const isPrimary = emphasis === \"primary\";\r\n return (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={action.onClick}\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n background: \"transparent\",\r\n /* Transparent border on the secondary keeps both buttons on the same\r\n * baseline and the same height — without it the cluster jitters. */\r\n border: `1px solid ${isPrimary ? color : \"transparent\"}`,\r\n color,\r\n padding: \"var(--s-1) var(--s-3)\",\r\n borderRadius: \"var(--r-sm)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n textDecoration: isPrimary ? \"none\" : \"underline\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n whiteSpace: \"nowrap\",\r\n transition: \"background var(--duration-fast) ease\",\r\n \"&:hover\": {\r\n background: \"color-mix(in srgb, currentColor 10%, transparent)\",\r\n },\r\n // R-F.1 - focus-visible required, charter §05.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid currentColor\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {action.icon && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n /* Normalise a consumer-supplied MUI icon (24px by default) onto the\r\n * label's optical scale. --text-h3 is the 16px token. */\r\n \"& > *\": { fontSize: \"var(--text-h3)\" },\r\n }}\r\n >\r\n {action.icon}\r\n </Box>\r\n )}\r\n {action.label}\r\n </Box>\r\n );\r\n}\r\n\r\nfunction Banner({\r\n variant = \"info\",\r\n children,\r\n title,\r\n action, // { label, onClick, icon } — primary\r\n secondaryAction, // { label, onClick, icon } — subordinate (G-19)\r\n onClose, // optional dismissal (✕), distinct from an action\r\n closeLabel = \"Fermer\",\r\n}: BannerProps) {\r\n const cfg = VARIANT[variant] || VARIANT.info;\r\n const Icon = cfg.icon;\r\n const isErr = variant === \"error\";\r\n\r\n return (\r\n <Box\r\n role={isErr ? \"alert\" : \"status\"}\r\n aria-live={isErr ? \"assertive\" : \"polite\"}\r\n aria-relevant=\"additions text\"\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n background: cfg.bg,\r\n // Body text inherits this colour - keep at standard --fg for\r\n // maximum legibility (the soft bg is light, --fg is the darkest).\r\n color: \"var(--fg)\",\r\n // Border on the saturated variant colour - meets 1.4.11.\r\n border: `1px solid ${cfg.fg}`,\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n <Icon\r\n fontSize=\"small\"\r\n aria-hidden=\"true\"\r\n // Icon stays on cfg.fg - passes 1.4.11 (≥ 3:1) for non-text UI.\r\n sx={{ color: cfg.fg }}\r\n // Optical alignment of the icon with the first text line -\r\n // deliberate non-token value (not a spacing token concern).\r\n style={{ marginTop: 2, flexShrink: 0 }}\r\n />\r\n <Box sx={{ flex: 1 }}>\r\n {title && (\r\n // Title uses cfg.text - passes 1.4.3 (≥ 4.5:1) on cfg.bg.\r\n <Box sx={{ fontWeight: \"var(--fw-semibold)\", marginBottom: \"var(--s-1)\", color: cfg.text }}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box>{children}</Box>\r\n </Box>\r\n {(action || secondaryAction) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {/* R-M.6 — secondary on the LEFT, primary on the right. */}\r\n {secondaryAction && (\r\n <BannerActionButton\r\n action={secondaryAction}\r\n color={cfg.text}\r\n emphasis=\"secondary\"\r\n />\r\n )}\r\n {action && (\r\n <BannerActionButton\r\n action={action}\r\n color={cfg.text}\r\n emphasis=\"primary\"\r\n />\r\n )}\r\n </Box>\r\n )}\r\n {onClose && (\r\n <IconButton\r\n aria-label={closeLabel}\r\n size=\"small\"\r\n onClick={onClose}\r\n // Close icon is non-text UI - cfg.fg is fine (1.4.11).\r\n sx={{ color: cfg.fg, marginRight: \"calc(-1 * var(--s-1))\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Banner;\r\n"],"mappings":"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","ignoreList":[]}