@portnet/ui 6.0.2 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (980) hide show
  1. package/CHANGELOG.md +652 -0
  2. package/dist/esm/index.js +72 -3
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
  5. package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
  7. package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
  9. package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
  11. package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
  13. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
  14. package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
  15. package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
  17. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
  18. package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
  19. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
  20. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
  21. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  22. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
  23. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  24. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
  25. package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
  27. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  28. package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
  29. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
  30. package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
  31. package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
  33. package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  34. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
  35. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  36. package/dist/esm/v2/__tests__/apiError.test.js +50 -69
  37. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
  38. package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
  39. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
  40. package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
  41. package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
  42. package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
  43. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
  44. package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
  45. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
  46. package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
  47. package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
  48. package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
  49. package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
  50. package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
  51. package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
  52. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
  53. package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  54. package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
  55. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
  56. package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
  57. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
  58. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
  59. package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  60. package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
  61. package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
  62. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
  63. package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  64. package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
  65. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
  66. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
  67. package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  68. package/dist/esm/v2/components/Accordion.js +48 -70
  69. package/dist/esm/v2/components/Accordion.js.map +1 -1
  70. package/dist/esm/v2/components/ActionStrip.js +31 -43
  71. package/dist/esm/v2/components/ActionStrip.js.map +1 -1
  72. package/dist/esm/v2/components/Banner.js +25 -22
  73. package/dist/esm/v2/components/Banner.js.map +1 -1
  74. package/dist/esm/v2/components/Busy.js +14 -19
  75. package/dist/esm/v2/components/Busy.js.map +1 -1
  76. package/dist/esm/v2/components/Button.js +34 -45
  77. package/dist/esm/v2/components/Button.js.map +1 -1
  78. package/dist/esm/v2/components/CategoryTag.js +44 -27
  79. package/dist/esm/v2/components/CategoryTag.js.map +1 -1
  80. package/dist/esm/v2/components/Checkbox.js +32 -38
  81. package/dist/esm/v2/components/Checkbox.js.map +1 -1
  82. package/dist/esm/v2/components/Chip.js +23 -36
  83. package/dist/esm/v2/components/Chip.js.map +1 -1
  84. package/dist/esm/v2/components/Combobox.js +112 -136
  85. package/dist/esm/v2/components/Combobox.js.map +1 -1
  86. package/dist/esm/v2/components/CommandPalette.js +113 -198
  87. package/dist/esm/v2/components/CommandPalette.js.map +1 -1
  88. package/dist/esm/v2/components/ConfirmDialog.js +36 -45
  89. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
  90. package/dist/esm/v2/components/DatePicker.js +78 -81
  91. package/dist/esm/v2/components/DatePicker.js.map +1 -1
  92. package/dist/esm/v2/components/DateRangePicker.js +63 -74
  93. package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
  94. package/dist/esm/v2/components/DateTimePicker.js +81 -86
  95. package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
  96. package/dist/esm/v2/components/Drawer.js +71 -65
  97. package/dist/esm/v2/components/Drawer.js.map +1 -1
  98. package/dist/esm/v2/components/Dropzone.js +130 -177
  99. package/dist/esm/v2/components/Dropzone.js.map +1 -1
  100. package/dist/esm/v2/components/EmptyState.js +9 -9
  101. package/dist/esm/v2/components/EmptyState.js.map +1 -1
  102. package/dist/esm/v2/components/FavoriteToggle.js +24 -33
  103. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
  104. package/dist/esm/v2/components/Field.js +155 -59
  105. package/dist/esm/v2/components/Field.js.map +1 -1
  106. package/dist/esm/v2/components/FieldError.js +9 -13
  107. package/dist/esm/v2/components/FieldError.js.map +1 -1
  108. package/dist/esm/v2/components/FieldHelp.js +28 -49
  109. package/dist/esm/v2/components/FieldHelp.js.map +1 -1
  110. package/dist/esm/v2/components/FileCard.js +14 -19
  111. package/dist/esm/v2/components/FileCard.js.map +1 -1
  112. package/dist/esm/v2/components/FilterTab.js +22 -31
  113. package/dist/esm/v2/components/FilterTab.js.map +1 -1
  114. package/dist/esm/v2/components/ForbiddenPage.js +28 -8
  115. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
  116. package/dist/esm/v2/components/FormGrid.js +48 -54
  117. package/dist/esm/v2/components/FormGrid.js.map +1 -1
  118. package/dist/esm/v2/components/FormikDisplay.js +98 -24
  119. package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
  120. package/dist/esm/v2/components/Input.js +75 -34
  121. package/dist/esm/v2/components/Input.js.map +1 -1
  122. package/dist/esm/v2/components/KPICard.js +42 -51
  123. package/dist/esm/v2/components/KPICard.js.map +1 -1
  124. package/dist/esm/v2/components/KPIStrip.js +9 -15
  125. package/dist/esm/v2/components/KPIStrip.js.map +1 -1
  126. package/dist/esm/v2/components/KV.js +16 -23
  127. package/dist/esm/v2/components/KV.js.map +1 -1
  128. package/dist/esm/v2/components/KVGrid.js +15 -23
  129. package/dist/esm/v2/components/KVGrid.js.map +1 -1
  130. package/dist/esm/v2/components/Layout.js +81 -117
  131. package/dist/esm/v2/components/Layout.js.map +1 -1
  132. package/dist/esm/v2/components/MobileRowCard.js +64 -75
  133. package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
  134. package/dist/esm/v2/components/Modal.js +44 -53
  135. package/dist/esm/v2/components/Modal.js.map +1 -1
  136. package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
  137. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
  138. package/dist/esm/v2/components/NotFoundPage.js +28 -9
  139. package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
  140. package/dist/esm/v2/components/NumberInput.js +77 -107
  141. package/dist/esm/v2/components/NumberInput.js.map +1 -1
  142. package/dist/esm/v2/components/OverflowMenu.js +24 -42
  143. package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
  144. package/dist/esm/v2/components/PdfViewer.js +24 -33
  145. package/dist/esm/v2/components/PdfViewer.js.map +1 -1
  146. package/dist/esm/v2/components/ProgressBar.js +28 -36
  147. package/dist/esm/v2/components/ProgressBar.js.map +1 -1
  148. package/dist/esm/v2/components/Radio.js +49 -57
  149. package/dist/esm/v2/components/Radio.js.map +1 -1
  150. package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
  151. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
  152. package/dist/esm/v2/components/SectionHeader.js +24 -31
  153. package/dist/esm/v2/components/SectionHeader.js.map +1 -1
  154. package/dist/esm/v2/components/Segmented.js +59 -84
  155. package/dist/esm/v2/components/Segmented.js.map +1 -1
  156. package/dist/esm/v2/components/Select.js +100 -138
  157. package/dist/esm/v2/components/Select.js.map +1 -1
  158. package/dist/esm/v2/components/ServerErrorPage.js +27 -10
  159. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
  160. package/dist/esm/v2/components/Skeleton.js +81 -96
  161. package/dist/esm/v2/components/Skeleton.js.map +1 -1
  162. package/dist/esm/v2/components/SkipLink.js +6 -7
  163. package/dist/esm/v2/components/SkipLink.js.map +1 -1
  164. package/dist/esm/v2/components/Spinner.js +13 -22
  165. package/dist/esm/v2/components/Spinner.js.map +1 -1
  166. package/dist/esm/v2/components/Status.js +14 -25
  167. package/dist/esm/v2/components/Status.js.map +1 -1
  168. package/dist/esm/v2/components/Stepper.js +68 -71
  169. package/dist/esm/v2/components/Stepper.js.map +1 -1
  170. package/dist/esm/v2/components/Surface.js +25 -44
  171. package/dist/esm/v2/components/Surface.js.map +1 -1
  172. package/dist/esm/v2/components/Switch.js +21 -29
  173. package/dist/esm/v2/components/Switch.js.map +1 -1
  174. package/dist/esm/v2/components/TabPanel.js +84 -0
  175. package/dist/esm/v2/components/TabPanel.js.map +1 -0
  176. package/dist/esm/v2/components/Tabs.js +43 -19
  177. package/dist/esm/v2/components/Tabs.js.map +1 -1
  178. package/dist/esm/v2/components/TelInput.js +75 -108
  179. package/dist/esm/v2/components/TelInput.js.map +1 -1
  180. package/dist/esm/v2/components/Textarea.js +21 -30
  181. package/dist/esm/v2/components/Textarea.js.map +1 -1
  182. package/dist/esm/v2/components/TimePicker.js +59 -69
  183. package/dist/esm/v2/components/TimePicker.js.map +1 -1
  184. package/dist/esm/v2/components/Toast.js +109 -163
  185. package/dist/esm/v2/components/Toast.js.map +1 -1
  186. package/dist/esm/v2/components/Tooltip.js +18 -31
  187. package/dist/esm/v2/components/Tooltip.js.map +1 -1
  188. package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
  189. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
  190. package/dist/esm/v2/components/_pickerShared.js +2 -2
  191. package/dist/esm/v2/components/_pickerShared.js.map +1 -1
  192. package/dist/esm/v2/components/index.js +37 -0
  193. package/dist/esm/v2/components/index.js.map +1 -1
  194. package/dist/esm/v2/hooks/index.js +62 -0
  195. package/dist/esm/v2/hooks/index.js.map +1 -1
  196. package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
  197. package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
  198. package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
  199. package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
  200. package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
  201. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
  202. package/dist/esm/v2/hooks/useDensity.js +13 -17
  203. package/dist/esm/v2/hooks/useDensity.js.map +1 -1
  204. package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
  205. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
  206. package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
  207. package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  208. package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
  209. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
  210. package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
  211. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
  212. package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
  213. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
  214. package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
  215. package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  216. package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
  217. package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  218. package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
  219. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
  220. package/dist/esm/v2/hooks/useSortedRows.js +3 -5
  221. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
  222. package/dist/esm/v2/hooks/useTabLoading.js +6 -21
  223. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
  224. package/dist/esm/v2/index.js +2 -3
  225. package/dist/esm/v2/index.js.map +1 -1
  226. package/dist/esm/v2/modalContext.js +2 -2
  227. package/dist/esm/v2/modalContext.js.map +1 -1
  228. package/dist/esm/v2/models/favorite.js.map +1 -1
  229. package/dist/esm/v2/models/personalization.js.map +1 -1
  230. package/dist/esm/v2/models/referentiel.js.map +1 -1
  231. package/dist/esm/v2/models/savedFilter.js.map +1 -1
  232. package/dist/esm/v2/patterns/ActionBar.js +115 -159
  233. package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
  234. package/dist/esm/v2/patterns/AppMain.js +108 -0
  235. package/dist/esm/v2/patterns/AppMain.js.map +1 -0
  236. package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
  237. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
  238. package/dist/esm/v2/patterns/ChartFigure.js +151 -0
  239. package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
  240. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
  241. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  242. package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
  243. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
  244. package/dist/esm/v2/patterns/DataGrid.js +221 -255
  245. package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
  246. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
  247. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  248. package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
  249. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
  250. package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
  251. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
  252. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
  253. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  254. package/dist/esm/v2/patterns/DetailSplit.js +108 -0
  255. package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
  256. package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
  257. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
  258. package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
  259. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
  260. package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
  261. package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
  262. package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
  263. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
  264. package/dist/esm/v2/patterns/FormPageShell.js +43 -41
  265. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
  266. package/dist/esm/v2/patterns/FormSection.js +30 -38
  267. package/dist/esm/v2/patterns/FormSection.js.map +1 -1
  268. package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
  269. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
  270. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
  271. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  272. package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
  273. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
  274. package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
  275. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
  276. package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
  277. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
  278. package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
  279. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
  280. package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
  281. package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
  282. package/dist/esm/v2/patterns/FormikFile.js +94 -78
  283. package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
  284. package/dist/esm/v2/patterns/FormikInput.js +40 -53
  285. package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
  286. package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
  287. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
  288. package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
  289. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
  290. package/dist/esm/v2/patterns/FormikSelect.js +64 -87
  291. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
  292. package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
  293. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
  294. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
  295. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  296. package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
  297. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
  298. package/dist/esm/v2/patterns/PageContent.js +10 -14
  299. package/dist/esm/v2/patterns/PageContent.js.map +1 -1
  300. package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
  301. package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
  302. package/dist/esm/v2/patterns/ReferentielField.js +327 -312
  303. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
  304. package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
  305. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
  306. package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
  307. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
  308. package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
  309. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
  310. package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
  311. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
  312. package/dist/esm/v2/patterns/SortableHeader.js +22 -45
  313. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
  314. package/dist/esm/v2/patterns/Tour.js +94 -120
  315. package/dist/esm/v2/patterns/Tour.js.map +1 -1
  316. package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
  317. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
  318. package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
  319. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
  320. package/dist/esm/v2/patterns/_sort.js +17 -33
  321. package/dist/esm/v2/patterns/_sort.js.map +1 -1
  322. package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
  323. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
  324. package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
  325. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
  326. package/dist/esm/v2/patterns/filterCriteria.js +102 -0
  327. package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
  328. package/dist/esm/v2/patterns/index.js +152 -0
  329. package/dist/esm/v2/patterns/index.js.map +1 -1
  330. package/dist/esm/v2/patterns/rowActions.js +223 -0
  331. package/dist/esm/v2/patterns/rowActions.js.map +1 -0
  332. package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
  333. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
  334. package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
  335. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
  336. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
  337. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  338. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
  339. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  340. package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
  341. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
  342. package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
  343. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
  344. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
  345. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  346. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
  347. package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  348. package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
  349. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
  350. package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
  351. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
  352. package/dist/esm/v2/personalization/index.js +17 -0
  353. package/dist/esm/v2/personalization/index.js.map +1 -1
  354. package/dist/esm/v2/personalization/personalizationContext.js +9 -9
  355. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
  356. package/dist/esm/v2/personalization/schema.js +8 -9
  357. package/dist/esm/v2/personalization/schema.js.map +1 -1
  358. package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
  359. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
  360. package/dist/esm/v2/referentiel/types.js +2 -0
  361. package/dist/esm/v2/referentiel/types.js.map +1 -0
  362. package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
  363. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
  364. package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
  365. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
  366. package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
  367. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
  368. package/dist/esm/v2/theme/_brand.js +8 -24
  369. package/dist/esm/v2/theme/_brand.js.map +1 -1
  370. package/dist/esm/v2/theme/_brandSecondary.js +8 -24
  371. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
  372. package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
  373. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
  374. package/dist/esm/v2/theme/cssVariables.js +62 -69
  375. package/dist/esm/v2/theme/cssVariables.js.map +1 -1
  376. package/dist/esm/v2/theme/index.js +5 -5
  377. package/dist/esm/v2/theme/index.js.map +1 -1
  378. package/dist/esm/v2/tokens/breakpoints.js +14 -14
  379. package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
  380. package/dist/esm/v2/tokens/chart.js +261 -0
  381. package/dist/esm/v2/tokens/chart.js.map +1 -0
  382. package/dist/esm/v2/tokens/colors.js +22 -22
  383. package/dist/esm/v2/tokens/colors.js.map +1 -1
  384. package/dist/esm/v2/tokens/density.js +62 -7
  385. package/dist/esm/v2/tokens/density.js.map +1 -1
  386. package/dist/esm/v2/tokens/index.js +49 -34
  387. package/dist/esm/v2/tokens/index.js.map +1 -1
  388. package/dist/esm/v2/tokens/motion.js +12 -20
  389. package/dist/esm/v2/tokens/motion.js.map +1 -1
  390. package/dist/esm/v2/tokens/radius.js +1 -1
  391. package/dist/esm/v2/tokens/radius.js.map +1 -1
  392. package/dist/esm/v2/tokens/shadows.js +6 -6
  393. package/dist/esm/v2/tokens/shadows.js.map +1 -1
  394. package/dist/esm/v2/tokens/spacing.js +2 -2
  395. package/dist/esm/v2/tokens/spacing.js.map +1 -1
  396. package/dist/esm/v2/tokens/state.js +1 -1
  397. package/dist/esm/v2/tokens/state.js.map +1 -1
  398. package/dist/esm/v2/tokens/statusPalette.js +17 -21
  399. package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
  400. package/dist/esm/v2/tokens/tokens.json +6 -1
  401. package/dist/esm/v2/tokens/typography.js +13 -13
  402. package/dist/esm/v2/tokens/typography.js.map +1 -1
  403. package/dist/esm/v2/tokens/zIndex.js +1 -1
  404. package/dist/esm/v2/tokens/zIndex.js.map +1 -1
  405. package/dist/esm/v2/types/datagrid.js.map +1 -1
  406. package/dist/esm/v2/utils/apiError.js +16 -37
  407. package/dist/esm/v2/utils/apiError.js.map +1 -1
  408. package/dist/esm/v2/utils/contrast.js +31 -32
  409. package/dist/esm/v2/utils/contrast.js.map +1 -1
  410. package/dist/esm/v2/utils/cx.js +5 -25
  411. package/dist/esm/v2/utils/cx.js.map +1 -1
  412. package/dist/esm/v2/utils/fileDownload.js +23 -26
  413. package/dist/esm/v2/utils/fileDownload.js.map +1 -1
  414. package/dist/esm/v2/utils/fileValidation.js +209 -0
  415. package/dist/esm/v2/utils/fileValidation.js.map +1 -0
  416. package/dist/esm/v2/utils/fmtDate.js +111 -0
  417. package/dist/esm/v2/utils/fmtDate.js.map +1 -0
  418. package/dist/esm/v2/utils/fmtMoney.js +8 -10
  419. package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
  420. package/dist/esm/v2/utils/formikErrors.js +78 -0
  421. package/dist/esm/v2/utils/formikErrors.js.map +1 -0
  422. package/dist/esm/v2/utils/index.js +35 -2
  423. package/dist/esm/v2/utils/index.js.map +1 -1
  424. package/dist/esm/v2/utils/mergeLabels.js +7 -12
  425. package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
  426. package/dist/esm/v2/utils/networkStatus.js +12 -12
  427. package/dist/esm/v2/utils/networkStatus.js.map +1 -1
  428. package/dist/index.d.ts +7 -1
  429. package/dist/index.d.ts.map +1 -1
  430. package/dist/index.js +110 -49
  431. package/dist/index.js.map +1 -1
  432. package/dist/v2/__tests__/AppMain.test.js +133 -0
  433. package/dist/v2/__tests__/AppMain.test.js.map +1 -0
  434. package/dist/v2/__tests__/ChartFigure.test.js +183 -0
  435. package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
  436. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
  437. package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
  438. package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
  439. package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
  440. package/dist/v2/__tests__/FieldError.test.js +82 -49
  441. package/dist/v2/__tests__/FieldError.test.js.map +1 -1
  442. package/dist/v2/__tests__/FieldNaming.test.js +161 -0
  443. package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
  444. package/dist/v2/__tests__/FieldWidth.test.js +23 -25
  445. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
  446. package/dist/v2/__tests__/FileCard.test.js +29 -28
  447. package/dist/v2/__tests__/FileCard.test.js.map +1 -1
  448. package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
  449. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
  450. package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
  451. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
  452. package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
  453. package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
  454. package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
  455. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
  456. package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
  457. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  458. package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
  459. package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
  460. package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
  461. package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
  462. package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
  463. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
  464. package/dist/v2/__tests__/apiError.test.js +50 -69
  465. package/dist/v2/__tests__/apiError.test.js.map +1 -1
  466. package/dist/v2/__tests__/banned-patterns.test.js +42 -123
  467. package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
  468. package/dist/v2/__tests__/chart-palette.test.js +205 -0
  469. package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
  470. package/dist/v2/__tests__/contrast-palette.test.js +42 -74
  471. package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
  472. package/dist/v2/__tests__/cssVariables.test.js +44 -51
  473. package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
  474. package/dist/v2/__tests__/fileValidation.test.js +136 -0
  475. package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
  476. package/dist/v2/__tests__/filterCriteria.test.js +324 -0
  477. package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
  478. package/dist/v2/__tests__/fmtDate.test.js +69 -0
  479. package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
  480. package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
  481. package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
  482. package/dist/v2/__tests__/labels-merge.test.js +23 -27
  483. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  484. package/dist/v2/__tests__/locale-fallback.test.js +47 -52
  485. package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
  486. package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
  487. package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
  488. package/dist/v2/__tests__/rowActions.test.js +186 -0
  489. package/dist/v2/__tests__/rowActions.test.js.map +1 -0
  490. package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
  491. package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
  492. package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
  493. package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
  494. package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
  495. package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
  496. package/dist/v2/components/Accordion.js +60 -82
  497. package/dist/v2/components/Accordion.js.map +1 -1
  498. package/dist/v2/components/ActionStrip.js +40 -52
  499. package/dist/v2/components/ActionStrip.js.map +1 -1
  500. package/dist/v2/components/Banner.js +42 -41
  501. package/dist/v2/components/Banner.js.map +1 -1
  502. package/dist/v2/components/Busy.js +22 -27
  503. package/dist/v2/components/Busy.js.map +1 -1
  504. package/dist/v2/components/Button.js +39 -50
  505. package/dist/v2/components/Button.js.map +1 -1
  506. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  507. package/dist/v2/components/CategoryTag.js +49 -32
  508. package/dist/v2/components/CategoryTag.js.map +1 -1
  509. package/dist/v2/components/Checkbox.js +39 -45
  510. package/dist/v2/components/Checkbox.js.map +1 -1
  511. package/dist/v2/components/Chip.js +29 -42
  512. package/dist/v2/components/Chip.js.map +1 -1
  513. package/dist/v2/components/Combobox.js +122 -144
  514. package/dist/v2/components/Combobox.js.map +1 -1
  515. package/dist/v2/components/CommandPalette.js +138 -225
  516. package/dist/v2/components/CommandPalette.js.map +1 -1
  517. package/dist/v2/components/ConfirmDialog.js +46 -56
  518. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  519. package/dist/v2/components/DatePicker.js +81 -86
  520. package/dist/v2/components/DatePicker.js.map +1 -1
  521. package/dist/v2/components/DateRangePicker.js +77 -87
  522. package/dist/v2/components/DateRangePicker.js.map +1 -1
  523. package/dist/v2/components/DateTimePicker.js +84 -91
  524. package/dist/v2/components/DateTimePicker.js.map +1 -1
  525. package/dist/v2/components/Drawer.d.ts.map +1 -1
  526. package/dist/v2/components/Drawer.js +93 -88
  527. package/dist/v2/components/Drawer.js.map +1 -1
  528. package/dist/v2/components/Dropzone.js +150 -196
  529. package/dist/v2/components/Dropzone.js.map +1 -1
  530. package/dist/v2/components/EmptyState.js +18 -20
  531. package/dist/v2/components/EmptyState.js.map +1 -1
  532. package/dist/v2/components/FavoriteToggle.js +28 -39
  533. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  534. package/dist/v2/components/Field.d.ts +62 -4
  535. package/dist/v2/components/Field.d.ts.map +1 -1
  536. package/dist/v2/components/Field.js +169 -70
  537. package/dist/v2/components/Field.js.map +1 -1
  538. package/dist/v2/components/FieldError.js +18 -21
  539. package/dist/v2/components/FieldError.js.map +1 -1
  540. package/dist/v2/components/FieldHelp.js +40 -60
  541. package/dist/v2/components/FieldHelp.js.map +1 -1
  542. package/dist/v2/components/FileCard.js +27 -31
  543. package/dist/v2/components/FileCard.js.map +1 -1
  544. package/dist/v2/components/FilterTab.js +30 -38
  545. package/dist/v2/components/FilterTab.js.map +1 -1
  546. package/dist/v2/components/ForbiddenPage.d.ts +25 -1
  547. package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
  548. package/dist/v2/components/ForbiddenPage.js +37 -17
  549. package/dist/v2/components/ForbiddenPage.js.map +1 -1
  550. package/dist/v2/components/FormGrid.js +53 -59
  551. package/dist/v2/components/FormGrid.js.map +1 -1
  552. package/dist/v2/components/FormikDisplay.d.ts +50 -1
  553. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  554. package/dist/v2/components/FormikDisplay.js +108 -33
  555. package/dist/v2/components/FormikDisplay.js.map +1 -1
  556. package/dist/v2/components/Input.d.ts +40 -0
  557. package/dist/v2/components/Input.d.ts.map +1 -1
  558. package/dist/v2/components/Input.js +81 -41
  559. package/dist/v2/components/Input.js.map +1 -1
  560. package/dist/v2/components/KPICard.js +57 -67
  561. package/dist/v2/components/KPICard.js.map +1 -1
  562. package/dist/v2/components/KPIStrip.js +16 -22
  563. package/dist/v2/components/KPIStrip.js.map +1 -1
  564. package/dist/v2/components/KV.js +25 -31
  565. package/dist/v2/components/KV.js.map +1 -1
  566. package/dist/v2/components/KVGrid.js +19 -26
  567. package/dist/v2/components/KVGrid.js.map +1 -1
  568. package/dist/v2/components/Layout.js +91 -120
  569. package/dist/v2/components/Layout.js.map +1 -1
  570. package/dist/v2/components/MobileRowCard.js +79 -91
  571. package/dist/v2/components/MobileRowCard.js.map +1 -1
  572. package/dist/v2/components/Modal.js +61 -69
  573. package/dist/v2/components/Modal.js.map +1 -1
  574. package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
  575. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  576. package/dist/v2/components/NetworkErrorPage.js +38 -21
  577. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  578. package/dist/v2/components/NotFoundPage.d.ts +17 -1
  579. package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
  580. package/dist/v2/components/NotFoundPage.js +37 -18
  581. package/dist/v2/components/NotFoundPage.js.map +1 -1
  582. package/dist/v2/components/NumberInput.js +88 -118
  583. package/dist/v2/components/NumberInput.js.map +1 -1
  584. package/dist/v2/components/OverflowMenu.js +38 -56
  585. package/dist/v2/components/OverflowMenu.js.map +1 -1
  586. package/dist/v2/components/PdfViewer.js +34 -45
  587. package/dist/v2/components/PdfViewer.js.map +1 -1
  588. package/dist/v2/components/ProgressBar.js +42 -49
  589. package/dist/v2/components/ProgressBar.js.map +1 -1
  590. package/dist/v2/components/Radio.js +59 -67
  591. package/dist/v2/components/Radio.js.map +1 -1
  592. package/dist/v2/components/SectionErrorBoundary.js +90 -135
  593. package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
  594. package/dist/v2/components/SectionHeader.js +34 -41
  595. package/dist/v2/components/SectionHeader.js.map +1 -1
  596. package/dist/v2/components/Segmented.js +69 -93
  597. package/dist/v2/components/Segmented.js.map +1 -1
  598. package/dist/v2/components/Select.d.ts +26 -2
  599. package/dist/v2/components/Select.d.ts.map +1 -1
  600. package/dist/v2/components/Select.js +120 -155
  601. package/dist/v2/components/Select.js.map +1 -1
  602. package/dist/v2/components/ServerErrorPage.d.ts +27 -1
  603. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  604. package/dist/v2/components/ServerErrorPage.js +37 -20
  605. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  606. package/dist/v2/components/Skeleton.js +86 -100
  607. package/dist/v2/components/Skeleton.js.map +1 -1
  608. package/dist/v2/components/SkipLink.js +9 -12
  609. package/dist/v2/components/SkipLink.js.map +1 -1
  610. package/dist/v2/components/Spinner.js +16 -25
  611. package/dist/v2/components/Spinner.js.map +1 -1
  612. package/dist/v2/components/Status.js +18 -29
  613. package/dist/v2/components/Status.js.map +1 -1
  614. package/dist/v2/components/Stepper.js +80 -82
  615. package/dist/v2/components/Stepper.js.map +1 -1
  616. package/dist/v2/components/Surface.js +34 -49
  617. package/dist/v2/components/Surface.js.map +1 -1
  618. package/dist/v2/components/Switch.js +29 -37
  619. package/dist/v2/components/Switch.js.map +1 -1
  620. package/dist/v2/components/TabPanel.d.ts +17 -0
  621. package/dist/v2/components/TabPanel.d.ts.map +1 -0
  622. package/dist/v2/components/TabPanel.js +90 -0
  623. package/dist/v2/components/TabPanel.js.map +1 -0
  624. package/dist/v2/components/Tabs.d.ts +25 -0
  625. package/dist/v2/components/Tabs.d.ts.map +1 -1
  626. package/dist/v2/components/Tabs.js +53 -29
  627. package/dist/v2/components/Tabs.js.map +1 -1
  628. package/dist/v2/components/TelInput.js +80 -115
  629. package/dist/v2/components/TelInput.js.map +1 -1
  630. package/dist/v2/components/Textarea.js +26 -35
  631. package/dist/v2/components/Textarea.js.map +1 -1
  632. package/dist/v2/components/TimePicker.js +62 -74
  633. package/dist/v2/components/TimePicker.js.map +1 -1
  634. package/dist/v2/components/Toast.js +119 -174
  635. package/dist/v2/components/Toast.js.map +1 -1
  636. package/dist/v2/components/Tooltip.js +23 -38
  637. package/dist/v2/components/Tooltip.js.map +1 -1
  638. package/dist/v2/components/_ErrorPageBody.js +15 -16
  639. package/dist/v2/components/_ErrorPageBody.js.map +1 -1
  640. package/dist/v2/components/_pickerShared.js +5 -5
  641. package/dist/v2/components/_pickerShared.js.map +1 -1
  642. package/dist/v2/components/index.d.ts +40 -1
  643. package/dist/v2/components/index.d.ts.map +1 -1
  644. package/dist/v2/components/index.js +153 -136
  645. package/dist/v2/components/index.js.map +1 -1
  646. package/dist/v2/hooks/index.d.ts +65 -0
  647. package/dist/v2/hooks/index.d.ts.map +1 -1
  648. package/dist/v2/hooks/index.js +63 -24
  649. package/dist/v2/hooks/index.js.map +1 -1
  650. package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
  651. package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
  652. package/dist/v2/hooks/useAppliedFilters.js +117 -0
  653. package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
  654. package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
  655. package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
  656. package/dist/v2/hooks/useDebouncedCallback.js +87 -0
  657. package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
  658. package/dist/v2/hooks/useDelayedFlag.js +6 -20
  659. package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
  660. package/dist/v2/hooks/useDensity.d.ts.map +1 -1
  661. package/dist/v2/hooks/useDensity.js +14 -18
  662. package/dist/v2/hooks/useDensity.js.map +1 -1
  663. package/dist/v2/hooks/useFocusFirstError.js +26 -34
  664. package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
  665. package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
  666. package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
  667. package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
  668. package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
  669. package/dist/v2/hooks/useFocusTrap.js +20 -24
  670. package/dist/v2/hooks/useFocusTrap.js.map +1 -1
  671. package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
  672. package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
  673. package/dist/v2/hooks/useFormAutoSave.js +39 -54
  674. package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
  675. package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
  676. package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
  677. package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
  678. package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
  679. package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
  680. package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  681. package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
  682. package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
  683. package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
  684. package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
  685. package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
  686. package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
  687. package/dist/v2/hooks/useResolvedDensity.js +5 -13
  688. package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
  689. package/dist/v2/hooks/useSortedRows.js +4 -6
  690. package/dist/v2/hooks/useSortedRows.js.map +1 -1
  691. package/dist/v2/hooks/useTabLoading.js +7 -22
  692. package/dist/v2/hooks/useTabLoading.js.map +1 -1
  693. package/dist/v2/index.js +143 -145
  694. package/dist/v2/index.js.map +1 -1
  695. package/dist/v2/modalContext.js +2 -2
  696. package/dist/v2/modalContext.js.map +1 -1
  697. package/dist/v2/models/favorite.d.ts +8 -9
  698. package/dist/v2/models/favorite.d.ts.map +1 -1
  699. package/dist/v2/models/favorite.js.map +1 -1
  700. package/dist/v2/models/index.js +4 -4
  701. package/dist/v2/models/index.js.map +1 -1
  702. package/dist/v2/models/personalization.d.ts +44 -48
  703. package/dist/v2/models/personalization.d.ts.map +1 -1
  704. package/dist/v2/models/personalization.js.map +1 -1
  705. package/dist/v2/models/referentiel.d.ts +32 -50
  706. package/dist/v2/models/referentiel.d.ts.map +1 -1
  707. package/dist/v2/models/referentiel.js.map +1 -1
  708. package/dist/v2/models/savedFilter.d.ts +8 -17
  709. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  710. package/dist/v2/models/savedFilter.js.map +1 -1
  711. package/dist/v2/patterns/ActionBar.js +152 -187
  712. package/dist/v2/patterns/ActionBar.js.map +1 -1
  713. package/dist/v2/patterns/AppMain.d.ts +109 -0
  714. package/dist/v2/patterns/AppMain.d.ts.map +1 -0
  715. package/dist/v2/patterns/AppMain.js +115 -0
  716. package/dist/v2/patterns/AppMain.js.map +1 -0
  717. package/dist/v2/patterns/BulkActionBar.js +40 -42
  718. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  719. package/dist/v2/patterns/ChartFigure.d.ts +124 -0
  720. package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
  721. package/dist/v2/patterns/ChartFigure.js +159 -0
  722. package/dist/v2/patterns/ChartFigure.js.map +1 -0
  723. package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
  724. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  725. package/dist/v2/patterns/ColumnsToggle.js +60 -94
  726. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  727. package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
  728. package/dist/v2/patterns/DataGrid.js +262 -297
  729. package/dist/v2/patterns/DataGrid.js.map +1 -1
  730. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
  731. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  732. package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
  733. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  734. package/dist/v2/patterns/DataGridToolbar.js +103 -106
  735. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  736. package/dist/v2/patterns/DataGridVirtualized.js +179 -217
  737. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  738. package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
  739. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  740. package/dist/v2/patterns/DetailSplit.d.ts +87 -0
  741. package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
  742. package/dist/v2/patterns/DetailSplit.js +116 -0
  743. package/dist/v2/patterns/DetailSplit.js.map +1 -0
  744. package/dist/v2/patterns/FavoriteColumn.js +22 -23
  745. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  746. package/dist/v2/patterns/FavoritesFilter.js +36 -44
  747. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  748. package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
  749. package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
  750. package/dist/v2/patterns/FilterTabBar.js +120 -0
  751. package/dist/v2/patterns/FilterTabBar.js.map +1 -0
  752. package/dist/v2/patterns/FormErrorSummary.js +20 -23
  753. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  754. package/dist/v2/patterns/FormPageShell.js +53 -50
  755. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  756. package/dist/v2/patterns/FormSection.d.ts +8 -3
  757. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  758. package/dist/v2/patterns/FormSection.js +44 -51
  759. package/dist/v2/patterns/FormSection.js.map +1 -1
  760. package/dist/v2/patterns/FormikCheckbox.js +36 -45
  761. package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
  762. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
  763. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  764. package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
  765. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  766. package/dist/v2/patterns/FormikCombobox.js +55 -72
  767. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  768. package/dist/v2/patterns/FormikDatePicker.js +50 -64
  769. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  770. package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
  771. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
  772. package/dist/v2/patterns/FormikErrorFocus.js +25 -26
  773. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  774. package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
  775. package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
  776. package/dist/v2/patterns/FormikErrorSummary.js +97 -0
  777. package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
  778. package/dist/v2/patterns/FormikFile.d.ts +14 -1
  779. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  780. package/dist/v2/patterns/FormikFile.js +99 -83
  781. package/dist/v2/patterns/FormikFile.js.map +1 -1
  782. package/dist/v2/patterns/FormikInput.js +45 -58
  783. package/dist/v2/patterns/FormikInput.js.map +1 -1
  784. package/dist/v2/patterns/FormikRadioGroup.js +45 -56
  785. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
  786. package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
  787. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  788. package/dist/v2/patterns/FormikReferentielField.js +54 -64
  789. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  790. package/dist/v2/patterns/FormikSelect.js +70 -92
  791. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  792. package/dist/v2/patterns/FormikTextarea.js +35 -51
  793. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  794. package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
  795. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  796. package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
  797. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  798. package/dist/v2/patterns/PageContent.js +17 -20
  799. package/dist/v2/patterns/PageContent.js.map +1 -1
  800. package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
  801. package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
  802. package/dist/v2/patterns/PreviewDrawer.js +159 -0
  803. package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
  804. package/dist/v2/patterns/ReferentielField.d.ts +86 -2
  805. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  806. package/dist/v2/patterns/ReferentielField.js +347 -327
  807. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  808. package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
  809. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
  810. package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
  811. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
  812. package/dist/v2/patterns/SaveFilterDialog.js +50 -77
  813. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  814. package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
  815. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  816. package/dist/v2/patterns/SkeletonPageShell.js +122 -143
  817. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  818. package/dist/v2/patterns/SortableHeader.js +35 -57
  819. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  820. package/dist/v2/patterns/Tour.js +121 -142
  821. package/dist/v2/patterns/Tour.js.map +1 -1
  822. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  823. package/dist/v2/patterns/_dataGridShared.js +131 -147
  824. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  825. package/dist/v2/patterns/_pickerSerialisation.js +9 -10
  826. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
  827. package/dist/v2/patterns/_sort.js +17 -33
  828. package/dist/v2/patterns/_sort.js.map +1 -1
  829. package/dist/v2/patterns/_useColumnReorder.js +124 -163
  830. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  831. package/dist/v2/patterns/_useColumnResize.js +80 -99
  832. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  833. package/dist/v2/patterns/filterCriteria.d.ts +78 -0
  834. package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
  835. package/dist/v2/patterns/filterCriteria.js +110 -0
  836. package/dist/v2/patterns/filterCriteria.js.map +1 -0
  837. package/dist/v2/patterns/index.d.ts +160 -0
  838. package/dist/v2/patterns/index.d.ts.map +1 -1
  839. package/dist/v2/patterns/index.js +157 -79
  840. package/dist/v2/patterns/index.js.map +1 -1
  841. package/dist/v2/patterns/rowActions.d.ts +150 -0
  842. package/dist/v2/patterns/rowActions.d.ts.map +1 -0
  843. package/dist/v2/patterns/rowActions.js +232 -0
  844. package/dist/v2/patterns/rowActions.js.map +1 -0
  845. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  846. package/dist/v2/personalization/PersonalizationProvider.js +57 -53
  847. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  848. package/dist/v2/personalization/adapters/_storageKey.js +5 -5
  849. package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
  850. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
  851. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  852. package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
  853. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  854. package/dist/v2/personalization/adapters/index.js +5 -5
  855. package/dist/v2/personalization/adapters/index.js.map +1 -1
  856. package/dist/v2/personalization/capabilities/favorites.js +39 -62
  857. package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
  858. package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
  859. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  860. package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
  861. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
  862. package/dist/v2/personalization/capabilities/index.js +12 -12
  863. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
  864. package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
  865. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
  866. package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
  867. package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
  868. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  869. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  870. package/dist/v2/personalization/createPersonalizationStore.js +81 -182
  871. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  872. package/dist/v2/personalization/index.d.ts +16 -0
  873. package/dist/v2/personalization/index.d.ts.map +1 -1
  874. package/dist/v2/personalization/index.js +30 -23
  875. package/dist/v2/personalization/index.js.map +1 -1
  876. package/dist/v2/personalization/personalizationContext.js +10 -12
  877. package/dist/v2/personalization/personalizationContext.js.map +1 -1
  878. package/dist/v2/personalization/schema.js +8 -9
  879. package/dist/v2/personalization/schema.js.map +1 -1
  880. package/dist/v2/referentiel/ReferentielProvider.js +31 -45
  881. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  882. package/dist/v2/referentiel/index.js +11 -13
  883. package/dist/v2/referentiel/index.js.map +1 -1
  884. package/dist/v2/referentiel/types.d.ts +105 -0
  885. package/dist/v2/referentiel/types.d.ts.map +1 -0
  886. package/dist/v2/referentiel/types.js +6 -0
  887. package/dist/v2/referentiel/types.js.map +1 -0
  888. package/dist/v2/referentiel/useReferentielClient.js +13 -16
  889. package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
  890. package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
  891. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  892. package/dist/v2/referentiel/useReferentielOptions.js +63 -120
  893. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  894. package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
  895. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  896. package/dist/v2/referentiel/useReferentielSearch.js +40 -95
  897. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  898. package/dist/v2/theme/_brand.js +12 -26
  899. package/dist/v2/theme/_brand.js.map +1 -1
  900. package/dist/v2/theme/_brandSecondary.js +12 -26
  901. package/dist/v2/theme/_brandSecondary.js.map +1 -1
  902. package/dist/v2/theme/createPortnetTheme.js +41 -49
  903. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  904. package/dist/v2/theme/cssVariables.d.ts +3 -3
  905. package/dist/v2/theme/cssVariables.d.ts.map +1 -1
  906. package/dist/v2/theme/cssVariables.js +65 -70
  907. package/dist/v2/theme/cssVariables.js.map +1 -1
  908. package/dist/v2/theme/index.js +10 -10
  909. package/dist/v2/theme/index.js.map +1 -1
  910. package/dist/v2/tokens/breakpoints.js +16 -16
  911. package/dist/v2/tokens/breakpoints.js.map +1 -1
  912. package/dist/v2/tokens/chart.d.ts +103 -0
  913. package/dist/v2/tokens/chart.d.ts.map +1 -0
  914. package/dist/v2/tokens/chart.js +270 -0
  915. package/dist/v2/tokens/chart.js.map +1 -0
  916. package/dist/v2/tokens/colors.js +24 -24
  917. package/dist/v2/tokens/colors.js.map +1 -1
  918. package/dist/v2/tokens/density.d.ts +104 -0
  919. package/dist/v2/tokens/density.d.ts.map +1 -1
  920. package/dist/v2/tokens/density.js +67 -12
  921. package/dist/v2/tokens/density.js.map +1 -1
  922. package/dist/v2/tokens/index.d.ts +50 -1
  923. package/dist/v2/tokens/index.d.ts.map +1 -1
  924. package/dist/v2/tokens/index.js +116 -68
  925. package/dist/v2/tokens/index.js.map +1 -1
  926. package/dist/v2/tokens/motion.js +16 -22
  927. package/dist/v2/tokens/motion.js.map +1 -1
  928. package/dist/v2/tokens/radius.js +3 -3
  929. package/dist/v2/tokens/radius.js.map +1 -1
  930. package/dist/v2/tokens/shadows.js +8 -8
  931. package/dist/v2/tokens/shadows.js.map +1 -1
  932. package/dist/v2/tokens/spacing.js +4 -4
  933. package/dist/v2/tokens/spacing.js.map +1 -1
  934. package/dist/v2/tokens/state.js +3 -3
  935. package/dist/v2/tokens/state.js.map +1 -1
  936. package/dist/v2/tokens/statusPalette.js +21 -23
  937. package/dist/v2/tokens/statusPalette.js.map +1 -1
  938. package/dist/v2/tokens/tokens.json +6 -1
  939. package/dist/v2/tokens/typography.js +15 -15
  940. package/dist/v2/tokens/typography.js.map +1 -1
  941. package/dist/v2/tokens/zIndex.js +3 -3
  942. package/dist/v2/tokens/zIndex.js.map +1 -1
  943. package/dist/v2/types/datagrid.d.ts +9 -1
  944. package/dist/v2/types/datagrid.d.ts.map +1 -1
  945. package/dist/v2/types/datagrid.js.map +1 -1
  946. package/dist/v2/types/index.js +2 -2
  947. package/dist/v2/types/index.js.map +1 -1
  948. package/dist/v2/utils/apiError.js +16 -37
  949. package/dist/v2/utils/apiError.js.map +1 -1
  950. package/dist/v2/utils/contrast.js +31 -32
  951. package/dist/v2/utils/contrast.js.map +1 -1
  952. package/dist/v2/utils/cx.js +7 -27
  953. package/dist/v2/utils/cx.js.map +1 -1
  954. package/dist/v2/utils/fileDownload.js +25 -28
  955. package/dist/v2/utils/fileDownload.js.map +1 -1
  956. package/dist/v2/utils/fileValidation.d.ts +116 -0
  957. package/dist/v2/utils/fileValidation.d.ts.map +1 -0
  958. package/dist/v2/utils/fileValidation.js +220 -0
  959. package/dist/v2/utils/fileValidation.js.map +1 -0
  960. package/dist/v2/utils/fmtDate.d.ts +103 -0
  961. package/dist/v2/utils/fmtDate.d.ts.map +1 -0
  962. package/dist/v2/utils/fmtDate.js +119 -0
  963. package/dist/v2/utils/fmtDate.js.map +1 -0
  964. package/dist/v2/utils/fmtMoney.d.ts +3 -3
  965. package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
  966. package/dist/v2/utils/fmtMoney.js +9 -11
  967. package/dist/v2/utils/fmtMoney.js.map +1 -1
  968. package/dist/v2/utils/formikErrors.d.ts +67 -0
  969. package/dist/v2/utils/formikErrors.d.ts.map +1 -0
  970. package/dist/v2/utils/formikErrors.js +85 -0
  971. package/dist/v2/utils/formikErrors.js.map +1 -0
  972. package/dist/v2/utils/index.d.ts +5 -0
  973. package/dist/v2/utils/index.d.ts.map +1 -1
  974. package/dist/v2/utils/index.js +67 -18
  975. package/dist/v2/utils/index.js.map +1 -1
  976. package/dist/v2/utils/mergeLabels.js +9 -14
  977. package/dist/v2/utils/mergeLabels.js.map +1 -1
  978. package/dist/v2/utils/networkStatus.js +14 -14
  979. package/dist/v2/utils/networkStatus.js.map +1 -1
  980. package/package.json +26 -9
@@ -1,19 +1,3 @@
1
- var _excluded = ["value", "onChange", "onBlur", "options", "placeholder", "disabled", "error", "fullWidth", "multiple", "labels", "searchable", "searchThreshold", "inputRef", "sx"];
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 _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
- 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."); }
9
- 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; } }
10
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
- function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
12
- function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
13
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
14
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
- function _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); }
17
1
  import * as React from "react";
18
2
  import MuiSelect from "@mui/material/Select";
19
3
  import MenuItem from "@mui/material/MenuItem";
@@ -60,13 +44,11 @@ import { mergeLabels } from "../utils/mergeLabels";
60
44
  * { target: { value } } object in the chip-remove / clear-all paths.
61
45
  */
62
46
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
63
- var DEFAULT_LABELS = Object.freeze({
47
+ const DEFAULT_LABELS = Object.freeze({
64
48
  placeholder: "Sélectionner…",
65
49
  clearAll: "Tout effacer",
66
50
  clearAllAria: "Tout effacer la sélection",
67
- removeChip: function removeChip(lbl) {
68
- return "Retirer ".concat(String(lbl));
69
- },
51
+ removeChip: lbl => `Retirer ${String(lbl)}`,
70
52
  searchLabel: "Rechercher…",
71
53
  searchClear: "Effacer la recherche",
72
54
  noOptions: "Aucun résultat"
@@ -104,27 +86,18 @@ var DEFAULT_LABELS = Object.freeze({
104
86
  */
105
87
 
106
88
  export function isRecord(v) {
107
- return _typeof(v) === "object" && v !== null;
89
+ return typeof v === "object" && v !== null;
108
90
  }
109
91
 
110
92
  /** Stable string key for a value, primitive or object. "" when undecidable. */
111
93
  export function valueKey(v) {
112
94
  if (v === null || v === undefined) return "";
113
95
  if (!isRecord(v)) return String(v);
114
- var _iterator = _createForOfIteratorHelper(["value", "id", "code"]),
115
- _step;
116
- try {
117
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
118
- var k = _step.value;
119
- var candidate = v[k];
120
- if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {
121
- return String(candidate);
122
- }
96
+ for (const k of ["value", "id", "code"]) {
97
+ const candidate = v[k];
98
+ if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {
99
+ return String(candidate);
123
100
  }
124
- } catch (err) {
125
- _iterator.e(err);
126
- } finally {
127
- _iterator.f();
128
101
  }
129
102
  return "";
130
103
  }
@@ -140,7 +113,7 @@ export function valueKey(v) {
140
113
  export function sameOptionValue(a, b) {
141
114
  if (a === b) return true;
142
115
  if (isRecord(a) || isRecord(b)) {
143
- var ka = valueKey(a);
116
+ const ka = valueKey(a);
144
117
  return ka !== "" && ka === valueKey(b);
145
118
  }
146
119
  return String(a) === String(b);
@@ -154,21 +127,12 @@ export function sameOptionValue(a, b) {
154
127
  export function labelFromValue(v) {
155
128
  if (v === null || v === undefined) return null;
156
129
  if (!isRecord(v)) return String(v);
157
- var _iterator2 = _createForOfIteratorHelper(["label", "description", "name", "libelle", "code"]),
158
- _step2;
159
- try {
160
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
161
- var k = _step2.value;
162
- var candidate = v[k];
163
- if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {
164
- var s = String(candidate);
165
- if (s !== "") return s;
166
- }
130
+ for (const k of ["label", "description", "name", "libelle", "code"]) {
131
+ const candidate = v[k];
132
+ if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {
133
+ const s = String(candidate);
134
+ if (s !== "") return s;
167
135
  }
168
- } catch (err) {
169
- _iterator2.e(err);
170
- } finally {
171
- _iterator2.f();
172
136
  }
173
137
  return null;
174
138
  }
@@ -178,7 +142,7 @@ export function labelFromValue(v) {
178
142
  * onKeyDown stopPropagation prevents MUI's keyboard handler from
179
143
  * treating typed characters as list-navigation shortcuts.
180
144
  * ─────────────────────────────────────────────────────────────────── */
181
- var SEARCH_WRAPPER_SX = Object.freeze({
145
+ const SEARCH_WRAPPER_SX = Object.freeze({
182
146
  position: "sticky",
183
147
  top: 0,
184
148
  zIndex: 1,
@@ -189,32 +153,29 @@ var SEARCH_WRAPPER_SX = Object.freeze({
189
153
  alignItems: "center",
190
154
  gap: "var(--s-2)"
191
155
  });
192
- var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
193
- var value = _ref.value,
194
- onChange = _ref.onChange,
195
- onBlur = _ref.onBlur,
196
- _ref$options = _ref.options,
197
- options = _ref$options === void 0 ? [] : _ref$options,
198
- placeholder = _ref.placeholder,
199
- disabled = _ref.disabled,
200
- error = _ref.error,
201
- _ref$fullWidth = _ref.fullWidth,
202
- fullWidth = _ref$fullWidth === void 0 ? true : _ref$fullWidth,
203
- _ref$multiple = _ref.multiple,
204
- multiple = _ref$multiple === void 0 ? false : _ref$multiple,
205
- labels = _ref.labels,
206
- _ref$searchable = _ref.searchable,
207
- searchable = _ref$searchable === void 0 ? false : _ref$searchable,
208
- searchThreshold = _ref.searchThreshold,
209
- callerInputRef = _ref.inputRef,
210
- sx = _ref.sx,
211
- rest = _objectWithoutProperties(_ref, _excluded);
156
+ const Select = /*#__PURE__*/React.forwardRef(function Select({
157
+ value,
158
+ onChange,
159
+ onBlur,
160
+ options = [],
161
+ placeholder,
162
+ disabled,
163
+ error,
164
+ fullWidth = true,
165
+ multiple = false,
166
+ labels,
167
+ searchable = false,
168
+ searchThreshold,
169
+ inputRef: callerInputRef,
170
+ sx,
171
+ ...rest
172
+ }, ref) {
212
173
  /* ── MUI v9 focus safety — always-present input ref ──────────────
213
174
  * MuiSelect calls inputRef.current.focus() on click. Guarantee a
214
175
  * live node by owning the ref here and merging any caller-provided
215
176
  * inputRef / forwarded ref onto it. */
216
- var innerInputRef = React.useRef(null);
217
- var setInputRef = React.useCallback(function (node) {
177
+ const innerInputRef = React.useRef(null);
178
+ const setInputRef = React.useCallback(node => {
218
179
  innerInputRef.current = node;
219
180
  if (typeof callerInputRef === "function") callerInputRef(node);
220
181
  // A caller-supplied ref object is typed with a readonly `current` by
@@ -227,55 +188,45 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
227
188
  }, [callerInputRef, ref]);
228
189
 
229
190
  /* ── Determine whether to show search ──────────────────────────── */
230
- var showSearch = searchable || typeof searchThreshold === "number" && options.length >= searchThreshold;
191
+ const showSearch = searchable || typeof searchThreshold === "number" && options.length >= searchThreshold;
231
192
 
232
193
  /* Dev-time charter warn: only fires when no search is configured */
233
194
  if (process.env["NODE_ENV"] !== "production" && !showSearch && options.length > 30) {
234
195
  // eslint-disable-next-line no-console
235
- console.warn("[@portnet/ui v2] <Select> has ".concat(options.length, " options \u2014 charter R-Sel.1: use searchThreshold={8} or Combobox above 30."));
196
+ console.warn(`[@portnet/ui v2] <Select> has ${options.length} options charter R-Sel.1: use searchThreshold={8} or Combobox above 30.`);
236
197
  }
237
- var L = mergeLabels(DEFAULT_LABELS, labels);
238
- var effectivePlaceholder = placeholder !== null && placeholder !== void 0 ? placeholder : L.placeholder;
198
+ const L = mergeLabels(DEFAULT_LABELS, labels);
199
+ const effectivePlaceholder = placeholder ?? L.placeholder;
239
200
 
240
201
  /* ── Search state ──────────────────────────────────────────────── */
241
- var _React$useState = React.useState(""),
242
- _React$useState2 = _slicedToArray(_React$useState, 2),
243
- searchQuery = _React$useState2[0],
244
- setSearchQuery = _React$useState2[1];
245
- var searchRef = React.useRef(null);
246
- var handleClose = React.useCallback(function () {
247
- return setSearchQuery("");
248
- }, []);
202
+ const [searchQuery, setSearchQuery] = React.useState("");
203
+ const searchRef = React.useRef(null);
204
+ const handleClose = React.useCallback(() => setSearchQuery(""), []);
249
205
 
250
206
  /* Focus the search input as soon as the dropdown opens.
251
207
  * MUI renders the Popover asynchronously → small delay needed. */
252
- var handleOpen = React.useCallback(function () {
208
+ const handleOpen = React.useCallback(() => {
253
209
  if (showSearch) {
254
- setTimeout(function () {
255
- var _searchRef$current;
256
- return (_searchRef$current = searchRef.current) === null || _searchRef$current === void 0 ? void 0 : _searchRef$current.focus();
257
- }, 50);
210
+ setTimeout(() => searchRef.current?.focus(), 50);
258
211
  }
259
212
  }, [showSearch]);
260
- var filteredOptions = React.useMemo(function () {
213
+ const filteredOptions = React.useMemo(() => {
261
214
  if (!showSearch || !searchQuery.trim()) return options;
262
- var q = searchQuery.trim().toLowerCase();
263
- return options.filter(function (o) {
264
- var label = typeof o === "string" ? o : o.label;
215
+ const q = searchQuery.trim().toLowerCase();
216
+ return options.filter(o => {
217
+ const label = typeof o === "string" ? o : o.label;
265
218
  return String(label).toLowerCase().includes(q);
266
219
  });
267
220
  }, [options, searchQuery, showSearch]);
268
221
 
269
222
  /* ── Label resolver ────────────────────────────────────────────── */
270
- var optionLabel = React.useCallback(function (v) {
271
- var opt = options.find(function (o) {
272
- return sameOptionValue(typeof o === "string" ? o : o.value, v);
273
- });
223
+ const optionLabel = React.useCallback(v => {
224
+ const opt = options.find(o => sameOptionValue(typeof o === "string" ? o : o.value, v));
274
225
  if (opt) return typeof opt === "string" ? opt : opt.label;
275
226
 
276
227
  /* No match. NEVER return `v` unguarded — an object here is a React-child
277
228
  * crash. Derive something readable, else show the placeholder. */
278
- var derived = labelFromValue(v);
229
+ const derived = labelFromValue(v);
279
230
  if (derived !== null) return derived;
280
231
  return /*#__PURE__*/_jsx("span", {
281
232
  style: {
@@ -286,7 +237,7 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
286
237
  }, [options, effectivePlaceholder]);
287
238
 
288
239
  /* ── Multi-select helpers ──────────────────────────────────────── */
289
- var fireChange = React.useCallback(function (nextValue) {
240
+ const fireChange = React.useCallback(nextValue => {
290
241
  if (!onChange) return;
291
242
  onChange({
292
243
  target: {
@@ -294,27 +245,21 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
294
245
  }
295
246
  });
296
247
  }, [onChange]);
297
- var removeOne = function removeOne(val) {
298
- return function (e) {
299
- e.stopPropagation();
300
- if (!multiple) return;
301
- var arr = Array.isArray(value) ? value : [];
302
- fireChange(arr.filter(function (v) {
303
- return !sameOptionValue(v, val);
304
- }));
305
- };
248
+ const removeOne = val => e => {
249
+ e.stopPropagation();
250
+ if (!multiple) return;
251
+ const arr = Array.isArray(value) ? value : [];
252
+ fireChange(arr.filter(v => !sameOptionValue(v, val)));
306
253
  };
307
- var clearAll = function clearAll(e) {
254
+ const clearAll = e => {
308
255
  e.stopPropagation();
309
256
  if (!multiple) return;
310
257
  fireChange([]);
311
258
  };
312
- var stop = function stop(e) {
313
- return e.stopPropagation();
314
- };
315
- return /*#__PURE__*/_jsxs(MuiSelect, _objectSpread(_objectSpread({
259
+ const stop = e => e.stopPropagation();
260
+ return /*#__PURE__*/_jsxs(MuiSelect, {
316
261
  inputRef: setInputRef,
317
- value: value !== null && value !== void 0 ? value : multiple ? [] : "",
262
+ value: value ?? (multiple ? [] : ""),
318
263
  onChange: onChange,
319
264
  onBlur: onBlur,
320
265
  onOpen: handleOpen,
@@ -325,9 +270,9 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
325
270
  fullWidth: fullWidth,
326
271
  multiple: multiple,
327
272
  size: "small",
328
- renderValue: function renderValue(selected) {
273
+ renderValue: selected => {
329
274
  if (multiple) {
330
- var arr = Array.isArray(selected) ? selected : [];
275
+ const arr = Array.isArray(selected) ? selected : [];
331
276
  if (arr.length === 0) {
332
277
  return /*#__PURE__*/_jsx("span", {
333
278
  style: {
@@ -343,8 +288,8 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
343
288
  alignItems: "center",
344
289
  gap: 0.5
345
290
  },
346
- children: [arr.map(function (v, i) {
347
- var lbl = optionLabel(v);
291
+ children: [arr.map((v, i) => {
292
+ const lbl = optionLabel(v);
348
293
  return /*#__PURE__*/_jsx(MuiChip, {
349
294
  size: "small",
350
295
  label: lbl,
@@ -362,7 +307,7 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
362
307
  fontSize: 12
363
308
  }
364
309
  }
365
- }, valueKey(v) || "sel-".concat(i));
310
+ }, valueKey(v) || `sel-${i}`);
366
311
  }), arr.length > 0 && /*#__PURE__*/_jsx(Box, {
367
312
  component: "button",
368
313
  type: "button",
@@ -403,15 +348,11 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
403
348
  }
404
349
  return optionLabel(selected);
405
350
  },
406
- sx: sx
407
- }, rest), {}, {
351
+ sx: sx,
352
+ ...rest,
408
353
  children: [showSearch && /*#__PURE__*/_jsxs(Box, {
409
- onKeyDown: function onKeyDown(e) {
410
- return e.stopPropagation();
411
- },
412
- onClick: function onClick(e) {
413
- return e.stopPropagation();
414
- },
354
+ onKeyDown: e => e.stopPropagation(),
355
+ onClick: e => e.stopPropagation(),
415
356
  sx: SEARCH_WRAPPER_SX,
416
357
  children: [/*#__PURE__*/_jsx(SearchIcon, {
417
358
  sx: {
@@ -424,9 +365,7 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
424
365
  component: "input",
425
366
  ref: searchRef,
426
367
  value: searchQuery,
427
- onChange: function onChange(e) {
428
- return setSearchQuery(e.target.value);
429
- },
368
+ onChange: e => setSearchQuery(e.target.value),
430
369
  placeholder: L.searchLabel,
431
370
  "aria-label": L.searchLabel,
432
371
  sx: {
@@ -444,11 +383,10 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
444
383
  }), searchQuery && /*#__PURE__*/_jsx(Box, {
445
384
  component: "button",
446
385
  type: "button",
447
- onClick: function onClick(e) {
448
- var _searchRef$current2;
386
+ onClick: e => {
449
387
  e.stopPropagation();
450
388
  setSearchQuery("");
451
- (_searchRef$current2 = searchRef.current) === null || _searchRef$current2 === void 0 ? void 0 : _searchRef$current2.focus();
389
+ searchRef.current?.focus();
452
390
  },
453
391
  "aria-label": L.searchClear,
454
392
  sx: {
@@ -474,17 +412,41 @@ var Select = /*#__PURE__*/React.forwardRef(function Select(_ref, ref) {
474
412
  fontSize: "var(--text-sm)"
475
413
  },
476
414
  children: L.noOptions
477
- }), filteredOptions.map(function (o, i) {
478
- var v = typeof o === "string" ? o : o.value;
479
- var l = typeof o === "string" ? o : o.label;
415
+ }), filteredOptions.map((o, i) => {
416
+ const v = typeof o === "string" ? o : o.value;
417
+ const l = typeof o === "string" ? o : o.label;
480
418
  /* key via valueKey: an object value stringifies to "[object Object]",
481
419
  * which would give every item in the list the same React key. */
482
420
  return /*#__PURE__*/_jsx(MenuItem, {
483
421
  value: v,
484
422
  children: l
485
- }, valueKey(v) || "opt-".concat(i));
423
+ }, valueKey(v) || `opt-${i}`);
486
424
  })]
487
- }));
425
+ });
488
426
  });
427
+
428
+ /**
429
+ * Marqueur lu par `Field` (R-I.1) : ce contrôle consomme `labelId`.
430
+ *
431
+ * La surface visible d'un `Select` est un `div[role="combobox"]`, qui n'est PAS
432
+ * un élément étiquetable : la paire `<label for>` / `id` que pose `Field` ne le
433
+ * nomme donc pas, et un `aria-labelledby` passé en prop atterrirait sur le
434
+ * wrapper racine de MUI plutôt que sur le combobox. `labelId` est le canal de
435
+ * MUI lui-même — `SelectInput` le fusionne dans l'`aria-labelledby` du
436
+ * combobox.
437
+ *
438
+ * POURQUOI UN MARQUEUR ET NON UNE VÉRIFICATION DE TYPE CÔTÉ `Field` : ce
439
+ * dernier ne doit pas importer `Select` (cycle, et cela tirerait tout le
440
+ * contrôle dans chaque point d'appel de `Field`), et il ne peut pas déduire
441
+ * d'un élément React quel DOM il rendra. Un `labelId` passé à l'aveugle à tous
442
+ * les enfants atteindrait `<input>` et les champs texte de MUI, qui ne le
443
+ * connaissent pas : React avertirait alors d'un attribut DOM inconnu à chaque
444
+ * rendu, dans la console de chaque hôte.
445
+ *
446
+ * Tout composant de cette librairie dont la surface visible n'est pas
447
+ * étiquetable doit porter ce marqueur.
448
+ */
449
+
450
+ Select.puiLabelTarget = "labelId";
489
451
  export default Select;
490
452
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","names":["React","MuiSelect","MenuItem","MuiChip","Box","CloseIcon","SearchIcon","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","placeholder","clearAll","clearAllAria","removeChip","lbl","concat","String","searchLabel","searchClear","noOptions","isRecord","v","_typeof","valueKey","undefined","_iterator","_createForOfIteratorHelper","_step","s","n","done","k","value","candidate","err","e","f","sameOptionValue","a","b","ka","labelFromValue","_iterator2","_step2","SEARCH_WRAPPER_SX","position","top","zIndex","background","padding","borderBottom","display","alignItems","gap","Select","forwardRef","_ref","ref","onChange","onBlur","_ref$options","options","disabled","error","_ref$fullWidth","fullWidth","_ref$multiple","multiple","labels","_ref$searchable","searchable","searchThreshold","callerInputRef","inputRef","sx","rest","_objectWithoutProperties","_excluded","innerInputRef","useRef","setInputRef","useCallback","node","current","showSearch","length","process","env","console","warn","L","effectivePlaceholder","_React$useState","useState","_React$useState2","_slicedToArray","searchQuery","setSearchQuery","searchRef","handleClose","handleOpen","setTimeout","_searchRef$current","focus","filteredOptions","useMemo","trim","q","toLowerCase","filter","o","label","includes","optionLabel","opt","find","derived","style","color","children","fireChange","nextValue","target","removeOne","val","stopPropagation","arr","Array","isArray","stop","_objectSpread","onOpen","onClose","displayEmpty","size","renderValue","selected","flexWrap","map","i","onMouseDown","onDelete","deleteIcon","fontSize","height","paddingInline","component","type","onClick","border","borderRadius","fontWeight","cursor","fontFamily","transition","outline","outlineOffset","onKeyDown","flexShrink","flex","_searchRef$current2","l"],"sources":["../../../../src/lib/v2/components/Select.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiSelect from \"@mui/material/Select\";\r\nimport type { SelectProps as MuiSelectProps } from \"@mui/material/Select\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport MuiChip from \"@mui/material/Chip\";\r\nimport Box from \"@mui/material/Box\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Select — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Select\".\r\n *\r\n * R-Sel.1 — > 30 options → use searchThreshold or Combobox.\r\n * R-Sel.2 — 2–3 options → prefer Radio or Segmented control.\r\n * R-Sel.3 — Placeholder = \"Sélectionner…\", never empty.\r\n * R-Sel.4 — Multi-select → chips dans l'input + bouton « Tout effacer ».\r\n * R-Sel.5 — searchThreshold / searchable → auto-search for large lists (NEW).\r\n *\r\n * Autocomplete / search (R-Sel.5):\r\n * Pass `searchThreshold={N}` to show a search input when options >= N.\r\n * Pass `searchable` as a shorthand to always show search.\r\n *\r\n * Generic pattern: set searchThreshold once per component type and ALL\r\n * instances with enough items get free-text filtering automatically.\r\n *\r\n * <Select searchThreshold={8} options={pays} value={v} onChange={...} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * Pass `labels` to override user-visible strings.\r\n *\r\n * MUI v9 focus safety:\r\n * MuiSelect focuses its hidden input on click via an internal inputRef.\r\n * We always pass an explicit inputRef (merged with any caller ref) so\r\n * that focus target is never null — otherwise clicking the closed select\r\n * throws \"Cannot read properties of null (reading 'focus')\" from inside\r\n * MUI's own click handler.\r\n */\r\n\r\nexport type SelectOptionValue = string | number;\r\n\r\nexport interface SelectOptionObject {\r\n value: SelectOptionValue;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport type SelectOption = string | SelectOptionObject;\r\n\r\nexport type SelectValue = SelectOptionValue | SelectOptionValue[];\r\n\r\n/**\r\n * onChange event shape. Deliberately loose: the component fires onChange\r\n * both from MUI's native SelectChangeEvent AND from a synthetic\r\n * { target: { value } } object in the chip-remove / clear-all paths.\r\n */\r\nexport interface SelectChangeLike {\r\n target: { value: SelectValue };\r\n}\r\n\r\nexport interface SelectLabels {\r\n placeholder?: string | undefined;\r\n clearAll?: string | undefined;\r\n clearAllAria?: string | undefined;\r\n removeChip?: ((label: React.ReactNode) => string) | undefined;\r\n searchLabel?: string | undefined;\r\n searchClear?: string | undefined;\r\n noOptions?: string | undefined;\r\n}\r\n\r\nexport interface SelectProps\r\n extends Omit<\r\n MuiSelectProps<SelectValue>,\r\n \"value\" | \"onChange\" | \"renderValue\" | \"children\" | \"inputRef\"\r\n > {\r\n value?: SelectValue | undefined;\r\n onChange?: ((event: SelectChangeLike) => void) | undefined;\r\n options?: SelectOption[] | undefined;\r\n placeholder?: string | undefined;\r\n labels?: SelectLabels | undefined;\r\n searchable?: boolean | undefined;\r\n searchThreshold?: number | undefined;\r\n /** Optional caller-provided input ref; merged with the internal one. */\r\n inputRef?: React.Ref<HTMLInputElement> | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n placeholder: \"Sélectionner…\",\r\n clearAll: \"Tout effacer\",\r\n clearAllAria: \"Tout effacer la sélection\",\r\n removeChip: (lbl: React.ReactNode) => `Retirer ${String(lbl)}`,\r\n searchLabel: \"Rechercher…\",\r\n searchClear: \"Effacer la recherche\",\r\n noOptions: \"Aucun résultat\",\r\n});\r\n\r\n/* ── Out-of-contract object values: defensive resolution ───────────\r\n *\r\n * `SelectOptionValue` is declared `string | number`, but several GU modules\r\n * store whole referentiel objects as the Select value — see R-29 in the\r\n * amssnur-ui behaviour register, and the `bmdav-fe` precedent that first\r\n * surfaced `FormikComboboxProps`. Their payload mappers read\r\n * `values.typeDemande.code`, so the object IS the value they need back.\r\n *\r\n * That is out of contract, and until the opt-in opaque value described in R-29\r\n * lands it is also reality. This component must therefore be DEFENSIVE about\r\n * object values rather than crash on them. Three concrete failures it had:\r\n *\r\n * 1. `optionLabel` returned the raw value when no option matched, so\r\n * `renderValue` handed a plain object to React:\r\n * \"Objects are not valid as a React child\r\n * (found: object with keys {id, code, description})\"\r\n * This is a HARD CRASH, caught only if the host wraps the section in an\r\n * error boundary. Reported from amssnur-ui on two screens.\r\n *\r\n * 2. `options.find((o) => o.value === v)` is REFERENCE equality for objects.\r\n * A value seeded from an API payload is never the same instance as an\r\n * option fetched separately, so it never matched — which is what made (1)\r\n * fire on the edit path even when the option list was fully loaded.\r\n *\r\n * 3. `key={v}` on each MenuItem stringifies an object to \"[object Object]\",\r\n * giving every item in the list the SAME React key.\r\n *\r\n * `value={v}` is still passed through unchanged, so `onChange` returns the\r\n * caller's own object reference and the object-valued contract keeps working.\r\n */\r\n\r\nexport function isRecord(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null;\r\n}\r\n\r\n/** Stable string key for a value, primitive or object. \"\" when undecidable. */\r\nexport function valueKey(v: unknown): string {\r\n if (v === null || v === undefined) return \"\";\r\n if (!isRecord(v)) return String(v);\r\n for (const k of [\"value\", \"id\", \"code\"] as const) {\r\n const candidate = v[k];\r\n if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {\r\n return String(candidate);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Value equality that survives object identity loss.\r\n *\r\n * Reference/primitive equality first (the common path), then a structural\r\n * comparison on the discriminating key. The `!== \"\"` guard matters: without it\r\n * two objects that expose no key would compare equal to each other AND to any\r\n * empty value.\r\n */\r\nexport function sameOptionValue(a: unknown, b: unknown): boolean {\r\n if (a === b) return true;\r\n if (isRecord(a) || isRecord(b)) {\r\n const ka = valueKey(a);\r\n return ka !== \"\" && ka === valueKey(b);\r\n }\r\n return String(a) === String(b);\r\n}\r\n\r\n/**\r\n * Best-effort label for a value with no matching option. Returns `null` when\r\n * nothing renderable can be derived, so the caller shows the placeholder\r\n * instead of throwing.\r\n */\r\nexport function labelFromValue(v: unknown): React.ReactNode {\r\n if (v === null || v === undefined) return null;\r\n if (!isRecord(v)) return String(v);\r\n for (const k of [\"label\", \"description\", \"name\", \"libelle\", \"code\"] as const) {\r\n const candidate = v[k];\r\n if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {\r\n const s = String(candidate);\r\n if (s !== \"\") return s;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/* ── Search input — sticky at top of dropdown list ─────────────────\r\n * Rendered as a non-MenuItem Box so ArrowKey list-navigation skips it.\r\n * onKeyDown stopPropagation prevents MUI's keyboard handler from\r\n * treating typed characters as list-navigation shortcuts.\r\n * ─────────────────────────────────────────────────────────────────── */\r\nconst SEARCH_WRAPPER_SX = Object.freeze({\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n background: \"var(--surface)\",\r\n padding: \"var(--s-2) var(--s-3)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst Select = React.forwardRef<HTMLInputElement, SelectProps>(function Select(\r\n {\r\n value,\r\n onChange,\r\n onBlur,\r\n options = [],\r\n placeholder,\r\n disabled,\r\n error,\r\n fullWidth = true,\r\n multiple = false,\r\n labels,\r\n searchable = false,\r\n searchThreshold,\r\n inputRef: callerInputRef,\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n /* ── MUI v9 focus safety — always-present input ref ──────────────\r\n * MuiSelect calls inputRef.current.focus() on click. Guarantee a\r\n * live node by owning the ref here and merging any caller-provided\r\n * inputRef / forwarded ref onto it. */\r\n const innerInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const setInputRef = React.useCallback(\r\n (node: HTMLInputElement | null) => {\r\n innerInputRef.current = node;\r\n if (typeof callerInputRef === \"function\") callerInputRef(node);\r\n // A caller-supplied ref object is typed with a readonly `current` by\r\n // React; writing to it here is the documented ref-merge idiom, so a\r\n // single narrow assertion to a writable shape is justified.\r\n else if (callerInputRef) {\r\n (callerInputRef as { current: HTMLInputElement | null }).current = node;\r\n }\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n },\r\n [callerInputRef, ref],\r\n );\r\n\r\n /* ── Determine whether to show search ──────────────────────────── */\r\n const showSearch =\r\n searchable ||\r\n (typeof searchThreshold === \"number\" && options.length >= searchThreshold);\r\n\r\n /* Dev-time charter warn: only fires when no search is configured */\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !showSearch && options.length > 30) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui v2] <Select> has ${options.length} options — charter R-Sel.1: use searchThreshold={8} or Combobox above 30.`,\r\n );\r\n }\r\n\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n const effectivePlaceholder = placeholder ?? L.placeholder;\r\n\r\n /* ── Search state ──────────────────────────────────────────────── */\r\n const [searchQuery, setSearchQuery] = React.useState(\"\");\r\n const searchRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleClose = React.useCallback(() => setSearchQuery(\"\"), []);\r\n\r\n /* Focus the search input as soon as the dropdown opens.\r\n * MUI renders the Popover asynchronously → small delay needed. */\r\n const handleOpen = React.useCallback(() => {\r\n if (showSearch) {\r\n setTimeout(() => searchRef.current?.focus(), 50);\r\n }\r\n }, [showSearch]);\r\n\r\n const filteredOptions = React.useMemo(() => {\r\n if (!showSearch || !searchQuery.trim()) return options;\r\n const q = searchQuery.trim().toLowerCase();\r\n return options.filter((o) => {\r\n const label = typeof o === \"string\" ? o : o.label;\r\n return String(label).toLowerCase().includes(q);\r\n });\r\n }, [options, searchQuery, showSearch]);\r\n\r\n /* ── Label resolver ────────────────────────────────────────────── */\r\n const optionLabel = React.useCallback(\r\n (v: SelectValue): React.ReactNode => {\r\n const opt = options.find((o) =>\r\n sameOptionValue(typeof o === \"string\" ? o : o.value, v),\r\n );\r\n if (opt) return typeof opt === \"string\" ? opt : opt.label;\r\n\r\n /* No match. NEVER return `v` unguarded — an object here is a React-child\r\n * crash. Derive something readable, else show the placeholder. */\r\n const derived = labelFromValue(v);\r\n if (derived !== null) return derived;\r\n return (\r\n <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>\r\n );\r\n },\r\n [options, effectivePlaceholder],\r\n );\r\n\r\n /* ── Multi-select helpers ──────────────────────────────────────── */\r\n const fireChange = React.useCallback(\r\n (nextValue: SelectValue) => {\r\n if (!onChange) return;\r\n onChange({ target: { value: nextValue } });\r\n },\r\n [onChange],\r\n );\r\n\r\n const removeOne = (val: SelectOptionValue) => (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n if (!multiple) return;\r\n const arr = Array.isArray(value) ? value : [];\r\n fireChange(arr.filter((v) => !sameOptionValue(v, val)));\r\n };\r\n\r\n const clearAll = (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n if (!multiple) return;\r\n fireChange([]);\r\n };\r\n\r\n const stop = (e: React.SyntheticEvent) => e.stopPropagation();\r\n\r\n return (\r\n <MuiSelect<SelectValue>\r\n inputRef={setInputRef}\r\n value={value ?? (multiple ? [] : \"\")}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onOpen={handleOpen}\r\n onClose={handleClose}\r\n displayEmpty\r\n disabled={disabled}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n multiple={multiple}\r\n size=\"small\"\r\n renderValue={(selected: SelectValue) => {\r\n if (multiple) {\r\n const arr = Array.isArray(selected) ? selected : [];\r\n if (arr.length === 0) {\r\n return <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>;\r\n }\r\n return (\r\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", alignItems: \"center\", gap: 0.5 }}>\r\n {arr.map((v, i) => {\r\n const lbl = optionLabel(v);\r\n return (\r\n <MuiChip\r\n key={valueKey(v) || `sel-${i}`}\r\n size=\"small\"\r\n label={lbl}\r\n onMouseDown={stop}\r\n onDelete={removeOne(v)}\r\n deleteIcon={\r\n <CloseIcon\r\n fontSize=\"small\"\r\n onMouseDown={stop}\r\n aria-label={L.removeChip(lbl)}\r\n />\r\n }\r\n sx={{\r\n height: 22,\r\n \"& .MuiChip-label\": { paddingInline: 1, fontSize: 12 },\r\n }}\r\n />\r\n );\r\n })}\r\n {arr.length > 0 && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onMouseDown={stop}\r\n onClick={clearAll}\r\n aria-label={L.clearAllAria}\r\n sx={{\r\n background: \"transparent\",\r\n border: \"1px dashed var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px 8px\",\r\n fontSize: 11,\r\n fontWeight: 600,\r\n color: \"var(--fg-muted)\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n transition: \"background var(--duration-fast, 80ms) ease\",\r\n \"&:hover\": { background: \"var(--bg-subtle)\", color: \"var(--fg)\" },\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset)\" },\r\n }}\r\n >\r\n {L.clearAll}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n if (selected === \"\" || selected == null) {\r\n return <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>;\r\n }\r\n return optionLabel(selected);\r\n }}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {/* Search input — sticky, non-selectable, captures keyboard events */}\r\n {showSearch && (\r\n <Box\r\n onKeyDown={(e) => e.stopPropagation()}\r\n onClick={(e) => e.stopPropagation()}\r\n sx={SEARCH_WRAPPER_SX}\r\n >\r\n <SearchIcon sx={{ fontSize: 16, color: \"var(--fg-subtle)\", flexShrink: 0 }} aria-hidden=\"true\" />\r\n <Box\r\n component=\"input\"\r\n ref={searchRef}\r\n value={searchQuery}\r\n onChange={(e) => setSearchQuery(e.target.value)}\r\n placeholder={L.searchLabel}\r\n aria-label={L.searchLabel}\r\n sx={{\r\n flex: 1,\r\n border: \"none\",\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontSize: \"var(--text-sm)\",\r\n fontFamily: \"inherit\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n {searchQuery && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={(e) => { e.stopPropagation(); setSearchQuery(\"\"); searchRef.current?.focus(); }}\r\n aria-label={L.searchClear}\r\n sx={{ background: \"transparent\", border: \"none\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", padding: 0, flexShrink: 0 }}\r\n >\r\n <CloseIcon sx={{ fontSize: 14, color: \"var(--fg-muted)\" }} />\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {/* Empty state when search yields no results */}\r\n {showSearch && searchQuery.trim() && filteredOptions.length === 0 && (\r\n <MenuItem disabled sx={{ color: \"var(--fg-subtle)\", fontSize: \"var(--text-sm)\" }}>\r\n {L.noOptions}\r\n </MenuItem>\r\n )}\r\n\r\n {filteredOptions.map((o, i) => {\r\n const v = typeof o === \"string\" ? o : o.value;\r\n const l = typeof o === \"string\" ? o : o.label;\r\n /* key via valueKey: an object value stringifies to \"[object Object]\",\r\n * which would give every item in the list the same React key. */\r\n return <MenuItem key={valueKey(v) || `opt-${i}`} value={v}>{l}</MenuItem>;\r\n })}\r\n </MuiSelect>\r\n );\r\n});\r\n\r\nexport default Select;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Select.js","names":["React","MuiSelect","MenuItem","MuiChip","Box","CloseIcon","SearchIcon","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","placeholder","clearAll","clearAllAria","removeChip","lbl","String","searchLabel","searchClear","noOptions","isRecord","v","valueKey","undefined","k","candidate","sameOptionValue","a","b","ka","labelFromValue","s","SEARCH_WRAPPER_SX","position","top","zIndex","background","padding","borderBottom","display","alignItems","gap","Select","forwardRef","value","onChange","onBlur","options","disabled","error","fullWidth","multiple","labels","searchable","searchThreshold","inputRef","callerInputRef","sx","rest","ref","innerInputRef","useRef","setInputRef","useCallback","node","current","showSearch","length","process","env","console","warn","L","effectivePlaceholder","searchQuery","setSearchQuery","useState","searchRef","handleClose","handleOpen","setTimeout","focus","filteredOptions","useMemo","trim","q","toLowerCase","filter","o","label","includes","optionLabel","opt","find","derived","style","color","children","fireChange","nextValue","target","removeOne","val","e","stopPropagation","arr","Array","isArray","stop","onOpen","onClose","displayEmpty","size","renderValue","selected","flexWrap","map","i","onMouseDown","onDelete","deleteIcon","fontSize","height","paddingInline","component","type","onClick","border","borderRadius","fontWeight","cursor","fontFamily","transition","outline","outlineOffset","onKeyDown","flexShrink","flex","l","puiLabelTarget"],"sources":["../../../../src/lib/v2/components/Select.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiSelect from \"@mui/material/Select\";\r\nimport type { SelectProps as MuiSelectProps } from \"@mui/material/Select\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport MuiChip from \"@mui/material/Chip\";\r\nimport Box from \"@mui/material/Box\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Select — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Select\".\r\n *\r\n * R-Sel.1 — > 30 options → use searchThreshold or Combobox.\r\n * R-Sel.2 — 2–3 options → prefer Radio or Segmented control.\r\n * R-Sel.3 — Placeholder = \"Sélectionner…\", never empty.\r\n * R-Sel.4 — Multi-select → chips dans l'input + bouton « Tout effacer ».\r\n * R-Sel.5 — searchThreshold / searchable → auto-search for large lists (NEW).\r\n *\r\n * Autocomplete / search (R-Sel.5):\r\n * Pass `searchThreshold={N}` to show a search input when options >= N.\r\n * Pass `searchable` as a shorthand to always show search.\r\n *\r\n * Generic pattern: set searchThreshold once per component type and ALL\r\n * instances with enough items get free-text filtering automatically.\r\n *\r\n * <Select searchThreshold={8} options={pays} value={v} onChange={...} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * Pass `labels` to override user-visible strings.\r\n *\r\n * MUI v9 focus safety:\r\n * MuiSelect focuses its hidden input on click via an internal inputRef.\r\n * We always pass an explicit inputRef (merged with any caller ref) so\r\n * that focus target is never null — otherwise clicking the closed select\r\n * throws \"Cannot read properties of null (reading 'focus')\" from inside\r\n * MUI's own click handler.\r\n */\r\n\r\nexport type SelectOptionValue = string | number;\r\n\r\nexport interface SelectOptionObject {\r\n value: SelectOptionValue;\r\n label: React.ReactNode;\r\n}\r\n\r\nexport type SelectOption = string | SelectOptionObject;\r\n\r\nexport type SelectValue = SelectOptionValue | SelectOptionValue[];\r\n\r\n/**\r\n * onChange event shape. Deliberately loose: the component fires onChange\r\n * both from MUI's native SelectChangeEvent AND from a synthetic\r\n * { target: { value } } object in the chip-remove / clear-all paths.\r\n */\r\nexport interface SelectChangeLike {\r\n target: { value: SelectValue };\r\n}\r\n\r\nexport interface SelectLabels {\r\n placeholder?: string | undefined;\r\n clearAll?: string | undefined;\r\n clearAllAria?: string | undefined;\r\n removeChip?: ((label: React.ReactNode) => string) | undefined;\r\n searchLabel?: string | undefined;\r\n searchClear?: string | undefined;\r\n noOptions?: string | undefined;\r\n}\r\n\r\nexport interface SelectProps\r\n extends Omit<\r\n MuiSelectProps<SelectValue>,\r\n \"value\" | \"onChange\" | \"renderValue\" | \"children\" | \"inputRef\"\r\n > {\r\n value?: SelectValue | undefined;\r\n onChange?: ((event: SelectChangeLike) => void) | undefined;\r\n options?: SelectOption[] | undefined;\r\n placeholder?: string | undefined;\r\n labels?: SelectLabels | undefined;\r\n searchable?: boolean | undefined;\r\n searchThreshold?: number | undefined;\r\n /** Optional caller-provided input ref; merged with the internal one. */\r\n inputRef?: React.Ref<HTMLInputElement> | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n placeholder: \"Sélectionner…\",\r\n clearAll: \"Tout effacer\",\r\n clearAllAria: \"Tout effacer la sélection\",\r\n removeChip: (lbl: React.ReactNode) => `Retirer ${String(lbl)}`,\r\n searchLabel: \"Rechercher…\",\r\n searchClear: \"Effacer la recherche\",\r\n noOptions: \"Aucun résultat\",\r\n});\r\n\r\n/* ── Out-of-contract object values: defensive resolution ───────────\r\n *\r\n * `SelectOptionValue` is declared `string | number`, but several GU modules\r\n * store whole referentiel objects as the Select value — see R-29 in the\r\n * amssnur-ui behaviour register, and the `bmdav-fe` precedent that first\r\n * surfaced `FormikComboboxProps`. Their payload mappers read\r\n * `values.typeDemande.code`, so the object IS the value they need back.\r\n *\r\n * That is out of contract, and until the opt-in opaque value described in R-29\r\n * lands it is also reality. This component must therefore be DEFENSIVE about\r\n * object values rather than crash on them. Three concrete failures it had:\r\n *\r\n * 1. `optionLabel` returned the raw value when no option matched, so\r\n * `renderValue` handed a plain object to React:\r\n * \"Objects are not valid as a React child\r\n * (found: object with keys {id, code, description})\"\r\n * This is a HARD CRASH, caught only if the host wraps the section in an\r\n * error boundary. Reported from amssnur-ui on two screens.\r\n *\r\n * 2. `options.find((o) => o.value === v)` is REFERENCE equality for objects.\r\n * A value seeded from an API payload is never the same instance as an\r\n * option fetched separately, so it never matched — which is what made (1)\r\n * fire on the edit path even when the option list was fully loaded.\r\n *\r\n * 3. `key={v}` on each MenuItem stringifies an object to \"[object Object]\",\r\n * giving every item in the list the SAME React key.\r\n *\r\n * `value={v}` is still passed through unchanged, so `onChange` returns the\r\n * caller's own object reference and the object-valued contract keeps working.\r\n */\r\n\r\nexport function isRecord(v: unknown): v is Record<string, unknown> {\r\n return typeof v === \"object\" && v !== null;\r\n}\r\n\r\n/** Stable string key for a value, primitive or object. \"\" when undecidable. */\r\nexport function valueKey(v: unknown): string {\r\n if (v === null || v === undefined) return \"\";\r\n if (!isRecord(v)) return String(v);\r\n for (const k of [\"value\", \"id\", \"code\"] as const) {\r\n const candidate = v[k];\r\n if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {\r\n return String(candidate);\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\n/**\r\n * Value equality that survives object identity loss.\r\n *\r\n * Reference/primitive equality first (the common path), then a structural\r\n * comparison on the discriminating key. The `!== \"\"` guard matters: without it\r\n * two objects that expose no key would compare equal to each other AND to any\r\n * empty value.\r\n */\r\nexport function sameOptionValue(a: unknown, b: unknown): boolean {\r\n if (a === b) return true;\r\n if (isRecord(a) || isRecord(b)) {\r\n const ka = valueKey(a);\r\n return ka !== \"\" && ka === valueKey(b);\r\n }\r\n return String(a) === String(b);\r\n}\r\n\r\n/**\r\n * Best-effort label for a value with no matching option. Returns `null` when\r\n * nothing renderable can be derived, so the caller shows the placeholder\r\n * instead of throwing.\r\n */\r\nexport function labelFromValue(v: unknown): React.ReactNode {\r\n if (v === null || v === undefined) return null;\r\n if (!isRecord(v)) return String(v);\r\n for (const k of [\"label\", \"description\", \"name\", \"libelle\", \"code\"] as const) {\r\n const candidate = v[k];\r\n if (candidate !== null && candidate !== undefined && !isRecord(candidate)) {\r\n const s = String(candidate);\r\n if (s !== \"\") return s;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\n/* ── Search input — sticky at top of dropdown list ─────────────────\r\n * Rendered as a non-MenuItem Box so ArrowKey list-navigation skips it.\r\n * onKeyDown stopPropagation prevents MUI's keyboard handler from\r\n * treating typed characters as list-navigation shortcuts.\r\n * ─────────────────────────────────────────────────────────────────── */\r\nconst SEARCH_WRAPPER_SX = Object.freeze({\r\n position: \"sticky\",\r\n top: 0,\r\n zIndex: 1,\r\n background: \"var(--surface)\",\r\n padding: \"var(--s-2) var(--s-3)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst Select = React.forwardRef<HTMLInputElement, SelectProps>(function Select(\r\n {\r\n value,\r\n onChange,\r\n onBlur,\r\n options = [],\r\n placeholder,\r\n disabled,\r\n error,\r\n fullWidth = true,\r\n multiple = false,\r\n labels,\r\n searchable = false,\r\n searchThreshold,\r\n inputRef: callerInputRef,\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n /* ── MUI v9 focus safety — always-present input ref ──────────────\r\n * MuiSelect calls inputRef.current.focus() on click. Guarantee a\r\n * live node by owning the ref here and merging any caller-provided\r\n * inputRef / forwarded ref onto it. */\r\n const innerInputRef = React.useRef<HTMLInputElement | null>(null);\r\n const setInputRef = React.useCallback(\r\n (node: HTMLInputElement | null) => {\r\n innerInputRef.current = node;\r\n if (typeof callerInputRef === \"function\") callerInputRef(node);\r\n // A caller-supplied ref object is typed with a readonly `current` by\r\n // React; writing to it here is the documented ref-merge idiom, so a\r\n // single narrow assertion to a writable shape is justified.\r\n else if (callerInputRef) {\r\n (callerInputRef as { current: HTMLInputElement | null }).current = node;\r\n }\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n },\r\n [callerInputRef, ref],\r\n );\r\n\r\n /* ── Determine whether to show search ──────────────────────────── */\r\n const showSearch =\r\n searchable ||\r\n (typeof searchThreshold === \"number\" && options.length >= searchThreshold);\r\n\r\n /* Dev-time charter warn: only fires when no search is configured */\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !showSearch && options.length > 30) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `[@portnet/ui v2] <Select> has ${options.length} options — charter R-Sel.1: use searchThreshold={8} or Combobox above 30.`,\r\n );\r\n }\r\n\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n const effectivePlaceholder = placeholder ?? L.placeholder;\r\n\r\n /* ── Search state ──────────────────────────────────────────────── */\r\n const [searchQuery, setSearchQuery] = React.useState(\"\");\r\n const searchRef = React.useRef<HTMLInputElement | null>(null);\r\n\r\n const handleClose = React.useCallback(() => setSearchQuery(\"\"), []);\r\n\r\n /* Focus the search input as soon as the dropdown opens.\r\n * MUI renders the Popover asynchronously → small delay needed. */\r\n const handleOpen = React.useCallback(() => {\r\n if (showSearch) {\r\n setTimeout(() => searchRef.current?.focus(), 50);\r\n }\r\n }, [showSearch]);\r\n\r\n const filteredOptions = React.useMemo(() => {\r\n if (!showSearch || !searchQuery.trim()) return options;\r\n const q = searchQuery.trim().toLowerCase();\r\n return options.filter((o) => {\r\n const label = typeof o === \"string\" ? o : o.label;\r\n return String(label).toLowerCase().includes(q);\r\n });\r\n }, [options, searchQuery, showSearch]);\r\n\r\n /* ── Label resolver ────────────────────────────────────────────── */\r\n const optionLabel = React.useCallback(\r\n (v: SelectValue): React.ReactNode => {\r\n const opt = options.find((o) =>\r\n sameOptionValue(typeof o === \"string\" ? o : o.value, v),\r\n );\r\n if (opt) return typeof opt === \"string\" ? opt : opt.label;\r\n\r\n /* No match. NEVER return `v` unguarded — an object here is a React-child\r\n * crash. Derive something readable, else show the placeholder. */\r\n const derived = labelFromValue(v);\r\n if (derived !== null) return derived;\r\n return (\r\n <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>\r\n );\r\n },\r\n [options, effectivePlaceholder],\r\n );\r\n\r\n /* ── Multi-select helpers ──────────────────────────────────────── */\r\n const fireChange = React.useCallback(\r\n (nextValue: SelectValue) => {\r\n if (!onChange) return;\r\n onChange({ target: { value: nextValue } });\r\n },\r\n [onChange],\r\n );\r\n\r\n const removeOne = (val: SelectOptionValue) => (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n if (!multiple) return;\r\n const arr = Array.isArray(value) ? value : [];\r\n fireChange(arr.filter((v) => !sameOptionValue(v, val)));\r\n };\r\n\r\n const clearAll = (e: React.SyntheticEvent) => {\r\n e.stopPropagation();\r\n if (!multiple) return;\r\n fireChange([]);\r\n };\r\n\r\n const stop = (e: React.SyntheticEvent) => e.stopPropagation();\r\n\r\n return (\r\n <MuiSelect<SelectValue>\r\n inputRef={setInputRef}\r\n value={value ?? (multiple ? [] : \"\")}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onOpen={handleOpen}\r\n onClose={handleClose}\r\n displayEmpty\r\n disabled={disabled}\r\n error={!!error}\r\n fullWidth={fullWidth}\r\n multiple={multiple}\r\n size=\"small\"\r\n renderValue={(selected: SelectValue) => {\r\n if (multiple) {\r\n const arr = Array.isArray(selected) ? selected : [];\r\n if (arr.length === 0) {\r\n return <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>;\r\n }\r\n return (\r\n <Box sx={{ display: \"flex\", flexWrap: \"wrap\", alignItems: \"center\", gap: 0.5 }}>\r\n {arr.map((v, i) => {\r\n const lbl = optionLabel(v);\r\n return (\r\n <MuiChip\r\n key={valueKey(v) || `sel-${i}`}\r\n size=\"small\"\r\n label={lbl}\r\n onMouseDown={stop}\r\n onDelete={removeOne(v)}\r\n deleteIcon={\r\n <CloseIcon\r\n fontSize=\"small\"\r\n onMouseDown={stop}\r\n aria-label={L.removeChip(lbl)}\r\n />\r\n }\r\n sx={{\r\n height: 22,\r\n \"& .MuiChip-label\": { paddingInline: 1, fontSize: 12 },\r\n }}\r\n />\r\n );\r\n })}\r\n {arr.length > 0 && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onMouseDown={stop}\r\n onClick={clearAll}\r\n aria-label={L.clearAllAria}\r\n sx={{\r\n background: \"transparent\",\r\n border: \"1px dashed var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px 8px\",\r\n fontSize: 11,\r\n fontWeight: 600,\r\n color: \"var(--fg-muted)\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n transition: \"background var(--duration-fast, 80ms) ease\",\r\n \"&:hover\": { background: \"var(--bg-subtle)\", color: \"var(--fg)\" },\r\n \"&:focus-visible\": { outline: \"2px solid var(--accent)\", outlineOffset: \"var(--pui-outline-offset)\" },\r\n }}\r\n >\r\n {L.clearAll}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n }\r\n if (selected === \"\" || selected == null) {\r\n return <span style={{ color: \"var(--fg-subtle)\" }}>{effectivePlaceholder}</span>;\r\n }\r\n return optionLabel(selected);\r\n }}\r\n sx={sx}\r\n {...rest}\r\n >\r\n {/* Search input — sticky, non-selectable, captures keyboard events */}\r\n {showSearch && (\r\n <Box\r\n onKeyDown={(e) => e.stopPropagation()}\r\n onClick={(e) => e.stopPropagation()}\r\n sx={SEARCH_WRAPPER_SX}\r\n >\r\n <SearchIcon sx={{ fontSize: 16, color: \"var(--fg-subtle)\", flexShrink: 0 }} aria-hidden=\"true\" />\r\n <Box\r\n component=\"input\"\r\n ref={searchRef}\r\n value={searchQuery}\r\n onChange={(e) => setSearchQuery(e.target.value)}\r\n placeholder={L.searchLabel}\r\n aria-label={L.searchLabel}\r\n sx={{\r\n flex: 1,\r\n border: \"none\",\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontSize: \"var(--text-sm)\",\r\n fontFamily: \"inherit\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n {searchQuery && (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={(e) => { e.stopPropagation(); setSearchQuery(\"\"); searchRef.current?.focus(); }}\r\n aria-label={L.searchClear}\r\n sx={{ background: \"transparent\", border: \"none\", cursor: \"pointer\", display: \"flex\", alignItems: \"center\", padding: 0, flexShrink: 0 }}\r\n >\r\n <CloseIcon sx={{ fontSize: 14, color: \"var(--fg-muted)\" }} />\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n {/* Empty state when search yields no results */}\r\n {showSearch && searchQuery.trim() && filteredOptions.length === 0 && (\r\n <MenuItem disabled sx={{ color: \"var(--fg-subtle)\", fontSize: \"var(--text-sm)\" }}>\r\n {L.noOptions}\r\n </MenuItem>\r\n )}\r\n\r\n {filteredOptions.map((o, i) => {\r\n const v = typeof o === \"string\" ? o : o.value;\r\n const l = typeof o === \"string\" ? o : o.label;\r\n /* key via valueKey: an object value stringifies to \"[object Object]\",\r\n * which would give every item in the list the same React key. */\r\n return <MenuItem key={valueKey(v) || `opt-${i}`} value={v}>{l}</MenuItem>;\r\n })}\r\n </MuiSelect>\r\n );\r\n});\r\n\r\n/**\r\n * Marqueur lu par `Field` (R-I.1) : ce contrôle consomme `labelId`.\r\n *\r\n * La surface visible d'un `Select` est un `div[role=\"combobox\"]`, qui n'est PAS\r\n * un élément étiquetable : la paire `<label for>` / `id` que pose `Field` ne le\r\n * nomme donc pas, et un `aria-labelledby` passé en prop atterrirait sur le\r\n * wrapper racine de MUI plutôt que sur le combobox. `labelId` est le canal de\r\n * MUI lui-même — `SelectInput` le fusionne dans l'`aria-labelledby` du\r\n * combobox.\r\n *\r\n * POURQUOI UN MARQUEUR ET NON UNE VÉRIFICATION DE TYPE CÔTÉ `Field` : ce\r\n * dernier ne doit pas importer `Select` (cycle, et cela tirerait tout le\r\n * contrôle dans chaque point d'appel de `Field`), et il ne peut pas déduire\r\n * d'un élément React quel DOM il rendra. Un `labelId` passé à l'aveugle à tous\r\n * les enfants atteindrait `<input>` et les champs texte de MUI, qui ne le\r\n * connaissent pas : React avertirait alors d'un attribut DOM inconnu à chaque\r\n * rendu, dans la console de chaque hôte.\r\n *\r\n * Tout composant de cette librairie dont la surface visible n'est pas\r\n * étiquetable doit porter ce marqueur.\r\n */\r\ninterface SelectComponent\r\n extends React.ForwardRefExoticComponent<\r\n SelectProps & React.RefAttributes<HTMLInputElement>\r\n > {\r\n puiLabelTarget: \"labelId\";\r\n}\r\n\r\n(Select as SelectComponent).puiLabelTarget = \"labelId\";\r\n\r\nexport default Select as SelectComponent;\r\n"],"mappings":"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","ignoreList":[]}