@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
@@ -12,7 +12,12 @@ import type { SxProps, Theme } from "@mui/material/styles";
12
12
  * R-I.2 — Required adds the asterisk + `aria-required`.
13
13
  * R-I.3 — Error: `aria-invalid` + `aria-describedby` linking the message.
14
14
  * Field MERGES with the child's existing `aria-describedby` so a
15
- * consumer-supplied external help id is never lost.
15
+ * consumer-supplied external help id is never lost. The message
16
+ * itself is rendered by the shared `FieldError` primitive, which
17
+ * carries the R-4.1 MUST icon (gap G-18) — previously this component
18
+ * rendered a bare red `FormHelperText` with no icon, so the canonical
19
+ * field wrapper did not satisfy a MUST and every module inherited the
20
+ * gap on every form.
16
21
  * R-I.4 — Validation in `blur`, not `change` (caller's responsibility).
17
22
  * R-I.6 — Hint visible above error; never both at once.
18
23
  *
@@ -32,25 +37,25 @@ import type { SxProps, Theme } from "@mui/material/styles";
32
37
  * </Field>
33
38
  */
34
39
  export interface FieldProps {
35
- label?: React.ReactNode;
36
- required?: boolean;
37
- hint?: React.ReactNode;
38
- error?: React.ReactNode;
39
- htmlFor?: string;
40
- fullWidth?: boolean;
41
- disabled?: boolean;
40
+ label?: React.ReactNode | undefined;
41
+ required?: boolean | undefined;
42
+ hint?: React.ReactNode | undefined;
43
+ error?: React.ReactNode | undefined;
44
+ htmlFor?: string | undefined;
45
+ fullWidth?: boolean | undefined;
46
+ disabled?: boolean | undefined;
42
47
  /**
43
48
  * The wrapped child is an ARIA group (RadioGroup / CheckboxGroup) rather than
44
49
  * a single labelable control. Associates the label via `aria-labelledby`
45
50
  * instead of `htmlFor` / `id`.
46
51
  */
47
- group?: boolean;
52
+ group?: boolean | undefined;
48
53
  /** Optional <FieldHelp> element rendered next to the label. */
49
- helpAdornment?: React.ReactNode;
54
+ helpAdornment?: React.ReactNode | undefined;
50
55
  /** The single form-control element to wrap. */
51
56
  children: React.ReactElement;
52
- sx?: SxProps<Theme>;
53
- className?: string;
57
+ sx?: SxProps<Theme> | undefined;
58
+ className?: string | undefined;
54
59
  }
55
60
  declare function Field({ label, required, hint, error, htmlFor, fullWidth, disabled, group, children, helpAdornment, // optional <FieldHelp> element
56
61
  sx, className, }: FieldProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,QAAgB,EAChB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAgB,EAChB,QAAQ,EACR,KAAa,EACb,QAAQ,EACR,aAAa,EAAE,+BAA+B;AAC9C,EAAE,EACF,SAAS,GACV,EAAE,UAAU,qBA8IZ;AAED,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5C,+CAA+C;IAC/C,QAAQ,EAAE,KAAK,CAAC,YAAY,CAAC;IAC7B,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED,iBAAS,KAAK,CAAC,EACb,KAAK,EACL,QAAgB,EAChB,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAgB,EAChB,QAAQ,EACR,KAAa,EACb,QAAQ,EACR,aAAa,EAAE,+BAA+B;AAC9C,EAAE,EACF,SAAS,GACV,EAAE,UAAU,qBAkJZ;AAED,eAAe,KAAK,CAAC"}
@@ -9,6 +9,7 @@ var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
9
9
  var _FormLabel = _interopRequireDefault(require("@mui/material/FormLabel"));
10
10
  var _FormHelperText = _interopRequireDefault(require("@mui/material/FormHelperText"));
11
11
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
12
+ var _FieldError = _interopRequireDefault(require("./FieldError"));
12
13
  var _jsxRuntime = require("react/jsx-runtime");
13
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
15
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -30,7 +31,12 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
30
31
  * R-I.2 — Required adds the asterisk + `aria-required`.
31
32
  * R-I.3 — Error: `aria-invalid` + `aria-describedby` linking the message.
32
33
  * Field MERGES with the child's existing `aria-describedby` so a
33
- * consumer-supplied external help id is never lost.
34
+ * consumer-supplied external help id is never lost. The message
35
+ * itself is rendered by the shared `FieldError` primitive, which
36
+ * carries the R-4.1 MUST icon (gap G-18) — previously this component
37
+ * rendered a bare red `FormHelperText` with no icon, so the canonical
38
+ * field wrapper did not satisfy a MUST and every module inherited the
39
+ * gap on every form.
34
40
  * R-I.4 — Validation in `blur`, not `change` (caller's responsibility).
35
41
  * R-I.6 — Hint visible above error; never both at once.
36
42
  *
@@ -171,13 +177,25 @@ function Field(_ref) {
171
177
  color: "var(--fg-subtle)"
172
178
  }),
173
179
  children: hint
174
- }), hasError && /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormHelperText["default"], {
180
+ }), hasError &&
181
+ /*#__PURE__*/
182
+ /*
183
+ * Rendered by the shared `FieldError` (gap G-18) rather than an inline
184
+ * `FormHelperText`: R-4.1 MUST requires the icon, and a host with a
185
+ * LIST-level error (a Formik array, an upload slot) has no single
186
+ * control to wrap in a `Field` and needs the exact same renderer
187
+ * standalone. One component, both paths, no drift.
188
+ *
189
+ * `marginTop: var(--s-1)` (4px) replaces `FormHelperText`'s hard-coded
190
+ * 3px default — same optical result, on the spacing scale (R-S.1).
191
+ * Dropping FormHelperText also removed a `color: … !important` that
192
+ * only existed to beat MUI's own `Mui-error` colour.
193
+ */
194
+ (0, _jsxRuntime.jsx)(_FieldError["default"], {
175
195
  id: errorId,
176
- role: "alert",
177
- sx: _objectSpread(_objectSpread({}, helperResetSx), {}, {
178
- color: "var(--danger) !important",
179
- fontWeight: "var(--fw-medium)"
180
- }),
196
+ sx: {
197
+ marginTop: "var(--s-1)"
198
+ },
181
199
  children: error
182
200
  })]
183
201
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Field.js","names":["React","_interopRequireWildcard","require","_FormControl","_interopRequireDefault","_FormLabel","_FormHelperText","_Box","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","Field","_ref","label","_ref$required","required","error","htmlFor","_ref$fullWidth","fullWidth","disabled","_ref$group","group","children","helpAdornment","sx","className","reactId","useId","auto","concat","replace","inputId","hintId","errorId","labelId","hasError","child","Children","only","childProps","props","describedBy","Boolean","join","labelledBy","enhanced","cloneElement","id","helperResetSx","marginInlineStart","fontSize","LABEL_SX","display","alignItems","gap","fontWeight","color","marginBottom","labelContent","jsxs","Fragment","jsx","component","role","_default","exports"],"sources":["../../../src/lib/v2/components/Field.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport FormLabel from \"@mui/material/FormLabel\";\r\nimport FormHelperText from \"@mui/material/FormHelperText\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Field — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Input · Field\".\r\n * Universal wrapper providing label / required marker / hint / error / a11y bindings\r\n * for any form control (Input, Select, Textarea, Autocomplete, Combobox, …).\r\n *\r\n * Strict rules enforced:\r\n * R-I.1 — Label is associated to the control via `htmlFor` / `id`.\r\n * R-I.2 — Required adds the asterisk + `aria-required`.\r\n * R-I.3 — Error: `aria-invalid` + `aria-describedby` linking the message.\r\n * Field MERGES with the child's existing `aria-describedby` so a\r\n * consumer-supplied external help id is never lost.\r\n * R-I.4 — Validation in `blur`, not `change` (caller's responsibility).\r\n * R-I.6 — Hint visible above error; never both at once.\r\n *\r\n * <Field label=\"Référence\" required hint=\"Format AAAA-IM-NNNNN\" error={errors.ref}>\r\n * <Input value={value} onChange={onChange} />\r\n * </Field>\r\n *\r\n * Grouping controls (RadioGroup / CheckboxGroup) — pass `group`:\r\n * A native `<label htmlFor>` cannot name an ARIA group (only labelable\r\n * elements can be `for`-targeted), so in `group` mode the label is rendered\r\n * as a <span> with an id and the child group is associated via\r\n * `aria-labelledby` instead. The child must forward `aria-labelledby`\r\n * (and `aria-describedby`) onto its `role=\"group\"`/`\"radiogroup\"` element.\r\n *\r\n * <Field label=\"Genre\" group error={errors.genre}>\r\n * <RadioGroup … />\r\n * </Field>\r\n */\r\nexport interface FieldProps {\r\n label?: React.ReactNode;\r\n required?: boolean;\r\n hint?: React.ReactNode;\r\n error?: React.ReactNode;\r\n htmlFor?: string;\r\n fullWidth?: boolean;\r\n disabled?: boolean;\r\n /**\r\n * The wrapped child is an ARIA group (RadioGroup / CheckboxGroup) rather than\r\n * a single labelable control. Associates the label via `aria-labelledby`\r\n * instead of `htmlFor` / `id`.\r\n */\r\n group?: boolean;\r\n /** Optional <FieldHelp> element rendered next to the label. */\r\n helpAdornment?: React.ReactNode;\r\n /** The single form-control element to wrap. */\r\n children: React.ReactElement;\r\n sx?: SxProps<Theme>;\r\n className?: string;\r\n}\r\n\r\nfunction Field({\r\n label,\r\n required = false,\r\n hint,\r\n error,\r\n htmlFor,\r\n fullWidth = true,\r\n disabled,\r\n group = false,\r\n children,\r\n helpAdornment, // optional <FieldHelp> element\r\n sx,\r\n className,\r\n}: FieldProps) {\r\n // R-I.1 — useId provides SSR-safe, per-instance, stable IDs.\r\n // Replaces the previous module-scoped counter (`let __uid = 0`) which broke\r\n // hydration and Concurrent Mode.\r\n const reactId = React.useId();\r\n const auto = `pui-${reactId.replace(/:/g, \"\")}`;\r\n const inputId = htmlFor || auto;\r\n const hintId = `${inputId}-h`;\r\n const errorId = `${inputId}-e`;\r\n const labelId = `${inputId}-l`;\r\n const hasError = !!error;\r\n\r\n const child = React.Children.only(children);\r\n // The wrapped control is polymorphic (Input/Select/NumberInput/Combobox/…);\r\n // type only the props Field reads/merges, replacing React's `props: any`.\r\n const childProps = child.props as {\r\n id?: string;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n \"aria-describedby\"?: string;\r\n \"aria-labelledby\"?: string;\r\n };\r\n\r\n // R-I.3 — MERGE the child's existing aria-describedby with our hint/error\r\n // ids. cloneElement replaces props, so without an explicit merge any\r\n // consumer-supplied describedby was silently discarded.\r\n const describedBy = [\r\n childProps[\"aria-describedby\"],\r\n hint && !hasError ? hintId : null,\r\n hasError ? errorId : null,\r\n ].filter(Boolean).join(\" \") || undefined;\r\n\r\n // CC-6 — in group mode the label names the group via aria-labelledby.\r\n // Merge with any consumer-supplied labelledby so it is never lost.\r\n const labelledBy = group\r\n ? [childProps[\"aria-labelledby\"], label ? labelId : null]\r\n .filter(Boolean)\r\n .join(\" \") || undefined\r\n : undefined;\r\n\r\n const enhanced = React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {\r\n id: childProps.id || inputId,\r\n \"aria-invalid\": hasError ? \"true\" : undefined,\r\n \"aria-required\": required ? \"true\" : undefined,\r\n \"aria-describedby\": describedBy,\r\n // Only in group mode — a single labelable control is named by the\r\n // htmlFor/id pair below, not by aria-labelledby.\r\n ...(group ? { \"aria-labelledby\": labelledBy } : {}),\r\n // `error` / `disabled` are broadcast by FormControl via context for MUI\r\n // inputs, but several v2 inputs (NumberInput, Combobox renderInput) are\r\n // not pure MUI children and read the props directly — keep them explicit.\r\n error: hasError,\r\n disabled: disabled || childProps.disabled,\r\n // Respect the child's explicit fullWidth when defined (e.g. a narrow\r\n // inline filter input). Only fall back to Field's value when the child\r\n // hasn't expressed an opinion.\r\n fullWidth: childProps.fullWidth !== undefined ? childProps.fullWidth : fullWidth,\r\n });\r\n\r\n // R-I.6 — RTL-safe margin reset. `marginLeft: 0` only zeroes the LTR\r\n // inline-start; in [dir=\"rtl\"] the helper picks up MUI's default on\r\n // the (now physical-right but logical-start) side and is mis-aligned.\r\n // `marginInlineStart` resets the correct edge in both directions.\r\n const helperResetSx = { marginInlineStart: 0, fontSize: \"var(--text-xs)\" };\r\n\r\n const LABEL_SX = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n fontSize: \"var(--text-xs, 12px)\",\r\n fontWeight: \"var(--fw-semibold, 600)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-2)\",\r\n \"&.Mui-focused\": { color: \"var(--fg-muted)\" },\r\n \"&.Mui-error\": { color: \"var(--fg-muted)\" },\r\n } as const;\r\n\r\n // Shared label content (text + required marker + optional help adornment).\r\n const labelContent = (\r\n <>\r\n {label}\r\n {required && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--danger)\", fontWeight: \"var(--fw-bold, 700)\" }}\r\n >\r\n *\r\n </Box>\r\n )}\r\n {helpAdornment}\r\n </>\r\n );\r\n\r\n return (\r\n <FormControl\r\n error={hasError}\r\n required={required}\r\n disabled={disabled}\r\n fullWidth={fullWidth}\r\n className={className}\r\n sx={sx}\r\n >\r\n {label &&\r\n (group ? (\r\n // Group mode: render as a <span> carrying an id (no <label for>),\r\n // referenced by the group's aria-labelledby.\r\n <FormLabel component=\"span\" id={labelId} required={false} sx={LABEL_SX}>\r\n {labelContent}\r\n </FormLabel>\r\n ) : (\r\n <FormLabel htmlFor={inputId} required={false /* we render the * ourselves */} sx={LABEL_SX}>\r\n {labelContent}\r\n </FormLabel>\r\n ))}\r\n\r\n {enhanced}\r\n\r\n {hint && !hasError && (\r\n <FormHelperText\r\n id={hintId}\r\n sx={{ ...helperResetSx, color: \"var(--fg-subtle)\" }}\r\n >\r\n {hint}\r\n </FormHelperText>\r\n )}\r\n\r\n {hasError && (\r\n <FormHelperText\r\n id={errorId}\r\n role=\"alert\"\r\n sx={{\r\n ...helperResetSx,\r\n color: \"var(--danger) !important\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {error}\r\n </FormHelperText>\r\n )}\r\n </FormControl>\r\n );\r\n}\r\n\r\nexport default Field;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Field.js","names":["React","_interopRequireWildcard","require","_FormControl","_interopRequireDefault","_FormLabel","_FormHelperText","_Box","_FieldError","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","Field","_ref","label","_ref$required","required","error","htmlFor","_ref$fullWidth","fullWidth","disabled","_ref$group","group","children","helpAdornment","sx","className","reactId","useId","auto","concat","replace","inputId","hintId","errorId","labelId","hasError","child","Children","only","childProps","props","describedBy","Boolean","join","labelledBy","enhanced","cloneElement","id","helperResetSx","marginInlineStart","fontSize","LABEL_SX","display","alignItems","gap","fontWeight","color","marginBottom","labelContent","jsxs","Fragment","jsx","component","marginTop","_default","exports"],"sources":["../../../src/lib/v2/components/Field.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport FormControl from \"@mui/material/FormControl\";\r\nimport FormLabel from \"@mui/material/FormLabel\";\r\nimport FormHelperText from \"@mui/material/FormHelperText\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport FieldError from \"./FieldError\";\r\n\r\n/**\r\n * Field — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Input · Field\".\r\n * Universal wrapper providing label / required marker / hint / error / a11y bindings\r\n * for any form control (Input, Select, Textarea, Autocomplete, Combobox, …).\r\n *\r\n * Strict rules enforced:\r\n * R-I.1 — Label is associated to the control via `htmlFor` / `id`.\r\n * R-I.2 — Required adds the asterisk + `aria-required`.\r\n * R-I.3 — Error: `aria-invalid` + `aria-describedby` linking the message.\r\n * Field MERGES with the child's existing `aria-describedby` so a\r\n * consumer-supplied external help id is never lost. The message\r\n * itself is rendered by the shared `FieldError` primitive, which\r\n * carries the R-4.1 MUST icon (gap G-18) — previously this component\r\n * rendered a bare red `FormHelperText` with no icon, so the canonical\r\n * field wrapper did not satisfy a MUST and every module inherited the\r\n * gap on every form.\r\n * R-I.4 — Validation in `blur`, not `change` (caller's responsibility).\r\n * R-I.6 — Hint visible above error; never both at once.\r\n *\r\n * <Field label=\"Référence\" required hint=\"Format AAAA-IM-NNNNN\" error={errors.ref}>\r\n * <Input value={value} onChange={onChange} />\r\n * </Field>\r\n *\r\n * Grouping controls (RadioGroup / CheckboxGroup) — pass `group`:\r\n * A native `<label htmlFor>` cannot name an ARIA group (only labelable\r\n * elements can be `for`-targeted), so in `group` mode the label is rendered\r\n * as a <span> with an id and the child group is associated via\r\n * `aria-labelledby` instead. The child must forward `aria-labelledby`\r\n * (and `aria-describedby`) onto its `role=\"group\"`/`\"radiogroup\"` element.\r\n *\r\n * <Field label=\"Genre\" group error={errors.genre}>\r\n * <RadioGroup … />\r\n * </Field>\r\n */\r\nexport interface FieldProps {\r\n label?: React.ReactNode | undefined;\r\n required?: boolean | undefined;\r\n hint?: React.ReactNode | undefined;\r\n error?: React.ReactNode | undefined;\r\n htmlFor?: string | undefined;\r\n fullWidth?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n /**\r\n * The wrapped child is an ARIA group (RadioGroup / CheckboxGroup) rather than\r\n * a single labelable control. Associates the label via `aria-labelledby`\r\n * instead of `htmlFor` / `id`.\r\n */\r\n group?: boolean | undefined;\r\n /** Optional <FieldHelp> element rendered next to the label. */\r\n helpAdornment?: React.ReactNode | undefined;\r\n /** The single form-control element to wrap. */\r\n children: React.ReactElement;\r\n sx?: SxProps<Theme> | undefined;\r\n className?: string | undefined;\r\n}\r\n\r\nfunction Field({\r\n label,\r\n required = false,\r\n hint,\r\n error,\r\n htmlFor,\r\n fullWidth = true,\r\n disabled,\r\n group = false,\r\n children,\r\n helpAdornment, // optional <FieldHelp> element\r\n sx,\r\n className,\r\n}: FieldProps) {\r\n // R-I.1 — useId provides SSR-safe, per-instance, stable IDs.\r\n // Replaces the previous module-scoped counter (`let __uid = 0`) which broke\r\n // hydration and Concurrent Mode.\r\n const reactId = React.useId();\r\n const auto = `pui-${reactId.replace(/:/g, \"\")}`;\r\n const inputId = htmlFor || auto;\r\n const hintId = `${inputId}-h`;\r\n const errorId = `${inputId}-e`;\r\n const labelId = `${inputId}-l`;\r\n const hasError = !!error;\r\n\r\n const child = React.Children.only(children);\r\n // The wrapped control is polymorphic (Input/Select/NumberInput/Combobox/…);\r\n // type only the props Field reads/merges, replacing React's `props: any`.\r\n const childProps = child.props as {\r\n id?: string;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n \"aria-describedby\"?: string;\r\n \"aria-labelledby\"?: string;\r\n };\r\n\r\n // R-I.3 — MERGE the child's existing aria-describedby with our hint/error\r\n // ids. cloneElement replaces props, so without an explicit merge any\r\n // consumer-supplied describedby was silently discarded.\r\n const describedBy = [\r\n childProps[\"aria-describedby\"],\r\n hint && !hasError ? hintId : null,\r\n hasError ? errorId : null,\r\n ].filter(Boolean).join(\" \") || undefined;\r\n\r\n // CC-6 — in group mode the label names the group via aria-labelledby.\r\n // Merge with any consumer-supplied labelledby so it is never lost.\r\n const labelledBy = group\r\n ? [childProps[\"aria-labelledby\"], label ? labelId : null]\r\n .filter(Boolean)\r\n .join(\" \") || undefined\r\n : undefined;\r\n\r\n const enhanced = React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {\r\n id: childProps.id || inputId,\r\n \"aria-invalid\": hasError ? \"true\" : undefined,\r\n \"aria-required\": required ? \"true\" : undefined,\r\n \"aria-describedby\": describedBy,\r\n // Only in group mode — a single labelable control is named by the\r\n // htmlFor/id pair below, not by aria-labelledby.\r\n ...(group ? { \"aria-labelledby\": labelledBy } : {}),\r\n // `error` / `disabled` are broadcast by FormControl via context for MUI\r\n // inputs, but several v2 inputs (NumberInput, Combobox renderInput) are\r\n // not pure MUI children and read the props directly — keep them explicit.\r\n error: hasError,\r\n disabled: disabled || childProps.disabled,\r\n // Respect the child's explicit fullWidth when defined (e.g. a narrow\r\n // inline filter input). Only fall back to Field's value when the child\r\n // hasn't expressed an opinion.\r\n fullWidth: childProps.fullWidth !== undefined ? childProps.fullWidth : fullWidth,\r\n });\r\n\r\n // R-I.6 — RTL-safe margin reset. `marginLeft: 0` only zeroes the LTR\r\n // inline-start; in [dir=\"rtl\"] the helper picks up MUI's default on\r\n // the (now physical-right but logical-start) side and is mis-aligned.\r\n // `marginInlineStart` resets the correct edge in both directions.\r\n const helperResetSx = { marginInlineStart: 0, fontSize: \"var(--text-xs)\" };\r\n\r\n const LABEL_SX = {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n fontSize: \"var(--text-xs, 12px)\",\r\n fontWeight: \"var(--fw-semibold, 600)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-2)\",\r\n \"&.Mui-focused\": { color: \"var(--fg-muted)\" },\r\n \"&.Mui-error\": { color: \"var(--fg-muted)\" },\r\n } as const;\r\n\r\n // Shared label content (text + required marker + optional help adornment).\r\n const labelContent = (\r\n <>\r\n {label}\r\n {required && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--danger)\", fontWeight: \"var(--fw-bold, 700)\" }}\r\n >\r\n *\r\n </Box>\r\n )}\r\n {helpAdornment}\r\n </>\r\n );\r\n\r\n return (\r\n <FormControl\r\n error={hasError}\r\n required={required}\r\n disabled={disabled}\r\n fullWidth={fullWidth}\r\n className={className}\r\n sx={sx}\r\n >\r\n {label &&\r\n (group ? (\r\n // Group mode: render as a <span> carrying an id (no <label for>),\r\n // referenced by the group's aria-labelledby.\r\n <FormLabel component=\"span\" id={labelId} required={false} sx={LABEL_SX}>\r\n {labelContent}\r\n </FormLabel>\r\n ) : (\r\n <FormLabel htmlFor={inputId} required={false /* we render the * ourselves */} sx={LABEL_SX}>\r\n {labelContent}\r\n </FormLabel>\r\n ))}\r\n\r\n {enhanced}\r\n\r\n {hint && !hasError && (\r\n <FormHelperText\r\n id={hintId}\r\n sx={{ ...helperResetSx, color: \"var(--fg-subtle)\" }}\r\n >\r\n {hint}\r\n </FormHelperText>\r\n )}\r\n\r\n {hasError && (\r\n /*\r\n * Rendered by the shared `FieldError` (gap G-18) rather than an inline\r\n * `FormHelperText`: R-4.1 MUST requires the icon, and a host with a\r\n * LIST-level error (a Formik array, an upload slot) has no single\r\n * control to wrap in a `Field` and needs the exact same renderer\r\n * standalone. One component, both paths, no drift.\r\n *\r\n * `marginTop: var(--s-1)` (4px) replaces `FormHelperText`'s hard-coded\r\n * 3px default — same optical result, on the spacing scale (R-S.1).\r\n * Dropping FormHelperText also removed a `color: … !important` that\r\n * only existed to beat MUI's own `Mui-error` colour.\r\n */\r\n <FieldError id={errorId} sx={{ marginTop: \"var(--s-1)\" }}>\r\n {error}\r\n </FieldError>\r\n )}\r\n </FormControl>\r\n );\r\n}\r\n\r\nexport default Field;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ import * as React from "react";
2
+ import type { SxProps, Theme } from "@mui/material/styles";
3
+ /**
4
+ * FieldError — Portnet UI v2
5
+ *
6
+ * Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,
7
+ * AVEC ICÔNE, max 1 phrase, verbe d'action. »
8
+ *
9
+ * ─────────────────────────────────────────────────────────────────────────────
10
+ * WHY THIS BELONGS IN THE LIBRARY (capability gap G-18)
11
+ *
12
+ * Two defects closed at once, and they were the same defect seen from both ends.
13
+ *
14
+ * 1. `Field` rendered its error message as a bare `FormHelperText` — red, under
15
+ * the field, one sentence, and NO ICON. R-4.1 is a MUST and the canonical
16
+ * field wrapper of the design system did not satisfy it, so every module
17
+ * inherited the gap on every form.
18
+ *
19
+ * 2. A field error is not always attached to a `Field`. A LIST-level error
20
+ * (`errors.articles`, `errors.autorisationPdf` — a Formik array or an upload
21
+ * slot) has no single control to wrap, and `Field` requires exactly one
22
+ * `children` element. Hosts therefore hand-rolled the block: addpe-fe's
23
+ * `InlineFieldAlert` reimplemented the icon + `role="alert"` + danger token
24
+ * recipe locally — and, ironically, was MORE charter-compliant than the
25
+ * shared component it could not use.
26
+ *
27
+ * Owning the renderer here means the two paths cannot drift: the error a user
28
+ * sees under an `<Input>` and the one under an articles table are the same
29
+ * component.
30
+ * ─────────────────────────────────────────────────────────────────────────────
31
+ *
32
+ * Used INSIDE `Field` (it supplies `id`, wired to the control's
33
+ * `aria-describedby`), and standalone by a host:
34
+ *
35
+ * {typeof errors.articles === "string" && (
36
+ * <FieldError sx={{ marginTop: "var(--s-2)" }}>{errors.articles}</FieldError>
37
+ * )}
38
+ *
39
+ * Accessibility
40
+ * - `role="alert"`: the element MOUNTS when the error appears, which is what
41
+ * makes a screen reader announce it. Do not render it permanently with empty
42
+ * content — an always-present live region announces nothing on change.
43
+ * - The icon is `aria-hidden`: it is redundant with the message, and R-Ar.2
44
+ * forbids a decorative icon carrying an accessible name.
45
+ * - Iconography is deliberately the SAME as `Banner`'s error variant
46
+ * (`ErrorOutlined`), so "something is wrong" reads identically whether it
47
+ * surfaces inline or in a banner.
48
+ *
49
+ * Colour: the message TEXT takes `--danger-fg`, the icon takes `--danger`. That
50
+ * split is not cosmetic and it is the rule `KPICard` already documents for its
51
+ * delta indicator: `--danger` is the VIVID UI colour, held to WCAG 1.4.11's 3:1
52
+ * non-text threshold, while `--danger-fg` is the TEXT colour, held to 1.4.3's
53
+ * 4.5:1. Using `--danger` for the message would render it at a ratio calibrated
54
+ * for icons and borders — which is what the module-local `InlineFieldAlert` this
55
+ * component replaced did, and what `Field`'s own error text did before it
56
+ * delegated here. Promoting that mistake into a shared component would have made
57
+ * it fleet-wide, on every field error of every module.
58
+ *
59
+ * No `!important` — the previous `FormHelperText` needed one to beat MUI's own
60
+ * `Mui-error` colour; rendering a plain Box removes the specificity fight.
61
+ */
62
+ export interface FieldErrorProps {
63
+ /** The message. One sentence, action verb (Charter §09.3). */
64
+ children: React.ReactNode;
65
+ /**
66
+ * DOM id referenced by the control's `aria-describedby`. `Field` supplies it;
67
+ * a standalone list-level error usually has nothing to bind to and omits it.
68
+ */
69
+ id?: string | undefined;
70
+ /**
71
+ * Spacing / layout overrides. Standalone call sites typically need a
72
+ * `marginTop`; inside `Field` the vertical rhythm is already handled.
73
+ */
74
+ sx?: SxProps<Theme> | undefined;
75
+ }
76
+ declare function FieldError({ children, id, sx }: FieldErrorProps): React.JSX.Element;
77
+ export default FieldError;
78
+ //# sourceMappingURL=FieldError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldError.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/FieldError.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB;;;OAGG;IACH,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;CACjC;AAED,iBAAS,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,eAAe,qBA+CxD;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _Box = _interopRequireDefault(require("@mui/material/Box"));
9
+ var _ErrorOutlined = _interopRequireDefault(require("@mui/icons-material/ErrorOutlined"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ 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); }
15
+ 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; }
16
+ 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; }
17
+ 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; }
18
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
19
+ 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); } /**
20
+ * FieldError — Portnet UI v2
21
+ *
22
+ * Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,
23
+ * AVEC ICÔNE, max 1 phrase, verbe d'action. »
24
+ *
25
+ * ─────────────────────────────────────────────────────────────────────────────
26
+ * WHY THIS BELONGS IN THE LIBRARY (capability gap G-18)
27
+ *
28
+ * Two defects closed at once, and they were the same defect seen from both ends.
29
+ *
30
+ * 1. `Field` rendered its error message as a bare `FormHelperText` — red, under
31
+ * the field, one sentence, and NO ICON. R-4.1 is a MUST and the canonical
32
+ * field wrapper of the design system did not satisfy it, so every module
33
+ * inherited the gap on every form.
34
+ *
35
+ * 2. A field error is not always attached to a `Field`. A LIST-level error
36
+ * (`errors.articles`, `errors.autorisationPdf` — a Formik array or an upload
37
+ * slot) has no single control to wrap, and `Field` requires exactly one
38
+ * `children` element. Hosts therefore hand-rolled the block: addpe-fe's
39
+ * `InlineFieldAlert` reimplemented the icon + `role="alert"` + danger token
40
+ * recipe locally — and, ironically, was MORE charter-compliant than the
41
+ * shared component it could not use.
42
+ *
43
+ * Owning the renderer here means the two paths cannot drift: the error a user
44
+ * sees under an `<Input>` and the one under an articles table are the same
45
+ * component.
46
+ * ─────────────────────────────────────────────────────────────────────────────
47
+ *
48
+ * Used INSIDE `Field` (it supplies `id`, wired to the control's
49
+ * `aria-describedby`), and standalone by a host:
50
+ *
51
+ * {typeof errors.articles === "string" && (
52
+ * <FieldError sx={{ marginTop: "var(--s-2)" }}>{errors.articles}</FieldError>
53
+ * )}
54
+ *
55
+ * Accessibility
56
+ * - `role="alert"`: the element MOUNTS when the error appears, which is what
57
+ * makes a screen reader announce it. Do not render it permanently with empty
58
+ * content — an always-present live region announces nothing on change.
59
+ * - The icon is `aria-hidden`: it is redundant with the message, and R-Ar.2
60
+ * forbids a decorative icon carrying an accessible name.
61
+ * - Iconography is deliberately the SAME as `Banner`'s error variant
62
+ * (`ErrorOutlined`), so "something is wrong" reads identically whether it
63
+ * surfaces inline or in a banner.
64
+ *
65
+ * Colour: the message TEXT takes `--danger-fg`, the icon takes `--danger`. That
66
+ * split is not cosmetic and it is the rule `KPICard` already documents for its
67
+ * delta indicator: `--danger` is the VIVID UI colour, held to WCAG 1.4.11's 3:1
68
+ * non-text threshold, while `--danger-fg` is the TEXT colour, held to 1.4.3's
69
+ * 4.5:1. Using `--danger` for the message would render it at a ratio calibrated
70
+ * for icons and borders — which is what the module-local `InlineFieldAlert` this
71
+ * component replaced did, and what `Field`'s own error text did before it
72
+ * delegated here. Promoting that mistake into a shared component would have made
73
+ * it fleet-wide, on every field error of every module.
74
+ *
75
+ * No `!important` — the previous `FormHelperText` needed one to beat MUI's own
76
+ * `Mui-error` colour; rendering a plain Box removes the specificity fight.
77
+ */
78
+ function FieldError(_ref) {
79
+ var children = _ref.children,
80
+ id = _ref.id,
81
+ sx = _ref.sx;
82
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box["default"], {
83
+ role: "alert",
84
+ id: id,
85
+ sx: _objectSpread({
86
+ display: "flex",
87
+ // `flex-start`, not `center`: a message that wraps to two lines must
88
+ // keep its icon aligned with the FIRST line, not vertically centred
89
+ // against the whole block.
90
+ alignItems: "flex-start",
91
+ gap: "var(--s-1)",
92
+ // WCAG 1.4.3 — message text at the 4.5:1-calibrated token, NOT `--danger`
93
+ // (see the colour note in this file's header).
94
+ color: "var(--danger-fg)",
95
+ fontSize: "var(--text-xs)",
96
+ fontWeight: "var(--fw-medium)",
97
+ lineHeight: "var(--lh-normal)",
98
+ // RTL-safe: resets the logical inline-start edge, so the message is
99
+ // flush with the control in both directions.
100
+ marginInlineStart: 0
101
+ }, sx),
102
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ErrorOutlined["default"], {
103
+ "aria-hidden": "true"
104
+ /* Test hook — the glyph has no role and no accessible name by design
105
+ * (R-Ar.2), so no semantic query reaches it. Same sanctioned escape
106
+ * hatch as FileCard's filecard-icon, and it guards the same contract:
107
+ * a decorative icon must not be announced. */,
108
+ "data-testid": "fielderror-icon",
109
+ sx: {
110
+ // --text-h3 is the 16px token; matches the message's optical scale.
111
+ fontSize: "var(--text-h3)",
112
+ flexShrink: 0,
113
+ // WCAG 1.4.11 — the glyph stays VIVID at the 3:1 non-text threshold,
114
+ // which is the whole point of keeping two danger tokens.
115
+ color: "var(--danger)"
116
+ }
117
+ // Optical alignment of the glyph with the first text line. Same
118
+ // rationale (and same 1px order of magnitude) as Banner's leading icon:
119
+ // a deliberate non-token value, not a spacing-scale concern.
120
+ ,
121
+ style: {
122
+ marginTop: 1
123
+ }
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box["default"], {
125
+ component: "span",
126
+ children: children
127
+ })]
128
+ });
129
+ }
130
+ var _default = exports["default"] = FieldError;
131
+ //# sourceMappingURL=FieldError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FieldError.js","names":["React","_interopRequireWildcard","require","_Box","_interopRequireDefault","_ErrorOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","FieldError","_ref","children","id","sx","jsxs","role","display","alignItems","gap","color","fontSize","fontWeight","lineHeight","marginInlineStart","jsx","flexShrink","style","marginTop","component","_default","exports"],"sources":["../../../src/lib/v2/components/FieldError.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\n\r\n/**\r\n * FieldError — Portnet UI v2\r\n *\r\n * Charter R-4.1 MUST: « Toute erreur de champ s'affiche SOUS le champ, en rouge,\r\n * AVEC ICÔNE, max 1 phrase, verbe d'action. »\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY (capability gap G-18)\r\n *\r\n * Two defects closed at once, and they were the same defect seen from both ends.\r\n *\r\n * 1. `Field` rendered its error message as a bare `FormHelperText` — red, under\r\n * the field, one sentence, and NO ICON. R-4.1 is a MUST and the canonical\r\n * field wrapper of the design system did not satisfy it, so every module\r\n * inherited the gap on every form.\r\n *\r\n * 2. A field error is not always attached to a `Field`. A LIST-level error\r\n * (`errors.articles`, `errors.autorisationPdf` — a Formik array or an upload\r\n * slot) has no single control to wrap, and `Field` requires exactly one\r\n * `children` element. Hosts therefore hand-rolled the block: addpe-fe's\r\n * `InlineFieldAlert` reimplemented the icon + `role=\"alert\"` + danger token\r\n * recipe locally — and, ironically, was MORE charter-compliant than the\r\n * shared component it could not use.\r\n *\r\n * Owning the renderer here means the two paths cannot drift: the error a user\r\n * sees under an `<Input>` and the one under an articles table are the same\r\n * component.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * Used INSIDE `Field` (it supplies `id`, wired to the control's\r\n * `aria-describedby`), and standalone by a host:\r\n *\r\n * {typeof errors.articles === \"string\" && (\r\n * <FieldError sx={{ marginTop: \"var(--s-2)\" }}>{errors.articles}</FieldError>\r\n * )}\r\n *\r\n * Accessibility\r\n * - `role=\"alert\"`: the element MOUNTS when the error appears, which is what\r\n * makes a screen reader announce it. Do not render it permanently with empty\r\n * content — an always-present live region announces nothing on change.\r\n * - The icon is `aria-hidden`: it is redundant with the message, and R-Ar.2\r\n * forbids a decorative icon carrying an accessible name.\r\n * - Iconography is deliberately the SAME as `Banner`'s error variant\r\n * (`ErrorOutlined`), so \"something is wrong\" reads identically whether it\r\n * surfaces inline or in a banner.\r\n *\r\n * Colour: the message TEXT takes `--danger-fg`, the icon takes `--danger`. That\r\n * split is not cosmetic and it is the rule `KPICard` already documents for its\r\n * delta indicator: `--danger` is the VIVID UI colour, held to WCAG 1.4.11's 3:1\r\n * non-text threshold, while `--danger-fg` is the TEXT colour, held to 1.4.3's\r\n * 4.5:1. Using `--danger` for the message would render it at a ratio calibrated\r\n * for icons and borders — which is what the module-local `InlineFieldAlert` this\r\n * component replaced did, and what `Field`'s own error text did before it\r\n * delegated here. Promoting that mistake into a shared component would have made\r\n * it fleet-wide, on every field error of every module.\r\n *\r\n * No `!important` — the previous `FormHelperText` needed one to beat MUI's own\r\n * `Mui-error` colour; rendering a plain Box removes the specificity fight.\r\n */\r\n\r\nexport interface FieldErrorProps {\r\n /** The message. One sentence, action verb (Charter §09.3). */\r\n children: React.ReactNode;\r\n /**\r\n * DOM id referenced by the control's `aria-describedby`. `Field` supplies it;\r\n * a standalone list-level error usually has nothing to bind to and omits it.\r\n */\r\n id?: string | undefined;\r\n /**\r\n * Spacing / layout overrides. Standalone call sites typically need a\r\n * `marginTop`; inside `Field` the vertical rhythm is already handled.\r\n */\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction FieldError({ children, id, sx }: FieldErrorProps) {\r\n return (\r\n <Box\r\n role=\"alert\"\r\n id={id}\r\n sx={{\r\n display: \"flex\",\r\n // `flex-start`, not `center`: a message that wraps to two lines must\r\n // keep its icon aligned with the FIRST line, not vertically centred\r\n // against the whole block.\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-1)\",\r\n // WCAG 1.4.3 — message text at the 4.5:1-calibrated token, NOT `--danger`\r\n // (see the colour note in this file's header).\r\n color: \"var(--danger-fg)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n // RTL-safe: resets the logical inline-start edge, so the message is\r\n // flush with the control in both directions.\r\n marginInlineStart: 0,\r\n ...sx,\r\n }}\r\n >\r\n <ErrorIcon\r\n aria-hidden=\"true\"\r\n /* Test hook — the glyph has no role and no accessible name by design\r\n * (R-Ar.2), so no semantic query reaches it. Same sanctioned escape\r\n * hatch as FileCard's filecard-icon, and it guards the same contract:\r\n * a decorative icon must not be announced. */\r\n data-testid=\"fielderror-icon\"\r\n sx={{\r\n // --text-h3 is the 16px token; matches the message's optical scale.\r\n fontSize: \"var(--text-h3)\",\r\n flexShrink: 0,\r\n // WCAG 1.4.11 — the glyph stays VIVID at the 3:1 non-text threshold,\r\n // which is the whole point of keeping two danger tokens.\r\n color: \"var(--danger)\",\r\n }}\r\n // Optical alignment of the glyph with the first text line. Same\r\n // rationale (and same 1px order of magnitude) as Banner's leading icon:\r\n // a deliberate non-token value, not a spacing-scale concern.\r\n style={{ marginTop: 1 }}\r\n />\r\n <Box component=\"span\">{children}</Box>\r\n </Box>\r\n );\r\n}\r\n\r\nexport default FieldError;\r\n"],"mappings":"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","ignoreList":[]}
@@ -33,21 +33,21 @@ import type { TooltipProps } from "@mui/material/Tooltip";
33
33
  * dialog to assistive tech. Tooltip variant relies on MUI
34
34
  * Tooltip's automatic aria-describedby plumbing on the wrapped child.
35
35
  */
36
- type FieldHelpVariant = "auto" | "tooltip" | "popover";
37
- type FieldHelpIcon = "help" | "info";
36
+ export type FieldHelpVariant = "auto" | "tooltip" | "popover";
37
+ export type FieldHelpIcon = "help" | "info";
38
38
  export interface FieldHelpProps {
39
39
  /** Help content (tooltip title or popover body). */
40
40
  content: React.ReactNode;
41
41
  /** Optional popover title. When present, forces the popover variant. */
42
- title?: React.ReactNode;
42
+ title?: React.ReactNode | undefined;
43
43
  /** @default "auto" */
44
- variant?: FieldHelpVariant;
44
+ variant?: FieldHelpVariant | undefined;
45
45
  /** @default "help" */
46
- icon?: FieldHelpIcon;
46
+ icon?: FieldHelpIcon | undefined;
47
47
  /** Tooltip placement. @default "top" */
48
- placement?: TooltipProps["placement"];
48
+ placement?: TooltipProps["placement"] | undefined;
49
49
  /** @default "Aide" */
50
- ariaLabel?: string;
50
+ ariaLabel?: string | undefined;
51
51
  }
52
52
  declare function FieldHelp({ content, title, variant, icon, placement, ariaLabel, }: FieldHelpProps): React.JSX.Element;
53
53
  export default FieldHelp;
@@ -1 +1 @@
1
- {"version":3,"file":"FieldHelp.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,KAAK,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AACvD,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAErC,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,sBAAsB;IACtB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,sBAAsB;IACtB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,wCAAwC;IACxC,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2DD,iBAAS,SAAS,CAAC,EACjB,OAAO,EACP,KAAK,EACL,OAAgB,EAChB,IAAa,EACb,SAAiB,EACjB,SAAkB,GACnB,EAAE,cAAc,qBAwEhB;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"FieldHelp.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC9D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,wEAAwE;IACxE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,sBAAsB;IACtB,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,sBAAsB;IACtB,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,wCAAwC;IACxC,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAClD,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AA2DD,iBAAS,SAAS,CAAC,EACjB,OAAO,EACP,KAAK,EACL,OAAgB,EAChB,IAAa,EACb,SAAiB,EACjB,SAAkB,GACnB,EAAE,cAAc,qBAwEhB;AAED,eAAe,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"FieldHelp.js","names":["React","_interopRequireWildcard","require","_Tooltip","_interopRequireDefault","_IconButton","_Box","_Popover","_HelpOutlineOutlined","_InfoOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","HELP_THRESHOLD_CHARS","HELP_ICON_SX","freeze","padding","color","marginInlineStart","background","POPOVER_PAPER_SX","maxWidth","borderRadius","border","boxShadow","POPOVER_TITLE_SX","fontSize","fontWeight","marginBottom","POPOVER_BODY_SX","lineHeight","resolveVariant","variant","content","title","FieldHelp","_ref","_ref$variant","_ref$icon","icon","_ref$placement","placement","_ref$ariaLabel","ariaLabel","_React$useState","useState","_React$useState2","anchorEl","setAnchorEl","titleId","useId","effectiveVariant","IconComponent","InfoOutlinedIcon","HelpOutlineIcon","jsx","arrow","children","size","sx","tabIndex","handleOpen","e","currentTarget","handleClose","open","jsxs","Fragment","onClick","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","paper","role","id","_default","exports"],"sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps } from \"@mui/material/Tooltip\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport HelpOutlineIcon from \"@mui/icons-material/HelpOutlineOutlined\";\r\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * FieldHelp - Portnet UI v2 (component)\r\n *\r\n * Charter §03 · Component \"FieldHelp · Contextual help\".\r\n *\r\n * A small icon-button affordance that hosts drop next to labels,\r\n * section titles, or anywhere a user might benefit from just-in-\r\n * time guidance without cluttering the primary visual hierarchy.\r\n *\r\n * Behaviour modes:\r\n * - tooltip: MUI Tooltip (default for short string content).\r\n * - popover: MUI Popover, click to open. Used when content is\r\n * long (>80 chars) or when a distinct `title` is provided.\r\n * - auto: Picks tooltip vs popover via the heuristic above.\r\n *\r\n * Usage:\r\n * <FieldHelp content=\"Référence unique de l'autorisation\" />\r\n * <FieldHelp\r\n * title=\"Détails\"\r\n * content={<>Texte long avec <b>JSX</b>.</>}\r\n * variant=\"popover\"\r\n * />\r\n *\r\n * A11y (audit Batch 5, finding B5-1; Batch 19, FH-1):\r\n * Popover variant trigger carries aria-haspopup=\"dialog\" +\r\n * aria-expanded reflecting the open state — WAI-ARIA disclosure\r\n * pattern. The Popover paper itself carries role=\"dialog\" and an\r\n * accessible name (FH-1): aria-labelledby the visible title when\r\n * one is rendered, else aria-label from the ariaLabel prop — so\r\n * the region the trigger promises actually resolves as a named\r\n * dialog to assistive tech. Tooltip variant relies on MUI\r\n * Tooltip's automatic aria-describedby plumbing on the wrapped child.\r\n */\r\n\r\ntype FieldHelpVariant = \"auto\" | \"tooltip\" | \"popover\";\r\ntype FieldHelpIcon = \"help\" | \"info\";\r\n\r\nexport interface FieldHelpProps {\r\n /** Help content (tooltip title or popover body). */\r\n content: React.ReactNode;\r\n /** Optional popover title. When present, forces the popover variant. */\r\n title?: React.ReactNode;\r\n /** @default \"auto\" */\r\n variant?: FieldHelpVariant;\r\n /** @default \"help\" */\r\n icon?: FieldHelpIcon;\r\n /** Tooltip placement. @default \"top\" */\r\n placement?: TooltipProps[\"placement\"];\r\n /** @default \"Aide\" */\r\n ariaLabel?: string;\r\n}\r\n\r\nconst HELP_THRESHOLD_CHARS = 80;\r\n\r\nconst HELP_ICON_SX = Object.freeze({\r\n padding: \"2px\",\r\n color: \"var(--fg-subtle)\",\r\n marginInlineStart: \"var(--s-1)\",\r\n \"&:hover, &:focus-visible\": {\r\n color: \"var(--accent)\",\r\n background: \"var(--bg-hover)\",\r\n },\r\n});\r\n\r\nconst POPOVER_PAPER_SX = Object.freeze({\r\n // Cap at 360 on desktop, but never exceed the viewport on small\r\n // phones (320–392px): MUI Popover positions the anchor but does NOT\r\n // shrink the paper width to the viewport, so a bare maxWidth:360\r\n // overflows the screen edge and forces horizontal scroll (WCAG 1.4.10\r\n // Reflow). The min() inset keeps the paper on screen with a single\r\n // --s-4 gutter on either side.\r\n maxWidth: \"min(360px, calc(100vw - var(--s-4) * 2))\",\r\n padding: \"var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n border: \"1px solid var(--border)\",\r\n boxShadow: \"var(--shadow-md)\",\r\n});\r\n\r\nconst POPOVER_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n marginBottom: \"var(--s-1)\",\r\n});\r\n\r\nconst POPOVER_BODY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n // --lh-loose = 1.6 (typography.js). Was `var(--lh-relaxed, 1.6)` —\r\n // a dangling reference to a token that doesn't exist in the v2\r\n // lineHeight scale (only tight/snug/normal/loose are emitted). The\r\n // fallback `1.6` happened to match --lh-loose by coincidence; this\r\n // makes the dependency explicit and lets future retuning flow.\r\n lineHeight: \"var(--lh-loose)\",\r\n});\r\n\r\nfunction resolveVariant(\r\n variant: FieldHelpVariant,\r\n content: React.ReactNode,\r\n title: React.ReactNode,\r\n): \"tooltip\" | \"popover\" {\r\n if (variant !== \"auto\") return variant;\r\n if (title) return \"popover\";\r\n if (typeof content === \"string\" && content.length > HELP_THRESHOLD_CHARS) {\r\n return \"popover\";\r\n }\r\n return \"tooltip\";\r\n}\r\n\r\nfunction FieldHelp({\r\n content,\r\n title,\r\n variant = \"auto\",\r\n icon = \"help\",\r\n placement = \"top\",\r\n ariaLabel = \"Aide\",\r\n}: FieldHelpProps) {\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\r\n // FH-1 — stable id so the dialog paper can be labelled by its visible\r\n // title (used only when a title is rendered; see slotProps below).\r\n const titleId = React.useId();\r\n\r\n const effectiveVariant = resolveVariant(variant, content, title);\r\n const IconComponent = icon === \"info\" ? InfoOutlinedIcon : HelpOutlineIcon;\r\n\r\n if (effectiveVariant === \"tooltip\") {\r\n return (\r\n <Tooltip title={content} arrow placement={placement}>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n sx={HELP_ICON_SX}\r\n tabIndex={0}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n const open = !!anchorEl;\r\n\r\n return (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n // R-Ar.6 / WAI-ARIA disclosure pattern — surfaces the\r\n // overlay nature of the trigger to assistive tech. Without\r\n // these attrs SR users hear a generic \"Aide button\" with\r\n // no indication that activation opens content.\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n onClick={handleOpen}\r\n sx={HELP_ICON_SX}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n <Popover\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n slotProps={{\r\n paper: {\r\n sx: POPOVER_PAPER_SX,\r\n // FH-1 — the trigger promises a dialog; make the paper one and\r\n // name it. Prefer the visible title (aria-labelledby, avoids a\r\n // Label-in-Name mismatch); fall back to the ariaLabel prop.\r\n role: \"dialog\",\r\n ...(title\r\n ? { \"aria-labelledby\": titleId }\r\n : { \"aria-label\": ariaLabel }),\r\n },\r\n }}\r\n >\r\n {title && (\r\n <Box id={titleId} sx={POPOVER_TITLE_SX}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box sx={POPOVER_BODY_SX}>{content}</Box>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n\r\nexport default FieldHelp;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FieldHelp.js","names":["React","_interopRequireWildcard","require","_Tooltip","_interopRequireDefault","_IconButton","_Box","_Popover","_HelpOutlineOutlined","_InfoOutlined","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","o","minLen","_arrayLikeToArray","n","toString","slice","constructor","name","Array","from","test","len","arr2","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","err","isArray","HELP_THRESHOLD_CHARS","HELP_ICON_SX","freeze","padding","color","marginInlineStart","background","POPOVER_PAPER_SX","maxWidth","borderRadius","border","boxShadow","POPOVER_TITLE_SX","fontSize","fontWeight","marginBottom","POPOVER_BODY_SX","lineHeight","resolveVariant","variant","content","title","FieldHelp","_ref","_ref$variant","_ref$icon","icon","_ref$placement","placement","_ref$ariaLabel","ariaLabel","_React$useState","useState","_React$useState2","anchorEl","setAnchorEl","titleId","useId","effectiveVariant","IconComponent","InfoOutlinedIcon","HelpOutlineIcon","jsx","arrow","children","size","sx","tabIndex","handleOpen","e","currentTarget","handleClose","open","jsxs","Fragment","onClick","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","paper","role","id","_default","exports"],"sources":["../../../src/lib/v2/components/FieldHelp.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Tooltip from \"@mui/material/Tooltip\";\r\nimport type { TooltipProps } from \"@mui/material/Tooltip\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Box from \"@mui/material/Box\";\r\nimport Popover from \"@mui/material/Popover\";\r\nimport HelpOutlineIcon from \"@mui/icons-material/HelpOutlineOutlined\";\r\nimport InfoOutlinedIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * FieldHelp - Portnet UI v2 (component)\r\n *\r\n * Charter §03 · Component \"FieldHelp · Contextual help\".\r\n *\r\n * A small icon-button affordance that hosts drop next to labels,\r\n * section titles, or anywhere a user might benefit from just-in-\r\n * time guidance without cluttering the primary visual hierarchy.\r\n *\r\n * Behaviour modes:\r\n * - tooltip: MUI Tooltip (default for short string content).\r\n * - popover: MUI Popover, click to open. Used when content is\r\n * long (>80 chars) or when a distinct `title` is provided.\r\n * - auto: Picks tooltip vs popover via the heuristic above.\r\n *\r\n * Usage:\r\n * <FieldHelp content=\"Référence unique de l'autorisation\" />\r\n * <FieldHelp\r\n * title=\"Détails\"\r\n * content={<>Texte long avec <b>JSX</b>.</>}\r\n * variant=\"popover\"\r\n * />\r\n *\r\n * A11y (audit Batch 5, finding B5-1; Batch 19, FH-1):\r\n * Popover variant trigger carries aria-haspopup=\"dialog\" +\r\n * aria-expanded reflecting the open state — WAI-ARIA disclosure\r\n * pattern. The Popover paper itself carries role=\"dialog\" and an\r\n * accessible name (FH-1): aria-labelledby the visible title when\r\n * one is rendered, else aria-label from the ariaLabel prop — so\r\n * the region the trigger promises actually resolves as a named\r\n * dialog to assistive tech. Tooltip variant relies on MUI\r\n * Tooltip's automatic aria-describedby plumbing on the wrapped child.\r\n */\r\n\r\nexport type FieldHelpVariant = \"auto\" | \"tooltip\" | \"popover\";\r\nexport type FieldHelpIcon = \"help\" | \"info\";\r\n\r\nexport interface FieldHelpProps {\r\n /** Help content (tooltip title or popover body). */\r\n content: React.ReactNode;\r\n /** Optional popover title. When present, forces the popover variant. */\r\n title?: React.ReactNode | undefined;\r\n /** @default \"auto\" */\r\n variant?: FieldHelpVariant | undefined;\r\n /** @default \"help\" */\r\n icon?: FieldHelpIcon | undefined;\r\n /** Tooltip placement. @default \"top\" */\r\n placement?: TooltipProps[\"placement\"] | undefined;\r\n /** @default \"Aide\" */\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\nconst HELP_THRESHOLD_CHARS = 80;\r\n\r\nconst HELP_ICON_SX = Object.freeze({\r\n padding: \"2px\",\r\n color: \"var(--fg-subtle)\",\r\n marginInlineStart: \"var(--s-1)\",\r\n \"&:hover, &:focus-visible\": {\r\n color: \"var(--accent)\",\r\n background: \"var(--bg-hover)\",\r\n },\r\n});\r\n\r\nconst POPOVER_PAPER_SX = Object.freeze({\r\n // Cap at 360 on desktop, but never exceed the viewport on small\r\n // phones (320–392px): MUI Popover positions the anchor but does NOT\r\n // shrink the paper width to the viewport, so a bare maxWidth:360\r\n // overflows the screen edge and forces horizontal scroll (WCAG 1.4.10\r\n // Reflow). The min() inset keeps the paper on screen with a single\r\n // --s-4 gutter on either side.\r\n maxWidth: \"min(360px, calc(100vw - var(--s-4) * 2))\",\r\n padding: \"var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n border: \"1px solid var(--border)\",\r\n boxShadow: \"var(--shadow-md)\",\r\n});\r\n\r\nconst POPOVER_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n marginBottom: \"var(--s-1)\",\r\n});\r\n\r\nconst POPOVER_BODY_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n // --lh-loose = 1.6 (typography.js). Was `var(--lh-relaxed, 1.6)` —\r\n // a dangling reference to a token that doesn't exist in the v2\r\n // lineHeight scale (only tight/snug/normal/loose are emitted). The\r\n // fallback `1.6` happened to match --lh-loose by coincidence; this\r\n // makes the dependency explicit and lets future retuning flow.\r\n lineHeight: \"var(--lh-loose)\",\r\n});\r\n\r\nfunction resolveVariant(\r\n variant: FieldHelpVariant,\r\n content: React.ReactNode,\r\n title: React.ReactNode,\r\n): \"tooltip\" | \"popover\" {\r\n if (variant !== \"auto\") return variant;\r\n if (title) return \"popover\";\r\n if (typeof content === \"string\" && content.length > HELP_THRESHOLD_CHARS) {\r\n return \"popover\";\r\n }\r\n return \"tooltip\";\r\n}\r\n\r\nfunction FieldHelp({\r\n content,\r\n title,\r\n variant = \"auto\",\r\n icon = \"help\",\r\n placement = \"top\",\r\n ariaLabel = \"Aide\",\r\n}: FieldHelpProps) {\r\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\r\n // FH-1 — stable id so the dialog paper can be labelled by its visible\r\n // title (used only when a title is rendered; see slotProps below).\r\n const titleId = React.useId();\r\n\r\n const effectiveVariant = resolveVariant(variant, content, title);\r\n const IconComponent = icon === \"info\" ? InfoOutlinedIcon : HelpOutlineIcon;\r\n\r\n if (effectiveVariant === \"tooltip\") {\r\n return (\r\n <Tooltip title={content} arrow placement={placement}>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n sx={HELP_ICON_SX}\r\n tabIndex={0}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n </Tooltip>\r\n );\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n const open = !!anchorEl;\r\n\r\n return (\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n aria-label={ariaLabel}\r\n // R-Ar.6 / WAI-ARIA disclosure pattern — surfaces the\r\n // overlay nature of the trigger to assistive tech. Without\r\n // these attrs SR users hear a generic \"Aide button\" with\r\n // no indication that activation opens content.\r\n aria-haspopup=\"dialog\"\r\n aria-expanded={open}\r\n onClick={handleOpen}\r\n sx={HELP_ICON_SX}\r\n >\r\n <IconComponent sx={{ fontSize: 16 }} />\r\n </IconButton>\r\n <Popover\r\n open={open}\r\n anchorEl={anchorEl}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"left\" }}\r\n slotProps={{\r\n paper: {\r\n sx: POPOVER_PAPER_SX,\r\n // FH-1 — the trigger promises a dialog; make the paper one and\r\n // name it. Prefer the visible title (aria-labelledby, avoids a\r\n // Label-in-Name mismatch); fall back to the ariaLabel prop.\r\n role: \"dialog\",\r\n ...(title\r\n ? { \"aria-labelledby\": titleId }\r\n : { \"aria-label\": ariaLabel }),\r\n },\r\n }}\r\n >\r\n {title && (\r\n <Box id={titleId} sx={POPOVER_TITLE_SX}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box sx={POPOVER_BODY_SX}>{content}</Box>\r\n </Popover>\r\n </>\r\n );\r\n}\r\n\r\nexport default FieldHelp;\r\n"],"mappings":"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","ignoreList":[]}