@portnet/ui 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/dist/esm/index.js +214 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +159 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +143 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +265 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +248 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +380 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +332 -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 +146 -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 +215 -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 +259 -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 +271 -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 +132 -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 +117 -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/FormikCheckbox.js +140 -0
- package/dist/esm/v2/patterns/FormikCheckbox.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 +118 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +162 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +150 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.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 +130 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js +141 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.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 +162 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +79 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +212 -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/RowFavoriteToggle.js +122 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.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/_pickerSerialisation.js +74 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.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 +178 -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/gridPreferences.js +209 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +22 -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 +64 -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 +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/FieldError.test.js +160 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +150 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +144 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js +268 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +247 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +381 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +52 -56
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +20 -24
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- 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 +37 -4
- 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 +76 -13
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +87 -9
- 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 +170 -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/index.d.ts.map +1 -1
- package/dist/v2/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 +15 -15
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +14 -61
- 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/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +147 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- 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 +18 -12
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +5 -2
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +48 -8
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +58 -65
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +158 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- 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 +51 -6
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +53 -2
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +148 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- 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 +41 -12
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +32 -3
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +14 -6
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +5 -2
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +21 -8
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +27 -14
- 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/RowFavoriteToggle.d.ts +92 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- 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/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +81 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- 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 +114 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +34 -0
- 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/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +215 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +13 -0
- package/dist/v2/personalization/capabilities/index.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/index.d.ts +18 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +13 -0
- package/dist/v2/personalization/index.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,184 @@
|
|
|
1
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
2
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
3
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
4
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
5
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
6
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import IconButton from "@mui/material/IconButton";
|
|
9
|
+
import Menu from "@mui/material/Menu";
|
|
10
|
+
import MenuItem from "@mui/material/MenuItem";
|
|
11
|
+
import Divider from "@mui/material/Divider";
|
|
12
|
+
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
|
|
13
|
+
import Box from "@mui/material/Box";
|
|
14
|
+
import { mergeLabels } from "../utils/mergeLabels";
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* OverflowMenu - Portnet UI v2
|
|
18
|
+
*
|
|
19
|
+
* Charter §03 · Component "OverflowMenu". ARIA menu for ancillary row actions.
|
|
20
|
+
*
|
|
21
|
+
* Max 7 items · separator before danger · kbd shortcut visible right.
|
|
22
|
+
*
|
|
23
|
+
* <OverflowMenu actions={[
|
|
24
|
+
* { label: "Voir le détail", icon: <Visibility />, onClick: open, shortcut: "↵" },
|
|
25
|
+
* { label: "Modifier", icon: <Edit />, onClick: edit },
|
|
26
|
+
* { divider: true },
|
|
27
|
+
* { label: "Supprimer", icon: <Delete />, onClick: remove, danger: true, shortcut: "⌫" },
|
|
28
|
+
* ]} />
|
|
29
|
+
*
|
|
30
|
+
* Localisation (FR / EN / AR):
|
|
31
|
+
* <OverflowMenu labels={{
|
|
32
|
+
* trigger: "More actions",
|
|
33
|
+
* shortcut: (s) => `Shortcut ${s}`,
|
|
34
|
+
* }} />
|
|
35
|
+
*
|
|
36
|
+
* The legacy `ariaLabel` prop still wins over labels.trigger when
|
|
37
|
+
* both are passed, for back-compat.
|
|
38
|
+
*/
|
|
39
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
40
|
+
var DEFAULT_LABELS = Object.freeze({
|
|
41
|
+
trigger: "Plus d'actions",
|
|
42
|
+
shortcut: function shortcut(s) {
|
|
43
|
+
return "Raccourci ".concat(s);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
// MUI v9: slot bag for the Menu. The component already used slotProps.paper
|
|
48
|
+
// for the paper slot; this commit moves MenuListProps onto the same path
|
|
49
|
+
// via the `list` slot key. Hoisted so the reference is stable across
|
|
50
|
+
// renders. `role: "menu" as const` keeps the AriaRole literal.
|
|
51
|
+
var MENU_SLOT_PROPS = Object.freeze({
|
|
52
|
+
paper: {
|
|
53
|
+
sx: {
|
|
54
|
+
minWidth: 200,
|
|
55
|
+
boxShadow: "var(--shadow-md)",
|
|
56
|
+
border: "1px solid var(--border)",
|
|
57
|
+
borderRadius: "var(--r-md)"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
list: {
|
|
61
|
+
role: "menu",
|
|
62
|
+
dense: true
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
function OverflowMenu(_ref) {
|
|
66
|
+
var _ref$actions = _ref.actions,
|
|
67
|
+
actions = _ref$actions === void 0 ? [] : _ref$actions,
|
|
68
|
+
trigger = _ref.trigger,
|
|
69
|
+
ariaLabel = _ref.ariaLabel,
|
|
70
|
+
_ref$align = _ref.align,
|
|
71
|
+
align = _ref$align === void 0 ? "right" : _ref$align,
|
|
72
|
+
labels = _ref.labels;
|
|
73
|
+
var L = mergeLabels(DEFAULT_LABELS, labels);
|
|
74
|
+
// Legacy ariaLabel prop wins over labels.trigger.
|
|
75
|
+
var triggerAria = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : L.trigger;
|
|
76
|
+
var _React$useState = React.useState(null),
|
|
77
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
78
|
+
anchor = _React$useState2[0],
|
|
79
|
+
setAnchor = _React$useState2[1];
|
|
80
|
+
var open = Boolean(anchor);
|
|
81
|
+
if (process.env["NODE_ENV"] !== "production" && actions.length > 7) {
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
83
|
+
console.warn("[@portnet/ui v2] <OverflowMenu> over 7 items - charter recommends ≤ 7.");
|
|
84
|
+
}
|
|
85
|
+
var handleOpen = function handleOpen(e) {
|
|
86
|
+
return setAnchor(e.currentTarget);
|
|
87
|
+
};
|
|
88
|
+
var handleClose = function handleClose() {
|
|
89
|
+
return setAnchor(null);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
// R-2.1 - when a host passes a custom trigger, preserve its existing
|
|
93
|
+
// onClick (analytics, focus capture, optimistic UI etc.) by chaining
|
|
94
|
+
// it before our handleOpen. Without this, cloneElement silently
|
|
95
|
+
// overwrites the host's handler.
|
|
96
|
+
var triggerNode = trigger ? /*#__PURE__*/React.cloneElement(trigger, {
|
|
97
|
+
onClick: function onClick(event) {
|
|
98
|
+
var _onClick, _ref2;
|
|
99
|
+
(_onClick = (_ref2 = trigger.props).onClick) === null || _onClick === void 0 ? void 0 : _onClick.call(_ref2, event);
|
|
100
|
+
handleOpen(event);
|
|
101
|
+
},
|
|
102
|
+
"aria-haspopup": "menu",
|
|
103
|
+
"aria-expanded": open
|
|
104
|
+
}) : /*#__PURE__*/_jsx(IconButton, {
|
|
105
|
+
onClick: handleOpen,
|
|
106
|
+
"aria-label": triggerAria,
|
|
107
|
+
"aria-haspopup": "menu",
|
|
108
|
+
"aria-expanded": open,
|
|
109
|
+
size: "small",
|
|
110
|
+
sx: {
|
|
111
|
+
color: "var(--fg-muted)"
|
|
112
|
+
},
|
|
113
|
+
children: /*#__PURE__*/_jsx(MoreHorizIcon, {
|
|
114
|
+
fontSize: "small"
|
|
115
|
+
})
|
|
116
|
+
});
|
|
117
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
118
|
+
children: [triggerNode, /*#__PURE__*/_jsx(Menu, {
|
|
119
|
+
anchorEl: anchor,
|
|
120
|
+
open: open,
|
|
121
|
+
onClose: handleClose,
|
|
122
|
+
anchorOrigin: {
|
|
123
|
+
vertical: "bottom",
|
|
124
|
+
horizontal: align === "right" ? "right" : "left"
|
|
125
|
+
},
|
|
126
|
+
transformOrigin: {
|
|
127
|
+
vertical: "top",
|
|
128
|
+
horizontal: align === "right" ? "right" : "left"
|
|
129
|
+
},
|
|
130
|
+
slotProps: MENU_SLOT_PROPS,
|
|
131
|
+
children: actions.map(function (a, i) {
|
|
132
|
+
if (a.divider) return /*#__PURE__*/_jsx(Divider, {
|
|
133
|
+
sx: {
|
|
134
|
+
borderColor: "var(--border)"
|
|
135
|
+
}
|
|
136
|
+
}, "d-".concat(i));
|
|
137
|
+
return /*#__PURE__*/_jsxs(MenuItem, {
|
|
138
|
+
role: "menuitem",
|
|
139
|
+
disabled: a.disabled,
|
|
140
|
+
onClick: function onClick() {
|
|
141
|
+
var _a$onClick;
|
|
142
|
+
handleClose();
|
|
143
|
+
(_a$onClick = a.onClick) === null || _a$onClick === void 0 ? void 0 : _a$onClick.call(a);
|
|
144
|
+
},
|
|
145
|
+
sx: {
|
|
146
|
+
fontSize: "var(--text-sm)",
|
|
147
|
+
color: a.danger ? "var(--danger)" : "var(--fg)",
|
|
148
|
+
"&:hover": a.danger ? {
|
|
149
|
+
background: "var(--danger-soft)"
|
|
150
|
+
} : undefined,
|
|
151
|
+
gap: 1.5
|
|
152
|
+
},
|
|
153
|
+
children: [a.icon && /*#__PURE__*/_jsx(Box, {
|
|
154
|
+
sx: {
|
|
155
|
+
display: "inline-flex",
|
|
156
|
+
color: a.danger ? "var(--danger)" : "var(--fg-muted)"
|
|
157
|
+
},
|
|
158
|
+
children: a.icon
|
|
159
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
160
|
+
sx: {
|
|
161
|
+
flex: 1
|
|
162
|
+
},
|
|
163
|
+
children: a.label
|
|
164
|
+
}), a.shortcut && /*#__PURE__*/_jsx(Box, {
|
|
165
|
+
component: "kbd",
|
|
166
|
+
"aria-label": typeof L.shortcut === "function" ? L.shortcut(a.shortcut) : "".concat(L.shortcut, " ").concat(a.shortcut),
|
|
167
|
+
sx: {
|
|
168
|
+
fontSize: "var(--text-xs)",
|
|
169
|
+
color: "var(--fg-subtle)",
|
|
170
|
+
background: "var(--bg-subtle)",
|
|
171
|
+
border: "1px solid var(--border)",
|
|
172
|
+
borderRadius: "var(--r-sm)",
|
|
173
|
+
padding: "1px var(--s-2)",
|
|
174
|
+
fontFamily: "var(--font-mono)"
|
|
175
|
+
},
|
|
176
|
+
children: a.shortcut
|
|
177
|
+
})]
|
|
178
|
+
}, i);
|
|
179
|
+
})
|
|
180
|
+
})]
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
export default OverflowMenu;
|
|
184
|
+
//# sourceMappingURL=OverflowMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OverflowMenu.js","names":["React","IconButton","Menu","MenuItem","Divider","MoreHorizIcon","Box","mergeLabels","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","DEFAULT_LABELS","Object","freeze","trigger","shortcut","s","concat","MENU_SLOT_PROPS","paper","sx","minWidth","boxShadow","border","borderRadius","list","role","dense","OverflowMenu","_ref","_ref$actions","actions","ariaLabel","_ref$align","align","labels","L","triggerAria","_React$useState","useState","_React$useState2","_slicedToArray","anchor","setAnchor","open","Boolean","process","env","length","console","warn","handleOpen","e","currentTarget","handleClose","triggerNode","cloneElement","onClick","event","_onClick","_ref2","props","call","size","color","children","fontSize","anchorEl","onClose","anchorOrigin","vertical","horizontal","transformOrigin","slotProps","map","a","i","divider","borderColor","disabled","_a$onClick","danger","background","undefined","gap","icon","display","flex","label","component","padding","fontFamily"],"sources":["../../../../src/lib/v2/components/OverflowMenu.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport Menu from \"@mui/material/Menu\";\r\nimport MenuItem from \"@mui/material/MenuItem\";\r\nimport Divider from \"@mui/material/Divider\";\r\nimport MoreHorizIcon from \"@mui/icons-material/MoreHoriz\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * OverflowMenu - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"OverflowMenu\". ARIA menu for ancillary row actions.\r\n *\r\n * Max 7 items · separator before danger · kbd shortcut visible right.\r\n *\r\n * <OverflowMenu actions={[\r\n * { label: \"Voir le détail\", icon: <Visibility />, onClick: open, shortcut: \"↵\" },\r\n * { label: \"Modifier\", icon: <Edit />, onClick: edit },\r\n * { divider: true },\r\n * { label: \"Supprimer\", icon: <Delete />, onClick: remove, danger: true, shortcut: \"⌫\" },\r\n * ]} />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <OverflowMenu labels={{\r\n * trigger: \"More actions\",\r\n * shortcut: (s) => `Shortcut ${s}`,\r\n * }} />\r\n *\r\n * The legacy `ariaLabel` prop still wins over labels.trigger when\r\n * both are passed, for back-compat.\r\n */\r\n\r\nexport interface OverflowMenuAction {\r\n label?: React.ReactNode | undefined;\r\n /** Rendered directly (no cloneElement) — any renderable node. */\r\n icon?: React.ReactNode | undefined;\r\n onClick?: (() => void) | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n danger?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n divider?: boolean | undefined;\r\n}\r\n\r\nexport interface OverflowMenuLabels {\r\n trigger?: string | undefined;\r\n shortcut?: string | ((shortcut: React.ReactNode) => string) | undefined;\r\n}\r\n\r\nexport interface OverflowMenuProps {\r\n /** Row actions. Charter recommends ≤ 7. @default [] */\r\n actions?: OverflowMenuAction[] | undefined;\r\n /**\r\n * Custom trigger element. Cloned via React.cloneElement to inject the\r\n * open handler + aria-haspopup/aria-expanded (must be a single element).\r\n */\r\n trigger?: React.ReactElement | undefined;\r\n /** Legacy accessible name for the default trigger (wins over labels.trigger). */\r\n ariaLabel?: string | undefined;\r\n /** Menu alignment. @default \"right\" */\r\n align?: \"left\" | \"right\" | undefined;\r\n labels?: OverflowMenuLabels | undefined;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n trigger: \"Plus d'actions\",\r\n shortcut: (s: React.ReactNode) => `Raccourci ${s}`,\r\n});\r\n\r\n// MUI v9: slot bag for the Menu. The component already used slotProps.paper\r\n// for the paper slot; this commit moves MenuListProps onto the same path\r\n// via the `list` slot key. Hoisted so the reference is stable across\r\n// renders. `role: \"menu\" as const` keeps the AriaRole literal.\r\nconst MENU_SLOT_PROPS = Object.freeze({\r\n paper: {\r\n sx: {\r\n minWidth: 200,\r\n boxShadow: \"var(--shadow-md)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n },\r\n },\r\n list: { role: \"menu\" as const, dense: true },\r\n});\r\n\r\nfunction OverflowMenu({\r\n actions = [],\r\n trigger,\r\n ariaLabel,\r\n align = \"right\",\r\n labels,\r\n}: OverflowMenuProps) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n // Legacy ariaLabel prop wins over labels.trigger.\r\n const triggerAria = ariaLabel ?? L.trigger;\r\n\r\n const [anchor, setAnchor] = React.useState<HTMLElement | null>(null);\r\n const open = Boolean(anchor);\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && actions.length > 7) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"[@portnet/ui v2] <OverflowMenu> over 7 items - charter recommends ≤ 7.\");\r\n }\r\n\r\n const handleOpen = (e: React.MouseEvent<HTMLElement>) => setAnchor(e.currentTarget);\r\n const handleClose = () => setAnchor(null);\r\n\r\n // R-2.1 - when a host passes a custom trigger, preserve its existing\r\n // onClick (analytics, focus capture, optimistic UI etc.) by chaining\r\n // it before our handleOpen. Without this, cloneElement silently\r\n // overwrites the host's handler.\r\n const triggerNode = trigger\r\n ? React.cloneElement(trigger as React.ReactElement<Record<string, unknown>>, {\r\n onClick: (event: React.MouseEvent<HTMLElement>) => {\r\n (trigger.props as { onClick?: (e: React.MouseEvent<HTMLElement>) => void }).onClick?.(event);\r\n handleOpen(event);\r\n },\r\n \"aria-haspopup\": \"menu\",\r\n \"aria-expanded\": open,\r\n })\r\n : (\r\n <IconButton\r\n onClick={handleOpen}\r\n aria-label={triggerAria}\r\n aria-haspopup=\"menu\"\r\n aria-expanded={open}\r\n size=\"small\"\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <MoreHorizIcon fontSize=\"small\" />\r\n </IconButton>\r\n );\r\n\r\n return (\r\n <>\r\n {triggerNode}\r\n <Menu\r\n anchorEl={anchor}\r\n open={open}\r\n onClose={handleClose}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: align === \"right\" ? \"right\" : \"left\" }}\r\n transformOrigin={{ vertical: \"top\", horizontal: align === \"right\" ? \"right\" : \"left\" }}\r\n slotProps={MENU_SLOT_PROPS}\r\n >\r\n {actions.map((a, i) => {\r\n if (a.divider) return <Divider key={`d-${i}`} sx={{ borderColor: \"var(--border)\" }} />;\r\n return (\r\n <MenuItem\r\n key={i}\r\n role=\"menuitem\"\r\n disabled={a.disabled}\r\n onClick={() => { handleClose(); a.onClick?.(); }}\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n color: a.danger ? \"var(--danger)\" : \"var(--fg)\",\r\n \"&:hover\": a.danger ? { background: \"var(--danger-soft)\" } : undefined,\r\n gap: 1.5,\r\n }}\r\n >\r\n {a.icon && <Box sx={{ display: \"inline-flex\", color: a.danger ? \"var(--danger)\" : \"var(--fg-muted)\" }}>{a.icon}</Box>}\r\n <Box sx={{ flex: 1 }}>{a.label}</Box>\r\n {a.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-label={typeof L.shortcut === \"function\" ? L.shortcut(a.shortcut) : `${L.shortcut} ${a.shortcut}`}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {a.shortcut}\r\n </Box>\r\n )}\r\n </MenuItem>\r\n );\r\n })}\r\n </Menu>\r\n </>\r\n );\r\n}\r\n\r\nexport default OverflowMenu;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import Box from "@mui/material/Box";
|
|
3
|
+
import { Viewer, Worker, ProgressBar } from "@react-pdf-viewer/core";
|
|
4
|
+
import { defaultLayoutPlugin } from "@react-pdf-viewer/default-layout";
|
|
5
|
+
import Spinner from "./Spinner";
|
|
6
|
+
import Banner from "./Banner";
|
|
7
|
+
import "@react-pdf-viewer/core/lib/styles/index.css";
|
|
8
|
+
import "@react-pdf-viewer/default-layout/lib/styles/index.css";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* PdfViewer — Portnet UI v2
|
|
12
|
+
*
|
|
13
|
+
* Charter §07 · document viewing / §04.4 · loading & empty states.
|
|
14
|
+
*
|
|
15
|
+
* Presentational, store- and router-agnostic wrapper over @react-pdf-viewer
|
|
16
|
+
* (pdf.js). The HOST owns fetching: pass a ready `fileUrl` (http(s) or `data:`
|
|
17
|
+
* URL) OR a raw `base64` payload, plus the externally-controlled `loading` /
|
|
18
|
+
* `error` flags and the pdf.js `workerUrl`. No redux, no dispatch, no config
|
|
19
|
+
* import — that is exactly what lets it live in the shared library.
|
|
20
|
+
*
|
|
21
|
+
* <PdfViewer
|
|
22
|
+
* base64={pdf}
|
|
23
|
+
* loading={isLoading}
|
|
24
|
+
* error={failed && "Le document n'a pas pu être chargé."}
|
|
25
|
+
* workerUrl={cfg.pdfWorkerUrl}
|
|
26
|
+
* />
|
|
27
|
+
*
|
|
28
|
+
* State precedence: loading → error → (no source) → viewer.
|
|
29
|
+
* - loading → v2.Spinner (charter §04.4: no ad-hoc CircularProgress).
|
|
30
|
+
* - error → v2.Banner variant="error" (R-A.2 alert semantics).
|
|
31
|
+
* - no src → v2.Banner variant="info" (empty).
|
|
32
|
+
*
|
|
33
|
+
* Dependency note (RFC): pulls @react-pdf-viewer/core,
|
|
34
|
+
* @react-pdf-viewer/default-layout and pdfjs-dist. Declared as OPTIONAL peer
|
|
35
|
+
* dependencies — only PDF-consuming modules install them, so there is no
|
|
36
|
+
* bundle cost for the rest of the platform.
|
|
37
|
+
*/
|
|
38
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
39
|
+
function PdfViewer(_ref) {
|
|
40
|
+
var fileUrl = _ref.fileUrl,
|
|
41
|
+
base64 = _ref.base64,
|
|
42
|
+
workerUrl = _ref.workerUrl,
|
|
43
|
+
_ref$loading = _ref.loading,
|
|
44
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
45
|
+
error = _ref.error,
|
|
46
|
+
_ref$errorTitle = _ref.errorTitle,
|
|
47
|
+
errorTitle = _ref$errorTitle === void 0 ? "Échec du chargement du document" : _ref$errorTitle,
|
|
48
|
+
_ref$emptyLabel = _ref.emptyLabel,
|
|
49
|
+
emptyLabel = _ref$emptyLabel === void 0 ? "Aucun document à afficher." : _ref$emptyLabel,
|
|
50
|
+
_ref$height = _ref.height,
|
|
51
|
+
height = _ref$height === void 0 ? "75vh" : _ref$height,
|
|
52
|
+
_ref$defaultScale = _ref.defaultScale,
|
|
53
|
+
defaultScale = _ref$defaultScale === void 0 ? 0.95 : _ref$defaultScale,
|
|
54
|
+
_ref$ariaLabel = _ref.ariaLabel,
|
|
55
|
+
ariaLabel = _ref$ariaLabel === void 0 ? "Document PDF" : _ref$ariaLabel;
|
|
56
|
+
var layoutPlugin = React.useMemo(function () {
|
|
57
|
+
return defaultLayoutPlugin();
|
|
58
|
+
}, []);
|
|
59
|
+
var src = fileUrl !== null && fileUrl !== void 0 ? fileUrl : base64 ? "data:application/pdf;base64,".concat(base64) : undefined;
|
|
60
|
+
var body;
|
|
61
|
+
if (loading) {
|
|
62
|
+
body = /*#__PURE__*/_jsx(Box, {
|
|
63
|
+
sx: {
|
|
64
|
+
display: "grid",
|
|
65
|
+
placeItems: "center",
|
|
66
|
+
minHeight: 200,
|
|
67
|
+
width: "100%"
|
|
68
|
+
},
|
|
69
|
+
children: /*#__PURE__*/_jsx(Spinner, {})
|
|
70
|
+
});
|
|
71
|
+
} else if (error) {
|
|
72
|
+
body = /*#__PURE__*/_jsx(Banner, {
|
|
73
|
+
variant: "error",
|
|
74
|
+
title: errorTitle,
|
|
75
|
+
children: error
|
|
76
|
+
});
|
|
77
|
+
} else if (!src) {
|
|
78
|
+
body = /*#__PURE__*/_jsx(Banner, {
|
|
79
|
+
variant: "info",
|
|
80
|
+
children: emptyLabel
|
|
81
|
+
});
|
|
82
|
+
} else {
|
|
83
|
+
body = /*#__PURE__*/_jsx(Worker, {
|
|
84
|
+
workerUrl: workerUrl,
|
|
85
|
+
children: /*#__PURE__*/_jsx(Box, {
|
|
86
|
+
sx: {
|
|
87
|
+
border: "1px solid var(--border)",
|
|
88
|
+
borderRadius: "var(--r-md)",
|
|
89
|
+
height: height,
|
|
90
|
+
width: "100%"
|
|
91
|
+
},
|
|
92
|
+
children: /*#__PURE__*/_jsx(Viewer, {
|
|
93
|
+
fileUrl: src,
|
|
94
|
+
plugins: [layoutPlugin],
|
|
95
|
+
defaultScale: defaultScale,
|
|
96
|
+
renderLoader: function renderLoader(percentages) {
|
|
97
|
+
return /*#__PURE__*/_jsx(Box, {
|
|
98
|
+
sx: {
|
|
99
|
+
width: 240
|
|
100
|
+
},
|
|
101
|
+
children: /*#__PURE__*/_jsx(ProgressBar, {
|
|
102
|
+
progress: Math.round(percentages)
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return /*#__PURE__*/_jsx(Box, {
|
|
111
|
+
role: "region",
|
|
112
|
+
"aria-label": ariaLabel,
|
|
113
|
+
sx: {
|
|
114
|
+
display: "flex",
|
|
115
|
+
justifyContent: "center",
|
|
116
|
+
width: "100%"
|
|
117
|
+
},
|
|
118
|
+
children: body
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
export default PdfViewer;
|
|
122
|
+
//# sourceMappingURL=PdfViewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PdfViewer.js","names":["React","Box","Viewer","Worker","ProgressBar","defaultLayoutPlugin","Spinner","Banner","jsx","_jsx","PdfViewer","_ref","fileUrl","base64","workerUrl","_ref$loading","loading","error","_ref$errorTitle","errorTitle","_ref$emptyLabel","emptyLabel","_ref$height","height","_ref$defaultScale","defaultScale","_ref$ariaLabel","ariaLabel","layoutPlugin","useMemo","src","concat","undefined","body","sx","display","placeItems","minHeight","width","children","variant","title","border","borderRadius","plugins","renderLoader","percentages","progress","Math","round","role","justifyContent"],"sources":["../../../../src/lib/v2/components/PdfViewer.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport { Viewer, Worker, ProgressBar } from \"@react-pdf-viewer/core\";\r\nimport { defaultLayoutPlugin } from \"@react-pdf-viewer/default-layout\";\r\nimport Spinner from \"./Spinner\";\r\nimport Banner from \"./Banner\";\r\n\r\nimport \"@react-pdf-viewer/core/lib/styles/index.css\";\r\nimport \"@react-pdf-viewer/default-layout/lib/styles/index.css\";\r\n\r\n/**\r\n * PdfViewer — Portnet UI v2\r\n *\r\n * Charter §07 · document viewing / §04.4 · loading & empty states.\r\n *\r\n * Presentational, store- and router-agnostic wrapper over @react-pdf-viewer\r\n * (pdf.js). The HOST owns fetching: pass a ready `fileUrl` (http(s) or `data:`\r\n * URL) OR a raw `base64` payload, plus the externally-controlled `loading` /\r\n * `error` flags and the pdf.js `workerUrl`. No redux, no dispatch, no config\r\n * import — that is exactly what lets it live in the shared library.\r\n *\r\n * <PdfViewer\r\n * base64={pdf}\r\n * loading={isLoading}\r\n * error={failed && \"Le document n'a pas pu être chargé.\"}\r\n * workerUrl={cfg.pdfWorkerUrl}\r\n * />\r\n *\r\n * State precedence: loading → error → (no source) → viewer.\r\n * - loading → v2.Spinner (charter §04.4: no ad-hoc CircularProgress).\r\n * - error → v2.Banner variant=\"error\" (R-A.2 alert semantics).\r\n * - no src → v2.Banner variant=\"info\" (empty).\r\n *\r\n * Dependency note (RFC): pulls @react-pdf-viewer/core,\r\n * @react-pdf-viewer/default-layout and pdfjs-dist. Declared as OPTIONAL peer\r\n * dependencies — only PDF-consuming modules install them, so there is no\r\n * bundle cost for the rest of the platform.\r\n */\r\n\r\nexport interface PdfViewerProps {\r\n /** Full URL or `data:` URL of the PDF. Takes precedence over `base64`. */\r\n fileUrl?: string | undefined;\r\n /** Raw base64 PDF payload (without the `data:application/pdf;base64,` prefix). */\r\n base64?: string | undefined;\r\n /** pdf.js worker URL — host-provided (e.g. from runtime config). */\r\n workerUrl: string;\r\n /** Show the loading spinner instead of the viewer. */\r\n loading?: boolean | undefined;\r\n /** When truthy, shows an error Banner (this node is the message) instead of the viewer. */\r\n error?: React.ReactNode | undefined;\r\n /** Error banner title. Default \"Échec du chargement du document\". */\r\n errorTitle?: React.ReactNode | undefined;\r\n /** Message shown when there is no source and no loading/error. */\r\n emptyLabel?: React.ReactNode | undefined;\r\n /** Viewer container height. Default \"75vh\". */\r\n height?: number | string | undefined;\r\n /** Initial zoom. Default 0.95. */\r\n defaultScale?: number | undefined;\r\n /** Accessible label for the viewer region. Default \"Document PDF\". */\r\n ariaLabel?: string | undefined;\r\n}\r\n\r\nfunction PdfViewer({\r\n fileUrl,\r\n base64,\r\n workerUrl,\r\n loading = false,\r\n error,\r\n errorTitle = \"Échec du chargement du document\",\r\n emptyLabel = \"Aucun document à afficher.\",\r\n height = \"75vh\",\r\n defaultScale = 0.95,\r\n ariaLabel = \"Document PDF\",\r\n}: PdfViewerProps) {\r\n const layoutPlugin = React.useMemo(() => defaultLayoutPlugin(), []);\r\n const src = fileUrl ?? (base64 ? `data:application/pdf;base64,${base64}` : undefined);\r\n\r\n let body: React.ReactNode;\r\n if (loading) {\r\n body = (\r\n <Box sx={{ display: \"grid\", placeItems: \"center\", minHeight: 200, width: \"100%\" }}>\r\n <Spinner />\r\n </Box>\r\n );\r\n } else if (error) {\r\n body = (\r\n <Banner variant=\"error\" title={errorTitle}>\r\n {error}\r\n </Banner>\r\n );\r\n } else if (!src) {\r\n body = <Banner variant=\"info\">{emptyLabel}</Banner>;\r\n } else {\r\n body = (\r\n <Worker workerUrl={workerUrl}>\r\n <Box\r\n sx={{\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n height,\r\n width: \"100%\",\r\n }}\r\n >\r\n <Viewer\r\n fileUrl={src}\r\n plugins={[layoutPlugin]}\r\n defaultScale={defaultScale}\r\n renderLoader={(percentages: number) => (\r\n <Box sx={{ width: 240 }}>\r\n <ProgressBar progress={Math.round(percentages)} />\r\n </Box>\r\n )}\r\n />\r\n </Box>\r\n </Worker>\r\n );\r\n }\r\n\r\n return (\r\n <Box\r\n role=\"region\"\r\n aria-label={ariaLabel}\r\n sx={{ display: \"flex\", justifyContent: \"center\", width: \"100%\" }}\r\n >\r\n {body}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default PdfViewer;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
import * as React from "react";
|
|
8
|
+
import Box from "@mui/material/Box";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* ProgressBar — Portnet UI v2
|
|
12
|
+
*
|
|
13
|
+
* Charter §03 · Component "ProgressBar". Determinate or indeterminate
|
|
14
|
+
* progress indicator for chunked operations (uploads, batch jobs,
|
|
15
|
+
* long-running form steps) where a Skeleton is not appropriate.
|
|
16
|
+
*
|
|
17
|
+
* R-Sk usage rule (charter §03 Skeleton): "Use ProgressBar (not
|
|
18
|
+
* skeleton) for operations whose duration is known and where the user
|
|
19
|
+
* benefits from a percentage signal — e.g. file uploads, batch
|
|
20
|
+
* exports, multi-step ingestion."
|
|
21
|
+
*
|
|
22
|
+
* a11y:
|
|
23
|
+
* - role="progressbar"
|
|
24
|
+
* - Determinate: aria-valuenow / aria-valuemin / aria-valuemax (charter R-Ar)
|
|
25
|
+
* - Indeterminate: aria-valuenow OMITTED (WAI-ARIA convention)
|
|
26
|
+
* - aria-label or aria-labelledby (caller responsibility — provide one)
|
|
27
|
+
* - aria-describedby wires the `helper` text into the AT tree so SR
|
|
28
|
+
* users hear the qualitative context ("3 sur 6 fichiers traités")
|
|
29
|
+
* alongside the quantitative one ("42 %"). Audit Batch 5 / B5-2.
|
|
30
|
+
*
|
|
31
|
+
* Examples:
|
|
32
|
+
*
|
|
33
|
+
* <ProgressBar value={42} aria-label="Téléversement en cours" />
|
|
34
|
+
*
|
|
35
|
+
* <ProgressBar value={87} variant="success" showLabel
|
|
36
|
+
* aria-label="Indexation des documents" />
|
|
37
|
+
*
|
|
38
|
+
* <ProgressBar indeterminate aria-label="Connexion au serveur" />
|
|
39
|
+
*
|
|
40
|
+
* <ProgressBar value={50} size="lg" variant="warning"
|
|
41
|
+
* label="Synchronisation BAM"
|
|
42
|
+
* helper="3 sur 6 fichiers traités" />
|
|
43
|
+
*/
|
|
44
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
45
|
+
var VARIANT_COLOR = {
|
|
46
|
+
primary: "var(--accent)",
|
|
47
|
+
success: "var(--success)",
|
|
48
|
+
warning: "var(--warning)",
|
|
49
|
+
danger: "var(--danger)"
|
|
50
|
+
};
|
|
51
|
+
var SIZE_HEIGHT = {
|
|
52
|
+
sm: 4,
|
|
53
|
+
md: 6,
|
|
54
|
+
lg: 8
|
|
55
|
+
};
|
|
56
|
+
function ProgressBar(_ref) {
|
|
57
|
+
var value = _ref.value,
|
|
58
|
+
_ref$indeterminate = _ref.indeterminate,
|
|
59
|
+
indeterminate = _ref$indeterminate === void 0 ? false : _ref$indeterminate,
|
|
60
|
+
_ref$variant = _ref.variant,
|
|
61
|
+
variant = _ref$variant === void 0 ? "primary" : _ref$variant,
|
|
62
|
+
_ref$size = _ref.size,
|
|
63
|
+
size = _ref$size === void 0 ? "md" : _ref$size,
|
|
64
|
+
label = _ref.label,
|
|
65
|
+
helper = _ref.helper,
|
|
66
|
+
_ref$showLabel = _ref.showLabel,
|
|
67
|
+
showLabel = _ref$showLabel === void 0 ? false : _ref$showLabel,
|
|
68
|
+
ariaLabel = _ref["aria-label"],
|
|
69
|
+
ariaLabelledBy = _ref["aria-labelledby"],
|
|
70
|
+
sx = _ref.sx;
|
|
71
|
+
// Defensive clamp: callers occasionally pass over-range values (e.g. 102%
|
|
72
|
+
// from rounding). Charter forbids surprising the user — clamp instead of
|
|
73
|
+
// overflowing the track visually.
|
|
74
|
+
var isDet = !indeterminate && value != null;
|
|
75
|
+
var clamped = isDet ? Math.max(0, Math.min(100, Number(value) || 0)) : 0;
|
|
76
|
+
var fill = VARIANT_COLOR[variant] || VARIANT_COLOR.primary;
|
|
77
|
+
var height = SIZE_HEIGHT[size] || SIZE_HEIGHT.md;
|
|
78
|
+
if (process.env["NODE_ENV"] !== "production" && !ariaLabel && !ariaLabelledBy && !label) {
|
|
79
|
+
// eslint-disable-next-line no-console
|
|
80
|
+
console.warn("[@portnet/ui v2] <ProgressBar> requires aria-label, aria-labelledby, or a `label` prop for screen readers.");
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// If an inline `label` is rendered we wire aria-labelledby internally
|
|
84
|
+
// so the caller doesn't have to manage the id themselves.
|
|
85
|
+
// If `helper` is rendered, wire it via aria-describedby on the
|
|
86
|
+
// progressbar so the qualitative context reaches AT. Audit Batch 5.
|
|
87
|
+
var reactId = React.useId();
|
|
88
|
+
var labelId = label ? "".concat(reactId, "-lbl") : undefined;
|
|
89
|
+
var helperId = helper ? "".concat(reactId, "-hlp") : undefined;
|
|
90
|
+
var effectiveLabelledBy = ariaLabelledBy || labelId;
|
|
91
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
92
|
+
sx: _objectSpread({
|
|
93
|
+
width: "100%"
|
|
94
|
+
}, sx),
|
|
95
|
+
children: [(label || isDet && showLabel) && /*#__PURE__*/_jsxs(Box, {
|
|
96
|
+
sx: {
|
|
97
|
+
display: "flex",
|
|
98
|
+
alignItems: "baseline",
|
|
99
|
+
justifyContent: "space-between",
|
|
100
|
+
gap: 1,
|
|
101
|
+
marginBottom: 0.5
|
|
102
|
+
},
|
|
103
|
+
children: [label && /*#__PURE__*/_jsx(Box, {
|
|
104
|
+
id: labelId,
|
|
105
|
+
component: "span",
|
|
106
|
+
sx: {
|
|
107
|
+
fontSize: "var(--text-sm)",
|
|
108
|
+
fontWeight: "var(--fw-semibold)",
|
|
109
|
+
color: "var(--fg)",
|
|
110
|
+
lineHeight: "var(--lh-snug)"
|
|
111
|
+
},
|
|
112
|
+
children: label
|
|
113
|
+
}), isDet && showLabel && /*#__PURE__*/_jsxs(Box, {
|
|
114
|
+
component: "span",
|
|
115
|
+
"aria-hidden": "true",
|
|
116
|
+
sx: {
|
|
117
|
+
fontSize: "var(--text-xs)",
|
|
118
|
+
fontWeight: "var(--fw-semibold)",
|
|
119
|
+
color: "var(--fg-muted)",
|
|
120
|
+
fontVariantNumeric: "tabular-nums",
|
|
121
|
+
marginLeft: "auto"
|
|
122
|
+
},
|
|
123
|
+
children: [Math.round(clamped), "%"]
|
|
124
|
+
})]
|
|
125
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
126
|
+
role: "progressbar",
|
|
127
|
+
"aria-label": ariaLabel,
|
|
128
|
+
"aria-labelledby": effectiveLabelledBy,
|
|
129
|
+
"aria-describedby": helperId,
|
|
130
|
+
"aria-valuemin": isDet ? 0 : undefined,
|
|
131
|
+
"aria-valuemax": isDet ? 100 : undefined,
|
|
132
|
+
"aria-valuenow": isDet ? Math.round(clamped) : undefined,
|
|
133
|
+
sx: {
|
|
134
|
+
position: "relative",
|
|
135
|
+
width: "100%",
|
|
136
|
+
height: height,
|
|
137
|
+
borderRadius: "var(--r-full)",
|
|
138
|
+
background: "var(--bg-subtle)",
|
|
139
|
+
overflow: "hidden"
|
|
140
|
+
},
|
|
141
|
+
children: isDet ? /*#__PURE__*/_jsx(Box, {
|
|
142
|
+
"aria-hidden": "true",
|
|
143
|
+
sx: {
|
|
144
|
+
height: "100%",
|
|
145
|
+
width: "".concat(clamped, "%"),
|
|
146
|
+
background: fill,
|
|
147
|
+
borderRadius: "inherit",
|
|
148
|
+
transition: "width var(--duration-base, 180ms) var(--easing-out, cubic-bezier(.2,.8,.2,1))"
|
|
149
|
+
}
|
|
150
|
+
}) : /*#__PURE__*/_jsx(Box, {
|
|
151
|
+
"aria-hidden": "true",
|
|
152
|
+
sx: {
|
|
153
|
+
position: "absolute",
|
|
154
|
+
inset: 0,
|
|
155
|
+
"&::before": {
|
|
156
|
+
content: '""',
|
|
157
|
+
position: "absolute",
|
|
158
|
+
top: 0,
|
|
159
|
+
bottom: 0,
|
|
160
|
+
// R-Mi.3 / perf — bar parked at left:0 and swept via a
|
|
161
|
+
// composited transform instead of animating `left` (which
|
|
162
|
+
// reflows every frame). translateX is relative to the bar's
|
|
163
|
+
// OWN width (40% of the track), so -100% parks it just off
|
|
164
|
+
// the start edge (== old left:-40%) and 250% (= 250% × 40%
|
|
165
|
+
// = 100% of the track) drives it off the far end (== old
|
|
166
|
+
// left:100%) — same sweep, zero layout.
|
|
167
|
+
left: 0,
|
|
168
|
+
width: "40%",
|
|
169
|
+
background: fill,
|
|
170
|
+
borderRadius: "inherit",
|
|
171
|
+
willChange: "transform",
|
|
172
|
+
animation: "pui-progressbar-indeterminate 1.4s ease-in-out infinite"
|
|
173
|
+
},
|
|
174
|
+
"@keyframes pui-progressbar-indeterminate": {
|
|
175
|
+
"0%": {
|
|
176
|
+
transform: "translateX(-100%)"
|
|
177
|
+
},
|
|
178
|
+
"60%": {
|
|
179
|
+
transform: "translateX(250%)"
|
|
180
|
+
},
|
|
181
|
+
"100%": {
|
|
182
|
+
transform: "translateX(250%)"
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// The global prefers-reduced-motion rule in base.css already
|
|
186
|
+
// suppresses animations; nothing extra needed here.
|
|
187
|
+
}
|
|
188
|
+
})
|
|
189
|
+
}), helper && /*#__PURE__*/_jsx(Box, {
|
|
190
|
+
id: helperId,
|
|
191
|
+
sx: {
|
|
192
|
+
marginTop: 0.5,
|
|
193
|
+
fontSize: "var(--text-xs)",
|
|
194
|
+
color: "var(--fg-subtle)",
|
|
195
|
+
lineHeight: "var(--lh-normal)"
|
|
196
|
+
},
|
|
197
|
+
children: helper
|
|
198
|
+
})]
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
export default ProgressBar;
|
|
202
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","names":["React","Box","jsx","_jsx","jsxs","_jsxs","VARIANT_COLOR","primary","success","warning","danger","SIZE_HEIGHT","sm","md","lg","ProgressBar","_ref","value","_ref$indeterminate","indeterminate","_ref$variant","variant","_ref$size","size","label","helper","_ref$showLabel","showLabel","ariaLabel","ariaLabelledBy","sx","isDet","clamped","Math","max","min","Number","fill","height","process","env","console","warn","reactId","useId","labelId","concat","undefined","helperId","effectiveLabelledBy","_objectSpread","width","children","display","alignItems","justifyContent","gap","marginBottom","id","component","fontSize","fontWeight","color","lineHeight","fontVariantNumeric","marginLeft","round","role","position","borderRadius","background","overflow","transition","inset","content","top","bottom","left","willChange","animation","transform","marginTop"],"sources":["../../../../src/lib/v2/components/ProgressBar.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * ProgressBar — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"ProgressBar\". Determinate or indeterminate\r\n * progress indicator for chunked operations (uploads, batch jobs,\r\n * long-running form steps) where a Skeleton is not appropriate.\r\n *\r\n * R-Sk usage rule (charter §03 Skeleton): \"Use ProgressBar (not\r\n * skeleton) for operations whose duration is known and where the user\r\n * benefits from a percentage signal — e.g. file uploads, batch\r\n * exports, multi-step ingestion.\"\r\n *\r\n * a11y:\r\n * - role=\"progressbar\"\r\n * - Determinate: aria-valuenow / aria-valuemin / aria-valuemax (charter R-Ar)\r\n * - Indeterminate: aria-valuenow OMITTED (WAI-ARIA convention)\r\n * - aria-label or aria-labelledby (caller responsibility — provide one)\r\n * - aria-describedby wires the `helper` text into the AT tree so SR\r\n * users hear the qualitative context (\"3 sur 6 fichiers traités\")\r\n * alongside the quantitative one (\"42 %\"). Audit Batch 5 / B5-2.\r\n *\r\n * Examples:\r\n *\r\n * <ProgressBar value={42} aria-label=\"Téléversement en cours\" />\r\n *\r\n * <ProgressBar value={87} variant=\"success\" showLabel\r\n * aria-label=\"Indexation des documents\" />\r\n *\r\n * <ProgressBar indeterminate aria-label=\"Connexion au serveur\" />\r\n *\r\n * <ProgressBar value={50} size=\"lg\" variant=\"warning\"\r\n * label=\"Synchronisation BAM\"\r\n * helper=\"3 sur 6 fichiers traités\" />\r\n */\r\n\r\nexport type ProgressBarVariant = \"primary\" | \"success\" | \"warning\" | \"danger\";\r\nexport type ProgressBarSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nconst VARIANT_COLOR: Record<ProgressBarVariant, string> = {\r\n primary: \"var(--accent)\",\r\n success: \"var(--success)\",\r\n warning: \"var(--warning)\",\r\n danger: \"var(--danger)\",\r\n};\r\n\r\nconst SIZE_HEIGHT: Record<ProgressBarSize, number> = { sm: 4, md: 6, lg: 8 };\r\n\r\nexport interface ProgressBarProps {\r\n value?: number | undefined;\r\n indeterminate?: boolean | undefined;\r\n variant?: ProgressBarVariant | undefined;\r\n size?: ProgressBarSize | undefined;\r\n label?: React.ReactNode | undefined;\r\n helper?: React.ReactNode | undefined;\r\n showLabel?: boolean | undefined;\r\n \"aria-label\"?: string | undefined;\r\n \"aria-labelledby\"?: string | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction ProgressBar({\r\n value,\r\n indeterminate = false,\r\n variant = \"primary\",\r\n size = \"md\",\r\n label,\r\n helper,\r\n showLabel = false,\r\n \"aria-label\": ariaLabel,\r\n \"aria-labelledby\": ariaLabelledBy,\r\n sx,\r\n}: ProgressBarProps) {\r\n // Defensive clamp: callers occasionally pass over-range values (e.g. 102%\r\n // from rounding). Charter forbids surprising the user — clamp instead of\r\n // overflowing the track visually.\r\n const isDet = !indeterminate && value != null;\r\n const clamped = isDet ? Math.max(0, Math.min(100, Number(value) || 0)) : 0;\r\n const fill = VARIANT_COLOR[variant] || VARIANT_COLOR.primary;\r\n const height = SIZE_HEIGHT[size] || SIZE_HEIGHT.md;\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !ariaLabel && !ariaLabelledBy && !label) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <ProgressBar> requires aria-label, aria-labelledby, or a `label` prop for screen readers.\"\r\n );\r\n }\r\n\r\n // If an inline `label` is rendered we wire aria-labelledby internally\r\n // so the caller doesn't have to manage the id themselves.\r\n // If `helper` is rendered, wire it via aria-describedby on the\r\n // progressbar so the qualitative context reaches AT. Audit Batch 5.\r\n const reactId = React.useId();\r\n const labelId = label ? `${reactId}-lbl` : undefined;\r\n const helperId = helper ? `${reactId}-hlp` : undefined;\r\n const effectiveLabelledBy = ariaLabelledBy || labelId;\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", ...sx }}>\r\n {(label || (isDet && showLabel)) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"baseline\",\r\n justifyContent: \"space-between\",\r\n gap: 1,\r\n marginBottom: 0.5,\r\n }}\r\n >\r\n {label && (\r\n <Box\r\n id={labelId}\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n )}\r\n {isDet && showLabel && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n marginLeft: \"auto\",\r\n }}\r\n >\r\n {Math.round(clamped)}%\r\n </Box>\r\n )}\r\n </Box>\r\n )}\r\n\r\n <Box\r\n role=\"progressbar\"\r\n aria-label={ariaLabel}\r\n aria-labelledby={effectiveLabelledBy}\r\n aria-describedby={helperId}\r\n aria-valuemin={isDet ? 0 : undefined}\r\n aria-valuemax={isDet ? 100 : undefined}\r\n aria-valuenow={isDet ? Math.round(clamped) : undefined}\r\n sx={{\r\n position: \"relative\",\r\n width: \"100%\",\r\n height,\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--bg-subtle)\",\r\n overflow: \"hidden\",\r\n }}\r\n >\r\n {isDet ? (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n height: \"100%\",\r\n width: `${clamped}%`,\r\n background: fill,\r\n borderRadius: \"inherit\",\r\n transition:\r\n \"width var(--duration-base, 180ms) var(--easing-out, cubic-bezier(.2,.8,.2,1))\",\r\n }}\r\n />\r\n ) : (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n position: \"absolute\",\r\n inset: 0,\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n top: 0,\r\n bottom: 0,\r\n // R-Mi.3 / perf — bar parked at left:0 and swept via a\r\n // composited transform instead of animating `left` (which\r\n // reflows every frame). translateX is relative to the bar's\r\n // OWN width (40% of the track), so -100% parks it just off\r\n // the start edge (== old left:-40%) and 250% (= 250% × 40%\r\n // = 100% of the track) drives it off the far end (== old\r\n // left:100%) — same sweep, zero layout.\r\n left: 0,\r\n width: \"40%\",\r\n background: fill,\r\n borderRadius: \"inherit\",\r\n willChange: \"transform\",\r\n animation: \"pui-progressbar-indeterminate 1.4s ease-in-out infinite\",\r\n },\r\n \"@keyframes pui-progressbar-indeterminate\": {\r\n \"0%\": { transform: \"translateX(-100%)\" },\r\n \"60%\": { transform: \"translateX(250%)\" },\r\n \"100%\": { transform: \"translateX(250%)\" },\r\n },\r\n // The global prefers-reduced-motion rule in base.css already\r\n // suppresses animations; nothing extra needed here.\r\n }}\r\n />\r\n )}\r\n </Box>\r\n\r\n {helper && (\r\n <Box\r\n id={helperId}\r\n sx={{\r\n marginTop: 0.5,\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n }}\r\n >\r\n {helper}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default ProgressBar;\r\n"],"mappings":"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","ignoreList":[]}
|