@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.
- package/dist/esm/index.js +196 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +144 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +333 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/esm/v2/__tests__/apiError.test.js +181 -0
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +147 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +230 -0
- package/dist/esm/v2/components/Accordion.js.map +1 -0
- package/dist/esm/v2/components/ActionStrip.js +146 -0
- package/dist/esm/v2/components/ActionStrip.js.map +1 -0
- package/dist/esm/v2/components/Banner.js +254 -0
- package/dist/esm/v2/components/Banner.js.map +1 -0
- package/dist/esm/v2/components/Busy.js +97 -0
- package/dist/esm/v2/components/Busy.js.map +1 -0
- package/dist/esm/v2/components/Button.js +114 -0
- package/dist/esm/v2/components/Button.js.map +1 -0
- package/dist/esm/v2/components/CategoryTag.js +81 -0
- package/dist/esm/v2/components/CategoryTag.js.map +1 -0
- package/dist/esm/v2/components/Checkbox.js +124 -0
- package/dist/esm/v2/components/Checkbox.js.map +1 -0
- package/dist/esm/v2/components/Chip.js +124 -0
- package/dist/esm/v2/components/Chip.js.map +1 -0
- package/dist/esm/v2/components/Combobox.js +394 -0
- package/dist/esm/v2/components/Combobox.js.map +1 -0
- package/dist/esm/v2/components/CommandPalette.js +660 -0
- package/dist/esm/v2/components/CommandPalette.js.map +1 -0
- package/dist/esm/v2/components/ConfirmDialog.js +144 -0
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/esm/v2/components/DatePicker.js +200 -0
- package/dist/esm/v2/components/DatePicker.js.map +1 -0
- package/dist/esm/v2/components/DateRangePicker.js +289 -0
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
- package/dist/esm/v2/components/DateTimePicker.js +182 -0
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
- package/dist/esm/v2/components/Drawer.js +333 -0
- package/dist/esm/v2/components/Drawer.js.map +1 -0
- package/dist/esm/v2/components/Dropzone.js +540 -0
- package/dist/esm/v2/components/Dropzone.js.map +1 -0
- package/dist/esm/v2/components/EmptyState.js +102 -0
- package/dist/esm/v2/components/EmptyState.js.map +1 -0
- package/dist/esm/v2/components/FavoriteToggle.js +127 -0
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/esm/v2/components/Field.js +197 -0
- package/dist/esm/v2/components/Field.js.map +1 -0
- package/dist/esm/v2/components/FieldError.js +124 -0
- package/dist/esm/v2/components/FieldError.js.map +1 -0
- package/dist/esm/v2/components/FieldHelp.js +202 -0
- package/dist/esm/v2/components/FieldHelp.js.map +1 -0
- package/dist/esm/v2/components/FileCard.js +162 -0
- package/dist/esm/v2/components/FileCard.js.map +1 -0
- package/dist/esm/v2/components/FilterTab.js +138 -0
- package/dist/esm/v2/components/FilterTab.js.map +1 -0
- package/dist/esm/v2/components/ForbiddenPage.js +74 -0
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/esm/v2/components/FormGrid.js +179 -0
- package/dist/esm/v2/components/FormGrid.js.map +1 -0
- package/dist/esm/v2/components/FormikDisplay.js +118 -0
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
- package/dist/esm/v2/components/Input.js +107 -0
- package/dist/esm/v2/components/Input.js.map +1 -0
- package/dist/esm/v2/components/KPICard.js +237 -0
- package/dist/esm/v2/components/KPICard.js.map +1 -0
- package/dist/esm/v2/components/KPIStrip.js +84 -0
- package/dist/esm/v2/components/KPIStrip.js.map +1 -0
- package/dist/esm/v2/components/KV.js +75 -0
- package/dist/esm/v2/components/KV.js.map +1 -0
- package/dist/esm/v2/components/KVGrid.js +74 -0
- package/dist/esm/v2/components/KVGrid.js.map +1 -0
- package/dist/esm/v2/components/Layout.js +284 -0
- package/dist/esm/v2/components/Layout.js.map +1 -0
- package/dist/esm/v2/components/MobileRowCard.js +314 -0
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
- package/dist/esm/v2/components/Modal.js +276 -0
- package/dist/esm/v2/components/Modal.js.map +1 -0
- package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/esm/v2/components/NotFoundPage.js +58 -0
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
- package/dist/esm/v2/components/NumberInput.js +309 -0
- package/dist/esm/v2/components/NumberInput.js.map +1 -0
- package/dist/esm/v2/components/OverflowMenu.js +184 -0
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
- package/dist/esm/v2/components/PdfViewer.js +122 -0
- package/dist/esm/v2/components/PdfViewer.js.map +1 -0
- package/dist/esm/v2/components/ProgressBar.js +202 -0
- package/dist/esm/v2/components/ProgressBar.js.map +1 -0
- package/dist/esm/v2/components/Radio.js +228 -0
- package/dist/esm/v2/components/Radio.js.map +1 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/esm/v2/components/SectionHeader.js +132 -0
- package/dist/esm/v2/components/SectionHeader.js.map +1 -0
- package/dist/esm/v2/components/Segmented.js +254 -0
- package/dist/esm/v2/components/Segmented.js.map +1 -0
- package/dist/esm/v2/components/Select.js +490 -0
- package/dist/esm/v2/components/Select.js.map +1 -0
- package/dist/esm/v2/components/ServerErrorPage.js +74 -0
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/esm/v2/components/Skeleton.js +269 -0
- package/dist/esm/v2/components/Skeleton.js.map +1 -0
- package/dist/esm/v2/components/SkipLink.js +49 -0
- package/dist/esm/v2/components/SkipLink.js.map +1 -0
- package/dist/esm/v2/components/Spinner.js +69 -0
- package/dist/esm/v2/components/Spinner.js.map +1 -0
- package/dist/esm/v2/components/Status.js +64 -0
- package/dist/esm/v2/components/Status.js.map +1 -0
- package/dist/esm/v2/components/Stepper.js +432 -0
- package/dist/esm/v2/components/Stepper.js.map +1 -0
- package/dist/esm/v2/components/Surface.js +159 -0
- package/dist/esm/v2/components/Surface.js.map +1 -0
- package/dist/esm/v2/components/Switch.js +128 -0
- package/dist/esm/v2/components/Switch.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +150 -0
- package/dist/esm/v2/components/Tabs.js.map +1 -0
- package/dist/esm/v2/components/TelInput.js +274 -0
- package/dist/esm/v2/components/TelInput.js.map +1 -0
- package/dist/esm/v2/components/Textarea.js +72 -0
- package/dist/esm/v2/components/Textarea.js.map +1 -0
- package/dist/esm/v2/components/TimePicker.js +134 -0
- package/dist/esm/v2/components/TimePicker.js.map +1 -0
- package/dist/esm/v2/components/Toast.js +376 -0
- package/dist/esm/v2/components/Toast.js.map +1 -0
- package/dist/esm/v2/components/Tooltip.js +161 -0
- package/dist/esm/v2/components/Tooltip.js.map +1 -0
- package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/esm/v2/components/_pickerShared.js +60 -0
- package/dist/esm/v2/components/_pickerShared.js.map +1 -0
- package/dist/esm/v2/components/index.js +244 -0
- package/dist/esm/v2/components/index.js.map +1 -0
- package/dist/esm/v2/hooks/index.js +10 -0
- package/dist/esm/v2/hooks/index.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/esm/v2/hooks/useDensity.js +119 -0
- package/dist/esm/v2/hooks/useDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useSortedRows.js +32 -0
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/esm/v2/hooks/useTabLoading.js +79 -0
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/esm/v2/index.js +121 -0
- package/dist/esm/v2/index.js.map +1 -0
- package/dist/esm/v2/modalContext.js +108 -0
- package/dist/esm/v2/modalContext.js.map +1 -0
- package/dist/esm/v2/models/favorite.js +2 -0
- package/dist/esm/v2/models/favorite.js.map +1 -0
- package/dist/esm/v2/models/index.js +12 -0
- package/dist/esm/v2/models/index.js.map +1 -0
- package/dist/esm/v2/models/personalization.js +2 -0
- package/dist/esm/v2/models/personalization.js.map +1 -0
- package/dist/esm/v2/models/referentiel.js +2 -0
- package/dist/esm/v2/models/referentiel.js.map +1 -0
- package/dist/esm/v2/models/savedFilter.js +2 -0
- package/dist/esm/v2/models/savedFilter.js.map +1 -0
- package/dist/esm/v2/patterns/ActionBar.js +603 -0
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/esm/v2/patterns/DataGrid.js +820 -0
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +164 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormPageShell.js +126 -0
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/FormSection.js +190 -0
- package/dist/esm/v2/patterns/FormSection.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCombobox.js +115 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +196 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +148 -0
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
- package/dist/esm/v2/patterns/FormikInput.js +127 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/FormikSelect.js +159 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +76 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +195 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/esm/v2/patterns/PageContent.js +62 -0
- package/dist/esm/v2/patterns/PageContent.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +615 -0
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/SortableHeader.js +179 -0
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/esm/v2/patterns/Tour.js +471 -0
- package/dist/esm/v2/patterns/Tour.js.map +1 -0
- package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +112 -0
- package/dist/esm/v2/patterns/_sort.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +95 -0
- package/dist/esm/v2/patterns/index.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/index.js +11 -0
- package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +17 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/esm/v2/personalization/index.js +46 -0
- package/dist/esm/v2/personalization/index.js.map +1 -0
- package/dist/esm/v2/personalization/personalizationContext.js +108 -0
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/esm/v2/personalization/schema.js +92 -0
- package/dist/esm/v2/personalization/schema.js.map +1 -0
- package/dist/esm/v2/personalization/types.js +2 -0
- package/dist/esm/v2/personalization/types.js.map +1 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/esm/v2/referentiel/index.js +15 -0
- package/dist/esm/v2/referentiel/index.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/esm/v2/styles/base.css +425 -0
- package/dist/esm/v2/styles/css.d.ts +10 -0
- package/dist/esm/v2/styles/index.js +12 -0
- package/dist/esm/v2/styles/index.js.map +1 -0
- package/dist/esm/v2/theme/_brand.js +64 -0
- package/dist/esm/v2/theme/_brand.js.map +1 -0
- package/dist/esm/v2/theme/_brandSecondary.js +60 -0
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/esm/v2/theme/cssVariables.js +198 -0
- package/dist/esm/v2/theme/cssVariables.js.map +1 -0
- package/dist/esm/v2/theme/index.js +32 -0
- package/dist/esm/v2/theme/index.js.map +1 -0
- package/dist/esm/v2/tokens/breakpoints.js +106 -0
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +219 -0
- package/dist/esm/v2/tokens/colors.js.map +1 -0
- package/dist/esm/v2/tokens/density.js +98 -0
- package/dist/esm/v2/tokens/density.js.map +1 -0
- package/dist/esm/v2/tokens/index.js +80 -0
- package/dist/esm/v2/tokens/index.js.map +1 -0
- package/dist/esm/v2/tokens/motion.js +88 -0
- package/dist/esm/v2/tokens/motion.js.map +1 -0
- package/dist/esm/v2/tokens/radius.js +22 -0
- package/dist/esm/v2/tokens/radius.js.map +1 -0
- package/dist/esm/v2/tokens/shadows.js +40 -0
- package/dist/esm/v2/tokens/shadows.js.map +1 -0
- package/dist/esm/v2/tokens/spacing.js +51 -0
- package/dist/esm/v2/tokens/spacing.js.map +1 -0
- package/dist/esm/v2/tokens/state.js +41 -0
- package/dist/esm/v2/tokens/state.js.map +1 -0
- package/dist/esm/v2/tokens/statusPalette.js +66 -0
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
- package/dist/esm/v2/tokens/tokens.json +153 -0
- package/dist/esm/v2/tokens/typography.js +149 -0
- package/dist/esm/v2/tokens/typography.js.map +1 -0
- package/dist/esm/v2/tokens/zIndex.js +44 -0
- package/dist/esm/v2/tokens/zIndex.js.map +1 -0
- package/dist/esm/v2/types/common.js +2 -0
- package/dist/esm/v2/types/common.js.map +1 -0
- package/dist/esm/v2/types/datagrid.js +2 -0
- package/dist/esm/v2/types/datagrid.js.map +1 -0
- package/dist/esm/v2/types/index.js +12 -0
- package/dist/esm/v2/types/index.js.map +1 -0
- package/dist/esm/v2/utils/apiError.js +281 -0
- package/dist/esm/v2/utils/apiError.js.map +1 -0
- package/dist/esm/v2/utils/contrast.js +157 -0
- package/dist/esm/v2/utils/contrast.js.map +1 -0
- package/dist/esm/v2/utils/cx.js +38 -0
- package/dist/esm/v2/utils/cx.js.map +1 -0
- package/dist/esm/v2/utils/fileDownload.js +226 -0
- package/dist/esm/v2/utils/fileDownload.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +78 -0
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
- package/dist/esm/v2/utils/index.js +43 -0
- package/dist/esm/v2/utils/index.js.map +1 -0
- package/dist/esm/v2/utils/mergeLabels.js +86 -0
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
- package/dist/esm/v2/utils/networkStatus.js +114 -0
- package/dist/esm/v2/utils/networkStatus.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/FieldError.test.js +164 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +148 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/components/Accordion.d.ts +6 -6
- package/dist/v2/components/Accordion.d.ts.map +1 -1
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.d.ts +12 -12
- package/dist/v2/components/ActionStrip.d.ts.map +1 -1
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.d.ts +48 -9
- package/dist/v2/components/Banner.d.ts.map +1 -1
- package/dist/v2/components/Banner.js +116 -35
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.d.ts +3 -3
- package/dist/v2/components/Busy.d.ts.map +1 -1
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.d.ts +6 -6
- package/dist/v2/components/Button.d.ts.map +1 -1
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts +3 -3
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.d.ts +11 -11
- package/dist/v2/components/Checkbox.d.ts.map +1 -1
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.d.ts +8 -8
- package/dist/v2/components/Chip.d.ts.map +1 -1
- package/dist/v2/components/Chip.js +2 -1
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.d.ts +27 -27
- package/dist/v2/components/Combobox.d.ts.map +1 -1
- package/dist/v2/components/Combobox.js +3 -2
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.d.ts +20 -20
- package/dist/v2/components/CommandPalette.d.ts.map +1 -1
- package/dist/v2/components/CommandPalette.js +2 -6
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.d.ts +13 -13
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +2 -1
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.d.ts +11 -11
- package/dist/v2/components/DatePicker.d.ts.map +1 -1
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.d.ts +16 -16
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
- package/dist/v2/components/DateRangePicker.js +2 -1
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts +11 -11
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts +18 -18
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +2 -1
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.d.ts +34 -34
- package/dist/v2/components/Dropzone.d.ts.map +1 -1
- package/dist/v2/components/Dropzone.js +11 -3
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.d.ts +7 -7
- package/dist/v2/components/EmptyState.d.ts.map +1 -1
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.d.ts +7 -7
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +2 -1
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +17 -12
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +25 -7
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.d.ts +78 -0
- package/dist/v2/components/FieldError.d.ts.map +1 -0
- package/dist/v2/components/FieldError.js +131 -0
- package/dist/v2/components/FieldError.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +7 -7
- package/dist/v2/components/FieldHelp.d.ts.map +1 -1
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.d.ts +75 -0
- package/dist/v2/components/FileCard.d.ts.map +1 -0
- package/dist/v2/components/FileCard.js +169 -0
- package/dist/v2/components/FileCard.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +9 -9
- package/dist/v2/components/FilterTab.d.ts.map +1 -1
- package/dist/v2/components/FilterTab.js +2 -1
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/FormGrid.d.ts +9 -4
- package/dist/v2/components/FormGrid.d.ts.map +1 -1
- package/dist/v2/components/FormGrid.js +11 -1
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +6 -6
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +6 -6
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.d.ts +43 -13
- package/dist/v2/components/KPICard.d.ts.map +1 -1
- package/dist/v2/components/KPICard.js +53 -14
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.d.ts +68 -0
- package/dist/v2/components/KPIStrip.d.ts.map +1 -0
- package/dist/v2/components/KPIStrip.js +92 -0
- package/dist/v2/components/KPIStrip.js.map +1 -0
- package/dist/v2/components/KV.d.ts +3 -3
- package/dist/v2/components/KV.d.ts.map +1 -1
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.d.ts +2 -2
- package/dist/v2/components/KVGrid.d.ts.map +1 -1
- package/dist/v2/components/KVGrid.js +8 -1
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.d.ts +7 -7
- package/dist/v2/components/Layout.d.ts.map +1 -1
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.d.ts +13 -13
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.d.ts +12 -12
- package/dist/v2/components/Modal.d.ts.map +1 -1
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NumberInput.d.ts +14 -14
- package/dist/v2/components/NumberInput.d.ts.map +1 -1
- package/dist/v2/components/NumberInput.js +7 -6
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.d.ts +14 -14
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
- package/dist/v2/components/OverflowMenu.js +4 -8
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.d.ts +9 -9
- package/dist/v2/components/PdfViewer.d.ts.map +1 -1
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.d.ts +10 -10
- package/dist/v2/components/ProgressBar.d.ts.map +1 -1
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.d.ts +7 -7
- package/dist/v2/components/Radio.d.ts.map +1 -1
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.js +221 -0
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +5 -5
- package/dist/v2/components/SectionHeader.d.ts.map +1 -1
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.d.ts +11 -11
- package/dist/v2/components/Segmented.d.ts.map +1 -1
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +33 -15
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +147 -30
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.d.ts +15 -15
- package/dist/v2/components/Skeleton.d.ts.map +1 -1
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.d.ts +2 -2
- package/dist/v2/components/SkipLink.d.ts.map +1 -1
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Status.d.ts +3 -3
- package/dist/v2/components/Status.d.ts.map +1 -1
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.d.ts +28 -22
- package/dist/v2/components/Stepper.d.ts.map +1 -1
- package/dist/v2/components/Stepper.js +31 -5
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.d.ts +94 -0
- package/dist/v2/components/Surface.d.ts.map +1 -0
- package/dist/v2/components/Surface.js +163 -0
- package/dist/v2/components/Surface.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +4 -4
- package/dist/v2/components/Switch.d.ts.map +1 -1
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/Tabs.d.ts +6 -6
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.d.ts +8 -8
- package/dist/v2/components/TelInput.d.ts.map +1 -1
- package/dist/v2/components/TelInput.js +18 -18
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.d.ts +1 -1
- package/dist/v2/components/Textarea.d.ts.map +1 -1
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.d.ts +11 -11
- package/dist/v2/components/TimePicker.d.ts.map +1 -1
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.d.ts +6 -6
- package/dist/v2/components/Toast.d.ts.map +1 -1
- package/dist/v2/components/Toast.js +9 -8
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.d.ts +1 -1
- package/dist/v2/components/Tooltip.d.ts.map +1 -1
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/index.d.ts +143 -0
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +35 -0
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +1 -1
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +13 -13
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +11 -11
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -8
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.d.ts +33 -33
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/ActionBar.js +2 -1
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/BulkActionBar.js +2 -1
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +4 -8
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +2 -1
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.d.ts +6 -6
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +2 -1
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.d.ts +4 -4
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +19 -8
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +106 -71
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +11 -11
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +36 -8
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +27 -1
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikFile.d.ts +8 -8
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +41 -6
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +49 -1
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +33 -12
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +28 -2
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +5 -5
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +7 -7
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +2 -6
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.d.ts +3 -3
- package/dist/v2/patterns/PageContent.d.ts.map +1 -1
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/ReferentielField.d.ts +49 -49
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +2 -1
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +9 -8
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.d.ts +12 -12
- package/dist/v2/patterns/Tour.d.ts.map +1 -1
- package/dist/v2/patterns/Tour.js +9 -8
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +37 -3
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/index.d.ts +27 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/schema.d.ts +2 -2
- package/dist/v2/personalization/schema.d.ts.map +1 -1
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/personalization/types.d.ts +19 -19
- package/dist/v2/personalization/types.d.ts.map +1 -1
- package/dist/v2/personalization/types.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +25 -1
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +59 -59
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/utils/apiError.d.ts +65 -4
- package/dist/v2/utils/apiError.d.ts.map +1 -1
- package/dist/v2/utils/apiError.js +69 -6
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/index.d.ts +1 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +7 -0
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.d.ts +59 -0
- package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
- package/dist/v2/utils/mergeLabels.js +93 -0
- package/dist/v2/utils/mergeLabels.js.map +1 -0
- package/package.json +23 -15
|
@@ -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":";;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;;AAGnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjCA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAsCA,IAAMC,aAAiD,GAAG;EACxDC,OAAO,EAAE,eAAe;EACxBC,OAAO,EAAE,gBAAgB;EACzBC,OAAO,EAAE,gBAAgB;EACzBC,MAAM,EAAG;AACX,CAAC;AAED,IAAMC,WAA4C,GAAG;EAAEC,EAAE,EAAE,CAAC;EAAEC,EAAE,EAAE,CAAC;EAAEC,EAAE,EAAE;AAAE,CAAC;AAe5E,SAASC,WAAWA,CAAAC,IAAA,EAWC;EAAA,IAVnBC,KAAK,GAAAD,IAAA,CAALC,KAAK;IAAAC,kBAAA,GAAAF,IAAA,CACLG,aAAa;IAAbA,aAAa,GAAAD,kBAAA,cAAG,KAAK,GAAAA,kBAAA;IAAAE,YAAA,GAAAJ,IAAA,CACrBK,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,SAAS,GAAAA,YAAA;IAAAE,SAAA,GAAAN,IAAA,CACnBO,IAAI;IAAJA,IAAI,GAAAD,SAAA,cAAG,IAAI,GAAAA,SAAA;IACXE,KAAK,GAAAR,IAAA,CAALQ,KAAK;IACLC,MAAM,GAAAT,IAAA,CAANS,MAAM;IAAAC,cAAA,GAAAV,IAAA,CACNW,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,KAAK,GAAAA,cAAA;IACHE,SAAS,GAAAZ,IAAA,CAAvB,YAAY;IACOa,cAAc,GAAAb,IAAA,CAAjC,iBAAiB;IACjBc,EAAE,GAAAd,IAAA,CAAFc,EAAE;EAEF;EACA;EACA;EACA,IAAMC,KAAK,GAAG,CAACZ,aAAa,IAAIF,KAAK,IAAI,IAAI;EAC7C,IAAMe,OAAO,GAAGD,KAAK,GAAGE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEC,MAAM,CAACnB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;EAC1E,IAAMoB,IAAI,GAAG/B,aAAa,CAACe,OAAO,CAAC,IAAIf,aAAa,CAACC,OAAO;EAC5D,IAAM+B,MAAM,GAAG3B,WAAW,CAACY,IAAI,CAAC,IAAIZ,WAAW,CAACE,EAAE;EAElD,IAAI0B,OAAO,CAACC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,IAAI,CAACZ,SAAS,IAAI,CAACC,cAAc,IAAI,CAACL,KAAK,EAAE;IACvF;IACAiB,OAAO,CAACC,IAAI,CACV,4GACF,CAAC;EACH;;EAEA;EACA;EACA;EACA;EACA,IAAMC,OAAO,GAAG3C,KAAK,CAAC4C,KAAK,CAAC,CAAC;EAC7B,IAAMC,OAAO,GAAGrB,KAAK,MAAAsB,MAAA,CAAMH,OAAO,YAASI,SAAS;EACpD,IAAMC,QAAQ,GAAGvB,MAAM,MAAAqB,MAAA,CAAMH,OAAO,YAASI,SAAS;EACtD,IAAME,mBAAmB,GAAGpB,cAAc,IAAIgB,OAAO;EAErD,oBACExC,KAAA,CAACJ,GAAG;IAAC6B,EAAE,EAAAoB,aAAA;MAAIC,KAAK,EAAE;IAAM,GAAKrB,EAAE,CAAG;IAAAsB,QAAA,GAC/B,CAAC5B,KAAK,IAAKO,KAAK,IAAIJ,SAAU,kBAC7BtB,KAAA,CAACJ,GAAG;MACF6B,EAAE,EAAE;QACFuB,OAAO,EAAE,MAAM;QACfC,UAAU,EAAE,UAAU;QACtBC,cAAc,EAAE,eAAe;QAC/BC,GAAG,EAAE,CAAC;QACNC,YAAY,EAAE;MAChB,CAAE;MAAAL,QAAA,GAED5B,KAAK,iBACJrB,IAAA,CAACF,GAAG;QACFyD,EAAE,EAAEb,OAAQ;QACZc,SAAS,EAAC,MAAM;QAChB7B,EAAE,EAAE;UACF8B,QAAQ,EAAE,gBAAgB;UAC1BC,UAAU,EAAE,oBAAoB;UAChCC,KAAK,EAAE,WAAW;UAClBC,UAAU,EAAE;QACd,CAAE;QAAAX,QAAA,EAED5B;MAAK,CACH,CACN,EACAO,KAAK,IAAIJ,SAAS,iBACjBtB,KAAA,CAACJ,GAAG;QACF0D,SAAS,EAAC,MAAM;QAChB,eAAY,MAAM;QAClB7B,EAAE,EAAE;UACF8B,QAAQ,EAAE,gBAAgB;UAC1BC,UAAU,EAAE,oBAAoB;UAChCC,KAAK,EAAE,iBAAiB;UACxBE,kBAAkB,EAAE,cAAc;UAClCC,UAAU,EAAE;QACd,CAAE;QAAAb,QAAA,GAEDnB,IAAI,CAACiC,KAAK,CAAClC,OAAO,CAAC,EAAC,GACvB;MAAA,CAAK,CACN;IAAA,CACE,CACN,eAED7B,IAAA,CAACF,GAAG;MACFkE,IAAI,EAAC,aAAa;MAClB,cAAYvC,SAAU;MACtB,mBAAiBqB,mBAAoB;MACrC,oBAAkBD,QAAS;MAC3B,iBAAejB,KAAK,GAAG,CAAC,GAAGgB,SAAU;MACrC,iBAAehB,KAAK,GAAG,GAAG,GAAGgB,SAAU;MACvC,iBAAehB,KAAK,GAAGE,IAAI,CAACiC,KAAK,CAAClC,OAAO,CAAC,GAAGe,SAAU;MACvDjB,EAAE,EAAE;QACFsC,QAAQ,EAAE,UAAU;QACpBjB,KAAK,EAAE,MAAM;QACbb,MAAM,EAANA,MAAM;QACN+B,YAAY,EAAE,eAAe;QAC7BC,UAAU,EAAE,kBAAkB;QAC9BC,QAAQ,EAAE;MACZ,CAAE;MAAAnB,QAAA,EAEDrB,KAAK,gBACJ5B,IAAA,CAACF,GAAG;QACF,eAAY,MAAM;QAClB6B,EAAE,EAAE;UACFQ,MAAM,EAAE,MAAM;UACda,KAAK,KAAAL,MAAA,CAAKd,OAAO,MAAG;UACpBsC,UAAU,EAAEjC,IAAI;UAChBgC,YAAY,EAAE,SAAS;UACvBG,UAAU,EACR;QACJ;MAAE,CACH,CAAC,gBAEFrE,IAAA,CAACF,GAAG;QACF,eAAY,MAAM;QAClB6B,EAAE,EAAE;UACFsC,QAAQ,EAAE,UAAU;UACpBK,KAAK,EAAE,CAAC;UACR,WAAW,EAAE;YACXC,OAAO,EAAE,IAAI;YACbN,QAAQ,EAAE,UAAU;YACpBO,GAAG,EAAE,CAAC;YACNC,MAAM,EAAE,CAAC;YACT;YACA;YACA;YACA;YACA;YACA;YACA;YACAC,IAAI,EAAE,CAAC;YACP1B,KAAK,EAAE,KAAK;YACZmB,UAAU,EAAEjC,IAAI;YAChBgC,YAAY,EAAE,SAAS;YACvBS,UAAU,EAAE,WAAW;YACvBC,SAAS,EAAE;UACb,CAAC;UACD,0CAA0C,EAAE;YAC1C,IAAI,EAAI;cAAEC,SAAS,EAAE;YAAoB,CAAC;YAC1C,KAAK,EAAG;cAAEA,SAAS,EAAE;YAAmB,CAAC;YACzC,MAAM,EAAE;cAAEA,SAAS,EAAE;YAAmB;UAC1C;UACA;UACA;QACF;MAAE,CACH;IACF,CACE,CAAC,EAELvD,MAAM,iBACLtB,IAAA,CAACF,GAAG;MACFyD,EAAE,EAAEV,QAAS;MACblB,EAAE,EAAE;QACFmD,SAAS,EAAE,GAAG;QACdrB,QAAQ,EAAE,gBAAgB;QAC1BE,KAAK,EAAE,kBAAkB;QACzBC,UAAU,EAAE;MACd,CAAE;MAAAX,QAAA,EAED3B;IAAM,CACJ,CACN;EAAA,CACE,CAAC;AAEV;AAEA,eAAeV,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
var _excluded = ["checked", "onChange", "label", "value", "disabled", "inputProps", "sx"],
|
|
2
|
+
_excluded2 = ["value", "onChange", "options", "row", "disabled", "name", "id", "sx"],
|
|
3
|
+
_excluded3 = ["error", "fullWidth"];
|
|
4
|
+
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); }
|
|
5
|
+
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; }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
9
|
+
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); }
|
|
10
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
11
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
12
|
+
import * as React from "react";
|
|
13
|
+
import MuiRadio from "@mui/material/Radio";
|
|
14
|
+
import MuiRadioGroup from "@mui/material/RadioGroup";
|
|
15
|
+
import FormControlLabel from "@mui/material/FormControlLabel";
|
|
16
|
+
import Box from "@mui/material/Box";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Radio - Portnet UI v2
|
|
20
|
+
*
|
|
21
|
+
* Charter §03 · Component "Radio". Required by R-Sel.2 (2-3 options
|
|
22
|
+
* -> Radio or Segmented).
|
|
23
|
+
*
|
|
24
|
+
* Low-level: a single controlled radio. For typical usage, prefer
|
|
25
|
+
* <RadioGroup options={...}> below.
|
|
26
|
+
*
|
|
27
|
+
* <Radio checked={v === "a"} onChange={() => setV("a")} label="Option A" value="a" />
|
|
28
|
+
*
|
|
29
|
+
* MUI v9 surface notes (audit Batch 2 external):
|
|
30
|
+
* The public `inputProps` is routed internally to slotProps.input -
|
|
31
|
+
* MUI v9 idiomatic location for native <input type="radio"/> attributes.
|
|
32
|
+
* `inputProps` was deprecated in v6 and REMOVED in v9, so it is no longer
|
|
33
|
+
* inherited from MuiRadioProps and must be re-declared here. Consumer code
|
|
34
|
+
* passing `inputProps={...}` to v2.Radio is unchanged.
|
|
35
|
+
*/
|
|
36
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
37
|
+
export var Radio = /*#__PURE__*/React.forwardRef(function Radio(_ref, ref) {
|
|
38
|
+
var checked = _ref.checked,
|
|
39
|
+
onChange = _ref.onChange,
|
|
40
|
+
label = _ref.label,
|
|
41
|
+
value = _ref.value,
|
|
42
|
+
disabled = _ref.disabled,
|
|
43
|
+
inputProps = _ref.inputProps,
|
|
44
|
+
sx = _ref.sx,
|
|
45
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
46
|
+
var radio = /*#__PURE__*/_jsx(MuiRadio, _objectSpread({
|
|
47
|
+
ref: ref,
|
|
48
|
+
checked: !!checked,
|
|
49
|
+
onChange: onChange,
|
|
50
|
+
value: value,
|
|
51
|
+
disabled: disabled,
|
|
52
|
+
size: "small"
|
|
53
|
+
// MUI v9: Radio inputProps -> slotProps.input (same migration class
|
|
54
|
+
// as Checkbox / Switch / NumberInput). Emitted conditionally so we
|
|
55
|
+
// don't pass `slotProps={{ input: undefined }}` when nothing is
|
|
56
|
+
// supplied.
|
|
57
|
+
,
|
|
58
|
+
slotProps: inputProps ? {
|
|
59
|
+
input: inputProps
|
|
60
|
+
} : undefined,
|
|
61
|
+
sx: _objectSpread({
|
|
62
|
+
padding: "6px",
|
|
63
|
+
"&:focus-visible": {
|
|
64
|
+
outline: "2px solid var(--accent)",
|
|
65
|
+
outlineOffset: "var(--pui-outline-offset)"
|
|
66
|
+
}
|
|
67
|
+
}, sx)
|
|
68
|
+
}, rest));
|
|
69
|
+
if (!label) return radio;
|
|
70
|
+
return /*#__PURE__*/_jsx(FormControlLabel, {
|
|
71
|
+
control: radio,
|
|
72
|
+
label: label,
|
|
73
|
+
value: value,
|
|
74
|
+
disabled: disabled,
|
|
75
|
+
sx: {
|
|
76
|
+
margin: 0,
|
|
77
|
+
"& .MuiFormControlLabel-label": {
|
|
78
|
+
fontSize: "var(--text-sm, 13px)"
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* RadioGroup - Portnet UI v2
|
|
86
|
+
*
|
|
87
|
+
* Declarative group of radios taking an `options` array. Use inside
|
|
88
|
+
* <Field> for label / hint / error / a11y wiring.
|
|
89
|
+
*
|
|
90
|
+
* <Field label="Type d'opération" required>
|
|
91
|
+
* <RadioGroup
|
|
92
|
+
* value={op}
|
|
93
|
+
* onChange={e => setOp(e.target.value)}
|
|
94
|
+
* options={[
|
|
95
|
+
* { value: "import", label: "Importation" },
|
|
96
|
+
* { value: "export", label: "Exportation" },
|
|
97
|
+
* { value: "transit", label: "Transit", helper: "Marchandises en transit douanier" },
|
|
98
|
+
* ]}
|
|
99
|
+
* />
|
|
100
|
+
* </Field>
|
|
101
|
+
*
|
|
102
|
+
* Layout:
|
|
103
|
+
* row={false} (default) -> vertical stack
|
|
104
|
+
* row={true} -> horizontal (use only when labels are short)
|
|
105
|
+
*
|
|
106
|
+
* A11y (audit Batch 5, finding B3-3):
|
|
107
|
+
* When an option carries a `helper` text, RadioGroup wires it
|
|
108
|
+
* to the inner radio input via aria-describedby - SR users hear
|
|
109
|
+
* the helper alongside the label when navigating. Without this
|
|
110
|
+
* link the helper is purely visual.
|
|
111
|
+
*
|
|
112
|
+
* A11y (audit Batch 19, RG-1):
|
|
113
|
+
* Used inside <Field>, Field cloneElement-injects presentational /
|
|
114
|
+
* validation props onto this group. `error` and `fullWidth` are not valid
|
|
115
|
+
* on the role="radiogroup" element (React emits "non-boolean / unrecognized
|
|
116
|
+
* attribute" warnings), so they are stripped before the spread. The aria-*
|
|
117
|
+
* (labelledby / describedby / invalid) and id that Field also injects stay
|
|
118
|
+
* valid on the group and are still forwarded.
|
|
119
|
+
*/
|
|
120
|
+
|
|
121
|
+
export function RadioGroup(_ref2) {
|
|
122
|
+
var value = _ref2.value,
|
|
123
|
+
onChange = _ref2.onChange,
|
|
124
|
+
_ref2$options = _ref2.options,
|
|
125
|
+
options = _ref2$options === void 0 ? [] : _ref2$options,
|
|
126
|
+
_ref2$row = _ref2.row,
|
|
127
|
+
row = _ref2$row === void 0 ? false : _ref2$row,
|
|
128
|
+
_ref2$disabled = _ref2.disabled,
|
|
129
|
+
disabled = _ref2$disabled === void 0 ? false : _ref2$disabled,
|
|
130
|
+
name = _ref2.name,
|
|
131
|
+
id = _ref2.id,
|
|
132
|
+
sx = _ref2.sx,
|
|
133
|
+
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
134
|
+
// R-Ar.1 - stable, SSR-safe, per-instance base for option helper ids.
|
|
135
|
+
// Each option that exposes a `helper` derives a deterministic id from
|
|
136
|
+
// this base + its index, so the inner <input type="radio">'s
|
|
137
|
+
// aria-describedby points at the right <Box> element.
|
|
138
|
+
var baseId = React.useId();
|
|
139
|
+
|
|
140
|
+
// RG-1 — Field cloneElement-injects presentational/validation props onto this
|
|
141
|
+
// child; `error` and `fullWidth` are not valid on the role="radiogroup"
|
|
142
|
+
// element and would trigger React attribute warnings if forwarded. Strip just
|
|
143
|
+
// those two (object-rest omit); the aria-* / id Field also injects remain in
|
|
144
|
+
// `domRest` and stay valid on the group. Cast because these injected props
|
|
145
|
+
// are not part of RadioGroupProps.
|
|
146
|
+
var _ref3 = rest,
|
|
147
|
+
_fieldError = _ref3.error,
|
|
148
|
+
_fieldFullWidth = _ref3.fullWidth,
|
|
149
|
+
domRest = _objectWithoutProperties(_ref3, _excluded3);
|
|
150
|
+
return /*#__PURE__*/_jsx(MuiRadioGroup, _objectSpread(_objectSpread({
|
|
151
|
+
value: value !== null && value !== void 0 ? value : "",
|
|
152
|
+
onChange: onChange,
|
|
153
|
+
row: row,
|
|
154
|
+
name: name,
|
|
155
|
+
id: id,
|
|
156
|
+
sx: _objectSpread({
|
|
157
|
+
gap: row ? 2 : 0.5
|
|
158
|
+
}, sx)
|
|
159
|
+
}, domRest), {}, {
|
|
160
|
+
children: options.map(function (opt, idx) {
|
|
161
|
+
var v = typeof opt === "string" ? opt : opt.value;
|
|
162
|
+
var lbl = typeof opt === "string" ? opt : opt.label;
|
|
163
|
+
var helper = typeof opt === "string" ? null : opt.helper;
|
|
164
|
+
var optDisabled = disabled || _typeof(opt) === "object" && opt.disabled;
|
|
165
|
+
// Per-option deterministic id. Uses the loop index so the
|
|
166
|
+
// value type (string, number, object) doesn't constrain the
|
|
167
|
+
// shape. Stable across renders for the same option list.
|
|
168
|
+
var helperId = helper ? "".concat(baseId, "-h-").concat(idx) : undefined;
|
|
169
|
+
var labelNode = helper ? /*#__PURE__*/_jsxs(Box, {
|
|
170
|
+
sx: {
|
|
171
|
+
display: "flex",
|
|
172
|
+
flexDirection: "column",
|
|
173
|
+
paddingY: 0.25
|
|
174
|
+
},
|
|
175
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
176
|
+
component: "span",
|
|
177
|
+
sx: {
|
|
178
|
+
fontSize: "var(--text-sm)",
|
|
179
|
+
color: "var(--fg)"
|
|
180
|
+
},
|
|
181
|
+
children: lbl
|
|
182
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
183
|
+
id: helperId,
|
|
184
|
+
component: "span",
|
|
185
|
+
sx: {
|
|
186
|
+
fontSize: "var(--text-xs)",
|
|
187
|
+
color: "var(--fg-subtle)"
|
|
188
|
+
},
|
|
189
|
+
children: helper
|
|
190
|
+
})]
|
|
191
|
+
}) : lbl;
|
|
192
|
+
return /*#__PURE__*/_jsx(FormControlLabel, {
|
|
193
|
+
value: v,
|
|
194
|
+
disabled: optDisabled,
|
|
195
|
+
control: /*#__PURE__*/_jsx(MuiRadio, {
|
|
196
|
+
size: "small"
|
|
197
|
+
// MUI v9: aria-describedby routed through slotProps.input
|
|
198
|
+
// to land on the inner <input type="radio">, not on the
|
|
199
|
+
// root span. SR users hear the helper as a description
|
|
200
|
+
// when focusing the radio.
|
|
201
|
+
,
|
|
202
|
+
slotProps: helperId ? {
|
|
203
|
+
input: {
|
|
204
|
+
"aria-describedby": helperId
|
|
205
|
+
}
|
|
206
|
+
} : undefined,
|
|
207
|
+
sx: {
|
|
208
|
+
padding: "6px",
|
|
209
|
+
"&:focus-visible": {
|
|
210
|
+
outline: "2px solid var(--accent)",
|
|
211
|
+
outlineOffset: "var(--pui-outline-offset)"
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}),
|
|
215
|
+
label: labelNode,
|
|
216
|
+
sx: {
|
|
217
|
+
margin: 0,
|
|
218
|
+
alignItems: helper ? "flex-start" : "center",
|
|
219
|
+
"& .MuiFormControlLabel-label": {
|
|
220
|
+
fontSize: "var(--text-sm)"
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}, v);
|
|
224
|
+
})
|
|
225
|
+
}));
|
|
226
|
+
}
|
|
227
|
+
export default Radio;
|
|
228
|
+
//# sourceMappingURL=Radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.js","names":["React","MuiRadio","MuiRadioGroup","FormControlLabel","Box","jsx","_jsx","jsxs","_jsxs","Radio","forwardRef","_ref","ref","checked","onChange","label","value","disabled","inputProps","sx","rest","_objectWithoutProperties","_excluded","radio","_objectSpread","size","slotProps","input","undefined","padding","outline","outlineOffset","control","margin","fontSize","RadioGroup","_ref2","_ref2$options","options","_ref2$row","row","_ref2$disabled","name","id","_excluded2","baseId","useId","_ref3","_fieldError","error","_fieldFullWidth","fullWidth","domRest","_excluded3","gap","children","map","opt","idx","v","lbl","helper","optDisabled","_typeof","helperId","concat","labelNode","display","flexDirection","paddingY","component","color","alignItems"],"sources":["../../../../src/lib/v2/components/Radio.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiRadio from \"@mui/material/Radio\";\r\nimport type { RadioProps as MuiRadioProps } from \"@mui/material/Radio\";\r\nimport MuiRadioGroup from \"@mui/material/RadioGroup\";\r\nimport type { RadioGroupProps as MuiRadioGroupProps } from \"@mui/material/RadioGroup\";\r\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\n/**\r\n * Radio - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Radio\". Required by R-Sel.2 (2-3 options\r\n * -> Radio or Segmented).\r\n *\r\n * Low-level: a single controlled radio. For typical usage, prefer\r\n * <RadioGroup options={...}> below.\r\n *\r\n * <Radio checked={v === \"a\"} onChange={() => setV(\"a\")} label=\"Option A\" value=\"a\" />\r\n *\r\n * MUI v9 surface notes (audit Batch 2 external):\r\n * The public `inputProps` is routed internally to slotProps.input -\r\n * MUI v9 idiomatic location for native <input type=\"radio\"/> attributes.\r\n * `inputProps` was deprecated in v6 and REMOVED in v9, so it is no longer\r\n * inherited from MuiRadioProps and must be re-declared here. Consumer code\r\n * passing `inputProps={...}` to v2.Radio is unchanged.\r\n */\r\nexport interface RadioProps extends MuiRadioProps {\r\n label?: React.ReactNode | undefined;\r\n /** Native <input> attributes. Routed to slotProps.input (v9). */\r\n inputProps?: React.InputHTMLAttributes<HTMLInputElement> | undefined;\r\n}\r\n\r\nexport const Radio = React.forwardRef<React.ComponentRef<typeof MuiRadio>, RadioProps>(function Radio(\r\n { checked, onChange, label, value, disabled, inputProps, sx, ...rest },\r\n ref,\r\n) {\r\n const radio = (\r\n <MuiRadio\r\n ref={ref}\r\n checked={!!checked}\r\n onChange={onChange}\r\n value={value}\r\n disabled={disabled}\r\n size=\"small\"\r\n // MUI v9: Radio inputProps -> slotProps.input (same migration class\r\n // as Checkbox / Switch / NumberInput). Emitted conditionally so we\r\n // don't pass `slotProps={{ input: undefined }}` when nothing is\r\n // supplied.\r\n slotProps={inputProps ? { input: inputProps } : undefined}\r\n sx={{\r\n padding: \"6px\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n ...sx,\r\n }}\r\n {...rest}\r\n />\r\n );\r\n if (!label) return radio;\r\n return (\r\n <FormControlLabel\r\n control={radio}\r\n label={label}\r\n value={value}\r\n disabled={disabled}\r\n sx={{\r\n margin: 0,\r\n \"& .MuiFormControlLabel-label\": { fontSize: \"var(--text-sm, 13px)\" },\r\n }}\r\n />\r\n );\r\n});\r\n\r\n/**\r\n * RadioGroup - Portnet UI v2\r\n *\r\n * Declarative group of radios taking an `options` array. Use inside\r\n * <Field> for label / hint / error / a11y wiring.\r\n *\r\n * <Field label=\"Type d'opération\" required>\r\n * <RadioGroup\r\n * value={op}\r\n * onChange={e => setOp(e.target.value)}\r\n * options={[\r\n * { value: \"import\", label: \"Importation\" },\r\n * { value: \"export\", label: \"Exportation\" },\r\n * { value: \"transit\", label: \"Transit\", helper: \"Marchandises en transit douanier\" },\r\n * ]}\r\n * />\r\n * </Field>\r\n *\r\n * Layout:\r\n * row={false} (default) -> vertical stack\r\n * row={true} -> horizontal (use only when labels are short)\r\n *\r\n * A11y (audit Batch 5, finding B3-3):\r\n * When an option carries a `helper` text, RadioGroup wires it\r\n * to the inner radio input via aria-describedby - SR users hear\r\n * the helper alongside the label when navigating. Without this\r\n * link the helper is purely visual.\r\n *\r\n * A11y (audit Batch 19, RG-1):\r\n * Used inside <Field>, Field cloneElement-injects presentational /\r\n * validation props onto this group. `error` and `fullWidth` are not valid\r\n * on the role=\"radiogroup\" element (React emits \"non-boolean / unrecognized\r\n * attribute\" warnings), so they are stripped before the spread. The aria-*\r\n * (labelledby / describedby / invalid) and id that Field also injects stay\r\n * valid on the group and are still forwarded.\r\n */\r\nexport interface RadioOption {\r\n value: string | number;\r\n label: React.ReactNode;\r\n helper?: React.ReactNode | undefined;\r\n disabled?: boolean | undefined;\r\n}\r\n\r\nexport type RadioGroupOption = string | RadioOption;\r\n\r\nexport interface RadioGroupProps extends Omit<MuiRadioGroupProps, \"value\" | \"children\"> {\r\n value?: string | number | undefined;\r\n options?: RadioGroupOption[] | undefined;\r\n disabled?: boolean | undefined;\r\n}\r\n\r\nexport function RadioGroup({\r\n value,\r\n onChange,\r\n options = [],\r\n row = false,\r\n disabled = false,\r\n name,\r\n id,\r\n sx,\r\n ...rest\r\n}: RadioGroupProps) {\r\n // R-Ar.1 - stable, SSR-safe, per-instance base for option helper ids.\r\n // Each option that exposes a `helper` derives a deterministic id from\r\n // this base + its index, so the inner <input type=\"radio\">'s\r\n // aria-describedby points at the right <Box> element.\r\n const baseId = React.useId();\r\n\r\n // RG-1 — Field cloneElement-injects presentational/validation props onto this\r\n // child; `error` and `fullWidth` are not valid on the role=\"radiogroup\"\r\n // element and would trigger React attribute warnings if forwarded. Strip just\r\n // those two (object-rest omit); the aria-* / id Field also injects remain in\r\n // `domRest` and stay valid on the group. Cast because these injected props\r\n // are not part of RadioGroupProps.\r\n const { error: _fieldError, fullWidth: _fieldFullWidth, ...domRest } =\r\n rest as typeof rest & { error?: unknown; fullWidth?: unknown };\r\n\r\n return (\r\n <MuiRadioGroup\r\n value={value ?? \"\"}\r\n onChange={onChange}\r\n row={row}\r\n name={name}\r\n id={id}\r\n sx={{ gap: row ? 2 : 0.5, ...sx }}\r\n {...domRest}\r\n >\r\n {options.map((opt, idx) => {\r\n const v = typeof opt === \"string\" ? opt : opt.value;\r\n const lbl = typeof opt === \"string\" ? opt : opt.label;\r\n const helper = typeof opt === \"string\" ? null : opt.helper;\r\n const optDisabled = disabled || (typeof opt === \"object\" && opt.disabled);\r\n // Per-option deterministic id. Uses the loop index so the\r\n // value type (string, number, object) doesn't constrain the\r\n // shape. Stable across renders for the same option list.\r\n const helperId = helper ? `${baseId}-h-${idx}` : undefined;\r\n const labelNode = helper ? (\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", paddingY: 0.25 }}>\r\n <Box component=\"span\" sx={{ fontSize: \"var(--text-sm)\", color: \"var(--fg)\" }}>\r\n {lbl}\r\n </Box>\r\n <Box\r\n id={helperId}\r\n component=\"span\"\r\n sx={{ fontSize: \"var(--text-xs)\", color: \"var(--fg-subtle)\" }}\r\n >\r\n {helper}\r\n </Box>\r\n </Box>\r\n ) : lbl;\r\n return (\r\n <FormControlLabel\r\n key={v}\r\n value={v}\r\n disabled={optDisabled}\r\n control={\r\n <MuiRadio\r\n size=\"small\"\r\n // MUI v9: aria-describedby routed through slotProps.input\r\n // to land on the inner <input type=\"radio\">, not on the\r\n // root span. SR users hear the helper as a description\r\n // when focusing the radio.\r\n slotProps={helperId ? { input: { \"aria-describedby\": helperId } } : undefined}\r\n sx={{\r\n padding: \"6px\",\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n />\r\n }\r\n label={labelNode}\r\n sx={{\r\n margin: 0,\r\n alignItems: helper ? \"flex-start\" : \"center\",\r\n \"& .MuiFormControlLabel-label\": { fontSize: \"var(--text-sm)\" },\r\n }}\r\n />\r\n );\r\n })}\r\n </MuiRadioGroup>\r\n );\r\n}\r\n\r\nexport default Radio;\r\n"],"mappings":"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","ignoreList":[]}
|