@portnet/ui 6.0.1 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1011) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/dist/esm/index.js +90 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +118 -90
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +210 -52
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +64 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +14 -4
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -50
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -84
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +235 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  346. package/dist/esm/v2/personalization/capabilities/index.js +5 -0
  347. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
  348. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  349. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  350. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  351. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  352. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  353. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  354. package/dist/esm/v2/personalization/index.js +35 -0
  355. package/dist/esm/v2/personalization/index.js.map +1 -1
  356. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  357. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  358. package/dist/esm/v2/personalization/schema.js +8 -9
  359. package/dist/esm/v2/personalization/schema.js.map +1 -1
  360. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  361. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  362. package/dist/esm/v2/referentiel/types.js +2 -0
  363. package/dist/esm/v2/referentiel/types.js.map +1 -0
  364. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  365. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  367. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  368. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  369. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  370. package/dist/esm/v2/theme/_brand.js +8 -24
  371. package/dist/esm/v2/theme/_brand.js.map +1 -1
  372. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  373. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  374. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  375. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  376. package/dist/esm/v2/theme/cssVariables.js +62 -69
  377. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  378. package/dist/esm/v2/theme/index.js +5 -5
  379. package/dist/esm/v2/theme/index.js.map +1 -1
  380. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  381. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  382. package/dist/esm/v2/tokens/chart.js +261 -0
  383. package/dist/esm/v2/tokens/chart.js.map +1 -0
  384. package/dist/esm/v2/tokens/colors.js +22 -22
  385. package/dist/esm/v2/tokens/colors.js.map +1 -1
  386. package/dist/esm/v2/tokens/density.js +62 -7
  387. package/dist/esm/v2/tokens/density.js.map +1 -1
  388. package/dist/esm/v2/tokens/index.js +49 -34
  389. package/dist/esm/v2/tokens/index.js.map +1 -1
  390. package/dist/esm/v2/tokens/motion.js +12 -20
  391. package/dist/esm/v2/tokens/motion.js.map +1 -1
  392. package/dist/esm/v2/tokens/radius.js +1 -1
  393. package/dist/esm/v2/tokens/radius.js.map +1 -1
  394. package/dist/esm/v2/tokens/shadows.js +6 -6
  395. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  396. package/dist/esm/v2/tokens/spacing.js +2 -2
  397. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  398. package/dist/esm/v2/tokens/state.js +1 -1
  399. package/dist/esm/v2/tokens/state.js.map +1 -1
  400. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  401. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  402. package/dist/esm/v2/tokens/tokens.json +6 -1
  403. package/dist/esm/v2/tokens/typography.js +13 -13
  404. package/dist/esm/v2/tokens/typography.js.map +1 -1
  405. package/dist/esm/v2/tokens/zIndex.js +1 -1
  406. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  407. package/dist/esm/v2/types/datagrid.js.map +1 -1
  408. package/dist/esm/v2/utils/apiError.js +16 -37
  409. package/dist/esm/v2/utils/apiError.js.map +1 -1
  410. package/dist/esm/v2/utils/contrast.js +31 -32
  411. package/dist/esm/v2/utils/contrast.js.map +1 -1
  412. package/dist/esm/v2/utils/cx.js +5 -25
  413. package/dist/esm/v2/utils/cx.js.map +1 -1
  414. package/dist/esm/v2/utils/fileDownload.js +23 -26
  415. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  416. package/dist/esm/v2/utils/fileValidation.js +209 -0
  417. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtDate.js +111 -0
  419. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  420. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  421. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  422. package/dist/esm/v2/utils/formikErrors.js +78 -0
  423. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  424. package/dist/esm/v2/utils/index.js +35 -2
  425. package/dist/esm/v2/utils/index.js.map +1 -1
  426. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  427. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  428. package/dist/esm/v2/utils/networkStatus.js +12 -12
  429. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  430. package/dist/index.d.ts +9 -1
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +122 -47
  433. package/dist/index.js.map +1 -1
  434. package/dist/v2/__tests__/AppMain.test.js +133 -0
  435. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  436. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  437. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  438. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  439. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  440. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  441. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  442. package/dist/v2/__tests__/FieldError.test.js +98 -69
  443. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  444. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  445. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  446. package/dist/v2/__tests__/FieldWidth.test.js +148 -0
  447. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  448. package/dist/v2/__tests__/FileCard.test.js +45 -48
  449. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
  451. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  452. package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
  453. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  455. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  456. package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
  457. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  458. package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
  459. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  460. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  461. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  462. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  463. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  464. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  465. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  466. package/dist/v2/__tests__/apiError.test.js +50 -69
  467. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  468. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  469. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  470. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  471. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  472. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  473. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  474. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  475. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  476. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  477. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  478. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  479. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  480. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  481. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  482. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  483. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  484. package/dist/v2/__tests__/labels-merge.test.js +38 -46
  485. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  486. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  487. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  488. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  489. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  490. package/dist/v2/__tests__/rowActions.test.js +186 -0
  491. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  493. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  494. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  495. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  496. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  497. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  498. package/dist/v2/components/Accordion.js +60 -82
  499. package/dist/v2/components/Accordion.js.map +1 -1
  500. package/dist/v2/components/ActionStrip.js +40 -52
  501. package/dist/v2/components/ActionStrip.js.map +1 -1
  502. package/dist/v2/components/Banner.js +42 -41
  503. package/dist/v2/components/Banner.js.map +1 -1
  504. package/dist/v2/components/Busy.js +22 -27
  505. package/dist/v2/components/Busy.js.map +1 -1
  506. package/dist/v2/components/Button.js +39 -50
  507. package/dist/v2/components/Button.js.map +1 -1
  508. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  509. package/dist/v2/components/CategoryTag.js +49 -32
  510. package/dist/v2/components/CategoryTag.js.map +1 -1
  511. package/dist/v2/components/Checkbox.js +39 -45
  512. package/dist/v2/components/Checkbox.js.map +1 -1
  513. package/dist/v2/components/Chip.js +29 -42
  514. package/dist/v2/components/Chip.js.map +1 -1
  515. package/dist/v2/components/Combobox.js +122 -144
  516. package/dist/v2/components/Combobox.js.map +1 -1
  517. package/dist/v2/components/CommandPalette.js +138 -225
  518. package/dist/v2/components/CommandPalette.js.map +1 -1
  519. package/dist/v2/components/ConfirmDialog.js +46 -56
  520. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  521. package/dist/v2/components/DatePicker.js +81 -86
  522. package/dist/v2/components/DatePicker.js.map +1 -1
  523. package/dist/v2/components/DateRangePicker.js +77 -87
  524. package/dist/v2/components/DateRangePicker.js.map +1 -1
  525. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  526. package/dist/v2/components/DateTimePicker.js +121 -95
  527. package/dist/v2/components/DateTimePicker.js.map +1 -1
  528. package/dist/v2/components/Drawer.d.ts.map +1 -1
  529. package/dist/v2/components/Drawer.js +93 -88
  530. package/dist/v2/components/Drawer.js.map +1 -1
  531. package/dist/v2/components/Dropzone.js +150 -196
  532. package/dist/v2/components/Dropzone.js.map +1 -1
  533. package/dist/v2/components/EmptyState.js +18 -20
  534. package/dist/v2/components/EmptyState.js.map +1 -1
  535. package/dist/v2/components/FavoriteToggle.js +28 -39
  536. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  537. package/dist/v2/components/Field.d.ts +121 -5
  538. package/dist/v2/components/Field.d.ts.map +1 -1
  539. package/dist/v2/components/Field.js +221 -62
  540. package/dist/v2/components/Field.js.map +1 -1
  541. package/dist/v2/components/FieldError.js +18 -21
  542. package/dist/v2/components/FieldError.js.map +1 -1
  543. package/dist/v2/components/FieldHelp.js +40 -60
  544. package/dist/v2/components/FieldHelp.js.map +1 -1
  545. package/dist/v2/components/FileCard.js +27 -31
  546. package/dist/v2/components/FileCard.js.map +1 -1
  547. package/dist/v2/components/FilterTab.js +30 -38
  548. package/dist/v2/components/FilterTab.js.map +1 -1
  549. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  550. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  551. package/dist/v2/components/ForbiddenPage.js +37 -17
  552. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  553. package/dist/v2/components/FormGrid.js +53 -59
  554. package/dist/v2/components/FormGrid.js.map +1 -1
  555. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  556. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  557. package/dist/v2/components/FormikDisplay.js +108 -33
  558. package/dist/v2/components/FormikDisplay.js.map +1 -1
  559. package/dist/v2/components/Input.d.ts +40 -0
  560. package/dist/v2/components/Input.d.ts.map +1 -1
  561. package/dist/v2/components/Input.js +81 -41
  562. package/dist/v2/components/Input.js.map +1 -1
  563. package/dist/v2/components/KPICard.js +57 -67
  564. package/dist/v2/components/KPICard.js.map +1 -1
  565. package/dist/v2/components/KPIStrip.js +16 -22
  566. package/dist/v2/components/KPIStrip.js.map +1 -1
  567. package/dist/v2/components/KV.js +25 -31
  568. package/dist/v2/components/KV.js.map +1 -1
  569. package/dist/v2/components/KVGrid.js +19 -26
  570. package/dist/v2/components/KVGrid.js.map +1 -1
  571. package/dist/v2/components/Layout.js +91 -120
  572. package/dist/v2/components/Layout.js.map +1 -1
  573. package/dist/v2/components/MobileRowCard.js +79 -91
  574. package/dist/v2/components/MobileRowCard.js.map +1 -1
  575. package/dist/v2/components/Modal.js +61 -69
  576. package/dist/v2/components/Modal.js.map +1 -1
  577. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  578. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  579. package/dist/v2/components/NetworkErrorPage.js +38 -21
  580. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  581. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  582. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  583. package/dist/v2/components/NotFoundPage.js +37 -18
  584. package/dist/v2/components/NotFoundPage.js.map +1 -1
  585. package/dist/v2/components/NumberInput.js +88 -118
  586. package/dist/v2/components/NumberInput.js.map +1 -1
  587. package/dist/v2/components/OverflowMenu.js +38 -56
  588. package/dist/v2/components/OverflowMenu.js.map +1 -1
  589. package/dist/v2/components/PdfViewer.js +34 -45
  590. package/dist/v2/components/PdfViewer.js.map +1 -1
  591. package/dist/v2/components/ProgressBar.js +42 -49
  592. package/dist/v2/components/ProgressBar.js.map +1 -1
  593. package/dist/v2/components/Radio.js +59 -67
  594. package/dist/v2/components/Radio.js.map +1 -1
  595. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  596. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  597. package/dist/v2/components/SectionHeader.js +34 -41
  598. package/dist/v2/components/SectionHeader.js.map +1 -1
  599. package/dist/v2/components/Segmented.js +69 -93
  600. package/dist/v2/components/Segmented.js.map +1 -1
  601. package/dist/v2/components/Select.d.ts +26 -2
  602. package/dist/v2/components/Select.d.ts.map +1 -1
  603. package/dist/v2/components/Select.js +120 -155
  604. package/dist/v2/components/Select.js.map +1 -1
  605. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  606. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  607. package/dist/v2/components/ServerErrorPage.js +37 -20
  608. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  609. package/dist/v2/components/Skeleton.js +86 -100
  610. package/dist/v2/components/Skeleton.js.map +1 -1
  611. package/dist/v2/components/SkipLink.js +9 -12
  612. package/dist/v2/components/SkipLink.js.map +1 -1
  613. package/dist/v2/components/Spinner.js +16 -25
  614. package/dist/v2/components/Spinner.js.map +1 -1
  615. package/dist/v2/components/Status.js +18 -29
  616. package/dist/v2/components/Status.js.map +1 -1
  617. package/dist/v2/components/Stepper.js +80 -82
  618. package/dist/v2/components/Stepper.js.map +1 -1
  619. package/dist/v2/components/Surface.js +34 -49
  620. package/dist/v2/components/Surface.js.map +1 -1
  621. package/dist/v2/components/Switch.js +29 -37
  622. package/dist/v2/components/Switch.js.map +1 -1
  623. package/dist/v2/components/TabPanel.d.ts +17 -0
  624. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  625. package/dist/v2/components/TabPanel.js +90 -0
  626. package/dist/v2/components/TabPanel.js.map +1 -0
  627. package/dist/v2/components/Tabs.d.ts +25 -0
  628. package/dist/v2/components/Tabs.d.ts.map +1 -1
  629. package/dist/v2/components/Tabs.js +53 -29
  630. package/dist/v2/components/Tabs.js.map +1 -1
  631. package/dist/v2/components/TelInput.js +80 -115
  632. package/dist/v2/components/TelInput.js.map +1 -1
  633. package/dist/v2/components/Textarea.js +26 -35
  634. package/dist/v2/components/Textarea.js.map +1 -1
  635. package/dist/v2/components/TimePicker.js +62 -74
  636. package/dist/v2/components/TimePicker.js.map +1 -1
  637. package/dist/v2/components/Toast.js +119 -174
  638. package/dist/v2/components/Toast.js.map +1 -1
  639. package/dist/v2/components/Tooltip.js +23 -38
  640. package/dist/v2/components/Tooltip.js.map +1 -1
  641. package/dist/v2/components/_ErrorPageBody.js +15 -16
  642. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  643. package/dist/v2/components/_pickerShared.js +5 -5
  644. package/dist/v2/components/_pickerShared.js.map +1 -1
  645. package/dist/v2/components/index.d.ts +67 -1
  646. package/dist/v2/components/index.d.ts.map +1 -1
  647. package/dist/v2/components/index.js +153 -136
  648. package/dist/v2/components/index.js.map +1 -1
  649. package/dist/v2/hooks/index.d.ts +65 -0
  650. package/dist/v2/hooks/index.d.ts.map +1 -1
  651. package/dist/v2/hooks/index.js +63 -24
  652. package/dist/v2/hooks/index.js.map +1 -1
  653. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  654. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  655. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  656. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  657. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  658. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  659. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  660. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  661. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  662. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  663. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  664. package/dist/v2/hooks/useDensity.js +14 -18
  665. package/dist/v2/hooks/useDensity.js.map +1 -1
  666. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  667. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  668. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  669. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  670. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  671. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  672. package/dist/v2/hooks/useFocusTrap.js +20 -24
  673. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  674. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  675. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  676. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  677. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  678. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  679. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  680. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  681. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  682. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  683. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  684. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  685. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  687. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  688. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  689. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  690. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  691. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  692. package/dist/v2/hooks/useSortedRows.js +4 -6
  693. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  694. package/dist/v2/hooks/useTabLoading.js +7 -22
  695. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  696. package/dist/v2/index.d.ts.map +1 -1
  697. package/dist/v2/index.js +143 -145
  698. package/dist/v2/index.js.map +1 -1
  699. package/dist/v2/modalContext.js +2 -2
  700. package/dist/v2/modalContext.js.map +1 -1
  701. package/dist/v2/models/favorite.d.ts +8 -9
  702. package/dist/v2/models/favorite.d.ts.map +1 -1
  703. package/dist/v2/models/favorite.js.map +1 -1
  704. package/dist/v2/models/index.js +4 -4
  705. package/dist/v2/models/index.js.map +1 -1
  706. package/dist/v2/models/personalization.d.ts +44 -48
  707. package/dist/v2/models/personalization.d.ts.map +1 -1
  708. package/dist/v2/models/personalization.js.map +1 -1
  709. package/dist/v2/models/referentiel.d.ts +32 -50
  710. package/dist/v2/models/referentiel.d.ts.map +1 -1
  711. package/dist/v2/models/referentiel.js.map +1 -1
  712. package/dist/v2/models/savedFilter.d.ts +8 -17
  713. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  714. package/dist/v2/models/savedFilter.js.map +1 -1
  715. package/dist/v2/patterns/ActionBar.js +152 -187
  716. package/dist/v2/patterns/ActionBar.js.map +1 -1
  717. package/dist/v2/patterns/AppMain.d.ts +109 -0
  718. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  719. package/dist/v2/patterns/AppMain.js +115 -0
  720. package/dist/v2/patterns/AppMain.js.map +1 -0
  721. package/dist/v2/patterns/BulkActionBar.js +40 -42
  722. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  723. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  724. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  725. package/dist/v2/patterns/ChartFigure.js +159 -0
  726. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  727. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  728. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  729. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  730. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  731. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGrid.js +262 -297
  733. package/dist/v2/patterns/DataGrid.js.map +1 -1
  734. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  735. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  736. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  737. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  738. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  739. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  740. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  741. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  742. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  743. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  744. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  745. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  746. package/dist/v2/patterns/DetailSplit.js +116 -0
  747. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  748. package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
  749. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  750. package/dist/v2/patterns/FavoriteColumn.js +32 -80
  751. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  752. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  753. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  754. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  755. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  756. package/dist/v2/patterns/FilterTabBar.js +120 -0
  757. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  758. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  759. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  760. package/dist/v2/patterns/FormPageShell.js +53 -50
  761. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  762. package/dist/v2/patterns/FormSection.d.ts +8 -3
  763. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormSection.js +44 -51
  765. package/dist/v2/patterns/FormSection.js.map +1 -1
  766. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  767. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  768. package/dist/v2/patterns/FormikCheckbox.js +138 -0
  769. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  770. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  771. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  772. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  773. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  774. package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
  775. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  776. package/dist/v2/patterns/FormikCombobox.js +55 -69
  777. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  778. package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
  779. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikDatePicker.js +59 -106
  781. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  782. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  783. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  784. package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
  785. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  786. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  787. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  788. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  789. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  791. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  792. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  793. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  794. package/dist/v2/patterns/FormikFile.js +99 -83
  795. package/dist/v2/patterns/FormikFile.js.map +1 -1
  796. package/dist/v2/patterns/FormikInput.d.ts +11 -1
  797. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  798. package/dist/v2/patterns/FormikInput.js +45 -55
  799. package/dist/v2/patterns/FormikInput.js.map +1 -1
  800. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  801. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  802. package/dist/v2/patterns/FormikRadioGroup.js +137 -0
  803. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  804. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  805. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  807. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/FormikSelect.d.ts +9 -1
  809. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  810. package/dist/v2/patterns/FormikSelect.js +70 -89
  811. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  812. package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
  813. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  814. package/dist/v2/patterns/FormikTextarea.js +35 -48
  815. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  816. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
  817. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  818. package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
  819. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  820. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  821. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  822. package/dist/v2/patterns/PageContent.js +17 -20
  823. package/dist/v2/patterns/PageContent.js.map +1 -1
  824. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  825. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  826. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  827. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  828. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  829. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  830. package/dist/v2/patterns/ReferentielField.js +347 -327
  831. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  832. package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
  833. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  834. package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
  835. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  836. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  837. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  838. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  839. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  840. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  841. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  842. package/dist/v2/patterns/SortableHeader.js +35 -57
  843. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  844. package/dist/v2/patterns/Tour.js +121 -142
  845. package/dist/v2/patterns/Tour.js.map +1 -1
  846. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  847. package/dist/v2/patterns/_dataGridShared.js +131 -147
  848. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  849. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  850. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  851. package/dist/v2/patterns/_pickerSerialisation.js +80 -0
  852. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  853. package/dist/v2/patterns/_sort.js +17 -33
  854. package/dist/v2/patterns/_sort.js.map +1 -1
  855. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  856. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  857. package/dist/v2/patterns/_useColumnResize.js +80 -99
  858. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  859. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  860. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  861. package/dist/v2/patterns/filterCriteria.js +110 -0
  862. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  863. package/dist/v2/patterns/index.d.ts +247 -0
  864. package/dist/v2/patterns/index.d.ts.map +1 -1
  865. package/dist/v2/patterns/index.js +182 -70
  866. package/dist/v2/patterns/index.js.map +1 -1
  867. package/dist/v2/patterns/rowActions.d.ts +150 -0
  868. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  869. package/dist/v2/patterns/rowActions.js +232 -0
  870. package/dist/v2/patterns/rowActions.js.map +1 -0
  871. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  872. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  873. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  874. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  875. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  876. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  877. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  878. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  879. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  880. package/dist/v2/personalization/adapters/index.js +5 -5
  881. package/dist/v2/personalization/adapters/index.js.map +1 -1
  882. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  883. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  884. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  885. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  886. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  887. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  888. package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
  889. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  890. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  891. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  892. package/dist/v2/personalization/capabilities/index.js +23 -10
  893. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  894. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  895. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  896. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  897. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  898. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  899. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  900. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  901. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  902. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  903. package/dist/v2/personalization/index.d.ts +34 -0
  904. package/dist/v2/personalization/index.d.ts.map +1 -1
  905. package/dist/v2/personalization/index.js +41 -21
  906. package/dist/v2/personalization/index.js.map +1 -1
  907. package/dist/v2/personalization/personalizationContext.js +10 -12
  908. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  909. package/dist/v2/personalization/schema.js +8 -9
  910. package/dist/v2/personalization/schema.js.map +1 -1
  911. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  912. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  913. package/dist/v2/referentiel/index.js +11 -13
  914. package/dist/v2/referentiel/index.js.map +1 -1
  915. package/dist/v2/referentiel/types.d.ts +105 -0
  916. package/dist/v2/referentiel/types.d.ts.map +1 -0
  917. package/dist/v2/referentiel/types.js +6 -0
  918. package/dist/v2/referentiel/types.js.map +1 -0
  919. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  920. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  921. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  922. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  923. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  924. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  925. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  926. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  927. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  928. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  929. package/dist/v2/theme/_brand.js +12 -26
  930. package/dist/v2/theme/_brand.js.map +1 -1
  931. package/dist/v2/theme/_brandSecondary.js +12 -26
  932. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  933. package/dist/v2/theme/createPortnetTheme.js +41 -49
  934. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  935. package/dist/v2/theme/cssVariables.d.ts +3 -3
  936. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  937. package/dist/v2/theme/cssVariables.js +65 -70
  938. package/dist/v2/theme/cssVariables.js.map +1 -1
  939. package/dist/v2/theme/index.js +10 -10
  940. package/dist/v2/theme/index.js.map +1 -1
  941. package/dist/v2/tokens/breakpoints.js +16 -16
  942. package/dist/v2/tokens/breakpoints.js.map +1 -1
  943. package/dist/v2/tokens/chart.d.ts +103 -0
  944. package/dist/v2/tokens/chart.d.ts.map +1 -0
  945. package/dist/v2/tokens/chart.js +270 -0
  946. package/dist/v2/tokens/chart.js.map +1 -0
  947. package/dist/v2/tokens/colors.js +24 -24
  948. package/dist/v2/tokens/colors.js.map +1 -1
  949. package/dist/v2/tokens/density.d.ts +104 -0
  950. package/dist/v2/tokens/density.d.ts.map +1 -1
  951. package/dist/v2/tokens/density.js +67 -12
  952. package/dist/v2/tokens/density.js.map +1 -1
  953. package/dist/v2/tokens/index.d.ts +50 -1
  954. package/dist/v2/tokens/index.d.ts.map +1 -1
  955. package/dist/v2/tokens/index.js +116 -68
  956. package/dist/v2/tokens/index.js.map +1 -1
  957. package/dist/v2/tokens/motion.js +16 -22
  958. package/dist/v2/tokens/motion.js.map +1 -1
  959. package/dist/v2/tokens/radius.js +3 -3
  960. package/dist/v2/tokens/radius.js.map +1 -1
  961. package/dist/v2/tokens/shadows.js +8 -8
  962. package/dist/v2/tokens/shadows.js.map +1 -1
  963. package/dist/v2/tokens/spacing.js +4 -4
  964. package/dist/v2/tokens/spacing.js.map +1 -1
  965. package/dist/v2/tokens/state.js +3 -3
  966. package/dist/v2/tokens/state.js.map +1 -1
  967. package/dist/v2/tokens/statusPalette.js +21 -23
  968. package/dist/v2/tokens/statusPalette.js.map +1 -1
  969. package/dist/v2/tokens/tokens.json +6 -1
  970. package/dist/v2/tokens/typography.js +15 -15
  971. package/dist/v2/tokens/typography.js.map +1 -1
  972. package/dist/v2/tokens/zIndex.js +3 -3
  973. package/dist/v2/tokens/zIndex.js.map +1 -1
  974. package/dist/v2/types/datagrid.d.ts +9 -1
  975. package/dist/v2/types/datagrid.d.ts.map +1 -1
  976. package/dist/v2/types/datagrid.js.map +1 -1
  977. package/dist/v2/types/index.js +2 -2
  978. package/dist/v2/types/index.js.map +1 -1
  979. package/dist/v2/utils/apiError.js +16 -37
  980. package/dist/v2/utils/apiError.js.map +1 -1
  981. package/dist/v2/utils/contrast.js +31 -32
  982. package/dist/v2/utils/contrast.js.map +1 -1
  983. package/dist/v2/utils/cx.js +7 -27
  984. package/dist/v2/utils/cx.js.map +1 -1
  985. package/dist/v2/utils/fileDownload.js +25 -28
  986. package/dist/v2/utils/fileDownload.js.map +1 -1
  987. package/dist/v2/utils/fileValidation.d.ts +116 -0
  988. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  989. package/dist/v2/utils/fileValidation.js +220 -0
  990. package/dist/v2/utils/fileValidation.js.map +1 -0
  991. package/dist/v2/utils/fmtDate.d.ts +103 -0
  992. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  993. package/dist/v2/utils/fmtDate.js +119 -0
  994. package/dist/v2/utils/fmtDate.js.map +1 -0
  995. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  996. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  997. package/dist/v2/utils/fmtMoney.js +9 -11
  998. package/dist/v2/utils/fmtMoney.js.map +1 -1
  999. package/dist/v2/utils/formikErrors.d.ts +67 -0
  1000. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  1001. package/dist/v2/utils/formikErrors.js +85 -0
  1002. package/dist/v2/utils/formikErrors.js.map +1 -0
  1003. package/dist/v2/utils/index.d.ts +5 -0
  1004. package/dist/v2/utils/index.d.ts.map +1 -1
  1005. package/dist/v2/utils/index.js +67 -18
  1006. package/dist/v2/utils/index.js.map +1 -1
  1007. package/dist/v2/utils/mergeLabels.js +9 -14
  1008. package/dist/v2/utils/mergeLabels.js.map +1 -1
  1009. package/dist/v2/utils/networkStatus.js +14 -14
  1010. package/dist/v2/utils/networkStatus.js.map +1 -1
  1011. package/package.json +26 -9
@@ -1 +1 @@
1
- {"version":3,"file":"CommandPalette.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_Box","_IconButton","_Search","_Close","_useFocusTrap","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","iter","Symbol","iterator","Array","from","isArray","_arrayLikeToArray","_createForOfIteratorHelper","o","allowArrayLike","it","length","i","F","s","n","done","value","e","_e2","f","normalCompletion","didErr","err","step","next","_e3","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","toString","slice","constructor","name","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","push","DEBOUNCE_MS","DEFAULT_LABELS","freeze","title","footerHint","closeButton","resultsCount","concat","pinnedTitle","recentTitle","BACKDROP_SLOT_PROPS","sx","backgroundColor","useDebounced","ms","_React$useState","useState","_React$useState2","out","setOut","useEffect","t","setTimeout","clearTimeout","normalize","String","replace","toLowerCase","subsequenceRun","hay","token","consecutive","bestConsecutive","h","scoreToken","startsWith","wbIdx","indexOf","subIdx","Math","min","run","scoreQuery","haystack","query","tokens","split","filter","Boolean","total","_iterator","_step","filterGroups","groups","q","trim","map","g","id","items","_iterator2","_step2","scored","_iterator3","_step3","label","keywords","item","score","sort","a","b","CommandPalette","_ref","open","onClose","_ref$groups","recentItems","pinnedItems","_ref$placeholder","placeholder","_ref$emptyState","emptyState","onQueryChange","labels","L","useMemo","mergeLabels","_React$useState3","_React$useState4","setQuery","debouncedQuery","_React$useState5","_React$useState6","highlight","setHighlight","inputRef","useRef","listRef","titleId","useId","listId","inputId","paperRef","useFocusTrap","allGroups","hasPinned","hasRecent","visibleGroups","itemsOnly","flatMap","max","_listRef$current","node","current","querySelector","scrollIntoView","block","activate","index","_it$onSelect","onSelect","onInputKeyDown","preventDefault","onInputChange","target","activeItemId","undefined","slotProps","paper","ref","width","maxWidth","borderRadius","boxShadow","margin","overflow","backdrop","jsxs","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","children","jsx","className","display","alignItems","gap","padding","borderBottom","color","fontSize","component","type","role","autoFocus","onChange","onKeyDown","flex","border","outline","background","fontFamily","fontWeight","size","onClick","maxHeight","overflowY","textAlign","headerId","textTransform","letterSpacing","entry","isActive","idx","onMouseEnter","cursor","icon","minWidth","textOverflow","whiteSpace","shortcut","justifyContent","borderTop","_default","exports"],"sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * CommandPalette - Portnet UI v2\r\n *\r\n * Charter §03 / §07 · ⌘K command palette. Keyboard-first launcher for pages\r\n * and actions across the app.\r\n *\r\n * const [open, setOpen] = useState(false);\r\n * useEffect(() => {\r\n * const onKey = (e) => {\r\n * if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\r\n * e.preventDefault();\r\n * setOpen(true);\r\n * }\r\n * };\r\n * window.addEventListener(\"keydown\", onKey);\r\n * return () => window.removeEventListener(\"keydown\", onKey);\r\n * }, []);\r\n *\r\n * <CommandPalette\r\n * open={open}\r\n * onClose={() => setOpen(false)}\r\n * groups={[\r\n * { id: \"pages\", title: \"Pages\", items: [\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * { id: \"titres\", label: \"Titres d'importation\", onSelect: () => nav(\"/titres\") },\r\n * ]},\r\n * { id: \"actions\", title: \"Actions\", items: [\r\n * { id: \"new-titre\", label: \"Nouveau titre\", icon: <AddIcon />, shortcut: \"C\", onSelect: createTitre },\r\n * ]},\r\n * ]}\r\n * />\r\n *\r\n * Recent + Pinned items (Batch 16 / H4)\r\n * -------------------------------------\r\n * <CommandPalette\r\n * pinnedItems={[\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * ]}\r\n * recentItems={[\r\n * { id: \"titre-2025-IM-0042\", label: \"2025-IM-0042 (SOFRANE SA)\", onSelect: () => nav(\"/titres/2025-IM-0042\") },\r\n * ]}\r\n * groups={[ ... ]}\r\n * />\r\n *\r\n * Both extras are HOST-MANAGED. Lib does NOT track selections or\r\n * pinning state — track in your per-item onSelect handler and\r\n * persist to localStorage / server prefs as a host concern.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <CommandPalette\r\n * placeholder=\"Search a page or action…\"\r\n * emptyState=\"No result.\"\r\n * labels={{\r\n * title: \"Command palette\",\r\n * footerHint: \"↑↓ to navigate · ↵ to select · Esc to close\",\r\n * closeButton: \"Close palette\",\r\n * resultsCount: (n) => `${n} result${n === 1 ? \"\" : \"s\"}`,\r\n * pinnedTitle: \"Pinned\",\r\n * recentTitle: \"Recent\",\r\n * }}\r\n * />\r\n *\r\n * `resultsCount` is a function so the host can plug in proper plural\r\n * rules (Intl.PluralRules, ICU MessageFormat, i18next, …).\r\n *\r\n * Matching behaviour (Batch 13 / D2):\r\n * The search is fuzzy. Each match is scored across four tiers\r\n * (prefix > word-boundary > substring > subsequence) and within\r\n * each group items are surfaced in descending score order.\r\n * Multi-token queries (\"tit imp\") split on whitespace and require\r\n * every token to hit somewhere; final score is the per-token\r\n * average. Diacritics are folded — \"Emile\" matches \"Émile\".\r\n *\r\n * Focus management (R-F.2):\r\n * Backed by the v2 useFocusTrap hook (Batch 3). The search <input>\r\n * declares `autoFocus`, so on open the trap's initial-focus rAF\r\n * lands directly on it. The input is a role=\"combobox\" and carries an\r\n * aria-label (CP-1) so screen readers announce a name, not just a role.\r\n */\r\n\r\nconst DEBOUNCE_MS = 80;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n title: \"Palette de commandes\",\r\n footerHint: \"↑↓ pour naviguer · ↵ pour sélectionner · Esc pour fermer\",\r\n closeButton: \"Fermer la palette\",\r\n resultsCount: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n pinnedTitle: \"Épinglés\",\r\n recentTitle: \"Récents\",\r\n});\r\n\r\n// MUI v9: backdrop slot bag. Hoisted — its content (only an sx token)\r\n// is independent of any palette instance state.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-G.2 / R-AI.1 - backdrop derived from the live --fg token (matches\r\n // Modal). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nexport interface CommandPaletteItem {\r\n id: string | number;\r\n label: React.ReactNode;\r\n icon?: React.ReactNode | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n keywords?: string | undefined;\r\n onSelect?: (() => void) | undefined;\r\n}\r\n\r\nexport interface CommandPaletteGroup {\r\n id: string;\r\n title?: React.ReactNode | undefined;\r\n items: CommandPaletteItem[];\r\n}\r\n\r\nexport interface CommandPaletteLabels {\r\n title?: string | undefined;\r\n footerHint?: string | undefined;\r\n closeButton?: string | undefined;\r\n resultsCount?: ((n: number) => React.ReactNode) | undefined;\r\n pinnedTitle?: React.ReactNode | undefined;\r\n recentTitle?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n groups?: CommandPaletteGroup[] | undefined;\r\n recentItems?: CommandPaletteItem[] | undefined;\r\n pinnedItems?: CommandPaletteItem[] | undefined;\r\n placeholder?: string | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n onQueryChange?: ((q: string) => void) | undefined;\r\n labels?: CommandPaletteLabels | undefined;\r\n}\r\n\r\nfunction useDebounced<T>(value: T, ms: number): T {\r\n const [out, setOut] = React.useState(value);\r\n React.useEffect(() => {\r\n const t = setTimeout(() => setOut(value), ms);\r\n return () => clearTimeout(t);\r\n }, [value, ms]);\r\n return out;\r\n}\r\n\r\n/* ── Fuzzy matching (D2) ───────────────────────────────────────────────\r\n * Module-level pure helpers. No external dep, no allocation per match\r\n * beyond the obligatory tokenisation Array.\r\n *\r\n * Score scale is conventional, NOT meaningful in absolute terms:\r\n * - 0 → no match (filtered out)\r\n * - higher → more relevant (sorted descending within each group)\r\n */\r\n\r\n/**\r\n * NFD-normalise + strip combining marks + lowercase. Folds diacritics\r\n * so \"Émile\" → \"emile\" and \"Café\" → \"cafe\", letting users search\r\n * without typing accents. The unicode range \\u0300-\\u036F covers the\r\n * Combining Diacritical Marks block (U+0300..U+036F).\r\n */\r\nfunction normalize(s: string): string {\r\n if (!s) return \"\";\r\n return String(s).normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Subsequence match score — how well does `token` appear (in order,\r\n * not necessarily contiguous) inside `hay`?\r\n *\r\n * - Returns 0 if any character is missing.\r\n * - Otherwise returns the longest CONSECUTIVE run divided by the\r\n * token length. So \"imp\" inside \"important\" gets ratio 1.0\r\n * (whole word matched contiguously), while \"imp\" inside\r\n * \"i_m_p\" (gaps) gets a low ratio.\r\n *\r\n * The contiguous-run heuristic is much cheaper than a full Smith-\r\n * Waterman and good enough for command-palette UX.\r\n */\r\nfunction subsequenceRun(hay: string, token: string): number {\r\n let i = 0;\r\n let consecutive = 0;\r\n let bestConsecutive = 0;\r\n for (let h = 0; h < hay.length && i < token.length; h += 1) {\r\n if (hay[h] === token[i]) {\r\n i += 1;\r\n consecutive += 1;\r\n if (consecutive > bestConsecutive) bestConsecutive = consecutive;\r\n } else {\r\n consecutive = 0;\r\n }\r\n }\r\n if (i < token.length) return 0;\r\n return bestConsecutive / token.length;\r\n}\r\n\r\n/**\r\n * Score a single token against a haystack. Four tiers, best wins.\r\n * Both inputs are assumed already normalised (lowercase, no diacritics).\r\n */\r\nfunction scoreToken(hay: string, token: string): number {\r\n if (hay.startsWith(token)) return 100;\r\n\r\n const wbIdx = hay.indexOf(\" \" + token);\r\n if (wbIdx >= 0) return 80;\r\n\r\n const subIdx = hay.indexOf(token);\r\n if (subIdx >= 0) {\r\n return 60 - Math.min(20, subIdx * 0.1);\r\n }\r\n\r\n const run = subsequenceRun(hay, token);\r\n if (run > 0) return 40 * run;\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Score a multi-token query. Splits on whitespace; every token must hit\r\n * somewhere. Returns the average across tokens, or 0 if any token misses.\r\n */\r\nfunction scoreQuery(haystack: string, query: string): number {\r\n const hay = normalize(haystack);\r\n const tokens = normalize(query).split(/\\s+/).filter(Boolean);\r\n if (tokens.length === 0) return 1;\r\n if (!hay) return 0;\r\n\r\n let total = 0;\r\n for (const token of tokens) {\r\n const s = scoreToken(hay, token);\r\n if (s === 0) return 0;\r\n total += s;\r\n }\r\n return total / tokens.length;\r\n}\r\n\r\n/**\r\n * Filter `groups` against the query. Within each group, items are\r\n * surfaced in descending score order (most relevant first). Group\r\n * order itself is preserved — groups are author-defined categories,\r\n * not relevance buckets.\r\n *\r\n * Empty / whitespace-only query → return groups untouched (just drop\r\n * the empty ones). Preserves the original \"no query = browse\" UX.\r\n */\r\nfunction filterGroups(groups: CommandPaletteGroup[], query: string): CommandPaletteGroup[] {\r\n const q = query.trim();\r\n if (!q) {\r\n return groups\r\n .map((g) => ({ id: g.id, title: g.title, items: g.items }))\r\n .filter((g) => g.items.length > 0);\r\n }\r\n\r\n const out: CommandPaletteGroup[] = [];\r\n for (const g of groups) {\r\n const scored: Array<{ item: CommandPaletteItem; score: number }> = [];\r\n for (const it of g.items) {\r\n const hay = `${it.label} ${it.keywords || \"\"}`;\r\n const s = scoreQuery(hay, q);\r\n if (s > 0) scored.push({ item: it, score: s });\r\n }\r\n if (scored.length === 0) continue;\r\n scored.sort((a, b) => b.score - a.score);\r\n out.push({ id: g.id, title: g.title, items: scored.map((s) => s.item) });\r\n }\r\n return out;\r\n}\r\n\r\nfunction CommandPalette({\r\n open,\r\n onClose,\r\n groups = [],\r\n recentItems,\r\n pinnedItems,\r\n placeholder = \"Rechercher une page, une action…\",\r\n emptyState = \"Aucun résultat.\",\r\n onQueryChange,\r\n labels,\r\n}: CommandPaletteProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const debouncedQuery = useDebounced(query, DEBOUNCE_MS);\r\n const [highlight, setHighlight] = React.useState(0);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const listRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const listId = React.useId();\r\n const inputId = React.useId();\r\n\r\n // R-F.2 - the v2 trap is wired on the Dialog Paper element, activated\r\n // only while the palette is open. MUI's own trap is disabled below.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef as React.RefObject<HTMLDivElement>, !!open);\r\n\r\n // H4 — synthetic groups for pinnedItems / recentItems prepended to\r\n // the host's groups. Empty extras collapse the array to `groups`\r\n // verbatim — same reference when neither prop is set, so downstream\r\n // memoisation stays valid for the no-op case.\r\n const allGroups = React.useMemo<CommandPaletteGroup[]>(() => {\r\n const hasPinned = Array.isArray(pinnedItems) && pinnedItems.length > 0;\r\n const hasRecent = Array.isArray(recentItems) && recentItems.length > 0;\r\n if (!hasPinned && !hasRecent) return groups;\r\n const out: CommandPaletteGroup[] = [];\r\n if (hasPinned) {\r\n out.push({ id: \"_pinned\", title: L.pinnedTitle, items: pinnedItems ?? [] });\r\n }\r\n if (hasRecent) {\r\n out.push({ id: \"_recent\", title: L.recentTitle, items: recentItems ?? [] });\r\n }\r\n return [...out, ...groups];\r\n }, [pinnedItems, recentItems, groups, L.pinnedTitle, L.recentTitle]);\r\n\r\n const visibleGroups = React.useMemo(\r\n () => filterGroups(allGroups, debouncedQuery),\r\n [allGroups, debouncedQuery]\r\n );\r\n const itemsOnly = React.useMemo(\r\n () => visibleGroups.flatMap((g) => g.items),\r\n [visibleGroups]\r\n );\r\n\r\n // Reset state on (re)open. Initial focus on the input is handled by\r\n // useFocusTrap above (the input carries `autoFocus`).\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setQuery(\"\");\r\n setHighlight(0);\r\n }, [open]);\r\n\r\n // Keep highlight valid when results shrink/grow\r\n React.useEffect(() => {\r\n if (highlight >= itemsOnly.length) {\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n }, [itemsOnly.length, highlight]);\r\n\r\n // Scroll the highlighted item into view\r\n React.useEffect(() => {\r\n if (!open || itemsOnly.length === 0) return;\r\n const node = listRef.current?.querySelector(`[data-item-index=\"${highlight}\"]`);\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [highlight, open, itemsOnly.length]);\r\n\r\n const activate = (index: number) => {\r\n const it = itemsOnly[index];\r\n if (!it) return;\r\n onClose?.();\r\n // Defer the action one tick so onClose can restore focus before any\r\n // navigation happens (consumer-side routing).\r\n setTimeout(() => it.onSelect?.(), 0);\r\n };\r\n\r\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h + 1) % itemsOnly.length));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h - 1 + itemsOnly.length) % itemsOnly.length));\r\n } else if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n activate(highlight);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n setHighlight(0);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setQuery(e.target.value);\r\n onQueryChange?.(e.target.value);\r\n setHighlight(0);\r\n };\r\n\r\n const activeItemId = itemsOnly[highlight] ? `${listId}-opt-${highlight}` : undefined;\r\n\r\n // MUI v9: Dialog paper + backdrop bags forwarded through slotProps.\r\n // The paper slot embeds the per-instance focus-trap ref so we\r\n // useMemo it for reference stability across renders.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: {\r\n width: \"100%\",\r\n maxWidth: 640,\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n margin: \"var(--s-3)\",\r\n overflow: \"hidden\",\r\n } satisfies SxProps<Theme>,\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n []\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={onClose}\r\n maxWidth={false}\r\n aria-labelledby={titleId}\r\n // Hand over focus management to useFocusTrap above.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n slotProps={slotProps}\r\n >\r\n <Box className=\"pui-sr-only\" id={titleId}>\r\n {L.title}\r\n </Box>\r\n\r\n {/* Search input row */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n }}\r\n >\r\n <SearchIcon\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--fg-subtle)\", fontSize: 20 }}\r\n />\r\n <Box\r\n component=\"input\"\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-controls={listId}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={activeItemId}\r\n // CP-1 — accessible name for the combobox input. The sr-only title\r\n // labels the Dialog, not this input, and a placeholder is not a\r\n // reliable accessible name; expose the placeholder text as the name.\r\n aria-label={placeholder}\r\n autoFocus\r\n value={query}\r\n onChange={onInputChange}\r\n onKeyDown={onInputKeyDown}\r\n placeholder={placeholder}\r\n sx={{\r\n flex: 1,\r\n border: 0,\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontFamily: \"inherit\",\r\n fontSize: \"var(--text-body, 14px)\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n ESC\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={onClose}\r\n aria-label={L.closeButton}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* Results listbox */}\r\n <Box\r\n ref={listRef}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-labelledby={titleId}\r\n sx={{\r\n maxHeight: 360,\r\n overflowY: \"auto\",\r\n padding: \"var(--s-2) 0\",\r\n }}\r\n >\r\n {visibleGroups.length === 0 && (\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5) var(--s-4)\",\r\n textAlign: \"center\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n {emptyState}\r\n </Box>\r\n )}\r\n {(() => {\r\n let i = -1;\r\n return visibleGroups.map((g) => {\r\n const headerId = `${listId}-h-${g.id}`;\r\n return (\r\n <Box\r\n key={g.id}\r\n role=\"group\"\r\n aria-labelledby={headerId}\r\n >\r\n <Box\r\n id={headerId}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n padding: \"var(--s-2) var(--s-4) var(--s-1)\",\r\n }}\r\n >\r\n {g.title}\r\n </Box>\r\n {g.items.map((entry) => {\r\n i += 1;\r\n const isActive = i === highlight;\r\n const idx = i;\r\n return (\r\n <Box\r\n key={entry.id}\r\n role=\"option\"\r\n id={`${listId}-opt-${idx}`}\r\n aria-selected={isActive}\r\n data-item-index={idx}\r\n onMouseEnter={() => setHighlight(idx)}\r\n onClick={() => activate(idx)}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n cursor: \"pointer\",\r\n background: isActive ? \"var(--accent-soft)\" : \"transparent\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg)\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {entry.icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg-muted)\",\r\n }}\r\n >\r\n {entry.icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n {entry.label}\r\n </Box>\r\n {entry.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {entry.shortcut}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n });\r\n })()}\r\n </Box>\r\n\r\n {/* Footer */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n background: \"var(--bg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {/* Visual-only keyboard hints. Hidden from SR — the listbox already\r\n exposes navigation via aria-activedescendant + role semantics. */}\r\n <Box aria-hidden=\"true\">{L.footerHint}</Box>\r\n {/* R-A.1 — polite live region so SR users hear the result count\r\n change as they type. aria-atomic ensures the full sentence is\r\n re-read on update. C6 — aria-relevant explicit closes NVDA +\r\n Firefox cross-sibling pull-in quirks. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\">\r\n {L.resultsCount(itemsOnly.length)}\r\n </Box>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default CommandPalette;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CommandPalette.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_Box","_IconButton","_Search","_Close","_useFocusTrap","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEBOUNCE_MS","DEFAULT_LABELS","freeze","title","footerHint","closeButton","resultsCount","pinnedTitle","recentTitle","BACKDROP_SLOT_PROPS","sx","backgroundColor","useDebounced","value","ms","out","setOut","useState","useEffect","setTimeout","clearTimeout","normalize","s","String","replace","toLowerCase","subsequenceRun","hay","token","consecutive","bestConsecutive","h","length","scoreToken","startsWith","wbIdx","indexOf","subIdx","Math","min","run","scoreQuery","haystack","query","tokens","split","filter","Boolean","total","filterGroups","groups","q","trim","map","g","id","items","scored","it","label","keywords","push","item","score","sort","a","b","CommandPalette","open","onClose","recentItems","pinnedItems","placeholder","emptyState","onQueryChange","labels","L","useMemo","mergeLabels","setQuery","debouncedQuery","highlight","setHighlight","inputRef","useRef","listRef","titleId","useId","listId","inputId","paperRef","useFocusTrap","allGroups","hasPinned","Array","isArray","hasRecent","visibleGroups","itemsOnly","flatMap","max","node","current","querySelector","scrollIntoView","block","activate","index","onSelect","onInputKeyDown","key","preventDefault","onInputChange","target","activeItemId","undefined","slotProps","paper","ref","width","maxWidth","borderRadius","boxShadow","margin","overflow","backdrop","jsxs","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","children","jsx","className","display","alignItems","gap","padding","borderBottom","color","fontSize","component","type","role","autoFocus","onChange","onKeyDown","flex","border","outline","background","fontFamily","fontWeight","size","onClick","maxHeight","overflowY","textAlign","headerId","textTransform","letterSpacing","entry","isActive","idx","onMouseEnter","cursor","icon","minWidth","textOverflow","whiteSpace","shortcut","justifyContent","borderTop","_default","exports"],"sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * CommandPalette - Portnet UI v2\r\n *\r\n * Charter §03 / §07 · ⌘K command palette. Keyboard-first launcher for pages\r\n * and actions across the app.\r\n *\r\n * const [open, setOpen] = useState(false);\r\n * useEffect(() => {\r\n * const onKey = (e) => {\r\n * if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\r\n * e.preventDefault();\r\n * setOpen(true);\r\n * }\r\n * };\r\n * window.addEventListener(\"keydown\", onKey);\r\n * return () => window.removeEventListener(\"keydown\", onKey);\r\n * }, []);\r\n *\r\n * <CommandPalette\r\n * open={open}\r\n * onClose={() => setOpen(false)}\r\n * groups={[\r\n * { id: \"pages\", title: \"Pages\", items: [\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * { id: \"titres\", label: \"Titres d'importation\", onSelect: () => nav(\"/titres\") },\r\n * ]},\r\n * { id: \"actions\", title: \"Actions\", items: [\r\n * { id: \"new-titre\", label: \"Nouveau titre\", icon: <AddIcon />, shortcut: \"C\", onSelect: createTitre },\r\n * ]},\r\n * ]}\r\n * />\r\n *\r\n * Recent + Pinned items (Batch 16 / H4)\r\n * -------------------------------------\r\n * <CommandPalette\r\n * pinnedItems={[\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * ]}\r\n * recentItems={[\r\n * { id: \"titre-2025-IM-0042\", label: \"2025-IM-0042 (SOFRANE SA)\", onSelect: () => nav(\"/titres/2025-IM-0042\") },\r\n * ]}\r\n * groups={[ ... ]}\r\n * />\r\n *\r\n * Both extras are HOST-MANAGED. Lib does NOT track selections or\r\n * pinning state — track in your per-item onSelect handler and\r\n * persist to localStorage / server prefs as a host concern.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <CommandPalette\r\n * placeholder=\"Search a page or action…\"\r\n * emptyState=\"No result.\"\r\n * labels={{\r\n * title: \"Command palette\",\r\n * footerHint: \"↑↓ to navigate · ↵ to select · Esc to close\",\r\n * closeButton: \"Close palette\",\r\n * resultsCount: (n) => `${n} result${n === 1 ? \"\" : \"s\"}`,\r\n * pinnedTitle: \"Pinned\",\r\n * recentTitle: \"Recent\",\r\n * }}\r\n * />\r\n *\r\n * `resultsCount` is a function so the host can plug in proper plural\r\n * rules (Intl.PluralRules, ICU MessageFormat, i18next, …).\r\n *\r\n * Matching behaviour (Batch 13 / D2):\r\n * The search is fuzzy. Each match is scored across four tiers\r\n * (prefix > word-boundary > substring > subsequence) and within\r\n * each group items are surfaced in descending score order.\r\n * Multi-token queries (\"tit imp\") split on whitespace and require\r\n * every token to hit somewhere; final score is the per-token\r\n * average. Diacritics are folded — \"Emile\" matches \"Émile\".\r\n *\r\n * Focus management (R-F.2):\r\n * Backed by the v2 useFocusTrap hook (Batch 3). The search <input>\r\n * declares `autoFocus`, so on open the trap's initial-focus rAF\r\n * lands directly on it. The input is a role=\"combobox\" and carries an\r\n * aria-label (CP-1) so screen readers announce a name, not just a role.\r\n */\r\n\r\nconst DEBOUNCE_MS = 80;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n title: \"Palette de commandes\",\r\n footerHint: \"↑↓ pour naviguer · ↵ pour sélectionner · Esc pour fermer\",\r\n closeButton: \"Fermer la palette\",\r\n resultsCount: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n pinnedTitle: \"Épinglés\",\r\n recentTitle: \"Récents\",\r\n});\r\n\r\n// MUI v9: backdrop slot bag. Hoisted — its content (only an sx token)\r\n// is independent of any palette instance state.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-G.2 / R-AI.1 - backdrop derived from the live --fg token (matches\r\n // Modal). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nexport interface CommandPaletteItem {\r\n id: string | number;\r\n label: React.ReactNode;\r\n icon?: React.ReactNode | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n keywords?: string | undefined;\r\n onSelect?: (() => void) | undefined;\r\n}\r\n\r\nexport interface CommandPaletteGroup {\r\n id: string;\r\n title?: React.ReactNode | undefined;\r\n items: CommandPaletteItem[];\r\n}\r\n\r\nexport interface CommandPaletteLabels {\r\n title?: string | undefined;\r\n footerHint?: string | undefined;\r\n closeButton?: string | undefined;\r\n resultsCount?: ((n: number) => React.ReactNode) | undefined;\r\n pinnedTitle?: React.ReactNode | undefined;\r\n recentTitle?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n groups?: CommandPaletteGroup[] | undefined;\r\n recentItems?: CommandPaletteItem[] | undefined;\r\n pinnedItems?: CommandPaletteItem[] | undefined;\r\n placeholder?: string | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n onQueryChange?: ((q: string) => void) | undefined;\r\n labels?: CommandPaletteLabels | undefined;\r\n}\r\n\r\nfunction useDebounced<T>(value: T, ms: number): T {\r\n const [out, setOut] = React.useState(value);\r\n React.useEffect(() => {\r\n const t = setTimeout(() => setOut(value), ms);\r\n return () => clearTimeout(t);\r\n }, [value, ms]);\r\n return out;\r\n}\r\n\r\n/* ── Fuzzy matching (D2) ───────────────────────────────────────────────\r\n * Module-level pure helpers. No external dep, no allocation per match\r\n * beyond the obligatory tokenisation Array.\r\n *\r\n * Score scale is conventional, NOT meaningful in absolute terms:\r\n * - 0 → no match (filtered out)\r\n * - higher → more relevant (sorted descending within each group)\r\n */\r\n\r\n/**\r\n * NFD-normalise + strip combining marks + lowercase. Folds diacritics\r\n * so \"Émile\" → \"emile\" and \"Café\" → \"cafe\", letting users search\r\n * without typing accents. The unicode range \\u0300-\\u036F covers the\r\n * Combining Diacritical Marks block (U+0300..U+036F).\r\n */\r\nfunction normalize(s: string): string {\r\n if (!s) return \"\";\r\n return String(s).normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Subsequence match score — how well does `token` appear (in order,\r\n * not necessarily contiguous) inside `hay`?\r\n *\r\n * - Returns 0 if any character is missing.\r\n * - Otherwise returns the longest CONSECUTIVE run divided by the\r\n * token length. So \"imp\" inside \"important\" gets ratio 1.0\r\n * (whole word matched contiguously), while \"imp\" inside\r\n * \"i_m_p\" (gaps) gets a low ratio.\r\n *\r\n * The contiguous-run heuristic is much cheaper than a full Smith-\r\n * Waterman and good enough for command-palette UX.\r\n */\r\nfunction subsequenceRun(hay: string, token: string): number {\r\n let i = 0;\r\n let consecutive = 0;\r\n let bestConsecutive = 0;\r\n for (let h = 0; h < hay.length && i < token.length; h += 1) {\r\n if (hay[h] === token[i]) {\r\n i += 1;\r\n consecutive += 1;\r\n if (consecutive > bestConsecutive) bestConsecutive = consecutive;\r\n } else {\r\n consecutive = 0;\r\n }\r\n }\r\n if (i < token.length) return 0;\r\n return bestConsecutive / token.length;\r\n}\r\n\r\n/**\r\n * Score a single token against a haystack. Four tiers, best wins.\r\n * Both inputs are assumed already normalised (lowercase, no diacritics).\r\n */\r\nfunction scoreToken(hay: string, token: string): number {\r\n if (hay.startsWith(token)) return 100;\r\n\r\n const wbIdx = hay.indexOf(\" \" + token);\r\n if (wbIdx >= 0) return 80;\r\n\r\n const subIdx = hay.indexOf(token);\r\n if (subIdx >= 0) {\r\n return 60 - Math.min(20, subIdx * 0.1);\r\n }\r\n\r\n const run = subsequenceRun(hay, token);\r\n if (run > 0) return 40 * run;\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Score a multi-token query. Splits on whitespace; every token must hit\r\n * somewhere. Returns the average across tokens, or 0 if any token misses.\r\n */\r\nfunction scoreQuery(haystack: string, query: string): number {\r\n const hay = normalize(haystack);\r\n const tokens = normalize(query).split(/\\s+/).filter(Boolean);\r\n if (tokens.length === 0) return 1;\r\n if (!hay) return 0;\r\n\r\n let total = 0;\r\n for (const token of tokens) {\r\n const s = scoreToken(hay, token);\r\n if (s === 0) return 0;\r\n total += s;\r\n }\r\n return total / tokens.length;\r\n}\r\n\r\n/**\r\n * Filter `groups` against the query. Within each group, items are\r\n * surfaced in descending score order (most relevant first). Group\r\n * order itself is preserved — groups are author-defined categories,\r\n * not relevance buckets.\r\n *\r\n * Empty / whitespace-only query → return groups untouched (just drop\r\n * the empty ones). Preserves the original \"no query = browse\" UX.\r\n */\r\nfunction filterGroups(groups: CommandPaletteGroup[], query: string): CommandPaletteGroup[] {\r\n const q = query.trim();\r\n if (!q) {\r\n return groups\r\n .map((g) => ({ id: g.id, title: g.title, items: g.items }))\r\n .filter((g) => g.items.length > 0);\r\n }\r\n\r\n const out: CommandPaletteGroup[] = [];\r\n for (const g of groups) {\r\n const scored: Array<{ item: CommandPaletteItem; score: number }> = [];\r\n for (const it of g.items) {\r\n const hay = `${it.label} ${it.keywords || \"\"}`;\r\n const s = scoreQuery(hay, q);\r\n if (s > 0) scored.push({ item: it, score: s });\r\n }\r\n if (scored.length === 0) continue;\r\n scored.sort((a, b) => b.score - a.score);\r\n out.push({ id: g.id, title: g.title, items: scored.map((s) => s.item) });\r\n }\r\n return out;\r\n}\r\n\r\nfunction CommandPalette({\r\n open,\r\n onClose,\r\n groups = [],\r\n recentItems,\r\n pinnedItems,\r\n placeholder = \"Rechercher une page, une action…\",\r\n emptyState = \"Aucun résultat.\",\r\n onQueryChange,\r\n labels,\r\n}: CommandPaletteProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const debouncedQuery = useDebounced(query, DEBOUNCE_MS);\r\n const [highlight, setHighlight] = React.useState(0);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const listRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const listId = React.useId();\r\n const inputId = React.useId();\r\n\r\n // R-F.2 - the v2 trap is wired on the Dialog Paper element, activated\r\n // only while the palette is open. MUI's own trap is disabled below.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef as React.RefObject<HTMLDivElement>, !!open);\r\n\r\n // H4 — synthetic groups for pinnedItems / recentItems prepended to\r\n // the host's groups. Empty extras collapse the array to `groups`\r\n // verbatim — same reference when neither prop is set, so downstream\r\n // memoisation stays valid for the no-op case.\r\n const allGroups = React.useMemo<CommandPaletteGroup[]>(() => {\r\n const hasPinned = Array.isArray(pinnedItems) && pinnedItems.length > 0;\r\n const hasRecent = Array.isArray(recentItems) && recentItems.length > 0;\r\n if (!hasPinned && !hasRecent) return groups;\r\n const out: CommandPaletteGroup[] = [];\r\n if (hasPinned) {\r\n out.push({ id: \"_pinned\", title: L.pinnedTitle, items: pinnedItems ?? [] });\r\n }\r\n if (hasRecent) {\r\n out.push({ id: \"_recent\", title: L.recentTitle, items: recentItems ?? [] });\r\n }\r\n return [...out, ...groups];\r\n }, [pinnedItems, recentItems, groups, L.pinnedTitle, L.recentTitle]);\r\n\r\n const visibleGroups = React.useMemo(\r\n () => filterGroups(allGroups, debouncedQuery),\r\n [allGroups, debouncedQuery]\r\n );\r\n const itemsOnly = React.useMemo(\r\n () => visibleGroups.flatMap((g) => g.items),\r\n [visibleGroups]\r\n );\r\n\r\n // Reset state on (re)open. Initial focus on the input is handled by\r\n // useFocusTrap above (the input carries `autoFocus`).\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setQuery(\"\");\r\n setHighlight(0);\r\n }, [open]);\r\n\r\n // Keep highlight valid when results shrink/grow\r\n React.useEffect(() => {\r\n if (highlight >= itemsOnly.length) {\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n }, [itemsOnly.length, highlight]);\r\n\r\n // Scroll the highlighted item into view\r\n React.useEffect(() => {\r\n if (!open || itemsOnly.length === 0) return;\r\n const node = listRef.current?.querySelector(`[data-item-index=\"${highlight}\"]`);\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [highlight, open, itemsOnly.length]);\r\n\r\n const activate = (index: number) => {\r\n const it = itemsOnly[index];\r\n if (!it) return;\r\n onClose?.();\r\n // Defer the action one tick so onClose can restore focus before any\r\n // navigation happens (consumer-side routing).\r\n setTimeout(() => it.onSelect?.(), 0);\r\n };\r\n\r\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h + 1) % itemsOnly.length));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h - 1 + itemsOnly.length) % itemsOnly.length));\r\n } else if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n activate(highlight);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n setHighlight(0);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setQuery(e.target.value);\r\n onQueryChange?.(e.target.value);\r\n setHighlight(0);\r\n };\r\n\r\n const activeItemId = itemsOnly[highlight] ? `${listId}-opt-${highlight}` : undefined;\r\n\r\n // MUI v9: Dialog paper + backdrop bags forwarded through slotProps.\r\n // The paper slot embeds the per-instance focus-trap ref so we\r\n // useMemo it for reference stability across renders.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: {\r\n width: \"100%\",\r\n maxWidth: 640,\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n margin: \"var(--s-3)\",\r\n overflow: \"hidden\",\r\n } satisfies SxProps<Theme>,\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n []\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={onClose}\r\n maxWidth={false}\r\n aria-labelledby={titleId}\r\n // Hand over focus management to useFocusTrap above.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n slotProps={slotProps}\r\n >\r\n <Box className=\"pui-sr-only\" id={titleId}>\r\n {L.title}\r\n </Box>\r\n\r\n {/* Search input row */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n }}\r\n >\r\n <SearchIcon\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--fg-subtle)\", fontSize: 20 }}\r\n />\r\n <Box\r\n component=\"input\"\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-controls={listId}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={activeItemId}\r\n // CP-1 — accessible name for the combobox input. The sr-only title\r\n // labels the Dialog, not this input, and a placeholder is not a\r\n // reliable accessible name; expose the placeholder text as the name.\r\n aria-label={placeholder}\r\n autoFocus\r\n value={query}\r\n onChange={onInputChange}\r\n onKeyDown={onInputKeyDown}\r\n placeholder={placeholder}\r\n sx={{\r\n flex: 1,\r\n border: 0,\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontFamily: \"inherit\",\r\n fontSize: \"var(--text-body, 14px)\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n ESC\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={onClose}\r\n aria-label={L.closeButton}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* Results listbox */}\r\n <Box\r\n ref={listRef}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-labelledby={titleId}\r\n sx={{\r\n maxHeight: 360,\r\n overflowY: \"auto\",\r\n padding: \"var(--s-2) 0\",\r\n }}\r\n >\r\n {visibleGroups.length === 0 && (\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5) var(--s-4)\",\r\n textAlign: \"center\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n {emptyState}\r\n </Box>\r\n )}\r\n {(() => {\r\n let i = -1;\r\n return visibleGroups.map((g) => {\r\n const headerId = `${listId}-h-${g.id}`;\r\n return (\r\n <Box\r\n key={g.id}\r\n role=\"group\"\r\n aria-labelledby={headerId}\r\n >\r\n <Box\r\n id={headerId}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n padding: \"var(--s-2) var(--s-4) var(--s-1)\",\r\n }}\r\n >\r\n {g.title}\r\n </Box>\r\n {g.items.map((entry) => {\r\n i += 1;\r\n const isActive = i === highlight;\r\n const idx = i;\r\n return (\r\n <Box\r\n key={entry.id}\r\n role=\"option\"\r\n id={`${listId}-opt-${idx}`}\r\n aria-selected={isActive}\r\n data-item-index={idx}\r\n onMouseEnter={() => setHighlight(idx)}\r\n onClick={() => activate(idx)}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n cursor: \"pointer\",\r\n background: isActive ? \"var(--accent-soft)\" : \"transparent\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg)\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {entry.icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg-muted)\",\r\n }}\r\n >\r\n {entry.icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n {entry.label}\r\n </Box>\r\n {entry.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {entry.shortcut}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n });\r\n })()}\r\n </Box>\r\n\r\n {/* Footer */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n background: \"var(--bg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {/* Visual-only keyboard hints. Hidden from SR — the listbox already\r\n exposes navigation via aria-activedescendant + role semantics. */}\r\n <Box aria-hidden=\"true\">{L.footerHint}</Box>\r\n {/* R-A.1 — polite live region so SR users hear the result count\r\n change as they type. aria-atomic ensures the full sentence is\r\n re-read on update. C6 — aria-relevant explicit closes NVDA +\r\n Firefox cross-sibling pull-in quirks. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\">\r\n {L.resultsCount(itemsOnly.length)}\r\n </Box>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default CommandPalette;\r\n"],"mappings":"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","ignoreList":[]}
@@ -3,22 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _Modal = _interopRequireDefault(require("./Modal"));
9
9
  var _Button = _interopRequireDefault(require("./Button"));
10
10
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
11
11
  var _mergeLabels = require("../utils/mergeLabels");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
16
- function _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); }
17
- 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; }
18
- 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; }
19
- 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; }
20
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
- 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); } /**
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
22
16
  * ConfirmDialog - Portnet UI v2
23
17
  *
24
18
  * Charter §04.4 - confirmation pattern for irreversible actions.
@@ -47,56 +41,54 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
47
41
  * localised via the `labels` prop:
48
42
  *
49
43
  * <ConfirmDialog labels={{ impactHeading: "Consequences" }} ... />
50
- */
51
- var DEFAULT_LABELS = Object.freeze({
44
+ */const DEFAULT_LABELS = Object.freeze({
52
45
  impactHeading: "Conséquences"
53
46
  });
54
- function ConfirmDialog(_ref) {
55
- var open = _ref.open,
56
- onClose = _ref.onClose,
57
- onConfirm = _ref.onConfirm,
58
- title = _ref.title,
59
- description = _ref.description,
60
- _ref$confirmLabel = _ref.confirmLabel,
61
- confirmLabel = _ref$confirmLabel === void 0 ? "Confirmer" : _ref$confirmLabel,
62
- _ref$cancelLabel = _ref.cancelLabel,
63
- cancelLabel = _ref$cancelLabel === void 0 ? "Annuler" : _ref$cancelLabel,
64
- _ref$confirmVariant = _ref.confirmVariant,
65
- confirmVariant = _ref$confirmVariant === void 0 ? "primary" : _ref$confirmVariant,
66
- _ref$loading = _ref.loading,
67
- loading = _ref$loading === void 0 ? false : _ref$loading,
68
- impact = _ref.impact,
69
- labels = _ref.labels,
70
- children = _ref.children;
71
- var L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
47
+ function ConfirmDialog({
48
+ open,
49
+ onClose,
50
+ onConfirm,
51
+ title,
52
+ description,
53
+ confirmLabel = "Confirmer",
54
+ cancelLabel = "Annuler",
55
+ confirmVariant = "primary",
56
+ loading = false,
57
+ impact,
58
+ // optional list of bullet-point consequences
59
+ labels,
60
+ children
61
+ }) {
62
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
72
63
 
73
64
  // R-Ar.1 - stable id linking the impact heading to its <ul>
74
65
  // so SR users hear the relationship as a single semantic unit.
75
- var impactHeadingId = React.useId();
76
- var hasImpact = !!(impact && impact.length > 0);
77
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Modal["default"], _objectSpread(_objectSpread(_objectSpread({
66
+ const impactHeadingId = React.useId();
67
+ const hasImpact = !!(impact && impact.length > 0);
68
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Modal.default, {
78
69
  title: title,
79
70
  subtitle: description,
80
71
  size: "sm",
81
72
  footer: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
82
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
73
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
83
74
  variant: "ghost",
84
75
  onClick: onClose,
85
76
  disabled: loading,
86
77
  children: cancelLabel
87
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
88
79
  variant: confirmVariant,
89
80
  loading: loading,
90
81
  onClick: onConfirm,
91
82
  children: confirmLabel
92
83
  })]
93
- })
94
- }, open !== undefined ? {
95
- open: open
96
- } : {}), onClose !== undefined ? {
97
- onClose: onClose
98
- } : {}), {}, {
99
- children: [hasImpact && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
84
+ }),
85
+ ...(open !== undefined ? {
86
+ open
87
+ } : {}),
88
+ ...(onClose !== undefined ? {
89
+ onClose
90
+ } : {}),
91
+ children: [hasImpact && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
100
92
  sx: {
101
93
  background: "var(--bg-subtle)",
102
94
  border: "1px solid var(--border)",
@@ -104,7 +96,7 @@ function ConfirmDialog(_ref) {
104
96
  padding: "var(--s-3) var(--s-4)",
105
97
  marginBottom: children ? 2 : 0
106
98
  },
107
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
99
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
108
100
  component: "h3",
109
101
  id: impactHeadingId,
110
102
  sx: {
@@ -121,7 +113,7 @@ function ConfirmDialog(_ref) {
121
113
  lineHeight: "var(--lh-snug)"
122
114
  },
123
115
  children: L.impactHeading
124
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
116
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
125
117
  component: "ul",
126
118
  "aria-labelledby": impactHeadingId,
127
119
  sx: {
@@ -133,19 +125,17 @@ function ConfirmDialog(_ref) {
133
125
  fontSize: "var(--text-sm)",
134
126
  color: "var(--fg)"
135
127
  },
136
- children: impact === null || impact === void 0 ? void 0 : impact.map(function (item, i) {
137
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
138
- component: "li",
139
- sx: {
140
- marginBottom: "var(--s-1)",
141
- lineHeight: "var(--lh-normal)"
142
- },
143
- children: item
144
- }, i);
145
- })
128
+ children: impact?.map((item, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
129
+ component: "li",
130
+ sx: {
131
+ marginBottom: "var(--s-1)",
132
+ lineHeight: "var(--lh-normal)"
133
+ },
134
+ children: item
135
+ }, i))
146
136
  })]
147
137
  }), children]
148
- }));
138
+ });
149
139
  }
150
- var _default = exports["default"] = ConfirmDialog;
140
+ var _default = exports.default = ConfirmDialog;
151
141
  //# sourceMappingURL=ConfirmDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.js","names":["React","_interopRequireWildcard","require","_Modal","_interopRequireDefault","_Button","_Box","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","DEFAULT_LABELS","freeze","impactHeading","ConfirmDialog","_ref","open","onClose","onConfirm","title","description","_ref$confirmLabel","confirmLabel","_ref$cancelLabel","cancelLabel","_ref$confirmVariant","confirmVariant","_ref$loading","loading","impact","labels","children","L","mergeLabels","impactHeadingId","useId","hasImpact","jsxs","subtitle","size","footer","Fragment","jsx","variant","onClick","disabled","sx","background","border","borderRadius","padding","marginBottom","component","id","margin","fontSize","fontWeight","color","textTransform","letterSpacing","lineHeight","paddingInlineStart","map","item","_default","exports"],"sources":["../../../src/lib/v2/components/ConfirmDialog.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Modal from \"./Modal\";\r\nimport Button from \"./Button\";\r\nimport type { ButtonProps } from \"./Button\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ConfirmDialog - Portnet UI v2\r\n *\r\n * Charter §04.4 - confirmation pattern for irreversible actions.\r\n * Use whenever an action cannot be undone with a 5-s toast.\r\n *\r\n * R-5.1 - Action irréversible → ConfirmDialog avec récap des conséquences.\r\n * R-5.2 - Suppression multiple → forcer la saisie ou clic bouton danger.\r\n *\r\n * <ConfirmDialog\r\n * open={open}\r\n * onClose={close}\r\n * onConfirm={remove}\r\n * title=\"Supprimer ce titre ?\"\r\n * description=\"Cette action est définitive.\"\r\n * confirmLabel=\"Supprimer\"\r\n * confirmVariant=\"danger\"\r\n * impact={[\r\n * \"Le titre 2025-IM-0042 sera supprimé.\",\r\n * \"Les pièces jointes liées seront archivées.\",\r\n * ]}\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * confirmLabel / cancelLabel are direct overrides on the props.\r\n * The \"Conséquences\" heading rendered above the impact list is\r\n * localised via the `labels` prop:\r\n *\r\n * <ConfirmDialog labels={{ impactHeading: \"Consequences\" }} ... />\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n impactHeading: \"Conséquences\",\r\n});\r\n\r\nexport interface ConfirmDialogLabels {\r\n impactHeading?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface ConfirmDialogProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n onConfirm?: (() => void) | undefined;\r\n title?: React.ReactNode | undefined;\r\n description?: React.ReactNode | undefined;\r\n confirmLabel?: React.ReactNode | undefined;\r\n cancelLabel?: React.ReactNode | undefined;\r\n confirmVariant?: ButtonProps[\"variant\"] | undefined;\r\n loading?: boolean | undefined;\r\n impact?: React.ReactNode[] | undefined;\r\n labels?: ConfirmDialogLabels | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction ConfirmDialog({\r\n open,\r\n onClose,\r\n onConfirm,\r\n title,\r\n description,\r\n confirmLabel = \"Confirmer\",\r\n cancelLabel = \"Annuler\",\r\n confirmVariant = \"primary\",\r\n loading = false,\r\n impact, // optional list of bullet-point consequences\r\n labels,\r\n children,\r\n}: ConfirmDialogProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // R-Ar.1 - stable id linking the impact heading to its <ul>\r\n // so SR users hear the relationship as a single semantic unit.\r\n const impactHeadingId = React.useId();\r\n const hasImpact = !!(impact && impact.length > 0);\r\n\r\n return (\r\n <Modal\r\n title={title}\r\n subtitle={description}\r\n size=\"sm\"\r\n footer={\r\n <>\r\n <Button variant=\"ghost\" onClick={onClose} disabled={loading}>\r\n {cancelLabel}\r\n </Button>\r\n <Button variant={confirmVariant} loading={loading} onClick={onConfirm}>\r\n {confirmLabel}\r\n </Button>\r\n </>\r\n }\r\n {...(open !== undefined ? { open } : {})}\r\n {...(onClose !== undefined ? { onClose } : {})}\r\n >\r\n {hasImpact && (\r\n <Box\r\n sx={{\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n marginBottom: children ? 2 : 0,\r\n }}\r\n >\r\n <Box\r\n component=\"h3\"\r\n id={impactHeadingId}\r\n sx={{\r\n // Modal title is <h2>; this is the correct next level. Visual\r\n // styling (uppercase caption) overrides the default <h3>.\r\n margin: 0,\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: 1,\r\n textTransform: \"uppercase\",\r\n /* A7-02 — was a raw \"0.04em\"; now the promoted token. */\r\n letterSpacing: \"var(--ls-wide)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {L.impactHeading}\r\n </Box>\r\n <Box\r\n component=\"ul\"\r\n aria-labelledby={impactHeadingId}\r\n sx={{\r\n margin: 0,\r\n // RTL-safe: paddingInlineStart resets correctly in both\r\n // LTR (left) and RTL (right). Was paddingLeft, which in\r\n // Arabic indented to the wrong side.\r\n paddingInlineStart: \"var(--s-5)\",\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {impact?.map((item, i) => (\r\n <Box\r\n component=\"li\"\r\n key={i}\r\n sx={{ marginBottom: \"var(--s-1)\", lineHeight: \"var(--lh-normal)\" }}\r\n >\r\n {item}\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n )}\r\n {children}\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default ConfirmDialog;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConfirmDialog.js","names":["React","_interopRequireWildcard","require","_Modal","_interopRequireDefault","_Button","_Box","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_LABELS","freeze","impactHeading","ConfirmDialog","open","onClose","onConfirm","title","description","confirmLabel","cancelLabel","confirmVariant","loading","impact","labels","children","L","mergeLabels","impactHeadingId","useId","hasImpact","length","jsxs","subtitle","size","footer","Fragment","jsx","variant","onClick","disabled","undefined","sx","background","border","borderRadius","padding","marginBottom","component","id","margin","fontSize","fontWeight","color","textTransform","letterSpacing","lineHeight","paddingInlineStart","map","item","_default","exports"],"sources":["../../../src/lib/v2/components/ConfirmDialog.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Modal from \"./Modal\";\r\nimport Button from \"./Button\";\r\nimport type { ButtonProps } from \"./Button\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ConfirmDialog - Portnet UI v2\r\n *\r\n * Charter §04.4 - confirmation pattern for irreversible actions.\r\n * Use whenever an action cannot be undone with a 5-s toast.\r\n *\r\n * R-5.1 - Action irréversible → ConfirmDialog avec récap des conséquences.\r\n * R-5.2 - Suppression multiple → forcer la saisie ou clic bouton danger.\r\n *\r\n * <ConfirmDialog\r\n * open={open}\r\n * onClose={close}\r\n * onConfirm={remove}\r\n * title=\"Supprimer ce titre ?\"\r\n * description=\"Cette action est définitive.\"\r\n * confirmLabel=\"Supprimer\"\r\n * confirmVariant=\"danger\"\r\n * impact={[\r\n * \"Le titre 2025-IM-0042 sera supprimé.\",\r\n * \"Les pièces jointes liées seront archivées.\",\r\n * ]}\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * confirmLabel / cancelLabel are direct overrides on the props.\r\n * The \"Conséquences\" heading rendered above the impact list is\r\n * localised via the `labels` prop:\r\n *\r\n * <ConfirmDialog labels={{ impactHeading: \"Consequences\" }} ... />\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n impactHeading: \"Conséquences\",\r\n});\r\n\r\nexport interface ConfirmDialogLabels {\r\n impactHeading?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface ConfirmDialogProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n onConfirm?: (() => void) | undefined;\r\n title?: React.ReactNode | undefined;\r\n description?: React.ReactNode | undefined;\r\n confirmLabel?: React.ReactNode | undefined;\r\n cancelLabel?: React.ReactNode | undefined;\r\n confirmVariant?: ButtonProps[\"variant\"] | undefined;\r\n loading?: boolean | undefined;\r\n impact?: React.ReactNode[] | undefined;\r\n labels?: ConfirmDialogLabels | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction ConfirmDialog({\r\n open,\r\n onClose,\r\n onConfirm,\r\n title,\r\n description,\r\n confirmLabel = \"Confirmer\",\r\n cancelLabel = \"Annuler\",\r\n confirmVariant = \"primary\",\r\n loading = false,\r\n impact, // optional list of bullet-point consequences\r\n labels,\r\n children,\r\n}: ConfirmDialogProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // R-Ar.1 - stable id linking the impact heading to its <ul>\r\n // so SR users hear the relationship as a single semantic unit.\r\n const impactHeadingId = React.useId();\r\n const hasImpact = !!(impact && impact.length > 0);\r\n\r\n return (\r\n <Modal\r\n title={title}\r\n subtitle={description}\r\n size=\"sm\"\r\n footer={\r\n <>\r\n <Button variant=\"ghost\" onClick={onClose} disabled={loading}>\r\n {cancelLabel}\r\n </Button>\r\n <Button variant={confirmVariant} loading={loading} onClick={onConfirm}>\r\n {confirmLabel}\r\n </Button>\r\n </>\r\n }\r\n {...(open !== undefined ? { open } : {})}\r\n {...(onClose !== undefined ? { onClose } : {})}\r\n >\r\n {hasImpact && (\r\n <Box\r\n sx={{\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n marginBottom: children ? 2 : 0,\r\n }}\r\n >\r\n <Box\r\n component=\"h3\"\r\n id={impactHeadingId}\r\n sx={{\r\n // Modal title is <h2>; this is the correct next level. Visual\r\n // styling (uppercase caption) overrides the default <h3>.\r\n margin: 0,\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: 1,\r\n textTransform: \"uppercase\",\r\n /* A7-02 — was a raw \"0.04em\"; now the promoted token. */\r\n letterSpacing: \"var(--ls-wide)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {L.impactHeading}\r\n </Box>\r\n <Box\r\n component=\"ul\"\r\n aria-labelledby={impactHeadingId}\r\n sx={{\r\n margin: 0,\r\n // RTL-safe: paddingInlineStart resets correctly in both\r\n // LTR (left) and RTL (right). Was paddingLeft, which in\r\n // Arabic indented to the wrong side.\r\n paddingInlineStart: \"var(--s-5)\",\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {impact?.map((item, i) => (\r\n <Box\r\n component=\"li\"\r\n key={i}\r\n sx={{ marginBottom: \"var(--s-1)\", lineHeight: \"var(--lh-normal)\" }}\r\n >\r\n {item}\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n )}\r\n {children}\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default ConfirmDialog;\r\n"],"mappings":"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","ignoreList":[]}