@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,15 +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
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
8
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
9
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
10
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
11
|
-
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
12
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
13
1
|
import * as React from "react";
|
|
14
2
|
import { createPortal } from "react-dom";
|
|
15
3
|
import Box from "@mui/material/Box";
|
|
@@ -51,21 +39,19 @@ import { mergeLabels } from "../utils/mergeLabels";
|
|
|
51
39
|
|
|
52
40
|
/** Resolved tooltip position; `placement` is the chosen side (or "center"). */
|
|
53
41
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
42
|
+
const PADDING = 8; // spotlight extra around target bbox
|
|
43
|
+
const TOOLTIP_GAP = 12; // distance from target to tooltip edge
|
|
44
|
+
const TOOLTIP_WIDTH = 320;
|
|
45
|
+
const TOOLTIP_MAX_HEIGHT = 360;
|
|
46
|
+
const VIEWPORT_MARGIN = 8; // min distance from viewport edges
|
|
59
47
|
|
|
60
|
-
|
|
48
|
+
const DEFAULT_LABELS = Object.freeze({
|
|
61
49
|
prev: "Précédent",
|
|
62
50
|
next: "Suivant",
|
|
63
51
|
skip: "Ignorer",
|
|
64
52
|
finish: "Terminer",
|
|
65
53
|
closeAria: "Fermer la visite guidée",
|
|
66
|
-
stepCounter:
|
|
67
|
-
return "".concat(cur, " sur ").concat(total);
|
|
68
|
-
}
|
|
54
|
+
stepCounter: (cur, total) => `${cur} sur ${total}`
|
|
69
55
|
});
|
|
70
56
|
|
|
71
57
|
/**
|
|
@@ -76,9 +62,9 @@ var DEFAULT_LABELS = Object.freeze({
|
|
|
76
62
|
function getElementRect(selector) {
|
|
77
63
|
if (!selector || typeof document === "undefined") return null;
|
|
78
64
|
try {
|
|
79
|
-
|
|
65
|
+
const el = document.querySelector(selector);
|
|
80
66
|
if (!el) return null;
|
|
81
|
-
|
|
67
|
+
const r = el.getBoundingClientRect();
|
|
82
68
|
return {
|
|
83
69
|
top: r.top,
|
|
84
70
|
left: r.left,
|
|
@@ -86,9 +72,9 @@ function getElementRect(selector) {
|
|
|
86
72
|
bottom: r.bottom,
|
|
87
73
|
width: r.width,
|
|
88
74
|
height: r.height,
|
|
89
|
-
el
|
|
75
|
+
el
|
|
90
76
|
};
|
|
91
|
-
} catch
|
|
77
|
+
} catch {
|
|
92
78
|
// Invalid selector syntax → catch SyntaxError, return null.
|
|
93
79
|
return null;
|
|
94
80
|
}
|
|
@@ -100,9 +86,9 @@ function getElementRect(selector) {
|
|
|
100
86
|
* clamps to viewport.
|
|
101
87
|
*/
|
|
102
88
|
function computeTooltipPosition(targetRect, placement, vw, vh) {
|
|
103
|
-
|
|
89
|
+
let p = placement || "auto";
|
|
104
90
|
if (p === "auto") {
|
|
105
|
-
|
|
91
|
+
const space = {
|
|
106
92
|
top: targetRect.top,
|
|
107
93
|
bottom: vh - targetRect.bottom,
|
|
108
94
|
left: targetRect.left,
|
|
@@ -110,13 +96,11 @@ function computeTooltipPosition(targetRect, placement, vw, vh) {
|
|
|
110
96
|
};
|
|
111
97
|
// Pick the side with the most clearance. Stable on ties — first entry
|
|
112
98
|
// wins (Object.entries order is insertion order, ES2015+).
|
|
113
|
-
|
|
114
|
-
return b[1] - a[1];
|
|
115
|
-
})[0];
|
|
99
|
+
const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];
|
|
116
100
|
if (best) p = best[0];
|
|
117
101
|
}
|
|
118
|
-
|
|
119
|
-
|
|
102
|
+
let top;
|
|
103
|
+
let left;
|
|
120
104
|
switch (p) {
|
|
121
105
|
case "top":
|
|
122
106
|
top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;
|
|
@@ -143,29 +127,29 @@ function computeTooltipPosition(targetRect, placement, vw, vh) {
|
|
|
143
127
|
left = Math.max(VIEWPORT_MARGIN, Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN));
|
|
144
128
|
top = Math.max(VIEWPORT_MARGIN, Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN));
|
|
145
129
|
return {
|
|
146
|
-
top
|
|
147
|
-
left
|
|
130
|
+
top,
|
|
131
|
+
left,
|
|
148
132
|
placement: p
|
|
149
133
|
};
|
|
150
134
|
}
|
|
151
135
|
|
|
152
136
|
/* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */
|
|
153
137
|
|
|
154
|
-
|
|
155
|
-
|
|
138
|
+
const SPOTLIGHT_BG = "color-mix(in srgb, var(--fg) 60%, transparent)";
|
|
139
|
+
const SPOTLIGHT_BASE_SX = Object.freeze({
|
|
156
140
|
position: "fixed",
|
|
157
141
|
background: SPOTLIGHT_BG,
|
|
158
142
|
zIndex: "var(--z-modal)",
|
|
159
143
|
pointerEvents: "auto"
|
|
160
144
|
});
|
|
161
|
-
|
|
145
|
+
const BACKDROP_FALLBACK_SX = Object.freeze({
|
|
162
146
|
position: "fixed",
|
|
163
147
|
inset: 0,
|
|
164
148
|
background: SPOTLIGHT_BG,
|
|
165
149
|
zIndex: "var(--z-modal)",
|
|
166
150
|
pointerEvents: "auto"
|
|
167
151
|
});
|
|
168
|
-
|
|
152
|
+
const TOOLTIP_BASE_SX = Object.freeze({
|
|
169
153
|
position: "fixed",
|
|
170
154
|
width: TOOLTIP_WIDTH,
|
|
171
155
|
maxHeight: TOOLTIP_MAX_HEIGHT,
|
|
@@ -177,76 +161,63 @@ var TOOLTIP_BASE_SX = Object.freeze({
|
|
|
177
161
|
padding: "var(--s-4)",
|
|
178
162
|
zIndex: "var(--z-tooltip)"
|
|
179
163
|
});
|
|
180
|
-
|
|
164
|
+
const TOOLTIP_HEADER_SX = Object.freeze({
|
|
181
165
|
display: "flex",
|
|
182
166
|
alignItems: "flex-start",
|
|
183
167
|
justifyContent: "space-between",
|
|
184
168
|
gap: "var(--s-2)",
|
|
185
169
|
marginBottom: "var(--s-2)"
|
|
186
170
|
});
|
|
187
|
-
|
|
171
|
+
const TOOLTIP_TITLE_SX = Object.freeze({
|
|
188
172
|
fontSize: "var(--text-h4)",
|
|
189
173
|
fontWeight: "var(--fw-bold)",
|
|
190
174
|
color: "var(--fg)"
|
|
191
175
|
});
|
|
192
|
-
|
|
176
|
+
const TOOLTIP_CLOSE_SX = Object.freeze({
|
|
193
177
|
color: "var(--fg-muted)",
|
|
194
178
|
marginRight: "calc(-1 * var(--s-1))",
|
|
195
179
|
marginTop: "calc(-1 * var(--s-1))"
|
|
196
180
|
});
|
|
197
|
-
|
|
181
|
+
const TOOLTIP_CONTENT_SX = Object.freeze({
|
|
198
182
|
fontSize: "var(--text-sm)",
|
|
199
183
|
color: "var(--fg-muted)",
|
|
200
184
|
marginBottom: "var(--s-3)",
|
|
201
185
|
lineHeight: "var(--lh-normal)"
|
|
202
186
|
});
|
|
203
|
-
|
|
187
|
+
const TOOLTIP_FOOTER_SX = Object.freeze({
|
|
204
188
|
display: "flex",
|
|
205
189
|
alignItems: "center",
|
|
206
190
|
justifyContent: "space-between",
|
|
207
191
|
gap: "var(--s-2)"
|
|
208
192
|
});
|
|
209
|
-
|
|
193
|
+
const STEP_COUNTER_SX = Object.freeze({
|
|
210
194
|
fontSize: "var(--text-xs)",
|
|
211
195
|
color: "var(--fg-subtle)",
|
|
212
196
|
fontVariantNumeric: "tabular-nums"
|
|
213
197
|
});
|
|
214
|
-
|
|
198
|
+
const NAV_BUTTONS_SX = Object.freeze({
|
|
215
199
|
display: "flex",
|
|
216
200
|
gap: "var(--s-2)"
|
|
217
201
|
});
|
|
218
|
-
function Tour(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
tooltipPos = _React$useState6[0],
|
|
238
|
-
setTooltipPos = _React$useState6[1];
|
|
239
|
-
var _React$useState7 = React.useState({
|
|
240
|
-
w: 0,
|
|
241
|
-
h: 0
|
|
242
|
-
}),
|
|
243
|
-
_React$useState8 = _slicedToArray(_React$useState7, 2),
|
|
244
|
-
viewport = _React$useState8[0],
|
|
245
|
-
setViewport = _React$useState8[1];
|
|
246
|
-
var tooltipRef = React.useRef(null);
|
|
247
|
-
var titleId = React.useId();
|
|
248
|
-
var contentId = React.useId();
|
|
249
|
-
var currentStep = steps && steps[stepIdx];
|
|
202
|
+
function Tour({
|
|
203
|
+
open,
|
|
204
|
+
steps,
|
|
205
|
+
onClose,
|
|
206
|
+
onComplete,
|
|
207
|
+
labels
|
|
208
|
+
}) {
|
|
209
|
+
const L = React.useMemo(() => mergeLabels(DEFAULT_LABELS, labels), [labels]);
|
|
210
|
+
const [stepIdx, setStepIdx] = React.useState(0);
|
|
211
|
+
const [targetRect, setTargetRect] = React.useState(null);
|
|
212
|
+
const [tooltipPos, setTooltipPos] = React.useState(null);
|
|
213
|
+
const [viewport, setViewport] = React.useState({
|
|
214
|
+
w: 0,
|
|
215
|
+
h: 0
|
|
216
|
+
});
|
|
217
|
+
const tooltipRef = React.useRef(null);
|
|
218
|
+
const titleId = React.useId();
|
|
219
|
+
const contentId = React.useId();
|
|
220
|
+
const currentStep = steps && steps[stepIdx];
|
|
250
221
|
|
|
251
222
|
// Focus trap activates ONLY after tooltipPos is computed (tooltip actually
|
|
252
223
|
// mounted with a non-null ref). On first open, tooltipPos is null until the
|
|
@@ -254,22 +225,22 @@ function Tour(_ref) {
|
|
|
254
225
|
useFocusTrap(tooltipRef, !!open && tooltipPos != null);
|
|
255
226
|
|
|
256
227
|
// Reset to step 0 on each open transition.
|
|
257
|
-
React.useEffect(
|
|
228
|
+
React.useEffect(() => {
|
|
258
229
|
if (open) setStepIdx(0);
|
|
259
230
|
}, [open]);
|
|
260
231
|
|
|
261
232
|
// Compute target rect + tooltip position. Re-runs on step change and on
|
|
262
233
|
// window scroll/resize.
|
|
263
|
-
React.useEffect(
|
|
234
|
+
React.useEffect(() => {
|
|
264
235
|
if (!open || !currentStep) return undefined;
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
236
|
+
const recompute = () => {
|
|
237
|
+
const w = window.innerWidth;
|
|
238
|
+
const h = window.innerHeight;
|
|
268
239
|
setViewport({
|
|
269
|
-
w
|
|
270
|
-
h
|
|
240
|
+
w,
|
|
241
|
+
h
|
|
271
242
|
});
|
|
272
|
-
|
|
243
|
+
const rect = getElementRect(currentStep.target);
|
|
273
244
|
setTargetRect(rect);
|
|
274
245
|
if (rect) {
|
|
275
246
|
setTooltipPos(computeTooltipPosition(rect, currentStep.placement, w, h));
|
|
@@ -285,13 +256,13 @@ function Tour(_ref) {
|
|
|
285
256
|
recompute();
|
|
286
257
|
|
|
287
258
|
// Scroll the target into view on each step change; no-ops if not found.
|
|
288
|
-
|
|
259
|
+
const initialEl = typeof document !== "undefined" ? (() => {
|
|
289
260
|
try {
|
|
290
261
|
return document.querySelector(currentStep.target);
|
|
291
|
-
} catch
|
|
262
|
+
} catch {
|
|
292
263
|
return null;
|
|
293
264
|
}
|
|
294
|
-
}() : null;
|
|
265
|
+
})() : null;
|
|
295
266
|
if (initialEl && typeof initialEl.scrollIntoView === "function") {
|
|
296
267
|
initialEl.scrollIntoView({
|
|
297
268
|
block: "center",
|
|
@@ -304,17 +275,17 @@ function Tour(_ref) {
|
|
|
304
275
|
// setState calls, so running it on every raw scroll event is wasteful;
|
|
305
276
|
// rAF-throttle to at most once per animation frame. `true` (capture)
|
|
306
277
|
// catches scroll on any ancestor (default scroll events don't bubble).
|
|
307
|
-
|
|
308
|
-
|
|
278
|
+
let rafId = null;
|
|
279
|
+
const onViewportChange = () => {
|
|
309
280
|
if (rafId != null) return; // a frame is already scheduled
|
|
310
|
-
rafId = window.requestAnimationFrame(
|
|
281
|
+
rafId = window.requestAnimationFrame(() => {
|
|
311
282
|
rafId = null;
|
|
312
283
|
recompute();
|
|
313
284
|
});
|
|
314
285
|
};
|
|
315
286
|
window.addEventListener("scroll", onViewportChange, true);
|
|
316
287
|
window.addEventListener("resize", onViewportChange);
|
|
317
|
-
return
|
|
288
|
+
return () => {
|
|
318
289
|
window.removeEventListener("scroll", onViewportChange, true);
|
|
319
290
|
window.removeEventListener("resize", onViewportChange);
|
|
320
291
|
if (rafId != null) window.cancelAnimationFrame(rafId);
|
|
@@ -322,92 +293,95 @@ function Tour(_ref) {
|
|
|
322
293
|
}, [open, currentStep]);
|
|
323
294
|
|
|
324
295
|
// Esc closes the tour. Window-bound — same pattern as Modal / Drawer.
|
|
325
|
-
React.useEffect(
|
|
296
|
+
React.useEffect(() => {
|
|
326
297
|
if (!open) return undefined;
|
|
327
|
-
|
|
298
|
+
const onKey = e => {
|
|
328
299
|
if (e.key === "Escape") {
|
|
329
300
|
e.preventDefault();
|
|
330
|
-
onClose
|
|
301
|
+
onClose?.();
|
|
331
302
|
}
|
|
332
303
|
};
|
|
333
304
|
window.addEventListener("keydown", onKey);
|
|
334
|
-
return
|
|
335
|
-
return window.removeEventListener("keydown", onKey);
|
|
336
|
-
};
|
|
305
|
+
return () => window.removeEventListener("keydown", onKey);
|
|
337
306
|
}, [open, onClose]);
|
|
338
307
|
if (!open || !steps || steps.length === 0 || !currentStep) return null;
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
308
|
+
const total = steps.length;
|
|
309
|
+
const isFirst = stepIdx === 0;
|
|
310
|
+
const isLast = stepIdx === total - 1;
|
|
311
|
+
const goNext = () => {
|
|
343
312
|
if (isLast) {
|
|
344
|
-
onComplete
|
|
345
|
-
onClose
|
|
313
|
+
onComplete?.();
|
|
314
|
+
onClose?.();
|
|
346
315
|
} else {
|
|
347
316
|
setStepIdx(stepIdx + 1);
|
|
348
317
|
}
|
|
349
318
|
};
|
|
350
|
-
|
|
319
|
+
const goPrev = () => {
|
|
351
320
|
if (!isFirst) setStepIdx(stepIdx - 1);
|
|
352
321
|
};
|
|
353
|
-
|
|
354
|
-
onClose
|
|
322
|
+
const skip = () => {
|
|
323
|
+
onClose?.();
|
|
355
324
|
};
|
|
356
325
|
|
|
357
326
|
// Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.
|
|
358
|
-
|
|
327
|
+
const spotlight = targetRect && /*#__PURE__*/_jsxs(_Fragment, {
|
|
359
328
|
children: [/*#__PURE__*/_jsx(Box, {
|
|
360
329
|
onClick: skip,
|
|
361
|
-
sx:
|
|
330
|
+
sx: {
|
|
331
|
+
...SPOTLIGHT_BASE_SX,
|
|
362
332
|
left: 0,
|
|
363
333
|
top: 0,
|
|
364
334
|
width: "100vw",
|
|
365
335
|
height: Math.max(0, targetRect.top - PADDING)
|
|
366
|
-
}
|
|
336
|
+
}
|
|
367
337
|
}), /*#__PURE__*/_jsx(Box, {
|
|
368
338
|
onClick: skip,
|
|
369
|
-
sx:
|
|
339
|
+
sx: {
|
|
340
|
+
...SPOTLIGHT_BASE_SX,
|
|
370
341
|
left: 0,
|
|
371
342
|
top: Math.max(0, targetRect.top - PADDING),
|
|
372
343
|
width: Math.max(0, targetRect.left - PADDING),
|
|
373
344
|
height: targetRect.height + 2 * PADDING
|
|
374
|
-
}
|
|
345
|
+
}
|
|
375
346
|
}), /*#__PURE__*/_jsx(Box, {
|
|
376
347
|
onClick: skip,
|
|
377
|
-
sx:
|
|
348
|
+
sx: {
|
|
349
|
+
...SPOTLIGHT_BASE_SX,
|
|
378
350
|
left: targetRect.right + PADDING,
|
|
379
351
|
top: Math.max(0, targetRect.top - PADDING),
|
|
380
352
|
width: Math.max(0, viewport.w - (targetRect.right + PADDING)),
|
|
381
353
|
height: targetRect.height + 2 * PADDING
|
|
382
|
-
}
|
|
354
|
+
}
|
|
383
355
|
}), /*#__PURE__*/_jsx(Box, {
|
|
384
356
|
onClick: skip,
|
|
385
|
-
sx:
|
|
357
|
+
sx: {
|
|
358
|
+
...SPOTLIGHT_BASE_SX,
|
|
386
359
|
left: 0,
|
|
387
360
|
top: targetRect.bottom + PADDING,
|
|
388
361
|
width: "100vw",
|
|
389
362
|
height: Math.max(0, viewport.h - (targetRect.bottom + PADDING))
|
|
390
|
-
}
|
|
363
|
+
}
|
|
391
364
|
})]
|
|
392
365
|
});
|
|
393
366
|
|
|
394
367
|
// Backdrop fallback when target not found — full-screen dimmed overlay.
|
|
395
|
-
|
|
368
|
+
const backdropFallback = !targetRect && /*#__PURE__*/_jsx(Box, {
|
|
396
369
|
onClick: skip,
|
|
397
370
|
sx: BACKDROP_FALLBACK_SX
|
|
398
371
|
});
|
|
399
372
|
|
|
400
373
|
// Tooltip — only renders once tooltipPos is computed.
|
|
401
|
-
|
|
374
|
+
const tooltip = tooltipPos && /*#__PURE__*/_jsxs(Box, {
|
|
402
375
|
ref: tooltipRef,
|
|
403
376
|
role: "dialog",
|
|
404
377
|
"aria-modal": "true",
|
|
405
378
|
"aria-labelledby": titleId,
|
|
406
379
|
"aria-describedby": contentId,
|
|
407
|
-
sx:
|
|
380
|
+
sx: {
|
|
381
|
+
...TOOLTIP_BASE_SX,
|
|
408
382
|
top: tooltipPos.top,
|
|
409
383
|
left: tooltipPos.left
|
|
410
|
-
}
|
|
384
|
+
},
|
|
411
385
|
children: [/*#__PURE__*/_jsxs(Box, {
|
|
412
386
|
sx: TOOLTIP_HEADER_SX,
|
|
413
387
|
children: [/*#__PURE__*/_jsx(Box, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tour.js","names":["React","createPortal","Box","IconButton","CloseIcon","Button","useFocusTrap","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PADDING","TOOLTIP_GAP","TOOLTIP_WIDTH","TOOLTIP_MAX_HEIGHT","VIEWPORT_MARGIN","DEFAULT_LABELS","Object","freeze","prev","next","skip","finish","closeAria","stepCounter","cur","total","concat","getElementRect","selector","document","el","querySelector","r","getBoundingClientRect","top","left","right","bottom","width","height","_unused","computeTooltipPosition","targetRect","placement","vw","vh","p","space","best","entries","sort","a","b","Math","max","min","SPOTLIGHT_BG","SPOTLIGHT_BASE_SX","position","background","zIndex","pointerEvents","BACKDROP_FALLBACK_SX","inset","TOOLTIP_BASE_SX","maxHeight","overflowY","border","borderRadius","boxShadow","padding","TOOLTIP_HEADER_SX","display","alignItems","justifyContent","gap","marginBottom","TOOLTIP_TITLE_SX","fontSize","fontWeight","color","TOOLTIP_CLOSE_SX","marginRight","marginTop","TOOLTIP_CONTENT_SX","lineHeight","TOOLTIP_FOOTER_SX","STEP_COUNTER_SX","fontVariantNumeric","NAV_BUTTONS_SX","Tour","_ref","open","steps","onClose","onComplete","labels","L","useMemo","_React$useState","useState","_React$useState2","_slicedToArray","stepIdx","setStepIdx","_React$useState3","_React$useState4","setTargetRect","_React$useState5","_React$useState6","tooltipPos","setTooltipPos","_React$useState7","w","h","_React$useState8","viewport","setViewport","tooltipRef","useRef","titleId","useId","contentId","currentStep","useEffect","undefined","recompute","window","innerWidth","innerHeight","rect","target","initialEl","_unused2","scrollIntoView","block","behavior","rafId","onViewportChange","requestAnimationFrame","addEventListener","removeEventListener","cancelAnimationFrame","onKey","e","key","preventDefault","length","isFirst","isLast","goNext","goPrev","spotlight","children","onClick","sx","_objectSpread","backdropFallback","tooltip","ref","role","id","title","size","content","variant","body"],"sources":["../../../../src/lib/v2/patterns/Tour.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Tour - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 · \"First-run tooltips\" / onboarding. Step-by-step guided tour\r\n * anchored to specific DOM elements with spotlight + tooltip nav.\r\n *\r\n * <Tour\r\n * open={tourOpen}\r\n * steps={[\r\n * { target: \"#nav-dashboard\", title: \"Accueil\", content: \"...\" },\r\n * { target: \"[data-tour='kpi']\", title: \"KPIs\", content: \"...\", placement: \"bottom\" },\r\n * ]}\r\n * onClose={() => setTourOpen(false)}\r\n * onComplete={() => markTourSeen()}\r\n * />\r\n *\r\n * Step state is INTERNAL (resets to 0 on every `open` → true transition).\r\n * Host owns `open` and the \"user has seen the tour\" persistence.\r\n *\r\n * A11y: role=\"dialog\" aria-modal=\"true\"; aria-labelledby / aria-describedby;\r\n * step counter in role=\"status\" aria-live=\"polite\"; step title + content are\r\n * polite/atomic live regions so each step change is announced (TOUR-1); Esc\r\n * closes; focus trapped.\r\n *\r\n * Target-not-found fallback: if the CSS selector doesn't match, the spotlight\r\n * falls back to a full-screen dimmed backdrop and the tooltip renders centered.\r\n */\r\n\r\nexport type TourPlacement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\";\r\n\r\nexport interface TourStep {\r\n /** CSS selector for the element to highlight. */\r\n target: string;\r\n title: React.ReactNode;\r\n content: React.ReactNode;\r\n /** Preferred side; \"auto\" (default) picks the side with the most space. */\r\n placement?: TourPlacement | undefined;\r\n}\r\n\r\nexport interface TourLabels {\r\n prev?: React.ReactNode | undefined;\r\n next?: React.ReactNode | undefined;\r\n skip?: React.ReactNode | undefined;\r\n finish?: React.ReactNode | undefined;\r\n closeAria?: string | undefined;\r\n stepCounter?: ((cur: number, total: number) => React.ReactNode) | undefined;\r\n}\r\n\r\nexport interface TourProps {\r\n open?: boolean | undefined;\r\n steps?: TourStep[] | undefined;\r\n onClose?: (() => void) | undefined;\r\n onComplete?: (() => void) | undefined;\r\n labels?: TourLabels | undefined;\r\n}\r\n\r\n/** Resolved target geometry (plus the element, for potential callers). */\r\ninterface TargetRect {\r\n top: number;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n width: number;\r\n height: number;\r\n el: Element;\r\n}\r\n\r\n/** Resolved tooltip position; `placement` is the chosen side (or \"center\"). */\r\ninterface TooltipPosition {\r\n top: number;\r\n left: number;\r\n placement: string;\r\n}\r\n\r\nconst PADDING = 8; // spotlight extra around target bbox\r\nconst TOOLTIP_GAP = 12; // distance from target to tooltip edge\r\nconst TOOLTIP_WIDTH = 320;\r\nconst TOOLTIP_MAX_HEIGHT = 360;\r\nconst VIEWPORT_MARGIN = 8; // min distance from viewport edges\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n prev: \"Précédent\",\r\n next: \"Suivant\",\r\n skip: \"Ignorer\",\r\n finish: \"Terminer\",\r\n closeAria: \"Fermer la visite guidée\",\r\n stepCounter: (cur: number, total: number) => `${cur} sur ${total}`,\r\n});\r\n\r\n/**\r\n * Try to resolve a CSS selector to its element's bounding rect. Returns null\r\n * on any failure (selector invalid, element absent). Defensive — host typos\r\n * shouldn't crash the tour.\r\n */\r\nfunction getElementRect(selector: string): TargetRect | null {\r\n if (!selector || typeof document === \"undefined\") return null;\r\n try {\r\n const el = document.querySelector(selector);\r\n if (!el) return null;\r\n const r = el.getBoundingClientRect();\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n right: r.right,\r\n bottom: r.bottom,\r\n width: r.width,\r\n height: r.height,\r\n el,\r\n };\r\n } catch {\r\n // Invalid selector syntax → catch SyntaxError, return null.\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Compute the tooltip's top/left given a target rect, a placement preference,\r\n * and the viewport bounds. Auto picks the side with the most clearance;\r\n * clamps to viewport.\r\n */\r\nfunction computeTooltipPosition(\r\n targetRect: TargetRect,\r\n placement: TourPlacement | undefined,\r\n vw: number,\r\n vh: number\r\n): TooltipPosition {\r\n let p: string = placement || \"auto\";\r\n if (p === \"auto\") {\r\n const space = {\r\n top: targetRect.top,\r\n bottom: vh - targetRect.bottom,\r\n left: targetRect.left,\r\n right: vw - targetRect.right,\r\n };\r\n // Pick the side with the most clearance. Stable on ties — first entry\r\n // wins (Object.entries order is insertion order, ES2015+).\r\n const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];\r\n if (best) p = best[0];\r\n }\r\n\r\n let top: number;\r\n let left: number;\r\n switch (p) {\r\n case \"top\":\r\n top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"bottom\":\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"left\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.left - TOOLTIP_GAP - TOOLTIP_WIDTH;\r\n break;\r\n case \"right\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.right + TOOLTIP_GAP;\r\n break;\r\n default:\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left;\r\n }\r\n\r\n // Clamp to viewport with a small margin so the tooltip never touches the edge.\r\n left = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN)\r\n );\r\n top = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN)\r\n );\r\n\r\n return { top, left, placement: p };\r\n}\r\n\r\n/* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */\r\n\r\nconst SPOTLIGHT_BG = \"color-mix(in srgb, var(--fg) 60%, transparent)\";\r\n\r\nconst SPOTLIGHT_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst BACKDROP_FALLBACK_SX = Object.freeze({\r\n position: \"fixed\",\r\n inset: 0,\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n width: TOOLTIP_WIDTH,\r\n maxHeight: TOOLTIP_MAX_HEIGHT,\r\n overflowY: \"auto\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n padding: \"var(--s-4)\",\r\n zIndex: \"var(--z-tooltip)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_HEADER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n marginBottom: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-h4)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst TOOLTIP_CLOSE_SX = Object.freeze({\r\n color: \"var(--fg-muted)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst TOOLTIP_CONTENT_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-3)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n});\r\n\r\nconst TOOLTIP_FOOTER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst STEP_COUNTER_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n});\r\n\r\nconst NAV_BUTTONS_SX = Object.freeze({\r\n display: \"flex\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction Tour({ open, steps, onClose, onComplete, labels }: TourProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [stepIdx, setStepIdx] = React.useState(0);\r\n const [targetRect, setTargetRect] = React.useState<TargetRect | null>(null);\r\n const [tooltipPos, setTooltipPos] = React.useState<TooltipPosition | null>(\r\n null\r\n );\r\n const [viewport, setViewport] = React.useState({ w: 0, h: 0 });\r\n\r\n const tooltipRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const contentId = React.useId();\r\n\r\n const currentStep = steps && steps[stepIdx];\r\n\r\n // Focus trap activates ONLY after tooltipPos is computed (tooltip actually\r\n // mounted with a non-null ref). On first open, tooltipPos is null until the\r\n // position effect runs, so the trap would otherwise activate against a null ref.\r\n useFocusTrap(tooltipRef, !!open && tooltipPos != null);\r\n\r\n // Reset to step 0 on each open transition.\r\n React.useEffect(() => {\r\n if (open) setStepIdx(0);\r\n }, [open]);\r\n\r\n // Compute target rect + tooltip position. Re-runs on step change and on\r\n // window scroll/resize.\r\n React.useEffect(() => {\r\n if (!open || !currentStep) return undefined;\r\n\r\n const recompute = () => {\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n setViewport({ w, h });\r\n const rect = getElementRect(currentStep.target);\r\n setTargetRect(rect);\r\n if (rect) {\r\n setTooltipPos(\r\n computeTooltipPosition(rect, currentStep.placement, w, h)\r\n );\r\n } else {\r\n // Fallback: center the tooltip when target not found.\r\n setTooltipPos({\r\n top: Math.max(VIEWPORT_MARGIN, (h - TOOLTIP_MAX_HEIGHT) / 2),\r\n left: Math.max(VIEWPORT_MARGIN, (w - TOOLTIP_WIDTH) / 2),\r\n placement: \"center\",\r\n });\r\n }\r\n };\r\n\r\n recompute();\r\n\r\n // Scroll the target into view on each step change; no-ops if not found.\r\n const initialEl =\r\n typeof document !== \"undefined\"\r\n ? (() => {\r\n try {\r\n return document.querySelector(currentStep.target);\r\n } catch {\r\n return null;\r\n }\r\n })()\r\n : null;\r\n if (initialEl && typeof initialEl.scrollIntoView === \"function\") {\r\n initialEl.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n\r\n // TOUR-2 (perf) — coalesce scroll/resize into ONE recompute per frame.\r\n // recompute() does a querySelector + getBoundingClientRect + up to 4\r\n // setState calls, so running it on every raw scroll event is wasteful;\r\n // rAF-throttle to at most once per animation frame. `true` (capture)\r\n // catches scroll on any ancestor (default scroll events don't bubble).\r\n let rafId: number | null = null;\r\n const onViewportChange = () => {\r\n if (rafId != null) return; // a frame is already scheduled\r\n rafId = window.requestAnimationFrame(() => {\r\n rafId = null;\r\n recompute();\r\n });\r\n };\r\n window.addEventListener(\"scroll\", onViewportChange, true);\r\n window.addEventListener(\"resize\", onViewportChange);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onViewportChange, true);\r\n window.removeEventListener(\"resize\", onViewportChange);\r\n if (rafId != null) window.cancelAnimationFrame(rafId);\r\n };\r\n }, [open, currentStep]);\r\n\r\n // Esc closes the tour. Window-bound — same pattern as Modal / Drawer.\r\n React.useEffect(() => {\r\n if (!open) return undefined;\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n onClose?.();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open || !steps || steps.length === 0 || !currentStep) return null;\r\n\r\n const total = steps.length;\r\n const isFirst = stepIdx === 0;\r\n const isLast = stepIdx === total - 1;\r\n\r\n const goNext = () => {\r\n if (isLast) {\r\n onComplete?.();\r\n onClose?.();\r\n } else {\r\n setStepIdx(stepIdx + 1);\r\n }\r\n };\r\n const goPrev = () => {\r\n if (!isFirst) setStepIdx(stepIdx - 1);\r\n };\r\n const skip = () => {\r\n onClose?.();\r\n };\r\n\r\n // Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.\r\n const spotlight = targetRect && (\r\n <>\r\n {/* Top */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: Math.max(0, targetRect.top - PADDING),\r\n }}\r\n />\r\n {/* Left */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, targetRect.left - PADDING),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Right */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: targetRect.right + PADDING,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, viewport.w - (targetRect.right + PADDING)),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Bottom */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: targetRect.bottom + PADDING,\r\n width: \"100vw\",\r\n height: Math.max(0, viewport.h - (targetRect.bottom + PADDING)),\r\n }}\r\n />\r\n </>\r\n );\r\n\r\n // Backdrop fallback when target not found — full-screen dimmed overlay.\r\n const backdropFallback = !targetRect && (\r\n <Box onClick={skip} sx={BACKDROP_FALLBACK_SX} />\r\n );\r\n\r\n // Tooltip — only renders once tooltipPos is computed.\r\n const tooltip = tooltipPos && (\r\n <Box\r\n ref={tooltipRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={contentId}\r\n sx={{\r\n ...TOOLTIP_BASE_SX,\r\n top: tooltipPos.top,\r\n left: tooltipPos.left,\r\n }}\r\n >\r\n <Box sx={TOOLTIP_HEADER_SX}>\r\n {/* TOUR-1 — polite/atomic so a step change announces the new title. */}\r\n <Box\r\n id={titleId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_TITLE_SX}\r\n >\r\n {currentStep.title}\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={skip}\r\n aria-label={L.closeAria}\r\n sx={TOOLTIP_CLOSE_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* TOUR-1 — polite/atomic so a step change announces the new content. */}\r\n <Box\r\n id={contentId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_CONTENT_SX}\r\n >\r\n {currentStep.content}\r\n </Box>\r\n\r\n <Box sx={TOOLTIP_FOOTER_SX}>\r\n <Box role=\"status\" aria-live=\"polite\" sx={STEP_COUNTER_SX}>\r\n {L.stepCounter(stepIdx + 1, total)}\r\n </Box>\r\n <Box sx={NAV_BUTTONS_SX}>\r\n {!isFirst && (\r\n <Button variant=\"ghost\" size=\"sm\" onClick={goPrev}>\r\n {L.prev}\r\n </Button>\r\n )}\r\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\r\n {L.skip}\r\n </Button>\r\n <Button variant=\"primary\" size=\"sm\" onClick={goNext}>\r\n {isLast ? L.finish : L.next}\r\n </Button>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n // Portal to document.body so the tour escapes any host overflow/transform\r\n // context that would clip absolute positioning.\r\n if (typeof document === \"undefined\") return null;\r\n return createPortal(\r\n <>\r\n {spotlight}\r\n {backdropFallback}\r\n {tooltip}\r\n </>,\r\n document.body\r\n );\r\n}\r\n\r\nexport default Tour;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Tour.js","names":["React","createPortal","Box","IconButton","CloseIcon","Button","useFocusTrap","mergeLabels","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","PADDING","TOOLTIP_GAP","TOOLTIP_WIDTH","TOOLTIP_MAX_HEIGHT","VIEWPORT_MARGIN","DEFAULT_LABELS","Object","freeze","prev","next","skip","finish","closeAria","stepCounter","cur","total","getElementRect","selector","document","el","querySelector","r","getBoundingClientRect","top","left","right","bottom","width","height","computeTooltipPosition","targetRect","placement","vw","vh","p","space","best","entries","sort","a","b","Math","max","min","SPOTLIGHT_BG","SPOTLIGHT_BASE_SX","position","background","zIndex","pointerEvents","BACKDROP_FALLBACK_SX","inset","TOOLTIP_BASE_SX","maxHeight","overflowY","border","borderRadius","boxShadow","padding","TOOLTIP_HEADER_SX","display","alignItems","justifyContent","gap","marginBottom","TOOLTIP_TITLE_SX","fontSize","fontWeight","color","TOOLTIP_CLOSE_SX","marginRight","marginTop","TOOLTIP_CONTENT_SX","lineHeight","TOOLTIP_FOOTER_SX","STEP_COUNTER_SX","fontVariantNumeric","NAV_BUTTONS_SX","Tour","open","steps","onClose","onComplete","labels","L","useMemo","stepIdx","setStepIdx","useState","setTargetRect","tooltipPos","setTooltipPos","viewport","setViewport","w","h","tooltipRef","useRef","titleId","useId","contentId","currentStep","useEffect","undefined","recompute","window","innerWidth","innerHeight","rect","target","initialEl","scrollIntoView","block","behavior","rafId","onViewportChange","requestAnimationFrame","addEventListener","removeEventListener","cancelAnimationFrame","onKey","e","key","preventDefault","length","isFirst","isLast","goNext","goPrev","spotlight","children","onClick","sx","backdropFallback","tooltip","ref","role","id","title","size","content","variant","body"],"sources":["../../../../src/lib/v2/patterns/Tour.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport Button from \"../components/Button\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Tour - Portnet UI v2 (pattern)\r\n *\r\n * Charter §07 · \"First-run tooltips\" / onboarding. Step-by-step guided tour\r\n * anchored to specific DOM elements with spotlight + tooltip nav.\r\n *\r\n * <Tour\r\n * open={tourOpen}\r\n * steps={[\r\n * { target: \"#nav-dashboard\", title: \"Accueil\", content: \"...\" },\r\n * { target: \"[data-tour='kpi']\", title: \"KPIs\", content: \"...\", placement: \"bottom\" },\r\n * ]}\r\n * onClose={() => setTourOpen(false)}\r\n * onComplete={() => markTourSeen()}\r\n * />\r\n *\r\n * Step state is INTERNAL (resets to 0 on every `open` → true transition).\r\n * Host owns `open` and the \"user has seen the tour\" persistence.\r\n *\r\n * A11y: role=\"dialog\" aria-modal=\"true\"; aria-labelledby / aria-describedby;\r\n * step counter in role=\"status\" aria-live=\"polite\"; step title + content are\r\n * polite/atomic live regions so each step change is announced (TOUR-1); Esc\r\n * closes; focus trapped.\r\n *\r\n * Target-not-found fallback: if the CSS selector doesn't match, the spotlight\r\n * falls back to a full-screen dimmed backdrop and the tooltip renders centered.\r\n */\r\n\r\nexport type TourPlacement = \"top\" | \"bottom\" | \"left\" | \"right\" | \"auto\";\r\n\r\nexport interface TourStep {\r\n /** CSS selector for the element to highlight. */\r\n target: string;\r\n title: React.ReactNode;\r\n content: React.ReactNode;\r\n /** Preferred side; \"auto\" (default) picks the side with the most space. */\r\n placement?: TourPlacement | undefined;\r\n}\r\n\r\nexport interface TourLabels {\r\n prev?: React.ReactNode | undefined;\r\n next?: React.ReactNode | undefined;\r\n skip?: React.ReactNode | undefined;\r\n finish?: React.ReactNode | undefined;\r\n closeAria?: string | undefined;\r\n stepCounter?: ((cur: number, total: number) => React.ReactNode) | undefined;\r\n}\r\n\r\nexport interface TourProps {\r\n open?: boolean | undefined;\r\n steps?: TourStep[] | undefined;\r\n onClose?: (() => void) | undefined;\r\n onComplete?: (() => void) | undefined;\r\n labels?: TourLabels | undefined;\r\n}\r\n\r\n/** Resolved target geometry (plus the element, for potential callers). */\r\ninterface TargetRect {\r\n top: number;\r\n left: number;\r\n right: number;\r\n bottom: number;\r\n width: number;\r\n height: number;\r\n el: Element;\r\n}\r\n\r\n/** Resolved tooltip position; `placement` is the chosen side (or \"center\"). */\r\ninterface TooltipPosition {\r\n top: number;\r\n left: number;\r\n placement: string;\r\n}\r\n\r\nconst PADDING = 8; // spotlight extra around target bbox\r\nconst TOOLTIP_GAP = 12; // distance from target to tooltip edge\r\nconst TOOLTIP_WIDTH = 320;\r\nconst TOOLTIP_MAX_HEIGHT = 360;\r\nconst VIEWPORT_MARGIN = 8; // min distance from viewport edges\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n prev: \"Précédent\",\r\n next: \"Suivant\",\r\n skip: \"Ignorer\",\r\n finish: \"Terminer\",\r\n closeAria: \"Fermer la visite guidée\",\r\n stepCounter: (cur: number, total: number) => `${cur} sur ${total}`,\r\n});\r\n\r\n/**\r\n * Try to resolve a CSS selector to its element's bounding rect. Returns null\r\n * on any failure (selector invalid, element absent). Defensive — host typos\r\n * shouldn't crash the tour.\r\n */\r\nfunction getElementRect(selector: string): TargetRect | null {\r\n if (!selector || typeof document === \"undefined\") return null;\r\n try {\r\n const el = document.querySelector(selector);\r\n if (!el) return null;\r\n const r = el.getBoundingClientRect();\r\n return {\r\n top: r.top,\r\n left: r.left,\r\n right: r.right,\r\n bottom: r.bottom,\r\n width: r.width,\r\n height: r.height,\r\n el,\r\n };\r\n } catch {\r\n // Invalid selector syntax → catch SyntaxError, return null.\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Compute the tooltip's top/left given a target rect, a placement preference,\r\n * and the viewport bounds. Auto picks the side with the most clearance;\r\n * clamps to viewport.\r\n */\r\nfunction computeTooltipPosition(\r\n targetRect: TargetRect,\r\n placement: TourPlacement | undefined,\r\n vw: number,\r\n vh: number\r\n): TooltipPosition {\r\n let p: string = placement || \"auto\";\r\n if (p === \"auto\") {\r\n const space = {\r\n top: targetRect.top,\r\n bottom: vh - targetRect.bottom,\r\n left: targetRect.left,\r\n right: vw - targetRect.right,\r\n };\r\n // Pick the side with the most clearance. Stable on ties — first entry\r\n // wins (Object.entries order is insertion order, ES2015+).\r\n const best = Object.entries(space).sort((a, b) => b[1] - a[1])[0];\r\n if (best) p = best[0];\r\n }\r\n\r\n let top: number;\r\n let left: number;\r\n switch (p) {\r\n case \"top\":\r\n top = targetRect.top - TOOLTIP_GAP - TOOLTIP_MAX_HEIGHT;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"bottom\":\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left + targetRect.width / 2 - TOOLTIP_WIDTH / 2;\r\n break;\r\n case \"left\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.left - TOOLTIP_GAP - TOOLTIP_WIDTH;\r\n break;\r\n case \"right\":\r\n top = targetRect.top + targetRect.height / 2 - TOOLTIP_MAX_HEIGHT / 2;\r\n left = targetRect.right + TOOLTIP_GAP;\r\n break;\r\n default:\r\n top = targetRect.bottom + TOOLTIP_GAP;\r\n left = targetRect.left;\r\n }\r\n\r\n // Clamp to viewport with a small margin so the tooltip never touches the edge.\r\n left = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(left, vw - TOOLTIP_WIDTH - VIEWPORT_MARGIN)\r\n );\r\n top = Math.max(\r\n VIEWPORT_MARGIN,\r\n Math.min(top, vh - TOOLTIP_MAX_HEIGHT - VIEWPORT_MARGIN)\r\n );\r\n\r\n return { top, left, placement: p };\r\n}\r\n\r\n/* ── Hoisted sx (Batch 14 D5 pattern) ─────────────────────────────── */\r\n\r\nconst SPOTLIGHT_BG = \"color-mix(in srgb, var(--fg) 60%, transparent)\";\r\n\r\nconst SPOTLIGHT_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst BACKDROP_FALLBACK_SX = Object.freeze({\r\n position: \"fixed\",\r\n inset: 0,\r\n background: SPOTLIGHT_BG,\r\n zIndex: \"var(--z-modal)\",\r\n pointerEvents: \"auto\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_BASE_SX = Object.freeze({\r\n position: \"fixed\",\r\n width: TOOLTIP_WIDTH,\r\n maxHeight: TOOLTIP_MAX_HEIGHT,\r\n overflowY: \"auto\",\r\n background: \"var(--surface)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n padding: \"var(--s-4)\",\r\n zIndex: \"var(--z-tooltip)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_HEADER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"flex-start\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n marginBottom: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst TOOLTIP_TITLE_SX = Object.freeze({\r\n fontSize: \"var(--text-h4)\",\r\n fontWeight: \"var(--fw-bold)\",\r\n color: \"var(--fg)\",\r\n});\r\n\r\nconst TOOLTIP_CLOSE_SX = Object.freeze({\r\n color: \"var(--fg-muted)\",\r\n marginRight: \"calc(-1 * var(--s-1))\",\r\n marginTop: \"calc(-1 * var(--s-1))\",\r\n});\r\n\r\nconst TOOLTIP_CONTENT_SX = Object.freeze({\r\n fontSize: \"var(--text-sm)\",\r\n color: \"var(--fg-muted)\",\r\n marginBottom: \"var(--s-3)\",\r\n lineHeight: \"var(--lh-normal)\",\r\n});\r\n\r\nconst TOOLTIP_FOOTER_SX = Object.freeze({\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nconst STEP_COUNTER_SX = Object.freeze({\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n fontVariantNumeric: \"tabular-nums\",\r\n});\r\n\r\nconst NAV_BUTTONS_SX = Object.freeze({\r\n display: \"flex\",\r\n gap: \"var(--s-2)\",\r\n} satisfies SxProps<Theme>);\r\n\r\nfunction Tour({ open, steps, onClose, onComplete, labels }: TourProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [stepIdx, setStepIdx] = React.useState(0);\r\n const [targetRect, setTargetRect] = React.useState<TargetRect | null>(null);\r\n const [tooltipPos, setTooltipPos] = React.useState<TooltipPosition | null>(\r\n null\r\n );\r\n const [viewport, setViewport] = React.useState({ w: 0, h: 0 });\r\n\r\n const tooltipRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const contentId = React.useId();\r\n\r\n const currentStep = steps && steps[stepIdx];\r\n\r\n // Focus trap activates ONLY after tooltipPos is computed (tooltip actually\r\n // mounted with a non-null ref). On first open, tooltipPos is null until the\r\n // position effect runs, so the trap would otherwise activate against a null ref.\r\n useFocusTrap(tooltipRef, !!open && tooltipPos != null);\r\n\r\n // Reset to step 0 on each open transition.\r\n React.useEffect(() => {\r\n if (open) setStepIdx(0);\r\n }, [open]);\r\n\r\n // Compute target rect + tooltip position. Re-runs on step change and on\r\n // window scroll/resize.\r\n React.useEffect(() => {\r\n if (!open || !currentStep) return undefined;\r\n\r\n const recompute = () => {\r\n const w = window.innerWidth;\r\n const h = window.innerHeight;\r\n setViewport({ w, h });\r\n const rect = getElementRect(currentStep.target);\r\n setTargetRect(rect);\r\n if (rect) {\r\n setTooltipPos(\r\n computeTooltipPosition(rect, currentStep.placement, w, h)\r\n );\r\n } else {\r\n // Fallback: center the tooltip when target not found.\r\n setTooltipPos({\r\n top: Math.max(VIEWPORT_MARGIN, (h - TOOLTIP_MAX_HEIGHT) / 2),\r\n left: Math.max(VIEWPORT_MARGIN, (w - TOOLTIP_WIDTH) / 2),\r\n placement: \"center\",\r\n });\r\n }\r\n };\r\n\r\n recompute();\r\n\r\n // Scroll the target into view on each step change; no-ops if not found.\r\n const initialEl =\r\n typeof document !== \"undefined\"\r\n ? (() => {\r\n try {\r\n return document.querySelector(currentStep.target);\r\n } catch {\r\n return null;\r\n }\r\n })()\r\n : null;\r\n if (initialEl && typeof initialEl.scrollIntoView === \"function\") {\r\n initialEl.scrollIntoView({ block: \"center\", behavior: \"smooth\" });\r\n }\r\n\r\n // TOUR-2 (perf) — coalesce scroll/resize into ONE recompute per frame.\r\n // recompute() does a querySelector + getBoundingClientRect + up to 4\r\n // setState calls, so running it on every raw scroll event is wasteful;\r\n // rAF-throttle to at most once per animation frame. `true` (capture)\r\n // catches scroll on any ancestor (default scroll events don't bubble).\r\n let rafId: number | null = null;\r\n const onViewportChange = () => {\r\n if (rafId != null) return; // a frame is already scheduled\r\n rafId = window.requestAnimationFrame(() => {\r\n rafId = null;\r\n recompute();\r\n });\r\n };\r\n window.addEventListener(\"scroll\", onViewportChange, true);\r\n window.addEventListener(\"resize\", onViewportChange);\r\n return () => {\r\n window.removeEventListener(\"scroll\", onViewportChange, true);\r\n window.removeEventListener(\"resize\", onViewportChange);\r\n if (rafId != null) window.cancelAnimationFrame(rafId);\r\n };\r\n }, [open, currentStep]);\r\n\r\n // Esc closes the tour. Window-bound — same pattern as Modal / Drawer.\r\n React.useEffect(() => {\r\n if (!open) return undefined;\r\n const onKey = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n e.preventDefault();\r\n onClose?.();\r\n }\r\n };\r\n window.addEventListener(\"keydown\", onKey);\r\n return () => window.removeEventListener(\"keydown\", onKey);\r\n }, [open, onClose]);\r\n\r\n if (!open || !steps || steps.length === 0 || !currentStep) return null;\r\n\r\n const total = steps.length;\r\n const isFirst = stepIdx === 0;\r\n const isLast = stepIdx === total - 1;\r\n\r\n const goNext = () => {\r\n if (isLast) {\r\n onComplete?.();\r\n onClose?.();\r\n } else {\r\n setStepIdx(stepIdx + 1);\r\n }\r\n };\r\n const goPrev = () => {\r\n if (!isFirst) setStepIdx(stepIdx - 1);\r\n };\r\n const skip = () => {\r\n onClose?.();\r\n };\r\n\r\n // Spotlight: 4 dark overlays around the target bbox. Each is clickable → skip.\r\n const spotlight = targetRect && (\r\n <>\r\n {/* Top */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: 0,\r\n width: \"100vw\",\r\n height: Math.max(0, targetRect.top - PADDING),\r\n }}\r\n />\r\n {/* Left */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, targetRect.left - PADDING),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Right */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: targetRect.right + PADDING,\r\n top: Math.max(0, targetRect.top - PADDING),\r\n width: Math.max(0, viewport.w - (targetRect.right + PADDING)),\r\n height: targetRect.height + 2 * PADDING,\r\n }}\r\n />\r\n {/* Bottom */}\r\n <Box\r\n onClick={skip}\r\n sx={{\r\n ...SPOTLIGHT_BASE_SX,\r\n left: 0,\r\n top: targetRect.bottom + PADDING,\r\n width: \"100vw\",\r\n height: Math.max(0, viewport.h - (targetRect.bottom + PADDING)),\r\n }}\r\n />\r\n </>\r\n );\r\n\r\n // Backdrop fallback when target not found — full-screen dimmed overlay.\r\n const backdropFallback = !targetRect && (\r\n <Box onClick={skip} sx={BACKDROP_FALLBACK_SX} />\r\n );\r\n\r\n // Tooltip — only renders once tooltipPos is computed.\r\n const tooltip = tooltipPos && (\r\n <Box\r\n ref={tooltipRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-labelledby={titleId}\r\n aria-describedby={contentId}\r\n sx={{\r\n ...TOOLTIP_BASE_SX,\r\n top: tooltipPos.top,\r\n left: tooltipPos.left,\r\n }}\r\n >\r\n <Box sx={TOOLTIP_HEADER_SX}>\r\n {/* TOUR-1 — polite/atomic so a step change announces the new title. */}\r\n <Box\r\n id={titleId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_TITLE_SX}\r\n >\r\n {currentStep.title}\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={skip}\r\n aria-label={L.closeAria}\r\n sx={TOOLTIP_CLOSE_SX}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* TOUR-1 — polite/atomic so a step change announces the new content. */}\r\n <Box\r\n id={contentId}\r\n aria-live=\"polite\"\r\n aria-atomic=\"true\"\r\n sx={TOOLTIP_CONTENT_SX}\r\n >\r\n {currentStep.content}\r\n </Box>\r\n\r\n <Box sx={TOOLTIP_FOOTER_SX}>\r\n <Box role=\"status\" aria-live=\"polite\" sx={STEP_COUNTER_SX}>\r\n {L.stepCounter(stepIdx + 1, total)}\r\n </Box>\r\n <Box sx={NAV_BUTTONS_SX}>\r\n {!isFirst && (\r\n <Button variant=\"ghost\" size=\"sm\" onClick={goPrev}>\r\n {L.prev}\r\n </Button>\r\n )}\r\n <Button variant=\"ghost\" size=\"sm\" onClick={skip}>\r\n {L.skip}\r\n </Button>\r\n <Button variant=\"primary\" size=\"sm\" onClick={goNext}>\r\n {isLast ? L.finish : L.next}\r\n </Button>\r\n </Box>\r\n </Box>\r\n </Box>\r\n );\r\n\r\n // Portal to document.body so the tour escapes any host overflow/transform\r\n // context that would clip absolute positioning.\r\n if (typeof document === \"undefined\") return null;\r\n return createPortal(\r\n <>\r\n {spotlight}\r\n {backdropFallback}\r\n {tooltip}\r\n </>,\r\n document.body\r\n );\r\n}\r\n\r\nexport default Tour;\r\n"],"mappings":"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","ignoreList":[]}
|