@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,540 @@
|
|
|
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
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
+
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."); }
|
|
9
|
+
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; } }
|
|
10
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
11
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
12
|
+
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); }
|
|
13
|
+
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; }
|
|
14
|
+
import * as React from "react";
|
|
15
|
+
import { mergeLabels } from "../utils/mergeLabels";
|
|
16
|
+
import Box from "@mui/material/Box";
|
|
17
|
+
import IconButton from "@mui/material/IconButton";
|
|
18
|
+
import CloudUploadIcon from "@mui/icons-material/CloudUpload";
|
|
19
|
+
import CloseIcon from "@mui/icons-material/Close";
|
|
20
|
+
import InsertDriveFileIcon from "@mui/icons-material/InsertDriveFileOutlined";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Dropzone - Portnet UI v2
|
|
24
|
+
*
|
|
25
|
+
* Charter §03 · Component "Dropzone / FileUpload". Drop area + click/keyboard
|
|
26
|
+
* to open the OS file picker. Stateless wrt upload progress - the caller owns
|
|
27
|
+
* the upload state and feeds it back via `value`.
|
|
28
|
+
*
|
|
29
|
+
* <Dropzone
|
|
30
|
+
* accept="application/pdf,image/png,image/jpeg"
|
|
31
|
+
* maxSize={5 * 1024 * 1024}
|
|
32
|
+
* multiple
|
|
33
|
+
* value={files} // [{ id, name, size, progress, status, error }]
|
|
34
|
+
* onAdd={handleNewFiles}
|
|
35
|
+
* onRemove={(id) => removeFile(id)}
|
|
36
|
+
* onReject={(rejections) => showErrors(rejections)}
|
|
37
|
+
* hint="Formats acceptés : PDF, PNG, JPG. Max 5 Mo par fichier."
|
|
38
|
+
* />
|
|
39
|
+
*
|
|
40
|
+
* Localisation (FR / EN / AR):
|
|
41
|
+
* <Dropzone labels={{
|
|
42
|
+
* label: "Drag files here or click to browse",
|
|
43
|
+
* ariaLabel: "File drop zone",
|
|
44
|
+
* formatBytes: (n) => `${(n / 1024 / 1024).toFixed(1)} MB`,
|
|
45
|
+
* reasons: {
|
|
46
|
+
* "max-size": "too large",
|
|
47
|
+
* "type": "wrong type",
|
|
48
|
+
* "max-files": "limit reached",
|
|
49
|
+
* },
|
|
50
|
+
* buildRejectMessage: (rejected) => `${rejected.length} file(s) rejected`,
|
|
51
|
+
* addedSingle: (name) => `Added: ${name}`,
|
|
52
|
+
* addedMultiple: (n) => `${n} files added`,
|
|
53
|
+
* removeItem: (name) => `Remove ${name}`,
|
|
54
|
+
* }} />
|
|
55
|
+
*
|
|
56
|
+
* ── INSIDE A <Field> (R-I.1, R-I.3) ──────────────────────────────────
|
|
57
|
+
*
|
|
58
|
+
* Wrap it to get a visible label, required marker and error message:
|
|
59
|
+
*
|
|
60
|
+
* <Field label="Facture" required error={fileError} htmlFor="facture-file">
|
|
61
|
+
* <Dropzone value={…} onAdd={…} />
|
|
62
|
+
* </Field>
|
|
63
|
+
*
|
|
64
|
+
* Field clones its child with `id`, `aria-invalid`, `aria-describedby` and
|
|
65
|
+
* `error`. This component ACCEPTS all four and forwards them to the drop
|
|
66
|
+
* <button> — which is the canonical accessibility handle, not the hidden
|
|
67
|
+
* input. Before that forwarding existed the props were dropped silently:
|
|
68
|
+
* Field's <label htmlFor> pointed at an id present on no element, so the
|
|
69
|
+
* label named nothing and the button's accessible name was only the generic
|
|
70
|
+
* "Zone de dépôt de fichiers"; and a host-set error rendered its message
|
|
71
|
+
* while the control stayed valid to AT.
|
|
72
|
+
*
|
|
73
|
+
* `htmlFor` is worth passing explicitly when the field must be addressable
|
|
74
|
+
* from outside — Field otherwise generates a `useId`-based id, which is
|
|
75
|
+
* stable across renders but not predictable, so it cannot be targeted by
|
|
76
|
+
* focusFieldByName after a failed submit.
|
|
77
|
+
*
|
|
78
|
+
* A11y note (R-Ar.1):
|
|
79
|
+
* The drop target is a native <button>, not <div role="button">.
|
|
80
|
+
* Enter/Space activation, disabled state, and AT exposure come for
|
|
81
|
+
* free from the platform. The hidden <input type="file"> nested
|
|
82
|
+
* inside the button is aria-hidden - the button is the canonical
|
|
83
|
+
* accessibility handle.
|
|
84
|
+
*
|
|
85
|
+
* A11y note (R-A.1, live region):
|
|
86
|
+
* Acceptances and rejections are announced via a polite live region.
|
|
87
|
+
* Rejections are broken down by reason so SR users learn WHY without
|
|
88
|
+
* needing a host-side toast. aria-relevant is set explicitly to
|
|
89
|
+
* "additions text" — the spec default, but some SR + browser combos
|
|
90
|
+
* (NVDA + Firefox notably) skip announcements without it.
|
|
91
|
+
*/
|
|
92
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
93
|
+
// ─── Default FR formatters ───────────────────────────────────────────
|
|
94
|
+
|
|
95
|
+
function defaultFormatBytes(n) {
|
|
96
|
+
if (!Number.isFinite(n)) return "—";
|
|
97
|
+
if (n < 1024) return "".concat(n, " o");
|
|
98
|
+
if (n < 1024 * 1024) return "".concat(Math.round(n / 1024), " Ko");
|
|
99
|
+
return "".concat((n / 1024 / 1024).toFixed(1), " Mo");
|
|
100
|
+
}
|
|
101
|
+
var DEFAULT_REASONS = Object.freeze({
|
|
102
|
+
"max-size": "trop volumineux",
|
|
103
|
+
"type": "type non autorisé",
|
|
104
|
+
"max-files": "limite atteinte"
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Build a SR-friendly French sentence summarising a rejection bundle.
|
|
109
|
+
* Examples:
|
|
110
|
+
* 1 file, max-size → "1 fichier refusé : trop volumineux."
|
|
111
|
+
* 3 files, mixed reasons → "3 fichiers refusés : 1 trop volumineux,
|
|
112
|
+
* 2 type non autorisé."
|
|
113
|
+
*/
|
|
114
|
+
function defaultBuildRejectMessage(rejected, reasons) {
|
|
115
|
+
var total = rejected.length;
|
|
116
|
+
if (total === 0) return "";
|
|
117
|
+
var noun = total > 1 ? "fichiers refusés" : "fichier refusé";
|
|
118
|
+
var head = "".concat(total, " ").concat(noun);
|
|
119
|
+
var tally = {};
|
|
120
|
+
var _iterator = _createForOfIteratorHelper(rejected),
|
|
121
|
+
_step;
|
|
122
|
+
try {
|
|
123
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
124
|
+
var r = _step.value;
|
|
125
|
+
var label = reasons[r.reason];
|
|
126
|
+
if (!label) continue;
|
|
127
|
+
tally[label] = (tally[label] || 0) + 1;
|
|
128
|
+
}
|
|
129
|
+
} catch (err) {
|
|
130
|
+
_iterator.e(err);
|
|
131
|
+
} finally {
|
|
132
|
+
_iterator.f();
|
|
133
|
+
}
|
|
134
|
+
var buckets = Object.entries(tally);
|
|
135
|
+
if (buckets.length === 0) return "".concat(head, ".");
|
|
136
|
+
if (buckets.length === 1) {
|
|
137
|
+
var only = buckets[0];
|
|
138
|
+
return only ? "".concat(head, " : ").concat(only[0], ".") : "".concat(head, ".");
|
|
139
|
+
}
|
|
140
|
+
var parts = buckets.map(function (_ref) {
|
|
141
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
142
|
+
label = _ref2[0],
|
|
143
|
+
n = _ref2[1];
|
|
144
|
+
return "".concat(n, " ").concat(label);
|
|
145
|
+
});
|
|
146
|
+
return "".concat(head, " : ").concat(parts.join(", "), ".");
|
|
147
|
+
}
|
|
148
|
+
var DEFAULT_LABELS = Object.freeze({
|
|
149
|
+
label: "Glissez vos fichiers ici ou cliquez pour parcourir",
|
|
150
|
+
ariaLabel: "Zone de dépôt de fichiers",
|
|
151
|
+
formatBytes: defaultFormatBytes,
|
|
152
|
+
reasons: DEFAULT_REASONS,
|
|
153
|
+
buildRejectMessage: defaultBuildRejectMessage,
|
|
154
|
+
addedSingle: function addedSingle(name) {
|
|
155
|
+
return "Fichier ajout\xE9 : ".concat(name);
|
|
156
|
+
},
|
|
157
|
+
addedMultiple: function addedMultiple(n) {
|
|
158
|
+
return "".concat(n, " fichiers ajout\xE9s");
|
|
159
|
+
},
|
|
160
|
+
removeItem: function removeItem(name) {
|
|
161
|
+
return "Retirer ".concat(name);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// ─── Helpers ──────────────────────────────────────────────────────────
|
|
166
|
+
|
|
167
|
+
function matchesAccept(file, accept) {
|
|
168
|
+
if (!accept) return true;
|
|
169
|
+
var tokens = accept.split(",").map(function (t) {
|
|
170
|
+
return t.trim();
|
|
171
|
+
}).filter(Boolean);
|
|
172
|
+
if (tokens.length === 0) return true;
|
|
173
|
+
return tokens.some(function (t) {
|
|
174
|
+
if (t.startsWith(".")) {
|
|
175
|
+
return file.name.toLowerCase().endsWith(t.toLowerCase());
|
|
176
|
+
}
|
|
177
|
+
if (t.endsWith("/*")) {
|
|
178
|
+
var prefix = t.slice(0, -1); // "image/"
|
|
179
|
+
return file.type.startsWith(prefix);
|
|
180
|
+
}
|
|
181
|
+
return file.type === t;
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// ─── Component ────────────────────────────────────────────────────────
|
|
186
|
+
|
|
187
|
+
function Dropzone(_ref3) {
|
|
188
|
+
var accept = _ref3.accept,
|
|
189
|
+
maxSize = _ref3.maxSize,
|
|
190
|
+
maxFiles = _ref3.maxFiles,
|
|
191
|
+
_ref3$multiple = _ref3.multiple,
|
|
192
|
+
multiple = _ref3$multiple === void 0 ? false : _ref3$multiple,
|
|
193
|
+
_ref3$disabled = _ref3.disabled,
|
|
194
|
+
disabled = _ref3$disabled === void 0 ? false : _ref3$disabled,
|
|
195
|
+
_ref3$value = _ref3.value,
|
|
196
|
+
value = _ref3$value === void 0 ? [] : _ref3$value,
|
|
197
|
+
onAdd = _ref3.onAdd,
|
|
198
|
+
onRemove = _ref3.onRemove,
|
|
199
|
+
onReject = _ref3.onReject,
|
|
200
|
+
label = _ref3.label,
|
|
201
|
+
ariaLabelProp = _ref3["aria-label"],
|
|
202
|
+
hint = _ref3.hint,
|
|
203
|
+
labels = _ref3.labels,
|
|
204
|
+
sx = _ref3.sx,
|
|
205
|
+
id = _ref3.id,
|
|
206
|
+
_ref3$error = _ref3.error,
|
|
207
|
+
error = _ref3$error === void 0 ? false : _ref3$error,
|
|
208
|
+
ariaInvalidProp = _ref3["aria-invalid"],
|
|
209
|
+
ariaDescribedByProp = _ref3["aria-describedby"];
|
|
210
|
+
var L = React.useMemo(function () {
|
|
211
|
+
if (!labels) return DEFAULT_LABELS;
|
|
212
|
+
return mergeLabels(DEFAULT_LABELS, _objectSpread(_objectSpread({}, labels), {}, {
|
|
213
|
+
/*
|
|
214
|
+
* `reasons` is a NESTED dictionary and needs its own merge, at its own
|
|
215
|
+
* level. Merging only at the top would replace the whole sub-object, so a
|
|
216
|
+
* consumer overriding ONE reason would delete the others — and the
|
|
217
|
+
* previous `|| {}` guarded the sub-object against being undefined without
|
|
218
|
+
* guarding its VALUES, which is the same hazard one level down.
|
|
219
|
+
*/
|
|
220
|
+
reasons: mergeLabels(DEFAULT_REASONS, labels.reasons)
|
|
221
|
+
}));
|
|
222
|
+
}, [labels]);
|
|
223
|
+
var dropLabel = label != null ? label : L.label;
|
|
224
|
+
var ariaLabel = ariaLabelProp != null ? ariaLabelProp : L.ariaLabel;
|
|
225
|
+
var inputRef = React.useRef(null);
|
|
226
|
+
var liveRef = React.useRef(null);
|
|
227
|
+
var _React$useState = React.useState(false),
|
|
228
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
229
|
+
dragOver = _React$useState2[0],
|
|
230
|
+
setDragOver = _React$useState2[1];
|
|
231
|
+
// Stable, per-instance, collision-safe id for the hint association.
|
|
232
|
+
var hintId = React.useId();
|
|
233
|
+
|
|
234
|
+
/*
|
|
235
|
+
* R-I.3 — invalid when Field said so via `error`, or when a host set the
|
|
236
|
+
* attribute directly. Either alone is sufficient; Field passes both, other
|
|
237
|
+
* callers may pass one.
|
|
238
|
+
*/
|
|
239
|
+
var isInvalid = error || ariaInvalidProp === true || ariaInvalidProp === "true";
|
|
240
|
+
|
|
241
|
+
/*
|
|
242
|
+
* MERGED, not replaced. Field's value points at its hint and/or its error
|
|
243
|
+
* message; hintId points at this component's own hint, rendered inside the
|
|
244
|
+
* button. Dropping either would lose a real description — which is what
|
|
245
|
+
* happened while this prop was not accepted at all.
|
|
246
|
+
*/
|
|
247
|
+
var describedBy = [ariaDescribedByProp, hint ? hintId : null].filter(Boolean).join(" ") || undefined;
|
|
248
|
+
var announce = function announce(msg) {
|
|
249
|
+
if (liveRef.current) {
|
|
250
|
+
// Setting via DOM (not state) avoids re-renders that would re-trigger
|
|
251
|
+
// SR announcements for unrelated UI updates.
|
|
252
|
+
liveRef.current.textContent = msg;
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
var validate = React.useCallback(function (incoming) {
|
|
256
|
+
var accepted = [];
|
|
257
|
+
var rejected = [];
|
|
258
|
+
var remainingSlots = maxFiles != null ? Math.max(0, maxFiles - value.length) : Infinity;
|
|
259
|
+
var _iterator2 = _createForOfIteratorHelper(incoming),
|
|
260
|
+
_step2;
|
|
261
|
+
try {
|
|
262
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
263
|
+
var file = _step2.value;
|
|
264
|
+
if (accepted.length >= remainingSlots) {
|
|
265
|
+
rejected.push({
|
|
266
|
+
file: file,
|
|
267
|
+
reason: "max-files"
|
|
268
|
+
});
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (maxSize != null && file.size > maxSize) {
|
|
272
|
+
rejected.push({
|
|
273
|
+
file: file,
|
|
274
|
+
reason: "max-size"
|
|
275
|
+
});
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
if (!matchesAccept(file, accept)) {
|
|
279
|
+
rejected.push({
|
|
280
|
+
file: file,
|
|
281
|
+
reason: "type"
|
|
282
|
+
});
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
accepted.push(file);
|
|
286
|
+
if (!multiple) break; // single mode: only first valid
|
|
287
|
+
}
|
|
288
|
+
} catch (err) {
|
|
289
|
+
_iterator2.e(err);
|
|
290
|
+
} finally {
|
|
291
|
+
_iterator2.f();
|
|
292
|
+
}
|
|
293
|
+
return {
|
|
294
|
+
accepted: accepted,
|
|
295
|
+
rejected: rejected
|
|
296
|
+
};
|
|
297
|
+
}, [accept, maxSize, maxFiles, multiple, value.length]);
|
|
298
|
+
var handleFiles = function handleFiles(fileList) {
|
|
299
|
+
if (disabled) return;
|
|
300
|
+
var files = Array.from(fileList || []);
|
|
301
|
+
if (files.length === 0) return;
|
|
302
|
+
var _validate = validate(files),
|
|
303
|
+
accepted = _validate.accepted,
|
|
304
|
+
rejected = _validate.rejected;
|
|
305
|
+
if (accepted.length > 0) {
|
|
306
|
+
onAdd === null || onAdd === void 0 ? void 0 : onAdd(accepted);
|
|
307
|
+
var _accepted = _slicedToArray(accepted, 1),
|
|
308
|
+
first = _accepted[0];
|
|
309
|
+
announce(accepted.length === 1 && first ? L.addedSingle(first.name) : L.addedMultiple(accepted.length));
|
|
310
|
+
}
|
|
311
|
+
if (rejected.length > 0) {
|
|
312
|
+
onReject === null || onReject === void 0 ? void 0 : onReject(rejected);
|
|
313
|
+
announce(L.buildRejectMessage(rejected, L.reasons));
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
var onInputChange = function onInputChange(e) {
|
|
317
|
+
handleFiles(e.target.files);
|
|
318
|
+
// reset so the same file can be re-added after removal
|
|
319
|
+
e.target.value = "";
|
|
320
|
+
};
|
|
321
|
+
var openPicker = function openPicker() {
|
|
322
|
+
var _inputRef$current;
|
|
323
|
+
if (disabled) return;
|
|
324
|
+
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
|
|
325
|
+
};
|
|
326
|
+
var onDragOver = function onDragOver(e) {
|
|
327
|
+
if (disabled) return;
|
|
328
|
+
e.preventDefault();
|
|
329
|
+
e.stopPropagation();
|
|
330
|
+
if (!dragOver) setDragOver(true);
|
|
331
|
+
};
|
|
332
|
+
var onDragLeave = function onDragLeave(e) {
|
|
333
|
+
e.preventDefault();
|
|
334
|
+
e.stopPropagation();
|
|
335
|
+
// Only clear when leaving the wrapper itself, not crossing a child.
|
|
336
|
+
if (e.currentTarget.contains(e.relatedTarget)) return;
|
|
337
|
+
setDragOver(false);
|
|
338
|
+
};
|
|
339
|
+
var onDrop = function onDrop(e) {
|
|
340
|
+
var _e$dataTransfer;
|
|
341
|
+
e.preventDefault();
|
|
342
|
+
e.stopPropagation();
|
|
343
|
+
setDragOver(false);
|
|
344
|
+
if (disabled) return;
|
|
345
|
+
handleFiles((_e$dataTransfer = e.dataTransfer) === null || _e$dataTransfer === void 0 ? void 0 : _e$dataTransfer.files);
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
/*
|
|
349
|
+
* Border colour precedence: dragOver > invalid > resting.
|
|
350
|
+
*
|
|
351
|
+
* Drag feedback wins deliberately — while a file is over the target the
|
|
352
|
+
* user needs to know the drop will land, and the invalid state is about to
|
|
353
|
+
* be resolved by that very drop.
|
|
354
|
+
*/
|
|
355
|
+
var borderColor = dragOver ? "var(--accent)" : isInvalid ? "var(--danger)" : "var(--border-strong)";
|
|
356
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
357
|
+
sx: _objectSpread({
|
|
358
|
+
width: "100%"
|
|
359
|
+
}, sx),
|
|
360
|
+
children: [/*#__PURE__*/_jsxs(Box, _objectSpread(_objectSpread(_objectSpread({
|
|
361
|
+
component: "button",
|
|
362
|
+
type: "button"
|
|
363
|
+
}, id !== undefined ? {
|
|
364
|
+
id: id
|
|
365
|
+
} : {}), {}, {
|
|
366
|
+
disabled: disabled,
|
|
367
|
+
"aria-label": ariaLabel
|
|
368
|
+
}, isInvalid ? {
|
|
369
|
+
"aria-invalid": true
|
|
370
|
+
} : {}), {}, {
|
|
371
|
+
"aria-describedby": describedBy,
|
|
372
|
+
onClick: openPicker,
|
|
373
|
+
onDragOver: onDragOver,
|
|
374
|
+
onDragEnter: onDragOver,
|
|
375
|
+
onDragLeave: onDragLeave,
|
|
376
|
+
onDrop: onDrop,
|
|
377
|
+
sx: {
|
|
378
|
+
// <button> reset - neutralise UA defaults so the drop target
|
|
379
|
+
// visually matches the previous Box-based design.
|
|
380
|
+
font: "inherit",
|
|
381
|
+
color: "inherit",
|
|
382
|
+
width: "100%",
|
|
383
|
+
// Layout
|
|
384
|
+
display: "flex",
|
|
385
|
+
flexDirection: "column",
|
|
386
|
+
alignItems: "center",
|
|
387
|
+
justifyContent: "center",
|
|
388
|
+
gap: 1,
|
|
389
|
+
padding: "var(--s-5) var(--s-4)",
|
|
390
|
+
background: dragOver ? "var(--accent-soft)" : "var(--bg-subtle)",
|
|
391
|
+
border: "2px dashed ".concat(borderColor),
|
|
392
|
+
borderRadius: "var(--r-lg)",
|
|
393
|
+
cursor: disabled ? "not-allowed" : "pointer",
|
|
394
|
+
opacity: disabled ? 0.55 : 1,
|
|
395
|
+
textAlign: "center",
|
|
396
|
+
transition: "background var(--duration-fast, 80ms) ease, border-color var(--duration-fast, 80ms) ease",
|
|
397
|
+
"&:hover": !disabled && !dragOver ? {
|
|
398
|
+
background: "var(--bg-hover)",
|
|
399
|
+
borderColor: "var(--accent)"
|
|
400
|
+
} : {},
|
|
401
|
+
"&:focus-visible": {
|
|
402
|
+
outline: "2px solid var(--accent)",
|
|
403
|
+
outlineOffset: "var(--pui-outline-offset)"
|
|
404
|
+
}
|
|
405
|
+
},
|
|
406
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
407
|
+
"aria-hidden": "true",
|
|
408
|
+
sx: {
|
|
409
|
+
color: dragOver ? "var(--accent)" : isInvalid ? "var(--danger)" : "var(--fg-muted)",
|
|
410
|
+
display: "inline-flex"
|
|
411
|
+
},
|
|
412
|
+
children: /*#__PURE__*/_jsx(CloudUploadIcon, {
|
|
413
|
+
style: {
|
|
414
|
+
fontSize: 32
|
|
415
|
+
}
|
|
416
|
+
})
|
|
417
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
418
|
+
sx: {
|
|
419
|
+
fontSize: "var(--text-sm)",
|
|
420
|
+
fontWeight: "var(--fw-semibold)",
|
|
421
|
+
color: "var(--fg)"
|
|
422
|
+
},
|
|
423
|
+
children: dropLabel
|
|
424
|
+
}), hint && /*#__PURE__*/_jsx(Box, {
|
|
425
|
+
id: hintId,
|
|
426
|
+
sx: {
|
|
427
|
+
fontSize: "var(--text-xs)",
|
|
428
|
+
color: "var(--fg-muted)"
|
|
429
|
+
},
|
|
430
|
+
children: hint
|
|
431
|
+
}), /*#__PURE__*/_jsx("input", {
|
|
432
|
+
ref: inputRef,
|
|
433
|
+
type: "file",
|
|
434
|
+
accept: accept,
|
|
435
|
+
multiple: multiple,
|
|
436
|
+
disabled: disabled,
|
|
437
|
+
onChange: onInputChange,
|
|
438
|
+
tabIndex: -1,
|
|
439
|
+
"aria-hidden": "true",
|
|
440
|
+
style: {
|
|
441
|
+
position: "absolute",
|
|
442
|
+
width: 1,
|
|
443
|
+
height: 1,
|
|
444
|
+
padding: 0,
|
|
445
|
+
margin: -1,
|
|
446
|
+
overflow: "hidden",
|
|
447
|
+
clipPath: "inset(50%)",
|
|
448
|
+
border: 0
|
|
449
|
+
}
|
|
450
|
+
})]
|
|
451
|
+
})), /*#__PURE__*/_jsx(Box, {
|
|
452
|
+
ref: liveRef,
|
|
453
|
+
role: "status",
|
|
454
|
+
"aria-live": "polite",
|
|
455
|
+
"aria-relevant": "additions text",
|
|
456
|
+
className: "pui-sr-only"
|
|
457
|
+
}), value.length > 0 && /*#__PURE__*/_jsx(Box, {
|
|
458
|
+
component: "ul"
|
|
459
|
+
/* Explicit role — several screen readers strip list semantics when
|
|
460
|
+
CSS list-style:none is applied. Same reason FormErrorSummary sets
|
|
461
|
+
it. */,
|
|
462
|
+
role: "list",
|
|
463
|
+
sx: {
|
|
464
|
+
listStyle: "none",
|
|
465
|
+
padding: 0,
|
|
466
|
+
margin: "var(--s-3) 0 0",
|
|
467
|
+
display: "flex",
|
|
468
|
+
flexDirection: "column",
|
|
469
|
+
gap: "var(--s-1)"
|
|
470
|
+
},
|
|
471
|
+
children: value.map(function (f, i) {
|
|
472
|
+
var _ref4, _f$id, _f$size;
|
|
473
|
+
var id = (_ref4 = (_f$id = f.id) !== null && _f$id !== void 0 ? _f$id : f.name) !== null && _ref4 !== void 0 ? _ref4 : i;
|
|
474
|
+
var status = f.status || (f.error ? "error" : f.progress === 100 ? "done" : f.progress != null ? "uploading" : "ready");
|
|
475
|
+
var color = status === "error" ? "var(--danger)" : status === "done" ? "var(--success)" : "var(--fg-muted)";
|
|
476
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
477
|
+
component: "li",
|
|
478
|
+
role: "listitem",
|
|
479
|
+
sx: {
|
|
480
|
+
display: "flex",
|
|
481
|
+
alignItems: "center",
|
|
482
|
+
gap: "var(--s-2)",
|
|
483
|
+
padding: "var(--s-2) var(--s-3)",
|
|
484
|
+
background: "var(--surface)",
|
|
485
|
+
border: "1px solid var(--border)",
|
|
486
|
+
borderRadius: "var(--r-md)"
|
|
487
|
+
},
|
|
488
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
489
|
+
"aria-hidden": "true",
|
|
490
|
+
sx: {
|
|
491
|
+
color: color,
|
|
492
|
+
display: "inline-flex"
|
|
493
|
+
},
|
|
494
|
+
children: /*#__PURE__*/_jsx(InsertDriveFileIcon, {
|
|
495
|
+
fontSize: "small"
|
|
496
|
+
})
|
|
497
|
+
}), /*#__PURE__*/_jsxs(Box, {
|
|
498
|
+
sx: {
|
|
499
|
+
flex: 1,
|
|
500
|
+
minWidth: 0
|
|
501
|
+
},
|
|
502
|
+
children: [/*#__PURE__*/_jsx(Box, {
|
|
503
|
+
sx: {
|
|
504
|
+
fontSize: "var(--text-sm)",
|
|
505
|
+
fontWeight: "var(--fw-medium)",
|
|
506
|
+
color: "var(--fg)",
|
|
507
|
+
overflow: "hidden",
|
|
508
|
+
textOverflow: "ellipsis",
|
|
509
|
+
whiteSpace: "nowrap"
|
|
510
|
+
},
|
|
511
|
+
children: f.name
|
|
512
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
513
|
+
sx: {
|
|
514
|
+
fontSize: "var(--text-xs)",
|
|
515
|
+
color: status === "error" ? "var(--danger)" : "var(--fg-subtle)",
|
|
516
|
+
fontVariantNumeric: "tabular-nums"
|
|
517
|
+
},
|
|
518
|
+
children: status === "error" && f.error ? f.error : "".concat(L.formatBytes((_f$size = f.size) !== null && _f$size !== void 0 ? _f$size : NaN)).concat(f.progress != null ? " \xB7 ".concat(Math.round(f.progress), "%") : "")
|
|
519
|
+
})]
|
|
520
|
+
}), onRemove && /*#__PURE__*/_jsx(IconButton, {
|
|
521
|
+
size: "small",
|
|
522
|
+
onClick: function onClick(e) {
|
|
523
|
+
e.stopPropagation();
|
|
524
|
+
onRemove(id);
|
|
525
|
+
},
|
|
526
|
+
"aria-label": L.removeItem(f.name),
|
|
527
|
+
sx: {
|
|
528
|
+
color: "var(--fg-muted)"
|
|
529
|
+
},
|
|
530
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {
|
|
531
|
+
fontSize: "small"
|
|
532
|
+
})
|
|
533
|
+
})]
|
|
534
|
+
}, id);
|
|
535
|
+
})
|
|
536
|
+
})]
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
export default Dropzone;
|
|
540
|
+
//# sourceMappingURL=Dropzone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dropzone.js","names":["React","mergeLabels","Box","IconButton","CloudUploadIcon","CloseIcon","InsertDriveFileIcon","jsx","_jsx","jsxs","_jsxs","defaultFormatBytes","n","Number","isFinite","concat","Math","round","toFixed","DEFAULT_REASONS","Object","freeze","defaultBuildRejectMessage","rejected","reasons","total","length","noun","head","tally","_iterator","_createForOfIteratorHelper","_step","s","done","r","value","label","reason","err","e","f","buckets","entries","only","parts","map","_ref","_ref2","_slicedToArray","join","DEFAULT_LABELS","ariaLabel","formatBytes","buildRejectMessage","addedSingle","name","addedMultiple","removeItem","matchesAccept","file","accept","tokens","split","t","trim","filter","Boolean","some","startsWith","toLowerCase","endsWith","prefix","slice","type","Dropzone","_ref3","maxSize","maxFiles","_ref3$multiple","multiple","_ref3$disabled","disabled","_ref3$value","onAdd","onRemove","onReject","ariaLabelProp","hint","labels","sx","id","_ref3$error","error","ariaInvalidProp","ariaDescribedByProp","L","useMemo","_objectSpread","dropLabel","inputRef","useRef","liveRef","_React$useState","useState","_React$useState2","dragOver","setDragOver","hintId","useId","isInvalid","describedBy","undefined","announce","msg","current","textContent","validate","useCallback","incoming","accepted","remainingSlots","max","Infinity","_iterator2","_step2","push","size","handleFiles","fileList","files","Array","from","_validate","_accepted","first","onInputChange","target","openPicker","_inputRef$current","click","onDragOver","preventDefault","stopPropagation","onDragLeave","currentTarget","contains","relatedTarget","onDrop","_e$dataTransfer","dataTransfer","borderColor","width","children","component","onClick","onDragEnter","font","color","display","flexDirection","alignItems","justifyContent","gap","padding","background","border","borderRadius","cursor","opacity","textAlign","transition","outline","outlineOffset","style","fontSize","fontWeight","ref","onChange","tabIndex","position","height","margin","overflow","clipPath","role","className","listStyle","i","_ref4","_f$id","_f$size","status","progress","flex","minWidth","textOverflow","whiteSpace","fontVariantNumeric","NaN"],"sources":["../../../../src/lib/v2/components/Dropzone.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloudUploadIcon from \"@mui/icons-material/CloudUpload\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport InsertDriveFileIcon from \"@mui/icons-material/InsertDriveFileOutlined\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Dropzone - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Dropzone / FileUpload\". Drop area + click/keyboard\r\n * to open the OS file picker. Stateless wrt upload progress - the caller owns\r\n * the upload state and feeds it back via `value`.\r\n *\r\n * <Dropzone\r\n * accept=\"application/pdf,image/png,image/jpeg\"\r\n * maxSize={5 * 1024 * 1024}\r\n * multiple\r\n * value={files} // [{ id, name, size, progress, status, error }]\r\n * onAdd={handleNewFiles}\r\n * onRemove={(id) => removeFile(id)}\r\n * onReject={(rejections) => showErrors(rejections)}\r\n * hint=\"Formats acceptés : PDF, PNG, JPG. Max 5 Mo par fichier.\"\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <Dropzone labels={{\r\n * label: \"Drag files here or click to browse\",\r\n * ariaLabel: \"File drop zone\",\r\n * formatBytes: (n) => `${(n / 1024 / 1024).toFixed(1)} MB`,\r\n * reasons: {\r\n * \"max-size\": \"too large\",\r\n * \"type\": \"wrong type\",\r\n * \"max-files\": \"limit reached\",\r\n * },\r\n * buildRejectMessage: (rejected) => `${rejected.length} file(s) rejected`,\r\n * addedSingle: (name) => `Added: ${name}`,\r\n * addedMultiple: (n) => `${n} files added`,\r\n * removeItem: (name) => `Remove ${name}`,\r\n * }} />\r\n *\r\n * ── INSIDE A <Field> (R-I.1, R-I.3) ──────────────────────────────────\r\n *\r\n * Wrap it to get a visible label, required marker and error message:\r\n *\r\n * <Field label=\"Facture\" required error={fileError} htmlFor=\"facture-file\">\r\n * <Dropzone value={…} onAdd={…} />\r\n * </Field>\r\n *\r\n * Field clones its child with `id`, `aria-invalid`, `aria-describedby` and\r\n * `error`. This component ACCEPTS all four and forwards them to the drop\r\n * <button> — which is the canonical accessibility handle, not the hidden\r\n * input. Before that forwarding existed the props were dropped silently:\r\n * Field's <label htmlFor> pointed at an id present on no element, so the\r\n * label named nothing and the button's accessible name was only the generic\r\n * \"Zone de dépôt de fichiers\"; and a host-set error rendered its message\r\n * while the control stayed valid to AT.\r\n *\r\n * `htmlFor` is worth passing explicitly when the field must be addressable\r\n * from outside — Field otherwise generates a `useId`-based id, which is\r\n * stable across renders but not predictable, so it cannot be targeted by\r\n * focusFieldByName after a failed submit.\r\n *\r\n * A11y note (R-Ar.1):\r\n * The drop target is a native <button>, not <div role=\"button\">.\r\n * Enter/Space activation, disabled state, and AT exposure come for\r\n * free from the platform. The hidden <input type=\"file\"> nested\r\n * inside the button is aria-hidden - the button is the canonical\r\n * accessibility handle.\r\n *\r\n * A11y note (R-A.1, live region):\r\n * Acceptances and rejections are announced via a polite live region.\r\n * Rejections are broken down by reason so SR users learn WHY without\r\n * needing a host-side toast. aria-relevant is set explicitly to\r\n * \"additions text\" — the spec default, but some SR + browser combos\r\n * (NVDA + Firefox notably) skip announcements without it.\r\n */\r\n\r\nexport type DropzoneFileStatus = \"ready\" | \"uploading\" | \"done\" | \"error\";\r\n\r\nexport interface DropzoneFile {\r\n id?: string | number | undefined;\r\n name: string;\r\n size?: number | undefined;\r\n progress?: number | undefined;\r\n status?: DropzoneFileStatus | undefined;\r\n error?: string | undefined;\r\n}\r\n\r\nexport type DropzoneRejectReason = \"max-size\" | \"type\" | \"max-files\";\r\n\r\nexport interface DropzoneRejection {\r\n file: File;\r\n reason: DropzoneRejectReason;\r\n}\r\n\r\nexport interface DropzoneReasons {\r\n \"max-size\"?: string | undefined;\r\n \"type\"?: string | undefined;\r\n \"max-files\"?: string | undefined;\r\n}\r\n\r\nexport interface DropzoneLabels {\r\n label?: React.ReactNode | undefined;\r\n ariaLabel?: string | undefined;\r\n formatBytes?: ((n: number) => string) | undefined;\r\n reasons?: DropzoneReasons | undefined;\r\n buildRejectMessage?: ((rejected: DropzoneRejection[], reasons: DropzoneReasons) => string) | undefined;\r\n addedSingle?: ((name: string) => string) | undefined;\r\n addedMultiple?: ((n: number) => string) | undefined;\r\n removeItem?: ((name: string) => string) | undefined;\r\n}\r\n\r\nexport interface DropzoneProps {\r\n accept?: string | undefined;\r\n maxSize?: number | undefined;\r\n maxFiles?: number | undefined;\r\n multiple?: boolean | undefined;\r\n disabled?: boolean | undefined;\r\n value?: DropzoneFile[] | undefined;\r\n onAdd?: ((files: File[]) => void) | undefined;\r\n onRemove?: ((id: string | number) => void) | undefined;\r\n onReject?: ((rejections: DropzoneRejection[]) => void) | undefined;\r\n // Legacy/back-compat per-prop overrides; win over labels.* when both passed.\r\n label?: React.ReactNode | undefined;\r\n \"aria-label\"?: string | undefined;\r\n hint?: React.ReactNode | undefined;\r\n labels?: DropzoneLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n /**\r\n * Id for the drop <button>. Injected by Field from `htmlFor || name`, so\r\n * its <label htmlFor> resolves to a real element (R-I.1).\r\n *\r\n * Pass a stable value through Field's `htmlFor` when the field needs to be\r\n * addressable from outside the component — focusFieldByName resolves\r\n * `[id=…]` first, and that is how a failed submit reaches a Dropzone\r\n * (R-F.3).\r\n */\r\n id?: string | undefined;\r\n /**\r\n * Invalid state. Injected by Field as `error={hasError}`.\r\n *\r\n * Drives both the danger border and `aria-invalid`, so the state is\r\n * conveyed visually AND programmatically rather than by the helper text\r\n * alone (R-4.1 / R-I.3).\r\n */\r\n error?: boolean | undefined;\r\n /**\r\n * Injected by Field. Accepted explicitly so an aria-invalid passed without\r\n * `error` still lands — the two are separate props on Field's clone and a\r\n * host can legitimately set either.\r\n */\r\n \"aria-invalid\"?: boolean | \"true\" | \"false\" | undefined;\r\n /**\r\n * Injected by Field, pointing at its hint and/or error message. MERGED with\r\n * this component's own internal hint id rather than replacing it — both\r\n * descriptions are real and the user needs both.\r\n */\r\n \"aria-describedby\"?: string | undefined;\r\n}\r\n\r\n// ─── Default FR formatters ───────────────────────────────────────────\r\n\r\nfunction defaultFormatBytes(n: number): string {\r\n if (!Number.isFinite(n)) return \"—\";\r\n if (n < 1024) return `${n} o`;\r\n if (n < 1024 * 1024) return `${Math.round(n / 1024)} Ko`;\r\n return `${(n / 1024 / 1024).toFixed(1)} Mo`;\r\n}\r\n\r\nconst DEFAULT_REASONS = Object.freeze({\r\n \"max-size\": \"trop volumineux\",\r\n \"type\": \"type non autorisé\",\r\n \"max-files\": \"limite atteinte\",\r\n});\r\n\r\n/**\r\n * Build a SR-friendly French sentence summarising a rejection bundle.\r\n * Examples:\r\n * 1 file, max-size → \"1 fichier refusé : trop volumineux.\"\r\n * 3 files, mixed reasons → \"3 fichiers refusés : 1 trop volumineux,\r\n * 2 type non autorisé.\"\r\n */\r\nfunction defaultBuildRejectMessage(rejected: DropzoneRejection[], reasons: DropzoneReasons): string {\r\n const total = rejected.length;\r\n if (total === 0) return \"\";\r\n const noun = total > 1 ? \"fichiers refusés\" : \"fichier refusé\";\r\n const head = `${total} ${noun}`;\r\n\r\n const tally: Record<string, number> = {};\r\n for (const r of rejected) {\r\n const label = reasons[r.reason];\r\n if (!label) continue;\r\n tally[label] = (tally[label] || 0) + 1;\r\n }\r\n const buckets = Object.entries(tally);\r\n if (buckets.length === 0) return `${head}.`;\r\n\r\n if (buckets.length === 1) {\r\n const only = buckets[0];\r\n return only ? `${head} : ${only[0]}.` : `${head}.`;\r\n }\r\n const parts = buckets.map(([label, n]) => `${n} ${label}`);\r\n return `${head} : ${parts.join(\", \")}.`;\r\n}\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n label: \"Glissez vos fichiers ici ou cliquez pour parcourir\",\r\n ariaLabel: \"Zone de dépôt de fichiers\",\r\n formatBytes: defaultFormatBytes,\r\n reasons: DEFAULT_REASONS,\r\n buildRejectMessage: defaultBuildRejectMessage,\r\n addedSingle: (name: string) => `Fichier ajouté : ${name}`,\r\n addedMultiple: (n: number) => `${n} fichiers ajoutés`,\r\n removeItem: (name: string) => `Retirer ${name}`,\r\n});\r\n\r\n// ─── Helpers ──────────────────────────────────────────────────────────\r\n\r\nfunction matchesAccept(file: File, accept: string | undefined): boolean {\r\n if (!accept) return true;\r\n const tokens = accept.split(\",\").map((t) => t.trim()).filter(Boolean);\r\n if (tokens.length === 0) return true;\r\n return tokens.some((t) => {\r\n if (t.startsWith(\".\")) {\r\n return file.name.toLowerCase().endsWith(t.toLowerCase());\r\n }\r\n if (t.endsWith(\"/*\")) {\r\n const prefix = t.slice(0, -1); // \"image/\"\r\n return file.type.startsWith(prefix);\r\n }\r\n return file.type === t;\r\n });\r\n}\r\n\r\n// ─── Component ────────────────────────────────────────────────────────\r\n\r\nfunction Dropzone({\r\n accept,\r\n maxSize,\r\n maxFiles,\r\n multiple = false,\r\n disabled = false,\r\n value = [],\r\n onAdd,\r\n onRemove,\r\n onReject,\r\n // Legacy prop names: kept for back-compat. When the consumer passes\r\n // either, it wins over labels.* with the same role.\r\n label,\r\n \"aria-label\": ariaLabelProp,\r\n hint,\r\n labels,\r\n sx,\r\n // Injected by Field (R-I.1 / R-I.3). Forwarded to the drop <button>\r\n // below — see the \"INSIDE A <Field>\" note in the module docstring.\r\n id,\r\n error = false,\r\n \"aria-invalid\": ariaInvalidProp,\r\n \"aria-describedby\": ariaDescribedByProp,\r\n}: DropzoneProps) {\r\n const L = React.useMemo(() => {\r\n if (!labels) return DEFAULT_LABELS;\r\n return mergeLabels(DEFAULT_LABELS, {\r\n ...labels,\r\n /*\r\n * `reasons` is a NESTED dictionary and needs its own merge, at its own\r\n * level. Merging only at the top would replace the whole sub-object, so a\r\n * consumer overriding ONE reason would delete the others — and the\r\n * previous `|| {}` guarded the sub-object against being undefined without\r\n * guarding its VALUES, which is the same hazard one level down.\r\n */\r\n reasons: mergeLabels(DEFAULT_REASONS, labels.reasons),\r\n });\r\n }, [labels]);\r\n\r\n const dropLabel = label != null ? label : L.label;\r\n const ariaLabel = ariaLabelProp != null ? ariaLabelProp : L.ariaLabel;\r\n\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const liveRef = React.useRef<HTMLDivElement>(null);\r\n const [dragOver, setDragOver] = React.useState(false);\r\n // Stable, per-instance, collision-safe id for the hint association.\r\n const hintId = React.useId();\r\n\r\n /*\r\n * R-I.3 — invalid when Field said so via `error`, or when a host set the\r\n * attribute directly. Either alone is sufficient; Field passes both, other\r\n * callers may pass one.\r\n */\r\n const isInvalid =\r\n error || ariaInvalidProp === true || ariaInvalidProp === \"true\";\r\n\r\n /*\r\n * MERGED, not replaced. Field's value points at its hint and/or its error\r\n * message; hintId points at this component's own hint, rendered inside the\r\n * button. Dropping either would lose a real description — which is what\r\n * happened while this prop was not accepted at all.\r\n */\r\n const describedBy =\r\n [ariaDescribedByProp, hint ? hintId : null].filter(Boolean).join(\" \") ||\r\n undefined;\r\n\r\n const announce = (msg: string) => {\r\n if (liveRef.current) {\r\n // Setting via DOM (not state) avoids re-renders that would re-trigger\r\n // SR announcements for unrelated UI updates.\r\n liveRef.current.textContent = msg;\r\n }\r\n };\r\n\r\n const validate = React.useCallback(\r\n (incoming: File[]): { accepted: File[]; rejected: DropzoneRejection[] } => {\r\n const accepted: File[] = [];\r\n const rejected: DropzoneRejection[] = [];\r\n const remainingSlots = maxFiles != null ? Math.max(0, maxFiles - value.length) : Infinity;\r\n\r\n for (const file of incoming) {\r\n if (accepted.length >= remainingSlots) {\r\n rejected.push({ file, reason: \"max-files\" });\r\n continue;\r\n }\r\n if (maxSize != null && file.size > maxSize) {\r\n rejected.push({ file, reason: \"max-size\" });\r\n continue;\r\n }\r\n if (!matchesAccept(file, accept)) {\r\n rejected.push({ file, reason: \"type\" });\r\n continue;\r\n }\r\n accepted.push(file);\r\n if (!multiple) break; // single mode: only first valid\r\n }\r\n return { accepted, rejected };\r\n },\r\n [accept, maxSize, maxFiles, multiple, value.length]\r\n );\r\n\r\n const handleFiles = (fileList: FileList | File[] | null | undefined) => {\r\n if (disabled) return;\r\n const files = Array.from(fileList || []);\r\n if (files.length === 0) return;\r\n const { accepted, rejected } = validate(files);\r\n if (accepted.length > 0) {\r\n onAdd?.(accepted);\r\n const [first] = accepted;\r\n announce(\r\n accepted.length === 1 && first\r\n ? L.addedSingle(first.name)\r\n : L.addedMultiple(accepted.length)\r\n );\r\n }\r\n if (rejected.length > 0) {\r\n onReject?.(rejected);\r\n announce(L.buildRejectMessage(rejected, L.reasons));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n handleFiles(e.target.files);\r\n // reset so the same file can be re-added after removal\r\n e.target.value = \"\";\r\n };\r\n\r\n const openPicker = () => {\r\n if (disabled) return;\r\n inputRef.current?.click();\r\n };\r\n\r\n const onDragOver = (e: React.DragEvent) => {\r\n if (disabled) return;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!dragOver) setDragOver(true);\r\n };\r\n const onDragLeave = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n // Only clear when leaving the wrapper itself, not crossing a child.\r\n if (e.currentTarget.contains(e.relatedTarget as Node | null)) return;\r\n setDragOver(false);\r\n };\r\n const onDrop = (e: React.DragEvent) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n setDragOver(false);\r\n if (disabled) return;\r\n handleFiles(e.dataTransfer?.files);\r\n };\r\n\r\n /*\r\n * Border colour precedence: dragOver > invalid > resting.\r\n *\r\n * Drag feedback wins deliberately — while a file is over the target the\r\n * user needs to know the drop will land, and the invalid state is about to\r\n * be resolved by that very drop.\r\n */\r\n const borderColor = dragOver\r\n ? \"var(--accent)\"\r\n : isInvalid\r\n ? \"var(--danger)\"\r\n : \"var(--border-strong)\";\r\n\r\n return (\r\n <Box sx={{ width: \"100%\", ...sx }}>\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n {...(id !== undefined ? { id } : {})}\r\n disabled={disabled}\r\n aria-label={ariaLabel}\r\n {...(isInvalid ? { \"aria-invalid\": true } : {})}\r\n aria-describedby={describedBy}\r\n onClick={openPicker}\r\n onDragOver={onDragOver}\r\n onDragEnter={onDragOver}\r\n onDragLeave={onDragLeave}\r\n onDrop={onDrop}\r\n sx={{\r\n // <button> reset - neutralise UA defaults so the drop target\r\n // visually matches the previous Box-based design.\r\n font: \"inherit\",\r\n color: \"inherit\",\r\n width: \"100%\",\r\n // Layout\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n gap: 1,\r\n padding: \"var(--s-5) var(--s-4)\",\r\n background: dragOver ? \"var(--accent-soft)\" : \"var(--bg-subtle)\",\r\n border: `2px dashed ${borderColor}`,\r\n borderRadius: \"var(--r-lg)\",\r\n cursor: disabled ? \"not-allowed\" : \"pointer\",\r\n opacity: disabled ? 0.55 : 1,\r\n textAlign: \"center\",\r\n transition:\r\n \"background var(--duration-fast, 80ms) ease, border-color var(--duration-fast, 80ms) ease\",\r\n \"&:hover\": (!disabled && !dragOver)\r\n ? { background: \"var(--bg-hover)\", borderColor: \"var(--accent)\" }\r\n : {},\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 <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n color: dragOver\r\n ? \"var(--accent)\"\r\n : isInvalid\r\n ? \"var(--danger)\"\r\n : \"var(--fg-muted)\",\r\n display: \"inline-flex\",\r\n }}\r\n >\r\n <CloudUploadIcon style={{ fontSize: 32 }} />\r\n </Box>\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {dropLabel}\r\n </Box>\r\n {hint && (\r\n <Box\r\n id={hintId}\r\n sx={{ fontSize: \"var(--text-xs)\", color: \"var(--fg-muted)\" }}\r\n >\r\n {hint}\r\n </Box>\r\n )}\r\n {/* visually-hidden, accessibility-tree-hidden native input.\r\n The wrapping <button> is the canonical a11y handle; the input\r\n is just the bridge to the OS file picker.\r\n C2 — clipPath: inset(50%) (modern) replaces the deprecated\r\n clip: rect(0,0,0,0) so a strict CSP that disables `clip`\r\n cannot leak the input on screen. */}\r\n <input\r\n ref={inputRef}\r\n type=\"file\"\r\n accept={accept}\r\n multiple={multiple}\r\n disabled={disabled}\r\n onChange={onInputChange}\r\n tabIndex={-1}\r\n aria-hidden=\"true\"\r\n style={{\r\n position: \"absolute\",\r\n width: 1, height: 1, padding: 0, margin: -1,\r\n overflow: \"hidden\", clipPath: \"inset(50%)\", border: 0,\r\n }}\r\n />\r\n </Box>\r\n\r\n {/* Live region — newly-added file announcements + rejection summary.\r\n C3 — aria-relevant explicit (defense-in-depth for NVDA+Firefox). */}\r\n <Box\r\n ref={liveRef}\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-relevant=\"additions text\"\r\n className=\"pui-sr-only\"\r\n />\r\n\r\n {/* file list */}\r\n {value.length > 0 && (\r\n <Box\r\n component=\"ul\"\r\n /* Explicit role — several screen readers strip list semantics when\r\n CSS list-style:none is applied. Same reason FormErrorSummary sets\r\n it. */\r\n role=\"list\"\r\n sx={{\r\n listStyle: \"none\",\r\n padding: 0,\r\n margin: \"var(--s-3) 0 0\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n gap: \"var(--s-1)\",\r\n }}\r\n >\r\n {value.map((f, i) => {\r\n const id = f.id ?? f.name ?? i;\r\n const status = f.status || (f.error ? \"error\" : f.progress === 100 ? \"done\" : f.progress != null ? \"uploading\" : \"ready\");\r\n const color =\r\n status === \"error\" ? \"var(--danger)\" :\r\n status === \"done\" ? \"var(--success)\" : \"var(--fg-muted)\";\r\n return (\r\n <Box\r\n component=\"li\"\r\n role=\"listitem\"\r\n key={id}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-3)\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-md)\",\r\n }}\r\n >\r\n <Box aria-hidden=\"true\" sx={{ color, display: \"inline-flex\" }}>\r\n <InsertDriveFileIcon fontSize=\"small\" />\r\n </Box>\r\n <Box sx={{ flex: 1, minWidth: 0 }}>\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg)\",\r\n overflow: \"hidden\",\r\n textOverflow: \"ellipsis\",\r\n whiteSpace: \"nowrap\",\r\n }}\r\n >\r\n {f.name}\r\n </Box>\r\n <Box\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: status === \"error\" ? \"var(--danger)\" : \"var(--fg-subtle)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n }}\r\n >\r\n {status === \"error\" && f.error\r\n ? f.error\r\n : `${L.formatBytes(f.size ?? NaN)}${f.progress != null ? ` · ${Math.round(f.progress)}%` : \"\"}`}\r\n </Box>\r\n </Box>\r\n {onRemove && (\r\n <IconButton\r\n size=\"small\"\r\n onClick={(e) => { e.stopPropagation(); onRemove(id); }}\r\n aria-label={L.removeItem(f.name)}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Dropzone;\r\n"],"mappings":"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","ignoreList":[]}
|