@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports["default"] = void 0;
6
+ exports.default = void 0;
8
7
  var React = _interopRequireWildcard(require("react"));
9
8
  var _OutlinedInput = _interopRequireDefault(require("@mui/material/OutlinedInput"));
10
9
  var _InputAdornment = _interopRequireDefault(require("@mui/material/InputAdornment"));
11
10
  var _jsxRuntime = require("react/jsx-runtime");
12
- var _excluded = ["type", "value", "onChange", "onBlur", "placeholder", "disabled", "error", "readOnly", "fullWidth", "startIcon", "endIcon", "prefix", "suffix", "inputProps", "sx"];
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
13
  /**
14
14
  * Input — Portnet UI v2
15
15
  *
@@ -53,43 +53,36 @@ var _excluded = ["type", "value", "onChange", "onBlur", "placeholder", "disabled
53
53
  * compatible: a caller that correctly wraps in `<Field>` never passed `label` to
54
54
  * `Input` in the first place.
55
55
  */
56
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
57
- 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); }
58
- 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; }
59
- 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; }
60
- 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; }
61
- 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; }
62
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
63
- 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); }
64
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
65
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
66
- var Input = /*#__PURE__*/React.forwardRef(function Input(_ref, ref) {
67
- var _ref$type = _ref.type,
68
- type = _ref$type === void 0 ? "text" : _ref$type,
69
- value = _ref.value,
70
- onChange = _ref.onChange,
71
- onBlur = _ref.onBlur,
72
- placeholder = _ref.placeholder,
73
- disabled = _ref.disabled,
74
- error = _ref.error,
75
- readOnly = _ref.readOnly,
76
- _ref$fullWidth = _ref.fullWidth,
77
- fullWidth = _ref$fullWidth === void 0 ? true : _ref$fullWidth,
78
- startIcon = _ref.startIcon,
79
- endIcon = _ref.endIcon,
80
- prefix = _ref.prefix,
81
- suffix = _ref.suffix,
82
- inputProps = _ref.inputProps,
83
- sx = _ref.sx,
84
- rest = _objectWithoutProperties(_ref, _excluded);
56
+
57
+ const Input = /*#__PURE__*/React.forwardRef(function Input({
58
+ type = "text",
59
+ value,
60
+ onChange,
61
+ onBlur,
62
+ placeholder,
63
+ disabled,
64
+ error,
65
+ readOnly,
66
+ fullWidth = true,
67
+ startIcon,
68
+ endIcon,
69
+ prefix,
70
+ suffix,
71
+ inputProps,
72
+ sx,
73
+ /* A11Y-1 — pulled out of ...rest so it does NOT land on the root wrapper.
74
+ * See the note below the component. */
75
+ "aria-required": ariaRequired,
76
+ ...rest
77
+ }, ref) {
85
78
  if (process.env["NODE_ENV"] !== "production" && type === "number") {
86
79
  // eslint-disable-next-line no-console
87
80
  console.warn("[@portnet/ui v2] <Input type=\"number\">: prefer <NumberInput> for charter-compliant locale formatting, clamping, and aria-valuetext.");
88
81
  }
89
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OutlinedInput["default"], _objectSpread({
82
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_OutlinedInput.default, {
90
83
  ref: ref,
91
84
  type: type,
92
- value: value !== null && value !== void 0 ? value : "",
85
+ value: value ?? "",
93
86
  onChange: onChange,
94
87
  onBlur: onBlur,
95
88
  placeholder: placeholder,
@@ -97,19 +90,66 @@ var Input = /*#__PURE__*/React.forwardRef(function Input(_ref, ref) {
97
90
  readOnly: readOnly,
98
91
  error: !!error,
99
92
  fullWidth: fullWidth,
100
- startAdornment: startIcon || prefix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment["default"], {
93
+ startAdornment: startIcon || prefix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment.default, {
101
94
  position: "start",
102
95
  children: startIcon || prefix
103
96
  }) : undefined,
104
- endAdornment: endIcon || suffix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment["default"], {
97
+ endAdornment: endIcon || suffix ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputAdornment.default, {
105
98
  position: "end",
106
99
  children: endIcon || suffix
107
100
  }) : undefined,
108
- slotProps: inputProps ? {
109
- input: inputProps
101
+ slotProps: inputProps || ariaRequired != null ? {
102
+ input: {
103
+ ...(inputProps ?? {}),
104
+ ...(ariaRequired != null ? {
105
+ "aria-required": ariaRequired
106
+ } : {})
107
+ }
110
108
  } : undefined,
111
- sx: sx
112
- }, rest));
109
+ sx: sx,
110
+ ...rest
111
+ });
113
112
  });
114
- var _default = exports["default"] = Input;
113
+
114
+ /**
115
+ * ── A11Y-1 — WHY `aria-required` IS EXTRACTED ───────────────────────────
116
+ *
117
+ * `Field` injects `aria-required` into its child to satisfy R-I.2 MUST
118
+ * (« Champ requis : astérisque rouge dans le label + aria-required »). Left in
119
+ * `...rest`, that attribute reached `OutlinedInput`, and MUI spreads unknown
120
+ * props onto its ROOT WRAPPER — so it landed on
121
+ * `div.MuiInputBase-root` and NEVER on the native `<input>`.
122
+ *
123
+ * Two consequences, the second worse than the first:
124
+ *
125
+ * 1. `aria-required` on a plain `div` with no role is invalid ARIA. axe
126
+ * reports `aria-allowed-attr`; WCAG 4.1.2.
127
+ * 2. The input itself was never marked required, so a screen reader did not
128
+ * announce it. R-I.2 LOOKED satisfied — the asterisk was there, the
129
+ * attribute was in the DOM — while the thing the rule exists to produce
130
+ * never happened. Every required field, in every module.
131
+ *
132
+ * This is the same failure this file's sibling documents for naming: « MUI
133
+ * spreads unknown props onto its ROOT wrapper, so the attribute landed on
134
+ * div.MuiInputBase-root — never on the inner control » (`Field`, R-I.1), and
135
+ * the same one `Combobox` fixed as COMBO-1 by threading the aria attributes
136
+ * onto its input slot. `Input` was simply never given the same treatment.
137
+ *
138
+ * `slotProps.input` and NOT `slotProps.htmlInput`, which is the opposite of
139
+ * `Combobox`: this component renders `OutlinedInput` DIRECTLY, and on an
140
+ * InputBase the `input` slot IS the native element. `htmlInput` is the
141
+ * `TextField` spelling, where `input` means the InputBase itself. Getting this
142
+ * backwards puts the attribute one level up again and reintroduces the bug in
143
+ * a form that still passes review.
144
+ *
145
+ * NOT extracted here: `aria-describedby`, which MUI's `InputBase` destructures
146
+ * itself and applies to the native input, and `aria-invalid`, which MUI derives
147
+ * from the `error` prop `Field` already forwards. Both were verified before
148
+ * being left alone — extracting them would have duplicated behaviour rather
149
+ * than fixed it.
150
+ *
151
+ * Found by the axe suite of `produit-artisanat-fe` (Area 10), failing
152
+ * `aria-allowed-attr` on the first `<Field required>` rendered.
153
+ */
154
+ var _default = exports.default = Input;
115
155
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","names":["React","_interopRequireWildcard","require","_OutlinedInput","_interopRequireDefault","_InputAdornment","_jsxRuntime","_excluded","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","Symbol","toPrimitive","undefined","res","TypeError","Number","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","Input","forwardRef","_ref","ref","_ref$type","type","onChange","onBlur","placeholder","disabled","error","readOnly","_ref$fullWidth","fullWidth","startIcon","endIcon","prefix","suffix","inputProps","sx","rest","process","env","console","warn","jsx","startAdornment","position","children","endAdornment","slotProps","_default","exports"],"sources":["../../../src/lib/v2/components/Input.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\r\nimport type { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\n\r\n/**\r\n * Input — Portnet UI v2\r\n *\r\n * Native value/onChange semantics — no Formik coupling.\r\n * Wrap inside <Field> for label / hint / error / aria binding.\r\n *\r\n * <Field label=\"Référence\">\r\n * <Input value={v} onChange={e => setV(e.target.value)} />\r\n * </Field>\r\n *\r\n * Optional adornments:\r\n * <Input startIcon={<SearchIcon />} prefix=\"EUR\" suffix=\".pdf\" />\r\n *\r\n * NUMERIC INPUT — use <NumberInput> instead.\r\n *\r\n * MUI v9 surface notes:\r\n * The v2 public `inputProps` prop is routed internally to\r\n * slotProps.input — the MUI v9 idiomatic location for native\r\n * <input/> attributes on OutlinedInput. Consumer code passing\r\n * `inputProps={...}` to v2.Input is unchanged.\r\n *\r\n * ── `label` IS NOT ACCEPTED — AND THAT IS DELIBERATE (S-02) ─────────\r\n *\r\n * `label` is omitted from the inherited `OutlinedInputProps` surface below.\r\n * `OutlinedInput` does accept a `label`, but there it only SIZES THE NOTCH in\r\n * the outline: it renders no text and creates no <label> element. So\r\n *\r\n * <Input label=\"Description\" … /> // used to compile\r\n *\r\n * produced a field with no visible label and NO ACCESSIBLE NAME, while looking\r\n * correct to the compiler and to review. That is a silent violation of Charter\r\n * R-I.1, checklist A5 and WCAG 1.3.1 / 4.1.2.\r\n *\r\n * It is not hypothetical: the procuration-portnet-fe migration shipped SIX such\r\n * fields across FIVE files, all passing `tsc --strict` with the full mandated\r\n * flag set, before the omission was noticed. The asymmetry with `Select` — which\r\n * has no `label` prop at all and therefore fails loudly — is what exposed it.\r\n *\r\n * Omitting `label` here converts that silent a11y defect into a compile error,\r\n * and mirrors what `FormikInputProps` already does one file away. Backward\r\n * compatible: a caller that correctly wraps in `<Field>` never passed `label` to\r\n * `Input` in the first place.\r\n */\r\ntype InputType = \"text\" | \"number\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"url\";\r\n\r\nexport interface InputProps\r\n extends Omit<\r\n OutlinedInputProps,\r\n /* S-02 — `label` is omitted on purpose. See the module docstring: on\r\n * OutlinedInput it only sizes the outline notch and renders no accessible\r\n * name, so accepting it here let unlabelled fields compile. Use <Field>. */\r\n \"type\" | \"value\" | \"prefix\" | \"suffix\" | \"label\"\r\n > {\r\n /** @default \"text\" */\r\n type?: InputType | undefined;\r\n value?: string | number | undefined;\r\n /** Leading icon adornment. */\r\n startIcon?: React.ReactNode | undefined;\r\n /** Trailing icon adornment. */\r\n endIcon?: React.ReactNode | undefined;\r\n /** Leading text prefix (adornment). */\r\n prefix?: React.ReactNode | undefined;\r\n /** Trailing text suffix (adornment). */\r\n suffix?: React.ReactNode | undefined;\r\n}\r\n\r\nconst Input = React.forwardRef<React.ComponentRef<typeof OutlinedInput>, InputProps>(function Input(\r\n {\r\n type = \"text\",\r\n value,\r\n onChange,\r\n onBlur,\r\n placeholder,\r\n disabled,\r\n error,\r\n readOnly,\r\n fullWidth = true,\r\n startIcon,\r\n endIcon,\r\n prefix,\r\n suffix,\r\n inputProps,\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && type === \"number\") {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <Input type=\\\"number\\\">: prefer <NumberInput> for charter-compliant locale formatting, clamping, and aria-valuetext.\",\r\n );\r\n }\r\n\r\n return (\r\n <OutlinedInput\r\n ref={ref}\r\n type={type}\r\n value={value ?? \"\"}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n startAdornment={\r\n startIcon || prefix ? (\r\n <InputAdornment position=\"start\">{startIcon || prefix}</InputAdornment>\r\n ) : undefined\r\n }\r\n endAdornment={\r\n endIcon || suffix ? (\r\n <InputAdornment position=\"end\">{endIcon || suffix}</InputAdornment>\r\n ) : undefined\r\n }\r\n slotProps={inputProps ? { input: inputProps } : undefined}\r\n sx={sx}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\nexport default Input;\r\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAC,sBAAA,CAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAD,sBAAA,CAAAF,OAAA;AAA0D,IAAAI,WAAA,GAAAJ,OAAA;AAAA,IAAAK,SAAA;AAE1D;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;AA1CA,SAAAH,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,SAAAW,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAZ,MAAA,CAAAY,IAAA,CAAAF,MAAA,OAAAV,MAAA,CAAAa,qBAAA,QAAAC,OAAA,GAAAd,MAAA,CAAAa,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAhB,MAAA,CAAAE,wBAAA,CAAAQ,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,CAAAT,MAAA,CAAAyB,MAAA,OAAAC,OAAA,WAAAvB,GAAA,IAAAwB,eAAA,CAAAN,MAAA,EAAAlB,GAAA,EAAAsB,MAAA,CAAAtB,GAAA,SAAAH,MAAA,CAAA4B,yBAAA,GAAA5B,MAAA,CAAA6B,gBAAA,CAAAR,MAAA,EAAArB,MAAA,CAAA4B,yBAAA,CAAAH,MAAA,KAAAhB,OAAA,CAAAT,MAAA,CAAAyB,MAAA,GAAAC,OAAA,WAAAvB,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAoB,MAAA,EAAAlB,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAAuB,MAAA,EAAAtB,GAAA,iBAAAkB,MAAA;AAAA,SAAAM,gBAAAxC,GAAA,EAAAgB,GAAA,EAAA2B,KAAA,IAAA3B,GAAA,GAAA4B,cAAA,CAAA5B,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAA2B,KAAA,EAAAA,KAAA,EAAAb,UAAA,QAAAe,YAAA,QAAAC,QAAA,oBAAA9C,GAAA,CAAAgB,GAAA,IAAA2B,KAAA,WAAA3C,GAAA;AAAA,SAAA4C,eAAAG,GAAA,QAAA/B,GAAA,GAAAgC,YAAA,CAAAD,GAAA,oBAAAxC,OAAA,CAAAS,GAAA,iBAAAA,GAAA,GAAAiC,MAAA,CAAAjC,GAAA;AAAA,SAAAgC,aAAAE,KAAA,EAAAC,IAAA,QAAA5C,OAAA,CAAA2C,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAjC,IAAA,CAAA+B,KAAA,EAAAC,IAAA,oBAAA5C,OAAA,CAAAiD,GAAA,uBAAAA,GAAA,YAAAC,SAAA,4DAAAN,IAAA,gBAAAF,MAAA,GAAAS,MAAA,EAAAR,KAAA;AAAA,SAAAS,yBAAArB,MAAA,EAAAsB,QAAA,QAAAtB,MAAA,yBAAAJ,MAAA,GAAA2B,6BAAA,CAAAvB,MAAA,EAAAsB,QAAA,OAAA5C,GAAA,EAAAmB,CAAA,MAAAtB,MAAA,CAAAa,qBAAA,QAAAoC,gBAAA,GAAAjD,MAAA,CAAAa,qBAAA,CAAAY,MAAA,QAAAH,CAAA,MAAAA,CAAA,GAAA2B,gBAAA,CAAAzB,MAAA,EAAAF,CAAA,MAAAnB,GAAA,GAAA8C,gBAAA,CAAA3B,CAAA,OAAAyB,QAAA,CAAAG,OAAA,CAAA/C,GAAA,uBAAAH,MAAA,CAAAI,SAAA,CAAA+C,oBAAA,CAAA7C,IAAA,CAAAmB,MAAA,EAAAtB,GAAA,aAAAkB,MAAA,CAAAlB,GAAA,IAAAsB,MAAA,CAAAtB,GAAA,cAAAkB,MAAA;AAAA,SAAA2B,8BAAAvB,MAAA,EAAAsB,QAAA,QAAAtB,MAAA,yBAAAJ,MAAA,WAAA+B,UAAA,GAAApD,MAAA,CAAAY,IAAA,CAAAa,MAAA,OAAAtB,GAAA,EAAAmB,CAAA,OAAAA,CAAA,MAAAA,CAAA,GAAA8B,UAAA,CAAA5B,MAAA,EAAAF,CAAA,MAAAnB,GAAA,GAAAiD,UAAA,CAAA9B,CAAA,OAAAyB,QAAA,CAAAG,OAAA,CAAA/C,GAAA,kBAAAkB,MAAA,CAAAlB,GAAA,IAAAsB,MAAA,CAAAtB,GAAA,YAAAkB,MAAA;AAkEA,IAAMgC,KAAK,gBAAG1E,KAAK,CAAC2E,UAAU,CAAuD,SAASD,KAAKA,CAAAE,IAAA,EAmBjGC,GAAG,EACH;EAAA,IAAAC,SAAA,GAAAF,IAAA,CAlBEG,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAQ,MAAM,GAAAA,SAAA;IAClB3B,KAAK,GAAAyB,IAAA,CAALzB,KAAK;IACL6B,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;IACRC,MAAM,GAAAL,IAAA,CAANK,MAAM;IACNC,WAAW,GAAAN,IAAA,CAAXM,WAAW;IACXC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IACRC,KAAK,GAAAR,IAAA,CAALQ,KAAK;IACLC,QAAQ,GAAAT,IAAA,CAARS,QAAQ;IAAAC,cAAA,GAAAV,IAAA,CACRW,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,IAAI,GAAAA,cAAA;IAChBE,SAAS,GAAAZ,IAAA,CAATY,SAAS;IACTC,OAAO,GAAAb,IAAA,CAAPa,OAAO;IACPC,MAAM,GAAAd,IAAA,CAANc,MAAM;IACNC,MAAM,GAAAf,IAAA,CAANe,MAAM;IACNC,UAAU,GAAAhB,IAAA,CAAVgB,UAAU;IACVC,EAAE,GAAAjB,IAAA,CAAFiB,EAAE;IACCC,IAAI,GAAA3B,wBAAA,CAAAS,IAAA,EAAArE,SAAA;EAIT,IAAIwF,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,IAAIjB,IAAI,KAAK,QAAQ,EAAE;IACjE;IACAkB,OAAO,CAACC,IAAI,CACV,uIACF,CAAC;EACH;EAEA,oBACE,IAAA5F,WAAA,CAAA6F,GAAA,EAAChG,cAAA,WAAa,EAAAsC,aAAA;IACZoC,GAAG,EAAEA,GAAI;IACTE,IAAI,EAAEA,IAAK;IACX5B,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,EAAG;IACnB6B,QAAQ,EAAEA,QAAS;IACnBC,MAAM,EAAEA,MAAO;IACfC,WAAW,EAAEA,WAAY;IACzBC,QAAQ,EAAEA,QAAS;IACnBE,QAAQ,EAAEA,QAAS;IACnBD,KAAK,EAAE,CAAC,CAACA,KAAM;IACfG,SAAS,EAAEA,SAAU;IACrBa,cAAc,EACZZ,SAAS,IAAIE,MAAM,gBACjB,IAAApF,WAAA,CAAA6F,GAAA,EAAC9F,eAAA,WAAc;MAACgG,QAAQ,EAAC,OAAO;MAAAC,QAAA,EAAEd,SAAS,IAAIE;IAAM,CAAiB,CAAC,GACrE3B,SACL;IACDwC,YAAY,EACVd,OAAO,IAAIE,MAAM,gBACf,IAAArF,WAAA,CAAA6F,GAAA,EAAC9F,eAAA,WAAc;MAACgG,QAAQ,EAAC,KAAK;MAAAC,QAAA,EAAEb,OAAO,IAAIE;IAAM,CAAiB,CAAC,GACjE5B,SACL;IACDyC,SAAS,EAAEZ,UAAU,GAAG;MAAElC,KAAK,EAAEkC;IAAW,CAAC,GAAG7B,SAAU;IAC1D8B,EAAE,EAAEA;EAAG,GACHC,IAAI,CACT,CAAC;AAEN,CAAC,CAAC;AAAC,IAAAW,QAAA,GAAAC,OAAA,cAEYhC,KAAK","ignoreList":[]}
1
+ {"version":3,"file":"Input.js","names":["React","_interopRequireWildcard","require","_OutlinedInput","_interopRequireDefault","_InputAdornment","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Input","forwardRef","type","value","onChange","onBlur","placeholder","disabled","error","readOnly","fullWidth","startIcon","endIcon","prefix","suffix","inputProps","sx","ariaRequired","rest","ref","process","env","console","warn","jsx","startAdornment","position","children","undefined","endAdornment","slotProps","input","_default","exports"],"sources":["../../../src/lib/v2/components/Input.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport OutlinedInput from \"@mui/material/OutlinedInput\";\r\nimport type { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\r\nimport InputAdornment from \"@mui/material/InputAdornment\";\r\n\r\n/**\r\n * Input — Portnet UI v2\r\n *\r\n * Native value/onChange semantics — no Formik coupling.\r\n * Wrap inside <Field> for label / hint / error / aria binding.\r\n *\r\n * <Field label=\"Référence\">\r\n * <Input value={v} onChange={e => setV(e.target.value)} />\r\n * </Field>\r\n *\r\n * Optional adornments:\r\n * <Input startIcon={<SearchIcon />} prefix=\"EUR\" suffix=\".pdf\" />\r\n *\r\n * NUMERIC INPUT — use <NumberInput> instead.\r\n *\r\n * MUI v9 surface notes:\r\n * The v2 public `inputProps` prop is routed internally to\r\n * slotProps.input — the MUI v9 idiomatic location for native\r\n * <input/> attributes on OutlinedInput. Consumer code passing\r\n * `inputProps={...}` to v2.Input is unchanged.\r\n *\r\n * ── `label` IS NOT ACCEPTED — AND THAT IS DELIBERATE (S-02) ─────────\r\n *\r\n * `label` is omitted from the inherited `OutlinedInputProps` surface below.\r\n * `OutlinedInput` does accept a `label`, but there it only SIZES THE NOTCH in\r\n * the outline: it renders no text and creates no <label> element. So\r\n *\r\n * <Input label=\"Description\" … /> // used to compile\r\n *\r\n * produced a field with no visible label and NO ACCESSIBLE NAME, while looking\r\n * correct to the compiler and to review. That is a silent violation of Charter\r\n * R-I.1, checklist A5 and WCAG 1.3.1 / 4.1.2.\r\n *\r\n * It is not hypothetical: the procuration-portnet-fe migration shipped SIX such\r\n * fields across FIVE files, all passing `tsc --strict` with the full mandated\r\n * flag set, before the omission was noticed. The asymmetry with `Select` — which\r\n * has no `label` prop at all and therefore fails loudly — is what exposed it.\r\n *\r\n * Omitting `label` here converts that silent a11y defect into a compile error,\r\n * and mirrors what `FormikInputProps` already does one file away. Backward\r\n * compatible: a caller that correctly wraps in `<Field>` never passed `label` to\r\n * `Input` in the first place.\r\n */\r\ntype InputType = \"text\" | \"number\" | \"email\" | \"password\" | \"search\" | \"tel\" | \"url\";\r\n\r\nexport interface InputProps\r\n extends Omit<\r\n OutlinedInputProps,\r\n /* S-02 — `label` is omitted on purpose. See the module docstring: on\r\n * OutlinedInput it only sizes the outline notch and renders no accessible\r\n * name, so accepting it here let unlabelled fields compile. Use <Field>. */\r\n \"type\" | \"value\" | \"prefix\" | \"suffix\" | \"label\"\r\n > {\r\n /** @default \"text\" */\r\n type?: InputType | undefined;\r\n value?: string | number | undefined;\r\n /** Leading icon adornment. */\r\n startIcon?: React.ReactNode | undefined;\r\n /** Trailing icon adornment. */\r\n endIcon?: React.ReactNode | undefined;\r\n /** Leading text prefix (adornment). */\r\n prefix?: React.ReactNode | undefined;\r\n /** Trailing text suffix (adornment). */\r\n suffix?: React.ReactNode | undefined;\r\n}\r\n\r\nconst Input = React.forwardRef<React.ComponentRef<typeof OutlinedInput>, InputProps>(function Input(\r\n {\r\n type = \"text\",\r\n value,\r\n onChange,\r\n onBlur,\r\n placeholder,\r\n disabled,\r\n error,\r\n readOnly,\r\n fullWidth = true,\r\n startIcon,\r\n endIcon,\r\n prefix,\r\n suffix,\r\n inputProps,\r\n sx,\r\n /* A11Y-1 — pulled out of ...rest so it does NOT land on the root wrapper.\r\n * See the note below the component. */\r\n \"aria-required\": ariaRequired,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && type === \"number\") {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <Input type=\\\"number\\\">: prefer <NumberInput> for charter-compliant locale formatting, clamping, and aria-valuetext.\",\r\n );\r\n }\r\n\r\n return (\r\n <OutlinedInput\r\n ref={ref}\r\n type={type}\r\n value={value ?? \"\"}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n startAdornment={\r\n startIcon || prefix ? (\r\n <InputAdornment position=\"start\">{startIcon || prefix}</InputAdornment>\r\n ) : undefined\r\n }\r\n endAdornment={\r\n endIcon || suffix ? (\r\n <InputAdornment position=\"end\">{endIcon || suffix}</InputAdornment>\r\n ) : undefined\r\n }\r\n slotProps={\r\n inputProps || ariaRequired != null\r\n ? {\r\n input: {\r\n ...(inputProps ?? {}),\r\n ...(ariaRequired != null\r\n ? { \"aria-required\": ariaRequired }\r\n : {}),\r\n },\r\n }\r\n : undefined\r\n }\r\n sx={sx}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n/**\r\n * ── A11Y-1 — WHY `aria-required` IS EXTRACTED ───────────────────────────\r\n *\r\n * `Field` injects `aria-required` into its child to satisfy R-I.2 MUST\r\n * (« Champ requis : astérisque rouge dans le label + aria-required »). Left in\r\n * `...rest`, that attribute reached `OutlinedInput`, and MUI spreads unknown\r\n * props onto its ROOT WRAPPER — so it landed on\r\n * `div.MuiInputBase-root` and NEVER on the native `<input>`.\r\n *\r\n * Two consequences, the second worse than the first:\r\n *\r\n * 1. `aria-required` on a plain `div` with no role is invalid ARIA. axe\r\n * reports `aria-allowed-attr`; WCAG 4.1.2.\r\n * 2. The input itself was never marked required, so a screen reader did not\r\n * announce it. R-I.2 LOOKED satisfied — the asterisk was there, the\r\n * attribute was in the DOM — while the thing the rule exists to produce\r\n * never happened. Every required field, in every module.\r\n *\r\n * This is the same failure this file's sibling documents for naming: « MUI\r\n * spreads unknown props onto its ROOT wrapper, so the attribute landed on\r\n * div.MuiInputBase-root — never on the inner control » (`Field`, R-I.1), and\r\n * the same one `Combobox` fixed as COMBO-1 by threading the aria attributes\r\n * onto its input slot. `Input` was simply never given the same treatment.\r\n *\r\n * `slotProps.input` and NOT `slotProps.htmlInput`, which is the opposite of\r\n * `Combobox`: this component renders `OutlinedInput` DIRECTLY, and on an\r\n * InputBase the `input` slot IS the native element. `htmlInput` is the\r\n * `TextField` spelling, where `input` means the InputBase itself. Getting this\r\n * backwards puts the attribute one level up again and reintroduces the bug in\r\n * a form that still passes review.\r\n *\r\n * NOT extracted here: `aria-describedby`, which MUI's `InputBase` destructures\r\n * itself and applies to the native input, and `aria-invalid`, which MUI derives\r\n * from the `error` prop `Field` already forwards. Both were verified before\r\n * being left alone — extracting them would have duplicated behaviour rather\r\n * than fixed it.\r\n *\r\n * Found by the axe suite of `produit-artisanat-fe` (Area 10), failing\r\n * `aria-allowed-attr` on the first `<Field required>` rendered.\r\n */\r\n\r\nexport default Input;\r\n"],"mappings":"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","ignoreList":[]}
@@ -1,30 +1,18 @@
1
1
  "use strict";
2
2
 
3
- 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); }
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
- exports["default"] = void 0;
6
+ exports.default = void 0;
8
7
  var React = _interopRequireWildcard(require("react"));
9
8
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
10
9
  var _ArrowUpward = _interopRequireDefault(require("@mui/icons-material/ArrowUpward"));
11
10
  var _ArrowDownward = _interopRequireDefault(require("@mui/icons-material/ArrowDownward"));
12
11
  var _mergeLabels = require("../utils/mergeLabels");
13
12
  var _jsxRuntime = require("react/jsx-runtime");
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
- 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); }
16
- 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; }
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
20
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
21
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
22
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
23
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
25
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
26
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
27
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /**
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
15
+ /**
28
16
  * KPICard - Portnet UI v2
29
17
  *
30
18
  * Charter §03 · Component "KPI Card".
@@ -74,57 +62,54 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
74
62
  * - text (uses --success-fg / --danger-fg for 4.5:1 contrast, 1.4.3)
75
63
  * The direction is also announced to screen readers via a SR-only
76
64
  * "en hausse de" / "en baisse de" prefix (1.4.1).
77
- */
78
- var DEFAULT_LABELS = Object.freeze({
65
+ */const DEFAULT_LABELS = Object.freeze({
79
66
  up: "en hausse de ",
80
67
  down: "en baisse de "
81
68
  });
82
69
  function formatDelta(n, locale) {
83
- var opts = {
70
+ const opts = {
84
71
  maximumFractionDigits: 2
85
72
  };
86
73
  try {
87
74
  return new Intl.NumberFormat(locale, opts).format(n);
88
- } catch (_unused) {
75
+ } catch {
89
76
  // Invalid BCP-47 tag → fall back to fr-FR rather than throwing.
90
77
  return new Intl.NumberFormat("fr-FR", opts).format(n);
91
78
  }
92
79
  }
93
- function KPICard(_ref) {
94
- var label = _ref.label,
95
- value = _ref.value,
96
- delta = _ref.delta,
97
- period = _ref.period,
98
- helper = _ref.helper,
99
- _ref$variant = _ref.variant,
100
- variant = _ref$variant === void 0 ? "default" : _ref$variant,
101
- _ref$size = _ref.size,
102
- size = _ref$size === void 0 ? "default" : _ref$size,
103
- icon = _ref.icon,
104
- _ref$locale = _ref.locale,
105
- locale = _ref$locale === void 0 ? "fr-FR" : _ref$locale,
106
- labels = _ref.labels,
107
- sx = _ref.sx;
108
- var isText = variant === "text";
109
- var isCompact = size === "compact";
110
- var L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
80
+ function KPICard({
81
+ label,
82
+ value,
83
+ delta,
84
+ period,
85
+ helper,
86
+ variant = "default",
87
+ size = "default",
88
+ icon,
89
+ locale = "fr-FR",
90
+ labels,
91
+ sx
92
+ }) {
93
+ const isText = variant === "text";
94
+ const isCompact = size === "compact";
95
+ const L = (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
111
96
 
112
97
  // Parse delta into a definite `number | null` so the sign checks and
113
98
  // Math.abs below narrow cleanly under strictNullChecks.
114
- var parsed = delta == null || delta === "" ? null : Number(delta);
115
- var deltaNum = parsed !== null && Number.isFinite(parsed) ? parsed : null;
116
- var isPositive = deltaNum !== null && deltaNum > 0;
117
- var isNegative = deltaNum !== null && deltaNum < 0;
99
+ const parsed = delta == null || delta === "" ? null : Number(delta);
100
+ const deltaNum = parsed !== null && Number.isFinite(parsed) ? parsed : null;
101
+ const isPositive = deltaNum !== null && deltaNum > 0;
102
+ const isNegative = deltaNum !== null && deltaNum < 0;
118
103
 
119
104
  // R-G.1 - split icon vs text colour so the icon stays vivid (1.4.11)
120
105
  // while the numeric text meets 1.4.3 (4.5:1 against white).
121
- var iconColor = isPositive ? "var(--success)" : isNegative ? "var(--danger)" : "var(--fg-subtle)";
122
- var textColor = isPositive ? "var(--success-fg)" : isNegative ? "var(--danger-fg)" : "var(--fg-subtle)";
106
+ const iconColor = isPositive ? "var(--success)" : isNegative ? "var(--danger)" : "var(--fg-subtle)";
107
+ const textColor = isPositive ? "var(--success-fg)" : isNegative ? "var(--danger-fg)" : "var(--fg-subtle)";
123
108
 
124
109
  // SR-only direction prefix - empty for zero or missing deltas (the bare
125
110
  // "0 %" already reads correctly without a direction word).
126
- var directionLabel = isPositive ? L.up : isNegative ? L.down : "";
127
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
111
+ const directionLabel = isPositive ? L.up : isNegative ? L.down : "";
112
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
128
113
  sx: [{
129
114
  padding: "var(--s-4) var(--s-5)",
130
115
  background: "var(--surface)",
@@ -132,15 +117,15 @@ function KPICard(_ref) {
132
117
  borderRadius: "var(--r-lg)",
133
118
  boxShadow: "var(--shadow-xs)",
134
119
  minWidth: 0
135
- }].concat(_toConsumableArray(Array.isArray(sx) ? sx : sx ? [sx] : [])),
136
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
120
+ }, ...(Array.isArray(sx) ? sx : sx ? [sx] : [])],
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
137
122
  sx: {
138
123
  display: "flex",
139
124
  alignItems: "center",
140
125
  justifyContent: "space-between",
141
126
  marginBottom: 1
142
127
  },
143
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
128
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
144
129
  component: "p",
145
130
  sx: {
146
131
  margin: 0,
@@ -152,15 +137,15 @@ function KPICard(_ref) {
152
137
  color: "var(--fg-subtle)"
153
138
  },
154
139
  children: label
155
- }), icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
140
+ }), icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
156
141
  sx: {
157
142
  color: "var(--fg-subtle)"
158
143
  },
159
144
  children: icon
160
145
  })]
161
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
146
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
162
147
  component: "p",
163
- sx: _objectSpread({
148
+ sx: {
164
149
  margin: 0,
165
150
  /* variant/size resolution — gap G-11.
166
151
  *
@@ -182,16 +167,21 @@ function KPICard(_ref) {
182
167
  // A text descriptor takes semibold instead: bold at body size reads
183
168
  // as a heading and competes with the label above it.
184
169
  fontWeight: isText ? "var(--fw-semibold)" : "var(--fw-bold)",
185
- color: "var(--fg)"
186
- }, isText ? {
187
- lineHeight: "var(--lh-normal)"
188
- } : {
189
- fontVariantNumeric: "tabular-nums",
190
- letterSpacing: "-0.01em",
191
- lineHeight: "var(--lh-tight)"
192
- }),
193
- children: value !== null && value !== void 0 ? value : ""
194
- }), (deltaNum !== null || helper) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
170
+ color: "var(--fg)",
171
+ /* Both of these are FIGURE typography and are actively wrong on prose:
172
+ * tabular numerals force uniform digit widths (pointless without
173
+ * digits) and negative tracking tightens words that need their normal
174
+ * spacing to stay legible at body size. */
175
+ ...(isText ? {
176
+ lineHeight: "var(--lh-normal)"
177
+ } : {
178
+ fontVariantNumeric: "tabular-nums",
179
+ letterSpacing: "-0.01em",
180
+ lineHeight: "var(--lh-tight)"
181
+ })
182
+ },
183
+ children: value ?? "—"
184
+ }), (deltaNum !== null || helper) && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
195
185
  sx: {
196
186
  display: "flex",
197
187
  alignItems: "center",
@@ -199,7 +189,7 @@ function KPICard(_ref) {
199
189
  marginTop: 1,
200
190
  fontSize: "var(--text-xs)"
201
191
  },
202
- children: [deltaNum !== null && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
192
+ children: [deltaNum !== null && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
203
193
  sx: {
204
194
  display: "inline-flex",
205
195
  alignItems: "center",
@@ -215,13 +205,13 @@ function KPICard(_ref) {
215
205
  children: [directionLabel && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
216
206
  className: "pui-sr-only",
217
207
  children: directionLabel
218
- }), isPositive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowUpward["default"], {
208
+ }), isPositive ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowUpward.default, {
219
209
  "aria-hidden": "true",
220
210
  sx: {
221
211
  fontSize: "var(--text-xs)",
222
212
  color: iconColor
223
213
  }
224
- }) : isNegative ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowDownward["default"], {
214
+ }) : isNegative ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowDownward.default, {
225
215
  "aria-hidden": "true",
226
216
  sx: {
227
217
  fontSize: "var(--text-xs)",
@@ -230,7 +220,7 @@ function KPICard(_ref) {
230
220
  }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
231
221
  children: [formatDelta(Math.abs(deltaNum), locale), " %"]
232
222
  })]
233
- }), (period || helper) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
223
+ }), (period || helper) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
234
224
  component: "span",
235
225
  sx: {
236
226
  color: "var(--fg-subtle)"
@@ -240,5 +230,5 @@ function KPICard(_ref) {
240
230
  })]
241
231
  });
242
232
  }
243
- var _default = exports["default"] = KPICard;
233
+ var _default = exports.default = KPICard;
244
234
  //# sourceMappingURL=KPICard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KPICard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_ArrowUpward","_ArrowDownward","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","Symbol","toPrimitive","undefined","res","TypeError","Number","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","iter","iterator","isArray","len","arr2","DEFAULT_LABELS","freeze","up","down","formatDelta","locale","opts","maximumFractionDigits","Intl","NumberFormat","format","_unused","KPICard","_ref","label","delta","period","helper","_ref$variant","variant","_ref$size","size","icon","_ref$locale","labels","sx","isText","isCompact","L","mergeLabels","parsed","deltaNum","isFinite","isPositive","isNegative","iconColor","textColor","directionLabel","jsxs","padding","background","border","borderRadius","boxShadow","minWidth","concat","children","display","alignItems","justifyContent","marginBottom","jsx","component","margin","fontSize","fontWeight","letterSpacing","textTransform","color","lineHeight","fontVariantNumeric","gap","marginTop","className","Math","abs","_default","exports"],"sources":["../../../src/lib/v2/components/KPICard.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 ArrowUpwardIcon from \"@mui/icons-material/ArrowUpward\";\r\nimport ArrowDownwardIcon from \"@mui/icons-material/ArrowDownward\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * KPICard - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"KPI Card\".\r\n * Label uppercase 11 px + valeur 24 px + delta % vs période · tabular-nums.\r\n *\r\n * <KPICard label=\"Titres en attente\" value={42} delta={+12.5} period=\"vs mois dernier\" />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <KPICard\r\n * label=\"Pending titles\"\r\n * value={42}\r\n * delta={+12.5}\r\n * period=\"vs last month\"\r\n * locale=\"en-US\"\r\n * labels={{ up: \"up by \", down: \"down by \" }}\r\n * />\r\n *\r\n * - `locale` controls the delta percentage's separator (12.5 vs 12,5).\r\n * - `labels.up` / `labels.down` are SR-only direction prefixes; default\r\n * French preserved for back-compat.\r\n *\r\n * Variants (capability gap G-11)\r\n * ------------------------------\r\n * <KPICard label=\"Type\" value=\"Importation matières premières\" variant=\"text\" />\r\n * <KPICard label=\"Articles\" value={4} size=\"compact\" />\r\n *\r\n * `variant` says what the value IS (a metric vs a text descriptor); `size` says\r\n * how big it renders (dashboard tile vs narrow drawer). They are independent and\r\n * both were observed as host-side `sx` overrides reaching into `\"& > p\"` — the\r\n * text one byte-identical in two files of the same module, which is what a\r\n * missing variant looks like from the outside.\r\n *\r\n * NOTE (finding G-21 — charter contradiction, NOT resolved here). The label\r\n * renders at a raw `11` and the default value at a raw `24`. Both are quoted\r\n * from Charter §03's KPI Card row. But §02.2 R-T.1 is a MUST — « Font-size\r\n * minimum 12 px » — and the type scale is 12/13/14/16/20/26: neither 11 nor 24\r\n * exists in it, so R-2.3 (« aucune valeur magique ») is violated too. Two MUSTs\r\n * against one line of component prose. Tokenising them is a typography change on\r\n * every KPI of every module and needs a visual gate plus a charter amendment, so\r\n * it is raised rather than silently applied. The `compact` and `text` sizes added\r\n * here are token-based; only the untouched default carries the literals.\r\n *\r\n * A11y note (WCAG 1.4.1 + 1.4.3):\r\n * The delta is conveyed by THREE channels:\r\n * - icon (visual, non-text - uses --success / --danger, 1.4.11)\r\n * - colour (visual reinforcement only)\r\n * - text (uses --success-fg / --danger-fg for 4.5:1 contrast, 1.4.3)\r\n * The direction is also announced to screen readers via a SR-only\r\n * \"en hausse de\" / \"en baisse de\" prefix (1.4.1).\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n up: \"en hausse de \",\r\n down: \"en baisse de \",\r\n});\r\n\r\nfunction formatDelta(n: number, locale: string): string {\r\n const opts: Intl.NumberFormatOptions = { maximumFractionDigits: 2 };\r\n try {\r\n return new Intl.NumberFormat(locale, opts).format(n);\r\n } catch {\r\n // Invalid BCP-47 tag → fall back to fr-FR rather than throwing.\r\n return new Intl.NumberFormat(\"fr-FR\", opts).format(n);\r\n }\r\n}\r\n\r\nexport interface KPICardLabels {\r\n up?: string | undefined;\r\n down?: string | undefined;\r\n}\r\n\r\nexport interface KPICardProps {\r\n label: React.ReactNode;\r\n value?: React.ReactNode | undefined;\r\n delta?: number | string | undefined;\r\n period?: React.ReactNode | undefined;\r\n helper?: React.ReactNode | undefined;\r\n /**\r\n * What the `value` slot HOLDS — not how big it is (see `size`).\r\n *\r\n * \"default\" : a numeric metric. Display type size, tight leading,\r\n * tabular numerals, negative letter-spacing.\r\n * \"text\" : a TEXT descriptor (« Importation matières premières »).\r\n * Body size, semibold, normal leading, free to wrap.\r\n *\r\n * Capability gap G-11. This prop previously accepted only \"default\" and was\r\n * marked \"reserved for future visual variants\" — so a card whose value was a\r\n * long label had no supported shape, and every module patched it from the\r\n * outside with an `sx` override reaching into `\"& > p\"`. addpe-fe carries that\r\n * override BYTE-IDENTICAL in two files, which is the signature of a missing\r\n * variant rather than of a local design decision.\r\n *\r\n * The distinction is not cosmetic: at display size a descriptor wraps and\r\n * breaks the strip's row rhythm, and `tabular-nums` + negative tracking are\r\n * meaningless — actively wrong — on prose.\r\n */\r\n variant?: \"default\" | \"text\" | undefined;\r\n /**\r\n * Type scale of the `value` slot.\r\n *\r\n * \"default\" : the charter's dashboard tile size.\r\n * \"compact\" : one step down (--text-h2), for a NARROW container — a 480 px\r\n * drawer, a 2×2 grid at ~220 px per tile — where the default\r\n * reads oversized against the 11 px label.\r\n *\r\n * Same origin as `variant`: addpe-fe's `KPI_VALUE_COMPACT_SX`, applied to\r\n * three cards of its preview drawer.\r\n */\r\n size?: \"default\" | \"compact\" | undefined;\r\n icon?: React.ReactElement | undefined;\r\n locale?: string | undefined;\r\n labels?: KPICardLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction KPICard({\r\n label,\r\n value,\r\n delta,\r\n period,\r\n helper,\r\n variant = \"default\",\r\n size = \"default\",\r\n icon,\r\n locale = \"fr-FR\",\r\n labels,\r\n sx,\r\n}: KPICardProps) {\r\n const isText = variant === \"text\";\r\n const isCompact = size === \"compact\";\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // Parse delta into a definite `number | null` so the sign checks and\r\n // Math.abs below narrow cleanly under strictNullChecks.\r\n const parsed = delta == null || delta === \"\" ? null : Number(delta);\r\n const deltaNum: number | null =\r\n parsed !== null && Number.isFinite(parsed) ? parsed : null;\r\n const isPositive = deltaNum !== null && deltaNum > 0;\r\n const isNegative = deltaNum !== null && deltaNum < 0;\r\n\r\n // R-G.1 - split icon vs text colour so the icon stays vivid (1.4.11)\r\n // while the numeric text meets 1.4.3 (4.5:1 against white).\r\n const iconColor =\r\n isPositive ? \"var(--success)\" :\r\n isNegative ? \"var(--danger)\" : \"var(--fg-subtle)\";\r\n const textColor =\r\n isPositive ? \"var(--success-fg)\" :\r\n isNegative ? \"var(--danger-fg)\" : \"var(--fg-subtle)\";\r\n\r\n // SR-only direction prefix - empty for zero or missing deltas (the bare\r\n // \"0 %\" already reads correctly without a direction word).\r\n const directionLabel =\r\n isPositive ? L.up :\r\n isNegative ? L.down : \"\";\r\n\r\n return (\r\n <Box\r\n sx={[\r\n {\r\n padding: \"var(--s-4) var(--s-5)\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-xs)\",\r\n minWidth: 0,\r\n },\r\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\r\n ]}\r\n >\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 1 }}>\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n margin: 0,\r\n // Charter §03 KPI Card - explicit literal \"label uppercase 11 px\"\r\n fontSize: 11,\r\n fontWeight: \"var(--fw-semibold)\",\r\n letterSpacing: \"0.06em\",\r\n textTransform: \"uppercase\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n {icon && <Box sx={{ color: \"var(--fg-subtle)\" }}>{icon}</Box>}\r\n </Box>\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n margin: 0,\r\n /* variant/size resolution — gap G-11.\r\n *\r\n * \"default\" keeps the Charter §03 literal (\"valeur 24 px\"); see the\r\n * G-21 note below on why that literal is itself contested.\r\n * \"compact\" steps down to --text-h2 (20px) for narrow containers.\r\n * \"text\" drops to --text-body and behaves like prose. */\r\n fontSize: isText\r\n ? \"var(--text-body)\"\r\n : isCompact\r\n ? \"var(--text-h2)\"\r\n : 24,\r\n // Heaviest weight in the post-Batch-1 scale (700). The black-weight\r\n // custom property this once referenced was dropped from the\r\n // typography tokens and resolved to undefined in CSS, silently\r\n // flattening the weight on every dashboard KPI.\r\n //\r\n // The old name is deliberately NOT spelled out here: the\r\n // banned-patterns guard is a raw text scan with no comment\r\n // awareness, so writing it - even to document its removal - trips\r\n // the very rule that protects this line. See banned-patterns.test.ts.\r\n //\r\n // A text descriptor takes semibold instead: bold at body size reads\r\n // as a heading and competes with the label above it.\r\n fontWeight: isText ? \"var(--fw-semibold)\" : \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n /* Both of these are FIGURE typography and are actively wrong on prose:\r\n * tabular numerals force uniform digit widths (pointless without\r\n * digits) and negative tracking tightens words that need their normal\r\n * spacing to stay legible at body size. */\r\n ...(isText\r\n ? { lineHeight: \"var(--lh-normal)\" }\r\n : {\r\n fontVariantNumeric: \"tabular-nums\",\r\n letterSpacing: \"-0.01em\",\r\n lineHeight: \"var(--lh-tight)\",\r\n }),\r\n }}\r\n >\r\n {value ?? \"—\"}\r\n </Box>\r\n {(deltaNum !== null || helper) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1,\r\n marginTop: 1,\r\n fontSize: \"var(--text-xs)\",\r\n }}\r\n >\r\n {deltaNum !== null && (\r\n <Box\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: 0.25,\r\n // Default colour for the block = textColor. The icon\r\n // overrides to iconColor below for a vivid arrow against\r\n // a darker numeric label.\r\n color: textColor,\r\n fontWeight: \"var(--fw-semibold)\",\r\n // R-T.3 - tabular-nums on delta so percentages align across cards\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {/* WCAG 1.4.1 - direction is announced to SR only; sighted\r\n users get the arrow + colour. */}\r\n {directionLabel && (\r\n <span className=\"pui-sr-only\">{directionLabel}</span>\r\n )}\r\n {isPositive ? (\r\n <ArrowUpwardIcon\r\n aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: iconColor }}\r\n />\r\n ) : isNegative ? (\r\n <ArrowDownwardIcon\r\n aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: iconColor }}\r\n />\r\n ) : null}\r\n <span>{formatDelta(Math.abs(deltaNum), locale)} %</span>\r\n </Box>\r\n )}\r\n {(period || helper) && (\r\n <Box component=\"span\" sx={{ color: \"var(--fg-subtle)\" }}>\r\n {helper || period}\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default KPICard;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"KPICard.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_ArrowUpward","_ArrowDownward","_mergeLabels","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_LABELS","freeze","up","down","formatDelta","locale","opts","maximumFractionDigits","Intl","NumberFormat","format","KPICard","label","value","delta","period","helper","variant","size","icon","labels","sx","isText","isCompact","L","mergeLabels","parsed","Number","deltaNum","isFinite","isPositive","isNegative","iconColor","textColor","directionLabel","jsxs","padding","background","border","borderRadius","boxShadow","minWidth","Array","isArray","children","display","alignItems","justifyContent","marginBottom","jsx","component","margin","fontSize","fontWeight","letterSpacing","textTransform","color","lineHeight","fontVariantNumeric","gap","marginTop","className","Math","abs","_default","exports"],"sources":["../../../src/lib/v2/components/KPICard.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 ArrowUpwardIcon from \"@mui/icons-material/ArrowUpward\";\r\nimport ArrowDownwardIcon from \"@mui/icons-material/ArrowDownward\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * KPICard - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"KPI Card\".\r\n * Label uppercase 11 px + valeur 24 px + delta % vs période · tabular-nums.\r\n *\r\n * <KPICard label=\"Titres en attente\" value={42} delta={+12.5} period=\"vs mois dernier\" />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <KPICard\r\n * label=\"Pending titles\"\r\n * value={42}\r\n * delta={+12.5}\r\n * period=\"vs last month\"\r\n * locale=\"en-US\"\r\n * labels={{ up: \"up by \", down: \"down by \" }}\r\n * />\r\n *\r\n * - `locale` controls the delta percentage's separator (12.5 vs 12,5).\r\n * - `labels.up` / `labels.down` are SR-only direction prefixes; default\r\n * French preserved for back-compat.\r\n *\r\n * Variants (capability gap G-11)\r\n * ------------------------------\r\n * <KPICard label=\"Type\" value=\"Importation matières premières\" variant=\"text\" />\r\n * <KPICard label=\"Articles\" value={4} size=\"compact\" />\r\n *\r\n * `variant` says what the value IS (a metric vs a text descriptor); `size` says\r\n * how big it renders (dashboard tile vs narrow drawer). They are independent and\r\n * both were observed as host-side `sx` overrides reaching into `\"& > p\"` — the\r\n * text one byte-identical in two files of the same module, which is what a\r\n * missing variant looks like from the outside.\r\n *\r\n * NOTE (finding G-21 — charter contradiction, NOT resolved here). The label\r\n * renders at a raw `11` and the default value at a raw `24`. Both are quoted\r\n * from Charter §03's KPI Card row. But §02.2 R-T.1 is a MUST — « Font-size\r\n * minimum 12 px » — and the type scale is 12/13/14/16/20/26: neither 11 nor 24\r\n * exists in it, so R-2.3 (« aucune valeur magique ») is violated too. Two MUSTs\r\n * against one line of component prose. Tokenising them is a typography change on\r\n * every KPI of every module and needs a visual gate plus a charter amendment, so\r\n * it is raised rather than silently applied. The `compact` and `text` sizes added\r\n * here are token-based; only the untouched default carries the literals.\r\n *\r\n * A11y note (WCAG 1.4.1 + 1.4.3):\r\n * The delta is conveyed by THREE channels:\r\n * - icon (visual, non-text - uses --success / --danger, 1.4.11)\r\n * - colour (visual reinforcement only)\r\n * - text (uses --success-fg / --danger-fg for 4.5:1 contrast, 1.4.3)\r\n * The direction is also announced to screen readers via a SR-only\r\n * \"en hausse de\" / \"en baisse de\" prefix (1.4.1).\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n up: \"en hausse de \",\r\n down: \"en baisse de \",\r\n});\r\n\r\nfunction formatDelta(n: number, locale: string): string {\r\n const opts: Intl.NumberFormatOptions = { maximumFractionDigits: 2 };\r\n try {\r\n return new Intl.NumberFormat(locale, opts).format(n);\r\n } catch {\r\n // Invalid BCP-47 tag → fall back to fr-FR rather than throwing.\r\n return new Intl.NumberFormat(\"fr-FR\", opts).format(n);\r\n }\r\n}\r\n\r\nexport interface KPICardLabels {\r\n up?: string | undefined;\r\n down?: string | undefined;\r\n}\r\n\r\nexport interface KPICardProps {\r\n label: React.ReactNode;\r\n value?: React.ReactNode | undefined;\r\n delta?: number | string | undefined;\r\n period?: React.ReactNode | undefined;\r\n helper?: React.ReactNode | undefined;\r\n /**\r\n * What the `value` slot HOLDS — not how big it is (see `size`).\r\n *\r\n * \"default\" : a numeric metric. Display type size, tight leading,\r\n * tabular numerals, negative letter-spacing.\r\n * \"text\" : a TEXT descriptor (« Importation matières premières »).\r\n * Body size, semibold, normal leading, free to wrap.\r\n *\r\n * Capability gap G-11. This prop previously accepted only \"default\" and was\r\n * marked \"reserved for future visual variants\" — so a card whose value was a\r\n * long label had no supported shape, and every module patched it from the\r\n * outside with an `sx` override reaching into `\"& > p\"`. addpe-fe carries that\r\n * override BYTE-IDENTICAL in two files, which is the signature of a missing\r\n * variant rather than of a local design decision.\r\n *\r\n * The distinction is not cosmetic: at display size a descriptor wraps and\r\n * breaks the strip's row rhythm, and `tabular-nums` + negative tracking are\r\n * meaningless — actively wrong — on prose.\r\n */\r\n variant?: \"default\" | \"text\" | undefined;\r\n /**\r\n * Type scale of the `value` slot.\r\n *\r\n * \"default\" : the charter's dashboard tile size.\r\n * \"compact\" : one step down (--text-h2), for a NARROW container — a 480 px\r\n * drawer, a 2×2 grid at ~220 px per tile — where the default\r\n * reads oversized against the 11 px label.\r\n *\r\n * Same origin as `variant`: addpe-fe's `KPI_VALUE_COMPACT_SX`, applied to\r\n * three cards of its preview drawer.\r\n */\r\n size?: \"default\" | \"compact\" | undefined;\r\n icon?: React.ReactElement | undefined;\r\n locale?: string | undefined;\r\n labels?: KPICardLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction KPICard({\r\n label,\r\n value,\r\n delta,\r\n period,\r\n helper,\r\n variant = \"default\",\r\n size = \"default\",\r\n icon,\r\n locale = \"fr-FR\",\r\n labels,\r\n sx,\r\n}: KPICardProps) {\r\n const isText = variant === \"text\";\r\n const isCompact = size === \"compact\";\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // Parse delta into a definite `number | null` so the sign checks and\r\n // Math.abs below narrow cleanly under strictNullChecks.\r\n const parsed = delta == null || delta === \"\" ? null : Number(delta);\r\n const deltaNum: number | null =\r\n parsed !== null && Number.isFinite(parsed) ? parsed : null;\r\n const isPositive = deltaNum !== null && deltaNum > 0;\r\n const isNegative = deltaNum !== null && deltaNum < 0;\r\n\r\n // R-G.1 - split icon vs text colour so the icon stays vivid (1.4.11)\r\n // while the numeric text meets 1.4.3 (4.5:1 against white).\r\n const iconColor =\r\n isPositive ? \"var(--success)\" :\r\n isNegative ? \"var(--danger)\" : \"var(--fg-subtle)\";\r\n const textColor =\r\n isPositive ? \"var(--success-fg)\" :\r\n isNegative ? \"var(--danger-fg)\" : \"var(--fg-subtle)\";\r\n\r\n // SR-only direction prefix - empty for zero or missing deltas (the bare\r\n // \"0 %\" already reads correctly without a direction word).\r\n const directionLabel =\r\n isPositive ? L.up :\r\n isNegative ? L.down : \"\";\r\n\r\n return (\r\n <Box\r\n sx={[\r\n {\r\n padding: \"var(--s-4) var(--s-5)\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-xs)\",\r\n minWidth: 0,\r\n },\r\n ...(Array.isArray(sx) ? sx : sx ? [sx] : []),\r\n ]}\r\n >\r\n <Box sx={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: 1 }}>\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n margin: 0,\r\n // Charter §03 KPI Card - explicit literal \"label uppercase 11 px\"\r\n fontSize: 11,\r\n fontWeight: \"var(--fw-semibold)\",\r\n letterSpacing: \"0.06em\",\r\n textTransform: \"uppercase\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n {icon && <Box sx={{ color: \"var(--fg-subtle)\" }}>{icon}</Box>}\r\n </Box>\r\n <Box\r\n component=\"p\"\r\n sx={{\r\n margin: 0,\r\n /* variant/size resolution — gap G-11.\r\n *\r\n * \"default\" keeps the Charter §03 literal (\"valeur 24 px\"); see the\r\n * G-21 note below on why that literal is itself contested.\r\n * \"compact\" steps down to --text-h2 (20px) for narrow containers.\r\n * \"text\" drops to --text-body and behaves like prose. */\r\n fontSize: isText\r\n ? \"var(--text-body)\"\r\n : isCompact\r\n ? \"var(--text-h2)\"\r\n : 24,\r\n // Heaviest weight in the post-Batch-1 scale (700). The black-weight\r\n // custom property this once referenced was dropped from the\r\n // typography tokens and resolved to undefined in CSS, silently\r\n // flattening the weight on every dashboard KPI.\r\n //\r\n // The old name is deliberately NOT spelled out here: the\r\n // banned-patterns guard is a raw text scan with no comment\r\n // awareness, so writing it - even to document its removal - trips\r\n // the very rule that protects this line. See banned-patterns.test.ts.\r\n //\r\n // A text descriptor takes semibold instead: bold at body size reads\r\n // as a heading and competes with the label above it.\r\n fontWeight: isText ? \"var(--fw-semibold)\" : \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n /* Both of these are FIGURE typography and are actively wrong on prose:\r\n * tabular numerals force uniform digit widths (pointless without\r\n * digits) and negative tracking tightens words that need their normal\r\n * spacing to stay legible at body size. */\r\n ...(isText\r\n ? { lineHeight: \"var(--lh-normal)\" }\r\n : {\r\n fontVariantNumeric: \"tabular-nums\",\r\n letterSpacing: \"-0.01em\",\r\n lineHeight: \"var(--lh-tight)\",\r\n }),\r\n }}\r\n >\r\n {value ?? \"—\"}\r\n </Box>\r\n {(deltaNum !== null || helper) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: 1,\r\n marginTop: 1,\r\n fontSize: \"var(--text-xs)\",\r\n }}\r\n >\r\n {deltaNum !== null && (\r\n <Box\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: 0.25,\r\n // Default colour for the block = textColor. The icon\r\n // overrides to iconColor below for a vivid arrow against\r\n // a darker numeric label.\r\n color: textColor,\r\n fontWeight: \"var(--fw-semibold)\",\r\n // R-T.3 - tabular-nums on delta so percentages align across cards\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {/* WCAG 1.4.1 - direction is announced to SR only; sighted\r\n users get the arrow + colour. */}\r\n {directionLabel && (\r\n <span className=\"pui-sr-only\">{directionLabel}</span>\r\n )}\r\n {isPositive ? (\r\n <ArrowUpwardIcon\r\n aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: iconColor }}\r\n />\r\n ) : isNegative ? (\r\n <ArrowDownwardIcon\r\n aria-hidden=\"true\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: iconColor }}\r\n />\r\n ) : null}\r\n <span>{formatDelta(Math.abs(deltaNum), locale)} %</span>\r\n </Box>\r\n )}\r\n {(period || helper) && (\r\n <Box component=\"span\" sx={{ color: \"var(--fg-subtle)\" }}>\r\n {helper || period}\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default KPICard;\r\n"],"mappings":"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","ignoreList":[]}