@portnet/ui 6.0.0 → 6.0.2

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 (820) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/dist/esm/index.js +214 -0
  3. package/dist/esm/index.js.map +1 -0
  4. package/dist/esm/v2/__tests__/FieldError.test.js +159 -0
  5. package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
  6. package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
  7. package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
  8. package/dist/esm/v2/__tests__/FileCard.test.js +143 -0
  9. package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
  10. package/dist/esm/v2/__tests__/FormikCheckbox.test.js +265 -0
  11. package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  12. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +248 -0
  13. package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  14. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +380 -0
  15. package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  16. package/dist/esm/v2/__tests__/MobileRowCard.test.js +332 -0
  17. package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
  18. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
  19. package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  20. package/dist/esm/v2/__tests__/apiError.test.js +181 -0
  21. package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
  22. package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
  23. package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
  24. package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
  25. package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
  26. package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
  27. package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
  28. package/dist/esm/v2/__tests__/labels-merge.test.js +146 -0
  29. package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
  30. package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
  31. package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
  32. package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
  33. package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
  34. package/dist/esm/v2/components/Accordion.js +230 -0
  35. package/dist/esm/v2/components/Accordion.js.map +1 -0
  36. package/dist/esm/v2/components/ActionStrip.js +146 -0
  37. package/dist/esm/v2/components/ActionStrip.js.map +1 -0
  38. package/dist/esm/v2/components/Banner.js +254 -0
  39. package/dist/esm/v2/components/Banner.js.map +1 -0
  40. package/dist/esm/v2/components/Busy.js +97 -0
  41. package/dist/esm/v2/components/Busy.js.map +1 -0
  42. package/dist/esm/v2/components/Button.js +114 -0
  43. package/dist/esm/v2/components/Button.js.map +1 -0
  44. package/dist/esm/v2/components/CategoryTag.js +81 -0
  45. package/dist/esm/v2/components/CategoryTag.js.map +1 -0
  46. package/dist/esm/v2/components/Checkbox.js +124 -0
  47. package/dist/esm/v2/components/Checkbox.js.map +1 -0
  48. package/dist/esm/v2/components/Chip.js +124 -0
  49. package/dist/esm/v2/components/Chip.js.map +1 -0
  50. package/dist/esm/v2/components/Combobox.js +394 -0
  51. package/dist/esm/v2/components/Combobox.js.map +1 -0
  52. package/dist/esm/v2/components/CommandPalette.js +660 -0
  53. package/dist/esm/v2/components/CommandPalette.js.map +1 -0
  54. package/dist/esm/v2/components/ConfirmDialog.js +144 -0
  55. package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
  56. package/dist/esm/v2/components/DatePicker.js +200 -0
  57. package/dist/esm/v2/components/DatePicker.js.map +1 -0
  58. package/dist/esm/v2/components/DateRangePicker.js +289 -0
  59. package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
  60. package/dist/esm/v2/components/DateTimePicker.js +215 -0
  61. package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
  62. package/dist/esm/v2/components/Drawer.js +333 -0
  63. package/dist/esm/v2/components/Drawer.js.map +1 -0
  64. package/dist/esm/v2/components/Dropzone.js +540 -0
  65. package/dist/esm/v2/components/Dropzone.js.map +1 -0
  66. package/dist/esm/v2/components/EmptyState.js +102 -0
  67. package/dist/esm/v2/components/EmptyState.js.map +1 -0
  68. package/dist/esm/v2/components/FavoriteToggle.js +127 -0
  69. package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
  70. package/dist/esm/v2/components/Field.js +259 -0
  71. package/dist/esm/v2/components/Field.js.map +1 -0
  72. package/dist/esm/v2/components/FieldError.js +124 -0
  73. package/dist/esm/v2/components/FieldError.js.map +1 -0
  74. package/dist/esm/v2/components/FieldHelp.js +202 -0
  75. package/dist/esm/v2/components/FieldHelp.js.map +1 -0
  76. package/dist/esm/v2/components/FileCard.js +162 -0
  77. package/dist/esm/v2/components/FileCard.js.map +1 -0
  78. package/dist/esm/v2/components/FilterTab.js +138 -0
  79. package/dist/esm/v2/components/FilterTab.js.map +1 -0
  80. package/dist/esm/v2/components/ForbiddenPage.js +74 -0
  81. package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
  82. package/dist/esm/v2/components/FormGrid.js +179 -0
  83. package/dist/esm/v2/components/FormGrid.js.map +1 -0
  84. package/dist/esm/v2/components/FormikDisplay.js +118 -0
  85. package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
  86. package/dist/esm/v2/components/Input.js +107 -0
  87. package/dist/esm/v2/components/Input.js.map +1 -0
  88. package/dist/esm/v2/components/KPICard.js +237 -0
  89. package/dist/esm/v2/components/KPICard.js.map +1 -0
  90. package/dist/esm/v2/components/KPIStrip.js +84 -0
  91. package/dist/esm/v2/components/KPIStrip.js.map +1 -0
  92. package/dist/esm/v2/components/KV.js +75 -0
  93. package/dist/esm/v2/components/KV.js.map +1 -0
  94. package/dist/esm/v2/components/KVGrid.js +74 -0
  95. package/dist/esm/v2/components/KVGrid.js.map +1 -0
  96. package/dist/esm/v2/components/Layout.js +284 -0
  97. package/dist/esm/v2/components/Layout.js.map +1 -0
  98. package/dist/esm/v2/components/MobileRowCard.js +314 -0
  99. package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
  100. package/dist/esm/v2/components/Modal.js +276 -0
  101. package/dist/esm/v2/components/Modal.js.map +1 -0
  102. package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
  103. package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
  104. package/dist/esm/v2/components/NotFoundPage.js +58 -0
  105. package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
  106. package/dist/esm/v2/components/NumberInput.js +309 -0
  107. package/dist/esm/v2/components/NumberInput.js.map +1 -0
  108. package/dist/esm/v2/components/OverflowMenu.js +184 -0
  109. package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
  110. package/dist/esm/v2/components/PdfViewer.js +122 -0
  111. package/dist/esm/v2/components/PdfViewer.js.map +1 -0
  112. package/dist/esm/v2/components/ProgressBar.js +202 -0
  113. package/dist/esm/v2/components/ProgressBar.js.map +1 -0
  114. package/dist/esm/v2/components/Radio.js +228 -0
  115. package/dist/esm/v2/components/Radio.js.map +1 -0
  116. package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
  117. package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
  118. package/dist/esm/v2/components/SectionHeader.js +132 -0
  119. package/dist/esm/v2/components/SectionHeader.js.map +1 -0
  120. package/dist/esm/v2/components/Segmented.js +254 -0
  121. package/dist/esm/v2/components/Segmented.js.map +1 -0
  122. package/dist/esm/v2/components/Select.js +490 -0
  123. package/dist/esm/v2/components/Select.js.map +1 -0
  124. package/dist/esm/v2/components/ServerErrorPage.js +74 -0
  125. package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
  126. package/dist/esm/v2/components/Skeleton.js +269 -0
  127. package/dist/esm/v2/components/Skeleton.js.map +1 -0
  128. package/dist/esm/v2/components/SkipLink.js +49 -0
  129. package/dist/esm/v2/components/SkipLink.js.map +1 -0
  130. package/dist/esm/v2/components/Spinner.js +69 -0
  131. package/dist/esm/v2/components/Spinner.js.map +1 -0
  132. package/dist/esm/v2/components/Status.js +64 -0
  133. package/dist/esm/v2/components/Status.js.map +1 -0
  134. package/dist/esm/v2/components/Stepper.js +432 -0
  135. package/dist/esm/v2/components/Stepper.js.map +1 -0
  136. package/dist/esm/v2/components/Surface.js +159 -0
  137. package/dist/esm/v2/components/Surface.js.map +1 -0
  138. package/dist/esm/v2/components/Switch.js +128 -0
  139. package/dist/esm/v2/components/Switch.js.map +1 -0
  140. package/dist/esm/v2/components/Tabs.js +150 -0
  141. package/dist/esm/v2/components/Tabs.js.map +1 -0
  142. package/dist/esm/v2/components/TelInput.js +274 -0
  143. package/dist/esm/v2/components/TelInput.js.map +1 -0
  144. package/dist/esm/v2/components/Textarea.js +72 -0
  145. package/dist/esm/v2/components/Textarea.js.map +1 -0
  146. package/dist/esm/v2/components/TimePicker.js +134 -0
  147. package/dist/esm/v2/components/TimePicker.js.map +1 -0
  148. package/dist/esm/v2/components/Toast.js +376 -0
  149. package/dist/esm/v2/components/Toast.js.map +1 -0
  150. package/dist/esm/v2/components/Tooltip.js +161 -0
  151. package/dist/esm/v2/components/Tooltip.js.map +1 -0
  152. package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
  153. package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
  154. package/dist/esm/v2/components/_pickerShared.js +60 -0
  155. package/dist/esm/v2/components/_pickerShared.js.map +1 -0
  156. package/dist/esm/v2/components/index.js +271 -0
  157. package/dist/esm/v2/components/index.js.map +1 -0
  158. package/dist/esm/v2/hooks/index.js +10 -0
  159. package/dist/esm/v2/hooks/index.js.map +1 -0
  160. package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
  161. package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
  162. package/dist/esm/v2/hooks/useDensity.js +119 -0
  163. package/dist/esm/v2/hooks/useDensity.js.map +1 -0
  164. package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
  165. package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
  166. package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
  167. package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
  168. package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
  169. package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
  170. package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
  171. package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
  172. package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
  173. package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
  174. package/dist/esm/v2/hooks/useSortedRows.js +32 -0
  175. package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
  176. package/dist/esm/v2/hooks/useTabLoading.js +79 -0
  177. package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
  178. package/dist/esm/v2/index.js +132 -0
  179. package/dist/esm/v2/index.js.map +1 -0
  180. package/dist/esm/v2/modalContext.js +108 -0
  181. package/dist/esm/v2/modalContext.js.map +1 -0
  182. package/dist/esm/v2/models/favorite.js +2 -0
  183. package/dist/esm/v2/models/favorite.js.map +1 -0
  184. package/dist/esm/v2/models/index.js +12 -0
  185. package/dist/esm/v2/models/index.js.map +1 -0
  186. package/dist/esm/v2/models/personalization.js +2 -0
  187. package/dist/esm/v2/models/personalization.js.map +1 -0
  188. package/dist/esm/v2/models/referentiel.js +2 -0
  189. package/dist/esm/v2/models/referentiel.js.map +1 -0
  190. package/dist/esm/v2/models/savedFilter.js +2 -0
  191. package/dist/esm/v2/models/savedFilter.js.map +1 -0
  192. package/dist/esm/v2/patterns/ActionBar.js +603 -0
  193. package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
  194. package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
  195. package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
  196. package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
  197. package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
  198. package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
  199. package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
  200. package/dist/esm/v2/patterns/DataGrid.js +820 -0
  201. package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
  202. package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
  203. package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
  204. package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
  205. package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
  206. package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
  207. package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
  208. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
  209. package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
  210. package/dist/esm/v2/patterns/FavoriteColumn.js +117 -0
  211. package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
  212. package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
  213. package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
  214. package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
  215. package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
  216. package/dist/esm/v2/patterns/FormPageShell.js +126 -0
  217. package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
  218. package/dist/esm/v2/patterns/FormSection.js +190 -0
  219. package/dist/esm/v2/patterns/FormSection.js.map +1 -0
  220. package/dist/esm/v2/patterns/FormikCheckbox.js +140 -0
  221. package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
  222. package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
  223. package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
  224. package/dist/esm/v2/patterns/FormikCombobox.js +118 -0
  225. package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
  226. package/dist/esm/v2/patterns/FormikDatePicker.js +162 -0
  227. package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
  228. package/dist/esm/v2/patterns/FormikDateTimePicker.js +150 -0
  229. package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
  230. package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
  231. package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
  232. package/dist/esm/v2/patterns/FormikFile.js +148 -0
  233. package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
  234. package/dist/esm/v2/patterns/FormikInput.js +130 -0
  235. package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
  236. package/dist/esm/v2/patterns/FormikRadioGroup.js +141 -0
  237. package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
  238. package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
  239. package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
  240. package/dist/esm/v2/patterns/FormikSelect.js +162 -0
  241. package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
  242. package/dist/esm/v2/patterns/FormikTextarea.js +79 -0
  243. package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
  244. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +212 -0
  245. package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
  246. package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
  247. package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
  248. package/dist/esm/v2/patterns/PageContent.js +62 -0
  249. package/dist/esm/v2/patterns/PageContent.js.map +1 -0
  250. package/dist/esm/v2/patterns/ReferentielField.js +615 -0
  251. package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
  252. package/dist/esm/v2/patterns/RowFavoriteToggle.js +122 -0
  253. package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
  254. package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
  255. package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
  256. package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
  257. package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
  258. package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
  259. package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
  260. package/dist/esm/v2/patterns/SortableHeader.js +179 -0
  261. package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
  262. package/dist/esm/v2/patterns/Tour.js +471 -0
  263. package/dist/esm/v2/patterns/Tour.js.map +1 -0
  264. package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
  265. package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
  266. package/dist/esm/v2/patterns/_pickerSerialisation.js +74 -0
  267. package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
  268. package/dist/esm/v2/patterns/_sort.js +112 -0
  269. package/dist/esm/v2/patterns/_sort.js.map +1 -0
  270. package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
  271. package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
  272. package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
  273. package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
  274. package/dist/esm/v2/patterns/index.js +178 -0
  275. package/dist/esm/v2/patterns/index.js.map +1 -0
  276. package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
  277. package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
  278. package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
  279. package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
  280. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
  281. package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
  282. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
  283. package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
  284. package/dist/esm/v2/personalization/adapters/index.js +11 -0
  285. package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
  286. package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
  287. package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
  288. package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
  289. package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
  290. package/dist/esm/v2/personalization/capabilities/gridPreferences.js +209 -0
  291. package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  292. package/dist/esm/v2/personalization/capabilities/index.js +22 -0
  293. package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
  294. package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
  295. package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
  296. package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
  297. package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
  298. package/dist/esm/v2/personalization/index.js +64 -0
  299. package/dist/esm/v2/personalization/index.js.map +1 -0
  300. package/dist/esm/v2/personalization/personalizationContext.js +108 -0
  301. package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
  302. package/dist/esm/v2/personalization/schema.js +92 -0
  303. package/dist/esm/v2/personalization/schema.js.map +1 -0
  304. package/dist/esm/v2/personalization/types.js +2 -0
  305. package/dist/esm/v2/personalization/types.js.map +1 -0
  306. package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
  307. package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
  308. package/dist/esm/v2/referentiel/index.js +15 -0
  309. package/dist/esm/v2/referentiel/index.js.map +1 -0
  310. package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
  311. package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
  312. package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
  313. package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
  314. package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
  315. package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
  316. package/dist/esm/v2/styles/base.css +425 -0
  317. package/dist/esm/v2/styles/css.d.ts +10 -0
  318. package/dist/esm/v2/styles/index.js +12 -0
  319. package/dist/esm/v2/styles/index.js.map +1 -0
  320. package/dist/esm/v2/theme/_brand.js +64 -0
  321. package/dist/esm/v2/theme/_brand.js.map +1 -0
  322. package/dist/esm/v2/theme/_brandSecondary.js +60 -0
  323. package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
  324. package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
  325. package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
  326. package/dist/esm/v2/theme/cssVariables.js +198 -0
  327. package/dist/esm/v2/theme/cssVariables.js.map +1 -0
  328. package/dist/esm/v2/theme/index.js +32 -0
  329. package/dist/esm/v2/theme/index.js.map +1 -0
  330. package/dist/esm/v2/tokens/breakpoints.js +106 -0
  331. package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
  332. package/dist/esm/v2/tokens/colors.js +219 -0
  333. package/dist/esm/v2/tokens/colors.js.map +1 -0
  334. package/dist/esm/v2/tokens/density.js +98 -0
  335. package/dist/esm/v2/tokens/density.js.map +1 -0
  336. package/dist/esm/v2/tokens/index.js +80 -0
  337. package/dist/esm/v2/tokens/index.js.map +1 -0
  338. package/dist/esm/v2/tokens/motion.js +88 -0
  339. package/dist/esm/v2/tokens/motion.js.map +1 -0
  340. package/dist/esm/v2/tokens/radius.js +22 -0
  341. package/dist/esm/v2/tokens/radius.js.map +1 -0
  342. package/dist/esm/v2/tokens/shadows.js +40 -0
  343. package/dist/esm/v2/tokens/shadows.js.map +1 -0
  344. package/dist/esm/v2/tokens/spacing.js +51 -0
  345. package/dist/esm/v2/tokens/spacing.js.map +1 -0
  346. package/dist/esm/v2/tokens/state.js +41 -0
  347. package/dist/esm/v2/tokens/state.js.map +1 -0
  348. package/dist/esm/v2/tokens/statusPalette.js +66 -0
  349. package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
  350. package/dist/esm/v2/tokens/tokens.json +153 -0
  351. package/dist/esm/v2/tokens/typography.js +149 -0
  352. package/dist/esm/v2/tokens/typography.js.map +1 -0
  353. package/dist/esm/v2/tokens/zIndex.js +44 -0
  354. package/dist/esm/v2/tokens/zIndex.js.map +1 -0
  355. package/dist/esm/v2/types/common.js +2 -0
  356. package/dist/esm/v2/types/common.js.map +1 -0
  357. package/dist/esm/v2/types/datagrid.js +2 -0
  358. package/dist/esm/v2/types/datagrid.js.map +1 -0
  359. package/dist/esm/v2/types/index.js +12 -0
  360. package/dist/esm/v2/types/index.js.map +1 -0
  361. package/dist/esm/v2/utils/apiError.js +281 -0
  362. package/dist/esm/v2/utils/apiError.js.map +1 -0
  363. package/dist/esm/v2/utils/contrast.js +157 -0
  364. package/dist/esm/v2/utils/contrast.js.map +1 -0
  365. package/dist/esm/v2/utils/cx.js +38 -0
  366. package/dist/esm/v2/utils/cx.js.map +1 -0
  367. package/dist/esm/v2/utils/fileDownload.js +226 -0
  368. package/dist/esm/v2/utils/fileDownload.js.map +1 -0
  369. package/dist/esm/v2/utils/fmtMoney.js +78 -0
  370. package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
  371. package/dist/esm/v2/utils/index.js +43 -0
  372. package/dist/esm/v2/utils/index.js.map +1 -0
  373. package/dist/esm/v2/utils/mergeLabels.js +86 -0
  374. package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
  375. package/dist/esm/v2/utils/networkStatus.js +114 -0
  376. package/dist/esm/v2/utils/networkStatus.js.map +1 -0
  377. package/dist/index.d.ts +5 -2
  378. package/dist/index.d.ts.map +1 -1
  379. package/dist/index.js +35 -0
  380. package/dist/index.js.map +1 -1
  381. package/dist/v2/__tests__/FieldError.test.js +160 -0
  382. package/dist/v2/__tests__/FieldError.test.js.map +1 -0
  383. package/dist/v2/__tests__/FieldWidth.test.js +150 -0
  384. package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
  385. package/dist/v2/__tests__/FileCard.test.js +144 -0
  386. package/dist/v2/__tests__/FileCard.test.js.map +1 -0
  387. package/dist/v2/__tests__/FormikCheckbox.test.js +268 -0
  388. package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
  389. package/dist/v2/__tests__/FormikDateTimePicker.test.js +247 -0
  390. package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
  391. package/dist/v2/__tests__/FormikRadioGroup.test.js +381 -0
  392. package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
  393. package/dist/v2/__tests__/MobileRowCard.test.js +52 -56
  394. package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
  395. package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
  396. package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
  397. package/dist/v2/__tests__/labels-merge.test.js +20 -24
  398. package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
  399. package/dist/v2/components/Accordion.d.ts +6 -6
  400. package/dist/v2/components/Accordion.d.ts.map +1 -1
  401. package/dist/v2/components/Accordion.js.map +1 -1
  402. package/dist/v2/components/ActionStrip.d.ts +12 -12
  403. package/dist/v2/components/ActionStrip.d.ts.map +1 -1
  404. package/dist/v2/components/ActionStrip.js.map +1 -1
  405. package/dist/v2/components/Banner.d.ts +48 -9
  406. package/dist/v2/components/Banner.d.ts.map +1 -1
  407. package/dist/v2/components/Banner.js +116 -35
  408. package/dist/v2/components/Banner.js.map +1 -1
  409. package/dist/v2/components/Busy.d.ts +3 -3
  410. package/dist/v2/components/Busy.d.ts.map +1 -1
  411. package/dist/v2/components/Busy.js.map +1 -1
  412. package/dist/v2/components/Button.d.ts +6 -6
  413. package/dist/v2/components/Button.d.ts.map +1 -1
  414. package/dist/v2/components/Button.js.map +1 -1
  415. package/dist/v2/components/CategoryTag.d.ts +3 -3
  416. package/dist/v2/components/CategoryTag.d.ts.map +1 -1
  417. package/dist/v2/components/CategoryTag.js.map +1 -1
  418. package/dist/v2/components/Checkbox.d.ts +11 -11
  419. package/dist/v2/components/Checkbox.d.ts.map +1 -1
  420. package/dist/v2/components/Checkbox.js.map +1 -1
  421. package/dist/v2/components/Chip.d.ts +8 -8
  422. package/dist/v2/components/Chip.d.ts.map +1 -1
  423. package/dist/v2/components/Chip.js +2 -1
  424. package/dist/v2/components/Chip.js.map +1 -1
  425. package/dist/v2/components/Combobox.d.ts +27 -27
  426. package/dist/v2/components/Combobox.d.ts.map +1 -1
  427. package/dist/v2/components/Combobox.js +3 -2
  428. package/dist/v2/components/Combobox.js.map +1 -1
  429. package/dist/v2/components/CommandPalette.d.ts +20 -20
  430. package/dist/v2/components/CommandPalette.d.ts.map +1 -1
  431. package/dist/v2/components/CommandPalette.js +2 -6
  432. package/dist/v2/components/CommandPalette.js.map +1 -1
  433. package/dist/v2/components/ConfirmDialog.d.ts +13 -13
  434. package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
  435. package/dist/v2/components/ConfirmDialog.js +2 -1
  436. package/dist/v2/components/ConfirmDialog.js.map +1 -1
  437. package/dist/v2/components/DatePicker.d.ts +11 -11
  438. package/dist/v2/components/DatePicker.d.ts.map +1 -1
  439. package/dist/v2/components/DatePicker.js.map +1 -1
  440. package/dist/v2/components/DateRangePicker.d.ts +16 -16
  441. package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
  442. package/dist/v2/components/DateRangePicker.js +2 -1
  443. package/dist/v2/components/DateRangePicker.js.map +1 -1
  444. package/dist/v2/components/DateTimePicker.d.ts +11 -11
  445. package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
  446. package/dist/v2/components/DateTimePicker.js +37 -4
  447. package/dist/v2/components/DateTimePicker.js.map +1 -1
  448. package/dist/v2/components/Drawer.d.ts +18 -18
  449. package/dist/v2/components/Drawer.d.ts.map +1 -1
  450. package/dist/v2/components/Drawer.js +2 -1
  451. package/dist/v2/components/Drawer.js.map +1 -1
  452. package/dist/v2/components/Dropzone.d.ts +34 -34
  453. package/dist/v2/components/Dropzone.d.ts.map +1 -1
  454. package/dist/v2/components/Dropzone.js +11 -3
  455. package/dist/v2/components/Dropzone.js.map +1 -1
  456. package/dist/v2/components/EmptyState.d.ts +7 -7
  457. package/dist/v2/components/EmptyState.d.ts.map +1 -1
  458. package/dist/v2/components/EmptyState.js.map +1 -1
  459. package/dist/v2/components/FavoriteToggle.d.ts +7 -7
  460. package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
  461. package/dist/v2/components/FavoriteToggle.js +2 -1
  462. package/dist/v2/components/FavoriteToggle.js.map +1 -1
  463. package/dist/v2/components/Field.d.ts +76 -13
  464. package/dist/v2/components/Field.d.ts.map +1 -1
  465. package/dist/v2/components/Field.js +87 -9
  466. package/dist/v2/components/Field.js.map +1 -1
  467. package/dist/v2/components/FieldError.d.ts +78 -0
  468. package/dist/v2/components/FieldError.d.ts.map +1 -0
  469. package/dist/v2/components/FieldError.js +131 -0
  470. package/dist/v2/components/FieldError.js.map +1 -0
  471. package/dist/v2/components/FieldHelp.d.ts +7 -7
  472. package/dist/v2/components/FieldHelp.d.ts.map +1 -1
  473. package/dist/v2/components/FieldHelp.js.map +1 -1
  474. package/dist/v2/components/FileCard.d.ts +75 -0
  475. package/dist/v2/components/FileCard.d.ts.map +1 -0
  476. package/dist/v2/components/FileCard.js +169 -0
  477. package/dist/v2/components/FileCard.js.map +1 -0
  478. package/dist/v2/components/FilterTab.d.ts +9 -9
  479. package/dist/v2/components/FilterTab.d.ts.map +1 -1
  480. package/dist/v2/components/FilterTab.js +2 -1
  481. package/dist/v2/components/FilterTab.js.map +1 -1
  482. package/dist/v2/components/FormGrid.d.ts +9 -4
  483. package/dist/v2/components/FormGrid.d.ts.map +1 -1
  484. package/dist/v2/components/FormGrid.js +11 -1
  485. package/dist/v2/components/FormGrid.js.map +1 -1
  486. package/dist/v2/components/FormikDisplay.d.ts +6 -6
  487. package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
  488. package/dist/v2/components/FormikDisplay.js.map +1 -1
  489. package/dist/v2/components/Input.d.ts +6 -6
  490. package/dist/v2/components/Input.d.ts.map +1 -1
  491. package/dist/v2/components/Input.js.map +1 -1
  492. package/dist/v2/components/KPICard.d.ts +43 -13
  493. package/dist/v2/components/KPICard.d.ts.map +1 -1
  494. package/dist/v2/components/KPICard.js +53 -14
  495. package/dist/v2/components/KPICard.js.map +1 -1
  496. package/dist/v2/components/KPIStrip.d.ts +68 -0
  497. package/dist/v2/components/KPIStrip.d.ts.map +1 -0
  498. package/dist/v2/components/KPIStrip.js +92 -0
  499. package/dist/v2/components/KPIStrip.js.map +1 -0
  500. package/dist/v2/components/KV.d.ts +3 -3
  501. package/dist/v2/components/KV.d.ts.map +1 -1
  502. package/dist/v2/components/KV.js.map +1 -1
  503. package/dist/v2/components/KVGrid.d.ts +2 -2
  504. package/dist/v2/components/KVGrid.d.ts.map +1 -1
  505. package/dist/v2/components/KVGrid.js +8 -1
  506. package/dist/v2/components/KVGrid.js.map +1 -1
  507. package/dist/v2/components/Layout.d.ts +7 -7
  508. package/dist/v2/components/Layout.d.ts.map +1 -1
  509. package/dist/v2/components/Layout.js.map +1 -1
  510. package/dist/v2/components/MobileRowCard.d.ts +13 -13
  511. package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
  512. package/dist/v2/components/MobileRowCard.js.map +1 -1
  513. package/dist/v2/components/Modal.d.ts +12 -12
  514. package/dist/v2/components/Modal.d.ts.map +1 -1
  515. package/dist/v2/components/Modal.js.map +1 -1
  516. package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
  517. package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
  518. package/dist/v2/components/NetworkErrorPage.js.map +1 -1
  519. package/dist/v2/components/NumberInput.d.ts +14 -14
  520. package/dist/v2/components/NumberInput.d.ts.map +1 -1
  521. package/dist/v2/components/NumberInput.js +7 -6
  522. package/dist/v2/components/NumberInput.js.map +1 -1
  523. package/dist/v2/components/OverflowMenu.d.ts +14 -14
  524. package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
  525. package/dist/v2/components/OverflowMenu.js +4 -8
  526. package/dist/v2/components/OverflowMenu.js.map +1 -1
  527. package/dist/v2/components/PdfViewer.d.ts +9 -9
  528. package/dist/v2/components/PdfViewer.d.ts.map +1 -1
  529. package/dist/v2/components/PdfViewer.js.map +1 -1
  530. package/dist/v2/components/ProgressBar.d.ts +10 -10
  531. package/dist/v2/components/ProgressBar.d.ts.map +1 -1
  532. package/dist/v2/components/ProgressBar.js.map +1 -1
  533. package/dist/v2/components/Radio.d.ts +7 -7
  534. package/dist/v2/components/Radio.d.ts.map +1 -1
  535. package/dist/v2/components/Radio.js.map +1 -1
  536. package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
  537. package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
  538. package/dist/v2/components/SectionErrorBoundary.js +221 -0
  539. package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
  540. package/dist/v2/components/SectionHeader.d.ts +5 -5
  541. package/dist/v2/components/SectionHeader.d.ts.map +1 -1
  542. package/dist/v2/components/SectionHeader.js.map +1 -1
  543. package/dist/v2/components/Segmented.d.ts +11 -11
  544. package/dist/v2/components/Segmented.d.ts.map +1 -1
  545. package/dist/v2/components/Segmented.js.map +1 -1
  546. package/dist/v2/components/Select.d.ts +33 -15
  547. package/dist/v2/components/Select.d.ts.map +1 -1
  548. package/dist/v2/components/Select.js +147 -30
  549. package/dist/v2/components/Select.js.map +1 -1
  550. package/dist/v2/components/ServerErrorPage.d.ts +1 -1
  551. package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
  552. package/dist/v2/components/ServerErrorPage.js.map +1 -1
  553. package/dist/v2/components/Skeleton.d.ts +15 -15
  554. package/dist/v2/components/Skeleton.d.ts.map +1 -1
  555. package/dist/v2/components/Skeleton.js.map +1 -1
  556. package/dist/v2/components/SkipLink.d.ts +2 -2
  557. package/dist/v2/components/SkipLink.d.ts.map +1 -1
  558. package/dist/v2/components/SkipLink.js.map +1 -1
  559. package/dist/v2/components/Status.d.ts +3 -3
  560. package/dist/v2/components/Status.d.ts.map +1 -1
  561. package/dist/v2/components/Status.js.map +1 -1
  562. package/dist/v2/components/Stepper.d.ts +28 -22
  563. package/dist/v2/components/Stepper.d.ts.map +1 -1
  564. package/dist/v2/components/Stepper.js +31 -5
  565. package/dist/v2/components/Stepper.js.map +1 -1
  566. package/dist/v2/components/Surface.d.ts +94 -0
  567. package/dist/v2/components/Surface.d.ts.map +1 -0
  568. package/dist/v2/components/Surface.js +163 -0
  569. package/dist/v2/components/Surface.js.map +1 -0
  570. package/dist/v2/components/Switch.d.ts +4 -4
  571. package/dist/v2/components/Switch.d.ts.map +1 -1
  572. package/dist/v2/components/Switch.js.map +1 -1
  573. package/dist/v2/components/Tabs.d.ts +6 -6
  574. package/dist/v2/components/Tabs.d.ts.map +1 -1
  575. package/dist/v2/components/Tabs.js.map +1 -1
  576. package/dist/v2/components/TelInput.d.ts +8 -8
  577. package/dist/v2/components/TelInput.d.ts.map +1 -1
  578. package/dist/v2/components/TelInput.js +18 -18
  579. package/dist/v2/components/TelInput.js.map +1 -1
  580. package/dist/v2/components/Textarea.d.ts +1 -1
  581. package/dist/v2/components/Textarea.d.ts.map +1 -1
  582. package/dist/v2/components/Textarea.js.map +1 -1
  583. package/dist/v2/components/TimePicker.d.ts +11 -11
  584. package/dist/v2/components/TimePicker.d.ts.map +1 -1
  585. package/dist/v2/components/TimePicker.js.map +1 -1
  586. package/dist/v2/components/Toast.d.ts +6 -6
  587. package/dist/v2/components/Toast.d.ts.map +1 -1
  588. package/dist/v2/components/Toast.js +9 -8
  589. package/dist/v2/components/Toast.js.map +1 -1
  590. package/dist/v2/components/Tooltip.d.ts +1 -1
  591. package/dist/v2/components/Tooltip.d.ts.map +1 -1
  592. package/dist/v2/components/Tooltip.js.map +1 -1
  593. package/dist/v2/components/index.d.ts +170 -0
  594. package/dist/v2/components/index.d.ts.map +1 -1
  595. package/dist/v2/components/index.js +35 -0
  596. package/dist/v2/components/index.js.map +1 -1
  597. package/dist/v2/index.d.ts.map +1 -1
  598. package/dist/v2/index.js.map +1 -1
  599. package/dist/v2/models/favorite.d.ts +1 -1
  600. package/dist/v2/models/favorite.d.ts.map +1 -1
  601. package/dist/v2/models/favorite.js.map +1 -1
  602. package/dist/v2/models/personalization.d.ts +13 -13
  603. package/dist/v2/models/personalization.d.ts.map +1 -1
  604. package/dist/v2/models/personalization.js.map +1 -1
  605. package/dist/v2/models/referentiel.d.ts +11 -11
  606. package/dist/v2/models/referentiel.d.ts.map +1 -1
  607. package/dist/v2/models/referentiel.js.map +1 -1
  608. package/dist/v2/models/savedFilter.d.ts +8 -8
  609. package/dist/v2/models/savedFilter.d.ts.map +1 -1
  610. package/dist/v2/models/savedFilter.js.map +1 -1
  611. package/dist/v2/patterns/ActionBar.d.ts +33 -33
  612. package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
  613. package/dist/v2/patterns/ActionBar.js +2 -1
  614. package/dist/v2/patterns/ActionBar.js.map +1 -1
  615. package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
  616. package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
  617. package/dist/v2/patterns/BulkActionBar.js +2 -1
  618. package/dist/v2/patterns/BulkActionBar.js.map +1 -1
  619. package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
  620. package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
  621. package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
  622. package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
  623. package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
  624. package/dist/v2/patterns/ColumnsToggle.js +4 -8
  625. package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
  626. package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
  627. package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
  628. package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
  629. package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
  630. package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
  631. package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
  632. package/dist/v2/patterns/DataGridToolbar.js +2 -1
  633. package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
  634. package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
  635. package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
  636. package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
  637. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
  638. package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
  639. package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
  640. package/dist/v2/patterns/FavoriteColumn.d.ts +15 -15
  641. package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
  642. package/dist/v2/patterns/FavoriteColumn.js +14 -61
  643. package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
  644. package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
  645. package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
  646. package/dist/v2/patterns/FavoritesFilter.js +2 -1
  647. package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
  648. package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
  649. package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
  650. package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
  651. package/dist/v2/patterns/FormPageShell.d.ts +4 -4
  652. package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
  653. package/dist/v2/patterns/FormPageShell.js.map +1 -1
  654. package/dist/v2/patterns/FormSection.d.ts +19 -8
  655. package/dist/v2/patterns/FormSection.d.ts.map +1 -1
  656. package/dist/v2/patterns/FormSection.js +106 -71
  657. package/dist/v2/patterns/FormSection.js.map +1 -1
  658. package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
  659. package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
  660. package/dist/v2/patterns/FormikCheckbox.js +147 -0
  661. package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
  662. package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
  663. package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
  664. package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
  665. package/dist/v2/patterns/FormikCombobox.d.ts +18 -12
  666. package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
  667. package/dist/v2/patterns/FormikCombobox.js +5 -2
  668. package/dist/v2/patterns/FormikCombobox.js.map +1 -1
  669. package/dist/v2/patterns/FormikDatePicker.d.ts +48 -8
  670. package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
  671. package/dist/v2/patterns/FormikDatePicker.js +58 -65
  672. package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
  673. package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
  674. package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
  675. package/dist/v2/patterns/FormikDateTimePicker.js +158 -0
  676. package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
  677. package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
  678. package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
  679. package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
  680. package/dist/v2/patterns/FormikFile.d.ts +8 -8
  681. package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
  682. package/dist/v2/patterns/FormikFile.js.map +1 -1
  683. package/dist/v2/patterns/FormikInput.d.ts +51 -6
  684. package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
  685. package/dist/v2/patterns/FormikInput.js +53 -2
  686. package/dist/v2/patterns/FormikInput.js.map +1 -1
  687. package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
  688. package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
  689. package/dist/v2/patterns/FormikRadioGroup.js +148 -0
  690. package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
  691. package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
  692. package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
  693. package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
  694. package/dist/v2/patterns/FormikSelect.d.ts +41 -12
  695. package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
  696. package/dist/v2/patterns/FormikSelect.js +32 -3
  697. package/dist/v2/patterns/FormikSelect.js.map +1 -1
  698. package/dist/v2/patterns/FormikTextarea.d.ts +14 -6
  699. package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
  700. package/dist/v2/patterns/FormikTextarea.js +5 -2
  701. package/dist/v2/patterns/FormikTextarea.js.map +1 -1
  702. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +21 -8
  703. package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
  704. package/dist/v2/patterns/KeyboardShortcutsHelp.js +27 -14
  705. package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
  706. package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
  707. package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
  708. package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
  709. package/dist/v2/patterns/PageContent.d.ts +3 -3
  710. package/dist/v2/patterns/PageContent.d.ts.map +1 -1
  711. package/dist/v2/patterns/PageContent.js.map +1 -1
  712. package/dist/v2/patterns/ReferentielField.d.ts +49 -49
  713. package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
  714. package/dist/v2/patterns/ReferentielField.js +2 -1
  715. package/dist/v2/patterns/ReferentielField.js.map +1 -1
  716. package/dist/v2/patterns/RowFavoriteToggle.d.ts +92 -0
  717. package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
  718. package/dist/v2/patterns/RowFavoriteToggle.js +127 -0
  719. package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
  720. package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
  721. package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
  722. package/dist/v2/patterns/SaveFilterDialog.js +9 -8
  723. package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
  724. package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
  725. package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
  726. package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
  727. package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
  728. package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
  729. package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
  730. package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
  731. package/dist/v2/patterns/SortableHeader.d.ts +1 -1
  732. package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
  733. package/dist/v2/patterns/SortableHeader.js.map +1 -1
  734. package/dist/v2/patterns/Tour.d.ts +12 -12
  735. package/dist/v2/patterns/Tour.d.ts.map +1 -1
  736. package/dist/v2/patterns/Tour.js +9 -8
  737. package/dist/v2/patterns/Tour.js.map +1 -1
  738. package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
  739. package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
  740. package/dist/v2/patterns/_dataGridShared.js +37 -3
  741. package/dist/v2/patterns/_dataGridShared.js.map +1 -1
  742. package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
  743. package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
  744. package/dist/v2/patterns/_pickerSerialisation.js +81 -0
  745. package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
  746. package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
  747. package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
  748. package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
  749. package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
  750. package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
  751. package/dist/v2/patterns/_useColumnResize.js.map +1 -1
  752. package/dist/v2/patterns/index.d.ts +114 -0
  753. package/dist/v2/patterns/index.d.ts.map +1 -1
  754. package/dist/v2/patterns/index.js +34 -0
  755. package/dist/v2/patterns/index.js.map +1 -1
  756. package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
  757. package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
  758. package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
  759. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
  760. package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
  761. package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
  762. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
  763. package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
  764. package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
  765. package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
  766. package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
  767. package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
  768. package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
  769. package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
  770. package/dist/v2/personalization/capabilities/gridPreferences.js +215 -0
  771. package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
  772. package/dist/v2/personalization/capabilities/index.d.ts +6 -0
  773. package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
  774. package/dist/v2/personalization/capabilities/index.js +13 -0
  775. package/dist/v2/personalization/capabilities/index.js.map +1 -1
  776. package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
  777. package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
  778. package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
  779. package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
  780. package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
  781. package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
  782. package/dist/v2/personalization/index.d.ts +18 -0
  783. package/dist/v2/personalization/index.d.ts.map +1 -1
  784. package/dist/v2/personalization/index.js +13 -0
  785. package/dist/v2/personalization/index.js.map +1 -1
  786. package/dist/v2/personalization/schema.d.ts +2 -2
  787. package/dist/v2/personalization/schema.d.ts.map +1 -1
  788. package/dist/v2/personalization/schema.js.map +1 -1
  789. package/dist/v2/personalization/types.d.ts +19 -19
  790. package/dist/v2/personalization/types.d.ts.map +1 -1
  791. package/dist/v2/personalization/types.js.map +1 -1
  792. package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
  793. package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
  794. package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
  795. package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
  796. package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
  797. package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
  798. package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
  799. package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
  800. package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
  801. package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
  802. package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
  803. package/dist/v2/theme/createPortnetTheme.js +25 -1
  804. package/dist/v2/theme/createPortnetTheme.js.map +1 -1
  805. package/dist/v2/types/datagrid.d.ts +59 -59
  806. package/dist/v2/types/datagrid.d.ts.map +1 -1
  807. package/dist/v2/types/datagrid.js.map +1 -1
  808. package/dist/v2/utils/apiError.d.ts +65 -4
  809. package/dist/v2/utils/apiError.d.ts.map +1 -1
  810. package/dist/v2/utils/apiError.js +69 -6
  811. package/dist/v2/utils/apiError.js.map +1 -1
  812. package/dist/v2/utils/index.d.ts +1 -0
  813. package/dist/v2/utils/index.d.ts.map +1 -1
  814. package/dist/v2/utils/index.js +7 -0
  815. package/dist/v2/utils/index.js.map +1 -1
  816. package/dist/v2/utils/mergeLabels.d.ts +59 -0
  817. package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
  818. package/dist/v2/utils/mergeLabels.js +93 -0
  819. package/dist/v2/utils/mergeLabels.js.map +1 -0
  820. package/package.json +23 -15
@@ -0,0 +1,184 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ import * as React from "react";
8
+ import IconButton from "@mui/material/IconButton";
9
+ import Menu from "@mui/material/Menu";
10
+ import MenuItem from "@mui/material/MenuItem";
11
+ import Divider from "@mui/material/Divider";
12
+ import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
13
+ import Box from "@mui/material/Box";
14
+ import { mergeLabels } from "../utils/mergeLabels";
15
+
16
+ /**
17
+ * OverflowMenu - Portnet UI v2
18
+ *
19
+ * Charter §03 · Component "OverflowMenu". ARIA menu for ancillary row actions.
20
+ *
21
+ * Max 7 items · separator before danger · kbd shortcut visible right.
22
+ *
23
+ * <OverflowMenu actions={[
24
+ * { label: "Voir le détail", icon: <Visibility />, onClick: open, shortcut: "↵" },
25
+ * { label: "Modifier", icon: <Edit />, onClick: edit },
26
+ * { divider: true },
27
+ * { label: "Supprimer", icon: <Delete />, onClick: remove, danger: true, shortcut: "⌫" },
28
+ * ]} />
29
+ *
30
+ * Localisation (FR / EN / AR):
31
+ * <OverflowMenu labels={{
32
+ * trigger: "More actions",
33
+ * shortcut: (s) => `Shortcut ${s}`,
34
+ * }} />
35
+ *
36
+ * The legacy `ariaLabel` prop still wins over labels.trigger when
37
+ * both are passed, for back-compat.
38
+ */
39
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
40
+ var DEFAULT_LABELS = Object.freeze({
41
+ trigger: "Plus d'actions",
42
+ shortcut: function shortcut(s) {
43
+ return "Raccourci ".concat(s);
44
+ }
45
+ });
46
+
47
+ // MUI v9: slot bag for the Menu. The component already used slotProps.paper
48
+ // for the paper slot; this commit moves MenuListProps onto the same path
49
+ // via the `list` slot key. Hoisted so the reference is stable across
50
+ // renders. `role: "menu" as const` keeps the AriaRole literal.
51
+ var MENU_SLOT_PROPS = Object.freeze({
52
+ paper: {
53
+ sx: {
54
+ minWidth: 200,
55
+ boxShadow: "var(--shadow-md)",
56
+ border: "1px solid var(--border)",
57
+ borderRadius: "var(--r-md)"
58
+ }
59
+ },
60
+ list: {
61
+ role: "menu",
62
+ dense: true
63
+ }
64
+ });
65
+ function OverflowMenu(_ref) {
66
+ var _ref$actions = _ref.actions,
67
+ actions = _ref$actions === void 0 ? [] : _ref$actions,
68
+ trigger = _ref.trigger,
69
+ ariaLabel = _ref.ariaLabel,
70
+ _ref$align = _ref.align,
71
+ align = _ref$align === void 0 ? "right" : _ref$align,
72
+ labels = _ref.labels;
73
+ var L = mergeLabels(DEFAULT_LABELS, labels);
74
+ // Legacy ariaLabel prop wins over labels.trigger.
75
+ var triggerAria = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : L.trigger;
76
+ var _React$useState = React.useState(null),
77
+ _React$useState2 = _slicedToArray(_React$useState, 2),
78
+ anchor = _React$useState2[0],
79
+ setAnchor = _React$useState2[1];
80
+ var open = Boolean(anchor);
81
+ if (process.env["NODE_ENV"] !== "production" && actions.length > 7) {
82
+ // eslint-disable-next-line no-console
83
+ console.warn("[@portnet/ui v2] <OverflowMenu> over 7 items - charter recommends ≤ 7.");
84
+ }
85
+ var handleOpen = function handleOpen(e) {
86
+ return setAnchor(e.currentTarget);
87
+ };
88
+ var handleClose = function handleClose() {
89
+ return setAnchor(null);
90
+ };
91
+
92
+ // R-2.1 - when a host passes a custom trigger, preserve its existing
93
+ // onClick (analytics, focus capture, optimistic UI etc.) by chaining
94
+ // it before our handleOpen. Without this, cloneElement silently
95
+ // overwrites the host's handler.
96
+ var triggerNode = trigger ? /*#__PURE__*/React.cloneElement(trigger, {
97
+ onClick: function onClick(event) {
98
+ var _onClick, _ref2;
99
+ (_onClick = (_ref2 = trigger.props).onClick) === null || _onClick === void 0 ? void 0 : _onClick.call(_ref2, event);
100
+ handleOpen(event);
101
+ },
102
+ "aria-haspopup": "menu",
103
+ "aria-expanded": open
104
+ }) : /*#__PURE__*/_jsx(IconButton, {
105
+ onClick: handleOpen,
106
+ "aria-label": triggerAria,
107
+ "aria-haspopup": "menu",
108
+ "aria-expanded": open,
109
+ size: "small",
110
+ sx: {
111
+ color: "var(--fg-muted)"
112
+ },
113
+ children: /*#__PURE__*/_jsx(MoreHorizIcon, {
114
+ fontSize: "small"
115
+ })
116
+ });
117
+ return /*#__PURE__*/_jsxs(_Fragment, {
118
+ children: [triggerNode, /*#__PURE__*/_jsx(Menu, {
119
+ anchorEl: anchor,
120
+ open: open,
121
+ onClose: handleClose,
122
+ anchorOrigin: {
123
+ vertical: "bottom",
124
+ horizontal: align === "right" ? "right" : "left"
125
+ },
126
+ transformOrigin: {
127
+ vertical: "top",
128
+ horizontal: align === "right" ? "right" : "left"
129
+ },
130
+ slotProps: MENU_SLOT_PROPS,
131
+ children: actions.map(function (a, i) {
132
+ if (a.divider) return /*#__PURE__*/_jsx(Divider, {
133
+ sx: {
134
+ borderColor: "var(--border)"
135
+ }
136
+ }, "d-".concat(i));
137
+ return /*#__PURE__*/_jsxs(MenuItem, {
138
+ role: "menuitem",
139
+ disabled: a.disabled,
140
+ onClick: function onClick() {
141
+ var _a$onClick;
142
+ handleClose();
143
+ (_a$onClick = a.onClick) === null || _a$onClick === void 0 ? void 0 : _a$onClick.call(a);
144
+ },
145
+ sx: {
146
+ fontSize: "var(--text-sm)",
147
+ color: a.danger ? "var(--danger)" : "var(--fg)",
148
+ "&:hover": a.danger ? {
149
+ background: "var(--danger-soft)"
150
+ } : undefined,
151
+ gap: 1.5
152
+ },
153
+ children: [a.icon && /*#__PURE__*/_jsx(Box, {
154
+ sx: {
155
+ display: "inline-flex",
156
+ color: a.danger ? "var(--danger)" : "var(--fg-muted)"
157
+ },
158
+ children: a.icon
159
+ }), /*#__PURE__*/_jsx(Box, {
160
+ sx: {
161
+ flex: 1
162
+ },
163
+ children: a.label
164
+ }), a.shortcut && /*#__PURE__*/_jsx(Box, {
165
+ component: "kbd",
166
+ "aria-label": typeof L.shortcut === "function" ? L.shortcut(a.shortcut) : "".concat(L.shortcut, " ").concat(a.shortcut),
167
+ sx: {
168
+ fontSize: "var(--text-xs)",
169
+ color: "var(--fg-subtle)",
170
+ background: "var(--bg-subtle)",
171
+ border: "1px solid var(--border)",
172
+ borderRadius: "var(--r-sm)",
173
+ padding: "1px var(--s-2)",
174
+ fontFamily: "var(--font-mono)"
175
+ },
176
+ children: a.shortcut
177
+ })]
178
+ }, i);
179
+ })
180
+ })]
181
+ });
182
+ }
183
+ export default OverflowMenu;
184
+ //# sourceMappingURL=OverflowMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverflowMenu.js","names":["React","IconButton","Menu","MenuItem","Divider","MoreHorizIcon","Box","mergeLabels","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_LABELS","Object","freeze","trigger","shortcut","s","concat","MENU_SLOT_PROPS","paper","sx","minWidth","boxShadow","border","borderRadius","list","role","dense","OverflowMenu","_ref","_ref$actions","actions","ariaLabel","_ref$align","align","labels","L","triggerAria","_React$useState","useState","_React$useState2","_slicedToArray","anchor","setAnchor","open","Boolean","process","env","length","console","warn","handleOpen","e","currentTarget","handleClose","triggerNode","cloneElement","onClick","event","_onClick","_ref2","props","call","size","color","children","fontSize","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","map","a","i","divider","borderColor","disabled","_a$onClick","danger","background","undefined","gap","icon","display","flex","label","component","padding","fontFamily"],"sources":["../../../../src/lib/v2/components/OverflowMenu.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Menu from \"@mui/material/Menu\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * OverflowMenu - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"OverflowMenu\". ARIA menu for ancillary row actions.\r\n *\r\n * Max 7 items · separator before danger · kbd shortcut visible right.\r\n *\r\n * <OverflowMenu actions={[\r\n * { label: \"Voir le détail\", icon: <Visibility />, onClick: open, shortcut: \"↵\" },\r\n * { label: \"Modifier\", icon: <Edit />, onClick: edit },\r\n * { divider: true },\r\n * { label: \"Supprimer\", icon: <Delete />, onClick: remove, danger: true, shortcut: \"⌫\" },\r\n * ]} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <OverflowMenu labels={{\r\n * trigger: \"More actions\",\r\n * shortcut: (s) => `Shortcut ${s}`,\r\n * }} />\r\n *\r\n * The legacy `ariaLabel` prop still wins over labels.trigger when\r\n * both are passed, for back-compat.\r\n */\r\n\r\nexport interface OverflowMenuAction {\r\n label?: React.ReactNode | undefined;\r\n /** Rendered directly (no cloneElement) — any renderable node. */\r\n icon?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n danger?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n divider?: boolean | undefined;\r\n}\r\n\r\nexport interface OverflowMenuLabels {\r\n trigger?: string | undefined;\r\n shortcut?: string | ((shortcut: React.ReactNode) => string) | undefined;\r\n}\r\n\r\nexport interface OverflowMenuProps {\r\n /** Row actions. Charter recommends ≤ 7. @default [] */\r\n actions?: OverflowMenuAction[] | undefined;\r\n /**\r\n * Custom trigger element. Cloned via React.cloneElement to inject the\r\n * open handler + aria-haspopup/aria-expanded (must be a single element).\r\n */\r\n trigger?: React.ReactElement | undefined;\r\n /** Legacy accessible name for the default trigger (wins over labels.trigger). */\r\n ariaLabel?: string | undefined;\r\n /** Menu alignment. @default \"right\" */\r\n align?: \"left\" | \"right\" | undefined;\r\n labels?: OverflowMenuLabels | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n trigger: \"Plus d'actions\",\r\n shortcut: (s: React.ReactNode) => `Raccourci ${s}`,\r\n});\r\n\r\n// MUI v9: slot bag for the Menu. The component already used slotProps.paper\r\n// for the paper slot; this commit moves MenuListProps onto the same path\r\n// via the `list` slot key. Hoisted so the reference is stable across\r\n// renders. `role: \"menu\" as const` keeps the AriaRole literal.\r\nconst MENU_SLOT_PROPS = Object.freeze({\r\n paper: {\r\n sx: {\r\n minWidth: 200,\r\n boxShadow: \"var(--shadow-md)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n },\r\n },\r\n list: { role: \"menu\" as const, dense: true },\r\n});\r\n\r\nfunction OverflowMenu({\r\n actions = [],\r\n trigger,\r\n ariaLabel,\r\n align = \"right\",\r\n labels,\r\n}: OverflowMenuProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n // Legacy ariaLabel prop wins over labels.trigger.\r\n const triggerAria = ariaLabel ?? L.trigger;\r\n\r\n const [anchor, setAnchor] = React.useState<HTMLElement | null>(null);\r\n const open = Boolean(anchor);\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && actions.length > 7) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"[@portnet/ui v2] <OverflowMenu> over 7 items - charter recommends ≤ 7.\");\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchor(e.currentTarget);\r\n const handleClose = () => setAnchor(null);\r\n\r\n // R-2.1 - when a host passes a custom trigger, preserve its existing\r\n // onClick (analytics, focus capture, optimistic UI etc.) by chaining\r\n // it before our handleOpen. Without this, cloneElement silently\r\n // overwrites the host's handler.\r\n const triggerNode = trigger\r\n ? React.cloneElement(trigger as React.ReactElement<Record<string, unknown>>, {\r\n onClick: (event: React.MouseEvent<HTMLElement>) => {\r\n (trigger.props as { onClick?: (e: React.MouseEvent<HTMLElement>) => void }).onClick?.(event);\r\n handleOpen(event);\r\n },\r\n \"aria-haspopup\": \"menu\",\r\n \"aria-expanded\": open,\r\n })\r\n : (\r\n <IconButton\r\n onClick={handleOpen}\r\n aria-label={triggerAria}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n size=\"small\"\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <MoreHorizIcon fontSize=\"small\" />\r\n </IconButton>\r\n );\r\n\r\n return (\r\n <>\r\n {triggerNode}\r\n <Menu\r\n anchorEl={anchor}\r\n open={open}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: align === \"right\" ? \"right\" : \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: align === \"right\" ? \"right\" : \"left\" }}\r\n slotProps={MENU_SLOT_PROPS}\r\n >\r\n {actions.map((a, i) => {\r\n if (a.divider) return <Divider key={`d-${i}`} sx={{ borderColor: \"var(--border)\" }} />;\r\n return (\r\n <MenuItem\r\n key={i}\r\n role=\"menuitem\"\r\n disabled={a.disabled}\r\n onClick={() => { handleClose(); a.onClick?.(); }}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n color: a.danger ? \"var(--danger)\" : \"var(--fg)\",\r\n \"&:hover\": a.danger ? { background: \"var(--danger-soft)\" } : undefined,\r\n gap: 1.5,\r\n }}\r\n >\r\n {a.icon && <Box sx={{ display: \"inline-flex\", color: a.danger ? \"var(--danger)\" : \"var(--fg-muted)\" }}>{a.icon}</Box>}\r\n <Box sx={{ flex: 1 }}>{a.label}</Box>\r\n {a.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-label={typeof L.shortcut === \"function\" ? L.shortcut(a.shortcut) : `${L.shortcut} ${a.shortcut}`}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {a.shortcut}\r\n </Box>\r\n )}\r\n </MenuItem>\r\n );\r\n })}\r\n </Menu>\r\n </>\r\n );\r\n}\r\n\r\nexport default OverflowMenu;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,122 @@
1
+ import * as React from "react";
2
+ import Box from "@mui/material/Box";
3
+ import { Viewer, Worker, ProgressBar } from "@react-pdf-viewer/core";
4
+ import { defaultLayoutPlugin } from "@react-pdf-viewer/default-layout";
5
+ import Spinner from "./Spinner";
6
+ import Banner from "./Banner";
7
+ import "@react-pdf-viewer/core/lib/styles/index.css";
8
+ import "@react-pdf-viewer/default-layout/lib/styles/index.css";
9
+
10
+ /**
11
+ * PdfViewer — Portnet UI v2
12
+ *
13
+ * Charter §07 · document viewing / §04.4 · loading & empty states.
14
+ *
15
+ * Presentational, store- and router-agnostic wrapper over @react-pdf-viewer
16
+ * (pdf.js). The HOST owns fetching: pass a ready `fileUrl` (http(s) or `data:`
17
+ * URL) OR a raw `base64` payload, plus the externally-controlled `loading` /
18
+ * `error` flags and the pdf.js `workerUrl`. No redux, no dispatch, no config
19
+ * import — that is exactly what lets it live in the shared library.
20
+ *
21
+ * <PdfViewer
22
+ * base64={pdf}
23
+ * loading={isLoading}
24
+ * error={failed && "Le document n'a pas pu être chargé."}
25
+ * workerUrl={cfg.pdfWorkerUrl}
26
+ * />
27
+ *
28
+ * State precedence: loading → error → (no source) → viewer.
29
+ * - loading → v2.Spinner (charter §04.4: no ad-hoc CircularProgress).
30
+ * - error → v2.Banner variant="error" (R-A.2 alert semantics).
31
+ * - no src → v2.Banner variant="info" (empty).
32
+ *
33
+ * Dependency note (RFC): pulls @react-pdf-viewer/core,
34
+ * @react-pdf-viewer/default-layout and pdfjs-dist. Declared as OPTIONAL peer
35
+ * dependencies — only PDF-consuming modules install them, so there is no
36
+ * bundle cost for the rest of the platform.
37
+ */
38
+ import { jsx as _jsx } from "react/jsx-runtime";
39
+ function PdfViewer(_ref) {
40
+ var fileUrl = _ref.fileUrl,
41
+ base64 = _ref.base64,
42
+ workerUrl = _ref.workerUrl,
43
+ _ref$loading = _ref.loading,
44
+ loading = _ref$loading === void 0 ? false : _ref$loading,
45
+ error = _ref.error,
46
+ _ref$errorTitle = _ref.errorTitle,
47
+ errorTitle = _ref$errorTitle === void 0 ? "Échec du chargement du document" : _ref$errorTitle,
48
+ _ref$emptyLabel = _ref.emptyLabel,
49
+ emptyLabel = _ref$emptyLabel === void 0 ? "Aucun document à afficher." : _ref$emptyLabel,
50
+ _ref$height = _ref.height,
51
+ height = _ref$height === void 0 ? "75vh" : _ref$height,
52
+ _ref$defaultScale = _ref.defaultScale,
53
+ defaultScale = _ref$defaultScale === void 0 ? 0.95 : _ref$defaultScale,
54
+ _ref$ariaLabel = _ref.ariaLabel,
55
+ ariaLabel = _ref$ariaLabel === void 0 ? "Document PDF" : _ref$ariaLabel;
56
+ var layoutPlugin = React.useMemo(function () {
57
+ return defaultLayoutPlugin();
58
+ }, []);
59
+ var src = fileUrl !== null && fileUrl !== void 0 ? fileUrl : base64 ? "data:application/pdf;base64,".concat(base64) : undefined;
60
+ var body;
61
+ if (loading) {
62
+ body = /*#__PURE__*/_jsx(Box, {
63
+ sx: {
64
+ display: "grid",
65
+ placeItems: "center",
66
+ minHeight: 200,
67
+ width: "100%"
68
+ },
69
+ children: /*#__PURE__*/_jsx(Spinner, {})
70
+ });
71
+ } else if (error) {
72
+ body = /*#__PURE__*/_jsx(Banner, {
73
+ variant: "error",
74
+ title: errorTitle,
75
+ children: error
76
+ });
77
+ } else if (!src) {
78
+ body = /*#__PURE__*/_jsx(Banner, {
79
+ variant: "info",
80
+ children: emptyLabel
81
+ });
82
+ } else {
83
+ body = /*#__PURE__*/_jsx(Worker, {
84
+ workerUrl: workerUrl,
85
+ children: /*#__PURE__*/_jsx(Box, {
86
+ sx: {
87
+ border: "1px solid var(--border)",
88
+ borderRadius: "var(--r-md)",
89
+ height: height,
90
+ width: "100%"
91
+ },
92
+ children: /*#__PURE__*/_jsx(Viewer, {
93
+ fileUrl: src,
94
+ plugins: [layoutPlugin],
95
+ defaultScale: defaultScale,
96
+ renderLoader: function renderLoader(percentages) {
97
+ return /*#__PURE__*/_jsx(Box, {
98
+ sx: {
99
+ width: 240
100
+ },
101
+ children: /*#__PURE__*/_jsx(ProgressBar, {
102
+ progress: Math.round(percentages)
103
+ })
104
+ });
105
+ }
106
+ })
107
+ })
108
+ });
109
+ }
110
+ return /*#__PURE__*/_jsx(Box, {
111
+ role: "region",
112
+ "aria-label": ariaLabel,
113
+ sx: {
114
+ display: "flex",
115
+ justifyContent: "center",
116
+ width: "100%"
117
+ },
118
+ children: body
119
+ });
120
+ }
121
+ export default PdfViewer;
122
+ //# sourceMappingURL=PdfViewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PdfViewer.js","names":["React","Box","Viewer","Worker","ProgressBar","defaultLayoutPlugin","Spinner","Banner","jsx","_jsx","PdfViewer","_ref","fileUrl","base64","workerUrl","_ref$loading","loading","error","_ref$errorTitle","errorTitle","_ref$emptyLabel","emptyLabel","_ref$height","height","_ref$defaultScale","defaultScale","_ref$ariaLabel","ariaLabel","layoutPlugin","useMemo","src","concat","undefined","body","sx","display","placeItems","minHeight","width","children","variant","title","border","borderRadius","plugins","renderLoader","percentages","progress","Math","round","role","justifyContent"],"sources":["../../../../src/lib/v2/components/PdfViewer.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { Viewer, Worker, ProgressBar } from \"@react-pdf-viewer/core\";\r\nimport { defaultLayoutPlugin } from \"@react-pdf-viewer/default-layout\";\r\nimport Spinner from \"./Spinner\";\r\nimport Banner from \"./Banner\";\r\n\r\nimport \"@react-pdf-viewer/core/lib/styles/index.css\";\r\nimport \"@react-pdf-viewer/default-layout/lib/styles/index.css\";\r\n\r\n/**\r\n * PdfViewer — Portnet UI v2\r\n *\r\n * Charter §07 · document viewing / §04.4 · loading & empty states.\r\n *\r\n * Presentational, store- and router-agnostic wrapper over @react-pdf-viewer\r\n * (pdf.js). The HOST owns fetching: pass a ready `fileUrl` (http(s) or `data:`\r\n * URL) OR a raw `base64` payload, plus the externally-controlled `loading` /\r\n * `error` flags and the pdf.js `workerUrl`. No redux, no dispatch, no config\r\n * import — that is exactly what lets it live in the shared library.\r\n *\r\n * <PdfViewer\r\n * base64={pdf}\r\n * loading={isLoading}\r\n * error={failed && \"Le document n'a pas pu être chargé.\"}\r\n * workerUrl={cfg.pdfWorkerUrl}\r\n * />\r\n *\r\n * State precedence: loading → error → (no source) → viewer.\r\n * - loading → v2.Spinner (charter §04.4: no ad-hoc CircularProgress).\r\n * - error → v2.Banner variant=\"error\" (R-A.2 alert semantics).\r\n * - no src → v2.Banner variant=\"info\" (empty).\r\n *\r\n * Dependency note (RFC): pulls @react-pdf-viewer/core,\r\n * @react-pdf-viewer/default-layout and pdfjs-dist. Declared as OPTIONAL peer\r\n * dependencies — only PDF-consuming modules install them, so there is no\r\n * bundle cost for the rest of the platform.\r\n */\r\n\r\nexport interface PdfViewerProps {\r\n /** Full URL or `data:` URL of the PDF. Takes precedence over `base64`. */\r\n fileUrl?: string | undefined;\r\n /** Raw base64 PDF payload (without the `data:application/pdf;base64,` prefix). */\r\n base64?: string | undefined;\r\n /** pdf.js worker URL — host-provided (e.g. from runtime config). */\r\n workerUrl: string;\r\n /** Show the loading spinner instead of the viewer. */\r\n loading?: boolean | undefined;\r\n /** When truthy, shows an error Banner (this node is the message) instead of the viewer. */\r\n error?: React.ReactNode | undefined;\r\n /** Error banner title. Default \"Échec du chargement du document\". */\r\n errorTitle?: React.ReactNode | undefined;\r\n /** Message shown when there is no source and no loading/error. */\r\n emptyLabel?: React.ReactNode | undefined;\r\n /** Viewer container height. Default \"75vh\". */\r\n height?: number | string | undefined;\r\n /** Initial zoom. Default 0.95. */\r\n defaultScale?: number | undefined;\r\n /** Accessible label for the viewer region. Default \"Document PDF\". */\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\nfunction PdfViewer({\r\n fileUrl,\r\n base64,\r\n workerUrl,\r\n loading = false,\r\n error,\r\n errorTitle = \"Échec du chargement du document\",\r\n emptyLabel = \"Aucun document à afficher.\",\r\n height = \"75vh\",\r\n defaultScale = 0.95,\r\n ariaLabel = \"Document PDF\",\r\n}: PdfViewerProps) {\r\n const layoutPlugin = React.useMemo(() => defaultLayoutPlugin(), []);\r\n const src = fileUrl ?? (base64 ? `data:application/pdf;base64,${base64}` : undefined);\r\n\r\n let body: React.ReactNode;\r\n if (loading) {\r\n body = (\r\n <Box sx={{ display: \"grid\", placeItems: \"center\", minHeight: 200, width: \"100%\" }}>\r\n <Spinner />\r\n </Box>\r\n );\r\n } else if (error) {\r\n body = (\r\n <Banner variant=\"error\" title={errorTitle}>\r\n {error}\r\n </Banner>\r\n );\r\n } else if (!src) {\r\n body = <Banner variant=\"info\">{emptyLabel}</Banner>;\r\n } else {\r\n body = (\r\n <Worker workerUrl={workerUrl}>\r\n <Box\r\n sx={{\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n height,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Viewer\r\n fileUrl={src}\r\n plugins={[layoutPlugin]}\r\n defaultScale={defaultScale}\r\n renderLoader={(percentages: number) => (\r\n <Box sx={{ width: 240 }}>\r\n <ProgressBar progress={Math.round(percentages)} />\r\n </Box>\r\n )}\r\n />\r\n </Box>\r\n </Worker>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n role=\"region\"\r\n aria-label={ariaLabel}\r\n sx={{ display: \"flex\", justifyContent: \"center\", width: \"100%\" }}\r\n >\r\n {body}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default PdfViewer;\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,202 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
+ import * as React from "react";
8
+ import Box from "@mui/material/Box";
9
+
10
+ /**
11
+ * ProgressBar — Portnet UI v2
12
+ *
13
+ * Charter §03 · Component "ProgressBar". Determinate or indeterminate
14
+ * progress indicator for chunked operations (uploads, batch jobs,
15
+ * long-running form steps) where a Skeleton is not appropriate.
16
+ *
17
+ * R-Sk usage rule (charter §03 Skeleton): "Use ProgressBar (not
18
+ * skeleton) for operations whose duration is known and where the user
19
+ * benefits from a percentage signal — e.g. file uploads, batch
20
+ * exports, multi-step ingestion."
21
+ *
22
+ * a11y:
23
+ * - role="progressbar"
24
+ * - Determinate: aria-valuenow / aria-valuemin / aria-valuemax (charter R-Ar)
25
+ * - Indeterminate: aria-valuenow OMITTED (WAI-ARIA convention)
26
+ * - aria-label or aria-labelledby (caller responsibility — provide one)
27
+ * - aria-describedby wires the `helper` text into the AT tree so SR
28
+ * users hear the qualitative context ("3 sur 6 fichiers traités")
29
+ * alongside the quantitative one ("42 %"). Audit Batch 5 / B5-2.
30
+ *
31
+ * Examples:
32
+ *
33
+ * <ProgressBar value={42} aria-label="Téléversement en cours" />
34
+ *
35
+ * <ProgressBar value={87} variant="success" showLabel
36
+ * aria-label="Indexation des documents" />
37
+ *
38
+ * <ProgressBar indeterminate aria-label="Connexion au serveur" />
39
+ *
40
+ * <ProgressBar value={50} size="lg" variant="warning"
41
+ * label="Synchronisation BAM"
42
+ * helper="3 sur 6 fichiers traités" />
43
+ */
44
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
45
+ var VARIANT_COLOR = {
46
+ primary: "var(--accent)",
47
+ success: "var(--success)",
48
+ warning: "var(--warning)",
49
+ danger: "var(--danger)"
50
+ };
51
+ var SIZE_HEIGHT = {
52
+ sm: 4,
53
+ md: 6,
54
+ lg: 8
55
+ };
56
+ function ProgressBar(_ref) {
57
+ var value = _ref.value,
58
+ _ref$indeterminate = _ref.indeterminate,
59
+ indeterminate = _ref$indeterminate === void 0 ? false : _ref$indeterminate,
60
+ _ref$variant = _ref.variant,
61
+ variant = _ref$variant === void 0 ? "primary" : _ref$variant,
62
+ _ref$size = _ref.size,
63
+ size = _ref$size === void 0 ? "md" : _ref$size,
64
+ label = _ref.label,
65
+ helper = _ref.helper,
66
+ _ref$showLabel = _ref.showLabel,
67
+ showLabel = _ref$showLabel === void 0 ? false : _ref$showLabel,
68
+ ariaLabel = _ref["aria-label"],
69
+ ariaLabelledBy = _ref["aria-labelledby"],
70
+ sx = _ref.sx;
71
+ // Defensive clamp: callers occasionally pass over-range values (e.g. 102%
72
+ // from rounding). Charter forbids surprising the user — clamp instead of
73
+ // overflowing the track visually.
74
+ var isDet = !indeterminate && value != null;
75
+ var clamped = isDet ? Math.max(0, Math.min(100, Number(value) || 0)) : 0;
76
+ var fill = VARIANT_COLOR[variant] || VARIANT_COLOR.primary;
77
+ var height = SIZE_HEIGHT[size] || SIZE_HEIGHT.md;
78
+ if (process.env["NODE_ENV"] !== "production" && !ariaLabel && !ariaLabelledBy && !label) {
79
+ // eslint-disable-next-line no-console
80
+ console.warn("[@portnet/ui v2] <ProgressBar> requires aria-label, aria-labelledby, or a `label` prop for screen readers.");
81
+ }
82
+
83
+ // If an inline `label` is rendered we wire aria-labelledby internally
84
+ // so the caller doesn't have to manage the id themselves.
85
+ // If `helper` is rendered, wire it via aria-describedby on the
86
+ // progressbar so the qualitative context reaches AT. Audit Batch 5.
87
+ var reactId = React.useId();
88
+ var labelId = label ? "".concat(reactId, "-lbl") : undefined;
89
+ var helperId = helper ? "".concat(reactId, "-hlp") : undefined;
90
+ var effectiveLabelledBy = ariaLabelledBy || labelId;
91
+ return /*#__PURE__*/_jsxs(Box, {
92
+ sx: _objectSpread({
93
+ width: "100%"
94
+ }, sx),
95
+ children: [(label || isDet && showLabel) && /*#__PURE__*/_jsxs(Box, {
96
+ sx: {
97
+ display: "flex",
98
+ alignItems: "baseline",
99
+ justifyContent: "space-between",
100
+ gap: 1,
101
+ marginBottom: 0.5
102
+ },
103
+ children: [label && /*#__PURE__*/_jsx(Box, {
104
+ id: labelId,
105
+ component: "span",
106
+ sx: {
107
+ fontSize: "var(--text-sm)",
108
+ fontWeight: "var(--fw-semibold)",
109
+ color: "var(--fg)",
110
+ lineHeight: "var(--lh-snug)"
111
+ },
112
+ children: label
113
+ }), isDet && showLabel && /*#__PURE__*/_jsxs(Box, {
114
+ component: "span",
115
+ "aria-hidden": "true",
116
+ sx: {
117
+ fontSize: "var(--text-xs)",
118
+ fontWeight: "var(--fw-semibold)",
119
+ color: "var(--fg-muted)",
120
+ fontVariantNumeric: "tabular-nums",
121
+ marginLeft: "auto"
122
+ },
123
+ children: [Math.round(clamped), "%"]
124
+ })]
125
+ }), /*#__PURE__*/_jsx(Box, {
126
+ role: "progressbar",
127
+ "aria-label": ariaLabel,
128
+ "aria-labelledby": effectiveLabelledBy,
129
+ "aria-describedby": helperId,
130
+ "aria-valuemin": isDet ? 0 : undefined,
131
+ "aria-valuemax": isDet ? 100 : undefined,
132
+ "aria-valuenow": isDet ? Math.round(clamped) : undefined,
133
+ sx: {
134
+ position: "relative",
135
+ width: "100%",
136
+ height: height,
137
+ borderRadius: "var(--r-full)",
138
+ background: "var(--bg-subtle)",
139
+ overflow: "hidden"
140
+ },
141
+ children: isDet ? /*#__PURE__*/_jsx(Box, {
142
+ "aria-hidden": "true",
143
+ sx: {
144
+ height: "100%",
145
+ width: "".concat(clamped, "%"),
146
+ background: fill,
147
+ borderRadius: "inherit",
148
+ transition: "width var(--duration-base, 180ms) var(--easing-out, cubic-bezier(.2,.8,.2,1))"
149
+ }
150
+ }) : /*#__PURE__*/_jsx(Box, {
151
+ "aria-hidden": "true",
152
+ sx: {
153
+ position: "absolute",
154
+ inset: 0,
155
+ "&::before": {
156
+ content: '""',
157
+ position: "absolute",
158
+ top: 0,
159
+ bottom: 0,
160
+ // R-Mi.3 / perf — bar parked at left:0 and swept via a
161
+ // composited transform instead of animating `left` (which
162
+ // reflows every frame). translateX is relative to the bar's
163
+ // OWN width (40% of the track), so -100% parks it just off
164
+ // the start edge (== old left:-40%) and 250% (= 250% × 40%
165
+ // = 100% of the track) drives it off the far end (== old
166
+ // left:100%) — same sweep, zero layout.
167
+ left: 0,
168
+ width: "40%",
169
+ background: fill,
170
+ borderRadius: "inherit",
171
+ willChange: "transform",
172
+ animation: "pui-progressbar-indeterminate 1.4s ease-in-out infinite"
173
+ },
174
+ "@keyframes pui-progressbar-indeterminate": {
175
+ "0%": {
176
+ transform: "translateX(-100%)"
177
+ },
178
+ "60%": {
179
+ transform: "translateX(250%)"
180
+ },
181
+ "100%": {
182
+ transform: "translateX(250%)"
183
+ }
184
+ }
185
+ // The global prefers-reduced-motion rule in base.css already
186
+ // suppresses animations; nothing extra needed here.
187
+ }
188
+ })
189
+ }), helper && /*#__PURE__*/_jsx(Box, {
190
+ id: helperId,
191
+ sx: {
192
+ marginTop: 0.5,
193
+ fontSize: "var(--text-xs)",
194
+ color: "var(--fg-subtle)",
195
+ lineHeight: "var(--lh-normal)"
196
+ },
197
+ children: helper
198
+ })]
199
+ });
200
+ }
201
+ export default ProgressBar;
202
+ //# sourceMappingURL=ProgressBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProgressBar.js","names":["React","Box","jsx","_jsx","jsxs","_jsxs","VARIANT_COLOR","primary","success","warning","danger","SIZE_HEIGHT","sm","md","lg","ProgressBar","_ref","value","_ref$indeterminate","indeterminate","_ref$variant","variant","_ref$size","size","label","helper","_ref$showLabel","showLabel","ariaLabel","ariaLabelledBy","sx","isDet","clamped","Math","max","min","Number","fill","height","process","env","console","warn","reactId","useId","labelId","concat","undefined","helperId","effectiveLabelledBy","_objectSpread","width","children","display","alignItems","justifyContent","gap","marginBottom","id","component","fontSize","fontWeight","color","lineHeight","fontVariantNumeric","marginLeft","round","role","position","borderRadius","background","overflow","transition","inset","content","top","bottom","left","willChange","animation","transform","marginTop"],"sources":["../../../../src/lib/v2/components/ProgressBar.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * ProgressBar — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"ProgressBar\". Determinate or indeterminate\r\n * progress indicator for chunked operations (uploads, batch jobs,\r\n * long-running form steps) where a Skeleton is not appropriate.\r\n *\r\n * R-Sk usage rule (charter §03 Skeleton): \"Use ProgressBar (not\r\n * skeleton) for operations whose duration is known and where the user\r\n * benefits from a percentage signal — e.g. file uploads, batch\r\n * exports, multi-step ingestion.\"\r\n *\r\n * a11y:\r\n * - role=\"progressbar\"\r\n * - Determinate: aria-valuenow / aria-valuemin / aria-valuemax (charter R-Ar)\r\n * - Indeterminate: aria-valuenow OMITTED (WAI-ARIA convention)\r\n * - aria-label or aria-labelledby (caller responsibility — provide one)\r\n * - aria-describedby wires the `helper` text into the AT tree so SR\r\n * users hear the qualitative context (\"3 sur 6 fichiers traités\")\r\n * alongside the quantitative one (\"42 %\"). Audit Batch 5 / B5-2.\r\n *\r\n * Examples:\r\n *\r\n * <ProgressBar value={42} aria-label=\"Téléversement en cours\" />\r\n *\r\n * <ProgressBar value={87} variant=\"success\" showLabel\r\n * aria-label=\"Indexation des documents\" />\r\n *\r\n * <ProgressBar indeterminate aria-label=\"Connexion au serveur\" />\r\n *\r\n * <ProgressBar value={50} size=\"lg\" variant=\"warning\"\r\n * label=\"Synchronisation BAM\"\r\n * helper=\"3 sur 6 fichiers traités\" />\r\n */\r\n\r\nexport type ProgressBarVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\r\nexport type ProgressBarSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nconst VARIANT_COLOR: Record<ProgressBarVariant, string> = {\r\n primary: \"var(--accent)\",\r\n success: \"var(--success)\",\r\n warning: \"var(--warning)\",\r\n danger: \"var(--danger)\",\r\n};\r\n\r\nconst SIZE_HEIGHT: Record<ProgressBarSize, number> = { sm: 4, md: 6, lg: 8 };\r\n\r\nexport interface ProgressBarProps {\r\n value?: number | undefined;\r\n indeterminate?: boolean | undefined;\r\n variant?: ProgressBarVariant | undefined;\r\n size?: ProgressBarSize | undefined;\r\n label?: React.ReactNode | undefined;\r\n helper?: React.ReactNode | undefined;\r\n showLabel?: boolean | undefined;\r\n \"aria-label\"?: string | undefined;\r\n \"aria-labelledby\"?: string | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction ProgressBar({\r\n value,\r\n indeterminate = false,\r\n variant = \"primary\",\r\n size = \"md\",\r\n label,\r\n helper,\r\n showLabel = false,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n sx,\r\n}: ProgressBarProps) {\r\n // Defensive clamp: callers occasionally pass over-range values (e.g. 102%\r\n // from rounding). Charter forbids surprising the user — clamp instead of\r\n // overflowing the track visually.\r\n const isDet = !indeterminate && value != null;\r\n const clamped = isDet ? Math.max(0, Math.min(100, Number(value) || 0)) : 0;\r\n const fill = VARIANT_COLOR[variant] || VARIANT_COLOR.primary;\r\n const height = SIZE_HEIGHT[size] || SIZE_HEIGHT.md;\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !ariaLabel && !ariaLabelledBy && !label) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <ProgressBar> requires aria-label, aria-labelledby, or a `label` prop for screen readers.\"\r\n );\r\n }\r\n\r\n // If an inline `label` is rendered we wire aria-labelledby internally\r\n // so the caller doesn't have to manage the id themselves.\r\n // If `helper` is rendered, wire it via aria-describedby on the\r\n // progressbar so the qualitative context reaches AT. Audit Batch 5.\r\n const reactId = React.useId();\r\n const labelId = label ? `${reactId}-lbl` : undefined;\r\n const helperId = helper ? `${reactId}-hlp` : undefined;\r\n const effectiveLabelledBy = ariaLabelledBy || labelId;\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", ...sx }}>\r\n {(label || (isDet && showLabel)) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"space-between\",\r\n gap: 1,\r\n marginBottom: 0.5,\r\n }}\r\n >\r\n {label && (\r\n <Box\r\n id={labelId}\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n )}\r\n {isDet && showLabel && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n marginLeft: \"auto\",\r\n }}\r\n >\r\n {Math.round(clamped)}%\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box\r\n role=\"progressbar\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={effectiveLabelledBy}\r\n aria-describedby={helperId}\r\n aria-valuemin={isDet ? 0 : undefined}\r\n aria-valuemax={isDet ? 100 : undefined}\r\n aria-valuenow={isDet ? Math.round(clamped) : undefined}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height,\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--bg-subtle)\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {isDet ? (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n height: \"100%\",\r\n width: `${clamped}%`,\r\n background: fill,\r\n borderRadius: \"inherit\",\r\n transition:\r\n \"width var(--duration-base, 180ms) var(--easing-out, cubic-bezier(.2,.8,.2,1))\",\r\n }}\r\n />\r\n ) : (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n // R-Mi.3 / perf — bar parked at left:0 and swept via a\r\n // composited transform instead of animating `left` (which\r\n // reflows every frame). translateX is relative to the bar's\r\n // OWN width (40% of the track), so -100% parks it just off\r\n // the start edge (== old left:-40%) and 250% (= 250% × 40%\r\n // = 100% of the track) drives it off the far end (== old\r\n // left:100%) — same sweep, zero layout.\r\n left: 0,\r\n width: \"40%\",\r\n background: fill,\r\n borderRadius: \"inherit\",\r\n willChange: \"transform\",\r\n animation: \"pui-progressbar-indeterminate 1.4s ease-in-out infinite\",\r\n },\r\n \"@keyframes pui-progressbar-indeterminate\": {\r\n \"0%\": { transform: \"translateX(-100%)\" },\r\n \"60%\": { transform: \"translateX(250%)\" },\r\n \"100%\": { transform: \"translateX(250%)\" },\r\n },\r\n // The global prefers-reduced-motion rule in base.css already\r\n // suppresses animations; nothing extra needed here.\r\n }}\r\n />\r\n )}\r\n </Box>\r\n\r\n {helper && (\r\n <Box\r\n id={helperId}\r\n sx={{\r\n marginTop: 0.5,\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n }}\r\n >\r\n {helper}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ProgressBar;\r\n"],"mappings":"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","ignoreList":[]}