@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
@@ -0,0 +1,150 @@
1
+ import "@testing-library/jest-dom";
2
+ import { fireEvent, render, screen } from "@testing-library/react";
3
+ import userEvent from "@testing-library/user-event";
4
+ import DataGrid from "../patterns/DataGrid";
5
+ import { buildRowActions } from "../patterns/rowActions";
6
+
7
+ /**
8
+ * DataGrid — la cellule d'actions contient ses propres événements.
9
+ *
10
+ * CE QUE CE FICHIER PROTÈGE, ET POURQUOI IL EXISTE
11
+ * ------------------------------------------------
12
+ * §Row Interaction fait du clic de ligne l'ouverture du drawer d'aperçu, et
13
+ * des actions de ligne l'affordance COMPLÉMENTAIRE. Les deux cohabitent donc
14
+ * sur toute grille de listing de la plateforme — et la cellule d'actions est
15
+ * un descendant de la ligne cliquable.
16
+ *
17
+ * Sans containment, activer une action déclenche AUSSI le clic de ligne :
18
+ * l'utilisateur obtient son action et, par-dessus, un drawer qui s'ouvre. Ce
19
+ * n'est pas rattrapable au niveau de l'action — `buildRowActions` décrit une
20
+ * action comme `onClick: (row) => void` et n'expose délibérément pas
21
+ * l'événement DOM, parce qu'un descripteur métier n'a pas à connaître la
22
+ * propagation. La cellule est le seul endroit qui tient l'invariant pour
23
+ * TOUTES les formes : le kebab, la rangée d'icônes, et n'importe quel
24
+ * renderer `rowActions` écrit par un hôte.
25
+ *
26
+ * Relevé par l'audit Area 3 d'`addm-fe`, dont les deux listings avaient écrit
27
+ * leur rangée d'icônes à la main précisément pour appeler `stopPropagation()`
28
+ * bouton par bouton — ce qui faisait passer l'adoption de `buildRowActions`
29
+ * pour une régression.
30
+ *
31
+ * Le test couvre les DEUX formes (`iconsUpTo` et le kebab) et les deux
32
+ * chemins (souris et clavier), parce que la ligne écoute `onClick` ET
33
+ * `onKeyDown`.
34
+ *
35
+ * POURQUOI `fireEvent` POUR LA SOURIS ET `userEvent` POUR LE CLAVIER
36
+ * -----------------------------------------------------------------
37
+ * `ROW_ACTIONS_OVERLAY_SX` porte `pointerEvents: "none"` et ne passe à `auto`
38
+ * que sous `tr:hover`, `tr:focus-within` ou `@media (pointer: coarse)`. jsdom
39
+ * ne résout ni les pseudo-classes d'état ni les media queries — même limite
40
+ * que celle documentée dans `FieldWidth.test.tsx` — donc l'overlay y reste
41
+ * inerte et `user-event` REFUSE de simuler un pointeur dessus. Son refus est
42
+ * correct : il modèle un utilisateur, et un utilisateur ne peut pas cliquer un
43
+ * élément à `pointer-events: none`. Ce que jsdom ne peut pas modéliser, c'est
44
+ * le survol qui précède ce clic dans un vrai navigateur.
45
+ *
46
+ * Neutraliser la garde (`pointerEventsCheck: Never`) serait prétendre simuler
47
+ * un utilisateur tout en désactivant la vérification qui rend la simulation
48
+ * crédible. `fireEvent.click` ne prétend rien : il émet un `MouseEvent` qui
49
+ * BULLE, ce qui est exactement et uniquement ce que ces deux tests examinent.
50
+ * Le chemin clavier, lui, ne passe pas par le hit-testing du pointeur, donc
51
+ * `userEvent` y reste l'outil juste — et c'est le chemin où la ligne écoute
52
+ * `onKeyDown`.
53
+ *
54
+ * Ce que ce fichier ne prouve donc PAS : que l'overlay est atteignable à la
55
+ * souris. Ça se vérifie dans la story, au survol.
56
+ */
57
+ import { jsx as _jsx } from "react/jsx-runtime";
58
+ const LIGNES = [{
59
+ id: 1,
60
+ reference: "2025-IM-0042"
61
+ }];
62
+ const COLONNES = [{
63
+ key: "reference",
64
+ header: "Référence"
65
+ }];
66
+ function renderGrille(options) {
67
+ const descripteurs = [{
68
+ id: "consulter",
69
+ label: "Consulter la ligne",
70
+ onClick: () => options.onAction()
71
+ }];
72
+ return render(/*#__PURE__*/_jsx(DataGrid, {
73
+ rows: LIGNES,
74
+ columns: COLONNES,
75
+ ariaLabel: "Lignes de test",
76
+ onRowClick: options.onRowClick,
77
+ rowActions: buildRowActions(descripteurs, "Actions sur la ligne", options.iconsUpTo !== undefined ? {
78
+ iconsUpTo: options.iconsUpTo
79
+ } : undefined)
80
+ }));
81
+ }
82
+ describe("DataGrid — une action de ligne ne déclenche pas le clic de ligne", () => {
83
+ test("rangée d'icônes, à la souris", () => {
84
+ const onRowClick = jest.fn();
85
+ const onAction = jest.fn();
86
+ renderGrille({
87
+ onRowClick,
88
+ onAction,
89
+ iconsUpTo: 3
90
+ });
91
+ fireEvent.click(screen.getByRole("button", {
92
+ name: "Consulter la ligne"
93
+ }));
94
+ expect(onAction).toHaveBeenCalledTimes(1);
95
+ /* L'assertion qui compte : l'action a eu lieu, la ligne n'a pas été
96
+ * ouverte. Avant le containment, les deux se déclenchaient. */
97
+ expect(onRowClick).not.toHaveBeenCalled();
98
+ });
99
+ test("rangée d'icônes, au clavier", async () => {
100
+ const onRowClick = jest.fn();
101
+ const onAction = jest.fn();
102
+ renderGrille({
103
+ onRowClick,
104
+ onAction,
105
+ iconsUpTo: 3
106
+ });
107
+ const bouton = screen.getByRole("button", {
108
+ name: "Consulter la ligne"
109
+ });
110
+ bouton.focus();
111
+ await userEvent.keyboard("{Enter}");
112
+
113
+ /* La ligne porte AUSSI un `onKeyDown` (Enter / Espace → onRowClick), donc
114
+ * le clavier est un second chemin de fuite, distinct de la souris. */
115
+ expect(onAction).toHaveBeenCalledTimes(1);
116
+ expect(onRowClick).not.toHaveBeenCalled();
117
+ });
118
+ test("kebab : ouvrir le menu n'ouvre pas la ligne", () => {
119
+ const onRowClick = jest.fn();
120
+ const onAction = jest.fn();
121
+ /* Sans `iconsUpTo`, le renderer rend `OverflowMenu` — son déclencheur est
122
+ * dans la même position que les boutons d'icône. */
123
+ renderGrille({
124
+ onRowClick,
125
+ onAction
126
+ });
127
+ fireEvent.click(screen.getByRole("button", {
128
+ name: "Actions sur la ligne"
129
+ }));
130
+ expect(onRowClick).not.toHaveBeenCalled();
131
+ });
132
+ test("le clic de ligne fonctionne toujours ailleurs dans la ligne", async () => {
133
+ const onRowClick = jest.fn();
134
+ const onAction = jest.fn();
135
+ renderGrille({
136
+ onRowClick,
137
+ onAction,
138
+ iconsUpTo: 3
139
+ });
140
+
141
+ /* Le containment doit être local à la cellule d'actions : une cellule de
142
+ * données reste le déclencheur du clic de ligne. Sans cette assertion, un
143
+ * containment posé trop haut (sur la ligne) passerait les trois tests
144
+ * ci-dessus tout en cassant §Row Interaction. */
145
+ await userEvent.click(screen.getByText("2025-IM-0042"));
146
+ expect(onRowClick).toHaveBeenCalledTimes(1);
147
+ expect(onAction).not.toHaveBeenCalled();
148
+ });
149
+ });
150
+ //# sourceMappingURL=DataGridRowActionsPropagation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DataGridRowActionsPropagation.test.js","names":["fireEvent","render","screen","userEvent","DataGrid","buildRowActions","jsx","_jsx","LIGNES","id","reference","COLONNES","key","header","renderGrille","options","descripteurs","label","onClick","onAction","rows","columns","ariaLabel","onRowClick","rowActions","iconsUpTo","undefined","describe","test","jest","fn","click","getByRole","name","expect","toHaveBeenCalledTimes","not","toHaveBeenCalled","bouton","focus","keyboard","getByText"],"sources":["../../../../src/lib/v2/__tests__/DataGridRowActionsPropagation.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { fireEvent, render, screen } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport DataGrid from \"../patterns/DataGrid\";\r\nimport { buildRowActions } from \"../patterns/rowActions\";\r\nimport type { RowActionDescriptor } from \"../patterns/rowActions\";\r\n\r\n/**\r\n * DataGrid — la cellule d'actions contient ses propres événements.\r\n *\r\n * CE QUE CE FICHIER PROTÈGE, ET POURQUOI IL EXISTE\r\n * ------------------------------------------------\r\n * §Row Interaction fait du clic de ligne l'ouverture du drawer d'aperçu, et\r\n * des actions de ligne l'affordance COMPLÉMENTAIRE. Les deux cohabitent donc\r\n * sur toute grille de listing de la plateforme — et la cellule d'actions est\r\n * un descendant de la ligne cliquable.\r\n *\r\n * Sans containment, activer une action déclenche AUSSI le clic de ligne :\r\n * l'utilisateur obtient son action et, par-dessus, un drawer qui s'ouvre. Ce\r\n * n'est pas rattrapable au niveau de l'action — `buildRowActions` décrit une\r\n * action comme `onClick: (row) => void` et n'expose délibérément pas\r\n * l'événement DOM, parce qu'un descripteur métier n'a pas à connaître la\r\n * propagation. La cellule est le seul endroit qui tient l'invariant pour\r\n * TOUTES les formes : le kebab, la rangée d'icônes, et n'importe quel\r\n * renderer `rowActions` écrit par un hôte.\r\n *\r\n * Relevé par l'audit Area 3 d'`addm-fe`, dont les deux listings avaient écrit\r\n * leur rangée d'icônes à la main précisément pour appeler `stopPropagation()`\r\n * bouton par bouton — ce qui faisait passer l'adoption de `buildRowActions`\r\n * pour une régression.\r\n *\r\n * Le test couvre les DEUX formes (`iconsUpTo` et le kebab) et les deux\r\n * chemins (souris et clavier), parce que la ligne écoute `onClick` ET\r\n * `onKeyDown`.\r\n *\r\n * POURQUOI `fireEvent` POUR LA SOURIS ET `userEvent` POUR LE CLAVIER\r\n * -----------------------------------------------------------------\r\n * `ROW_ACTIONS_OVERLAY_SX` porte `pointerEvents: \"none\"` et ne passe à `auto`\r\n * que sous `tr:hover`, `tr:focus-within` ou `@media (pointer: coarse)`. jsdom\r\n * ne résout ni les pseudo-classes d'état ni les media queries — même limite\r\n * que celle documentée dans `FieldWidth.test.tsx` — donc l'overlay y reste\r\n * inerte et `user-event` REFUSE de simuler un pointeur dessus. Son refus est\r\n * correct : il modèle un utilisateur, et un utilisateur ne peut pas cliquer un\r\n * élément à `pointer-events: none`. Ce que jsdom ne peut pas modéliser, c'est\r\n * le survol qui précède ce clic dans un vrai navigateur.\r\n *\r\n * Neutraliser la garde (`pointerEventsCheck: Never`) serait prétendre simuler\r\n * un utilisateur tout en désactivant la vérification qui rend la simulation\r\n * crédible. `fireEvent.click` ne prétend rien : il émet un `MouseEvent` qui\r\n * BULLE, ce qui est exactement et uniquement ce que ces deux tests examinent.\r\n * Le chemin clavier, lui, ne passe pas par le hit-testing du pointeur, donc\r\n * `userEvent` y reste l'outil juste — et c'est le chemin où la ligne écoute\r\n * `onKeyDown`.\r\n *\r\n * Ce que ce fichier ne prouve donc PAS : que l'overlay est atteignable à la\r\n * souris. Ça se vérifie dans la story, au survol.\r\n */\r\n\r\ninterface Ligne {\r\n id: number;\r\n reference: string;\r\n}\r\n\r\nconst LIGNES: Ligne[] = [{ id: 1, reference: \"2025-IM-0042\" }];\r\n\r\nconst COLONNES = [{ key: \"reference\", header: \"Référence\" }];\r\n\r\nfunction renderGrille(options: {\r\n onRowClick: () => void;\r\n onAction: () => void;\r\n iconsUpTo?: number;\r\n}) {\r\n const descripteurs: RowActionDescriptor<Ligne>[] = [\r\n {\r\n id: \"consulter\",\r\n label: \"Consulter la ligne\",\r\n onClick: () => options.onAction(),\r\n },\r\n ];\r\n\r\n return render(\r\n <DataGrid<Ligne>\r\n rows={LIGNES}\r\n columns={COLONNES}\r\n ariaLabel=\"Lignes de test\"\r\n onRowClick={options.onRowClick}\r\n rowActions={buildRowActions(\r\n descripteurs,\r\n \"Actions sur la ligne\",\r\n options.iconsUpTo !== undefined\r\n ? { iconsUpTo: options.iconsUpTo }\r\n : undefined\r\n )}\r\n />\r\n );\r\n}\r\n\r\ndescribe(\"DataGrid — une action de ligne ne déclenche pas le clic de ligne\", () => {\r\n test(\"rangée d'icônes, à la souris\", () => {\r\n const onRowClick = jest.fn();\r\n const onAction = jest.fn();\r\n renderGrille({ onRowClick, onAction, iconsUpTo: 3 });\r\n\r\n fireEvent.click(\r\n screen.getByRole(\"button\", { name: \"Consulter la ligne\" })\r\n );\r\n\r\n expect(onAction).toHaveBeenCalledTimes(1);\r\n /* L'assertion qui compte : l'action a eu lieu, la ligne n'a pas été\r\n * ouverte. Avant le containment, les deux se déclenchaient. */\r\n expect(onRowClick).not.toHaveBeenCalled();\r\n });\r\n\r\n test(\"rangée d'icônes, au clavier\", async () => {\r\n const onRowClick = jest.fn();\r\n const onAction = jest.fn();\r\n renderGrille({ onRowClick, onAction, iconsUpTo: 3 });\r\n\r\n const bouton = screen.getByRole(\"button\", { name: \"Consulter la ligne\" });\r\n bouton.focus();\r\n await userEvent.keyboard(\"{Enter}\");\r\n\r\n /* La ligne porte AUSSI un `onKeyDown` (Enter / Espace → onRowClick), donc\r\n * le clavier est un second chemin de fuite, distinct de la souris. */\r\n expect(onAction).toHaveBeenCalledTimes(1);\r\n expect(onRowClick).not.toHaveBeenCalled();\r\n });\r\n\r\n test(\"kebab : ouvrir le menu n'ouvre pas la ligne\", () => {\r\n const onRowClick = jest.fn();\r\n const onAction = jest.fn();\r\n /* Sans `iconsUpTo`, le renderer rend `OverflowMenu` — son déclencheur est\r\n * dans la même position que les boutons d'icône. */\r\n renderGrille({ onRowClick, onAction });\r\n\r\n fireEvent.click(\r\n screen.getByRole(\"button\", { name: \"Actions sur la ligne\" })\r\n );\r\n\r\n expect(onRowClick).not.toHaveBeenCalled();\r\n });\r\n\r\n test(\"le clic de ligne fonctionne toujours ailleurs dans la ligne\", async () => {\r\n const onRowClick = jest.fn();\r\n const onAction = jest.fn();\r\n renderGrille({ onRowClick, onAction, iconsUpTo: 3 });\r\n\r\n /* Le containment doit être local à la cellule d'actions : une cellule de\r\n * données reste le déclencheur du clic de ligne. Sans cette assertion, un\r\n * containment posé trop haut (sur la ligne) passerait les trois tests\r\n * ci-dessus tout en cassant §Row Interaction. */\r\n await userEvent.click(screen.getByText(\"2025-IM-0042\"));\r\n\r\n expect(onRowClick).toHaveBeenCalledTimes(1);\r\n expect(onAction).not.toHaveBeenCalled();\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,93 @@
1
+ import "@testing-library/jest-dom";
2
+ import { render, screen } from "@testing-library/react";
3
+ import Drawer from "../components/Drawer";
4
+ import { layout } from "../tokens";
5
+
6
+ /**
7
+ * R-7.4 / WCAG 2.5.5 — the drawer header's icon-only buttons.
8
+ *
9
+ * `tokens/density` states the rule this file guards, in its own words: "Icon-
10
+ * only buttons MUST set min-width/min-height to `tactileMin`", because the
11
+ * VISUAL height of a button may drop below 44px in the tighter density tiers
12
+ * while the hit area may not. The drawer header's three buttons — prev, next,
13
+ * close — were `IconButton size="small"` with only a colour rule: about 34px,
14
+ * ten short of the floor this library imposes on its hosts.
15
+ *
16
+ * The gap stayed invisible while item navigation was rarely wired, since a
17
+ * filter panel renders the close button alone. A module that equips its
18
+ * preview drawers with onPrev/onNext exposes three per drawer — which is what
19
+ * surfaced it.
20
+ *
21
+ * ── WHY `toHaveStyle` AND NOT `element.style` ────────────────────────
22
+ *
23
+ * The first version of this file asserted on `element.style.minWidth` and
24
+ * failed on all three cases with an empty string — correctly. `sx` compiles to
25
+ * an EMOTION CLASS, never to an inline style attribute, so the inline bag is
26
+ * empty by construction. `toHaveStyle` resolves the declaration through
27
+ * `getComputedStyle`, which jsdom does cascade from the injected stylesheet.
28
+ *
29
+ * What this verifies is therefore the DECLARED floor, not a rendered box:
30
+ * jsdom performs no layout, so no assertion here could prove the button
31
+ * measures 44px on screen. The declaration is what the rule asks for, and it
32
+ * is what a refactor of this header would silently drop.
33
+ */
34
+ import { jsx as _jsx } from "react/jsx-runtime";
35
+ const TACTILE_MIN = `${layout.tactileMin}px`;
36
+ const TACTILE_FLOOR = {
37
+ minWidth: TACTILE_MIN,
38
+ minHeight: TACTILE_MIN
39
+ };
40
+ describe("Drawer — cibles tactiles de l'en-tête (R-7.4)", () => {
41
+ it("plancher de 44px sur le bouton de fermeture", () => {
42
+ render(/*#__PURE__*/_jsx(Drawer, {
43
+ open: true,
44
+ onClose: () => undefined,
45
+ title: "Filtres avanc\xE9s",
46
+ children: "contenu"
47
+ }));
48
+ expect(screen.getByRole("button", {
49
+ name: /Fermer/i
50
+ })).toHaveStyle(TACTILE_FLOOR);
51
+ });
52
+
53
+ /* Les deux flèches ne sont rendues que si un gestionnaire est fourni
54
+ (navigation opt-in, D-A10.2) — c'est ce qui a longtemps masqué l'écart. */
55
+ it("plancher de 44px sur les deux flèches de navigation", () => {
56
+ render(/*#__PURE__*/_jsx(Drawer, {
57
+ open: true,
58
+ onClose: () => undefined,
59
+ title: "Dossier 2026-IM-00042",
60
+ onPrev: () => undefined,
61
+ onNext: () => undefined,
62
+ hasPrev: true,
63
+ hasNext: true,
64
+ children: "contenu"
65
+ }));
66
+ expect(screen.getByRole("button", {
67
+ name: /Précédent/i
68
+ })).toHaveStyle(TACTILE_FLOOR);
69
+ expect(screen.getByRole("button", {
70
+ name: /Suivant/i
71
+ })).toHaveStyle(TACTILE_FLOOR);
72
+ });
73
+
74
+ /* Le plancher vaut aussi pour un bouton DÉSACTIVÉ : il reste une cible que
75
+ l'utilisateur va viser, et le rendre plus petit que les autres ferait
76
+ sauter la rangée d'un tiroir à l'autre. */
77
+ it("plancher maintenu quand la navigation est désactivée", () => {
78
+ render(/*#__PURE__*/_jsx(Drawer, {
79
+ open: true,
80
+ onClose: () => undefined,
81
+ title: "Dossier unique",
82
+ onPrev: () => undefined,
83
+ onNext: () => undefined,
84
+ children: "contenu"
85
+ }));
86
+ const previous = screen.getByRole("button", {
87
+ name: /Précédent/i
88
+ });
89
+ expect(previous).toBeDisabled();
90
+ expect(previous).toHaveStyle(TACTILE_FLOOR);
91
+ });
92
+ });
93
+ //# sourceMappingURL=DrawerTactileTargets.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DrawerTactileTargets.test.js","names":["render","screen","Drawer","layout","jsx","_jsx","TACTILE_MIN","tactileMin","TACTILE_FLOOR","minWidth","minHeight","describe","it","open","onClose","undefined","title","children","expect","getByRole","name","toHaveStyle","onPrev","onNext","hasPrev","hasNext","previous","toBeDisabled"],"sources":["../../../../src/lib/v2/__tests__/DrawerTactileTargets.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\n\r\nimport Drawer from \"../components/Drawer\";\r\nimport { layout } from \"../tokens\";\r\n\r\n/**\r\n * R-7.4 / WCAG 2.5.5 — the drawer header's icon-only buttons.\r\n *\r\n * `tokens/density` states the rule this file guards, in its own words: \"Icon-\r\n * only buttons MUST set min-width/min-height to `tactileMin`\", because the\r\n * VISUAL height of a button may drop below 44px in the tighter density tiers\r\n * while the hit area may not. The drawer header's three buttons — prev, next,\r\n * close — were `IconButton size=\"small\"` with only a colour rule: about 34px,\r\n * ten short of the floor this library imposes on its hosts.\r\n *\r\n * The gap stayed invisible while item navigation was rarely wired, since a\r\n * filter panel renders the close button alone. A module that equips its\r\n * preview drawers with onPrev/onNext exposes three per drawer — which is what\r\n * surfaced it.\r\n *\r\n * ── WHY `toHaveStyle` AND NOT `element.style` ────────────────────────\r\n *\r\n * The first version of this file asserted on `element.style.minWidth` and\r\n * failed on all three cases with an empty string — correctly. `sx` compiles to\r\n * an EMOTION CLASS, never to an inline style attribute, so the inline bag is\r\n * empty by construction. `toHaveStyle` resolves the declaration through\r\n * `getComputedStyle`, which jsdom does cascade from the injected stylesheet.\r\n *\r\n * What this verifies is therefore the DECLARED floor, not a rendered box:\r\n * jsdom performs no layout, so no assertion here could prove the button\r\n * measures 44px on screen. The declaration is what the rule asks for, and it\r\n * is what a refactor of this header would silently drop.\r\n */\r\n\r\nconst TACTILE_MIN = `${layout.tactileMin}px`;\r\nconst TACTILE_FLOOR = { minWidth: TACTILE_MIN, minHeight: TACTILE_MIN };\r\n\r\ndescribe(\"Drawer — cibles tactiles de l'en-tête (R-7.4)\", () => {\r\n it(\"plancher de 44px sur le bouton de fermeture\", () => {\r\n render(\r\n <Drawer open onClose={() => undefined} title=\"Filtres avancés\">\r\n contenu\r\n </Drawer>\r\n );\r\n\r\n expect(screen.getByRole(\"button\", { name: /Fermer/i })).toHaveStyle(\r\n TACTILE_FLOOR\r\n );\r\n });\r\n\r\n /* Les deux flèches ne sont rendues que si un gestionnaire est fourni\r\n (navigation opt-in, D-A10.2) — c'est ce qui a longtemps masqué l'écart. */\r\n it(\"plancher de 44px sur les deux flèches de navigation\", () => {\r\n render(\r\n <Drawer\r\n open\r\n onClose={() => undefined}\r\n title=\"Dossier 2026-IM-00042\"\r\n onPrev={() => undefined}\r\n onNext={() => undefined}\r\n hasPrev\r\n hasNext\r\n >\r\n contenu\r\n </Drawer>\r\n );\r\n\r\n expect(screen.getByRole(\"button\", { name: /Précédent/i })).toHaveStyle(\r\n TACTILE_FLOOR\r\n );\r\n expect(screen.getByRole(\"button\", { name: /Suivant/i })).toHaveStyle(\r\n TACTILE_FLOOR\r\n );\r\n });\r\n\r\n /* Le plancher vaut aussi pour un bouton DÉSACTIVÉ : il reste une cible que\r\n l'utilisateur va viser, et le rendre plus petit que les autres ferait\r\n sauter la rangée d'un tiroir à l'autre. */\r\n it(\"plancher maintenu quand la navigation est désactivée\", () => {\r\n render(\r\n <Drawer\r\n open\r\n onClose={() => undefined}\r\n title=\"Dossier unique\"\r\n onPrev={() => undefined}\r\n onNext={() => undefined}\r\n >\r\n contenu\r\n </Drawer>\r\n );\r\n\r\n const previous = screen.getByRole(\"button\", { name: /Précédent/i });\r\n expect(previous).toBeDisabled();\r\n expect(previous).toHaveStyle(TACTILE_FLOOR);\r\n });\r\n});\r\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,SAASA,MAAM,EAAEC,MAAM,QAAQ,wBAAwB;AAEvD,OAAOC,MAAM,MAAM,sBAAsB;AACzC,SAASC,MAAM,QAAQ,WAAW;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA3BA,SAAAC,GAAA,IAAAC,IAAA;AA6BA,MAAMC,WAAW,GAAG,GAAGH,MAAM,CAACI,UAAU,IAAI;AAC5C,MAAMC,aAAa,GAAG;EAAEC,QAAQ,EAAEH,WAAW;EAAEI,SAAS,EAAEJ;AAAY,CAAC;AAEvEK,QAAQ,CAAC,+CAA+C,EAAE,MAAM;EAC9DC,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtDZ,MAAM,cACJK,IAAA,CAACH,MAAM;MAACW,IAAI;MAACC,OAAO,EAAEA,CAAA,KAAMC,SAAU;MAACC,KAAK,EAAC,oBAAiB;MAAAC,QAAA,EAAC;IAE/D,CAAQ,CACV,CAAC;IAEDC,MAAM,CAACjB,MAAM,CAACkB,SAAS,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAU,CAAC,CAAC,CAAC,CAACC,WAAW,CACjEb,aACF,CAAC;EACH,CAAC,CAAC;;EAEF;AACF;EACEI,EAAE,CAAC,qDAAqD,EAAE,MAAM;IAC9DZ,MAAM,cACJK,IAAA,CAACH,MAAM;MACLW,IAAI;MACJC,OAAO,EAAEA,CAAA,KAAMC,SAAU;MACzBC,KAAK,EAAC,uBAAuB;MAC7BM,MAAM,EAAEA,CAAA,KAAMP,SAAU;MACxBQ,MAAM,EAAEA,CAAA,KAAMR,SAAU;MACxBS,OAAO;MACPC,OAAO;MAAAR,QAAA,EACR;IAED,CAAQ,CACV,CAAC;IAEDC,MAAM,CAACjB,MAAM,CAACkB,SAAS,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAa,CAAC,CAAC,CAAC,CAACC,WAAW,CACpEb,aACF,CAAC;IACDU,MAAM,CAACjB,MAAM,CAACkB,SAAS,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAC,CAAC,CAAC,CAACC,WAAW,CAClEb,aACF,CAAC;EACH,CAAC,CAAC;;EAEF;AACF;AACA;EACEI,EAAE,CAAC,sDAAsD,EAAE,MAAM;IAC/DZ,MAAM,cACJK,IAAA,CAACH,MAAM;MACLW,IAAI;MACJC,OAAO,EAAEA,CAAA,KAAMC,SAAU;MACzBC,KAAK,EAAC,gBAAgB;MACtBM,MAAM,EAAEA,CAAA,KAAMP,SAAU;MACxBQ,MAAM,EAAEA,CAAA,KAAMR,SAAU;MAAAE,QAAA,EACzB;IAED,CAAQ,CACV,CAAC;IAED,MAAMS,QAAQ,GAAGzB,MAAM,CAACkB,SAAS,CAAC,QAAQ,EAAE;MAAEC,IAAI,EAAE;IAAa,CAAC,CAAC;IACnEF,MAAM,CAACQ,QAAQ,CAAC,CAACC,YAAY,CAAC,CAAC;IAC/BT,MAAM,CAACQ,QAAQ,CAAC,CAACL,WAAW,CAACb,aAAa,CAAC;EAC7C,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -28,22 +28,52 @@ import Field from "../components/Field";
28
28
  * while the message rendered black and centred. Those live in
29
29
  * FieldError.stories.tsx.
30
30
  */
31
+
32
+ /**
33
+ * Fixture : un champ minimal qui CONSOMME les props que `Field` diffuse.
34
+ *
35
+ * `Field` clone son enfant avec `error` et `fullWidth` — délibérément, parce
36
+ * que plusieurs entrées v2 (`NumberInput`, le `renderInput` de `Combobox`) ne
37
+ * sont pas de purs enfants MUI et lisent ces props directement. Un `<input />`
38
+ * NU les laisse donc filer jusqu'au DOM, et React émet deux avertissements à
39
+ * chaque rendu : « Received `true` for a non-boolean attribute `error` » et
40
+ * « React does not recognize the `fullWidth` prop on a DOM element ».
41
+ *
42
+ * Ce n'est PAS un défaut de `Field` : en production l'enfant est un `Input` ou
43
+ * un `Select` du socle, qui consomme ces props. Mais c'était six
44
+ * avertissements dans la sortie de la suite, au milieu desquels un vrai
45
+ * avertissement passe inaperçu — et un audit du socle a effectivement pris ce
46
+ * bruit pour une fuite de props en production avant de lire le composant.
47
+ *
48
+ * La fixture reste volontairement minimale : pas d'`Input` du socle ici, ce
49
+ * fichier teste le CÂBLAGE de `Field` et non l'intégration d'un composant. Elle
50
+ * ne fait qu'absorber les deux props destinées à un contrôle riche.
51
+ */
31
52
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
32
- describe("FieldError — standalone", function () {
33
- test("announces itself as an alert carrying the message", function () {
53
+ function BareInput({
54
+ error: _error,
55
+ fullWidth: _fullWidth,
56
+ ...rest
57
+ }) {
58
+ return /*#__PURE__*/_jsx("input", {
59
+ ...rest
60
+ });
61
+ }
62
+ describe("FieldError — standalone", () => {
63
+ test("announces itself as an alert carrying the message", () => {
34
64
  render(/*#__PURE__*/_jsx(FieldError, {
35
65
  children: "Ajoutez au moins un article avant de soumettre."
36
66
  }));
37
67
  expect(screen.getByRole("alert")).toHaveTextContent("Ajoutez au moins un article avant de soumettre.");
38
68
  });
39
- test("forwards id so a host can wire its own aria-describedby", function () {
69
+ test("forwards id so a host can wire its own aria-describedby", () => {
40
70
  render(/*#__PURE__*/_jsx(FieldError, {
41
71
  id: "articles-error",
42
72
  children: "Ajoutez au moins un article."
43
73
  }));
44
74
  expect(screen.getByRole("alert")).toHaveAttribute("id", "articles-error");
45
75
  });
46
- test("omits id when none is supplied", function () {
76
+ test("omits id when none is supplied", () => {
47
77
  /* The list-level case usually has nothing to bind to. Emitting an empty or
48
78
  * generated id would create a describedby target nobody references. */
49
79
  render(/*#__PURE__*/_jsx(FieldError, {
@@ -51,7 +81,7 @@ describe("FieldError — standalone", function () {
51
81
  }));
52
82
  expect(screen.getByRole("alert")).not.toHaveAttribute("id");
53
83
  });
54
- test("the icon is hidden from assistive tech", function () {
84
+ test("the icon is hidden from assistive tech", () => {
55
85
  /* R-Ar.2 — the message IS the announcement; an announced glyph would double
56
86
  * it. No semantic query reaches a role-less, name-less element, hence the
57
87
  * testid the component exposes for exactly this assertion. */
@@ -61,25 +91,25 @@ describe("FieldError — standalone", function () {
61
91
  expect(screen.getByTestId("fielderror-icon")).toHaveAttribute("aria-hidden", "true");
62
92
  });
63
93
  });
64
- describe("FieldError — inside Field (the wiring that has no visual tell)", function () {
65
- test("the error becomes the control's accessible description", function () {
94
+ describe("FieldError — inside Field (the wiring that has no visual tell)", () => {
95
+ test("the error becomes the control's accessible description", () => {
66
96
  render(/*#__PURE__*/_jsx(Field, {
67
97
  label: "Num\xE9ro de titre",
68
98
  error: "Le num\xE9ro est invalide. Format : AAAA-IM-NNNNN.",
69
- children: /*#__PURE__*/_jsx("input", {})
99
+ children: /*#__PURE__*/_jsx(BareInput, {})
70
100
  }));
71
101
  expect(screen.getByRole("textbox")).toHaveAccessibleDescription("Le numéro est invalide. Format : AAAA-IM-NNNNN.");
72
102
  });
73
- test("the control is marked invalid", function () {
103
+ test("the control is marked invalid", () => {
74
104
  render(/*#__PURE__*/_jsx(Field, {
75
105
  label: "Num\xE9ro",
76
106
  error: "Invalide.",
77
- children: /*#__PURE__*/_jsx("input", {})
107
+ children: /*#__PURE__*/_jsx(BareInput, {})
78
108
  }));
79
109
  // jest-dom's toBeInvalid reads aria-invalid — R-I.3.
80
110
  expect(screen.getByRole("textbox")).toBeInvalid();
81
111
  });
82
- test("a host-supplied aria-describedby is PRESERVED, not replaced", function () {
112
+ test("a host-supplied aria-describedby is PRESERVED, not replaced", () => {
83
113
  /* The merge is the fragile part. Overwriting instead of merging silently
84
114
  * drops a consumer's external help text, and again nothing visual changes.
85
115
  * Asserted with two order-independent regexes rather than one exact string,
@@ -91,66 +121,69 @@ describe("FieldError — inside Field (the wiring that has no visual tell)", fun
91
121
  }), /*#__PURE__*/_jsx(Field, {
92
122
  label: "Num\xE9ro",
93
123
  error: "Le num\xE9ro est incomplet.",
94
- children: /*#__PURE__*/_jsx("input", {
124
+ children: /*#__PURE__*/_jsx(BareInput, {
95
125
  "aria-describedby": "host-help"
96
126
  })
97
127
  })]
98
128
  }));
99
- var input = screen.getByRole("textbox");
129
+ const input = screen.getByRole("textbox");
100
130
  expect(input).toHaveAccessibleDescription(/Format attendu/);
101
131
  expect(input).toHaveAccessibleDescription(/incomplet/);
102
132
  });
103
- test("the hint is suppressed while an error is shown", function () {
133
+ test("the hint is suppressed while an error is shown", () => {
104
134
  /* Two competing descriptions under one field is worse than one. The hint
105
135
  * returns once the error clears — verified by the rerender below. */
106
- var _render = render(/*#__PURE__*/_jsx(Field, {
107
- label: "Num\xE9ro",
108
- hint: "Format : AAAA-IM-NNNNN",
109
- error: "Le num\xE9ro est incomplet.",
110
- children: /*#__PURE__*/_jsx("input", {})
111
- })),
112
- rerender = _render.rerender;
136
+ const {
137
+ rerender
138
+ } = render(/*#__PURE__*/_jsx(Field, {
139
+ label: "Num\xE9ro",
140
+ hint: "Format : AAAA-IM-NNNNN",
141
+ error: "Le num\xE9ro est incomplet.",
142
+ children: /*#__PURE__*/_jsx(BareInput, {})
143
+ }));
113
144
  expect(screen.getByRole("alert")).toHaveTextContent("Le numéro est incomplet.");
114
145
  expect(screen.queryByText("Format : AAAA-IM-NNNNN")).not.toBeInTheDocument();
115
146
  rerender(/*#__PURE__*/_jsx(Field, {
116
147
  label: "Num\xE9ro",
117
148
  hint: "Format : AAAA-IM-NNNNN",
118
- children: /*#__PURE__*/_jsx("input", {})
149
+ children: /*#__PURE__*/_jsx(BareInput, {})
119
150
  }));
120
151
  expect(screen.getByText("Format : AAAA-IM-NNNNN")).toBeInTheDocument();
121
152
  });
122
153
  });
123
- describe("FieldError — live-region mounting contract", function () {
124
- test("no alert exists until an error appears", function () {
154
+ describe("FieldError — live-region mounting contract", () => {
155
+ test("no alert exists until an error appears", () => {
125
156
  /* THE contract. `role=\"alert\"` announces on INSERTION: an element mounted
126
157
  * permanently with empty content announces nothing when it later fills, so
127
158
  * a well-meaning refactor that always renders the container — to \"avoid
128
159
  * layout shift\", say — silently kills the announcement while every pixel
129
160
  * and every screenshot stays identical. */
130
- var _render2 = render(/*#__PURE__*/_jsx(Field, {
131
- label: "Num\xE9ro",
132
- children: /*#__PURE__*/_jsx("input", {})
133
- })),
134
- rerender = _render2.rerender;
161
+ const {
162
+ rerender
163
+ } = render(/*#__PURE__*/_jsx(Field, {
164
+ label: "Num\xE9ro",
165
+ children: /*#__PURE__*/_jsx(BareInput, {})
166
+ }));
135
167
  expect(screen.queryByRole("alert")).not.toBeInTheDocument();
136
168
  rerender(/*#__PURE__*/_jsx(Field, {
137
169
  label: "Num\xE9ro",
138
170
  error: "Le num\xE9ro est incomplet.",
139
- children: /*#__PURE__*/_jsx("input", {})
171
+ children: /*#__PURE__*/_jsx(BareInput, {})
140
172
  }));
141
173
  expect(screen.getByRole("alert")).toBeInTheDocument();
142
174
  });
143
- test("the alert unmounts when the error clears", function () {
144
- var _render3 = render(/*#__PURE__*/_jsx(Field, {
145
- label: "Num\xE9ro",
146
- error: "Le num\xE9ro est incomplet.",
147
- children: /*#__PURE__*/_jsx("input", {})
148
- })),
149
- rerender = _render3.rerender;
175
+ test("the alert unmounts when the error clears", () => {
176
+ const {
177
+ rerender
178
+ } = render(/*#__PURE__*/_jsx(Field, {
179
+ label: "Num\xE9ro",
180
+ error: "Le num\xE9ro est incomplet.",
181
+ children: /*#__PURE__*/_jsx(BareInput, {})
182
+ }));
150
183
  expect(screen.getByRole("alert")).toBeInTheDocument();
151
184
  rerender(/*#__PURE__*/_jsx(Field, {
152
185
  label: "Num\xE9ro",
153
- children: /*#__PURE__*/_jsx("input", {})
186
+ children: /*#__PURE__*/_jsx(BareInput, {})
154
187
  }));
155
188
  expect(screen.queryByRole("alert")).not.toBeInTheDocument();
156
189
  expect(screen.getByRole("textbox")).not.toBeInvalid();
@@ -1 +1 @@
1
- {"version":3,"file":"FieldError.test.js","names":["render","screen","FieldError","Field","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","describe","test","children","expect","getByRole","toHaveTextContent","id","toHaveAttribute","not","getByTestId","label","error","toHaveAccessibleDescription","toBeInvalid","input","_render","hint","rerender","queryByText","toBeInTheDocument","getByText","_render2","queryByRole","_render3"],"sources":["../../../../src/lib/v2/__tests__/FieldError.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport FieldError from \"../components/FieldError\";\r\nimport Field from \"../components/Field\";\r\n\r\n/**\r\n * FieldError — contract tests, including its integration into Field.\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the real reason is narrower and worth stating: the\r\n * contract this component carries is INVISIBLE. `Field` supplies an id, and that\r\n * id must reach the control's `aria-describedby` so a screen reader announces\r\n * the error when focus lands on the input. Break that wiring and NOTHING\r\n * changes: same pixels, same screenshot, same visual review — only a blind user\r\n * silently stops being told why their submit failed. There is no way to catch\r\n * that except by asserting it.\r\n *\r\n * The assertions below use `toHaveAccessibleDescription`, not id comparisons, on\r\n * purpose. It resolves aria-describedby to the text a screen reader would\r\n * actually announce, so the test states the USER-FACING outcome and stays true\r\n * if the id-generation scheme ever changes.\r\n *\r\n * NOT COVERED — deliberately\r\n * R-4.1's visual half (\"sous le champ, en rouge, avec icône\") and the\r\n * first-line icon alignment on a wrapping message are layout and colour. jsdom\r\n * resolves neither CSS variables nor flexbox, so asserting them here would pass\r\n * while the message rendered black and centred. Those live in\r\n * FieldError.stories.tsx.\r\n */\r\ndescribe(\"FieldError — standalone\", () => {\r\n test(\"announces itself as an alert carrying the message\", () => {\r\n render(<FieldError>Ajoutez au moins un article avant de soumettre.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Ajoutez au moins un article avant de soumettre.\"\r\n );\r\n });\r\n\r\n test(\"forwards id so a host can wire its own aria-describedby\", () => {\r\n render(<FieldError id=\"articles-error\">Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveAttribute(\"id\", \"articles-error\");\r\n });\r\n\r\n test(\"omits id when none is supplied\", () => {\r\n /* The list-level case usually has nothing to bind to. Emitting an empty or\r\n * generated id would create a describedby target nobody references. */\r\n render(<FieldError>Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).not.toHaveAttribute(\"id\");\r\n });\r\n\r\n test(\"the icon is hidden from assistive tech\", () => {\r\n /* R-Ar.2 — the message IS the announcement; an announced glyph would double\r\n * it. No semantic query reaches a role-less, name-less element, hence the\r\n * testid the component exposes for exactly this assertion. */\r\n render(<FieldError>Message</FieldError>);\r\n expect(screen.getByTestId(\"fielderror-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — inside Field (the wiring that has no visual tell)\", () => {\r\n test(\"the error becomes the control's accessible description\", () => {\r\n render(\r\n <Field label=\"Numéro de titre\" error=\"Le numéro est invalide. Format : AAAA-IM-NNNNN.\">\r\n <input />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"textbox\")).toHaveAccessibleDescription(\r\n \"Le numéro est invalide. Format : AAAA-IM-NNNNN.\"\r\n );\r\n });\r\n\r\n test(\"the control is marked invalid\", () => {\r\n render(\r\n <Field label=\"Numéro\" error=\"Invalide.\">\r\n <input />\r\n </Field>\r\n );\r\n // jest-dom's toBeInvalid reads aria-invalid — R-I.3.\r\n expect(screen.getByRole(\"textbox\")).toBeInvalid();\r\n });\r\n\r\n test(\"a host-supplied aria-describedby is PRESERVED, not replaced\", () => {\r\n /* The merge is the fragile part. Overwriting instead of merging silently\r\n * drops a consumer's external help text, and again nothing visual changes.\r\n * Asserted with two order-independent regexes rather than one exact string,\r\n * so the test does not encode which fragment Field puts first. */\r\n render(\r\n <>\r\n <span id=\"host-help\">Format attendu : AAAA-IM-NNNNN.</span>\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input aria-describedby=\"host-help\" />\r\n </Field>\r\n </>\r\n );\r\n\r\n const input = screen.getByRole(\"textbox\");\r\n expect(input).toHaveAccessibleDescription(/Format attendu/);\r\n expect(input).toHaveAccessibleDescription(/incomplet/);\r\n });\r\n\r\n test(\"the hint is suppressed while an error is shown\", () => {\r\n /* Two competing descriptions under one field is worse than one. The hint\r\n * returns once the error clears — verified by the rerender below. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Le numéro est incomplet.\");\r\n expect(screen.queryByText(\"Format : AAAA-IM-NNNNN\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByText(\"Format : AAAA-IM-NNNNN\")).toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — live-region mounting contract\", () => {\r\n test(\"no alert exists until an error appears\", () => {\r\n /* THE contract. `role=\\\"alert\\\"` announces on INSERTION: an element mounted\r\n * permanently with empty content announces nothing when it later fills, so\r\n * a well-meaning refactor that always renders the container — to \\\"avoid\r\n * layout shift\\\", say — silently kills the announcement while every pixel\r\n * and every screenshot stays identical. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"the alert unmounts when the error clears\", () => {\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\">\r\n <input />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n expect(screen.getByRole(\"textbox\")).not.toBeInvalid();\r\n });\r\n});\r\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,SAASA,MAAM,EAAEC,MAAM,QAAQ,wBAAwB;AACvD,OAAOC,UAAU,MAAM,0BAA0B;AACjD,OAAOC,KAAK,MAAM,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAyBAC,QAAQ,CAAC,yBAAyB,EAAE,YAAM;EACxCC,IAAI,CAAC,mDAAmD,EAAE,YAAM;IAC9DX,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAU,QAAA,EAAC;IAA+C,CAAY,CAAC,CAAC;IAChFC,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CACjD,iDACF,CAAC;EACH,CAAC,CAAC;EAEFJ,IAAI,CAAC,yDAAyD,EAAE,YAAM;IACpEX,MAAM,cAACK,IAAA,CAACH,UAAU;MAACc,EAAE,EAAC,gBAAgB;MAAAJ,QAAA,EAAC;IAA4B,CAAY,CAAC,CAAC;IACjFC,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACG,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC;EAC3E,CAAC,CAAC;EAEFN,IAAI,CAAC,gCAAgC,EAAE,YAAM;IAC3C;AACJ;IACIX,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAU,QAAA,EAAC;IAA4B,CAAY,CAAC,CAAC;IAC7DC,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACI,GAAG,CAACD,eAAe,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFN,IAAI,CAAC,wCAAwC,EAAE,YAAM;IACnD;AACJ;AACA;IACIX,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAU,QAAA,EAAC;IAAO,CAAY,CAAC,CAAC;IACxCC,MAAM,CAACZ,MAAM,CAACkB,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAACF,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC;EACtF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFP,QAAQ,CAAC,gEAAgE,EAAE,YAAM;EAC/EC,IAAI,CAAC,wDAAwD,EAAE,YAAM;IACnEX,MAAM,cACJK,IAAA,CAACF,KAAK;MAACiB,KAAK,EAAC,oBAAiB;MAACC,KAAK,EAAC,oDAAiD;MAAAT,QAAA,eACpFP,IAAA,YAAQ;IAAC,CACJ,CACT,CAAC;IAEDQ,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,SAAS,CAAC,CAAC,CAACQ,2BAA2B,CAC7D,iDACF,CAAC;EACH,CAAC,CAAC;EAEFX,IAAI,CAAC,+BAA+B,EAAE,YAAM;IAC1CX,MAAM,cACJK,IAAA,CAACF,KAAK;MAACiB,KAAK,EAAC,WAAQ;MAACC,KAAK,EAAC,WAAW;MAAAT,QAAA,eACrCP,IAAA,YAAQ;IAAC,CACJ,CACT,CAAC;IACD;IACAQ,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,SAAS,CAAC,CAAC,CAACS,WAAW,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFZ,IAAI,CAAC,6DAA6D,EAAE,YAAM;IACxE;AACJ;AACA;AACA;IACIX,MAAM,cACJS,KAAA,CAAAF,SAAA;MAAAK,QAAA,gBACEP,IAAA;QAAMW,EAAE,EAAC,WAAW;QAAAJ,QAAA,EAAC;MAA+B,CAAM,CAAC,eAC3DP,IAAA,CAACF,KAAK;QAACiB,KAAK,EAAC,WAAQ;QAACC,KAAK,EAAC,6BAA0B;QAAAT,QAAA,eACpDP,IAAA;UAAO,oBAAiB;QAAW,CAAE;MAAC,CACjC,CAAC;IAAA,CACR,CACJ,CAAC;IAED,IAAMmB,KAAK,GAAGvB,MAAM,CAACa,SAAS,CAAC,SAAS,CAAC;IACzCD,MAAM,CAACW,KAAK,CAAC,CAACF,2BAA2B,CAAC,gBAAgB,CAAC;IAC3DT,MAAM,CAACW,KAAK,CAAC,CAACF,2BAA2B,CAAC,WAAW,CAAC;EACxD,CAAC,CAAC;EAEFX,IAAI,CAAC,gDAAgD,EAAE,YAAM;IAC3D;AACJ;IACI,IAAAc,OAAA,GAAqBzB,MAAM,cACzBK,IAAA,CAACF,KAAK;QAACiB,KAAK,EAAC,WAAQ;QAACM,IAAI,EAAC,wBAAwB;QAACL,KAAK,EAAC,6BAA0B;QAAAT,QAAA,eAClFP,IAAA,YAAQ;MAAC,CACJ,CACT,CAAC;MAJOsB,QAAQ,GAAAF,OAAA,CAARE,QAAQ;IAMhBd,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,0BAA0B,CAAC;IAC/EF,MAAM,CAACZ,MAAM,CAAC2B,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAACV,GAAG,CAACW,iBAAiB,CAAC,CAAC;IAE5EF,QAAQ,cACNtB,IAAA,CAACF,KAAK;MAACiB,KAAK,EAAC,WAAQ;MAACM,IAAI,EAAC,wBAAwB;MAAAd,QAAA,eACjDP,IAAA,YAAQ;IAAC,CACJ,CACT,CAAC;IACDQ,MAAM,CAACZ,MAAM,CAAC6B,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EACxE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFnB,QAAQ,CAAC,4CAA4C,EAAE,YAAM;EAC3DC,IAAI,CAAC,wCAAwC,EAAE,YAAM;IACnD;AACJ;AACA;AACA;AACA;IACI,IAAAoB,QAAA,GAAqB/B,MAAM,cACzBK,IAAA,CAACF,KAAK;QAACiB,KAAK,EAAC,WAAQ;QAAAR,QAAA,eACnBP,IAAA,YAAQ;MAAC,CACJ,CACT,CAAC;MAJOsB,QAAQ,GAAAI,QAAA,CAARJ,QAAQ;IAKhBd,MAAM,CAACZ,MAAM,CAAC+B,WAAW,CAAC,OAAO,CAAC,CAAC,CAACd,GAAG,CAACW,iBAAiB,CAAC,CAAC;IAE3DF,QAAQ,cACNtB,IAAA,CAACF,KAAK;MAACiB,KAAK,EAAC,WAAQ;MAACC,KAAK,EAAC,6BAA0B;MAAAT,QAAA,eACpDP,IAAA,YAAQ;IAAC,CACJ,CACT,CAAC;IACDQ,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACe,iBAAiB,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFlB,IAAI,CAAC,0CAA0C,EAAE,YAAM;IACrD,IAAAsB,QAAA,GAAqBjC,MAAM,cACzBK,IAAA,CAACF,KAAK;QAACiB,KAAK,EAAC,WAAQ;QAACC,KAAK,EAAC,6BAA0B;QAAAT,QAAA,eACpDP,IAAA,YAAQ;MAAC,CACJ,CACT,CAAC;MAJOsB,QAAQ,GAAAM,QAAA,CAARN,QAAQ;IAKhBd,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,OAAO,CAAC,CAAC,CAACe,iBAAiB,CAAC,CAAC;IAErDF,QAAQ,cACNtB,IAAA,CAACF,KAAK;MAACiB,KAAK,EAAC,WAAQ;MAAAR,QAAA,eACnBP,IAAA,YAAQ;IAAC,CACJ,CACT,CAAC;IACDQ,MAAM,CAACZ,MAAM,CAAC+B,WAAW,CAAC,OAAO,CAAC,CAAC,CAACd,GAAG,CAACW,iBAAiB,CAAC,CAAC;IAC3DhB,MAAM,CAACZ,MAAM,CAACa,SAAS,CAAC,SAAS,CAAC,CAAC,CAACI,GAAG,CAACK,WAAW,CAAC,CAAC;EACvD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"FieldError.test.js","names":["render","screen","FieldError","Field","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BareInput","error","_error","fullWidth","_fullWidth","rest","describe","test","children","expect","getByRole","toHaveTextContent","id","toHaveAttribute","not","getByTestId","label","toHaveAccessibleDescription","toBeInvalid","input","rerender","hint","queryByText","toBeInTheDocument","getByText","queryByRole"],"sources":["../../../../src/lib/v2/__tests__/FieldError.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen } from \"@testing-library/react\";\r\nimport type { InputHTMLAttributes } from \"react\";\r\nimport FieldError from \"../components/FieldError\";\r\nimport Field from \"../components/Field\";\r\n\r\n/**\r\n * FieldError — contract tests, including its integration into Field.\r\n *\r\n * WHY THIS FILE EXISTS\r\n * --------------------\r\n * §10.3 R-G.6 MUST. But the real reason is narrower and worth stating: the\r\n * contract this component carries is INVISIBLE. `Field` supplies an id, and that\r\n * id must reach the control's `aria-describedby` so a screen reader announces\r\n * the error when focus lands on the input. Break that wiring and NOTHING\r\n * changes: same pixels, same screenshot, same visual review — only a blind user\r\n * silently stops being told why their submit failed. There is no way to catch\r\n * that except by asserting it.\r\n *\r\n * The assertions below use `toHaveAccessibleDescription`, not id comparisons, on\r\n * purpose. It resolves aria-describedby to the text a screen reader would\r\n * actually announce, so the test states the USER-FACING outcome and stays true\r\n * if the id-generation scheme ever changes.\r\n *\r\n * NOT COVERED — deliberately\r\n * R-4.1's visual half (\"sous le champ, en rouge, avec icône\") and the\r\n * first-line icon alignment on a wrapping message are layout and colour. jsdom\r\n * resolves neither CSS variables nor flexbox, so asserting them here would pass\r\n * while the message rendered black and centred. Those live in\r\n * FieldError.stories.tsx.\r\n */\r\n\r\n/**\r\n * Fixture : un champ minimal qui CONSOMME les props que `Field` diffuse.\r\n *\r\n * `Field` clone son enfant avec `error` et `fullWidth` — délibérément, parce\r\n * que plusieurs entrées v2 (`NumberInput`, le `renderInput` de `Combobox`) ne\r\n * sont pas de purs enfants MUI et lisent ces props directement. Un `<input />`\r\n * NU les laisse donc filer jusqu'au DOM, et React émet deux avertissements à\r\n * chaque rendu : « Received `true` for a non-boolean attribute `error` » et\r\n * « React does not recognize the `fullWidth` prop on a DOM element ».\r\n *\r\n * Ce n'est PAS un défaut de `Field` : en production l'enfant est un `Input` ou\r\n * un `Select` du socle, qui consomme ces props. Mais c'était six\r\n * avertissements dans la sortie de la suite, au milieu desquels un vrai\r\n * avertissement passe inaperçu — et un audit du socle a effectivement pris ce\r\n * bruit pour une fuite de props en production avant de lire le composant.\r\n *\r\n * La fixture reste volontairement minimale : pas d'`Input` du socle ici, ce\r\n * fichier teste le CÂBLAGE de `Field` et non l'intégration d'un composant. Elle\r\n * ne fait qu'absorber les deux props destinées à un contrôle riche.\r\n */\r\nfunction BareInput({\r\n error: _error,\r\n fullWidth: _fullWidth,\r\n ...rest\r\n}: InputHTMLAttributes<HTMLInputElement> & {\r\n error?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n}) {\r\n return <input {...rest} />;\r\n}\r\n\r\ndescribe(\"FieldError — standalone\", () => {\r\n test(\"announces itself as an alert carrying the message\", () => {\r\n render(<FieldError>Ajoutez au moins un article avant de soumettre.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n \"Ajoutez au moins un article avant de soumettre.\"\r\n );\r\n });\r\n\r\n test(\"forwards id so a host can wire its own aria-describedby\", () => {\r\n render(<FieldError id=\"articles-error\">Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).toHaveAttribute(\"id\", \"articles-error\");\r\n });\r\n\r\n test(\"omits id when none is supplied\", () => {\r\n /* The list-level case usually has nothing to bind to. Emitting an empty or\r\n * generated id would create a describedby target nobody references. */\r\n render(<FieldError>Ajoutez au moins un article.</FieldError>);\r\n expect(screen.getByRole(\"alert\")).not.toHaveAttribute(\"id\");\r\n });\r\n\r\n test(\"the icon is hidden from assistive tech\", () => {\r\n /* R-Ar.2 — the message IS the announcement; an announced glyph would double\r\n * it. No semantic query reaches a role-less, name-less element, hence the\r\n * testid the component exposes for exactly this assertion. */\r\n render(<FieldError>Message</FieldError>);\r\n expect(screen.getByTestId(\"fielderror-icon\")).toHaveAttribute(\"aria-hidden\", \"true\");\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — inside Field (the wiring that has no visual tell)\", () => {\r\n test(\"the error becomes the control's accessible description\", () => {\r\n render(\r\n <Field label=\"Numéro de titre\" error=\"Le numéro est invalide. Format : AAAA-IM-NNNNN.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"textbox\")).toHaveAccessibleDescription(\r\n \"Le numéro est invalide. Format : AAAA-IM-NNNNN.\"\r\n );\r\n });\r\n\r\n test(\"the control is marked invalid\", () => {\r\n render(\r\n <Field label=\"Numéro\" error=\"Invalide.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n // jest-dom's toBeInvalid reads aria-invalid — R-I.3.\r\n expect(screen.getByRole(\"textbox\")).toBeInvalid();\r\n });\r\n\r\n test(\"a host-supplied aria-describedby is PRESERVED, not replaced\", () => {\r\n /* The merge is the fragile part. Overwriting instead of merging silently\r\n * drops a consumer's external help text, and again nothing visual changes.\r\n * Asserted with two order-independent regexes rather than one exact string,\r\n * so the test does not encode which fragment Field puts first. */\r\n render(\r\n <>\r\n <span id=\"host-help\">Format attendu : AAAA-IM-NNNNN.</span>\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput aria-describedby=\"host-help\" />\r\n </Field>\r\n </>\r\n );\r\n\r\n const input = screen.getByRole(\"textbox\");\r\n expect(input).toHaveAccessibleDescription(/Format attendu/);\r\n expect(input).toHaveAccessibleDescription(/incomplet/);\r\n });\r\n\r\n test(\"the hint is suppressed while an error is shown\", () => {\r\n /* Two competing descriptions under one field is worse than one. The hint\r\n * returns once the error clears — verified by the rerender below. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Le numéro est incomplet.\");\r\n expect(screen.queryByText(\"Format : AAAA-IM-NNNNN\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" hint=\"Format : AAAA-IM-NNNNN\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByText(\"Format : AAAA-IM-NNNNN\")).toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"FieldError — live-region mounting contract\", () => {\r\n test(\"no alert exists until an error appears\", () => {\r\n /* THE contract. `role=\\\"alert\\\"` announces on INSERTION: an element mounted\r\n * permanently with empty content announces nothing when it later fills, so\r\n * a well-meaning refactor that always renders the container — to \\\"avoid\r\n * layout shift\\\", say — silently kills the announcement while every pixel\r\n * and every screenshot stays identical. */\r\n const { rerender } = render(\r\n <Field label=\"Numéro\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"the alert unmounts when the error clears\", () => {\r\n const { rerender } = render(\r\n <Field label=\"Numéro\" error=\"Le numéro est incomplet.\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n rerender(\r\n <Field label=\"Numéro\">\r\n <BareInput />\r\n </Field>\r\n );\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n expect(screen.getByRole(\"textbox\")).not.toBeInvalid();\r\n });\r\n});\r\n"],"mappings":"AAAA,OAAO,2BAA2B;AAClC,SAASA,MAAM,EAAEC,MAAM,QAAQ,wBAAwB;AAEvD,OAAOC,UAAU,MAAM,0BAA0B;AACjD,OAAOC,KAAK,MAAM,qBAAqB;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAnBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAoBA,SAASC,SAASA,CAAC;EACjBC,KAAK,EAAEC,MAAM;EACbC,SAAS,EAAEC,UAAU;EACrB,GAAGC;AAIL,CAAC,EAAE;EACD,oBAAOV,IAAA;IAAA,GAAWU;EAAI,CAAG,CAAC;AAC5B;AAEAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM;EACxCC,IAAI,CAAC,mDAAmD,EAAE,MAAM;IAC9DjB,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAgB,QAAA,EAAC;IAA+C,CAAY,CAAC,CAAC;IAChFC,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CACjD,iDACF,CAAC;EACH,CAAC,CAAC;EAEFJ,IAAI,CAAC,yDAAyD,EAAE,MAAM;IACpEjB,MAAM,cAACK,IAAA,CAACH,UAAU;MAACoB,EAAE,EAAC,gBAAgB;MAAAJ,QAAA,EAAC;IAA4B,CAAY,CAAC,CAAC;IACjFC,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACG,eAAe,CAAC,IAAI,EAAE,gBAAgB,CAAC;EAC3E,CAAC,CAAC;EAEFN,IAAI,CAAC,gCAAgC,EAAE,MAAM;IAC3C;AACJ;IACIjB,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAgB,QAAA,EAAC;IAA4B,CAAY,CAAC,CAAC;IAC7DC,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACI,GAAG,CAACD,eAAe,CAAC,IAAI,CAAC;EAC7D,CAAC,CAAC;EAEFN,IAAI,CAAC,wCAAwC,EAAE,MAAM;IACnD;AACJ;AACA;IACIjB,MAAM,cAACK,IAAA,CAACH,UAAU;MAAAgB,QAAA,EAAC;IAAO,CAAY,CAAC,CAAC;IACxCC,MAAM,CAAClB,MAAM,CAACwB,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAACF,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC;EACtF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFP,QAAQ,CAAC,gEAAgE,EAAE,MAAM;EAC/EC,IAAI,CAAC,wDAAwD,EAAE,MAAM;IACnEjB,MAAM,cACJK,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,oBAAiB;MAACf,KAAK,EAAC,oDAAiD;MAAAO,QAAA,eACpFb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IAEDS,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACO,2BAA2B,CAC7D,iDACF,CAAC;EACH,CAAC,CAAC;EAEFV,IAAI,CAAC,+BAA+B,EAAE,MAAM;IAC1CjB,MAAM,cACJK,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAACf,KAAK,EAAC,WAAW;MAAAO,QAAA,eACrCb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACD;IACAS,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACQ,WAAW,CAAC,CAAC;EACnD,CAAC,CAAC;EAEFX,IAAI,CAAC,6DAA6D,EAAE,MAAM;IACxE;AACJ;AACA;AACA;IACIjB,MAAM,cACJS,KAAA,CAAAF,SAAA;MAAAW,QAAA,gBACEb,IAAA;QAAMiB,EAAE,EAAC,WAAW;QAAAJ,QAAA,EAAC;MAA+B,CAAM,CAAC,eAC3Db,IAAA,CAACF,KAAK;QAACuB,KAAK,EAAC,WAAQ;QAACf,KAAK,EAAC,6BAA0B;QAAAO,QAAA,eACpDb,IAAA,CAACK,SAAS;UAAC,oBAAiB;QAAW,CAAE;MAAC,CACrC,CAAC;IAAA,CACR,CACJ,CAAC;IAED,MAAMmB,KAAK,GAAG5B,MAAM,CAACmB,SAAS,CAAC,SAAS,CAAC;IACzCD,MAAM,CAACU,KAAK,CAAC,CAACF,2BAA2B,CAAC,gBAAgB,CAAC;IAC3DR,MAAM,CAACU,KAAK,CAAC,CAACF,2BAA2B,CAAC,WAAW,CAAC;EACxD,CAAC,CAAC;EAEFV,IAAI,CAAC,gDAAgD,EAAE,MAAM;IAC3D;AACJ;IACI,MAAM;MAAEa;IAAS,CAAC,GAAG9B,MAAM,cACzBK,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAACK,IAAI,EAAC,wBAAwB;MAACpB,KAAK,EAAC,6BAA0B;MAAAO,QAAA,eAClFb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IAEDS,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,0BAA0B,CAAC;IAC/EF,MAAM,CAAClB,MAAM,CAAC+B,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAACR,GAAG,CAACS,iBAAiB,CAAC,CAAC;IAE5EH,QAAQ,cACNzB,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAACK,IAAI,EAAC,wBAAwB;MAAAb,QAAA,eACjDb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACDS,MAAM,CAAClB,MAAM,CAACiC,SAAS,CAAC,wBAAwB,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EACxE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFjB,QAAQ,CAAC,4CAA4C,EAAE,MAAM;EAC3DC,IAAI,CAAC,wCAAwC,EAAE,MAAM;IACnD;AACJ;AACA;AACA;AACA;IACI,MAAM;MAAEa;IAAS,CAAC,GAAG9B,MAAM,cACzBK,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAAAR,QAAA,eACnBb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACDS,MAAM,CAAClB,MAAM,CAACkC,WAAW,CAAC,OAAO,CAAC,CAAC,CAACX,GAAG,CAACS,iBAAiB,CAAC,CAAC;IAE3DH,QAAQ,cACNzB,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAACf,KAAK,EAAC,6BAA0B;MAAAO,QAAA,eACpDb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACDS,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACa,iBAAiB,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFhB,IAAI,CAAC,0CAA0C,EAAE,MAAM;IACrD,MAAM;MAAEa;IAAS,CAAC,GAAG9B,MAAM,cACzBK,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAACf,KAAK,EAAC,6BAA0B;MAAAO,QAAA,eACpDb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACDS,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,OAAO,CAAC,CAAC,CAACa,iBAAiB,CAAC,CAAC;IAErDH,QAAQ,cACNzB,IAAA,CAACF,KAAK;MAACuB,KAAK,EAAC,WAAQ;MAAAR,QAAA,eACnBb,IAAA,CAACK,SAAS,IAAE;IAAC,CACR,CACT,CAAC;IACDS,MAAM,CAAClB,MAAM,CAACkC,WAAW,CAAC,OAAO,CAAC,CAAC,CAACX,GAAG,CAACS,iBAAiB,CAAC,CAAC;IAC3Dd,MAAM,CAAClB,MAAM,CAACmB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACI,GAAG,CAACI,WAAW,CAAC,CAAC;EACvD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}