@portnet/ui 6.0.0 → 6.0.1

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 (748) hide show
  1. package/dist/esm/index.js +196 -0
  2. package/dist/esm/index.js.map +1 -0
  3. package/dist/esm/v2/__tests__/FieldError.test.js +160 -0
  4. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
  5. package/dist/esm/v2/__tests__/FileCard.test.js +144 -0
  6. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
  7. package/dist/esm/v2/__tests__/MobileRowCard.test.js +333 -0
  8. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
  9. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
  10. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  11. package/dist/esm/v2/__tests__/apiError.test.js +181 -0
  12. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
  13. package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
  14. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
  15. package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
  16. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
  17. package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
  18. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
  19. package/dist/esm/v2/__tests__/labels-merge.test.js +147 -0
  20. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
  21. package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
  22. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
  23. package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
  24. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
  25. package/dist/esm/v2/components/Accordion.js +230 -0
  26. package/dist/esm/v2/components/Accordion.js.map +1 -0
  27. package/dist/esm/v2/components/ActionStrip.js +146 -0
  28. package/dist/esm/v2/components/ActionStrip.js.map +1 -0
  29. package/dist/esm/v2/components/Banner.js +254 -0
  30. package/dist/esm/v2/components/Banner.js.map +1 -0
  31. package/dist/esm/v2/components/Busy.js +97 -0
  32. package/dist/esm/v2/components/Busy.js.map +1 -0
  33. package/dist/esm/v2/components/Button.js +114 -0
  34. package/dist/esm/v2/components/Button.js.map +1 -0
  35. package/dist/esm/v2/components/CategoryTag.js +81 -0
  36. package/dist/esm/v2/components/CategoryTag.js.map +1 -0
  37. package/dist/esm/v2/components/Checkbox.js +124 -0
  38. package/dist/esm/v2/components/Checkbox.js.map +1 -0
  39. package/dist/esm/v2/components/Chip.js +124 -0
  40. package/dist/esm/v2/components/Chip.js.map +1 -0
  41. package/dist/esm/v2/components/Combobox.js +394 -0
  42. package/dist/esm/v2/components/Combobox.js.map +1 -0
  43. package/dist/esm/v2/components/CommandPalette.js +660 -0
  44. package/dist/esm/v2/components/CommandPalette.js.map +1 -0
  45. package/dist/esm/v2/components/ConfirmDialog.js +144 -0
  46. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
  47. package/dist/esm/v2/components/DatePicker.js +200 -0
  48. package/dist/esm/v2/components/DatePicker.js.map +1 -0
  49. package/dist/esm/v2/components/DateRangePicker.js +289 -0
  50. package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
  51. package/dist/esm/v2/components/DateTimePicker.js +182 -0
  52. package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
  53. package/dist/esm/v2/components/Drawer.js +333 -0
  54. package/dist/esm/v2/components/Drawer.js.map +1 -0
  55. package/dist/esm/v2/components/Dropzone.js +540 -0
  56. package/dist/esm/v2/components/Dropzone.js.map +1 -0
  57. package/dist/esm/v2/components/EmptyState.js +102 -0
  58. package/dist/esm/v2/components/EmptyState.js.map +1 -0
  59. package/dist/esm/v2/components/FavoriteToggle.js +127 -0
  60. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
  61. package/dist/esm/v2/components/Field.js +197 -0
  62. package/dist/esm/v2/components/Field.js.map +1 -0
  63. package/dist/esm/v2/components/FieldError.js +124 -0
  64. package/dist/esm/v2/components/FieldError.js.map +1 -0
  65. package/dist/esm/v2/components/FieldHelp.js +202 -0
  66. package/dist/esm/v2/components/FieldHelp.js.map +1 -0
  67. package/dist/esm/v2/components/FileCard.js +162 -0
  68. package/dist/esm/v2/components/FileCard.js.map +1 -0
  69. package/dist/esm/v2/components/FilterTab.js +138 -0
  70. package/dist/esm/v2/components/FilterTab.js.map +1 -0
  71. package/dist/esm/v2/components/ForbiddenPage.js +74 -0
  72. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
  73. package/dist/esm/v2/components/FormGrid.js +179 -0
  74. package/dist/esm/v2/components/FormGrid.js.map +1 -0
  75. package/dist/esm/v2/components/FormikDisplay.js +118 -0
  76. package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
  77. package/dist/esm/v2/components/Input.js +107 -0
  78. package/dist/esm/v2/components/Input.js.map +1 -0
  79. package/dist/esm/v2/components/KPICard.js +237 -0
  80. package/dist/esm/v2/components/KPICard.js.map +1 -0
  81. package/dist/esm/v2/components/KPIStrip.js +84 -0
  82. package/dist/esm/v2/components/KPIStrip.js.map +1 -0
  83. package/dist/esm/v2/components/KV.js +75 -0
  84. package/dist/esm/v2/components/KV.js.map +1 -0
  85. package/dist/esm/v2/components/KVGrid.js +74 -0
  86. package/dist/esm/v2/components/KVGrid.js.map +1 -0
  87. package/dist/esm/v2/components/Layout.js +284 -0
  88. package/dist/esm/v2/components/Layout.js.map +1 -0
  89. package/dist/esm/v2/components/MobileRowCard.js +314 -0
  90. package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
  91. package/dist/esm/v2/components/Modal.js +276 -0
  92. package/dist/esm/v2/components/Modal.js.map +1 -0
  93. package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
  94. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
  95. package/dist/esm/v2/components/NotFoundPage.js +58 -0
  96. package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
  97. package/dist/esm/v2/components/NumberInput.js +309 -0
  98. package/dist/esm/v2/components/NumberInput.js.map +1 -0
  99. package/dist/esm/v2/components/OverflowMenu.js +184 -0
  100. package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
  101. package/dist/esm/v2/components/PdfViewer.js +122 -0
  102. package/dist/esm/v2/components/PdfViewer.js.map +1 -0
  103. package/dist/esm/v2/components/ProgressBar.js +202 -0
  104. package/dist/esm/v2/components/ProgressBar.js.map +1 -0
  105. package/dist/esm/v2/components/Radio.js +228 -0
  106. package/dist/esm/v2/components/Radio.js.map +1 -0
  107. package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
  108. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
  109. package/dist/esm/v2/components/SectionHeader.js +132 -0
  110. package/dist/esm/v2/components/SectionHeader.js.map +1 -0
  111. package/dist/esm/v2/components/Segmented.js +254 -0
  112. package/dist/esm/v2/components/Segmented.js.map +1 -0
  113. package/dist/esm/v2/components/Select.js +490 -0
  114. package/dist/esm/v2/components/Select.js.map +1 -0
  115. package/dist/esm/v2/components/ServerErrorPage.js +74 -0
  116. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
  117. package/dist/esm/v2/components/Skeleton.js +269 -0
  118. package/dist/esm/v2/components/Skeleton.js.map +1 -0
  119. package/dist/esm/v2/components/SkipLink.js +49 -0
  120. package/dist/esm/v2/components/SkipLink.js.map +1 -0
  121. package/dist/esm/v2/components/Spinner.js +69 -0
  122. package/dist/esm/v2/components/Spinner.js.map +1 -0
  123. package/dist/esm/v2/components/Status.js +64 -0
  124. package/dist/esm/v2/components/Status.js.map +1 -0
  125. package/dist/esm/v2/components/Stepper.js +432 -0
  126. package/dist/esm/v2/components/Stepper.js.map +1 -0
  127. package/dist/esm/v2/components/Surface.js +159 -0
  128. package/dist/esm/v2/components/Surface.js.map +1 -0
  129. package/dist/esm/v2/components/Switch.js +128 -0
  130. package/dist/esm/v2/components/Switch.js.map +1 -0
  131. package/dist/esm/v2/components/Tabs.js +150 -0
  132. package/dist/esm/v2/components/Tabs.js.map +1 -0
  133. package/dist/esm/v2/components/TelInput.js +274 -0
  134. package/dist/esm/v2/components/TelInput.js.map +1 -0
  135. package/dist/esm/v2/components/Textarea.js +72 -0
  136. package/dist/esm/v2/components/Textarea.js.map +1 -0
  137. package/dist/esm/v2/components/TimePicker.js +134 -0
  138. package/dist/esm/v2/components/TimePicker.js.map +1 -0
  139. package/dist/esm/v2/components/Toast.js +376 -0
  140. package/dist/esm/v2/components/Toast.js.map +1 -0
  141. package/dist/esm/v2/components/Tooltip.js +161 -0
  142. package/dist/esm/v2/components/Tooltip.js.map +1 -0
  143. package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
  144. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
  145. package/dist/esm/v2/components/_pickerShared.js +60 -0
  146. package/dist/esm/v2/components/_pickerShared.js.map +1 -0
  147. package/dist/esm/v2/components/index.js +244 -0
  148. package/dist/esm/v2/components/index.js.map +1 -0
  149. package/dist/esm/v2/hooks/index.js +10 -0
  150. package/dist/esm/v2/hooks/index.js.map +1 -0
  151. package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
  152. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
  153. package/dist/esm/v2/hooks/useDensity.js +119 -0
  154. package/dist/esm/v2/hooks/useDensity.js.map +1 -0
  155. package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
  156. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
  157. package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
  158. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
  159. package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
  160. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
  161. package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
  162. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
  163. package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
  164. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
  165. package/dist/esm/v2/hooks/useSortedRows.js +32 -0
  166. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
  167. package/dist/esm/v2/hooks/useTabLoading.js +79 -0
  168. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
  169. package/dist/esm/v2/index.js +121 -0
  170. package/dist/esm/v2/index.js.map +1 -0
  171. package/dist/esm/v2/modalContext.js +108 -0
  172. package/dist/esm/v2/modalContext.js.map +1 -0
  173. package/dist/esm/v2/models/favorite.js +2 -0
  174. package/dist/esm/v2/models/favorite.js.map +1 -0
  175. package/dist/esm/v2/models/index.js +12 -0
  176. package/dist/esm/v2/models/index.js.map +1 -0
  177. package/dist/esm/v2/models/personalization.js +2 -0
  178. package/dist/esm/v2/models/personalization.js.map +1 -0
  179. package/dist/esm/v2/models/referentiel.js +2 -0
  180. package/dist/esm/v2/models/referentiel.js.map +1 -0
  181. package/dist/esm/v2/models/savedFilter.js +2 -0
  182. package/dist/esm/v2/models/savedFilter.js.map +1 -0
  183. package/dist/esm/v2/patterns/ActionBar.js +603 -0
  184. package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
  185. package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
  186. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
  187. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
  188. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
  189. package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
  190. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
  191. package/dist/esm/v2/patterns/DataGrid.js +820 -0
  192. package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
  193. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
  194. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
  195. package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
  196. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
  197. package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
  198. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
  199. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
  200. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
  201. package/dist/esm/v2/patterns/FavoriteColumn.js +164 -0
  202. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
  203. package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
  204. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
  205. package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
  206. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
  207. package/dist/esm/v2/patterns/FormPageShell.js +126 -0
  208. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
  209. package/dist/esm/v2/patterns/FormSection.js +190 -0
  210. package/dist/esm/v2/patterns/FormSection.js.map +1 -0
  211. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
  212. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
  213. package/dist/esm/v2/patterns/FormikCombobox.js +115 -0
  214. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
  215. package/dist/esm/v2/patterns/FormikDatePicker.js +196 -0
  216. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
  217. package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
  218. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
  219. package/dist/esm/v2/patterns/FormikFile.js +148 -0
  220. package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
  221. package/dist/esm/v2/patterns/FormikInput.js +127 -0
  222. package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
  223. package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
  224. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
  225. package/dist/esm/v2/patterns/FormikSelect.js +159 -0
  226. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
  227. package/dist/esm/v2/patterns/FormikTextarea.js +76 -0
  228. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
  229. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +195 -0
  230. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
  231. package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
  232. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
  233. package/dist/esm/v2/patterns/PageContent.js +62 -0
  234. package/dist/esm/v2/patterns/PageContent.js.map +1 -0
  235. package/dist/esm/v2/patterns/ReferentielField.js +615 -0
  236. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
  237. package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
  238. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
  239. package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
  240. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
  241. package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
  242. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
  243. package/dist/esm/v2/patterns/SortableHeader.js +179 -0
  244. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
  245. package/dist/esm/v2/patterns/Tour.js +471 -0
  246. package/dist/esm/v2/patterns/Tour.js.map +1 -0
  247. package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
  248. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
  249. package/dist/esm/v2/patterns/_sort.js +112 -0
  250. package/dist/esm/v2/patterns/_sort.js.map +1 -0
  251. package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
  252. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
  253. package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
  254. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
  255. package/dist/esm/v2/patterns/index.js +95 -0
  256. package/dist/esm/v2/patterns/index.js.map +1 -0
  257. package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
  258. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
  259. package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
  260. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
  261. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
  262. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
  263. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
  264. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
  265. package/dist/esm/v2/personalization/adapters/index.js +11 -0
  266. package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
  267. package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
  268. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
  269. package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
  270. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
  271. package/dist/esm/v2/personalization/capabilities/index.js +17 -0
  272. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
  273. package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
  274. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
  275. package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
  276. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
  277. package/dist/esm/v2/personalization/index.js +46 -0
  278. package/dist/esm/v2/personalization/index.js.map +1 -0
  279. package/dist/esm/v2/personalization/personalizationContext.js +108 -0
  280. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
  281. package/dist/esm/v2/personalization/schema.js +92 -0
  282. package/dist/esm/v2/personalization/schema.js.map +1 -0
  283. package/dist/esm/v2/personalization/types.js +2 -0
  284. package/dist/esm/v2/personalization/types.js.map +1 -0
  285. package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
  286. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
  287. package/dist/esm/v2/referentiel/index.js +15 -0
  288. package/dist/esm/v2/referentiel/index.js.map +1 -0
  289. package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
  290. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
  291. package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
  292. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
  293. package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
  294. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
  295. package/dist/esm/v2/styles/base.css +425 -0
  296. package/dist/esm/v2/styles/css.d.ts +10 -0
  297. package/dist/esm/v2/styles/index.js +12 -0
  298. package/dist/esm/v2/styles/index.js.map +1 -0
  299. package/dist/esm/v2/theme/_brand.js +64 -0
  300. package/dist/esm/v2/theme/_brand.js.map +1 -0
  301. package/dist/esm/v2/theme/_brandSecondary.js +60 -0
  302. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
  303. package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
  304. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
  305. package/dist/esm/v2/theme/cssVariables.js +198 -0
  306. package/dist/esm/v2/theme/cssVariables.js.map +1 -0
  307. package/dist/esm/v2/theme/index.js +32 -0
  308. package/dist/esm/v2/theme/index.js.map +1 -0
  309. package/dist/esm/v2/tokens/breakpoints.js +106 -0
  310. package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
  311. package/dist/esm/v2/tokens/colors.js +219 -0
  312. package/dist/esm/v2/tokens/colors.js.map +1 -0
  313. package/dist/esm/v2/tokens/density.js +98 -0
  314. package/dist/esm/v2/tokens/density.js.map +1 -0
  315. package/dist/esm/v2/tokens/index.js +80 -0
  316. package/dist/esm/v2/tokens/index.js.map +1 -0
  317. package/dist/esm/v2/tokens/motion.js +88 -0
  318. package/dist/esm/v2/tokens/motion.js.map +1 -0
  319. package/dist/esm/v2/tokens/radius.js +22 -0
  320. package/dist/esm/v2/tokens/radius.js.map +1 -0
  321. package/dist/esm/v2/tokens/shadows.js +40 -0
  322. package/dist/esm/v2/tokens/shadows.js.map +1 -0
  323. package/dist/esm/v2/tokens/spacing.js +51 -0
  324. package/dist/esm/v2/tokens/spacing.js.map +1 -0
  325. package/dist/esm/v2/tokens/state.js +41 -0
  326. package/dist/esm/v2/tokens/state.js.map +1 -0
  327. package/dist/esm/v2/tokens/statusPalette.js +66 -0
  328. package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
  329. package/dist/esm/v2/tokens/tokens.json +153 -0
  330. package/dist/esm/v2/tokens/typography.js +149 -0
  331. package/dist/esm/v2/tokens/typography.js.map +1 -0
  332. package/dist/esm/v2/tokens/zIndex.js +44 -0
  333. package/dist/esm/v2/tokens/zIndex.js.map +1 -0
  334. package/dist/esm/v2/types/common.js +2 -0
  335. package/dist/esm/v2/types/common.js.map +1 -0
  336. package/dist/esm/v2/types/datagrid.js +2 -0
  337. package/dist/esm/v2/types/datagrid.js.map +1 -0
  338. package/dist/esm/v2/types/index.js +12 -0
  339. package/dist/esm/v2/types/index.js.map +1 -0
  340. package/dist/esm/v2/utils/apiError.js +281 -0
  341. package/dist/esm/v2/utils/apiError.js.map +1 -0
  342. package/dist/esm/v2/utils/contrast.js +157 -0
  343. package/dist/esm/v2/utils/contrast.js.map +1 -0
  344. package/dist/esm/v2/utils/cx.js +38 -0
  345. package/dist/esm/v2/utils/cx.js.map +1 -0
  346. package/dist/esm/v2/utils/fileDownload.js +226 -0
  347. package/dist/esm/v2/utils/fileDownload.js.map +1 -0
  348. package/dist/esm/v2/utils/fmtMoney.js +78 -0
  349. package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
  350. package/dist/esm/v2/utils/index.js +43 -0
  351. package/dist/esm/v2/utils/index.js.map +1 -0
  352. package/dist/esm/v2/utils/mergeLabels.js +86 -0
  353. package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
  354. package/dist/esm/v2/utils/networkStatus.js +114 -0
  355. package/dist/esm/v2/utils/networkStatus.js.map +1 -0
  356. package/dist/index.d.ts +3 -2
  357. package/dist/index.d.ts.map +1 -1
  358. package/dist/index.js +21 -0
  359. package/dist/index.js.map +1 -1
  360. package/dist/v2/__tests__/FieldError.test.js +164 -0
  361. package/dist/v2/__tests__/FieldError.test.js.map +1 -0
  362. package/dist/v2/__tests__/FileCard.test.js +148 -0
  363. package/dist/v2/__tests__/FileCard.test.js.map +1 -0
  364. package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
  365. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  366. package/dist/v2/components/Accordion.d.ts +6 -6
  367. package/dist/v2/components/Accordion.d.ts.map +1 -1
  368. package/dist/v2/components/Accordion.js.map +1 -1
  369. package/dist/v2/components/ActionStrip.d.ts +12 -12
  370. package/dist/v2/components/ActionStrip.d.ts.map +1 -1
  371. package/dist/v2/components/ActionStrip.js.map +1 -1
  372. package/dist/v2/components/Banner.d.ts +48 -9
  373. package/dist/v2/components/Banner.d.ts.map +1 -1
  374. package/dist/v2/components/Banner.js +116 -35
  375. package/dist/v2/components/Banner.js.map +1 -1
  376. package/dist/v2/components/Busy.d.ts +3 -3
  377. package/dist/v2/components/Busy.d.ts.map +1 -1
  378. package/dist/v2/components/Busy.js.map +1 -1
  379. package/dist/v2/components/Button.d.ts +6 -6
  380. package/dist/v2/components/Button.d.ts.map +1 -1
  381. package/dist/v2/components/Button.js.map +1 -1
  382. package/dist/v2/components/CategoryTag.d.ts +3 -3
  383. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  384. package/dist/v2/components/CategoryTag.js.map +1 -1
  385. package/dist/v2/components/Checkbox.d.ts +11 -11
  386. package/dist/v2/components/Checkbox.d.ts.map +1 -1
  387. package/dist/v2/components/Checkbox.js.map +1 -1
  388. package/dist/v2/components/Chip.d.ts +8 -8
  389. package/dist/v2/components/Chip.d.ts.map +1 -1
  390. package/dist/v2/components/Chip.js +2 -1
  391. package/dist/v2/components/Chip.js.map +1 -1
  392. package/dist/v2/components/Combobox.d.ts +27 -27
  393. package/dist/v2/components/Combobox.d.ts.map +1 -1
  394. package/dist/v2/components/Combobox.js +3 -2
  395. package/dist/v2/components/Combobox.js.map +1 -1
  396. package/dist/v2/components/CommandPalette.d.ts +20 -20
  397. package/dist/v2/components/CommandPalette.d.ts.map +1 -1
  398. package/dist/v2/components/CommandPalette.js +2 -6
  399. package/dist/v2/components/CommandPalette.js.map +1 -1
  400. package/dist/v2/components/ConfirmDialog.d.ts +13 -13
  401. package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
  402. package/dist/v2/components/ConfirmDialog.js +2 -1
  403. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  404. package/dist/v2/components/DatePicker.d.ts +11 -11
  405. package/dist/v2/components/DatePicker.d.ts.map +1 -1
  406. package/dist/v2/components/DatePicker.js.map +1 -1
  407. package/dist/v2/components/DateRangePicker.d.ts +16 -16
  408. package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
  409. package/dist/v2/components/DateRangePicker.js +2 -1
  410. package/dist/v2/components/DateRangePicker.js.map +1 -1
  411. package/dist/v2/components/DateTimePicker.d.ts +11 -11
  412. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  413. package/dist/v2/components/DateTimePicker.js.map +1 -1
  414. package/dist/v2/components/Drawer.d.ts +18 -18
  415. package/dist/v2/components/Drawer.d.ts.map +1 -1
  416. package/dist/v2/components/Drawer.js +2 -1
  417. package/dist/v2/components/Drawer.js.map +1 -1
  418. package/dist/v2/components/Dropzone.d.ts +34 -34
  419. package/dist/v2/components/Dropzone.d.ts.map +1 -1
  420. package/dist/v2/components/Dropzone.js +11 -3
  421. package/dist/v2/components/Dropzone.js.map +1 -1
  422. package/dist/v2/components/EmptyState.d.ts +7 -7
  423. package/dist/v2/components/EmptyState.d.ts.map +1 -1
  424. package/dist/v2/components/EmptyState.js.map +1 -1
  425. package/dist/v2/components/FavoriteToggle.d.ts +7 -7
  426. package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
  427. package/dist/v2/components/FavoriteToggle.js +2 -1
  428. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  429. package/dist/v2/components/Field.d.ts +17 -12
  430. package/dist/v2/components/Field.d.ts.map +1 -1
  431. package/dist/v2/components/Field.js +25 -7
  432. package/dist/v2/components/Field.js.map +1 -1
  433. package/dist/v2/components/FieldError.d.ts +78 -0
  434. package/dist/v2/components/FieldError.d.ts.map +1 -0
  435. package/dist/v2/components/FieldError.js +131 -0
  436. package/dist/v2/components/FieldError.js.map +1 -0
  437. package/dist/v2/components/FieldHelp.d.ts +7 -7
  438. package/dist/v2/components/FieldHelp.d.ts.map +1 -1
  439. package/dist/v2/components/FieldHelp.js.map +1 -1
  440. package/dist/v2/components/FileCard.d.ts +75 -0
  441. package/dist/v2/components/FileCard.d.ts.map +1 -0
  442. package/dist/v2/components/FileCard.js +169 -0
  443. package/dist/v2/components/FileCard.js.map +1 -0
  444. package/dist/v2/components/FilterTab.d.ts +9 -9
  445. package/dist/v2/components/FilterTab.d.ts.map +1 -1
  446. package/dist/v2/components/FilterTab.js +2 -1
  447. package/dist/v2/components/FilterTab.js.map +1 -1
  448. package/dist/v2/components/FormGrid.d.ts +9 -4
  449. package/dist/v2/components/FormGrid.d.ts.map +1 -1
  450. package/dist/v2/components/FormGrid.js +11 -1
  451. package/dist/v2/components/FormGrid.js.map +1 -1
  452. package/dist/v2/components/FormikDisplay.d.ts +6 -6
  453. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  454. package/dist/v2/components/FormikDisplay.js.map +1 -1
  455. package/dist/v2/components/Input.d.ts +6 -6
  456. package/dist/v2/components/Input.d.ts.map +1 -1
  457. package/dist/v2/components/Input.js.map +1 -1
  458. package/dist/v2/components/KPICard.d.ts +43 -13
  459. package/dist/v2/components/KPICard.d.ts.map +1 -1
  460. package/dist/v2/components/KPICard.js +53 -14
  461. package/dist/v2/components/KPICard.js.map +1 -1
  462. package/dist/v2/components/KPIStrip.d.ts +68 -0
  463. package/dist/v2/components/KPIStrip.d.ts.map +1 -0
  464. package/dist/v2/components/KPIStrip.js +92 -0
  465. package/dist/v2/components/KPIStrip.js.map +1 -0
  466. package/dist/v2/components/KV.d.ts +3 -3
  467. package/dist/v2/components/KV.d.ts.map +1 -1
  468. package/dist/v2/components/KV.js.map +1 -1
  469. package/dist/v2/components/KVGrid.d.ts +2 -2
  470. package/dist/v2/components/KVGrid.d.ts.map +1 -1
  471. package/dist/v2/components/KVGrid.js +8 -1
  472. package/dist/v2/components/KVGrid.js.map +1 -1
  473. package/dist/v2/components/Layout.d.ts +7 -7
  474. package/dist/v2/components/Layout.d.ts.map +1 -1
  475. package/dist/v2/components/Layout.js.map +1 -1
  476. package/dist/v2/components/MobileRowCard.d.ts +13 -13
  477. package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
  478. package/dist/v2/components/MobileRowCard.js.map +1 -1
  479. package/dist/v2/components/Modal.d.ts +12 -12
  480. package/dist/v2/components/Modal.d.ts.map +1 -1
  481. package/dist/v2/components/Modal.js.map +1 -1
  482. package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
  483. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  484. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  485. package/dist/v2/components/NumberInput.d.ts +14 -14
  486. package/dist/v2/components/NumberInput.d.ts.map +1 -1
  487. package/dist/v2/components/NumberInput.js +7 -6
  488. package/dist/v2/components/NumberInput.js.map +1 -1
  489. package/dist/v2/components/OverflowMenu.d.ts +14 -14
  490. package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
  491. package/dist/v2/components/OverflowMenu.js +4 -8
  492. package/dist/v2/components/OverflowMenu.js.map +1 -1
  493. package/dist/v2/components/PdfViewer.d.ts +9 -9
  494. package/dist/v2/components/PdfViewer.d.ts.map +1 -1
  495. package/dist/v2/components/PdfViewer.js.map +1 -1
  496. package/dist/v2/components/ProgressBar.d.ts +10 -10
  497. package/dist/v2/components/ProgressBar.d.ts.map +1 -1
  498. package/dist/v2/components/ProgressBar.js.map +1 -1
  499. package/dist/v2/components/Radio.d.ts +7 -7
  500. package/dist/v2/components/Radio.d.ts.map +1 -1
  501. package/dist/v2/components/Radio.js.map +1 -1
  502. package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
  503. package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
  504. package/dist/v2/components/SectionErrorBoundary.js +221 -0
  505. package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
  506. package/dist/v2/components/SectionHeader.d.ts +5 -5
  507. package/dist/v2/components/SectionHeader.d.ts.map +1 -1
  508. package/dist/v2/components/SectionHeader.js.map +1 -1
  509. package/dist/v2/components/Segmented.d.ts +11 -11
  510. package/dist/v2/components/Segmented.d.ts.map +1 -1
  511. package/dist/v2/components/Segmented.js.map +1 -1
  512. package/dist/v2/components/Select.d.ts +33 -15
  513. package/dist/v2/components/Select.d.ts.map +1 -1
  514. package/dist/v2/components/Select.js +147 -30
  515. package/dist/v2/components/Select.js.map +1 -1
  516. package/dist/v2/components/ServerErrorPage.d.ts +1 -1
  517. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  518. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  519. package/dist/v2/components/Skeleton.d.ts +15 -15
  520. package/dist/v2/components/Skeleton.d.ts.map +1 -1
  521. package/dist/v2/components/Skeleton.js.map +1 -1
  522. package/dist/v2/components/SkipLink.d.ts +2 -2
  523. package/dist/v2/components/SkipLink.d.ts.map +1 -1
  524. package/dist/v2/components/SkipLink.js.map +1 -1
  525. package/dist/v2/components/Status.d.ts +3 -3
  526. package/dist/v2/components/Status.d.ts.map +1 -1
  527. package/dist/v2/components/Status.js.map +1 -1
  528. package/dist/v2/components/Stepper.d.ts +28 -22
  529. package/dist/v2/components/Stepper.d.ts.map +1 -1
  530. package/dist/v2/components/Stepper.js +31 -5
  531. package/dist/v2/components/Stepper.js.map +1 -1
  532. package/dist/v2/components/Surface.d.ts +94 -0
  533. package/dist/v2/components/Surface.d.ts.map +1 -0
  534. package/dist/v2/components/Surface.js +163 -0
  535. package/dist/v2/components/Surface.js.map +1 -0
  536. package/dist/v2/components/Switch.d.ts +4 -4
  537. package/dist/v2/components/Switch.d.ts.map +1 -1
  538. package/dist/v2/components/Switch.js.map +1 -1
  539. package/dist/v2/components/Tabs.d.ts +6 -6
  540. package/dist/v2/components/Tabs.d.ts.map +1 -1
  541. package/dist/v2/components/Tabs.js.map +1 -1
  542. package/dist/v2/components/TelInput.d.ts +8 -8
  543. package/dist/v2/components/TelInput.d.ts.map +1 -1
  544. package/dist/v2/components/TelInput.js +18 -18
  545. package/dist/v2/components/TelInput.js.map +1 -1
  546. package/dist/v2/components/Textarea.d.ts +1 -1
  547. package/dist/v2/components/Textarea.d.ts.map +1 -1
  548. package/dist/v2/components/Textarea.js.map +1 -1
  549. package/dist/v2/components/TimePicker.d.ts +11 -11
  550. package/dist/v2/components/TimePicker.d.ts.map +1 -1
  551. package/dist/v2/components/TimePicker.js.map +1 -1
  552. package/dist/v2/components/Toast.d.ts +6 -6
  553. package/dist/v2/components/Toast.d.ts.map +1 -1
  554. package/dist/v2/components/Toast.js +9 -8
  555. package/dist/v2/components/Toast.js.map +1 -1
  556. package/dist/v2/components/Tooltip.d.ts +1 -1
  557. package/dist/v2/components/Tooltip.d.ts.map +1 -1
  558. package/dist/v2/components/Tooltip.js.map +1 -1
  559. package/dist/v2/components/index.d.ts +143 -0
  560. package/dist/v2/components/index.d.ts.map +1 -1
  561. package/dist/v2/components/index.js +35 -0
  562. package/dist/v2/components/index.js.map +1 -1
  563. package/dist/v2/models/favorite.d.ts +1 -1
  564. package/dist/v2/models/favorite.d.ts.map +1 -1
  565. package/dist/v2/models/favorite.js.map +1 -1
  566. package/dist/v2/models/personalization.d.ts +13 -13
  567. package/dist/v2/models/personalization.d.ts.map +1 -1
  568. package/dist/v2/models/personalization.js.map +1 -1
  569. package/dist/v2/models/referentiel.d.ts +11 -11
  570. package/dist/v2/models/referentiel.d.ts.map +1 -1
  571. package/dist/v2/models/referentiel.js.map +1 -1
  572. package/dist/v2/models/savedFilter.d.ts +8 -8
  573. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  574. package/dist/v2/models/savedFilter.js.map +1 -1
  575. package/dist/v2/patterns/ActionBar.d.ts +33 -33
  576. package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
  577. package/dist/v2/patterns/ActionBar.js +2 -1
  578. package/dist/v2/patterns/ActionBar.js.map +1 -1
  579. package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
  580. package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
  581. package/dist/v2/patterns/BulkActionBar.js +2 -1
  582. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  583. package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
  584. package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
  585. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  586. package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
  587. package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
  588. package/dist/v2/patterns/ColumnsToggle.js +4 -8
  589. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  590. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
  591. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  592. package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
  593. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  594. package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
  595. package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
  596. package/dist/v2/patterns/DataGridToolbar.js +2 -1
  597. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  598. package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
  599. package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
  600. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  601. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
  602. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
  603. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  604. package/dist/v2/patterns/FavoriteColumn.d.ts +6 -6
  605. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  606. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  607. package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
  608. package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
  609. package/dist/v2/patterns/FavoritesFilter.js +2 -1
  610. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  611. package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
  612. package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
  613. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  614. package/dist/v2/patterns/FormPageShell.d.ts +4 -4
  615. package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
  616. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  617. package/dist/v2/patterns/FormSection.d.ts +19 -8
  618. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  619. package/dist/v2/patterns/FormSection.js +106 -71
  620. package/dist/v2/patterns/FormSection.js.map +1 -1
  621. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
  622. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  623. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  624. package/dist/v2/patterns/FormikCombobox.d.ts +11 -11
  625. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  626. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  627. package/dist/v2/patterns/FormikDatePicker.d.ts +36 -8
  628. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  629. package/dist/v2/patterns/FormikDatePicker.js +27 -1
  630. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  631. package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
  632. package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
  633. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  634. package/dist/v2/patterns/FormikFile.d.ts +8 -8
  635. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  636. package/dist/v2/patterns/FormikFile.js.map +1 -1
  637. package/dist/v2/patterns/FormikInput.d.ts +41 -6
  638. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  639. package/dist/v2/patterns/FormikInput.js +49 -1
  640. package/dist/v2/patterns/FormikInput.js.map +1 -1
  641. package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
  642. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  643. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  644. package/dist/v2/patterns/FormikSelect.d.ts +33 -12
  645. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  646. package/dist/v2/patterns/FormikSelect.js +28 -2
  647. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  648. package/dist/v2/patterns/FormikTextarea.d.ts +5 -5
  649. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  650. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  651. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +7 -7
  652. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  653. package/dist/v2/patterns/KeyboardShortcutsHelp.js +2 -6
  654. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  655. package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
  656. package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
  657. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  658. package/dist/v2/patterns/PageContent.d.ts +3 -3
  659. package/dist/v2/patterns/PageContent.d.ts.map +1 -1
  660. package/dist/v2/patterns/PageContent.js.map +1 -1
  661. package/dist/v2/patterns/ReferentielField.d.ts +49 -49
  662. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  663. package/dist/v2/patterns/ReferentielField.js +2 -1
  664. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  665. package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
  666. package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
  667. package/dist/v2/patterns/SaveFilterDialog.js +9 -8
  668. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  669. package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
  670. package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
  671. package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
  672. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  673. package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
  674. package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
  675. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  676. package/dist/v2/patterns/SortableHeader.d.ts +1 -1
  677. package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
  678. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  679. package/dist/v2/patterns/Tour.d.ts +12 -12
  680. package/dist/v2/patterns/Tour.d.ts.map +1 -1
  681. package/dist/v2/patterns/Tour.js +9 -8
  682. package/dist/v2/patterns/Tour.js.map +1 -1
  683. package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
  684. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  685. package/dist/v2/patterns/_dataGridShared.js +37 -3
  686. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  687. package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
  688. package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
  689. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  690. package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
  691. package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
  692. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  693. package/dist/v2/patterns/index.d.ts +27 -0
  694. package/dist/v2/patterns/index.d.ts.map +1 -1
  695. package/dist/v2/patterns/index.js.map +1 -1
  696. package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
  697. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  698. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  699. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
  700. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
  701. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  702. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
  703. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
  704. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  705. package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
  706. package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
  707. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  708. package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
  709. package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
  710. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  711. package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
  712. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  713. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  714. package/dist/v2/personalization/schema.d.ts +2 -2
  715. package/dist/v2/personalization/schema.d.ts.map +1 -1
  716. package/dist/v2/personalization/schema.js.map +1 -1
  717. package/dist/v2/personalization/types.d.ts +19 -19
  718. package/dist/v2/personalization/types.d.ts.map +1 -1
  719. package/dist/v2/personalization/types.js.map +1 -1
  720. package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
  721. package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
  722. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  723. package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
  724. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  725. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  726. package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
  727. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  728. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  729. package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
  730. package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
  731. package/dist/v2/theme/createPortnetTheme.js +25 -1
  732. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  733. package/dist/v2/types/datagrid.d.ts +59 -59
  734. package/dist/v2/types/datagrid.d.ts.map +1 -1
  735. package/dist/v2/types/datagrid.js.map +1 -1
  736. package/dist/v2/utils/apiError.d.ts +65 -4
  737. package/dist/v2/utils/apiError.d.ts.map +1 -1
  738. package/dist/v2/utils/apiError.js +69 -6
  739. package/dist/v2/utils/apiError.js.map +1 -1
  740. package/dist/v2/utils/index.d.ts +1 -0
  741. package/dist/v2/utils/index.d.ts.map +1 -1
  742. package/dist/v2/utils/index.js +7 -0
  743. package/dist/v2/utils/index.js.map +1 -1
  744. package/dist/v2/utils/mergeLabels.d.ts +59 -0
  745. package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
  746. package/dist/v2/utils/mergeLabels.js +93 -0
  747. package/dist/v2/utils/mergeLabels.js.map +1 -0
  748. package/package.json +23 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandPalette.js","names":["React","Dialog","Box","IconButton","SearchIcon","CloseIcon","useFocusTrap","mergeLabels","jsx","_jsx","jsxs","_jsxs","DEBOUNCE_MS","DEFAULT_LABELS","Object","freeze","title","footerHint","closeButton","resultsCount","n","concat","pinnedTitle","recentTitle","BACKDROP_SLOT_PROPS","sx","backgroundColor","useDebounced","value","ms","_React$useState","useState","_React$useState2","_slicedToArray","out","setOut","useEffect","t","setTimeout","clearTimeout","normalize","s","String","replace","toLowerCase","subsequenceRun","hay","token","i","consecutive","bestConsecutive","h","length","scoreToken","startsWith","wbIdx","indexOf","subIdx","Math","min","run","scoreQuery","haystack","query","tokens","split","filter","Boolean","total","_iterator","_createForOfIteratorHelper","_step","done","err","e","f","filterGroups","groups","q","trim","map","g","id","items","_iterator2","_step2","scored","_iterator3","_step3","it","label","keywords","push","item","score","sort","a","b","CommandPalette","_ref","open","onClose","_ref$groups","recentItems","pinnedItems","_ref$placeholder","placeholder","_ref$emptyState","emptyState","onQueryChange","labels","L","useMemo","_React$useState3","_React$useState4","setQuery","debouncedQuery","_React$useState5","_React$useState6","highlight","setHighlight","inputRef","useRef","listRef","titleId","useId","listId","inputId","paperRef","allGroups","hasPinned","Array","isArray","hasRecent","_toConsumableArray","visibleGroups","itemsOnly","flatMap","max","_listRef$current","node","current","querySelector","scrollIntoView","block","activate","index","_it$onSelect","onSelect","call","onInputKeyDown","key","preventDefault","onInputChange","target","activeItemId","undefined","slotProps","paper","ref","width","maxWidth","borderRadius","boxShadow","margin","overflow","backdrop","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","children","className","display","alignItems","gap","padding","borderBottom","color","fontSize","component","type","role","autoFocus","onChange","onKeyDown","flex","border","outline","background","fontFamily","fontWeight","size","onClick","maxHeight","overflowY","textAlign","headerId","textTransform","letterSpacing","entry","isActive","idx","onMouseEnter","cursor","icon","minWidth","textOverflow","whiteSpace","shortcut","justifyContent","borderTop"],"sources":["../../../../src/lib/v2/components/CommandPalette.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * CommandPalette - Portnet UI v2\r\n *\r\n * Charter §03 / §07 · ⌘K command palette. Keyboard-first launcher for pages\r\n * and actions across the app.\r\n *\r\n * const [open, setOpen] = useState(false);\r\n * useEffect(() => {\r\n * const onKey = (e) => {\r\n * if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\r\n * e.preventDefault();\r\n * setOpen(true);\r\n * }\r\n * };\r\n * window.addEventListener(\"keydown\", onKey);\r\n * return () => window.removeEventListener(\"keydown\", onKey);\r\n * }, []);\r\n *\r\n * <CommandPalette\r\n * open={open}\r\n * onClose={() => setOpen(false)}\r\n * groups={[\r\n * { id: \"pages\", title: \"Pages\", items: [\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * { id: \"titres\", label: \"Titres d'importation\", onSelect: () => nav(\"/titres\") },\r\n * ]},\r\n * { id: \"actions\", title: \"Actions\", items: [\r\n * { id: \"new-titre\", label: \"Nouveau titre\", icon: <AddIcon />, shortcut: \"C\", onSelect: createTitre },\r\n * ]},\r\n * ]}\r\n * />\r\n *\r\n * Recent + Pinned items (Batch 16 / H4)\r\n * -------------------------------------\r\n * <CommandPalette\r\n * pinnedItems={[\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * ]}\r\n * recentItems={[\r\n * { id: \"titre-2025-IM-0042\", label: \"2025-IM-0042 (SOFRANE SA)\", onSelect: () => nav(\"/titres/2025-IM-0042\") },\r\n * ]}\r\n * groups={[ ... ]}\r\n * />\r\n *\r\n * Both extras are HOST-MANAGED. Lib does NOT track selections or\r\n * pinning state — track in your per-item onSelect handler and\r\n * persist to localStorage / server prefs as a host concern.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <CommandPalette\r\n * placeholder=\"Search a page or action…\"\r\n * emptyState=\"No result.\"\r\n * labels={{\r\n * title: \"Command palette\",\r\n * footerHint: \"↑↓ to navigate · ↵ to select · Esc to close\",\r\n * closeButton: \"Close palette\",\r\n * resultsCount: (n) => `${n} result${n === 1 ? \"\" : \"s\"}`,\r\n * pinnedTitle: \"Pinned\",\r\n * recentTitle: \"Recent\",\r\n * }}\r\n * />\r\n *\r\n * `resultsCount` is a function so the host can plug in proper plural\r\n * rules (Intl.PluralRules, ICU MessageFormat, i18next, …).\r\n *\r\n * Matching behaviour (Batch 13 / D2):\r\n * The search is fuzzy. Each match is scored across four tiers\r\n * (prefix > word-boundary > substring > subsequence) and within\r\n * each group items are surfaced in descending score order.\r\n * Multi-token queries (\"tit imp\") split on whitespace and require\r\n * every token to hit somewhere; final score is the per-token\r\n * average. Diacritics are folded — \"Emile\" matches \"Émile\".\r\n *\r\n * Focus management (R-F.2):\r\n * Backed by the v2 useFocusTrap hook (Batch 3). The search <input>\r\n * declares `autoFocus`, so on open the trap's initial-focus rAF\r\n * lands directly on it. The input is a role=\"combobox\" and carries an\r\n * aria-label (CP-1) so screen readers announce a name, not just a role.\r\n */\r\n\r\nconst DEBOUNCE_MS = 80;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n title: \"Palette de commandes\",\r\n footerHint: \"↑↓ pour naviguer · ↵ pour sélectionner · Esc pour fermer\",\r\n closeButton: \"Fermer la palette\",\r\n resultsCount: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n pinnedTitle: \"Épinglés\",\r\n recentTitle: \"Récents\",\r\n});\r\n\r\n// MUI v9: backdrop slot bag. Hoisted — its content (only an sx token)\r\n// is independent of any palette instance state.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-G.2 / R-AI.1 - backdrop derived from the live --fg token (matches\r\n // Modal). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nexport interface CommandPaletteItem {\r\n id: string | number;\r\n label: React.ReactNode;\r\n icon?: React.ReactNode | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n keywords?: string | undefined;\r\n onSelect?: (() => void) | undefined;\r\n}\r\n\r\nexport interface CommandPaletteGroup {\r\n id: string;\r\n title?: React.ReactNode | undefined;\r\n items: CommandPaletteItem[];\r\n}\r\n\r\nexport interface CommandPaletteLabels {\r\n title?: string | undefined;\r\n footerHint?: string | undefined;\r\n closeButton?: string | undefined;\r\n resultsCount?: ((n: number) => React.ReactNode) | undefined;\r\n pinnedTitle?: React.ReactNode | undefined;\r\n recentTitle?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n groups?: CommandPaletteGroup[] | undefined;\r\n recentItems?: CommandPaletteItem[] | undefined;\r\n pinnedItems?: CommandPaletteItem[] | undefined;\r\n placeholder?: string | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n onQueryChange?: ((q: string) => void) | undefined;\r\n labels?: CommandPaletteLabels | undefined;\r\n}\r\n\r\nfunction useDebounced<T>(value: T, ms: number): T {\r\n const [out, setOut] = React.useState(value);\r\n React.useEffect(() => {\r\n const t = setTimeout(() => setOut(value), ms);\r\n return () => clearTimeout(t);\r\n }, [value, ms]);\r\n return out;\r\n}\r\n\r\n/* ── Fuzzy matching (D2) ───────────────────────────────────────────────\r\n * Module-level pure helpers. No external dep, no allocation per match\r\n * beyond the obligatory tokenisation Array.\r\n *\r\n * Score scale is conventional, NOT meaningful in absolute terms:\r\n * - 0 → no match (filtered out)\r\n * - higher → more relevant (sorted descending within each group)\r\n */\r\n\r\n/**\r\n * NFD-normalise + strip combining marks + lowercase. Folds diacritics\r\n * so \"Émile\" → \"emile\" and \"Café\" → \"cafe\", letting users search\r\n * without typing accents. The unicode range \\u0300-\\u036F covers the\r\n * Combining Diacritical Marks block (U+0300..U+036F).\r\n */\r\nfunction normalize(s: string): string {\r\n if (!s) return \"\";\r\n return String(s).normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Subsequence match score — how well does `token` appear (in order,\r\n * not necessarily contiguous) inside `hay`?\r\n *\r\n * - Returns 0 if any character is missing.\r\n * - Otherwise returns the longest CONSECUTIVE run divided by the\r\n * token length. So \"imp\" inside \"important\" gets ratio 1.0\r\n * (whole word matched contiguously), while \"imp\" inside\r\n * \"i_m_p\" (gaps) gets a low ratio.\r\n *\r\n * The contiguous-run heuristic is much cheaper than a full Smith-\r\n * Waterman and good enough for command-palette UX.\r\n */\r\nfunction subsequenceRun(hay: string, token: string): number {\r\n let i = 0;\r\n let consecutive = 0;\r\n let bestConsecutive = 0;\r\n for (let h = 0; h < hay.length && i < token.length; h += 1) {\r\n if (hay[h] === token[i]) {\r\n i += 1;\r\n consecutive += 1;\r\n if (consecutive > bestConsecutive) bestConsecutive = consecutive;\r\n } else {\r\n consecutive = 0;\r\n }\r\n }\r\n if (i < token.length) return 0;\r\n return bestConsecutive / token.length;\r\n}\r\n\r\n/**\r\n * Score a single token against a haystack. Four tiers, best wins.\r\n * Both inputs are assumed already normalised (lowercase, no diacritics).\r\n */\r\nfunction scoreToken(hay: string, token: string): number {\r\n if (hay.startsWith(token)) return 100;\r\n\r\n const wbIdx = hay.indexOf(\" \" + token);\r\n if (wbIdx >= 0) return 80;\r\n\r\n const subIdx = hay.indexOf(token);\r\n if (subIdx >= 0) {\r\n return 60 - Math.min(20, subIdx * 0.1);\r\n }\r\n\r\n const run = subsequenceRun(hay, token);\r\n if (run > 0) return 40 * run;\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Score a multi-token query. Splits on whitespace; every token must hit\r\n * somewhere. Returns the average across tokens, or 0 if any token misses.\r\n */\r\nfunction scoreQuery(haystack: string, query: string): number {\r\n const hay = normalize(haystack);\r\n const tokens = normalize(query).split(/\\s+/).filter(Boolean);\r\n if (tokens.length === 0) return 1;\r\n if (!hay) return 0;\r\n\r\n let total = 0;\r\n for (const token of tokens) {\r\n const s = scoreToken(hay, token);\r\n if (s === 0) return 0;\r\n total += s;\r\n }\r\n return total / tokens.length;\r\n}\r\n\r\n/**\r\n * Filter `groups` against the query. Within each group, items are\r\n * surfaced in descending score order (most relevant first). Group\r\n * order itself is preserved — groups are author-defined categories,\r\n * not relevance buckets.\r\n *\r\n * Empty / whitespace-only query → return groups untouched (just drop\r\n * the empty ones). Preserves the original \"no query = browse\" UX.\r\n */\r\nfunction filterGroups(groups: CommandPaletteGroup[], query: string): CommandPaletteGroup[] {\r\n const q = query.trim();\r\n if (!q) {\r\n return groups\r\n .map((g) => ({ id: g.id, title: g.title, items: g.items }))\r\n .filter((g) => g.items.length > 0);\r\n }\r\n\r\n const out: CommandPaletteGroup[] = [];\r\n for (const g of groups) {\r\n const scored: Array<{ item: CommandPaletteItem; score: number }> = [];\r\n for (const it of g.items) {\r\n const hay = `${it.label} ${it.keywords || \"\"}`;\r\n const s = scoreQuery(hay, q);\r\n if (s > 0) scored.push({ item: it, score: s });\r\n }\r\n if (scored.length === 0) continue;\r\n scored.sort((a, b) => b.score - a.score);\r\n out.push({ id: g.id, title: g.title, items: scored.map((s) => s.item) });\r\n }\r\n return out;\r\n}\r\n\r\nfunction CommandPalette({\r\n open,\r\n onClose,\r\n groups = [],\r\n recentItems,\r\n pinnedItems,\r\n placeholder = \"Rechercher une page, une action…\",\r\n emptyState = \"Aucun résultat.\",\r\n onQueryChange,\r\n labels,\r\n}: CommandPaletteProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const debouncedQuery = useDebounced(query, DEBOUNCE_MS);\r\n const [highlight, setHighlight] = React.useState(0);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const listRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const listId = React.useId();\r\n const inputId = React.useId();\r\n\r\n // R-F.2 - the v2 trap is wired on the Dialog Paper element, activated\r\n // only while the palette is open. MUI's own trap is disabled below.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef as React.RefObject<HTMLDivElement>, !!open);\r\n\r\n // H4 — synthetic groups for pinnedItems / recentItems prepended to\r\n // the host's groups. Empty extras collapse the array to `groups`\r\n // verbatim — same reference when neither prop is set, so downstream\r\n // memoisation stays valid for the no-op case.\r\n const allGroups = React.useMemo<CommandPaletteGroup[]>(() => {\r\n const hasPinned = Array.isArray(pinnedItems) && pinnedItems.length > 0;\r\n const hasRecent = Array.isArray(recentItems) && recentItems.length > 0;\r\n if (!hasPinned && !hasRecent) return groups;\r\n const out: CommandPaletteGroup[] = [];\r\n if (hasPinned) {\r\n out.push({ id: \"_pinned\", title: L.pinnedTitle, items: pinnedItems ?? [] });\r\n }\r\n if (hasRecent) {\r\n out.push({ id: \"_recent\", title: L.recentTitle, items: recentItems ?? [] });\r\n }\r\n return [...out, ...groups];\r\n }, [pinnedItems, recentItems, groups, L.pinnedTitle, L.recentTitle]);\r\n\r\n const visibleGroups = React.useMemo(\r\n () => filterGroups(allGroups, debouncedQuery),\r\n [allGroups, debouncedQuery]\r\n );\r\n const itemsOnly = React.useMemo(\r\n () => visibleGroups.flatMap((g) => g.items),\r\n [visibleGroups]\r\n );\r\n\r\n // Reset state on (re)open. Initial focus on the input is handled by\r\n // useFocusTrap above (the input carries `autoFocus`).\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setQuery(\"\");\r\n setHighlight(0);\r\n }, [open]);\r\n\r\n // Keep highlight valid when results shrink/grow\r\n React.useEffect(() => {\r\n if (highlight >= itemsOnly.length) {\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n }, [itemsOnly.length, highlight]);\r\n\r\n // Scroll the highlighted item into view\r\n React.useEffect(() => {\r\n if (!open || itemsOnly.length === 0) return;\r\n const node = listRef.current?.querySelector(`[data-item-index=\"${highlight}\"]`);\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [highlight, open, itemsOnly.length]);\r\n\r\n const activate = (index: number) => {\r\n const it = itemsOnly[index];\r\n if (!it) return;\r\n onClose?.();\r\n // Defer the action one tick so onClose can restore focus before any\r\n // navigation happens (consumer-side routing).\r\n setTimeout(() => it.onSelect?.(), 0);\r\n };\r\n\r\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h + 1) % itemsOnly.length));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h - 1 + itemsOnly.length) % itemsOnly.length));\r\n } else if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n activate(highlight);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n setHighlight(0);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setQuery(e.target.value);\r\n onQueryChange?.(e.target.value);\r\n setHighlight(0);\r\n };\r\n\r\n const activeItemId = itemsOnly[highlight] ? `${listId}-opt-${highlight}` : undefined;\r\n\r\n // MUI v9: Dialog paper + backdrop bags forwarded through slotProps.\r\n // The paper slot embeds the per-instance focus-trap ref so we\r\n // useMemo it for reference stability across renders.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: {\r\n width: \"100%\",\r\n maxWidth: 640,\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n margin: \"var(--s-3)\",\r\n overflow: \"hidden\",\r\n } satisfies SxProps<Theme>,\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n []\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={onClose}\r\n maxWidth={false}\r\n aria-labelledby={titleId}\r\n // Hand over focus management to useFocusTrap above.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n slotProps={slotProps}\r\n >\r\n <Box className=\"pui-sr-only\" id={titleId}>\r\n {L.title}\r\n </Box>\r\n\r\n {/* Search input row */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n }}\r\n >\r\n <SearchIcon\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--fg-subtle)\", fontSize: 20 }}\r\n />\r\n <Box\r\n component=\"input\"\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-controls={listId}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={activeItemId}\r\n // CP-1 — accessible name for the combobox input. The sr-only title\r\n // labels the Dialog, not this input, and a placeholder is not a\r\n // reliable accessible name; expose the placeholder text as the name.\r\n aria-label={placeholder}\r\n autoFocus\r\n value={query}\r\n onChange={onInputChange}\r\n onKeyDown={onInputKeyDown}\r\n placeholder={placeholder}\r\n sx={{\r\n flex: 1,\r\n border: 0,\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontFamily: \"inherit\",\r\n fontSize: \"var(--text-body, 14px)\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n ESC\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={onClose}\r\n aria-label={L.closeButton}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* Results listbox */}\r\n <Box\r\n ref={listRef}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-labelledby={titleId}\r\n sx={{\r\n maxHeight: 360,\r\n overflowY: \"auto\",\r\n padding: \"var(--s-2) 0\",\r\n }}\r\n >\r\n {visibleGroups.length === 0 && (\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5) var(--s-4)\",\r\n textAlign: \"center\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n {emptyState}\r\n </Box>\r\n )}\r\n {(() => {\r\n let i = -1;\r\n return visibleGroups.map((g) => {\r\n const headerId = `${listId}-h-${g.id}`;\r\n return (\r\n <Box\r\n key={g.id}\r\n role=\"group\"\r\n aria-labelledby={headerId}\r\n >\r\n <Box\r\n id={headerId}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n padding: \"var(--s-2) var(--s-4) var(--s-1)\",\r\n }}\r\n >\r\n {g.title}\r\n </Box>\r\n {g.items.map((entry) => {\r\n i += 1;\r\n const isActive = i === highlight;\r\n const idx = i;\r\n return (\r\n <Box\r\n key={entry.id}\r\n role=\"option\"\r\n id={`${listId}-opt-${idx}`}\r\n aria-selected={isActive}\r\n data-item-index={idx}\r\n onMouseEnter={() => setHighlight(idx)}\r\n onClick={() => activate(idx)}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n cursor: \"pointer\",\r\n background: isActive ? \"var(--accent-soft)\" : \"transparent\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg)\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {entry.icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg-muted)\",\r\n }}\r\n >\r\n {entry.icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n {entry.label}\r\n </Box>\r\n {entry.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {entry.shortcut}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n });\r\n })()}\r\n </Box>\r\n\r\n {/* Footer */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n background: \"var(--bg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {/* Visual-only keyboard hints. Hidden from SR — the listbox already\r\n exposes navigation via aria-activedescendant + role semantics. */}\r\n <Box aria-hidden=\"true\">{L.footerHint}</Box>\r\n {/* R-A.1 — polite live region so SR users hear the result count\r\n change as they type. aria-atomic ensures the full sentence is\r\n re-read on update. C6 — aria-relevant explicit closes NVDA +\r\n Firefox cross-sibling pull-in quirks. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\">\r\n {L.resultsCount(itemsOnly.length)}\r\n </Box>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default CommandPalette;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,144 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ import * as React from "react";
8
+ import Modal from "./Modal";
9
+ import Button from "./Button";
10
+ import Box from "@mui/material/Box";
11
+ import { mergeLabels } from "../utils/mergeLabels";
12
+
13
+ /**
14
+ * ConfirmDialog - Portnet UI v2
15
+ *
16
+ * Charter §04.4 - confirmation pattern for irreversible actions.
17
+ * Use whenever an action cannot be undone with a 5-s toast.
18
+ *
19
+ * R-5.1 - Action irréversible → ConfirmDialog avec récap des conséquences.
20
+ * R-5.2 - Suppression multiple → forcer la saisie ou clic bouton danger.
21
+ *
22
+ * <ConfirmDialog
23
+ * open={open}
24
+ * onClose={close}
25
+ * onConfirm={remove}
26
+ * title="Supprimer ce titre ?"
27
+ * description="Cette action est définitive."
28
+ * confirmLabel="Supprimer"
29
+ * confirmVariant="danger"
30
+ * impact={[
31
+ * "Le titre 2025-IM-0042 sera supprimé.",
32
+ * "Les pièces jointes liées seront archivées.",
33
+ * ]}
34
+ * />
35
+ *
36
+ * Localisation (FR / EN / AR):
37
+ * confirmLabel / cancelLabel are direct overrides on the props.
38
+ * The "Conséquences" heading rendered above the impact list is
39
+ * localised via the `labels` prop:
40
+ *
41
+ * <ConfirmDialog labels={{ impactHeading: "Consequences" }} ... />
42
+ */
43
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
44
+ var DEFAULT_LABELS = Object.freeze({
45
+ impactHeading: "Conséquences"
46
+ });
47
+ function ConfirmDialog(_ref) {
48
+ var open = _ref.open,
49
+ onClose = _ref.onClose,
50
+ onConfirm = _ref.onConfirm,
51
+ title = _ref.title,
52
+ description = _ref.description,
53
+ _ref$confirmLabel = _ref.confirmLabel,
54
+ confirmLabel = _ref$confirmLabel === void 0 ? "Confirmer" : _ref$confirmLabel,
55
+ _ref$cancelLabel = _ref.cancelLabel,
56
+ cancelLabel = _ref$cancelLabel === void 0 ? "Annuler" : _ref$cancelLabel,
57
+ _ref$confirmVariant = _ref.confirmVariant,
58
+ confirmVariant = _ref$confirmVariant === void 0 ? "primary" : _ref$confirmVariant,
59
+ _ref$loading = _ref.loading,
60
+ loading = _ref$loading === void 0 ? false : _ref$loading,
61
+ impact = _ref.impact,
62
+ labels = _ref.labels,
63
+ children = _ref.children;
64
+ var L = mergeLabels(DEFAULT_LABELS, labels);
65
+
66
+ // R-Ar.1 - stable id linking the impact heading to its <ul>
67
+ // so SR users hear the relationship as a single semantic unit.
68
+ var impactHeadingId = React.useId();
69
+ var hasImpact = !!(impact && impact.length > 0);
70
+ return /*#__PURE__*/_jsxs(Modal, _objectSpread(_objectSpread(_objectSpread({
71
+ title: title,
72
+ subtitle: description,
73
+ size: "sm",
74
+ footer: /*#__PURE__*/_jsxs(_Fragment, {
75
+ children: [/*#__PURE__*/_jsx(Button, {
76
+ variant: "ghost",
77
+ onClick: onClose,
78
+ disabled: loading,
79
+ children: cancelLabel
80
+ }), /*#__PURE__*/_jsx(Button, {
81
+ variant: confirmVariant,
82
+ loading: loading,
83
+ onClick: onConfirm,
84
+ children: confirmLabel
85
+ })]
86
+ })
87
+ }, open !== undefined ? {
88
+ open: open
89
+ } : {}), onClose !== undefined ? {
90
+ onClose: onClose
91
+ } : {}), {}, {
92
+ children: [hasImpact && /*#__PURE__*/_jsxs(Box, {
93
+ sx: {
94
+ background: "var(--bg-subtle)",
95
+ border: "1px solid var(--border)",
96
+ borderRadius: "var(--r-md)",
97
+ padding: "var(--s-3) var(--s-4)",
98
+ marginBottom: children ? 2 : 0
99
+ },
100
+ children: [/*#__PURE__*/_jsx(Box, {
101
+ component: "h3",
102
+ id: impactHeadingId,
103
+ sx: {
104
+ // Modal title is <h2>; this is the correct next level. Visual
105
+ // styling (uppercase caption) overrides the default <h3>.
106
+ margin: 0,
107
+ fontSize: "var(--text-xs)",
108
+ fontWeight: "var(--fw-semibold)",
109
+ color: "var(--fg-muted)",
110
+ marginBottom: 1,
111
+ textTransform: "uppercase",
112
+ /* A7-02 — was a raw "0.04em"; now the promoted token. */
113
+ letterSpacing: "var(--ls-wide)",
114
+ lineHeight: "var(--lh-snug)"
115
+ },
116
+ children: L.impactHeading
117
+ }), /*#__PURE__*/_jsx(Box, {
118
+ component: "ul",
119
+ "aria-labelledby": impactHeadingId,
120
+ sx: {
121
+ margin: 0,
122
+ // RTL-safe: paddingInlineStart resets correctly in both
123
+ // LTR (left) and RTL (right). Was paddingLeft, which in
124
+ // Arabic indented to the wrong side.
125
+ paddingInlineStart: "var(--s-5)",
126
+ fontSize: "var(--text-sm)",
127
+ color: "var(--fg)"
128
+ },
129
+ children: impact === null || impact === void 0 ? void 0 : impact.map(function (item, i) {
130
+ return /*#__PURE__*/_jsx(Box, {
131
+ component: "li",
132
+ sx: {
133
+ marginBottom: "var(--s-1)",
134
+ lineHeight: "var(--lh-normal)"
135
+ },
136
+ children: item
137
+ }, i);
138
+ })
139
+ })]
140
+ }), children]
141
+ }));
142
+ }
143
+ export default ConfirmDialog;
144
+ //# sourceMappingURL=ConfirmDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDialog.js","names":["React","Modal","Button","Box","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DEFAULT_LABELS","Object","freeze","impactHeading","ConfirmDialog","_ref","open","onClose","onConfirm","title","description","_ref$confirmLabel","confirmLabel","_ref$cancelLabel","cancelLabel","_ref$confirmVariant","confirmVariant","_ref$loading","loading","impact","labels","children","L","impactHeadingId","useId","hasImpact","length","_objectSpread","subtitle","size","footer","variant","onClick","disabled","undefined","sx","background","border","borderRadius","padding","marginBottom","component","id","margin","fontSize","fontWeight","color","textTransform","letterSpacing","lineHeight","paddingInlineStart","map","item","i"],"sources":["../../../../src/lib/v2/components/ConfirmDialog.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Modal from \"./Modal\";\r\nimport Button from \"./Button\";\r\nimport type { ButtonProps } from \"./Button\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * ConfirmDialog - Portnet UI v2\r\n *\r\n * Charter §04.4 - confirmation pattern for irreversible actions.\r\n * Use whenever an action cannot be undone with a 5-s toast.\r\n *\r\n * R-5.1 - Action irréversible → ConfirmDialog avec récap des conséquences.\r\n * R-5.2 - Suppression multiple → forcer la saisie ou clic bouton danger.\r\n *\r\n * <ConfirmDialog\r\n * open={open}\r\n * onClose={close}\r\n * onConfirm={remove}\r\n * title=\"Supprimer ce titre ?\"\r\n * description=\"Cette action est définitive.\"\r\n * confirmLabel=\"Supprimer\"\r\n * confirmVariant=\"danger\"\r\n * impact={[\r\n * \"Le titre 2025-IM-0042 sera supprimé.\",\r\n * \"Les pièces jointes liées seront archivées.\",\r\n * ]}\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * confirmLabel / cancelLabel are direct overrides on the props.\r\n * The \"Conséquences\" heading rendered above the impact list is\r\n * localised via the `labels` prop:\r\n *\r\n * <ConfirmDialog labels={{ impactHeading: \"Consequences\" }} ... />\r\n */\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n impactHeading: \"Conséquences\",\r\n});\r\n\r\nexport interface ConfirmDialogLabels {\r\n impactHeading?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface ConfirmDialogProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n onConfirm?: (() => void) | undefined;\r\n title?: React.ReactNode | undefined;\r\n description?: React.ReactNode | undefined;\r\n confirmLabel?: React.ReactNode | undefined;\r\n cancelLabel?: React.ReactNode | undefined;\r\n confirmVariant?: ButtonProps[\"variant\"] | undefined;\r\n loading?: boolean | undefined;\r\n impact?: React.ReactNode[] | undefined;\r\n labels?: ConfirmDialogLabels | undefined;\r\n children?: React.ReactNode | undefined;\r\n}\r\n\r\nfunction ConfirmDialog({\r\n open,\r\n onClose,\r\n onConfirm,\r\n title,\r\n description,\r\n confirmLabel = \"Confirmer\",\r\n cancelLabel = \"Annuler\",\r\n confirmVariant = \"primary\",\r\n loading = false,\r\n impact, // optional list of bullet-point consequences\r\n labels,\r\n children,\r\n}: ConfirmDialogProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n\r\n // R-Ar.1 - stable id linking the impact heading to its <ul>\r\n // so SR users hear the relationship as a single semantic unit.\r\n const impactHeadingId = React.useId();\r\n const hasImpact = !!(impact && impact.length > 0);\r\n\r\n return (\r\n <Modal\r\n title={title}\r\n subtitle={description}\r\n size=\"sm\"\r\n footer={\r\n <>\r\n <Button variant=\"ghost\" onClick={onClose} disabled={loading}>\r\n {cancelLabel}\r\n </Button>\r\n <Button variant={confirmVariant} loading={loading} onClick={onConfirm}>\r\n {confirmLabel}\r\n </Button>\r\n </>\r\n }\r\n {...(open !== undefined ? { open } : {})}\r\n {...(onClose !== undefined ? { onClose } : {})}\r\n >\r\n {hasImpact && (\r\n <Box\r\n sx={{\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n marginBottom: children ? 2 : 0,\r\n }}\r\n >\r\n <Box\r\n component=\"h3\"\r\n id={impactHeadingId}\r\n sx={{\r\n // Modal title is <h2>; this is the correct next level. Visual\r\n // styling (uppercase caption) overrides the default <h3>.\r\n margin: 0,\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: 1,\r\n textTransform: \"uppercase\",\r\n /* A7-02 — was a raw \"0.04em\"; now the promoted token. */\r\n letterSpacing: \"var(--ls-wide)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {L.impactHeading}\r\n </Box>\r\n <Box\r\n component=\"ul\"\r\n aria-labelledby={impactHeadingId}\r\n sx={{\r\n margin: 0,\r\n // RTL-safe: paddingInlineStart resets correctly in both\r\n // LTR (left) and RTL (right). Was paddingLeft, which in\r\n // Arabic indented to the wrong side.\r\n paddingInlineStart: \"var(--s-5)\",\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {impact?.map((item, i) => (\r\n <Box\r\n component=\"li\"\r\n key={i}\r\n sx={{ marginBottom: \"var(--s-1)\", lineHeight: \"var(--lh-normal)\" }}\r\n >\r\n {item}\r\n </Box>\r\n ))}\r\n </Box>\r\n </Box>\r\n )}\r\n {children}\r\n </Modal>\r\n );\r\n}\r\n\r\nexport default ConfirmDialog;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,200 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ var _excluded = ["value", "onChange", "onBlur", "minDate", "maxDate", "disablePast", "disableFuture", "disabled", "readOnly", "error", "placeholder", "fullWidth", "inputProps", "adapterLocale", "sx"],
3
+ _excluded2 = ["id", "aria-describedby", "aria-invalid", "aria-required", "aria-labelledby"];
4
+ 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; }
5
+ 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; }
6
+ 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; }
7
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
8
+ 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); }
9
+ 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; }
10
+ 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; }
11
+ import * as React from "react";
12
+ import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
13
+ import { DatePicker as MuiDatePicker } from "@mui/x-date-pickers/DatePicker";
14
+ import { AdapterMoment } from "@mui/x-date-pickers/AdapterMoment";
15
+ import "moment/locale/fr";
16
+ import { dateToMoment, momentToDate } from "./_pickerShared";
17
+
18
+ /**
19
+ * DatePicker — Portnet UI v2
20
+ *
21
+ * Charter §03 · Component "DatePicker". Format AAAA-MM-JJ.
22
+ *
23
+ * <Field label="Date d'expiration" required>
24
+ * <DatePicker
25
+ * value={expDate}
26
+ * onChange={setExpDate}
27
+ * minDate={new Date()}
28
+ * />
29
+ * </Field>
30
+ *
31
+ * Value contract:
32
+ * - value/onChange exchange JavaScript Date objects (or null).
33
+ * - Invalid dates (NaN, malformed user input) are coerced to null
34
+ * so consumers never receive an "Invalid Date" instance.
35
+ * - The component handles moment conversion internally.
36
+ *
37
+ * Locale:
38
+ * Default `adapterLocale="fr"` — picker reads month / weekday names
39
+ * from moment's French locale data (imported here). Hosts wanting
40
+ * other locales pass the BCP-47 / moment short tag AND import the
41
+ * matching moment locale data themselves:
42
+ *
43
+ * import "moment/locale/ar";
44
+ * <DatePicker adapterLocale="ar" />
45
+ *
46
+ * This component does NOT mutate moment's GLOBAL locale on import
47
+ * (older versions did via `moment.locale("fr")` — that leaked the
48
+ * library's preference into ALL host code using moment outside the
49
+ * picker).
50
+ *
51
+ * Format:
52
+ * - Display: AAAA-MM-JJ (charter convention). MUI X v6+ derives the
53
+ * input mask from this format string automatically — no need for
54
+ * the v5-era `mask="____-__-__"` companion prop.
55
+ * - The text input accepts user typing in the same format; partial
56
+ * entries are tolerated until the user blurs or hits Enter.
57
+ *
58
+ * Constraints:
59
+ * - minDate / maxDate accept Date objects or null.
60
+ * - disablePast / disableFuture for relative bounds.
61
+ *
62
+ * Sibling pickers in the same family:
63
+ * - DateTimePicker — adds time-of-day (HH:MM) on top of the date.
64
+ * - TimePicker — time only (HH:MM), date portion ignored.
65
+ * - DateRangePicker — paired start/end with cross-validation and
66
+ * optional preset shortcuts.
67
+ * All consume the same _pickerShared boundary helpers as this file
68
+ * and follow the same MUI X v9 slots / slotProps surface.
69
+ *
70
+ * A11y (DP-1): when used inside <Field>, Field cloneElement-injects id +
71
+ * aria-describedby / aria-invalid / aria-required (label + hint/error
72
+ * association) onto this child. MUI X does NOT forward top-level aria/id to the
73
+ * field <input>, so those are intercepted here and routed onto the input via
74
+ * slotProps.htmlInput (the <input> element slot — see the v9 note below).
75
+ * Explicit `inputProps` still win.
76
+ *
77
+ * MUI X v9 surface notes (migrated from v5 in Batch 4):
78
+ * - The v5 `renderInput` callback + `inputFormat` + `mask` triad has
79
+ * been REPLACED by the v6+ `slots`/`slotProps` API and the single
80
+ * `format` prop. The textField slot is the canonical entry point
81
+ * for any TextField prop override.
82
+ * - Inside `slotProps.textField`, the `slotProps.htmlInput` nested
83
+ * bag carries what used to be TextField's `inputProps={...}`
84
+ * (placeholder, aria-*, min/max, etc.). This double-nesting
85
+ * reflects MUI v9's own TextField API: the htmlInput slot is the
86
+ * <input/> element target, distinct from the input slot (which
87
+ * wraps it).
88
+ */
89
+ import { jsx as _jsx } from "react/jsx-runtime";
90
+ var CHARTER_FORMAT = "YYYY-MM-DD";
91
+ var DatePicker = /*#__PURE__*/React.forwardRef(function DatePicker(_ref, ref) {
92
+ var value = _ref.value,
93
+ onChange = _ref.onChange,
94
+ onBlur = _ref.onBlur,
95
+ minDate = _ref.minDate,
96
+ maxDate = _ref.maxDate,
97
+ _ref$disablePast = _ref.disablePast,
98
+ disablePast = _ref$disablePast === void 0 ? false : _ref$disablePast,
99
+ _ref$disableFuture = _ref.disableFuture,
100
+ disableFuture = _ref$disableFuture === void 0 ? false : _ref$disableFuture,
101
+ _ref$disabled = _ref.disabled,
102
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
103
+ _ref$readOnly = _ref.readOnly,
104
+ readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,
105
+ error = _ref.error,
106
+ _ref$placeholder = _ref.placeholder,
107
+ placeholder = _ref$placeholder === void 0 ? "AAAA-MM-JJ" : _ref$placeholder,
108
+ _ref$fullWidth = _ref.fullWidth,
109
+ fullWidth = _ref$fullWidth === void 0 ? true : _ref$fullWidth,
110
+ inputProps = _ref.inputProps,
111
+ _ref$adapterLocale = _ref.adapterLocale,
112
+ adapterLocale = _ref$adapterLocale === void 0 ? "fr" : _ref$adapterLocale,
113
+ sx = _ref.sx,
114
+ rest = _objectWithoutProperties(_ref, _excluded);
115
+ // DP-1 — Field cloneElement-injects the label + hint/error association props
116
+ // onto this child; MUI X won't forward top-level aria/id to the field input,
117
+ // so intercept them (cast — they aren't part of MuiDatePickerProps) and route
118
+ // them onto the <input> via slotProps.htmlInput below. Everything else stays
119
+ // in domRest for MuiDatePicker (real picker props: views, openTo, etc.).
120
+ var _ref2 = rest,
121
+ fieldId = _ref2.id,
122
+ ariaDescribedby = _ref2["aria-describedby"],
123
+ ariaInvalid = _ref2["aria-invalid"],
124
+ ariaRequired = _ref2["aria-required"],
125
+ ariaLabelledby = _ref2["aria-labelledby"],
126
+ domRest = _objectWithoutProperties(_ref2, _excluded2);
127
+ var handleChange = function handleChange(next) {
128
+ if (!onChange) return;
129
+ onChange(momentToDate(next));
130
+ };
131
+
132
+ // MUI X v9: every input customisation flows through
133
+ // slotProps.textField. The nested slotProps.htmlInput is the MUI v9
134
+ // landing zone for what used to be TextField's `inputProps={...}`
135
+ // (now the <input/> element slot) — and the DP-1 landing zone for the
136
+ // Field-injected id + aria-* so the label / hint / error actually
137
+ // associate with the date input. Memoised on the deps so the slotProps
138
+ // object reference stays stable across renders.
139
+ var slotProps = React.useMemo(function () {
140
+ return {
141
+ textField: _objectSpread(_objectSpread({
142
+ ref: ref,
143
+ error: !!error,
144
+ fullWidth: fullWidth,
145
+ size: "small"
146
+ }, onBlur ? {
147
+ onBlur: onBlur
148
+ } : {}), {}, {
149
+ sx: _objectSpread({
150
+ "& .MuiOutlinedInput-input": {
151
+ fontVariantNumeric: "tabular-nums"
152
+ }
153
+ }, sx),
154
+ slotProps: {
155
+ htmlInput: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
156
+ placeholder: placeholder
157
+ }, fieldId != null ? {
158
+ id: fieldId
159
+ } : {}), ariaDescribedby != null ? {
160
+ "aria-describedby": ariaDescribedby
161
+ } : {}), ariaInvalid != null ? {
162
+ "aria-invalid": ariaInvalid
163
+ } : {}), ariaRequired != null ? {
164
+ "aria-required": ariaRequired
165
+ } : {}), ariaLabelledby != null ? {
166
+ "aria-labelledby": ariaLabelledby
167
+ } : {}), inputProps)
168
+ }
169
+ })
170
+ };
171
+ }, [ref, error, fullWidth, onBlur, sx, placeholder, inputProps, fieldId, ariaDescribedby, ariaInvalid, ariaRequired, ariaLabelledby]);
172
+
173
+ // exactOptionalPropertyTypes: MUI's minDate/maxDate are `Moment` (not
174
+ // `Moment | undefined`), so spread the key only when a bound is set
175
+ // rather than passing an explicit `undefined`.
176
+ var minDateM = minDate ? dateToMoment(minDate) : null;
177
+ var maxDateM = maxDate ? dateToMoment(maxDate) : null;
178
+ return /*#__PURE__*/_jsx(LocalizationProvider, {
179
+ dateAdapter: AdapterMoment,
180
+ adapterLocale: adapterLocale,
181
+ children: /*#__PURE__*/_jsx(MuiDatePicker, _objectSpread(_objectSpread(_objectSpread({
182
+ value: dateToMoment(value),
183
+ onChange: handleChange
184
+ }, minDateM ? {
185
+ minDate: minDateM
186
+ } : {}), maxDateM ? {
187
+ maxDate: maxDateM
188
+ } : {}), {}, {
189
+ disablePast: disablePast,
190
+ disableFuture: disableFuture,
191
+ disabled: disabled,
192
+ readOnly: readOnly,
193
+ format: CHARTER_FORMAT,
194
+ slotProps: slotProps
195
+ }, domRest))
196
+ });
197
+ });
198
+ export var DATE_FORMAT_CHARTER = CHARTER_FORMAT;
199
+ export default DatePicker;
200
+ //# sourceMappingURL=DatePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.js","names":["React","LocalizationProvider","DatePicker","MuiDatePicker","AdapterMoment","dateToMoment","momentToDate","jsx","_jsx","CHARTER_FORMAT","forwardRef","_ref","ref","value","onChange","onBlur","minDate","maxDate","_ref$disablePast","disablePast","_ref$disableFuture","disableFuture","_ref$disabled","disabled","_ref$readOnly","readOnly","error","_ref$placeholder","placeholder","_ref$fullWidth","fullWidth","inputProps","_ref$adapterLocale","adapterLocale","sx","rest","_objectWithoutProperties","_excluded","_ref2","fieldId","id","ariaDescribedby","ariaInvalid","ariaRequired","ariaLabelledby","domRest","_excluded2","handleChange","next","slotProps","useMemo","textField","_objectSpread","size","fontVariantNumeric","htmlInput","minDateM","maxDateM","dateAdapter","children","format","DATE_FORMAT_CHARTER"],"sources":["../../../../src/lib/v2/components/DatePicker.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\r\nimport { DatePicker as MuiDatePicker } from \"@mui/x-date-pickers/DatePicker\";\r\nimport type { DatePickerProps as MuiDatePickerProps } from \"@mui/x-date-pickers/DatePicker\";\r\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\r\nimport type { Moment } from \"moment\";\r\nimport \"moment/locale/fr\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { dateToMoment, momentToDate } from \"./_pickerShared\";\r\n\r\n/**\r\n * DatePicker — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"DatePicker\". Format AAAA-MM-JJ.\r\n *\r\n * <Field label=\"Date d'expiration\" required>\r\n * <DatePicker\r\n * value={expDate}\r\n * onChange={setExpDate}\r\n * minDate={new Date()}\r\n * />\r\n * </Field>\r\n *\r\n * Value contract:\r\n * - value/onChange exchange JavaScript Date objects (or null).\r\n * - Invalid dates (NaN, malformed user input) are coerced to null\r\n * so consumers never receive an \"Invalid Date\" instance.\r\n * - The component handles moment conversion internally.\r\n *\r\n * Locale:\r\n * Default `adapterLocale=\"fr\"` — picker reads month / weekday names\r\n * from moment's French locale data (imported here). Hosts wanting\r\n * other locales pass the BCP-47 / moment short tag AND import the\r\n * matching moment locale data themselves:\r\n *\r\n * import \"moment/locale/ar\";\r\n * <DatePicker adapterLocale=\"ar\" />\r\n *\r\n * This component does NOT mutate moment's GLOBAL locale on import\r\n * (older versions did via `moment.locale(\"fr\")` — that leaked the\r\n * library's preference into ALL host code using moment outside the\r\n * picker).\r\n *\r\n * Format:\r\n * - Display: AAAA-MM-JJ (charter convention). MUI X v6+ derives the\r\n * input mask from this format string automatically — no need for\r\n * the v5-era `mask=\"____-__-__\"` companion prop.\r\n * - The text input accepts user typing in the same format; partial\r\n * entries are tolerated until the user blurs or hits Enter.\r\n *\r\n * Constraints:\r\n * - minDate / maxDate accept Date objects or null.\r\n * - disablePast / disableFuture for relative bounds.\r\n *\r\n * Sibling pickers in the same family:\r\n * - DateTimePicker — adds time-of-day (HH:MM) on top of the date.\r\n * - TimePicker — time only (HH:MM), date portion ignored.\r\n * - DateRangePicker — paired start/end with cross-validation and\r\n * optional preset shortcuts.\r\n * All consume the same _pickerShared boundary helpers as this file\r\n * and follow the same MUI X v9 slots / slotProps surface.\r\n *\r\n * A11y (DP-1): when used inside <Field>, Field cloneElement-injects id +\r\n * aria-describedby / aria-invalid / aria-required (label + hint/error\r\n * association) onto this child. MUI X does NOT forward top-level aria/id to the\r\n * field <input>, so those are intercepted here and routed onto the input via\r\n * slotProps.htmlInput (the <input> element slot — see the v9 note below).\r\n * Explicit `inputProps` still win.\r\n *\r\n * MUI X v9 surface notes (migrated from v5 in Batch 4):\r\n * - The v5 `renderInput` callback + `inputFormat` + `mask` triad has\r\n * been REPLACED by the v6+ `slots`/`slotProps` API and the single\r\n * `format` prop. The textField slot is the canonical entry point\r\n * for any TextField prop override.\r\n * - Inside `slotProps.textField`, the `slotProps.htmlInput` nested\r\n * bag carries what used to be TextField's `inputProps={...}`\r\n * (placeholder, aria-*, min/max, etc.). This double-nesting\r\n * reflects MUI v9's own TextField API: the htmlInput slot is the\r\n * <input/> element target, distinct from the input slot (which\r\n * wraps it).\r\n */\r\n\r\nconst CHARTER_FORMAT = \"YYYY-MM-DD\";\r\n\r\nexport interface DatePickerProps\r\n extends Omit<\r\n MuiDatePickerProps,\r\n \"value\" | \"onChange\" | \"minDate\" | \"maxDate\" | \"slots\" | \"slotProps\" | \"sx\" | \"ref\"\r\n > {\r\n value?: Date | null | undefined;\r\n onChange?: ((value: Date | null) => void) | undefined;\r\n onBlur?: React.FocusEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\r\n minDate?: Date | null | undefined;\r\n maxDate?: Date | null | undefined;\r\n error?: boolean | undefined;\r\n placeholder?: string | undefined;\r\n fullWidth?: boolean | undefined;\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n adapterLocale?: string | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(function DatePicker(\r\n {\r\n value,\r\n onChange,\r\n onBlur,\r\n minDate,\r\n maxDate,\r\n disablePast = false,\r\n disableFuture = false,\r\n disabled = false,\r\n readOnly = false,\r\n error,\r\n placeholder = \"AAAA-MM-JJ\",\r\n fullWidth = true,\r\n inputProps,\r\n adapterLocale = \"fr\",\r\n sx,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n // DP-1 — Field cloneElement-injects the label + hint/error association props\r\n // onto this child; MUI X won't forward top-level aria/id to the field input,\r\n // so intercept them (cast — they aren't part of MuiDatePickerProps) and route\r\n // them onto the <input> via slotProps.htmlInput below. Everything else stays\r\n // in domRest for MuiDatePicker (real picker props: views, openTo, etc.).\r\n const {\r\n id: fieldId,\r\n \"aria-describedby\": ariaDescribedby,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n \"aria-labelledby\": ariaLabelledby,\r\n ...domRest\r\n } = rest as typeof rest & {\r\n id?: string;\r\n \"aria-describedby\"?: string;\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | \"grammar\" | \"spelling\";\r\n \"aria-required\"?: boolean | \"true\" | \"false\";\r\n \"aria-labelledby\"?: string;\r\n };\r\n\r\n const handleChange = (next: Moment | null) => {\r\n if (!onChange) return;\r\n onChange(momentToDate(next));\r\n };\r\n\r\n // MUI X v9: every input customisation flows through\r\n // slotProps.textField. The nested slotProps.htmlInput is the MUI v9\r\n // landing zone for what used to be TextField's `inputProps={...}`\r\n // (now the <input/> element slot) — and the DP-1 landing zone for the\r\n // Field-injected id + aria-* so the label / hint / error actually\r\n // associate with the date input. Memoised on the deps so the slotProps\r\n // object reference stays stable across renders.\r\n const slotProps = React.useMemo<NonNullable<MuiDatePickerProps[\"slotProps\"]>>(\r\n () => ({\r\n textField: {\r\n ref,\r\n error: !!error,\r\n fullWidth,\r\n size: \"small\",\r\n // onBlur: the textField slot types this as FocusEventHandler<HTMLDivElement>;\r\n // our public onBlur is input-based. Cast (type-only) and include only\r\n // when defined so no explicit undefined reaches the slot.\r\n ...(onBlur ? { onBlur: onBlur as unknown as React.FocusEventHandler<HTMLDivElement> } : {}),\r\n sx: {\r\n \"& .MuiOutlinedInput-input\": { fontVariantNumeric: \"tabular-nums\" },\r\n ...sx,\r\n },\r\n slotProps: {\r\n htmlInput: {\r\n placeholder,\r\n // DP-1 — Field-injected association attrs land on the <input>.\r\n ...(fieldId != null ? { id: fieldId } : {}),\r\n ...(ariaDescribedby != null\r\n ? { \"aria-describedby\": ariaDescribedby }\r\n : {}),\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n ...(ariaLabelledby != null\r\n ? { \"aria-labelledby\": ariaLabelledby }\r\n : {}),\r\n // Explicit host inputProps win over the injected defaults.\r\n ...inputProps,\r\n },\r\n },\r\n },\r\n }),\r\n [\r\n ref,\r\n error,\r\n fullWidth,\r\n onBlur,\r\n sx,\r\n placeholder,\r\n inputProps,\r\n fieldId,\r\n ariaDescribedby,\r\n ariaInvalid,\r\n ariaRequired,\r\n ariaLabelledby,\r\n ],\r\n );\r\n\r\n // exactOptionalPropertyTypes: MUI's minDate/maxDate are `Moment` (not\r\n // `Moment | undefined`), so spread the key only when a bound is set\r\n // rather than passing an explicit `undefined`.\r\n const minDateM = minDate ? dateToMoment(minDate) : null;\r\n const maxDateM = maxDate ? dateToMoment(maxDate) : null;\r\n\r\n return (\r\n <LocalizationProvider dateAdapter={AdapterMoment} adapterLocale={adapterLocale}>\r\n <MuiDatePicker\r\n value={dateToMoment(value)}\r\n onChange={handleChange}\r\n {...(minDateM ? { minDate: minDateM } : {})}\r\n {...(maxDateM ? { maxDate: maxDateM } : {})}\r\n disablePast={disablePast}\r\n disableFuture={disableFuture}\r\n disabled={disabled}\r\n readOnly={readOnly}\r\n format={CHARTER_FORMAT}\r\n slotProps={slotProps}\r\n {...domRest}\r\n />\r\n </LocalizationProvider>\r\n );\r\n});\r\n\r\nexport const DATE_FORMAT_CHARTER = CHARTER_FORMAT;\r\n\r\nexport default DatePicker;\r\n"],"mappings":"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","ignoreList":[]}