@portnet/ui 6.0.1 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1011) hide show
  1. package/CHANGELOG.md +737 -0
  2. package/dist/esm/index.js +90 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -39
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -18
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +173 -0
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +236 -0
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +299 -0
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -43
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -22
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +118 -90
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +210 -52
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +64 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +14 -4
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +26 -75
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +130 -0
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -66
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +51 -99
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +136 -0
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -50
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +129 -0
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -84
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -43
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +64 -65
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +127 -0
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +72 -0
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +235 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +203 -0
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  346. package/dist/esm/v2/personalization/capabilities/index.js +5 -0
  347. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -1
  348. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  349. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  350. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  351. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  352. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  353. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  354. package/dist/esm/v2/personalization/index.js +35 -0
  355. package/dist/esm/v2/personalization/index.js.map +1 -1
  356. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  357. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  358. package/dist/esm/v2/personalization/schema.js +8 -9
  359. package/dist/esm/v2/personalization/schema.js.map +1 -1
  360. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  361. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  362. package/dist/esm/v2/referentiel/types.js +2 -0
  363. package/dist/esm/v2/referentiel/types.js.map +1 -0
  364. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  365. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  367. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  368. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  369. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  370. package/dist/esm/v2/theme/_brand.js +8 -24
  371. package/dist/esm/v2/theme/_brand.js.map +1 -1
  372. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  373. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  374. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  375. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  376. package/dist/esm/v2/theme/cssVariables.js +62 -69
  377. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  378. package/dist/esm/v2/theme/index.js +5 -5
  379. package/dist/esm/v2/theme/index.js.map +1 -1
  380. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  381. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  382. package/dist/esm/v2/tokens/chart.js +261 -0
  383. package/dist/esm/v2/tokens/chart.js.map +1 -0
  384. package/dist/esm/v2/tokens/colors.js +22 -22
  385. package/dist/esm/v2/tokens/colors.js.map +1 -1
  386. package/dist/esm/v2/tokens/density.js +62 -7
  387. package/dist/esm/v2/tokens/density.js.map +1 -1
  388. package/dist/esm/v2/tokens/index.js +49 -34
  389. package/dist/esm/v2/tokens/index.js.map +1 -1
  390. package/dist/esm/v2/tokens/motion.js +12 -20
  391. package/dist/esm/v2/tokens/motion.js.map +1 -1
  392. package/dist/esm/v2/tokens/radius.js +1 -1
  393. package/dist/esm/v2/tokens/radius.js.map +1 -1
  394. package/dist/esm/v2/tokens/shadows.js +6 -6
  395. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  396. package/dist/esm/v2/tokens/spacing.js +2 -2
  397. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  398. package/dist/esm/v2/tokens/state.js +1 -1
  399. package/dist/esm/v2/tokens/state.js.map +1 -1
  400. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  401. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  402. package/dist/esm/v2/tokens/tokens.json +6 -1
  403. package/dist/esm/v2/tokens/typography.js +13 -13
  404. package/dist/esm/v2/tokens/typography.js.map +1 -1
  405. package/dist/esm/v2/tokens/zIndex.js +1 -1
  406. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  407. package/dist/esm/v2/types/datagrid.js.map +1 -1
  408. package/dist/esm/v2/utils/apiError.js +16 -37
  409. package/dist/esm/v2/utils/apiError.js.map +1 -1
  410. package/dist/esm/v2/utils/contrast.js +31 -32
  411. package/dist/esm/v2/utils/contrast.js.map +1 -1
  412. package/dist/esm/v2/utils/cx.js +5 -25
  413. package/dist/esm/v2/utils/cx.js.map +1 -1
  414. package/dist/esm/v2/utils/fileDownload.js +23 -26
  415. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  416. package/dist/esm/v2/utils/fileValidation.js +209 -0
  417. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtDate.js +111 -0
  419. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  420. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  421. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  422. package/dist/esm/v2/utils/formikErrors.js +78 -0
  423. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  424. package/dist/esm/v2/utils/index.js +35 -2
  425. package/dist/esm/v2/utils/index.js.map +1 -1
  426. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  427. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  428. package/dist/esm/v2/utils/networkStatus.js +12 -12
  429. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  430. package/dist/index.d.ts +9 -1
  431. package/dist/index.d.ts.map +1 -1
  432. package/dist/index.js +122 -47
  433. package/dist/index.js.map +1 -1
  434. package/dist/v2/__tests__/AppMain.test.js +133 -0
  435. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  436. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  437. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  438. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  439. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  440. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  441. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  442. package/dist/v2/__tests__/FieldError.test.js +98 -69
  443. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  444. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  445. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  446. package/dist/v2/__tests__/FieldWidth.test.js +148 -0
  447. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  448. package/dist/v2/__tests__/FileCard.test.js +45 -48
  449. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikCheckbox.test.js +175 -0
  451. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  452. package/dist/v2/__tests__/FormikDateTimePicker.test.js +237 -0
  453. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  455. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  456. package/dist/v2/__tests__/FormikRadioGroup.test.js +300 -0
  457. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  458. package/dist/v2/__tests__/MobileRowCard.test.js +100 -102
  459. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  460. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  461. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  462. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  463. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  464. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  465. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  466. package/dist/v2/__tests__/apiError.test.js +50 -69
  467. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  468. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  469. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  470. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  471. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  472. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  473. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  474. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  475. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  476. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  477. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  478. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  479. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  480. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  481. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  482. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  483. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  484. package/dist/v2/__tests__/labels-merge.test.js +38 -46
  485. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  486. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  487. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  488. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  489. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  490. package/dist/v2/__tests__/rowActions.test.js +186 -0
  491. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  493. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  494. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  495. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  496. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  497. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  498. package/dist/v2/components/Accordion.js +60 -82
  499. package/dist/v2/components/Accordion.js.map +1 -1
  500. package/dist/v2/components/ActionStrip.js +40 -52
  501. package/dist/v2/components/ActionStrip.js.map +1 -1
  502. package/dist/v2/components/Banner.js +42 -41
  503. package/dist/v2/components/Banner.js.map +1 -1
  504. package/dist/v2/components/Busy.js +22 -27
  505. package/dist/v2/components/Busy.js.map +1 -1
  506. package/dist/v2/components/Button.js +39 -50
  507. package/dist/v2/components/Button.js.map +1 -1
  508. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  509. package/dist/v2/components/CategoryTag.js +49 -32
  510. package/dist/v2/components/CategoryTag.js.map +1 -1
  511. package/dist/v2/components/Checkbox.js +39 -45
  512. package/dist/v2/components/Checkbox.js.map +1 -1
  513. package/dist/v2/components/Chip.js +29 -42
  514. package/dist/v2/components/Chip.js.map +1 -1
  515. package/dist/v2/components/Combobox.js +122 -144
  516. package/dist/v2/components/Combobox.js.map +1 -1
  517. package/dist/v2/components/CommandPalette.js +138 -225
  518. package/dist/v2/components/CommandPalette.js.map +1 -1
  519. package/dist/v2/components/ConfirmDialog.js +46 -56
  520. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  521. package/dist/v2/components/DatePicker.js +81 -86
  522. package/dist/v2/components/DatePicker.js.map +1 -1
  523. package/dist/v2/components/DateRangePicker.js +77 -87
  524. package/dist/v2/components/DateRangePicker.js.map +1 -1
  525. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  526. package/dist/v2/components/DateTimePicker.js +121 -95
  527. package/dist/v2/components/DateTimePicker.js.map +1 -1
  528. package/dist/v2/components/Drawer.d.ts.map +1 -1
  529. package/dist/v2/components/Drawer.js +93 -88
  530. package/dist/v2/components/Drawer.js.map +1 -1
  531. package/dist/v2/components/Dropzone.js +150 -196
  532. package/dist/v2/components/Dropzone.js.map +1 -1
  533. package/dist/v2/components/EmptyState.js +18 -20
  534. package/dist/v2/components/EmptyState.js.map +1 -1
  535. package/dist/v2/components/FavoriteToggle.js +28 -39
  536. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  537. package/dist/v2/components/Field.d.ts +121 -5
  538. package/dist/v2/components/Field.d.ts.map +1 -1
  539. package/dist/v2/components/Field.js +221 -62
  540. package/dist/v2/components/Field.js.map +1 -1
  541. package/dist/v2/components/FieldError.js +18 -21
  542. package/dist/v2/components/FieldError.js.map +1 -1
  543. package/dist/v2/components/FieldHelp.js +40 -60
  544. package/dist/v2/components/FieldHelp.js.map +1 -1
  545. package/dist/v2/components/FileCard.js +27 -31
  546. package/dist/v2/components/FileCard.js.map +1 -1
  547. package/dist/v2/components/FilterTab.js +30 -38
  548. package/dist/v2/components/FilterTab.js.map +1 -1
  549. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  550. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  551. package/dist/v2/components/ForbiddenPage.js +37 -17
  552. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  553. package/dist/v2/components/FormGrid.js +53 -59
  554. package/dist/v2/components/FormGrid.js.map +1 -1
  555. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  556. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  557. package/dist/v2/components/FormikDisplay.js +108 -33
  558. package/dist/v2/components/FormikDisplay.js.map +1 -1
  559. package/dist/v2/components/Input.d.ts +40 -0
  560. package/dist/v2/components/Input.d.ts.map +1 -1
  561. package/dist/v2/components/Input.js +81 -41
  562. package/dist/v2/components/Input.js.map +1 -1
  563. package/dist/v2/components/KPICard.js +57 -67
  564. package/dist/v2/components/KPICard.js.map +1 -1
  565. package/dist/v2/components/KPIStrip.js +16 -22
  566. package/dist/v2/components/KPIStrip.js.map +1 -1
  567. package/dist/v2/components/KV.js +25 -31
  568. package/dist/v2/components/KV.js.map +1 -1
  569. package/dist/v2/components/KVGrid.js +19 -26
  570. package/dist/v2/components/KVGrid.js.map +1 -1
  571. package/dist/v2/components/Layout.js +91 -120
  572. package/dist/v2/components/Layout.js.map +1 -1
  573. package/dist/v2/components/MobileRowCard.js +79 -91
  574. package/dist/v2/components/MobileRowCard.js.map +1 -1
  575. package/dist/v2/components/Modal.js +61 -69
  576. package/dist/v2/components/Modal.js.map +1 -1
  577. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  578. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  579. package/dist/v2/components/NetworkErrorPage.js +38 -21
  580. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  581. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  582. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  583. package/dist/v2/components/NotFoundPage.js +37 -18
  584. package/dist/v2/components/NotFoundPage.js.map +1 -1
  585. package/dist/v2/components/NumberInput.js +88 -118
  586. package/dist/v2/components/NumberInput.js.map +1 -1
  587. package/dist/v2/components/OverflowMenu.js +38 -56
  588. package/dist/v2/components/OverflowMenu.js.map +1 -1
  589. package/dist/v2/components/PdfViewer.js +34 -45
  590. package/dist/v2/components/PdfViewer.js.map +1 -1
  591. package/dist/v2/components/ProgressBar.js +42 -49
  592. package/dist/v2/components/ProgressBar.js.map +1 -1
  593. package/dist/v2/components/Radio.js +59 -67
  594. package/dist/v2/components/Radio.js.map +1 -1
  595. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  596. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  597. package/dist/v2/components/SectionHeader.js +34 -41
  598. package/dist/v2/components/SectionHeader.js.map +1 -1
  599. package/dist/v2/components/Segmented.js +69 -93
  600. package/dist/v2/components/Segmented.js.map +1 -1
  601. package/dist/v2/components/Select.d.ts +26 -2
  602. package/dist/v2/components/Select.d.ts.map +1 -1
  603. package/dist/v2/components/Select.js +120 -155
  604. package/dist/v2/components/Select.js.map +1 -1
  605. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  606. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  607. package/dist/v2/components/ServerErrorPage.js +37 -20
  608. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  609. package/dist/v2/components/Skeleton.js +86 -100
  610. package/dist/v2/components/Skeleton.js.map +1 -1
  611. package/dist/v2/components/SkipLink.js +9 -12
  612. package/dist/v2/components/SkipLink.js.map +1 -1
  613. package/dist/v2/components/Spinner.js +16 -25
  614. package/dist/v2/components/Spinner.js.map +1 -1
  615. package/dist/v2/components/Status.js +18 -29
  616. package/dist/v2/components/Status.js.map +1 -1
  617. package/dist/v2/components/Stepper.js +80 -82
  618. package/dist/v2/components/Stepper.js.map +1 -1
  619. package/dist/v2/components/Surface.js +34 -49
  620. package/dist/v2/components/Surface.js.map +1 -1
  621. package/dist/v2/components/Switch.js +29 -37
  622. package/dist/v2/components/Switch.js.map +1 -1
  623. package/dist/v2/components/TabPanel.d.ts +17 -0
  624. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  625. package/dist/v2/components/TabPanel.js +90 -0
  626. package/dist/v2/components/TabPanel.js.map +1 -0
  627. package/dist/v2/components/Tabs.d.ts +25 -0
  628. package/dist/v2/components/Tabs.d.ts.map +1 -1
  629. package/dist/v2/components/Tabs.js +53 -29
  630. package/dist/v2/components/Tabs.js.map +1 -1
  631. package/dist/v2/components/TelInput.js +80 -115
  632. package/dist/v2/components/TelInput.js.map +1 -1
  633. package/dist/v2/components/Textarea.js +26 -35
  634. package/dist/v2/components/Textarea.js.map +1 -1
  635. package/dist/v2/components/TimePicker.js +62 -74
  636. package/dist/v2/components/TimePicker.js.map +1 -1
  637. package/dist/v2/components/Toast.js +119 -174
  638. package/dist/v2/components/Toast.js.map +1 -1
  639. package/dist/v2/components/Tooltip.js +23 -38
  640. package/dist/v2/components/Tooltip.js.map +1 -1
  641. package/dist/v2/components/_ErrorPageBody.js +15 -16
  642. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  643. package/dist/v2/components/_pickerShared.js +5 -5
  644. package/dist/v2/components/_pickerShared.js.map +1 -1
  645. package/dist/v2/components/index.d.ts +67 -1
  646. package/dist/v2/components/index.d.ts.map +1 -1
  647. package/dist/v2/components/index.js +153 -136
  648. package/dist/v2/components/index.js.map +1 -1
  649. package/dist/v2/hooks/index.d.ts +65 -0
  650. package/dist/v2/hooks/index.d.ts.map +1 -1
  651. package/dist/v2/hooks/index.js +63 -24
  652. package/dist/v2/hooks/index.js.map +1 -1
  653. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  654. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  655. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  656. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  657. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  658. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  659. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  660. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  661. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  662. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  663. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  664. package/dist/v2/hooks/useDensity.js +14 -18
  665. package/dist/v2/hooks/useDensity.js.map +1 -1
  666. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  667. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  668. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  669. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  670. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  671. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  672. package/dist/v2/hooks/useFocusTrap.js +20 -24
  673. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  674. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  675. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  676. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  677. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  678. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  679. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  680. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  681. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  682. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  683. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  684. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  685. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  687. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  688. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  689. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  690. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  691. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  692. package/dist/v2/hooks/useSortedRows.js +4 -6
  693. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  694. package/dist/v2/hooks/useTabLoading.js +7 -22
  695. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  696. package/dist/v2/index.d.ts.map +1 -1
  697. package/dist/v2/index.js +143 -145
  698. package/dist/v2/index.js.map +1 -1
  699. package/dist/v2/modalContext.js +2 -2
  700. package/dist/v2/modalContext.js.map +1 -1
  701. package/dist/v2/models/favorite.d.ts +8 -9
  702. package/dist/v2/models/favorite.d.ts.map +1 -1
  703. package/dist/v2/models/favorite.js.map +1 -1
  704. package/dist/v2/models/index.js +4 -4
  705. package/dist/v2/models/index.js.map +1 -1
  706. package/dist/v2/models/personalization.d.ts +44 -48
  707. package/dist/v2/models/personalization.d.ts.map +1 -1
  708. package/dist/v2/models/personalization.js.map +1 -1
  709. package/dist/v2/models/referentiel.d.ts +32 -50
  710. package/dist/v2/models/referentiel.d.ts.map +1 -1
  711. package/dist/v2/models/referentiel.js.map +1 -1
  712. package/dist/v2/models/savedFilter.d.ts +8 -17
  713. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  714. package/dist/v2/models/savedFilter.js.map +1 -1
  715. package/dist/v2/patterns/ActionBar.js +152 -187
  716. package/dist/v2/patterns/ActionBar.js.map +1 -1
  717. package/dist/v2/patterns/AppMain.d.ts +109 -0
  718. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  719. package/dist/v2/patterns/AppMain.js +115 -0
  720. package/dist/v2/patterns/AppMain.js.map +1 -0
  721. package/dist/v2/patterns/BulkActionBar.js +40 -42
  722. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  723. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  724. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  725. package/dist/v2/patterns/ChartFigure.js +159 -0
  726. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  727. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  728. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  729. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  730. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  731. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGrid.js +262 -297
  733. package/dist/v2/patterns/DataGrid.js.map +1 -1
  734. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  735. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  736. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  737. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  738. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  739. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  740. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  741. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  742. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  743. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  744. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  745. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  746. package/dist/v2/patterns/DetailSplit.js +116 -0
  747. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  748. package/dist/v2/patterns/FavoriteColumn.d.ts +9 -9
  749. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  750. package/dist/v2/patterns/FavoriteColumn.js +32 -80
  751. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  752. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  753. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  754. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  755. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  756. package/dist/v2/patterns/FilterTabBar.js +120 -0
  757. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  758. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  759. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  760. package/dist/v2/patterns/FormPageShell.js +53 -50
  761. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  762. package/dist/v2/patterns/FormSection.d.ts +8 -3
  763. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormSection.js +44 -51
  765. package/dist/v2/patterns/FormSection.js.map +1 -1
  766. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  767. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  768. package/dist/v2/patterns/FormikCheckbox.js +138 -0
  769. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  770. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  771. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  772. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  773. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  774. package/dist/v2/patterns/FormikCombobox.d.ts +7 -1
  775. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  776. package/dist/v2/patterns/FormikCombobox.js +55 -69
  777. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  778. package/dist/v2/patterns/FormikDatePicker.d.ts +13 -1
  779. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikDatePicker.js +59 -106
  781. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  782. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  783. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  784. package/dist/v2/patterns/FormikDateTimePicker.js +144 -0
  785. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  786. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  787. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  788. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  789. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  790. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  791. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  792. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  793. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  794. package/dist/v2/patterns/FormikFile.js +99 -83
  795. package/dist/v2/patterns/FormikFile.js.map +1 -1
  796. package/dist/v2/patterns/FormikInput.d.ts +11 -1
  797. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  798. package/dist/v2/patterns/FormikInput.js +45 -55
  799. package/dist/v2/patterns/FormikInput.js.map +1 -1
  800. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  801. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  802. package/dist/v2/patterns/FormikRadioGroup.js +137 -0
  803. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  804. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  805. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  807. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/FormikSelect.d.ts +9 -1
  809. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  810. package/dist/v2/patterns/FormikSelect.js +70 -89
  811. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  812. package/dist/v2/patterns/FormikTextarea.d.ts +9 -1
  813. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  814. package/dist/v2/patterns/FormikTextarea.js +35 -48
  815. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  816. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +14 -1
  817. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  818. package/dist/v2/patterns/KeyboardShortcutsHelp.js +71 -74
  819. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  820. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  821. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  822. package/dist/v2/patterns/PageContent.js +17 -20
  823. package/dist/v2/patterns/PageContent.js.map +1 -1
  824. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  825. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  826. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  827. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  828. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  829. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  830. package/dist/v2/patterns/ReferentielField.js +347 -327
  831. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  832. package/dist/v2/patterns/RowFavoriteToggle.d.ts +98 -0
  833. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  834. package/dist/v2/patterns/RowFavoriteToggle.js +135 -0
  835. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  836. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  837. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  838. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  839. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  840. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  841. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  842. package/dist/v2/patterns/SortableHeader.js +35 -57
  843. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  844. package/dist/v2/patterns/Tour.js +121 -142
  845. package/dist/v2/patterns/Tour.js.map +1 -1
  846. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  847. package/dist/v2/patterns/_dataGridShared.js +131 -147
  848. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  849. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  850. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  851. package/dist/v2/patterns/_pickerSerialisation.js +80 -0
  852. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  853. package/dist/v2/patterns/_sort.js +17 -33
  854. package/dist/v2/patterns/_sort.js.map +1 -1
  855. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  856. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  857. package/dist/v2/patterns/_useColumnResize.js +80 -99
  858. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  859. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  860. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  861. package/dist/v2/patterns/filterCriteria.js +110 -0
  862. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  863. package/dist/v2/patterns/index.d.ts +247 -0
  864. package/dist/v2/patterns/index.d.ts.map +1 -1
  865. package/dist/v2/patterns/index.js +182 -70
  866. package/dist/v2/patterns/index.js.map +1 -1
  867. package/dist/v2/patterns/rowActions.d.ts +150 -0
  868. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  869. package/dist/v2/patterns/rowActions.js +232 -0
  870. package/dist/v2/patterns/rowActions.js.map +1 -0
  871. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  872. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  873. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  874. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  875. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  876. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  877. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  878. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  879. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  880. package/dist/v2/personalization/adapters/index.js +5 -5
  881. package/dist/v2/personalization/adapters/index.js.map +1 -1
  882. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  883. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  884. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  885. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  886. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  887. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  888. package/dist/v2/personalization/capabilities/gridPreferences.js +210 -0
  889. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  890. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  891. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  892. package/dist/v2/personalization/capabilities/index.js +23 -10
  893. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  894. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  895. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  896. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  897. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  898. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  899. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  900. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  901. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  902. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  903. package/dist/v2/personalization/index.d.ts +34 -0
  904. package/dist/v2/personalization/index.d.ts.map +1 -1
  905. package/dist/v2/personalization/index.js +41 -21
  906. package/dist/v2/personalization/index.js.map +1 -1
  907. package/dist/v2/personalization/personalizationContext.js +10 -12
  908. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  909. package/dist/v2/personalization/schema.js +8 -9
  910. package/dist/v2/personalization/schema.js.map +1 -1
  911. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  912. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  913. package/dist/v2/referentiel/index.js +11 -13
  914. package/dist/v2/referentiel/index.js.map +1 -1
  915. package/dist/v2/referentiel/types.d.ts +105 -0
  916. package/dist/v2/referentiel/types.d.ts.map +1 -0
  917. package/dist/v2/referentiel/types.js +6 -0
  918. package/dist/v2/referentiel/types.js.map +1 -0
  919. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  920. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  921. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  922. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  923. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  924. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  925. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  926. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  927. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  928. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  929. package/dist/v2/theme/_brand.js +12 -26
  930. package/dist/v2/theme/_brand.js.map +1 -1
  931. package/dist/v2/theme/_brandSecondary.js +12 -26
  932. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  933. package/dist/v2/theme/createPortnetTheme.js +41 -49
  934. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  935. package/dist/v2/theme/cssVariables.d.ts +3 -3
  936. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  937. package/dist/v2/theme/cssVariables.js +65 -70
  938. package/dist/v2/theme/cssVariables.js.map +1 -1
  939. package/dist/v2/theme/index.js +10 -10
  940. package/dist/v2/theme/index.js.map +1 -1
  941. package/dist/v2/tokens/breakpoints.js +16 -16
  942. package/dist/v2/tokens/breakpoints.js.map +1 -1
  943. package/dist/v2/tokens/chart.d.ts +103 -0
  944. package/dist/v2/tokens/chart.d.ts.map +1 -0
  945. package/dist/v2/tokens/chart.js +270 -0
  946. package/dist/v2/tokens/chart.js.map +1 -0
  947. package/dist/v2/tokens/colors.js +24 -24
  948. package/dist/v2/tokens/colors.js.map +1 -1
  949. package/dist/v2/tokens/density.d.ts +104 -0
  950. package/dist/v2/tokens/density.d.ts.map +1 -1
  951. package/dist/v2/tokens/density.js +67 -12
  952. package/dist/v2/tokens/density.js.map +1 -1
  953. package/dist/v2/tokens/index.d.ts +50 -1
  954. package/dist/v2/tokens/index.d.ts.map +1 -1
  955. package/dist/v2/tokens/index.js +116 -68
  956. package/dist/v2/tokens/index.js.map +1 -1
  957. package/dist/v2/tokens/motion.js +16 -22
  958. package/dist/v2/tokens/motion.js.map +1 -1
  959. package/dist/v2/tokens/radius.js +3 -3
  960. package/dist/v2/tokens/radius.js.map +1 -1
  961. package/dist/v2/tokens/shadows.js +8 -8
  962. package/dist/v2/tokens/shadows.js.map +1 -1
  963. package/dist/v2/tokens/spacing.js +4 -4
  964. package/dist/v2/tokens/spacing.js.map +1 -1
  965. package/dist/v2/tokens/state.js +3 -3
  966. package/dist/v2/tokens/state.js.map +1 -1
  967. package/dist/v2/tokens/statusPalette.js +21 -23
  968. package/dist/v2/tokens/statusPalette.js.map +1 -1
  969. package/dist/v2/tokens/tokens.json +6 -1
  970. package/dist/v2/tokens/typography.js +15 -15
  971. package/dist/v2/tokens/typography.js.map +1 -1
  972. package/dist/v2/tokens/zIndex.js +3 -3
  973. package/dist/v2/tokens/zIndex.js.map +1 -1
  974. package/dist/v2/types/datagrid.d.ts +9 -1
  975. package/dist/v2/types/datagrid.d.ts.map +1 -1
  976. package/dist/v2/types/datagrid.js.map +1 -1
  977. package/dist/v2/types/index.js +2 -2
  978. package/dist/v2/types/index.js.map +1 -1
  979. package/dist/v2/utils/apiError.js +16 -37
  980. package/dist/v2/utils/apiError.js.map +1 -1
  981. package/dist/v2/utils/contrast.js +31 -32
  982. package/dist/v2/utils/contrast.js.map +1 -1
  983. package/dist/v2/utils/cx.js +7 -27
  984. package/dist/v2/utils/cx.js.map +1 -1
  985. package/dist/v2/utils/fileDownload.js +25 -28
  986. package/dist/v2/utils/fileDownload.js.map +1 -1
  987. package/dist/v2/utils/fileValidation.d.ts +116 -0
  988. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  989. package/dist/v2/utils/fileValidation.js +220 -0
  990. package/dist/v2/utils/fileValidation.js.map +1 -0
  991. package/dist/v2/utils/fmtDate.d.ts +103 -0
  992. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  993. package/dist/v2/utils/fmtDate.js +119 -0
  994. package/dist/v2/utils/fmtDate.js.map +1 -0
  995. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  996. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  997. package/dist/v2/utils/fmtMoney.js +9 -11
  998. package/dist/v2/utils/fmtMoney.js.map +1 -1
  999. package/dist/v2/utils/formikErrors.d.ts +67 -0
  1000. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  1001. package/dist/v2/utils/formikErrors.js +85 -0
  1002. package/dist/v2/utils/formikErrors.js.map +1 -0
  1003. package/dist/v2/utils/index.d.ts +5 -0
  1004. package/dist/v2/utils/index.d.ts.map +1 -1
  1005. package/dist/v2/utils/index.js +67 -18
  1006. package/dist/v2/utils/index.js.map +1 -1
  1007. package/dist/v2/utils/mergeLabels.js +9 -14
  1008. package/dist/v2/utils/mergeLabels.js.map +1 -1
  1009. package/dist/v2/utils/networkStatus.js +14 -14
  1010. package/dist/v2/utils/networkStatus.js.map +1 -1
  1011. package/package.json +26 -9
@@ -1,15 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
11
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
12
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
13
1
  import * as React from "react";
14
2
  import Box from "@mui/material/Box";
15
3
  import Typography from "@mui/material/Typography";
@@ -27,7 +15,8 @@ import Surface from "../components/Surface";
27
15
  * 2 — two equal columns (narrow forms, few fields, wide labels)
28
16
  * 1 — single column (textareas, file uploads, notes)
29
17
  * "auto" — auto-fill tracks min 220px
30
- * "none" — no grid wrapper — children manage their own layout.
18
+ * "none" — no grid wrapper — children manage their own layout, stacked in
19
+ * a flex column with `gap` (default --s-4).
31
20
  * Use for: KVGrid, DataGrid, nested FormGrid.
32
21
  *
33
22
  * Full-width items within a 3-col section:
@@ -47,9 +36,7 @@ import Surface from "../components/Surface";
47
36
  * </FormSection>
48
37
  */
49
38
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
50
- var DEFAULT_SR_LABEL = function DEFAULT_SR_LABEL(n) {
51
- return "Section ".concat(n, " : ");
52
- };
39
+ const DEFAULT_SR_LABEL = n => `Section ${n} : `;
53
40
  function resolveGridProps(cols) {
54
41
  if (!cols || cols === "none") return null;
55
42
  if (cols === "auto") return {
@@ -60,22 +47,20 @@ function resolveGridProps(cols) {
60
47
  };
61
48
  return null;
62
49
  }
63
- function FormSection(_ref) {
64
- var number = _ref.number,
65
- title = _ref.title,
66
- description = _ref.description,
67
- actions = _ref.actions,
68
- _ref$srLabel = _ref.srLabel,
69
- srLabel = _ref$srLabel === void 0 ? DEFAULT_SR_LABEL : _ref$srLabel,
70
- _ref$headingLevel = _ref.headingLevel,
71
- headingLevel = _ref$headingLevel === void 0 ? 2 : _ref$headingLevel,
72
- _ref$cols = _ref.cols,
73
- cols = _ref$cols === void 0 ? 3 : _ref$cols,
74
- gap = _ref.gap,
75
- children = _ref.children,
76
- sx = _ref.sx;
77
- var HeadingTag = "h".concat(headingLevel);
78
- var gridProps = resolveGridProps(cols);
50
+ function FormSection({
51
+ number,
52
+ title,
53
+ description,
54
+ actions,
55
+ srLabel = DEFAULT_SR_LABEL,
56
+ headingLevel = 2,
57
+ cols = 3,
58
+ gap,
59
+ children,
60
+ sx
61
+ }) {
62
+ const HeadingTag = `h${headingLevel}`;
63
+ const gridProps = resolveGridProps(cols);
79
64
  return (
80
65
  /*#__PURE__*/
81
66
  /*
@@ -100,7 +85,7 @@ function FormSection(_ref) {
100
85
  * everything. Surface forwards the array through to its own composition. */,
101
86
  sx: [{
102
87
  marginBottom: 3
103
- }].concat(_toConsumableArray(Array.isArray(sx) ? sx : sx ? [sx] : [])),
88
+ }, ...(Array.isArray(sx) ? sx : sx ? [sx] : [])],
104
89
  children: [/*#__PURE__*/_jsxs(Box, {
105
90
  sx: {
106
91
  padding: "var(--s-4) var(--s-5)",
@@ -169,7 +154,12 @@ function FormSection(_ref) {
169
154
  }), actions]
170
155
  }), /*#__PURE__*/_jsx(Box, {
171
156
  sx: {
172
- padding: "var(--s-5)"
157
+ padding: "var(--s-5)",
158
+ ...(gridProps ? null : {
159
+ display: "flex",
160
+ flexDirection: "column",
161
+ gap: gap ?? "var(--s-4)"
162
+ })
173
163
  },
174
164
  children: gridProps ?
175
165
  /*#__PURE__*/
@@ -177,11 +167,13 @@ function FormSection(_ref) {
177
167
  * declares it optional, and forwarding an explicit `undefined` is
178
168
  * what breaks under exactOptionalPropertyTypes. Omitting the key is
179
169
  * what "inherit the charter default" means. */
180
- _jsx(FormGrid, _objectSpread(_objectSpread(_objectSpread({}, gridProps), gap !== undefined ? {
181
- gap: gap
182
- } : {}), {}, {
170
+ _jsx(FormGrid, {
171
+ ...gridProps,
172
+ ...(gap !== undefined ? {
173
+ gap
174
+ } : {}),
183
175
  children: children
184
- })) : children
176
+ }) : children
185
177
  })]
186
178
  })
187
179
  );
@@ -1 +1 @@
1
- {"version":3,"file":"FormSection.js","names":["React","Box","Typography","FormGrid","Surface","jsx","_jsx","jsxs","_jsxs","DEFAULT_SR_LABEL","n","concat","resolveGridProps","cols","minColumnWidth","columns","FormSection","_ref","number","title","description","actions","_ref$srLabel","srLabel","_ref$headingLevel","headingLevel","_ref$cols","gap","children","sx","HeadingTag","gridProps","padding","elevation","radius","marginBottom","_toConsumableArray","Array","isArray","borderBottom","display","alignItems","justifyContent","flex","minWidth","flexShrink","width","height","borderRadius","background","color","placeItems","fontSize","fontWeight","component","lineHeight","margin","className","marginTop","_objectSpread","undefined"],"sources":["../../../../src/lib/v2/patterns/FormSection.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport FormGrid from \"../components/FormGrid\";\r\nimport Surface from \"../components/Surface\";\r\n\r\n/**\r\n * FormSection - Portnet UI v2 (pattern)\r\n *\r\n * Charter R-3.1 — groups form fields into named, numbered sections.\r\n * Charter R-3.2 — 3-column grid is the standard for form sections.\r\n *\r\n * cols (default 3):\r\n * 3 — three equal columns (DEFAULT — standard form layout)\r\n * 2 — two equal columns (narrow forms, few fields, wide labels)\r\n * 1 — single column (textareas, file uploads, notes)\r\n * \"auto\" — auto-fill tracks min 220px\r\n * \"none\" — no grid wrapper — children manage their own layout.\r\n * Use for: KVGrid, DataGrid, nested FormGrid.\r\n *\r\n * Full-width items within a 3-col section:\r\n * <FormGrid.Full><FormikTextarea name=\"obs\" /></FormGrid.Full>\r\n *\r\n * Usage:\r\n * // Standard form section — 3 cols (no need to specify)\r\n * <FormSection number={1} title=\"Identification\">\r\n * <FormikInput name=\"nom\" label=\"Nom\" />\r\n * <FormikInput name=\"prenom\" label=\"Prénom\" />\r\n * <FormikInput name=\"code\" label=\"Code\" />\r\n * </FormSection>\r\n *\r\n * // Read-only section — self-managed layout\r\n * <FormSection title=\"Importateur\" cols=\"none\">\r\n * <KVGrid minColumnWidth={180}>...</KVGrid>\r\n * </FormSection>\r\n */\r\n\r\nexport interface FormSectionProps {\r\n number?: number | string | undefined;\r\n title: React.ReactNode;\r\n description?: React.ReactNode | undefined;\r\n actions?: React.ReactNode | undefined;\r\n srLabel?: ((n: number | string) => React.ReactNode) | undefined;\r\n headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;\r\n /**\r\n * cols — Charter R-3.2 field layout.\r\n * 3 (DEFAULT) : 3 equal columns — standard form layout.\r\n * 2 | 1 : fewer columns for narrow/simple forms.\r\n * \"auto\" : auto-fill tracks min 220px.\r\n * \"none\" : no grid wrapper — children manage own layout.\r\n */\r\n cols?: number | \"auto\" | \"none\" | undefined;\r\n /**\r\n * Gap forwarded to the inner `FormGrid`. Omit to inherit the charter default\r\n * (`--s-4`). Ignored when `cols=\"none\"`, where the child owns its layout.\r\n *\r\n * Added for gap G-13: `FormSection` wrapped its children in a `FormGrid` but\r\n * exposed no way to set that grid's gap, so a section needing a non-default\r\n * spacing had to abandon `cols` entirely and nest its own `FormGrid` — or,\r\n * as every audited module actually did, hand-roll a raw `Box` grid and\r\n * reimplement the breakpoint ladder.\r\n */\r\n gap?: string | number | undefined;\r\n children: React.ReactNode;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DEFAULT_SR_LABEL = (n: number | string): string => `Section ${n} : `;\r\n\r\nfunction resolveGridProps(\r\n cols: number | \"auto\" | \"none\" | undefined\r\n): { minColumnWidth: number } | { columns: number } | null {\r\n if (!cols || cols === \"none\") return null;\r\n if (cols === \"auto\") return { minColumnWidth: 220 };\r\n if (typeof cols === \"number\") return { columns: cols };\r\n return null;\r\n}\r\n\r\nfunction FormSection({\r\n number,\r\n title,\r\n description,\r\n actions,\r\n srLabel = DEFAULT_SR_LABEL,\r\n headingLevel = 2,\r\n cols = 3,\r\n gap,\r\n children,\r\n sx,\r\n}: FormSectionProps) {\r\n const HeadingTag = `h${headingLevel}` as const;\r\n const gridProps = resolveGridProps(cols);\r\n\r\n return (\r\n /*\r\n * The card container is the shared `Surface` primitive (gap G-10), not an\r\n * inline recipe. This component USED to hold the only copy of\r\n * --surface + --border + -r-lg in the library, which is precisely why every\r\n * consuming module rewrote it: the recipe was reachable only by also taking\r\n * a numbered heading and an inner FormGrid. Dogfooding it here means a\r\n * charter change to the card radius or elevation lands in ONE file.\r\n *\r\n * `padding=\"none\"` / `elevation=\"none\"` reproduce the previous rendering\r\n * byte for byte: FormSection pads its header and body separately, and never\r\n * carried a shadow.\r\n */\r\n <Surface\r\n padding=\"none\"\r\n elevation=\"none\"\r\n radius=\"lg\"\r\n /* ARRAY form (gap G-23). This line previously spread `sx` into an object,\r\n * which silently destroys the array and function shapes `SxProps<Theme>`\r\n * allows — so a host writing MUI's own `sx={[base, cond && override]}` lost\r\n * everything. Surface forwards the array through to its own composition. */\r\n sx={[{ marginBottom: 3 }, ...(Array.isArray(sx) ? sx : sx ? [sx] : [])]}\r\n >\r\n {/* Section header */}\r\n <Box\r\n sx={{\r\n padding: \"var(--s-4) var(--s-5)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: 2,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 2,\r\n alignItems: \"flex-start\",\r\n flex: 1,\r\n minWidth: 0,\r\n }}\r\n >\r\n {number != null && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n flexShrink: 0,\r\n width: 28,\r\n height: 28,\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--accent-soft)\",\r\n color: \"var(--accent)\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n }}\r\n >\r\n {number}\r\n </Box>\r\n )}\r\n <Box sx={{ minWidth: 0 }}>\r\n <Typography\r\n component={HeadingTag}\r\n sx={{\r\n /* R-2.3 / R-AI.1 MUST — was a bare `15`, a magic font-size no\r\n * token can express (the type scale is 12/13/14/16/20/26).\r\n * The Charter's own typography table assigns --text-h3 (16px)\r\n * to \"Card / form group\" titles, which is exactly what a\r\n * FormSection header is. Fleet-wide 15→16px on section\r\n * headers — needs visual confirmation, but 15 could not\r\n * remain: it is unrepresentable in the token system. */\r\n fontSize: \"var(--text-h3)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n margin: 0,\r\n }}\r\n >\r\n {number != null && (\r\n <span className=\"pui-sr-only\">{srLabel(number)}</span>\r\n )}\r\n {title}\r\n </Typography>\r\n {description && (\r\n <Typography\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: 0.25,\r\n }}\r\n >\r\n {description}\r\n </Typography>\r\n )}\r\n </Box>\r\n </Box>\r\n {actions}\r\n </Box>\r\n\r\n {/* Section body */}\r\n <Box sx={{ padding: \"var(--s-5)\" }}>\r\n {gridProps ? (\r\n /* `gap` applied by CONDITIONAL SPREAD, not `gap={gap}`: FormGridProps\r\n * declares it optional, and forwarding an explicit `undefined` is\r\n * what breaks under exactOptionalPropertyTypes. Omitting the key is\r\n * what \"inherit the charter default\" means. */\r\n <FormGrid {...gridProps} {...(gap !== undefined ? { gap } : {})}>\r\n {children}\r\n </FormGrid>\r\n ) : (\r\n children\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FormSection;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FormSection.js","names":["React","Box","Typography","FormGrid","Surface","jsx","_jsx","jsxs","_jsxs","DEFAULT_SR_LABEL","n","resolveGridProps","cols","minColumnWidth","columns","FormSection","number","title","description","actions","srLabel","headingLevel","gap","children","sx","HeadingTag","gridProps","padding","elevation","radius","marginBottom","Array","isArray","borderBottom","display","alignItems","justifyContent","flex","minWidth","flexShrink","width","height","borderRadius","background","color","placeItems","fontSize","fontWeight","component","lineHeight","margin","className","marginTop","flexDirection","undefined"],"sources":["../../../../src/lib/v2/patterns/FormSection.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Typography from \"@mui/material/Typography\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport FormGrid from \"../components/FormGrid\";\r\nimport Surface from \"../components/Surface\";\r\n\r\n/**\r\n * FormSection - Portnet UI v2 (pattern)\r\n *\r\n * Charter R-3.1 — groups form fields into named, numbered sections.\r\n * Charter R-3.2 — 3-column grid is the standard for form sections.\r\n *\r\n * cols (default 3):\r\n * 3 — three equal columns (DEFAULT — standard form layout)\r\n * 2 — two equal columns (narrow forms, few fields, wide labels)\r\n * 1 — single column (textareas, file uploads, notes)\r\n * \"auto\" — auto-fill tracks min 220px\r\n * \"none\" — no grid wrapper — children manage their own layout, stacked in\r\n * a flex column with `gap` (default --s-4).\r\n * Use for: KVGrid, DataGrid, nested FormGrid.\r\n *\r\n * Full-width items within a 3-col section:\r\n * <FormGrid.Full><FormikTextarea name=\"obs\" /></FormGrid.Full>\r\n *\r\n * Usage:\r\n * // Standard form section — 3 cols (no need to specify)\r\n * <FormSection number={1} title=\"Identification\">\r\n * <FormikInput name=\"nom\" label=\"Nom\" />\r\n * <FormikInput name=\"prenom\" label=\"Prénom\" />\r\n * <FormikInput name=\"code\" label=\"Code\" />\r\n * </FormSection>\r\n *\r\n * // Read-only section — self-managed layout\r\n * <FormSection title=\"Importateur\" cols=\"none\">\r\n * <KVGrid minColumnWidth={180}>...</KVGrid>\r\n * </FormSection>\r\n */\r\n\r\nexport interface FormSectionProps {\r\n number?: number | string | undefined;\r\n title: React.ReactNode;\r\n description?: React.ReactNode | undefined;\r\n actions?: React.ReactNode | undefined;\r\n srLabel?: ((n: number | string) => React.ReactNode) | undefined;\r\n headingLevel?: 2 | 3 | 4 | 5 | 6 | undefined;\r\n /**\r\n * cols — Charter R-3.2 field layout.\r\n * 3 (DEFAULT) : 3 equal columns — standard form layout.\r\n * 2 | 1 : fewer columns for narrow/simple forms.\r\n * \"auto\" : auto-fill tracks min 220px.\r\n * \"none\" : no grid wrapper — children manage own layout.\r\n */\r\n cols?: number | \"auto\" | \"none\" | undefined;\r\n /**\r\n * Gap between the section's children. Forwarded to the inner `FormGrid`\r\n * when `cols` is a grid preset; applied to the body's own flex column when\r\n * `cols=\"none\"`. Omit to inherit the charter default (`--s-4`).\r\n *\r\n * Added for gap G-13: `FormSection` wrapped its children in a `FormGrid` but\r\n * exposed no way to set that grid's gap, so a section needing a non-default\r\n * spacing had to abandon `cols` entirely and nest its own `FormGrid` — or,\r\n * as every audited module actually did, hand-roll a raw `Box` grid and\r\n * reimplement the breakpoint ladder.\r\n *\r\n * Extended for gap G-47: it used to be IGNORED under `cols=\"none\"`, where\r\n * the body was a bare padded box. See the body note below.\r\n */\r\n gap?: string | number | undefined;\r\n children: React.ReactNode;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DEFAULT_SR_LABEL = (n: number | string): string => `Section ${n} : `;\r\n\r\nfunction resolveGridProps(\r\n cols: number | \"auto\" | \"none\" | undefined\r\n): { minColumnWidth: number } | { columns: number } | null {\r\n if (!cols || cols === \"none\") return null;\r\n if (cols === \"auto\") return { minColumnWidth: 220 };\r\n if (typeof cols === \"number\") return { columns: cols };\r\n return null;\r\n}\r\n\r\nfunction FormSection({\r\n number,\r\n title,\r\n description,\r\n actions,\r\n srLabel = DEFAULT_SR_LABEL,\r\n headingLevel = 2,\r\n cols = 3,\r\n gap,\r\n children,\r\n sx,\r\n}: FormSectionProps) {\r\n const HeadingTag = `h${headingLevel}` as const;\r\n const gridProps = resolveGridProps(cols);\r\n\r\n return (\r\n /*\r\n * The card container is the shared `Surface` primitive (gap G-10), not an\r\n * inline recipe. This component USED to hold the only copy of\r\n * --surface + --border + -r-lg in the library, which is precisely why every\r\n * consuming module rewrote it: the recipe was reachable only by also taking\r\n * a numbered heading and an inner FormGrid. Dogfooding it here means a\r\n * charter change to the card radius or elevation lands in ONE file.\r\n *\r\n * `padding=\"none\"` / `elevation=\"none\"` reproduce the previous rendering\r\n * byte for byte: FormSection pads its header and body separately, and never\r\n * carried a shadow.\r\n */\r\n <Surface\r\n padding=\"none\"\r\n elevation=\"none\"\r\n radius=\"lg\"\r\n /* ARRAY form (gap G-23). This line previously spread `sx` into an object,\r\n * which silently destroys the array and function shapes `SxProps<Theme>`\r\n * allows — so a host writing MUI's own `sx={[base, cond && override]}` lost\r\n * everything. Surface forwards the array through to its own composition. */\r\n sx={[{ marginBottom: 3 }, ...(Array.isArray(sx) ? sx : sx ? [sx] : [])]}\r\n >\r\n {/* Section header */}\r\n <Box\r\n sx={{\r\n padding: \"var(--s-4) var(--s-5)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: 2,\r\n }}\r\n >\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n gap: 2,\r\n alignItems: \"flex-start\",\r\n flex: 1,\r\n minWidth: 0,\r\n }}\r\n >\r\n {number != null && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n flexShrink: 0,\r\n width: 28,\r\n height: 28,\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--accent-soft)\",\r\n color: \"var(--accent)\",\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n }}\r\n >\r\n {number}\r\n </Box>\r\n )}\r\n <Box sx={{ minWidth: 0 }}>\r\n <Typography\r\n component={HeadingTag}\r\n sx={{\r\n /* R-2.3 / R-AI.1 MUST — was a bare `15`, a magic font-size no\r\n * token can express (the type scale is 12/13/14/16/20/26).\r\n * The Charter's own typography table assigns --text-h3 (16px)\r\n * to \"Card / form group\" titles, which is exactly what a\r\n * FormSection header is. Fleet-wide 15→16px on section\r\n * headers — needs visual confirmation, but 15 could not\r\n * remain: it is unrepresentable in the token system. */\r\n fontSize: \"var(--text-h3)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n margin: 0,\r\n }}\r\n >\r\n {number != null && (\r\n <span className=\"pui-sr-only\">{srLabel(number)}</span>\r\n )}\r\n {title}\r\n </Typography>\r\n {description && (\r\n <Typography\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-muted)\",\r\n marginTop: 0.25,\r\n }}\r\n >\r\n {description}\r\n </Typography>\r\n )}\r\n </Box>\r\n </Box>\r\n {actions}\r\n </Box>\r\n\r\n {/* Section body\r\n *\r\n * GAP UNDER `cols=\"none\"` (gap G-47). This was a bare padded box, so a\r\n * section whose children manage their own layout had NO spacing between\r\n * them — and the only tool left to the host was a margin on the second\r\n * child, which R-S.2 (MUST) forbids: \"Utiliser flex/grid + gap ; jamais\r\n * d'espacement par margin sur sibling adjacent\". The library was\r\n * therefore forcing every read-only or mixed section in the fleet into a\r\n * charter violation; `refonte-frontend`'s Area 7 audit counted 3 uses of\r\n * `gap` against ~30 sibling margins, most of them here.\r\n *\r\n * A flex column is a no-op for the single-child case (one KVGrid, one\r\n * DataGrid — the majority), and supplies the missing rhythm as soon as\r\n * there are two. `gap` is now honoured here too, which is what its own\r\n * doc above promised and did not deliver. */}\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5)\",\r\n ...(gridProps\r\n ? null\r\n : {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: gap ?? \"var(--s-4)\",\r\n }),\r\n }}\r\n >\r\n {gridProps ? (\r\n /* `gap` applied by CONDITIONAL SPREAD, not `gap={gap}`: FormGridProps\r\n * declares it optional, and forwarding an explicit `undefined` is\r\n * what breaks under exactOptionalPropertyTypes. Omitting the key is\r\n * what \"inherit the charter default\" means. */\r\n <FormGrid {...gridProps} {...(gap !== undefined ? { gap } : {})}>\r\n {children}\r\n </FormGrid>\r\n ) : (\r\n children\r\n )}\r\n </Box>\r\n </Surface>\r\n );\r\n}\r\n\r\nexport default FormSection;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * FormikCheckbox — bridge between Formik state and v2.Field + v2.Checkbox,
3
+ * for a SINGLE BOOLEAN field.
4
+ *
5
+ * ── WHY THIS EXISTS ALONGSIDE FormikCheckboxGroup (gap G-A) ──────────
6
+ *
7
+ * `FormikCheckboxGroup` holds an ARRAY of selected values. That is the right
8
+ * model for "pick several from a list", and the wrong one for a lone flag:
9
+ *
10
+ * autreInfo.fabrication -> boolean
11
+ * objectDeclaration.premiereDeclaration -> boolean
12
+ *
13
+ * A host with boolean-shaped state cannot adopt the group bridge without
14
+ * changing what its payload sends, so every module ended up re-wiring
15
+ * `Checkbox` + `useField` by hand — the exact duplication R-2.1 forbids, and
16
+ * the one place where it hurts most: hand-rolled bridges lose the error
17
+ * rendering. Reported from refonte-frontend (lot 5), whose local masked/checked
18
+ * inputs displayed no validation message at all, so a required-field error was
19
+ * invisible to the user (R-4.1 MUST).
20
+ *
21
+ * Usage:
22
+ *
23
+ * import { FormikCheckbox } from "@portnet/ui/lib/v2";
24
+ *
25
+ * <FormikCheckbox
26
+ * name="autreInfo.fabrication"
27
+ * label="Fabrication"
28
+ * />
29
+ *
30
+ * <FormikCheckbox
31
+ * name="conditions"
32
+ * label="J'accepte les conditions"
33
+ * required
34
+ * hint="Obligatoire pour soumettre la demande"
35
+ * />
36
+ *
37
+ * ── WHY THE CHECKBOX IS WRAPPED IN A CheckboxGroup ──────────────────
38
+ *
39
+ * `Field` clones its child with `error` and `disabled` props, because several
40
+ * v2 inputs read them directly. `MuiCheckbox` spreads unknown props down to
41
+ * the native `<input>`, so a bare `Checkbox` inside `Field` would emit
42
+ * `error="false"` onto the DOM (React warning, invalid attribute).
43
+ * `CheckboxGroup` destructures its props explicitly and drops the rest, and it
44
+ * forwards the ARIA grouping attributes `Field` injects. Same composition as
45
+ * `FormikCheckboxGroup`, for the same reason.
46
+ *
47
+ * ── LABEL AND REQUIRED ──────────────────────────────────────────────
48
+ *
49
+ * The label belongs to the CHECKBOX (rendered by `FormControlLabel`, which
50
+ * names the input implicitly), not above the field: a lone checkbox with a
51
+ * field label AND a control label reads as two questions. `Field` therefore
52
+ * receives no label, and `required` is expressed twice where it counts —
53
+ * visually by the asterisk appended to the control label, and to assistive
54
+ * technology by `aria-required` on the input itself (`Field`'s own injection
55
+ * lands on the group, which does not forward it).
56
+ *
57
+ * Errors surface only once the field is touched, and toggling marks it touched
58
+ * — same semantics as `FormikCheckboxGroup`. A checkbox has no meaningful
59
+ * blur-before-change, so waiting for a blur would keep the message hidden.
60
+ *
61
+ * Charter §03 · R-I.2, R-I.3, R-4.1. Peer dependency: formik >= 2.x.
62
+ */
63
+
64
+ import * as React from "react";
65
+ import Box from "@mui/material/Box";
66
+ import { useField, useFormikContext } from "formik";
67
+ import Field from "../components/Field";
68
+ import { Checkbox, CheckboxGroup } from "../components/Checkbox";
69
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
70
+ const FormikCheckbox = ({
71
+ name,
72
+ label,
73
+ required,
74
+ disabled,
75
+ hint,
76
+ inputProps
77
+ }) => {
78
+ const [field, meta] = useField(name);
79
+ const {
80
+ setFieldValue,
81
+ setFieldTouched
82
+ } = useFormikContext();
83
+ const hasError = Boolean(meta.touched && meta.error);
84
+ const handleChange = event => {
85
+ setFieldValue(name, event.target.checked);
86
+ setFieldTouched(name, true, false);
87
+ };
88
+
89
+ /* `=== true` and not a truthy test: hosts seed these fields with `null`
90
+ * (a not-yet-answered flag), and `checked={null}` makes the input
91
+ * uncontrolled for one render. */
92
+ const checked = field.value === true;
93
+ const controlLabel = required ? /*#__PURE__*/_jsxs(_Fragment, {
94
+ children: [label, /*#__PURE__*/_jsx(Box, {
95
+ component: "span",
96
+ "aria-hidden": "true",
97
+ sx: {
98
+ color: "var(--danger)",
99
+ fontWeight: "var(--fw-bold, 700)",
100
+ marginInlineStart: "var(--s-1)"
101
+ },
102
+ children: "*"
103
+ })]
104
+ }) : label;
105
+ return /*#__PURE__*/_jsx(Field, {
106
+ error: hasError ? meta.error : null,
107
+ hint: !hasError ? hint : undefined,
108
+ group: true,
109
+ ...(disabled !== undefined ? {
110
+ disabled
111
+ } : {}),
112
+ children: /*#__PURE__*/_jsx(CheckboxGroup, {
113
+ children: /*#__PURE__*/_jsx(Checkbox, {
114
+ name: name,
115
+ label: controlLabel,
116
+ checked: checked,
117
+ onChange: handleChange,
118
+ disabled: disabled,
119
+ inputProps: {
120
+ ...(required ? {
121
+ "aria-required": "true"
122
+ } : {}),
123
+ ...inputProps
124
+ }
125
+ })
126
+ })
127
+ });
128
+ };
129
+ export default FormikCheckbox;
130
+ //# sourceMappingURL=FormikCheckbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormikCheckbox.js","names":["React","Box","useField","useFormikContext","Field","Checkbox","CheckboxGroup","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","FormikCheckbox","name","label","required","disabled","hint","inputProps","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","handleChange","event","target","checked","value","controlLabel","children","component","sx","color","fontWeight","marginInlineStart","undefined","group","onChange"],"sources":["../../../../src/lib/v2/patterns/FormikCheckbox.tsx"],"sourcesContent":["/**\r\n * FormikCheckbox — bridge between Formik state and v2.Field + v2.Checkbox,\r\n * for a SINGLE BOOLEAN field.\r\n *\r\n * ── WHY THIS EXISTS ALONGSIDE FormikCheckboxGroup (gap G-A) ──────────\r\n *\r\n * `FormikCheckboxGroup` holds an ARRAY of selected values. That is the right\r\n * model for \"pick several from a list\", and the wrong one for a lone flag:\r\n *\r\n * autreInfo.fabrication -> boolean\r\n * objectDeclaration.premiereDeclaration -> boolean\r\n *\r\n * A host with boolean-shaped state cannot adopt the group bridge without\r\n * changing what its payload sends, so every module ended up re-wiring\r\n * `Checkbox` + `useField` by hand — the exact duplication R-2.1 forbids, and\r\n * the one place where it hurts most: hand-rolled bridges lose the error\r\n * rendering. Reported from refonte-frontend (lot 5), whose local masked/checked\r\n * inputs displayed no validation message at all, so a required-field error was\r\n * invisible to the user (R-4.1 MUST).\r\n *\r\n * Usage:\r\n *\r\n * import { FormikCheckbox } from \"@portnet/ui/lib/v2\";\r\n *\r\n * <FormikCheckbox\r\n * name=\"autreInfo.fabrication\"\r\n * label=\"Fabrication\"\r\n * />\r\n *\r\n * <FormikCheckbox\r\n * name=\"conditions\"\r\n * label=\"J'accepte les conditions\"\r\n * required\r\n * hint=\"Obligatoire pour soumettre la demande\"\r\n * />\r\n *\r\n * ── WHY THE CHECKBOX IS WRAPPED IN A CheckboxGroup ──────────────────\r\n *\r\n * `Field` clones its child with `error` and `disabled` props, because several\r\n * v2 inputs read them directly. `MuiCheckbox` spreads unknown props down to\r\n * the native `<input>`, so a bare `Checkbox` inside `Field` would emit\r\n * `error=\"false\"` onto the DOM (React warning, invalid attribute).\r\n * `CheckboxGroup` destructures its props explicitly and drops the rest, and it\r\n * forwards the ARIA grouping attributes `Field` injects. Same composition as\r\n * `FormikCheckboxGroup`, for the same reason.\r\n *\r\n * ── LABEL AND REQUIRED ──────────────────────────────────────────────\r\n *\r\n * The label belongs to the CHECKBOX (rendered by `FormControlLabel`, which\r\n * names the input implicitly), not above the field: a lone checkbox with a\r\n * field label AND a control label reads as two questions. `Field` therefore\r\n * receives no label, and `required` is expressed twice where it counts —\r\n * visually by the asterisk appended to the control label, and to assistive\r\n * technology by `aria-required` on the input itself (`Field`'s own injection\r\n * lands on the group, which does not forward it).\r\n *\r\n * Errors surface only once the field is touched, and toggling marks it touched\r\n * — same semantics as `FormikCheckboxGroup`. A checkbox has no meaningful\r\n * blur-before-change, so waiting for a blur would keep the message hidden.\r\n *\r\n * Charter §03 · R-I.2, R-I.3, R-4.1. Peer dependency: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport { Checkbox, CheckboxGroup } from \"../components/Checkbox\";\r\n\r\nexport interface FormikCheckboxProps {\r\n name: string;\r\n /** Label rendered next to the checkbox — it names the control. */\r\n label?: React.ReactNode | undefined;\r\n /** Adds the asterisk on the label and `aria-required` on the input. */\r\n required?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n hint?: React.ReactNode | undefined;\r\n /** Native `<input>` attributes, routed to the checkbox input (v9 slot). */\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n}\r\n\r\nconst FormikCheckbox = ({\r\n name,\r\n label,\r\n required,\r\n disabled,\r\n hint,\r\n inputProps,\r\n}: FormikCheckboxProps) => {\r\n const [field, meta] = useField<boolean>(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n setFieldValue(name, event.target.checked);\r\n setFieldTouched(name, true, false);\r\n };\r\n\r\n /* `=== true` and not a truthy test: hosts seed these fields with `null`\r\n * (a not-yet-answered flag), and `checked={null}` makes the input\r\n * uncontrolled for one render. */\r\n const checked = field.value === true;\r\n\r\n const controlLabel = required ? (\r\n <>\r\n {label}\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n color: \"var(--danger)\",\r\n fontWeight: \"var(--fw-bold, 700)\",\r\n marginInlineStart: \"var(--s-1)\",\r\n }}\r\n >\r\n *\r\n </Box>\r\n </>\r\n ) : (\r\n label\r\n );\r\n\r\n return (\r\n <Field\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n group\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n >\r\n <CheckboxGroup>\r\n <Checkbox\r\n name={name}\r\n label={controlLabel}\r\n checked={checked}\r\n onChange={handleChange}\r\n disabled={disabled}\r\n inputProps={{\r\n ...(required ? { \"aria-required\": \"true\" } : {}),\r\n ...inputProps,\r\n }}\r\n />\r\n </CheckboxGroup>\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikCheckbox;\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AACnC,SAASC,QAAQ,EAAEC,gBAAgB,QAAQ,QAAQ;AACnD,OAAOC,KAAK,MAAM,qBAAqB;AACvC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAcjE,MAAMC,cAAc,GAAGA,CAAC;EACtBC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC,QAAQ;EACRC,IAAI;EACJC;AACmB,CAAC,KAAK;EACzB,MAAM,CAACC,KAAK,EAAEC,IAAI,CAAC,GAAGnB,QAAQ,CAAUY,IAAI,CAAC;EAC7C,MAAM;IAAEQ,aAAa;IAAEC;EAAgB,CAAC,GAAGpB,gBAAgB,CAAC,CAAC;EAC7D,MAAMqB,QAAQ,GAAGC,OAAO,CAACJ,IAAI,CAACK,OAAO,IAAIL,IAAI,CAACM,KAAK,CAAC;EAEpD,MAAMC,YAAY,GAAIC,KAA0C,IAAK;IACnEP,aAAa,CAACR,IAAI,EAAEe,KAAK,CAACC,MAAM,CAACC,OAAO,CAAC;IACzCR,eAAe,CAACT,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;EACpC,CAAC;;EAED;AACF;AACA;EACE,MAAMiB,OAAO,GAAGX,KAAK,CAACY,KAAK,KAAK,IAAI;EAEpC,MAAMC,YAAY,GAAGjB,QAAQ,gBAC3BJ,KAAA,CAAAF,SAAA;IAAAwB,QAAA,GACGnB,KAAK,eACNP,IAAA,CAACP,GAAG;MACFkC,SAAS,EAAC,MAAM;MAChB,eAAY,MAAM;MAClBC,EAAE,EAAE;QACFC,KAAK,EAAE,eAAe;QACtBC,UAAU,EAAE,qBAAqB;QACjCC,iBAAiB,EAAE;MACrB,CAAE;MAAAL,QAAA,EACH;IAED,CAAK,CAAC;EAAA,CACN,CAAC,GAEHnB,KACD;EAED,oBACEP,IAAA,CAACJ,KAAK;IACJuB,KAAK,EAAEH,QAAQ,GAAGH,IAAI,CAACM,KAAK,GAAG,IAAK;IACpCT,IAAI,EAAE,CAACM,QAAQ,GAAGN,IAAI,GAAGsB,SAAU;IACnCC,KAAK;IAAA,IACAxB,QAAQ,KAAKuB,SAAS,GAAG;MAAEvB;IAAS,CAAC,GAAG,CAAC,CAAC;IAAAiB,QAAA,eAE/C1B,IAAA,CAACF,aAAa;MAAA4B,QAAA,eACZ1B,IAAA,CAACH,QAAQ;QACPS,IAAI,EAAEA,IAAK;QACXC,KAAK,EAAEkB,YAAa;QACpBF,OAAO,EAAEA,OAAQ;QACjBW,QAAQ,EAAEd,YAAa;QACvBX,QAAQ,EAAEA,QAAS;QACnBE,UAAU,EAAE;UACV,IAAIH,QAAQ,GAAG;YAAE,eAAe,EAAE;UAAO,CAAC,GAAG,CAAC,CAAC,CAAC;UAChD,GAAGG;QACL;MAAE,CACH;IAAC,CACW;EAAC,CACX,CAAC;AAEZ,CAAC;AAED,eAAeN,cAAc","ignoreList":[]}
@@ -1,19 +1,3 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
8
- function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
9
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
10
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
11
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
- 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."); }
13
- 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); }
14
- 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; }
15
- 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; } }
16
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
1
  /**
18
2
  * FormikCheckboxGroup — bridge between Formik state and
19
3
  * v2.Field + v2.CheckboxGroup.
@@ -46,6 +30,14 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
46
30
  * ARIA group). CheckboxGroup renders role="group" and forwards the injected
47
31
  * aria-labelledby / aria-describedby / aria-invalid onto that element.
48
32
  *
33
+ * Error focus (P-2): each Checkbox carries the field `name` on its native
34
+ * <input>, so `focusFieldByName` — and therefore `FormikErrorFocus` after a
35
+ * failed submit (R-F.3) — can resolve [name=…] and focus the first checkbox
36
+ * of the group. Note this is NOT the `htmlFor` route the other bridges use:
37
+ * in group mode there is no labelable element for htmlFor to target, so the
38
+ * name attribute is the only handle. Without it the field had neither an id
39
+ * nor a name and was silently skipped.
40
+ *
49
41
  * Charter R-Sel.4. Peer dependency: formik >= 2.x.
50
42
  */
51
43
 
@@ -54,57 +46,61 @@ import { useField, useFormikContext } from "formik";
54
46
  import Field from "../components/Field";
55
47
  import { Checkbox, CheckboxGroup } from "../components/Checkbox";
56
48
  import { jsx as _jsx } from "react/jsx-runtime";
57
- var FormikCheckboxGroup = function FormikCheckboxGroup(_ref) {
58
- var name = _ref.name,
59
- label = _ref.label,
60
- required = _ref.required,
61
- _ref$options = _ref.options,
62
- options = _ref$options === void 0 ? [] : _ref$options,
63
- hint = _ref.hint,
64
- disabled = _ref.disabled,
65
- _ref$row = _ref.row,
66
- row = _ref$row === void 0 ? false : _ref$row;
67
- var _useField = useField(name),
68
- _useField2 = _slicedToArray(_useField, 2),
69
- field = _useField2[0],
70
- meta = _useField2[1];
71
- var _useFormikContext = useFormikContext(),
72
- setFieldValue = _useFormikContext.setFieldValue,
73
- setFieldTouched = _useFormikContext.setFieldTouched;
74
- var hasError = Boolean(meta.touched && meta.error);
75
- var selected = Array.isArray(field.value) ? field.value : [];
76
- var toggle = function toggle(optValue) {
77
- return function (event) {
78
- var checked = event.target.checked;
79
- var next = checked ? [].concat(_toConsumableArray(selected), [optValue]) : selected.filter(function (v) {
80
- return v !== optValue;
81
- });
82
- setFieldValue(name, next);
83
- setFieldTouched(name, true, false);
84
- };
49
+ const FormikCheckboxGroup = ({
50
+ name,
51
+ label,
52
+ required,
53
+ options = [],
54
+ hint,
55
+ disabled,
56
+ row = false,
57
+ inputProps
58
+ }) => {
59
+ const [field, meta] = useField(name);
60
+ const {
61
+ setFieldValue,
62
+ setFieldTouched
63
+ } = useFormikContext();
64
+ const hasError = Boolean(meta.touched && meta.error);
65
+ const selected = Array.isArray(field.value) ? field.value : [];
66
+
67
+ /* P-2 the field name on each native input. focusFieldByName resolves
68
+ [id=…] then [name=…]; group mode offers no labelable element for an id,
69
+ so this is the handle. Sharing one name across checkboxes is correct HTML
70
+ (unlike radios, checkboxes are not grouped by name) and changes nothing
71
+ at runtime, since Formik does not use native form serialisation. */
72
+ const nativeInputProps = {
73
+ ...(inputProps ?? {}),
74
+ name
75
+ };
76
+ const toggle = optValue => event => {
77
+ const checked = event.target.checked;
78
+ const next = checked ? [...selected, optValue] : selected.filter(v => v !== optValue);
79
+ setFieldValue(name, next);
80
+ setFieldTouched(name, true, false);
85
81
  };
86
- return /*#__PURE__*/_jsx(Field, _objectSpread(_objectSpread(_objectSpread({
82
+ return /*#__PURE__*/_jsx(Field, {
87
83
  label: label,
88
84
  error: hasError ? meta.error : null,
89
85
  hint: !hasError ? hint : undefined,
90
- group: true
91
- }, required !== undefined ? {
92
- required: required
93
- } : {}), disabled !== undefined ? {
94
- disabled: disabled
95
- } : {}), {}, {
86
+ group: true,
87
+ ...(required !== undefined ? {
88
+ required
89
+ } : {}),
90
+ ...(disabled !== undefined ? {
91
+ disabled
92
+ } : {}),
96
93
  children: /*#__PURE__*/_jsx(CheckboxGroup, {
97
94
  row: row,
98
- children: options.map(function (opt) {
99
- return /*#__PURE__*/_jsx(Checkbox, {
100
- label: opt.label,
101
- checked: selected.includes(opt.value),
102
- onChange: toggle(opt.value),
103
- disabled: disabled
104
- }, opt.value);
105
- })
95
+ children: options.map(opt => /*#__PURE__*/_jsx(Checkbox, {
96
+ label: opt.label,
97
+ checked: selected.includes(opt.value),
98
+ onChange: toggle(opt.value),
99
+ disabled: disabled,
100
+ inputProps: nativeInputProps
101
+ }, opt.value))
106
102
  })
107
- }));
103
+ });
108
104
  };
109
105
  export default FormikCheckboxGroup;
110
106
  //# sourceMappingURL=FormikCheckboxGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormikCheckboxGroup.js","names":["React","useField","useFormikContext","Field","Checkbox","CheckboxGroup","jsx","_jsx","FormikCheckboxGroup","_ref","name","label","required","_ref$options","options","hint","disabled","_ref$row","row","_useField","_useField2","_slicedToArray","field","meta","_useFormikContext","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","selected","Array","isArray","value","toggle","optValue","event","checked","target","next","concat","_toConsumableArray","filter","v","_objectSpread","undefined","group","children","map","opt","includes","onChange"],"sources":["../../../../src/lib/v2/patterns/FormikCheckboxGroup.tsx"],"sourcesContent":["/**\r\n * FormikCheckboxGroup — bridge between Formik state and\r\n * v2.Field + v2.CheckboxGroup.\r\n *\r\n * The v2 CheckboxGroup uses composition slots — children must be\r\n * <Checkbox> elements, each with their own checked/onChange. This\r\n * bridge wraps that contract behind an ergonomic\r\n * `options=[{value, label}]` prop and manages the add/remove of\r\n * values in the Formik-held array.\r\n *\r\n * `field.value` holds an array of selected values, defaulting to []\r\n * when unset.\r\n *\r\n * Usage:\r\n *\r\n * import { FormikCheckboxGroup } from \"@portnet/ui/lib/v2\";\r\n *\r\n * <FormikCheckboxGroup\r\n * name=\"departements\"\r\n * label=\"Départements\"\r\n * required\r\n * options={departements.content.map((d) => ({\r\n * value: String(d.id),\r\n * label: d.description,\r\n * }))}\r\n * />\r\n *\r\n * A11y (CC-6): the wrapping Field is put in `group` mode so the label names the\r\n * CheckboxGroup via aria-labelledby (a native <label htmlFor> cannot name an\r\n * ARIA group). CheckboxGroup renders role=\"group\" and forwards the injected\r\n * aria-labelledby / aria-describedby / aria-invalid onto that element.\r\n *\r\n * Charter R-Sel.4. Peer dependency: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport { Checkbox, CheckboxGroup } from \"../components/Checkbox\";\r\n\r\nexport interface FormikCheckboxOption {\r\n value: string | number;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface FormikCheckboxGroupProps {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n options?: FormikCheckboxOption[] | undefined;\r\n hint?: React.ReactNode | undefined;\r\n disabled?: boolean | undefined;\r\n row?: boolean | undefined;\r\n}\r\n\r\nconst FormikCheckboxGroup = ({\r\n name,\r\n label,\r\n required,\r\n options = [],\r\n hint,\r\n disabled,\r\n row = false,\r\n}: FormikCheckboxGroupProps) => {\r\n const [field, meta] = useField<Array<string | number>>(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const selected = Array.isArray(field.value) ? field.value : [];\r\n\r\n const toggle =\r\n (optValue: string | number) =>\r\n (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const checked = event.target.checked;\r\n const next = checked\r\n ? [...selected, optValue]\r\n : selected.filter((v) => v !== optValue);\r\n setFieldValue(name, next);\r\n setFieldTouched(name, true, false);\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n group\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n >\r\n <CheckboxGroup row={row}>\r\n {options.map((opt) => (\r\n <Checkbox\r\n key={opt.value}\r\n label={opt.label}\r\n checked={selected.includes(opt.value)}\r\n onChange={toggle(opt.value)}\r\n disabled={disabled}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikCheckboxGroup;\r\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,gBAAgB,QAAQ,QAAQ;AACnD,OAAOC,KAAK,MAAM,qBAAqB;AACvC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAiBjE,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAQO;EAAA,IAP9BC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,KAAK,GAAAF,IAAA,CAALE,KAAK;IACLC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IAAAC,YAAA,GAAAJ,IAAA,CACRK,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,EAAE,GAAAA,YAAA;IACZE,IAAI,GAAAN,IAAA,CAAJM,IAAI;IACJC,QAAQ,GAAAP,IAAA,CAARO,QAAQ;IAAAC,QAAA,GAAAR,IAAA,CACRS,GAAG;IAAHA,GAAG,GAAAD,QAAA,cAAG,KAAK,GAAAA,QAAA;EAEX,IAAAE,SAAA,GAAsBlB,QAAQ,CAAyBS,IAAI,CAAC;IAAAU,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAArDG,KAAK,GAAAF,UAAA;IAAEG,IAAI,GAAAH,UAAA;EAClB,IAAAI,iBAAA,GAA2CtB,gBAAgB,CAAC,CAAC;IAArDuB,aAAa,GAAAD,iBAAA,CAAbC,aAAa;IAAEC,eAAe,GAAAF,iBAAA,CAAfE,eAAe;EACtC,IAAMC,QAAQ,GAAGC,OAAO,CAACL,IAAI,CAACM,OAAO,IAAIN,IAAI,CAACO,KAAK,CAAC;EAEpD,IAAMC,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACX,KAAK,CAACY,KAAK,CAAC,GAAGZ,KAAK,CAACY,KAAK,GAAG,EAAE;EAE9D,IAAMC,MAAM,GACV,SADIA,MAAMA,CACTC,QAAyB;IAAA,OAC1B,UAACC,KAA0C,EAAK;MAC9C,IAAMC,OAAO,GAAGD,KAAK,CAACE,MAAM,CAACD,OAAO;MACpC,IAAME,IAAI,GAAGF,OAAO,MAAAG,MAAA,CAAAC,kBAAA,CACZX,QAAQ,IAAEK,QAAQ,KACtBL,QAAQ,CAACY,MAAM,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,KAAKR,QAAQ;MAAA,EAAC;MAC1CX,aAAa,CAACf,IAAI,EAAE8B,IAAI,CAAC;MACzBd,eAAe,CAAChB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IACpC,CAAC;EAAA;EAEH,oBACEH,IAAA,CAACJ,KAAK,EAAA0C,aAAA,CAAAA,aAAA,CAAAA,aAAA;IACJlC,KAAK,EAAEA,KAAM;IACbmB,KAAK,EAAEH,QAAQ,GAAGJ,IAAI,CAACO,KAAK,GAAG,IAAK;IACpCf,IAAI,EAAE,CAACY,QAAQ,GAAGZ,IAAI,GAAG+B,SAAU;IACnCC,KAAK;EAAA,GACAnC,QAAQ,KAAKkC,SAAS,GAAG;IAAElC,QAAQ,EAARA;EAAS,CAAC,GAAG,CAAC,CAAC,GAC1CI,QAAQ,KAAK8B,SAAS,GAAG;IAAE9B,QAAQ,EAARA;EAAS,CAAC,GAAG,CAAC,CAAC;IAAAgC,QAAA,eAE/CzC,IAAA,CAACF,aAAa;MAACa,GAAG,EAAEA,GAAI;MAAA8B,QAAA,EACrBlC,OAAO,CAACmC,GAAG,CAAC,UAACC,GAAG;QAAA,oBACf3C,IAAA,CAACH,QAAQ;UAEPO,KAAK,EAAEuC,GAAG,CAACvC,KAAM;UACjB2B,OAAO,EAAEP,QAAQ,CAACoB,QAAQ,CAACD,GAAG,CAAChB,KAAK,CAAE;UACtCkB,QAAQ,EAAEjB,MAAM,CAACe,GAAG,CAAChB,KAAK,CAAE;UAC5BlB,QAAQ,EAAEA;QAAS,GAJdkC,GAAG,CAAChB,KAKV,CAAC;MAAA,CACH;IAAC,CACW;EAAC,EACX,CAAC;AAEZ,CAAC;AAED,eAAe1B,mBAAmB","ignoreList":[]}
1
+ {"version":3,"file":"FormikCheckboxGroup.js","names":["React","useField","useFormikContext","Field","Checkbox","CheckboxGroup","jsx","_jsx","FormikCheckboxGroup","name","label","required","options","hint","disabled","row","inputProps","field","meta","setFieldValue","setFieldTouched","hasError","Boolean","touched","error","selected","Array","isArray","value","nativeInputProps","toggle","optValue","event","checked","target","next","filter","v","undefined","group","children","map","opt","includes","onChange"],"sources":["../../../../src/lib/v2/patterns/FormikCheckboxGroup.tsx"],"sourcesContent":["/**\r\n * FormikCheckboxGroup — bridge between Formik state and\r\n * v2.Field + v2.CheckboxGroup.\r\n *\r\n * The v2 CheckboxGroup uses composition slots — children must be\r\n * <Checkbox> elements, each with their own checked/onChange. This\r\n * bridge wraps that contract behind an ergonomic\r\n * `options=[{value, label}]` prop and manages the add/remove of\r\n * values in the Formik-held array.\r\n *\r\n * `field.value` holds an array of selected values, defaulting to []\r\n * when unset.\r\n *\r\n * Usage:\r\n *\r\n * import { FormikCheckboxGroup } from \"@portnet/ui/lib/v2\";\r\n *\r\n * <FormikCheckboxGroup\r\n * name=\"departements\"\r\n * label=\"Départements\"\r\n * required\r\n * options={departements.content.map((d) => ({\r\n * value: String(d.id),\r\n * label: d.description,\r\n * }))}\r\n * />\r\n *\r\n * A11y (CC-6): the wrapping Field is put in `group` mode so the label names the\r\n * CheckboxGroup via aria-labelledby (a native <label htmlFor> cannot name an\r\n * ARIA group). CheckboxGroup renders role=\"group\" and forwards the injected\r\n * aria-labelledby / aria-describedby / aria-invalid onto that element.\r\n *\r\n * Error focus (P-2): each Checkbox carries the field `name` on its native\r\n * <input>, so `focusFieldByName` — and therefore `FormikErrorFocus` after a\r\n * failed submit (R-F.3) — can resolve [name=…] and focus the first checkbox\r\n * of the group. Note this is NOT the `htmlFor` route the other bridges use:\r\n * in group mode there is no labelable element for htmlFor to target, so the\r\n * name attribute is the only handle. Without it the field had neither an id\r\n * nor a name and was silently skipped.\r\n *\r\n * Charter R-Sel.4. Peer dependency: formik >= 2.x.\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport Field from \"../components/Field\";\r\nimport { Checkbox, CheckboxGroup } from \"../components/Checkbox\";\r\n\r\nexport interface FormikCheckboxOption {\r\n value: string | number;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport interface FormikCheckboxGroupProps {\r\n name: string;\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n options?: FormikCheckboxOption[] | undefined;\r\n hint?: React.ReactNode | undefined;\r\n disabled?: boolean | undefined;\r\n row?: boolean | undefined;\r\n /**\r\n * Native <input> attributes applied to every checkbox in the group.\r\n *\r\n * The field `name` is added automatically (P-2) and takes precedence, since\r\n * it is what makes the group reachable by focusFieldByName. Anything passed\r\n * here is merged ahead of it.\r\n */\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n}\r\n\r\nconst FormikCheckboxGroup = ({\r\n name,\r\n label,\r\n required,\r\n options = [],\r\n hint,\r\n disabled,\r\n row = false,\r\n inputProps,\r\n}: FormikCheckboxGroupProps) => {\r\n const [field, meta] = useField<Array<string | number>>(name);\r\n const { setFieldValue, setFieldTouched } = useFormikContext();\r\n const hasError = Boolean(meta.touched && meta.error);\r\n\r\n const selected = Array.isArray(field.value) ? field.value : [];\r\n\r\n /* P-2 — the field name on each native input. focusFieldByName resolves\r\n [id=…] then [name=…]; group mode offers no labelable element for an id,\r\n so this is the handle. Sharing one name across checkboxes is correct HTML\r\n (unlike radios, checkboxes are not grouped by name) and changes nothing\r\n at runtime, since Formik does not use native form serialisation. */\r\n const nativeInputProps: React.InputHTMLAttributes<HTMLInputElement> = {\r\n ...(inputProps ?? {}),\r\n name,\r\n };\r\n\r\n const toggle =\r\n (optValue: string | number) =>\r\n (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const checked = event.target.checked;\r\n const next = checked\r\n ? [...selected, optValue]\r\n : selected.filter((v) => v !== optValue);\r\n setFieldValue(name, next);\r\n setFieldTouched(name, true, false);\r\n };\r\n\r\n return (\r\n <Field\r\n label={label}\r\n error={hasError ? meta.error : null}\r\n hint={!hasError ? hint : undefined}\r\n group\r\n {...(required !== undefined ? { required } : {})}\r\n {...(disabled !== undefined ? { disabled } : {})}\r\n >\r\n <CheckboxGroup row={row}>\r\n {options.map((opt) => (\r\n <Checkbox\r\n key={opt.value}\r\n label={opt.label}\r\n checked={selected.includes(opt.value)}\r\n onChange={toggle(opt.value)}\r\n disabled={disabled}\r\n inputProps={nativeInputProps}\r\n />\r\n ))}\r\n </CheckboxGroup>\r\n </Field>\r\n );\r\n};\r\n\r\nexport default FormikCheckboxGroup;\r\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,gBAAgB,QAAQ,QAAQ;AACnD,OAAOC,KAAK,MAAM,qBAAqB;AACvC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAyBjE,MAAMC,mBAAmB,GAAGA,CAAC;EAC3BC,IAAI;EACJC,KAAK;EACLC,QAAQ;EACRC,OAAO,GAAG,EAAE;EACZC,IAAI;EACJC,QAAQ;EACRC,GAAG,GAAG,KAAK;EACXC;AACwB,CAAC,KAAK;EAC9B,MAAM,CAACC,KAAK,EAAEC,IAAI,CAAC,GAAGjB,QAAQ,CAAyBQ,IAAI,CAAC;EAC5D,MAAM;IAAEU,aAAa;IAAEC;EAAgB,CAAC,GAAGlB,gBAAgB,CAAC,CAAC;EAC7D,MAAMmB,QAAQ,GAAGC,OAAO,CAACJ,IAAI,CAACK,OAAO,IAAIL,IAAI,CAACM,KAAK,CAAC;EAEpD,MAAMC,QAAQ,GAAGC,KAAK,CAACC,OAAO,CAACV,KAAK,CAACW,KAAK,CAAC,GAAGX,KAAK,CAACW,KAAK,GAAG,EAAE;;EAE9D;AACF;AACA;AACA;AACA;EACE,MAAMC,gBAA6D,GAAG;IACpE,IAAIb,UAAU,IAAI,CAAC,CAAC,CAAC;IACrBP;EACF,CAAC;EAED,MAAMqB,MAAM,GACTC,QAAyB,IACzBC,KAA0C,IAAK;IAC9C,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAM,CAACD,OAAO;IACpC,MAAME,IAAI,GAAGF,OAAO,GAChB,CAAC,GAAGR,QAAQ,EAAEM,QAAQ,CAAC,GACvBN,QAAQ,CAACW,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKN,QAAQ,CAAC;IAC1CZ,aAAa,CAACV,IAAI,EAAE0B,IAAI,CAAC;IACzBf,eAAe,CAACX,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;EACpC,CAAC;EAEH,oBACEF,IAAA,CAACJ,KAAK;IACJO,KAAK,EAAEA,KAAM;IACbc,KAAK,EAAEH,QAAQ,GAAGH,IAAI,CAACM,KAAK,GAAG,IAAK;IACpCX,IAAI,EAAE,CAACQ,QAAQ,GAAGR,IAAI,GAAGyB,SAAU;IACnCC,KAAK;IAAA,IACA5B,QAAQ,KAAK2B,SAAS,GAAG;MAAE3B;IAAS,CAAC,GAAG,CAAC,CAAC;IAAA,IAC1CG,QAAQ,KAAKwB,SAAS,GAAG;MAAExB;IAAS,CAAC,GAAG,CAAC,CAAC;IAAA0B,QAAA,eAE/CjC,IAAA,CAACF,aAAa;MAACU,GAAG,EAAEA,GAAI;MAAAyB,QAAA,EACrB5B,OAAO,CAAC6B,GAAG,CAAEC,GAAG,iBACfnC,IAAA,CAACH,QAAQ;QAEPM,KAAK,EAAEgC,GAAG,CAAChC,KAAM;QACjBuB,OAAO,EAAER,QAAQ,CAACkB,QAAQ,CAACD,GAAG,CAACd,KAAK,CAAE;QACtCgB,QAAQ,EAAEd,MAAM,CAACY,GAAG,CAACd,KAAK,CAAE;QAC5Bd,QAAQ,EAAEA,QAAS;QACnBE,UAAU,EAAEa;MAAiB,GALxBa,GAAG,CAACd,KAMV,CACF;IAAC,CACW;EAAC,CACX,CAAC;AAEZ,CAAC;AAED,eAAepB,mBAAmB","ignoreList":[]}