@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
@@ -3,21 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
9
9
  var _InsertDriveFileOutlined = _interopRequireDefault(require("@mui/icons-material/InsertDriveFileOutlined"));
10
10
  var _Surface = _interopRequireDefault(require("./Surface"));
11
11
  var _jsxRuntime = require("react/jsx-runtime");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
- 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); }
16
- 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; }
17
- 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; }
18
- 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; }
19
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
20
- 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); } /**
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ /**
21
15
  * FileCard — Portnet UI v2
22
16
  *
23
17
  * A single attached document, as a row: leading icon, filename, optional meta
@@ -69,27 +63,29 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
69
63
  * type also lets the component set `title={name}` so the full filename stays
70
64
  * reachable on hover once it is ellipsized.
71
65
  */
72
- function FileCard(_ref) {
73
- var name = _ref.name,
74
- meta = _ref.meta,
75
- icon = _ref.icon,
76
- actions = _ref.actions,
77
- sx = _ref.sx;
78
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Surface["default"], _objectSpread(_objectSpread({
66
+
67
+ function FileCard({
68
+ name,
69
+ meta,
70
+ icon,
71
+ actions,
72
+ sx
73
+ }) {
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Surface.default, {
79
75
  tone: "subtle",
80
76
  radius: "md",
81
- padding: "compact"
82
- }, sx !== undefined ? {
83
- sx: sx
84
- } : {}), {}, {
85
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
77
+ padding: "compact",
78
+ ...(sx !== undefined ? {
79
+ sx
80
+ } : {}),
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
86
82
  sx: {
87
83
  display: "flex",
88
84
  alignItems: "center",
89
85
  justifyContent: "space-between",
90
86
  gap: "var(--s-3)"
91
87
  },
92
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
88
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
93
89
  sx: {
94
90
  display: "flex",
95
91
  alignItems: "center",
@@ -97,7 +93,7 @@ function FileCard(_ref) {
97
93
  minWidth: 0,
98
94
  flex: 1
99
95
  },
100
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
96
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
101
97
  component: "span",
102
98
  "aria-hidden": "true"
103
99
  /* Test hook. The icon wrapper carries no role and no accessible
@@ -117,12 +113,12 @@ function FileCard(_ref) {
117
113
  fontSize: "var(--text-display)"
118
114
  }
119
115
  },
120
- children: icon !== null && icon !== void 0 ? icon : /*#__PURE__*/(0, _jsxRuntime.jsx)(_InsertDriveFileOutlined["default"], {})
121
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
116
+ children: icon ?? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InsertDriveFileOutlined.default, {})
117
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
122
118
  sx: {
123
119
  minWidth: 0
124
120
  },
125
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
126
122
  title: name,
127
123
  sx: {
128
124
  fontSize: "var(--text-sm)",
@@ -133,7 +129,7 @@ function FileCard(_ref) {
133
129
  textOverflow: "ellipsis"
134
130
  },
135
131
  children: name
136
- }), meta != null && meta !== "" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"]
132
+ }), meta != null && meta !== "" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default
137
133
  /* Test hook — same rationale as filecard-icon. The contract is
138
134
  * that this line is ABSENT rather than empty: a blank second
139
135
  * line reads as missing data and changes the row height, which
@@ -153,7 +149,7 @@ function FileCard(_ref) {
153
149
  /*#__PURE__*/
154
150
  /* `flexShrink: 0` — the buttons keep their intrinsic width; it is the
155
151
  filename that yields. The inverse produced squashed labels. */
156
- (0, _jsxRuntime.jsx)(_Box["default"], {
152
+ (0, _jsxRuntime.jsx)(_Box.default, {
157
153
  sx: {
158
154
  display: "flex",
159
155
  alignItems: "center",
@@ -163,7 +159,7 @@ function FileCard(_ref) {
163
159
  children: actions
164
160
  })]
165
161
  })
166
- }));
162
+ });
167
163
  }
168
- var _default = exports["default"] = FileCard;
164
+ var _default = exports.default = FileCard;
169
165
  //# sourceMappingURL=FileCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileCard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_InsertDriveFileOutlined","_Surface","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","FileCard","_ref","name","meta","icon","actions","sx","jsx","tone","radius","padding","children","jsxs","display","alignItems","justifyContent","gap","minWidth","flex","component","flexShrink","color","fontSize","title","fontWeight","whiteSpace","overflow","textOverflow","fontVariantNumeric","_default","exports"],"sources":["../../../src/lib/v2/components/FileCard.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport Surface from \"./Surface\";\r\n\r\n/**\r\n * FileCard — Portnet UI v2\r\n *\r\n * A single attached document, as a row: leading icon, filename, optional meta\r\n * line, action cluster on the trailing edge.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-12)\r\n *\r\n * The library shipped `Dropzone` — the UPLOAD affordance — and nothing for the\r\n * state right after it: the file, once attached, being displayed. So every\r\n * screen that shows an attachment rebuilt the same row. In addpe-fe it exists\r\n * THREE times, in three files, written by hand each time:\r\n *\r\n * - Attachment (uploaded state) padding --s-3 --s-4\r\n * - AutorisationPreviewDrawer (tab) padding --s-4\r\n * - AutorisationDetail (tab) padding --s-4 --s-5\r\n *\r\n * Read that padding column: three values for ONE concept. Nobody decided that —\r\n * it is what happens when a recipe is retyped from memory three times, and it is\r\n * exactly what Charter R-2.1 forbids (« un même concept = un même composant +\r\n * un même libellé partout »). This component standardises on the compact\r\n * `Surface` padding; the divergence was accidental, not intentional.\r\n *\r\n * The ellipsis logic is the other reason to own this. A filename is\r\n * user-supplied, arbitrarily long, and must truncate without pushing the action\r\n * buttons off the card — which needs `minWidth: 0` on the right ancestors and\r\n * `flexShrink: 0` on the wrong ones. Two of the three local copies had it; the\r\n * third relied on its container being wide enough.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * <FileCard\r\n * name={doc.documentName || \"Document.pdf\"}\r\n * meta=\"248,50 Ko\"\r\n * actions={\r\n * <Button variant=\"secondary\" size=\"sm\" icon={<CloudDownload />} onClick={dl}>\r\n * Télécharger\r\n * </Button>\r\n * }\r\n * />\r\n *\r\n * Presentational by design: no href, no fetching, no delete confirmation. Hosts\r\n * own those (a blob URL, an API call, a `ConfirmDialog`) and pass the resulting\r\n * buttons through `actions`.\r\n *\r\n * `name` is REQUIRED and typed `string`, deliberately. A filename fallback\r\n * (\"Document.pdf\") is French copy and a business decision about what an unnamed\r\n * attachment is called — that belongs to the host, not to the design system, and\r\n * defaulting it here would silently hide a missing backend field. The `string`\r\n * type also lets the component set `title={name}` so the full filename stays\r\n * reachable on hover once it is ellipsized.\r\n */\r\n\r\nexport interface FileCardProps {\r\n /** Filename. Ellipsized when it overflows; mirrored into `title`. */\r\n name: string;\r\n /**\r\n * Secondary line — size, date, content type. Rendered with tabular numerals\r\n * so a column of file sizes aligns (R-T.3).\r\n */\r\n meta?: React.ReactNode | undefined;\r\n /**\r\n * Leading icon. Defaults to a generic document glyph; pass a specific one when\r\n * the card's primary action is what identifies it (a download cloud, say).\r\n * Rendered `aria-hidden` — the filename is the accessible name (R-Ar.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n /** Trailing action cluster. Pass `Button`s; the card does not invent any. */\r\n actions?: React.ReactNode | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FileCard({ name, meta, icon, actions, sx }: FileCardProps) {\r\n return (\r\n <Surface\r\n tone=\"subtle\"\r\n radius=\"md\"\r\n padding=\"compact\"\r\n {...(sx !== undefined ? { sx } : {})}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n }}\r\n >\r\n {/* Identity block. `minWidth: 0` is load-bearing: without it a flex item\r\n refuses to shrink below its content width and the filename pushes the\r\n action cluster out of the card instead of truncating. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-3)\",\r\n minWidth: 0,\r\n flex: 1,\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n /* Test hook. The icon wrapper carries no role and no accessible\r\n * name — by design — so there is no semantic query that can reach\r\n * it, and the repo's eslint config rightly forbids container\r\n * queries and direct node access in tests. A stable testid is the\r\n * sanctioned escape hatch, and the contract it guards (R-Ar.2: a\r\n * decorative glyph must NOT be announced) is worth a hook. */\r\n data-testid=\"filecard-icon\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n color: \"var(--accent)\",\r\n // --text-display is the 26px token; the glyph sits at the optical\r\n // scale the three local copies had converged on.\r\n \"& > *\": { fontSize: \"var(--text-display)\" },\r\n }}\r\n >\r\n {icon ?? <InsertDriveFileIcon />}\r\n </Box>\r\n\r\n <Box sx={{ minWidth: 0 }}>\r\n <Box\r\n title={name}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {name}\r\n </Box>\r\n {meta != null && meta !== \"\" && (\r\n <Box\r\n /* Test hook — same rationale as filecard-icon. The contract is\r\n * that this line is ABSENT rather than empty: a blank second\r\n * line reads as missing data and changes the row height, which\r\n * breaks the alignment of a list of files. \"Absent, not empty\"\r\n * cannot be expressed by a text query. */\r\n data-testid=\"filecard-meta\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n // R-T.3 — tabular numerals on any numeric run.\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {meta}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {actions != null && (\r\n /* `flexShrink: 0` — the buttons keep their intrinsic width; it is the\r\n filename that yields. The inverse produced squashed labels. */\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {actions}\r\n </Box>\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FileCard;\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,wBAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,QAAA,GAAAF,sBAAA,CAAAF,OAAA;AAAgC,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAE,uBAAAI,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAV,wBAAAO,GAAA,EAAAG,WAAA,SAAAA,WAAA,IAAAH,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAO,OAAA,CAAAP,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAQ,KAAA,GAAAN,wBAAA,CAAAC,WAAA,OAAAK,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,cAAAX,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAJ,QAAAP,GAAA,sCAAAO,OAAA,wBAAAe,MAAA,uBAAAA,MAAA,CAAAC,QAAA,aAAAvB,GAAA,kBAAAA,GAAA,gBAAAA,GAAA,WAAAA,GAAA,yBAAAsB,MAAA,IAAAtB,GAAA,CAAAwB,WAAA,KAAAF,MAAA,IAAAtB,GAAA,KAAAsB,MAAA,CAAAL,SAAA,qBAAAjB,GAAA,KAAAO,OAAA,CAAAP,GAAA;AAAA,SAAAyB,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAf,MAAA,CAAAe,IAAA,CAAAF,MAAA,OAAAb,MAAA,CAAAgB,qBAAA,QAAAC,OAAA,GAAAjB,MAAA,CAAAgB,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAnB,MAAA,CAAAE,wBAAA,CAAAW,MAAA,EAAAM,GAAA,EAAAC,UAAA,OAAAL,IAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAQ,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAb,OAAA,CAAAZ,MAAA,CAAA4B,MAAA,OAAAC,OAAA,WAAA1B,GAAA,IAAA2B,eAAA,CAAAN,MAAA,EAAArB,GAAA,EAAAyB,MAAA,CAAAzB,GAAA,SAAAH,MAAA,CAAA+B,yBAAA,GAAA/B,MAAA,CAAAgC,gBAAA,CAAAR,MAAA,EAAAxB,MAAA,CAAA+B,yBAAA,CAAAH,MAAA,KAAAhB,OAAA,CAAAZ,MAAA,CAAA4B,MAAA,GAAAC,OAAA,WAAA1B,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAuB,MAAA,EAAArB,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAA0B,MAAA,EAAAzB,GAAA,iBAAAqB,MAAA;AAAA,SAAAM,gBAAA3C,GAAA,EAAAgB,GAAA,EAAA8B,KAAA,IAAA9B,GAAA,GAAA+B,cAAA,CAAA/B,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAA8B,KAAA,EAAAA,KAAA,EAAAb,UAAA,QAAAe,YAAA,QAAAC,QAAA,oBAAAjD,GAAA,CAAAgB,GAAA,IAAA8B,KAAA,WAAA9C,GAAA;AAAA,SAAA+C,eAAAG,GAAA,QAAAlC,GAAA,GAAAmC,YAAA,CAAAD,GAAA,oBAAA3C,OAAA,CAAAS,GAAA,iBAAAA,GAAA,GAAAoC,MAAA,CAAApC,GAAA;AAAA,SAAAmC,aAAAE,KAAA,EAAAC,IAAA,QAAA/C,OAAA,CAAA8C,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAA/B,MAAA,CAAAkC,WAAA,OAAAD,IAAA,KAAAE,SAAA,QAAAC,GAAA,GAAAH,IAAA,CAAApC,IAAA,CAAAkC,KAAA,EAAAC,IAAA,oBAAA/C,OAAA,CAAAmD,GAAA,uBAAAA,GAAA,YAAAC,SAAA,4DAAAL,IAAA,gBAAAF,MAAA,GAAAQ,MAAA,EAAAP,KAAA,KAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAqBA,SAASQ,QAAQA,CAAAC,IAAA,EAAmD;EAAA,IAAhDC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAEC,IAAI,GAAAH,IAAA,CAAJG,IAAI;IAAEC,OAAO,GAAAJ,IAAA,CAAPI,OAAO;IAAEC,EAAE,GAAAL,IAAA,CAAFK,EAAE;EAC/C,oBACE,IAAApE,WAAA,CAAAqE,GAAA,EAACtE,QAAA,WAAO,EAAAsC,aAAA,CAAAA,aAAA;IACNiC,IAAI,EAAC,QAAQ;IACbC,MAAM,EAAC,IAAI;IACXC,OAAO,EAAC;EAAS,GACZJ,EAAE,KAAKV,SAAS,GAAG;IAAEU,EAAE,EAAFA;EAAG,CAAC,GAAG,CAAC,CAAC;IAAAK,QAAA,eAEnC,IAAAzE,WAAA,CAAA0E,IAAA,EAAC9E,IAAA,WAAG;MACFwE,EAAE,EAAE;QACFO,OAAO,EAAE,MAAM;QACfC,UAAU,EAAE,QAAQ;QACpBC,cAAc,EAAE,eAAe;QAC/BC,GAAG,EAAE;MACP,CAAE;MAAAL,QAAA,gBAKF,IAAAzE,WAAA,CAAA0E,IAAA,EAAC9E,IAAA,WAAG;QACFwE,EAAE,EAAE;UACFO,OAAO,EAAE,MAAM;UACfC,UAAU,EAAE,QAAQ;UACpBE,GAAG,EAAE,YAAY;UACjBC,QAAQ,EAAE,CAAC;UACXC,IAAI,EAAE;QACR,CAAE;QAAAP,QAAA,gBAEF,IAAAzE,WAAA,CAAAqE,GAAA,EAACzE,IAAA,WAAG;UACFqF,SAAS,EAAC,MAAM;UAChB,eAAY;UACZ;AACZ;AACA;AACA;AACA;AACA,wEALY;UAMA,eAAY,eAAe;UAC3Bb,EAAE,EAAE;YACFO,OAAO,EAAE,aAAa;YACtBO,UAAU,EAAE,CAAC;YACbC,KAAK,EAAE,eAAe;YACtB;YACA;YACA,OAAO,EAAE;cAAEC,QAAQ,EAAE;YAAsB;UAC7C,CAAE;UAAAX,QAAA,EAEDP,IAAI,aAAJA,IAAI,cAAJA,IAAI,gBAAI,IAAAlE,WAAA,CAAAqE,GAAA,EAACvE,wBAAA,WAAmB,IAAE;QAAC,CAC7B,CAAC,eAEN,IAAAE,WAAA,CAAA0E,IAAA,EAAC9E,IAAA,WAAG;UAACwE,EAAE,EAAE;YAAEW,QAAQ,EAAE;UAAE,CAAE;UAAAN,QAAA,gBACvB,IAAAzE,WAAA,CAAAqE,GAAA,EAACzE,IAAA,WAAG;YACFyF,KAAK,EAAErB,IAAK;YACZI,EAAE,EAAE;cACFgB,QAAQ,EAAE,gBAAgB;cAC1BE,UAAU,EAAE,oBAAoB;cAChCH,KAAK,EAAE,WAAW;cAClBI,UAAU,EAAE,QAAQ;cACpBC,QAAQ,EAAE,QAAQ;cAClBC,YAAY,EAAE;YAChB,CAAE;YAAAhB,QAAA,EAEDT;UAAI,CACF,CAAC,EACLC,IAAI,IAAI,IAAI,IAAIA,IAAI,KAAK,EAAE,iBAC1B,IAAAjE,WAAA,CAAAqE,GAAA,EAACzE,IAAA;UACC;AAChB;AACA;AACA;AACA,oDAJgB;YAKA,eAAY,eAAe;YAC3BwE,EAAE,EAAE;cACFgB,QAAQ,EAAE,gBAAgB;cAC1BD,KAAK,EAAE,kBAAkB;cACzB;cACAO,kBAAkB,EAAE;YACtB,CAAE;YAAAjB,QAAA,EAEDR;UAAI,CACF,CACN;QAAA,CACE,CAAC;MAAA,CACH,CAAC,EAELE,OAAO,IAAI,IAAI;MAAA;MACd;AACV;MACU,IAAAnE,WAAA,CAAAqE,GAAA,EAACzE,IAAA,WAAG;QACFwE,EAAE,EAAE;UACFO,OAAO,EAAE,MAAM;UACfC,UAAU,EAAE,QAAQ;UACpBE,GAAG,EAAE,YAAY;UACjBI,UAAU,EAAE;QACd,CAAE;QAAAT,QAAA,EAEDN;MAAO,CACL,CACN;IAAA,CACE;EAAC,EACC,CAAC;AAEd;AAAC,IAAAwB,QAAA,GAAAC,OAAA,cAEc9B,QAAQ","ignoreList":[]}
1
+ {"version":3,"file":"FileCard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_InsertDriveFileOutlined","_Surface","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","FileCard","name","meta","icon","actions","sx","jsx","tone","radius","padding","undefined","children","jsxs","display","alignItems","justifyContent","gap","minWidth","flex","component","flexShrink","color","fontSize","title","fontWeight","whiteSpace","overflow","textOverflow","fontVariantNumeric","_default","exports"],"sources":["../../../src/lib/v2/components/FileCard.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport Surface from \"./Surface\";\r\n\r\n/**\r\n * FileCard — Portnet UI v2\r\n *\r\n * A single attached document, as a row: leading icon, filename, optional meta\r\n * line, action cluster on the trailing edge.\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-12)\r\n *\r\n * The library shipped `Dropzone` — the UPLOAD affordance — and nothing for the\r\n * state right after it: the file, once attached, being displayed. So every\r\n * screen that shows an attachment rebuilt the same row. In addpe-fe it exists\r\n * THREE times, in three files, written by hand each time:\r\n *\r\n * - Attachment (uploaded state) padding --s-3 --s-4\r\n * - AutorisationPreviewDrawer (tab) padding --s-4\r\n * - AutorisationDetail (tab) padding --s-4 --s-5\r\n *\r\n * Read that padding column: three values for ONE concept. Nobody decided that —\r\n * it is what happens when a recipe is retyped from memory three times, and it is\r\n * exactly what Charter R-2.1 forbids (« un même concept = un même composant +\r\n * un même libellé partout »). This component standardises on the compact\r\n * `Surface` padding; the divergence was accidental, not intentional.\r\n *\r\n * The ellipsis logic is the other reason to own this. A filename is\r\n * user-supplied, arbitrarily long, and must truncate without pushing the action\r\n * buttons off the card — which needs `minWidth: 0` on the right ancestors and\r\n * `flexShrink: 0` on the wrong ones. Two of the three local copies had it; the\r\n * third relied on its container being wide enough.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * <FileCard\r\n * name={doc.documentName || \"Document.pdf\"}\r\n * meta=\"248,50 Ko\"\r\n * actions={\r\n * <Button variant=\"secondary\" size=\"sm\" icon={<CloudDownload />} onClick={dl}>\r\n * Télécharger\r\n * </Button>\r\n * }\r\n * />\r\n *\r\n * Presentational by design: no href, no fetching, no delete confirmation. Hosts\r\n * own those (a blob URL, an API call, a `ConfirmDialog`) and pass the resulting\r\n * buttons through `actions`.\r\n *\r\n * `name` is REQUIRED and typed `string`, deliberately. A filename fallback\r\n * (\"Document.pdf\") is French copy and a business decision about what an unnamed\r\n * attachment is called — that belongs to the host, not to the design system, and\r\n * defaulting it here would silently hide a missing backend field. The `string`\r\n * type also lets the component set `title={name}` so the full filename stays\r\n * reachable on hover once it is ellipsized.\r\n */\r\n\r\nexport interface FileCardProps {\r\n /** Filename. Ellipsized when it overflows; mirrored into `title`. */\r\n name: string;\r\n /**\r\n * Secondary line — size, date, content type. Rendered with tabular numerals\r\n * so a column of file sizes aligns (R-T.3).\r\n */\r\n meta?: React.ReactNode | undefined;\r\n /**\r\n * Leading icon. Defaults to a generic document glyph; pass a specific one when\r\n * the card's primary action is what identifies it (a download cloud, say).\r\n * Rendered `aria-hidden` — the filename is the accessible name (R-Ar.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n /** Trailing action cluster. Pass `Button`s; the card does not invent any. */\r\n actions?: React.ReactNode | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FileCard({ name, meta, icon, actions, sx }: FileCardProps) {\r\n return (\r\n <Surface\r\n tone=\"subtle\"\r\n radius=\"md\"\r\n padding=\"compact\"\r\n {...(sx !== undefined ? { sx } : {})}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n }}\r\n >\r\n {/* Identity block. `minWidth: 0` is load-bearing: without it a flex item\r\n refuses to shrink below its content width and the filename pushes the\r\n action cluster out of the card instead of truncating. */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-3)\",\r\n minWidth: 0,\r\n flex: 1,\r\n }}\r\n >\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n /* Test hook. The icon wrapper carries no role and no accessible\r\n * name — by design — so there is no semantic query that can reach\r\n * it, and the repo's eslint config rightly forbids container\r\n * queries and direct node access in tests. A stable testid is the\r\n * sanctioned escape hatch, and the contract it guards (R-Ar.2: a\r\n * decorative glyph must NOT be announced) is worth a hook. */\r\n data-testid=\"filecard-icon\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n color: \"var(--accent)\",\r\n // --text-display is the 26px token; the glyph sits at the optical\r\n // scale the three local copies had converged on.\r\n \"& > *\": { fontSize: \"var(--text-display)\" },\r\n }}\r\n >\r\n {icon ?? <InsertDriveFileIcon />}\r\n </Box>\r\n\r\n <Box sx={{ minWidth: 0 }}>\r\n <Box\r\n title={name}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n whiteSpace: \"nowrap\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n }}\r\n >\r\n {name}\r\n </Box>\r\n {meta != null && meta !== \"\" && (\r\n <Box\r\n /* Test hook — same rationale as filecard-icon. The contract is\r\n * that this line is ABSENT rather than empty: a blank second\r\n * line reads as missing data and changes the row height, which\r\n * breaks the alignment of a list of files. \"Absent, not empty\"\r\n * cannot be expressed by a text query. */\r\n data-testid=\"filecard-meta\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n // R-T.3 — tabular numerals on any numeric run.\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {meta}\r\n </Box>\r\n )}\r\n </Box>\r\n </Box>\r\n\r\n {actions != null && (\r\n /* `flexShrink: 0` — the buttons keep their intrinsic width; it is the\r\n filename that yields. The inverse produced squashed labels. */\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {actions}\r\n </Box>\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FileCard;\r\n"],"mappings":"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","ignoreList":[]}
@@ -3,20 +3,14 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var React = _interopRequireWildcard(require("react"));
8
8
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
9
9
  var _mergeLabels = require("../utils/mergeLabels");
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
- 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); }
15
- 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; }
16
- 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; }
17
- 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; }
18
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
19
- 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); } /**
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ /**
20
14
  * FilterTab - Portnet UI v2
21
15
  *
22
16
  * Charter §03 · Component "FilterTabs". Pills used to quickly filter a list
@@ -32,15 +26,16 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
32
26
  * shortcutHint: (s) => `Shortcut: ${s}`,
33
27
  * }} ... />
34
28
  */
29
+
35
30
  // Module-scoped to avoid Temporal Dead Zone when an invalid `variant` is
36
31
  // passed: a local-const initialiser referencing palette.neutral before
37
32
  // palette finished initialising would throw ReferenceError.
38
- var PALETTES = {
33
+ const PALETTES = {
39
34
  neutral: {
40
35
  activeBg: "var(--accent-soft)",
41
36
  activeFg: "var(--accent)"
42
37
  },
43
- "new": {
38
+ new: {
44
39
  activeBg: "var(--status-new-soft)",
45
40
  activeFg: "var(--status-new-fg)"
46
41
  },
@@ -61,27 +56,22 @@ var PALETTES = {
61
56
  activeFg: "var(--status-rejected-fg)"
62
57
  }
63
58
  };
64
- var DEFAULT_LABELS = Object.freeze({
65
- countLabel: function countLabel(n) {
66
- return "".concat(n, " \xE9l\xE9ments");
67
- },
68
- shortcutHint: function shortcutHint(s) {
69
- return "Raccourci : ".concat(s);
70
- }
59
+ const DEFAULT_LABELS = Object.freeze({
60
+ countLabel: n => `${n} éléments`,
61
+ shortcutHint: s => `Raccourci : ${s}`
71
62
  });
72
- function FilterTab(_ref) {
73
- var _ref$active = _ref.active,
74
- active = _ref$active === void 0 ? false : _ref$active,
75
- count = _ref.count,
76
- _ref$variant = _ref.variant,
77
- variant = _ref$variant === void 0 ? "neutral" : _ref$variant,
78
- onClick = _ref.onClick,
79
- shortcut = _ref.shortcut,
80
- labels = _ref.labels,
81
- children = _ref.children;
82
- var palette = PALETTES[variant] || PALETTES.neutral;
83
- var L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
84
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
63
+ function FilterTab({
64
+ active = false,
65
+ count,
66
+ variant = "neutral",
67
+ onClick,
68
+ shortcut,
69
+ labels,
70
+ children
71
+ }) {
72
+ const palette = PALETTES[variant] || PALETTES.neutral;
73
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
85
75
  component: "button",
86
76
  type: "button",
87
77
  "aria-pressed": active,
@@ -95,7 +85,7 @@ function FilterTab(_ref) {
95
85
  // the spacing scale so any future rescale propagates.
96
86
  padding: "calc(var(--s-1) + 1px) var(--s-3)",
97
87
  borderRadius: "var(--r-full)",
98
- border: "1px solid ".concat(active ? "var(--accent)" : "var(--border)"),
88
+ border: `1px solid ${active ? "var(--accent)" : "var(--border)"}`,
99
89
  background: active ? palette.activeBg : "var(--surface)",
100
90
  color: active ? palette.activeFg : "var(--fg-muted)",
101
91
  fontSize: "var(--text-xs)",
@@ -112,13 +102,15 @@ function FilterTab(_ref) {
112
102
  outline: "2px solid var(--accent)",
113
103
  outlineOffset: "var(--pui-outline-offset)"
114
104
  },
115
- "&:hover": _objectSpread({}, !active ? {
116
- background: "var(--bg-hover)"
117
- } : {})
105
+ "&:hover": {
106
+ ...(!active ? {
107
+ background: "var(--bg-hover)"
108
+ } : {})
109
+ }
118
110
  },
119
111
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
120
112
  children: children
121
- }), count != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
113
+ }), count != null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
122
114
  component: "span",
123
115
  "aria-label": L.countLabel(count),
124
116
  sx: {
@@ -141,5 +133,5 @@ function FilterTab(_ref) {
141
133
  })]
142
134
  });
143
135
  }
144
- var _default = exports["default"] = FilterTab;
136
+ var _default = exports.default = FilterTab;
145
137
  //# sourceMappingURL=FilterTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterTab.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","PALETTES","neutral","activeBg","activeFg","sent","pending","approved","rejected","DEFAULT_LABELS","freeze","countLabel","n","concat","shortcutHint","s","FilterTab","_ref","_ref$active","active","count","_ref$variant","variant","onClick","shortcut","labels","children","palette","L","mergeLabels","jsxs","component","type","title","sx","display","alignItems","gap","padding","borderRadius","border","background","color","fontSize","fontWeight","cursor","fontFamily","transition","outline","outlineOffset","jsx","minWidth","lineHeight","textAlign","_default","exports"],"sources":["../../../src/lib/v2/components/FilterTab.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * FilterTab - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"FilterTabs\". Pills used to quickly filter a list\r\n * by status, with an active-state count and pop animation on update.\r\n *\r\n * <FilterTab active={filter === \"all\"} count={42} onClick={() => setFilter(\"all\")}>\r\n * Tous\r\n * </FilterTab>\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <FilterTab labels={{\r\n * countLabel: (n) => `${n} items`,\r\n * shortcutHint: (s) => `Shortcut: ${s}`,\r\n * }} ... />\r\n */\r\n\r\nexport type FilterTabVariant =\r\n | \"neutral\"\r\n | \"new\"\r\n | \"sent\"\r\n | \"pending\"\r\n | \"approved\"\r\n | \"rejected\";\r\n\r\ninterface PaletteEntry {\r\n activeBg: string;\r\n activeFg: string;\r\n}\r\n\r\n// Module-scoped to avoid Temporal Dead Zone when an invalid `variant` is\r\n// passed: a local-const initialiser referencing palette.neutral before\r\n// palette finished initialising would throw ReferenceError.\r\nconst PALETTES: Record<FilterTabVariant, PaletteEntry> = {\r\n neutral: { activeBg: \"var(--accent-soft)\", activeFg: \"var(--accent)\" },\r\n new: { activeBg: \"var(--status-new-soft)\", activeFg: \"var(--status-new-fg)\" },\r\n sent: { activeBg: \"var(--status-sent-soft)\", activeFg: \"var(--status-sent-fg)\" },\r\n pending: { activeBg: \"var(--status-pending-soft)\", activeFg: \"var(--status-pending-fg)\" },\r\n approved: { activeBg: \"var(--status-approved-soft)\", activeFg: \"var(--status-approved-fg)\" },\r\n rejected: { activeBg: \"var(--status-rejected-soft)\", activeFg: \"var(--status-rejected-fg)\" },\r\n};\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n countLabel: (n: number): string => `${n} éléments`,\r\n shortcutHint: (s: string): string => `Raccourci : ${s}`,\r\n});\r\n\r\nexport interface FilterTabLabels {\r\n countLabel?: ((n: number) => string) | undefined;\r\n shortcutHint?: ((s: string) => string) | undefined;\r\n}\r\n\r\nexport interface FilterTabProps {\r\n active?: boolean | undefined;\r\n count?: number | undefined;\r\n /** neutral | new | sent | pending | approved | rejected */\r\n variant?: FilterTabVariant | undefined;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\r\n shortcut?: string | undefined;\r\n labels?: FilterTabLabels | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction FilterTab({\r\n active = false,\r\n count,\r\n variant = \"neutral\",\r\n onClick,\r\n shortcut,\r\n labels,\r\n children,\r\n}: FilterTabProps) {\r\n const palette = PALETTES[variant] || PALETTES.neutral;\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n return (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n aria-pressed={active}\r\n onClick={onClick}\r\n title={shortcut ? L.shortcutHint(shortcut) : undefined}\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n // Compact pill: 5/12 px in literal terms, expressed against\r\n // the spacing scale so any future rescale propagates.\r\n padding: \"calc(var(--s-1) + 1px) var(--s-3)\",\r\n borderRadius: \"var(--r-full)\",\r\n border: `1px solid ${active ? \"var(--accent)\" : \"var(--border)\"}`,\r\n background: active ? palette.activeBg : \"var(--surface)\",\r\n color: active ? palette.activeFg : \"var(--fg-muted)\",\r\n fontSize: \"var(--text-xs)\",\r\n // Was 650 (banned) / 500. var(--fw-semibold) is the canonical\r\n // emphasised weight; var(--fw-medium) the resting one.\r\n fontWeight: active ? \"var(--fw-semibold)\" : \"var(--fw-medium)\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n transition:\r\n \"background var(--duration-fast, 120ms) ease, \" +\r\n \"color var(--duration-fast, 120ms) ease, \" +\r\n \"border-color var(--duration-fast, 120ms) ease\",\r\n // R-F.1 - focus-visible required, charter §05. The previous\r\n // implementation had NO focus style; keyboard users got no\r\n // feedback when tabbing through filter chips.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n \"&:hover\": {\r\n ...(!active ? { background: \"var(--bg-hover)\" } : {}),\r\n },\r\n }}\r\n >\r\n <span>{children}</span>\r\n {count != null && (\r\n <Box\r\n component=\"span\"\r\n aria-label={L.countLabel(count)}\r\n sx={{\r\n display: \"inline-block\",\r\n minWidth: 16,\r\n padding: \"0 var(--s-1)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n // Active keeps the accent emphasis (unchanged). Inactive now\r\n // takes the variant palette (soft bg + status fg) so status\r\n // counts stay colour-coded instead of greying out; neutral\r\n // resolves to accent-soft / accent.\r\n background: active ? \"var(--accent)\" : palette.activeBg,\r\n color: active ? \"var(--accent-fg)\" : palette.activeFg,\r\n borderRadius: \"var(--r-full)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {count}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default FilterTab;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FilterTab.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","PALETTES","neutral","activeBg","activeFg","new","sent","pending","approved","rejected","DEFAULT_LABELS","freeze","countLabel","shortcutHint","s","FilterTab","active","count","variant","onClick","shortcut","labels","children","palette","L","mergeLabels","jsxs","component","type","title","undefined","sx","display","alignItems","gap","padding","borderRadius","border","background","color","fontSize","fontWeight","cursor","fontFamily","transition","outline","outlineOffset","jsx","minWidth","lineHeight","textAlign","_default","exports"],"sources":["../../../src/lib/v2/components/FilterTab.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * FilterTab - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"FilterTabs\". Pills used to quickly filter a list\r\n * by status, with an active-state count and pop animation on update.\r\n *\r\n * <FilterTab active={filter === \"all\"} count={42} onClick={() => setFilter(\"all\")}>\r\n * Tous\r\n * </FilterTab>\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <FilterTab labels={{\r\n * countLabel: (n) => `${n} items`,\r\n * shortcutHint: (s) => `Shortcut: ${s}`,\r\n * }} ... />\r\n */\r\n\r\nexport type FilterTabVariant =\r\n | \"neutral\"\r\n | \"new\"\r\n | \"sent\"\r\n | \"pending\"\r\n | \"approved\"\r\n | \"rejected\";\r\n\r\ninterface PaletteEntry {\r\n activeBg: string;\r\n activeFg: string;\r\n}\r\n\r\n// Module-scoped to avoid Temporal Dead Zone when an invalid `variant` is\r\n// passed: a local-const initialiser referencing palette.neutral before\r\n// palette finished initialising would throw ReferenceError.\r\nconst PALETTES: Record<FilterTabVariant, PaletteEntry> = {\r\n neutral: { activeBg: \"var(--accent-soft)\", activeFg: \"var(--accent)\" },\r\n new: { activeBg: \"var(--status-new-soft)\", activeFg: \"var(--status-new-fg)\" },\r\n sent: { activeBg: \"var(--status-sent-soft)\", activeFg: \"var(--status-sent-fg)\" },\r\n pending: { activeBg: \"var(--status-pending-soft)\", activeFg: \"var(--status-pending-fg)\" },\r\n approved: { activeBg: \"var(--status-approved-soft)\", activeFg: \"var(--status-approved-fg)\" },\r\n rejected: { activeBg: \"var(--status-rejected-soft)\", activeFg: \"var(--status-rejected-fg)\" },\r\n};\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n countLabel: (n: number): string => `${n} éléments`,\r\n shortcutHint: (s: string): string => `Raccourci : ${s}`,\r\n});\r\n\r\nexport interface FilterTabLabels {\r\n countLabel?: ((n: number) => string) | undefined;\r\n shortcutHint?: ((s: string) => string) | undefined;\r\n}\r\n\r\nexport interface FilterTabProps {\r\n active?: boolean | undefined;\r\n count?: number | undefined;\r\n /** neutral | new | sent | pending | approved | rejected */\r\n variant?: FilterTabVariant | undefined;\r\n onClick?: React.MouseEventHandler<HTMLButtonElement> | undefined;\r\n shortcut?: string | undefined;\r\n labels?: FilterTabLabels | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction FilterTab({\r\n active = false,\r\n count,\r\n variant = \"neutral\",\r\n onClick,\r\n shortcut,\r\n labels,\r\n children,\r\n}: FilterTabProps) {\r\n const palette = PALETTES[variant] || PALETTES.neutral;\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n return (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n aria-pressed={active}\r\n onClick={onClick}\r\n title={shortcut ? L.shortcutHint(shortcut) : undefined}\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n // Compact pill: 5/12 px in literal terms, expressed against\r\n // the spacing scale so any future rescale propagates.\r\n padding: \"calc(var(--s-1) + 1px) var(--s-3)\",\r\n borderRadius: \"var(--r-full)\",\r\n border: `1px solid ${active ? \"var(--accent)\" : \"var(--border)\"}`,\r\n background: active ? palette.activeBg : \"var(--surface)\",\r\n color: active ? palette.activeFg : \"var(--fg-muted)\",\r\n fontSize: \"var(--text-xs)\",\r\n // Was 650 (banned) / 500. var(--fw-semibold) is the canonical\r\n // emphasised weight; var(--fw-medium) the resting one.\r\n fontWeight: active ? \"var(--fw-semibold)\" : \"var(--fw-medium)\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n transition:\r\n \"background var(--duration-fast, 120ms) ease, \" +\r\n \"color var(--duration-fast, 120ms) ease, \" +\r\n \"border-color var(--duration-fast, 120ms) ease\",\r\n // R-F.1 - focus-visible required, charter §05. The previous\r\n // implementation had NO focus style; keyboard users got no\r\n // feedback when tabbing through filter chips.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n \"&:hover\": {\r\n ...(!active ? { background: \"var(--bg-hover)\" } : {}),\r\n },\r\n }}\r\n >\r\n <span>{children}</span>\r\n {count != null && (\r\n <Box\r\n component=\"span\"\r\n aria-label={L.countLabel(count)}\r\n sx={{\r\n display: \"inline-block\",\r\n minWidth: 16,\r\n padding: \"0 var(--s-1)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n // Active keeps the accent emphasis (unchanged). Inactive now\r\n // takes the variant palette (soft bg + status fg) so status\r\n // counts stay colour-coded instead of greying out; neutral\r\n // resolves to accent-soft / accent.\r\n background: active ? \"var(--accent)\" : palette.activeBg,\r\n color: active ? \"var(--accent-fg)\" : palette.activeFg,\r\n borderRadius: \"var(--r-full)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n textAlign: \"center\",\r\n }}\r\n >\r\n {count}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default FilterTab;\r\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAmD,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAE,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAV,uBAAA,YAAAA,CAAAM,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA,MAAMgB,QAAgD,GAAG;EACvDC,OAAO,EAAG;IAAEC,QAAQ,EAAE,oBAAoB;IAAWC,QAAQ,EAAE;EAAgB,CAAC;EAChFC,GAAG,EAAO;IAAEF,QAAQ,EAAE,wBAAwB;IAAOC,QAAQ,EAAE;EAAuB,CAAC;EACvFE,IAAI,EAAM;IAAEH,QAAQ,EAAE,yBAAyB;IAAMC,QAAQ,EAAE;EAAwB,CAAC;EACxFG,OAAO,EAAG;IAAEJ,QAAQ,EAAE,4BAA4B;IAAGC,QAAQ,EAAE;EAA2B,CAAC;EAC3FI,QAAQ,EAAE;IAAEL,QAAQ,EAAE,6BAA6B;IAAEC,QAAQ,EAAE;EAA4B,CAAC;EAC5FK,QAAQ,EAAE;IAAEN,QAAQ,EAAE,6BAA6B;IAAEC,QAAQ,EAAE;EAA4B;AAC7F,CAAC;AAED,MAAMM,cAAc,GAAGZ,MAAM,CAACa,MAAM,CAAC;EACnCC,UAAU,EAAKxB,CAAS,IAAa,GAAGA,CAAC,WAAW;EACpDyB,YAAY,EAAGC,CAAS,IAAa,eAAeA,CAAC;AACvD,CAAC,CAAC;AAkBF,SAASC,SAASA,CAAC;EACjBC,MAAM,GAAG,KAAK;EACdC,KAAK;EACLC,OAAO,GAAG,SAAS;EACnBC,OAAO;EACPC,QAAQ;EACRC,MAAM;EACNC;AACc,CAAC,EAAE;EACjB,MAAMC,OAAO,GAAGtB,QAAQ,CAACiB,OAAO,CAAC,IAAIjB,QAAQ,CAACC,OAAO;EACrD,MAAMsB,CAAC,GAAG,IAAAC,wBAAW,EAACf,cAAc,EAAEW,MAAM,CAAC;EAE7C,oBACE,IAAAxC,WAAA,CAAA6C,IAAA,EAAChD,IAAA,CAAAM,OAAG;IACF2C,SAAS,EAAC,QAAQ;IAClBC,IAAI,EAAC,QAAQ;IACb,gBAAcZ,MAAO;IACrBG,OAAO,EAAEA,OAAQ;IACjBU,KAAK,EAAET,QAAQ,GAAGI,CAAC,CAACX,YAAY,CAACO,QAAQ,CAAC,GAAGU,SAAU;IACvDC,EAAE,EAAE;MACFC,OAAO,EAAE,aAAa;MACtBC,UAAU,EAAE,QAAQ;MACpBC,GAAG,EAAE,YAAY;MACjB;MACA;MACAC,OAAO,EAAE,mCAAmC;MAC5CC,YAAY,EAAE,eAAe;MAC7BC,MAAM,EAAE,aAAarB,MAAM,GAAG,eAAe,GAAG,eAAe,EAAE;MACjEsB,UAAU,EAAEtB,MAAM,GAAGO,OAAO,CAACpB,QAAQ,GAAG,gBAAgB;MACxDoC,KAAK,EAAEvB,MAAM,GAAGO,OAAO,CAACnB,QAAQ,GAAG,iBAAiB;MACpDoC,QAAQ,EAAE,gBAAgB;MAC1B;MACA;MACAC,UAAU,EAAEzB,MAAM,GAAG,oBAAoB,GAAG,kBAAkB;MAC9D0B,MAAM,EAAE,SAAS;MACjBC,UAAU,EAAE,SAAS;MACrBC,UAAU,EACR,+CAA+C,GAC/C,0CAA0C,GAC1C,+CAA+C;MACjD;MACA;MACA;MACA,iBAAiB,EAAE;QACjBC,OAAO,EAAE,yBAAyB;QAClCC,aAAa,EAAE;MACjB,CAAC;MACD,SAAS,EAAE;QACT,IAAI,CAAC9B,MAAM,GAAG;UAAEsB,UAAU,EAAE;QAAkB,CAAC,GAAG,CAAC,CAAC;MACtD;IACF,CAAE;IAAAhB,QAAA,gBAEF,IAAAzC,WAAA,CAAAkE,GAAA;MAAAzB,QAAA,EAAOA;IAAQ,CAAO,CAAC,EACtBL,KAAK,IAAI,IAAI,iBACZ,IAAApC,WAAA,CAAAkE,GAAA,EAACrE,IAAA,CAAAM,OAAG;MACF2C,SAAS,EAAC,MAAM;MAChB,cAAYH,CAAC,CAACZ,UAAU,CAACK,KAAK,CAAE;MAChCc,EAAE,EAAE;QACFC,OAAO,EAAE,cAAc;QACvBgB,QAAQ,EAAE,EAAE;QACZb,OAAO,EAAE,cAAc;QACvBK,QAAQ,EAAE,gBAAgB;QAC1BC,UAAU,EAAE,gBAAgB;QAC5B;QACA;QACA;QACA;QACAH,UAAU,EAAEtB,MAAM,GAAG,eAAe,GAAGO,OAAO,CAACpB,QAAQ;QACvDoC,KAAK,EAAEvB,MAAM,GAAG,kBAAkB,GAAGO,OAAO,CAACnB,QAAQ;QACrDgC,YAAY,EAAE,eAAe;QAC7Ba,UAAU,EAAE,gBAAgB;QAC5BC,SAAS,EAAE;MACb,CAAE;MAAA5B,QAAA,EAEDL;IAAK,CACH,CACN;EAAA,CACE,CAAC;AAEV;AAAC,IAAAkC,QAAA,GAAAC,OAAA,CAAApE,OAAA,GAEc+B,SAAS","ignoreList":[]}
@@ -23,18 +23,42 @@
23
23
  * );
24
24
  * }
25
25
  *
26
+ * Localisation (P-4):
27
+ * Every visible string is overridable through `labels`, defaulting
28
+ * to French. The shape is shared across the four error pages, so a
29
+ * host can build one translation object and spread it into each:
30
+ *
31
+ * const t = { breadcrumbRoot: "Error", home: "Back to home", … };
32
+ * <ForbiddenPage labels={{ ...t, title: "Access denied", … }} … />
33
+ *
26
34
  * Charter rules satisfied:
27
35
  * R-2.1 no local UI primitive (composes ActionBar + Button only).
28
36
  * R-Tg.1 44 px tactile floor enforced by v2.Button.
29
37
  * R-A.1 ARIA landmarks via ActionBar's <header role="banner">.
30
38
  * R-T.2 contrast verified for var(--fg) on var(--bg).
31
39
  */
40
+ export interface ForbiddenPageLabels {
41
+ /** First breadcrumb crumb. */
42
+ breadcrumbRoot?: string | undefined;
43
+ /** Last breadcrumb crumb — aria-current="page". */
44
+ breadcrumbCurrent?: string | undefined;
45
+ /** ActionBar heading (the page's <h1>). */
46
+ title?: string | undefined;
47
+ /** Descriptive sentence under the code ornament (the <h2>). */
48
+ heading?: string | undefined;
49
+ /** Body paragraph — the only text telling the user what to do. */
50
+ description?: string | undefined;
51
+ /** Primary CTA label. */
52
+ home?: string | undefined;
53
+ }
32
54
  export interface ForbiddenPageProps {
33
55
  /** Callback for the back button (top-bar arrow). */
34
56
  onBack: () => void;
35
57
  /** Callback for the primary "Retour à l'accueil" CTA. */
36
58
  onHome: () => void;
59
+ /** Overrides for the page's French defaults (P-4). */
60
+ labels?: ForbiddenPageLabels | undefined;
37
61
  }
38
- declare function ForbiddenPage({ onBack, onHome }: ForbiddenPageProps): import("react").JSX.Element;
62
+ declare function ForbiddenPage({ onBack, onHome, labels }: ForbiddenPageProps): import("react").JSX.Element;
39
63
  export default ForbiddenPage;
40
64
  //# sourceMappingURL=ForbiddenPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ForbiddenPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/ForbiddenPage.tsx"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,iBAAS,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,kBAAkB,+BAqB5D;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ForbiddenPage.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/ForbiddenPage.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAYD,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,yDAAyD;IACzD,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,sDAAsD;IACtD,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC1C;AAED,iBAAS,aAAa,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,kBAAkB,+BAuBpE;AAED,eAAe,aAAa,CAAC"}
@@ -3,15 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports["default"] = void 0;
6
+ exports.default = void 0;
7
7
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
8
8
  var _ArrowBack = _interopRequireDefault(require("@mui/icons-material/ArrowBack"));
9
9
  var _LockOutlined = _interopRequireDefault(require("@mui/icons-material/LockOutlined"));
10
10
  var _ActionBar = _interopRequireDefault(require("../patterns/ActionBar"));
11
11
  var _Button = _interopRequireDefault(require("./Button"));
12
12
  var _ErrorPageBody = _interopRequireDefault(require("./_ErrorPageBody"));
13
+ var _mergeLabels = require("../utils/mergeLabels");
13
14
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
16
  /**
16
17
  * ForbiddenPage — Portnet UI v2 (component)
17
18
  *
@@ -37,6 +38,14 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
37
38
  * );
38
39
  * }
39
40
  *
41
+ * Localisation (P-4):
42
+ * Every visible string is overridable through `labels`, defaulting
43
+ * to French. The shape is shared across the four error pages, so a
44
+ * host can build one translation object and spread it into each:
45
+ *
46
+ * const t = { breadcrumbRoot: "Error", home: "Back to home", … };
47
+ * <ForbiddenPage labels={{ ...t, title: "Access denied", … }} … />
48
+ *
40
49
  * Charter rules satisfied:
41
50
  * R-2.1 no local UI primitive (composes ActionBar + Button only).
42
51
  * R-Tg.1 44 px tactile floor enforced by v2.Button.
@@ -44,38 +53,49 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
44
53
  * R-T.2 contrast verified for var(--fg) on var(--bg).
45
54
  */
46
55
 
47
- function ForbiddenPage(_ref) {
48
- var onBack = _ref.onBack,
49
- onHome = _ref.onHome;
56
+ const DEFAULT_LABELS = Object.freeze({
57
+ breadcrumbRoot: "Erreur",
58
+ breadcrumbCurrent: "Accès refusé",
59
+ title: "Accès refusé",
60
+ heading: "Vous n'avez pas accès à cette page",
61
+ description: "Votre profil ne dispose pas des autorisations nécessaires pour consulter cette page. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur, puis revenez à l'accueil.",
62
+ home: "Retour à l'accueil"
63
+ });
64
+ function ForbiddenPage({
65
+ onBack,
66
+ onHome,
67
+ labels
68
+ }) {
69
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
50
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
51
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar["default"], {
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ActionBar.default, {
52
72
  back: onBack,
53
- breadcrumb: ["Erreur", "Accès refusé"],
54
- title: "Acc\xE8s refus\xE9"
55
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody["default"], {
56
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LockOutlined["default"], {
73
+ breadcrumb: [L.breadcrumbRoot, L.breadcrumbCurrent],
74
+ title: L.title
75
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorPageBody.default, {
76
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_LockOutlined.default, {
57
77
  sx: {
58
78
  fontSize: 64,
59
79
  color: "var(--warning)"
60
80
  }
61
81
  }),
62
82
  code: "403",
63
- title: "Vous n'avez pas acc\xE8s \xE0 cette page",
64
- description: "Votre profil ne dispose pas des autorisations n\xE9cessaires pour consulter cette page. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur, puis revenez \xE0 l'accueil."
65
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
83
+ title: L.heading,
84
+ description: L.description
85
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
66
86
  sx: {
67
87
  display: "flex",
68
88
  justifyContent: "center",
69
89
  paddingBottom: "var(--s-7)"
70
90
  },
71
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button["default"], {
91
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
72
92
  variant: "primary",
73
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack["default"], {}),
93
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowBack.default, {}),
74
94
  onClick: onHome,
75
- children: "Retour \xE0 l'accueil"
95
+ children: L.home
76
96
  })
77
97
  })]
78
98
  });
79
99
  }
80
- var _default = exports["default"] = ForbiddenPage;
100
+ var _default = exports.default = ForbiddenPage;
81
101
  //# sourceMappingURL=ForbiddenPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ForbiddenPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_LockOutlined","_ActionBar","_Button","_ErrorPageBody","_jsxRuntime","obj","__esModule","ForbiddenPage","_ref","onBack","onHome","jsxs","Fragment","children","jsx","back","breadcrumb","title","icon","sx","fontSize","color","code","description","display","justifyContent","paddingBottom","variant","onClick","_default","exports"],"sources":["../../../src/lib/v2/components/ForbiddenPage.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport LockOutlined from \"@mui/icons-material/LockOutlined\";\r\nimport ActionBar from \"../patterns/ActionBar\";\r\nimport Button from \"./Button\";\r\nimport ErrorPageBody from \"./_ErrorPageBody\";\r\n\r\n/**\r\n * ForbiddenPage — Portnet UI v2 (component)\r\n *\r\n * Charter §07 · 403 / Accès refusé.\r\n *\r\n * Router-agnostic by design: the page accepts `onBack` and `onHome`\r\n * callback props rather than calling a router hook itself. This\r\n * keeps the design system independent of any specific routing lib\r\n * (react-router, TanStack Router, Next.js, …).\r\n *\r\n * Usage:\r\n *\r\n * import { ForbiddenPage } from \"@portnet/ui/lib/v2\";\r\n * import { useNavigate } from \"react-router-dom\";\r\n *\r\n * function ForbiddenRoute() {\r\n * const navigate = useNavigate();\r\n * return (\r\n * <ForbiddenPage\r\n * onBack={() => navigate(-1)}\r\n * onHome={() => navigate(\"/\")}\r\n * />\r\n * );\r\n * }\r\n *\r\n * Charter rules satisfied:\r\n * R-2.1 no local UI primitive (composes ActionBar + Button only).\r\n * R-Tg.1 44 px tactile floor enforced by v2.Button.\r\n * R-A.1 ARIA landmarks via ActionBar's <header role=\"banner\">.\r\n * R-T.2 contrast verified for var(--fg) on var(--bg).\r\n */\r\nexport interface ForbiddenPageProps {\r\n /** Callback for the back button (top-bar arrow). */\r\n onBack: () => void;\r\n /** Callback for the primary \"Retour à l'accueil\" CTA. */\r\n onHome: () => void;\r\n}\r\n\r\nfunction ForbiddenPage({ onBack, onHome }: ForbiddenPageProps) {\r\n return (\r\n <>\r\n <ActionBar\r\n back={onBack}\r\n breadcrumb={[\"Erreur\", \"Accès refusé\"]}\r\n title=\"Accès refusé\"\r\n />\r\n <ErrorPageBody\r\n icon={<LockOutlined sx={{ fontSize: 64, color: \"var(--warning)\" }} />}\r\n code=\"403\"\r\n title=\"Vous n'avez pas accès à cette page\"\r\n description=\"Votre profil ne dispose pas des autorisations nécessaires pour consulter cette page. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur, puis revenez à l'accueil.\"\r\n />\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", paddingBottom: \"var(--s-7)\" }}>\r\n <Button variant=\"primary\" icon={<ArrowBack />} onClick={onHome}>\r\n Retour à l'accueil\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n}\r\n\r\nexport default ForbiddenPage;\r\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,sBAAA,CAAAC,OAAA;AAA6C,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAD,uBAAAQ,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,SAASE,aAAaA,CAAAC,IAAA,EAAyC;EAAA,IAAtCC,MAAM,GAAAD,IAAA,CAANC,MAAM;IAAEC,MAAM,GAAAF,IAAA,CAANE,MAAM;EACrC,oBACE,IAAAN,WAAA,CAAAO,IAAA,EAAAP,WAAA,CAAAQ,QAAA;IAAAC,QAAA,gBACE,IAAAT,WAAA,CAAAU,GAAA,EAACb,UAAA,WAAS;MACRc,IAAI,EAAEN,MAAO;MACbO,UAAU,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAE;MACvCC,KAAK,EAAC;IAAc,CACrB,CAAC,eACF,IAAAb,WAAA,CAAAU,GAAA,EAACX,cAAA,WAAa;MACZe,IAAI,eAAE,IAAAd,WAAA,CAAAU,GAAA,EAACd,aAAA,WAAY;QAACmB,EAAE,EAAE;UAAEC,QAAQ,EAAE,EAAE;UAAEC,KAAK,EAAE;QAAiB;MAAE,CAAE,CAAE;MACtEC,IAAI,EAAC,KAAK;MACVL,KAAK,EAAC,0CAAoC;MAC1CM,WAAW,EAAC;IAAyL,CACtM,CAAC,eACF,IAAAnB,WAAA,CAAAU,GAAA,EAAClB,IAAA,WAAG;MAACuB,EAAE,EAAE;QAAEK,OAAO,EAAE,MAAM;QAAEC,cAAc,EAAE,QAAQ;QAAEC,aAAa,EAAE;MAAa,CAAE;MAAAb,QAAA,eAClF,IAAAT,WAAA,CAAAU,GAAA,EAACZ,OAAA,WAAM;QAACyB,OAAO,EAAC,SAAS;QAACT,IAAI,eAAE,IAAAd,WAAA,CAAAU,GAAA,EAACf,UAAA,WAAS,IAAE,CAAE;QAAC6B,OAAO,EAAElB,MAAO;QAAAG,QAAA,EAAC;MAEhE,CAAQ;IAAC,CACN,CAAC;EAAA,CACN,CAAC;AAEP;AAAC,IAAAgB,QAAA,GAAAC,OAAA,cAEcvB,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"ForbiddenPage.js","names":["_Box","_interopRequireDefault","require","_ArrowBack","_LockOutlined","_ActionBar","_Button","_ErrorPageBody","_mergeLabels","_jsxRuntime","e","__esModule","default","DEFAULT_LABELS","Object","freeze","breadcrumbRoot","breadcrumbCurrent","title","heading","description","home","ForbiddenPage","onBack","onHome","labels","L","mergeLabels","jsxs","Fragment","children","jsx","back","breadcrumb","icon","sx","fontSize","color","code","display","justifyContent","paddingBottom","variant","onClick","_default","exports"],"sources":["../../../src/lib/v2/components/ForbiddenPage.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\";\r\nimport ArrowBack from \"@mui/icons-material/ArrowBack\";\r\nimport LockOutlined from \"@mui/icons-material/LockOutlined\";\r\nimport ActionBar from \"../patterns/ActionBar\";\r\nimport Button from \"./Button\";\r\nimport ErrorPageBody from \"./_ErrorPageBody\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ForbiddenPage — Portnet UI v2 (component)\r\n *\r\n * Charter §07 · 403 / Accès refusé.\r\n *\r\n * Router-agnostic by design: the page accepts `onBack` and `onHome`\r\n * callback props rather than calling a router hook itself. This\r\n * keeps the design system independent of any specific routing lib\r\n * (react-router, TanStack Router, Next.js, …).\r\n *\r\n * Usage:\r\n *\r\n * import { ForbiddenPage } from \"@portnet/ui/lib/v2\";\r\n * import { useNavigate } from \"react-router-dom\";\r\n *\r\n * function ForbiddenRoute() {\r\n * const navigate = useNavigate();\r\n * return (\r\n * <ForbiddenPage\r\n * onBack={() => navigate(-1)}\r\n * onHome={() => navigate(\"/\")}\r\n * />\r\n * );\r\n * }\r\n *\r\n * Localisation (P-4):\r\n * Every visible string is overridable through `labels`, defaulting\r\n * to French. The shape is shared across the four error pages, so a\r\n * host can build one translation object and spread it into each:\r\n *\r\n * const t = { breadcrumbRoot: \"Error\", home: \"Back to home\", … };\r\n * <ForbiddenPage labels={{ ...t, title: \"Access denied\", … }} … />\r\n *\r\n * Charter rules satisfied:\r\n * R-2.1 no local UI primitive (composes ActionBar + Button only).\r\n * R-Tg.1 44 px tactile floor enforced by v2.Button.\r\n * R-A.1 ARIA landmarks via ActionBar's <header role=\"banner\">.\r\n * R-T.2 contrast verified for var(--fg) on var(--bg).\r\n */\r\n\r\nexport interface ForbiddenPageLabels {\r\n /** First breadcrumb crumb. */\r\n breadcrumbRoot?: string | undefined;\r\n /** Last breadcrumb crumb — aria-current=\"page\". */\r\n breadcrumbCurrent?: string | undefined;\r\n /** ActionBar heading (the page's <h1>). */\r\n title?: string | undefined;\r\n /** Descriptive sentence under the code ornament (the <h2>). */\r\n heading?: string | undefined;\r\n /** Body paragraph — the only text telling the user what to do. */\r\n description?: string | undefined;\r\n /** Primary CTA label. */\r\n home?: string | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n breadcrumbRoot: \"Erreur\",\r\n breadcrumbCurrent: \"Accès refusé\",\r\n title: \"Accès refusé\",\r\n heading: \"Vous n'avez pas accès à cette page\",\r\n description:\r\n \"Votre profil ne dispose pas des autorisations nécessaires pour consulter cette page. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur, puis revenez à l'accueil.\",\r\n home: \"Retour à l'accueil\",\r\n});\r\n\r\nexport interface ForbiddenPageProps {\r\n /** Callback for the back button (top-bar arrow). */\r\n onBack: () => void;\r\n /** Callback for the primary \"Retour à l'accueil\" CTA. */\r\n onHome: () => void;\r\n /** Overrides for the page's French defaults (P-4). */\r\n labels?: ForbiddenPageLabels | undefined;\r\n}\r\n\r\nfunction ForbiddenPage({ onBack, onHome, labels }: ForbiddenPageProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n return (\r\n <>\r\n <ActionBar\r\n back={onBack}\r\n breadcrumb={[L.breadcrumbRoot, L.breadcrumbCurrent]}\r\n title={L.title}\r\n />\r\n <ErrorPageBody\r\n icon={<LockOutlined sx={{ fontSize: 64, color: \"var(--warning)\" }} />}\r\n code=\"403\"\r\n title={L.heading}\r\n description={L.description}\r\n />\r\n <Box sx={{ display: \"flex\", justifyContent: \"center\", paddingBottom: \"var(--s-7)\" }}>\r\n <Button variant=\"primary\" icon={<ArrowBack />} onClick={onHome}>\r\n {L.home}\r\n </Button>\r\n </Box>\r\n </>\r\n );\r\n}\r\n\r\nexport default ForbiddenPage;\r\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,OAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,cAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AAAmD,IAAAO,WAAA,GAAAP,OAAA;AAAA,SAAAD,uBAAAS,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA,MAAMG,cAAc,GAAGC,MAAM,CAACC,MAAM,CAAC;EACnCC,cAAc,EAAK,QAAQ;EAC3BC,iBAAiB,EAAE,cAAc;EACjCC,KAAK,EAAc,cAAc;EACjCC,OAAO,EAAY,oCAAoC;EACvDC,WAAW,EACT,yLAAyL;EAC3LC,IAAI,EAAe;AACrB,CAAC,CAAC;AAWF,SAASC,aAAaA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC;AAA2B,CAAC,EAAE;EACrE,MAAMC,CAAC,GAAG,IAAAC,wBAAW,EAACd,cAAc,EAAEY,MAAM,CAAC;EAE7C,oBACE,IAAAhB,WAAA,CAAAmB,IAAA,EAAAnB,WAAA,CAAAoB,QAAA;IAAAC,QAAA,gBACE,IAAArB,WAAA,CAAAsB,GAAA,EAAC1B,UAAA,CAAAO,OAAS;MACRoB,IAAI,EAAET,MAAO;MACbU,UAAU,EAAE,CAACP,CAAC,CAACV,cAAc,EAAEU,CAAC,CAACT,iBAAiB,CAAE;MACpDC,KAAK,EAAEQ,CAAC,CAACR;IAAM,CAChB,CAAC,eACF,IAAAT,WAAA,CAAAsB,GAAA,EAACxB,cAAA,CAAAK,OAAa;MACZsB,IAAI,eAAE,IAAAzB,WAAA,CAAAsB,GAAA,EAAC3B,aAAA,CAAAQ,OAAY;QAACuB,EAAE,EAAE;UAAEC,QAAQ,EAAE,EAAE;UAAEC,KAAK,EAAE;QAAiB;MAAE,CAAE,CAAE;MACtEC,IAAI,EAAC,KAAK;MACVpB,KAAK,EAAEQ,CAAC,CAACP,OAAQ;MACjBC,WAAW,EAAEM,CAAC,CAACN;IAAY,CAC5B,CAAC,eACF,IAAAX,WAAA,CAAAsB,GAAA,EAAC/B,IAAA,CAAAY,OAAG;MAACuB,EAAE,EAAE;QAAEI,OAAO,EAAE,MAAM;QAAEC,cAAc,EAAE,QAAQ;QAAEC,aAAa,EAAE;MAAa,CAAE;MAAAX,QAAA,eAClF,IAAArB,WAAA,CAAAsB,GAAA,EAACzB,OAAA,CAAAM,OAAM;QAAC8B,OAAO,EAAC,SAAS;QAACR,IAAI,eAAE,IAAAzB,WAAA,CAAAsB,GAAA,EAAC5B,UAAA,CAAAS,OAAS,IAAE,CAAE;QAAC+B,OAAO,EAAEnB,MAAO;QAAAM,QAAA,EAC5DJ,CAAC,CAACL;MAAI,CACD;IAAC,CACN,CAAC;EAAA,CACN,CAAC;AAEP;AAAC,IAAAuB,QAAA,GAAAC,OAAA,CAAAjC,OAAA,GAEcU,aAAa","ignoreList":[]}