@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,159 @@
1
+ "use strict";
2
+
3
+ require("@testing-library/jest-dom");
4
+ var _react = require("@testing-library/react");
5
+ var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
6
+ var _ReferentielField = _interopRequireDefault(require("../patterns/ReferentielField"));
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /**
10
+ * ReferentielField — `container="drawer"` (S-1) et `searchOnOpen` (S-2).
11
+ *
12
+ * CE QUE CE FICHIER PROTÈGE
13
+ * -------------------------
14
+ * Ces deux capacités ont été ajoutées pour débloquer l'adoption du pattern par
15
+ * des hôtes qui ne pouvaient pas l'utiliser :
16
+ *
17
+ * S-1 — R-M.5 impose un `Drawer` au-delà de 3 champs ou pour du contenu
18
+ * défilable long, ce qu'est un sélecteur à critères + grille paginée.
19
+ * Le conteneur était en dur.
20
+ * S-2 — certaines populations sont courtes et connues (les mandatants d'un
21
+ * transitaire), et la réponse attendue à l'ouverture est la LISTE, pas
22
+ * un formulaire vide.
23
+ *
24
+ * L'assertion centrale n'est pas que la recherche initiale part — c'est
25
+ * qu'elle part UNE SEULE FOIS. `runSearch` dépend de `draft`, donc un effet
26
+ * naïf repartirait à chaque frappe dans un critère : le sélecteur émettrait une
27
+ * requête par caractère, ce que le bouton « Rechercher » existe précisément
28
+ * pour éviter. La garde est un `ref`, et c'est elle que le troisième test
29
+ * exerce.
30
+ *
31
+ * Le corps est UNE expression partagée par les deux conteneurs, donc les tests
32
+ * de contenu ci-dessous valent pour les deux branches par construction. Ce
33
+ * fichier vérifie que la branche drawer rend bien ce corps — pas les internes
34
+ * de `Drawer`, qui ont leurs propres tests.
35
+ */
36
+
37
+ const LIGNES = [{
38
+ id: 1,
39
+ code: "7108",
40
+ description: "Or sous formes brutes"
41
+ }];
42
+ const COLONNES = [{
43
+ key: "code",
44
+ header: "Code"
45
+ }, {
46
+ key: "description",
47
+ header: "Description"
48
+ }];
49
+ const CRITERES = [{
50
+ name: "code",
51
+ label: "Code"
52
+ }];
53
+ function renderPicker(options) {
54
+ return (0, _react.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_ReferentielField.default, {
55
+ value: null,
56
+ onChange: () => {},
57
+ search: options.search,
58
+ columns: COLONNES,
59
+ criteria: CRITERES,
60
+ title: "Rechercher un code",
61
+ ...(options.container !== undefined ? {
62
+ container: options.container
63
+ } : {}),
64
+ ...(options.searchOnOpen !== undefined ? {
65
+ searchOnOpen: options.searchOnOpen
66
+ } : {})
67
+ }));
68
+ }
69
+
70
+ /** Ouvre le sélecteur par son trigger (un Input en lecture seule). */
71
+ async function ouvrir() {
72
+ await _userEvent.default.click(_react.screen.getByRole("textbox"));
73
+ }
74
+ describe("ReferentielField — conteneur drawer (S-1)", () => {
75
+ test("rend le corps du sélecteur dans la branche drawer", async () => {
76
+ const search = jest.fn(() => ({
77
+ items: LIGNES,
78
+ total: 1
79
+ }));
80
+ renderPicker({
81
+ container: "drawer",
82
+ searchOnOpen: true,
83
+ search
84
+ });
85
+ await ouvrir();
86
+
87
+ /* Le critère ET la ligne de résultat : c'est le corps commun, pas un
88
+ * détail de `Drawer`. Si la branche ne rendait pas `pickerBody`, ces deux
89
+ * assertions tomberaient. */
90
+ expect(await _react.screen.findByText("Or sous formes brutes")).toBeInTheDocument();
91
+ expect(_react.screen.getByLabelText(/Code/)).toBeInTheDocument();
92
+ });
93
+ test("le défaut reste la modale — aucun appelant existant ne change", async () => {
94
+ const search = jest.fn(() => ({
95
+ items: LIGNES,
96
+ total: 1
97
+ }));
98
+ renderPicker({
99
+ searchOnOpen: true,
100
+ search
101
+ });
102
+ await ouvrir();
103
+ expect(await _react.screen.findByText("Or sous formes brutes")).toBeInTheDocument();
104
+ });
105
+ });
106
+ describe("ReferentielField — searchOnOpen (S-2)", () => {
107
+ test("cherche à vide dès l'ouverture", async () => {
108
+ const search = jest.fn(() => ({
109
+ items: LIGNES,
110
+ total: 1
111
+ }));
112
+ renderPicker({
113
+ searchOnOpen: true,
114
+ search
115
+ });
116
+ await ouvrir();
117
+ await (0, _react.waitFor)(() => expect(search).toHaveBeenCalledTimes(1));
118
+ /* À vide : c'est tout l'objet de la prop — la liste, pas un formulaire. */
119
+ expect(search).toHaveBeenCalledWith(expect.objectContaining({
120
+ criteria: {
121
+ code: ""
122
+ },
123
+ page: 1
124
+ }));
125
+ });
126
+ test("ne cherche pas à l'ouverture quand la prop est absente", async () => {
127
+ const search = jest.fn(() => ({
128
+ items: LIGNES,
129
+ total: 1
130
+ }));
131
+ renderPicker({
132
+ search
133
+ });
134
+ await ouvrir();
135
+
136
+ /* L'état « Aucune recherche » reste le comportement par défaut : la prop
137
+ * est un opt-in, pas un changement de contrat. */
138
+ expect(search).not.toHaveBeenCalled();
139
+ });
140
+ test("UNE SEULE recherche par ouverture, même en saisissant un critère", async () => {
141
+ const search = jest.fn(() => ({
142
+ items: LIGNES,
143
+ total: 1
144
+ }));
145
+ renderPicker({
146
+ searchOnOpen: true,
147
+ search
148
+ });
149
+ await ouvrir();
150
+ await (0, _react.waitFor)(() => expect(search).toHaveBeenCalledTimes(1));
151
+
152
+ /* LE test de ce fichier. `runSearch` dépend de `draft` : sans la garde par
153
+ * `ref`, l'effet d'ouverture repartirait à chaque frappe et le sélecteur
154
+ * émettrait une requête par caractère. */
155
+ await _userEvent.default.type(_react.screen.getByLabelText(/Code/), "710");
156
+ expect(search).toHaveBeenCalledTimes(1);
157
+ });
158
+ });
159
+ //# sourceMappingURL=ReferentielFieldContainer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReferentielFieldContainer.test.js","names":["require","_react","_userEvent","_interopRequireDefault","_ReferentielField","_jsxRuntime","e","__esModule","default","LIGNES","id","code","description","COLONNES","key","header","CRITERES","name","label","renderPicker","options","render","jsx","value","onChange","search","columns","criteria","title","container","undefined","searchOnOpen","ouvrir","userEvent","click","screen","getByRole","describe","test","jest","fn","items","total","expect","findByText","toBeInTheDocument","getByLabelText","waitFor","toHaveBeenCalledTimes","toHaveBeenCalledWith","objectContaining","page","not","toHaveBeenCalled","type"],"sources":["../../../src/lib/v2/__tests__/ReferentielFieldContainer.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport { render, screen, waitFor } from \"@testing-library/react\";\r\nimport userEvent from \"@testing-library/user-event\";\r\nimport ReferentielField from \"../patterns/ReferentielField\";\r\nimport type { ReferentielSearchResult } from \"../patterns/ReferentielField\";\r\n\r\n/**\r\n * ReferentielField — `container=\"drawer\"` (S-1) et `searchOnOpen` (S-2).\r\n *\r\n * CE QUE CE FICHIER PROTÈGE\r\n * -------------------------\r\n * Ces deux capacités ont été ajoutées pour débloquer l'adoption du pattern par\r\n * des hôtes qui ne pouvaient pas l'utiliser :\r\n *\r\n * S-1 — R-M.5 impose un `Drawer` au-delà de 3 champs ou pour du contenu\r\n * défilable long, ce qu'est un sélecteur à critères + grille paginée.\r\n * Le conteneur était en dur.\r\n * S-2 — certaines populations sont courtes et connues (les mandatants d'un\r\n * transitaire), et la réponse attendue à l'ouverture est la LISTE, pas\r\n * un formulaire vide.\r\n *\r\n * L'assertion centrale n'est pas que la recherche initiale part — c'est\r\n * qu'elle part UNE SEULE FOIS. `runSearch` dépend de `draft`, donc un effet\r\n * naïf repartirait à chaque frappe dans un critère : le sélecteur émettrait une\r\n * requête par caractère, ce que le bouton « Rechercher » existe précisément\r\n * pour éviter. La garde est un `ref`, et c'est elle que le troisième test\r\n * exerce.\r\n *\r\n * Le corps est UNE expression partagée par les deux conteneurs, donc les tests\r\n * de contenu ci-dessous valent pour les deux branches par construction. Ce\r\n * fichier vérifie que la branche drawer rend bien ce corps — pas les internes\r\n * de `Drawer`, qui ont leurs propres tests.\r\n */\r\n\r\ninterface Ligne {\r\n id: number;\r\n code: string;\r\n description: string;\r\n}\r\n\r\nconst LIGNES: Ligne[] = [\r\n { id: 1, code: \"7108\", description: \"Or sous formes brutes\" },\r\n];\r\n\r\nconst COLONNES = [\r\n { key: \"code\", header: \"Code\" },\r\n { key: \"description\", header: \"Description\" },\r\n];\r\n\r\nconst CRITERES = [{ name: \"code\", label: \"Code\" }];\r\n\r\nfunction renderPicker(options: {\r\n container?: \"modal\" | \"drawer\";\r\n searchOnOpen?: boolean;\r\n search: () => ReferentielSearchResult<Ligne>;\r\n}) {\r\n return render(\r\n <ReferentielField<Ligne>\r\n value={null}\r\n onChange={() => {}}\r\n search={options.search}\r\n columns={COLONNES}\r\n criteria={CRITERES}\r\n title=\"Rechercher un code\"\r\n {...(options.container !== undefined\r\n ? { container: options.container }\r\n : {})}\r\n {...(options.searchOnOpen !== undefined\r\n ? { searchOnOpen: options.searchOnOpen }\r\n : {})}\r\n />\r\n );\r\n}\r\n\r\n/** Ouvre le sélecteur par son trigger (un Input en lecture seule). */\r\nasync function ouvrir(): Promise<void> {\r\n await userEvent.click(screen.getByRole(\"textbox\"));\r\n}\r\n\r\ndescribe(\"ReferentielField — conteneur drawer (S-1)\", () => {\r\n test(\"rend le corps du sélecteur dans la branche drawer\", async () => {\r\n const search = jest.fn(() => ({ items: LIGNES, total: 1 }));\r\n renderPicker({ container: \"drawer\", searchOnOpen: true, search });\r\n\r\n await ouvrir();\r\n\r\n /* Le critère ET la ligne de résultat : c'est le corps commun, pas un\r\n * détail de `Drawer`. Si la branche ne rendait pas `pickerBody`, ces deux\r\n * assertions tomberaient. */\r\n expect(await screen.findByText(\"Or sous formes brutes\")).toBeInTheDocument();\r\n expect(screen.getByLabelText(/Code/)).toBeInTheDocument();\r\n });\r\n\r\n test(\"le défaut reste la modale — aucun appelant existant ne change\", async () => {\r\n const search = jest.fn(() => ({ items: LIGNES, total: 1 }));\r\n renderPicker({ searchOnOpen: true, search });\r\n\r\n await ouvrir();\r\n\r\n expect(await screen.findByText(\"Or sous formes brutes\")).toBeInTheDocument();\r\n });\r\n});\r\n\r\ndescribe(\"ReferentielField — searchOnOpen (S-2)\", () => {\r\n test(\"cherche à vide dès l'ouverture\", async () => {\r\n const search = jest.fn(() => ({ items: LIGNES, total: 1 }));\r\n renderPicker({ searchOnOpen: true, search });\r\n\r\n await ouvrir();\r\n\r\n await waitFor(() => expect(search).toHaveBeenCalledTimes(1));\r\n /* À vide : c'est tout l'objet de la prop — la liste, pas un formulaire. */\r\n expect(search).toHaveBeenCalledWith(\r\n expect.objectContaining({ criteria: { code: \"\" }, page: 1 })\r\n );\r\n });\r\n\r\n test(\"ne cherche pas à l'ouverture quand la prop est absente\", async () => {\r\n const search = jest.fn(() => ({ items: LIGNES, total: 1 }));\r\n renderPicker({ search });\r\n\r\n await ouvrir();\r\n\r\n /* L'état « Aucune recherche » reste le comportement par défaut : la prop\r\n * est un opt-in, pas un changement de contrat. */\r\n expect(search).not.toHaveBeenCalled();\r\n });\r\n\r\n test(\"UNE SEULE recherche par ouverture, même en saisissant un critère\", async () => {\r\n const search = jest.fn(() => ({ items: LIGNES, total: 1 }));\r\n renderPicker({ searchOnOpen: true, search });\r\n\r\n await ouvrir();\r\n await waitFor(() => expect(search).toHaveBeenCalledTimes(1));\r\n\r\n /* LE test de ce fichier. `runSearch` dépend de `draft` : sans la garde par\r\n * `ref`, l'effet d'ouverture repartirait à chaque frappe et le sélecteur\r\n * émettrait une requête par caractère. */\r\n await userEvent.type(screen.getByLabelText(/Code/), \"710\");\r\n\r\n expect(search).toHaveBeenCalledTimes(1);\r\n });\r\n});\r\n"],"mappings":";;AAAAA,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAD,sBAAA,CAAAH,OAAA;AAA4D,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAG,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,MAAMG,MAAe,GAAG,CACtB;EAAEC,EAAE,EAAE,CAAC;EAAEC,IAAI,EAAE,MAAM;EAAEC,WAAW,EAAE;AAAwB,CAAC,CAC9D;AAED,MAAMC,QAAQ,GAAG,CACf;EAAEC,GAAG,EAAE,MAAM;EAAEC,MAAM,EAAE;AAAO,CAAC,EAC/B;EAAED,GAAG,EAAE,aAAa;EAAEC,MAAM,EAAE;AAAc,CAAC,CAC9C;AAED,MAAMC,QAAQ,GAAG,CAAC;EAAEC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE;AAAO,CAAC,CAAC;AAElD,SAASC,YAAYA,CAACC,OAIrB,EAAE;EACD,OAAO,IAAAC,aAAM,eACX,IAAAhB,WAAA,CAAAiB,GAAA,EAAClB,iBAAA,CAAAI,OAAgB;IACfe,KAAK,EAAE,IAAK;IACZC,QAAQ,EAAEA,CAAA,KAAM,CAAC,CAAE;IACnBC,MAAM,EAAEL,OAAO,CAACK,MAAO;IACvBC,OAAO,EAAEb,QAAS;IAClBc,QAAQ,EAAEX,QAAS;IACnBY,KAAK,EAAC,oBAAoB;IAAA,IACrBR,OAAO,CAACS,SAAS,KAAKC,SAAS,GAChC;MAAED,SAAS,EAAET,OAAO,CAACS;IAAU,CAAC,GAChC,CAAC,CAAC;IAAA,IACDT,OAAO,CAACW,YAAY,KAAKD,SAAS,GACnC;MAAEC,YAAY,EAAEX,OAAO,CAACW;IAAa,CAAC,GACtC,CAAC,CAAC;EAAA,CACP,CACH,CAAC;AACH;;AAEA;AACA,eAAeC,MAAMA,CAAA,EAAkB;EACrC,MAAMC,kBAAS,CAACC,KAAK,CAACC,aAAM,CAACC,SAAS,CAAC,SAAS,CAAC,CAAC;AACpD;AAEAC,QAAQ,CAAC,2CAA2C,EAAE,MAAM;EAC1DC,IAAI,CAAC,mDAAmD,EAAE,YAAY;IACpE,MAAMb,MAAM,GAAGc,IAAI,CAACC,EAAE,CAAC,OAAO;MAAEC,KAAK,EAAEhC,MAAM;MAAEiC,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC;IAC3DvB,YAAY,CAAC;MAAEU,SAAS,EAAE,QAAQ;MAAEE,YAAY,EAAE,IAAI;MAAEN;IAAO,CAAC,CAAC;IAEjE,MAAMO,MAAM,CAAC,CAAC;;IAEd;AACJ;AACA;IACIW,MAAM,CAAC,MAAMR,aAAM,CAACS,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAC5EF,MAAM,CAACR,aAAM,CAACW,cAAc,CAAC,MAAM,CAAC,CAAC,CAACD,iBAAiB,CAAC,CAAC;EAC3D,CAAC,CAAC;EAEFP,IAAI,CAAC,+DAA+D,EAAE,YAAY;IAChF,MAAMb,MAAM,GAAGc,IAAI,CAACC,EAAE,CAAC,OAAO;MAAEC,KAAK,EAAEhC,MAAM;MAAEiC,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC;IAC3DvB,YAAY,CAAC;MAAEY,YAAY,EAAE,IAAI;MAAEN;IAAO,CAAC,CAAC;IAE5C,MAAMO,MAAM,CAAC,CAAC;IAEdW,MAAM,CAAC,MAAMR,aAAM,CAACS,UAAU,CAAC,uBAAuB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;EAC9E,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFR,QAAQ,CAAC,uCAAuC,EAAE,MAAM;EACtDC,IAAI,CAAC,gCAAgC,EAAE,YAAY;IACjD,MAAMb,MAAM,GAAGc,IAAI,CAACC,EAAE,CAAC,OAAO;MAAEC,KAAK,EAAEhC,MAAM;MAAEiC,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC;IAC3DvB,YAAY,CAAC;MAAEY,YAAY,EAAE,IAAI;MAAEN;IAAO,CAAC,CAAC;IAE5C,MAAMO,MAAM,CAAC,CAAC;IAEd,MAAM,IAAAe,cAAO,EAAC,MAAMJ,MAAM,CAAClB,MAAM,CAAC,CAACuB,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5D;IACAL,MAAM,CAAClB,MAAM,CAAC,CAACwB,oBAAoB,CACjCN,MAAM,CAACO,gBAAgB,CAAC;MAAEvB,QAAQ,EAAE;QAAEhB,IAAI,EAAE;MAAG,CAAC;MAAEwC,IAAI,EAAE;IAAE,CAAC,CAC7D,CAAC;EACH,CAAC,CAAC;EAEFb,IAAI,CAAC,wDAAwD,EAAE,YAAY;IACzE,MAAMb,MAAM,GAAGc,IAAI,CAACC,EAAE,CAAC,OAAO;MAAEC,KAAK,EAAEhC,MAAM;MAAEiC,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC;IAC3DvB,YAAY,CAAC;MAAEM;IAAO,CAAC,CAAC;IAExB,MAAMO,MAAM,CAAC,CAAC;;IAEd;AACJ;IACIW,MAAM,CAAClB,MAAM,CAAC,CAAC2B,GAAG,CAACC,gBAAgB,CAAC,CAAC;EACvC,CAAC,CAAC;EAEFf,IAAI,CAAC,kEAAkE,EAAE,YAAY;IACnF,MAAMb,MAAM,GAAGc,IAAI,CAACC,EAAE,CAAC,OAAO;MAAEC,KAAK,EAAEhC,MAAM;MAAEiC,KAAK,EAAE;IAAE,CAAC,CAAC,CAAC;IAC3DvB,YAAY,CAAC;MAAEY,YAAY,EAAE,IAAI;MAAEN;IAAO,CAAC,CAAC;IAE5C,MAAMO,MAAM,CAAC,CAAC;IACd,MAAM,IAAAe,cAAO,EAAC,MAAMJ,MAAM,CAAClB,MAAM,CAAC,CAACuB,qBAAqB,CAAC,CAAC,CAAC,CAAC;;IAE5D;AACJ;AACA;IACI,MAAMf,kBAAS,CAACqB,IAAI,CAACnB,aAAM,CAACW,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IAE1DH,MAAM,CAAClB,MAAM,CAAC,CAACuB,qBAAqB,CAAC,CAAC,CAAC;EACzC,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -1,20 +1,13 @@
1
1
  "use strict";
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
3
  require("@testing-library/jest-dom");
5
4
  var React = _interopRequireWildcard(require("react"));
6
5
  var _react2 = require("@testing-library/react");
7
6
  var _SectionErrorBoundary = _interopRequireDefault(require("../components/SectionErrorBoundary"));
8
7
  var _jsxRuntime = require("react/jsx-runtime");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
11
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
13
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
17
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
10
+ /**
18
11
  * SectionErrorBoundary — behaviour tests.
19
12
  *
20
13
  * WHY THIS FILE MATTERS MORE THAN MOST
@@ -32,25 +25,26 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /**
32
25
  * NOTE ON CONSOLE NOISE — React logs caught errors to console.error itself, on
33
26
  * top of the boundary's own log. Both are silenced per-test rather than globally
34
27
  * so a genuine unexpected console.error still surfaces in the other suites.
35
- */ /** A component that throws on render, controlled by a prop. */
36
- function Boom(_ref) {
37
- var _ref$shouldThrow = _ref.shouldThrow,
38
- shouldThrow = _ref$shouldThrow === void 0 ? true : _ref$shouldThrow;
28
+ */
29
+
30
+ /** A component that throws on render, controlled by a prop. */function Boom({
31
+ shouldThrow = true
32
+ }) {
39
33
  if (shouldThrow) throw new Error("payload inattendu: articles.map n'est pas une fonction");
40
34
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
41
35
  children: "contenu r\xE9tabli"
42
36
  });
43
37
  }
44
- var consoleErrorSpy;
45
- beforeEach(function () {
46
- consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(function () {});
38
+ let consoleErrorSpy;
39
+ beforeEach(() => {
40
+ consoleErrorSpy = jest.spyOn(console, "error").mockImplementation(() => {});
47
41
  });
48
- afterEach(function () {
42
+ afterEach(() => {
49
43
  consoleErrorSpy.mockRestore();
50
44
  });
51
- describe("SectionErrorBoundary — containment", function () {
52
- test("renders children untouched when nothing throws", function () {
53
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
45
+ describe("SectionErrorBoundary — containment", () => {
46
+ test("renders children untouched when nothing throws", () => {
47
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
54
48
  title: "Marchandises",
55
49
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
56
50
  children: "contenu normal"
@@ -59,7 +53,7 @@ describe("SectionErrorBoundary — containment", function () {
59
53
  expect(_react2.screen.getByText("contenu normal")).toBeInTheDocument();
60
54
  expect(_react2.screen.queryByRole("alert")).not.toBeInTheDocument();
61
55
  });
62
- test("catches a render exception and keeps its SIBLINGS mounted", function () {
56
+ test("catches a render exception and keeps its SIBLINGS mounted", () => {
63
57
  /* THE contract. The assertion that matters is not that the banner appears —
64
58
  * it is that `sibling` is still in the document. Without a boundary React
65
59
  * unmounts the entire tree and BOTH would be gone: that is the blank screen
@@ -67,7 +61,7 @@ describe("SectionErrorBoundary — containment", function () {
67
61
  (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
68
62
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
69
63
  children: "sibling"
70
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
64
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
71
65
  title: "Marchandises",
72
66
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
73
67
  })]
@@ -75,22 +69,22 @@ describe("SectionErrorBoundary — containment", function () {
75
69
  expect(_react2.screen.getByText("sibling")).toBeInTheDocument();
76
70
  expect(_react2.screen.getByRole("alert")).toBeInTheDocument();
77
71
  });
78
- test("names the failing section so the user knows WHAT broke", function () {
79
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
72
+ test("names the failing section so the user knows WHAT broke", () => {
73
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
80
74
  title: "Marchandises",
81
75
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
82
76
  }));
83
77
  expect(_react2.screen.getByRole("alert")).toHaveTextContent("Marchandises");
84
78
  });
85
- test("falls back to a generic label when no title is supplied", function () {
86
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
79
+ test("falls back to a generic label when no title is supplied", () => {
80
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
87
81
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
88
82
  }));
89
83
  expect(_react2.screen.getByRole("alert")).toHaveTextContent("Section");
90
84
  });
91
85
  });
92
- describe("SectionErrorBoundary — user-facing copy (§09.3)", function () {
93
- test("shows French recovery copy, never a raw exception message", function () {
86
+ describe("SectionErrorBoundary — user-facing copy (§09.3)", () => {
87
+ test("shows French recovery copy, never a raw exception message", () => {
94
88
  /* Charter §09.3 forbids exposing technical detail to the user, and a raw JS
95
89
  * exception is worse than the "Erreur HTTP 422" the charter uses as its DON'T
96
90
  * example. The reference implementation this was promoted from rendered
@@ -100,14 +94,14 @@ describe("SectionErrorBoundary — user-facing copy (§09.3)", function () {
100
94
  * render — which is why this test targets the recovery sentence rather than
101
95
  * asserting the absence of the message. The production-only behaviour is
102
96
  * asserted separately below. */
103
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
97
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
104
98
  title: "Marchandises",
105
99
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
106
100
  }));
107
101
  expect(_react2.screen.getByRole("alert")).toHaveTextContent(/Cette section n'a pas pu s'afficher/);
108
102
  });
109
- test("suppresses the technical detail in production", function () {
110
- var previous = process.env["NODE_ENV"];
103
+ test("suppresses the technical detail in production", () => {
104
+ const previous = process.env["NODE_ENV"];
111
105
  /* Bracket access throughout, matching the component: `process.env` is an index
112
106
  * signature and `noPropertyAccessFromIndexSignature` is mandatory. Tests are
113
107
  * outside tsconfig.build.json's scope so dot access would have compiled here —
@@ -117,25 +111,25 @@ describe("SectionErrorBoundary — user-facing copy (§09.3)", function () {
117
111
  * finally block restores it even if the assertion throws. */
118
112
  process.env["NODE_ENV"] = "production";
119
113
  try {
120
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
114
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
121
115
  title: "Marchandises",
122
116
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
123
117
  }));
124
118
  expect(_react2.screen.getByRole("alert")).toHaveTextContent(/Cette section n'a pas pu s'afficher/);
125
119
  expect(_react2.screen.getByRole("alert")).not.toHaveTextContent(/articles\.map/);
126
120
  } finally {
127
- process.env["NODE_ENV"] = previous !== null && previous !== void 0 ? previous : "test";
121
+ process.env["NODE_ENV"] = previous ?? "test";
128
122
  }
129
123
  });
130
124
  });
131
- describe("SectionErrorBoundary — retry REMOUNTS", function () {
132
- test("retry clears the error and re-renders the subtree", function () {
125
+ describe("SectionErrorBoundary — retry REMOUNTS", () => {
126
+ test("retry clears the error and re-renders the subtree", () => {
133
127
  /* The re-key on `attempt` is what makes this work. Without it React reuses
134
128
  * the instance that threw and retry fails identically — a retry button that
135
129
  * cannot succeed is worse than no retry button. `shouldThrow` is read from a
136
130
  * mutable holder so the same element throws first and succeeds second,
137
131
  * exactly as a transient payload problem would. */
138
- var holder = {
132
+ const holder = {
139
133
  shouldThrow: true
140
134
  };
141
135
  function Flaky() {
@@ -143,7 +137,7 @@ describe("SectionErrorBoundary — retry REMOUNTS", function () {
143
137
  shouldThrow: holder.shouldThrow
144
138
  });
145
139
  }
146
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
140
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
147
141
  title: "Marchandises",
148
142
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Flaky, {})
149
143
  }));
@@ -155,8 +149,8 @@ describe("SectionErrorBoundary — retry REMOUNTS", function () {
155
149
  expect(_react2.screen.getByText("contenu rétabli")).toBeInTheDocument();
156
150
  expect(_react2.screen.queryByRole("alert")).not.toBeInTheDocument();
157
151
  });
158
- test("a custom retryLabel is used on the button and in the copy", function () {
159
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
152
+ test("a custom retryLabel is used on the button and in the copy", () => {
153
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
160
154
  title: "Marchandises",
161
155
  retryLabel: "Recharger",
162
156
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
@@ -167,45 +161,40 @@ describe("SectionErrorBoundary — retry REMOUNTS", function () {
167
161
  expect(_react2.screen.getByRole("alert")).toHaveTextContent(/Recharger/);
168
162
  });
169
163
  });
170
- describe("SectionErrorBoundary — reporting and second exit", function () {
171
- test("calls onError with the error and the component info", function () {
164
+ describe("SectionErrorBoundary — reporting and second exit", () => {
165
+ test("calls onError with the error and the component info", () => {
172
166
  /* console.error is invisible in production, so without this hook a boundary
173
167
  * silently swallows the only signal an operator would ever get. */
174
- var onError = jest.fn();
175
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
168
+ const onError = jest.fn();
169
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
176
170
  title: "Marchandises",
177
171
  onError: onError,
178
172
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
179
173
  }));
180
174
  expect(onError).toHaveBeenCalledTimes(1);
181
- var _ref2 = onError.mock.calls[0],
182
- _ref3 = _slicedToArray(_ref2, 2),
183
- err = _ref3[0],
184
- info = _ref3[1];
175
+ const [err, info] = onError.mock.calls[0];
185
176
  expect(err).toBeInstanceOf(Error);
186
177
  expect(err.message).toMatch(/articles\.map/);
187
178
  expect(info).toHaveProperty("componentStack");
188
179
  });
189
- test("a throwing onError does not take the boundary down with it", function () {
180
+ test("a throwing onError does not take the boundary down with it", () => {
190
181
  /* Guard on the guard. A reporter that throws must not defeat the component
191
182
  * whose entire purpose is stopping one failure from causing another. */
192
- var onError = jest.fn(function () {
183
+ const onError = jest.fn(() => {
193
184
  throw new Error("APM indisponible");
194
185
  });
195
- expect(function () {
196
- return (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
197
- title: "Marchandises",
198
- onError: onError,
199
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
200
- }));
201
- }).not.toThrow();
186
+ expect(() => (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
187
+ title: "Marchandises",
188
+ onError: onError,
189
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
190
+ }))).not.toThrow();
202
191
  expect(_react2.screen.getByRole("alert")).toBeInTheDocument();
203
192
  });
204
- test("renders the optional secondary exit when supplied", function () {
193
+ test("renders the optional secondary exit when supplied", () => {
205
194
  /* Only possible since Banner gained secondaryAction (gap G-19). The reference
206
195
  * implementation offered no way out when retrying could not help. */
207
- var onEscape = jest.fn();
208
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
196
+ const onEscape = jest.fn();
197
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
209
198
  title: "Marchandises",
210
199
  secondaryAction: {
211
200
  label: "Retour à la liste",
@@ -213,24 +202,20 @@ describe("SectionErrorBoundary — reporting and second exit", function () {
213
202
  },
214
203
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
215
204
  }));
216
- var escape = _react2.screen.getByRole("button", {
205
+ const escape = _react2.screen.getByRole("button", {
217
206
  name: /Retour à la liste/
218
207
  });
219
208
  _react2.fireEvent.click(escape);
220
209
  expect(onEscape).toHaveBeenCalledTimes(1);
221
210
  });
222
- test("logs the section title and the component stack", function () {
223
- (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary["default"], {
211
+ test("logs the section title and the component stack", () => {
212
+ (0, _react2.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_SectionErrorBoundary.default, {
224
213
  title: "Marchandises",
225
214
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Boom, {})
226
215
  }));
227
216
  /* Asserted loosely — the point is that an operator grepping logs can find
228
217
  * WHICH section failed, not the exact format of the line. */
229
- var logged = consoleErrorSpy.mock.calls.some(function (args) {
230
- return args.some(function (a) {
231
- return typeof a === "string" && a.includes("Marchandises");
232
- });
233
- });
218
+ const logged = consoleErrorSpy.mock.calls.some(args => args.some(a => typeof a === "string" && a.includes("Marchandises")));
234
219
  expect(logged).toBe(true);
235
220
  });
236
221
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SectionErrorBoundary.test.js","names":["require","React","_interopRequireWildcard","_react2","_SectionErrorBoundary","_interopRequireDefault","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","length","arr2","_i","Symbol","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","value","err","isArray","Boom","_ref","_ref$shouldThrow","shouldThrow","Error","jsx","children","consoleErrorSpy","beforeEach","jest","spyOn","console","mockImplementation","afterEach","mockRestore","describe","render","title","expect","screen","getByText","toBeInTheDocument","queryByRole","not","jsxs","getByRole","toHaveTextContent","previous","process","env","holder","Flaky","fireEvent","click","retryLabel","onError","fn","toHaveBeenCalledTimes","_ref2","mock","calls","_ref3","info","toBeInstanceOf","message","toMatch","toHaveProperty","toThrow","onEscape","secondaryAction","label","onClick","escape","logged","some","args","a","includes","toBe"],"sources":["../../../src/lib/v2/__tests__/SectionErrorBoundary.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, screen, fireEvent } from \"@testing-library/react\";\r\nimport SectionErrorBoundary from \"../components/SectionErrorBoundary\";\r\n\r\n/**\r\n * SectionErrorBoundary — behaviour tests.\r\n *\r\n * WHY THIS FILE MATTERS MORE THAN MOST\r\n * ------------------------------------\r\n * §10.3 R-G.6 MUST, but the real reason is that this is the one component in the\r\n * library whose ENTIRE contract is a failure path. Every other component can be\r\n * eyeballed in Storybook; this one only does its job when something throws, which\r\n * nobody exercises by hand. And its failure mode is total: if the boundary does\r\n * not catch, React unmounts the whole tree and the user gets a blank screen\r\n * (ISO/IEC 25010 § Reliability — fault tolerance).\r\n *\r\n * jsdom is the right tool here, unusually: catching, re-mounting, logging and\r\n * conditional detail are all logic, not layout.\r\n *\r\n * NOTE ON CONSOLE NOISE — React logs caught errors to console.error itself, on\r\n * top of the boundary's own log. Both are silenced per-test rather than globally\r\n * so a genuine unexpected console.error still surfaces in the other suites.\r\n */\r\n\r\n/** A component that throws on render, controlled by a prop. */\r\nfunction Boom({ shouldThrow = true }: { shouldThrow?: boolean }) {\r\n if (shouldThrow) throw new Error(\"payload inattendu: articles.map n'est pas une fonction\");\r\n return <div>contenu rétabli</div>;\r\n}\r\n\r\nlet consoleErrorSpy: jest.SpyInstance;\r\n\r\nbeforeEach(() => {\r\n consoleErrorSpy = jest.spyOn(console, \"error\").mockImplementation(() => {});\r\n});\r\n\r\nafterEach(() => {\r\n consoleErrorSpy.mockRestore();\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — containment\", () => {\r\n test(\"renders children untouched when nothing throws\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <div>contenu normal</div>\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByText(\"contenu normal\")).toBeInTheDocument();\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"catches a render exception and keeps its SIBLINGS mounted\", () => {\r\n /* THE contract. The assertion that matters is not that the banner appears —\r\n * it is that `sibling` is still in the document. Without a boundary React\r\n * unmounts the entire tree and BOTH would be gone: that is the blank screen\r\n * this component exists to prevent. */\r\n render(\r\n <div>\r\n <div>sibling</div>\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n </div>\r\n );\r\n\r\n expect(screen.getByText(\"sibling\")).toBeInTheDocument();\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"names the failing section so the user knows WHAT broke\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Marchandises\");\r\n });\r\n\r\n test(\"falls back to a generic label when no title is supplied\", () => {\r\n render(\r\n <SectionErrorBoundary>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Section\");\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — user-facing copy (§09.3)\", () => {\r\n test(\"shows French recovery copy, never a raw exception message\", () => {\r\n /* Charter §09.3 forbids exposing technical detail to the user, and a raw JS\r\n * exception is worse than the \"Erreur HTTP 422\" the charter uses as its DON'T\r\n * example. The reference implementation this was promoted from rendered\r\n * error.message straight into the banner body; this asserts we do not.\r\n *\r\n * NODE_ENV is \"test\" here, not \"production\", so the dev detail block DOES\r\n * render — which is why this test targets the recovery sentence rather than\r\n * asserting the absence of the message. The production-only behaviour is\r\n * asserted separately below. */\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n /Cette section n'a pas pu s'afficher/\r\n );\r\n });\r\n\r\n test(\"suppresses the technical detail in production\", () => {\r\n const previous = process.env[\"NODE_ENV\"];\r\n /* Bracket access throughout, matching the component: `process.env` is an index\r\n * signature and `noPropertyAccessFromIndexSignature` is mandatory. Tests are\r\n * outside tsconfig.build.json's scope so dot access would have compiled here —\r\n * two conventions in neighbouring files is the drift this audit exists to stop.\r\n *\r\n * Assigned rather than replaced wholesale: other suites read NODE_ENV, and the\r\n * finally block restores it even if the assertion throws. */\r\n (process.env as Record<string, string>)[\"NODE_ENV\"] = \"production\";\r\n try {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n /Cette section n'a pas pu s'afficher/\r\n );\r\n expect(screen.getByRole(\"alert\")).not.toHaveTextContent(/articles\\.map/);\r\n } finally {\r\n (process.env as Record<string, string>)[\"NODE_ENV\"] = previous ?? \"test\";\r\n }\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — retry REMOUNTS\", () => {\r\n test(\"retry clears the error and re-renders the subtree\", () => {\r\n /* The re-key on `attempt` is what makes this work. Without it React reuses\r\n * the instance that threw and retry fails identically — a retry button that\r\n * cannot succeed is worse than no retry button. `shouldThrow` is read from a\r\n * mutable holder so the same element throws first and succeeds second,\r\n * exactly as a transient payload problem would. */\r\n const holder = { shouldThrow: true };\r\n function Flaky() {\r\n return <Boom shouldThrow={holder.shouldThrow} />;\r\n }\r\n\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Flaky />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n holder.shouldThrow = false;\r\n fireEvent.click(screen.getByRole(\"button\", { name: /Réessayer/ }));\r\n\r\n expect(screen.getByText(\"contenu rétabli\")).toBeInTheDocument();\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"a custom retryLabel is used on the button and in the copy\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" retryLabel=\"Recharger\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"button\", { name: /Recharger/ })).toBeInTheDocument();\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(/Recharger/);\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — reporting and second exit\", () => {\r\n test(\"calls onError with the error and the component info\", () => {\r\n /* console.error is invisible in production, so without this hook a boundary\r\n * silently swallows the only signal an operator would ever get. */\r\n const onError = jest.fn();\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" onError={onError}>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n\r\n expect(onError).toHaveBeenCalledTimes(1);\r\n const [err, info] = onError.mock.calls[0] as [Error, React.ErrorInfo];\r\n expect(err).toBeInstanceOf(Error);\r\n expect(err.message).toMatch(/articles\\.map/);\r\n expect(info).toHaveProperty(\"componentStack\");\r\n });\r\n\r\n test(\"a throwing onError does not take the boundary down with it\", () => {\r\n /* Guard on the guard. A reporter that throws must not defeat the component\r\n * whose entire purpose is stopping one failure from causing another. */\r\n const onError = jest.fn(() => {\r\n throw new Error(\"APM indisponible\");\r\n });\r\n\r\n expect(() =>\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" onError={onError}>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n )\r\n ).not.toThrow();\r\n\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"renders the optional secondary exit when supplied\", () => {\r\n /* Only possible since Banner gained secondaryAction (gap G-19). The reference\r\n * implementation offered no way out when retrying could not help. */\r\n const onEscape = jest.fn();\r\n render(\r\n <SectionErrorBoundary\r\n title=\"Marchandises\"\r\n secondaryAction={{ label: \"Retour à la liste\", onClick: onEscape }}\r\n >\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n\r\n const escape = screen.getByRole(\"button\", { name: /Retour à la liste/ });\r\n fireEvent.click(escape);\r\n expect(onEscape).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n test(\"logs the section title and the component stack\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n /* Asserted loosely — the point is that an operator grepping logs can find\r\n * WHICH section failed, not the exact format of the line. */\r\n const logged = consoleErrorSpy.mock.calls.some((args) =>\r\n args.some((a: unknown) => typeof a === \"string\" && a.includes(\"Marchandises\"))\r\n );\r\n expect(logged).toBe(true);\r\n });\r\n});\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SectionErrorBoundary.test.js","names":["require","React","_interopRequireWildcard","_react2","_SectionErrorBoundary","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Boom","shouldThrow","Error","jsx","children","consoleErrorSpy","beforeEach","jest","spyOn","console","mockImplementation","afterEach","mockRestore","describe","test","render","title","expect","screen","getByText","toBeInTheDocument","queryByRole","not","jsxs","getByRole","toHaveTextContent","previous","process","env","holder","Flaky","fireEvent","click","name","retryLabel","onError","fn","toHaveBeenCalledTimes","err","info","mock","calls","toBeInstanceOf","message","toMatch","toHaveProperty","toThrow","onEscape","secondaryAction","label","onClick","escape","logged","some","args","a","includes","toBe"],"sources":["../../../src/lib/v2/__tests__/SectionErrorBoundary.test.tsx"],"sourcesContent":["import \"@testing-library/jest-dom\";\r\nimport * as React from \"react\";\r\nimport { render, screen, fireEvent } from \"@testing-library/react\";\r\nimport SectionErrorBoundary from \"../components/SectionErrorBoundary\";\r\n\r\n/**\r\n * SectionErrorBoundary — behaviour tests.\r\n *\r\n * WHY THIS FILE MATTERS MORE THAN MOST\r\n * ------------------------------------\r\n * §10.3 R-G.6 MUST, but the real reason is that this is the one component in the\r\n * library whose ENTIRE contract is a failure path. Every other component can be\r\n * eyeballed in Storybook; this one only does its job when something throws, which\r\n * nobody exercises by hand. And its failure mode is total: if the boundary does\r\n * not catch, React unmounts the whole tree and the user gets a blank screen\r\n * (ISO/IEC 25010 § Reliability — fault tolerance).\r\n *\r\n * jsdom is the right tool here, unusually: catching, re-mounting, logging and\r\n * conditional detail are all logic, not layout.\r\n *\r\n * NOTE ON CONSOLE NOISE — React logs caught errors to console.error itself, on\r\n * top of the boundary's own log. Both are silenced per-test rather than globally\r\n * so a genuine unexpected console.error still surfaces in the other suites.\r\n */\r\n\r\n/** A component that throws on render, controlled by a prop. */\r\nfunction Boom({ shouldThrow = true }: { shouldThrow?: boolean }) {\r\n if (shouldThrow) throw new Error(\"payload inattendu: articles.map n'est pas une fonction\");\r\n return <div>contenu rétabli</div>;\r\n}\r\n\r\nlet consoleErrorSpy: jest.SpyInstance;\r\n\r\nbeforeEach(() => {\r\n consoleErrorSpy = jest.spyOn(console, \"error\").mockImplementation(() => {});\r\n});\r\n\r\nafterEach(() => {\r\n consoleErrorSpy.mockRestore();\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — containment\", () => {\r\n test(\"renders children untouched when nothing throws\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <div>contenu normal</div>\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByText(\"contenu normal\")).toBeInTheDocument();\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"catches a render exception and keeps its SIBLINGS mounted\", () => {\r\n /* THE contract. The assertion that matters is not that the banner appears —\r\n * it is that `sibling` is still in the document. Without a boundary React\r\n * unmounts the entire tree and BOTH would be gone: that is the blank screen\r\n * this component exists to prevent. */\r\n render(\r\n <div>\r\n <div>sibling</div>\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n </div>\r\n );\r\n\r\n expect(screen.getByText(\"sibling\")).toBeInTheDocument();\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"names the failing section so the user knows WHAT broke\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Marchandises\");\r\n });\r\n\r\n test(\"falls back to a generic label when no title is supplied\", () => {\r\n render(\r\n <SectionErrorBoundary>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\"Section\");\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — user-facing copy (§09.3)\", () => {\r\n test(\"shows French recovery copy, never a raw exception message\", () => {\r\n /* Charter §09.3 forbids exposing technical detail to the user, and a raw JS\r\n * exception is worse than the \"Erreur HTTP 422\" the charter uses as its DON'T\r\n * example. The reference implementation this was promoted from rendered\r\n * error.message straight into the banner body; this asserts we do not.\r\n *\r\n * NODE_ENV is \"test\" here, not \"production\", so the dev detail block DOES\r\n * render — which is why this test targets the recovery sentence rather than\r\n * asserting the absence of the message. The production-only behaviour is\r\n * asserted separately below. */\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n /Cette section n'a pas pu s'afficher/\r\n );\r\n });\r\n\r\n test(\"suppresses the technical detail in production\", () => {\r\n const previous = process.env[\"NODE_ENV\"];\r\n /* Bracket access throughout, matching the component: `process.env` is an index\r\n * signature and `noPropertyAccessFromIndexSignature` is mandatory. Tests are\r\n * outside tsconfig.build.json's scope so dot access would have compiled here —\r\n * two conventions in neighbouring files is the drift this audit exists to stop.\r\n *\r\n * Assigned rather than replaced wholesale: other suites read NODE_ENV, and the\r\n * finally block restores it even if the assertion throws. */\r\n (process.env as Record<string, string>)[\"NODE_ENV\"] = \"production\";\r\n try {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(\r\n /Cette section n'a pas pu s'afficher/\r\n );\r\n expect(screen.getByRole(\"alert\")).not.toHaveTextContent(/articles\\.map/);\r\n } finally {\r\n (process.env as Record<string, string>)[\"NODE_ENV\"] = previous ?? \"test\";\r\n }\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — retry REMOUNTS\", () => {\r\n test(\"retry clears the error and re-renders the subtree\", () => {\r\n /* The re-key on `attempt` is what makes this work. Without it React reuses\r\n * the instance that threw and retry fails identically — a retry button that\r\n * cannot succeed is worse than no retry button. `shouldThrow` is read from a\r\n * mutable holder so the same element throws first and succeeds second,\r\n * exactly as a transient payload problem would. */\r\n const holder = { shouldThrow: true };\r\n function Flaky() {\r\n return <Boom shouldThrow={holder.shouldThrow} />;\r\n }\r\n\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Flaky />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n\r\n holder.shouldThrow = false;\r\n fireEvent.click(screen.getByRole(\"button\", { name: /Réessayer/ }));\r\n\r\n expect(screen.getByText(\"contenu rétabli\")).toBeInTheDocument();\r\n expect(screen.queryByRole(\"alert\")).not.toBeInTheDocument();\r\n });\r\n\r\n test(\"a custom retryLabel is used on the button and in the copy\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" retryLabel=\"Recharger\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n expect(screen.getByRole(\"button\", { name: /Recharger/ })).toBeInTheDocument();\r\n expect(screen.getByRole(\"alert\")).toHaveTextContent(/Recharger/);\r\n });\r\n});\r\n\r\ndescribe(\"SectionErrorBoundary — reporting and second exit\", () => {\r\n test(\"calls onError with the error and the component info\", () => {\r\n /* console.error is invisible in production, so without this hook a boundary\r\n * silently swallows the only signal an operator would ever get. */\r\n const onError = jest.fn();\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" onError={onError}>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n\r\n expect(onError).toHaveBeenCalledTimes(1);\r\n const [err, info] = onError.mock.calls[0] as [Error, React.ErrorInfo];\r\n expect(err).toBeInstanceOf(Error);\r\n expect(err.message).toMatch(/articles\\.map/);\r\n expect(info).toHaveProperty(\"componentStack\");\r\n });\r\n\r\n test(\"a throwing onError does not take the boundary down with it\", () => {\r\n /* Guard on the guard. A reporter that throws must not defeat the component\r\n * whose entire purpose is stopping one failure from causing another. */\r\n const onError = jest.fn(() => {\r\n throw new Error(\"APM indisponible\");\r\n });\r\n\r\n expect(() =>\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\" onError={onError}>\r\n <Boom />\r\n </SectionErrorBoundary>\r\n )\r\n ).not.toThrow();\r\n\r\n expect(screen.getByRole(\"alert\")).toBeInTheDocument();\r\n });\r\n\r\n test(\"renders the optional secondary exit when supplied\", () => {\r\n /* Only possible since Banner gained secondaryAction (gap G-19). The reference\r\n * implementation offered no way out when retrying could not help. */\r\n const onEscape = jest.fn();\r\n render(\r\n <SectionErrorBoundary\r\n title=\"Marchandises\"\r\n secondaryAction={{ label: \"Retour à la liste\", onClick: onEscape }}\r\n >\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n\r\n const escape = screen.getByRole(\"button\", { name: /Retour à la liste/ });\r\n fireEvent.click(escape);\r\n expect(onEscape).toHaveBeenCalledTimes(1);\r\n });\r\n\r\n test(\"logs the section title and the component stack\", () => {\r\n render(\r\n <SectionErrorBoundary title=\"Marchandises\">\r\n <Boom />\r\n </SectionErrorBoundary>\r\n );\r\n /* Asserted loosely — the point is that an operator grepping logs can find\r\n * WHICH section failed, not the exact format of the line. */\r\n const logged = consoleErrorSpy.mock.calls.some((args) =>\r\n args.some((a: unknown) => typeof a === \"string\" && a.includes(\"Marchandises\"))\r\n );\r\n expect(logged).toBe(true);\r\n });\r\n});\r\n"],"mappings":";;AAAAA,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,qBAAA,GAAAC,sBAAA,CAAAL,OAAA;AAAsE,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAK,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAL,wBAAAK,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAT,uBAAA,YAAAA,CAAAK,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAEtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+DACA,SAASgB,IAAIA,CAAC;EAAEC,WAAW,GAAG;AAAgC,CAAC,EAAE;EAC/D,IAAIA,WAAW,EAAE,MAAM,IAAIC,KAAK,CAAC,wDAAwD,CAAC;EAC1F,oBAAO,IAAAtB,WAAA,CAAAuB,GAAA;IAAAC,QAAA,EAAK;EAAe,CAAK,CAAC;AACnC;AAEA,IAAIC,eAAiC;AAErCC,UAAU,CAAC,MAAM;EACfD,eAAe,GAAGE,IAAI,CAACC,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC,CAACC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC;AAEFC,SAAS,CAAC,MAAM;EACdN,eAAe,CAACO,WAAW,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEFC,QAAQ,CAAC,oCAAoC,EAAE,MAAM;EACnDC,IAAI,CAAC,gDAAgD,EAAE,MAAM;IAC3D,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA;QAAAC,QAAA,EAAK;MAAc,CAAK;IAAC,CACL,CACxB,CAAC;IACDa,MAAM,CAACC,cAAM,CAACC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAC9DH,MAAM,CAACC,cAAM,CAACG,WAAW,CAAC,OAAO,CAAC,CAAC,CAACC,GAAG,CAACF,iBAAiB,CAAC,CAAC;EAC7D,CAAC,CAAC;EAEFN,IAAI,CAAC,2DAA2D,EAAE,MAAM;IACtE;AACJ;AACA;AACA;IACI,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAA2C,IAAA;MAAAnB,QAAA,gBACE,IAAAxB,WAAA,CAAAuB,GAAA;QAAAC,QAAA,EAAK;MAAO,CAAK,CAAC,eAClB,IAAAxB,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;QAACiC,KAAK,EAAC,cAAc;QAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;MAAC,CACY,CAAC;IAAA,CACpB,CACP,CAAC;IAEDiB,MAAM,CAACC,cAAM,CAACC,SAAS,CAAC,SAAS,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IACvDH,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACJ,iBAAiB,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFN,IAAI,CAAC,wDAAwD,EAAE,MAAM;IACnE,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IACDiB,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,cAAc,CAAC;EACrE,CAAC,CAAC;EAEFX,IAAI,CAAC,yDAAyD,EAAE,MAAM;IACpE,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAAAqB,QAAA,eACnB,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IACDiB,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,SAAS,CAAC;EAChE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFZ,QAAQ,CAAC,iDAAiD,EAAE,MAAM;EAChEC,IAAI,CAAC,2DAA2D,EAAE,MAAM;IACtE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IACDiB,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CACjD,qCACF,CAAC;EACH,CAAC,CAAC;EAEFX,IAAI,CAAC,+CAA+C,EAAE,MAAM;IAC1D,MAAMY,QAAQ,GAAGC,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC;IACxC;AACJ;AACA;AACA;AACA;AACA;AACA;IACKD,OAAO,CAACC,GAAG,CAA4B,UAAU,CAAC,GAAG,YAAY;IAClE,IAAI;MACF,IAAAb,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;QAACiC,KAAK,EAAC,cAAc;QAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;MAAC,CACY,CACxB,CAAC;MACDiB,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CACjD,qCACF,CAAC;MACDR,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACF,GAAG,CAACG,iBAAiB,CAAC,eAAe,CAAC;IAC1E,CAAC,SAAS;MACPE,OAAO,CAACC,GAAG,CAA4B,UAAU,CAAC,GAAGF,QAAQ,IAAI,MAAM;IAC1E;EACF,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFb,QAAQ,CAAC,uCAAuC,EAAE,MAAM;EACtDC,IAAI,CAAC,mDAAmD,EAAE,MAAM;IAC9D;AACJ;AACA;AACA;AACA;IACI,MAAMe,MAAM,GAAG;MAAE5B,WAAW,EAAE;IAAK,CAAC;IACpC,SAAS6B,KAAKA,CAAA,EAAG;MACf,oBAAO,IAAAlD,WAAA,CAAAuB,GAAA,EAACH,IAAI;QAACC,WAAW,EAAE4B,MAAM,CAAC5B;MAAY,CAAE,CAAC;IAClD;IAEA,IAAAc,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAAC2B,KAAK,IAAE;IAAC,CACW,CACxB,CAAC;IACDb,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACJ,iBAAiB,CAAC,CAAC;IAErDS,MAAM,CAAC5B,WAAW,GAAG,KAAK;IAC1B8B,iBAAS,CAACC,KAAK,CAACd,cAAM,CAACM,SAAS,CAAC,QAAQ,EAAE;MAAES,IAAI,EAAE;IAAY,CAAC,CAAC,CAAC;IAElEhB,MAAM,CAACC,cAAM,CAACC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAACC,iBAAiB,CAAC,CAAC;IAC/DH,MAAM,CAACC,cAAM,CAACG,WAAW,CAAC,OAAO,CAAC,CAAC,CAACC,GAAG,CAACF,iBAAiB,CAAC,CAAC;EAC7D,CAAC,CAAC;EAEFN,IAAI,CAAC,2DAA2D,EAAE,MAAM;IACtE,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAACkB,UAAU,EAAC,WAAW;MAAA9B,QAAA,eAC/D,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IACDiB,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,QAAQ,EAAE;MAAES,IAAI,EAAE;IAAY,CAAC,CAAC,CAAC,CAACb,iBAAiB,CAAC,CAAC;IAC7EH,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACC,iBAAiB,CAAC,WAAW,CAAC;EAClE,CAAC,CAAC;AACJ,CAAC,CAAC;AAEFZ,QAAQ,CAAC,kDAAkD,EAAE,MAAM;EACjEC,IAAI,CAAC,qDAAqD,EAAE,MAAM;IAChE;AACJ;IACI,MAAMqB,OAAO,GAAG5B,IAAI,CAAC6B,EAAE,CAAC,CAAC;IACzB,IAAArB,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAACmB,OAAO,EAAEA,OAAQ;MAAA/B,QAAA,eAC1D,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IAEDiB,MAAM,CAACkB,OAAO,CAAC,CAACE,qBAAqB,CAAC,CAAC,CAAC;IACxC,MAAM,CAACC,GAAG,EAAEC,IAAI,CAAC,GAAGJ,OAAO,CAACK,IAAI,CAACC,KAAK,CAAC,CAAC,CAA6B;IACrExB,MAAM,CAACqB,GAAG,CAAC,CAACI,cAAc,CAACxC,KAAK,CAAC;IACjCe,MAAM,CAACqB,GAAG,CAACK,OAAO,CAAC,CAACC,OAAO,CAAC,eAAe,CAAC;IAC5C3B,MAAM,CAACsB,IAAI,CAAC,CAACM,cAAc,CAAC,gBAAgB,CAAC;EAC/C,CAAC,CAAC;EAEF/B,IAAI,CAAC,4DAA4D,EAAE,MAAM;IACvE;AACJ;IACI,MAAMqB,OAAO,GAAG5B,IAAI,CAAC6B,EAAE,CAAC,MAAM;MAC5B,MAAM,IAAIlC,KAAK,CAAC,kBAAkB,CAAC;IACrC,CAAC,CAAC;IAEFe,MAAM,CAAC,MACL,IAAAF,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAACmB,OAAO,EAAEA,OAAQ;MAAA/B,QAAA,eAC1D,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CACF,CAAC,CAACsB,GAAG,CAACwB,OAAO,CAAC,CAAC;IAEf7B,MAAM,CAACC,cAAM,CAACM,SAAS,CAAC,OAAO,CAAC,CAAC,CAACJ,iBAAiB,CAAC,CAAC;EACvD,CAAC,CAAC;EAEFN,IAAI,CAAC,mDAAmD,EAAE,MAAM;IAC9D;AACJ;IACI,MAAMiC,QAAQ,GAAGxC,IAAI,CAAC6B,EAAE,CAAC,CAAC;IAC1B,IAAArB,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MACnBiC,KAAK,EAAC,cAAc;MACpBgC,eAAe,EAAE;QAAEC,KAAK,EAAE,mBAAmB;QAAEC,OAAO,EAAEH;MAAS,CAAE;MAAA3C,QAAA,eAEnE,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IAED,MAAMmD,MAAM,GAAGjC,cAAM,CAACM,SAAS,CAAC,QAAQ,EAAE;MAAES,IAAI,EAAE;IAAoB,CAAC,CAAC;IACxEF,iBAAS,CAACC,KAAK,CAACmB,MAAM,CAAC;IACvBlC,MAAM,CAAC8B,QAAQ,CAAC,CAACV,qBAAqB,CAAC,CAAC,CAAC;EAC3C,CAAC,CAAC;EAEFvB,IAAI,CAAC,gDAAgD,EAAE,MAAM;IAC3D,IAAAC,cAAM,eACJ,IAAAnC,WAAA,CAAAuB,GAAA,EAACzB,qBAAA,CAAAK,OAAoB;MAACiC,KAAK,EAAC,cAAc;MAAAZ,QAAA,eACxC,IAAAxB,WAAA,CAAAuB,GAAA,EAACH,IAAI,IAAE;IAAC,CACY,CACxB,CAAC;IACD;AACJ;IACI,MAAMoD,MAAM,GAAG/C,eAAe,CAACmC,IAAI,CAACC,KAAK,CAACY,IAAI,CAAEC,IAAI,IAClDA,IAAI,CAACD,IAAI,CAAEE,CAAU,IAAK,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,CAACC,QAAQ,CAAC,cAAc,CAAC,CAC/E,CAAC;IACDvC,MAAM,CAACmC,MAAM,CAAC,CAACK,IAAI,CAAC,IAAI,CAAC;EAC3B,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}