@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
@@ -0,0 +1,261 @@
1
+ /**
2
+ * Categorical chart palette — Portnet UI v2
3
+ *
4
+ * A cyclable sequence of visually distinct fills for CATEGORY series in
5
+ * charts (pie slices, stacked bars, multi-series lines). Charter §02.
6
+ *
7
+ * ─────────────────────────────────────────────────────────────────────────────
8
+ * WHY THIS BELONGS IN THE LIBRARY (capability gap G-37)
9
+ *
10
+ * R-2.3 MUST: "aucune valeur magique : tout px/color/font-size passe par un
11
+ * token". R-AI.1 MUST repeats it for generated UI. Yet the library shipped only
12
+ * SEMANTIC colour: brand, ink, surface, border, the four severities and the six
13
+ * workflow statuses. None of them answers "give me N colours that a reader can
14
+ * tell apart", so every charting screen wrote its own list of hex literals.
15
+ *
16
+ * Observed in `refonte-frontend` (Area 4): THIRTY-TWO literals across two
17
+ * files — a 30-entry palette in `GraphiqueCamembert` (itself already
18
+ * de-duplicated from two copies) plus two more in
19
+ * `ChartBilanDPCIParDelegation`. The file carried a comment explaining, quite
20
+ * correctly, why it could not be fixed locally: mapping categories onto the
21
+ * SEMANTIC tones would make "red" mean *a category of measuring instrument*
22
+ * rather than *an error*, which R-2.2 exists to prevent. So the module was
23
+ * stuck between two MUST rules, and the only way out was here.
24
+ *
25
+ * >>> THE ARGUMENT FOR OWNING IT IS THE VERIFICATION, NOT THE STORAGE. Moving
26
+ * >>> thirty hex codes from a module to a library would only relocate them. The
27
+ * >>> reason they belong here is that a categorical palette carries three
28
+ * >>> claims no host can check for itself, and that this repository already has
29
+ * >>> the tooling for: each fill must clear the 3:1 non-text floor (WCAG
30
+ * >>> 1.4.11 / R-C.3) against the surface it sits on, the entries must stay
31
+ * >>> apart from each other, and they must stay apart under colour-vision
32
+ * >>> deficiency — a pie chart encodes its data in hue alone, so a palette that
33
+ * >>> collapses under deuteranopia loses the data, not just the styling. The
34
+ * >>> module's 30 literals had NONE of the three verified. See
35
+ * >>> __tests__/chart-palette.test.ts, which asserts all three. <<<
36
+ * ─────────────────────────────────────────────────────────────────────────────
37
+ *
38
+ * HOW THESE VALUES WERE DERIVED
39
+ *
40
+ * Hue-balanced, then constrained — not picked by eye:
41
+ *
42
+ * 1. Twelve hues, the first eight evenly spaced around the wheel, so the
43
+ * sequence reads as intentional rather than arbitrary.
44
+ * 2. Lightness solved numerically per entry so that relative luminance lands
45
+ * inside the window where a fill clears 3:1 against BOTH the light surface
46
+ * (#FFFFFF) and the dark-mode surface. That window is roughly
47
+ * L ∈ [0.119, 0.300] and it is why ONE array serves both themes — unlike
48
+ * `status`, which needs a `dark.status` override. Entries alternate
49
+ * between the two ends of the window, which adds a lightness difference to
50
+ * the hue difference between neighbours.
51
+ * 3. Entries 9 to 12 were then chosen by maximising the minimum separation
52
+ * against the first eight, measured as the WORST of three distances:
53
+ * normal vision, deuteranopia and protanopia (Viénot simulation, CIE76).
54
+ *
55
+ * Measured properties (all pinned in the test):
56
+ * · every entry ≥ 3.06:1 on #FFFFFF and ≥ 3.37:1 on the dark surface;
57
+ * · minimum pairwise separation ≥ 12 ΔE under normal vision AND under both
58
+ * simulated dichromacies — the closest pair is entry 1 (red) against
59
+ * entry 3 (olive), at ~12.4.
60
+ *
61
+ * USE THE FIRST EIGHT WHERE YOU CAN. Entries 1-8 are the hue-balanced core;
62
+ * 9-12 extend it for larger sets. Past twelve, `chartColor` CYCLES, and two
63
+ * slices then share a colour — which is a defect in the chart, not in the
64
+ * palette. A series with more than a dozen categories should aggregate its
65
+ * tail into a single "Autres" slice: R-3.1 / R-3.2 cap what one screen may
66
+ * show at once for the same reason.
67
+ *
68
+ * COLOUR IS NEVER THE ONLY CHANNEL (WCAG 1.4.1). This palette makes slices
69
+ * distinguishable; it does not make a chart accessible. Every consumer still
70
+ * owes a legend with text labels, and a text equivalent of the data — 1.1.1
71
+ * for the chart as a whole.
72
+ *
73
+ * Usage — prefer the JS token in a chart library, since SVG presentation
74
+ * attributes given a `var()` are not reliably resolved by every renderer:
75
+ *
76
+ * import { chartColor } from "@portnet/ui/tokens";
77
+ * <Cell fill={chartColor(index)} />
78
+ *
79
+ * In CSS or `sx`, the same values are emitted as `--chart-1` … `--chart-12`
80
+ * (see theme/cssVariables).
81
+ *
82
+ * ─────────────────────────────────────────────────────────────────────────────
83
+ * TEXT *ON* A SLICE IS A SECOND CONTRAST PROBLEM — see `chartColorOn`.
84
+ *
85
+ * The 3:1 floor above covers the FILL against the page. A percentage printed
86
+ * inside the slice is text on that fill, and owes 4.5:1 (WCAG 1.4.3). The
87
+ * palette deliberately spans two lightness tiers, so no single label colour
88
+ * works for all twelve: `refonte-frontend` printed `fill="white"` on all six
89
+ * of its pies, which was ~3:1 on half of them.
90
+ * ─────────────────────────────────────────────────────────────────────────────
91
+ */
92
+ import { contrastRatio, WCAG_AA_NORMAL } from "../utils/contrast";
93
+ import { ink } from "./colors";
94
+ import { fontFamily, fontSize, fontWeight } from "./typography";
95
+
96
+ /**
97
+ * The palette, in display order. Entries 1-8 (indices 0-7) are the
98
+ * hue-balanced, CVD-verified core; 9-12 extend it.
99
+ */
100
+ export const chartCategorical = Object.freeze(["#C92E1D",
101
+ // 1 red
102
+ "#A89318",
103
+ // 2 amber / olive-gold
104
+ "#3B7911",
105
+ // 3 olive green
106
+ "#18A84B",
107
+ // 4 green
108
+ "#127681",
109
+ // 5 teal
110
+ "#7A8CEC",
111
+ // 6 periwinkle
112
+ "#9B30E1",
113
+ // 7 violet
114
+ "#E860B8",
115
+ // 8 pink
116
+ "#119870",
117
+ // 9 jade
118
+ "#B915B0",
119
+ // 10 magenta
120
+ "#9A0DF9",
121
+ // 11 blue-violet
122
+ "#965848" // 12 brown
123
+ ]);
124
+
125
+ /** Size of the hue-balanced core. Beyond it, separation is still verified but the sequence stops being evenly spaced. */
126
+ export const CHART_CATEGORICAL_CORE = 8;
127
+
128
+ /**
129
+ * Colour for the n-th category, cycling past the end of the palette.
130
+ *
131
+ * Non-finite or negative indices resolve to the first entry rather than
132
+ * throwing: a chart is a read-only view, and a bad index should not blank a
133
+ * page. In development an out-of-range index also warns, because CYCLING IS
134
+ * SILENT — two slices sharing a colour looks like a design choice, not like the
135
+ * data-loss it is.
136
+ */
137
+ export function chartColor(index) {
138
+ const total = chartCategorical.length;
139
+ if (!Number.isFinite(index) || index < 0) {
140
+ return chartCategorical[0];
141
+ }
142
+ const i = Math.floor(index);
143
+ if (i >= total && process.env["NODE_ENV"] !== "production") {
144
+ // eslint-disable-next-line no-console
145
+ console.warn(`[@portnet/ui] chartColor(${i}): the palette holds ${total} colours, so ` + `this category reuses the colour of category ${i % total}. Aggregate ` + `the tail of the series instead (R-3.2).`);
146
+ }
147
+ return chartCategorical[i % total];
148
+ }
149
+
150
+ /**
151
+ * Label colour for text drawn ON a slice — `#FFFFFF` or `ink.fg`, whichever
152
+ * clears WCAG 1.4.3 AA against that fill.
153
+ *
154
+ * DERIVED, NOT TABULATED, and that is the whole point: a parallel array of
155
+ * twelve label colours would be a second list to keep in step with the first,
156
+ * and the failure mode of letting them drift is silent — unreadable text, at
157
+ * the exact spot where the chart states its numbers. Computed here with this
158
+ * library's own `contrastRatio`, so nudging a hue re-derives its label colour
159
+ * in the same breath.
160
+ *
161
+ * Measured: every entry pairs at ≥ 4.98:1, so the AA floor holds with margin
162
+ * on all twelve. The dev warning below is for a future hue that lands in the
163
+ * band where NEITHER candidate reaches 4.5:1 — possible in principle, since the
164
+ * fill constraint only bounds luminance to [0.119, 0.300].
165
+ */
166
+ const LABEL_CANDIDATES = Object.freeze(["#FFFFFF", ink.fg]);
167
+ function pickLabelColour(fill) {
168
+ let best = LABEL_CANDIDATES[0];
169
+ let bestRatio = 0;
170
+ for (const candidate of LABEL_CANDIDATES) {
171
+ const ratio = contrastRatio(candidate, fill) ?? 0;
172
+ if (ratio > bestRatio) {
173
+ bestRatio = ratio;
174
+ best = candidate;
175
+ }
176
+ }
177
+ if (bestRatio < WCAG_AA_NORMAL && process.env["NODE_ENV"] !== "production") {
178
+ // eslint-disable-next-line no-console
179
+ console.warn(`[@portnet/ui] chart fill ${fill} has no AA-compliant label colour ` + `(best ${bestRatio.toFixed(2)}:1). Draw the label outside the slice, or ` + `re-solve the fill's lightness.`);
180
+ }
181
+ return best;
182
+ }
183
+
184
+ /** Label colours, index-aligned with `chartCategorical`. */
185
+ export const chartCategoricalOn = Object.freeze(chartCategorical.map(pickLabelColour));
186
+
187
+ /** AA-safe colour for text drawn on top of `chartColor(index)`. Cycles identically. */
188
+ export function chartColorOn(index) {
189
+ const total = chartCategoricalOn.length;
190
+ if (!Number.isFinite(index) || index < 0) {
191
+ return chartCategoricalOn[0];
192
+ }
193
+ return chartCategoricalOn[Math.floor(index) % total];
194
+ }
195
+
196
+ /**
197
+ * Non-data chart furniture — title, labels, canvas (capability gap G-54).
198
+ *
199
+ * ────────────────────────────────────────────────────────────────────────────────
200
+ * THIS IS A ROLE→TOKEN MAPPING, NOT A STORE OF VALUES, and the distinction is
201
+ * the justification. Every value below already exists in this library, and a
202
+ * module reading `ink.fgMuted` for its axis labels is already compliant with
203
+ * R-2.3. What no module can get right alone is WHICH token plays WHICH role:
204
+ * is a chart title an `h2` or an `h3`? are axis labels `xs` or `sm`? is the
205
+ * canvas `surface` or transparent?
206
+ *
207
+ * Left unanswered, each screen answers it again. Observed in
208
+ * `autorisation-admis-pour-conforme-fe` (Area 5): three bilan screens, five
209
+ * chart definitions, the same five-line block of title / label / canvas styling
210
+ * copied into each — agreeing only because they were copied from one another.
211
+ * The next module starts from a blank chart and picks `h2`, and nothing in code
212
+ * review can call that wrong, because the platform never said.
213
+ *
214
+ * So this is the answer, once: a chart title reads as a card title (`h3`,
215
+ * semibold, full-strength ink), its labels as hints (`xs`, muted ink), and its
216
+ * canvas is TRANSPARENT — the chart sits on whatever `Surface` holds it, and a
217
+ * hard-coded white canvas is exactly what breaks a chart in dark mode.
218
+ * ────────────────────────────────────────────────────────────────────────────────
219
+ *
220
+ * LIBRARY-AGNOSTIC BY CONSTRUCTION. Plain strings, no chart library imported,
221
+ * no option shape assumed: Highcharts, Recharts, Chart.js and a hand-written
222
+ * SVG all take these. A consumer maps them to its renderer's option names,
223
+ * which is a binding — and a binding holding no design values is not a
224
+ * duplication of this.
225
+ *
226
+ * FONT SIZES ARE STRINGS WITH UNITS, unlike `fontSize.*`, which are integers.
227
+ * Chart libraries pass their style objects to SVG attributes rather than to
228
+ * React's style prop, so they never get a unit appended for free — a bare `16`
229
+ * is silently ignored by some renderers and read as `16px` by others.
230
+ *
231
+ * WHAT THIS DOES NOT MAKE ACCESSIBLE. Nothing here supplies the text
232
+ * equivalent WCAG 1.1.1 requires of a chart, or the non-colour channel of
233
+ * 1.4.1. See the `ChartFigure` pattern, which carries the caption, and the note
234
+ * at the head of this file.
235
+ */
236
+ export const chartChrome = Object.freeze({
237
+ /** Canvas fill. Transparent so the holding `Surface` shows through, light or dark. */
238
+ background: "transparent",
239
+ /** One family for every text in the chart — §02.2 UI stack. */
240
+ fontFamily: fontFamily.sans,
241
+ /** Chart title: reads as a card title (§02.2 `h3`). */
242
+ title: Object.freeze({
243
+ color: ink.fg,
244
+ fontSize: `${fontSize.h3}px`,
245
+ fontWeight: String(fontWeight.semibold)
246
+ }),
247
+ /** Axis labels, legend items, data labels drawn OUTSIDE a slice: hints. */
248
+ label: Object.freeze({
249
+ color: ink.fgMuted,
250
+ fontSize: `${fontSize.xs}px`
251
+ })
252
+ });
253
+ const chart = {
254
+ chartCategorical,
255
+ chartColor,
256
+ chartColorOn,
257
+ chartChrome,
258
+ CHART_CATEGORICAL_CORE
259
+ };
260
+ export default chart;
261
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","names":["contrastRatio","WCAG_AA_NORMAL","ink","fontFamily","fontSize","fontWeight","chartCategorical","Object","freeze","CHART_CATEGORICAL_CORE","chartColor","index","total","length","Number","isFinite","i","Math","floor","process","env","console","warn","LABEL_CANDIDATES","fg","pickLabelColour","fill","best","bestRatio","candidate","ratio","toFixed","chartCategoricalOn","map","chartColorOn","chartChrome","background","sans","title","color","h3","String","semibold","label","fgMuted","xs","chart"],"sources":["../../../../src/lib/v2/tokens/chart.ts"],"sourcesContent":["/**\r\n * Categorical chart palette — Portnet UI v2\r\n *\r\n * A cyclable sequence of visually distinct fills for CATEGORY series in\r\n * charts (pie slices, stacked bars, multi-series lines). Charter §02.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-37)\r\n *\r\n * R-2.3 MUST: \"aucune valeur magique : tout px/color/font-size passe par un\r\n * token\". R-AI.1 MUST repeats it for generated UI. Yet the library shipped only\r\n * SEMANTIC colour: brand, ink, surface, border, the four severities and the six\r\n * workflow statuses. None of them answers \"give me N colours that a reader can\r\n * tell apart\", so every charting screen wrote its own list of hex literals.\r\n *\r\n * Observed in `refonte-frontend` (Area 4): THIRTY-TWO literals across two\r\n * files — a 30-entry palette in `GraphiqueCamembert` (itself already\r\n * de-duplicated from two copies) plus two more in\r\n * `ChartBilanDPCIParDelegation`. The file carried a comment explaining, quite\r\n * correctly, why it could not be fixed locally: mapping categories onto the\r\n * SEMANTIC tones would make \"red\" mean *a category of measuring instrument*\r\n * rather than *an error*, which R-2.2 exists to prevent. So the module was\r\n * stuck between two MUST rules, and the only way out was here.\r\n *\r\n * >>> THE ARGUMENT FOR OWNING IT IS THE VERIFICATION, NOT THE STORAGE. Moving\r\n * >>> thirty hex codes from a module to a library would only relocate them. The\r\n * >>> reason they belong here is that a categorical palette carries three\r\n * >>> claims no host can check for itself, and that this repository already has\r\n * >>> the tooling for: each fill must clear the 3:1 non-text floor (WCAG\r\n * >>> 1.4.11 / R-C.3) against the surface it sits on, the entries must stay\r\n * >>> apart from each other, and they must stay apart under colour-vision\r\n * >>> deficiency — a pie chart encodes its data in hue alone, so a palette that\r\n * >>> collapses under deuteranopia loses the data, not just the styling. The\r\n * >>> module's 30 literals had NONE of the three verified. See\r\n * >>> __tests__/chart-palette.test.ts, which asserts all three. <<<\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * HOW THESE VALUES WERE DERIVED\r\n *\r\n * Hue-balanced, then constrained — not picked by eye:\r\n *\r\n * 1. Twelve hues, the first eight evenly spaced around the wheel, so the\r\n * sequence reads as intentional rather than arbitrary.\r\n * 2. Lightness solved numerically per entry so that relative luminance lands\r\n * inside the window where a fill clears 3:1 against BOTH the light surface\r\n * (#FFFFFF) and the dark-mode surface. That window is roughly\r\n * L ∈ [0.119, 0.300] and it is why ONE array serves both themes — unlike\r\n * `status`, which needs a `dark.status` override. Entries alternate\r\n * between the two ends of the window, which adds a lightness difference to\r\n * the hue difference between neighbours.\r\n * 3. Entries 9 to 12 were then chosen by maximising the minimum separation\r\n * against the first eight, measured as the WORST of three distances:\r\n * normal vision, deuteranopia and protanopia (Viénot simulation, CIE76).\r\n *\r\n * Measured properties (all pinned in the test):\r\n * · every entry ≥ 3.06:1 on #FFFFFF and ≥ 3.37:1 on the dark surface;\r\n * · minimum pairwise separation ≥ 12 ΔE under normal vision AND under both\r\n * simulated dichromacies — the closest pair is entry 1 (red) against\r\n * entry 3 (olive), at ~12.4.\r\n *\r\n * USE THE FIRST EIGHT WHERE YOU CAN. Entries 1-8 are the hue-balanced core;\r\n * 9-12 extend it for larger sets. Past twelve, `chartColor` CYCLES, and two\r\n * slices then share a colour — which is a defect in the chart, not in the\r\n * palette. A series with more than a dozen categories should aggregate its\r\n * tail into a single \"Autres\" slice: R-3.1 / R-3.2 cap what one screen may\r\n * show at once for the same reason.\r\n *\r\n * COLOUR IS NEVER THE ONLY CHANNEL (WCAG 1.4.1). This palette makes slices\r\n * distinguishable; it does not make a chart accessible. Every consumer still\r\n * owes a legend with text labels, and a text equivalent of the data — 1.1.1\r\n * for the chart as a whole.\r\n *\r\n * Usage — prefer the JS token in a chart library, since SVG presentation\r\n * attributes given a `var()` are not reliably resolved by every renderer:\r\n *\r\n * import { chartColor } from \"@portnet/ui/tokens\";\r\n * <Cell fill={chartColor(index)} />\r\n *\r\n * In CSS or `sx`, the same values are emitted as `--chart-1` … `--chart-12`\r\n * (see theme/cssVariables).\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * TEXT *ON* A SLICE IS A SECOND CONTRAST PROBLEM — see `chartColorOn`.\r\n *\r\n * The 3:1 floor above covers the FILL against the page. A percentage printed\r\n * inside the slice is text on that fill, and owes 4.5:1 (WCAG 1.4.3). The\r\n * palette deliberately spans two lightness tiers, so no single label colour\r\n * works for all twelve: `refonte-frontend` printed `fill=\"white\"` on all six\r\n * of its pies, which was ~3:1 on half of them.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n */\r\nimport { contrastRatio, WCAG_AA_NORMAL } from \"../utils/contrast\";\r\nimport { ink } from \"./colors\";\r\nimport { fontFamily, fontSize, fontWeight } from \"./typography\";\r\n\r\n/**\r\n * The palette, in display order. Entries 1-8 (indices 0-7) are the\r\n * hue-balanced, CVD-verified core; 9-12 extend it.\r\n */\r\nexport const chartCategorical = Object.freeze([\r\n \"#C92E1D\", // 1 red\r\n \"#A89318\", // 2 amber / olive-gold\r\n \"#3B7911\", // 3 olive green\r\n \"#18A84B\", // 4 green\r\n \"#127681\", // 5 teal\r\n \"#7A8CEC\", // 6 periwinkle\r\n \"#9B30E1\", // 7 violet\r\n \"#E860B8\", // 8 pink\r\n \"#119870\", // 9 jade\r\n \"#B915B0\", // 10 magenta\r\n \"#9A0DF9\", // 11 blue-violet\r\n \"#965848\", // 12 brown\r\n] as const);\r\n\r\n/** Size of the hue-balanced core. Beyond it, separation is still verified but the sequence stops being evenly spaced. */\r\nexport const CHART_CATEGORICAL_CORE = 8;\r\n\r\n/**\r\n * Colour for the n-th category, cycling past the end of the palette.\r\n *\r\n * Non-finite or negative indices resolve to the first entry rather than\r\n * throwing: a chart is a read-only view, and a bad index should not blank a\r\n * page. In development an out-of-range index also warns, because CYCLING IS\r\n * SILENT — two slices sharing a colour looks like a design choice, not like the\r\n * data-loss it is.\r\n */\r\nexport function chartColor(index: number): string {\r\n const total = chartCategorical.length;\r\n if (!Number.isFinite(index) || index < 0) {\r\n return chartCategorical[0] as string;\r\n }\r\n const i = Math.floor(index);\r\n if (i >= total && process.env[\"NODE_ENV\"] !== \"production\") {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui] chartColor(${i}): the palette holds ${total} colours, so ` +\r\n `this category reuses the colour of category ${i % total}. Aggregate ` +\r\n `the tail of the series instead (R-3.2).`\r\n );\r\n }\r\n return chartCategorical[i % total] as string;\r\n}\r\n\r\n/**\r\n * Label colour for text drawn ON a slice — `#FFFFFF` or `ink.fg`, whichever\r\n * clears WCAG 1.4.3 AA against that fill.\r\n *\r\n * DERIVED, NOT TABULATED, and that is the whole point: a parallel array of\r\n * twelve label colours would be a second list to keep in step with the first,\r\n * and the failure mode of letting them drift is silent — unreadable text, at\r\n * the exact spot where the chart states its numbers. Computed here with this\r\n * library's own `contrastRatio`, so nudging a hue re-derives its label colour\r\n * in the same breath.\r\n *\r\n * Measured: every entry pairs at ≥ 4.98:1, so the AA floor holds with margin\r\n * on all twelve. The dev warning below is for a future hue that lands in the\r\n * band where NEITHER candidate reaches 4.5:1 — possible in principle, since the\r\n * fill constraint only bounds luminance to [0.119, 0.300].\r\n */\r\nconst LABEL_CANDIDATES: readonly string[] = Object.freeze([\"#FFFFFF\", ink.fg]);\r\n\r\nfunction pickLabelColour(fill: string): string {\r\n let best = LABEL_CANDIDATES[0] as string;\r\n let bestRatio = 0;\r\n for (const candidate of LABEL_CANDIDATES) {\r\n const ratio = contrastRatio(candidate, fill) ?? 0;\r\n if (ratio > bestRatio) {\r\n bestRatio = ratio;\r\n best = candidate;\r\n }\r\n }\r\n if (bestRatio < WCAG_AA_NORMAL && process.env[\"NODE_ENV\"] !== \"production\") {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui] chart fill ${fill} has no AA-compliant label colour ` +\r\n `(best ${bestRatio.toFixed(2)}:1). Draw the label outside the slice, or ` +\r\n `re-solve the fill's lightness.`\r\n );\r\n }\r\n return best;\r\n}\r\n\r\n/** Label colours, index-aligned with `chartCategorical`. */\r\nexport const chartCategoricalOn = Object.freeze(\r\n chartCategorical.map(pickLabelColour)\r\n);\r\n\r\n/** AA-safe colour for text drawn on top of `chartColor(index)`. Cycles identically. */\r\nexport function chartColorOn(index: number): string {\r\n const total = chartCategoricalOn.length;\r\n if (!Number.isFinite(index) || index < 0) {\r\n return chartCategoricalOn[0] as string;\r\n }\r\n return chartCategoricalOn[Math.floor(index) % total] as string;\r\n}\r\n\r\n/**\r\n * Non-data chart furniture — title, labels, canvas (capability gap G-54).\r\n *\r\n * ────────────────────────────────────────────────────────────────────────────────\r\n * THIS IS A ROLE→TOKEN MAPPING, NOT A STORE OF VALUES, and the distinction is\r\n * the justification. Every value below already exists in this library, and a\r\n * module reading `ink.fgMuted` for its axis labels is already compliant with\r\n * R-2.3. What no module can get right alone is WHICH token plays WHICH role:\r\n * is a chart title an `h2` or an `h3`? are axis labels `xs` or `sm`? is the\r\n * canvas `surface` or transparent?\r\n *\r\n * Left unanswered, each screen answers it again. Observed in\r\n * `autorisation-admis-pour-conforme-fe` (Area 5): three bilan screens, five\r\n * chart definitions, the same five-line block of title / label / canvas styling\r\n * copied into each — agreeing only because they were copied from one another.\r\n * The next module starts from a blank chart and picks `h2`, and nothing in code\r\n * review can call that wrong, because the platform never said.\r\n *\r\n * So this is the answer, once: a chart title reads as a card title (`h3`,\r\n * semibold, full-strength ink), its labels as hints (`xs`, muted ink), and its\r\n * canvas is TRANSPARENT — the chart sits on whatever `Surface` holds it, and a\r\n * hard-coded white canvas is exactly what breaks a chart in dark mode.\r\n * ────────────────────────────────────────────────────────────────────────────────\r\n *\r\n * LIBRARY-AGNOSTIC BY CONSTRUCTION. Plain strings, no chart library imported,\r\n * no option shape assumed: Highcharts, Recharts, Chart.js and a hand-written\r\n * SVG all take these. A consumer maps them to its renderer's option names,\r\n * which is a binding — and a binding holding no design values is not a\r\n * duplication of this.\r\n *\r\n * FONT SIZES ARE STRINGS WITH UNITS, unlike `fontSize.*`, which are integers.\r\n * Chart libraries pass their style objects to SVG attributes rather than to\r\n * React's style prop, so they never get a unit appended for free — a bare `16`\r\n * is silently ignored by some renderers and read as `16px` by others.\r\n *\r\n * WHAT THIS DOES NOT MAKE ACCESSIBLE. Nothing here supplies the text\r\n * equivalent WCAG 1.1.1 requires of a chart, or the non-colour channel of\r\n * 1.4.1. See the `ChartFigure` pattern, which carries the caption, and the note\r\n * at the head of this file.\r\n */\r\nexport const chartChrome = Object.freeze({\r\n /** Canvas fill. Transparent so the holding `Surface` shows through, light or dark. */\r\n background: \"transparent\",\r\n /** One family for every text in the chart — §02.2 UI stack. */\r\n fontFamily: fontFamily.sans,\r\n /** Chart title: reads as a card title (§02.2 `h3`). */\r\n title: Object.freeze({\r\n color: ink.fg,\r\n fontSize: `${fontSize.h3}px`,\r\n fontWeight: String(fontWeight.semibold),\r\n }),\r\n /** Axis labels, legend items, data labels drawn OUTSIDE a slice: hints. */\r\n label: Object.freeze({\r\n color: ink.fgMuted,\r\n fontSize: `${fontSize.xs}px`,\r\n }),\r\n});\r\n\r\nconst chart = {\r\n chartCategorical,\r\n chartColor,\r\n chartColorOn,\r\n chartChrome,\r\n CHART_CATEGORICAL_CORE,\r\n};\r\nexport default chart;\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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,cAAc,QAAQ,mBAAmB;AACjE,SAASC,GAAG,QAAQ,UAAU;AAC9B,SAASC,UAAU,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;;AAE/D;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGC,MAAM,CAACC,MAAM,CAAC,CAC5C,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS,CAAE;AAAA,CACH,CAAC;;AAEX;AACA,OAAO,MAAMC,sBAAsB,GAAG,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,KAAa,EAAU;EAChD,MAAMC,KAAK,GAAGN,gBAAgB,CAACO,MAAM;EACrC,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACJ,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;IACxC,OAAOL,gBAAgB,CAAC,CAAC,CAAC;EAC5B;EACA,MAAMU,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACP,KAAK,CAAC;EAC3B,IAAIK,CAAC,IAAIJ,KAAK,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","ignoreList":[]}
@@ -15,7 +15,7 @@
15
15
  * Each hue ships {soft, fg}. `soft` is the tinted background, `fg` is
16
16
  * the darker text-grade colour, AA-verified on both white AND its soft.
17
17
  */
18
- var _hues = {
18
+ const _hues = {
19
19
  green: {
20
20
  soft: "#E7F7EF",
21
21
  fg: "#0A6E44"
@@ -48,7 +48,7 @@ var _hues = {
48
48
  };
49
49
 
50
50
  /* ---------- Brand --------------------------------------------------- */
51
- export var brand = {
51
+ export const brand = {
52
52
  accent: "#232F66",
53
53
  // Portnet navy — AAA · ~12.6:1 on white
54
54
  accentHover: "#1A2452",
@@ -73,7 +73,7 @@ export var brand = {
73
73
  * (e.g. ink.fg) MUST be chosen before this token is used for text-
74
74
  * bearing buttons or alerts.
75
75
  */
76
- export var brandSecondary = {
76
+ export const brandSecondary = {
77
77
  secondary: "#4FB8CF",
78
78
  secondaryFg: "#FFFFFF"
79
79
  };
@@ -96,7 +96,7 @@ export var brandSecondary = {
96
96
  * preserve the muted/subtle hierarchy.
97
97
  * fgInverse white on dark surfaces (always paired with dark bgs).
98
98
  */
99
- export var ink = {
99
+ export const ink = {
100
100
  fg: "#0F1525",
101
101
  // AAA · 17.40:1 on white
102
102
  fgMuted: "#474C5A",
@@ -107,7 +107,7 @@ export var ink = {
107
107
  };
108
108
 
109
109
  /* ---------- Surfaces ------------------------------------------------ */
110
- export var surface = {
110
+ export const surface = {
111
111
  bg: "#F7F8FA",
112
112
  bgElev: "#FFFFFF",
113
113
  bgSubtle: "#F1F2F5",
@@ -116,7 +116,7 @@ export var surface = {
116
116
  };
117
117
 
118
118
  /* ---------- Borders ------------------------------------------------- */
119
- export var border = {
119
+ export const border = {
120
120
  border: "#E4E6EB",
121
121
  borderStrong: "#9099AA" // WCAG 1.4.11 · ≥ 3:1 against white
122
122
  };
@@ -126,7 +126,7 @@ export var border = {
126
126
  * `<name>Soft` tinted background.
127
127
  * `<name>Fg` darker text-grade (≥ 4.5:1 on white AND `<name>Soft`).
128
128
  */
129
- export var semantic = {
129
+ export const semantic = {
130
130
  success: "#10A968",
131
131
  successSoft: _hues.green.soft,
132
132
  successFg: _hues.green.fg,
@@ -146,8 +146,8 @@ export var semantic = {
146
146
  * (R-2.2). New chips with custom colours require a charter amendment.
147
147
  * Charter §02.1 + V2_ARCHITECTURE.md §5.
148
148
  */
149
- export var status = {
150
- "new": _hues.indigo,
149
+ export const status = {
150
+ new: _hues.indigo,
151
151
  sent: _hues.blue,
152
152
  pending: _hues.amber,
153
153
  approved: _hues.green,
@@ -160,7 +160,7 @@ export var status = {
160
160
  * static-context fallbacks when CSS custom properties aren't
161
161
  * resolvable (server-rendered emails, raw inline style, etc.).
162
162
  */
163
- export var focus = {
163
+ export const focus = {
164
164
  ring: "0 0 0 3px rgba(35, 47, 102, 0.22)",
165
165
  ringDanger: "0 0 0 3px rgba(217, 54, 68, 0.22)",
166
166
  ringSuccess: "0 0 0 3px rgba(16, 169, 104, 0.22)"
@@ -170,7 +170,7 @@ export var focus = {
170
170
  * Applied when `[data-theme="dark"]` on `<html>`. OLED-optimised
171
171
  * backgrounds (RGESN R-9.5).
172
172
  */
173
- export var dark = {
173
+ export const dark = {
174
174
  bg: "#0A0A0F",
175
175
  bgElev: "#111218",
176
176
  bgSubtle: "#181C26",
@@ -184,7 +184,7 @@ export var dark = {
184
184
  fgInverse: "#0A0A0F",
185
185
  accentSoft: "#1A2340",
186
186
  status: {
187
- "new": {
187
+ new: {
188
188
  fg: "#7EA2FF"
189
189
  },
190
190
  sent: {
@@ -204,16 +204,16 @@ export var dark = {
204
204
  }
205
205
  }
206
206
  };
207
- var colors = {
208
- brand: brand,
209
- brandSecondary: brandSecondary,
210
- ink: ink,
211
- surface: surface,
212
- border: border,
213
- semantic: semantic,
214
- status: status,
215
- focus: focus,
216
- dark: dark
207
+ const colors = {
208
+ brand,
209
+ brandSecondary,
210
+ ink,
211
+ surface,
212
+ border,
213
+ semantic,
214
+ status,
215
+ focus,
216
+ dark
217
217
  };
218
218
  export default colors;
219
219
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","names":["_hues","green","soft","fg","amber","red","blue","indigo","slate","brand","accent","accentHover","accentSoft","accentFg","brandSecondary","secondary","secondaryFg","ink","fgMuted","fgSubtle","fgInverse","surface","bg","bgElev","bgSubtle","bgHover","border","borderStrong","semantic","success","successSoft","successFg","warning","warningSoft","warningFg","danger","dangerSoft","dangerFg","info","infoSoft","infoFg","status","sent","pending","approved","rejected","neutral","focus","ring","ringDanger","ringSuccess","dark","colors"],"sources":["../../../../src/lib/v2/tokens/colors.ts"],"sourcesContent":["/**\r\n * Color tokens — Portnet UI v2\r\n * Aligned with Design System v1.0 §02.1.\r\n *\r\n * Single source of truth for every colour value used in the library.\r\n * Charter R-2.3 / R-AI.1 — magic colours are forbidden outside this file.\r\n *\r\n * Hue swatches are defined ONCE in `_hues` and reused by both the\r\n * semantic palette (success / warning / danger / info) and the workflow\r\n * status palette (status.*). This eliminates the previous duplication\r\n * where the same hex was hard-coded in two distinct places.\r\n */\r\n\r\n/* ---------- Internal hue swatches ----------------------------------\r\n * Each hue ships {soft, fg}. `soft` is the tinted background, `fg` is\r\n * the darker text-grade colour, AA-verified on both white AND its soft.\r\n */\r\nconst _hues = {\r\n green: { soft: \"#E7F7EF\", fg: \"#0A6E44\" }, // ~6.3:1 / ~5.7:1\r\n amber: { soft: \"#FDF4E0\", fg: \"#7A5200\" }, // ~7.0:1 / ~6.4:1\r\n red: { soft: \"#FBEBED\", fg: \"#9B1F2B\" }, // ~7.95:1 / ~5.6:1\r\n blue: { soft: \"#E0F2FE\", fg: \"#075985\" }, // ~7.6:1 / ~6.6:1\r\n indigo: { soft: \"#EEF3FF\", fg: \"#1A3EA8\" }, // ~7.8:1 / ~6.4:1\r\n slate: { soft: \"#F1F2F5\", fg: \"#3A3F4A\" }, // ~9.5:1 / ~8.6:1\r\n};\r\n\r\n/* ---------- Brand --------------------------------------------------- */\r\nexport const brand = {\r\n accent: \"#232F66\", // Portnet navy — AAA · ~12.6:1 on white\r\n accentHover: \"#1A2452\", // pressed / hover (darker)\r\n accentSoft: \"#E9ECF4\", // pale tint for soft backgrounds\r\n accentFg: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Brand secondary -----------------------------------------\r\n * PORTNET teal — used for secondary CTAs / accent layers.\r\n *\r\n * Promoted from gu-modules/addpe/addpe-fe (was a module-local\r\n * constant `PORTNET_TEAL = \"#4fb8cf\"` in src/common/utils/appearance.js\r\n * that overlaid createTheme to inject palette.secondary). Lifted here\r\n * as the canonical PORTNET brand secondary so every host inherits it\r\n * via createPortnetTheme without re-overlaying.\r\n *\r\n * Audit note (R-T.2 follow-up): secondaryFg = #FFFFFF on #4FB8CF\r\n * is ~1.96:1, which FAILS WCAG AA for body text. Acceptable for\r\n * chip/badge surfaces and non-text accent fills, but a darker fg\r\n * (e.g. ink.fg) MUST be chosen before this token is used for text-\r\n * bearing buttons or alerts.\r\n */\r\nexport const brandSecondary = {\r\n secondary: \"#4FB8CF\",\r\n secondaryFg: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Ink (text) ---------------------------------------------\r\n *\r\n * Contrast tiers (all ratios computed against the lib's light surfaces\r\n * via WCAG relative-luminance — see colors.js commit log for the math):\r\n *\r\n * fg AAA · 17.40:1 primary body text + headings\r\n * fgMuted AAA · 8.43:1 labels, subtitles, chip text, table\r\n * headers, pagination — every \"essential\r\n * muted text\" surface. Elevated to AAA\r\n * so the bump propagates fleet-wide to\r\n * every consumer of @portnet/ui.\r\n * fgSubtle AA · 4.81:1 placeholders, helper text, captions,\r\n * breadcrumb trail. AA-only by design —\r\n * \"incidental text\" per WCAG 1.4.6\r\n * footnote 4, intentionally lighter to\r\n * preserve the muted/subtle hierarchy.\r\n * fgInverse white on dark surfaces (always paired with dark bgs).\r\n */\r\nexport const ink = {\r\n fg: \"#0F1525\", // AAA · 17.40:1 on white\r\n fgMuted: \"#474C5A\", // AAA · 8.43:1 on white, 7.94:1 on bg, 7.52:1 on bg-subtle\r\n fgSubtle: \"#6B7280\", // AA · 4.81:1 on white — incidental text only (WCAG 1.4.6)\r\n fgInverse: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Surfaces ------------------------------------------------ */\r\nexport const surface = {\r\n bg: \"#F7F8FA\",\r\n bgElev: \"#FFFFFF\",\r\n bgSubtle: \"#F1F2F5\",\r\n bgHover: \"#EAECF0\",\r\n surface: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Borders ------------------------------------------------- */\r\nexport const border = {\r\n border: \"#E4E6EB\",\r\n borderStrong: \"#9099AA\", // WCAG 1.4.11 · ≥ 3:1 against white\r\n};\r\n\r\n/* ---------- Semantic ------------------------------------------------\r\n * `<name>` saturated, used for fills / icons / borders (≥ 3:1).\r\n * `<name>Soft` tinted background.\r\n * `<name>Fg` darker text-grade (≥ 4.5:1 on white AND `<name>Soft`).\r\n */\r\nexport const semantic = {\r\n success: \"#10A968\",\r\n successSoft: _hues.green.soft,\r\n successFg: _hues.green.fg,\r\n warning: \"#C78400\",\r\n warningSoft: _hues.amber.soft,\r\n warningFg: _hues.amber.fg,\r\n danger: \"#D93644\",\r\n dangerSoft: _hues.red.soft,\r\n dangerFg: _hues.red.fg,\r\n info: \"#1A7FB8\",\r\n infoSoft: _hues.blue.soft,\r\n infoFg: _hues.blue.fg,\r\n};\r\n\r\n/* ---------- Workflow status ----------------------------------------\r\n * Six and only six. Any new business status MUST map onto one of these\r\n * (R-2.2). New chips with custom colours require a charter amendment.\r\n * Charter §02.1 + V2_ARCHITECTURE.md §5.\r\n */\r\nexport const status = {\r\n new: _hues.indigo,\r\n sent: _hues.blue,\r\n pending: _hues.amber,\r\n approved: _hues.green,\r\n rejected: _hues.red,\r\n neutral: _hues.slate,\r\n};\r\n\r\n/* ---------- Focus ring (static fallback) ---------------------------\r\n * `shadows.focus` references --accent via CSS var. Use these as\r\n * static-context fallbacks when CSS custom properties aren't\r\n * resolvable (server-rendered emails, raw inline style, etc.).\r\n */\r\nexport const focus = {\r\n ring: \"0 0 0 3px rgba(35, 47, 102, 0.22)\",\r\n ringDanger: \"0 0 0 3px rgba(217, 54, 68, 0.22)\",\r\n ringSuccess: \"0 0 0 3px rgba(16, 169, 104, 0.22)\",\r\n};\r\n\r\n/* ---------- Dark mode ----------------------------------------------\r\n * Applied when `[data-theme=\"dark\"]` on `<html>`. OLED-optimised\r\n * backgrounds (RGESN R-9.5).\r\n */\r\nexport const dark = {\r\n bg: \"#0A0A0F\",\r\n bgElev: \"#111218\",\r\n bgSubtle: \"#181C26\",\r\n bgHover: \"#1E2230\",\r\n surface: \"#111218\",\r\n border: \"#262B36\",\r\n borderStrong: \"#484F60\",\r\n fg: \"#E8EAEE\",\r\n fgMuted: \"#9BA1AD\",\r\n fgSubtle: \"#9CA3AF\",\r\n fgInverse: \"#0A0A0F\",\r\n accentSoft: \"#1A2340\",\r\n status: {\r\n new: { fg: \"#7EA2FF\" },\r\n sent: { fg: \"#5FB5E0\" },\r\n pending: { fg: \"#E5B04A\" },\r\n approved: { fg: \"#4FD49A\" },\r\n rejected: { fg: \"#EF5A68\" },\r\n neutral: { fg: \"#A0A6B0\" },\r\n },\r\n};\r\n\r\nconst colors = { brand, brandSecondary, ink, surface, border, semantic, status, focus, dark };\r\nexport default colors;\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAMA,KAAK,GAAG;EACZC,KAAK,EAAG;IAAEC,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC;EAAE;EAC5CC,KAAK,EAAG;IAAEF,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC;EAAE;EAC5CE,GAAG,EAAK;IAAEH,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC;EAAE;EAC5CG,IAAI,EAAI;IAAEJ,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC;EAAE;EAC5CI,MAAM,EAAE;IAAEL,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC;EAAE;EAC5CK,KAAK,EAAG;IAAEN,IAAI,EAAE,SAAS;IAAEC,EAAE,EAAE;EAAU,CAAC,CAAE;AAC9C,CAAC;;AAED;AACA,OAAO,IAAMM,KAAK,GAAG;EACnBC,MAAM,EAAO,SAAS;EAAE;EACxBC,WAAW,EAAE,SAAS;EAAE;EACxBC,UAAU,EAAG,SAAS;EAAE;EACxBC,QAAQ,EAAK;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,cAAc,GAAG;EAC5BC,SAAS,EAAK,SAAS;EACvBC,WAAW,EAAG;AAChB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,GAAG,GAAG;EACjBd,EAAE,EAAS,SAAS;EAAE;EACtBe,OAAO,EAAI,SAAS;EAAE;EACtBC,QAAQ,EAAG,SAAS;EAAE;EACtBC,SAAS,EAAE;AACb,CAAC;;AAED;AACA,OAAO,IAAMC,OAAO,GAAG;EACrBC,EAAE,EAAQ,SAAS;EACnBC,MAAM,EAAI,SAAS;EACnBC,QAAQ,EAAE,SAAS;EACnBC,OAAO,EAAG,SAAS;EACnBJ,OAAO,EAAG;AACZ,CAAC;;AAED;AACA,OAAO,IAAMK,MAAM,GAAG;EACpBA,MAAM,EAAQ,SAAS;EACvBC,YAAY,EAAE,SAAS,CAAE;AAC3B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,QAAQ,GAAG;EACtBC,OAAO,EAAM,SAAS;EACtBC,WAAW,EAAE9B,KAAK,CAACC,KAAK,CAACC,IAAI;EAC7B6B,SAAS,EAAI/B,KAAK,CAACC,KAAK,CAACE,EAAE;EAC3B6B,OAAO,EAAM,SAAS;EACtBC,WAAW,EAAEjC,KAAK,CAACI,KAAK,CAACF,IAAI;EAC7BgC,SAAS,EAAIlC,KAAK,CAACI,KAAK,CAACD,EAAE;EAC3BgC,MAAM,EAAO,SAAS;EACtBC,UAAU,EAAGpC,KAAK,CAACK,GAAG,CAACH,IAAI;EAC3BmC,QAAQ,EAAKrC,KAAK,CAACK,GAAG,CAACF,EAAE;EACzBmC,IAAI,EAAS,SAAS;EACtBC,QAAQ,EAAKvC,KAAK,CAACM,IAAI,CAACJ,IAAI;EAC5BsC,MAAM,EAAOxC,KAAK,CAACM,IAAI,CAACH;AAC1B,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMsC,MAAM,GAAG;EACpB,OAAUzC,KAAK,CAACO,MAAM;EACtBmC,IAAI,EAAM1C,KAAK,CAACM,IAAI;EACpBqC,OAAO,EAAG3C,KAAK,CAACI,KAAK;EACrBwC,QAAQ,EAAE5C,KAAK,CAACC,KAAK;EACrB4C,QAAQ,EAAE7C,KAAK,CAACK,GAAG;EACnByC,OAAO,EAAG9C,KAAK,CAACQ;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMuC,KAAK,GAAG;EACnBC,IAAI,EAAS,mCAAmC;EAChDC,UAAU,EAAG,mCAAmC;EAChDC,WAAW,EAAE;AACf,CAAC;;AAED;AACA;AACA;AACA;AACA,OAAO,IAAMC,IAAI,GAAG;EAClB7B,EAAE,EAAY,SAAS;EACvBC,MAAM,EAAQ,SAAS;EACvBC,QAAQ,EAAM,SAAS;EACvBC,OAAO,EAAO,SAAS;EACvBJ,OAAO,EAAO,SAAS;EACvBK,MAAM,EAAQ,SAAS;EACvBC,YAAY,EAAE,SAAS;EACvBxB,EAAE,EAAY,SAAS;EACvBe,OAAO,EAAO,SAAS;EACvBC,QAAQ,EAAM,SAAS;EACvBC,SAAS,EAAK,SAAS;EACvBR,UAAU,EAAI,SAAS;EACvB6B,MAAM,EAAE;IACN,OAAU;MAAEtC,EAAE,EAAE;IAAU,CAAC;IAC3BuC,IAAI,EAAM;MAAEvC,EAAE,EAAE;IAAU,CAAC;IAC3BwC,OAAO,EAAG;MAAExC,EAAE,EAAE;IAAU,CAAC;IAC3ByC,QAAQ,EAAE;MAAEzC,EAAE,EAAE;IAAU,CAAC;IAC3B0C,QAAQ,EAAE;MAAE1C,EAAE,EAAE;IAAU,CAAC;IAC3B2C,OAAO,EAAG;MAAE3C,EAAE,EAAE;IAAU;EAC5B;AACF,CAAC;AAED,IAAMiD,MAAM,GAAG;EAAE3C,KAAK,EAALA,KAAK;EAAEK,cAAc,EAAdA,cAAc;EAAEG,GAAG,EAAHA,GAAG;EAAEI,OAAO,EAAPA,OAAO;EAAEK,MAAM,EAANA,MAAM;EAAEE,QAAQ,EAARA,QAAQ;EAAEa,MAAM,EAANA,MAAM;EAAEM,KAAK,EAALA,KAAK;EAAEI,IAAI,EAAJA;AAAK,CAAC;AAC7F,eAAeC,MAAM","ignoreList":[]}
1
+ {"version":3,"file":"colors.js","names":["_hues","green","soft","fg","amber","red","blue","indigo","slate","brand","accent","accentHover","accentSoft","accentFg","brandSecondary","secondary","secondaryFg","ink","fgMuted","fgSubtle","fgInverse","surface","bg","bgElev","bgSubtle","bgHover","border","borderStrong","semantic","success","successSoft","successFg","warning","warningSoft","warningFg","danger","dangerSoft","dangerFg","info","infoSoft","infoFg","status","new","sent","pending","approved","rejected","neutral","focus","ring","ringDanger","ringSuccess","dark","colors"],"sources":["../../../../src/lib/v2/tokens/colors.ts"],"sourcesContent":["/**\r\n * Color tokens — Portnet UI v2\r\n * Aligned with Design System v1.0 §02.1.\r\n *\r\n * Single source of truth for every colour value used in the library.\r\n * Charter R-2.3 / R-AI.1 — magic colours are forbidden outside this file.\r\n *\r\n * Hue swatches are defined ONCE in `_hues` and reused by both the\r\n * semantic palette (success / warning / danger / info) and the workflow\r\n * status palette (status.*). This eliminates the previous duplication\r\n * where the same hex was hard-coded in two distinct places.\r\n */\r\n\r\n/* ---------- Internal hue swatches ----------------------------------\r\n * Each hue ships {soft, fg}. `soft` is the tinted background, `fg` is\r\n * the darker text-grade colour, AA-verified on both white AND its soft.\r\n */\r\nconst _hues = {\r\n green: { soft: \"#E7F7EF\", fg: \"#0A6E44\" }, // ~6.3:1 / ~5.7:1\r\n amber: { soft: \"#FDF4E0\", fg: \"#7A5200\" }, // ~7.0:1 / ~6.4:1\r\n red: { soft: \"#FBEBED\", fg: \"#9B1F2B\" }, // ~7.95:1 / ~5.6:1\r\n blue: { soft: \"#E0F2FE\", fg: \"#075985\" }, // ~7.6:1 / ~6.6:1\r\n indigo: { soft: \"#EEF3FF\", fg: \"#1A3EA8\" }, // ~7.8:1 / ~6.4:1\r\n slate: { soft: \"#F1F2F5\", fg: \"#3A3F4A\" }, // ~9.5:1 / ~8.6:1\r\n};\r\n\r\n/* ---------- Brand --------------------------------------------------- */\r\nexport const brand = {\r\n accent: \"#232F66\", // Portnet navy — AAA · ~12.6:1 on white\r\n accentHover: \"#1A2452\", // pressed / hover (darker)\r\n accentSoft: \"#E9ECF4\", // pale tint for soft backgrounds\r\n accentFg: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Brand secondary -----------------------------------------\r\n * PORTNET teal — used for secondary CTAs / accent layers.\r\n *\r\n * Promoted from gu-modules/addpe/addpe-fe (was a module-local\r\n * constant `PORTNET_TEAL = \"#4fb8cf\"` in src/common/utils/appearance.js\r\n * that overlaid createTheme to inject palette.secondary). Lifted here\r\n * as the canonical PORTNET brand secondary so every host inherits it\r\n * via createPortnetTheme without re-overlaying.\r\n *\r\n * Audit note (R-T.2 follow-up): secondaryFg = #FFFFFF on #4FB8CF\r\n * is ~1.96:1, which FAILS WCAG AA for body text. Acceptable for\r\n * chip/badge surfaces and non-text accent fills, but a darker fg\r\n * (e.g. ink.fg) MUST be chosen before this token is used for text-\r\n * bearing buttons or alerts.\r\n */\r\nexport const brandSecondary = {\r\n secondary: \"#4FB8CF\",\r\n secondaryFg: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Ink (text) ---------------------------------------------\r\n *\r\n * Contrast tiers (all ratios computed against the lib's light surfaces\r\n * via WCAG relative-luminance — see colors.js commit log for the math):\r\n *\r\n * fg AAA · 17.40:1 primary body text + headings\r\n * fgMuted AAA · 8.43:1 labels, subtitles, chip text, table\r\n * headers, pagination — every \"essential\r\n * muted text\" surface. Elevated to AAA\r\n * so the bump propagates fleet-wide to\r\n * every consumer of @portnet/ui.\r\n * fgSubtle AA · 4.81:1 placeholders, helper text, captions,\r\n * breadcrumb trail. AA-only by design —\r\n * \"incidental text\" per WCAG 1.4.6\r\n * footnote 4, intentionally lighter to\r\n * preserve the muted/subtle hierarchy.\r\n * fgInverse white on dark surfaces (always paired with dark bgs).\r\n */\r\nexport const ink = {\r\n fg: \"#0F1525\", // AAA · 17.40:1 on white\r\n fgMuted: \"#474C5A\", // AAA · 8.43:1 on white, 7.94:1 on bg, 7.52:1 on bg-subtle\r\n fgSubtle: \"#6B7280\", // AA · 4.81:1 on white — incidental text only (WCAG 1.4.6)\r\n fgInverse: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Surfaces ------------------------------------------------ */\r\nexport const surface = {\r\n bg: \"#F7F8FA\",\r\n bgElev: \"#FFFFFF\",\r\n bgSubtle: \"#F1F2F5\",\r\n bgHover: \"#EAECF0\",\r\n surface: \"#FFFFFF\",\r\n};\r\n\r\n/* ---------- Borders ------------------------------------------------- */\r\nexport const border = {\r\n border: \"#E4E6EB\",\r\n borderStrong: \"#9099AA\", // WCAG 1.4.11 · ≥ 3:1 against white\r\n};\r\n\r\n/* ---------- Semantic ------------------------------------------------\r\n * `<name>` saturated, used for fills / icons / borders (≥ 3:1).\r\n * `<name>Soft` tinted background.\r\n * `<name>Fg` darker text-grade (≥ 4.5:1 on white AND `<name>Soft`).\r\n */\r\nexport const semantic = {\r\n success: \"#10A968\",\r\n successSoft: _hues.green.soft,\r\n successFg: _hues.green.fg,\r\n warning: \"#C78400\",\r\n warningSoft: _hues.amber.soft,\r\n warningFg: _hues.amber.fg,\r\n danger: \"#D93644\",\r\n dangerSoft: _hues.red.soft,\r\n dangerFg: _hues.red.fg,\r\n info: \"#1A7FB8\",\r\n infoSoft: _hues.blue.soft,\r\n infoFg: _hues.blue.fg,\r\n};\r\n\r\n/* ---------- Workflow status ----------------------------------------\r\n * Six and only six. Any new business status MUST map onto one of these\r\n * (R-2.2). New chips with custom colours require a charter amendment.\r\n * Charter §02.1 + V2_ARCHITECTURE.md §5.\r\n */\r\nexport const status = {\r\n new: _hues.indigo,\r\n sent: _hues.blue,\r\n pending: _hues.amber,\r\n approved: _hues.green,\r\n rejected: _hues.red,\r\n neutral: _hues.slate,\r\n};\r\n\r\n/* ---------- Focus ring (static fallback) ---------------------------\r\n * `shadows.focus` references --accent via CSS var. Use these as\r\n * static-context fallbacks when CSS custom properties aren't\r\n * resolvable (server-rendered emails, raw inline style, etc.).\r\n */\r\nexport const focus = {\r\n ring: \"0 0 0 3px rgba(35, 47, 102, 0.22)\",\r\n ringDanger: \"0 0 0 3px rgba(217, 54, 68, 0.22)\",\r\n ringSuccess: \"0 0 0 3px rgba(16, 169, 104, 0.22)\",\r\n};\r\n\r\n/* ---------- Dark mode ----------------------------------------------\r\n * Applied when `[data-theme=\"dark\"]` on `<html>`. OLED-optimised\r\n * backgrounds (RGESN R-9.5).\r\n */\r\nexport const dark = {\r\n bg: \"#0A0A0F\",\r\n bgElev: \"#111218\",\r\n bgSubtle: \"#181C26\",\r\n bgHover: \"#1E2230\",\r\n surface: \"#111218\",\r\n border: \"#262B36\",\r\n borderStrong: \"#484F60\",\r\n fg: \"#E8EAEE\",\r\n fgMuted: \"#9BA1AD\",\r\n fgSubtle: \"#9CA3AF\",\r\n fgInverse: \"#0A0A0F\",\r\n accentSoft: \"#1A2340\",\r\n status: {\r\n new: { fg: \"#7EA2FF\" },\r\n sent: { fg: \"#5FB5E0\" },\r\n pending: { fg: \"#E5B04A\" },\r\n approved: { fg: \"#4FD49A\" },\r\n rejected: { fg: \"#EF5A68\" },\r\n neutral: { fg: \"#A0A6B0\" },\r\n },\r\n};\r\n\r\nconst colors = { brand, brandSecondary, ink, surface, border, semantic, status, focus, dark };\r\nexport default colors;\r\n"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,7 @@
31
31
  */
32
32
 
33
33
  import breakpoints from "./breakpoints";
34
- export var density = {
34
+ export const density = {
35
35
  spacious: {
36
36
  row: 56,
37
37
  input: 44,
@@ -57,7 +57,7 @@ export var density = {
57
57
  fontSize: 12
58
58
  }
59
59
  };
60
- export var layout = {
60
+ export const layout = {
61
61
  sidebar: 248,
62
62
  sidebarMin: 64,
63
63
  // collapsed icons-only
@@ -69,6 +69,36 @@ export var layout = {
69
69
  tactileMin: 44,
70
70
  // WCAG 2.5.5 — hard floor for any tactile target
71
71
 
72
+ /**
73
+ * Gabarits de largeur de champ (G-H) — section « Form Field Width & Layout
74
+ * Standards » des Platform Mandatory UX Patterns.
75
+ *
76
+ * Ces quatre valeurs ÉTAIENT déjà la décision de design, mais elles vivaient
77
+ * en dur dans `Field.FIELD_MAX_WIDTH`, uniquement comme REPLIS de variables
78
+ * CSS que l'émetteur ne produisait pas. Le docblock de `Field` annonçait
79
+ * qu'elles étaient « exposées en variables CSS pour être revues sans toucher
80
+ * au code » : c'était faux, et c'est précisément la révision que ce même
81
+ * docblock demande à l'équipe design. Les valeurs sont donc promues ici, et
82
+ * `cssVariables` les émet.
83
+ *
84
+ * Le standard donne des FOURCHETTES (« ~80px to 120px max ») ; c'est le HAUT
85
+ * de chaque fourchette qui est retenu, ces largeurs étant des plafonds —
86
+ * prendre le bas tronquerait des valeurs qui tiennent dans la contrainte de
87
+ * caractères annoncée.
88
+ *
89
+ * `xl` n'y figure pas, et ce n'est pas un oubli : le gabarit XL vaut `100%`,
90
+ * une largeur relative et non une valeur de la grille. En faire un token en
91
+ * px inviterait à lui donner un plafond qu'il ne doit pas avoir.
92
+ */
93
+ fieldWidth: {
94
+ xs: 120,
95
+ // 1 a 5 caracteres — code postal, CVV, age
96
+ s: 200,
97
+ // 6 a 15 — telephone, montant, date
98
+ m: 400,
99
+ // 16 a 60 — nom, courriel, ville
100
+ l: 600 // 61 a 256 — adresse, recherche complexe
101
+ },
72
102
  /**
73
103
  * Modal max-widths (§03 Modal). MUI-bounded dialogs aligned with
74
104
  * the charter spacing system.
@@ -83,16 +113,41 @@ export var layout = {
83
113
  * Drawer default width (§03 Drawer). Hosts may override per usage,
84
114
  * but should pull from this scale rather than invent new values.
85
115
  */
86
- drawer: 560
116
+ drawer: 560,
117
+ /**
118
+ * Detail-page split (§07 R-L.7 + §Detail / Vertical Progress).
119
+ *
120
+ * The charter's detail skeleton is "content on the left, progression
121
+ * rail on the right", and the rail is a MUST on every consultation
122
+ * page. Hosts were writing that geometry by hand — `refonte-frontend`
123
+ * carried `flex: "1 1 560px"` / `flex: "0 1 300px"` / `minWidth: 260`
124
+ * twice (Area 4), which is three magic values per copy and no shared
125
+ * definition to keep the two screens agreeing.
126
+ *
127
+ * mainMin — flex-basis of the content column. Below the sum of the
128
+ * two bases the rail wraps UNDER the content, which is how
129
+ * the layout reflows without a media query (WCAG 1.4.10).
130
+ * aside — flex-basis of the rail (shrinkable, never grows).
131
+ * asideMin — hard floor: a `VStepper` label stops being readable
132
+ * below this, so the rail wraps instead of compressing.
133
+ *
134
+ * Consumed by `DetailSplit`; hosts should adopt that pattern rather
135
+ * than re-deriving these widths.
136
+ */
137
+ detail: {
138
+ mainMin: 560,
139
+ aside: 300,
140
+ asideMin: 260
141
+ }
87
142
  };
88
143
 
89
144
  /* Re-export the canonical breakpoint scale (now owned by ./breakpoints)
90
145
  * so existing consumers and the densityLayout default keep working. */
91
146
  export { breakpoints };
92
- var densityLayout = {
93
- density: density,
94
- layout: layout,
95
- breakpoints: breakpoints
147
+ const densityLayout = {
148
+ density,
149
+ layout,
150
+ breakpoints
96
151
  };
97
152
  export default densityLayout;
98
153
  //# sourceMappingURL=density.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"density.js","names":["breakpoints","density","spacious","row","input","btn","fontSize","comfortable","compact","ultraCompact","layout","sidebar","sidebarMin","topbar","contentMax","formMax","tactileMin","modal","sm","md","lg","xl","drawer","densityLayout"],"sources":["../../../../src/lib/v2/tokens/density.ts"],"sourcesContent":["/**\r\n * Density & layout tokens — Portnet UI v2\r\n * Aligned with Design System v1.0 §02.7 + §07.\r\n *\r\n * R-DG.11 — Density togglable, preference persisted.\r\n * R-7.4 — Tactile targets ≥ 44 × 44 px (WCAG 2.5.5).\r\n *\r\n * IMPORTANT: in any density tier, the visual button height\r\n * (`density.<tier>.btn`) may be below `layout.tactileMin` (44).\r\n * Components MUST extend the hit area to 44 via padding or a\r\n * pseudo-element (the FieldHelp / Button pattern), so R-7.4 is\r\n * satisfied without altering the visual size.\r\n * Icon-only buttons MUST set min-width/min-height to `tactileMin`.\r\n *\r\n * Tier picker (host opt-in via the `data-density` attribute):\r\n * - default → comfortable\r\n * - data-density=\"spacious\" → spacious (kiosk / TV / a11y-large)\r\n * - data-density=\"compact\" → compact (dense workflows)\r\n * - data-density=\"ultra-compact\" → ultraCompact (audit ledgers, dense lists)\r\n *\r\n * The kebab-case attribute is the public contract; the camelCase\r\n * key on this object is the JS-side identifier. Don't rename\r\n * either without coordinating cssVariables.js.\r\n *\r\n * NOTE (Batch 1 — responsive certification): the breakpoint scale used\r\n * to be declared here. It now lives in the dedicated ./breakpoints\r\n * module (single source shared by the MUI theme, the mq() helpers and\r\n * the --bp-* CSS variables) and is re-exported below so that every\r\n * `import { breakpoints } from \"@portnet/ui/v2/tokens\"` and the\r\n * densityLayout default shape are unchanged.\r\n */\r\n\r\nimport breakpoints from \"./breakpoints\";\r\n\r\nexport const density = {\r\n spacious: { row: 56, input: 44, btn: 44, fontSize: 15 },\r\n comfortable: { row: 44, input: 40, btn: 40, fontSize: 14 },\r\n compact: { row: 36, input: 32, btn: 32, fontSize: 13 },\r\n ultraCompact: { row: 28, input: 28, btn: 28, fontSize: 12 },\r\n};\r\n\r\nexport const layout = {\r\n sidebar: 248,\r\n sidebarMin: 64, // collapsed icons-only\r\n topbar: 56,\r\n contentMax: 1440, // wide table layouts\r\n formMax: 720, // mono-column form\r\n tactileMin: 44, // WCAG 2.5.5 — hard floor for any tactile target\r\n\r\n /**\r\n * Modal max-widths (§03 Modal). MUI-bounded dialogs aligned with\r\n * the charter spacing system.\r\n */\r\n modal: {\r\n sm: 440,\r\n md: 640,\r\n lg: 840,\r\n xl: 1000,\r\n },\r\n\r\n /**\r\n * Drawer default width (§03 Drawer). Hosts may override per usage,\r\n * but should pull from this scale rather than invent new values.\r\n */\r\n drawer: 560,\r\n};\r\n\r\n/* Re-export the canonical breakpoint scale (now owned by ./breakpoints)\r\n * so existing consumers and the densityLayout default keep working. */\r\nexport { breakpoints };\r\n\r\nconst densityLayout = { density, layout, breakpoints };\r\nexport default densityLayout;\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;AACA;AACA;AACA;;AAEA,OAAOA,WAAW,MAAM,eAAe;AAEvC,OAAO,IAAMC,OAAO,GAAG;EACrBC,QAAQ,EAAM;IAAEC,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DC,WAAW,EAAG;IAAEJ,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DE,OAAO,EAAO;IAAEL,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DG,YAAY,EAAE;IAAEN,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG;AAC5D,CAAC;AAED,OAAO,IAAMI,MAAM,GAAG;EACpBC,OAAO,EAAK,GAAG;EACfC,UAAU,EAAG,EAAE;EAAK;EACpBC,MAAM,EAAO,EAAE;EACfC,UAAU,EAAE,IAAI;EAAI;EACpBC,OAAO,EAAM,GAAG;EAAI;EACpBC,UAAU,EAAG,EAAE;EAAK;;EAEpB;AACF;AACA;AACA;EACEC,KAAK,EAAE;IACLC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAE;EACN,CAAC;EAED;AACF;AACA;AACA;EACEC,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA,SAAStB,WAAW;AAEpB,IAAMuB,aAAa,GAAG;EAAEtB,OAAO,EAAPA,OAAO;EAAES,MAAM,EAANA,MAAM;EAAEV,WAAW,EAAXA;AAAY,CAAC;AACtD,eAAeuB,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"density.js","names":["breakpoints","density","spacious","row","input","btn","fontSize","comfortable","compact","ultraCompact","layout","sidebar","sidebarMin","topbar","contentMax","formMax","tactileMin","fieldWidth","xs","s","m","l","modal","sm","md","lg","xl","drawer","detail","mainMin","aside","asideMin","densityLayout"],"sources":["../../../../src/lib/v2/tokens/density.ts"],"sourcesContent":["/**\r\n * Density & layout tokens — Portnet UI v2\r\n * Aligned with Design System v1.0 §02.7 + §07.\r\n *\r\n * R-DG.11 — Density togglable, preference persisted.\r\n * R-7.4 — Tactile targets ≥ 44 × 44 px (WCAG 2.5.5).\r\n *\r\n * IMPORTANT: in any density tier, the visual button height\r\n * (`density.<tier>.btn`) may be below `layout.tactileMin` (44).\r\n * Components MUST extend the hit area to 44 via padding or a\r\n * pseudo-element (the FieldHelp / Button pattern), so R-7.4 is\r\n * satisfied without altering the visual size.\r\n * Icon-only buttons MUST set min-width/min-height to `tactileMin`.\r\n *\r\n * Tier picker (host opt-in via the `data-density` attribute):\r\n * - default → comfortable\r\n * - data-density=\"spacious\" → spacious (kiosk / TV / a11y-large)\r\n * - data-density=\"compact\" → compact (dense workflows)\r\n * - data-density=\"ultra-compact\" → ultraCompact (audit ledgers, dense lists)\r\n *\r\n * The kebab-case attribute is the public contract; the camelCase\r\n * key on this object is the JS-side identifier. Don't rename\r\n * either without coordinating cssVariables.js.\r\n *\r\n * NOTE (Batch 1 — responsive certification): the breakpoint scale used\r\n * to be declared here. It now lives in the dedicated ./breakpoints\r\n * module (single source shared by the MUI theme, the mq() helpers and\r\n * the --bp-* CSS variables) and is re-exported below so that every\r\n * `import { breakpoints } from \"@portnet/ui/v2/tokens\"` and the\r\n * densityLayout default shape are unchanged.\r\n */\r\n\r\nimport breakpoints from \"./breakpoints\";\r\n\r\nexport const density = {\r\n spacious: { row: 56, input: 44, btn: 44, fontSize: 15 },\r\n comfortable: { row: 44, input: 40, btn: 40, fontSize: 14 },\r\n compact: { row: 36, input: 32, btn: 32, fontSize: 13 },\r\n ultraCompact: { row: 28, input: 28, btn: 28, fontSize: 12 },\r\n};\r\n\r\nexport const layout = {\r\n sidebar: 248,\r\n sidebarMin: 64, // collapsed icons-only\r\n topbar: 56,\r\n contentMax: 1440, // wide table layouts\r\n formMax: 720, // mono-column form\r\n tactileMin: 44, // WCAG 2.5.5 — hard floor for any tactile target\r\n\r\n /**\r\n * Gabarits de largeur de champ (G-H) — section « Form Field Width & Layout\r\n * Standards » des Platform Mandatory UX Patterns.\r\n *\r\n * Ces quatre valeurs ÉTAIENT déjà la décision de design, mais elles vivaient\r\n * en dur dans `Field.FIELD_MAX_WIDTH`, uniquement comme REPLIS de variables\r\n * CSS que l'émetteur ne produisait pas. Le docblock de `Field` annonçait\r\n * qu'elles étaient « exposées en variables CSS pour être revues sans toucher\r\n * au code » : c'était faux, et c'est précisément la révision que ce même\r\n * docblock demande à l'équipe design. Les valeurs sont donc promues ici, et\r\n * `cssVariables` les émet.\r\n *\r\n * Le standard donne des FOURCHETTES (« ~80px to 120px max ») ; c'est le HAUT\r\n * de chaque fourchette qui est retenu, ces largeurs étant des plafonds —\r\n * prendre le bas tronquerait des valeurs qui tiennent dans la contrainte de\r\n * caractères annoncée.\r\n *\r\n * `xl` n'y figure pas, et ce n'est pas un oubli : le gabarit XL vaut `100%`,\r\n * une largeur relative et non une valeur de la grille. En faire un token en\r\n * px inviterait à lui donner un plafond qu'il ne doit pas avoir.\r\n */\r\n fieldWidth: {\r\n xs: 120, // 1 a 5 caracteres — code postal, CVV, age\r\n s: 200, // 6 a 15 — telephone, montant, date\r\n m: 400, // 16 a 60 — nom, courriel, ville\r\n l: 600, // 61 a 256 — adresse, recherche complexe\r\n },\r\n\r\n /**\r\n * Modal max-widths (§03 Modal). MUI-bounded dialogs aligned with\r\n * the charter spacing system.\r\n */\r\n modal: {\r\n sm: 440,\r\n md: 640,\r\n lg: 840,\r\n xl: 1000,\r\n },\r\n\r\n /**\r\n * Drawer default width (§03 Drawer). Hosts may override per usage,\r\n * but should pull from this scale rather than invent new values.\r\n */\r\n drawer: 560,\r\n\r\n /**\r\n * Detail-page split (§07 R-L.7 + §Detail / Vertical Progress).\r\n *\r\n * The charter's detail skeleton is \"content on the left, progression\r\n * rail on the right\", and the rail is a MUST on every consultation\r\n * page. Hosts were writing that geometry by hand — `refonte-frontend`\r\n * carried `flex: \"1 1 560px\"` / `flex: \"0 1 300px\"` / `minWidth: 260`\r\n * twice (Area 4), which is three magic values per copy and no shared\r\n * definition to keep the two screens agreeing.\r\n *\r\n * mainMin — flex-basis of the content column. Below the sum of the\r\n * two bases the rail wraps UNDER the content, which is how\r\n * the layout reflows without a media query (WCAG 1.4.10).\r\n * aside — flex-basis of the rail (shrinkable, never grows).\r\n * asideMin — hard floor: a `VStepper` label stops being readable\r\n * below this, so the rail wraps instead of compressing.\r\n *\r\n * Consumed by `DetailSplit`; hosts should adopt that pattern rather\r\n * than re-deriving these widths.\r\n */\r\n detail: {\r\n mainMin: 560,\r\n aside: 300,\r\n asideMin: 260,\r\n },\r\n};\r\n\r\n/* Re-export the canonical breakpoint scale (now owned by ./breakpoints)\r\n * so existing consumers and the densityLayout default keep working. */\r\nexport { breakpoints };\r\n\r\nconst densityLayout = { density, layout, breakpoints };\r\nexport default densityLayout;\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;AACA;AACA;AACA;;AAEA,OAAOA,WAAW,MAAM,eAAe;AAEvC,OAAO,MAAMC,OAAO,GAAG;EACrBC,QAAQ,EAAM;IAAEC,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DC,WAAW,EAAG;IAAEJ,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DE,OAAO,EAAO;IAAEL,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG,CAAC;EAC3DG,YAAY,EAAE;IAAEN,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,QAAQ,EAAE;EAAG;AAC5D,CAAC;AAED,OAAO,MAAMI,MAAM,GAAG;EACpBC,OAAO,EAAK,GAAG;EACfC,UAAU,EAAG,EAAE;EAAK;EACpBC,MAAM,EAAO,EAAE;EACfC,UAAU,EAAE,IAAI;EAAI;EACpBC,OAAO,EAAM,GAAG;EAAI;EACpBC,UAAU,EAAG,EAAE;EAAK;;EAEpB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAU,EAAE;IACVC,EAAE,EAAE,GAAG;IAAI;IACXC,CAAC,EAAG,GAAG;IAAI;IACXC,CAAC,EAAG,GAAG;IAAI;IACXC,CAAC,EAAG,GAAG,CAAI;EACb,CAAC;EAED;AACF;AACA;AACA;EACEC,KAAK,EAAE;IACLC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAG,GAAG;IACRC,EAAE,EAAE;EACN,CAAC;EAED;AACF;AACA;AACA;EACEC,MAAM,EAAE,GAAG;EAEX;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,MAAM,EAAE;IACNC,OAAO,EAAG,GAAG;IACbC,KAAK,EAAK,GAAG;IACbC,QAAQ,EAAE;EACZ;AACF,CAAC;;AAED;AACA;AACA,SAAS/B,WAAW;AAEpB,MAAMgC,aAAa,GAAG;EAAE/B,OAAO;EAAES,MAAM;EAAEV;AAAY,CAAC;AACtD,eAAegC,aAAa","ignoreList":[]}