@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,254 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import Box from "@mui/material/Box";
|
|
3
|
+
import IconButton from "@mui/material/IconButton";
|
|
4
|
+
import CloseIcon from "@mui/icons-material/Close";
|
|
5
|
+
import CheckIcon from "@mui/icons-material/Check";
|
|
6
|
+
import ErrorIcon from "@mui/icons-material/ErrorOutlined";
|
|
7
|
+
import WarningIcon from "@mui/icons-material/WarningAmberOutlined";
|
|
8
|
+
import InfoIcon from "@mui/icons-material/InfoOutlined";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Banner - Portnet UI v2
|
|
12
|
+
*
|
|
13
|
+
* Charter §03 · Component "Banner". For persistent system-wide messages
|
|
14
|
+
* (network error, maintenance, banner alerts on top of a section).
|
|
15
|
+
*
|
|
16
|
+
* R-A.2 - Erreur bloquante = role="alert" aria-live="assertive".
|
|
17
|
+
* R-F.1 - Focus visible required on the action button.
|
|
18
|
+
*
|
|
19
|
+
* <Banner variant="error" action={{ label: "Réessayer", onClick: retry }}>
|
|
20
|
+
* Connexion perdue.
|
|
21
|
+
* </Banner>
|
|
22
|
+
*
|
|
23
|
+
* Action cluster (capability gap G-19)
|
|
24
|
+
* ------------------------------------
|
|
25
|
+
* `action` is the primary affordance (outlined). `secondaryAction` is the
|
|
26
|
+
* subordinate one (borderless + underlined), rendered to its LEFT per the
|
|
27
|
+
* charter's R-M.6 ordering (« action principale à droite, secondaire à gauche »).
|
|
28
|
+
* Both accept an optional leading `icon`.
|
|
29
|
+
*
|
|
30
|
+
* <Banner
|
|
31
|
+
* variant="info"
|
|
32
|
+
* title="Brouillon trouvé"
|
|
33
|
+
* action={{ label: "Restaurer", onClick: restore }}
|
|
34
|
+
* secondaryAction={{ label: "Ignorer", onClick: discard }}
|
|
35
|
+
* >
|
|
36
|
+
* Une saisie en cours a été détectée sur ce poste.
|
|
37
|
+
* </Banner>
|
|
38
|
+
*
|
|
39
|
+
* WHY THIS WAS ADDED. Banner previously destructured a FIXED prop list with no
|
|
40
|
+
* rest spread and supported neither `secondaryAction` nor `action.icon`. Every
|
|
41
|
+
* audited module had nonetheless passed them — four dead props in addpe-fe alone
|
|
42
|
+
* (its own comments record the discovery) — so the affordances silently did not
|
|
43
|
+
* exist: a draft-restore banner offered "Restaurer" with NO way to dismiss, and
|
|
44
|
+
* error banners lost their intended escape hatch. Props that look supported and
|
|
45
|
+
* are dropped in silence are worse than absent ones, because a reviewer reading
|
|
46
|
+
* the call site believes the affordance ships.
|
|
47
|
+
*
|
|
48
|
+
* `onClose` remains a distinct concern: it is DISMISSAL (an ✕ icon-button), not
|
|
49
|
+
* an action. Use `secondaryAction` when the second choice carries business
|
|
50
|
+
* meaning ("Ignorer" clears a draft; "Retour à la liste" navigates).
|
|
51
|
+
*
|
|
52
|
+
* Localisation (FR / EN / AR):
|
|
53
|
+
* - `action.label` / `secondaryAction.label` are consumer-controlled.
|
|
54
|
+
* - `closeLabel` overrides the dismiss button's aria-label
|
|
55
|
+
* (default "Fermer").
|
|
56
|
+
*
|
|
57
|
+
* A11y note (WCAG 1.4.3):
|
|
58
|
+
* Each variant carries TWO colours - a saturated one for icons + border
|
|
59
|
+
* (passes 1.4.11 ≥ 3:1) and a darker -fg one for text (passes 1.4.3
|
|
60
|
+
* ≥ 4.5:1) on the soft background. Don't collapse them.
|
|
61
|
+
*
|
|
62
|
+
* A11y note (live regions, R-A.1 / R-A.2):
|
|
63
|
+
* aria-relevant="additions text" is set explicitly. Per WAI-ARIA both
|
|
64
|
+
* role="alert" and role="status" imply this default, but real-world
|
|
65
|
+
* SR + browser combos (NVDA + Firefox especially) have shipped
|
|
66
|
+
* announcement-skipping bugs in the absence of an explicit attribute.
|
|
67
|
+
* Defense-in-depth.
|
|
68
|
+
*/
|
|
69
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
70
|
+
var VARIANT = {
|
|
71
|
+
info: {
|
|
72
|
+
bg: "var(--info-soft)",
|
|
73
|
+
fg: "var(--info)",
|
|
74
|
+
text: "var(--info-fg)",
|
|
75
|
+
icon: InfoIcon
|
|
76
|
+
},
|
|
77
|
+
success: {
|
|
78
|
+
bg: "var(--success-soft)",
|
|
79
|
+
fg: "var(--success)",
|
|
80
|
+
text: "var(--success-fg)",
|
|
81
|
+
icon: CheckIcon
|
|
82
|
+
},
|
|
83
|
+
warning: {
|
|
84
|
+
bg: "var(--warning-soft)",
|
|
85
|
+
fg: "var(--warning)",
|
|
86
|
+
text: "var(--warning-fg)",
|
|
87
|
+
icon: WarningIcon
|
|
88
|
+
},
|
|
89
|
+
error: {
|
|
90
|
+
bg: "var(--danger-soft)",
|
|
91
|
+
fg: "var(--danger)",
|
|
92
|
+
text: "var(--danger-fg)",
|
|
93
|
+
icon: ErrorIcon
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* One button of the action cluster. Extracted rather than duplicated: the two
|
|
98
|
+
* emphases differ only by border and underline, and a second inline copy of a
|
|
99
|
+
* 25-line `sx` block is exactly how the focus-visible and contrast guarantees
|
|
100
|
+
* below drift apart.
|
|
101
|
+
*
|
|
102
|
+
* Colour is `cfg.text` for BOTH border and label — it passes 1.4.3 (≥ 4.5:1) as
|
|
103
|
+
* text and 1.4.11 (≥ 3:1) as a UI boundary on the soft background. Do not swap
|
|
104
|
+
* it for `cfg.fg`, which only clears the non-text threshold.
|
|
105
|
+
*/
|
|
106
|
+
function BannerActionButton(_ref) {
|
|
107
|
+
var action = _ref.action,
|
|
108
|
+
color = _ref.color,
|
|
109
|
+
emphasis = _ref.emphasis;
|
|
110
|
+
var isPrimary = emphasis === "primary";
|
|
111
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
112
|
+
component: "button",
|
|
113
|
+
type: "button",
|
|
114
|
+
onClick: action.onClick,
|
|
115
|
+
sx: {
|
|
116
|
+
display: "inline-flex",
|
|
117
|
+
alignItems: "center",
|
|
118
|
+
gap: "var(--s-1)",
|
|
119
|
+
background: "transparent",
|
|
120
|
+
/* Transparent border on the secondary keeps both buttons on the same
|
|
121
|
+
* baseline and the same height — without it the cluster jitters. */
|
|
122
|
+
border: "1px solid ".concat(isPrimary ? color : "transparent"),
|
|
123
|
+
color: color,
|
|
124
|
+
padding: "var(--s-1) var(--s-3)",
|
|
125
|
+
borderRadius: "var(--r-sm)",
|
|
126
|
+
fontSize: "var(--text-xs)",
|
|
127
|
+
fontWeight: "var(--fw-semibold)",
|
|
128
|
+
textDecoration: isPrimary ? "none" : "underline",
|
|
129
|
+
cursor: "pointer",
|
|
130
|
+
fontFamily: "inherit",
|
|
131
|
+
whiteSpace: "nowrap",
|
|
132
|
+
transition: "background var(--duration-fast) ease",
|
|
133
|
+
"&:hover": {
|
|
134
|
+
background: "color-mix(in srgb, currentColor 10%, transparent)"
|
|
135
|
+
},
|
|
136
|
+
// R-F.1 - focus-visible required, charter §05.
|
|
137
|
+
"&:focus-visible": {
|
|
138
|
+
outline: "2px solid currentColor",
|
|
139
|
+
outlineOffset: "var(--pui-outline-offset)"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
children: [action.icon && /*#__PURE__*/_jsx(Box, {
|
|
143
|
+
component: "span",
|
|
144
|
+
"aria-hidden": "true",
|
|
145
|
+
sx: {
|
|
146
|
+
display: "inline-flex",
|
|
147
|
+
flexShrink: 0,
|
|
148
|
+
/* Normalise a consumer-supplied MUI icon (24px by default) onto the
|
|
149
|
+
* label's optical scale. --text-h3 is the 16px token. */
|
|
150
|
+
"& > *": {
|
|
151
|
+
fontSize: "var(--text-h3)"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
children: action.icon
|
|
155
|
+
}), action.label]
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
function Banner(_ref2) {
|
|
159
|
+
var _ref2$variant = _ref2.variant,
|
|
160
|
+
variant = _ref2$variant === void 0 ? "info" : _ref2$variant,
|
|
161
|
+
children = _ref2.children,
|
|
162
|
+
title = _ref2.title,
|
|
163
|
+
action = _ref2.action,
|
|
164
|
+
secondaryAction = _ref2.secondaryAction,
|
|
165
|
+
onClose = _ref2.onClose,
|
|
166
|
+
_ref2$closeLabel = _ref2.closeLabel,
|
|
167
|
+
closeLabel = _ref2$closeLabel === void 0 ? "Fermer" : _ref2$closeLabel;
|
|
168
|
+
var cfg = VARIANT[variant] || VARIANT.info;
|
|
169
|
+
var Icon = cfg.icon;
|
|
170
|
+
var isErr = variant === "error";
|
|
171
|
+
return /*#__PURE__*/_jsxs(Box, {
|
|
172
|
+
role: isErr ? "alert" : "status",
|
|
173
|
+
"aria-live": isErr ? "assertive" : "polite",
|
|
174
|
+
"aria-relevant": "additions text",
|
|
175
|
+
sx: {
|
|
176
|
+
display: "flex",
|
|
177
|
+
alignItems: "flex-start",
|
|
178
|
+
gap: "var(--s-3)",
|
|
179
|
+
padding: "var(--s-3) var(--s-4)",
|
|
180
|
+
borderRadius: "var(--r-md)",
|
|
181
|
+
background: cfg.bg,
|
|
182
|
+
// Body text inherits this colour - keep at standard --fg for
|
|
183
|
+
// maximum legibility (the soft bg is light, --fg is the darkest).
|
|
184
|
+
color: "var(--fg)",
|
|
185
|
+
// Border on the saturated variant colour - meets 1.4.11.
|
|
186
|
+
border: "1px solid ".concat(cfg.fg),
|
|
187
|
+
fontSize: "var(--text-sm)"
|
|
188
|
+
},
|
|
189
|
+
children: [/*#__PURE__*/_jsx(Icon, {
|
|
190
|
+
fontSize: "small",
|
|
191
|
+
"aria-hidden": "true"
|
|
192
|
+
// Icon stays on cfg.fg - passes 1.4.11 (≥ 3:1) for non-text UI.
|
|
193
|
+
,
|
|
194
|
+
sx: {
|
|
195
|
+
color: cfg.fg
|
|
196
|
+
}
|
|
197
|
+
// Optical alignment of the icon with the first text line -
|
|
198
|
+
// deliberate non-token value (not a spacing token concern).
|
|
199
|
+
,
|
|
200
|
+
style: {
|
|
201
|
+
marginTop: 2,
|
|
202
|
+
flexShrink: 0
|
|
203
|
+
}
|
|
204
|
+
}), /*#__PURE__*/_jsxs(Box, {
|
|
205
|
+
sx: {
|
|
206
|
+
flex: 1
|
|
207
|
+
},
|
|
208
|
+
children: [title &&
|
|
209
|
+
/*#__PURE__*/
|
|
210
|
+
// Title uses cfg.text - passes 1.4.3 (≥ 4.5:1) on cfg.bg.
|
|
211
|
+
_jsx(Box, {
|
|
212
|
+
sx: {
|
|
213
|
+
fontWeight: "var(--fw-semibold)",
|
|
214
|
+
marginBottom: "var(--s-1)",
|
|
215
|
+
color: cfg.text
|
|
216
|
+
},
|
|
217
|
+
children: title
|
|
218
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
219
|
+
children: children
|
|
220
|
+
})]
|
|
221
|
+
}), (action || secondaryAction) && /*#__PURE__*/_jsxs(Box, {
|
|
222
|
+
sx: {
|
|
223
|
+
display: "flex",
|
|
224
|
+
alignItems: "center",
|
|
225
|
+
gap: "var(--s-2)",
|
|
226
|
+
flexShrink: 0
|
|
227
|
+
},
|
|
228
|
+
children: [secondaryAction && /*#__PURE__*/_jsx(BannerActionButton, {
|
|
229
|
+
action: secondaryAction,
|
|
230
|
+
color: cfg.text,
|
|
231
|
+
emphasis: "secondary"
|
|
232
|
+
}), action && /*#__PURE__*/_jsx(BannerActionButton, {
|
|
233
|
+
action: action,
|
|
234
|
+
color: cfg.text,
|
|
235
|
+
emphasis: "primary"
|
|
236
|
+
})]
|
|
237
|
+
}), onClose && /*#__PURE__*/_jsx(IconButton, {
|
|
238
|
+
"aria-label": closeLabel,
|
|
239
|
+
size: "small",
|
|
240
|
+
onClick: onClose
|
|
241
|
+
// Close icon is non-text UI - cfg.fg is fine (1.4.11).
|
|
242
|
+
,
|
|
243
|
+
sx: {
|
|
244
|
+
color: cfg.fg,
|
|
245
|
+
marginRight: "calc(-1 * var(--s-1))"
|
|
246
|
+
},
|
|
247
|
+
children: /*#__PURE__*/_jsx(CloseIcon, {
|
|
248
|
+
fontSize: "small"
|
|
249
|
+
})
|
|
250
|
+
})]
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
export default Banner;
|
|
254
|
+
//# sourceMappingURL=Banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Banner.js","names":["React","Box","IconButton","CloseIcon","CheckIcon","ErrorIcon","WarningIcon","InfoIcon","jsx","_jsx","jsxs","_jsxs","VARIANT","info","bg","fg","text","icon","success","warning","error","BannerActionButton","_ref","action","color","emphasis","isPrimary","component","type","onClick","sx","display","alignItems","gap","background","border","concat","padding","borderRadius","fontSize","fontWeight","textDecoration","cursor","fontFamily","whiteSpace","transition","outline","outlineOffset","children","flexShrink","label","Banner","_ref2","_ref2$variant","variant","title","secondaryAction","onClose","_ref2$closeLabel","closeLabel","cfg","Icon","isErr","role","style","marginTop","flex","marginBottom","size","marginRight"],"sources":["../../../../src/lib/v2/components/Banner.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport type { SvgIconComponent } from \"@mui/icons-material\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport CheckIcon from \"@mui/icons-material/Check\";\r\nimport ErrorIcon from \"@mui/icons-material/ErrorOutlined\";\r\nimport WarningIcon from \"@mui/icons-material/WarningAmberOutlined\";\r\nimport InfoIcon from \"@mui/icons-material/InfoOutlined\";\r\n\r\n/**\r\n * Banner - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Banner\". For persistent system-wide messages\r\n * (network error, maintenance, banner alerts on top of a section).\r\n *\r\n * R-A.2 - Erreur bloquante = role=\"alert\" aria-live=\"assertive\".\r\n * R-F.1 - Focus visible required on the action button.\r\n *\r\n * <Banner variant=\"error\" action={{ label: \"Réessayer\", onClick: retry }}>\r\n * Connexion perdue.\r\n * </Banner>\r\n *\r\n * Action cluster (capability gap G-19)\r\n * ------------------------------------\r\n * `action` is the primary affordance (outlined). `secondaryAction` is the\r\n * subordinate one (borderless + underlined), rendered to its LEFT per the\r\n * charter's R-M.6 ordering (« action principale à droite, secondaire à gauche »).\r\n * Both accept an optional leading `icon`.\r\n *\r\n * <Banner\r\n * variant=\"info\"\r\n * title=\"Brouillon trouvé\"\r\n * action={{ label: \"Restaurer\", onClick: restore }}\r\n * secondaryAction={{ label: \"Ignorer\", onClick: discard }}\r\n * >\r\n * Une saisie en cours a été détectée sur ce poste.\r\n * </Banner>\r\n *\r\n * WHY THIS WAS ADDED. Banner previously destructured a FIXED prop list with no\r\n * rest spread and supported neither `secondaryAction` nor `action.icon`. Every\r\n * audited module had nonetheless passed them — four dead props in addpe-fe alone\r\n * (its own comments record the discovery) — so the affordances silently did not\r\n * exist: a draft-restore banner offered \"Restaurer\" with NO way to dismiss, and\r\n * error banners lost their intended escape hatch. Props that look supported and\r\n * are dropped in silence are worse than absent ones, because a reviewer reading\r\n * the call site believes the affordance ships.\r\n *\r\n * `onClose` remains a distinct concern: it is DISMISSAL (an ✕ icon-button), not\r\n * an action. Use `secondaryAction` when the second choice carries business\r\n * meaning (\"Ignorer\" clears a draft; \"Retour à la liste\" navigates).\r\n *\r\n * Localisation (FR / EN / AR):\r\n * - `action.label` / `secondaryAction.label` are consumer-controlled.\r\n * - `closeLabel` overrides the dismiss button's aria-label\r\n * (default \"Fermer\").\r\n *\r\n * A11y note (WCAG 1.4.3):\r\n * Each variant carries TWO colours - a saturated one for icons + border\r\n * (passes 1.4.11 ≥ 3:1) and a darker -fg one for text (passes 1.4.3\r\n * ≥ 4.5:1) on the soft background. Don't collapse them.\r\n *\r\n * A11y note (live regions, R-A.1 / R-A.2):\r\n * aria-relevant=\"additions text\" is set explicitly. Per WAI-ARIA both\r\n * role=\"alert\" and role=\"status\" imply this default, but real-world\r\n * SR + browser combos (NVDA + Firefox especially) have shipped\r\n * announcement-skipping bugs in the absence of an explicit attribute.\r\n * Defense-in-depth.\r\n */\r\n\r\nexport type BannerVariant = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\ninterface BannerVariantConfig {\r\n bg: string;\r\n fg: string;\r\n text: string;\r\n icon: SvgIconComponent;\r\n}\r\n\r\nconst VARIANT: Record<BannerVariant, BannerVariantConfig> = {\r\n info: { bg: \"var(--info-soft)\", fg: \"var(--info)\", text: \"var(--info-fg)\", icon: InfoIcon },\r\n success: { bg: \"var(--success-soft)\", fg: \"var(--success)\", text: \"var(--success-fg)\", icon: CheckIcon },\r\n warning: { bg: \"var(--warning-soft)\", fg: \"var(--warning)\", text: \"var(--warning-fg)\", icon: WarningIcon },\r\n error: { bg: \"var(--danger-soft)\", fg: \"var(--danger)\", text: \"var(--danger-fg)\", icon: ErrorIcon },\r\n};\r\n\r\nexport interface BannerAction {\r\n label: React.ReactNode;\r\n onClick?: (() => void) | undefined;\r\n /**\r\n * Optional leading icon. Rendered `aria-hidden` — the label carries the\r\n * accessible name (R-Ar.2), so an icon-only banner action is not supported by\r\n * design: a banner action must read as a verb+object CTA (§09.2).\r\n */\r\n icon?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface BannerProps {\r\n variant?: BannerVariant | undefined;\r\n children: React.ReactNode;\r\n title?: React.ReactNode | undefined;\r\n /** Primary affordance — outlined, rendered rightmost of the cluster. */\r\n action?: BannerAction | undefined;\r\n /** Subordinate affordance — borderless, rendered LEFT of `action` (R-M.6). */\r\n secondaryAction?: BannerAction | undefined;\r\n onClose?: (() => void) | undefined;\r\n closeLabel?: string | undefined;\r\n}\r\n\r\n/**\r\n * One button of the action cluster. Extracted rather than duplicated: the two\r\n * emphases differ only by border and underline, and a second inline copy of a\r\n * 25-line `sx` block is exactly how the focus-visible and contrast guarantees\r\n * below drift apart.\r\n *\r\n * Colour is `cfg.text` for BOTH border and label — it passes 1.4.3 (≥ 4.5:1) as\r\n * text and 1.4.11 (≥ 3:1) as a UI boundary on the soft background. Do not swap\r\n * it for `cfg.fg`, which only clears the non-text threshold.\r\n */\r\nfunction BannerActionButton({\r\n action,\r\n color,\r\n emphasis,\r\n}: {\r\n action: BannerAction;\r\n color: string;\r\n emphasis: \"primary\" | \"secondary\";\r\n}) {\r\n const isPrimary = emphasis === \"primary\";\r\n return (\r\n <Box\r\n component=\"button\"\r\n type=\"button\"\r\n onClick={action.onClick}\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-1)\",\r\n background: \"transparent\",\r\n /* Transparent border on the secondary keeps both buttons on the same\r\n * baseline and the same height — without it the cluster jitters. */\r\n border: `1px solid ${isPrimary ? color : \"transparent\"}`,\r\n color,\r\n padding: \"var(--s-1) var(--s-3)\",\r\n borderRadius: \"var(--r-sm)\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n textDecoration: isPrimary ? \"none\" : \"underline\",\r\n cursor: \"pointer\",\r\n fontFamily: \"inherit\",\r\n whiteSpace: \"nowrap\",\r\n transition: \"background var(--duration-fast) ease\",\r\n \"&:hover\": {\r\n background: \"color-mix(in srgb, currentColor 10%, transparent)\",\r\n },\r\n // R-F.1 - focus-visible required, charter §05.\r\n \"&:focus-visible\": {\r\n outline: \"2px solid currentColor\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n }}\r\n >\r\n {action.icon && (\r\n <Box\r\n component=\"span\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n flexShrink: 0,\r\n /* Normalise a consumer-supplied MUI icon (24px by default) onto the\r\n * label's optical scale. --text-h3 is the 16px token. */\r\n \"& > *\": { fontSize: \"var(--text-h3)\" },\r\n }}\r\n >\r\n {action.icon}\r\n </Box>\r\n )}\r\n {action.label}\r\n </Box>\r\n );\r\n}\r\n\r\nfunction Banner({\r\n variant = \"info\",\r\n children,\r\n title,\r\n action, // { label, onClick, icon } — primary\r\n secondaryAction, // { label, onClick, icon } — subordinate (G-19)\r\n onClose, // optional dismissal (✕), distinct from an action\r\n closeLabel = \"Fermer\",\r\n}: BannerProps) {\r\n const cfg = VARIANT[variant] || VARIANT.info;\r\n const Icon = cfg.icon;\r\n const isErr = variant === \"error\";\r\n\r\n return (\r\n <Box\r\n role={isErr ? \"alert\" : \"status\"}\r\n aria-live={isErr ? \"assertive\" : \"polite\"}\r\n aria-relevant=\"additions text\"\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderRadius: \"var(--r-md)\",\r\n background: cfg.bg,\r\n // Body text inherits this colour - keep at standard --fg for\r\n // maximum legibility (the soft bg is light, --fg is the darkest).\r\n color: \"var(--fg)\",\r\n // Border on the saturated variant colour - meets 1.4.11.\r\n border: `1px solid ${cfg.fg}`,\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n <Icon\r\n fontSize=\"small\"\r\n aria-hidden=\"true\"\r\n // Icon stays on cfg.fg - passes 1.4.11 (≥ 3:1) for non-text UI.\r\n sx={{ color: cfg.fg }}\r\n // Optical alignment of the icon with the first text line -\r\n // deliberate non-token value (not a spacing token concern).\r\n style={{ marginTop: 2, flexShrink: 0 }}\r\n />\r\n <Box sx={{ flex: 1 }}>\r\n {title && (\r\n // Title uses cfg.text - passes 1.4.3 (≥ 4.5:1) on cfg.bg.\r\n <Box sx={{ fontWeight: \"var(--fw-semibold)\", marginBottom: \"var(--s-1)\", color: cfg.text }}>\r\n {title}\r\n </Box>\r\n )}\r\n <Box>{children}</Box>\r\n </Box>\r\n {(action || secondaryAction) && (\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n flexShrink: 0,\r\n }}\r\n >\r\n {/* R-M.6 — secondary on the LEFT, primary on the right. */}\r\n {secondaryAction && (\r\n <BannerActionButton\r\n action={secondaryAction}\r\n color={cfg.text}\r\n emphasis=\"secondary\"\r\n />\r\n )}\r\n {action && (\r\n <BannerActionButton\r\n action={action}\r\n color={cfg.text}\r\n emphasis=\"primary\"\r\n />\r\n )}\r\n </Box>\r\n )}\r\n {onClose && (\r\n <IconButton\r\n aria-label={closeLabel}\r\n size=\"small\"\r\n onClick={onClose}\r\n // Close icon is non-text UI - cfg.fg is fine (1.4.11).\r\n sx={{ color: cfg.fg, marginRight: \"calc(-1 * var(--s-1))\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n )}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default Banner;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
+
import Box from "@mui/material/Box";
|
|
8
|
+
import Spinner from "./Spinner";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Busy — Portnet UI v2
|
|
12
|
+
*
|
|
13
|
+
* Charter §04.4 · canonical loading-overlay primitive. Replaces the
|
|
14
|
+
* inline PAGE_OVERLAY_SX block that host modules previously froze
|
|
15
|
+
* in 15+ feature pages (cf. ms-ti-fe VALIDATION_REPORT §6 — uplift
|
|
16
|
+
* pattern catalogued under "Spinner overlay block").
|
|
17
|
+
*
|
|
18
|
+
* Two variants:
|
|
19
|
+
*
|
|
20
|
+
* <SectionBusy />
|
|
21
|
+
* covers the nearest positioned ancestor (parent must have
|
|
22
|
+
* `position: relative`). Use when a section/card is waiting on
|
|
23
|
+
* data but the rest of the page is still usable.
|
|
24
|
+
*
|
|
25
|
+
* <PageBusy />
|
|
26
|
+
* fixed full-viewport variant. Use when the whole page is
|
|
27
|
+
* blocked (e.g. initial fetch, submit-in-flight on a wizard).
|
|
28
|
+
*
|
|
29
|
+
* Both expose role="status" + aria-live="polite" + aria-busy="true"
|
|
30
|
+
* so screen-reader users hear the loading state, and they forward
|
|
31
|
+
* the `label` prop to the inner Spinner — that text is announced
|
|
32
|
+
* via aria-label on the SVG (R-Ar.1).
|
|
33
|
+
*
|
|
34
|
+
* Reduced-motion: the Spinner's CSS animation is suppressed under
|
|
35
|
+
* `prefers-reduced-motion: reduce` (handled in pui-spinner base
|
|
36
|
+
* stylesheet — no per-component duplication).
|
|
37
|
+
*
|
|
38
|
+
* Usage:
|
|
39
|
+
*
|
|
40
|
+
* // Section-level (parent has position: relative):
|
|
41
|
+
* <Box sx={{ position: "relative" }}>
|
|
42
|
+
* <ContentThatCanLoad />
|
|
43
|
+
* {isLoading && <SectionBusy label="Chargement des marchandises" />}
|
|
44
|
+
* </Box>
|
|
45
|
+
*
|
|
46
|
+
* // Full-page (e.g. wizard during create+navigate):
|
|
47
|
+
* {isPageLoading && <PageBusy label="Création en cours" />}
|
|
48
|
+
*/
|
|
49
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
50
|
+
var SHARED_OVERLAY_SX = Object.freeze({
|
|
51
|
+
display: "grid",
|
|
52
|
+
placeItems: "center",
|
|
53
|
+
background: "color-mix(in srgb, var(--bg) 70%, transparent)",
|
|
54
|
+
pointerEvents: "auto"
|
|
55
|
+
});
|
|
56
|
+
export function SectionBusy(_ref) {
|
|
57
|
+
var _ref$label = _ref.label,
|
|
58
|
+
label = _ref$label === void 0 ? "Chargement en cours" : _ref$label,
|
|
59
|
+
_ref$surface = _ref.surface,
|
|
60
|
+
surface = _ref$surface === void 0 ? true : _ref$surface;
|
|
61
|
+
return /*#__PURE__*/_jsx(Box, {
|
|
62
|
+
role: "status",
|
|
63
|
+
"aria-live": "polite",
|
|
64
|
+
"aria-busy": "true",
|
|
65
|
+
sx: _objectSpread(_objectSpread({}, SHARED_OVERLAY_SX), {}, {
|
|
66
|
+
position: "absolute",
|
|
67
|
+
inset: 0,
|
|
68
|
+
background: surface ? SHARED_OVERLAY_SX.background : "transparent",
|
|
69
|
+
borderRadius: "var(--r-lg)",
|
|
70
|
+
zIndex: 1
|
|
71
|
+
}),
|
|
72
|
+
children: /*#__PURE__*/_jsx(Spinner, {
|
|
73
|
+
size: 20,
|
|
74
|
+
label: label
|
|
75
|
+
})
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function PageBusy(_ref2) {
|
|
79
|
+
var _ref2$label = _ref2.label,
|
|
80
|
+
label = _ref2$label === void 0 ? "Chargement en cours" : _ref2$label;
|
|
81
|
+
return /*#__PURE__*/_jsx(Box, {
|
|
82
|
+
role: "status",
|
|
83
|
+
"aria-live": "polite",
|
|
84
|
+
"aria-busy": "true",
|
|
85
|
+
sx: _objectSpread(_objectSpread({}, SHARED_OVERLAY_SX), {}, {
|
|
86
|
+
position: "fixed",
|
|
87
|
+
inset: 0,
|
|
88
|
+
zIndex: "var(--z-modal, 9999)"
|
|
89
|
+
}),
|
|
90
|
+
children: /*#__PURE__*/_jsx(Spinner, {
|
|
91
|
+
size: 28,
|
|
92
|
+
label: label
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
export default SectionBusy;
|
|
97
|
+
//# sourceMappingURL=Busy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Busy.js","names":["Box","Spinner","jsx","_jsx","SHARED_OVERLAY_SX","Object","freeze","display","placeItems","background","pointerEvents","SectionBusy","_ref","_ref$label","label","_ref$surface","surface","role","sx","_objectSpread","position","inset","borderRadius","zIndex","children","size","PageBusy","_ref2","_ref2$label"],"sources":["../../../../src/lib/v2/components/Busy.tsx"],"sourcesContent":["import Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport Spinner from \"./Spinner\";\r\n\r\n/**\r\n * Busy — Portnet UI v2\r\n *\r\n * Charter §04.4 · canonical loading-overlay primitive. Replaces the\r\n * inline PAGE_OVERLAY_SX block that host modules previously froze\r\n * in 15+ feature pages (cf. ms-ti-fe VALIDATION_REPORT §6 — uplift\r\n * pattern catalogued under \"Spinner overlay block\").\r\n *\r\n * Two variants:\r\n *\r\n * <SectionBusy />\r\n * covers the nearest positioned ancestor (parent must have\r\n * `position: relative`). Use when a section/card is waiting on\r\n * data but the rest of the page is still usable.\r\n *\r\n * <PageBusy />\r\n * fixed full-viewport variant. Use when the whole page is\r\n * blocked (e.g. initial fetch, submit-in-flight on a wizard).\r\n *\r\n * Both expose role=\"status\" + aria-live=\"polite\" + aria-busy=\"true\"\r\n * so screen-reader users hear the loading state, and they forward\r\n * the `label` prop to the inner Spinner — that text is announced\r\n * via aria-label on the SVG (R-Ar.1).\r\n *\r\n * Reduced-motion: the Spinner's CSS animation is suppressed under\r\n * `prefers-reduced-motion: reduce` (handled in pui-spinner base\r\n * stylesheet — no per-component duplication).\r\n *\r\n * Usage:\r\n *\r\n * // Section-level (parent has position: relative):\r\n * <Box sx={{ position: \"relative\" }}>\r\n * <ContentThatCanLoad />\r\n * {isLoading && <SectionBusy label=\"Chargement des marchandises\" />}\r\n * </Box>\r\n *\r\n * // Full-page (e.g. wizard during create+navigate):\r\n * {isPageLoading && <PageBusy label=\"Création en cours\" />}\r\n */\r\n\r\nconst SHARED_OVERLAY_SX = Object.freeze({\r\n display: \"grid\",\r\n placeItems: \"center\",\r\n background: \"color-mix(in srgb, var(--bg) 70%, transparent)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nexport interface SectionBusyProps {\r\n /** SR announcement; appears as aria-label on the inner SVG. */\r\n label?: string | undefined;\r\n /**\r\n * If false, the overlay backdrop is transparent (still blocks\r\n * clicks, still announces busy). Use when the section already\r\n * has a subtle bg and you don't want a double scrim.\r\n */\r\n surface?: boolean | undefined;\r\n}\r\n\r\nexport function SectionBusy({ label = \"Chargement en cours\", surface = true }: SectionBusyProps) {\r\n return (\r\n <Box\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-busy=\"true\"\r\n sx={{\r\n ...SHARED_OVERLAY_SX,\r\n position: \"absolute\",\r\n inset: 0,\r\n background: surface\r\n ? SHARED_OVERLAY_SX.background\r\n : \"transparent\",\r\n borderRadius: \"var(--r-lg)\",\r\n zIndex: 1,\r\n }}\r\n >\r\n <Spinner size={20} label={label} />\r\n </Box>\r\n );\r\n}\r\n\r\nexport interface PageBusyProps {\r\n /** SR announcement; appears as aria-label on the inner SVG. */\r\n label?: string | undefined;\r\n}\r\n\r\nexport function PageBusy({ label = \"Chargement en cours\" }: PageBusyProps) {\r\n return (\r\n <Box\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n aria-busy=\"true\"\r\n sx={{\r\n ...SHARED_OVERLAY_SX,\r\n position: \"fixed\",\r\n inset: 0,\r\n zIndex: \"var(--z-modal, 9999)\",\r\n }}\r\n >\r\n <Spinner size={28} label={label} />\r\n </Box>\r\n );\r\n}\r\n\r\nexport default SectionBusy;\r\n"],"mappings":";;;;;;AAAA,OAAOA,GAAG,MAAM,mBAAmB;AAEnC,OAAOC,OAAO,MAAM,WAAW;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtCA,SAAAC,GAAA,IAAAC,IAAA;AAwCA,IAAMC,iBAAiB,GAAGC,MAAM,CAACC,MAAM,CAAC;EACtCC,OAAO,EAAQ,MAAM;EACrBC,UAAU,EAAK,QAAQ;EACvBC,UAAU,EAAK,gDAAgD;EAC/DC,aAAa,EAAE;AACjB,CAA0B,CAAC;AAa3B,OAAO,SAASC,WAAWA,CAAAC,IAAA,EAAsE;EAAA,IAAAC,UAAA,GAAAD,IAAA,CAAnEE,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAG,qBAAqB,GAAAA,UAAA;IAAAE,YAAA,GAAAH,IAAA,CAAEI,OAAO;IAAPA,OAAO,GAAAD,YAAA,cAAG,IAAI,GAAAA,YAAA;EACzE,oBACEZ,IAAA,CAACH,GAAG;IACFiB,IAAI,EAAC,QAAQ;IACb,aAAU,QAAQ;IAClB,aAAU,MAAM;IAChBC,EAAE,EAAAC,aAAA,CAAAA,aAAA,KACGf,iBAAiB;MACpBgB,QAAQ,EAAM,UAAU;MACxBC,KAAK,EAAS,CAAC;MACfZ,UAAU,EAAIO,OAAO,GACjBZ,iBAAiB,CAACK,UAAU,GAC5B,aAAa;MACjBa,YAAY,EAAE,aAAa;MAC3BC,MAAM,EAAQ;IAAC,EACf;IAAAC,QAAA,eAEFrB,IAAA,CAACF,OAAO;MAACwB,IAAI,EAAE,EAAG;MAACX,KAAK,EAAEA;IAAM,CAAE;EAAC,CAChC,CAAC;AAEV;AAOA,OAAO,SAASY,QAAQA,CAAAC,KAAA,EAAmD;EAAA,IAAAC,WAAA,GAAAD,KAAA,CAAhDb,KAAK;IAALA,KAAK,GAAAc,WAAA,cAAG,qBAAqB,GAAAA,WAAA;EACtD,oBACEzB,IAAA,CAACH,GAAG;IACFiB,IAAI,EAAC,QAAQ;IACb,aAAU,QAAQ;IAClB,aAAU,MAAM;IAChBC,EAAE,EAAAC,aAAA,CAAAA,aAAA,KACGf,iBAAiB;MACpBgB,QAAQ,EAAE,OAAO;MACjBC,KAAK,EAAK,CAAC;MACXE,MAAM,EAAI;IAAsB,EAChC;IAAAC,QAAA,eAEFrB,IAAA,CAACF,OAAO;MAACwB,IAAI,EAAE,EAAG;MAACX,KAAK,EAAEA;IAAM,CAAE;EAAC,CAChC,CAAC;AAEV;AAEA,eAAeH,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,114 @@
|
|
|
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
|
+
var _excluded = ["variant", "size", "icon", "iconRight", "iconOnly", "loading", "disabled", "children", "sx", "type"];
|
|
3
|
+
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; }
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
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); }
|
|
8
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
|
+
import * as React from "react";
|
|
11
|
+
import MuiButton from "@mui/material/Button";
|
|
12
|
+
import Spinner from "./Spinner";
|
|
13
|
+
import { layout, density } from "../tokens";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Button - Portnet UI v2
|
|
17
|
+
*
|
|
18
|
+
* Charter §03 · Component "Button". DS-aligned MUI wrapper.
|
|
19
|
+
*
|
|
20
|
+
* R-B.1 - Only ONE primary per screen (host-enforced).
|
|
21
|
+
* R-B.2 - Charter target visual height 40 / 32 px.
|
|
22
|
+
* R-B.3 - Label = verb + object ("Créer un titre"), never "OK" alone.
|
|
23
|
+
* R-B.4 - `loading` disables interaction and shows inline spinner.
|
|
24
|
+
* R-B.5 - Icon-only requires `aria-label`.
|
|
25
|
+
* R-B.6 - Destructive action → variant="danger", never primary.
|
|
26
|
+
*
|
|
27
|
+
* Variants: "primary" | "secondary" | "ghost" | "danger"
|
|
28
|
+
* Sizes: "md" (40px visual) | "sm" (32px visual), tactile min 44px.
|
|
29
|
+
*/
|
|
30
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
31
|
+
var VARIANT_TO_MUI = {
|
|
32
|
+
primary: {
|
|
33
|
+
variant: "contained",
|
|
34
|
+
color: "primary"
|
|
35
|
+
},
|
|
36
|
+
secondary: {
|
|
37
|
+
variant: "outlined",
|
|
38
|
+
color: "primary"
|
|
39
|
+
},
|
|
40
|
+
ghost: {
|
|
41
|
+
variant: "text",
|
|
42
|
+
color: "primary"
|
|
43
|
+
},
|
|
44
|
+
danger: {
|
|
45
|
+
variant: "contained",
|
|
46
|
+
color: "error"
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var VISUAL_HEIGHT_BY_SIZE = {
|
|
50
|
+
md: density.comfortable.btn,
|
|
51
|
+
// 40
|
|
52
|
+
sm: density.compact.btn // 32
|
|
53
|
+
};
|
|
54
|
+
var Button = /*#__PURE__*/React.forwardRef(function Button(_ref, ref) {
|
|
55
|
+
var _ref$variant = _ref.variant,
|
|
56
|
+
variant = _ref$variant === void 0 ? "secondary" : _ref$variant,
|
|
57
|
+
_ref$size = _ref.size,
|
|
58
|
+
size = _ref$size === void 0 ? "md" : _ref$size,
|
|
59
|
+
icon = _ref.icon,
|
|
60
|
+
iconRight = _ref.iconRight,
|
|
61
|
+
_ref$iconOnly = _ref.iconOnly,
|
|
62
|
+
iconOnly = _ref$iconOnly === void 0 ? false : _ref$iconOnly,
|
|
63
|
+
_ref$loading = _ref.loading,
|
|
64
|
+
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
65
|
+
disabled = _ref.disabled,
|
|
66
|
+
children = _ref.children,
|
|
67
|
+
sx = _ref.sx,
|
|
68
|
+
_ref$type = _ref.type,
|
|
69
|
+
type = _ref$type === void 0 ? "button" : _ref$type,
|
|
70
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
71
|
+
var muiProps = VARIANT_TO_MUI[variant] || VARIANT_TO_MUI.secondary;
|
|
72
|
+
var muiSize = size === "sm" ? "small" : "medium";
|
|
73
|
+
if (process.env["NODE_ENV"] !== "production" && iconOnly && !rest["aria-label"]) {
|
|
74
|
+
// eslint-disable-next-line no-console
|
|
75
|
+
console.warn("[@portnet/ui v2] <Button iconOnly> is missing required `aria-label` (charter R-B.5).");
|
|
76
|
+
}
|
|
77
|
+
var isLoading = !!loading;
|
|
78
|
+
var startNode = isLoading ? /*#__PURE__*/_jsx(Spinner, {}) : icon;
|
|
79
|
+
var endNode = isLoading ? null : iconRight;
|
|
80
|
+
var visualSize = VISUAL_HEIGHT_BY_SIZE[size] || VISUAL_HEIGHT_BY_SIZE.md;
|
|
81
|
+
var tactile = layout.tactileMin;
|
|
82
|
+
var extension = Math.max(0, (tactile - visualSize) / 2);
|
|
83
|
+
return /*#__PURE__*/_jsx(MuiButton, _objectSpread(_objectSpread({
|
|
84
|
+
ref: ref,
|
|
85
|
+
type: type,
|
|
86
|
+
disabled: isLoading || disabled,
|
|
87
|
+
"aria-busy": isLoading || undefined,
|
|
88
|
+
size: muiSize,
|
|
89
|
+
variant: muiProps.variant,
|
|
90
|
+
color: muiProps.color,
|
|
91
|
+
startIcon: iconOnly ? undefined : startNode,
|
|
92
|
+
endIcon: iconOnly ? undefined : endNode,
|
|
93
|
+
sx: _objectSpread(_objectSpread({
|
|
94
|
+
minHeight: visualSize,
|
|
95
|
+
position: "relative",
|
|
96
|
+
"&::before": {
|
|
97
|
+
content: '""',
|
|
98
|
+
position: "absolute",
|
|
99
|
+
top: -extension,
|
|
100
|
+
bottom: -extension,
|
|
101
|
+
left: -extension,
|
|
102
|
+
right: -extension,
|
|
103
|
+
pointerEvents: "auto"
|
|
104
|
+
}
|
|
105
|
+
}, iconOnly && {
|
|
106
|
+
minWidth: visualSize,
|
|
107
|
+
padding: 0
|
|
108
|
+
}), sx)
|
|
109
|
+
}, rest), {}, {
|
|
110
|
+
children: iconOnly ? startNode || children : children
|
|
111
|
+
}));
|
|
112
|
+
});
|
|
113
|
+
export default Button;
|
|
114
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","names":["React","MuiButton","Spinner","layout","density","jsx","_jsx","VARIANT_TO_MUI","primary","variant","color","secondary","ghost","danger","VISUAL_HEIGHT_BY_SIZE","md","comfortable","btn","sm","compact","Button","forwardRef","_ref","ref","_ref$variant","_ref$size","size","icon","iconRight","_ref$iconOnly","iconOnly","_ref$loading","loading","disabled","children","sx","_ref$type","type","rest","_objectWithoutProperties","_excluded","muiProps","muiSize","process","env","console","warn","isLoading","startNode","endNode","visualSize","tactile","tactileMin","extension","Math","max","_objectSpread","undefined","startIcon","endIcon","minHeight","position","content","top","bottom","left","right","pointerEvents","minWidth","padding"],"sources":["../../../../src/lib/v2/components/Button.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiButton from \"@mui/material/Button\";\r\nimport type { ButtonProps as MuiButtonProps } from \"@mui/material/Button\";\r\nimport Spinner from \"./Spinner\";\r\nimport { layout, density } from \"../tokens\";\r\n\r\n/**\r\n * Button - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Button\". DS-aligned MUI wrapper.\r\n *\r\n * R-B.1 - Only ONE primary per screen (host-enforced).\r\n * R-B.2 - Charter target visual height 40 / 32 px.\r\n * R-B.3 - Label = verb + object (\"Créer un titre\"), never \"OK\" alone.\r\n * R-B.4 - `loading` disables interaction and shows inline spinner.\r\n * R-B.5 - Icon-only requires `aria-label`.\r\n * R-B.6 - Destructive action → variant=\"danger\", never primary.\r\n *\r\n * Variants: \"primary\" | \"secondary\" | \"ghost\" | \"danger\"\r\n * Sizes: \"md\" (40px visual) | \"sm\" (32px visual), tactile min 44px.\r\n */\r\ntype ButtonVariant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\r\ntype ButtonSize = \"sm\" | \"md\";\r\n\r\nconst VARIANT_TO_MUI: Record<\r\n ButtonVariant,\r\n { variant: MuiButtonProps[\"variant\"]; color: MuiButtonProps[\"color\"] }\r\n> = {\r\n primary: { variant: \"contained\", color: \"primary\" },\r\n secondary: { variant: \"outlined\", color: \"primary\" },\r\n ghost: { variant: \"text\", color: \"primary\" },\r\n danger: { variant: \"contained\", color: \"error\" },\r\n};\r\n\r\nconst VISUAL_HEIGHT_BY_SIZE: Record<ButtonSize, number> = {\r\n md: density.comfortable.btn, // 40\r\n sm: density.compact.btn, // 32\r\n};\r\n\r\nexport interface ButtonProps extends Omit<MuiButtonProps, \"variant\" | \"size\"> {\r\n /** Visual variant. @default \"secondary\" */\r\n variant?: ButtonVariant | undefined;\r\n /** Charter size — \"md\" (40px visual) or \"sm\" (32px visual). @default \"md\" */\r\n size?: ButtonSize | undefined;\r\n /** Leading icon (start adornment). */\r\n icon?: React.ReactNode | undefined;\r\n /** Trailing icon (end adornment). */\r\n iconRight?: React.ReactNode | undefined;\r\n /** Icon-only button — requires `aria-label` (charter R-B.5). @default false */\r\n iconOnly?: boolean | undefined;\r\n /** Show an inline spinner and disable interaction. @default false */\r\n loading?: boolean | undefined;\r\n}\r\n\r\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(function Button(\r\n {\r\n variant = \"secondary\",\r\n size = \"md\",\r\n icon,\r\n iconRight,\r\n iconOnly = false,\r\n loading = false,\r\n disabled,\r\n children,\r\n sx,\r\n type = \"button\",\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const muiProps = VARIANT_TO_MUI[variant] || VARIANT_TO_MUI.secondary;\r\n const muiSize = size === \"sm\" ? \"small\" : \"medium\";\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && iconOnly && !rest[\"aria-label\"]) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <Button iconOnly> is missing required `aria-label` (charter R-B.5).\",\r\n );\r\n }\r\n\r\n const isLoading = !!loading;\r\n const startNode = isLoading ? <Spinner /> : icon;\r\n const endNode = isLoading ? null : iconRight;\r\n\r\n const visualSize = VISUAL_HEIGHT_BY_SIZE[size] || VISUAL_HEIGHT_BY_SIZE.md;\r\n const tactile = layout.tactileMin;\r\n const extension = Math.max(0, (tactile - visualSize) / 2);\r\n\r\n return (\r\n <MuiButton\r\n ref={ref}\r\n type={type}\r\n disabled={isLoading || disabled}\r\n aria-busy={isLoading || undefined}\r\n size={muiSize}\r\n variant={muiProps.variant}\r\n color={muiProps.color}\r\n startIcon={iconOnly ? undefined : startNode}\r\n endIcon={iconOnly ? undefined : endNode}\r\n sx={{\r\n minHeight: visualSize,\r\n position: \"relative\",\r\n \"&::before\": {\r\n content: '\"\"',\r\n position: \"absolute\",\r\n top: -extension,\r\n bottom: -extension,\r\n left: -extension,\r\n right: -extension,\r\n pointerEvents: \"auto\",\r\n },\r\n ...(iconOnly && {\r\n minWidth: visualSize,\r\n padding: 0,\r\n }),\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {iconOnly ? (startNode || children) : children}\r\n </MuiButton>\r\n );\r\n});\r\n\r\nexport default Button;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
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
|
+
var _excluded = ["category", "label", "tone", "children", "sx"];
|
|
3
|
+
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; }
|
|
4
|
+
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; }
|
|
5
|
+
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; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
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); }
|
|
8
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
9
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
10
|
+
import * as React from "react";
|
|
11
|
+
import Box from "@mui/material/Box";
|
|
12
|
+
import { statusToken } from "../tokens/statusPalette";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* CategoryTag — Portnet UI v2
|
|
16
|
+
*
|
|
17
|
+
* Charter §02.1 · taxonomy chip primitive. Distinct from v2.Status:
|
|
18
|
+
*
|
|
19
|
+
* v2.Status → workflow state (Brouillon, Envoyé, Approuvé, …)
|
|
20
|
+
* v2.CategoryTag → taxonomy (EI, LI, LSP, DPI, custom category)
|
|
21
|
+
*
|
|
22
|
+
* Both reuse the same 6-tone palette under the hood (statusToken),
|
|
23
|
+
* but the two primitives are kept separate so consumers can't
|
|
24
|
+
* accidentally convey "category = approved" semantics by re-using
|
|
25
|
+
* a Status chip for taxonomy purposes.
|
|
26
|
+
*
|
|
27
|
+
* Usage — built-in TI category map:
|
|
28
|
+
*
|
|
29
|
+
* <CategoryTag category="EI" />
|
|
30
|
+
* <CategoryTag category="LSP" label="Licence Sans Paiement" />
|
|
31
|
+
*
|
|
32
|
+
* Usage — explicit tone (any string category, palette key for colour):
|
|
33
|
+
*
|
|
34
|
+
* <CategoryTag tone="approved">DPI</CategoryTag>
|
|
35
|
+
* <CategoryTag tone="neutral">{customCategory}</CategoryTag>
|
|
36
|
+
*
|
|
37
|
+
* Built-in TI category → palette tone (matches ms-ti-fe legacy):
|
|
38
|
+
* EI → sent (blue)
|
|
39
|
+
* LI → approved (green)
|
|
40
|
+
* LSP → pending (amber)
|
|
41
|
+
* DPI → new (violet)
|
|
42
|
+
* any other / unknown → neutral
|
|
43
|
+
*/
|
|
44
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
45
|
+
var TI_CATEGORY_TONE = Object.freeze({
|
|
46
|
+
EI: "sent",
|
|
47
|
+
LI: "approved",
|
|
48
|
+
LSP: "pending",
|
|
49
|
+
DPI: "new"
|
|
50
|
+
});
|
|
51
|
+
function CategoryTag(_ref) {
|
|
52
|
+
var _ref2;
|
|
53
|
+
var category = _ref.category,
|
|
54
|
+
label = _ref.label,
|
|
55
|
+
tone = _ref.tone,
|
|
56
|
+
children = _ref.children,
|
|
57
|
+
sx = _ref.sx,
|
|
58
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
59
|
+
var resolvedTone = tone || TI_CATEGORY_TONE[category !== null && category !== void 0 ? category : ""] || "neutral";
|
|
60
|
+
var token = statusToken(resolvedTone);
|
|
61
|
+
var text = (_ref2 = children !== null && children !== void 0 ? children : label) !== null && _ref2 !== void 0 ? _ref2 : category;
|
|
62
|
+
return /*#__PURE__*/_jsx(Box, _objectSpread(_objectSpread({
|
|
63
|
+
component: "span",
|
|
64
|
+
sx: _objectSpread({
|
|
65
|
+
display: "inline-flex",
|
|
66
|
+
alignItems: "center",
|
|
67
|
+
fontSize: "var(--text-xs)",
|
|
68
|
+
fontWeight: "var(--fw-semibold)",
|
|
69
|
+
lineHeight: "var(--lh-snug)",
|
|
70
|
+
padding: "2px 8px",
|
|
71
|
+
borderRadius: "var(--r-full)",
|
|
72
|
+
background: token.soft,
|
|
73
|
+
color: token.fg,
|
|
74
|
+
whiteSpace: "nowrap"
|
|
75
|
+
}, sx)
|
|
76
|
+
}, rest), {}, {
|
|
77
|
+
children: text
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
export default CategoryTag;
|
|
81
|
+
//# sourceMappingURL=CategoryTag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CategoryTag.js","names":["React","Box","statusToken","jsx","_jsx","TI_CATEGORY_TONE","Object","freeze","EI","LI","LSP","DPI","CategoryTag","_ref","_ref2","category","label","tone","children","sx","rest","_objectWithoutProperties","_excluded","resolvedTone","token","text","_objectSpread","component","display","alignItems","fontSize","fontWeight","lineHeight","padding","borderRadius","background","soft","color","fg","whiteSpace"],"sources":["../../../../src/lib/v2/components/CategoryTag.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { BoxProps } from \"@mui/material/Box\";\r\nimport { statusToken } from \"../tokens/statusPalette\";\r\n\r\n/**\r\n * CategoryTag — Portnet UI v2\r\n *\r\n * Charter §02.1 · taxonomy chip primitive. Distinct from v2.Status:\r\n *\r\n * v2.Status → workflow state (Brouillon, Envoyé, Approuvé, …)\r\n * v2.CategoryTag → taxonomy (EI, LI, LSP, DPI, custom category)\r\n *\r\n * Both reuse the same 6-tone palette under the hood (statusToken),\r\n * but the two primitives are kept separate so consumers can't\r\n * accidentally convey \"category = approved\" semantics by re-using\r\n * a Status chip for taxonomy purposes.\r\n *\r\n * Usage — built-in TI category map:\r\n *\r\n * <CategoryTag category=\"EI\" />\r\n * <CategoryTag category=\"LSP\" label=\"Licence Sans Paiement\" />\r\n *\r\n * Usage — explicit tone (any string category, palette key for colour):\r\n *\r\n * <CategoryTag tone=\"approved\">DPI</CategoryTag>\r\n * <CategoryTag tone=\"neutral\">{customCategory}</CategoryTag>\r\n *\r\n * Built-in TI category → palette tone (matches ms-ti-fe legacy):\r\n * EI → sent (blue)\r\n * LI → approved (green)\r\n * LSP → pending (amber)\r\n * DPI → new (violet)\r\n * any other / unknown → neutral\r\n */\r\n\r\nexport type StatusToneKey = Parameters<typeof statusToken>[0];\r\n\r\nconst TI_CATEGORY_TONE: Record<string, StatusToneKey> = Object.freeze({\r\n EI: \"sent\",\r\n LI: \"approved\",\r\n LSP: \"pending\",\r\n DPI: \"new\",\r\n});\r\n\r\nexport interface CategoryTagProps extends BoxProps {\r\n /** Predefined category code (EI / LI / LSP / DPI). Used as default text + tone. */\r\n category?: string | undefined;\r\n /** Display text override (defaults to category). */\r\n label?: React.ReactNode | undefined;\r\n /** Colour-tone override using palette keys. Bypasses the category map. */\r\n tone?: StatusToneKey | undefined;\r\n}\r\n\r\nfunction CategoryTag({ category, label, tone, children, sx, ...rest }: CategoryTagProps) {\r\n const resolvedTone =\r\n tone || TI_CATEGORY_TONE[category ?? \"\"] || \"neutral\";\r\n const token = statusToken(resolvedTone);\r\n const text = children ?? label ?? category;\r\n\r\n return (\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n padding: \"2px 8px\",\r\n borderRadius: \"var(--r-full)\",\r\n background: token.soft,\r\n color: token.fg,\r\n whiteSpace: \"nowrap\",\r\n ...sx,\r\n }}\r\n {...rest}\r\n >\r\n {text}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default CategoryTag;\r\n"],"mappings":";;;;;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AAEnC,SAASC,WAAW,QAAQ,yBAAyB;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA7BA,SAAAC,GAAA,IAAAC,IAAA;AAiCA,IAAMC,gBAA+C,GAAGC,MAAM,CAACC,MAAM,CAAC;EACpEC,EAAE,EAAG,MAAM;EACXC,EAAE,EAAG,UAAU;EACfC,GAAG,EAAE,SAAS;EACdC,GAAG,EAAE;AACP,CAAC,CAAC;AAWF,SAASC,WAAWA,CAAAC,IAAA,EAAqE;EAAA,IAAAC,KAAA;EAAA,IAAlEC,QAAQ,GAAAF,IAAA,CAARE,QAAQ;IAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;IAAEC,IAAI,GAAAJ,IAAA,CAAJI,IAAI;IAAEC,QAAQ,GAAAL,IAAA,CAARK,QAAQ;IAAEC,EAAE,GAAAN,IAAA,CAAFM,EAAE;IAAKC,IAAI,GAAAC,wBAAA,CAAAR,IAAA,EAAAS,SAAA;EACjE,IAAMC,YAAY,GAChBN,IAAI,IAAIZ,gBAAgB,CAACU,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,EAAE,CAAC,IAAI,SAAS;EACvD,IAAMS,KAAK,GAAGtB,WAAW,CAACqB,YAAY,CAAC;EACvC,IAAME,IAAI,IAAAX,KAAA,GAAGI,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIF,KAAK,cAAAF,KAAA,cAAAA,KAAA,GAAIC,QAAQ;EAE1C,oBACEX,IAAA,CAACH,GAAG,EAAAyB,aAAA,CAAAA,aAAA;IACFC,SAAS,EAAC,MAAM;IAChBR,EAAE,EAAAO,aAAA;MACAE,OAAO,EAAS,aAAa;MAC7BC,UAAU,EAAM,QAAQ;MACxBC,QAAQ,EAAQ,gBAAgB;MAChCC,UAAU,EAAM,oBAAoB;MACpCC,UAAU,EAAM,gBAAgB;MAChCC,OAAO,EAAS,SAAS;MACzBC,YAAY,EAAI,eAAe;MAC/BC,UAAU,EAAMX,KAAK,CAACY,IAAI;MAC1BC,KAAK,EAAWb,KAAK,CAACc,EAAE;MACxBC,UAAU,EAAM;IAAQ,GACrBpB,EAAE;EACL,GACEC,IAAI;IAAAF,QAAA,EAEPO;EAAI,EACF,CAAC;AAEV;AAEA,eAAeb,WAAW","ignoreList":[]}
|