@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1 +1 @@
1
- {"version":3,"file":"DataGridVirtualized.js","names":["React","Box","Table","TableHead","TableBody","TableRow","TableCell","Checkbox","DragIndicatorIcon","useVirtualizer","SkeletonRow","SortableHeader","getAriaSort","useDelayedFlag","density","DEFAULT_MAX_BODY_HEIGHT","mergeLabels","useColumnsStabilityWarn","applyColumnOrder","CONTAINER_SX","TABLE_BY_DENSITY","ROW_CLICKABLE_SX","ROW_STATIC_SX","HEADER_CHECKBOX_CELL_SX","BODY_CHECKBOX_CELL_SX","ERROR_CELL_SX","ERROR_INNER_SX","Pagination","useColumnResize","useColumnReorder","jsx","_jsx","jsxs","_jsxs","DEFAULT_ROW_HEIGHT_BY_DENSITY","Object","freeze","spacious","row","comfortable","compact","ultraCompact","PADDING_CELL_SX","padding","border","REORDER_GRIP_SX","position","insetInlineStart","top","transform","zIndex","display","alignItems","justifyContent","width","height","borderRadius","background","color","cursor","opacity","pointerEvents","transition","fontFamily","outline","outlineOffset","readCellValue","key","defaultGetRowId","id","DataGridVirtualized","_ref","_ref2","_ref$rows","rows","_ref$columns","columns","rawColumns","_ref$loading","loading","_ref$error","error","_ref$sort","sort","onSortChange","selection","onSelectionChange","pagination","emptyState","filteredEmptyState","errorState","_ref$getRowId","getRowId","onRowClick","rowFlashId","_ref$filtered","filtered","_ref$density","densityProp","ariaLabel","_ref$locale","locale","labels","_ref$maxBodyHeight","maxBodyHeight","rowHeight","_ref$overscan","overscan","_ref$resizable","resizable","columnWidths","onColumnWidthsChange","_ref$reorderable","reorderable","columnOrder","onColumnOrderChange","L","useMemo","tableAria","showSkeleton","resize","reorder","resizeIsActive","isResizing","pendingReorderFocusRef","useRef","useEffect","current","document","escaped","window","CSS","escape","el","querySelector","concat","HTMLElement","focus","effectiveRowHeight","showCheckbox","colCount","length","sortable","col","selectedSet","Set","allSelected","every","r","has","someSelected","some","toggleAll","map","toggleRow","next","add","handleRowKeyDown","e","preventDefault","scrollRef","virtualizer","count","getScrollElement","estimateSize","virtualItems","getVirtualItems","totalSize","getTotalSize","firstItem","lastItem","paddingTop","start","paddingBottom","end","scrollContainerSx","overflow","maxHeight","tableDensityKey","tableSx","body","children","Array","from","_","i","cols","withCheckbox","withActions","colSpan","sx","undefined","style","virtualItem","index","isSelected","flash","clickable","hover","className","onClick","onKeyDown","tabIndex","size","checked","onChange","stopPropagation","slotProps","input","selectRow","_ref3","_ref4","value","getValue","effectiveWidth","liveWidths","cellSx","_objectSpread","fontSize","whiteSpace","wrap","textOverflow","mono","numeric","fontVariantNumeric","maxWidth","align","render","ref","stickyHeader","indeterminate","selectAll","_ref5","isSortable","isResizable","isReorderable","ariaSort","reorderHandlers","cellHandlers","reorderFeedbackSx","sortKey","setSort","header","component","type","handleKeyDown","role","Math","round","minWidth","draggable","onMouseDown","handleMouseDown","insetInlineEnd","userSelect","touchAction"],"sources":["../../../../src/lib/v2/patterns/DataGridVirtualized.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport DragIndicatorIcon from \"@mui/icons-material/DragIndicator\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\r\nimport { SkeletonRow } from \"../components/Skeleton\";\r\nimport SortableHeader, { getAriaSort } from \"./SortableHeader\";\r\nimport useDelayedFlag from \"../hooks/useDelayedFlag\";\r\nimport { density } from \"../tokens\";\r\nimport {\r\n DEFAULT_MAX_BODY_HEIGHT,\r\n mergeLabels,\r\n useColumnsStabilityWarn,\r\n applyColumnOrder,\r\n CONTAINER_SX,\r\n TABLE_BY_DENSITY,\r\n ROW_CLICKABLE_SX,\r\n ROW_STATIC_SX,\r\n HEADER_CHECKBOX_CELL_SX,\r\n BODY_CHECKBOX_CELL_SX,\r\n ERROR_CELL_SX,\r\n ERROR_INNER_SX,\r\n Pagination,\r\n} from \"./_dataGridShared\";\r\nimport useColumnResize from \"./_useColumnResize\";\r\nimport useColumnReorder from \"./_useColumnReorder\";\r\nimport type {\r\n DataGridColumn,\r\n DataGridLabels,\r\n DataGridPagination,\r\n} from \"../types/datagrid\";\r\nimport type { Density, RowId, SortDescriptor } from \"../types/common\";\r\n\r\n/**\r\n * DataGridVirtualized - Portnet UI v2 (pattern)\r\n *\r\n * Same public API as DataGrid + four virtualization-specific props\r\n * + the resize/reorder opt-ins (mirrors DataGrid):\r\n *\r\n * rowHeight, overscan — virtualization\r\n * resizable, columnWidths, onColumnWidthsChange — resize\r\n * reorderable, columnOrder, onColumnOrderChange — reorder\r\n *\r\n * When to use:\r\n * - 1000+ rows where pagination would feel artificial.\r\n * - Audit logs / ledgers / \"view all\" flows.\r\n *\r\n * When NOT to use:\r\n * - <100 rows: DataGrid is simpler.\r\n * - Variable-height rows: NOT supported (uniform rowHeight only).\r\n *\r\n * Virtualization caveats:\r\n * - rowFlashId only fires when the target row is in the current window.\r\n * For confirmations that survive scroll, use a Toast.\r\n * - Sort + filter cost is host-side.\r\n *\r\n * A11y (DG-V1): the table advertises aria-rowcount over the FULL dataset while\r\n * only the windowed rows are in the DOM, so every rendered row carries an\r\n * explicit aria-rowindex (header = 1, data row = virtualItem.index + 2) so SR\r\n * users hear their true position. aria-hidden spacer rows stay unindexed.\r\n * DG-2: the resize grip is a focusable role=\"separator\" (tabIndex 0,\r\n * aria-valuenow/valuemin) operable by pointer AND keyboard (Arrow / Home).\r\n * DG-R1: reorderable columns expose a hover/focus-revealed grip button\r\n * (aria-keyshortcuts Arrow/Home/End → useColumnReorder.handleKeyDown) so column\r\n * reorder is keyboard-operable, not drag-only; focus follows the moved column.\r\n */\r\n\r\n/** Row-height density tiers for the virtualizer — a distinct, wider set than\r\n * the canonical 2-tier Density (which governs table cell padding). */\r\nexport type DataGridVirtualizedDensity =\r\n | \"spacious\"\r\n | \"comfortable\"\r\n | \"compact\"\r\n | \"ultraCompact\";\r\n\r\nexport interface DataGridVirtualizedProps<T> {\r\n rows?: T[] | undefined;\r\n columns: DataGridColumn<T>[];\r\n loading?: boolean | undefined;\r\n /** Any truthy value switches the grid to its error branch. */\r\n error?: unknown;\r\n sort?: SortDescriptor[] | undefined;\r\n onSortChange?: React.Dispatch<React.SetStateAction<SortDescriptor[]>> | undefined;\r\n selection?: Set<RowId> | RowId[] | undefined;\r\n onSelectionChange?: ((selection: Set<RowId>) => void) | undefined;\r\n pagination?: DataGridPagination | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n filteredEmptyState?: React.ReactNode | undefined;\r\n errorState?: React.ReactNode | undefined;\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n onRowClick?: ((row: T) => void) | undefined;\r\n rowFlashId?: RowId | undefined;\r\n filtered?: boolean | undefined;\r\n density?: DataGridVirtualizedDensity | undefined;\r\n ariaLabel?: string | undefined;\r\n locale?: string | undefined;\r\n labels?: DataGridLabels | undefined;\r\n maxBodyHeight?: number | string | undefined;\r\n /** Uniform row height in px (overrides the density default). */\r\n rowHeight?: number | undefined;\r\n /** Rows rendered beyond the visible window on each side. */\r\n overscan?: number | undefined;\r\n resizable?: boolean | undefined;\r\n columnWidths?: Record<string, number> | undefined;\r\n onColumnWidthsChange?: ((widths: Record<string, number>) => void) | undefined;\r\n reorderable?: boolean | undefined;\r\n columnOrder?: string[] | undefined;\r\n onColumnOrderChange?: ((order: string[]) => void) | undefined;\r\n}\r\n\r\n/** Default row height by density tier. */\r\nconst DEFAULT_ROW_HEIGHT_BY_DENSITY: Record<DataGridVirtualizedDensity, number> =\r\n Object.freeze({\r\n spacious: density.spacious.row, // 56\r\n comfortable: density.comfortable.row, // 44\r\n compact: density.compact.row, // 36\r\n ultraCompact: density.ultraCompact.row, // 28\r\n });\r\n\r\nconst PADDING_CELL_SX = Object.freeze({ padding: 0, border: 0 });\r\n\r\n/* DG-R1 — reorder grip button. Hidden (opacity 0) until the header is hovered /\r\n * focus-within, and always revealed while itself focus-visible so it stays\r\n * Tab-reachable. Absolutely positioned in the header cell's inline-start\r\n * padding; background matches the header so it masks the sliver it overlaps. */\r\nconst REORDER_GRIP_SX = Object.freeze({\r\n position: \"absolute\",\r\n insetInlineStart: 2,\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n zIndex: 2,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: 18,\r\n height: 18,\r\n padding: 0,\r\n border: \"none\",\r\n borderRadius: \"var(--r-sm)\",\r\n background: \"var(--bg-subtle)\",\r\n color: \"var(--fg-subtle)\",\r\n cursor: \"grab\",\r\n opacity: 0,\r\n pointerEvents: \"none\",\r\n transition: \"opacity var(--duration-fast, 120ms) ease\",\r\n fontFamily: \"inherit\",\r\n \"th:hover &, th:focus-within &\": { opacity: 1, pointerEvents: \"auto\" },\r\n \"@media (pointer: coarse)\": { opacity: 1, pointerEvents: \"auto\" },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"-1px\",\r\n opacity: 1,\r\n pointerEvents: \"auto\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\n/* Default value accessor for an unconstrained row type — typed against\r\n * `unknown` so the single assertion is legal (mirrors DataGrid). */\r\nfunction readCellValue(row: unknown, key: string): unknown {\r\n return (row as Record<string, unknown>)[key];\r\n}\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\nfunction DataGridVirtualized<T>({\r\n rows = [],\r\n columns: rawColumns = [],\r\n loading = false,\r\n error = null,\r\n sort = [],\r\n onSortChange,\r\n selection,\r\n onSelectionChange,\r\n pagination,\r\n emptyState,\r\n filteredEmptyState,\r\n errorState,\r\n getRowId = defaultGetRowId,\r\n onRowClick,\r\n rowFlashId,\r\n filtered = false,\r\n density: densityProp = \"comfortable\",\r\n ariaLabel,\r\n locale = \"fr-FR\",\r\n labels,\r\n maxBodyHeight = DEFAULT_MAX_BODY_HEIGHT,\r\n // Virtualization\r\n rowHeight,\r\n overscan = 10,\r\n // Resize\r\n resizable = false,\r\n columnWidths,\r\n onColumnWidthsChange,\r\n // Reorder\r\n reorderable = false,\r\n columnOrder,\r\n onColumnOrderChange,\r\n}: DataGridVirtualizedProps<T>) {\r\n const L = React.useMemo(() => mergeLabels(labels), [labels]);\r\n const tableAria = ariaLabel != null ? ariaLabel : L.tableAria;\r\n\r\n const showSkeleton = useDelayedFlag(loading);\r\n\r\n useColumnsStabilityWarn(rawColumns);\r\n\r\n // Apply host-supplied column order (defensive, see _dataGridShared).\r\n const columns = React.useMemo(\r\n () => applyColumnOrder(rawColumns, columnOrder),\r\n [rawColumns, columnOrder]\r\n );\r\n\r\n // Resize + reorder hooks. Cross-coupled via resizeIsActive.\r\n const resize = useColumnResize(columnWidths, onColumnWidthsChange);\r\n const reorder = useColumnReorder(columns, columnOrder, onColumnOrderChange, {\r\n resizeIsActive: resize.isResizing,\r\n });\r\n\r\n // DG-R1 — after a keyboard reorder the moved column's grip is re-rendered at\r\n // a new position and the browser drops focus; re-focus it so repeated Arrow\r\n // presses keep moving the same column. Keyed on the host-controlled order.\r\n const pendingReorderFocusRef = React.useRef<string | null>(null);\r\n React.useEffect(() => {\r\n const key = pendingReorderFocusRef.current;\r\n if (!key || typeof document === \"undefined\") return;\r\n pendingReorderFocusRef.current = null;\r\n const escaped =\r\n typeof window !== \"undefined\" &&\r\n window.CSS &&\r\n typeof window.CSS.escape === \"function\"\r\n ? window.CSS.escape(key)\r\n : key;\r\n const el = document.querySelector(`[data-reorder-grip=\"${escaped}\"]`);\r\n if (el instanceof HTMLElement) el.focus();\r\n }, [columnOrder]);\r\n\r\n // Effective row height: prop wins, otherwise density default.\r\n const effectiveRowHeight =\r\n rowHeight ??\r\n DEFAULT_ROW_HEIGHT_BY_DENSITY[densityProp] ??\r\n DEFAULT_ROW_HEIGHT_BY_DENSITY.comfortable;\r\n\r\n const showCheckbox = !!onSelectionChange;\r\n const colCount = columns.length + (showCheckbox ? 1 : 0);\r\n\r\n const sortable = (col: DataGridColumn<T>): boolean =>\r\n col.sortable !== false && !!col.key && !!onSortChange;\r\n\r\n const selectedSet = React.useMemo(\r\n () => (selection instanceof Set ? selection : new Set(selection || [])),\r\n [selection]\r\n );\r\n const allSelected =\r\n rows.length > 0 && rows.every((r) => selectedSet.has(getRowId(r)));\r\n const someSelected =\r\n !allSelected && rows.some((r) => selectedSet.has(getRowId(r)));\r\n\r\n const toggleAll = () => {\r\n if (!onSelectionChange) return;\r\n if (allSelected) onSelectionChange(new Set<RowId>());\r\n else onSelectionChange(new Set(rows.map(getRowId)));\r\n };\r\n const toggleRow = (id: RowId) => {\r\n if (!onSelectionChange) return;\r\n const next = new Set(selectedSet);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n onSelectionChange(next);\r\n };\r\n\r\n const handleRowKeyDown =\r\n (row: T) => (e: React.KeyboardEvent<HTMLElement>) => {\r\n if (!onRowClick) return;\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n onRowClick(row);\r\n }\r\n };\r\n\r\n const scrollRef = React.useRef<HTMLDivElement>(null);\r\n\r\n const virtualizer = useVirtualizer({\r\n count: rows.length,\r\n getScrollElement: () => scrollRef.current,\r\n estimateSize: () => effectiveRowHeight,\r\n overscan,\r\n });\r\n\r\n const virtualItems = virtualizer.getVirtualItems();\r\n const totalSize = virtualizer.getTotalSize();\r\n const firstItem = virtualItems[0];\r\n const lastItem = virtualItems[virtualItems.length - 1];\r\n const paddingTop = firstItem ? firstItem.start : 0;\r\n const paddingBottom = lastItem ? totalSize - lastItem.end : 0;\r\n\r\n const scrollContainerSx = React.useMemo<SxProps<Theme>>(\r\n () => ({ overflow: \"auto\", maxHeight: maxBodyHeight }),\r\n [maxBodyHeight]\r\n );\r\n // TABLE_BY_DENSITY is keyed by the 2-tier Density; map the wider tier down\r\n // (matches the JS `TABLE_BY_DENSITY[dp] || .comfortable` fallback).\r\n const tableDensityKey: Density =\r\n densityProp === \"compact\" ? \"compact\" : \"comfortable\";\r\n const tableSx = TABLE_BY_DENSITY[tableDensityKey];\r\n\r\n // ── Body branches ──────────────────────────────────────────────\r\n let body: React.ReactNode;\r\n if (showSkeleton) {\r\n body = (\r\n <TableBody aria-busy=\"true\">\r\n {Array.from({ length: 6 }, (_, i) => (\r\n <SkeletonRow\r\n key={`sk-${i}`}\r\n cols={columns.length}\r\n withCheckbox={showCheckbox}\r\n withActions={false}\r\n />\r\n ))}\r\n </TableBody>\r\n );\r\n } else if (error) {\r\n body = (\r\n <TableBody>\r\n <TableRow>\r\n <TableCell colSpan={colCount} sx={ERROR_CELL_SX}>\r\n <Box sx={ERROR_INNER_SX}>{errorState}</Box>\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n );\r\n } else if (rows.length === 0) {\r\n body = (\r\n <TableBody aria-busy={loading || undefined}>\r\n <TableRow>\r\n <TableCell colSpan={colCount} sx={ERROR_CELL_SX}>\r\n <Box sx={ERROR_INNER_SX}>\r\n {filtered ? filteredEmptyState : emptyState}\r\n </Box>\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n );\r\n } else {\r\n body = (\r\n <TableBody aria-busy={loading || undefined}>\r\n {paddingTop > 0 && (\r\n <TableRow aria-hidden=\"true\" style={{ height: paddingTop }}>\r\n <TableCell colSpan={colCount} sx={PADDING_CELL_SX} />\r\n </TableRow>\r\n )}\r\n {virtualItems.map((virtualItem) => {\r\n const row = rows[virtualItem.index];\r\n if (!row) return null;\r\n const id = getRowId(row);\r\n const isSelected = selectedSet.has(id);\r\n const flash = rowFlashId === id;\r\n const clickable = !!onRowClick;\r\n return (\r\n <TableRow\r\n key={virtualItem.key}\r\n data-index={virtualItem.index}\r\n aria-rowindex={virtualItem.index + 2}\r\n hover\r\n data-selected={isSelected || undefined}\r\n className={flash ? \"pui-row-updated\" : undefined}\r\n onClick={clickable ? () => onRowClick?.(row) : undefined}\r\n onKeyDown={clickable ? handleRowKeyDown(row) : undefined}\r\n tabIndex={clickable ? 0 : undefined}\r\n style={{ height: virtualItem.size }}\r\n sx={clickable ? ROW_CLICKABLE_SX : ROW_STATIC_SX}\r\n >\r\n {showCheckbox && (\r\n <TableCell padding=\"checkbox\" sx={BODY_CHECKBOX_CELL_SX}>\r\n <Checkbox\r\n size=\"small\"\r\n checked={isSelected}\r\n onChange={(e) => {\r\n e.stopPropagation();\r\n toggleRow(id);\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={(e) => e.stopPropagation()}\r\n slotProps={{ input: { \"aria-label\": L.selectRow(id) } }}\r\n />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const value = col.getValue\r\n ? col.getValue(row)\r\n : readCellValue(row, col.key);\r\n const effectiveWidth =\r\n (resize.liveWidths && resize.liveWidths[col.key]) ??\r\n col.width;\r\n // --text-body (14px) — was `var(--text-fs)`, a token typo\r\n // with no fallback; making the inheritance explicit preserves\r\n // the rendering while removing the dangling reference.\r\n const cellSx: SxProps<Theme> = {\r\n fontSize: \"var(--text-body)\",\r\n whiteSpace: col.wrap ? \"normal\" : \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n ...(col.mono ? { fontFamily: \"var(--font-mono)\" } : {}),\r\n ...(col.numeric || col.mono\r\n ? { fontVariantNumeric: \"tabular-nums\" }\r\n : {}),\r\n ...(effectiveWidth != null ? { width: effectiveWidth } : {}),\r\n ...(col.maxWidth != null ? { maxWidth: col.maxWidth } : {}),\r\n };\r\n return (\r\n <TableCell\r\n key={col.key}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n sx={cellSx}\r\n >\r\n {col.render\r\n ? col.render(row)\r\n : (value as React.ReactNode) ?? \"—\"}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n );\r\n })}\r\n {paddingBottom > 0 && (\r\n <TableRow aria-hidden=\"true\" style={{ height: paddingBottom }}>\r\n <TableCell colSpan={colCount} sx={PADDING_CELL_SX} />\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n );\r\n }\r\n\r\n return (\r\n <Box sx={CONTAINER_SX}>\r\n <Box ref={scrollRef} sx={scrollContainerSx}>\r\n <Table\r\n aria-label={tableAria}\r\n aria-rowcount={rows.length ? rows.length + 1 : undefined}\r\n size={densityProp === \"compact\" ? \"small\" : \"medium\"}\r\n stickyHeader\r\n sx={tableSx}\r\n >\r\n <TableHead>\r\n <TableRow aria-rowindex={1}>\r\n {showCheckbox && (\r\n <TableCell padding=\"checkbox\" sx={HEADER_CHECKBOX_CELL_SX}>\r\n <Checkbox\r\n size=\"small\"\r\n checked={allSelected}\r\n indeterminate={someSelected}\r\n onChange={toggleAll}\r\n slotProps={{ input: { \"aria-label\": L.selectAll } }}\r\n />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const isSortable = sortable(col);\r\n const isResizable = resizable && col.resizable !== false;\r\n const isReorderable = reorderable && col.reorderable !== false;\r\n const ariaSort = isSortable\r\n ? getAriaSort(sort, col.key)\r\n : undefined;\r\n const effectiveWidth =\r\n (resize.liveWidths && resize.liveWidths[col.key]) ??\r\n col.width;\r\n const reorderHandlers = isReorderable\r\n ? reorder.cellHandlers(col.key)\r\n : null;\r\n const reorderFeedbackSx = isReorderable\r\n ? reorder.cellSx(col.key)\r\n : undefined;\r\n return (\r\n <TableCell\r\n key={col.key}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n aria-sort={ariaSort}\r\n {...(reorderHandlers || {})}\r\n sx={{\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n ...(effectiveWidth != null\r\n ? { width: effectiveWidth }\r\n : {}),\r\n ...(reorderFeedbackSx\r\n ? (reorderFeedbackSx as SystemStyleObject<Theme>)\r\n : {}),\r\n }}\r\n >\r\n {isSortable && onSortChange ? (\r\n <SortableHeader\r\n sortKey={col.key}\r\n sort={sort}\r\n setSort={onSortChange}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n >\r\n {col.header}\r\n </SortableHeader>\r\n ) : (\r\n col.header\r\n )}\r\n\r\n {isReorderable && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n data-reorder-grip={col.key}\r\n aria-label=\"Réorganiser la colonne\"\r\n aria-keyshortcuts=\"ArrowLeft ArrowRight Home End\"\r\n onKeyDown={(e) => {\r\n if (\r\n e.key === \"ArrowLeft\" ||\r\n e.key === \"ArrowRight\" ||\r\n e.key === \"Home\" ||\r\n e.key === \"End\"\r\n ) {\r\n pendingReorderFocusRef.current = col.key;\r\n }\r\n reorder.handleKeyDown(col.key)(e);\r\n }}\r\n sx={REORDER_GRIP_SX}\r\n >\r\n <DragIndicatorIcon sx={{ fontSize: 14 }} />\r\n </Box>\r\n )}\r\n\r\n {isResizable && (\r\n <Box\r\n role=\"separator\"\r\n aria-orientation=\"vertical\"\r\n aria-label=\"Redimensionner la colonne\"\r\n tabIndex={0}\r\n aria-valuenow={\r\n typeof effectiveWidth === \"number\"\r\n ? Math.round(effectiveWidth)\r\n : undefined\r\n }\r\n aria-valuemin={resize.minWidth}\r\n draggable=\"false\"\r\n onMouseDown={resize.handleMouseDown(col.key)}\r\n onKeyDown={resize.handleKeyDown(col.key)}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n insetInlineEnd: 0,\r\n width: 8,\r\n height: \"100%\",\r\n cursor: \"col-resize\",\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n zIndex: 2,\r\n \"&:hover\": {\r\n background: \"var(--state-hover-overlay)\",\r\n },\r\n \"&:active\": {\r\n background: \"var(--state-pressed-overlay)\",\r\n },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"-1px\",\r\n background: \"var(--state-hover-overlay)\",\r\n },\r\n }}\r\n />\r\n )}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n </TableHead>\r\n {body}\r\n </Table>\r\n </Box>\r\n {pagination && (\r\n <Pagination\r\n {...pagination}\r\n loading={loading}\r\n locale={locale}\r\n labels={L.pagination}\r\n />\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default DataGridVirtualized;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DataGridVirtualized.js","names":["React","Box","Table","TableHead","TableBody","TableRow","TableCell","Checkbox","DragIndicatorIcon","useVirtualizer","SkeletonRow","SortableHeader","getAriaSort","useDelayedFlag","density","DEFAULT_MAX_BODY_HEIGHT","mergeLabels","useColumnsStabilityWarn","applyColumnOrder","CONTAINER_SX","TABLE_BY_DENSITY","ROW_CLICKABLE_SX","ROW_STATIC_SX","HEADER_CHECKBOX_CELL_SX","BODY_CHECKBOX_CELL_SX","ERROR_CELL_SX","ERROR_INNER_SX","Pagination","useColumnResize","useColumnReorder","jsx","_jsx","jsxs","_jsxs","DEFAULT_ROW_HEIGHT_BY_DENSITY","Object","freeze","spacious","row","comfortable","compact","ultraCompact","PADDING_CELL_SX","padding","border","REORDER_GRIP_SX","position","insetInlineStart","top","transform","zIndex","display","alignItems","justifyContent","width","height","borderRadius","background","color","cursor","opacity","pointerEvents","transition","fontFamily","outline","outlineOffset","readCellValue","key","defaultGetRowId","id","DataGridVirtualized","rows","columns","rawColumns","loading","error","sort","onSortChange","selection","onSelectionChange","pagination","emptyState","filteredEmptyState","errorState","getRowId","onRowClick","rowFlashId","filtered","densityProp","ariaLabel","locale","labels","maxBodyHeight","rowHeight","overscan","resizable","columnWidths","onColumnWidthsChange","reorderable","columnOrder","onColumnOrderChange","L","useMemo","tableAria","showSkeleton","resize","reorder","resizeIsActive","isResizing","pendingReorderFocusRef","useRef","useEffect","current","document","escaped","window","CSS","escape","el","querySelector","HTMLElement","focus","effectiveRowHeight","showCheckbox","colCount","length","sortable","col","selectedSet","Set","allSelected","every","r","has","someSelected","some","toggleAll","map","toggleRow","next","delete","add","handleRowKeyDown","e","preventDefault","scrollRef","virtualizer","count","getScrollElement","estimateSize","virtualItems","getVirtualItems","totalSize","getTotalSize","firstItem","lastItem","paddingTop","start","paddingBottom","end","scrollContainerSx","overflow","maxHeight","tableDensityKey","tableSx","body","children","Array","from","_","i","cols","withCheckbox","withActions","colSpan","sx","undefined","style","virtualItem","index","isSelected","flash","clickable","hover","className","onClick","onKeyDown","tabIndex","size","checked","onChange","stopPropagation","slotProps","input","selectRow","value","getValue","effectiveWidth","liveWidths","cellSx","fontSize","whiteSpace","wrap","textOverflow","mono","numeric","fontVariantNumeric","maxWidth","align","render","ref","stickyHeader","indeterminate","selectAll","isSortable","isResizable","isReorderable","ariaSort","reorderHandlers","cellHandlers","reorderFeedbackSx","sortKey","setSort","header","component","type","handleKeyDown","role","Math","round","minWidth","draggable","onMouseDown","handleMouseDown","insetInlineEnd","userSelect","touchAction"],"sources":["../../../../src/lib/v2/patterns/DataGridVirtualized.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Table from \"@mui/material/Table\";\r\nimport TableHead from \"@mui/material/TableHead\";\r\nimport TableBody from \"@mui/material/TableBody\";\r\nimport TableRow from \"@mui/material/TableRow\";\r\nimport TableCell from \"@mui/material/TableCell\";\r\nimport Checkbox from \"@mui/material/Checkbox\";\r\nimport DragIndicatorIcon from \"@mui/icons-material/DragIndicator\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\r\nimport { SkeletonRow } from \"../components/Skeleton\";\r\nimport SortableHeader, { getAriaSort } from \"./SortableHeader\";\r\nimport useDelayedFlag from \"../hooks/useDelayedFlag\";\r\nimport { density } from \"../tokens\";\r\nimport {\r\n DEFAULT_MAX_BODY_HEIGHT,\r\n mergeLabels,\r\n useColumnsStabilityWarn,\r\n applyColumnOrder,\r\n CONTAINER_SX,\r\n TABLE_BY_DENSITY,\r\n ROW_CLICKABLE_SX,\r\n ROW_STATIC_SX,\r\n HEADER_CHECKBOX_CELL_SX,\r\n BODY_CHECKBOX_CELL_SX,\r\n ERROR_CELL_SX,\r\n ERROR_INNER_SX,\r\n Pagination,\r\n} from \"./_dataGridShared\";\r\nimport useColumnResize from \"./_useColumnResize\";\r\nimport useColumnReorder from \"./_useColumnReorder\";\r\nimport type {\r\n DataGridColumn,\r\n DataGridLabels,\r\n DataGridPagination,\r\n} from \"../types/datagrid\";\r\nimport type { Density, RowId, SortDescriptor } from \"../types/common\";\r\n\r\n/**\r\n * DataGridVirtualized - Portnet UI v2 (pattern)\r\n *\r\n * Same public API as DataGrid + four virtualization-specific props\r\n * + the resize/reorder opt-ins (mirrors DataGrid):\r\n *\r\n * rowHeight, overscan — virtualization\r\n * resizable, columnWidths, onColumnWidthsChange — resize\r\n * reorderable, columnOrder, onColumnOrderChange — reorder\r\n *\r\n * When to use:\r\n * - 1000+ rows where pagination would feel artificial.\r\n * - Audit logs / ledgers / \"view all\" flows.\r\n *\r\n * When NOT to use:\r\n * - <100 rows: DataGrid is simpler.\r\n * - Variable-height rows: NOT supported (uniform rowHeight only).\r\n *\r\n * Virtualization caveats:\r\n * - rowFlashId only fires when the target row is in the current window.\r\n * For confirmations that survive scroll, use a Toast.\r\n * - Sort + filter cost is host-side.\r\n *\r\n * A11y (DG-V1): the table advertises aria-rowcount over the FULL dataset while\r\n * only the windowed rows are in the DOM, so every rendered row carries an\r\n * explicit aria-rowindex (header = 1, data row = virtualItem.index + 2) so SR\r\n * users hear their true position. aria-hidden spacer rows stay unindexed.\r\n * DG-2: the resize grip is a focusable role=\"separator\" (tabIndex 0,\r\n * aria-valuenow/valuemin) operable by pointer AND keyboard (Arrow / Home).\r\n * DG-R1: reorderable columns expose a hover/focus-revealed grip button\r\n * (aria-keyshortcuts Arrow/Home/End → useColumnReorder.handleKeyDown) so column\r\n * reorder is keyboard-operable, not drag-only; focus follows the moved column.\r\n */\r\n\r\n/** Row-height density tiers for the virtualizer — a distinct, wider set than\r\n * the canonical 2-tier Density (which governs table cell padding). */\r\nexport type DataGridVirtualizedDensity =\r\n | \"spacious\"\r\n | \"comfortable\"\r\n | \"compact\"\r\n | \"ultraCompact\";\r\n\r\nexport interface DataGridVirtualizedProps<T> {\r\n rows?: T[] | undefined;\r\n columns: DataGridColumn<T>[];\r\n loading?: boolean | undefined;\r\n /** Any truthy value switches the grid to its error branch. */\r\n error?: unknown;\r\n sort?: SortDescriptor[] | undefined;\r\n onSortChange?: React.Dispatch<React.SetStateAction<SortDescriptor[]>> | undefined;\r\n selection?: Set<RowId> | RowId[] | undefined;\r\n onSelectionChange?: ((selection: Set<RowId>) => void) | undefined;\r\n pagination?: DataGridPagination | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n filteredEmptyState?: React.ReactNode | undefined;\r\n errorState?: React.ReactNode | undefined;\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n onRowClick?: ((row: T) => void) | undefined;\r\n rowFlashId?: RowId | undefined;\r\n filtered?: boolean | undefined;\r\n density?: DataGridVirtualizedDensity | undefined;\r\n ariaLabel?: string | undefined;\r\n locale?: string | undefined;\r\n labels?: DataGridLabels | undefined;\r\n maxBodyHeight?: number | string | undefined;\r\n /** Uniform row height in px (overrides the density default). */\r\n rowHeight?: number | undefined;\r\n /** Rows rendered beyond the visible window on each side. */\r\n overscan?: number | undefined;\r\n resizable?: boolean | undefined;\r\n columnWidths?: Record<string, number> | undefined;\r\n onColumnWidthsChange?: ((widths: Record<string, number>) => void) | undefined;\r\n reorderable?: boolean | undefined;\r\n columnOrder?: string[] | undefined;\r\n onColumnOrderChange?: ((order: string[]) => void) | undefined;\r\n}\r\n\r\n/** Default row height by density tier. */\r\nconst DEFAULT_ROW_HEIGHT_BY_DENSITY: Record<DataGridVirtualizedDensity, number> =\r\n Object.freeze({\r\n spacious: density.spacious.row, // 56\r\n comfortable: density.comfortable.row, // 44\r\n compact: density.compact.row, // 36\r\n ultraCompact: density.ultraCompact.row, // 28\r\n });\r\n\r\nconst PADDING_CELL_SX = Object.freeze({ padding: 0, border: 0 });\r\n\r\n/* DG-R1 — reorder grip button. Hidden (opacity 0) until the header is hovered /\r\n * focus-within, and always revealed while itself focus-visible so it stays\r\n * Tab-reachable. Absolutely positioned in the header cell's inline-start\r\n * padding; background matches the header so it masks the sliver it overlaps. */\r\nconst REORDER_GRIP_SX = Object.freeze({\r\n position: \"absolute\",\r\n insetInlineStart: 2,\r\n top: \"50%\",\r\n transform: \"translateY(-50%)\",\r\n zIndex: 2,\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n width: 18,\r\n height: 18,\r\n padding: 0,\r\n border: \"none\",\r\n borderRadius: \"var(--r-sm)\",\r\n background: \"var(--bg-subtle)\",\r\n color: \"var(--fg-subtle)\",\r\n cursor: \"grab\",\r\n opacity: 0,\r\n pointerEvents: \"none\",\r\n transition: \"opacity var(--duration-fast, 120ms) ease\",\r\n fontFamily: \"inherit\",\r\n \"th:hover &, th:focus-within &\": { opacity: 1, pointerEvents: \"auto\" },\r\n \"@media (pointer: coarse)\": { opacity: 1, pointerEvents: \"auto\" },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"-1px\",\r\n opacity: 1,\r\n pointerEvents: \"auto\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\n/* Default value accessor for an unconstrained row type — typed against\r\n * `unknown` so the single assertion is legal (mirrors DataGrid). */\r\nfunction readCellValue(row: unknown, key: string): unknown {\r\n return (row as Record<string, unknown>)[key];\r\n}\r\n\r\n/* Default getRowId (`(r) => r.id`); `(unknown) => RowId` is assignable to\r\n * the declared `(row: T) => RowId` by parameter contravariance. */\r\nconst defaultGetRowId = (row: unknown): RowId => (row as { id: RowId }).id;\r\n\r\nfunction DataGridVirtualized<T>({\r\n rows = [],\r\n columns: rawColumns = [],\r\n loading = false,\r\n error = null,\r\n sort = [],\r\n onSortChange,\r\n selection,\r\n onSelectionChange,\r\n pagination,\r\n emptyState,\r\n filteredEmptyState,\r\n errorState,\r\n getRowId = defaultGetRowId,\r\n onRowClick,\r\n rowFlashId,\r\n filtered = false,\r\n density: densityProp = \"comfortable\",\r\n ariaLabel,\r\n locale = \"fr-FR\",\r\n labels,\r\n maxBodyHeight = DEFAULT_MAX_BODY_HEIGHT,\r\n // Virtualization\r\n rowHeight,\r\n overscan = 10,\r\n // Resize\r\n resizable = false,\r\n columnWidths,\r\n onColumnWidthsChange,\r\n // Reorder\r\n reorderable = false,\r\n columnOrder,\r\n onColumnOrderChange,\r\n}: DataGridVirtualizedProps<T>) {\r\n const L = React.useMemo(() => mergeLabels(labels), [labels]);\r\n const tableAria = ariaLabel != null ? ariaLabel : L.tableAria;\r\n\r\n const showSkeleton = useDelayedFlag(loading);\r\n\r\n useColumnsStabilityWarn(rawColumns);\r\n\r\n // Apply host-supplied column order (defensive, see _dataGridShared).\r\n const columns = React.useMemo(\r\n () => applyColumnOrder(rawColumns, columnOrder),\r\n [rawColumns, columnOrder]\r\n );\r\n\r\n // Resize + reorder hooks. Cross-coupled via resizeIsActive.\r\n const resize = useColumnResize(columnWidths, onColumnWidthsChange);\r\n const reorder = useColumnReorder(columns, columnOrder, onColumnOrderChange, {\r\n resizeIsActive: resize.isResizing,\r\n });\r\n\r\n // DG-R1 — after a keyboard reorder the moved column's grip is re-rendered at\r\n // a new position and the browser drops focus; re-focus it so repeated Arrow\r\n // presses keep moving the same column. Keyed on the host-controlled order.\r\n const pendingReorderFocusRef = React.useRef<string | null>(null);\r\n React.useEffect(() => {\r\n const key = pendingReorderFocusRef.current;\r\n if (!key || typeof document === \"undefined\") return;\r\n pendingReorderFocusRef.current = null;\r\n const escaped =\r\n typeof window !== \"undefined\" &&\r\n window.CSS &&\r\n typeof window.CSS.escape === \"function\"\r\n ? window.CSS.escape(key)\r\n : key;\r\n const el = document.querySelector(`[data-reorder-grip=\"${escaped}\"]`);\r\n if (el instanceof HTMLElement) el.focus();\r\n }, [columnOrder]);\r\n\r\n // Effective row height: prop wins, otherwise density default.\r\n const effectiveRowHeight =\r\n rowHeight ??\r\n DEFAULT_ROW_HEIGHT_BY_DENSITY[densityProp] ??\r\n DEFAULT_ROW_HEIGHT_BY_DENSITY.comfortable;\r\n\r\n const showCheckbox = !!onSelectionChange;\r\n const colCount = columns.length + (showCheckbox ? 1 : 0);\r\n\r\n const sortable = (col: DataGridColumn<T>): boolean =>\r\n col.sortable !== false && !!col.key && !!onSortChange;\r\n\r\n const selectedSet = React.useMemo(\r\n () => (selection instanceof Set ? selection : new Set(selection || [])),\r\n [selection]\r\n );\r\n const allSelected =\r\n rows.length > 0 && rows.every((r) => selectedSet.has(getRowId(r)));\r\n const someSelected =\r\n !allSelected && rows.some((r) => selectedSet.has(getRowId(r)));\r\n\r\n const toggleAll = () => {\r\n if (!onSelectionChange) return;\r\n if (allSelected) onSelectionChange(new Set<RowId>());\r\n else onSelectionChange(new Set(rows.map(getRowId)));\r\n };\r\n const toggleRow = (id: RowId) => {\r\n if (!onSelectionChange) return;\r\n const next = new Set(selectedSet);\r\n if (next.has(id)) next.delete(id);\r\n else next.add(id);\r\n onSelectionChange(next);\r\n };\r\n\r\n const handleRowKeyDown =\r\n (row: T) => (e: React.KeyboardEvent<HTMLElement>) => {\r\n if (!onRowClick) return;\r\n if (e.key === \"Enter\" || e.key === \" \") {\r\n e.preventDefault();\r\n onRowClick(row);\r\n }\r\n };\r\n\r\n const scrollRef = React.useRef<HTMLDivElement>(null);\r\n\r\n const virtualizer = useVirtualizer({\r\n count: rows.length,\r\n getScrollElement: () => scrollRef.current,\r\n estimateSize: () => effectiveRowHeight,\r\n overscan,\r\n });\r\n\r\n const virtualItems = virtualizer.getVirtualItems();\r\n const totalSize = virtualizer.getTotalSize();\r\n const firstItem = virtualItems[0];\r\n const lastItem = virtualItems[virtualItems.length - 1];\r\n const paddingTop = firstItem ? firstItem.start : 0;\r\n const paddingBottom = lastItem ? totalSize - lastItem.end : 0;\r\n\r\n const scrollContainerSx = React.useMemo<SxProps<Theme>>(\r\n () => ({ overflow: \"auto\", maxHeight: maxBodyHeight }),\r\n [maxBodyHeight]\r\n );\r\n // TABLE_BY_DENSITY is keyed by the 2-tier Density; map the wider tier down\r\n // (matches the JS `TABLE_BY_DENSITY[dp] || .comfortable` fallback).\r\n const tableDensityKey: Density =\r\n densityProp === \"compact\" ? \"compact\" : \"comfortable\";\r\n const tableSx = TABLE_BY_DENSITY[tableDensityKey];\r\n\r\n // ── Body branches ──────────────────────────────────────────────\r\n let body: React.ReactNode;\r\n if (showSkeleton) {\r\n body = (\r\n <TableBody aria-busy=\"true\">\r\n {Array.from({ length: 6 }, (_, i) => (\r\n <SkeletonRow\r\n key={`sk-${i}`}\r\n cols={columns.length}\r\n withCheckbox={showCheckbox}\r\n withActions={false}\r\n />\r\n ))}\r\n </TableBody>\r\n );\r\n } else if (error) {\r\n body = (\r\n <TableBody>\r\n <TableRow>\r\n <TableCell colSpan={colCount} sx={ERROR_CELL_SX}>\r\n <Box sx={ERROR_INNER_SX}>{errorState}</Box>\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n );\r\n } else if (rows.length === 0) {\r\n body = (\r\n <TableBody aria-busy={loading || undefined}>\r\n <TableRow>\r\n <TableCell colSpan={colCount} sx={ERROR_CELL_SX}>\r\n <Box sx={ERROR_INNER_SX}>\r\n {filtered ? filteredEmptyState : emptyState}\r\n </Box>\r\n </TableCell>\r\n </TableRow>\r\n </TableBody>\r\n );\r\n } else {\r\n body = (\r\n <TableBody aria-busy={loading || undefined}>\r\n {paddingTop > 0 && (\r\n <TableRow aria-hidden=\"true\" style={{ height: paddingTop }}>\r\n <TableCell colSpan={colCount} sx={PADDING_CELL_SX} />\r\n </TableRow>\r\n )}\r\n {virtualItems.map((virtualItem) => {\r\n const row = rows[virtualItem.index];\r\n if (!row) return null;\r\n const id = getRowId(row);\r\n const isSelected = selectedSet.has(id);\r\n const flash = rowFlashId === id;\r\n const clickable = !!onRowClick;\r\n return (\r\n <TableRow\r\n key={virtualItem.key}\r\n data-index={virtualItem.index}\r\n aria-rowindex={virtualItem.index + 2}\r\n hover\r\n data-selected={isSelected || undefined}\r\n className={flash ? \"pui-row-updated\" : undefined}\r\n onClick={clickable ? () => onRowClick?.(row) : undefined}\r\n onKeyDown={clickable ? handleRowKeyDown(row) : undefined}\r\n tabIndex={clickable ? 0 : undefined}\r\n style={{ height: virtualItem.size }}\r\n sx={clickable ? ROW_CLICKABLE_SX : ROW_STATIC_SX}\r\n >\r\n {showCheckbox && (\r\n <TableCell padding=\"checkbox\" sx={BODY_CHECKBOX_CELL_SX}>\r\n <Checkbox\r\n size=\"small\"\r\n checked={isSelected}\r\n onChange={(e) => {\r\n e.stopPropagation();\r\n toggleRow(id);\r\n }}\r\n onClick={(e) => e.stopPropagation()}\r\n onKeyDown={(e) => e.stopPropagation()}\r\n slotProps={{ input: { \"aria-label\": L.selectRow(id) } }}\r\n />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const value = col.getValue\r\n ? col.getValue(row)\r\n : readCellValue(row, col.key);\r\n const effectiveWidth =\r\n (resize.liveWidths && resize.liveWidths[col.key]) ??\r\n col.width;\r\n // --text-body (14px) — was `var(--text-fs)`, a token typo\r\n // with no fallback; making the inheritance explicit preserves\r\n // the rendering while removing the dangling reference.\r\n const cellSx: SxProps<Theme> = {\r\n fontSize: \"var(--text-body)\",\r\n whiteSpace: col.wrap ? \"normal\" : \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n ...(col.mono ? { fontFamily: \"var(--font-mono)\" } : {}),\r\n ...(col.numeric || col.mono\r\n ? { fontVariantNumeric: \"tabular-nums\" }\r\n : {}),\r\n ...(effectiveWidth != null ? { width: effectiveWidth } : {}),\r\n ...(col.maxWidth != null ? { maxWidth: col.maxWidth } : {}),\r\n };\r\n return (\r\n <TableCell\r\n key={col.key}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n sx={cellSx}\r\n >\r\n {col.render\r\n ? col.render(row)\r\n : (value as React.ReactNode) ?? \"—\"}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n );\r\n })}\r\n {paddingBottom > 0 && (\r\n <TableRow aria-hidden=\"true\" style={{ height: paddingBottom }}>\r\n <TableCell colSpan={colCount} sx={PADDING_CELL_SX} />\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n );\r\n }\r\n\r\n return (\r\n <Box sx={CONTAINER_SX}>\r\n <Box ref={scrollRef} sx={scrollContainerSx}>\r\n <Table\r\n aria-label={tableAria}\r\n aria-rowcount={rows.length ? rows.length + 1 : undefined}\r\n size={densityProp === \"compact\" ? \"small\" : \"medium\"}\r\n stickyHeader\r\n sx={tableSx}\r\n >\r\n <TableHead>\r\n <TableRow aria-rowindex={1}>\r\n {showCheckbox && (\r\n <TableCell padding=\"checkbox\" sx={HEADER_CHECKBOX_CELL_SX}>\r\n <Checkbox\r\n size=\"small\"\r\n checked={allSelected}\r\n indeterminate={someSelected}\r\n onChange={toggleAll}\r\n slotProps={{ input: { \"aria-label\": L.selectAll } }}\r\n />\r\n </TableCell>\r\n )}\r\n {columns.map((col) => {\r\n const isSortable = sortable(col);\r\n const isResizable = resizable && col.resizable !== false;\r\n const isReorderable = reorderable && col.reorderable !== false;\r\n const ariaSort = isSortable\r\n ? getAriaSort(sort, col.key)\r\n : undefined;\r\n const effectiveWidth =\r\n (resize.liveWidths && resize.liveWidths[col.key]) ??\r\n col.width;\r\n const reorderHandlers = isReorderable\r\n ? reorder.cellHandlers(col.key)\r\n : null;\r\n const reorderFeedbackSx = isReorderable\r\n ? reorder.cellSx(col.key)\r\n : undefined;\r\n return (\r\n <TableCell\r\n key={col.key}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n aria-sort={ariaSort}\r\n {...(reorderHandlers || {})}\r\n sx={{\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n ...(effectiveWidth != null\r\n ? { width: effectiveWidth }\r\n : {}),\r\n ...(reorderFeedbackSx\r\n ? (reorderFeedbackSx as SystemStyleObject<Theme>)\r\n : {}),\r\n }}\r\n >\r\n {isSortable && onSortChange ? (\r\n <SortableHeader\r\n sortKey={col.key}\r\n sort={sort}\r\n setSort={onSortChange}\r\n align={col.align || (col.numeric ? \"right\" : \"left\")}\r\n >\r\n {col.header}\r\n </SortableHeader>\r\n ) : (\r\n col.header\r\n )}\r\n\r\n {isReorderable && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n data-reorder-grip={col.key}\r\n aria-label=\"Réorganiser la colonne\"\r\n aria-keyshortcuts=\"ArrowLeft ArrowRight Home End\"\r\n onKeyDown={(e) => {\r\n if (\r\n e.key === \"ArrowLeft\" ||\r\n e.key === \"ArrowRight\" ||\r\n e.key === \"Home\" ||\r\n e.key === \"End\"\r\n ) {\r\n pendingReorderFocusRef.current = col.key;\r\n }\r\n reorder.handleKeyDown(col.key)(e);\r\n }}\r\n sx={REORDER_GRIP_SX}\r\n >\r\n <DragIndicatorIcon sx={{ fontSize: 14 }} />\r\n </Box>\r\n )}\r\n\r\n {isResizable && (\r\n <Box\r\n role=\"separator\"\r\n aria-orientation=\"vertical\"\r\n aria-label=\"Redimensionner la colonne\"\r\n tabIndex={0}\r\n aria-valuenow={\r\n typeof effectiveWidth === \"number\"\r\n ? Math.round(effectiveWidth)\r\n : undefined\r\n }\r\n aria-valuemin={resize.minWidth}\r\n draggable=\"false\"\r\n onMouseDown={resize.handleMouseDown(col.key)}\r\n onKeyDown={resize.handleKeyDown(col.key)}\r\n sx={{\r\n position: \"absolute\",\r\n top: 0,\r\n insetInlineEnd: 0,\r\n width: 8,\r\n height: \"100%\",\r\n cursor: \"col-resize\",\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n zIndex: 2,\r\n \"&:hover\": {\r\n background: \"var(--state-hover-overlay)\",\r\n },\r\n \"&:active\": {\r\n background: \"var(--state-pressed-overlay)\",\r\n },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"-1px\",\r\n background: \"var(--state-hover-overlay)\",\r\n },\r\n }}\r\n />\r\n )}\r\n </TableCell>\r\n );\r\n })}\r\n </TableRow>\r\n </TableHead>\r\n {body}\r\n </Table>\r\n </Box>\r\n {pagination && (\r\n <Pagination\r\n {...pagination}\r\n loading={loading}\r\n locale={locale}\r\n labels={L.pagination}\r\n />\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default DataGridVirtualized;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,9 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
1
  import * as React from "react";
8
2
  import ConfirmDialog from "../components/ConfirmDialog";
9
3
 
@@ -36,35 +30,37 @@ import ConfirmDialog from "../components/ConfirmDialog";
36
30
  * Charter R-5.1 + §09.3 + R-M.*. WCAG 2.4.7 (focus visible — inherited from Modal).
37
31
  */
38
32
  import { jsx as _jsx } from "react/jsx-runtime";
39
- function DeleteResourceConfirmDialog(_ref) {
40
- var isOpen = _ref.isOpen,
41
- onClose = _ref.onClose,
42
- onDelete = _ref.onDelete,
43
- title = _ref.title,
44
- description = _ref.description,
45
- impact = _ref.impact,
46
- _ref$confirmLabel = _ref.confirmLabel,
47
- confirmLabel = _ref$confirmLabel === void 0 ? "Confirmer" : _ref$confirmLabel,
48
- _ref$cancelLabel = _ref.cancelLabel,
49
- cancelLabel = _ref$cancelLabel === void 0 ? "Annuler" : _ref$cancelLabel,
50
- _ref$loading = _ref.loading,
51
- loading = _ref$loading === void 0 ? false : _ref$loading;
52
- return /*#__PURE__*/_jsx(ConfirmDialog, _objectSpread(_objectSpread(_objectSpread(_objectSpread({
33
+ function DeleteResourceConfirmDialog({
34
+ isOpen,
35
+ onClose,
36
+ onDelete,
37
+ title,
38
+ description,
39
+ impact,
40
+ confirmLabel = "Confirmer",
41
+ cancelLabel = "Annuler",
42
+ loading = false
43
+ }) {
44
+ return /*#__PURE__*/_jsx(ConfirmDialog, {
53
45
  title: title,
54
46
  description: description,
55
47
  cancelLabel: cancelLabel,
56
48
  confirmLabel: confirmLabel,
57
49
  confirmVariant: "danger",
58
- loading: loading
59
- }, isOpen !== undefined ? {
60
- open: isOpen
61
- } : {}), onClose !== undefined ? {
62
- onClose: onClose
63
- } : {}), onDelete !== undefined ? {
64
- onConfirm: onDelete
65
- } : {}), impact !== undefined ? {
66
- impact: impact
67
- } : {}));
50
+ loading: loading,
51
+ ...(isOpen !== undefined ? {
52
+ open: isOpen
53
+ } : {}),
54
+ ...(onClose !== undefined ? {
55
+ onClose
56
+ } : {}),
57
+ ...(onDelete !== undefined ? {
58
+ onConfirm: onDelete
59
+ } : {}),
60
+ ...(impact !== undefined ? {
61
+ impact
62
+ } : {})
63
+ });
68
64
  }
69
65
  export default DeleteResourceConfirmDialog;
70
66
  //# sourceMappingURL=DeleteResourceConfirmDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteResourceConfirmDialog.js","names":["React","ConfirmDialog","jsx","_jsx","DeleteResourceConfirmDialog","_ref","isOpen","onClose","onDelete","title","description","impact","_ref$confirmLabel","confirmLabel","_ref$cancelLabel","cancelLabel","_ref$loading","loading","_objectSpread","confirmVariant","undefined","open","onConfirm"],"sources":["../../../../src/lib/v2/patterns/DeleteResourceConfirmDialog.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ConfirmDialog from \"../components/ConfirmDialog\";\r\n\r\n/**\r\n * DeleteResourceConfirmDialog — Portnet UI v2\r\n *\r\n * Opinionated wrapper over v2.ConfirmDialog for irreversible delete actions\r\n * across the design system. Hard-wires the \"danger\" variant (Charter §09.3 —\r\n * the only correct choice for a destructive irreversible action) and sensible\r\n * FR defaults for the button labels.\r\n *\r\n * The prop names `isOpen` / `onDelete` are deliberately chosen over\r\n * v2.ConfirmDialog's `open` / `onConfirm` because call sites read more\r\n * naturally with action-specific verbs — every host-module audit converged on\r\n * this naming and the wrapper formalises it as the destructive-action\r\n * convention.\r\n *\r\n * <DeleteResourceConfirmDialog\r\n * isOpen // bool, REQUIRED\r\n * onClose // () => void, REQUIRED\r\n * onDelete // () => void, REQUIRED — fires on confirm\r\n * title // node, REQUIRED — surfaces the resource type\r\n * description? // node — single-sentence consequence\r\n * impact? // node[] — bullet-list of side effects (Charter R-5.1)\r\n * confirmLabel? // node, default \"Confirmer\"\r\n * cancelLabel? // node, default \"Annuler\"\r\n * loading? // bool — disables both buttons + spinner on confirm\r\n * />\r\n *\r\n * Charter R-5.1 + §09.3 + R-M.*. WCAG 2.4.7 (focus visible — inherited from Modal).\r\n */\r\n\r\ntype ConfirmDialogProps = React.ComponentProps<typeof ConfirmDialog>;\r\n\r\nexport interface DeleteResourceConfirmDialogProps {\r\n isOpen: ConfirmDialogProps[\"open\"];\r\n onClose: ConfirmDialogProps[\"onClose\"];\r\n /** Fires on confirm (maps to ConfirmDialog's onConfirm). */\r\n onDelete: ConfirmDialogProps[\"onConfirm\"];\r\n title: ConfirmDialogProps[\"title\"];\r\n description?: ConfirmDialogProps[\"description\"] | undefined;\r\n impact?: ConfirmDialogProps[\"impact\"] | undefined;\r\n confirmLabel?: ConfirmDialogProps[\"confirmLabel\"] | undefined;\r\n cancelLabel?: ConfirmDialogProps[\"cancelLabel\"] | undefined;\r\n loading?: ConfirmDialogProps[\"loading\"] | undefined;\r\n}\r\n\r\nfunction DeleteResourceConfirmDialog({\r\n isOpen,\r\n onClose,\r\n onDelete,\r\n title,\r\n description,\r\n impact,\r\n confirmLabel = \"Confirmer\",\r\n cancelLabel = \"Annuler\",\r\n loading = false,\r\n}: DeleteResourceConfirmDialogProps) {\r\n return (\r\n <ConfirmDialog\r\n title={title}\r\n description={description}\r\n cancelLabel={cancelLabel}\r\n confirmLabel={confirmLabel}\r\n confirmVariant=\"danger\"\r\n loading={loading}\r\n {...(isOpen !== undefined ? { open: isOpen } : {})}\r\n {...(onClose !== undefined ? { onClose } : {})}\r\n {...(onDelete !== undefined ? { onConfirm: onDelete } : {})}\r\n {...(impact !== undefined ? { impact } : {})}\r\n />\r\n );\r\n}\r\n\r\nexport default DeleteResourceConfirmDialog;\r\n"],"mappings":";;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,aAAa,MAAM,6BAA6B;;AAEvD;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;AA3BA,SAAAC,GAAA,IAAAC,IAAA;AA4CA,SAASC,2BAA2BA,CAAAC,IAAA,EAUC;EAAA,IATnCC,MAAM,GAAAD,IAAA,CAANC,MAAM;IACNC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IACPC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,KAAK,GAAAJ,IAAA,CAALI,KAAK;IACLC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IACXC,MAAM,GAAAN,IAAA,CAANM,MAAM;IAAAC,iBAAA,GAAAP,IAAA,CACNQ,YAAY;IAAZA,YAAY,GAAAD,iBAAA,cAAG,WAAW,GAAAA,iBAAA;IAAAE,gBAAA,GAAAT,IAAA,CAC1BU,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,SAAS,GAAAA,gBAAA;IAAAE,YAAA,GAAAX,IAAA,CACvBY,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,KAAK,GAAAA,YAAA;EAEf,oBACEb,IAAA,CAACF,aAAa,EAAAiB,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA;IACZT,KAAK,EAAEA,KAAM;IACbC,WAAW,EAAEA,WAAY;IACzBK,WAAW,EAAEA,WAAY;IACzBF,YAAY,EAAEA,YAAa;IAC3BM,cAAc,EAAC,QAAQ;IACvBF,OAAO,EAAEA;EAAQ,GACZX,MAAM,KAAKc,SAAS,GAAG;IAAEC,IAAI,EAAEf;EAAO,CAAC,GAAG,CAAC,CAAC,GAC5CC,OAAO,KAAKa,SAAS,GAAG;IAAEb,OAAO,EAAPA;EAAQ,CAAC,GAAG,CAAC,CAAC,GACxCC,QAAQ,KAAKY,SAAS,GAAG;IAAEE,SAAS,EAAEd;EAAS,CAAC,GAAG,CAAC,CAAC,GACrDG,MAAM,KAAKS,SAAS,GAAG;IAAET,MAAM,EAANA;EAAO,CAAC,GAAG,CAAC,CAAC,CAC5C,CAAC;AAEN;AAEA,eAAeP,2BAA2B","ignoreList":[]}
1
+ {"version":3,"file":"DeleteResourceConfirmDialog.js","names":["React","ConfirmDialog","jsx","_jsx","DeleteResourceConfirmDialog","isOpen","onClose","onDelete","title","description","impact","confirmLabel","cancelLabel","loading","confirmVariant","undefined","open","onConfirm"],"sources":["../../../../src/lib/v2/patterns/DeleteResourceConfirmDialog.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport ConfirmDialog from \"../components/ConfirmDialog\";\r\n\r\n/**\r\n * DeleteResourceConfirmDialog — Portnet UI v2\r\n *\r\n * Opinionated wrapper over v2.ConfirmDialog for irreversible delete actions\r\n * across the design system. Hard-wires the \"danger\" variant (Charter §09.3 —\r\n * the only correct choice for a destructive irreversible action) and sensible\r\n * FR defaults for the button labels.\r\n *\r\n * The prop names `isOpen` / `onDelete` are deliberately chosen over\r\n * v2.ConfirmDialog's `open` / `onConfirm` because call sites read more\r\n * naturally with action-specific verbs — every host-module audit converged on\r\n * this naming and the wrapper formalises it as the destructive-action\r\n * convention.\r\n *\r\n * <DeleteResourceConfirmDialog\r\n * isOpen // bool, REQUIRED\r\n * onClose // () => void, REQUIRED\r\n * onDelete // () => void, REQUIRED — fires on confirm\r\n * title // node, REQUIRED — surfaces the resource type\r\n * description? // node — single-sentence consequence\r\n * impact? // node[] — bullet-list of side effects (Charter R-5.1)\r\n * confirmLabel? // node, default \"Confirmer\"\r\n * cancelLabel? // node, default \"Annuler\"\r\n * loading? // bool — disables both buttons + spinner on confirm\r\n * />\r\n *\r\n * Charter R-5.1 + §09.3 + R-M.*. WCAG 2.4.7 (focus visible — inherited from Modal).\r\n */\r\n\r\ntype ConfirmDialogProps = React.ComponentProps<typeof ConfirmDialog>;\r\n\r\nexport interface DeleteResourceConfirmDialogProps {\r\n isOpen: ConfirmDialogProps[\"open\"];\r\n onClose: ConfirmDialogProps[\"onClose\"];\r\n /** Fires on confirm (maps to ConfirmDialog's onConfirm). */\r\n onDelete: ConfirmDialogProps[\"onConfirm\"];\r\n title: ConfirmDialogProps[\"title\"];\r\n description?: ConfirmDialogProps[\"description\"] | undefined;\r\n impact?: ConfirmDialogProps[\"impact\"] | undefined;\r\n confirmLabel?: ConfirmDialogProps[\"confirmLabel\"] | undefined;\r\n cancelLabel?: ConfirmDialogProps[\"cancelLabel\"] | undefined;\r\n loading?: ConfirmDialogProps[\"loading\"] | undefined;\r\n}\r\n\r\nfunction DeleteResourceConfirmDialog({\r\n isOpen,\r\n onClose,\r\n onDelete,\r\n title,\r\n description,\r\n impact,\r\n confirmLabel = \"Confirmer\",\r\n cancelLabel = \"Annuler\",\r\n loading = false,\r\n}: DeleteResourceConfirmDialogProps) {\r\n return (\r\n <ConfirmDialog\r\n title={title}\r\n description={description}\r\n cancelLabel={cancelLabel}\r\n confirmLabel={confirmLabel}\r\n confirmVariant=\"danger\"\r\n loading={loading}\r\n {...(isOpen !== undefined ? { open: isOpen } : {})}\r\n {...(onClose !== undefined ? { onClose } : {})}\r\n {...(onDelete !== undefined ? { onConfirm: onDelete } : {})}\r\n {...(impact !== undefined ? { impact } : {})}\r\n />\r\n );\r\n}\r\n\r\nexport default DeleteResourceConfirmDialog;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,aAAa,MAAM,6BAA6B;;AAEvD;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;AA3BA,SAAAC,GAAA,IAAAC,IAAA;AA4CA,SAASC,2BAA2BA,CAAC;EACnCC,MAAM;EACNC,OAAO;EACPC,QAAQ;EACRC,KAAK;EACLC,WAAW;EACXC,MAAM;EACNC,YAAY,GAAG,WAAW;EAC1BC,WAAW,GAAG,SAAS;EACvBC,OAAO,GAAG;AACsB,CAAC,EAAE;EACnC,oBACEV,IAAA,CAACF,aAAa;IACZO,KAAK,EAAEA,KAAM;IACbC,WAAW,EAAEA,WAAY;IACzBG,WAAW,EAAEA,WAAY;IACzBD,YAAY,EAAEA,YAAa;IAC3BG,cAAc,EAAC,QAAQ;IACvBD,OAAO,EAAEA,OAAQ;IAAA,IACZR,MAAM,KAAKU,SAAS,GAAG;MAAEC,IAAI,EAAEX;IAAO,CAAC,GAAG,CAAC,CAAC;IAAA,IAC5CC,OAAO,KAAKS,SAAS,GAAG;MAAET;IAAQ,CAAC,GAAG,CAAC,CAAC;IAAA,IACxCC,QAAQ,KAAKQ,SAAS,GAAG;MAAEE,SAAS,EAAEV;IAAS,CAAC,GAAG,CAAC,CAAC;IAAA,IACrDG,MAAM,KAAKK,SAAS,GAAG;MAAEL;IAAO,CAAC,GAAG,CAAC,CAAC;EAAA,CAC5C,CAAC;AAEN;AAEA,eAAeN,2BAA2B","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ import * as React from "react";
2
+ import Box from "@mui/material/Box";
3
+ import { layout } from "../tokens";
4
+
5
+ /**
6
+ * DetailSplit — Portnet UI v2 (pattern)
7
+ *
8
+ * Charter §07 R-L.7 · Platform Mandatory UX Patterns §Detail /
9
+ * Consultation — Vertical Progress.
10
+ *
11
+ * The canonical consultation skeleton: the record on the left, the
12
+ * progression rail on the right. Both halves are MUST on every detail
13
+ * page of the platform ("Display progression on the right side"), and
14
+ * the library shipped the rail itself (`VStepper`) but not the geometry
15
+ * that places it — so every host wrote the same three-value flex row by
16
+ * hand.
17
+ *
18
+ * Promoted from `refonte-frontend` (Area 4), where it appeared TWICE —
19
+ * `DetailPage` and `TraitementDemande` — as:
20
+ *
21
+ * <div style={{ display: "flex", gap: "var(--s-4)",
22
+ * alignItems: "flex-start", flexWrap: "wrap" }}>
23
+ * <div style={{ flex: "1 1 560px", minWidth: 0 }}>…</div>
24
+ * <aside style={{ flex: "0 1 300px", minWidth: 260 }}>…</aside>
25
+ * </div>
26
+ *
27
+ * Three magic widths per copy (R-2.3), and nothing keeping the two
28
+ * screens agreeing — they had already drifted on the `<aside>` carrying
29
+ * no accessible name. The widths now come from `tokens.layout.detail`.
30
+ *
31
+ * REFLOW WITHOUT A MEDIA QUERY. `flexWrap: "wrap"` plus the two
32
+ * flex-bases is the whole responsive strategy: as soon as the container
33
+ * cannot seat `mainMin + aside`, the rail drops BELOW the content at full
34
+ * width. No breakpoint, no `useMediaQuery`, and correct at any CONTAINER
35
+ * width rather than at viewport widths only (WCAG 1.4.10).
36
+ * `minWidth: 0` on the content column is load-bearing — without it a
37
+ * wide child (a DataGrid, a long mono value) refuses to shrink and
38
+ * overflows the viewport instead of wrapping.
39
+ *
40
+ * The rail renders as a real `<aside>` (complementary landmark). Pass
41
+ * `asideLabel` whenever the page has more than one complementary region,
42
+ * or when the rail's own heading does not name it in a screen-reader
43
+ * landmark list (R-Ar.1).
44
+ *
45
+ * NO `Surface` IS IMPOSED ON EITHER HALF, deliberately. Hosts typically
46
+ * fill these slots with components that already compose `Surface`
47
+ * (`FormSection`, a detail card). Wrapping them again produces a card
48
+ * inside a card — one large white block swallowing the others, a defect
49
+ * this pattern's origin module had to fix at browser acceptance.
50
+ *
51
+ * Usage:
52
+ * import { DetailSplit, FormSection, VStepper } from "@portnet/ui";
53
+ *
54
+ * <DetailSplit
55
+ * asideLabel="Progression du dossier"
56
+ * aside={
57
+ * <FormSection title="Progression du dossier" cols="none">
58
+ * <VStepper items={etapes} ariaLabel="Progression du dossier" />
59
+ * </FormSection>
60
+ * }
61
+ * sx={{ marginBlockStart: "var(--s-4)" }}
62
+ * >
63
+ * <RecordCard … />
64
+ * </DetailSplit>
65
+ *
66
+ * With no `aside`, the content column simply grows to the full width —
67
+ * so a page whose rail is conditional needs no branch on the layout.
68
+ */
69
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
70
+ function DetailSplit({
71
+ children,
72
+ aside,
73
+ asideLabel,
74
+ gap,
75
+ sx
76
+ }) {
77
+ return /*#__PURE__*/_jsxs(Box, {
78
+ sx: {
79
+ display: "flex",
80
+ gap: gap ?? "var(--s-4)",
81
+ /* Columns of unequal height must not stretch: the rail keeps its
82
+ * own height instead of tracking the record's. */
83
+ alignItems: "flex-start",
84
+ /* The entire responsive strategy — see the header note. */
85
+ flexWrap: "wrap",
86
+ ...sx
87
+ },
88
+ children: [/*#__PURE__*/_jsx(Box, {
89
+ sx: {
90
+ flex: `1 1 ${layout.detail.mainMin}px`,
91
+ minWidth: 0
92
+ },
93
+ children: children
94
+ }), aside != null ? /*#__PURE__*/_jsx(Box, {
95
+ component: "aside",
96
+ ...(asideLabel !== undefined ? {
97
+ "aria-label": asideLabel
98
+ } : {}),
99
+ sx: {
100
+ flex: `0 1 ${layout.detail.aside}px`,
101
+ minWidth: layout.detail.asideMin
102
+ },
103
+ children: aside
104
+ }) : null]
105
+ });
106
+ }
107
+ export default DetailSplit;
108
+ //# sourceMappingURL=DetailSplit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DetailSplit.js","names":["React","Box","layout","jsx","_jsx","jsxs","_jsxs","DetailSplit","children","aside","asideLabel","gap","sx","display","alignItems","flexWrap","flex","detail","mainMin","minWidth","component","undefined","asideMin"],"sources":["../../../../src/lib/v2/patterns/DetailSplit.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\nimport { layout } from \"../tokens\";\r\n\r\n/**\r\n * DetailSplit — Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 R-L.7 · Platform Mandatory UX Patterns §Detail /\r\n * Consultation — Vertical Progress.\r\n *\r\n * The canonical consultation skeleton: the record on the left, the\r\n * progression rail on the right. Both halves are MUST on every detail\r\n * page of the platform (\"Display progression on the right side\"), and\r\n * the library shipped the rail itself (`VStepper`) but not the geometry\r\n * that places it — so every host wrote the same three-value flex row by\r\n * hand.\r\n *\r\n * Promoted from `refonte-frontend` (Area 4), where it appeared TWICE —\r\n * `DetailPage` and `TraitementDemande` — as:\r\n *\r\n * <div style={{ display: \"flex\", gap: \"var(--s-4)\",\r\n * alignItems: \"flex-start\", flexWrap: \"wrap\" }}>\r\n * <div style={{ flex: \"1 1 560px\", minWidth: 0 }}>…</div>\r\n * <aside style={{ flex: \"0 1 300px\", minWidth: 260 }}>…</aside>\r\n * </div>\r\n *\r\n * Three magic widths per copy (R-2.3), and nothing keeping the two\r\n * screens agreeing — they had already drifted on the `<aside>` carrying\r\n * no accessible name. The widths now come from `tokens.layout.detail`.\r\n *\r\n * REFLOW WITHOUT A MEDIA QUERY. `flexWrap: \"wrap\"` plus the two\r\n * flex-bases is the whole responsive strategy: as soon as the container\r\n * cannot seat `mainMin + aside`, the rail drops BELOW the content at full\r\n * width. No breakpoint, no `useMediaQuery`, and correct at any CONTAINER\r\n * width rather than at viewport widths only (WCAG 1.4.10).\r\n * `minWidth: 0` on the content column is load-bearing — without it a\r\n * wide child (a DataGrid, a long mono value) refuses to shrink and\r\n * overflows the viewport instead of wrapping.\r\n *\r\n * The rail renders as a real `<aside>` (complementary landmark). Pass\r\n * `asideLabel` whenever the page has more than one complementary region,\r\n * or when the rail's own heading does not name it in a screen-reader\r\n * landmark list (R-Ar.1).\r\n *\r\n * NO `Surface` IS IMPOSED ON EITHER HALF, deliberately. Hosts typically\r\n * fill these slots with components that already compose `Surface`\r\n * (`FormSection`, a detail card). Wrapping them again produces a card\r\n * inside a card — one large white block swallowing the others, a defect\r\n * this pattern's origin module had to fix at browser acceptance.\r\n *\r\n * Usage:\r\n * import { DetailSplit, FormSection, VStepper } from \"@portnet/ui\";\r\n *\r\n * <DetailSplit\r\n * asideLabel=\"Progression du dossier\"\r\n * aside={\r\n * <FormSection title=\"Progression du dossier\" cols=\"none\">\r\n * <VStepper items={etapes} ariaLabel=\"Progression du dossier\" />\r\n * </FormSection>\r\n * }\r\n * sx={{ marginBlockStart: \"var(--s-4)\" }}\r\n * >\r\n * <RecordCard … />\r\n * </DetailSplit>\r\n *\r\n * With no `aside`, the content column simply grows to the full width —\r\n * so a page whose rail is conditional needs no branch on the layout.\r\n */\r\n\r\nexport interface DetailSplitProps {\r\n /** Content column (left on desktop, first in DOM and reading order). */\r\n children?: React.ReactNode | undefined;\r\n /**\r\n * Right-hand rail — the progression stepper on a consultation page.\r\n * Omit it and the content column takes the full width.\r\n */\r\n aside?: React.ReactNode | undefined;\r\n /**\r\n * Accessible name of the `<aside>` landmark. Set it when the page has\r\n * several complementary regions.\r\n */\r\n asideLabel?: string | undefined;\r\n /** Gap between the two columns. @default var(--s-4) */\r\n gap?: string | undefined;\r\n /** MUI sx overrides applied to the row container. */\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction DetailSplit({\r\n children,\r\n aside,\r\n asideLabel,\r\n gap,\r\n sx,\r\n}: DetailSplitProps) {\r\n return (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: gap ?? \"var(--s-4)\",\r\n /* Columns of unequal height must not stretch: the rail keeps its\r\n * own height instead of tracking the record's. */\r\n alignItems: \"flex-start\",\r\n /* The entire responsive strategy — see the header note. */\r\n flexWrap: \"wrap\",\r\n ...(sx as SystemStyleObject<Theme>),\r\n }}\r\n >\r\n <Box sx={{ flex: `1 1 ${layout.detail.mainMin}px`, minWidth: 0 }}>\r\n {children}\r\n </Box>\r\n\r\n {aside != null ? (\r\n <Box\r\n component=\"aside\"\r\n {...(asideLabel !== undefined ? { \"aria-label\": asideLabel } : {})}\r\n sx={{\r\n flex: `0 1 ${layout.detail.aside}px`,\r\n minWidth: layout.detail.asideMin,\r\n }}\r\n >\r\n {aside}\r\n </Box>\r\n ) : null}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default DetailSplit;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AAGnC,SAASC,MAAM,QAAQ,WAAW;;AAElC;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;AA/DA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAoFA,SAASC,WAAWA,CAAC;EACnBC,QAAQ;EACRC,KAAK;EACLC,UAAU;EACVC,GAAG;EACHC;AACgB,CAAC,EAAE;EACnB,oBACEN,KAAA,CAACL,GAAG;IACFW,EAAE,EAAE;MACFC,OAAO,EAAE,MAAM;MACfF,GAAG,EAAEA,GAAG,IAAI,YAAY;MACxB;AACR;MACQG,UAAU,EAAE,YAAY;MACxB;MACAC,QAAQ,EAAE,MAAM;MAChB,GAAIH;IACN,CAAE;IAAAJ,QAAA,gBAEFJ,IAAA,CAACH,GAAG;MAACW,EAAE,EAAE;QAAEI,IAAI,EAAE,OAAOd,MAAM,CAACe,MAAM,CAACC,OAAO,IAAI;QAAEC,QAAQ,EAAE;MAAE,CAAE;MAAAX,QAAA,EAC9DA;IAAQ,CACN,CAAC,EAELC,KAAK,IAAI,IAAI,gBACZL,IAAA,CAACH,GAAG;MACFmB,SAAS,EAAC,OAAO;MAAA,IACZV,UAAU,KAAKW,SAAS,GAAG;QAAE,YAAY,EAAEX;MAAW,CAAC,GAAG,CAAC,CAAC;MACjEE,EAAE,EAAE;QACFI,IAAI,EAAE,OAAOd,MAAM,CAACe,MAAM,CAACR,KAAK,IAAI;QACpCU,QAAQ,EAAEjB,MAAM,CAACe,MAAM,CAACK;MAC1B,CAAE;MAAAd,QAAA,EAEDC;IAAK,CACH,CAAC,GACJ,IAAI;EAAA,CACL,CAAC;AAEV;AAEA,eAAeF,WAAW","ignoreList":[]}
@@ -1,9 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
1
  import * as React from "react";
8
2
  import Box from "@mui/material/Box";
9
3
  import RowFavoriteToggle, { DEFAULT_ROW_FAVORITE_LABELS } from "./RowFavoriteToggle";
@@ -55,12 +49,13 @@ import RowFavoriteToggle, { DEFAULT_ROW_FAVORITE_LABELS } from "./RowFavoriteTog
55
49
  * now render the same component, so desktop and mobile agree by construction.
56
50
  */
57
51
  import { jsx as _jsx } from "react/jsx-runtime";
58
- var DEFAULT_LABELS = Object.freeze(_objectSpread(_objectSpread({}, DEFAULT_ROW_FAVORITE_LABELS), {}, {
52
+ const DEFAULT_LABELS = Object.freeze({
53
+ ...DEFAULT_ROW_FAVORITE_LABELS,
59
54
  columnHeader: "Suivis"
60
- }));
55
+ });
61
56
 
62
57
  /** Visually hidden, but exposed to assistive tech (the column's accessible name). */
63
- var SR_ONLY_SX = Object.freeze({
58
+ const SR_ONLY_SX = Object.freeze({
64
59
  position: "absolute",
65
60
  width: "1px",
66
61
  height: "1px",
@@ -75,16 +70,19 @@ var SR_ONLY_SX = Object.freeze({
75
70
  * Builds a v2 DataGrid column definition for the compact follow-star column.
76
71
  */
77
72
  export default function makeFavoriteColumn(options) {
78
- var opts = options;
79
- var resourceKey = opts.resourceKey;
80
- var getRowId = typeof opts.getRowId === "function" ? opts.getRowId : function defaultGetRowId(r) {
73
+ const opts = options;
74
+ const resourceKey = opts.resourceKey;
75
+ const getRowId = typeof opts.getRowId === "function" ? opts.getRowId : function defaultGetRowId(r) {
81
76
  return r.id;
82
77
  };
83
- var key = opts.key || "__favorite__";
84
- var size = opts.size || "sm";
85
- var width = opts.width != null ? opts.width : 44;
86
- var getRowLabel = typeof opts.getRowLabel === "function" ? opts.getRowLabel : null;
87
- var L = opts.labels ? _objectSpread(_objectSpread({}, DEFAULT_LABELS), opts.labels) : DEFAULT_LABELS;
78
+ const key = opts.key || "__favorite__";
79
+ const size = opts.size || "sm";
80
+ const width = opts.width != null ? opts.width : 44;
81
+ const getRowLabel = typeof opts.getRowLabel === "function" ? opts.getRowLabel : null;
82
+ const L = opts.labels ? {
83
+ ...DEFAULT_LABELS,
84
+ ...opts.labels
85
+ } : DEFAULT_LABELS;
88
86
  if (process.env["NODE_ENV"] !== "production" && !resourceKey) {
89
87
  // eslint-disable-next-line no-console
90
88
  console.warn("[@portnet/ui v2] makeFavoriteColumn: `resourceKey` is required to scope follows.");
@@ -1 +1 @@
1
- {"version":3,"file":"FavoriteColumn.js","names":["React","Box","RowFavoriteToggle","DEFAULT_ROW_FAVORITE_LABELS","jsx","_jsx","DEFAULT_LABELS","Object","freeze","_objectSpread","columnHeader","SR_ONLY_SX","position","width","height","padding","margin","overflow","clip","whiteSpace","border","makeFavoriteColumn","options","opts","resourceKey","getRowId","defaultGetRowId","r","id","key","size","getRowLabel","L","labels","process","env","console","warn","header","component","sx","children","align","sortable","toggleable","resizable","reorderable","render","renderFavorite","row","rowId","rowLabel","undefined"],"sources":["../../../../src/lib/v2/patterns/FavoriteColumn.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\nimport RowFavoriteToggle, {\r\n DEFAULT_ROW_FAVORITE_LABELS,\r\n} from \"./RowFavoriteToggle\";\r\nimport type {\r\n FavoriteToggleSize,\r\n RowFavoriteToggleLabels,\r\n} from \"./RowFavoriteToggle\";\r\nimport type { DataGridColumn } from \"../types/datagrid\";\r\nimport type { RowId } from \"../types/common\";\r\n\r\n/**\r\n * FavoriteColumn - Portnet UI v2 (pattern)\r\n *\r\n * `makeFavoriteColumn(options)` builds a v2 DataGrid column definition for\r\n * a compact \"follow\" (suivi) star column. Spread it into the grid's\r\n * `columns` first so it sits at the LEFT of each row:\r\n *\r\n * const columns = [\r\n * makeFavoriteColumn({ resourceKey: \"ti:list\", getRowId: (r) => r.reference }),\r\n * { key: \"reference\", header: \"Référence\", ... },\r\n * ...\r\n * ];\r\n * <DataGrid columns={columns} rows={rows} getRowId={(r) => r.reference} ... />\r\n *\r\n * Behaviour:\r\n * - ALWAYS VISIBLE: the star is rendered on every row in both states\r\n * (filled ★ when followed, outline ☆ when not) — it is NOT\r\n * hover-revealed. It sits at the left of the row.\r\n * - COMPACT: no visible column header (the header carries only a\r\n * visually hidden accessible name \"Suivis\"), and a narrow 44px width,\r\n * so the column takes minimal space.\r\n * - STATUS TOOLTIP: hovering or focusing the star shows its current\r\n * status — \"Suivi\" when followed, \"Non suivi\" otherwise. The button's\r\n * accessible name stays action-oriented (\"Suivre\" / \"Ne plus suivre\",\r\n * optionally enriched with the row label) and aria-pressed conveys the\r\n * state, so screen-reader semantics are unaffected.\r\n * - `toggleable: false` keeps the column out of ColumnsToggle (the user\r\n * can't hide it); not sortable / resizable / reorderable (sorting BY\r\n * follow status is a separate concern — see useFavoritesView /\r\n * sortRowsByFavorites).\r\n * - Each cell reads useIsFavorite (a boolean selector), so toggling one\r\n * row re-renders only that row's star.\r\n * - Toggling never triggers the row's onRowClick (click + keydown\r\n * propagation stopped, mirroring the DataGrid selection checkbox).\r\n *\r\n * `getRowId` MUST match the one passed to <DataGrid> so the follow id and\r\n * the grid row id agree. Requires a <UserPersonalizationProvider>\r\n * ancestor (useIsFavorite throws otherwise).\r\n *\r\n * The per-row star itself is `RowFavoriteToggle` (gap G-36). It used to be a\r\n * private `FavoriteCell` in this file, which made the follow control reachable\r\n * as a DataGrid column and nowhere else — so hosts rebuilt it by hand for the\r\n * `MobileRowCard` `leading` slot that DataGrid switches to below its\r\n * `mobileBreakpoint`, and the copies drifted on their accessible names. Both\r\n * now render the same component, so desktop and mobile agree by construction.\r\n */\r\n\r\nexport interface FavoriteColumnLabels extends RowFavoriteToggleLabels {\r\n columnHeader: string;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n ...DEFAULT_ROW_FAVORITE_LABELS,\r\n columnHeader: \"Suivis\",\r\n} satisfies FavoriteColumnLabels);\r\n\r\n/** Visually hidden, but exposed to assistive tech (the column's accessible name). */\r\nconst SR_ONLY_SX = Object.freeze({\r\n position: \"absolute\",\r\n width: \"1px\",\r\n height: \"1px\",\r\n padding: 0,\r\n margin: \"-1px\",\r\n overflow: \"hidden\",\r\n clip: \"rect(0 0 0 0)\",\r\n whiteSpace: \"nowrap\",\r\n border: 0,\r\n} satisfies SxProps<Theme>);\r\n\r\nexport interface MakeFavoriteColumnOptions<T> {\r\n /** Required — follow namespace. */\r\n resourceKey: string;\r\n /** MUST match the grid's getRowId. Defaults to (r) => r.id. */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** Column key. @default \"__favorite__\" */\r\n key?: string | undefined;\r\n /** Toggle size (sm fits dense rows). @default \"sm\" */\r\n size?: FavoriteToggleSize | undefined;\r\n /** Column width (narrow / compact). @default 44 */\r\n width?: number | string | undefined;\r\n /** (row) => string, enriches the per-row aria-label. */\r\n getRowLabel?: ((row: T) => string) | undefined;\r\n labels?: Partial<FavoriteColumnLabels> | undefined;\r\n}\r\n\r\n/**\r\n * Builds a v2 DataGrid column definition for the compact follow-star column.\r\n */\r\nexport default function makeFavoriteColumn<T>(\r\n options: MakeFavoriteColumnOptions<T>\r\n): DataGridColumn<T> {\r\n const opts = options;\r\n const resourceKey = opts.resourceKey;\r\n const getRowId: (row: T) => RowId =\r\n typeof opts.getRowId === \"function\"\r\n ? opts.getRowId\r\n : function defaultGetRowId(r: T): RowId {\r\n return (r as { id: RowId }).id;\r\n };\r\n const key = opts.key || \"__favorite__\";\r\n const size = opts.size || \"sm\";\r\n const width: number | string = opts.width != null ? opts.width : 44;\r\n const getRowLabel =\r\n typeof opts.getRowLabel === \"function\" ? opts.getRowLabel : null;\r\n const L: FavoriteColumnLabels = opts.labels\r\n ? { ...DEFAULT_LABELS, ...opts.labels }\r\n : DEFAULT_LABELS;\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !resourceKey) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] makeFavoriteColumn: `resourceKey` is required to scope follows.\"\r\n );\r\n }\r\n\r\n return {\r\n key: key,\r\n header: (\r\n <Box component=\"span\" sx={SR_ONLY_SX}>\r\n {L.columnHeader}\r\n </Box>\r\n ),\r\n align: \"center\",\r\n sortable: false,\r\n toggleable: false, // kept out of ColumnsToggle (cannot be hidden)\r\n resizable: false,\r\n reorderable: false,\r\n width: width,\r\n render: function renderFavorite(row: T): React.ReactNode {\r\n return (\r\n <RowFavoriteToggle\r\n resourceKey={resourceKey}\r\n rowId={getRowId(row)}\r\n size={size}\r\n labels={L}\r\n rowLabel={getRowLabel ? getRowLabel(row) : undefined}\r\n />\r\n );\r\n },\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FavoriteColumn.js","names":["React","Box","RowFavoriteToggle","DEFAULT_ROW_FAVORITE_LABELS","jsx","_jsx","DEFAULT_LABELS","Object","freeze","columnHeader","SR_ONLY_SX","position","width","height","padding","margin","overflow","clip","whiteSpace","border","makeFavoriteColumn","options","opts","resourceKey","getRowId","defaultGetRowId","r","id","key","size","getRowLabel","L","labels","process","env","console","warn","header","component","sx","children","align","sortable","toggleable","resizable","reorderable","render","renderFavorite","row","rowId","rowLabel","undefined"],"sources":["../../../../src/lib/v2/patterns/FavoriteColumn.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\nimport RowFavoriteToggle, {\r\n DEFAULT_ROW_FAVORITE_LABELS,\r\n} from \"./RowFavoriteToggle\";\r\nimport type {\r\n FavoriteToggleSize,\r\n RowFavoriteToggleLabels,\r\n} from \"./RowFavoriteToggle\";\r\nimport type { DataGridColumn } from \"../types/datagrid\";\r\nimport type { RowId } from \"../types/common\";\r\n\r\n/**\r\n * FavoriteColumn - Portnet UI v2 (pattern)\r\n *\r\n * `makeFavoriteColumn(options)` builds a v2 DataGrid column definition for\r\n * a compact \"follow\" (suivi) star column. Spread it into the grid's\r\n * `columns` first so it sits at the LEFT of each row:\r\n *\r\n * const columns = [\r\n * makeFavoriteColumn({ resourceKey: \"ti:list\", getRowId: (r) => r.reference }),\r\n * { key: \"reference\", header: \"Référence\", ... },\r\n * ...\r\n * ];\r\n * <DataGrid columns={columns} rows={rows} getRowId={(r) => r.reference} ... />\r\n *\r\n * Behaviour:\r\n * - ALWAYS VISIBLE: the star is rendered on every row in both states\r\n * (filled ★ when followed, outline ☆ when not) — it is NOT\r\n * hover-revealed. It sits at the left of the row.\r\n * - COMPACT: no visible column header (the header carries only a\r\n * visually hidden accessible name \"Suivis\"), and a narrow 44px width,\r\n * so the column takes minimal space.\r\n * - STATUS TOOLTIP: hovering or focusing the star shows its current\r\n * status — \"Suivi\" when followed, \"Non suivi\" otherwise. The button's\r\n * accessible name stays action-oriented (\"Suivre\" / \"Ne plus suivre\",\r\n * optionally enriched with the row label) and aria-pressed conveys the\r\n * state, so screen-reader semantics are unaffected.\r\n * - `toggleable: false` keeps the column out of ColumnsToggle (the user\r\n * can't hide it); not sortable / resizable / reorderable (sorting BY\r\n * follow status is a separate concern — see useFavoritesView /\r\n * sortRowsByFavorites).\r\n * - Each cell reads useIsFavorite (a boolean selector), so toggling one\r\n * row re-renders only that row's star.\r\n * - Toggling never triggers the row's onRowClick (click + keydown\r\n * propagation stopped, mirroring the DataGrid selection checkbox).\r\n *\r\n * `getRowId` MUST match the one passed to <DataGrid> so the follow id and\r\n * the grid row id agree. Requires a <UserPersonalizationProvider>\r\n * ancestor (useIsFavorite throws otherwise).\r\n *\r\n * The per-row star itself is `RowFavoriteToggle` (gap G-36). It used to be a\r\n * private `FavoriteCell` in this file, which made the follow control reachable\r\n * as a DataGrid column and nowhere else — so hosts rebuilt it by hand for the\r\n * `MobileRowCard` `leading` slot that DataGrid switches to below its\r\n * `mobileBreakpoint`, and the copies drifted on their accessible names. Both\r\n * now render the same component, so desktop and mobile agree by construction.\r\n */\r\n\r\nexport interface FavoriteColumnLabels extends RowFavoriteToggleLabels {\r\n columnHeader: string;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n ...DEFAULT_ROW_FAVORITE_LABELS,\r\n columnHeader: \"Suivis\",\r\n} satisfies FavoriteColumnLabels);\r\n\r\n/** Visually hidden, but exposed to assistive tech (the column's accessible name). */\r\nconst SR_ONLY_SX = Object.freeze({\r\n position: \"absolute\",\r\n width: \"1px\",\r\n height: \"1px\",\r\n padding: 0,\r\n margin: \"-1px\",\r\n overflow: \"hidden\",\r\n clip: \"rect(0 0 0 0)\",\r\n whiteSpace: \"nowrap\",\r\n border: 0,\r\n} satisfies SxProps<Theme>);\r\n\r\nexport interface MakeFavoriteColumnOptions<T> {\r\n /** Required — follow namespace. */\r\n resourceKey: string;\r\n /** MUST match the grid's getRowId. Defaults to (r) => r.id. */\r\n getRowId?: ((row: T) => RowId) | undefined;\r\n /** Column key. @default \"__favorite__\" */\r\n key?: string | undefined;\r\n /** Toggle size (sm fits dense rows). @default \"sm\" */\r\n size?: FavoriteToggleSize | undefined;\r\n /** Column width (narrow / compact). @default 44 */\r\n width?: number | string | undefined;\r\n /** (row) => string, enriches the per-row aria-label. */\r\n getRowLabel?: ((row: T) => string) | undefined;\r\n labels?: Partial<FavoriteColumnLabels> | undefined;\r\n}\r\n\r\n/**\r\n * Builds a v2 DataGrid column definition for the compact follow-star column.\r\n */\r\nexport default function makeFavoriteColumn<T>(\r\n options: MakeFavoriteColumnOptions<T>\r\n): DataGridColumn<T> {\r\n const opts = options;\r\n const resourceKey = opts.resourceKey;\r\n const getRowId: (row: T) => RowId =\r\n typeof opts.getRowId === \"function\"\r\n ? opts.getRowId\r\n : function defaultGetRowId(r: T): RowId {\r\n return (r as { id: RowId }).id;\r\n };\r\n const key = opts.key || \"__favorite__\";\r\n const size = opts.size || \"sm\";\r\n const width: number | string = opts.width != null ? opts.width : 44;\r\n const getRowLabel =\r\n typeof opts.getRowLabel === \"function\" ? opts.getRowLabel : null;\r\n const L: FavoriteColumnLabels = opts.labels\r\n ? { ...DEFAULT_LABELS, ...opts.labels }\r\n : DEFAULT_LABELS;\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !resourceKey) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] makeFavoriteColumn: `resourceKey` is required to scope follows.\"\r\n );\r\n }\r\n\r\n return {\r\n key: key,\r\n header: (\r\n <Box component=\"span\" sx={SR_ONLY_SX}>\r\n {L.columnHeader}\r\n </Box>\r\n ),\r\n align: \"center\",\r\n sortable: false,\r\n toggleable: false, // kept out of ColumnsToggle (cannot be hidden)\r\n resizable: false,\r\n reorderable: false,\r\n width: width,\r\n render: function renderFavorite(row: T): React.ReactNode {\r\n return (\r\n <RowFavoriteToggle\r\n resourceKey={resourceKey}\r\n rowId={getRowId(row)}\r\n size={size}\r\n labels={L}\r\n rowLabel={getRowLabel ? getRowLabel(row) : undefined}\r\n />\r\n );\r\n },\r\n };\r\n}\r\n"],"mappings":"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","ignoreList":[]}