@portnet/ui 6.0.2 → 6.0.3
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 +652 -0
- package/dist/esm/index.js +72 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/v2/__tests__/AppMain.test.js +130 -0
- package/dist/esm/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js +180 -0
- package/dist/esm/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js +150 -0
- package/dist/esm/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js +93 -0
- package/dist/esm/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +71 -38
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FieldNaming.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +11 -11
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FileCard.test.js +18 -17
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +87 -179
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +32 -44
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js +101 -0
- package/dist/esm/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +118 -199
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +44 -42
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js +165 -0
- package/dist/esm/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js +156 -0
- package/dist/esm/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +37 -52
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/esm/v2/__tests__/apiError.test.js +50 -69
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/esm/v2/__tests__/banned-patterns.test.js +41 -122
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/esm/v2/__tests__/chart-palette.test.js +204 -0
- package/dist/esm/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/esm/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/esm/v2/__tests__/fileValidation.test.js +134 -0
- package/dist/esm/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js +321 -0
- package/dist/esm/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js +68 -0
- package/dist/esm/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js +218 -0
- package/dist/esm/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +17 -21
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/esm/v2/__tests__/locale-fallback.test.js +35 -40
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js +143 -0
- package/dist/esm/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/esm/v2/__tests__/rowActions.test.js +182 -0
- package/dist/esm/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js +155 -0
- package/dist/esm/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +266 -402
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js +120 -0
- package/dist/esm/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +48 -70
- package/dist/esm/v2/components/Accordion.js.map +1 -1
- package/dist/esm/v2/components/ActionStrip.js +31 -43
- package/dist/esm/v2/components/ActionStrip.js.map +1 -1
- package/dist/esm/v2/components/Banner.js +25 -22
- package/dist/esm/v2/components/Banner.js.map +1 -1
- package/dist/esm/v2/components/Busy.js +14 -19
- package/dist/esm/v2/components/Busy.js.map +1 -1
- package/dist/esm/v2/components/Button.js +34 -45
- package/dist/esm/v2/components/Button.js.map +1 -1
- package/dist/esm/v2/components/CategoryTag.js +44 -27
- package/dist/esm/v2/components/CategoryTag.js.map +1 -1
- package/dist/esm/v2/components/Checkbox.js +32 -38
- package/dist/esm/v2/components/Checkbox.js.map +1 -1
- package/dist/esm/v2/components/Chip.js +23 -36
- package/dist/esm/v2/components/Chip.js.map +1 -1
- package/dist/esm/v2/components/Combobox.js +112 -136
- package/dist/esm/v2/components/Combobox.js.map +1 -1
- package/dist/esm/v2/components/CommandPalette.js +113 -198
- package/dist/esm/v2/components/CommandPalette.js.map +1 -1
- package/dist/esm/v2/components/ConfirmDialog.js +36 -45
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/esm/v2/components/DatePicker.js +78 -81
- package/dist/esm/v2/components/DatePicker.js.map +1 -1
- package/dist/esm/v2/components/DateRangePicker.js +63 -74
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -1
- package/dist/esm/v2/components/DateTimePicker.js +81 -86
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -1
- package/dist/esm/v2/components/Drawer.js +71 -65
- package/dist/esm/v2/components/Drawer.js.map +1 -1
- package/dist/esm/v2/components/Dropzone.js +130 -177
- package/dist/esm/v2/components/Dropzone.js.map +1 -1
- package/dist/esm/v2/components/EmptyState.js +9 -9
- package/dist/esm/v2/components/EmptyState.js.map +1 -1
- package/dist/esm/v2/components/FavoriteToggle.js +24 -33
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/esm/v2/components/Field.js +155 -59
- package/dist/esm/v2/components/Field.js.map +1 -1
- package/dist/esm/v2/components/FieldError.js +9 -13
- package/dist/esm/v2/components/FieldError.js.map +1 -1
- package/dist/esm/v2/components/FieldHelp.js +28 -49
- package/dist/esm/v2/components/FieldHelp.js.map +1 -1
- package/dist/esm/v2/components/FileCard.js +14 -19
- package/dist/esm/v2/components/FileCard.js.map +1 -1
- package/dist/esm/v2/components/FilterTab.js +22 -31
- package/dist/esm/v2/components/FilterTab.js.map +1 -1
- package/dist/esm/v2/components/ForbiddenPage.js +28 -8
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/esm/v2/components/FormGrid.js +48 -54
- package/dist/esm/v2/components/FormGrid.js.map +1 -1
- package/dist/esm/v2/components/FormikDisplay.js +98 -24
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -1
- package/dist/esm/v2/components/Input.js +75 -34
- package/dist/esm/v2/components/Input.js.map +1 -1
- package/dist/esm/v2/components/KPICard.js +42 -51
- package/dist/esm/v2/components/KPICard.js.map +1 -1
- package/dist/esm/v2/components/KPIStrip.js +9 -15
- package/dist/esm/v2/components/KPIStrip.js.map +1 -1
- package/dist/esm/v2/components/KV.js +16 -23
- package/dist/esm/v2/components/KV.js.map +1 -1
- package/dist/esm/v2/components/KVGrid.js +15 -23
- package/dist/esm/v2/components/KVGrid.js.map +1 -1
- package/dist/esm/v2/components/Layout.js +81 -117
- package/dist/esm/v2/components/Layout.js.map +1 -1
- package/dist/esm/v2/components/MobileRowCard.js +64 -75
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -1
- package/dist/esm/v2/components/Modal.js +44 -53
- package/dist/esm/v2/components/Modal.js.map +1 -1
- package/dist/esm/v2/components/NetworkErrorPage.js +28 -11
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/esm/v2/components/NotFoundPage.js +28 -9
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -1
- package/dist/esm/v2/components/NumberInput.js +77 -107
- package/dist/esm/v2/components/NumberInput.js.map +1 -1
- package/dist/esm/v2/components/OverflowMenu.js +24 -42
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -1
- package/dist/esm/v2/components/PdfViewer.js +24 -33
- package/dist/esm/v2/components/PdfViewer.js.map +1 -1
- package/dist/esm/v2/components/ProgressBar.js +28 -36
- package/dist/esm/v2/components/ProgressBar.js.map +1 -1
- package/dist/esm/v2/components/Radio.js +49 -57
- package/dist/esm/v2/components/Radio.js.map +1 -1
- package/dist/esm/v2/components/SectionErrorBoundary.js +84 -130
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/esm/v2/components/SectionHeader.js +24 -31
- package/dist/esm/v2/components/SectionHeader.js.map +1 -1
- package/dist/esm/v2/components/Segmented.js +59 -84
- package/dist/esm/v2/components/Segmented.js.map +1 -1
- package/dist/esm/v2/components/Select.js +100 -138
- package/dist/esm/v2/components/Select.js.map +1 -1
- package/dist/esm/v2/components/ServerErrorPage.js +27 -10
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/esm/v2/components/Skeleton.js +81 -96
- package/dist/esm/v2/components/Skeleton.js.map +1 -1
- package/dist/esm/v2/components/SkipLink.js +6 -7
- package/dist/esm/v2/components/SkipLink.js.map +1 -1
- package/dist/esm/v2/components/Spinner.js +13 -22
- package/dist/esm/v2/components/Spinner.js.map +1 -1
- package/dist/esm/v2/components/Status.js +14 -25
- package/dist/esm/v2/components/Status.js.map +1 -1
- package/dist/esm/v2/components/Stepper.js +68 -71
- package/dist/esm/v2/components/Stepper.js.map +1 -1
- package/dist/esm/v2/components/Surface.js +25 -44
- package/dist/esm/v2/components/Surface.js.map +1 -1
- package/dist/esm/v2/components/Switch.js +21 -29
- package/dist/esm/v2/components/Switch.js.map +1 -1
- package/dist/esm/v2/components/TabPanel.js +84 -0
- package/dist/esm/v2/components/TabPanel.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +43 -19
- package/dist/esm/v2/components/Tabs.js.map +1 -1
- package/dist/esm/v2/components/TelInput.js +75 -108
- package/dist/esm/v2/components/TelInput.js.map +1 -1
- package/dist/esm/v2/components/Textarea.js +21 -30
- package/dist/esm/v2/components/Textarea.js.map +1 -1
- package/dist/esm/v2/components/TimePicker.js +59 -69
- package/dist/esm/v2/components/TimePicker.js.map +1 -1
- package/dist/esm/v2/components/Toast.js +109 -163
- package/dist/esm/v2/components/Toast.js.map +1 -1
- package/dist/esm/v2/components/Tooltip.js +18 -31
- package/dist/esm/v2/components/Tooltip.js.map +1 -1
- package/dist/esm/v2/components/_ErrorPageBody.js +6 -5
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/esm/v2/components/_pickerShared.js +2 -2
- package/dist/esm/v2/components/_pickerShared.js.map +1 -1
- package/dist/esm/v2/components/index.js +37 -0
- package/dist/esm/v2/components/index.js.map +1 -1
- package/dist/esm/v2/hooks/index.js +62 -0
- package/dist/esm/v2/hooks/index.js.map +1 -1
- package/dist/esm/v2/hooks/useAppliedFilters.js +112 -0
- package/dist/esm/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js +82 -0
- package/dist/esm/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +5 -19
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/esm/v2/hooks/useDensity.js +13 -17
- package/dist/esm/v2/hooks/useDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusFirstError.js +25 -33
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js +81 -0
- package/dist/esm/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +19 -23
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/esm/v2/hooks/useFormAutoSave.js +38 -53
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +32 -51
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js +125 -0
- package/dist/esm/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js +99 -0
- package/dist/esm/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +2 -10
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/esm/v2/hooks/useSortedRows.js +3 -5
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/esm/v2/hooks/useTabLoading.js +6 -21
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/esm/v2/index.js +2 -3
- package/dist/esm/v2/index.js.map +1 -1
- package/dist/esm/v2/modalContext.js +2 -2
- package/dist/esm/v2/modalContext.js.map +1 -1
- package/dist/esm/v2/models/favorite.js.map +1 -1
- package/dist/esm/v2/models/personalization.js.map +1 -1
- package/dist/esm/v2/models/referentiel.js.map +1 -1
- package/dist/esm/v2/models/savedFilter.js.map +1 -1
- package/dist/esm/v2/patterns/ActionBar.js +115 -159
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/AppMain.js +108 -0
- package/dist/esm/v2/patterns/AppMain.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +31 -34
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/esm/v2/patterns/ChartFigure.js +151 -0
- package/dist/esm/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +111 -152
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/ColumnsToggle.js +43 -77
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/esm/v2/patterns/DataGrid.js +221 -255
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +76 -94
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridToolbar.js +85 -89
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/esm/v2/patterns/DataGridVirtualized.js +141 -182
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +26 -30
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/esm/v2/patterns/DetailSplit.js +108 -0
- package/dist/esm/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +15 -17
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/esm/v2/patterns/FavoritesFilter.js +30 -39
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/esm/v2/patterns/FilterTabBar.js +112 -0
- package/dist/esm/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +12 -13
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/esm/v2/patterns/FormPageShell.js +43 -41
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/FormSection.js +30 -38
- package/dist/esm/v2/patterns/FormSection.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckbox.js +29 -39
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +56 -60
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikCombobox.js +51 -69
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDatePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +44 -58
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorFocus.js +22 -23
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/esm/v2/patterns/FormikErrorSummary.js +89 -0
- package/dist/esm/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +94 -78
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -1
- package/dist/esm/v2/patterns/FormikInput.js +40 -53
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -1
- package/dist/esm/v2/patterns/FormikRadioGroup.js +39 -51
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/esm/v2/patterns/FormikReferentielField.js +49 -59
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/FormikSelect.js +64 -87
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/esm/v2/patterns/FormikTextarea.js +30 -46
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +53 -71
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +6 -7
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/esm/v2/patterns/PageContent.js +10 -14
- package/dist/esm/v2/patterns/PageContent.js.map +1 -1
- package/dist/esm/v2/patterns/PreviewDrawer.js +153 -0
- package/dist/esm/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +327 -312
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +27 -22
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/esm/v2/patterns/SaveFilterDialog.js +38 -66
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +62 -81
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/esm/v2/patterns/SkeletonPageShell.js +106 -129
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/esm/v2/patterns/SortableHeader.js +22 -45
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/esm/v2/patterns/Tour.js +94 -120
- package/dist/esm/v2/patterns/Tour.js.map +1 -1
- package/dist/esm/v2/patterns/_dataGridShared.js +107 -128
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/esm/v2/patterns/_pickerSerialisation.js +6 -8
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/esm/v2/patterns/_sort.js +17 -33
- package/dist/esm/v2/patterns/_sort.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnReorder.js +122 -160
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/esm/v2/patterns/_useColumnResize.js +78 -96
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/esm/v2/patterns/filterCriteria.js +102 -0
- package/dist/esm/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +152 -0
- package/dist/esm/v2/patterns/index.js.map +1 -1
- package/dist/esm/v2/patterns/rowActions.js +223 -0
- package/dist/esm/v2/patterns/rowActions.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +50 -47
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +22 -23
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +13 -13
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favorites.js +36 -60
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +22 -34
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +28 -34
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js +119 -0
- package/dist/esm/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +90 -98
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/esm/v2/personalization/createPersonalizationStore.js +78 -181
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/esm/v2/personalization/index.js +17 -0
- package/dist/esm/v2/personalization/index.js.map +1 -1
- package/dist/esm/v2/personalization/personalizationContext.js +9 -9
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/esm/v2/personalization/schema.js +8 -9
- package/dist/esm/v2/personalization/schema.js.map +1 -1
- package/dist/esm/v2/referentiel/ReferentielProvider.js +27 -42
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/esm/v2/referentiel/types.js +2 -0
- package/dist/esm/v2/referentiel/types.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +10 -11
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielOptions.js +60 -117
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/esm/v2/referentiel/useReferentielSearch.js +37 -91
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/esm/v2/theme/_brand.js +8 -24
- package/dist/esm/v2/theme/_brand.js.map +1 -1
- package/dist/esm/v2/theme/_brandSecondary.js +8 -24
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/esm/v2/theme/createPortnetTheme.js +51 -61
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/esm/v2/theme/cssVariables.js +62 -69
- package/dist/esm/v2/theme/cssVariables.js.map +1 -1
- package/dist/esm/v2/theme/index.js +5 -5
- package/dist/esm/v2/theme/index.js.map +1 -1
- package/dist/esm/v2/tokens/breakpoints.js +14 -14
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -1
- package/dist/esm/v2/tokens/chart.js +261 -0
- package/dist/esm/v2/tokens/chart.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +22 -22
- package/dist/esm/v2/tokens/colors.js.map +1 -1
- package/dist/esm/v2/tokens/density.js +62 -7
- package/dist/esm/v2/tokens/density.js.map +1 -1
- package/dist/esm/v2/tokens/index.js +49 -34
- package/dist/esm/v2/tokens/index.js.map +1 -1
- package/dist/esm/v2/tokens/motion.js +12 -20
- package/dist/esm/v2/tokens/motion.js.map +1 -1
- package/dist/esm/v2/tokens/radius.js +1 -1
- package/dist/esm/v2/tokens/radius.js.map +1 -1
- package/dist/esm/v2/tokens/shadows.js +6 -6
- package/dist/esm/v2/tokens/shadows.js.map +1 -1
- package/dist/esm/v2/tokens/spacing.js +2 -2
- package/dist/esm/v2/tokens/spacing.js.map +1 -1
- package/dist/esm/v2/tokens/state.js +1 -1
- package/dist/esm/v2/tokens/state.js.map +1 -1
- package/dist/esm/v2/tokens/statusPalette.js +17 -21
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -1
- package/dist/esm/v2/tokens/tokens.json +6 -1
- package/dist/esm/v2/tokens/typography.js +13 -13
- package/dist/esm/v2/tokens/typography.js.map +1 -1
- package/dist/esm/v2/tokens/zIndex.js +1 -1
- package/dist/esm/v2/tokens/zIndex.js.map +1 -1
- package/dist/esm/v2/types/datagrid.js.map +1 -1
- package/dist/esm/v2/utils/apiError.js +16 -37
- package/dist/esm/v2/utils/apiError.js.map +1 -1
- package/dist/esm/v2/utils/contrast.js +31 -32
- package/dist/esm/v2/utils/contrast.js.map +1 -1
- package/dist/esm/v2/utils/cx.js +5 -25
- package/dist/esm/v2/utils/cx.js.map +1 -1
- package/dist/esm/v2/utils/fileDownload.js +23 -26
- package/dist/esm/v2/utils/fileDownload.js.map +1 -1
- package/dist/esm/v2/utils/fileValidation.js +209 -0
- package/dist/esm/v2/utils/fileValidation.js.map +1 -0
- package/dist/esm/v2/utils/fmtDate.js +111 -0
- package/dist/esm/v2/utils/fmtDate.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +8 -10
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -1
- package/dist/esm/v2/utils/formikErrors.js +78 -0
- package/dist/esm/v2/utils/formikErrors.js.map +1 -0
- package/dist/esm/v2/utils/index.js +35 -2
- package/dist/esm/v2/utils/index.js.map +1 -1
- package/dist/esm/v2/utils/mergeLabels.js +7 -12
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -1
- package/dist/esm/v2/utils/networkStatus.js +12 -12
- package/dist/esm/v2/utils/networkStatus.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -49
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/AppMain.test.js +133 -0
- package/dist/v2/__tests__/AppMain.test.js.map +1 -0
- package/dist/v2/__tests__/ChartFigure.test.js +183 -0
- package/dist/v2/__tests__/ChartFigure.test.js.map +1 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js +153 -0
- package/dist/v2/__tests__/DataGridRowActionsPropagation.test.js.map +1 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js +94 -0
- package/dist/v2/__tests__/DrawerTactileTargets.test.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +82 -49
- package/dist/v2/__tests__/FieldError.test.js.map +1 -1
- package/dist/v2/__tests__/FieldNaming.test.js +161 -0
- package/dist/v2/__tests__/FieldNaming.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +23 -25
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -1
- package/dist/v2/__tests__/FileCard.test.js +29 -28
- package/dist/v2/__tests__/FileCard.test.js.map +1 -1
- package/dist/v2/__tests__/FormikCheckbox.test.js +90 -183
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +38 -48
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -1
- package/dist/v2/__tests__/FormikDisplayWidth.test.js +102 -0
- package/dist/v2/__tests__/FormikDisplayWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +123 -204
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -1
- package/dist/v2/__tests__/MobileRowCard.test.js +63 -61
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/PreviewDrawer.test.js +169 -0
- package/dist/v2/__tests__/PreviewDrawer.test.js.map +1 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js +159 -0
- package/dist/v2/__tests__/ReferentielFieldContainer.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +53 -68
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -1
- package/dist/v2/__tests__/apiError.test.js +50 -69
- package/dist/v2/__tests__/apiError.test.js.map +1 -1
- package/dist/v2/__tests__/banned-patterns.test.js +42 -123
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -1
- package/dist/v2/__tests__/chart-palette.test.js +205 -0
- package/dist/v2/__tests__/chart-palette.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +42 -74
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -1
- package/dist/v2/__tests__/cssVariables.test.js +44 -51
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -1
- package/dist/v2/__tests__/fileValidation.test.js +136 -0
- package/dist/v2/__tests__/fileValidation.test.js.map +1 -0
- package/dist/v2/__tests__/filterCriteria.test.js +324 -0
- package/dist/v2/__tests__/filterCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/fmtDate.test.js +69 -0
- package/dist/v2/__tests__/fmtDate.test.js.map +1 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js +221 -0
- package/dist/v2/__tests__/gap-leakage-refonte.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +23 -27
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/__tests__/locale-fallback.test.js +47 -52
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -1
- package/dist/v2/__tests__/reviveSavedCriteria.test.js +144 -0
- package/dist/v2/__tests__/reviveSavedCriteria.test.js.map +1 -0
- package/dist/v2/__tests__/rowActions.test.js +186 -0
- package/dist/v2/__tests__/rowActions.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js +156 -0
- package/dist/v2/__tests__/useFocusOnRouteChange.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +270 -407
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -1
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js +123 -0
- package/dist/v2/__tests__/usePrefersReducedMotion.test.js.map +1 -0
- package/dist/v2/components/Accordion.js +60 -82
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.js +40 -52
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.js +42 -41
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.js +22 -27
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.js +39 -50
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js +49 -32
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.js +39 -45
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.js +29 -42
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.js +122 -144
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.js +138 -225
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +46 -56
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.js +81 -86
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.js +77 -87
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.js +84 -91
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +93 -88
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.js +150 -196
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.js +18 -20
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +28 -39
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +62 -4
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +169 -70
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.js +18 -21
- package/dist/v2/components/FieldError.js.map +1 -1
- package/dist/v2/components/FieldHelp.js +40 -60
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.js +27 -31
- package/dist/v2/components/FileCard.js.map +1 -1
- package/dist/v2/components/FilterTab.js +30 -38
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/ForbiddenPage.d.ts +25 -1
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -1
- package/dist/v2/components/ForbiddenPage.js +37 -17
- package/dist/v2/components/ForbiddenPage.js.map +1 -1
- package/dist/v2/components/FormGrid.js +53 -59
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +50 -1
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js +108 -33
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +40 -0
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js +81 -41
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.js +57 -67
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.js +16 -22
- package/dist/v2/components/KPIStrip.js.map +1 -1
- package/dist/v2/components/KV.js +25 -31
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.js +19 -26
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.js +91 -120
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.js +79 -91
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.js +61 -69
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +19 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js +38 -21
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NotFoundPage.d.ts +17 -1
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -1
- package/dist/v2/components/NotFoundPage.js +37 -18
- package/dist/v2/components/NotFoundPage.js.map +1 -1
- package/dist/v2/components/NumberInput.js +88 -118
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.js +38 -56
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.js +34 -45
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.js +42 -49
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.js +59 -67
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.js +90 -135
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -1
- package/dist/v2/components/SectionHeader.js +34 -41
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.js +69 -93
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +26 -2
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +120 -155
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +27 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js +37 -20
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.js +86 -100
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.js +9 -12
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Spinner.js +16 -25
- package/dist/v2/components/Spinner.js.map +1 -1
- package/dist/v2/components/Status.js +18 -29
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.js +80 -82
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.js +34 -49
- package/dist/v2/components/Surface.js.map +1 -1
- package/dist/v2/components/Switch.js +29 -37
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/TabPanel.d.ts +17 -0
- package/dist/v2/components/TabPanel.d.ts.map +1 -0
- package/dist/v2/components/TabPanel.js +90 -0
- package/dist/v2/components/TabPanel.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +25 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js +53 -29
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.js +80 -115
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.js +26 -35
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.js +62 -74
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.js +119 -174
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.js +23 -38
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/_ErrorPageBody.js +15 -16
- package/dist/v2/components/_ErrorPageBody.js.map +1 -1
- package/dist/v2/components/_pickerShared.js +5 -5
- package/dist/v2/components/_pickerShared.js.map +1 -1
- package/dist/v2/components/index.d.ts +40 -1
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +153 -136
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/hooks/index.d.ts +65 -0
- package/dist/v2/hooks/index.d.ts.map +1 -1
- package/dist/v2/hooks/index.js +63 -24
- package/dist/v2/hooks/index.js.map +1 -1
- package/dist/v2/hooks/useAppliedFilters.d.ts +102 -0
- package/dist/v2/hooks/useAppliedFilters.d.ts.map +1 -0
- package/dist/v2/hooks/useAppliedFilters.js +117 -0
- package/dist/v2/hooks/useAppliedFilters.js.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts +64 -0
- package/dist/v2/hooks/useDebouncedCallback.d.ts.map +1 -0
- package/dist/v2/hooks/useDebouncedCallback.js +87 -0
- package/dist/v2/hooks/useDebouncedCallback.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +6 -20
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -1
- package/dist/v2/hooks/useDensity.d.ts.map +1 -1
- package/dist/v2/hooks/useDensity.js +14 -18
- package/dist/v2/hooks/useDensity.js.map +1 -1
- package/dist/v2/hooks/useFocusFirstError.js +26 -34
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -1
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts +65 -0
- package/dist/v2/hooks/useFocusOnRouteChange.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js +88 -0
- package/dist/v2/hooks/useFocusOnRouteChange.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +20 -24
- package/dist/v2/hooks/useFocusTrap.js.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.d.ts +4 -4
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -1
- package/dist/v2/hooks/useFormAutoSave.js +39 -54
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -1
- package/dist/v2/hooks/useFormCompletionProgress.js +33 -52
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -1
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts +25 -0
- package/dist/v2/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js +132 -0
- package/dist/v2/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts +56 -0
- package/dist/v2/hooks/usePrefersReducedMotion.d.ts.map +1 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js +105 -0
- package/dist/v2/hooks/usePrefersReducedMotion.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +5 -13
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -1
- package/dist/v2/hooks/useSortedRows.js +4 -6
- package/dist/v2/hooks/useSortedRows.js.map +1 -1
- package/dist/v2/hooks/useTabLoading.js +7 -22
- package/dist/v2/hooks/useTabLoading.js.map +1 -1
- package/dist/v2/index.js +143 -145
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/modalContext.js +2 -2
- package/dist/v2/modalContext.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +8 -9
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/index.js +4 -4
- package/dist/v2/models/index.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +44 -48
- 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 +32 -50
- 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 -17
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.js +152 -187
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/AppMain.d.ts +109 -0
- package/dist/v2/patterns/AppMain.d.ts.map +1 -0
- package/dist/v2/patterns/AppMain.js +115 -0
- package/dist/v2/patterns/AppMain.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +40 -42
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/ChartFigure.d.ts +124 -0
- package/dist/v2/patterns/ChartFigure.d.ts.map +1 -0
- package/dist/v2/patterns/ChartFigure.js +159 -0
- package/dist/v2/patterns/ChartFigure.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +138 -174
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +60 -94
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/DataGrid.js +262 -297
- package/dist/v2/patterns/DataGrid.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +104 -121
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +103 -106
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js +179 -217
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +32 -35
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/DetailSplit.d.ts +87 -0
- package/dist/v2/patterns/DetailSplit.d.ts.map +1 -0
- package/dist/v2/patterns/DetailSplit.js +116 -0
- package/dist/v2/patterns/DetailSplit.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +22 -23
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +36 -44
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FilterTabBar.d.ts +28 -0
- package/dist/v2/patterns/FilterTabBar.d.ts.map +1 -0
- package/dist/v2/patterns/FilterTabBar.js +120 -0
- package/dist/v2/patterns/FilterTabBar.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +20 -23
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.js +53 -50
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +8 -3
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +44 -51
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.js +36 -45
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +17 -1
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js +62 -65
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +55 -72
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +50 -64
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.js +50 -64
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js +25 -26
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikErrorSummary.d.ts +74 -0
- package/dist/v2/patterns/FormikErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorSummary.js +97 -0
- package/dist/v2/patterns/FormikErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +14 -1
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js +99 -83
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.js +45 -58
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.js +45 -56
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts +12 -1
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js +54 -64
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +70 -92
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +35 -51
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +60 -80
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js +13 -16
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.js +17 -20
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/PreviewDrawer.d.ts +49 -0
- package/dist/v2/patterns/PreviewDrawer.d.ts.map +1 -0
- package/dist/v2/patterns/PreviewDrawer.js +159 -0
- package/dist/v2/patterns/PreviewDrawer.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +86 -2
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +347 -327
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +6 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.js +38 -30
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +50 -77
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +89 -107
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js +122 -143
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.js +35 -57
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.js +121 -142
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +131 -147
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.js +9 -10
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -1
- package/dist/v2/patterns/_sort.js +17 -33
- package/dist/v2/patterns/_sort.js.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js +124 -163
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js +80 -99
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/filterCriteria.d.ts +78 -0
- package/dist/v2/patterns/filterCriteria.d.ts.map +1 -0
- package/dist/v2/patterns/filterCriteria.js +110 -0
- package/dist/v2/patterns/filterCriteria.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +160 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +157 -79
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/patterns/rowActions.d.ts +150 -0
- package/dist/v2/patterns/rowActions.d.ts.map +1 -0
- package/dist/v2/patterns/rowActions.js +232 -0
- package/dist/v2/patterns/rowActions.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js +57 -53
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/_storageKey.js +5 -5
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +25 -24
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +14 -14
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/index.js +5 -5
- package/dist/v2/personalization/adapters/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/favorites.js +39 -62
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js +25 -37
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.js +31 -36
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +12 -12
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts +88 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js +126 -0
- package/dist/v2/personalization/capabilities/reviveSavedCriteria.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +93 -100
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js +81 -182
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +16 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +30 -23
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/personalizationContext.js +10 -12
- package/dist/v2/personalization/personalizationContext.js.map +1 -1
- package/dist/v2/personalization/schema.js +8 -9
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js +31 -45
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/index.js +11 -13
- package/dist/v2/referentiel/index.js.map +1 -1
- package/dist/v2/referentiel/types.d.ts +105 -0
- package/dist/v2/referentiel/types.d.ts.map +1 -0
- package/dist/v2/referentiel/types.js +6 -0
- package/dist/v2/referentiel/types.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +13 -16
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +7 -17
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js +63 -120
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +7 -48
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js +40 -95
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/_brand.js +12 -26
- package/dist/v2/theme/_brand.js.map +1 -1
- package/dist/v2/theme/_brandSecondary.js +12 -26
- package/dist/v2/theme/_brandSecondary.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +41 -49
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/theme/cssVariables.d.ts +3 -3
- package/dist/v2/theme/cssVariables.d.ts.map +1 -1
- package/dist/v2/theme/cssVariables.js +65 -70
- package/dist/v2/theme/cssVariables.js.map +1 -1
- package/dist/v2/theme/index.js +10 -10
- package/dist/v2/theme/index.js.map +1 -1
- package/dist/v2/tokens/breakpoints.js +16 -16
- package/dist/v2/tokens/breakpoints.js.map +1 -1
- package/dist/v2/tokens/chart.d.ts +103 -0
- package/dist/v2/tokens/chart.d.ts.map +1 -0
- package/dist/v2/tokens/chart.js +270 -0
- package/dist/v2/tokens/chart.js.map +1 -0
- package/dist/v2/tokens/colors.js +24 -24
- package/dist/v2/tokens/colors.js.map +1 -1
- package/dist/v2/tokens/density.d.ts +104 -0
- package/dist/v2/tokens/density.d.ts.map +1 -1
- package/dist/v2/tokens/density.js +67 -12
- package/dist/v2/tokens/density.js.map +1 -1
- package/dist/v2/tokens/index.d.ts +50 -1
- package/dist/v2/tokens/index.d.ts.map +1 -1
- package/dist/v2/tokens/index.js +116 -68
- package/dist/v2/tokens/index.js.map +1 -1
- package/dist/v2/tokens/motion.js +16 -22
- package/dist/v2/tokens/motion.js.map +1 -1
- package/dist/v2/tokens/radius.js +3 -3
- package/dist/v2/tokens/radius.js.map +1 -1
- package/dist/v2/tokens/shadows.js +8 -8
- package/dist/v2/tokens/shadows.js.map +1 -1
- package/dist/v2/tokens/spacing.js +4 -4
- package/dist/v2/tokens/spacing.js.map +1 -1
- package/dist/v2/tokens/state.js +3 -3
- package/dist/v2/tokens/state.js.map +1 -1
- package/dist/v2/tokens/statusPalette.js +21 -23
- package/dist/v2/tokens/statusPalette.js.map +1 -1
- package/dist/v2/tokens/tokens.json +6 -1
- package/dist/v2/tokens/typography.js +15 -15
- package/dist/v2/tokens/typography.js.map +1 -1
- package/dist/v2/tokens/zIndex.js +3 -3
- package/dist/v2/tokens/zIndex.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +9 -1
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/types/index.js +2 -2
- package/dist/v2/types/index.js.map +1 -1
- package/dist/v2/utils/apiError.js +16 -37
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/contrast.js +31 -32
- package/dist/v2/utils/contrast.js.map +1 -1
- package/dist/v2/utils/cx.js +7 -27
- package/dist/v2/utils/cx.js.map +1 -1
- package/dist/v2/utils/fileDownload.js +25 -28
- package/dist/v2/utils/fileDownload.js.map +1 -1
- package/dist/v2/utils/fileValidation.d.ts +116 -0
- package/dist/v2/utils/fileValidation.d.ts.map +1 -0
- package/dist/v2/utils/fileValidation.js +220 -0
- package/dist/v2/utils/fileValidation.js.map +1 -0
- package/dist/v2/utils/fmtDate.d.ts +103 -0
- package/dist/v2/utils/fmtDate.d.ts.map +1 -0
- package/dist/v2/utils/fmtDate.js +119 -0
- package/dist/v2/utils/fmtDate.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +3 -3
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -1
- package/dist/v2/utils/fmtMoney.js +9 -11
- package/dist/v2/utils/fmtMoney.js.map +1 -1
- package/dist/v2/utils/formikErrors.d.ts +67 -0
- package/dist/v2/utils/formikErrors.d.ts.map +1 -0
- package/dist/v2/utils/formikErrors.js +85 -0
- package/dist/v2/utils/formikErrors.js.map +1 -0
- package/dist/v2/utils/index.d.ts +5 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +67 -18
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.js +9 -14
- package/dist/v2/utils/mergeLabels.js.map +1 -1
- package/dist/v2/utils/networkStatus.js +14 -14
- package/dist/v2/utils/networkStatus.js.map +1 -1
- package/package.json +26 -9
|
@@ -1,12 +1,3 @@
|
|
|
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 = ["checked", "onChange", "label", "description", "disabled", "size", "labelPlacement", "sx", "aria-label"];
|
|
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
1
|
import * as React from "react";
|
|
11
2
|
import MuiSwitch from "@mui/material/Switch";
|
|
12
3
|
import FormControlLabel from "@mui/material/FormControlLabel";
|
|
@@ -32,25 +23,24 @@ import Box from "@mui/material/Box";
|
|
|
32
23
|
* <Switch checked={v} onChange={...} aria-label="Activer le mode sombre" />
|
|
33
24
|
*/
|
|
34
25
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var descId = React.useId();
|
|
26
|
+
const Switch = /*#__PURE__*/React.forwardRef(function Switch({
|
|
27
|
+
checked,
|
|
28
|
+
onChange,
|
|
29
|
+
label,
|
|
30
|
+
description,
|
|
31
|
+
disabled,
|
|
32
|
+
size = "md",
|
|
33
|
+
labelPlacement = "end",
|
|
34
|
+
sx,
|
|
35
|
+
"aria-label": ariaLabel,
|
|
36
|
+
...rest
|
|
37
|
+
}, ref) {
|
|
38
|
+
const descId = React.useId();
|
|
49
39
|
if (process.env["NODE_ENV"] !== "production" && !label && !ariaLabel) {
|
|
50
40
|
// eslint-disable-next-line no-console
|
|
51
41
|
console.warn("[@portnet/ui v2] <Switch> without `label` requires `aria-label` for screen readers.");
|
|
52
42
|
}
|
|
53
|
-
|
|
43
|
+
const sw = /*#__PURE__*/_jsx(MuiSwitch, {
|
|
54
44
|
ref: ref,
|
|
55
45
|
checked: !!checked,
|
|
56
46
|
onChange: onChange,
|
|
@@ -66,7 +56,7 @@ var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref, ref) {
|
|
|
66
56
|
"aria-describedby": description ? descId : undefined
|
|
67
57
|
}
|
|
68
58
|
},
|
|
69
|
-
sx:
|
|
59
|
+
sx: {
|
|
70
60
|
"& .MuiSwitch-thumb": {
|
|
71
61
|
boxShadow: "var(--shadow-xs)"
|
|
72
62
|
},
|
|
@@ -83,11 +73,13 @@ var Switch = /*#__PURE__*/React.forwardRef(function Switch(_ref, ref) {
|
|
|
83
73
|
// accent automatically retune the Switch focus state too.
|
|
84
74
|
"& .MuiSwitch-switchBase.Mui-focusVisible .MuiSwitch-thumb": {
|
|
85
75
|
boxShadow: "var(--shadow-focus)"
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
},
|
|
77
|
+
...sx
|
|
78
|
+
},
|
|
79
|
+
...rest
|
|
80
|
+
});
|
|
89
81
|
if (!label && !description) return sw;
|
|
90
|
-
|
|
82
|
+
const labelNode = /*#__PURE__*/_jsxs(Box, {
|
|
91
83
|
sx: {
|
|
92
84
|
display: "flex",
|
|
93
85
|
flexDirection: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Switch.js","names":["React","MuiSwitch","FormControlLabel","Box","jsx","_jsx","jsxs","_jsxs","Switch","forwardRef","
|
|
1
|
+
{"version":3,"file":"Switch.js","names":["React","MuiSwitch","FormControlLabel","Box","jsx","_jsx","jsxs","_jsxs","Switch","forwardRef","checked","onChange","label","description","disabled","size","labelPlacement","sx","ariaLabel","rest","ref","descId","useId","process","env","console","warn","sw","slotProps","input","undefined","boxShadow","backgroundColor","opacity","labelNode","display","flexDirection","paddingY","children","component","fontSize","fontWeight","color","id","lineHeight","control","margin","gap","alignItems"],"sources":["../../../../src/lib/v2/components/Switch.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiSwitch from \"@mui/material/Switch\";\r\nimport type { SwitchProps as MuiSwitchProps } from \"@mui/material/Switch\";\r\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\r\nimport Box from \"@mui/material/Box\";\r\n\r\n/**\r\n * Switch - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Switch / Toggle\". Binary on/off control with\r\n * IMMEDIATE effect. Use Checkbox instead for deferred choices that\r\n * take effect on form submission.\r\n *\r\n * <Switch\r\n * checked={notifications}\r\n * onChange={e => setNotifications(e.target.checked)}\r\n * label=\"Notifications par e-mail\"\r\n * description=\"Recevoir un e-mail à chaque nouvelle décision.\"\r\n * />\r\n *\r\n * Without a label (use only inside table cells / inline toggles where\r\n * the surrounding context provides the label):\r\n *\r\n * <Switch checked={v} onChange={...} aria-label=\"Activer le mode sombre\" />\r\n */\r\nexport interface SwitchProps extends Omit<MuiSwitchProps, \"size\"> {\r\n label?: React.ReactNode | undefined;\r\n description?: React.ReactNode | undefined;\r\n size?: \"sm\" | \"md\" | undefined;\r\n labelPlacement?: \"end\" | \"start\" | undefined;\r\n}\r\n\r\nconst Switch = React.forwardRef<React.ComponentRef<typeof MuiSwitch>, SwitchProps>(function Switch(\r\n {\r\n checked,\r\n onChange,\r\n label,\r\n description,\r\n disabled,\r\n size = \"md\",\r\n labelPlacement = \"end\",\r\n sx,\r\n \"aria-label\": ariaLabel,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const descId = React.useId();\r\n\r\n if (process.env[\"NODE_ENV\"] !== \"production\" && !label && !ariaLabel) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] <Switch> without `label` requires `aria-label` for screen readers.\",\r\n );\r\n }\r\n\r\n const sw = (\r\n <MuiSwitch\r\n ref={ref}\r\n checked={!!checked}\r\n onChange={onChange}\r\n disabled={disabled}\r\n size={size === \"sm\" ? \"small\" : \"medium\"}\r\n slotProps={{\r\n // MUI v9: the input slot bag forwards directly to the\r\n // internal <input type=\"checkbox\" role=\"switch\"/> element.\r\n // Was `inputProps={...}` at the Switch top level — deprecated\r\n // in v6, removed in v9.\r\n input: {\r\n \"aria-label\": ariaLabel,\r\n \"aria-describedby\": description ? descId : undefined,\r\n },\r\n }}\r\n sx={{\r\n \"& .MuiSwitch-thumb\": { boxShadow: \"var(--shadow-xs)\" },\r\n \"& .MuiSwitch-track\": {\r\n backgroundColor: \"var(--border-strong)\",\r\n opacity: 1,\r\n },\r\n \"& .Mui-checked + .MuiSwitch-track\": {\r\n backgroundColor: \"var(--accent) !important\",\r\n opacity: \"1 !important\",\r\n },\r\n // R-AI.1 - reuse the canonical focus halo token (Batch 1\r\n // shadows.focus → --shadow-focus). Hosts retuning the brand\r\n // accent automatically retune the Switch focus state too.\r\n \"& .MuiSwitch-switchBase.Mui-focusVisible .MuiSwitch-thumb\": {\r\n boxShadow: \"var(--shadow-focus)\",\r\n },\r\n ...sx,\r\n }}\r\n {...rest}\r\n />\r\n );\r\n\r\n if (!label && !description) return sw;\r\n\r\n const labelNode = (\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", paddingY: 0.25 }}>\r\n {label && (\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n color: \"var(--fg)\",\r\n }}\r\n >\r\n {label}\r\n </Box>\r\n )}\r\n {description && (\r\n <Box\r\n id={descId}\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n }}\r\n >\r\n {description}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n\r\n return (\r\n <FormControlLabel\r\n control={sw}\r\n label={labelNode}\r\n labelPlacement={labelPlacement}\r\n disabled={disabled}\r\n sx={{\r\n margin: 0,\r\n gap: 1,\r\n alignItems: description ? \"flex-start\" : \"center\",\r\n }}\r\n />\r\n );\r\n});\r\n\r\nexport default Switch;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import Box from "@mui/material/Box";
|
|
3
|
+
import { tabDomId, tabPanelDomId } from "./Tabs";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* TabPanel — Portnet UI v2
|
|
7
|
+
*
|
|
8
|
+
* The other half of `Tabs` (capability gap G-46).
|
|
9
|
+
*
|
|
10
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
+
* WHY THIS BELONGS IN THE LIBRARY
|
|
12
|
+
*
|
|
13
|
+
* `Tabs` emits HALF of the R-Ar.6 contract: every tab carries its own `id` and
|
|
14
|
+
* an `aria-controls` pointing at `pui-panel-<id>`. The element that must carry
|
|
15
|
+
* that id — with `role="tabpanel"` and an `aria-labelledby` back to the tab —
|
|
16
|
+
* was left entirely to the host, and the library shipped nothing for it.
|
|
17
|
+
*
|
|
18
|
+
* So the id format was PRIVATE knowledge every host had to re-spell as a
|
|
19
|
+
* literal. A typo there is invisible: the markup stays valid and the tab simply
|
|
20
|
+
* advertises a controlled element that does not exist. A BROKEN `aria-controls`
|
|
21
|
+
* is worse than none — assistive technology offers the user a relationship it
|
|
22
|
+
* then cannot follow.
|
|
23
|
+
*
|
|
24
|
+
* Raised from `addm-fe` (Area 5), whose consultation page rendered its panels
|
|
25
|
+
* as bare `{tab === "x" && <…/>}` conditionals: both tabs pointed at nothing,
|
|
26
|
+
* and the content had no role and no accessible name. That module wrote its own
|
|
27
|
+
* `TabPanel` by reading the id convention out of `Tabs.tsx` — which is the
|
|
28
|
+
* proof that the knowledge was required and unpublished.
|
|
29
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
30
|
+
*
|
|
31
|
+
* MOUNTING IS THE HOST'S DECISION, deliberately. This component does not take
|
|
32
|
+
* the active tab value and does not hide itself: a host that mounts panels
|
|
33
|
+
* conditionally (`{tab === "x" && <TabPanel …/>}`) keeps a light DOM, while one
|
|
34
|
+
* that needs to preserve panel state across switches renders them all and hides
|
|
35
|
+
* the inactive ones itself. Owning that choice here would force the second
|
|
36
|
+
* behaviour on everyone, and a `hidden` panel still in the DOM changes what a
|
|
37
|
+
* screen reader enumerates.
|
|
38
|
+
*
|
|
39
|
+
* `focusable` — APG requires a tabpanel to be focusable when it contains NO
|
|
40
|
+
* focusable element, so a keyboard user can reach the content after arrowing
|
|
41
|
+
* along the tablist. A panel of read-only `KV` text is exactly that case, and
|
|
42
|
+
* it is the common one on a consultation page, hence the default. The APG also
|
|
43
|
+
* permits applying it uniformly, which is why this is a boolean rather than
|
|
44
|
+
* something the host must reason about per panel.
|
|
45
|
+
*
|
|
46
|
+
* Usage:
|
|
47
|
+
*
|
|
48
|
+
* <Tabs value={tab} onChange={setTab} items={TABS} aria-label="Sections" />
|
|
49
|
+
*
|
|
50
|
+
* {tab === "infos" && (
|
|
51
|
+
* <TabPanel tabId="infos">
|
|
52
|
+
* <KVGrid>…</KVGrid>
|
|
53
|
+
* </TabPanel>
|
|
54
|
+
* )}
|
|
55
|
+
*/
|
|
56
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
57
|
+
const FOCUS_SX = Object.freeze({
|
|
58
|
+
"&:focus-visible": {
|
|
59
|
+
outline: "2px solid var(--accent)",
|
|
60
|
+
outlineOffset: "var(--pui-outline-offset)"
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
function TabPanel({
|
|
64
|
+
tabId,
|
|
65
|
+
children,
|
|
66
|
+
focusable = true,
|
|
67
|
+
sx
|
|
68
|
+
}) {
|
|
69
|
+
return /*#__PURE__*/_jsx(Box, {
|
|
70
|
+
role: "tabpanel",
|
|
71
|
+
id: tabPanelDomId(tabId),
|
|
72
|
+
"aria-labelledby": tabDomId(tabId),
|
|
73
|
+
...(focusable ? {
|
|
74
|
+
tabIndex: 0
|
|
75
|
+
} : {}),
|
|
76
|
+
sx: {
|
|
77
|
+
...(focusable ? FOCUS_SX : {}),
|
|
78
|
+
...sx
|
|
79
|
+
},
|
|
80
|
+
children: children
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
export default TabPanel;
|
|
84
|
+
//# sourceMappingURL=TabPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanel.js","names":["React","Box","tabDomId","tabPanelDomId","jsx","_jsx","FOCUS_SX","Object","freeze","outline","outlineOffset","TabPanel","tabId","children","focusable","sx","role","id","tabIndex"],"sources":["../../../../src/lib/v2/components/TabPanel.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport type { SystemStyleObject } from \"@mui/system\";\r\n\r\nimport { tabDomId, tabPanelDomId } from \"./Tabs\";\r\n\r\n/**\r\n * TabPanel — Portnet UI v2\r\n *\r\n * The other half of `Tabs` (capability gap G-46).\r\n *\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n * WHY THIS BELONGS IN THE LIBRARY\r\n *\r\n * `Tabs` emits HALF of the R-Ar.6 contract: every tab carries its own `id` and\r\n * an `aria-controls` pointing at `pui-panel-<id>`. The element that must carry\r\n * that id — with `role=\"tabpanel\"` and an `aria-labelledby` back to the tab —\r\n * was left entirely to the host, and the library shipped nothing for it.\r\n *\r\n * So the id format was PRIVATE knowledge every host had to re-spell as a\r\n * literal. A typo there is invisible: the markup stays valid and the tab simply\r\n * advertises a controlled element that does not exist. A BROKEN `aria-controls`\r\n * is worse than none — assistive technology offers the user a relationship it\r\n * then cannot follow.\r\n *\r\n * Raised from `addm-fe` (Area 5), whose consultation page rendered its panels\r\n * as bare `{tab === \"x\" && <…/>}` conditionals: both tabs pointed at nothing,\r\n * and the content had no role and no accessible name. That module wrote its own\r\n * `TabPanel` by reading the id convention out of `Tabs.tsx` — which is the\r\n * proof that the knowledge was required and unpublished.\r\n * ─────────────────────────────────────────────────────────────────────────────\r\n *\r\n * MOUNTING IS THE HOST'S DECISION, deliberately. This component does not take\r\n * the active tab value and does not hide itself: a host that mounts panels\r\n * conditionally (`{tab === \"x\" && <TabPanel …/>}`) keeps a light DOM, while one\r\n * that needs to preserve panel state across switches renders them all and hides\r\n * the inactive ones itself. Owning that choice here would force the second\r\n * behaviour on everyone, and a `hidden` panel still in the DOM changes what a\r\n * screen reader enumerates.\r\n *\r\n * `focusable` — APG requires a tabpanel to be focusable when it contains NO\r\n * focusable element, so a keyboard user can reach the content after arrowing\r\n * along the tablist. A panel of read-only `KV` text is exactly that case, and\r\n * it is the common one on a consultation page, hence the default. The APG also\r\n * permits applying it uniformly, which is why this is a boolean rather than\r\n * something the host must reason about per panel.\r\n *\r\n * Usage:\r\n *\r\n * <Tabs value={tab} onChange={setTab} items={TABS} aria-label=\"Sections\" />\r\n *\r\n * {tab === \"infos\" && (\r\n * <TabPanel tabId=\"infos\">\r\n * <KVGrid>…</KVGrid>\r\n * </TabPanel>\r\n * )}\r\n */\r\n\r\nconst FOCUS_SX = Object.freeze({\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n outlineOffset: \"var(--pui-outline-offset)\",\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nexport interface TabPanelProps {\r\n /**\r\n * The `id` of the `TabItem` this panel belongs to — the same string passed to\r\n * `Tabs.items`, NOT a DOM id. The DOM ids are derived here so the two halves\r\n * of the contract cannot disagree.\r\n */\r\n tabId: string;\r\n children?: React.ReactNode | undefined;\r\n /** @default true — see the APG note in the file header. */\r\n focusable?: boolean | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nfunction TabPanel({ tabId, children, focusable = true, sx }: TabPanelProps) {\r\n return (\r\n <Box\r\n role=\"tabpanel\"\r\n id={tabPanelDomId(tabId)}\r\n aria-labelledby={tabDomId(tabId)}\r\n {...(focusable ? { tabIndex: 0 } : {})}\r\n sx={{\r\n ...(focusable ? FOCUS_SX : {}),\r\n ...(sx as SystemStyleObject<Theme>),\r\n }}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n}\r\n\r\nexport default TabPanel;\r\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,GAAG,MAAM,mBAAmB;AAInC,SAASC,QAAQ,EAAEC,aAAa,QAAQ,QAAQ;;AAEhD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAlDA,SAAAC,GAAA,IAAAC,IAAA;AAoDA,MAAMC,QAAQ,GAAGC,MAAM,CAACC,MAAM,CAAC;EAC7B,iBAAiB,EAAE;IACjBC,OAAO,EAAE,yBAAyB;IAClCC,aAAa,EAAE;EACjB;AACF,CAA0B,CAAC;AAe3B,SAASC,QAAQA,CAAC;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,SAAS,GAAG,IAAI;EAAEC;AAAkB,CAAC,EAAE;EAC1E,oBACEV,IAAA,CAACJ,GAAG;IACFe,IAAI,EAAC,UAAU;IACfC,EAAE,EAAEd,aAAa,CAACS,KAAK,CAAE;IACzB,mBAAiBV,QAAQ,CAACU,KAAK,CAAE;IAAA,IAC5BE,SAAS,GAAG;MAAEI,QAAQ,EAAE;IAAE,CAAC,GAAG,CAAC,CAAC;IACrCH,EAAE,EAAE;MACF,IAAID,SAAS,GAAGR,QAAQ,GAAG,CAAC,CAAC,CAAC;MAC9B,GAAIS;IACN,CAAE;IAAAF,QAAA,EAEDA;EAAQ,CACN,CAAC;AAEV;AAEA,eAAeF,QAAQ","ignoreList":[]}
|
|
@@ -36,10 +36,36 @@ import Box from "@mui/material/Box";
|
|
|
36
36
|
* }]}
|
|
37
37
|
*/
|
|
38
38
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
39
|
+
/**
|
|
40
|
+
* DOM id of a tab, and of the panel it controls.
|
|
41
|
+
*
|
|
42
|
+
* ─── POURQUOI CES DEUX FONCTIONS SONT EXPORTÉES (gap G-46) ─────────────
|
|
43
|
+
*
|
|
44
|
+
* `Tabs` émet la MOITIÉ du contrat R-Ar.6 : chaque onglet porte son `id` et un
|
|
45
|
+
* `aria-controls` vers `pui-panel-<id>`. L'autre moitié — le panneau qui porte
|
|
46
|
+
* ce même id, `role="tabpanel"` et `aria-labelledby` — appartient à l'hôte, et
|
|
47
|
+
* la library ne la fournissait pas.
|
|
48
|
+
*
|
|
49
|
+
* Le format des ids était donc une connaissance PRIVÉE que chaque hôte devait
|
|
50
|
+
* redupliquer en chaîne littérale. Une faute de frappe y est invisible : le
|
|
51
|
+
* balisage reste valide, l'onglet annonce simplement un élément contrôlé qui
|
|
52
|
+
* n'existe pas — et un `aria-controls` cassé est PIRE que son absence, puisque
|
|
53
|
+
* la technologie d'assistance propose à l'utilisateur une relation qu'elle ne
|
|
54
|
+
* peut ensuite pas suivre.
|
|
55
|
+
*
|
|
56
|
+
* Relevé depuis `addm-fe` (Area 5), où `ConsultDemande` rendait ses panneaux en
|
|
57
|
+
* `{tab === "x" && <…/>}` nus : les deux onglets pointaient dans le vide, sans
|
|
58
|
+
* `role` ni nom accessible sur le contenu. Le module avait écrit son propre
|
|
59
|
+
* `TabPanel` en relisant la convention dans CE fichier — preuve que la
|
|
60
|
+
* connaissance était requise et non publiée.
|
|
61
|
+
*/
|
|
62
|
+
export const tabDomId = id => `pui-tab-${id}`;
|
|
63
|
+
export const tabPanelDomId = id => `pui-panel-${id}`;
|
|
64
|
+
|
|
39
65
|
// Default count announcement. Kept FR for back-compat; consumers
|
|
40
66
|
// localise per item via the `countLabel` slot.
|
|
41
67
|
function defaultCountLabel(count) {
|
|
42
|
-
return
|
|
68
|
+
return `${count} éléments`;
|
|
43
69
|
}
|
|
44
70
|
|
|
45
71
|
/* ── Hoisted static sx (D5) ─────────────────────────────────────────────
|
|
@@ -50,7 +76,7 @@ function defaultCountLabel(count) {
|
|
|
50
76
|
// MUI v9: shape forwarded via slotProps.indicator (was TabIndicatorProps
|
|
51
77
|
// in v5/v6/v7, deprecated v6, removed v9). The content { sx: {...} } is
|
|
52
78
|
// unchanged — it's the same {sx} that the indicator slot consumes.
|
|
53
|
-
|
|
79
|
+
const TAB_INDICATOR_PROPS = Object.freeze({
|
|
54
80
|
// Indicator thickness (2 px) is a visual constant, not a spacing value.
|
|
55
81
|
// Charter §03 Tabs specifies 2 px underline.
|
|
56
82
|
sx: {
|
|
@@ -58,7 +84,7 @@ var TAB_INDICATOR_PROPS = Object.freeze({
|
|
|
58
84
|
height: 2
|
|
59
85
|
}
|
|
60
86
|
});
|
|
61
|
-
|
|
87
|
+
const TABS_SX = Object.freeze({
|
|
62
88
|
borderBottom: "1px solid var(--border)",
|
|
63
89
|
// Tabs use the secondary-nav 40 px row height (charter §03 Tabs).
|
|
64
90
|
// Below the 44 px tactile minimum; the underline indicator and the
|
|
@@ -85,12 +111,12 @@ var TABS_SX = Object.freeze({
|
|
|
85
111
|
}
|
|
86
112
|
}
|
|
87
113
|
});
|
|
88
|
-
|
|
114
|
+
const TAB_LABEL_INNER_SX = Object.freeze({
|
|
89
115
|
display: "inline-flex",
|
|
90
116
|
alignItems: "center",
|
|
91
117
|
gap: "var(--s-2)"
|
|
92
118
|
});
|
|
93
|
-
|
|
119
|
+
const COUNT_BADGE_SX = Object.freeze({
|
|
94
120
|
fontSize: "var(--text-xs)",
|
|
95
121
|
fontWeight: "var(--fw-semibold)",
|
|
96
122
|
padding: "var(--s-1) var(--s-2)",
|
|
@@ -103,18 +129,16 @@ var COUNT_BADGE_SX = Object.freeze({
|
|
|
103
129
|
// MUI v9: slotProps wrapper for indicator. Hoisted alongside the rest of
|
|
104
130
|
// the static-sx block so emotion / React skip re-allocation on every
|
|
105
131
|
// render. The shape is { indicator: TAB_INDICATOR_PROPS }.
|
|
106
|
-
|
|
132
|
+
const TABS_SLOT_PROPS = Object.freeze({
|
|
107
133
|
indicator: TAB_INDICATOR_PROPS
|
|
108
134
|
});
|
|
109
|
-
function Tabs(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return onChange === null || onChange === void 0 ? void 0 : onChange(v);
|
|
117
|
-
};
|
|
135
|
+
function Tabs({
|
|
136
|
+
value,
|
|
137
|
+
onChange,
|
|
138
|
+
items,
|
|
139
|
+
"aria-label": ariaLabel = "Sections"
|
|
140
|
+
}) {
|
|
141
|
+
const handle = (_e, v) => onChange?.(v);
|
|
118
142
|
return /*#__PURE__*/_jsx(MuiTabs, {
|
|
119
143
|
value: value,
|
|
120
144
|
onChange: handle,
|
|
@@ -123,12 +147,12 @@ function Tabs(_ref) {
|
|
|
123
147
|
scrollButtons: false,
|
|
124
148
|
slotProps: TABS_SLOT_PROPS,
|
|
125
149
|
sx: TABS_SX,
|
|
126
|
-
children: items.map(
|
|
127
|
-
|
|
150
|
+
children: items.map(t => {
|
|
151
|
+
const countAria = t.count != null ? typeof t.countLabel === "function" ? t.countLabel(t.count) : t.countLabel != null ? t.countLabel : defaultCountLabel(t.count) : undefined;
|
|
128
152
|
return /*#__PURE__*/_jsx(MuiTab, {
|
|
129
153
|
value: t.id,
|
|
130
|
-
id:
|
|
131
|
-
"aria-controls":
|
|
154
|
+
id: tabDomId(t.id),
|
|
155
|
+
"aria-controls": tabPanelDomId(t.id),
|
|
132
156
|
icon: t.icon,
|
|
133
157
|
iconPosition: "start",
|
|
134
158
|
label: /*#__PURE__*/_jsxs(Box, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","names":["React","MuiTabs","MuiTab","Box","jsx","_jsx","jsxs","_jsxs","defaultCountLabel","count","concat","TAB_INDICATOR_PROPS","Object","freeze","sx","backgroundColor","height","TABS_SX","borderBottom","minHeight","textTransform","fontSize","fontWeight","color","padding","outline","outlineOffset","borderRadius","TAB_LABEL_INNER_SX","display","alignItems","gap","COUNT_BADGE_SX","background","lineHeight","TABS_SLOT_PROPS","indicator","Tabs","_ref","value","onChange","items","_ref$ariaLabel","ariaLabel","handle","_e","v","variant","scrollButtons","slotProps","children","map","t","countAria","countLabel","undefined","id","icon","iconPosition","label","component"],"sources":["../../../../src/lib/v2/components/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiTabs from \"@mui/material/Tabs\";\r\nimport MuiTab from \"@mui/material/Tab\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Tabs - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Tabs\".\r\n *\r\n * 2-7 onglets max ; underline accent ; role=\"tablist\" ;\r\n * ←→ keyboard nav ; persists in URL via the host (?tab=…).\r\n *\r\n * R-Ar.6 - role=\"tablist\" / role=\"tab\" / aria-selected / aria-controls.\r\n *\r\n * <Tabs\r\n * value={tab}\r\n * onChange={setTab}\r\n * items={[\r\n * { id: \"overview\", label: \"Vue d'ensemble\" },\r\n * { id: \"history\", label: \"Historique\", count: 12 },\r\n * { id: \"files\", label: \"Pièces jointes\" },\r\n * ]}\r\n * aria-label=\"Sections du dossier\"\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * - `aria-label` is consumer-controlled (default \"Sections\").\r\n * - Per-item numeric counts announce \"${count} éléments\" by default.\r\n * Override per item with `countLabel` (string or fn(count)):\r\n * items={[{\r\n * id: \"history\",\r\n * label: t(\"tabs.history\"),\r\n * count: 12,\r\n * countLabel: (n) => t(\"tabs.history.count\", { count: n }),\r\n * }]}\r\n */\r\n\r\nexport interface TabItem {\r\n id: string;\r\n label: React.ReactNode;\r\n icon?: string | React.ReactElement | undefined;\r\n count?: number | undefined;\r\n countLabel?: string | ((count: number) => string) | undefined;\r\n}\r\n\r\nexport interface TabsProps {\r\n value?: string | undefined;\r\n onChange?: ((value: string) => void) | undefined;\r\n items: TabItem[];\r\n \"aria-label\"?: string | undefined;\r\n}\r\n\r\n// Default count announcement. Kept FR for back-compat; consumers\r\n// localise per item via the `countLabel` slot.\r\nfunction defaultCountLabel(count: number): string {\r\n return `${count} éléments`;\r\n}\r\n\r\n/* ── Hoisted static sx (D5) ─────────────────────────────────────────────\r\n * Frozen at module load. Each Tabs render reuses these references; emotion\r\n * skips serialization + cache lookup on identity.\r\n */\r\n\r\n// MUI v9: shape forwarded via slotProps.indicator (was TabIndicatorProps\r\n// in v5/v6/v7, deprecated v6, removed v9). The content { sx: {...} } is\r\n// unchanged — it's the same {sx} that the indicator slot consumes.\r\nconst TAB_INDICATOR_PROPS = Object.freeze({\r\n // Indicator thickness (2 px) is a visual constant, not a spacing value.\r\n // Charter §03 Tabs specifies 2 px underline.\r\n sx: { backgroundColor: \"var(--accent)\", height: 2 },\r\n});\r\n\r\nconst TABS_SX = Object.freeze({\r\n borderBottom: \"1px solid var(--border)\",\r\n // Tabs use the secondary-nav 40 px row height (charter §03 Tabs).\r\n // Below the 44 px tactile minimum; the underline indicator and the\r\n // row's full clickable area together carry the affordance.\r\n minHeight: 40,\r\n \"& .MuiTab-root\": {\r\n minHeight: 40,\r\n textTransform: \"none\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n \"&.Mui-selected\": { color: \"var(--accent)\" },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n // B4 — inset focus ring via tokenised offset (Batch 11). Visual\r\n // choice for tabs so the ring doesn't extend past the tablist\r\n // border. Flows through --pui-outline-offset-inset alongside\r\n // DataGrid row focus.\r\n outlineOffset: \"var(--pui-outline-offset-inset)\",\r\n borderRadius: \"var(--r-sm)\",\r\n },\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TAB_LABEL_INNER_SX = Object.freeze({\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst COUNT_BADGE_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n padding: \"var(--s-1) var(--s-2)\",\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--bg-subtle)\",\r\n color: \"var(--fg-muted)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n});\r\n\r\n// MUI v9: slotProps wrapper for indicator. Hoisted alongside the rest of\r\n// the static-sx block so emotion / React skip re-allocation on every\r\n// render. The shape is { indicator: TAB_INDICATOR_PROPS }.\r\nconst TABS_SLOT_PROPS = Object.freeze({\r\n indicator: TAB_INDICATOR_PROPS,\r\n});\r\n\r\nfunction Tabs({ value, onChange, items, \"aria-label\": ariaLabel = \"Sections\" }: TabsProps) {\r\n const handle = (_e: React.SyntheticEvent, v: string) => onChange?.(v);\r\n return (\r\n <MuiTabs\r\n value={value}\r\n onChange={handle}\r\n aria-label={ariaLabel}\r\n variant=\"scrollable\"\r\n scrollButtons={false}\r\n slotProps={TABS_SLOT_PROPS}\r\n sx={TABS_SX}\r\n >\r\n {items.map((t) => {\r\n const countAria = t.count != null\r\n ? (typeof t.countLabel === \"function\"\r\n ? t.countLabel(t.count)\r\n : t.countLabel != null\r\n ? t.countLabel\r\n : defaultCountLabel(t.count))\r\n : undefined;\r\n\r\n return (\r\n <MuiTab\r\n key={t.id}\r\n value={t.id}\r\n id={`pui-tab-${t.id}`}\r\n aria-controls={`pui-panel-${t.id}`}\r\n icon={t.icon}\r\n iconPosition=\"start\"\r\n label={\r\n <Box sx={TAB_LABEL_INNER_SX}>\r\n <span>{t.label}</span>\r\n {t.count != null && (\r\n <Box\r\n component=\"span\"\r\n aria-label={countAria}\r\n sx={COUNT_BADGE_SX}\r\n >\r\n {t.count}\r\n </Box>\r\n )}\r\n </Box>\r\n }\r\n />\r\n );\r\n })}\r\n </MuiTabs>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Tabs.js","names":["React","MuiTabs","MuiTab","Box","jsx","_jsx","jsxs","_jsxs","tabDomId","id","tabPanelDomId","defaultCountLabel","count","TAB_INDICATOR_PROPS","Object","freeze","sx","backgroundColor","height","TABS_SX","borderBottom","minHeight","textTransform","fontSize","fontWeight","color","padding","outline","outlineOffset","borderRadius","TAB_LABEL_INNER_SX","display","alignItems","gap","COUNT_BADGE_SX","background","lineHeight","TABS_SLOT_PROPS","indicator","Tabs","value","onChange","items","ariaLabel","handle","_e","v","variant","scrollButtons","slotProps","children","map","t","countAria","countLabel","undefined","icon","iconPosition","label","component"],"sources":["../../../../src/lib/v2/components/Tabs.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiTabs from \"@mui/material/Tabs\";\r\nimport MuiTab from \"@mui/material/Tab\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Tabs - Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Tabs\".\r\n *\r\n * 2-7 onglets max ; underline accent ; role=\"tablist\" ;\r\n * ←→ keyboard nav ; persists in URL via the host (?tab=…).\r\n *\r\n * R-Ar.6 - role=\"tablist\" / role=\"tab\" / aria-selected / aria-controls.\r\n *\r\n * <Tabs\r\n * value={tab}\r\n * onChange={setTab}\r\n * items={[\r\n * { id: \"overview\", label: \"Vue d'ensemble\" },\r\n * { id: \"history\", label: \"Historique\", count: 12 },\r\n * { id: \"files\", label: \"Pièces jointes\" },\r\n * ]}\r\n * aria-label=\"Sections du dossier\"\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * - `aria-label` is consumer-controlled (default \"Sections\").\r\n * - Per-item numeric counts announce \"${count} éléments\" by default.\r\n * Override per item with `countLabel` (string or fn(count)):\r\n * items={[{\r\n * id: \"history\",\r\n * label: t(\"tabs.history\"),\r\n * count: 12,\r\n * countLabel: (n) => t(\"tabs.history.count\", { count: n }),\r\n * }]}\r\n */\r\n\r\nexport interface TabItem {\r\n id: string;\r\n label: React.ReactNode;\r\n icon?: string | React.ReactElement | undefined;\r\n count?: number | undefined;\r\n countLabel?: string | ((count: number) => string) | undefined;\r\n}\r\n\r\nexport interface TabsProps {\r\n value?: string | undefined;\r\n onChange?: ((value: string) => void) | undefined;\r\n items: TabItem[];\r\n \"aria-label\"?: string | undefined;\r\n}\r\n\r\n/**\r\n * DOM id of a tab, and of the panel it controls.\r\n *\r\n * ─── POURQUOI CES DEUX FONCTIONS SONT EXPORTÉES (gap G-46) ─────────────\r\n *\r\n * `Tabs` émet la MOITIÉ du contrat R-Ar.6 : chaque onglet porte son `id` et un\r\n * `aria-controls` vers `pui-panel-<id>`. L'autre moitié — le panneau qui porte\r\n * ce même id, `role=\"tabpanel\"` et `aria-labelledby` — appartient à l'hôte, et\r\n * la library ne la fournissait pas.\r\n *\r\n * Le format des ids était donc une connaissance PRIVÉE que chaque hôte devait\r\n * redupliquer en chaîne littérale. Une faute de frappe y est invisible : le\r\n * balisage reste valide, l'onglet annonce simplement un élément contrôlé qui\r\n * n'existe pas — et un `aria-controls` cassé est PIRE que son absence, puisque\r\n * la technologie d'assistance propose à l'utilisateur une relation qu'elle ne\r\n * peut ensuite pas suivre.\r\n *\r\n * Relevé depuis `addm-fe` (Area 5), où `ConsultDemande` rendait ses panneaux en\r\n * `{tab === \"x\" && <…/>}` nus : les deux onglets pointaient dans le vide, sans\r\n * `role` ni nom accessible sur le contenu. Le module avait écrit son propre\r\n * `TabPanel` en relisant la convention dans CE fichier — preuve que la\r\n * connaissance était requise et non publiée.\r\n */\r\nexport const tabDomId = (id: string): string => `pui-tab-${id}`;\r\nexport const tabPanelDomId = (id: string): string => `pui-panel-${id}`;\r\n\r\n// Default count announcement. Kept FR for back-compat; consumers\r\n// localise per item via the `countLabel` slot.\r\nfunction defaultCountLabel(count: number): string {\r\n return `${count} éléments`;\r\n}\r\n\r\n/* ── Hoisted static sx (D5) ─────────────────────────────────────────────\r\n * Frozen at module load. Each Tabs render reuses these references; emotion\r\n * skips serialization + cache lookup on identity.\r\n */\r\n\r\n// MUI v9: shape forwarded via slotProps.indicator (was TabIndicatorProps\r\n// in v5/v6/v7, deprecated v6, removed v9). The content { sx: {...} } is\r\n// unchanged — it's the same {sx} that the indicator slot consumes.\r\nconst TAB_INDICATOR_PROPS = Object.freeze({\r\n // Indicator thickness (2 px) is a visual constant, not a spacing value.\r\n // Charter §03 Tabs specifies 2 px underline.\r\n sx: { backgroundColor: \"var(--accent)\", height: 2 },\r\n});\r\n\r\nconst TABS_SX = Object.freeze({\r\n borderBottom: \"1px solid var(--border)\",\r\n // Tabs use the secondary-nav 40 px row height (charter §03 Tabs).\r\n // Below the 44 px tactile minimum; the underline indicator and the\r\n // row's full clickable area together carry the affordance.\r\n minHeight: 40,\r\n \"& .MuiTab-root\": {\r\n minHeight: 40,\r\n textTransform: \"none\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-muted)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n \"&.Mui-selected\": { color: \"var(--accent)\" },\r\n \"&:focus-visible\": {\r\n outline: \"2px solid var(--accent)\",\r\n // B4 — inset focus ring via tokenised offset (Batch 11). Visual\r\n // choice for tabs so the ring doesn't extend past the tablist\r\n // border. Flows through --pui-outline-offset-inset alongside\r\n // DataGrid row focus.\r\n outlineOffset: \"var(--pui-outline-offset-inset)\",\r\n borderRadius: \"var(--r-sm)\",\r\n },\r\n },\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TAB_LABEL_INNER_SX = Object.freeze({\r\n display: \"inline-flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst COUNT_BADGE_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n padding: \"var(--s-1) var(--s-2)\",\r\n borderRadius: \"var(--r-full)\",\r\n background: \"var(--bg-subtle)\",\r\n color: \"var(--fg-muted)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n});\r\n\r\n// MUI v9: slotProps wrapper for indicator. Hoisted alongside the rest of\r\n// the static-sx block so emotion / React skip re-allocation on every\r\n// render. The shape is { indicator: TAB_INDICATOR_PROPS }.\r\nconst TABS_SLOT_PROPS = Object.freeze({\r\n indicator: TAB_INDICATOR_PROPS,\r\n});\r\n\r\nfunction Tabs({ value, onChange, items, \"aria-label\": ariaLabel = \"Sections\" }: TabsProps) {\r\n const handle = (_e: React.SyntheticEvent, v: string) => onChange?.(v);\r\n return (\r\n <MuiTabs\r\n value={value}\r\n onChange={handle}\r\n aria-label={ariaLabel}\r\n variant=\"scrollable\"\r\n scrollButtons={false}\r\n slotProps={TABS_SLOT_PROPS}\r\n sx={TABS_SX}\r\n >\r\n {items.map((t) => {\r\n const countAria = t.count != null\r\n ? (typeof t.countLabel === \"function\"\r\n ? t.countLabel(t.count)\r\n : t.countLabel != null\r\n ? t.countLabel\r\n : defaultCountLabel(t.count))\r\n : undefined;\r\n\r\n return (\r\n <MuiTab\r\n key={t.id}\r\n value={t.id}\r\n id={tabDomId(t.id)}\r\n aria-controls={tabPanelDomId(t.id)}\r\n icon={t.icon}\r\n iconPosition=\"start\"\r\n label={\r\n <Box sx={TAB_LABEL_INNER_SX}>\r\n <span>{t.label}</span>\r\n {t.count != null && (\r\n <Box\r\n component=\"span\"\r\n aria-label={countAria}\r\n sx={COUNT_BADGE_SX}\r\n >\r\n {t.count}\r\n </Box>\r\n )}\r\n </Box>\r\n }\r\n />\r\n );\r\n })}\r\n </MuiTabs>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n"],"mappings":"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","ignoreList":[]}
|