@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,15 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
11
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
12
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
13
1
  import * as React from "react";
14
2
  import { createPortal } from "react-dom";
15
3
  import Box from "@mui/material/Box";
@@ -51,21 +39,19 @@ import { mergeLabels } from "../utils/mergeLabels";
51
39
 
52
40
  /** Resolved tooltip position; `placement` is the chosen side (or "center"). */
53
41
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
54
- var PADDING = 8; // spotlight extra around target bbox
55
- var TOOLTIP_GAP = 12; // distance from target to tooltip edge
56
- var TOOLTIP_WIDTH = 320;
57
- var TOOLTIP_MAX_HEIGHT = 360;
58
- var VIEWPORT_MARGIN = 8; // min distance from viewport edges
42
+ const PADDING = 8; // spotlight extra around target bbox
43
+ const TOOLTIP_GAP = 12; // distance from target to tooltip edge
44
+ const TOOLTIP_WIDTH = 320;
45
+ const TOOLTIP_MAX_HEIGHT = 360;
46
+ const VIEWPORT_MARGIN = 8; // min distance from viewport edges
59
47
 
60
- var DEFAULT_LABELS = Object.freeze({
48
+ const DEFAULT_LABELS = Object.freeze({
61
49
  prev: "Précédent",
62
50
  next: "Suivant",
63
51
  skip: "Ignorer",
64
52
  finish: "Terminer",
65
53
  closeAria: "Fermer la visite guidée",
66
- stepCounter: function stepCounter(cur, total) {
67
- return "".concat(cur, " sur ").concat(total);
68
- }
54
+ stepCounter: (cur, total) => `${cur} sur ${total}`
69
55
  });
70
56
 
71
57
  /**
@@ -76,9 +62,9 @@ var DEFAULT_LABELS = Object.freeze({
76
62
  function getElementRect(selector) {
77
63
  if (!selector || typeof document === "undefined") return null;
78
64
  try {
79
- var el = document.querySelector(selector);
65
+ const el = document.querySelector(selector);
80
66
  if (!el) return null;
81
- var r = el.getBoundingClientRect();
67
+ const r = el.getBoundingClientRect();
82
68
  return {
83
69
  top: r.top,
84
70
  left: r.left,
@@ -86,9 +72,9 @@ function getElementRect(selector) {
86
72
  bottom: r.bottom,
87
73
  width: r.width,
88
74
  height: r.height,
89
- el: el
75
+ el
90
76
  };
91
- } catch (_unused) {
77
+ } catch {
92
78
  // Invalid selector syntax → catch SyntaxError, return null.
93
79
  return null;
94
80
  }
@@ -100,9 +86,9 @@ function getElementRect(selector) {
100
86
  * clamps to viewport.
101
87
  */
102
88
  function computeTooltipPosition(targetRect, placement, vw, vh) {
103
- var p = placement || "auto";
89
+ let p = placement || "auto";
104
90
  if (p === "auto") {
105
- var space = {
91
+ const space = {
106
92
  top: targetRect.top,
107
93
  bottom: vh - targetRect.bottom,
108
94
  left: targetRect.left,
@@ -110,13 +96,11 @@ function computeTooltipPosition(targetRect, placement, vw, vh) {
110
96
  };
111
97
  // Pick the side with the most clearance. Stable on ties — first entry
112
98
  // wins (Object.entries order is insertion order, ES2015+).
113
- var best = Object.entries(space).sort(function (a, b) {
114
- return b[1] - a[1];
115
- })[0];
99
+ const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];
116
100
  if (best) p = best[0];
117
101
  }
118
- var top;
119
- var left;
102
+ let top;
103
+ let left;
120
104
  switch (p) {
121
105
  case "top":
122
106
  top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;
@@ -143,29 +127,29 @@ function computeTooltipPosition(targetRect, placement, vw, vh) {
143
127
  left = Math.max(VIEWPORT_MARGIN, Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN));
144
128
  top = Math.max(VIEWPORT_MARGIN, Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN));
145
129
  return {
146
- top: top,
147
- left: left,
130
+ top,
131
+ left,
148
132
  placement: p
149
133
  };
150
134
  }
151
135
 
152
136
  /* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */
153
137
 
154
- var SPOTLIGHT_BG = "color-mix(in srgb, var(--fg) 60%, transparent)";
155
- var SPOTLIGHT_BASE_SX = Object.freeze({
138
+ const SPOTLIGHT_BG = "color-mix(in srgb, var(--fg) 60%, transparent)";
139
+ const SPOTLIGHT_BASE_SX = Object.freeze({
156
140
  position: "fixed",
157
141
  background: SPOTLIGHT_BG,
158
142
  zIndex: "var(--z-modal)",
159
143
  pointerEvents: "auto"
160
144
  });
161
- var BACKDROP_FALLBACK_SX = Object.freeze({
145
+ const BACKDROP_FALLBACK_SX = Object.freeze({
162
146
  position: "fixed",
163
147
  inset: 0,
164
148
  background: SPOTLIGHT_BG,
165
149
  zIndex: "var(--z-modal)",
166
150
  pointerEvents: "auto"
167
151
  });
168
- var TOOLTIP_BASE_SX = Object.freeze({
152
+ const TOOLTIP_BASE_SX = Object.freeze({
169
153
  position: "fixed",
170
154
  width: TOOLTIP_WIDTH,
171
155
  maxHeight: TOOLTIP_MAX_HEIGHT,
@@ -177,76 +161,63 @@ var TOOLTIP_BASE_SX = Object.freeze({
177
161
  padding: "var(--s-4)",
178
162
  zIndex: "var(--z-tooltip)"
179
163
  });
180
- var TOOLTIP_HEADER_SX = Object.freeze({
164
+ const TOOLTIP_HEADER_SX = Object.freeze({
181
165
  display: "flex",
182
166
  alignItems: "flex-start",
183
167
  justifyContent: "space-between",
184
168
  gap: "var(--s-2)",
185
169
  marginBottom: "var(--s-2)"
186
170
  });
187
- var TOOLTIP_TITLE_SX = Object.freeze({
171
+ const TOOLTIP_TITLE_SX = Object.freeze({
188
172
  fontSize: "var(--text-h4)",
189
173
  fontWeight: "var(--fw-bold)",
190
174
  color: "var(--fg)"
191
175
  });
192
- var TOOLTIP_CLOSE_SX = Object.freeze({
176
+ const TOOLTIP_CLOSE_SX = Object.freeze({
193
177
  color: "var(--fg-muted)",
194
178
  marginRight: "calc(-1 * var(--s-1))",
195
179
  marginTop: "calc(-1 * var(--s-1))"
196
180
  });
197
- var TOOLTIP_CONTENT_SX = Object.freeze({
181
+ const TOOLTIP_CONTENT_SX = Object.freeze({
198
182
  fontSize: "var(--text-sm)",
199
183
  color: "var(--fg-muted)",
200
184
  marginBottom: "var(--s-3)",
201
185
  lineHeight: "var(--lh-normal)"
202
186
  });
203
- var TOOLTIP_FOOTER_SX = Object.freeze({
187
+ const TOOLTIP_FOOTER_SX = Object.freeze({
204
188
  display: "flex",
205
189
  alignItems: "center",
206
190
  justifyContent: "space-between",
207
191
  gap: "var(--s-2)"
208
192
  });
209
- var STEP_COUNTER_SX = Object.freeze({
193
+ const STEP_COUNTER_SX = Object.freeze({
210
194
  fontSize: "var(--text-xs)",
211
195
  color: "var(--fg-subtle)",
212
196
  fontVariantNumeric: "tabular-nums"
213
197
  });
214
- var NAV_BUTTONS_SX = Object.freeze({
198
+ const NAV_BUTTONS_SX = Object.freeze({
215
199
  display: "flex",
216
200
  gap: "var(--s-2)"
217
201
  });
218
- function Tour(_ref) {
219
- var open = _ref.open,
220
- steps = _ref.steps,
221
- onClose = _ref.onClose,
222
- onComplete = _ref.onComplete,
223
- labels = _ref.labels;
224
- var L = React.useMemo(function () {
225
- return mergeLabels(DEFAULT_LABELS, labels);
226
- }, [labels]);
227
- var _React$useState = React.useState(0),
228
- _React$useState2 = _slicedToArray(_React$useState, 2),
229
- stepIdx = _React$useState2[0],
230
- setStepIdx = _React$useState2[1];
231
- var _React$useState3 = React.useState(null),
232
- _React$useState4 = _slicedToArray(_React$useState3, 2),
233
- targetRect = _React$useState4[0],
234
- setTargetRect = _React$useState4[1];
235
- var _React$useState5 = React.useState(null),
236
- _React$useState6 = _slicedToArray(_React$useState5, 2),
237
- tooltipPos = _React$useState6[0],
238
- setTooltipPos = _React$useState6[1];
239
- var _React$useState7 = React.useState({
240
- w: 0,
241
- h: 0
242
- }),
243
- _React$useState8 = _slicedToArray(_React$useState7, 2),
244
- viewport = _React$useState8[0],
245
- setViewport = _React$useState8[1];
246
- var tooltipRef = React.useRef(null);
247
- var titleId = React.useId();
248
- var contentId = React.useId();
249
- var currentStep = steps && steps[stepIdx];
202
+ function Tour({
203
+ open,
204
+ steps,
205
+ onClose,
206
+ onComplete,
207
+ labels
208
+ }) {
209
+ const L = React.useMemo(() => mergeLabels(DEFAULT_LABELS, labels), [labels]);
210
+ const [stepIdx, setStepIdx] = React.useState(0);
211
+ const [targetRect, setTargetRect] = React.useState(null);
212
+ const [tooltipPos, setTooltipPos] = React.useState(null);
213
+ const [viewport, setViewport] = React.useState({
214
+ w: 0,
215
+ h: 0
216
+ });
217
+ const tooltipRef = React.useRef(null);
218
+ const titleId = React.useId();
219
+ const contentId = React.useId();
220
+ const currentStep = steps && steps[stepIdx];
250
221
 
251
222
  // Focus trap activates ONLY after tooltipPos is computed (tooltip actually
252
223
  // mounted with a non-null ref). On first open, tooltipPos is null until the
@@ -254,22 +225,22 @@ function Tour(_ref) {
254
225
  useFocusTrap(tooltipRef, !!open && tooltipPos != null);
255
226
 
256
227
  // Reset to step 0 on each open transition.
257
- React.useEffect(function () {
228
+ React.useEffect(() => {
258
229
  if (open) setStepIdx(0);
259
230
  }, [open]);
260
231
 
261
232
  // Compute target rect + tooltip position. Re-runs on step change and on
262
233
  // window scroll/resize.
263
- React.useEffect(function () {
234
+ React.useEffect(() => {
264
235
  if (!open || !currentStep) return undefined;
265
- var recompute = function recompute() {
266
- var w = window.innerWidth;
267
- var h = window.innerHeight;
236
+ const recompute = () => {
237
+ const w = window.innerWidth;
238
+ const h = window.innerHeight;
268
239
  setViewport({
269
- w: w,
270
- h: h
240
+ w,
241
+ h
271
242
  });
272
- var rect = getElementRect(currentStep.target);
243
+ const rect = getElementRect(currentStep.target);
273
244
  setTargetRect(rect);
274
245
  if (rect) {
275
246
  setTooltipPos(computeTooltipPosition(rect, currentStep.placement, w, h));
@@ -285,13 +256,13 @@ function Tour(_ref) {
285
256
  recompute();
286
257
 
287
258
  // Scroll the target into view on each step change; no-ops if not found.
288
- var initialEl = typeof document !== "undefined" ? function () {
259
+ const initialEl = typeof document !== "undefined" ? (() => {
289
260
  try {
290
261
  return document.querySelector(currentStep.target);
291
- } catch (_unused2) {
262
+ } catch {
292
263
  return null;
293
264
  }
294
- }() : null;
265
+ })() : null;
295
266
  if (initialEl && typeof initialEl.scrollIntoView === "function") {
296
267
  initialEl.scrollIntoView({
297
268
  block: "center",
@@ -304,17 +275,17 @@ function Tour(_ref) {
304
275
  // setState calls, so running it on every raw scroll event is wasteful;
305
276
  // rAF-throttle to at most once per animation frame. `true` (capture)
306
277
  // catches scroll on any ancestor (default scroll events don't bubble).
307
- var rafId = null;
308
- var onViewportChange = function onViewportChange() {
278
+ let rafId = null;
279
+ const onViewportChange = () => {
309
280
  if (rafId != null) return; // a frame is already scheduled
310
- rafId = window.requestAnimationFrame(function () {
281
+ rafId = window.requestAnimationFrame(() => {
311
282
  rafId = null;
312
283
  recompute();
313
284
  });
314
285
  };
315
286
  window.addEventListener("scroll", onViewportChange, true);
316
287
  window.addEventListener("resize", onViewportChange);
317
- return function () {
288
+ return () => {
318
289
  window.removeEventListener("scroll", onViewportChange, true);
319
290
  window.removeEventListener("resize", onViewportChange);
320
291
  if (rafId != null) window.cancelAnimationFrame(rafId);
@@ -322,92 +293,95 @@ function Tour(_ref) {
322
293
  }, [open, currentStep]);
323
294
 
324
295
  // Esc closes the tour. Window-bound — same pattern as Modal / Drawer.
325
- React.useEffect(function () {
296
+ React.useEffect(() => {
326
297
  if (!open) return undefined;
327
- var onKey = function onKey(e) {
298
+ const onKey = e => {
328
299
  if (e.key === "Escape") {
329
300
  e.preventDefault();
330
- onClose === null || onClose === void 0 ? void 0 : onClose();
301
+ onClose?.();
331
302
  }
332
303
  };
333
304
  window.addEventListener("keydown", onKey);
334
- return function () {
335
- return window.removeEventListener("keydown", onKey);
336
- };
305
+ return () => window.removeEventListener("keydown", onKey);
337
306
  }, [open, onClose]);
338
307
  if (!open || !steps || steps.length === 0 || !currentStep) return null;
339
- var total = steps.length;
340
- var isFirst = stepIdx === 0;
341
- var isLast = stepIdx === total - 1;
342
- var goNext = function goNext() {
308
+ const total = steps.length;
309
+ const isFirst = stepIdx === 0;
310
+ const isLast = stepIdx === total - 1;
311
+ const goNext = () => {
343
312
  if (isLast) {
344
- onComplete === null || onComplete === void 0 ? void 0 : onComplete();
345
- onClose === null || onClose === void 0 ? void 0 : onClose();
313
+ onComplete?.();
314
+ onClose?.();
346
315
  } else {
347
316
  setStepIdx(stepIdx + 1);
348
317
  }
349
318
  };
350
- var goPrev = function goPrev() {
319
+ const goPrev = () => {
351
320
  if (!isFirst) setStepIdx(stepIdx - 1);
352
321
  };
353
- var skip = function skip() {
354
- onClose === null || onClose === void 0 ? void 0 : onClose();
322
+ const skip = () => {
323
+ onClose?.();
355
324
  };
356
325
 
357
326
  // Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.
358
- var spotlight = targetRect && /*#__PURE__*/_jsxs(_Fragment, {
327
+ const spotlight = targetRect && /*#__PURE__*/_jsxs(_Fragment, {
359
328
  children: [/*#__PURE__*/_jsx(Box, {
360
329
  onClick: skip,
361
- sx: _objectSpread(_objectSpread({}, SPOTLIGHT_BASE_SX), {}, {
330
+ sx: {
331
+ ...SPOTLIGHT_BASE_SX,
362
332
  left: 0,
363
333
  top: 0,
364
334
  width: "100vw",
365
335
  height: Math.max(0, targetRect.top - PADDING)
366
- })
336
+ }
367
337
  }), /*#__PURE__*/_jsx(Box, {
368
338
  onClick: skip,
369
- sx: _objectSpread(_objectSpread({}, SPOTLIGHT_BASE_SX), {}, {
339
+ sx: {
340
+ ...SPOTLIGHT_BASE_SX,
370
341
  left: 0,
371
342
  top: Math.max(0, targetRect.top - PADDING),
372
343
  width: Math.max(0, targetRect.left - PADDING),
373
344
  height: targetRect.height + 2 * PADDING
374
- })
345
+ }
375
346
  }), /*#__PURE__*/_jsx(Box, {
376
347
  onClick: skip,
377
- sx: _objectSpread(_objectSpread({}, SPOTLIGHT_BASE_SX), {}, {
348
+ sx: {
349
+ ...SPOTLIGHT_BASE_SX,
378
350
  left: targetRect.right + PADDING,
379
351
  top: Math.max(0, targetRect.top - PADDING),
380
352
  width: Math.max(0, viewport.w - (targetRect.right + PADDING)),
381
353
  height: targetRect.height + 2 * PADDING
382
- })
354
+ }
383
355
  }), /*#__PURE__*/_jsx(Box, {
384
356
  onClick: skip,
385
- sx: _objectSpread(_objectSpread({}, SPOTLIGHT_BASE_SX), {}, {
357
+ sx: {
358
+ ...SPOTLIGHT_BASE_SX,
386
359
  left: 0,
387
360
  top: targetRect.bottom + PADDING,
388
361
  width: "100vw",
389
362
  height: Math.max(0, viewport.h - (targetRect.bottom + PADDING))
390
- })
363
+ }
391
364
  })]
392
365
  });
393
366
 
394
367
  // Backdrop fallback when target not found — full-screen dimmed overlay.
395
- var backdropFallback = !targetRect && /*#__PURE__*/_jsx(Box, {
368
+ const backdropFallback = !targetRect && /*#__PURE__*/_jsx(Box, {
396
369
  onClick: skip,
397
370
  sx: BACKDROP_FALLBACK_SX
398
371
  });
399
372
 
400
373
  // Tooltip — only renders once tooltipPos is computed.
401
- var tooltip = tooltipPos && /*#__PURE__*/_jsxs(Box, {
374
+ const tooltip = tooltipPos && /*#__PURE__*/_jsxs(Box, {
402
375
  ref: tooltipRef,
403
376
  role: "dialog",
404
377
  "aria-modal": "true",
405
378
  "aria-labelledby": titleId,
406
379
  "aria-describedby": contentId,
407
- sx: _objectSpread(_objectSpread({}, TOOLTIP_BASE_SX), {}, {
380
+ sx: {
381
+ ...TOOLTIP_BASE_SX,
408
382
  top: tooltipPos.top,
409
383
  left: tooltipPos.left
410
- }),
384
+ },
411
385
  children: [/*#__PURE__*/_jsxs(Box, {
412
386
  sx: TOOLTIP_HEADER_SX,
413
387
  children: [/*#__PURE__*/_jsx(Box, {
@@ -1 +1 @@
1
- {"version":3,"file":"Tour.js","names":["React","createPortal","Box","IconButton","CloseIcon","Button","useFocusTrap","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PADDING","TOOLTIP_GAP","TOOLTIP_WIDTH","TOOLTIP_MAX_HEIGHT","VIEWPORT_MARGIN","DEFAULT_LABELS","Object","freeze","prev","next","skip","finish","closeAria","stepCounter","cur","total","concat","getElementRect","selector","document","el","querySelector","r","getBoundingClientRect","top","left","right","bottom","width","height","_unused","computeTooltipPosition","targetRect","placement","vw","vh","p","space","best","entries","sort","a","b","Math","max","min","SPOTLIGHT_BG","SPOTLIGHT_BASE_SX","position","background","zIndex","pointerEvents","BACKDROP_FALLBACK_SX","inset","TOOLTIP_BASE_SX","maxHeight","overflowY","border","borderRadius","boxShadow","padding","TOOLTIP_HEADER_SX","display","alignItems","justifyContent","gap","marginBottom","TOOLTIP_TITLE_SX","fontSize","fontWeight","color","TOOLTIP_CLOSE_SX","marginRight","marginTop","TOOLTIP_CONTENT_SX","lineHeight","TOOLTIP_FOOTER_SX","STEP_COUNTER_SX","fontVariantNumeric","NAV_BUTTONS_SX","Tour","_ref","open","steps","onClose","onComplete","labels","L","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","stepIdx","setStepIdx","_React$useState3","_React$useState4","setTargetRect","_React$useState5","_React$useState6","tooltipPos","setTooltipPos","_React$useState7","w","h","_React$useState8","viewport","setViewport","tooltipRef","useRef","titleId","useId","contentId","currentStep","useEffect","undefined","recompute","window","innerWidth","innerHeight","rect","target","initialEl","_unused2","scrollIntoView","block","behavior","rafId","onViewportChange","requestAnimationFrame","addEventListener","removeEventListener","cancelAnimationFrame","onKey","e","key","preventDefault","length","isFirst","isLast","goNext","goPrev","spotlight","children","onClick","sx","_objectSpread","backdropFallback","tooltip","ref","role","id","title","size","content","variant","body"],"sources":["../../../../src/lib/v2/patterns/Tour.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Tour - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 · \"First-run tooltips\" / onboarding. Step-by-step guided tour\r\n * anchored to specific DOM elements with spotlight + tooltip nav.\r\n *\r\n * <Tour\r\n * open={tourOpen}\r\n * steps={[\r\n * { target: \"#nav-dashboard\", title: \"Accueil\", content: \"...\" },\r\n * { target: \"[data-tour='kpi']\", title: \"KPIs\", content: \"...\", placement: \"bottom\" },\r\n * ]}\r\n * onClose={() => setTourOpen(false)}\r\n * onComplete={() => markTourSeen()}\r\n * />\r\n *\r\n * Step state is INTERNAL (resets to 0 on every `open` → true transition).\r\n * Host owns `open` and the \"user has seen the tour\" persistence.\r\n *\r\n * A11y: role=\"dialog\" aria-modal=\"true\"; aria-labelledby / aria-describedby;\r\n * step counter in role=\"status\" aria-live=\"polite\"; step title + content are\r\n * polite/atomic live regions so each step change is announced (TOUR-1); Esc\r\n * closes; focus trapped.\r\n *\r\n * Target-not-found fallback: if the CSS selector doesn't match, the spotlight\r\n * falls back to a full-screen dimmed backdrop and the tooltip renders centered.\r\n */\r\n\r\nexport type TourPlacement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\";\r\n\r\nexport interface TourStep {\r\n /** CSS selector for the element to highlight. */\r\n target: string;\r\n title: React.ReactNode;\r\n content: React.ReactNode;\r\n /** Preferred side; \"auto\" (default) picks the side with the most space. */\r\n placement?: TourPlacement | undefined;\r\n}\r\n\r\nexport interface TourLabels {\r\n prev?: React.ReactNode | undefined;\r\n next?: React.ReactNode | undefined;\r\n skip?: React.ReactNode | undefined;\r\n finish?: React.ReactNode | undefined;\r\n closeAria?: string | undefined;\r\n stepCounter?: ((cur: number, total: number) => React.ReactNode) | undefined;\r\n}\r\n\r\nexport interface TourProps {\r\n open?: boolean | undefined;\r\n steps?: TourStep[] | undefined;\r\n onClose?: (() => void) | undefined;\r\n onComplete?: (() => void) | undefined;\r\n labels?: TourLabels | undefined;\r\n}\r\n\r\n/** Resolved target geometry (plus the element, for potential callers). */\r\ninterface TargetRect {\r\n top: number;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n width: number;\r\n height: number;\r\n el: Element;\r\n}\r\n\r\n/** Resolved tooltip position; `placement` is the chosen side (or \"center\"). */\r\ninterface TooltipPosition {\r\n top: number;\r\n left: number;\r\n placement: string;\r\n}\r\n\r\nconst PADDING = 8; // spotlight extra around target bbox\r\nconst TOOLTIP_GAP = 12; // distance from target to tooltip edge\r\nconst TOOLTIP_WIDTH = 320;\r\nconst TOOLTIP_MAX_HEIGHT = 360;\r\nconst VIEWPORT_MARGIN = 8; // min distance from viewport edges\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n prev: \"Précédent\",\r\n next: \"Suivant\",\r\n skip: \"Ignorer\",\r\n finish: \"Terminer\",\r\n closeAria: \"Fermer la visite guidée\",\r\n stepCounter: (cur: number, total: number) => `${cur} sur ${total}`,\r\n});\r\n\r\n/**\r\n * Try to resolve a CSS selector to its element's bounding rect. Returns null\r\n * on any failure (selector invalid, element absent). Defensive — host typos\r\n * shouldn't crash the tour.\r\n */\r\nfunction getElementRect(selector: string): TargetRect | null {\r\n if (!selector || typeof document === \"undefined\") return null;\r\n try {\r\n const el = document.querySelector(selector);\r\n if (!el) return null;\r\n const r = el.getBoundingClientRect();\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n right: r.right,\r\n bottom: r.bottom,\r\n width: r.width,\r\n height: r.height,\r\n el,\r\n };\r\n } catch {\r\n // Invalid selector syntax → catch SyntaxError, return null.\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Compute the tooltip's top/left given a target rect, a placement preference,\r\n * and the viewport bounds. Auto picks the side with the most clearance;\r\n * clamps to viewport.\r\n */\r\nfunction computeTooltipPosition(\r\n targetRect: TargetRect,\r\n placement: TourPlacement | undefined,\r\n vw: number,\r\n vh: number\r\n): TooltipPosition {\r\n let p: string = placement || \"auto\";\r\n if (p === \"auto\") {\r\n const space = {\r\n top: targetRect.top,\r\n bottom: vh - targetRect.bottom,\r\n left: targetRect.left,\r\n right: vw - targetRect.right,\r\n };\r\n // Pick the side with the most clearance. Stable on ties — first entry\r\n // wins (Object.entries order is insertion order, ES2015+).\r\n const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];\r\n if (best) p = best[0];\r\n }\r\n\r\n let top: number;\r\n let left: number;\r\n switch (p) {\r\n case \"top\":\r\n top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"bottom\":\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"left\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.left - TOOLTIP_GAP - TOOLTIP_WIDTH;\r\n break;\r\n case \"right\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.right + TOOLTIP_GAP;\r\n break;\r\n default:\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left;\r\n }\r\n\r\n // Clamp to viewport with a small margin so the tooltip never touches the edge.\r\n left = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN)\r\n );\r\n top = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN)\r\n );\r\n\r\n return { top, left, placement: p };\r\n}\r\n\r\n/* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */\r\n\r\nconst SPOTLIGHT_BG = \"color-mix(in srgb, var(--fg) 60%, transparent)\";\r\n\r\nconst SPOTLIGHT_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst BACKDROP_FALLBACK_SX = Object.freeze({\r\n position: \"fixed\",\r\n inset: 0,\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n width: TOOLTIP_WIDTH,\r\n maxHeight: TOOLTIP_MAX_HEIGHT,\r\n overflowY: \"auto\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n padding: \"var(--s-4)\",\r\n zIndex: \"var(--z-tooltip)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_HEADER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n marginBottom: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-h4)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst TOOLTIP_CLOSE_SX = Object.freeze({\r\n color: \"var(--fg-muted)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst TOOLTIP_CONTENT_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-3)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n});\r\n\r\nconst TOOLTIP_FOOTER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst STEP_COUNTER_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n});\r\n\r\nconst NAV_BUTTONS_SX = Object.freeze({\r\n display: \"flex\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction Tour({ open, steps, onClose, onComplete, labels }: TourProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [stepIdx, setStepIdx] = React.useState(0);\r\n const [targetRect, setTargetRect] = React.useState<TargetRect | null>(null);\r\n const [tooltipPos, setTooltipPos] = React.useState<TooltipPosition | null>(\r\n null\r\n );\r\n const [viewport, setViewport] = React.useState({ w: 0, h: 0 });\r\n\r\n const tooltipRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const contentId = React.useId();\r\n\r\n const currentStep = steps && steps[stepIdx];\r\n\r\n // Focus trap activates ONLY after tooltipPos is computed (tooltip actually\r\n // mounted with a non-null ref). On first open, tooltipPos is null until the\r\n // position effect runs, so the trap would otherwise activate against a null ref.\r\n useFocusTrap(tooltipRef, !!open && tooltipPos != null);\r\n\r\n // Reset to step 0 on each open transition.\r\n React.useEffect(() => {\r\n if (open) setStepIdx(0);\r\n }, [open]);\r\n\r\n // Compute target rect + tooltip position. Re-runs on step change and on\r\n // window scroll/resize.\r\n React.useEffect(() => {\r\n if (!open || !currentStep) return undefined;\r\n\r\n const recompute = () => {\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n setViewport({ w, h });\r\n const rect = getElementRect(currentStep.target);\r\n setTargetRect(rect);\r\n if (rect) {\r\n setTooltipPos(\r\n computeTooltipPosition(rect, currentStep.placement, w, h)\r\n );\r\n } else {\r\n // Fallback: center the tooltip when target not found.\r\n setTooltipPos({\r\n top: Math.max(VIEWPORT_MARGIN, (h - TOOLTIP_MAX_HEIGHT) / 2),\r\n left: Math.max(VIEWPORT_MARGIN, (w - TOOLTIP_WIDTH) / 2),\r\n placement: \"center\",\r\n });\r\n }\r\n };\r\n\r\n recompute();\r\n\r\n // Scroll the target into view on each step change; no-ops if not found.\r\n const initialEl =\r\n typeof document !== \"undefined\"\r\n ? (() => {\r\n try {\r\n return document.querySelector(currentStep.target);\r\n } catch {\r\n return null;\r\n }\r\n })()\r\n : null;\r\n if (initialEl && typeof initialEl.scrollIntoView === \"function\") {\r\n initialEl.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n\r\n // TOUR-2 (perf) — coalesce scroll/resize into ONE recompute per frame.\r\n // recompute() does a querySelector + getBoundingClientRect + up to 4\r\n // setState calls, so running it on every raw scroll event is wasteful;\r\n // rAF-throttle to at most once per animation frame. `true` (capture)\r\n // catches scroll on any ancestor (default scroll events don't bubble).\r\n let rafId: number | null = null;\r\n const onViewportChange = () => {\r\n if (rafId != null) return; // a frame is already scheduled\r\n rafId = window.requestAnimationFrame(() => {\r\n rafId = null;\r\n recompute();\r\n });\r\n };\r\n window.addEventListener(\"scroll\", onViewportChange, true);\r\n window.addEventListener(\"resize\", onViewportChange);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onViewportChange, true);\r\n window.removeEventListener(\"resize\", onViewportChange);\r\n if (rafId != null) window.cancelAnimationFrame(rafId);\r\n };\r\n }, [open, currentStep]);\r\n\r\n // Esc closes the tour. Window-bound — same pattern as Modal / Drawer.\r\n React.useEffect(() => {\r\n if (!open) return undefined;\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n onClose?.();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open || !steps || steps.length === 0 || !currentStep) return null;\r\n\r\n const total = steps.length;\r\n const isFirst = stepIdx === 0;\r\n const isLast = stepIdx === total - 1;\r\n\r\n const goNext = () => {\r\n if (isLast) {\r\n onComplete?.();\r\n onClose?.();\r\n } else {\r\n setStepIdx(stepIdx + 1);\r\n }\r\n };\r\n const goPrev = () => {\r\n if (!isFirst) setStepIdx(stepIdx - 1);\r\n };\r\n const skip = () => {\r\n onClose?.();\r\n };\r\n\r\n // Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.\r\n const spotlight = targetRect && (\r\n <>\r\n {/* Top */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: Math.max(0, targetRect.top - PADDING),\r\n }}\r\n />\r\n {/* Left */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, targetRect.left - PADDING),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Right */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: targetRect.right + PADDING,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, viewport.w - (targetRect.right + PADDING)),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Bottom */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: targetRect.bottom + PADDING,\r\n width: \"100vw\",\r\n height: Math.max(0, viewport.h - (targetRect.bottom + PADDING)),\r\n }}\r\n />\r\n </>\r\n );\r\n\r\n // Backdrop fallback when target not found — full-screen dimmed overlay.\r\n const backdropFallback = !targetRect && (\r\n <Box onClick={skip} sx={BACKDROP_FALLBACK_SX} />\r\n );\r\n\r\n // Tooltip — only renders once tooltipPos is computed.\r\n const tooltip = tooltipPos && (\r\n <Box\r\n ref={tooltipRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={contentId}\r\n sx={{\r\n ...TOOLTIP_BASE_SX,\r\n top: tooltipPos.top,\r\n left: tooltipPos.left,\r\n }}\r\n >\r\n <Box sx={TOOLTIP_HEADER_SX}>\r\n {/* TOUR-1 — polite/atomic so a step change announces the new title. */}\r\n <Box\r\n id={titleId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_TITLE_SX}\r\n >\r\n {currentStep.title}\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={skip}\r\n aria-label={L.closeAria}\r\n sx={TOOLTIP_CLOSE_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* TOUR-1 — polite/atomic so a step change announces the new content. */}\r\n <Box\r\n id={contentId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_CONTENT_SX}\r\n >\r\n {currentStep.content}\r\n </Box>\r\n\r\n <Box sx={TOOLTIP_FOOTER_SX}>\r\n <Box role=\"status\" aria-live=\"polite\" sx={STEP_COUNTER_SX}>\r\n {L.stepCounter(stepIdx + 1, total)}\r\n </Box>\r\n <Box sx={NAV_BUTTONS_SX}>\r\n {!isFirst && (\r\n <Button variant=\"ghost\" size=\"sm\" onClick={goPrev}>\r\n {L.prev}\r\n </Button>\r\n )}\r\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\r\n {L.skip}\r\n </Button>\r\n <Button variant=\"primary\" size=\"sm\" onClick={goNext}>\r\n {isLast ? L.finish : L.next}\r\n </Button>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n // Portal to document.body so the tour escapes any host overflow/transform\r\n // context that would clip absolute positioning.\r\n if (typeof document === \"undefined\") return null;\r\n return createPortal(\r\n <>\r\n {spotlight}\r\n {backdropFallback}\r\n {tooltip}\r\n </>,\r\n document.body\r\n );\r\n}\r\n\r\nexport default Tour;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Tour.js","names":["React","createPortal","Box","IconButton","CloseIcon","Button","useFocusTrap","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PADDING","TOOLTIP_GAP","TOOLTIP_WIDTH","TOOLTIP_MAX_HEIGHT","VIEWPORT_MARGIN","DEFAULT_LABELS","Object","freeze","prev","next","skip","finish","closeAria","stepCounter","cur","total","getElementRect","selector","document","el","querySelector","r","getBoundingClientRect","top","left","right","bottom","width","height","computeTooltipPosition","targetRect","placement","vw","vh","p","space","best","entries","sort","a","b","Math","max","min","SPOTLIGHT_BG","SPOTLIGHT_BASE_SX","position","background","zIndex","pointerEvents","BACKDROP_FALLBACK_SX","inset","TOOLTIP_BASE_SX","maxHeight","overflowY","border","borderRadius","boxShadow","padding","TOOLTIP_HEADER_SX","display","alignItems","justifyContent","gap","marginBottom","TOOLTIP_TITLE_SX","fontSize","fontWeight","color","TOOLTIP_CLOSE_SX","marginRight","marginTop","TOOLTIP_CONTENT_SX","lineHeight","TOOLTIP_FOOTER_SX","STEP_COUNTER_SX","fontVariantNumeric","NAV_BUTTONS_SX","Tour","open","steps","onClose","onComplete","labels","L","useMemo","stepIdx","setStepIdx","useState","setTargetRect","tooltipPos","setTooltipPos","viewport","setViewport","w","h","tooltipRef","useRef","titleId","useId","contentId","currentStep","useEffect","undefined","recompute","window","innerWidth","innerHeight","rect","target","initialEl","scrollIntoView","block","behavior","rafId","onViewportChange","requestAnimationFrame","addEventListener","removeEventListener","cancelAnimationFrame","onKey","e","key","preventDefault","length","isFirst","isLast","goNext","goPrev","spotlight","children","onClick","sx","backdropFallback","tooltip","ref","role","id","title","size","content","variant","body"],"sources":["../../../../src/lib/v2/patterns/Tour.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Tour - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 · \"First-run tooltips\" / onboarding. Step-by-step guided tour\r\n * anchored to specific DOM elements with spotlight + tooltip nav.\r\n *\r\n * <Tour\r\n * open={tourOpen}\r\n * steps={[\r\n * { target: \"#nav-dashboard\", title: \"Accueil\", content: \"...\" },\r\n * { target: \"[data-tour='kpi']\", title: \"KPIs\", content: \"...\", placement: \"bottom\" },\r\n * ]}\r\n * onClose={() => setTourOpen(false)}\r\n * onComplete={() => markTourSeen()}\r\n * />\r\n *\r\n * Step state is INTERNAL (resets to 0 on every `open` → true transition).\r\n * Host owns `open` and the \"user has seen the tour\" persistence.\r\n *\r\n * A11y: role=\"dialog\" aria-modal=\"true\"; aria-labelledby / aria-describedby;\r\n * step counter in role=\"status\" aria-live=\"polite\"; step title + content are\r\n * polite/atomic live regions so each step change is announced (TOUR-1); Esc\r\n * closes; focus trapped.\r\n *\r\n * Target-not-found fallback: if the CSS selector doesn't match, the spotlight\r\n * falls back to a full-screen dimmed backdrop and the tooltip renders centered.\r\n */\r\n\r\nexport type TourPlacement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\";\r\n\r\nexport interface TourStep {\r\n /** CSS selector for the element to highlight. */\r\n target: string;\r\n title: React.ReactNode;\r\n content: React.ReactNode;\r\n /** Preferred side; \"auto\" (default) picks the side with the most space. */\r\n placement?: TourPlacement | undefined;\r\n}\r\n\r\nexport interface TourLabels {\r\n prev?: React.ReactNode | undefined;\r\n next?: React.ReactNode | undefined;\r\n skip?: React.ReactNode | undefined;\r\n finish?: React.ReactNode | undefined;\r\n closeAria?: string | undefined;\r\n stepCounter?: ((cur: number, total: number) => React.ReactNode) | undefined;\r\n}\r\n\r\nexport interface TourProps {\r\n open?: boolean | undefined;\r\n steps?: TourStep[] | undefined;\r\n onClose?: (() => void) | undefined;\r\n onComplete?: (() => void) | undefined;\r\n labels?: TourLabels | undefined;\r\n}\r\n\r\n/** Resolved target geometry (plus the element, for potential callers). */\r\ninterface TargetRect {\r\n top: number;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n width: number;\r\n height: number;\r\n el: Element;\r\n}\r\n\r\n/** Resolved tooltip position; `placement` is the chosen side (or \"center\"). */\r\ninterface TooltipPosition {\r\n top: number;\r\n left: number;\r\n placement: string;\r\n}\r\n\r\nconst PADDING = 8; // spotlight extra around target bbox\r\nconst TOOLTIP_GAP = 12; // distance from target to tooltip edge\r\nconst TOOLTIP_WIDTH = 320;\r\nconst TOOLTIP_MAX_HEIGHT = 360;\r\nconst VIEWPORT_MARGIN = 8; // min distance from viewport edges\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n prev: \"Précédent\",\r\n next: \"Suivant\",\r\n skip: \"Ignorer\",\r\n finish: \"Terminer\",\r\n closeAria: \"Fermer la visite guidée\",\r\n stepCounter: (cur: number, total: number) => `${cur} sur ${total}`,\r\n});\r\n\r\n/**\r\n * Try to resolve a CSS selector to its element's bounding rect. Returns null\r\n * on any failure (selector invalid, element absent). Defensive — host typos\r\n * shouldn't crash the tour.\r\n */\r\nfunction getElementRect(selector: string): TargetRect | null {\r\n if (!selector || typeof document === \"undefined\") return null;\r\n try {\r\n const el = document.querySelector(selector);\r\n if (!el) return null;\r\n const r = el.getBoundingClientRect();\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n right: r.right,\r\n bottom: r.bottom,\r\n width: r.width,\r\n height: r.height,\r\n el,\r\n };\r\n } catch {\r\n // Invalid selector syntax → catch SyntaxError, return null.\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Compute the tooltip's top/left given a target rect, a placement preference,\r\n * and the viewport bounds. Auto picks the side with the most clearance;\r\n * clamps to viewport.\r\n */\r\nfunction computeTooltipPosition(\r\n targetRect: TargetRect,\r\n placement: TourPlacement | undefined,\r\n vw: number,\r\n vh: number\r\n): TooltipPosition {\r\n let p: string = placement || \"auto\";\r\n if (p === \"auto\") {\r\n const space = {\r\n top: targetRect.top,\r\n bottom: vh - targetRect.bottom,\r\n left: targetRect.left,\r\n right: vw - targetRect.right,\r\n };\r\n // Pick the side with the most clearance. Stable on ties — first entry\r\n // wins (Object.entries order is insertion order, ES2015+).\r\n const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];\r\n if (best) p = best[0];\r\n }\r\n\r\n let top: number;\r\n let left: number;\r\n switch (p) {\r\n case \"top\":\r\n top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"bottom\":\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"left\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.left - TOOLTIP_GAP - TOOLTIP_WIDTH;\r\n break;\r\n case \"right\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.right + TOOLTIP_GAP;\r\n break;\r\n default:\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left;\r\n }\r\n\r\n // Clamp to viewport with a small margin so the tooltip never touches the edge.\r\n left = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN)\r\n );\r\n top = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN)\r\n );\r\n\r\n return { top, left, placement: p };\r\n}\r\n\r\n/* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */\r\n\r\nconst SPOTLIGHT_BG = \"color-mix(in srgb, var(--fg) 60%, transparent)\";\r\n\r\nconst SPOTLIGHT_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst BACKDROP_FALLBACK_SX = Object.freeze({\r\n position: \"fixed\",\r\n inset: 0,\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n width: TOOLTIP_WIDTH,\r\n maxHeight: TOOLTIP_MAX_HEIGHT,\r\n overflowY: \"auto\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n padding: \"var(--s-4)\",\r\n zIndex: \"var(--z-tooltip)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_HEADER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n marginBottom: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-h4)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst TOOLTIP_CLOSE_SX = Object.freeze({\r\n color: \"var(--fg-muted)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst TOOLTIP_CONTENT_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-3)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n});\r\n\r\nconst TOOLTIP_FOOTER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst STEP_COUNTER_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n});\r\n\r\nconst NAV_BUTTONS_SX = Object.freeze({\r\n display: \"flex\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction Tour({ open, steps, onClose, onComplete, labels }: TourProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [stepIdx, setStepIdx] = React.useState(0);\r\n const [targetRect, setTargetRect] = React.useState<TargetRect | null>(null);\r\n const [tooltipPos, setTooltipPos] = React.useState<TooltipPosition | null>(\r\n null\r\n );\r\n const [viewport, setViewport] = React.useState({ w: 0, h: 0 });\r\n\r\n const tooltipRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const contentId = React.useId();\r\n\r\n const currentStep = steps && steps[stepIdx];\r\n\r\n // Focus trap activates ONLY after tooltipPos is computed (tooltip actually\r\n // mounted with a non-null ref). On first open, tooltipPos is null until the\r\n // position effect runs, so the trap would otherwise activate against a null ref.\r\n useFocusTrap(tooltipRef, !!open && tooltipPos != null);\r\n\r\n // Reset to step 0 on each open transition.\r\n React.useEffect(() => {\r\n if (open) setStepIdx(0);\r\n }, [open]);\r\n\r\n // Compute target rect + tooltip position. Re-runs on step change and on\r\n // window scroll/resize.\r\n React.useEffect(() => {\r\n if (!open || !currentStep) return undefined;\r\n\r\n const recompute = () => {\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n setViewport({ w, h });\r\n const rect = getElementRect(currentStep.target);\r\n setTargetRect(rect);\r\n if (rect) {\r\n setTooltipPos(\r\n computeTooltipPosition(rect, currentStep.placement, w, h)\r\n );\r\n } else {\r\n // Fallback: center the tooltip when target not found.\r\n setTooltipPos({\r\n top: Math.max(VIEWPORT_MARGIN, (h - TOOLTIP_MAX_HEIGHT) / 2),\r\n left: Math.max(VIEWPORT_MARGIN, (w - TOOLTIP_WIDTH) / 2),\r\n placement: \"center\",\r\n });\r\n }\r\n };\r\n\r\n recompute();\r\n\r\n // Scroll the target into view on each step change; no-ops if not found.\r\n const initialEl =\r\n typeof document !== \"undefined\"\r\n ? (() => {\r\n try {\r\n return document.querySelector(currentStep.target);\r\n } catch {\r\n return null;\r\n }\r\n })()\r\n : null;\r\n if (initialEl && typeof initialEl.scrollIntoView === \"function\") {\r\n initialEl.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n\r\n // TOUR-2 (perf) — coalesce scroll/resize into ONE recompute per frame.\r\n // recompute() does a querySelector + getBoundingClientRect + up to 4\r\n // setState calls, so running it on every raw scroll event is wasteful;\r\n // rAF-throttle to at most once per animation frame. `true` (capture)\r\n // catches scroll on any ancestor (default scroll events don't bubble).\r\n let rafId: number | null = null;\r\n const onViewportChange = () => {\r\n if (rafId != null) return; // a frame is already scheduled\r\n rafId = window.requestAnimationFrame(() => {\r\n rafId = null;\r\n recompute();\r\n });\r\n };\r\n window.addEventListener(\"scroll\", onViewportChange, true);\r\n window.addEventListener(\"resize\", onViewportChange);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onViewportChange, true);\r\n window.removeEventListener(\"resize\", onViewportChange);\r\n if (rafId != null) window.cancelAnimationFrame(rafId);\r\n };\r\n }, [open, currentStep]);\r\n\r\n // Esc closes the tour. Window-bound — same pattern as Modal / Drawer.\r\n React.useEffect(() => {\r\n if (!open) return undefined;\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n onClose?.();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open || !steps || steps.length === 0 || !currentStep) return null;\r\n\r\n const total = steps.length;\r\n const isFirst = stepIdx === 0;\r\n const isLast = stepIdx === total - 1;\r\n\r\n const goNext = () => {\r\n if (isLast) {\r\n onComplete?.();\r\n onClose?.();\r\n } else {\r\n setStepIdx(stepIdx + 1);\r\n }\r\n };\r\n const goPrev = () => {\r\n if (!isFirst) setStepIdx(stepIdx - 1);\r\n };\r\n const skip = () => {\r\n onClose?.();\r\n };\r\n\r\n // Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.\r\n const spotlight = targetRect && (\r\n <>\r\n {/* Top */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: Math.max(0, targetRect.top - PADDING),\r\n }}\r\n />\r\n {/* Left */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, targetRect.left - PADDING),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Right */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: targetRect.right + PADDING,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, viewport.w - (targetRect.right + PADDING)),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Bottom */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: targetRect.bottom + PADDING,\r\n width: \"100vw\",\r\n height: Math.max(0, viewport.h - (targetRect.bottom + PADDING)),\r\n }}\r\n />\r\n </>\r\n );\r\n\r\n // Backdrop fallback when target not found — full-screen dimmed overlay.\r\n const backdropFallback = !targetRect && (\r\n <Box onClick={skip} sx={BACKDROP_FALLBACK_SX} />\r\n );\r\n\r\n // Tooltip — only renders once tooltipPos is computed.\r\n const tooltip = tooltipPos && (\r\n <Box\r\n ref={tooltipRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={contentId}\r\n sx={{\r\n ...TOOLTIP_BASE_SX,\r\n top: tooltipPos.top,\r\n left: tooltipPos.left,\r\n }}\r\n >\r\n <Box sx={TOOLTIP_HEADER_SX}>\r\n {/* TOUR-1 — polite/atomic so a step change announces the new title. */}\r\n <Box\r\n id={titleId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_TITLE_SX}\r\n >\r\n {currentStep.title}\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={skip}\r\n aria-label={L.closeAria}\r\n sx={TOOLTIP_CLOSE_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* TOUR-1 — polite/atomic so a step change announces the new content. */}\r\n <Box\r\n id={contentId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_CONTENT_SX}\r\n >\r\n {currentStep.content}\r\n </Box>\r\n\r\n <Box sx={TOOLTIP_FOOTER_SX}>\r\n <Box role=\"status\" aria-live=\"polite\" sx={STEP_COUNTER_SX}>\r\n {L.stepCounter(stepIdx + 1, total)}\r\n </Box>\r\n <Box sx={NAV_BUTTONS_SX}>\r\n {!isFirst && (\r\n <Button variant=\"ghost\" size=\"sm\" onClick={goPrev}>\r\n {L.prev}\r\n </Button>\r\n )}\r\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\r\n {L.skip}\r\n </Button>\r\n <Button variant=\"primary\" size=\"sm\" onClick={goNext}>\r\n {isLast ? L.finish : L.next}\r\n </Button>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n // Portal to document.body so the tour escapes any host overflow/transform\r\n // context that would clip absolute positioning.\r\n if (typeof document === \"undefined\") return null;\r\n return createPortal(\r\n <>\r\n {spotlight}\r\n {backdropFallback}\r\n {tooltip}\r\n </>,\r\n document.body\r\n );\r\n}\r\n\r\nexport default Tour;\r\n"],"mappings":"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","ignoreList":[]}