@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _Dialog = _interopRequireDefault(require("@mui/material/Dialog"));
9
9
  var _DialogTitle = _interopRequireDefault(require("@mui/material/DialogTitle"));
@@ -17,15 +17,9 @@ var _styles = require("@mui/material/styles");
17
17
  var _tokens = require("../tokens");
18
18
  var _useFocusTrap = _interopRequireDefault(require("../hooks/useFocusTrap"));
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
- 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); }
22
- 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; }
23
- 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); }
24
- 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; }
25
- 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; }
26
- 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; }
27
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
28
- 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); } /**
20
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
+ 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); }
22
+ /**
29
23
  * Modal - Portnet UI v2
30
24
  *
31
25
  * Charter §03 · Component "Modal · Dialog".
@@ -81,14 +75,15 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
81
75
  * (a leftover from MUI's 1100..1500 scale before the v2 remap to
82
76
  * 0..250); that buried those in-modal popups (at 100) behind the modal
83
77
  * and pushed the modal above toasts/tooltips.
84
- */ /* ── Hoisted static sx (D5) ────────────────────────────────────────────
78
+ */
79
+
80
+ /* ── Hoisted static sx (D5) ────────────────────────────────────────────
85
81
  * Frozen at module load. Same emotion / allocation rationale as Tabs +
86
82
  * DataGrid hoisting. The paper slotProps cannot be fully hoisted because
87
83
  * it embeds the dynamic `maxWidth` (size-driven) and the `ref` (per
88
84
  * Modal instance) — its static base is hoisted and the dynamic
89
85
  * additions are layered via useMemo at the call site.
90
- */
91
- var DIALOG_ROOT_SX = Object.freeze({
86
+ */const DIALOG_ROOT_SX = Object.freeze({
92
87
  // v2 z-index token (zIndex.js). modal:100 sits ABOVE drawer:80 (so a
93
88
  // Modal opened from inside a Drawer stacks correctly) and BELOW
94
89
  // snackbar:150 / toast:200 / tooltip:250. In-modal MUI popups
@@ -103,14 +98,14 @@ var DIALOG_ROOT_SX = Object.freeze({
103
98
  // at the Dialog top-level in v5/v6/v7, removed in v9). The content
104
99
  // `{ sx: {...} }` is unchanged — the backdrop slot receives the same
105
100
  // shape.
106
- var BACKDROP_SLOT_PROPS = Object.freeze({
101
+ const BACKDROP_SLOT_PROPS = Object.freeze({
107
102
  // R-AI.1 - backdrop derived from the live --fg token instead of hard
108
103
  // rgba(15,21,37,...). Adapts to any future theme override.
109
104
  sx: {
110
105
  backgroundColor: "color-mix(in srgb, var(--fg) 45%, transparent)"
111
106
  }
112
107
  });
113
- var PAPER_BASE_SX = Object.freeze({
108
+ const PAPER_BASE_SX = Object.freeze({
114
109
  width: "100%",
115
110
  borderRadius: "var(--r-lg)",
116
111
  boxShadow: "var(--shadow-lg)"
@@ -121,103 +116,100 @@ var PAPER_BASE_SX = Object.freeze({
121
116
  * paper fill the viewport. maxWidth is forced to 100% so the size-driven
122
117
  * token max-width can't re-clamp it. Kept as a frozen module constant so
123
118
  * the reference is stable across renders. */
124
- var PAPER_FULLSCREEN_SX = Object.freeze({
119
+ const PAPER_FULLSCREEN_SX = Object.freeze({
125
120
  width: "100%",
126
121
  maxWidth: "100%",
127
122
  borderRadius: 0,
128
123
  boxShadow: "none"
129
124
  });
130
- var DIALOG_TITLE_SX = Object.freeze({
125
+ const DIALOG_TITLE_SX = Object.freeze({
131
126
  padding: "var(--s-4) var(--s-5) var(--s-2)",
132
127
  display: "flex",
133
128
  alignItems: "flex-start",
134
129
  justifyContent: "space-between",
135
130
  gap: "var(--s-2)"
136
131
  });
137
- var TITLE_TYPOGRAPHY_SX = Object.freeze({
132
+ const TITLE_TYPOGRAPHY_SX = Object.freeze({
138
133
  fontSize: "var(--text-h3)",
139
134
  fontWeight: "var(--fw-bold)",
140
135
  color: "var(--fg)"
141
136
  });
142
- var SUBTITLE_TYPOGRAPHY_SX = Object.freeze({
137
+ const SUBTITLE_TYPOGRAPHY_SX = Object.freeze({
143
138
  fontSize: "var(--text-sm)",
144
139
  color: "var(--fg-muted)",
145
140
  marginTop: "var(--s-1)"
146
141
  });
147
- var CLOSE_ICON_BUTTON_SX = Object.freeze({
142
+ const CLOSE_ICON_BUTTON_SX = Object.freeze({
148
143
  color: "var(--fg-subtle)",
149
144
  marginRight: "calc(-1 * var(--s-1))",
150
145
  marginTop: "calc(-1 * var(--s-1))"
151
146
  });
152
- var DIALOG_CONTENT_SX = Object.freeze({
147
+ const DIALOG_CONTENT_SX = Object.freeze({
153
148
  padding: "var(--s-4) var(--s-5)",
154
149
  borderColor: "var(--border)"
155
150
  });
156
- var DIALOG_ACTIONS_SX = Object.freeze({
151
+ const DIALOG_ACTIONS_SX = Object.freeze({
157
152
  padding: "var(--s-3) var(--s-5) var(--s-4)",
158
153
  gap: "var(--s-2)"
159
154
  });
160
- function Modal(_ref) {
161
- var open = _ref.open,
162
- onClose = _ref.onClose,
163
- title = _ref.title,
164
- subtitle = _ref.subtitle,
165
- children = _ref.children,
166
- footer = _ref.footer,
167
- _ref$size = _ref.size,
168
- size = _ref$size === void 0 ? "md" : _ref$size,
169
- _ref$disableBackdropC = _ref.disableBackdropClick,
170
- disableBackdropClick = _ref$disableBackdropC === void 0 ? false : _ref$disableBackdropC,
171
- _ref$disableEscape = _ref.disableEscape,
172
- disableEscape = _ref$disableEscape === void 0 ? false : _ref$disableEscape,
173
- _ref$fullScreenOnMobi = _ref.fullScreenOnMobile,
174
- fullScreenOnMobile = _ref$fullScreenOnMobi === void 0 ? true : _ref$fullScreenOnMobi,
175
- ariaLabel = _ref.ariaLabel,
176
- _ref$ariaLabelClose = _ref.ariaLabelClose,
177
- ariaLabelClose = _ref$ariaLabelClose === void 0 ? "Fermer la boîte de dialogue" : _ref$ariaLabelClose;
155
+ function Modal({
156
+ open,
157
+ onClose,
158
+ title,
159
+ subtitle,
160
+ children,
161
+ footer,
162
+ size = "md",
163
+ disableBackdropClick = false,
164
+ disableEscape = false,
165
+ fullScreenOnMobile = true,
166
+ ariaLabel,
167
+ ariaLabelClose = "Fermer la boîte de dialogue"
168
+ }) {
178
169
  // R-Ar.5 - stable, per-instance, collision-safe ID for aria-labelledby.
179
- var titleId = React.useId();
170
+ const titleId = React.useId();
180
171
 
181
172
  // R-F.2 / R-M.2 - the v2 trap is wired on the Dialog Paper element,
182
173
  // activated only while the modal is open. MUI's own trap is disabled
183
174
  // via the disable*Focus props on Dialog below so the two implementations
184
175
  // don't compete for the same DOM event stream.
185
- var paperRef = React.useRef(null);
186
- (0, _useFocusTrap["default"])(paperRef, !!open);
176
+ const paperRef = React.useRef(null);
177
+ (0, _useFocusTrap.default)(paperRef, !!open);
187
178
 
188
179
  // R-RS.2 — full-screen below the `sm` breakpoint TOKEN (< 481px now
189
180
  // that tokens are wired into the theme). Reads the live theme so a host
190
181
  // breakpoint override is honoured. Gated behind fullScreenOnMobile so a
191
182
  // caller can keep a small confirm dialog centred on phones.
192
- var theme = (0, _styles.useTheme)();
193
- var isMobile = (0, _useMediaQuery["default"])(theme.breakpoints.down("sm"));
194
- var fullScreen = fullScreenOnMobile && isMobile;
195
- var handleClose = function handleClose(_e, reason) {
183
+ const theme = (0, _styles.useTheme)();
184
+ const isMobile = (0, _useMediaQuery.default)(theme.breakpoints.down("sm"));
185
+ const fullScreen = fullScreenOnMobile && isMobile;
186
+ const handleClose = (_e, reason) => {
196
187
  if (reason === "backdropClick" && disableBackdropClick) return;
197
188
  if (reason === "escapeKeyDown" && disableEscape) return;
198
- onClose === null || onClose === void 0 ? void 0 : onClose();
189
+ onClose?.();
199
190
  };
200
191
 
201
192
  // R-AI.1 - modal sizing is owned by the token system (layout.modal),
202
193
  // not duplicated here. See src/lib/v2/tokens/density.js.
203
- var maxWidth = _tokens.layout.modal[size] || _tokens.layout.modal.md;
194
+ const maxWidth = _tokens.layout.modal[size] || _tokens.layout.modal.md;
204
195
 
205
196
  // MUI v9: paper slot is forwarded through slotProps.paper. The slot
206
197
  // cannot be fully hoisted — embeds the dynamic maxWidth (size-driven)
207
198
  // and the per-instance ref. Memo on [maxWidth, fullScreen] so the
208
199
  // reference is stable until either the size or the mobile branch flips.
209
- var slotProps = React.useMemo(function () {
210
- return {
211
- paper: {
212
- ref: paperRef,
213
- sx: fullScreen ? _objectSpread({}, PAPER_FULLSCREEN_SX) : _objectSpread(_objectSpread({}, PAPER_BASE_SX), {}, {
214
- maxWidth: maxWidth
215
- })
216
- },
217
- backdrop: BACKDROP_SLOT_PROPS
218
- };
219
- }, [maxWidth, fullScreen]);
220
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog["default"], {
200
+ const slotProps = React.useMemo(() => ({
201
+ paper: {
202
+ ref: paperRef,
203
+ sx: fullScreen ? {
204
+ ...PAPER_FULLSCREEN_SX
205
+ } : {
206
+ ...PAPER_BASE_SX,
207
+ maxWidth
208
+ }
209
+ },
210
+ backdrop: BACKDROP_SLOT_PROPS
211
+ }), [maxWidth, fullScreen]);
212
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Dialog.default, {
221
213
  open: !!open,
222
214
  onClose: handleClose,
223
215
  role: "dialog",
@@ -245,37 +237,37 @@ function Modal(_ref) {
245
237
  ,
246
238
  sx: DIALOG_ROOT_SX,
247
239
  slotProps: slotProps,
248
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogTitle["default"], {
240
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_DialogTitle.default, {
249
241
  sx: DIALOG_TITLE_SX,
250
242
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
251
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography["default"], {
243
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
252
244
  id: titleId,
253
245
  variant: "h3",
254
246
  component: "h2",
255
247
  sx: TITLE_TYPOGRAPHY_SX,
256
248
  children: title
257
- }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography["default"], {
249
+ }), subtitle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
258
250
  sx: SUBTITLE_TYPOGRAPHY_SX,
259
251
  children: subtitle
260
252
  })]
261
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton["default"], {
253
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_IconButton.default, {
262
254
  "aria-label": ariaLabelClose,
263
255
  onClick: onClose,
264
256
  size: "small",
265
257
  sx: CLOSE_ICON_BUTTON_SX,
266
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Close["default"], {
258
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Close.default, {
267
259
  fontSize: "small"
268
260
  })
269
261
  })]
270
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContent["default"], {
262
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogContent.default, {
271
263
  dividers: !!footer,
272
264
  sx: DIALOG_CONTENT_SX,
273
265
  children: children
274
- }), footer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogActions["default"], {
266
+ }), footer && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialogActions.default, {
275
267
  sx: DIALOG_ACTIONS_SX,
276
268
  children: footer
277
269
  })]
278
270
  });
279
271
  }
280
- var _default = exports["default"] = Modal;
272
+ var _default = exports.default = Modal;
281
273
  //# sourceMappingURL=Modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_DialogTitle","_DialogContent","_DialogActions","_IconButton","_Close","_Typography","_useMediaQuery","_styles","_tokens","_useFocusTrap","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","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","toPrimitive","undefined","res","TypeError","Number","DIALOG_ROOT_SX","freeze","zIndex","modal","BACKDROP_SLOT_PROPS","sx","backgroundColor","PAPER_BASE_SX","width","borderRadius","boxShadow","PAPER_FULLSCREEN_SX","maxWidth","DIALOG_TITLE_SX","padding","display","alignItems","justifyContent","gap","TITLE_TYPOGRAPHY_SX","fontSize","fontWeight","color","SUBTITLE_TYPOGRAPHY_SX","marginTop","CLOSE_ICON_BUTTON_SX","marginRight","DIALOG_CONTENT_SX","borderColor","DIALOG_ACTIONS_SX","Modal","_ref","open","onClose","title","subtitle","children","footer","_ref$size","size","_ref$disableBackdropC","disableBackdropClick","_ref$disableEscape","disableEscape","_ref$fullScreenOnMobi","fullScreenOnMobile","ariaLabel","_ref$ariaLabelClose","ariaLabelClose","titleId","useId","paperRef","useRef","useFocusTrap","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","fullScreen","handleClose","_e","reason","layout","md","slotProps","useMemo","paper","ref","backdrop","jsxs","role","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","jsx","id","variant","component","onClick","dividers","_default","exports"],"sources":["../../../src/lib/v2/components/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { layout, zIndex } from \"../tokens\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\n\r\n/**\r\n * Modal - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Modal · Dialog\".\r\n *\r\n * R-M.1 - Closable via Esc + backdrop click + explicit X button.\r\n * R-M.2 - Focus trap when open, focus restored to trigger on close.\r\n * Backed by the v2 useFocusTrap hook (Batch 3) - honours\r\n * [autofocus] and [data-autofocus] markers, coordinates\r\n * with nested traps via a module-level trapStack, and\r\n * filters disabled/hidden/inert subtrees.\r\n * R-M.3 - role=\"dialog\" + aria-modal=\"true\" + aria-labelledby.\r\n * R-M.4 - No modal inside modal - use stepper flow.\r\n * R-M.5 - Use Drawer (not Modal) for ≥ 3 fields or long scroll.\r\n * R-M.6 - Action principale à droite, secondaire à gauche.\r\n * R-RS.2 - Below the `sm` breakpoint token (< 481px) the dialog goes\r\n * FULL-SCREEN by default. A md/lg/xl modal centred with its\r\n * token max-width left only a thin sliver of usable width at\r\n * 320–375px; full-screen restores a usable reading column and\r\n * keeps the footer actions reachable (WCAG 1.4.10 Reflow).\r\n * Opt out with fullScreenOnMobile={false} for genuinely tiny\r\n * confirm dialogs that read better centred.\r\n *\r\n * <Modal open={open} onClose={close} title=\"Confirmation\" size=\"sm\"\r\n * footer={<><Button variant=\"ghost\" onClick={close}>Annuler</Button>\r\n * <Button variant=\"primary\">OK</Button></>}>\r\n * Body content here.\r\n * </Modal>\r\n *\r\n * Accessible name (R-Ar.5 / R-M.3):\r\n * `aria-labelledby` points at the title <Typography> (id=titleId), so the\r\n * dialog's accessible name is the title text ONLY — the close button and\r\n * subtitle are not part of it. When no `title` is provided, pass `ariaLabel`\r\n * to name the dialog; otherwise it would have no accessible name.\r\n *\r\n * Initial focus targeting (R-Ar.4):\r\n * By default the FIRST focusable element of the dialog gets focus on\r\n * open. To opt a specific control in (e.g. the destructive \"Delete\"\r\n * button which intentionally is NOT first), mark it with either:\r\n * - React's <button autoFocus> attribute (standard), or\r\n * - <button data-autofocus> (v2 marker, identical effect).\r\n * Both are matched by useFocusTrap's AUTOFOCUS_SELECTORS.\r\n *\r\n * Stacking:\r\n * The modal's portal layer uses the v2 `zIndex.modal` token (100), so\r\n * it stacks ABOVE a Drawer (zIndex.drawer:80) when opened from inside\r\n * one (e.g. a ReferentielField search launched from the filters Drawer)\r\n * and BELOW snackbar:150 / toast:200 / tooltip:250 so notifications and\r\n * tooltips fired from a modal action stay on top. MUI popups rendered\r\n * inside the modal — Combobox/Autocomplete listboxes and X date-picker\r\n * calendars — also render at theme.zIndex.modal (100) and, opening\r\n * after the dialog, paint above it by DOM order (MUI's own\r\n * Dialog+Autocomplete contract). A previous build hardcoded 1350 here\r\n * (a leftover from MUI's 1100..1500 scale before the v2 remap to\r\n * 0..250); that buried those in-modal popups (at 100) behind the modal\r\n * and pushed the modal above toasts/tooltips.\r\n */\r\n\r\n/* ── Hoisted static sx (D5) ────────────────────────────────────────────\r\n * Frozen at module load. Same emotion / allocation rationale as Tabs +\r\n * DataGrid hoisting. The paper slotProps cannot be fully hoisted because\r\n * it embeds the dynamic `maxWidth` (size-driven) and the `ref` (per\r\n * Modal instance) — its static base is hoisted and the dynamic\r\n * additions are layered via useMemo at the call site.\r\n */\r\n\r\nconst DIALOG_ROOT_SX = Object.freeze({\r\n // v2 z-index token (zIndex.js). modal:100 sits ABOVE drawer:80 (so a\r\n // Modal opened from inside a Drawer stacks correctly) and BELOW\r\n // snackbar:150 / toast:200 / tooltip:250. In-modal MUI popups\r\n // (Combobox listboxes, X date-picker calendars) also use\r\n // theme.zIndex.modal and paint above the dialog by DOM order. The\r\n // previous hardcoded 1350 predated the v2 remap of MUI's 1100..1500\r\n // scale down to 0..250.\r\n zIndex: zIndex.modal,\r\n});\r\n\r\n// MUI v9: backdrop forwarded via slotProps.backdrop (was BackdropProps\r\n// at the Dialog top-level in v5/v6/v7, removed in v9). The content\r\n// `{ sx: {...} }` is unchanged — the backdrop slot receives the same\r\n// shape.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-AI.1 - backdrop derived from the live --fg token instead of hard\r\n // rgba(15,21,37,...). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nconst PAPER_BASE_SX = Object.freeze({\r\n width: \"100%\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n});\r\n\r\n/* R-RS.2 — full-screen paper sx for the mobile (< sm token) branch.\r\n * Drops the rounded corners + shadow (no longer floating) and lets the\r\n * paper fill the viewport. maxWidth is forced to 100% so the size-driven\r\n * token max-width can't re-clamp it. Kept as a frozen module constant so\r\n * the reference is stable across renders. */\r\nconst PAPER_FULLSCREEN_SX = Object.freeze({\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n borderRadius: 0,\r\n boxShadow: \"none\",\r\n});\r\n\r\nconst DIALOG_TITLE_SX = Object.freeze({\r\n padding: \"var(--s-4) var(--s-5) var(--s-2)\",\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TITLE_TYPOGRAPHY_SX = Object.freeze({\r\n fontSize: \"var(--text-h3)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst SUBTITLE_TYPOGRAPHY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: \"var(--s-1)\",\r\n});\r\n\r\nconst CLOSE_ICON_BUTTON_SX = Object.freeze({\r\n color: \"var(--fg-subtle)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst DIALOG_CONTENT_SX = Object.freeze({\r\n padding: \"var(--s-4) var(--s-5)\",\r\n borderColor: \"var(--border)\",\r\n});\r\n\r\nconst DIALOG_ACTIONS_SX = Object.freeze({\r\n padding: \"var(--s-3) var(--s-5) var(--s-4)\",\r\n gap: \"var(--s-2)\",\r\n});\r\n\r\nexport type ModalSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface ModalProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n title?: React.ReactNode | undefined;\r\n subtitle?: React.ReactNode | undefined;\r\n children?: React.ReactNode | undefined;\r\n footer?: React.ReactNode | undefined;\r\n size?: ModalSize | undefined;\r\n disableBackdropClick?: boolean | undefined;\r\n disableEscape?: boolean | undefined;\r\n /** R-RS.2 — go full-screen below the `sm` token (< 481px). Default true. */\r\n fullScreenOnMobile?: boolean | undefined;\r\n /** Accessible name for the dialog when no `title` is rendered (R-M.3). */\r\n ariaLabel?: string | undefined;\r\n ariaLabelClose?: string | undefined;\r\n}\r\n\r\nfunction Modal({\r\n open,\r\n onClose,\r\n title,\r\n subtitle,\r\n children,\r\n footer,\r\n size = \"md\",\r\n disableBackdropClick = false,\r\n disableEscape = false,\r\n fullScreenOnMobile = true,\r\n ariaLabel,\r\n ariaLabelClose = \"Fermer la boîte de dialogue\",\r\n}: ModalProps) {\r\n // R-Ar.5 - stable, per-instance, collision-safe ID for aria-labelledby.\r\n const titleId = React.useId();\r\n\r\n // R-F.2 / R-M.2 - the v2 trap is wired on the Dialog Paper element,\r\n // activated only while the modal is open. MUI's own trap is disabled\r\n // via the disable*Focus props on Dialog below so the two implementations\r\n // don't compete for the same DOM event stream.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef, !!open);\r\n\r\n // R-RS.2 — full-screen below the `sm` breakpoint TOKEN (< 481px now\r\n // that tokens are wired into the theme). Reads the live theme so a host\r\n // breakpoint override is honoured. Gated behind fullScreenOnMobile so a\r\n // caller can keep a small confirm dialog centred on phones.\r\n const theme = useTheme();\r\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const fullScreen = fullScreenOnMobile && isMobile;\r\n\r\n const handleClose = (_e: unknown, reason: \"backdropClick\" | \"escapeKeyDown\") => {\r\n if (reason === \"backdropClick\" && disableBackdropClick) return;\r\n if (reason === \"escapeKeyDown\" && disableEscape) return;\r\n onClose?.();\r\n };\r\n\r\n // R-AI.1 - modal sizing is owned by the token system (layout.modal),\r\n // not duplicated here. See src/lib/v2/tokens/density.js.\r\n const maxWidth = layout.modal[size] || layout.modal.md;\r\n\r\n // MUI v9: paper slot is forwarded through slotProps.paper. The slot\r\n // cannot be fully hoisted — embeds the dynamic maxWidth (size-driven)\r\n // and the per-instance ref. Memo on [maxWidth, fullScreen] so the\r\n // reference is stable until either the size or the mobile branch flips.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: fullScreen\r\n ? { ...PAPER_FULLSCREEN_SX }\r\n : { ...PAPER_BASE_SX, maxWidth },\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n [maxWidth, fullScreen]\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={handleClose}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n // Name = title text only (id is on the title Typography). Falls back\r\n // to ariaLabel when the dialog has no title.\r\n aria-labelledby={title != null ? titleId : undefined}\r\n aria-label={title == null ? ariaLabel : undefined}\r\n maxWidth={false}\r\n // R-RS.2 — hand the full-screen decision to MUI's own prop so it\r\n // applies the correct fullscreen paper geometry (100vw/100vh,\r\n // no margin); our PAPER_FULLSCREEN_SX only relaxes radius/shadow.\r\n fullScreen={fullScreen}\r\n // Hand over focus management to useFocusTrap above. Dialog still\r\n // owns the Portal, Backdrop, scroll lock, transitions, and Esc\r\n // wiring - just not the focus trap itself.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n // Root sx anchors the portal at the v2 zIndex.modal token — above\r\n // the Drawer, below snackbar/toast/tooltip. See DIALOG_ROOT_SX.\r\n sx={DIALOG_ROOT_SX}\r\n slotProps={slotProps}\r\n >\r\n <DialogTitle sx={DIALOG_TITLE_SX}>\r\n <div>\r\n <Typography id={titleId} variant=\"h3\" component=\"h2\" sx={TITLE_TYPOGRAPHY_SX}>\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography sx={SUBTITLE_TYPOGRAPHY_SX}>\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </div>\r\n <IconButton\r\n aria-label={ariaLabelClose}\r\n onClick={onClose}\r\n size=\"small\"\r\n sx={CLOSE_ICON_BUTTON_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </DialogTitle>\r\n\r\n <DialogContent dividers={!!footer} sx={DIALOG_CONTENT_SX}>\r\n {children}\r\n </DialogContent>\r\n\r\n {footer && (\r\n <DialogActions sx={DIALOG_ACTIONS_SX}>\r\n {footer}\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Modal.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_DialogTitle","_DialogContent","_DialogActions","_IconButton","_Close","_Typography","_useMediaQuery","_styles","_tokens","_useFocusTrap","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DIALOG_ROOT_SX","freeze","zIndex","modal","BACKDROP_SLOT_PROPS","sx","backgroundColor","PAPER_BASE_SX","width","borderRadius","boxShadow","PAPER_FULLSCREEN_SX","maxWidth","DIALOG_TITLE_SX","padding","display","alignItems","justifyContent","gap","TITLE_TYPOGRAPHY_SX","fontSize","fontWeight","color","SUBTITLE_TYPOGRAPHY_SX","marginTop","CLOSE_ICON_BUTTON_SX","marginRight","DIALOG_CONTENT_SX","borderColor","DIALOG_ACTIONS_SX","Modal","open","onClose","title","subtitle","children","footer","size","disableBackdropClick","disableEscape","fullScreenOnMobile","ariaLabel","ariaLabelClose","titleId","useId","paperRef","useRef","useFocusTrap","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","fullScreen","handleClose","_e","reason","layout","md","slotProps","useMemo","paper","ref","backdrop","jsxs","role","undefined","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","jsx","id","variant","component","onClick","dividers","_default","exports"],"sources":["../../../src/lib/v2/components/Modal.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport DialogTitle from \"@mui/material/DialogTitle\";\r\nimport DialogContent from \"@mui/material/DialogContent\";\r\nimport DialogActions from \"@mui/material/DialogActions\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\r\nimport { useTheme } from \"@mui/material/styles\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { layout, zIndex } from \"../tokens\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\n\r\n/**\r\n * Modal - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Modal · Dialog\".\r\n *\r\n * R-M.1 - Closable via Esc + backdrop click + explicit X button.\r\n * R-M.2 - Focus trap when open, focus restored to trigger on close.\r\n * Backed by the v2 useFocusTrap hook (Batch 3) - honours\r\n * [autofocus] and [data-autofocus] markers, coordinates\r\n * with nested traps via a module-level trapStack, and\r\n * filters disabled/hidden/inert subtrees.\r\n * R-M.3 - role=\"dialog\" + aria-modal=\"true\" + aria-labelledby.\r\n * R-M.4 - No modal inside modal - use stepper flow.\r\n * R-M.5 - Use Drawer (not Modal) for ≥ 3 fields or long scroll.\r\n * R-M.6 - Action principale à droite, secondaire à gauche.\r\n * R-RS.2 - Below the `sm` breakpoint token (< 481px) the dialog goes\r\n * FULL-SCREEN by default. A md/lg/xl modal centred with its\r\n * token max-width left only a thin sliver of usable width at\r\n * 320–375px; full-screen restores a usable reading column and\r\n * keeps the footer actions reachable (WCAG 1.4.10 Reflow).\r\n * Opt out with fullScreenOnMobile={false} for genuinely tiny\r\n * confirm dialogs that read better centred.\r\n *\r\n * <Modal open={open} onClose={close} title=\"Confirmation\" size=\"sm\"\r\n * footer={<><Button variant=\"ghost\" onClick={close}>Annuler</Button>\r\n * <Button variant=\"primary\">OK</Button></>}>\r\n * Body content here.\r\n * </Modal>\r\n *\r\n * Accessible name (R-Ar.5 / R-M.3):\r\n * `aria-labelledby` points at the title <Typography> (id=titleId), so the\r\n * dialog's accessible name is the title text ONLY — the close button and\r\n * subtitle are not part of it. When no `title` is provided, pass `ariaLabel`\r\n * to name the dialog; otherwise it would have no accessible name.\r\n *\r\n * Initial focus targeting (R-Ar.4):\r\n * By default the FIRST focusable element of the dialog gets focus on\r\n * open. To opt a specific control in (e.g. the destructive \"Delete\"\r\n * button which intentionally is NOT first), mark it with either:\r\n * - React's <button autoFocus> attribute (standard), or\r\n * - <button data-autofocus> (v2 marker, identical effect).\r\n * Both are matched by useFocusTrap's AUTOFOCUS_SELECTORS.\r\n *\r\n * Stacking:\r\n * The modal's portal layer uses the v2 `zIndex.modal` token (100), so\r\n * it stacks ABOVE a Drawer (zIndex.drawer:80) when opened from inside\r\n * one (e.g. a ReferentielField search launched from the filters Drawer)\r\n * and BELOW snackbar:150 / toast:200 / tooltip:250 so notifications and\r\n * tooltips fired from a modal action stay on top. MUI popups rendered\r\n * inside the modal — Combobox/Autocomplete listboxes and X date-picker\r\n * calendars — also render at theme.zIndex.modal (100) and, opening\r\n * after the dialog, paint above it by DOM order (MUI's own\r\n * Dialog+Autocomplete contract). A previous build hardcoded 1350 here\r\n * (a leftover from MUI's 1100..1500 scale before the v2 remap to\r\n * 0..250); that buried those in-modal popups (at 100) behind the modal\r\n * and pushed the modal above toasts/tooltips.\r\n */\r\n\r\n/* ── Hoisted static sx (D5) ────────────────────────────────────────────\r\n * Frozen at module load. Same emotion / allocation rationale as Tabs +\r\n * DataGrid hoisting. The paper slotProps cannot be fully hoisted because\r\n * it embeds the dynamic `maxWidth` (size-driven) and the `ref` (per\r\n * Modal instance) — its static base is hoisted and the dynamic\r\n * additions are layered via useMemo at the call site.\r\n */\r\n\r\nconst DIALOG_ROOT_SX = Object.freeze({\r\n // v2 z-index token (zIndex.js). modal:100 sits ABOVE drawer:80 (so a\r\n // Modal opened from inside a Drawer stacks correctly) and BELOW\r\n // snackbar:150 / toast:200 / tooltip:250. In-modal MUI popups\r\n // (Combobox listboxes, X date-picker calendars) also use\r\n // theme.zIndex.modal and paint above the dialog by DOM order. The\r\n // previous hardcoded 1350 predated the v2 remap of MUI's 1100..1500\r\n // scale down to 0..250.\r\n zIndex: zIndex.modal,\r\n});\r\n\r\n// MUI v9: backdrop forwarded via slotProps.backdrop (was BackdropProps\r\n// at the Dialog top-level in v5/v6/v7, removed in v9). The content\r\n// `{ sx: {...} }` is unchanged — the backdrop slot receives the same\r\n// shape.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-AI.1 - backdrop derived from the live --fg token instead of hard\r\n // rgba(15,21,37,...). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nconst PAPER_BASE_SX = Object.freeze({\r\n width: \"100%\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n});\r\n\r\n/* R-RS.2 — full-screen paper sx for the mobile (< sm token) branch.\r\n * Drops the rounded corners + shadow (no longer floating) and lets the\r\n * paper fill the viewport. maxWidth is forced to 100% so the size-driven\r\n * token max-width can't re-clamp it. Kept as a frozen module constant so\r\n * the reference is stable across renders. */\r\nconst PAPER_FULLSCREEN_SX = Object.freeze({\r\n width: \"100%\",\r\n maxWidth: \"100%\",\r\n borderRadius: 0,\r\n boxShadow: \"none\",\r\n});\r\n\r\nconst DIALOG_TITLE_SX = Object.freeze({\r\n padding: \"var(--s-4) var(--s-5) var(--s-2)\",\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TITLE_TYPOGRAPHY_SX = Object.freeze({\r\n fontSize: \"var(--text-h3)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst SUBTITLE_TYPOGRAPHY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: \"var(--s-1)\",\r\n});\r\n\r\nconst CLOSE_ICON_BUTTON_SX = Object.freeze({\r\n color: \"var(--fg-subtle)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst DIALOG_CONTENT_SX = Object.freeze({\r\n padding: \"var(--s-4) var(--s-5)\",\r\n borderColor: \"var(--border)\",\r\n});\r\n\r\nconst DIALOG_ACTIONS_SX = Object.freeze({\r\n padding: \"var(--s-3) var(--s-5) var(--s-4)\",\r\n gap: \"var(--s-2)\",\r\n});\r\n\r\nexport type ModalSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport interface ModalProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n title?: React.ReactNode | undefined;\r\n subtitle?: React.ReactNode | undefined;\r\n children?: React.ReactNode | undefined;\r\n footer?: React.ReactNode | undefined;\r\n size?: ModalSize | undefined;\r\n disableBackdropClick?: boolean | undefined;\r\n disableEscape?: boolean | undefined;\r\n /** R-RS.2 — go full-screen below the `sm` token (< 481px). Default true. */\r\n fullScreenOnMobile?: boolean | undefined;\r\n /** Accessible name for the dialog when no `title` is rendered (R-M.3). */\r\n ariaLabel?: string | undefined;\r\n ariaLabelClose?: string | undefined;\r\n}\r\n\r\nfunction Modal({\r\n open,\r\n onClose,\r\n title,\r\n subtitle,\r\n children,\r\n footer,\r\n size = \"md\",\r\n disableBackdropClick = false,\r\n disableEscape = false,\r\n fullScreenOnMobile = true,\r\n ariaLabel,\r\n ariaLabelClose = \"Fermer la boîte de dialogue\",\r\n}: ModalProps) {\r\n // R-Ar.5 - stable, per-instance, collision-safe ID for aria-labelledby.\r\n const titleId = React.useId();\r\n\r\n // R-F.2 / R-M.2 - the v2 trap is wired on the Dialog Paper element,\r\n // activated only while the modal is open. MUI's own trap is disabled\r\n // via the disable*Focus props on Dialog below so the two implementations\r\n // don't compete for the same DOM event stream.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef, !!open);\r\n\r\n // R-RS.2 — full-screen below the `sm` breakpoint TOKEN (< 481px now\r\n // that tokens are wired into the theme). Reads the live theme so a host\r\n // breakpoint override is honoured. Gated behind fullScreenOnMobile so a\r\n // caller can keep a small confirm dialog centred on phones.\r\n const theme = useTheme();\r\n const isMobile = useMediaQuery(theme.breakpoints.down(\"sm\"));\r\n const fullScreen = fullScreenOnMobile && isMobile;\r\n\r\n const handleClose = (_e: unknown, reason: \"backdropClick\" | \"escapeKeyDown\") => {\r\n if (reason === \"backdropClick\" && disableBackdropClick) return;\r\n if (reason === \"escapeKeyDown\" && disableEscape) return;\r\n onClose?.();\r\n };\r\n\r\n // R-AI.1 - modal sizing is owned by the token system (layout.modal),\r\n // not duplicated here. See src/lib/v2/tokens/density.js.\r\n const maxWidth = layout.modal[size] || layout.modal.md;\r\n\r\n // MUI v9: paper slot is forwarded through slotProps.paper. The slot\r\n // cannot be fully hoisted — embeds the dynamic maxWidth (size-driven)\r\n // and the per-instance ref. Memo on [maxWidth, fullScreen] so the\r\n // reference is stable until either the size or the mobile branch flips.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: fullScreen\r\n ? { ...PAPER_FULLSCREEN_SX }\r\n : { ...PAPER_BASE_SX, maxWidth },\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n [maxWidth, fullScreen]\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={handleClose}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n // Name = title text only (id is on the title Typography). Falls back\r\n // to ariaLabel when the dialog has no title.\r\n aria-labelledby={title != null ? titleId : undefined}\r\n aria-label={title == null ? ariaLabel : undefined}\r\n maxWidth={false}\r\n // R-RS.2 — hand the full-screen decision to MUI's own prop so it\r\n // applies the correct fullscreen paper geometry (100vw/100vh,\r\n // no margin); our PAPER_FULLSCREEN_SX only relaxes radius/shadow.\r\n fullScreen={fullScreen}\r\n // Hand over focus management to useFocusTrap above. Dialog still\r\n // owns the Portal, Backdrop, scroll lock, transitions, and Esc\r\n // wiring - just not the focus trap itself.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n // Root sx anchors the portal at the v2 zIndex.modal token — above\r\n // the Drawer, below snackbar/toast/tooltip. See DIALOG_ROOT_SX.\r\n sx={DIALOG_ROOT_SX}\r\n slotProps={slotProps}\r\n >\r\n <DialogTitle sx={DIALOG_TITLE_SX}>\r\n <div>\r\n <Typography id={titleId} variant=\"h3\" component=\"h2\" sx={TITLE_TYPOGRAPHY_SX}>\r\n {title}\r\n </Typography>\r\n {subtitle && (\r\n <Typography sx={SUBTITLE_TYPOGRAPHY_SX}>\r\n {subtitle}\r\n </Typography>\r\n )}\r\n </div>\r\n <IconButton\r\n aria-label={ariaLabelClose}\r\n onClick={onClose}\r\n size=\"small\"\r\n sx={CLOSE_ICON_BUTTON_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </DialogTitle>\r\n\r\n <DialogContent dividers={!!footer} sx={DIALOG_CONTENT_SX}>\r\n {children}\r\n </DialogContent>\r\n\r\n {footer && (\r\n <DialogActions sx={DIALOG_ACTIONS_SX}>\r\n {footer}\r\n </DialogActions>\r\n )}\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default Modal;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,19 @@
1
+ export interface NetworkErrorPageLabels {
2
+ /** First breadcrumb crumb. */
3
+ breadcrumbRoot?: string | undefined;
4
+ /** Last breadcrumb crumb — aria-current="page". */
5
+ breadcrumbCurrent?: string | undefined;
6
+ /** ActionBar heading (the page's <h1>). */
7
+ title?: string | undefined;
8
+ /** Descriptive sentence under the code ornament (the <h2>). */
9
+ heading?: string | undefined;
10
+ /** Body paragraph — what to check, and that the service may be down. */
11
+ description?: string | undefined;
12
+ /** Secondary retry label — only rendered when onRetry is supplied. */
13
+ retry?: string | undefined;
14
+ /** Primary CTA label. */
15
+ home?: string | undefined;
16
+ }
1
17
  export interface NetworkErrorPageProps {
2
18
  /** Callback for the back button (top-bar arrow). */
3
19
  onBack: () => void;
@@ -5,7 +21,9 @@ export interface NetworkErrorPageProps {
5
21
  onHome: () => void;
6
22
  /** Optional retry callback. When omitted, the Réessayer button is hidden. */
7
23
  onRetry?: (() => void) | undefined;
24
+ /** Overrides for the page's French defaults (P-4). */
25
+ labels?: NetworkErrorPageLabels | undefined;
8
26
  }
9
- declare function NetworkErrorPage({ onBack, onHome, onRetry }: NetworkErrorPageProps): import("react").JSX.Element;
27
+ declare function NetworkErrorPage({ onBack, onHome, onRetry, labels }: NetworkErrorPageProps): import("react").JSX.Element;
10
28
  export default NetworkErrorPage;
11
29
  //# sourceMappingURL=NetworkErrorPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkErrorPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/NetworkErrorPage.tsx"],"names":[],"mappings":"AAqCA,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACpC;AAED,iBAAS,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,qBAAqB,+BAiC3E;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"NetworkErrorPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/NetworkErrorPage.tsx"],"names":[],"mappings":"AA0CA,MAAM,WAAW,sBAAsB;IACrC,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAaD,MAAM,WAAW,qBAAqB;IACpC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,sDAAsD;IACtD,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC7C;AAED,iBAAS,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,qBAAqB,+BAmCnF;AAED,eAAe,gBAAgB,CAAC"}
@@ -3,22 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
8
8
  var _ArrowBack = _interopRequireDefault(require("@mui/icons-material/ArrowBack"));
9
9
  var _WifiOff = _interopRequireDefault(require("@mui/icons-material/WifiOff"));
10
10
  var _ActionBar = _interopRequireDefault(require("../patterns/ActionBar"));
11
11
  var _Button = _interopRequireDefault(require("./Button"));
12
12
  var _ErrorPageBody = _interopRequireDefault(require("./_ErrorPageBody"));
13
+ var _mergeLabels = require("../utils/mergeLabels");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  /**
16
17
  * NetworkErrorPage — Portnet UI v2 (component)
17
18
  *
18
19
  * Charter §07 · Connexion perdue.
19
20
  *
20
21
  * Same contract as ServerErrorPage: router-agnostic with required
21
- * onBack + onHome and an optional onRetry. The code heading reads
22
+ * onBack + onHome and an optional onRetry. The code ornament reads
22
23
  * "—" since there is no HTTP status to surface.
23
24
  *
24
25
  * import { NetworkErrorPage } from "@portnet/ui/lib/v2";
@@ -35,6 +36,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
35
36
  * );
36
37
  * }
37
38
  *
39
+ * Localisation (P-4): every visible string is overridable through
40
+ * `labels`, defaulting to French. The shape matches the other three
41
+ * error pages so one translation object can serve all of them.
42
+ *
38
43
  * NB: for TRANSIENT connection drops during normal navigation, the
39
44
  * v2.NetworkErrorBanner (top of the page, with inline Retry CTA)
40
45
  * is the charter-preferred pattern — Charter R-A.3 explicitly
@@ -43,44 +48,56 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
43
48
  * This page is for the explicit /network-error route only.
44
49
  */
45
50
 
46
- function NetworkErrorPage(_ref) {
47
- var onBack = _ref.onBack,
48
- onHome = _ref.onHome,
49
- onRetry = _ref.onRetry;
51
+ const DEFAULT_LABELS = Object.freeze({
52
+ breadcrumbRoot: "Erreur",
53
+ breadcrumbCurrent: "Connexion perdue",
54
+ title: "Connexion perdue",
55
+ heading: "Aucune connexion au serveur",
56
+ description: "Vérifiez votre connexion réseau, puis réessayez. Si vous êtes connecté, le service est peut-être momentanément interrompu.",
57
+ retry: "Réessayer",
58
+ home: "Retour à l'accueil"
59
+ });
60
+ function NetworkErrorPage({
61
+ onBack,
62
+ onHome,
63
+ onRetry,
64
+ labels
65
+ }) {
66
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
50
67
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
51
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar["default"], {
68
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar.default, {
52
69
  back: onBack,
53
- breadcrumb: ["Erreur", "Connexion perdue"],
54
- title: "Connexion perdue"
55
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody["default"], {
56
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_WifiOff["default"], {
70
+ breadcrumb: [L.breadcrumbRoot, L.breadcrumbCurrent],
71
+ title: L.title
72
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody.default, {
73
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_WifiOff.default, {
57
74
  sx: {
58
75
  fontSize: 64,
59
76
  color: "var(--warning)"
60
77
  }
61
78
  }),
62
79
  code: "\u2014",
63
- title: "Aucune connexion au serveur",
64
- description: "V\xE9rifiez votre connexion r\xE9seau, puis r\xE9essayez. Si vous \xEAtes connect\xE9, le service est peut-\xEAtre momentan\xE9ment interrompu."
65
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
80
+ title: L.heading,
81
+ description: L.description
82
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
66
83
  sx: {
67
84
  display: "flex",
68
85
  justifyContent: "center",
69
86
  gap: "var(--s-3)",
70
87
  paddingBottom: "var(--s-7)"
71
88
  },
72
- children: [onRetry ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
89
+ children: [onRetry ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
73
90
  variant: "ghost",
74
91
  onClick: onRetry,
75
- children: "R\xE9essayer"
76
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
92
+ children: L.retry
93
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
77
94
  variant: "primary",
78
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack["default"], {}),
95
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack.default, {}),
79
96
  onClick: onHome,
80
- children: "Retour \xE0 l'accueil"
97
+ children: L.home
81
98
  })]
82
99
  })]
83
100
  });
84
101
  }
85
- var _default = exports["default"] = NetworkErrorPage;
102
+ var _default = exports.default = NetworkErrorPage;
86
103
  //# sourceMappingURL=NetworkErrorPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkErrorPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_WifiOff","_ActionBar","_Button","_ErrorPageBody","_jsxRuntime","obj","__esModule","NetworkErrorPage","_ref","onBack","onHome","onRetry","jsxs","Fragment","children","jsx","back","breadcrumb","title","icon","sx","fontSize","color","code","description","display","justifyContent","gap","paddingBottom","variant","onClick","_default","exports"],"sources":["../../../src/lib/v2/components/NetworkErrorPage.tsx"],"sourcesContent":["/**\r\n * NetworkErrorPage — Portnet UI v2 (component)\r\n *\r\n * Charter §07 · Connexion perdue.\r\n *\r\n * Same contract as ServerErrorPage: router-agnostic with required\r\n * onBack + onHome and an optional onRetry. The code heading reads\r\n * \"—\" since there is no HTTP status to surface.\r\n *\r\n * import { NetworkErrorPage } from \"@portnet/ui/lib/v2\";\r\n * import { useNavigate } from \"react-router-dom\";\r\n *\r\n * function NetworkErrorRoute() {\r\n * const navigate = useNavigate();\r\n * return (\r\n * <NetworkErrorPage\r\n * onBack={() => navigate(-1)}\r\n * onHome={() => navigate(\"/\")}\r\n * onRetry={() => window.location.reload()}\r\n * />\r\n * );\r\n * }\r\n *\r\n * NB: for TRANSIENT connection drops during normal navigation, the\r\n * v2.NetworkErrorBanner (top of the page, with inline Retry CTA)\r\n * is the charter-preferred pattern — Charter R-A.3 explicitly\r\n * forbids forced navigation to a full error page on transient\r\n * network failure, since it destroys the user's current context.\r\n * This page is for the explicit /network-error route only.\r\n */\r\nimport Box from \"@mui/material/Box\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport WifiOff from \"@mui/icons-material/WifiOff\";\r\nimport ActionBar from \"../patterns/ActionBar\";\r\nimport Button from \"./Button\";\r\nimport ErrorPageBody from \"./_ErrorPageBody\";\r\n\r\nexport interface NetworkErrorPageProps {\r\n /** Callback for the back button (top-bar arrow). */\r\n onBack: () => void;\r\n /** Callback for the primary \"Retour à l'accueil\" CTA. */\r\n onHome: () => void;\r\n /** Optional retry callback. When omitted, the Réessayer button is hidden. */\r\n onRetry?: (() => void) | undefined;\r\n}\r\n\r\nfunction NetworkErrorPage({ onBack, onHome, onRetry }: NetworkErrorPageProps) {\r\n return (\r\n <>\r\n <ActionBar\r\n back={onBack}\r\n breadcrumb={[\"Erreur\", \"Connexion perdue\"]}\r\n title=\"Connexion perdue\"\r\n />\r\n <ErrorPageBody\r\n icon={<WifiOff sx={{ fontSize: 64, color: \"var(--warning)\" }} />}\r\n code=\"—\"\r\n title=\"Aucune connexion au serveur\"\r\n description=\"Vérifiez votre connexion réseau, puis réessayez. Si vous êtes connecté, le service est peut-être momentanément interrompu.\"\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n gap: \"var(--s-3)\",\r\n paddingBottom: \"var(--s-7)\",\r\n }}\r\n >\r\n {onRetry ? (\r\n <Button variant=\"ghost\" onClick={onRetry}>\r\n Réessayer\r\n </Button>\r\n ) : null}\r\n <Button variant=\"primary\" icon={<ArrowBack />} onClick={onHome}>\r\n Retour à l'accueil\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n}\r\n\r\nexport default NetworkErrorPage;\r\n"],"mappings":";;;;;;AA8BA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,sBAAA,CAAAC,OAAA;AAA6C,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAnC7C;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;;AAiBA,SAASE,gBAAgBA,CAAAC,IAAA,EAAqD;EAAA,IAAlDC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;IAAEC,OAAO,GAAAH,IAAA,CAAPG,OAAO;EACjD,oBACE,IAAAP,WAAA,CAAAQ,IAAA,EAAAR,WAAA,CAAAS,QAAA;IAAAC,QAAA,gBACE,IAAAV,WAAA,CAAAW,GAAA,EAACd,UAAA,WAAS;MACRe,IAAI,EAAEP,MAAO;MACbQ,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,CAAE;MAC3CC,KAAK,EAAC;IAAkB,CACzB,CAAC,eACF,IAAAd,WAAA,CAAAW,GAAA,EAACZ,cAAA,WAAa;MACZgB,IAAI,eAAE,IAAAf,WAAA,CAAAW,GAAA,EAACf,QAAA,WAAO;QAACoB,EAAE,EAAE;UAAEC,QAAQ,EAAE,EAAE;UAAEC,KAAK,EAAE;QAAiB;MAAE,CAAE,CAAE;MACjEC,IAAI,EAAC,QAAG;MACRL,KAAK,EAAC,6BAA6B;MACnCM,WAAW,EAAC;IAA4H,CACzI,CAAC,eACF,IAAApB,WAAA,CAAAQ,IAAA,EAAChB,IAAA,WAAG;MACFwB,EAAE,EAAE;QACFK,OAAO,EAAS,MAAM;QACtBC,cAAc,EAAE,QAAQ;QACxBC,GAAG,EAAa,YAAY;QAC5BC,aAAa,EAAG;MAClB,CAAE;MAAAd,QAAA,GAEDH,OAAO,gBACN,IAAAP,WAAA,CAAAW,GAAA,EAACb,OAAA,WAAM;QAAC2B,OAAO,EAAC,OAAO;QAACC,OAAO,EAAEnB,OAAQ;QAAAG,QAAA,EAAC;MAE1C,CAAQ,CAAC,GACP,IAAI,eACR,IAAAV,WAAA,CAAAW,GAAA,EAACb,OAAA,WAAM;QAAC2B,OAAO,EAAC,SAAS;QAACV,IAAI,eAAE,IAAAf,WAAA,CAAAW,GAAA,EAAChB,UAAA,WAAS,IAAE,CAAE;QAAC+B,OAAO,EAAEpB,MAAO;QAAAI,QAAA,EAAC;MAEhE,CAAQ,CAAC;IAAA,CACN,CAAC;EAAA,CACN,CAAC;AAEP;AAAC,IAAAiB,QAAA,GAAAC,OAAA,cAEczB,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"NetworkErrorPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_WifiOff","_ActionBar","_Button","_ErrorPageBody","_mergeLabels","_jsxRuntime","e","__esModule","default","DEFAULT_LABELS","Object","freeze","breadcrumbRoot","breadcrumbCurrent","title","heading","description","retry","home","NetworkErrorPage","onBack","onHome","onRetry","labels","L","mergeLabels","jsxs","Fragment","children","jsx","back","breadcrumb","icon","sx","fontSize","color","code","display","justifyContent","gap","paddingBottom","variant","onClick","_default","exports"],"sources":["../../../src/lib/v2/components/NetworkErrorPage.tsx"],"sourcesContent":["/**\r\n * NetworkErrorPage — Portnet UI v2 (component)\r\n *\r\n * Charter §07 · Connexion perdue.\r\n *\r\n * Same contract as ServerErrorPage: router-agnostic with required\r\n * onBack + onHome and an optional onRetry. The code ornament reads\r\n * \"—\" since there is no HTTP status to surface.\r\n *\r\n * import { NetworkErrorPage } from \"@portnet/ui/lib/v2\";\r\n * import { useNavigate } from \"react-router-dom\";\r\n *\r\n * function NetworkErrorRoute() {\r\n * const navigate = useNavigate();\r\n * return (\r\n * <NetworkErrorPage\r\n * onBack={() => navigate(-1)}\r\n * onHome={() => navigate(\"/\")}\r\n * onRetry={() => window.location.reload()}\r\n * />\r\n * );\r\n * }\r\n *\r\n * Localisation (P-4): every visible string is overridable through\r\n * `labels`, defaulting to French. The shape matches the other three\r\n * error pages so one translation object can serve all of them.\r\n *\r\n * NB: for TRANSIENT connection drops during normal navigation, the\r\n * v2.NetworkErrorBanner (top of the page, with inline Retry CTA)\r\n * is the charter-preferred pattern — Charter R-A.3 explicitly\r\n * forbids forced navigation to a full error page on transient\r\n * network failure, since it destroys the user's current context.\r\n * This page is for the explicit /network-error route only.\r\n */\r\nimport Box from \"@mui/material/Box\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport WifiOff from \"@mui/icons-material/WifiOff\";\r\nimport ActionBar from \"../patterns/ActionBar\";\r\nimport Button from \"./Button\";\r\nimport ErrorPageBody from \"./_ErrorPageBody\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\nexport interface NetworkErrorPageLabels {\r\n /** First breadcrumb crumb. */\r\n breadcrumbRoot?: string | undefined;\r\n /** Last breadcrumb crumb — aria-current=\"page\". */\r\n breadcrumbCurrent?: string | undefined;\r\n /** ActionBar heading (the page's <h1>). */\r\n title?: string | undefined;\r\n /** Descriptive sentence under the code ornament (the <h2>). */\r\n heading?: string | undefined;\r\n /** Body paragraph — what to check, and that the service may be down. */\r\n description?: string | undefined;\r\n /** Secondary retry label — only rendered when onRetry is supplied. */\r\n retry?: string | undefined;\r\n /** Primary CTA label. */\r\n home?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n breadcrumbRoot: \"Erreur\",\r\n breadcrumbCurrent: \"Connexion perdue\",\r\n title: \"Connexion perdue\",\r\n heading: \"Aucune connexion au serveur\",\r\n description:\r\n \"Vérifiez votre connexion réseau, puis réessayez. Si vous êtes connecté, le service est peut-être momentanément interrompu.\",\r\n retry: \"Réessayer\",\r\n home: \"Retour à l'accueil\",\r\n});\r\n\r\nexport interface NetworkErrorPageProps {\r\n /** Callback for the back button (top-bar arrow). */\r\n onBack: () => void;\r\n /** Callback for the primary \"Retour à l'accueil\" CTA. */\r\n onHome: () => void;\r\n /** Optional retry callback. When omitted, the Réessayer button is hidden. */\r\n onRetry?: (() => void) | undefined;\r\n /** Overrides for the page's French defaults (P-4). */\r\n labels?: NetworkErrorPageLabels | undefined;\r\n}\r\n\r\nfunction NetworkErrorPage({ onBack, onHome, onRetry, labels }: NetworkErrorPageProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n return (\r\n <>\r\n <ActionBar\r\n back={onBack}\r\n breadcrumb={[L.breadcrumbRoot, L.breadcrumbCurrent]}\r\n title={L.title}\r\n />\r\n <ErrorPageBody\r\n icon={<WifiOff sx={{ fontSize: 64, color: \"var(--warning)\" }} />}\r\n code=\"—\"\r\n title={L.heading}\r\n description={L.description}\r\n />\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n gap: \"var(--s-3)\",\r\n paddingBottom: \"var(--s-7)\",\r\n }}\r\n >\r\n {onRetry ? (\r\n <Button variant=\"ghost\" onClick={onRetry}>\r\n {L.retry}\r\n </Button>\r\n ) : null}\r\n <Button variant=\"primary\" icon={<ArrowBack />} onClick={onHome}>\r\n {L.home}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n}\r\n\r\nexport default NetworkErrorPage;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,25 @@
1
+ export interface NotFoundPageLabels {
2
+ /** First breadcrumb crumb. */
3
+ breadcrumbRoot?: string | undefined;
4
+ /** Last breadcrumb crumb — aria-current="page". */
5
+ breadcrumbCurrent?: string | undefined;
6
+ /** ActionBar heading (the page's <h1>). */
7
+ title?: string | undefined;
8
+ /** Descriptive sentence under the code ornament (the <h2>). */
9
+ heading?: string | undefined;
10
+ /** Body paragraph — names the likely causes and the one action. */
11
+ description?: string | undefined;
12
+ /** Primary CTA label. */
13
+ home?: string | undefined;
14
+ }
1
15
  export interface NotFoundPageProps {
2
16
  /** Callback for the back button (top-bar arrow). */
3
17
  onBack: () => void;
4
18
  /** Callback for the primary "Retour à l'accueil" CTA. */
5
19
  onHome: () => void;
20
+ /** Overrides for the page's French defaults (P-4). */
21
+ labels?: NotFoundPageLabels | undefined;
6
22
  }
7
- declare function NotFoundPage({ onBack, onHome }: NotFoundPageProps): import("react").JSX.Element;
23
+ declare function NotFoundPage({ onBack, onHome, labels }: NotFoundPageProps): import("react").JSX.Element;
8
24
  export default NotFoundPage;
9
25
  //# sourceMappingURL=NotFoundPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NotFoundPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/NotFoundPage.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,iBAAS,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,iBAAiB,+BAqB1D;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"NotFoundPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/NotFoundPage.tsx"],"names":[],"mappings":"AA+BA,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAYD,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;CACzC;AAED,iBAAS,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,iBAAiB,+BAuBlE;AAED,eAAe,YAAY,CAAC"}