@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Toast.js","names":["React","CheckIcon","ErrorIcon","WarningIcon","InfoIcon","CloseIcon","mergeLabels","jsx","_jsx","jsxs","_jsxs","MAX_TOASTS","PROGRESS_DONE_DISMISS_DELAY_MS","DEFAULT_LABELS","Object","freeze","undo","dismiss","ToastContext","createContext","ToastLabelsContext","useToast","ctx","useContext","Error","ToastItem","_ref","toast","onDismiss","labels","id","message","variant","undoCfg","action","progress","className","children","fontSize","style","flex","type","onClick","_undoCfg$onUndo","onUndo","call","label","_action$onClick","width","height","concat","ToastProvider","_ref2","mergedLabels","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","toasts","setToasts","timers","useRef","triggersRef","idSeq","nextId","useCallback","current","fromInteraction","arguments","length","undefined","clearTimeout","trigger","arr","filter","t","setTimeout","el","document","body","focus","contains","disabled","push","activeElement","next","_toConsumableArray","dropped","shift","duration","patch","fields","map","_objectSpread","api","base","opts","o","dismissApi","update","p","clamped","Math","max","min","Number","done","finalMessage","assign","useEffect","values","forEach","polite","assertive","Provider","value","role"],"sources":["../../../../src/lib/v2/components/Toast.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\nimport WarningIcon from \"@mui/icons-material/WarningAmberOutlined\";\r\nimport InfoIcon from \"@mui/icons-material/InfoOutlined\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Toast - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Toast\". 3 niveaux : Toast / Inline Alert / Banner.\r\n *\r\n * R-A.1 - Toast = role=\"status\" aria-live=\"polite\".\r\n * R-A.2 - Erreur bloquante = role=\"alert\" aria-live=\"assertive\".\r\n * R-A.3 - Max 3 toasts simultanés ; pile en bas-centre.\r\n * R-A.4 - Pas de toast pour valider une action utilisateur (succès uniquement).\r\n *\r\n * Implementation note (R-A.1 / R-A.2):\r\n * We render TWO live regions, not one. A single region with\r\n * aria-live=\"polite\" whose children override to aria-live=\"assertive\"\r\n * is unreliable across screen readers - most SRs honour the OUTER\r\n * region's live setting. To ensure assertive errors interrupt as\r\n * required, error toasts go into a dedicated role=\"alert\"\r\n * aria-live=\"assertive\" region, while every other variant goes into\r\n * a role=\"status\" aria-live=\"polite\" region. Both stacks render\r\n * visually at the same anchor.\r\n *\r\n * Landmark wrapping (a11y, axe-core 4.11):\r\n * The outer .pui-toast-host wrapper carries role=\"region\" so the\r\n * aria-label=\"Notifications\" is valid (aria-label is prohibited on\r\n * bare generic <div>s per ARIA 1.2) AND the portal joins the page's\r\n * landmark structure (AT users running landmark-only navigation\r\n * now reach it). The two inner live regions keep their own\r\n * status/alert semantics unchanged.\r\n *\r\n * Focus restoration (R-F.2 spirit):\r\n * When the user dismisses a toast by clicking Undo / Action /\r\n * Close, focus returns to whichever element was focused when\r\n * the toast first appeared. Auto-dismiss (timeout) and host-\r\n * initiated dismissal (api.dismiss(id)) deliberately do NOT\r\n * restore.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <ToastProvider labels={{ undo: \"Undo\", dismiss: \"Dismiss\" }}>\r\n *\r\n * API:\r\n * const toast = useToast();\r\n * toast(\"Sauvegardé.\", \"success\");\r\n * toast.undo(\"Titre supprimé.\", () => restore());\r\n * toast.action(\"Mise à jour disponible.\", \"Recharger\", () => location.reload());\r\n *\r\n * // Long-running progress (Batch 16 / H5):\r\n * const up = toast.progress(\"Téléversement en cours…\");\r\n * up.update(45);\r\n * up.update(90);\r\n * up.done(\"Téléversement terminé.\");\r\n *\r\n * // Or host-managed via id:\r\n * const up = toast.progress(\"…\");\r\n * toast.dismiss(up.id); // cancel mid-flight\r\n */\r\n\r\nconst MAX_TOASTS = 3;\r\n\r\n// Auto-dismiss delay after `done()` is called on a progress handle.\r\n// Lets the user see the \"100% + final message\" state before the toast\r\n// disappears.\r\nconst PROGRESS_DONE_DISMISS_DELAY_MS = 1000;\r\n\r\nexport type ToastVariant = \"success\" | \"error\" | \"warning\" | \"info\" | \"default\";\r\n\r\ninterface UndoCfg {\r\n onUndo?: () => void;\r\n label?: React.ReactNode;\r\n}\r\n\r\ninterface ToastAction {\r\n onClick?: () => void;\r\n label?: React.ReactNode;\r\n}\r\n\r\ninterface ToastData {\r\n id: string;\r\n message?: React.ReactNode;\r\n variant?: ToastVariant;\r\n undoCfg?: UndoCfg | null;\r\n action?: ToastAction | null;\r\n progress?: number | null;\r\n}\r\n\r\ninterface ToastLabels {\r\n undo: string;\r\n dismiss: string;\r\n}\r\n\r\nexport interface ToastProviderLabels {\r\n undo?: string | undefined;\r\n dismiss?: string | undefined;\r\n}\r\n\r\nexport interface ToastUndoOptions {\r\n variant?: ToastVariant | undefined;\r\n label?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface ToastProgressHandle {\r\n id: string;\r\n update: (p: number) => void;\r\n done: (finalMessage?: React.ReactNode) => void;\r\n}\r\n\r\nexport interface ToastApi {\r\n (message: React.ReactNode, variant?: ToastVariant): string;\r\n undo: (message: React.ReactNode, onUndo?: () => void, opts?: ToastUndoOptions | ToastVariant) => string;\r\n action: (message: React.ReactNode, label: React.ReactNode, onClick?: () => void, variant?: ToastVariant) => string;\r\n dismiss: (id: string) => void;\r\n progress: (message: React.ReactNode, opts?: { variant?: ToastVariant }) => ToastProgressHandle;\r\n}\r\n\r\nconst DEFAULT_LABELS: ToastLabels = Object.freeze({\r\n undo: \"Annuler\",\r\n dismiss: \"Fermer cette notification\",\r\n});\r\n\r\nconst ToastContext = React.createContext<ToastApi | null>(null);\r\n// Separate context so ToastItem can read labels without a value-churn\r\n// every time the toasts array updates.\r\nconst ToastLabelsContext = React.createContext<ToastLabels>(DEFAULT_LABELS);\r\n\r\nexport function useToast(): ToastApi {\r\n const ctx = React.useContext(ToastContext);\r\n if (!ctx) {\r\n throw new Error(\"[@portnet/ui v2] useToast() must be called inside <ToastProvider>\");\r\n }\r\n return ctx;\r\n}\r\n\r\ninterface ToastItemProps {\r\n toast: ToastData;\r\n onDismiss: (id: string, fromInteraction?: boolean) => void;\r\n}\r\n\r\nfunction ToastItem({ toast, onDismiss }: ToastItemProps) {\r\n const labels = React.useContext(ToastLabelsContext);\r\n const { id, message, variant, undoCfg, action, progress } = toast;\r\n return (\r\n <div className=\"pui-toast\" data-variant={variant}>\r\n {variant === \"success\" && <CheckIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {variant === \"error\" && <ErrorIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {variant === \"warning\" && <WarningIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {(variant === \"default\" || variant === \"info\") && <InfoIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n <span style={{ flex: 1 }}>{message}</span>\r\n {undoCfg && (\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-undo\"\r\n onClick={() => { undoCfg.onUndo?.(); onDismiss(id, true); }}\r\n >\r\n {undoCfg.label}\r\n </button>\r\n )}\r\n {action && !undoCfg && (\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-action\"\r\n onClick={() => { action.onClick?.(); onDismiss(id, true); }}\r\n >\r\n {action.label}\r\n </button>\r\n )}\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-dismiss\"\r\n onClick={() => onDismiss(id, true)}\r\n aria-label={labels.dismiss}\r\n >\r\n <CloseIcon style={{ width: 14, height: 14 }} />\r\n </button>\r\n {/* H5 — Progress bar at the bottom of the toast. Renders only\r\n for progress toasts (progress != null). The class is\r\n declared in base.css; uses currentColor so it adapts to\r\n every variant background (white-ish on the dark variants). */}\r\n {progress != null && (\r\n <div\r\n className=\"pui-toast-progress\"\r\n style={{ width: `${progress}%` }}\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface ToastProviderProps {\r\n children?: React.ReactNode | undefined;\r\n labels?: ToastProviderLabels | undefined;\r\n}\r\n\r\nexport function ToastProvider({ children, labels }: ToastProviderProps) {\r\n const mergedLabels = React.useMemo<ToastLabels>(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\r\n const timers = React.useRef<Record<string, ReturnType<typeof setTimeout>>>({});\r\n const triggersRef = React.useRef<Record<string, Element | null>>({});\r\n\r\n const idSeq = React.useRef(0);\r\n const nextId = React.useCallback(() => `t${++idSeq.current}`, []);\r\n\r\n const dismiss = React.useCallback((id: string, fromInteraction = false) => {\r\n clearTimeout(timers.current[id]);\r\n delete timers.current[id];\r\n\r\n const trigger = triggersRef.current[id];\r\n delete triggersRef.current[id];\r\n\r\n setToasts((arr) => arr.filter((t) => t.id !== id));\r\n\r\n if (fromInteraction && trigger) {\r\n setTimeout(() => {\r\n const el = trigger as HTMLElement & { disabled?: boolean };\r\n if (\r\n el !== document.body &&\r\n typeof el.focus === \"function\" &&\r\n document.body.contains(el) &&\r\n !el.disabled\r\n ) {\r\n el.focus();\r\n }\r\n }, 0);\r\n }\r\n }, []);\r\n\r\n const push = React.useCallback((\r\n message: React.ReactNode,\r\n variant: ToastVariant = \"default\",\r\n undoCfg: UndoCfg | null = null,\r\n action: ToastAction | null = null,\r\n progress: number | null = null\r\n ): string => {\r\n const id = nextId();\r\n\r\n triggersRef.current[id] = (typeof document !== \"undefined\")\r\n ? document.activeElement\r\n : null;\r\n\r\n setToasts((arr) => {\r\n const next = [...arr, { id, message, variant, undoCfg, action, progress }];\r\n if (next.length > MAX_TOASTS) {\r\n const dropped = next.shift();\r\n if (dropped) {\r\n clearTimeout(timers.current[dropped.id]);\r\n delete timers.current[dropped.id];\r\n delete triggersRef.current[dropped.id];\r\n }\r\n }\r\n return next;\r\n });\r\n\r\n // H5 — progress toasts have NO auto-dismiss timer. They are long-\r\n // running by definition; the host calls done() or dismiss(id).\r\n if (progress == null) {\r\n const duration = undoCfg ? 5000 : variant === \"error\" ? 5000 : 3500;\r\n timers.current[id] = setTimeout(() => dismiss(id, false), duration);\r\n }\r\n return id;\r\n }, [dismiss, nextId]);\r\n\r\n // H5 — Internal helper: patch a single toast's fields by id.\r\n // setState updater form so concurrent updates don't trample each\r\n // other if a host fires update() in tight succession.\r\n const patch = React.useCallback((id: string, fields: Partial<ToastData>) => {\r\n setToasts((arr) => arr.map((t) => (t.id === id ? { ...t, ...fields } : t)));\r\n }, []);\r\n\r\n const api = React.useMemo<ToastApi>(() => {\r\n const base = (message: React.ReactNode, variant: ToastVariant = \"default\"): string =>\r\n push(message, variant, null, null, null);\r\n\r\n const undo: ToastApi[\"undo\"] = (message, onUndo, opts) => {\r\n const o: ToastUndoOptions = typeof opts === \"string\" ? { variant: opts } : (opts || {});\r\n const variant = o.variant || \"default\";\r\n const label = o.label != null ? o.label : mergedLabels.undo;\r\n return push(message, variant, { ...(onUndo !== undefined ? { onUndo } : {}), label }, null, null);\r\n };\r\n\r\n const action: ToastApi[\"action\"] = (message, label, onClick, variant = \"default\") =>\r\n push(message, variant, null, { label, ...(onClick !== undefined ? { onClick } : {}) }, null);\r\n\r\n const dismissApi: ToastApi[\"dismiss\"] = (id) => dismiss(id, false);\r\n\r\n // H5 — fluent progress API. Returns { id, update, done } so the\r\n // host can drive the toast over its lifetime without juggling\r\n // the id manually (though id is also available for explicit\r\n // toast.dismiss(id) cancellation).\r\n const progress: ToastApi[\"progress\"] = (message, opts = {}) => {\r\n const variant = opts.variant || \"default\";\r\n const id = push(message, variant, null, null, 0);\r\n return {\r\n id,\r\n update: (p) => {\r\n // Clamp defensively so a host passing 137 doesn't blow the bar.\r\n const clamped = Math.max(0, Math.min(100, Number(p) || 0));\r\n patch(id, { progress: clamped });\r\n },\r\n done: (finalMessage) => {\r\n patch(id, {\r\n progress: 100,\r\n ...(finalMessage != null && { message: finalMessage }),\r\n variant: \"success\",\r\n });\r\n // Schedule auto-dismiss after a brief pause so the user sees\r\n // the filled bar + final message before the toast disappears.\r\n clearTimeout(timers.current[id]);\r\n timers.current[id] = setTimeout(\r\n () => dismiss(id, false),\r\n PROGRESS_DONE_DISMISS_DELAY_MS\r\n );\r\n },\r\n };\r\n };\r\n\r\n return Object.assign(base, { undo, action, dismiss: dismissApi, progress });\r\n }, [push, dismiss, patch, mergedLabels]);\r\n\r\n // D6 (Batch 14) — Symmetric ref cleanup on unmount.\r\n React.useEffect(() => () => {\r\n Object.values(timers.current).forEach(clearTimeout);\r\n timers.current = {};\r\n triggersRef.current = {};\r\n }, []);\r\n\r\n const polite = toasts.filter((t) => t.variant !== \"error\");\r\n const assertive = toasts.filter((t) => t.variant === \"error\");\r\n\r\n return (\r\n <ToastContext.Provider value={api}>\r\n <ToastLabelsContext.Provider value={mergedLabels}>\r\n {children}\r\n {/* role=\"region\" promotes the wrapper from generic to a\r\n landmark so:\r\n (a) the aria-label is valid (ARIA 1.2 prohibits\r\n aria-label on generic elements — axe-core 4.11\r\n rule `aria-prohibited-attr`);\r\n (b) the portal joins the page's landmark structure\r\n and is reachable via SR landmark-only navigation\r\n (axe-core rule `region`).\r\n The inner status/alert regions keep their own\r\n live-region semantics. */}\r\n <div className=\"pui-toast-host\" role=\"region\" aria-label=\"Notifications\">\r\n <div role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"false\">\r\n {polite.map((t) => <ToastItem key={t.id} toast={t} onDismiss={dismiss} />)}\r\n </div>\r\n <div role=\"alert\" aria-live=\"assertive\" aria-relevant=\"additions text\" aria-atomic=\"false\">\r\n {assertive.map((t) => <ToastItem key={t.id} toast={t} onDismiss={dismiss} />)}\r\n </div>\r\n </div>\r\n </ToastLabelsContext.Provider>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport default ToastProvider;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Toast.js","names":["React","CheckIcon","ErrorIcon","WarningIcon","InfoIcon","CloseIcon","mergeLabels","jsx","_jsx","jsxs","_jsxs","MAX_TOASTS","PROGRESS_DONE_DISMISS_DELAY_MS","DEFAULT_LABELS","Object","freeze","undo","dismiss","ToastContext","createContext","ToastLabelsContext","useToast","ctx","useContext","Error","ToastItem","toast","onDismiss","labels","id","message","variant","undoCfg","action","progress","className","children","fontSize","style","flex","type","onClick","onUndo","label","width","height","ToastProvider","mergedLabels","useMemo","toasts","setToasts","useState","timers","useRef","triggersRef","idSeq","nextId","useCallback","current","fromInteraction","clearTimeout","trigger","arr","filter","t","setTimeout","el","document","body","focus","contains","disabled","push","activeElement","next","length","dropped","shift","duration","patch","fields","map","api","base","opts","o","undefined","dismissApi","update","p","clamped","Math","max","min","Number","done","finalMessage","assign","useEffect","values","forEach","polite","assertive","Provider","value","role"],"sources":["../../../../src/lib/v2/components/Toast.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\nimport WarningIcon from \"@mui/icons-material/WarningAmberOutlined\";\r\nimport InfoIcon from \"@mui/icons-material/InfoOutlined\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Toast - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Toast\". 3 niveaux : Toast / Inline Alert / Banner.\r\n *\r\n * R-A.1 - Toast = role=\"status\" aria-live=\"polite\".\r\n * R-A.2 - Erreur bloquante = role=\"alert\" aria-live=\"assertive\".\r\n * R-A.3 - Max 3 toasts simultanés ; pile en bas-centre.\r\n * R-A.4 - Pas de toast pour valider une action utilisateur (succès uniquement).\r\n *\r\n * Implementation note (R-A.1 / R-A.2):\r\n * We render TWO live regions, not one. A single region with\r\n * aria-live=\"polite\" whose children override to aria-live=\"assertive\"\r\n * is unreliable across screen readers - most SRs honour the OUTER\r\n * region's live setting. To ensure assertive errors interrupt as\r\n * required, error toasts go into a dedicated role=\"alert\"\r\n * aria-live=\"assertive\" region, while every other variant goes into\r\n * a role=\"status\" aria-live=\"polite\" region. Both stacks render\r\n * visually at the same anchor.\r\n *\r\n * Landmark wrapping (a11y, axe-core 4.11):\r\n * The outer .pui-toast-host wrapper carries role=\"region\" so the\r\n * aria-label=\"Notifications\" is valid (aria-label is prohibited on\r\n * bare generic <div>s per ARIA 1.2) AND the portal joins the page's\r\n * landmark structure (AT users running landmark-only navigation\r\n * now reach it). The two inner live regions keep their own\r\n * status/alert semantics unchanged.\r\n *\r\n * Focus restoration (R-F.2 spirit):\r\n * When the user dismisses a toast by clicking Undo / Action /\r\n * Close, focus returns to whichever element was focused when\r\n * the toast first appeared. Auto-dismiss (timeout) and host-\r\n * initiated dismissal (api.dismiss(id)) deliberately do NOT\r\n * restore.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <ToastProvider labels={{ undo: \"Undo\", dismiss: \"Dismiss\" }}>\r\n *\r\n * API:\r\n * const toast = useToast();\r\n * toast(\"Sauvegardé.\", \"success\");\r\n * toast.undo(\"Titre supprimé.\", () => restore());\r\n * toast.action(\"Mise à jour disponible.\", \"Recharger\", () => location.reload());\r\n *\r\n * // Long-running progress (Batch 16 / H5):\r\n * const up = toast.progress(\"Téléversement en cours…\");\r\n * up.update(45);\r\n * up.update(90);\r\n * up.done(\"Téléversement terminé.\");\r\n *\r\n * // Or host-managed via id:\r\n * const up = toast.progress(\"…\");\r\n * toast.dismiss(up.id); // cancel mid-flight\r\n */\r\n\r\nconst MAX_TOASTS = 3;\r\n\r\n// Auto-dismiss delay after `done()` is called on a progress handle.\r\n// Lets the user see the \"100% + final message\" state before the toast\r\n// disappears.\r\nconst PROGRESS_DONE_DISMISS_DELAY_MS = 1000;\r\n\r\nexport type ToastVariant = \"success\" | \"error\" | \"warning\" | \"info\" | \"default\";\r\n\r\ninterface UndoCfg {\r\n onUndo?: () => void;\r\n label?: React.ReactNode;\r\n}\r\n\r\ninterface ToastAction {\r\n onClick?: () => void;\r\n label?: React.ReactNode;\r\n}\r\n\r\ninterface ToastData {\r\n id: string;\r\n message?: React.ReactNode;\r\n variant?: ToastVariant;\r\n undoCfg?: UndoCfg | null;\r\n action?: ToastAction | null;\r\n progress?: number | null;\r\n}\r\n\r\ninterface ToastLabels {\r\n undo: string;\r\n dismiss: string;\r\n}\r\n\r\nexport interface ToastProviderLabels {\r\n undo?: string | undefined;\r\n dismiss?: string | undefined;\r\n}\r\n\r\nexport interface ToastUndoOptions {\r\n variant?: ToastVariant | undefined;\r\n label?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface ToastProgressHandle {\r\n id: string;\r\n update: (p: number) => void;\r\n done: (finalMessage?: React.ReactNode) => void;\r\n}\r\n\r\nexport interface ToastApi {\r\n (message: React.ReactNode, variant?: ToastVariant): string;\r\n undo: (message: React.ReactNode, onUndo?: () => void, opts?: ToastUndoOptions | ToastVariant) => string;\r\n action: (message: React.ReactNode, label: React.ReactNode, onClick?: () => void, variant?: ToastVariant) => string;\r\n dismiss: (id: string) => void;\r\n progress: (message: React.ReactNode, opts?: { variant?: ToastVariant }) => ToastProgressHandle;\r\n}\r\n\r\nconst DEFAULT_LABELS: ToastLabels = Object.freeze({\r\n undo: \"Annuler\",\r\n dismiss: \"Fermer cette notification\",\r\n});\r\n\r\nconst ToastContext = React.createContext<ToastApi | null>(null);\r\n// Separate context so ToastItem can read labels without a value-churn\r\n// every time the toasts array updates.\r\nconst ToastLabelsContext = React.createContext<ToastLabels>(DEFAULT_LABELS);\r\n\r\nexport function useToast(): ToastApi {\r\n const ctx = React.useContext(ToastContext);\r\n if (!ctx) {\r\n throw new Error(\"[@portnet/ui v2] useToast() must be called inside <ToastProvider>\");\r\n }\r\n return ctx;\r\n}\r\n\r\ninterface ToastItemProps {\r\n toast: ToastData;\r\n onDismiss: (id: string, fromInteraction?: boolean) => void;\r\n}\r\n\r\nfunction ToastItem({ toast, onDismiss }: ToastItemProps) {\r\n const labels = React.useContext(ToastLabelsContext);\r\n const { id, message, variant, undoCfg, action, progress } = toast;\r\n return (\r\n <div className=\"pui-toast\" data-variant={variant}>\r\n {variant === \"success\" && <CheckIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {variant === \"error\" && <ErrorIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {variant === \"warning\" && <WarningIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n {(variant === \"default\" || variant === \"info\") && <InfoIcon fontSize=\"small\" aria-hidden=\"true\" />}\r\n <span style={{ flex: 1 }}>{message}</span>\r\n {undoCfg && (\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-undo\"\r\n onClick={() => { undoCfg.onUndo?.(); onDismiss(id, true); }}\r\n >\r\n {undoCfg.label}\r\n </button>\r\n )}\r\n {action && !undoCfg && (\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-action\"\r\n onClick={() => { action.onClick?.(); onDismiss(id, true); }}\r\n >\r\n {action.label}\r\n </button>\r\n )}\r\n <button\r\n type=\"button\"\r\n className=\"pui-toast-dismiss\"\r\n onClick={() => onDismiss(id, true)}\r\n aria-label={labels.dismiss}\r\n >\r\n <CloseIcon style={{ width: 14, height: 14 }} />\r\n </button>\r\n {/* H5 — Progress bar at the bottom of the toast. Renders only\r\n for progress toasts (progress != null). The class is\r\n declared in base.css; uses currentColor so it adapts to\r\n every variant background (white-ish on the dark variants). */}\r\n {progress != null && (\r\n <div\r\n className=\"pui-toast-progress\"\r\n style={{ width: `${progress}%` }}\r\n aria-hidden=\"true\"\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface ToastProviderProps {\r\n children?: React.ReactNode | undefined;\r\n labels?: ToastProviderLabels | undefined;\r\n}\r\n\r\nexport function ToastProvider({ children, labels }: ToastProviderProps) {\r\n const mergedLabels = React.useMemo<ToastLabels>(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [toasts, setToasts] = React.useState<ToastData[]>([]);\r\n const timers = React.useRef<Record<string, ReturnType<typeof setTimeout>>>({});\r\n const triggersRef = React.useRef<Record<string, Element | null>>({});\r\n\r\n const idSeq = React.useRef(0);\r\n const nextId = React.useCallback(() => `t${++idSeq.current}`, []);\r\n\r\n const dismiss = React.useCallback((id: string, fromInteraction = false) => {\r\n clearTimeout(timers.current[id]);\r\n delete timers.current[id];\r\n\r\n const trigger = triggersRef.current[id];\r\n delete triggersRef.current[id];\r\n\r\n setToasts((arr) => arr.filter((t) => t.id !== id));\r\n\r\n if (fromInteraction && trigger) {\r\n setTimeout(() => {\r\n const el = trigger as HTMLElement & { disabled?: boolean };\r\n if (\r\n el !== document.body &&\r\n typeof el.focus === \"function\" &&\r\n document.body.contains(el) &&\r\n !el.disabled\r\n ) {\r\n el.focus();\r\n }\r\n }, 0);\r\n }\r\n }, []);\r\n\r\n const push = React.useCallback((\r\n message: React.ReactNode,\r\n variant: ToastVariant = \"default\",\r\n undoCfg: UndoCfg | null = null,\r\n action: ToastAction | null = null,\r\n progress: number | null = null\r\n ): string => {\r\n const id = nextId();\r\n\r\n triggersRef.current[id] = (typeof document !== \"undefined\")\r\n ? document.activeElement\r\n : null;\r\n\r\n setToasts((arr) => {\r\n const next = [...arr, { id, message, variant, undoCfg, action, progress }];\r\n if (next.length > MAX_TOASTS) {\r\n const dropped = next.shift();\r\n if (dropped) {\r\n clearTimeout(timers.current[dropped.id]);\r\n delete timers.current[dropped.id];\r\n delete triggersRef.current[dropped.id];\r\n }\r\n }\r\n return next;\r\n });\r\n\r\n // H5 — progress toasts have NO auto-dismiss timer. They are long-\r\n // running by definition; the host calls done() or dismiss(id).\r\n if (progress == null) {\r\n const duration = undoCfg ? 5000 : variant === \"error\" ? 5000 : 3500;\r\n timers.current[id] = setTimeout(() => dismiss(id, false), duration);\r\n }\r\n return id;\r\n }, [dismiss, nextId]);\r\n\r\n // H5 — Internal helper: patch a single toast's fields by id.\r\n // setState updater form so concurrent updates don't trample each\r\n // other if a host fires update() in tight succession.\r\n const patch = React.useCallback((id: string, fields: Partial<ToastData>) => {\r\n setToasts((arr) => arr.map((t) => (t.id === id ? { ...t, ...fields } : t)));\r\n }, []);\r\n\r\n const api = React.useMemo<ToastApi>(() => {\r\n const base = (message: React.ReactNode, variant: ToastVariant = \"default\"): string =>\r\n push(message, variant, null, null, null);\r\n\r\n const undo: ToastApi[\"undo\"] = (message, onUndo, opts) => {\r\n const o: ToastUndoOptions = typeof opts === \"string\" ? { variant: opts } : (opts || {});\r\n const variant = o.variant || \"default\";\r\n const label = o.label != null ? o.label : mergedLabels.undo;\r\n return push(message, variant, { ...(onUndo !== undefined ? { onUndo } : {}), label }, null, null);\r\n };\r\n\r\n const action: ToastApi[\"action\"] = (message, label, onClick, variant = \"default\") =>\r\n push(message, variant, null, { label, ...(onClick !== undefined ? { onClick } : {}) }, null);\r\n\r\n const dismissApi: ToastApi[\"dismiss\"] = (id) => dismiss(id, false);\r\n\r\n // H5 — fluent progress API. Returns { id, update, done } so the\r\n // host can drive the toast over its lifetime without juggling\r\n // the id manually (though id is also available for explicit\r\n // toast.dismiss(id) cancellation).\r\n const progress: ToastApi[\"progress\"] = (message, opts = {}) => {\r\n const variant = opts.variant || \"default\";\r\n const id = push(message, variant, null, null, 0);\r\n return {\r\n id,\r\n update: (p) => {\r\n // Clamp defensively so a host passing 137 doesn't blow the bar.\r\n const clamped = Math.max(0, Math.min(100, Number(p) || 0));\r\n patch(id, { progress: clamped });\r\n },\r\n done: (finalMessage) => {\r\n patch(id, {\r\n progress: 100,\r\n ...(finalMessage != null && { message: finalMessage }),\r\n variant: \"success\",\r\n });\r\n // Schedule auto-dismiss after a brief pause so the user sees\r\n // the filled bar + final message before the toast disappears.\r\n clearTimeout(timers.current[id]);\r\n timers.current[id] = setTimeout(\r\n () => dismiss(id, false),\r\n PROGRESS_DONE_DISMISS_DELAY_MS\r\n );\r\n },\r\n };\r\n };\r\n\r\n return Object.assign(base, { undo, action, dismiss: dismissApi, progress });\r\n }, [push, dismiss, patch, mergedLabels]);\r\n\r\n // D6 (Batch 14) — Symmetric ref cleanup on unmount.\r\n React.useEffect(() => () => {\r\n Object.values(timers.current).forEach(clearTimeout);\r\n timers.current = {};\r\n triggersRef.current = {};\r\n }, []);\r\n\r\n const polite = toasts.filter((t) => t.variant !== \"error\");\r\n const assertive = toasts.filter((t) => t.variant === \"error\");\r\n\r\n return (\r\n <ToastContext.Provider value={api}>\r\n <ToastLabelsContext.Provider value={mergedLabels}>\r\n {children}\r\n {/* role=\"region\" promotes the wrapper from generic to a\r\n landmark so:\r\n (a) the aria-label is valid (ARIA 1.2 prohibits\r\n aria-label on generic elements — axe-core 4.11\r\n rule `aria-prohibited-attr`);\r\n (b) the portal joins the page's landmark structure\r\n and is reachable via SR landmark-only navigation\r\n (axe-core rule `region`).\r\n The inner status/alert regions keep their own\r\n live-region semantics. */}\r\n <div className=\"pui-toast-host\" role=\"region\" aria-label=\"Notifications\">\r\n <div role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"false\">\r\n {polite.map((t) => <ToastItem key={t.id} toast={t} onDismiss={dismiss} />)}\r\n </div>\r\n <div role=\"alert\" aria-live=\"assertive\" aria-relevant=\"additions text\" aria-atomic=\"false\">\r\n {assertive.map((t) => <ToastItem key={t.id} toast={t} onDismiss={dismiss} />)}\r\n </div>\r\n </div>\r\n </ToastLabelsContext.Provider>\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\nexport default ToastProvider;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,12 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- var _excluded = ["title", "children", "placement", "arrow", "enterDelay", "leaveDelay", "disabled"];
3
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
4
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
8
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
9
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
1
  import * as React from "react";
11
2
  import MuiTooltip from "@mui/material/Tooltip";
12
3
  import Box from "@mui/material/Box";
@@ -55,7 +46,7 @@ import Box from "@mui/material/Box";
55
46
  * theme will define them in a future iteration.
56
47
  */
57
48
  import { jsx as _jsx } from "react/jsx-runtime";
58
- var SHARED_SLOT_PROPS = {
49
+ const SHARED_SLOT_PROPS = {
59
50
  tooltip: {
60
51
  sx: {
61
52
  background: "var(--tooltip-bg, var(--fg))",
@@ -92,7 +83,7 @@ var SHARED_SLOT_PROPS = {
92
83
  * their glyph internally (no text in `children`), so they read as empty.
93
84
  */
94
85
  function hasTextContent(node) {
95
- return React.Children.toArray(node).some(function (c) {
86
+ return React.Children.toArray(node).some(c => {
96
87
  if (typeof c === "string") return c.trim().length > 0;
97
88
  if (typeof c === "number") return true;
98
89
  if (/*#__PURE__*/React.isValidElement(c)) {
@@ -101,28 +92,24 @@ function hasTextContent(node) {
101
92
  return false;
102
93
  });
103
94
  }
104
- function Tooltip(_ref) {
105
- var title = _ref.title,
106
- children = _ref.children,
107
- _ref$placement = _ref.placement,
108
- placement = _ref$placement === void 0 ? "top" : _ref$placement,
109
- _ref$arrow = _ref.arrow,
110
- arrow = _ref$arrow === void 0 ? false : _ref$arrow,
111
- _ref$enterDelay = _ref.enterDelay,
112
- enterDelay = _ref$enterDelay === void 0 ? 200 : _ref$enterDelay,
113
- _ref$leaveDelay = _ref.leaveDelay,
114
- leaveDelay = _ref$leaveDelay === void 0 ? 0 : _ref$leaveDelay,
115
- _ref$disabled = _ref.disabled,
116
- disabled = _ref$disabled === void 0 ? false : _ref$disabled,
117
- rest = _objectWithoutProperties(_ref, _excluded);
95
+ function Tooltip({
96
+ title,
97
+ children,
98
+ placement = "top",
99
+ arrow = false,
100
+ enterDelay = 200,
101
+ leaveDelay = 0,
102
+ disabled = false,
103
+ ...rest
104
+ }) {
118
105
  if (disabled || !title) return children;
119
106
 
120
107
  /* Mirror the title to aria-label on icon-only triggers so
121
108
  * screen-reader users get the same affordance. Only kicks in
122
109
  * if the trigger has no explicit aria-label AND no visible text
123
110
  * anywhere in its subtree. */
124
- var enhancedChildren = children;
125
- var cp = children.props;
111
+ let enhancedChildren = children;
112
+ const cp = children.props;
126
113
  if (/*#__PURE__*/React.isValidElement(children) && typeof title === "string" && !cp["aria-label"] && !cp["aria-labelledby"] && !hasTextContent(cp.children)) {
127
114
  enhancedChildren = /*#__PURE__*/React.cloneElement(children, {
128
115
  "aria-label": title
@@ -146,16 +133,16 @@ function Tooltip(_ref) {
146
133
  children: enhancedChildren
147
134
  });
148
135
  }
149
- return /*#__PURE__*/_jsx(MuiTooltip, _objectSpread(_objectSpread({
136
+ return /*#__PURE__*/_jsx(MuiTooltip, {
150
137
  title: title,
151
138
  placement: placement,
152
139
  arrow: arrow,
153
140
  enterDelay: enterDelay,
154
141
  leaveDelay: leaveDelay,
155
- slotProps: SHARED_SLOT_PROPS
156
- }, rest), {}, {
142
+ slotProps: SHARED_SLOT_PROPS,
143
+ ...rest,
157
144
  children: enhancedChildren
158
- }));
145
+ });
159
146
  }
160
147
  export default Tooltip;
161
148
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","names":["React","MuiTooltip","Box","jsx","_jsx","SHARED_SLOT_PROPS","tooltip","sx","background","color","fontSize","fontWeight","lineHeight","padding","borderRadius","maxWidth","boxShadow","arrow","popper","modifiers","name","options","offset","hasTextContent","node","Children","toArray","some","c","trim","length","isValidElement","props","children","Tooltip","_ref","title","_ref$placement","placement","_ref$arrow","_ref$enterDelay","enterDelay","_ref$leaveDelay","leaveDelay","_ref$disabled","disabled","rest","_objectWithoutProperties","_excluded","enhancedChildren","cp","cloneElement","component","tabIndex","display","cursor","_objectSpread","slotProps"],"sources":["../../../../src/lib/v2/components/Tooltip.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiTooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps as MuiTooltipProps } from \"@mui/material/Tooltip\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\n/**\r\n * Tooltip — Portnet UI v2\r\n *\r\n * Charter §03 · atomic disclosure primitive. Replaces:\r\n * - the local AppTooltip wrapper (audit Batch 2 violation C4)\r\n * - direct MUI Tooltip imports in host modules (gestionTI\r\n * rowActionsRenderer, AppTable adapter, etc.)\r\n *\r\n * Usage:\r\n *\r\n * // Inline help on a label:\r\n * <Tooltip title=\"Identifiant fiscal de l'opérateur\">\r\n * <InfoIcon fontSize=\"small\" />\r\n * </Tooltip>\r\n *\r\n * // Icon button row action:\r\n * <Tooltip title=\"Supprimer\">\r\n * <Button variant=\"ghost\" iconOnly icon={<DeleteIcon />} aria-label=\"Supprimer\" />\r\n * </Tooltip>\r\n *\r\n * // Disabled button (tooltip still fires on hover thanks to the\r\n * // internal span wrapper):\r\n * <Tooltip title=\"Action indisponible : aucun élément sélectionné\">\r\n * <Button disabled>Valider</Button>\r\n * </Tooltip>\r\n *\r\n * Accessible-name handling:\r\n * If the wrapped child is an icon-only element (no text node anywhere\r\n * in its subtree) AND no explicit aria-label is passed on the trigger,\r\n * the Tooltip title is also mirrored onto the trigger as aria-label so\r\n * screen-reader users get the same affordance sighted users get via\r\n * hover. Explicit aria-label on the trigger wins, and a trigger with\r\n * any visible text (even wrapped in an element) is left untouched so we\r\n * never override its visible label (WCAG 2.5.3 Label in Name).\r\n * (R-Ar.2: every interactive control has an accessible name.)\r\n *\r\n * Tokens:\r\n * bg = var(--tooltip-bg, var(--fg))\r\n * fg = var(--tooltip-fg, var(--bg))\r\n *\r\n * Falls back gracefully when --tooltip-* tokens are absent — the\r\n * theme will define them in a future iteration.\r\n */\r\n\r\nconst SHARED_SLOT_PROPS: NonNullable<MuiTooltipProps[\"slotProps\"]> = {\r\n tooltip: {\r\n sx: {\r\n background: \"var(--tooltip-bg, var(--fg))\",\r\n color: \"var(--tooltip-fg, var(--bg))\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n padding: \"var(--s-2) var(--s-3)\",\r\n borderRadius: \"var(--r-sm, var(--r-md))\",\r\n maxWidth: 320,\r\n boxShadow: \"var(--shadow-1, 0 2px 8px rgb(0 0 0 / 0.15))\",\r\n },\r\n },\r\n arrow: {\r\n sx: { color: \"var(--tooltip-bg, var(--fg))\" },\r\n },\r\n popper: {\r\n modifiers: [{ name: \"offset\", options: { offset: [0, 4] } }],\r\n },\r\n};\r\n\r\n/**\r\n * Recursively determine whether a React node subtree contains any visible\r\n * text. Used to decide whether a Tooltip trigger is \"icon-only\": a trigger\r\n * with text anywhere (even wrapped in an element) must NOT have its visible\r\n * label overridden by an injected aria-label (WCAG 2.5.3). Icons render\r\n * their glyph internally (no text in `children`), so they read as empty.\r\n */\r\nfunction hasTextContent(node: React.ReactNode): boolean {\r\n return React.Children.toArray(node).some((c) => {\r\n if (typeof c === \"string\") return c.trim().length > 0;\r\n if (typeof c === \"number\") return true;\r\n if (React.isValidElement(c)) {\r\n return hasTextContent((c.props as { children?: React.ReactNode }).children);\r\n }\r\n return false;\r\n });\r\n}\r\n\r\nexport interface TooltipProps extends MuiTooltipProps {\r\n /** Render children as-is without any tooltip wrapper. */\r\n disabled?: boolean | undefined;\r\n}\r\n\r\nfunction Tooltip({\r\n title,\r\n children,\r\n placement = \"top\",\r\n arrow = false,\r\n enterDelay = 200,\r\n leaveDelay = 0,\r\n disabled = false,\r\n ...rest\r\n}: TooltipProps) {\r\n if (disabled || !title) return children;\r\n\r\n /* Mirror the title to aria-label on icon-only triggers so\r\n * screen-reader users get the same affordance. Only kicks in\r\n * if the trigger has no explicit aria-label AND no visible text\r\n * anywhere in its subtree. */\r\n let enhancedChildren: React.ReactElement = children;\r\n const cp = children.props as {\r\n \"aria-label\"?: unknown;\r\n \"aria-labelledby\"?: unknown;\r\n children?: React.ReactNode;\r\n disabled?: unknown;\r\n };\r\n if (\r\n React.isValidElement(children) &&\r\n typeof title === \"string\" &&\r\n !cp[\"aria-label\"] &&\r\n !cp[\"aria-labelledby\"] &&\r\n !hasTextContent(cp.children)\r\n ) {\r\n enhancedChildren = React.cloneElement(\r\n children as React.ReactElement<Record<string, unknown>>,\r\n { \"aria-label\": title }\r\n );\r\n }\r\n\r\n /* Wrap disabled children in a span so the tooltip still receives\r\n * pointer events (MUI swallows them on disabled descendants). The\r\n * span is made focusable (tabIndex 0) so keyboard / screen-reader\r\n * users can focus it and hear WHY the control is unavailable —\r\n * a disabled element is not focusable and would otherwise never\r\n * surface the tooltip to non-pointer users. */\r\n if (\r\n React.isValidElement(enhancedChildren) &&\r\n (enhancedChildren.props as { disabled?: unknown }).disabled\r\n ) {\r\n enhancedChildren = (\r\n <Box\r\n component=\"span\"\r\n tabIndex={0}\r\n sx={{ display: \"inline-flex\", cursor: \"not-allowed\" }}\r\n >\r\n {enhancedChildren}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <MuiTooltip\r\n title={title}\r\n placement={placement}\r\n arrow={arrow}\r\n enterDelay={enterDelay}\r\n leaveDelay={leaveDelay}\r\n slotProps={SHARED_SLOT_PROPS}\r\n {...rest}\r\n >\r\n {enhancedChildren}\r\n </MuiTooltip>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Tooltip.js","names":["React","MuiTooltip","Box","jsx","_jsx","SHARED_SLOT_PROPS","tooltip","sx","background","color","fontSize","fontWeight","lineHeight","padding","borderRadius","maxWidth","boxShadow","arrow","popper","modifiers","name","options","offset","hasTextContent","node","Children","toArray","some","c","trim","length","isValidElement","props","children","Tooltip","title","placement","enterDelay","leaveDelay","disabled","rest","enhancedChildren","cp","cloneElement","component","tabIndex","display","cursor","slotProps"],"sources":["../../../../src/lib/v2/components/Tooltip.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiTooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps as MuiTooltipProps } from \"@mui/material/Tooltip\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\n/**\r\n * Tooltip — Portnet UI v2\r\n *\r\n * Charter §03 · atomic disclosure primitive. Replaces:\r\n * - the local AppTooltip wrapper (audit Batch 2 violation C4)\r\n * - direct MUI Tooltip imports in host modules (gestionTI\r\n * rowActionsRenderer, AppTable adapter, etc.)\r\n *\r\n * Usage:\r\n *\r\n * // Inline help on a label:\r\n * <Tooltip title=\"Identifiant fiscal de l'opérateur\">\r\n * <InfoIcon fontSize=\"small\" />\r\n * </Tooltip>\r\n *\r\n * // Icon button row action:\r\n * <Tooltip title=\"Supprimer\">\r\n * <Button variant=\"ghost\" iconOnly icon={<DeleteIcon />} aria-label=\"Supprimer\" />\r\n * </Tooltip>\r\n *\r\n * // Disabled button (tooltip still fires on hover thanks to the\r\n * // internal span wrapper):\r\n * <Tooltip title=\"Action indisponible : aucun élément sélectionné\">\r\n * <Button disabled>Valider</Button>\r\n * </Tooltip>\r\n *\r\n * Accessible-name handling:\r\n * If the wrapped child is an icon-only element (no text node anywhere\r\n * in its subtree) AND no explicit aria-label is passed on the trigger,\r\n * the Tooltip title is also mirrored onto the trigger as aria-label so\r\n * screen-reader users get the same affordance sighted users get via\r\n * hover. Explicit aria-label on the trigger wins, and a trigger with\r\n * any visible text (even wrapped in an element) is left untouched so we\r\n * never override its visible label (WCAG 2.5.3 Label in Name).\r\n * (R-Ar.2: every interactive control has an accessible name.)\r\n *\r\n * Tokens:\r\n * bg = var(--tooltip-bg, var(--fg))\r\n * fg = var(--tooltip-fg, var(--bg))\r\n *\r\n * Falls back gracefully when --tooltip-* tokens are absent — the\r\n * theme will define them in a future iteration.\r\n */\r\n\r\nconst SHARED_SLOT_PROPS: NonNullable<MuiTooltipProps[\"slotProps\"]> = {\r\n tooltip: {\r\n sx: {\r\n background: \"var(--tooltip-bg, var(--fg))\",\r\n color: \"var(--tooltip-fg, var(--bg))\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n padding: \"var(--s-2) var(--s-3)\",\r\n borderRadius: \"var(--r-sm, var(--r-md))\",\r\n maxWidth: 320,\r\n boxShadow: \"var(--shadow-1, 0 2px 8px rgb(0 0 0 / 0.15))\",\r\n },\r\n },\r\n arrow: {\r\n sx: { color: \"var(--tooltip-bg, var(--fg))\" },\r\n },\r\n popper: {\r\n modifiers: [{ name: \"offset\", options: { offset: [0, 4] } }],\r\n },\r\n};\r\n\r\n/**\r\n * Recursively determine whether a React node subtree contains any visible\r\n * text. Used to decide whether a Tooltip trigger is \"icon-only\": a trigger\r\n * with text anywhere (even wrapped in an element) must NOT have its visible\r\n * label overridden by an injected aria-label (WCAG 2.5.3). Icons render\r\n * their glyph internally (no text in `children`), so they read as empty.\r\n */\r\nfunction hasTextContent(node: React.ReactNode): boolean {\r\n return React.Children.toArray(node).some((c) => {\r\n if (typeof c === \"string\") return c.trim().length > 0;\r\n if (typeof c === \"number\") return true;\r\n if (React.isValidElement(c)) {\r\n return hasTextContent((c.props as { children?: React.ReactNode }).children);\r\n }\r\n return false;\r\n });\r\n}\r\n\r\nexport interface TooltipProps extends MuiTooltipProps {\r\n /** Render children as-is without any tooltip wrapper. */\r\n disabled?: boolean | undefined;\r\n}\r\n\r\nfunction Tooltip({\r\n title,\r\n children,\r\n placement = \"top\",\r\n arrow = false,\r\n enterDelay = 200,\r\n leaveDelay = 0,\r\n disabled = false,\r\n ...rest\r\n}: TooltipProps) {\r\n if (disabled || !title) return children;\r\n\r\n /* Mirror the title to aria-label on icon-only triggers so\r\n * screen-reader users get the same affordance. Only kicks in\r\n * if the trigger has no explicit aria-label AND no visible text\r\n * anywhere in its subtree. */\r\n let enhancedChildren: React.ReactElement = children;\r\n const cp = children.props as {\r\n \"aria-label\"?: unknown;\r\n \"aria-labelledby\"?: unknown;\r\n children?: React.ReactNode;\r\n disabled?: unknown;\r\n };\r\n if (\r\n React.isValidElement(children) &&\r\n typeof title === \"string\" &&\r\n !cp[\"aria-label\"] &&\r\n !cp[\"aria-labelledby\"] &&\r\n !hasTextContent(cp.children)\r\n ) {\r\n enhancedChildren = React.cloneElement(\r\n children as React.ReactElement<Record<string, unknown>>,\r\n { \"aria-label\": title }\r\n );\r\n }\r\n\r\n /* Wrap disabled children in a span so the tooltip still receives\r\n * pointer events (MUI swallows them on disabled descendants). The\r\n * span is made focusable (tabIndex 0) so keyboard / screen-reader\r\n * users can focus it and hear WHY the control is unavailable —\r\n * a disabled element is not focusable and would otherwise never\r\n * surface the tooltip to non-pointer users. */\r\n if (\r\n React.isValidElement(enhancedChildren) &&\r\n (enhancedChildren.props as { disabled?: unknown }).disabled\r\n ) {\r\n enhancedChildren = (\r\n <Box\r\n component=\"span\"\r\n tabIndex={0}\r\n sx={{ display: \"inline-flex\", cursor: \"not-allowed\" }}\r\n >\r\n {enhancedChildren}\r\n </Box>\r\n );\r\n }\r\n\r\n return (\r\n <MuiTooltip\r\n title={title}\r\n placement={placement}\r\n arrow={arrow}\r\n enterDelay={enterDelay}\r\n leaveDelay={leaveDelay}\r\n slotProps={SHARED_SLOT_PROPS}\r\n {...rest}\r\n >\r\n {enhancedChildren}\r\n </MuiTooltip>\r\n );\r\n}\r\n\r\nexport default Tooltip;\r\n"],"mappings":"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","ignoreList":[]}
@@ -28,11 +28,12 @@
28
28
  import * as React from "react";
29
29
  import Box from "@mui/material/Box";
30
30
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
31
- function ErrorPageBody(_ref) {
32
- var icon = _ref.icon,
33
- code = _ref.code,
34
- title = _ref.title,
35
- description = _ref.description;
31
+ function ErrorPageBody({
32
+ icon,
33
+ code,
34
+ title,
35
+ description
36
+ }) {
36
37
  return /*#__PURE__*/_jsxs(Box, {
37
38
  sx: {
38
39
  display: "flex",
@@ -1 +1 @@
1
- {"version":3,"file":"_ErrorPageBody.js","names":["React","Box","jsx","_jsx","jsxs","_jsxs","ErrorPageBody","_ref","icon","code","title","description","sx","display","flexDirection","alignItems","justifyContent","textAlign","gap","padding","minHeight","children","fontFamily","fontSize","fontWeight","color","margin","letterSpacing","component","lineHeight","maxWidth"],"sources":["../../../../src/lib/v2/components/_ErrorPageBody.tsx"],"sourcesContent":["/**\r\n * Internal: error-page body block — Portnet UI v2.\r\n *\r\n * Shared inner block for the v2 error-page family\r\n * (ForbiddenPage, NotFoundPage, ServerErrorPage, NetworkErrorPage).\r\n * Keeps the four pages visually consistent — icon + monospace code\r\n * ornament + h2 title + body description, vertically centred with\r\n * the charter spacing scale.\r\n *\r\n * NOT part of the public surface. The underscore prefix and the\r\n * absence of a re-export from components/index.js make this clear.\r\n *\r\n * import ErrorPageBody from \"./_ErrorPageBody\";\r\n *\r\n * A11y (audit Batch 4 external, finding B4-EXT-1):\r\n * The big HTTP code (\"403\", \"404\", \"500\") is a VISUAL ornament,\r\n * not a heading. It used to be rendered as <h1>, which collided\r\n * with ActionBar's own <h1> on every error page → two <h1>s on\r\n * the same page + the semantic page heading was a non-heading\r\n * <Box>. WCAG 1.3.1 / 2.4.6 violation.\r\n *\r\n * Fix: code is now a presentational <div aria-hidden=\"true\">\r\n * (sighted users still see it; AT users skip it). The `title`\r\n * is now a real <h2> so it sits subordinate to ActionBar's <h1>\r\n * in the heading hierarchy. SR users navigating by H key hear\r\n * \"Accès refusé\" (h1) → \"Vous n'avez pas accès…\" (h2).\r\n */\r\nimport * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\ninterface ErrorPageBodyProps {\r\n /** Optional illustrative icon (rendered above the code). */\r\n icon?: React.ReactNode;\r\n /**\r\n * Big monospace HTTP code ornament (e.g. \"403\", \"404\", \"500\", \"—\").\r\n * Rendered as aria-hidden visual decoration — the page's semantic\r\n * heading is owned by ActionBar (audit B4-EXT-1).\r\n */\r\n code: React.ReactNode;\r\n /**\r\n * Sub-heading sentence beneath the code. Rendered as <h2> so it\r\n * sits below ActionBar's <h1> in the heading hierarchy.\r\n */\r\n title: React.ReactNode;\r\n /** Optional body description paragraph. */\r\n description?: React.ReactNode;\r\n}\r\n\r\nfunction ErrorPageBody({ icon, code, title, description }: ErrorPageBodyProps) {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n textAlign: \"center\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-7) var(--s-5)\",\r\n minHeight: \"60vh\",\r\n }}\r\n >\r\n {icon ? (\r\n <Box aria-hidden=\"true\" sx={{ display: \"inline-flex\" }}>\r\n {icon}\r\n </Box>\r\n ) : null}\r\n\r\n {/* B4-EXT-1 — Was <Box component=\"h1\">. The HTTP code is a\r\n visual ornament; the page's semantic heading is owned by\r\n ActionBar's <h1>. Hiding the code from AT removes the\r\n duplicate-h1 and gives SR users a meaningful heading\r\n hierarchy. */}\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontFamily: \"var(--font-mono)\",\r\n fontSize: \"var(--text-display)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n margin: 0,\r\n letterSpacing: \"0.02em\",\r\n }}\r\n >\r\n {code}\r\n </Box>\r\n\r\n {/* B4-EXT-1 — Was a non-semantic <Box>. Promoted to <h2> so\r\n this descriptive sentence becomes the subordinate heading\r\n to ActionBar's <h1>. Visual size unchanged (--text-h2). */}\r\n <Box\r\n component=\"h2\"\r\n sx={{\r\n fontSize: \"var(--text-h2)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n margin: 0,\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {title}\r\n </Box>\r\n\r\n {description ? (\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n maxWidth: \"48ch\",\r\n }}\r\n >\r\n {description}\r\n </Box>\r\n ) : null}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ErrorPageBody;\r\n"],"mappings":"AAAA;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,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoBpC,SAASC,aAAaA,CAAAC,IAAA,EAAyD;EAAA,IAAtDC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAEC,WAAW,GAAAJ,IAAA,CAAXI,WAAW;EACrD,oBACEN,KAAA,CAACJ,GAAG;IACFW,EAAE,EAAE;MACFC,OAAO,EAAS,MAAM;MACtBC,aAAa,EAAG,QAAQ;MACxBC,UAAU,EAAM,QAAQ;MACxBC,cAAc,EAAE,QAAQ;MACxBC,SAAS,EAAO,QAAQ;MACxBC,GAAG,EAAa,YAAY;MAC5BC,OAAO,EAAS,uBAAuB;MACvCC,SAAS,EAAO;IAClB,CAAE;IAAAC,QAAA,GAEDb,IAAI,gBACHL,IAAA,CAACF,GAAG;MAAC,eAAY,MAAM;MAACW,EAAE,EAAE;QAAEC,OAAO,EAAE;MAAc,CAAE;MAAAQ,QAAA,EACpDb;IAAI,CACF,CAAC,GACJ,IAAI,eAORL,IAAA,CAACF,GAAG;MACF,eAAY,MAAM;MAClBW,EAAE,EAAE;QACFU,UAAU,EAAK,kBAAkB;QACjCC,QAAQ,EAAO,qBAAqB;QACpCC,UAAU,EAAK,gBAAgB;QAC/BC,KAAK,EAAU,WAAW;QAC1BC,MAAM,EAAS,CAAC;QAChBC,aAAa,EAAE;MACjB,CAAE;MAAAN,QAAA,EAEDZ;IAAI,CACF,CAAC,eAKNN,IAAA,CAACF,GAAG;MACF2B,SAAS,EAAC,IAAI;MACdhB,EAAE,EAAE;QACFW,QAAQ,EAAI,gBAAgB;QAC5BC,UAAU,EAAE,oBAAoB;QAChCC,KAAK,EAAO,WAAW;QACvBC,MAAM,EAAM,CAAC;QACbG,UAAU,EAAE;MACd,CAAE;MAAAR,QAAA,EAEDX;IAAK,CACH,CAAC,EAELC,WAAW,gBACVR,IAAA,CAACF,GAAG;MACFW,EAAE,EAAE;QACFW,QAAQ,EAAE,gBAAgB;QAC1BE,KAAK,EAAK,iBAAiB;QAC3BK,QAAQ,EAAE;MACZ,CAAE;MAAAT,QAAA,EAEDV;IAAW,CACT,CAAC,GACJ,IAAI;EAAA,CACL,CAAC;AAEV;AAEA,eAAeL,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"_ErrorPageBody.js","names":["React","Box","jsx","_jsx","jsxs","_jsxs","ErrorPageBody","icon","code","title","description","sx","display","flexDirection","alignItems","justifyContent","textAlign","gap","padding","minHeight","children","fontFamily","fontSize","fontWeight","color","margin","letterSpacing","component","lineHeight","maxWidth"],"sources":["../../../../src/lib/v2/components/_ErrorPageBody.tsx"],"sourcesContent":["/**\r\n * Internal: error-page body block — Portnet UI v2.\r\n *\r\n * Shared inner block for the v2 error-page family\r\n * (ForbiddenPage, NotFoundPage, ServerErrorPage, NetworkErrorPage).\r\n * Keeps the four pages visually consistent — icon + monospace code\r\n * ornament + h2 title + body description, vertically centred with\r\n * the charter spacing scale.\r\n *\r\n * NOT part of the public surface. The underscore prefix and the\r\n * absence of a re-export from components/index.js make this clear.\r\n *\r\n * import ErrorPageBody from \"./_ErrorPageBody\";\r\n *\r\n * A11y (audit Batch 4 external, finding B4-EXT-1):\r\n * The big HTTP code (\"403\", \"404\", \"500\") is a VISUAL ornament,\r\n * not a heading. It used to be rendered as <h1>, which collided\r\n * with ActionBar's own <h1> on every error page → two <h1>s on\r\n * the same page + the semantic page heading was a non-heading\r\n * <Box>. WCAG 1.3.1 / 2.4.6 violation.\r\n *\r\n * Fix: code is now a presentational <div aria-hidden=\"true\">\r\n * (sighted users still see it; AT users skip it). The `title`\r\n * is now a real <h2> so it sits subordinate to ActionBar's <h1>\r\n * in the heading hierarchy. SR users navigating by H key hear\r\n * \"Accès refusé\" (h1) → \"Vous n'avez pas accès…\" (h2).\r\n */\r\nimport * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\ninterface ErrorPageBodyProps {\r\n /** Optional illustrative icon (rendered above the code). */\r\n icon?: React.ReactNode;\r\n /**\r\n * Big monospace HTTP code ornament (e.g. \"403\", \"404\", \"500\", \"—\").\r\n * Rendered as aria-hidden visual decoration — the page's semantic\r\n * heading is owned by ActionBar (audit B4-EXT-1).\r\n */\r\n code: React.ReactNode;\r\n /**\r\n * Sub-heading sentence beneath the code. Rendered as <h2> so it\r\n * sits below ActionBar's <h1> in the heading hierarchy.\r\n */\r\n title: React.ReactNode;\r\n /** Optional body description paragraph. */\r\n description?: React.ReactNode;\r\n}\r\n\r\nfunction ErrorPageBody({ icon, code, title, description }: ErrorPageBodyProps) {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n textAlign: \"center\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-7) var(--s-5)\",\r\n minHeight: \"60vh\",\r\n }}\r\n >\r\n {icon ? (\r\n <Box aria-hidden=\"true\" sx={{ display: \"inline-flex\" }}>\r\n {icon}\r\n </Box>\r\n ) : null}\r\n\r\n {/* B4-EXT-1 — Was <Box component=\"h1\">. The HTTP code is a\r\n visual ornament; the page's semantic heading is owned by\r\n ActionBar's <h1>. Hiding the code from AT removes the\r\n duplicate-h1 and gives SR users a meaningful heading\r\n hierarchy. */}\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontFamily: \"var(--font-mono)\",\r\n fontSize: \"var(--text-display)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n margin: 0,\r\n letterSpacing: \"0.02em\",\r\n }}\r\n >\r\n {code}\r\n </Box>\r\n\r\n {/* B4-EXT-1 — Was a non-semantic <Box>. Promoted to <h2> so\r\n this descriptive sentence becomes the subordinate heading\r\n to ActionBar's <h1>. Visual size unchanged (--text-h2). */}\r\n <Box\r\n component=\"h2\"\r\n sx={{\r\n fontSize: \"var(--text-h2)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n margin: 0,\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {title}\r\n </Box>\r\n\r\n {description ? (\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n maxWidth: \"48ch\",\r\n }}\r\n >\r\n {description}\r\n </Box>\r\n ) : null}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ErrorPageBody;\r\n"],"mappings":"AAAA;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,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoBpC,SAASC,aAAaA,CAAC;EAAEC,IAAI;EAAEC,IAAI;EAAEC,KAAK;EAAEC;AAAgC,CAAC,EAAE;EAC7E,oBACEL,KAAA,CAACJ,GAAG;IACFU,EAAE,EAAE;MACFC,OAAO,EAAS,MAAM;MACtBC,aAAa,EAAG,QAAQ;MACxBC,UAAU,EAAM,QAAQ;MACxBC,cAAc,EAAE,QAAQ;MACxBC,SAAS,EAAO,QAAQ;MACxBC,GAAG,EAAa,YAAY;MAC5BC,OAAO,EAAS,uBAAuB;MACvCC,SAAS,EAAO;IAClB,CAAE;IAAAC,QAAA,GAEDb,IAAI,gBACHJ,IAAA,CAACF,GAAG;MAAC,eAAY,MAAM;MAACU,EAAE,EAAE;QAAEC,OAAO,EAAE;MAAc,CAAE;MAAAQ,QAAA,EACpDb;IAAI,CACF,CAAC,GACJ,IAAI,eAORJ,IAAA,CAACF,GAAG;MACF,eAAY,MAAM;MAClBU,EAAE,EAAE;QACFU,UAAU,EAAK,kBAAkB;QACjCC,QAAQ,EAAO,qBAAqB;QACpCC,UAAU,EAAK,gBAAgB;QAC/BC,KAAK,EAAU,WAAW;QAC1BC,MAAM,EAAS,CAAC;QAChBC,aAAa,EAAE;MACjB,CAAE;MAAAN,QAAA,EAEDZ;IAAI,CACF,CAAC,eAKNL,IAAA,CAACF,GAAG;MACF0B,SAAS,EAAC,IAAI;MACdhB,EAAE,EAAE;QACFW,QAAQ,EAAI,gBAAgB;QAC5BC,UAAU,EAAE,oBAAoB;QAChCC,KAAK,EAAO,WAAW;QACvBC,MAAM,EAAM,CAAC;QACbG,UAAU,EAAE;MACd,CAAE;MAAAR,QAAA,EAEDX;IAAK,CACH,CAAC,EAELC,WAAW,gBACVP,IAAA,CAACF,GAAG;MACFU,EAAE,EAAE;QACFW,QAAQ,EAAE,gBAAgB;QAC1BE,KAAK,EAAK,iBAAiB;QAC3BK,QAAQ,EAAE;MACZ,CAAE;MAAAT,QAAA,EAEDV;IAAW,CACT,CAAC,GACJ,IAAI;EAAA,CACL,CAAC;AAEV;AAEA,eAAeJ,aAAa","ignoreList":[]}
@@ -32,7 +32,7 @@ import moment from "moment";
32
32
  export function dateToMoment(d) {
33
33
  if (d == null) return null;
34
34
  if (moment.isMoment(d)) return d.isValid() ? d : null;
35
- var m = moment(d);
35
+ const m = moment(d);
36
36
  return m.isValid() ? m : null;
37
37
  }
38
38
 
@@ -52,7 +52,7 @@ export function momentToDate(m) {
52
52
  if (m == null) return null;
53
53
  if (!moment.isMoment(m)) {
54
54
  if (m instanceof Date) return Number.isFinite(m.getTime()) ? m : null;
55
- var d = new Date(m);
55
+ const d = new Date(m);
56
56
  return Number.isFinite(d.getTime()) ? d : null;
57
57
  }
58
58
  return m.isValid() ? m.toDate() : null;
@@ -1 +1 @@
1
- {"version":3,"file":"_pickerShared.js","names":["moment","dateToMoment","d","isMoment","isValid","m","momentToDate","Date","Number","isFinite","getTime","toDate"],"sources":["../../../../src/lib/v2/components/_pickerShared.ts"],"sourcesContent":["/**\r\n * _pickerShared — Portnet UI v2 (private)\r\n *\r\n * Internal sibling module. Not part of the public surface — leading\r\n * underscore is the convention. Hosts MUST NOT deep-import from this\r\n * file.\r\n *\r\n * Houses the Date ↔ moment boundary helpers shared between DatePicker,\r\n * DateTimePicker, TimePicker, and DateRangePicker. Each picker stays\r\n * a thin wrapper around a MUI X picker but uses these helpers to\r\n * coerce values at the React/MUI boundary.\r\n *\r\n * Contract: NEVER expose an Invalid Date instance. Either a valid\r\n * value or null. Hosts that consume v2 picker onChange always get a\r\n * usable value — no defensive `if (Number.isNaN(d.getTime()))` checks\r\n * scattered across consumer code.\r\n */\r\n\r\nimport moment from \"moment\";\r\n\r\ntype PickerValueInput = moment.Moment | Date | string | number | null | undefined;\r\n\r\n/**\r\n * Coerce any incoming value to a valid moment instance, or null.\r\n *\r\n * Handles:\r\n * - null / undefined → null\r\n * - moment instance → returned if valid, null otherwise\r\n * - Date instance → wrapped in moment(); valid → returned\r\n * - any other (string, number) → moment() coerced; valid → returned\r\n *\r\n * The \"valid\" check uses moment.isValid(), which catches Invalid Date\r\n * (NaN getTime), out-of-range values, and malformed strings.\r\n */\r\nexport function dateToMoment(d: PickerValueInput): moment.Moment | null {\r\n if (d == null) return null;\r\n if (moment.isMoment(d)) return d.isValid() ? d : null;\r\n const m = moment(d);\r\n return m.isValid() ? m : null;\r\n}\r\n\r\n/**\r\n * Coerce any incoming value to a valid Date instance, or null.\r\n *\r\n * Handles:\r\n * - null / undefined → null\r\n * - moment instance → toDate() if valid, null otherwise\r\n * - Date instance → returned if finite, null otherwise\r\n * - any other (string, number) → new Date() coerced; finite → returned\r\n *\r\n * The \"finite\" check on Date uses Number.isFinite(d.getTime()), which\r\n * catches Invalid Date (NaN), since NaN is not finite.\r\n */\r\nexport function momentToDate(m: PickerValueInput): Date | null {\r\n if (m == null) return null;\r\n if (!moment.isMoment(m)) {\r\n if (m instanceof Date) return Number.isFinite(m.getTime()) ? m : null;\r\n const d = new Date(m);\r\n return Number.isFinite(d.getTime()) ? d : null;\r\n }\r\n return m.isValid() ? m.toDate() : null;\r\n}\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,QAAQ;AAI3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,CAAmB,EAAwB;EACtE,IAAIA,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAIF,MAAM,CAACG,QAAQ,CAACD,CAAC,CAAC,EAAE,OAAOA,CAAC,CAACE,OAAO,CAAC,CAAC,GAAGF,CAAC,GAAG,IAAI;EACrD,IAAMG,CAAC,GAAGL,MAAM,CAACE,CAAC,CAAC;EACnB,OAAOG,CAAC,CAACD,OAAO,CAAC,CAAC,GAAGC,CAAC,GAAG,IAAI;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACD,CAAmB,EAAe;EAC7D,IAAIA,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAI,CAACL,MAAM,CAACG,QAAQ,CAACE,CAAC,CAAC,EAAE;IACvB,IAAIA,CAAC,YAAYE,IAAI,EAAE,OAAOC,MAAM,CAACC,QAAQ,CAACJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAAC,GAAGL,CAAC,GAAG,IAAI;IACrE,IAAMH,CAAC,GAAG,IAAIK,IAAI,CAACF,CAAC,CAAC;IACrB,OAAOG,MAAM,CAACC,QAAQ,CAACP,CAAC,CAACQ,OAAO,CAAC,CAAC,CAAC,GAAGR,CAAC,GAAG,IAAI;EAChD;EACA,OAAOG,CAAC,CAACD,OAAO,CAAC,CAAC,GAAGC,CAAC,CAACM,MAAM,CAAC,CAAC,GAAG,IAAI;AACxC","ignoreList":[]}
1
+ {"version":3,"file":"_pickerShared.js","names":["moment","dateToMoment","d","isMoment","isValid","m","momentToDate","Date","Number","isFinite","getTime","toDate"],"sources":["../../../../src/lib/v2/components/_pickerShared.ts"],"sourcesContent":["/**\r\n * _pickerShared — Portnet UI v2 (private)\r\n *\r\n * Internal sibling module. Not part of the public surface — leading\r\n * underscore is the convention. Hosts MUST NOT deep-import from this\r\n * file.\r\n *\r\n * Houses the Date ↔ moment boundary helpers shared between DatePicker,\r\n * DateTimePicker, TimePicker, and DateRangePicker. Each picker stays\r\n * a thin wrapper around a MUI X picker but uses these helpers to\r\n * coerce values at the React/MUI boundary.\r\n *\r\n * Contract: NEVER expose an Invalid Date instance. Either a valid\r\n * value or null. Hosts that consume v2 picker onChange always get a\r\n * usable value — no defensive `if (Number.isNaN(d.getTime()))` checks\r\n * scattered across consumer code.\r\n */\r\n\r\nimport moment from \"moment\";\r\n\r\ntype PickerValueInput = moment.Moment | Date | string | number | null | undefined;\r\n\r\n/**\r\n * Coerce any incoming value to a valid moment instance, or null.\r\n *\r\n * Handles:\r\n * - null / undefined → null\r\n * - moment instance → returned if valid, null otherwise\r\n * - Date instance → wrapped in moment(); valid → returned\r\n * - any other (string, number) → moment() coerced; valid → returned\r\n *\r\n * The \"valid\" check uses moment.isValid(), which catches Invalid Date\r\n * (NaN getTime), out-of-range values, and malformed strings.\r\n */\r\nexport function dateToMoment(d: PickerValueInput): moment.Moment | null {\r\n if (d == null) return null;\r\n if (moment.isMoment(d)) return d.isValid() ? d : null;\r\n const m = moment(d);\r\n return m.isValid() ? m : null;\r\n}\r\n\r\n/**\r\n * Coerce any incoming value to a valid Date instance, or null.\r\n *\r\n * Handles:\r\n * - null / undefined → null\r\n * - moment instance → toDate() if valid, null otherwise\r\n * - Date instance → returned if finite, null otherwise\r\n * - any other (string, number) → new Date() coerced; finite → returned\r\n *\r\n * The \"finite\" check on Date uses Number.isFinite(d.getTime()), which\r\n * catches Invalid Date (NaN), since NaN is not finite.\r\n */\r\nexport function momentToDate(m: PickerValueInput): Date | null {\r\n if (m == null) return null;\r\n if (!moment.isMoment(m)) {\r\n if (m instanceof Date) return Number.isFinite(m.getTime()) ? m : null;\r\n const d = new Date(m);\r\n return Number.isFinite(d.getTime()) ? d : null;\r\n }\r\n return m.isValid() ? m.toDate() : null;\r\n}\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,MAAM,MAAM,QAAQ;AAI3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACC,CAAmB,EAAwB;EACtE,IAAIA,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAIF,MAAM,CAACG,QAAQ,CAACD,CAAC,CAAC,EAAE,OAAOA,CAAC,CAACE,OAAO,CAAC,CAAC,GAAGF,CAAC,GAAG,IAAI;EACrD,MAAMG,CAAC,GAAGL,MAAM,CAACE,CAAC,CAAC;EACnB,OAAOG,CAAC,CAACD,OAAO,CAAC,CAAC,GAAGC,CAAC,GAAG,IAAI;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,YAAYA,CAACD,CAAmB,EAAe;EAC7D,IAAIA,CAAC,IAAI,IAAI,EAAE,OAAO,IAAI;EAC1B,IAAI,CAACL,MAAM,CAACG,QAAQ,CAACE,CAAC,CAAC,EAAE;IACvB,IAAIA,CAAC,YAAYE,IAAI,EAAE,OAAOC,MAAM,CAACC,QAAQ,CAACJ,CAAC,CAACK,OAAO,CAAC,CAAC,CAAC,GAAGL,CAAC,GAAG,IAAI;IACrE,MAAMH,CAAC,GAAG,IAAIK,IAAI,CAACF,CAAC,CAAC;IACrB,OAAOG,MAAM,CAACC,QAAQ,CAACP,CAAC,CAACQ,OAAO,CAAC,CAAC,CAAC,GAAGR,CAAC,GAAG,IAAI;EAChD;EACA,OAAOG,CAAC,CAACD,OAAO,CAAC,CAAC,GAAGC,CAAC,CAACM,MAAM,CAAC,CAAC,GAAG,IAAI;AACxC","ignoreList":[]}
@@ -94,6 +94,28 @@ export { default as Modal } from "./Modal";
94
94
  export { default as Drawer } from "./Drawer";
95
95
  export { default as ConfirmDialog } from "./ConfirmDialog";
96
96
  export { default as Tabs } from "./Tabs";
97
+ /**
98
+ * TabPanel + the two id builders — the OTHER HALF of the Tabs contract
99
+ * (capability gap G-46).
100
+ *
101
+ * `Tabs` advertises `aria-controls="pui-panel-<id>"` on every tab and ships
102
+ * nothing that carries that id. The format was therefore private knowledge each
103
+ * host re-spelled as a literal, and a typo there is invisible: the markup stays
104
+ * valid while the tab points at an element that does not exist — a broken
105
+ * `aria-controls` being worse than none, since AT offers a relationship it
106
+ * cannot follow.
107
+ *
108
+ * `tabDomId` / `tabPanelDomId` are exported alongside so a host with its own
109
+ * panel implementation (a virtualised or animated one) still derives the ids
110
+ * from the SAME definition `Tabs` uses, instead of a second copy of the string.
111
+ *
112
+ * Raised from `addm-fe` (Area 5), whose consultation page had written a local
113
+ * `TabPanel` by reading the convention out of Tabs.tsx.
114
+ *
115
+ * FLAT-ONLY, per the policy note in src/lib/index.ts.
116
+ */
117
+ export { default as TabPanel } from "./TabPanel";
118
+ export { tabDomId, tabPanelDomId } from "./Tabs";
97
119
  export { default as HStepper, VStepper } from "./Stepper";
98
120
  /**
99
121
  * Stepper data contracts — public typed surface.
@@ -107,6 +129,21 @@ export { default as HStepper, VStepper } from "./Stepper";
107
129
  * recording why. `VStepperItem` is surfaced alongside it because the same
108
130
  * consumer constructs the item objects the union lives in.
109
131
  *
132
+ * `HStepperRichStep` / `HStepperStep` close an ASYMMETRY in that reasoning,
133
+ * surfaced from addm-fe (Area 2). The V side got both its union and its ITEM
134
+ * type; the H side got only the union — yet the argument for `VStepperItem` is
135
+ * word for word the argument for the rich H step: a host driving HStepper in
136
+ * rich mode builds `{ id, label, status }` objects, and `status` widens to
137
+ * `string` in a `.map()` unless the mapped return type is annotated. Without
138
+ * the item type, the only ways out were to redeclare the shape locally (the
139
+ * duplication this block exists to prevent) or to reach it by
140
+ * `ComponentProps<typeof HStepper>["steps"][number]` — an indexed access that
141
+ * says nothing about intent.
142
+ *
143
+ * `HStepperStep` travels with it because it is what the `steps` PROP actually
144
+ * takes: the union of a plain label and a rich step, so a host typing the whole
145
+ * array variable rather than the map callback needs that one.
146
+ *
110
147
  * FLAT-ONLY, per the policy note in src/lib/index.ts: not added to
111
148
  * ./v2/index.ts, which is a retiring surface. Reachable as
112
149
  * `import type { StepStatus } from "@portnet/ui"` via the root star-export.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","Spinner","Button","Field","FieldError","Input","Select","Textarea","Checkbox","CheckboxGroup","Radio","RadioGroup","Switch","Combobox","TelInput","NumberInput","FR_DECIMAL_SEPARATOR","FR_THOUSAND_SEPARATOR","DatePicker","DATE_FORMAT_CHARTER","DateTimePicker","DATETIME_FORMAT_CHARTER","TimePicker","TIME_FORMAT_CHARTER","DateRangePicker","Status","Chip","Skeleton","SkeletonKPI","SkeletonRow","SkeletonDetailHero","SkeletonTabContent","SkeletonText","Modal","Drawer","ConfirmDialog","Tabs","HStepper","VStepper","FilterTab","EmptyState","Banner","SectionErrorBoundary","ToastProvider","useToast","KV","KPICard","KPIStrip","MobileRowCard","OverflowMenu","FieldHelp","SkipLink","ProgressBar","Segmented","Dropzone","CommandPalette","SectionBusy","PageBusy","FormGrid","KVGrid","Surface","FileCard","Box","Stack","SectionHeader","Accordion","Tooltip","ActionStrip","CategoryTag","FavoriteToggle","PdfViewer","ForbiddenPage","NotFoundPage","ServerErrorPage","NetworkErrorPage"],"sources":["../../../../src/lib/v2/components/index.ts"],"sourcesContent":["export { default as Spinner } from \"./Spinner\";\r\nexport { default as Button } from \"./Button\";\r\nexport { default as Field } from \"./Field\";\r\n/**\r\n * Field contracts — public typed surface (gap G-H).\r\n *\r\n * Meme defaut que les blocs `StepStatus`, `FieldHelp` et `Status` plus bas :\r\n * `Field` etait exporte comme VALEUR, sans aucun de ses types. `FieldWidth` est\r\n * le plus necessaire des deux : la section « Form Field Width & Layout\r\n * Standards » des Platform Mandatory UX Patterns impose de rattacher CHAQUE\r\n * champ d'un formulaire a l'un des cinq gabarits, et un module qui fait ce\r\n * mappage a l'echelle d'un ecran ecrit naturellement un dictionnaire :\r\n *\r\n * const LARGEURS: Record<string, FieldWidth> = { ifu: \"s\", adresse: \"l\", ... }\r\n *\r\n * Sans le type, il doit reecrire l'union au point d'appel — ce que les Platform\r\n * TypeScript Guidelines interdisent (« Reusable types belong inside Shared UI\r\n * Library … Never duplicate »). C'est le cas signale depuis `refonte-frontend`\r\n * (lot 8), ou ~60 champs sont a mapper.\r\n *\r\n * `FIELD_MAX_WIDTH` n'est PAS surfacee, deliberement : les cinq largeurs sont\r\n * une decision de design, et les exposer inviterait les hotes a poser les\r\n * plafonds eux-memes plutot que par `width` — donc a recreer les « arbitrary\r\n * input field widths » que le standard interdit. Elle reste atteignable par\r\n * chemin interne pour le test qui les epingle.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { FieldProps, FieldWidth } from \"./Field\";\r\n/**\r\n * FieldError — the message renderer `Field` uses, exported standalone\r\n * (capability gap G-18).\r\n *\r\n * Charter R-4.1 MUST requires a field error to carry an ICON; `Field` rendered a\r\n * bare red helper text without one, so the canonical field wrapper missed a MUST\r\n * on every form of every module. And a LIST-level error (a Formik array, an\r\n * upload slot) has no single control to wrap in a `Field` at all — addpe-fe's\r\n * local `InlineFieldAlert` reimplemented the recipe and was, ironically, more\r\n * charter-compliant than the shared component it could not reuse.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as FieldError } from \"./FieldError\";\r\nexport type { FieldErrorProps } from \"./FieldError\";\r\nexport { default as Input } from \"./Input\";\r\nexport { default as Select } from \"./Select\";\r\nexport type { SelectOption, SelectOptionObject, SelectOptionValue, SelectValue, SelectChangeLike, SelectLabels } from \"./Select\";\r\nexport { default as Textarea } from \"./Textarea\";\r\nexport { default as Checkbox, CheckboxGroup } from \"./Checkbox\";\r\nexport { default as Radio, RadioGroup } from \"./Radio\";\r\nexport { default as Switch } from \"./Switch\";\r\nexport { default as Combobox } from \"./Combobox\";\r\nexport type { ComboboxOption, ComboboxOptionValue, ComboboxValue, ComboboxLabels, ComboboxProps } from \"./Combobox\";\r\nexport { default as TelInput } from \"./TelInput\";\r\nexport {\r\n default as NumberInput,\r\n FR_DECIMAL_SEPARATOR,\r\n FR_THOUSAND_SEPARATOR,\r\n} from \"./NumberInput\";\r\nexport {\r\n default as DatePicker,\r\n DATE_FORMAT_CHARTER,\r\n} from \"./DatePicker\";\r\nexport {\r\n default as DateTimePicker,\r\n DATETIME_FORMAT_CHARTER,\r\n} from \"./DateTimePicker\";\r\nexport {\r\n default as TimePicker,\r\n TIME_FORMAT_CHARTER,\r\n} from \"./TimePicker\";\r\nexport { default as DateRangePicker } from \"./DateRangePicker\";\r\nexport { default as Status } from \"./Status\";\r\n/**\r\n * Status contracts — public typed surface (capability gap G-31).\r\n *\r\n * Same defect as the `StepStatus` and `FieldHelp` blocks below: `Status` was\r\n * exported as a VALUE while the types describing it were not re-exported here,\r\n * so a host mapping its own business codes onto the six canonical workflow\r\n * tones had to hand-write the union at the call site — which the Platform\r\n * TypeScript Guidelines forbid (\"Reusable types belong inside Shared UI\r\n * Library … Never duplicate\"). caution-ui carried exactly that local twin\r\n * (`CautionStatusKind`, six members, structurally identical) plus five\r\n * `as ComponentProps<typeof Status>` assertions at the render sites — casts\r\n * that were never needed for anything except reaching an unreachable type.\r\n *\r\n * `StatusProps` travels with it: a consumer building the chip props as an\r\n * object (mobile card, KV value slot, DataGrid cell renderer) needs the prop\r\n * contract, and re-declaring it is the same duplication one level down.\r\n *\r\n * KNOWN DEBT: `StatusKind` is currently derived as\r\n * `keyof typeof STATUS_LABELS_FR`, and STATUS_LABELS_FR is itself marked\r\n * `@deprecated … Will be removed in v0.3` (we are at 0.8.0). Deleting that\r\n * const would delete the public type with it. Re-anchoring `StatusKind` to a\r\n * literal tuple form of STATUS_KEYS — which is typed `readonly string[]` and\r\n * so cannot currently derive a union — is tracked separately; surfacing the\r\n * type now does not deepen that debt, it only makes it visible to consumers.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts: not added to\r\n * ./v2/index.ts, which is a retiring surface. Reachable as\r\n * `import type { StatusKind } from \"@portnet/ui\"` via the root star-export.\r\n *\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { StatusKind, StatusProps } from \"./Status\";\r\nexport { default as Chip } from \"./Chip\";\r\nexport {\r\n default as Skeleton,\r\n SkeletonKPI,\r\n SkeletonRow,\r\n SkeletonDetailHero,\r\n SkeletonTabContent,\r\n SkeletonText,\r\n} from \"./Skeleton\";\r\nexport { default as Modal } from \"./Modal\";\r\nexport { default as Drawer } from \"./Drawer\";\r\nexport type { DrawerProps, DrawerLabels, DrawerAnchor } from \"./Drawer\";\r\nexport { default as ConfirmDialog } from \"./ConfirmDialog\";\r\nexport { default as Tabs } from \"./Tabs\";\r\nexport { default as HStepper, VStepper } from \"./Stepper\";\r\n/**\r\n * Stepper data contracts — public typed surface.\r\n *\r\n * `StepStatus` is the literal union `HStepper`/`VStepper` accept on each\r\n * step. It was exported from ./Stepper but never re-exported here, so a host\r\n * building a step array had to hand-write the union at the call site — which\r\n * the Platform TypeScript Guidelines forbid (\"Reusable types belong inside\r\n * Shared UI Library … Never duplicate\"). ms_licenceexportation's\r\n * ExportationDetailProgress carried exactly that duplicate, with a comment\r\n * recording why. `VStepperItem` is surfaced alongside it because the same\r\n * consumer constructs the item objects the union lives in.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts: not added to\r\n * ./v2/index.ts, which is a retiring surface. Reachable as\r\n * `import type { StepStatus } from \"@portnet/ui\"` via the root star-export.\r\n *\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { StepStatus, StepState, VStepperItem } from \"./Stepper\";\r\nexport { default as FilterTab } from \"./FilterTab\";\r\nexport type { FilterTabVariant, FilterTabLabels } from \"./FilterTab\";\r\nexport { default as EmptyState } from \"./EmptyState\";\r\nexport { default as Banner } from \"./Banner\";\r\nexport type { BannerVariant, BannerAction } from \"./Banner\";\r\n/**\r\n * SectionErrorBoundary — fault tolerance by import, not by copy (gap G-30).\r\n *\r\n * ISO/IEC 25010 § Reliability requires a system to keep operating despite a\r\n * fault; React unmounts the WHOLE tree on a render exception, so one failing\r\n * section replaces the page with a blank screen. `ms-ti-fe` wrapped 13 sections\r\n * in a boundary of its own while `addpe-fe` and this library had none — a\r\n * platform guarantee living as one module's private safeguard.\r\n *\r\n * Declared after Banner because it renders one as its fallback.\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as SectionErrorBoundary } from \"./SectionErrorBoundary\";\r\nexport type { SectionErrorBoundaryProps } from \"./SectionErrorBoundary\";\r\nexport { default as ToastProvider, useToast } from \"./Toast\";\r\nexport type { ToastVariant, ToastProviderLabels, ToastUndoOptions, ToastProgressHandle, ToastApi } from \"./Toast\";\r\nexport { default as KV } from \"./KV\";\r\nexport { default as KPICard } from \"./KPICard\";\r\nexport type { KPICardProps, KPICardLabels } from \"./KPICard\";\r\n/**\r\n * KPIStrip — the metric-tile row (capability gap G-11).\r\n *\r\n * Charter §07 names this zone in the canonical page template (« ③ FILTERS / KPI\r\n * STRIP ») but the library shipped only the TILE. So every screen wrote the\r\n * grid, and the two in addpe-fe disagree on the desktop ladder — a KPI row that\r\n * reflows differently per screen for no reason a user could name.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as KPIStrip } from \"./KPIStrip\";\r\nexport type { KPIStripProps } from \"./KPIStrip\";\r\nexport { default as MobileRowCard } from \"./MobileRowCard\";\r\nexport type { MobileRowCardProps } from \"./MobileRowCard\";\r\nexport { default as OverflowMenu } from \"./OverflowMenu\";\r\nexport type { OverflowMenuAction, OverflowMenuProps, OverflowMenuLabels } from \"./OverflowMenu\";\r\nexport { default as FieldHelp } from \"./FieldHelp\";\r\n/**\r\n * FieldHelp contracts — public typed surface (capability gap G-16).\r\n *\r\n * Same defect as the `StepStatus` block above: `FieldHelp` was exported as a\r\n * VALUE while the types describing what it accepts were not re-exported here,\r\n * so a host maintaining a help-copy dictionary had to hand-declare the entry\r\n * shape — which the Platform TypeScript Guidelines forbid (\"Reusable types\r\n * belong inside Shared UI Library … Never duplicate\"). addpe-fe's `HELP_TEXTS`\r\n * carries exactly that local twin (`HelpTextEntry`), with a comment recording\r\n * that `FieldHelpProps` was unreachable.\r\n *\r\n * `FieldHelpVariant` / `FieldHelpIcon` travel with it: a dictionary that sets\r\n * `variant` per entry needs the union, and re-declaring `\"tooltip\" | \"popover\"`\r\n * at the call site is the same duplication one level down.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { FieldHelpProps, FieldHelpVariant, FieldHelpIcon } from \"./FieldHelp\";\r\nexport { default as SkipLink } from \"./SkipLink\";\r\nexport { default as ProgressBar } from \"./ProgressBar\";\r\nexport { default as Segmented } from \"./Segmented\";\r\nexport { default as Dropzone } from \"./Dropzone\";\r\nexport type {\r\n DropzoneProps,\r\n DropzoneFile,\r\n DropzoneFileStatus,\r\n DropzoneRejection,\r\n DropzoneRejectReason,\r\n DropzoneReasons,\r\n DropzoneLabels,\r\n} from \"./Dropzone\";\r\nexport { default as CommandPalette } from \"./CommandPalette\";\r\n\r\n// Loading-overlay primitives (Charter §04.4). See ./Busy.js.\r\n// Replaces the PAGE_OVERLAY_SX inline block that host modules\r\n// previously froze in 15+ feature pages.\r\nexport { default as SectionBusy, PageBusy } from \"./Busy\";\r\n\r\n// Layout primitives (Charter §03). Replace local FormGrid / KVGrid\r\n// wrappers that host modules previously inlined.\r\nexport { default as FormGrid } from \"./FormGrid\";\r\nexport { default as KVGrid } from \"./KVGrid\";\r\n\r\n/**\r\n * Surface — the bare card container (capability gap G-10).\r\n *\r\n * The card recipe (--surface + --border + -r-lg + --shadow-*) existed only\r\n * WELDED INSIDE FormSection, which also imposes a numbered heading and an inner\r\n * FormGrid. A consumer needing just the container — a DataGrid shell, a hero\r\n * card, a sticky side rail, a nested file row — could not reach it and rewrote\r\n * the recipe: three copies in addpe-fe plus a document card repeated across\r\n * three files, each having picked its own elevation and radius from memory.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as Surface } from \"./Surface\";\r\nexport type {\r\n SurfaceProps,\r\n SurfaceTone,\r\n SurfaceElevation,\r\n SurfaceRadius,\r\n SurfacePadding,\r\n} from \"./Surface\";\r\n\r\n/**\r\n * FileCard — an attached document, displayed (capability gap G-12).\r\n *\r\n * The library shipped `Dropzone`, the UPLOAD affordance, and nothing for the\r\n * state immediately after it. So every screen showing an attachment rebuilt the\r\n * same row: three copies in addpe-fe, with THREE different paddings for one\r\n * concept — accidental drift, exactly what R-2.1 forbids. Composes `Surface`.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as FileCard } from \"./FileCard\";\r\nexport type { FileCardProps } from \"./FileCard\";\r\n\r\n// Generic flex container + stack shorthand (B17). Drop-in\r\n// replacement for the common MUI Box/Stack usage pattern when no\r\n// breakpoint variation is required. See ./Layout.js.\r\nexport { Box, Stack } from \"./Layout\";\r\n\r\n// Section-header primitive (Charter §03). Standalone heading row;\r\n// see SectionHeader.js for how it differs from FormSection.\r\nexport { default as SectionHeader } from \"./SectionHeader\";\r\n\r\n// Disclosure primitives (Charter §03). Accordion uses native\r\n// <details>/<summary>; Tooltip wraps MuiTooltip with token theming\r\n// and aria-label mirroring for icon-only triggers.\r\nexport { default as Accordion } from \"./Accordion\";\r\nexport { default as Tooltip } from \"./Tooltip\";\r\n\r\n// Footer action strip (Charter §03). Distinct from ActionBar\r\n// (page header) and BulkActionBar (selection toolbar).\r\nexport { default as ActionStrip } from \"./ActionStrip\";\r\n\r\n// Taxonomy chip — reuses the 6-tone status palette but distinct\r\n// from v2.Status (category != workflow state).\r\nexport { default as CategoryTag } from \"./CategoryTag\";\r\n\r\n// Favorite toggle (☆/★) — presentational, controlled leaf primitive\r\n// used by the User Personalization Foundation's favorites capability\r\n// (v2/personalization). Provider-free: wire with useIsFavorite /\r\n// useFavorites, or drive manually via pressed/onChange.\r\nexport { default as FavoriteToggle } from \"./FavoriteToggle\";\r\n\r\n// Document viewer (Charter §07). Presentational pdf.js wrapper; the host\r\n// owns fetching (fileUrl|base64 + loading/error + workerUrl). Pulls the\r\n// @react-pdf-viewer / pdfjs-dist OPTIONAL peer deps — installed only by\r\n// PDF-consuming modules.\r\nexport { default as PdfViewer } from \"./PdfViewer\";\r\nexport type { PdfViewerProps } from \"./PdfViewer\";\r\n\r\n// Error pages — Charter §07. Router-agnostic; the lib accepts\r\n// onBack / onHome / onRetry callback props rather than importing\r\n// any router hook. NB: the internal _ErrorPageBody helper is NOT\r\n// re-exported (underscore-prefix convention).\r\nexport { default as ForbiddenPage } from \"./ForbiddenPage\";\r\nexport { default as NotFoundPage } from \"./NotFoundPage\";\r\nexport { default as ServerErrorPage } from \"./ServerErrorPage\";\r\nexport { default as NetworkErrorPage } from \"./NetworkErrorPage\";\r\n/**\r\n * Error-page prop contracts — public typed surface (capability gap G-32).\r\n *\r\n * The four pages are deliberately router-agnostic: they take `onBack` /\r\n * `onHome` / `onRetry` callbacks instead of importing a router hook. That\r\n * design REQUIRES every consumer to write a thin adapter binding its own\r\n * router to those callbacks — and each adapter needs the prop type to declare\r\n * what it is producing. The types existed on each module but were not\r\n * re-exported here, so the adapters could not reach them: caution-ui's\r\n * ErrorPages.tsx carried four\r\n * `as React.ComponentProps<typeof V2ForbiddenPage>` assertions for no reason\r\n * other than that `ForbiddenPageProps` was unreachable.\r\n *\r\n * A router adapter is the single most-repeated consumer of these components\r\n * across the fleet — one per module — so leaving the contract unreachable\r\n * guaranteed the same four casts in every repository.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { ForbiddenPageProps } from \"./ForbiddenPage\";\r\nexport type { NotFoundPageProps } from \"./NotFoundPage\";\r\nexport type { ServerErrorPageProps } from \"./ServerErrorPage\";\r\nexport type { NetworkErrorPageProps } from \"./NetworkErrorPage\";\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["default","Spinner","Button","Field","FieldError","Input","Select","Textarea","Checkbox","CheckboxGroup","Radio","RadioGroup","Switch","Combobox","TelInput","NumberInput","FR_DECIMAL_SEPARATOR","FR_THOUSAND_SEPARATOR","DatePicker","DATE_FORMAT_CHARTER","DateTimePicker","DATETIME_FORMAT_CHARTER","TimePicker","TIME_FORMAT_CHARTER","DateRangePicker","Status","Chip","Skeleton","SkeletonKPI","SkeletonRow","SkeletonDetailHero","SkeletonTabContent","SkeletonText","Modal","Drawer","ConfirmDialog","Tabs","TabPanel","tabDomId","tabPanelDomId","HStepper","VStepper","FilterTab","EmptyState","Banner","SectionErrorBoundary","ToastProvider","useToast","KV","KPICard","KPIStrip","MobileRowCard","OverflowMenu","FieldHelp","SkipLink","ProgressBar","Segmented","Dropzone","CommandPalette","SectionBusy","PageBusy","FormGrid","KVGrid","Surface","FileCard","Box","Stack","SectionHeader","Accordion","Tooltip","ActionStrip","CategoryTag","FavoriteToggle","PdfViewer","ForbiddenPage","NotFoundPage","ServerErrorPage","NetworkErrorPage"],"sources":["../../../../src/lib/v2/components/index.ts"],"sourcesContent":["export { default as Spinner } from \"./Spinner\";\r\nexport { default as Button } from \"./Button\";\r\nexport { default as Field } from \"./Field\";\r\n/**\r\n * Field contracts — public typed surface (gap G-H).\r\n *\r\n * Meme defaut que les blocs `StepStatus`, `FieldHelp` et `Status` plus bas :\r\n * `Field` etait exporte comme VALEUR, sans aucun de ses types. `FieldWidth` est\r\n * le plus necessaire des deux : la section « Form Field Width & Layout\r\n * Standards » des Platform Mandatory UX Patterns impose de rattacher CHAQUE\r\n * champ d'un formulaire a l'un des cinq gabarits, et un module qui fait ce\r\n * mappage a l'echelle d'un ecran ecrit naturellement un dictionnaire :\r\n *\r\n * const LARGEURS: Record<string, FieldWidth> = { ifu: \"s\", adresse: \"l\", ... }\r\n *\r\n * Sans le type, il doit reecrire l'union au point d'appel — ce que les Platform\r\n * TypeScript Guidelines interdisent (« Reusable types belong inside Shared UI\r\n * Library … Never duplicate »). C'est le cas signale depuis `refonte-frontend`\r\n * (lot 8), ou ~60 champs sont a mapper.\r\n *\r\n * `FIELD_MAX_WIDTH` n'est PAS surfacee, deliberement : les cinq largeurs sont\r\n * une decision de design, et les exposer inviterait les hotes a poser les\r\n * plafonds eux-memes plutot que par `width` — donc a recreer les « arbitrary\r\n * input field widths » que le standard interdit. Elle reste atteignable par\r\n * chemin interne pour le test qui les epingle.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { FieldProps, FieldWidth } from \"./Field\";\r\n/**\r\n * FieldError — the message renderer `Field` uses, exported standalone\r\n * (capability gap G-18).\r\n *\r\n * Charter R-4.1 MUST requires a field error to carry an ICON; `Field` rendered a\r\n * bare red helper text without one, so the canonical field wrapper missed a MUST\r\n * on every form of every module. And a LIST-level error (a Formik array, an\r\n * upload slot) has no single control to wrap in a `Field` at all — addpe-fe's\r\n * local `InlineFieldAlert` reimplemented the recipe and was, ironically, more\r\n * charter-compliant than the shared component it could not reuse.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as FieldError } from \"./FieldError\";\r\nexport type { FieldErrorProps } from \"./FieldError\";\r\nexport { default as Input } from \"./Input\";\r\nexport { default as Select } from \"./Select\";\r\nexport type { SelectOption, SelectOptionObject, SelectOptionValue, SelectValue, SelectChangeLike, SelectLabels } from \"./Select\";\r\nexport { default as Textarea } from \"./Textarea\";\r\nexport { default as Checkbox, CheckboxGroup } from \"./Checkbox\";\r\nexport { default as Radio, RadioGroup } from \"./Radio\";\r\nexport { default as Switch } from \"./Switch\";\r\nexport { default as Combobox } from \"./Combobox\";\r\nexport type { ComboboxOption, ComboboxOptionValue, ComboboxValue, ComboboxLabels, ComboboxProps } from \"./Combobox\";\r\nexport { default as TelInput } from \"./TelInput\";\r\nexport {\r\n default as NumberInput,\r\n FR_DECIMAL_SEPARATOR,\r\n FR_THOUSAND_SEPARATOR,\r\n} from \"./NumberInput\";\r\nexport {\r\n default as DatePicker,\r\n DATE_FORMAT_CHARTER,\r\n} from \"./DatePicker\";\r\nexport {\r\n default as DateTimePicker,\r\n DATETIME_FORMAT_CHARTER,\r\n} from \"./DateTimePicker\";\r\nexport {\r\n default as TimePicker,\r\n TIME_FORMAT_CHARTER,\r\n} from \"./TimePicker\";\r\nexport { default as DateRangePicker } from \"./DateRangePicker\";\r\nexport { default as Status } from \"./Status\";\r\n/**\r\n * Status contracts — public typed surface (capability gap G-31).\r\n *\r\n * Same defect as the `StepStatus` and `FieldHelp` blocks below: `Status` was\r\n * exported as a VALUE while the types describing it were not re-exported here,\r\n * so a host mapping its own business codes onto the six canonical workflow\r\n * tones had to hand-write the union at the call site — which the Platform\r\n * TypeScript Guidelines forbid (\"Reusable types belong inside Shared UI\r\n * Library … Never duplicate\"). caution-ui carried exactly that local twin\r\n * (`CautionStatusKind`, six members, structurally identical) plus five\r\n * `as ComponentProps<typeof Status>` assertions at the render sites — casts\r\n * that were never needed for anything except reaching an unreachable type.\r\n *\r\n * `StatusProps` travels with it: a consumer building the chip props as an\r\n * object (mobile card, KV value slot, DataGrid cell renderer) needs the prop\r\n * contract, and re-declaring it is the same duplication one level down.\r\n *\r\n * KNOWN DEBT: `StatusKind` is currently derived as\r\n * `keyof typeof STATUS_LABELS_FR`, and STATUS_LABELS_FR is itself marked\r\n * `@deprecated … Will be removed in v0.3` (we are at 0.8.0). Deleting that\r\n * const would delete the public type with it. Re-anchoring `StatusKind` to a\r\n * literal tuple form of STATUS_KEYS — which is typed `readonly string[]` and\r\n * so cannot currently derive a union — is tracked separately; surfacing the\r\n * type now does not deepen that debt, it only makes it visible to consumers.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts: not added to\r\n * ./v2/index.ts, which is a retiring surface. Reachable as\r\n * `import type { StatusKind } from \"@portnet/ui\"` via the root star-export.\r\n *\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { StatusKind, StatusProps } from \"./Status\";\r\nexport { default as Chip } from \"./Chip\";\r\nexport {\r\n default as Skeleton,\r\n SkeletonKPI,\r\n SkeletonRow,\r\n SkeletonDetailHero,\r\n SkeletonTabContent,\r\n SkeletonText,\r\n} from \"./Skeleton\";\r\nexport { default as Modal } from \"./Modal\";\r\nexport { default as Drawer } from \"./Drawer\";\r\nexport type { DrawerProps, DrawerLabels, DrawerAnchor } from \"./Drawer\";\r\nexport { default as ConfirmDialog } from \"./ConfirmDialog\";\r\nexport { default as Tabs } from \"./Tabs\";\r\n/**\r\n * TabPanel + the two id builders — the OTHER HALF of the Tabs contract\r\n * (capability gap G-46).\r\n *\r\n * `Tabs` advertises `aria-controls=\"pui-panel-<id>\"` on every tab and ships\r\n * nothing that carries that id. The format was therefore private knowledge each\r\n * host re-spelled as a literal, and a typo there is invisible: the markup stays\r\n * valid while the tab points at an element that does not exist — a broken\r\n * `aria-controls` being worse than none, since AT offers a relationship it\r\n * cannot follow.\r\n *\r\n * `tabDomId` / `tabPanelDomId` are exported alongside so a host with its own\r\n * panel implementation (a virtualised or animated one) still derives the ids\r\n * from the SAME definition `Tabs` uses, instead of a second copy of the string.\r\n *\r\n * Raised from `addm-fe` (Area 5), whose consultation page had written a local\r\n * `TabPanel` by reading the convention out of Tabs.tsx.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as TabPanel } from \"./TabPanel\";\r\nexport type { TabPanelProps } from \"./TabPanel\";\r\nexport { tabDomId, tabPanelDomId } from \"./Tabs\";\r\nexport type { TabItem, TabsProps } from \"./Tabs\";\r\nexport { default as HStepper, VStepper } from \"./Stepper\";\r\n/**\r\n * Stepper data contracts — public typed surface.\r\n *\r\n * `StepStatus` is the literal union `HStepper`/`VStepper` accept on each\r\n * step. It was exported from ./Stepper but never re-exported here, so a host\r\n * building a step array had to hand-write the union at the call site — which\r\n * the Platform TypeScript Guidelines forbid (\"Reusable types belong inside\r\n * Shared UI Library … Never duplicate\"). ms_licenceexportation's\r\n * ExportationDetailProgress carried exactly that duplicate, with a comment\r\n * recording why. `VStepperItem` is surfaced alongside it because the same\r\n * consumer constructs the item objects the union lives in.\r\n *\r\n * `HStepperRichStep` / `HStepperStep` close an ASYMMETRY in that reasoning,\r\n * surfaced from addm-fe (Area 2). The V side got both its union and its ITEM\r\n * type; the H side got only the union — yet the argument for `VStepperItem` is\r\n * word for word the argument for the rich H step: a host driving HStepper in\r\n * rich mode builds `{ id, label, status }` objects, and `status` widens to\r\n * `string` in a `.map()` unless the mapped return type is annotated. Without\r\n * the item type, the only ways out were to redeclare the shape locally (the\r\n * duplication this block exists to prevent) or to reach it by\r\n * `ComponentProps<typeof HStepper>[\"steps\"][number]` — an indexed access that\r\n * says nothing about intent.\r\n *\r\n * `HStepperStep` travels with it because it is what the `steps` PROP actually\r\n * takes: the union of a plain label and a rich step, so a host typing the whole\r\n * array variable rather than the map callback needs that one.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts: not added to\r\n * ./v2/index.ts, which is a retiring surface. Reachable as\r\n * `import type { StepStatus } from \"@portnet/ui\"` via the root star-export.\r\n *\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type {\r\n StepStatus,\r\n StepState,\r\n VStepperItem,\r\n HStepperRichStep,\r\n HStepperStep,\r\n} from \"./Stepper\";\r\nexport { default as FilterTab } from \"./FilterTab\";\r\nexport type { FilterTabVariant, FilterTabLabels } from \"./FilterTab\";\r\nexport { default as EmptyState } from \"./EmptyState\";\r\nexport { default as Banner } from \"./Banner\";\r\nexport type { BannerVariant, BannerAction } from \"./Banner\";\r\n/**\r\n * SectionErrorBoundary — fault tolerance by import, not by copy (gap G-30).\r\n *\r\n * ISO/IEC 25010 § Reliability requires a system to keep operating despite a\r\n * fault; React unmounts the WHOLE tree on a render exception, so one failing\r\n * section replaces the page with a blank screen. `ms-ti-fe` wrapped 13 sections\r\n * in a boundary of its own while `addpe-fe` and this library had none — a\r\n * platform guarantee living as one module's private safeguard.\r\n *\r\n * Declared after Banner because it renders one as its fallback.\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as SectionErrorBoundary } from \"./SectionErrorBoundary\";\r\nexport type { SectionErrorBoundaryProps } from \"./SectionErrorBoundary\";\r\nexport { default as ToastProvider, useToast } from \"./Toast\";\r\nexport type { ToastVariant, ToastProviderLabels, ToastUndoOptions, ToastProgressHandle, ToastApi } from \"./Toast\";\r\nexport { default as KV } from \"./KV\";\r\nexport { default as KPICard } from \"./KPICard\";\r\nexport type { KPICardProps, KPICardLabels } from \"./KPICard\";\r\n/**\r\n * KPIStrip — the metric-tile row (capability gap G-11).\r\n *\r\n * Charter §07 names this zone in the canonical page template (« ③ FILTERS / KPI\r\n * STRIP ») but the library shipped only the TILE. So every screen wrote the\r\n * grid, and the two in addpe-fe disagree on the desktop ladder — a KPI row that\r\n * reflows differently per screen for no reason a user could name.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as KPIStrip } from \"./KPIStrip\";\r\nexport type { KPIStripProps } from \"./KPIStrip\";\r\nexport { default as MobileRowCard } from \"./MobileRowCard\";\r\nexport type { MobileRowCardProps } from \"./MobileRowCard\";\r\nexport { default as OverflowMenu } from \"./OverflowMenu\";\r\nexport type { OverflowMenuAction, OverflowMenuProps, OverflowMenuLabels } from \"./OverflowMenu\";\r\nexport { default as FieldHelp } from \"./FieldHelp\";\r\n/**\r\n * FieldHelp contracts — public typed surface (capability gap G-16).\r\n *\r\n * Same defect as the `StepStatus` block above: `FieldHelp` was exported as a\r\n * VALUE while the types describing what it accepts were not re-exported here,\r\n * so a host maintaining a help-copy dictionary had to hand-declare the entry\r\n * shape — which the Platform TypeScript Guidelines forbid (\"Reusable types\r\n * belong inside Shared UI Library … Never duplicate\"). addpe-fe's `HELP_TEXTS`\r\n * carries exactly that local twin (`HelpTextEntry`), with a comment recording\r\n * that `FieldHelpProps` was unreachable.\r\n *\r\n * `FieldHelpVariant` / `FieldHelpIcon` travel with it: a dictionary that sets\r\n * `variant` per entry needs the union, and re-declaring `\"tooltip\" | \"popover\"`\r\n * at the call site is the same duplication one level down.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { FieldHelpProps, FieldHelpVariant, FieldHelpIcon } from \"./FieldHelp\";\r\nexport { default as SkipLink } from \"./SkipLink\";\r\nexport { default as ProgressBar } from \"./ProgressBar\";\r\nexport { default as Segmented } from \"./Segmented\";\r\nexport { default as Dropzone } from \"./Dropzone\";\r\nexport type {\r\n DropzoneProps,\r\n DropzoneFile,\r\n DropzoneFileStatus,\r\n DropzoneRejection,\r\n DropzoneRejectReason,\r\n DropzoneReasons,\r\n DropzoneLabels,\r\n} from \"./Dropzone\";\r\nexport { default as CommandPalette } from \"./CommandPalette\";\r\n\r\n// Loading-overlay primitives (Charter §04.4). See ./Busy.js.\r\n// Replaces the PAGE_OVERLAY_SX inline block that host modules\r\n// previously froze in 15+ feature pages.\r\nexport { default as SectionBusy, PageBusy } from \"./Busy\";\r\n\r\n// Layout primitives (Charter §03). Replace local FormGrid / KVGrid\r\n// wrappers that host modules previously inlined.\r\nexport { default as FormGrid } from \"./FormGrid\";\r\nexport { default as KVGrid } from \"./KVGrid\";\r\n\r\n/**\r\n * Surface — the bare card container (capability gap G-10).\r\n *\r\n * The card recipe (--surface + --border + -r-lg + --shadow-*) existed only\r\n * WELDED INSIDE FormSection, which also imposes a numbered heading and an inner\r\n * FormGrid. A consumer needing just the container — a DataGrid shell, a hero\r\n * card, a sticky side rail, a nested file row — could not reach it and rewrote\r\n * the recipe: three copies in addpe-fe plus a document card repeated across\r\n * three files, each having picked its own elevation and radius from memory.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as Surface } from \"./Surface\";\r\nexport type {\r\n SurfaceProps,\r\n SurfaceTone,\r\n SurfaceElevation,\r\n SurfaceRadius,\r\n SurfacePadding,\r\n} from \"./Surface\";\r\n\r\n/**\r\n * FileCard — an attached document, displayed (capability gap G-12).\r\n *\r\n * The library shipped `Dropzone`, the UPLOAD affordance, and nothing for the\r\n * state immediately after it. So every screen showing an attachment rebuilt the\r\n * same row: three copies in addpe-fe, with THREE different paddings for one\r\n * concept — accidental drift, exactly what R-2.1 forbids. Composes `Surface`.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n */\r\nexport { default as FileCard } from \"./FileCard\";\r\nexport type { FileCardProps } from \"./FileCard\";\r\n\r\n// Generic flex container + stack shorthand (B17). Drop-in\r\n// replacement for the common MUI Box/Stack usage pattern when no\r\n// breakpoint variation is required. See ./Layout.js.\r\nexport { Box, Stack } from \"./Layout\";\r\n\r\n// Section-header primitive (Charter §03). Standalone heading row;\r\n// see SectionHeader.js for how it differs from FormSection.\r\nexport { default as SectionHeader } from \"./SectionHeader\";\r\n\r\n// Disclosure primitives (Charter §03). Accordion uses native\r\n// <details>/<summary>; Tooltip wraps MuiTooltip with token theming\r\n// and aria-label mirroring for icon-only triggers.\r\nexport { default as Accordion } from \"./Accordion\";\r\nexport { default as Tooltip } from \"./Tooltip\";\r\n\r\n// Footer action strip (Charter §03). Distinct from ActionBar\r\n// (page header) and BulkActionBar (selection toolbar).\r\nexport { default as ActionStrip } from \"./ActionStrip\";\r\n\r\n// Taxonomy chip — reuses the 6-tone status palette but distinct\r\n// from v2.Status (category != workflow state).\r\nexport { default as CategoryTag } from \"./CategoryTag\";\r\n\r\n// Favorite toggle (☆/★) — presentational, controlled leaf primitive\r\n// used by the User Personalization Foundation's favorites capability\r\n// (v2/personalization). Provider-free: wire with useIsFavorite /\r\n// useFavorites, or drive manually via pressed/onChange.\r\nexport { default as FavoriteToggle } from \"./FavoriteToggle\";\r\n\r\n// Document viewer (Charter §07). Presentational pdf.js wrapper; the host\r\n// owns fetching (fileUrl|base64 + loading/error + workerUrl). Pulls the\r\n// @react-pdf-viewer / pdfjs-dist OPTIONAL peer deps — installed only by\r\n// PDF-consuming modules.\r\nexport { default as PdfViewer } from \"./PdfViewer\";\r\nexport type { PdfViewerProps } from \"./PdfViewer\";\r\n\r\n// Error pages — Charter §07. Router-agnostic; the lib accepts\r\n// onBack / onHome / onRetry callback props rather than importing\r\n// any router hook. NB: the internal _ErrorPageBody helper is NOT\r\n// re-exported (underscore-prefix convention).\r\nexport { default as ForbiddenPage } from \"./ForbiddenPage\";\r\nexport { default as NotFoundPage } from \"./NotFoundPage\";\r\nexport { default as ServerErrorPage } from \"./ServerErrorPage\";\r\nexport { default as NetworkErrorPage } from \"./NetworkErrorPage\";\r\n/**\r\n * Error-page prop contracts — public typed surface (capability gap G-32).\r\n *\r\n * The four pages are deliberately router-agnostic: they take `onBack` /\r\n * `onHome` / `onRetry` callbacks instead of importing a router hook. That\r\n * design REQUIRES every consumer to write a thin adapter binding its own\r\n * router to those callbacks — and each adapter needs the prop type to declare\r\n * what it is producing. The types existed on each module but were not\r\n * re-exported here, so the adapters could not reach them: caution-ui's\r\n * ErrorPages.tsx carried four\r\n * `as React.ComponentProps<typeof V2ForbiddenPage>` assertions for no reason\r\n * other than that `ForbiddenPageProps` was unreachable.\r\n *\r\n * A router adapter is the single most-repeated consumer of these components\r\n * across the fleet — one per module — so leaving the contract unreachable\r\n * guaranteed the same four casts in every repository.\r\n *\r\n * FLAT-ONLY, per the policy note in src/lib/index.ts.\r\n * Additive and type-only: no runtime change, no existing export altered.\r\n */\r\nexport type { ForbiddenPageProps } from \"./ForbiddenPage\";\r\nexport type { NotFoundPageProps } from \"./NotFoundPage\";\r\nexport type { ServerErrorPageProps } from \"./ServerErrorPage\";\r\nexport type { NetworkErrorPageProps } from \"./NetworkErrorPage\";\r\n"],"mappings":"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","ignoreList":[]}