@portnet/ui 5.0.32 → 6.0.1
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 +524 -0
- package/README.md +101 -38
- package/dist/esm/index.js +196 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +160 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +144 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +333 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/esm/v2/__tests__/apiError.test.js +181 -0
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +147 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +230 -0
- package/dist/esm/v2/components/Accordion.js.map +1 -0
- package/dist/esm/v2/components/ActionStrip.js +146 -0
- package/dist/esm/v2/components/ActionStrip.js.map +1 -0
- package/dist/esm/v2/components/Banner.js +254 -0
- package/dist/esm/v2/components/Banner.js.map +1 -0
- package/dist/esm/v2/components/Busy.js +97 -0
- package/dist/esm/v2/components/Busy.js.map +1 -0
- package/dist/esm/v2/components/Button.js +114 -0
- package/dist/esm/v2/components/Button.js.map +1 -0
- package/dist/esm/v2/components/CategoryTag.js +81 -0
- package/dist/esm/v2/components/CategoryTag.js.map +1 -0
- package/dist/esm/v2/components/Checkbox.js +124 -0
- package/dist/esm/v2/components/Checkbox.js.map +1 -0
- package/dist/esm/v2/components/Chip.js +124 -0
- package/dist/esm/v2/components/Chip.js.map +1 -0
- package/dist/esm/v2/components/Combobox.js +394 -0
- package/dist/esm/v2/components/Combobox.js.map +1 -0
- package/dist/esm/v2/components/CommandPalette.js +660 -0
- package/dist/esm/v2/components/CommandPalette.js.map +1 -0
- package/dist/esm/v2/components/ConfirmDialog.js +144 -0
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/esm/v2/components/DatePicker.js +200 -0
- package/dist/esm/v2/components/DatePicker.js.map +1 -0
- package/dist/esm/v2/components/DateRangePicker.js +289 -0
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
- package/dist/esm/v2/components/DateTimePicker.js +182 -0
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
- package/dist/esm/v2/components/Drawer.js +333 -0
- package/dist/esm/v2/components/Drawer.js.map +1 -0
- package/dist/esm/v2/components/Dropzone.js +540 -0
- package/dist/esm/v2/components/Dropzone.js.map +1 -0
- package/dist/esm/v2/components/EmptyState.js +102 -0
- package/dist/esm/v2/components/EmptyState.js.map +1 -0
- package/dist/esm/v2/components/FavoriteToggle.js +127 -0
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/esm/v2/components/Field.js +197 -0
- package/dist/esm/v2/components/Field.js.map +1 -0
- package/dist/esm/v2/components/FieldError.js +124 -0
- package/dist/esm/v2/components/FieldError.js.map +1 -0
- package/dist/esm/v2/components/FieldHelp.js +202 -0
- package/dist/esm/v2/components/FieldHelp.js.map +1 -0
- package/dist/esm/v2/components/FileCard.js +162 -0
- package/dist/esm/v2/components/FileCard.js.map +1 -0
- package/dist/esm/v2/components/FilterTab.js +138 -0
- package/dist/esm/v2/components/FilterTab.js.map +1 -0
- package/dist/esm/v2/components/ForbiddenPage.js +74 -0
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/esm/v2/components/FormGrid.js +179 -0
- package/dist/esm/v2/components/FormGrid.js.map +1 -0
- package/dist/esm/v2/components/FormikDisplay.js +118 -0
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
- package/dist/esm/v2/components/Input.js +107 -0
- package/dist/esm/v2/components/Input.js.map +1 -0
- package/dist/esm/v2/components/KPICard.js +237 -0
- package/dist/esm/v2/components/KPICard.js.map +1 -0
- package/dist/esm/v2/components/KPIStrip.js +84 -0
- package/dist/esm/v2/components/KPIStrip.js.map +1 -0
- package/dist/esm/v2/components/KV.js +75 -0
- package/dist/esm/v2/components/KV.js.map +1 -0
- package/dist/esm/v2/components/KVGrid.js +74 -0
- package/dist/esm/v2/components/KVGrid.js.map +1 -0
- package/dist/esm/v2/components/Layout.js +284 -0
- package/dist/esm/v2/components/Layout.js.map +1 -0
- package/dist/esm/v2/components/MobileRowCard.js +314 -0
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
- package/dist/esm/v2/components/Modal.js +276 -0
- package/dist/esm/v2/components/Modal.js.map +1 -0
- package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/esm/v2/components/NotFoundPage.js +58 -0
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
- package/dist/esm/v2/components/NumberInput.js +309 -0
- package/dist/esm/v2/components/NumberInput.js.map +1 -0
- package/dist/esm/v2/components/OverflowMenu.js +184 -0
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
- package/dist/esm/v2/components/PdfViewer.js +122 -0
- package/dist/esm/v2/components/PdfViewer.js.map +1 -0
- package/dist/esm/v2/components/ProgressBar.js +202 -0
- package/dist/esm/v2/components/ProgressBar.js.map +1 -0
- package/dist/esm/v2/components/Radio.js +228 -0
- package/dist/esm/v2/components/Radio.js.map +1 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/esm/v2/components/SectionHeader.js +132 -0
- package/dist/esm/v2/components/SectionHeader.js.map +1 -0
- package/dist/esm/v2/components/Segmented.js +254 -0
- package/dist/esm/v2/components/Segmented.js.map +1 -0
- package/dist/esm/v2/components/Select.js +490 -0
- package/dist/esm/v2/components/Select.js.map +1 -0
- package/dist/esm/v2/components/ServerErrorPage.js +74 -0
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/esm/v2/components/Skeleton.js +269 -0
- package/dist/esm/v2/components/Skeleton.js.map +1 -0
- package/dist/esm/v2/components/SkipLink.js +49 -0
- package/dist/esm/v2/components/SkipLink.js.map +1 -0
- package/dist/esm/v2/components/Spinner.js +69 -0
- package/dist/esm/v2/components/Spinner.js.map +1 -0
- package/dist/esm/v2/components/Status.js +64 -0
- package/dist/esm/v2/components/Status.js.map +1 -0
- package/dist/esm/v2/components/Stepper.js +432 -0
- package/dist/esm/v2/components/Stepper.js.map +1 -0
- package/dist/esm/v2/components/Surface.js +159 -0
- package/dist/esm/v2/components/Surface.js.map +1 -0
- package/dist/esm/v2/components/Switch.js +128 -0
- package/dist/esm/v2/components/Switch.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +150 -0
- package/dist/esm/v2/components/Tabs.js.map +1 -0
- package/dist/esm/v2/components/TelInput.js +274 -0
- package/dist/esm/v2/components/TelInput.js.map +1 -0
- package/dist/esm/v2/components/Textarea.js +72 -0
- package/dist/esm/v2/components/Textarea.js.map +1 -0
- package/dist/esm/v2/components/TimePicker.js +134 -0
- package/dist/esm/v2/components/TimePicker.js.map +1 -0
- package/dist/esm/v2/components/Toast.js +376 -0
- package/dist/esm/v2/components/Toast.js.map +1 -0
- package/dist/esm/v2/components/Tooltip.js +161 -0
- package/dist/esm/v2/components/Tooltip.js.map +1 -0
- package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/esm/v2/components/_pickerShared.js +60 -0
- package/dist/esm/v2/components/_pickerShared.js.map +1 -0
- package/dist/esm/v2/components/index.js +244 -0
- package/dist/esm/v2/components/index.js.map +1 -0
- package/dist/esm/v2/hooks/index.js +10 -0
- package/dist/esm/v2/hooks/index.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/esm/v2/hooks/useDensity.js +119 -0
- package/dist/esm/v2/hooks/useDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useSortedRows.js +32 -0
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/esm/v2/hooks/useTabLoading.js +79 -0
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/esm/v2/index.js +121 -0
- package/dist/esm/v2/index.js.map +1 -0
- package/dist/esm/v2/modalContext.js +108 -0
- package/dist/esm/v2/modalContext.js.map +1 -0
- package/dist/esm/v2/models/favorite.js +2 -0
- package/dist/esm/v2/models/favorite.js.map +1 -0
- package/dist/esm/v2/models/index.js +12 -0
- package/dist/esm/v2/models/index.js.map +1 -0
- package/dist/esm/v2/models/personalization.js +2 -0
- package/dist/esm/v2/models/personalization.js.map +1 -0
- package/dist/esm/v2/models/referentiel.js +2 -0
- package/dist/esm/v2/models/referentiel.js.map +1 -0
- package/dist/esm/v2/models/savedFilter.js +2 -0
- package/dist/esm/v2/models/savedFilter.js.map +1 -0
- package/dist/esm/v2/patterns/ActionBar.js +603 -0
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/esm/v2/patterns/DataGrid.js +820 -0
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +164 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormPageShell.js +126 -0
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/FormSection.js +190 -0
- package/dist/esm/v2/patterns/FormSection.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCombobox.js +115 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +196 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +148 -0
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
- package/dist/esm/v2/patterns/FormikInput.js +127 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/FormikSelect.js +159 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +76 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +195 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/esm/v2/patterns/PageContent.js +62 -0
- package/dist/esm/v2/patterns/PageContent.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +615 -0
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/SortableHeader.js +179 -0
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/esm/v2/patterns/Tour.js +471 -0
- package/dist/esm/v2/patterns/Tour.js.map +1 -0
- package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +112 -0
- package/dist/esm/v2/patterns/_sort.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +95 -0
- package/dist/esm/v2/patterns/index.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/index.js +11 -0
- package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +17 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/esm/v2/personalization/index.js +46 -0
- package/dist/esm/v2/personalization/index.js.map +1 -0
- package/dist/esm/v2/personalization/personalizationContext.js +108 -0
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/esm/v2/personalization/schema.js +92 -0
- package/dist/esm/v2/personalization/schema.js.map +1 -0
- package/dist/esm/v2/personalization/types.js +2 -0
- package/dist/esm/v2/personalization/types.js.map +1 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/esm/v2/referentiel/index.js +15 -0
- package/dist/esm/v2/referentiel/index.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/esm/v2/styles/base.css +425 -0
- package/dist/esm/v2/styles/css.d.ts +10 -0
- package/dist/esm/v2/styles/index.js +12 -0
- package/dist/esm/v2/styles/index.js.map +1 -0
- package/dist/esm/v2/theme/_brand.js +64 -0
- package/dist/esm/v2/theme/_brand.js.map +1 -0
- package/dist/esm/v2/theme/_brandSecondary.js +60 -0
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/esm/v2/theme/cssVariables.js +198 -0
- package/dist/esm/v2/theme/cssVariables.js.map +1 -0
- package/dist/esm/v2/theme/index.js +32 -0
- package/dist/esm/v2/theme/index.js.map +1 -0
- package/dist/esm/v2/tokens/breakpoints.js +106 -0
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +219 -0
- package/dist/esm/v2/tokens/colors.js.map +1 -0
- package/dist/esm/v2/tokens/density.js +98 -0
- package/dist/esm/v2/tokens/density.js.map +1 -0
- package/dist/esm/v2/tokens/index.js +80 -0
- package/dist/esm/v2/tokens/index.js.map +1 -0
- package/dist/esm/v2/tokens/motion.js +88 -0
- package/dist/esm/v2/tokens/motion.js.map +1 -0
- package/dist/esm/v2/tokens/radius.js +22 -0
- package/dist/esm/v2/tokens/radius.js.map +1 -0
- package/dist/esm/v2/tokens/shadows.js +40 -0
- package/dist/esm/v2/tokens/shadows.js.map +1 -0
- package/dist/esm/v2/tokens/spacing.js +51 -0
- package/dist/esm/v2/tokens/spacing.js.map +1 -0
- package/dist/esm/v2/tokens/state.js +41 -0
- package/dist/esm/v2/tokens/state.js.map +1 -0
- package/dist/esm/v2/tokens/statusPalette.js +66 -0
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
- package/dist/esm/v2/tokens/tokens.json +153 -0
- package/dist/esm/v2/tokens/typography.js +149 -0
- package/dist/esm/v2/tokens/typography.js.map +1 -0
- package/dist/esm/v2/tokens/zIndex.js +44 -0
- package/dist/esm/v2/tokens/zIndex.js.map +1 -0
- package/dist/esm/v2/types/common.js +2 -0
- package/dist/esm/v2/types/common.js.map +1 -0
- package/dist/esm/v2/types/datagrid.js +2 -0
- package/dist/esm/v2/types/datagrid.js.map +1 -0
- package/dist/esm/v2/types/index.js +12 -0
- package/dist/esm/v2/types/index.js.map +1 -0
- package/dist/esm/v2/utils/apiError.js +281 -0
- package/dist/esm/v2/utils/apiError.js.map +1 -0
- package/dist/esm/v2/utils/contrast.js +157 -0
- package/dist/esm/v2/utils/contrast.js.map +1 -0
- package/dist/esm/v2/utils/cx.js +38 -0
- package/dist/esm/v2/utils/cx.js.map +1 -0
- package/dist/esm/v2/utils/fileDownload.js +226 -0
- package/dist/esm/v2/utils/fileDownload.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +78 -0
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
- package/dist/esm/v2/utils/index.js +43 -0
- package/dist/esm/v2/utils/index.js.map +1 -0
- package/dist/esm/v2/utils/mergeLabels.js +86 -0
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
- package/dist/esm/v2/utils/networkStatus.js +114 -0
- package/dist/esm/v2/utils/networkStatus.js.map +1 -0
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +183 -191
- package/dist/index.js.map +1 -0
- package/dist/v2/__tests__/FieldError.test.js +164 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +148 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +337 -0
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/__tests__/apiError.test.js +182 -0
- package/dist/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/v2/__tests__/banned-patterns.test.js +272 -0
- package/dist/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/v2/__tests__/contrast-palette.test.js +225 -0
- package/dist/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/v2/__tests__/cssVariables.test.js +158 -0
- package/dist/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +153 -0
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/v2/__tests__/locale-fallback.test.js +111 -0
- package/dist/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/v2/__tests__/useFocusTrap.test.js +517 -0
- package/dist/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/v2/components/Accordion.d.ts +56 -0
- package/dist/v2/components/Accordion.d.ts.map +1 -0
- package/dist/v2/components/Accordion.js +238 -0
- package/dist/v2/components/Accordion.js.map +1 -0
- package/dist/v2/components/ActionStrip.d.ts +67 -0
- package/dist/v2/components/ActionStrip.d.ts.map +1 -0
- package/dist/v2/components/ActionStrip.js +154 -0
- package/dist/v2/components/ActionStrip.js.map +1 -0
- package/dist/v2/components/Banner.d.ts +88 -0
- package/dist/v2/components/Banner.d.ts.map +1 -0
- package/dist/v2/components/Banner.js +264 -0
- package/dist/v2/components/Banner.js.map +1 -0
- package/dist/v2/components/Busy.d.ts +18 -0
- package/dist/v2/components/Busy.d.ts.map +1 -0
- package/dist/v2/components/Busy.js +104 -0
- package/dist/v2/components/Busy.js.map +1 -0
- package/dist/v2/components/Button.d.ts +36 -0
- package/dist/v2/components/Button.d.ts.map +1 -0
- package/dist/v2/components/Button.js +122 -0
- package/dist/v2/components/Button.js.map +1 -0
- package/dist/v2/components/CategoryTag.d.ts +45 -0
- package/dist/v2/components/CategoryTag.d.ts.map +1 -0
- package/dist/v2/components/CategoryTag.js +89 -0
- package/dist/v2/components/CategoryTag.js.map +1 -0
- package/dist/v2/components/Checkbox.d.ts +59 -0
- package/dist/v2/components/Checkbox.d.ts.map +1 -0
- package/dist/v2/components/Checkbox.js +134 -0
- package/dist/v2/components/Checkbox.js.map +1 -0
- package/dist/v2/components/Chip.d.ts +48 -0
- package/dist/v2/components/Chip.d.ts.map +1 -0
- package/dist/v2/components/Chip.js +132 -0
- package/dist/v2/components/Chip.js.map +1 -0
- package/dist/v2/components/Combobox.d.ts +134 -0
- package/dist/v2/components/Combobox.d.ts.map +1 -0
- package/dist/v2/components/Combobox.js +400 -0
- package/dist/v2/components/Combobox.js.map +1 -0
- package/dist/v2/components/CommandPalette.d.ts +36 -0
- package/dist/v2/components/CommandPalette.d.ts.map +1 -0
- package/dist/v2/components/CommandPalette.js +668 -0
- package/dist/v2/components/CommandPalette.js.map +1 -0
- package/dist/v2/components/ConfirmDialog.d.ts +23 -0
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/v2/components/ConfirmDialog.js +151 -0
- package/dist/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/v2/components/DatePicker.d.ts +21 -0
- package/dist/v2/components/DatePicker.d.ts.map +1 -0
- package/dist/v2/components/DatePicker.js +207 -0
- package/dist/v2/components/DatePicker.js.map +1 -0
- package/dist/v2/components/DateRangePicker.d.ts +81 -0
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -0
- package/dist/v2/components/DateRangePicker.js +296 -0
- package/dist/v2/components/DateRangePicker.js.map +1 -0
- package/dist/v2/components/DateTimePicker.d.ts +21 -0
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -0
- package/dist/v2/components/DateTimePicker.js +189 -0
- package/dist/v2/components/DateTimePicker.js.map +1 -0
- package/dist/v2/components/Drawer.d.ts +34 -0
- package/dist/v2/components/Drawer.d.ts.map +1 -0
- package/dist/v2/components/Drawer.js +340 -0
- package/dist/v2/components/Drawer.js.map +1 -0
- package/dist/v2/components/Dropzone.d.ts +150 -0
- package/dist/v2/components/Dropzone.d.ts.map +1 -0
- package/dist/v2/components/Dropzone.js +547 -0
- package/dist/v2/components/Dropzone.js.map +1 -0
- package/dist/v2/components/EmptyState.d.ts +36 -0
- package/dist/v2/components/EmptyState.d.ts.map +1 -0
- package/dist/v2/components/EmptyState.js +112 -0
- package/dist/v2/components/EmptyState.js.map +1 -0
- package/dist/v2/components/FavoriteToggle.d.ts +22 -0
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -0
- package/dist/v2/components/FavoriteToggle.js +135 -0
- package/dist/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/v2/components/Field.d.ts +63 -0
- package/dist/v2/components/Field.d.ts.map +1 -0
- package/dist/v2/components/Field.js +204 -0
- package/dist/v2/components/Field.js.map +1 -0
- package/dist/v2/components/FieldError.d.ts +78 -0
- package/dist/v2/components/FieldError.d.ts.map +1 -0
- package/dist/v2/components/FieldError.js +131 -0
- package/dist/v2/components/FieldError.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +54 -0
- package/dist/v2/components/FieldHelp.d.ts.map +1 -0
- package/dist/v2/components/FieldHelp.js +209 -0
- package/dist/v2/components/FieldHelp.js.map +1 -0
- package/dist/v2/components/FileCard.d.ts +75 -0
- package/dist/v2/components/FileCard.d.ts.map +1 -0
- package/dist/v2/components/FileCard.js +169 -0
- package/dist/v2/components/FileCard.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +35 -0
- package/dist/v2/components/FilterTab.d.ts.map +1 -0
- package/dist/v2/components/FilterTab.js +145 -0
- package/dist/v2/components/FilterTab.js.map +1 -0
- package/dist/v2/components/ForbiddenPage.d.ts +40 -0
- package/dist/v2/components/ForbiddenPage.d.ts.map +1 -0
- package/dist/v2/components/ForbiddenPage.js +81 -0
- package/dist/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/v2/components/FormGrid.d.ts +81 -0
- package/dist/v2/components/FormGrid.d.ts.map +1 -0
- package/dist/v2/components/FormGrid.js +187 -0
- package/dist/v2/components/FormGrid.js.map +1 -0
- package/dist/v2/components/FormikDisplay.d.ts +38 -0
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -0
- package/dist/v2/components/FormikDisplay.js +125 -0
- package/dist/v2/components/FormikDisplay.js.map +1 -0
- package/dist/v2/components/Input.d.ts +62 -0
- package/dist/v2/components/Input.d.ts.map +1 -0
- package/dist/v2/components/Input.js +115 -0
- package/dist/v2/components/Input.js.map +1 -0
- package/dist/v2/components/KPICard.d.ts +52 -0
- package/dist/v2/components/KPICard.d.ts.map +1 -0
- package/dist/v2/components/KPICard.js +244 -0
- package/dist/v2/components/KPICard.js.map +1 -0
- package/dist/v2/components/KPIStrip.d.ts +68 -0
- package/dist/v2/components/KPIStrip.d.ts.map +1 -0
- package/dist/v2/components/KPIStrip.js +92 -0
- package/dist/v2/components/KPIStrip.js.map +1 -0
- package/dist/v2/components/KV.d.ts +25 -0
- package/dist/v2/components/KV.d.ts.map +1 -0
- package/dist/v2/components/KV.js +82 -0
- package/dist/v2/components/KV.js.map +1 -0
- package/dist/v2/components/KVGrid.d.ts +44 -0
- package/dist/v2/components/KVGrid.d.ts.map +1 -0
- package/dist/v2/components/KVGrid.js +80 -0
- package/dist/v2/components/KVGrid.js.map +1 -0
- package/dist/v2/components/Layout.d.ts +78 -0
- package/dist/v2/components/Layout.d.ts.map +1 -0
- package/dist/v2/components/Layout.js +284 -0
- package/dist/v2/components/Layout.js.map +1 -0
- package/dist/v2/components/MobileRowCard.d.ts +63 -0
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -0
- package/dist/v2/components/MobileRowCard.js +321 -0
- package/dist/v2/components/MobileRowCard.js.map +1 -0
- package/dist/v2/components/Modal.d.ts +21 -0
- package/dist/v2/components/Modal.d.ts.map +1 -0
- package/dist/v2/components/Modal.js +281 -0
- package/dist/v2/components/Modal.js.map +1 -0
- package/dist/v2/components/NetworkErrorPage.d.ts +11 -0
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -0
- package/dist/v2/components/NetworkErrorPage.js +86 -0
- package/dist/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/v2/components/NotFoundPage.d.ts +9 -0
- package/dist/v2/components/NotFoundPage.d.ts.map +1 -0
- package/dist/v2/components/NotFoundPage.js +66 -0
- package/dist/v2/components/NotFoundPage.js.map +1 -0
- package/dist/v2/components/NumberInput.d.ts +83 -0
- package/dist/v2/components/NumberInput.d.ts.map +1 -0
- package/dist/v2/components/NumberInput.js +317 -0
- package/dist/v2/components/NumberInput.js.map +1 -0
- package/dist/v2/components/OverflowMenu.d.ts +55 -0
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -0
- package/dist/v2/components/OverflowMenu.js +192 -0
- package/dist/v2/components/OverflowMenu.js.map +1 -0
- package/dist/v2/components/PdfViewer.d.ts +56 -0
- package/dist/v2/components/PdfViewer.d.ts.map +1 -0
- package/dist/v2/components/PdfViewer.js +132 -0
- package/dist/v2/components/PdfViewer.js.map +1 -0
- package/dist/v2/components/ProgressBar.d.ts +53 -0
- package/dist/v2/components/ProgressBar.d.ts.map +1 -0
- package/dist/v2/components/ProgressBar.js +209 -0
- package/dist/v2/components/ProgressBar.js.map +1 -0
- package/dist/v2/components/Radio.d.ts +78 -0
- package/dist/v2/components/Radio.d.ts.map +1 -0
- package/dist/v2/components/Radio.js +238 -0
- package/dist/v2/components/Radio.js.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.js +221 -0
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +53 -0
- package/dist/v2/components/SectionHeader.d.ts.map +1 -0
- package/dist/v2/components/SectionHeader.js +140 -0
- package/dist/v2/components/SectionHeader.js.map +1 -0
- package/dist/v2/components/Segmented.d.ts +61 -0
- package/dist/v2/components/Segmented.d.ts.map +1 -0
- package/dist/v2/components/Segmented.js +261 -0
- package/dist/v2/components/Segmented.js.map +1 -0
- package/dist/v2/components/Select.d.ts +90 -0
- package/dist/v2/components/Select.d.ts.map +1 -0
- package/dist/v2/components/Select.js +499 -0
- package/dist/v2/components/Select.js.map +1 -0
- package/dist/v2/components/ServerErrorPage.d.ts +11 -0
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -0
- package/dist/v2/components/ServerErrorPage.js +82 -0
- package/dist/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/v2/components/Skeleton.d.ts +56 -0
- package/dist/v2/components/Skeleton.d.ts.map +1 -0
- package/dist/v2/components/Skeleton.js +281 -0
- package/dist/v2/components/Skeleton.js.map +1 -0
- package/dist/v2/components/SkipLink.d.ts +30 -0
- package/dist/v2/components/SkipLink.d.ts.map +1 -0
- package/dist/v2/components/SkipLink.js +58 -0
- package/dist/v2/components/SkipLink.js.map +1 -0
- package/dist/v2/components/Spinner.d.ts +40 -0
- package/dist/v2/components/Spinner.d.ts.map +1 -0
- package/dist/v2/components/Spinner.js +76 -0
- package/dist/v2/components/Spinner.js.map +1 -0
- package/dist/v2/components/Status.d.ts +42 -0
- package/dist/v2/components/Status.d.ts.map +1 -0
- package/dist/v2/components/Status.js +71 -0
- package/dist/v2/components/Status.js.map +1 -0
- package/dist/v2/components/Stepper.d.ts +142 -0
- package/dist/v2/components/Stepper.d.ts.map +1 -0
- package/dist/v2/components/Stepper.js +441 -0
- package/dist/v2/components/Stepper.js.map +1 -0
- package/dist/v2/components/Surface.d.ts +94 -0
- package/dist/v2/components/Surface.d.ts.map +1 -0
- package/dist/v2/components/Surface.js +163 -0
- package/dist/v2/components/Surface.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +30 -0
- package/dist/v2/components/Switch.d.ts.map +1 -0
- package/dist/v2/components/Switch.js +136 -0
- package/dist/v2/components/Switch.js.map +1 -0
- package/dist/v2/components/Tabs.d.ts +49 -0
- package/dist/v2/components/Tabs.d.ts.map +1 -0
- package/dist/v2/components/Tabs.js +160 -0
- package/dist/v2/components/Tabs.js.map +1 -0
- package/dist/v2/components/TelInput.d.ts +33 -0
- package/dist/v2/components/TelInput.d.ts.map +1 -0
- package/dist/v2/components/TelInput.js +282 -0
- package/dist/v2/components/TelInput.js.map +1 -0
- package/dist/v2/components/Textarea.d.ts +23 -0
- package/dist/v2/components/Textarea.d.ts.map +1 -0
- package/dist/v2/components/Textarea.js +80 -0
- package/dist/v2/components/Textarea.js.map +1 -0
- package/dist/v2/components/TimePicker.d.ts +21 -0
- package/dist/v2/components/TimePicker.d.ts.map +1 -0
- package/dist/v2/components/TimePicker.js +141 -0
- package/dist/v2/components/TimePicker.js.map +1 -0
- package/dist/v2/components/Toast.d.ts +32 -0
- package/dist/v2/components/Toast.d.ts.map +1 -0
- package/dist/v2/components/Toast.js +385 -0
- package/dist/v2/components/Toast.js.map +1 -0
- package/dist/v2/components/Tooltip.d.ts +9 -0
- package/dist/v2/components/Tooltip.d.ts.map +1 -0
- package/dist/v2/components/Tooltip.js +169 -0
- package/dist/v2/components/Tooltip.js.map +1 -0
- package/dist/v2/components/_ErrorPageBody.d.ts +48 -0
- package/dist/v2/components/_ErrorPageBody.d.ts.map +1 -0
- package/dist/v2/components/_ErrorPageBody.js +96 -0
- package/dist/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/v2/components/_pickerShared.d.ts +47 -0
- package/dist/v2/components/_pickerShared.d.ts.map +1 -0
- package/dist/v2/components/_pickerShared.js +68 -0
- package/dist/v2/components/_pickerShared.js.map +1 -0
- package/dist/v2/components/index.d.ts +226 -0
- package/dist/v2/components/index.d.ts.map +1 -0
- package/dist/v2/components/index.js +512 -0
- package/dist/v2/components/index.js.map +1 -0
- package/dist/v2/hooks/index.d.ts +11 -0
- package/dist/v2/hooks/index.d.ts.map +1 -0
- package/dist/v2/hooks/index.js +85 -0
- package/dist/v2/hooks/index.js.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.d.ts +22 -0
- package/dist/v2/hooks/useDelayedFlag.d.ts.map +1 -0
- package/dist/v2/hooks/useDelayedFlag.js +60 -0
- package/dist/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/v2/hooks/useDensity.d.ts +23 -0
- package/dist/v2/hooks/useDensity.d.ts.map +1 -0
- package/dist/v2/hooks/useDensity.js +124 -0
- package/dist/v2/hooks/useDensity.js.map +1 -0
- package/dist/v2/hooks/useFocusFirstError.d.ts +121 -0
- package/dist/v2/hooks/useFocusFirstError.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusFirstError.js +203 -0
- package/dist/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/v2/hooks/useFocusTrap.d.ts +3 -0
- package/dist/v2/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/v2/hooks/useFocusTrap.js +207 -0
- package/dist/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/v2/hooks/useFormAutoSave.d.ts +42 -0
- package/dist/v2/hooks/useFormAutoSave.d.ts.map +1 -0
- package/dist/v2/hooks/useFormAutoSave.js +186 -0
- package/dist/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/v2/hooks/useFormCompletionProgress.d.ts +52 -0
- package/dist/v2/hooks/useFormCompletionProgress.d.ts.map +1 -0
- package/dist/v2/hooks/useFormCompletionProgress.js +136 -0
- package/dist/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.d.ts +31 -0
- package/dist/v2/hooks/useResolvedDensity.d.ts.map +1 -0
- package/dist/v2/hooks/useResolvedDensity.js +50 -0
- package/dist/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/v2/hooks/useSortedRows.d.ts +25 -0
- package/dist/v2/hooks/useSortedRows.d.ts.map +1 -0
- package/dist/v2/hooks/useSortedRows.js +38 -0
- package/dist/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/v2/hooks/useTabLoading.d.ts +39 -0
- package/dist/v2/hooks/useTabLoading.d.ts.map +1 -0
- package/dist/v2/hooks/useTabLoading.js +85 -0
- package/dist/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/v2/index.d.ts +115 -0
- package/dist/v2/index.d.ts.map +1 -0
- package/dist/v2/index.js +1127 -0
- package/dist/v2/index.js.map +1 -0
- package/dist/v2/modalContext.d.ts +96 -0
- package/dist/v2/modalContext.d.ts.map +1 -0
- package/dist/v2/modalContext.js +113 -0
- package/dist/v2/modalContext.js.map +1 -0
- package/dist/v2/models/favorite.d.ts +14 -0
- package/dist/v2/models/favorite.d.ts.map +1 -0
- package/dist/v2/models/favorite.js +6 -0
- package/dist/v2/models/favorite.js.map +1 -0
- package/dist/v2/models/index.d.ts +11 -0
- package/dist/v2/models/index.d.ts.map +1 -0
- package/dist/v2/models/index.js +50 -0
- package/dist/v2/models/index.js.map +1 -0
- package/dist/v2/models/personalization.d.ts +65 -0
- package/dist/v2/models/personalization.d.ts.map +1 -0
- package/dist/v2/models/personalization.js +6 -0
- package/dist/v2/models/personalization.js.map +1 -0
- package/dist/v2/models/referentiel.d.ts +67 -0
- package/dist/v2/models/referentiel.d.ts.map +1 -0
- package/dist/v2/models/referentiel.js +6 -0
- package/dist/v2/models/referentiel.js.map +1 -0
- package/dist/v2/models/savedFilter.d.ts +22 -0
- package/dist/v2/models/savedFilter.d.ts.map +1 -0
- package/dist/v2/models/savedFilter.js +6 -0
- package/dist/v2/models/savedFilter.js.map +1 -0
- package/dist/v2/patterns/ActionBar.d.ts +137 -0
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -0
- package/dist/v2/patterns/ActionBar.js +602 -0
- package/dist/v2/patterns/ActionBar.js.map +1 -0
- package/dist/v2/patterns/BulkActionBar.d.ts +63 -0
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -0
- package/dist/v2/patterns/BulkActionBar.js +154 -0
- package/dist/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +62 -0
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js +306 -0
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/v2/patterns/ColumnsToggle.d.ts +55 -0
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -0
- package/dist/v2/patterns/ColumnsToggle.js +310 -0
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/v2/patterns/DataGrid.d.ts +7 -0
- package/dist/v2/patterns/DataGrid.d.ts.map +1 -0
- package/dist/v2/patterns/DataGrid.js +834 -0
- package/dist/v2/patterns/DataGrid.js.map +1 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +68 -0
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridSettingsMenu.js +382 -0
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/v2/patterns/DataGridToolbar.d.ts +81 -0
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridToolbar.js +256 -0
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/v2/patterns/DataGridVirtualized.d.ts +76 -0
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -0
- package/dist/v2/patterns/DataGridVirtualized.js +528 -0
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +46 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js +77 -0
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts +72 -0
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -0
- package/dist/v2/patterns/FavoriteColumn.js +171 -0
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/v2/patterns/FavoritesFilter.d.ts +51 -0
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -0
- package/dist/v2/patterns/FavoritesFilter.js +98 -0
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.d.ts +39 -0
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -0
- package/dist/v2/patterns/FormErrorSummary.js +111 -0
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/v2/patterns/FormPageShell.d.ts +55 -0
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -0
- package/dist/v2/patterns/FormPageShell.js +133 -0
- package/dist/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/v2/patterns/FormSection.d.ts +64 -0
- package/dist/v2/patterns/FormSection.d.ts.map +1 -0
- package/dist/v2/patterns/FormSection.js +197 -0
- package/dist/v2/patterns/FormSection.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +51 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.js +117 -0
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/v2/patterns/FormikCombobox.d.ts +43 -0
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCombobox.js +121 -0
- package/dist/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/v2/patterns/FormikDatePicker.d.ts +115 -0
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDatePicker.js +203 -0
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts +59 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.js +83 -0
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/v2/patterns/FormikFile.d.ts +43 -0
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -0
- package/dist/v2/patterns/FormikFile.js +156 -0
- package/dist/v2/patterns/FormikFile.js.map +1 -0
- package/dist/v2/patterns/FormikInput.d.ts +72 -0
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -0
- package/dist/v2/patterns/FormikInput.js +135 -0
- package/dist/v2/patterns/FormikInput.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +33 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.js +124 -0
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/v2/patterns/FormikSelect.d.ts +61 -0
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -0
- package/dist/v2/patterns/FormikSelect.js +165 -0
- package/dist/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/v2/patterns/FormikTextarea.d.ts +31 -0
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -0
- package/dist/v2/patterns/FormikTextarea.js +84 -0
- package/dist/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +44 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +203 -0
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +26 -0
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -0
- package/dist/v2/patterns/NetworkErrorBanner.js +82 -0
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/v2/patterns/PageContent.d.ts +40 -0
- package/dist/v2/patterns/PageContent.d.ts.map +1 -0
- package/dist/v2/patterns/PageContent.js +69 -0
- package/dist/v2/patterns/PageContent.js.map +1 -0
- package/dist/v2/patterns/ReferentielField.d.ts +118 -0
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -0
- package/dist/v2/patterns/ReferentielField.js +618 -0
- package/dist/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts +68 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.js +204 -0
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +74 -0
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -0
- package/dist/v2/patterns/SavedFiltersMenu.js +413 -0
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/v2/patterns/SkeletonPageShell.d.ts +76 -0
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -0
- package/dist/v2/patterns/SkeletonPageShell.js +347 -0
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/v2/patterns/SortableHeader.d.ts +47 -0
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -0
- package/dist/v2/patterns/SortableHeader.js +193 -0
- package/dist/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/v2/patterns/Tour.d.ts +55 -0
- package/dist/v2/patterns/Tour.d.ts.map +1 -0
- package/dist/v2/patterns/Tour.js +474 -0
- package/dist/v2/patterns/Tour.js.map +1 -0
- package/dist/v2/patterns/_dataGridShared.d.ts +144 -0
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -0
- package/dist/v2/patterns/_dataGridShared.js +440 -0
- package/dist/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/v2/patterns/_sort.d.ts +22 -0
- package/dist/v2/patterns/_sort.d.ts.map +1 -0
- package/dist/v2/patterns/_sort.js +118 -0
- package/dist/v2/patterns/_sort.js.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts +69 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.js +264 -0
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/v2/patterns/_useColumnResize.d.ts +49 -0
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -0
- package/dist/v2/patterns/_useColumnResize.js +198 -0
- package/dist/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/v2/patterns/index.d.ts +89 -0
- package/dist/v2/patterns/index.d.ts.map +1 -0
- package/dist/v2/patterns/index.js +246 -0
- package/dist/v2/patterns/index.js.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts +80 -0
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -0
- package/dist/v2/personalization/PersonalizationProvider.js +177 -0
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/v2/personalization/adapters/_storageKey.d.ts +35 -0
- package/dist/v2/personalization/adapters/_storageKey.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/_storageKey.js +69 -0
- package/dist/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +31 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js +128 -0
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +25 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.js +76 -0
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/v2/personalization/adapters/index.d.ts +10 -0
- package/dist/v2/personalization/adapters/index.d.ts.map +1 -0
- package/dist/v2/personalization/adapters/index.js +21 -0
- package/dist/v2/personalization/adapters/index.js.map +1 -0
- package/dist/v2/personalization/capabilities/favorites.d.ts +53 -0
- package/dist/v2/personalization/capabilities/favorites.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/favorites.js +223 -0
- package/dist/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +58 -0
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/favoritesView.js +121 -0
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +16 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/index.js +69 -0
- package/dist/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +61 -0
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/savedFilters.js +297 -0
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/v2/personalization/createPersonalizationStore.d.ts +76 -0
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -0
- package/dist/v2/personalization/createPersonalizationStore.js +475 -0
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/v2/personalization/index.d.ts +33 -0
- package/dist/v2/personalization/index.d.ts.map +1 -0
- package/dist/v2/personalization/index.js +111 -0
- package/dist/v2/personalization/index.js.map +1 -0
- package/dist/v2/personalization/personalizationContext.d.ts +78 -0
- package/dist/v2/personalization/personalizationContext.d.ts.map +1 -0
- package/dist/v2/personalization/personalizationContext.js +121 -0
- package/dist/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/v2/personalization/schema.d.ts +60 -0
- package/dist/v2/personalization/schema.d.ts.map +1 -0
- package/dist/v2/personalization/schema.js +102 -0
- package/dist/v2/personalization/schema.js.map +1 -0
- package/dist/v2/personalization/types.d.ts +81 -0
- package/dist/v2/personalization/types.d.ts.map +1 -0
- package/dist/v2/personalization/types.js +6 -0
- package/dist/v2/personalization/types.js.map +1 -0
- package/dist/v2/referentiel/ReferentielProvider.d.ts +53 -0
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -0
- package/dist/v2/referentiel/ReferentielProvider.js +94 -0
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/v2/referentiel/index.d.ts +18 -0
- package/dist/v2/referentiel/index.d.ts.map +1 -0
- package/dist/v2/referentiel/index.js +44 -0
- package/dist/v2/referentiel/index.js.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.d.ts +15 -0
- package/dist/v2/referentiel/useReferentielClient.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielClient.js +46 -0
- package/dist/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/v2/referentiel/useReferentielOptions.d.ts +40 -0
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielOptions.js +177 -0
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/v2/referentiel/useReferentielSearch.d.ts +76 -0
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -0
- package/dist/v2/referentiel/useReferentielSearch.js +140 -0
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/v2/styles/base.css +425 -0
- package/dist/v2/styles/css.d.ts +10 -0
- package/dist/v2/styles/index.d.ts +12 -0
- package/dist/v2/styles/index.d.ts.map +1 -0
- package/dist/v2/styles/index.js +4 -0
- package/dist/v2/styles/index.js.map +1 -0
- package/dist/v2/theme/_brand.d.ts +29 -0
- package/dist/v2/theme/_brand.d.ts.map +1 -0
- package/dist/v2/theme/_brand.js +69 -0
- package/dist/v2/theme/_brand.js.map +1 -0
- package/dist/v2/theme/_brandSecondary.d.ts +26 -0
- package/dist/v2/theme/_brandSecondary.d.ts.map +1 -0
- package/dist/v2/theme/_brandSecondary.js +65 -0
- package/dist/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/v2/theme/createPortnetTheme.d.ts +75 -0
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -0
- package/dist/v2/theme/createPortnetTheme.js +553 -0
- package/dist/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/v2/theme/cssVariables.d.ts +41 -0
- package/dist/v2/theme/cssVariables.d.ts.map +1 -0
- package/dist/v2/theme/cssVariables.js +205 -0
- package/dist/v2/theme/cssVariables.js.map +1 -0
- package/dist/v2/theme/index.d.ts +33 -0
- package/dist/v2/theme/index.d.ts.map +1 -0
- package/dist/v2/theme/index.js +60 -0
- package/dist/v2/theme/index.js.map +1 -0
- package/dist/v2/tokens/breakpoints.d.ts +74 -0
- package/dist/v2/tokens/breakpoints.d.ts.map +1 -0
- package/dist/v2/tokens/breakpoints.js +114 -0
- package/dist/v2/tokens/breakpoints.js.map +1 -0
- package/dist/v2/tokens/colors.d.ts +228 -0
- package/dist/v2/tokens/colors.d.ts.map +1 -0
- package/dist/v2/tokens/colors.js +225 -0
- package/dist/v2/tokens/colors.js.map +1 -0
- package/dist/v2/tokens/density.d.ts +142 -0
- package/dist/v2/tokens/density.d.ts.map +1 -0
- package/dist/v2/tokens/density.js +111 -0
- package/dist/v2/tokens/density.js.map +1 -0
- package/dist/v2/tokens/index.d.ts +556 -0
- package/dist/v2/tokens/index.d.ts.map +1 -0
- package/dist/v2/tokens/index.js +313 -0
- package/dist/v2/tokens/index.js.map +1 -0
- package/dist/v2/tokens/motion.d.ts +85 -0
- package/dist/v2/tokens/motion.d.ts.map +1 -0
- package/dist/v2/tokens/motion.js +94 -0
- package/dist/v2/tokens/motion.js.map +1 -0
- package/dist/v2/tokens/radius.d.ts +18 -0
- package/dist/v2/tokens/radius.d.ts.map +1 -0
- package/dist/v2/tokens/radius.js +28 -0
- package/dist/v2/tokens/radius.js.map +1 -0
- package/dist/v2/tokens/shadows.d.ts +25 -0
- package/dist/v2/tokens/shadows.d.ts.map +1 -0
- package/dist/v2/tokens/shadows.js +46 -0
- package/dist/v2/tokens/shadows.js.map +1 -0
- package/dist/v2/tokens/spacing.d.ts +38 -0
- package/dist/v2/tokens/spacing.d.ts.map +1 -0
- package/dist/v2/tokens/spacing.js +57 -0
- package/dist/v2/tokens/spacing.js.map +1 -0
- package/dist/v2/tokens/state.d.ts +40 -0
- package/dist/v2/tokens/state.d.ts.map +1 -0
- package/dist/v2/tokens/state.js +47 -0
- package/dist/v2/tokens/state.js.map +1 -0
- package/dist/v2/tokens/statusPalette.d.ts +54 -0
- package/dist/v2/tokens/statusPalette.d.ts.map +1 -0
- package/dist/v2/tokens/statusPalette.js +72 -0
- package/dist/v2/tokens/statusPalette.js.map +1 -0
- package/dist/v2/tokens/tokens.json +153 -0
- package/dist/v2/tokens/typography.d.ts +206 -0
- package/dist/v2/tokens/typography.d.ts.map +1 -0
- package/dist/v2/tokens/typography.js +155 -0
- package/dist/v2/tokens/typography.js.map +1 -0
- package/dist/v2/tokens/zIndex.d.ts +33 -0
- package/dist/v2/tokens/zIndex.d.ts.map +1 -0
- package/dist/v2/tokens/zIndex.js +50 -0
- package/dist/v2/tokens/zIndex.js.map +1 -0
- package/dist/v2/types/common.d.ts +24 -0
- package/dist/v2/types/common.d.ts.map +1 -0
- package/dist/v2/types/common.js +6 -0
- package/dist/v2/types/common.js.map +1 -0
- package/dist/v2/types/datagrid.d.ts +131 -0
- package/dist/v2/types/datagrid.d.ts.map +1 -0
- package/dist/v2/types/datagrid.js +6 -0
- package/dist/v2/types/datagrid.js.map +1 -0
- package/dist/v2/types/index.d.ts +11 -0
- package/dist/v2/types/index.d.ts.map +1 -0
- package/dist/v2/types/index.js +28 -0
- package/dist/v2/types/index.js.map +1 -0
- package/dist/v2/utils/apiError.d.ts +151 -0
- package/dist/v2/utils/apiError.d.ts.map +1 -0
- package/dist/v2/utils/apiError.js +290 -0
- package/dist/v2/utils/apiError.js.map +1 -0
- package/dist/v2/utils/contrast.d.ts +68 -0
- package/dist/v2/utils/contrast.d.ts.map +1 -0
- package/dist/v2/utils/contrast.js +167 -0
- package/dist/v2/utils/contrast.js.map +1 -0
- package/dist/v2/utils/cx.d.ts +9 -0
- package/dist/v2/utils/cx.d.ts.map +1 -0
- package/dist/v2/utils/cx.js +45 -0
- package/dist/v2/utils/cx.js.map +1 -0
- package/dist/v2/utils/fileDownload.d.ts +94 -0
- package/dist/v2/utils/fileDownload.d.ts.map +1 -0
- package/dist/v2/utils/fileDownload.js +236 -0
- package/dist/v2/utils/fileDownload.js.map +1 -0
- package/dist/v2/utils/fmtMoney.d.ts +28 -0
- package/dist/v2/utils/fmtMoney.d.ts.map +1 -0
- package/dist/v2/utils/fmtMoney.js +84 -0
- package/dist/v2/utils/fmtMoney.js.map +1 -0
- package/dist/v2/utils/index.d.ts +9 -0
- package/dist/v2/utils/index.d.ts.map +1 -0
- package/dist/v2/utils/index.js +97 -0
- package/dist/v2/utils/index.js.map +1 -0
- package/dist/v2/utils/mergeLabels.d.ts +59 -0
- package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
- package/dist/v2/utils/mergeLabels.js +93 -0
- package/dist/v2/utils/mergeLabels.js.map +1 -0
- package/dist/v2/utils/networkStatus.d.ts +88 -0
- package/dist/v2/utils/networkStatus.d.ts.map +1 -0
- package/dist/v2/utils/networkStatus.js +121 -0
- package/dist/v2/utils/networkStatus.js.map +1 -0
- package/package.json +198 -76
- package/dist/api/guideApi.js +0 -12
- package/dist/api/guideImageService.js +0 -119
- package/dist/api/reclamationApi.js +0 -119
- package/dist/assets/guides/FAQ.json +0 -118
- package/dist/assets/guides/index.js +0 -11
- package/dist/assets/images/tijariaLogo.ico +0 -0
- package/dist/components/buttons/PuiButton.js +0 -217
- package/dist/components/buttons/PuiIconButton.js +0 -98
- package/dist/components/common/PuiAlertContext.js +0 -12
- package/dist/components/common/PuiHelpWidgetContext.js +0 -17
- package/dist/components/common/StyledMuiButton.js +0 -48
- package/dist/components/common/StyledMuiTextField.js +0 -180
- package/dist/components/inputs/PuiAutocomplete.js +0 -352
- package/dist/components/inputs/PuiCheckbox.js +0 -308
- package/dist/components/inputs/PuiCheckboxGroup.js +0 -215
- package/dist/components/inputs/PuiCheckboxItem.js +0 -162
- package/dist/components/inputs/PuiDateField.js +0 -280
- package/dist/components/inputs/PuiDateTimeField.js +0 -276
- package/dist/components/inputs/PuiFileField.js +0 -265
- package/dist/components/inputs/PuiRadioGroup.js +0 -197
- package/dist/components/inputs/PuiRadioItem.js +0 -100
- package/dist/components/inputs/PuiSelect.js +0 -427
- package/dist/components/inputs/PuiTextField.js +0 -263
- package/dist/components/others/PuiBadge.js +0 -58
- package/dist/components/others/PuiChip.js +0 -150
- package/dist/components/others/PuiDialog.js +0 -102
- package/dist/components/others/PuiFormikForm.js +0 -70
- package/dist/components/others/PuiGrid.js +0 -23
- package/dist/components/others/PuiIcon.js +0 -92
- package/dist/components/others/PuiLoadingBackdrop.js +0 -32
- package/dist/components/others/PuiMainContainer.js +0 -41
- package/dist/components/others/PuiNavigation.js +0 -68
- package/dist/components/others/PuiSection.js +0 -187
- package/dist/components/others/PuiTooltip.js +0 -86
- package/dist/components/providers/PuiAlertProvider.js +0 -134
- package/dist/components/providers/PuiHelpWidgetProvider.js +0 -91
- package/dist/components/providers/PuiLocalizationProvider.js +0 -34
- package/dist/components/referentiel/common/ReferetielContext.js +0 -12
- package/dist/components/referentiel/common/constants/specificReferentielsApis.js +0 -22
- package/dist/components/referentiel/common/constants/specificReferentielsBaseColumns.js +0 -691
- package/dist/components/referentiel/common/constants/specificReferentielsBaseFilters.js +0 -598
- package/dist/components/referentiel/common/constants/specificReferentielsInitialValues.js +0 -80
- package/dist/components/referentiel/common/constants/specificReferentielsKeys.js +0 -18
- package/dist/components/referentiel/common/constants/specificReferentielsTitles.js +0 -22
- package/dist/components/referentiel/common/constants/specificReferentielsValidationSchemas.js +0 -85
- package/dist/components/referentiel/components/PuiBasePopupReferentielField.js +0 -356
- package/dist/components/referentiel/components/PuiCustomPopupReferentielField.js +0 -181
- package/dist/components/referentiel/components/PuiSimplePopupReferentielField.js +0 -325
- package/dist/components/referentiel/components/PuiSimpleReferentielField.js +0 -203
- package/dist/components/referentiel/components/PuiSpecificReferentielField.js +0 -352
- package/dist/components/referentiel/providers/PuiReferentielProvider.js +0 -66
- package/dist/components/tab/PuiTab.js +0 -25
- package/dist/components/tab/PuiTabs.js +0 -148
- package/dist/components/table/PuiTable.js +0 -643
- package/dist/components/table/PuiTableAction.js +0 -75
- package/dist/components/typography/PuiDefinition.js +0 -42
- package/dist/components/typography/PuiIndication.js +0 -80
- package/dist/components/typography/PuiMainTitle.js +0 -144
- package/dist/components/ui/dialogs/PuiSearchDialog.js +0 -106
- package/dist/components/ui/pages/errors/PuiErrorBasePage.js +0 -73
- package/dist/components/ui/pages/errors/PuiForbiddenErrorPage.js +0 -36
- package/dist/components/ui/pages/errors/PuiNetworkErrorPage.js +0 -36
- package/dist/components/ui/pages/errors/PuiNotFoundErrorPage.js +0 -30
- package/dist/components/ui/pages/errors/PuiServerErrorPage.js +0 -37
- package/dist/components/ui/pages/general/PuiDefaultPage.js +0 -68
- package/dist/components/ui/pages/general/PuiSearchPage.js +0 -203
- package/dist/components/widgets/GuideImage.js +0 -251
- package/dist/components/widgets/PuiHelpWidget.js +0 -4276
- package/dist/config/apperance.js +0 -26
- package/dist/config/mapping.js +0 -26
- package/dist/config/referentiel.js +0 -10
- package/dist/general/yupValidationErrors.js +0 -8
- package/dist/hooks/useAlert.js +0 -19
- package/dist/hooks/useAxios.js +0 -23
- package/dist/hooks/useQuery.js +0 -21
- package/dist/hooks/useReclamation.js +0 -116
- package/dist/styles/ReclamationFormModal.css +0 -629
- package/dist/styles/help-widget.css +0 -621
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UserPersonalizationProvider — Portnet UI v2 · personalization
|
|
3
|
+
*
|
|
4
|
+
* The single configuration point for per-user personalization. Mount it
|
|
5
|
+
* once near the app root; every capability (favorites, saved filters, and
|
|
6
|
+
* future slices) reads through the one store it establishes.
|
|
7
|
+
*
|
|
8
|
+
* import {
|
|
9
|
+
* UserPersonalizationProvider,
|
|
10
|
+
* createLocalStorageAdapter,
|
|
11
|
+
* } from "@portnet/ui/v2/personalization";
|
|
12
|
+
*
|
|
13
|
+
* <UserPersonalizationProvider userId={user.id} tenantId={tenant.id}>
|
|
14
|
+
* <App />
|
|
15
|
+
* </UserPersonalizationProvider>
|
|
16
|
+
*
|
|
17
|
+
* Store lifecycle
|
|
18
|
+
* - Exactly one store per scope. Memoised on (scope, adapter) ONLY;
|
|
19
|
+
* onError / hydrateStrategy are pushed in live via store.setRuntime so
|
|
20
|
+
* inline handlers never recreate the store.
|
|
21
|
+
* - The default localStorage adapter is created once (ref). A PROVIDED
|
|
22
|
+
* adapter must be stable (useMemo/module singleton) — a dev guard warns
|
|
23
|
+
* if its identity changes between renders.
|
|
24
|
+
* - A lifecycle effect runs hydrate() + connect() and dispose()s the old
|
|
25
|
+
* store on scope change / unmount (cross-tab listener torn down).
|
|
26
|
+
*
|
|
27
|
+
* React 18/19 compatible: no 19-only API is required.
|
|
28
|
+
*/
|
|
29
|
+
import * as React from "react";
|
|
30
|
+
import type { PersonalizationLabels } from "./personalizationContext";
|
|
31
|
+
import type { PersonalizationErrorHandler } from "./createPersonalizationStore";
|
|
32
|
+
import type { Adapter, HydrateStrategy } from "./types";
|
|
33
|
+
/**
|
|
34
|
+
* Default labels for the whole foundation (FR — charter default). Hosts
|
|
35
|
+
* override any subset via the `labels` prop; EN/AR overrides supported.
|
|
36
|
+
* Front-loaded here so the favorites (Batch 3) and saved-filters (Batch 4)
|
|
37
|
+
* components read consistent copy from one place.
|
|
38
|
+
*/
|
|
39
|
+
export declare const DEFAULT_PERSONALIZATION_LABELS: Readonly<{
|
|
40
|
+
addFavorite: string;
|
|
41
|
+
removeFavorite: string;
|
|
42
|
+
favoritesOnly: string;
|
|
43
|
+
showAll: string;
|
|
44
|
+
favoriteColumnHeader: string;
|
|
45
|
+
savedFilters: string;
|
|
46
|
+
saveCurrentFilter: string;
|
|
47
|
+
filterNameLabel: string;
|
|
48
|
+
filterNamePlaceholder: string;
|
|
49
|
+
saveFilter: string;
|
|
50
|
+
updateFilter: string;
|
|
51
|
+
deleteFilter: string;
|
|
52
|
+
deleteFilterConfirm: string;
|
|
53
|
+
setAsDefault: string;
|
|
54
|
+
defaultBadge: string;
|
|
55
|
+
manageFilters: string;
|
|
56
|
+
noSavedFilters: string;
|
|
57
|
+
cancel: string;
|
|
58
|
+
}>;
|
|
59
|
+
export interface UserPersonalizationProviderProps {
|
|
60
|
+
children?: React.ReactNode | undefined;
|
|
61
|
+
/** Required (in practice) — scopes all persisted preferences to this user. */
|
|
62
|
+
userId?: string | undefined;
|
|
63
|
+
/** Optional multi-tenant partition. */
|
|
64
|
+
tenantId?: string | undefined;
|
|
65
|
+
/** Optional per-app partition. */
|
|
66
|
+
appId?: string | undefined;
|
|
67
|
+
/** Persistence boundary. Defaults to createLocalStorageAdapter(). Must be stable. */
|
|
68
|
+
adapter?: Adapter | undefined;
|
|
69
|
+
/** Per-capability seed overrides, e.g. { favorites: {}, savedFilters: {} }. */
|
|
70
|
+
defaults?: Record<string, unknown> | undefined;
|
|
71
|
+
/** Label overrides (FR default; EN/AR supported). */
|
|
72
|
+
labels?: Partial<PersonalizationLabels> | undefined;
|
|
73
|
+
/** Central persistence-error hook: (error, { scope, capabilityId }) => void. */
|
|
74
|
+
onError?: PersonalizationErrorHandler | undefined;
|
|
75
|
+
/** Reconciliation policy between optimistic local state and adapter truth. @default "remote-wins" */
|
|
76
|
+
hydrateStrategy?: HydrateStrategy | undefined;
|
|
77
|
+
}
|
|
78
|
+
export declare function UserPersonalizationProvider(props: UserPersonalizationProviderProps): React.JSX.Element;
|
|
79
|
+
export default UserPersonalizationProvider;
|
|
80
|
+
//# sourceMappingURL=PersonalizationProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonalizationProvider.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/personalization/PersonalizationProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAS,MAAM,SAAS,CAAC;AAO/D;;;;;GAKG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;EAqBT,CAAC;AAEnC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,CAAC;IACpD,gFAAgF;IAChF,OAAO,CAAC,EAAE,2BAA2B,GAAG,SAAS,CAAC;IAClD,qGAAqG;IACrG,eAAe,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CAC/C;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,gCAAgC,GACtC,KAAK,CAAC,GAAG,CAAC,OAAO,CA6HnB;AAED,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_PERSONALIZATION_LABELS = void 0;
|
|
7
|
+
exports.UserPersonalizationProvider = UserPersonalizationProvider;
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
var _personalizationContext = require("./personalizationContext");
|
|
11
|
+
var _createPersonalizationStore = _interopRequireDefault(require("./createPersonalizationStore"));
|
|
12
|
+
var _createLocalStorageAdapter = _interopRequireDefault(require("./adapters/createLocalStorageAdapter"));
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
17
|
+
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); }
|
|
18
|
+
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; }
|
|
19
|
+
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; }
|
|
20
|
+
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; }
|
|
21
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
22
|
+
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); } /**
|
|
23
|
+
* UserPersonalizationProvider — Portnet UI v2 · personalization
|
|
24
|
+
*
|
|
25
|
+
* The single configuration point for per-user personalization. Mount it
|
|
26
|
+
* once near the app root; every capability (favorites, saved filters, and
|
|
27
|
+
* future slices) reads through the one store it establishes.
|
|
28
|
+
*
|
|
29
|
+
* import {
|
|
30
|
+
* UserPersonalizationProvider,
|
|
31
|
+
* createLocalStorageAdapter,
|
|
32
|
+
* } from "@portnet/ui/v2/personalization";
|
|
33
|
+
*
|
|
34
|
+
* <UserPersonalizationProvider userId={user.id} tenantId={tenant.id}>
|
|
35
|
+
* <App />
|
|
36
|
+
* </UserPersonalizationProvider>
|
|
37
|
+
*
|
|
38
|
+
* Store lifecycle
|
|
39
|
+
* - Exactly one store per scope. Memoised on (scope, adapter) ONLY;
|
|
40
|
+
* onError / hydrateStrategy are pushed in live via store.setRuntime so
|
|
41
|
+
* inline handlers never recreate the store.
|
|
42
|
+
* - The default localStorage adapter is created once (ref). A PROVIDED
|
|
43
|
+
* adapter must be stable (useMemo/module singleton) — a dev guard warns
|
|
44
|
+
* if its identity changes between renders.
|
|
45
|
+
* - A lifecycle effect runs hydrate() + connect() and dispose()s the old
|
|
46
|
+
* store on scope change / unmount (cross-tab listener torn down).
|
|
47
|
+
*
|
|
48
|
+
* React 18/19 compatible: no 19-only API is required.
|
|
49
|
+
*/
|
|
50
|
+
var isDev = typeof process !== "undefined" && process.env && process.env["NODE_ENV"] !== "production";
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Default labels for the whole foundation (FR — charter default). Hosts
|
|
54
|
+
* override any subset via the `labels` prop; EN/AR overrides supported.
|
|
55
|
+
* Front-loaded here so the favorites (Batch 3) and saved-filters (Batch 4)
|
|
56
|
+
* components read consistent copy from one place.
|
|
57
|
+
*/
|
|
58
|
+
var DEFAULT_PERSONALIZATION_LABELS = exports.DEFAULT_PERSONALIZATION_LABELS = Object.freeze({
|
|
59
|
+
// Follow / "suivis" (Batch 3)
|
|
60
|
+
addFavorite: "Suivre",
|
|
61
|
+
removeFavorite: "Ne plus suivre",
|
|
62
|
+
favoritesOnly: "Suivis uniquement",
|
|
63
|
+
showAll: "Tout afficher",
|
|
64
|
+
favoriteColumnHeader: "Suivis",
|
|
65
|
+
// Saved filters (Batch 4)
|
|
66
|
+
savedFilters: "Filtres enregistrés",
|
|
67
|
+
saveCurrentFilter: "Enregistrer le filtre actuel…",
|
|
68
|
+
filterNameLabel: "Nom du filtre",
|
|
69
|
+
filterNamePlaceholder: "ex. Dossiers en attente",
|
|
70
|
+
saveFilter: "Enregistrer",
|
|
71
|
+
updateFilter: "Mettre à jour",
|
|
72
|
+
deleteFilter: "Supprimer",
|
|
73
|
+
deleteFilterConfirm: "Supprimer ce filtre enregistré ?",
|
|
74
|
+
setAsDefault: "Définir par défaut",
|
|
75
|
+
defaultBadge: "Par défaut",
|
|
76
|
+
manageFilters: "Gérer les filtres",
|
|
77
|
+
noSavedFilters: "Aucun filtre enregistré",
|
|
78
|
+
cancel: "Annuler"
|
|
79
|
+
});
|
|
80
|
+
function UserPersonalizationProvider(props) {
|
|
81
|
+
var children = props.children,
|
|
82
|
+
userId = props.userId,
|
|
83
|
+
tenantId = props.tenantId,
|
|
84
|
+
appId = props.appId,
|
|
85
|
+
adapter = props.adapter,
|
|
86
|
+
defaults = props.defaults,
|
|
87
|
+
labels = props.labels,
|
|
88
|
+
onError = props.onError,
|
|
89
|
+
_props$hydrateStrateg = props.hydrateStrategy,
|
|
90
|
+
hydrateStrategy = _props$hydrateStrateg === void 0 ? "remote-wins" : _props$hydrateStrateg;
|
|
91
|
+
if (isDev && !userId && typeof console !== "undefined" && console.warn) {
|
|
92
|
+
// eslint-disable-next-line no-console
|
|
93
|
+
console.warn("[@portnet/ui v2] UserPersonalizationProvider: `userId` is required to scope personalization. " + "Falling back to 'anonymous' — persisted preferences will be shared across unauthenticated sessions.");
|
|
94
|
+
}
|
|
95
|
+
var resolvedUserId = userId || "anonymous";
|
|
96
|
+
var scope = React.useMemo(function buildScope() {
|
|
97
|
+
return _objectSpread(_objectSpread({
|
|
98
|
+
userId: resolvedUserId
|
|
99
|
+
}, tenantId !== undefined ? {
|
|
100
|
+
tenantId: tenantId
|
|
101
|
+
} : {}), appId !== undefined ? {
|
|
102
|
+
appId: appId
|
|
103
|
+
} : {});
|
|
104
|
+
}, [resolvedUserId, tenantId, appId]);
|
|
105
|
+
|
|
106
|
+
// Default adapter created once; a provided adapter is trusted to be stable.
|
|
107
|
+
var defaultAdapterRef = React.useRef(null);
|
|
108
|
+
if (!adapter && !defaultAdapterRef.current) {
|
|
109
|
+
defaultAdapterRef.current = (0, _createLocalStorageAdapter["default"])();
|
|
110
|
+
}
|
|
111
|
+
var resolvedAdapter = adapter || defaultAdapterRef.current;
|
|
112
|
+
|
|
113
|
+
// One store per (scope, adapter). Intentionally NOT keyed on
|
|
114
|
+
// defaults/onError/hydrateStrategy: those are fed live below.
|
|
115
|
+
var store = React.useMemo(function buildStore() {
|
|
116
|
+
return (0, _createPersonalizationStore["default"])(_objectSpread(_objectSpread(_objectSpread({
|
|
117
|
+
scope: scope,
|
|
118
|
+
adapter: resolvedAdapter
|
|
119
|
+
}, defaults !== undefined ? {
|
|
120
|
+
defaults: defaults
|
|
121
|
+
} : {}), onError !== undefined ? {
|
|
122
|
+
onError: onError
|
|
123
|
+
} : {}), {}, {
|
|
124
|
+
hydrateStrategy: hydrateStrategy
|
|
125
|
+
}));
|
|
126
|
+
},
|
|
127
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
128
|
+
[scope, resolvedAdapter]);
|
|
129
|
+
|
|
130
|
+
// Hydrate + cross-tab connect; dispose on store change / unmount.
|
|
131
|
+
React.useEffect(function lifecycle() {
|
|
132
|
+
store.hydrate();
|
|
133
|
+
var off = store.connect();
|
|
134
|
+
return function teardown() {
|
|
135
|
+
if (typeof off === "function") off();
|
|
136
|
+
store.dispose();
|
|
137
|
+
};
|
|
138
|
+
}, [store]);
|
|
139
|
+
|
|
140
|
+
// Push live runtime options without recreating the store.
|
|
141
|
+
React.useEffect(function syncRuntime() {
|
|
142
|
+
store.setRuntime(_objectSpread(_objectSpread({}, onError !== undefined ? {
|
|
143
|
+
onError: onError
|
|
144
|
+
} : {}), {}, {
|
|
145
|
+
hydrateStrategy: hydrateStrategy
|
|
146
|
+
}));
|
|
147
|
+
}, [store, onError, hydrateStrategy]);
|
|
148
|
+
|
|
149
|
+
// Dev guard: a non-memoised adapter prop would recreate the store each
|
|
150
|
+
// render and wipe in-memory state. Warn so it's caught early.
|
|
151
|
+
var prevAdapterRef = React.useRef(resolvedAdapter);
|
|
152
|
+
React.useEffect(function guardAdapterIdentity() {
|
|
153
|
+
if (isDev && prevAdapterRef.current !== resolvedAdapter && typeof console !== "undefined" && console.warn) {
|
|
154
|
+
// eslint-disable-next-line no-console
|
|
155
|
+
console.warn("[@portnet/ui v2] UserPersonalizationProvider: the `adapter` prop changed identity between " + "renders. Memoise it (useMemo or a module singleton) to avoid re-creating the personalization store.");
|
|
156
|
+
}
|
|
157
|
+
prevAdapterRef.current = resolvedAdapter;
|
|
158
|
+
}, [resolvedAdapter]);
|
|
159
|
+
var mergedLabels = React.useMemo(function mergeLabels() {
|
|
160
|
+
return labels ? Object.assign({}, DEFAULT_PERSONALIZATION_LABELS, labels) : DEFAULT_PERSONALIZATION_LABELS;
|
|
161
|
+
}, [labels]);
|
|
162
|
+
var configValue = React.useMemo(function buildConfig() {
|
|
163
|
+
return {
|
|
164
|
+
scope: scope,
|
|
165
|
+
labels: mergedLabels
|
|
166
|
+
};
|
|
167
|
+
}, [scope, mergedLabels]);
|
|
168
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_personalizationContext.PersonalizationConfigContext.Provider, {
|
|
169
|
+
value: configValue,
|
|
170
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_personalizationContext.PersonalizationStoreContext.Provider, {
|
|
171
|
+
value: store,
|
|
172
|
+
children: children
|
|
173
|
+
})
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
var _default = exports["default"] = UserPersonalizationProvider;
|
|
177
|
+
//# sourceMappingURL=PersonalizationProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonalizationProvider.js","names":["React","_interopRequireWildcard","require","_personalizationContext","_createPersonalizationStore","_interopRequireDefault","_createLocalStorageAdapter","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","Symbol","iterator","constructor","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","toPrimitive","undefined","res","TypeError","Number","isDev","process","env","DEFAULT_PERSONALIZATION_LABELS","exports","freeze","addFavorite","removeFavorite","favoritesOnly","showAll","favoriteColumnHeader","savedFilters","saveCurrentFilter","filterNameLabel","filterNamePlaceholder","saveFilter","updateFilter","deleteFilter","deleteFilterConfirm","setAsDefault","defaultBadge","manageFilters","noSavedFilters","cancel","UserPersonalizationProvider","props","children","userId","tenantId","appId","adapter","defaults","labels","onError","_props$hydrateStrateg","hydrateStrategy","console","warn","resolvedUserId","scope","useMemo","buildScope","defaultAdapterRef","useRef","current","createLocalStorageAdapter","resolvedAdapter","store","buildStore","createPersonalizationStore","useEffect","lifecycle","hydrate","off","connect","teardown","dispose","syncRuntime","setRuntime","prevAdapterRef","guardAdapterIdentity","mergedLabels","mergeLabels","assign","configValue","buildConfig","jsx","PersonalizationConfigContext","Provider","PersonalizationStoreContext","_default"],"sources":["../../../src/lib/v2/personalization/PersonalizationProvider.tsx"],"sourcesContent":["/**\r\n * UserPersonalizationProvider — Portnet UI v2 · personalization\r\n *\r\n * The single configuration point for per-user personalization. Mount it\r\n * once near the app root; every capability (favorites, saved filters, and\r\n * future slices) reads through the one store it establishes.\r\n *\r\n * import {\r\n * UserPersonalizationProvider,\r\n * createLocalStorageAdapter,\r\n * } from \"@portnet/ui/v2/personalization\";\r\n *\r\n * <UserPersonalizationProvider userId={user.id} tenantId={tenant.id}>\r\n * <App />\r\n * </UserPersonalizationProvider>\r\n *\r\n * Store lifecycle\r\n * - Exactly one store per scope. Memoised on (scope, adapter) ONLY;\r\n * onError / hydrateStrategy are pushed in live via store.setRuntime so\r\n * inline handlers never recreate the store.\r\n * - The default localStorage adapter is created once (ref). A PROVIDED\r\n * adapter must be stable (useMemo/module singleton) — a dev guard warns\r\n * if its identity changes between renders.\r\n * - A lifecycle effect runs hydrate() + connect() and dispose()s the old\r\n * store on scope change / unmount (cross-tab listener torn down).\r\n *\r\n * React 18/19 compatible: no 19-only API is required.\r\n */\r\n\r\nimport * as React from \"react\";\r\n\r\nimport {\r\n PersonalizationConfigContext,\r\n PersonalizationStoreContext,\r\n} from \"./personalizationContext\";\r\nimport type {\r\n PersonalizationConfig,\r\n PersonalizationLabels,\r\n} from \"./personalizationContext\";\r\nimport createPersonalizationStore from \"./createPersonalizationStore\";\r\nimport type { PersonalizationErrorHandler } from \"./createPersonalizationStore\";\r\nimport createLocalStorageAdapter from \"./adapters/createLocalStorageAdapter\";\r\nimport type { Adapter, HydrateStrategy, Scope } from \"./types\";\r\n\r\nconst isDev =\r\n typeof process !== \"undefined\" &&\r\n process.env &&\r\n process.env[\"NODE_ENV\"] !== \"production\";\r\n\r\n/**\r\n * Default labels for the whole foundation (FR — charter default). Hosts\r\n * override any subset via the `labels` prop; EN/AR overrides supported.\r\n * Front-loaded here so the favorites (Batch 3) and saved-filters (Batch 4)\r\n * components read consistent copy from one place.\r\n */\r\nexport const DEFAULT_PERSONALIZATION_LABELS = Object.freeze({\r\n // Follow / \"suivis\" (Batch 3)\r\n addFavorite: \"Suivre\",\r\n removeFavorite: \"Ne plus suivre\",\r\n favoritesOnly: \"Suivis uniquement\",\r\n showAll: \"Tout afficher\",\r\n favoriteColumnHeader: \"Suivis\",\r\n // Saved filters (Batch 4)\r\n savedFilters: \"Filtres enregistrés\",\r\n saveCurrentFilter: \"Enregistrer le filtre actuel…\",\r\n filterNameLabel: \"Nom du filtre\",\r\n filterNamePlaceholder: \"ex. Dossiers en attente\",\r\n saveFilter: \"Enregistrer\",\r\n updateFilter: \"Mettre à jour\",\r\n deleteFilter: \"Supprimer\",\r\n deleteFilterConfirm: \"Supprimer ce filtre enregistré ?\",\r\n setAsDefault: \"Définir par défaut\",\r\n defaultBadge: \"Par défaut\",\r\n manageFilters: \"Gérer les filtres\",\r\n noSavedFilters: \"Aucun filtre enregistré\",\r\n cancel: \"Annuler\",\r\n} satisfies PersonalizationLabels);\r\n\r\nexport interface UserPersonalizationProviderProps {\r\n children?: React.ReactNode | undefined;\r\n /** Required (in practice) — scopes all persisted preferences to this user. */\r\n userId?: string | undefined;\r\n /** Optional multi-tenant partition. */\r\n tenantId?: string | undefined;\r\n /** Optional per-app partition. */\r\n appId?: string | undefined;\r\n /** Persistence boundary. Defaults to createLocalStorageAdapter(). Must be stable. */\r\n adapter?: Adapter | undefined;\r\n /** Per-capability seed overrides, e.g. { favorites: {}, savedFilters: {} }. */\r\n defaults?: Record<string, unknown> | undefined;\r\n /** Label overrides (FR default; EN/AR supported). */\r\n labels?: Partial<PersonalizationLabels> | undefined;\r\n /** Central persistence-error hook: (error, { scope, capabilityId }) => void. */\r\n onError?: PersonalizationErrorHandler | undefined;\r\n /** Reconciliation policy between optimistic local state and adapter truth. @default \"remote-wins\" */\r\n hydrateStrategy?: HydrateStrategy | undefined;\r\n}\r\n\r\nexport function UserPersonalizationProvider(\r\n props: UserPersonalizationProviderProps\r\n): React.JSX.Element {\r\n const {\r\n children,\r\n userId,\r\n tenantId,\r\n appId,\r\n adapter,\r\n defaults,\r\n labels,\r\n onError,\r\n hydrateStrategy = \"remote-wins\",\r\n } = props;\r\n\r\n if (isDev && !userId && typeof console !== \"undefined\" && console.warn) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] UserPersonalizationProvider: `userId` is required to scope personalization. \" +\r\n \"Falling back to 'anonymous' — persisted preferences will be shared across unauthenticated sessions.\"\r\n );\r\n }\r\n const resolvedUserId = userId || \"anonymous\";\r\n\r\n const scope = React.useMemo<Scope>(\r\n function buildScope() {\r\n return {\r\n userId: resolvedUserId,\r\n ...(tenantId !== undefined ? { tenantId } : {}),\r\n ...(appId !== undefined ? { appId } : {}),\r\n };\r\n },\r\n [resolvedUserId, tenantId, appId]\r\n );\r\n\r\n // Default adapter created once; a provided adapter is trusted to be stable.\r\n const defaultAdapterRef = React.useRef<Adapter | null>(null);\r\n if (!adapter && !defaultAdapterRef.current) {\r\n defaultAdapterRef.current = createLocalStorageAdapter();\r\n }\r\n const resolvedAdapter = adapter || defaultAdapterRef.current;\r\n\r\n // One store per (scope, adapter). Intentionally NOT keyed on\r\n // defaults/onError/hydrateStrategy: those are fed live below.\r\n const store = React.useMemo(\r\n function buildStore() {\r\n return createPersonalizationStore({\r\n scope: scope,\r\n adapter: resolvedAdapter,\r\n ...(defaults !== undefined ? { defaults } : {}),\r\n ...(onError !== undefined ? { onError } : {}),\r\n hydrateStrategy: hydrateStrategy,\r\n });\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [scope, resolvedAdapter]\r\n );\r\n\r\n // Hydrate + cross-tab connect; dispose on store change / unmount.\r\n React.useEffect(\r\n function lifecycle() {\r\n store.hydrate();\r\n const off = store.connect();\r\n return function teardown() {\r\n if (typeof off === \"function\") off();\r\n store.dispose();\r\n };\r\n },\r\n [store]\r\n );\r\n\r\n // Push live runtime options without recreating the store.\r\n React.useEffect(\r\n function syncRuntime() {\r\n store.setRuntime({\r\n ...(onError !== undefined ? { onError } : {}),\r\n hydrateStrategy: hydrateStrategy,\r\n });\r\n },\r\n [store, onError, hydrateStrategy]\r\n );\r\n\r\n // Dev guard: a non-memoised adapter prop would recreate the store each\r\n // render and wipe in-memory state. Warn so it's caught early.\r\n const prevAdapterRef = React.useRef<Adapter | null>(resolvedAdapter);\r\n React.useEffect(\r\n function guardAdapterIdentity() {\r\n if (\r\n isDev &&\r\n prevAdapterRef.current !== resolvedAdapter &&\r\n typeof console !== \"undefined\" &&\r\n console.warn\r\n ) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n \"[@portnet/ui v2] UserPersonalizationProvider: the `adapter` prop changed identity between \" +\r\n \"renders. Memoise it (useMemo or a module singleton) to avoid re-creating the personalization store.\"\r\n );\r\n }\r\n prevAdapterRef.current = resolvedAdapter;\r\n },\r\n [resolvedAdapter]\r\n );\r\n\r\n const mergedLabels = React.useMemo<PersonalizationLabels>(\r\n function mergeLabels() {\r\n return labels\r\n ? Object.assign({}, DEFAULT_PERSONALIZATION_LABELS, labels)\r\n : DEFAULT_PERSONALIZATION_LABELS;\r\n },\r\n [labels]\r\n );\r\n\r\n const configValue = React.useMemo<PersonalizationConfig>(\r\n function buildConfig() {\r\n return { scope: scope, labels: mergedLabels };\r\n },\r\n [scope, mergedLabels]\r\n );\r\n\r\n return (\r\n <PersonalizationConfigContext.Provider value={configValue}>\r\n <PersonalizationStoreContext.Provider value={store}>\r\n {children}\r\n </PersonalizationStoreContext.Provider>\r\n </PersonalizationConfigContext.Provider>\r\n );\r\n}\r\n\r\nexport default UserPersonalizationProvider;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* _storageKey — Portnet UI v2 · personalization adapters (private)
|
|
3
|
+
*
|
|
4
|
+
* Composite key scheme shared by storage adapters:
|
|
5
|
+
*
|
|
6
|
+
* portnet-ui:perso:v1:{tenantId?}:{userId}:{capabilityId}
|
|
7
|
+
*
|
|
8
|
+
* Design notes
|
|
9
|
+
* - `resourceKey` is NOT in the key — it lives inside the capability
|
|
10
|
+
* payload. One storage entry per (scope, capability) → cheap prefix scan
|
|
11
|
+
* on load, one removeItem to clear.
|
|
12
|
+
* - Scope segments (tenantId, userId) are encodeURIComponent-escaped so
|
|
13
|
+
* arbitrary host identifiers — including ones containing ':' — remain
|
|
14
|
+
* unambiguous. `capabilityId` is a controlled slug and is left raw so
|
|
15
|
+
* `buildScopePrefix` + `slice()` recover it directly.
|
|
16
|
+
* - `:v1:` is the KEY-SCHEME version (storage layout), independent of a
|
|
17
|
+
* capability payload's `schemaVersion`.
|
|
18
|
+
*
|
|
19
|
+
* Underscore-prefixed: internal, never re-exported from the public surface.
|
|
20
|
+
*/
|
|
21
|
+
import type { Scope } from "../types";
|
|
22
|
+
export declare const KEY_PREFIX = "portnet-ui:perso";
|
|
23
|
+
/** Full storage key for one (scope, capability). */
|
|
24
|
+
export declare function buildKey(scope: Scope, capabilityId: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Prefix shared by every capability key of a scope — terminated by ':' so the
|
|
27
|
+
* capability segment follows immediately.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildScopePrefix(scope: Scope): string;
|
|
30
|
+
/**
|
|
31
|
+
* Recover the capabilityId from a storage key for a given scope, or null when
|
|
32
|
+
* the key does not belong to this scope.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseCapabilityFromKey(key: string, scope: Scope): string | null;
|
|
35
|
+
//# sourceMappingURL=_storageKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_storageKey.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/adapters/_storageKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,eAAO,MAAM,UAAU,qBAAqB,CAAC;AAM7C,oDAAoD;AACpD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAMrD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,KAAK,GACX,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KEY_PREFIX = void 0;
|
|
7
|
+
exports.buildKey = buildKey;
|
|
8
|
+
exports.buildScopePrefix = buildScopePrefix;
|
|
9
|
+
exports.parseCapabilityFromKey = parseCapabilityFromKey;
|
|
10
|
+
var _schema = require("../schema");
|
|
11
|
+
/**
|
|
12
|
+
* _storageKey — Portnet UI v2 · personalization adapters (private)
|
|
13
|
+
*
|
|
14
|
+
* Composite key scheme shared by storage adapters:
|
|
15
|
+
*
|
|
16
|
+
* portnet-ui:perso:v1:{tenantId?}:{userId}:{capabilityId}
|
|
17
|
+
*
|
|
18
|
+
* Design notes
|
|
19
|
+
* - `resourceKey` is NOT in the key — it lives inside the capability
|
|
20
|
+
* payload. One storage entry per (scope, capability) → cheap prefix scan
|
|
21
|
+
* on load, one removeItem to clear.
|
|
22
|
+
* - Scope segments (tenantId, userId) are encodeURIComponent-escaped so
|
|
23
|
+
* arbitrary host identifiers — including ones containing ':' — remain
|
|
24
|
+
* unambiguous. `capabilityId` is a controlled slug and is left raw so
|
|
25
|
+
* `buildScopePrefix` + `slice()` recover it directly.
|
|
26
|
+
* - `:v1:` is the KEY-SCHEME version (storage layout), independent of a
|
|
27
|
+
* capability payload's `schemaVersion`.
|
|
28
|
+
*
|
|
29
|
+
* Underscore-prefixed: internal, never re-exported from the public surface.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
var KEY_PREFIX = exports.KEY_PREFIX = "portnet-ui:perso";
|
|
33
|
+
function enc(value) {
|
|
34
|
+
return encodeURIComponent(String(value == null ? "" : value));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** Full storage key for one (scope, capability). */
|
|
38
|
+
function buildKey(scope, capabilityId) {
|
|
39
|
+
var parts = [KEY_PREFIX, _schema.KEY_SCHEME_VERSION];
|
|
40
|
+
if (scope && scope.tenantId) parts.push(enc(scope.tenantId));
|
|
41
|
+
parts.push(enc(scope ? scope.userId : ""));
|
|
42
|
+
parts.push(capabilityId);
|
|
43
|
+
return parts.join(":");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Prefix shared by every capability key of a scope — terminated by ':' so the
|
|
48
|
+
* capability segment follows immediately.
|
|
49
|
+
*/
|
|
50
|
+
function buildScopePrefix(scope) {
|
|
51
|
+
var parts = [KEY_PREFIX, _schema.KEY_SCHEME_VERSION];
|
|
52
|
+
if (scope && scope.tenantId) parts.push(enc(scope.tenantId));
|
|
53
|
+
parts.push(enc(scope ? scope.userId : ""));
|
|
54
|
+
parts.push(""); // trailing ':' after join
|
|
55
|
+
return parts.join(":");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Recover the capabilityId from a storage key for a given scope, or null when
|
|
60
|
+
* the key does not belong to this scope.
|
|
61
|
+
*/
|
|
62
|
+
function parseCapabilityFromKey(key, scope) {
|
|
63
|
+
if (typeof key !== "string") return null;
|
|
64
|
+
var prefix = buildScopePrefix(scope);
|
|
65
|
+
if (key.indexOf(prefix) !== 0) return null;
|
|
66
|
+
var capId = key.slice(prefix.length);
|
|
67
|
+
return capId || null;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=_storageKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_storageKey.js","names":["_schema","require","KEY_PREFIX","exports","enc","value","encodeURIComponent","String","buildKey","scope","capabilityId","parts","KEY_SCHEME_VERSION","tenantId","push","userId","join","buildScopePrefix","parseCapabilityFromKey","key","prefix","indexOf","capId","slice","length"],"sources":["../../../../src/lib/v2/personalization/adapters/_storageKey.ts"],"sourcesContent":["/**\r\n * _storageKey — Portnet UI v2 · personalization adapters (private)\r\n *\r\n * Composite key scheme shared by storage adapters:\r\n *\r\n * portnet-ui:perso:v1:{tenantId?}:{userId}:{capabilityId}\r\n *\r\n * Design notes\r\n * - `resourceKey` is NOT in the key — it lives inside the capability\r\n * payload. One storage entry per (scope, capability) → cheap prefix scan\r\n * on load, one removeItem to clear.\r\n * - Scope segments (tenantId, userId) are encodeURIComponent-escaped so\r\n * arbitrary host identifiers — including ones containing ':' — remain\r\n * unambiguous. `capabilityId` is a controlled slug and is left raw so\r\n * `buildScopePrefix` + `slice()` recover it directly.\r\n * - `:v1:` is the KEY-SCHEME version (storage layout), independent of a\r\n * capability payload's `schemaVersion`.\r\n *\r\n * Underscore-prefixed: internal, never re-exported from the public surface.\r\n */\r\n\r\nimport { KEY_SCHEME_VERSION } from \"../schema\";\r\nimport type { Scope } from \"../types\";\r\n\r\nexport const KEY_PREFIX = \"portnet-ui:perso\";\r\n\r\nfunction enc(value: string | undefined): string {\r\n return encodeURIComponent(String(value == null ? \"\" : value));\r\n}\r\n\r\n/** Full storage key for one (scope, capability). */\r\nexport function buildKey(scope: Scope, capabilityId: string): string {\r\n const parts = [KEY_PREFIX, KEY_SCHEME_VERSION];\r\n if (scope && scope.tenantId) parts.push(enc(scope.tenantId));\r\n parts.push(enc(scope ? scope.userId : \"\"));\r\n parts.push(capabilityId);\r\n return parts.join(\":\");\r\n}\r\n\r\n/**\r\n * Prefix shared by every capability key of a scope — terminated by ':' so the\r\n * capability segment follows immediately.\r\n */\r\nexport function buildScopePrefix(scope: Scope): string {\r\n const parts = [KEY_PREFIX, KEY_SCHEME_VERSION];\r\n if (scope && scope.tenantId) parts.push(enc(scope.tenantId));\r\n parts.push(enc(scope ? scope.userId : \"\"));\r\n parts.push(\"\"); // trailing ':' after join\r\n return parts.join(\":\");\r\n}\r\n\r\n/**\r\n * Recover the capabilityId from a storage key for a given scope, or null when\r\n * the key does not belong to this scope.\r\n */\r\nexport function parseCapabilityFromKey(\r\n key: string,\r\n scope: Scope\r\n): string | null {\r\n if (typeof key !== \"string\") return null;\r\n const prefix = buildScopePrefix(scope);\r\n if (key.indexOf(prefix) !== 0) return null;\r\n const capId = key.slice(prefix.length);\r\n return capId || null;\r\n}\r\n"],"mappings":";;;;;;;;;AAqBA,IAAAA,OAAA,GAAAC,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKO,IAAMC,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG,kBAAkB;AAE5C,SAASE,GAAGA,CAACC,KAAyB,EAAU;EAC9C,OAAOC,kBAAkB,CAACC,MAAM,CAACF,KAAK,IAAI,IAAI,GAAG,EAAE,GAAGA,KAAK,CAAC,CAAC;AAC/D;;AAEA;AACO,SAASG,QAAQA,CAACC,KAAY,EAAEC,YAAoB,EAAU;EACnE,IAAMC,KAAK,GAAG,CAACT,UAAU,EAAEU,0BAAkB,CAAC;EAC9C,IAAIH,KAAK,IAAIA,KAAK,CAACI,QAAQ,EAAEF,KAAK,CAACG,IAAI,CAACV,GAAG,CAACK,KAAK,CAACI,QAAQ,CAAC,CAAC;EAC5DF,KAAK,CAACG,IAAI,CAACV,GAAG,CAACK,KAAK,GAAGA,KAAK,CAACM,MAAM,GAAG,EAAE,CAAC,CAAC;EAC1CJ,KAAK,CAACG,IAAI,CAACJ,YAAY,CAAC;EACxB,OAAOC,KAAK,CAACK,IAAI,CAAC,GAAG,CAAC;AACxB;;AAEA;AACA;AACA;AACA;AACO,SAASC,gBAAgBA,CAACR,KAAY,EAAU;EACrD,IAAME,KAAK,GAAG,CAACT,UAAU,EAAEU,0BAAkB,CAAC;EAC9C,IAAIH,KAAK,IAAIA,KAAK,CAACI,QAAQ,EAAEF,KAAK,CAACG,IAAI,CAACV,GAAG,CAACK,KAAK,CAACI,QAAQ,CAAC,CAAC;EAC5DF,KAAK,CAACG,IAAI,CAACV,GAAG,CAACK,KAAK,GAAGA,KAAK,CAACM,MAAM,GAAG,EAAE,CAAC,CAAC;EAC1CJ,KAAK,CAACG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;EAChB,OAAOH,KAAK,CAACK,IAAI,CAAC,GAAG,CAAC;AACxB;;AAEA;AACA;AACA;AACA;AACO,SAASE,sBAAsBA,CACpCC,GAAW,EACXV,KAAY,EACG;EACf,IAAI,OAAOU,GAAG,KAAK,QAAQ,EAAE,OAAO,IAAI;EACxC,IAAMC,MAAM,GAAGH,gBAAgB,CAACR,KAAK,CAAC;EACtC,IAAIU,GAAG,CAACE,OAAO,CAACD,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI;EAC1C,IAAME,KAAK,GAAGH,GAAG,CAACI,KAAK,CAACH,MAAM,CAACI,MAAM,CAAC;EACtC,OAAOF,KAAK,IAAI,IAAI;AACtB","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createLocalStorageAdapter — Portnet UI v2 · personalization
|
|
3
|
+
*
|
|
4
|
+
* Default Adapter. Persists each capability as an opaque envelope under a
|
|
5
|
+
* scoped key (see adapters/_storageKey.ts). The adapter never interprets
|
|
6
|
+
* `envelope.payload`.
|
|
7
|
+
*
|
|
8
|
+
* Safety:
|
|
9
|
+
* - SSR-safe: with no `window`, the adapter is inert (load → {}, save →
|
|
10
|
+
* resolved no-op) so it can be constructed anywhere.
|
|
11
|
+
* - Every storage access is try/catch-wrapped. `save` REJECTS on quota/
|
|
12
|
+
* private-mode failure so the store can keep the optimistic value for the
|
|
13
|
+
* session and surface the error via onError.
|
|
14
|
+
* - Reads self-heal: malformed entries are removed on sight.
|
|
15
|
+
* - Reserved-key hardening: capability ids of `__proto__` / `constructor` /
|
|
16
|
+
* `prototype` are skipped while scanning so a crafted same-origin key can't
|
|
17
|
+
* reach the `__proto__` setter on the accumulator (SEC-LS1).
|
|
18
|
+
* - NOTE: localStorage is readable by any same-origin script. Do NOT persist
|
|
19
|
+
* secrets or PII in a capability payload (SEC-LS2).
|
|
20
|
+
*
|
|
21
|
+
* Cross-tab: `subscribe` listens to the `storage` event, which the spec fires
|
|
22
|
+
* in OTHER tabs only — the writing tab is reconciled via the store's in-memory
|
|
23
|
+
* path.
|
|
24
|
+
*/
|
|
25
|
+
import type { Adapter } from "../types";
|
|
26
|
+
export interface LocalStorageAdapterOptions {
|
|
27
|
+
/** Inject a Storage impl (tests / custom). */
|
|
28
|
+
storage?: Storage | undefined;
|
|
29
|
+
}
|
|
30
|
+
export default function createLocalStorageAdapter(options?: LocalStorageAdapterOptions): Adapter;
|
|
31
|
+
//# sourceMappingURL=createLocalStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLocalStorageAdapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/v2/personalization/adapters/createLocalStorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,UAAU,CAAC;AAEzD,MAAM,WAAW,0BAA0B;IACzC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC/B;AAKD,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,OAAO,CAAC,EAAE,0BAA0B,GACnC,OAAO,CAuHT"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = createLocalStorageAdapter;
|
|
7
|
+
var _storageKey = require("./_storageKey");
|
|
8
|
+
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); } /**
|
|
9
|
+
* createLocalStorageAdapter — Portnet UI v2 · personalization
|
|
10
|
+
*
|
|
11
|
+
* Default Adapter. Persists each capability as an opaque envelope under a
|
|
12
|
+
* scoped key (see adapters/_storageKey.ts). The adapter never interprets
|
|
13
|
+
* `envelope.payload`.
|
|
14
|
+
*
|
|
15
|
+
* Safety:
|
|
16
|
+
* - SSR-safe: with no `window`, the adapter is inert (load → {}, save →
|
|
17
|
+
* resolved no-op) so it can be constructed anywhere.
|
|
18
|
+
* - Every storage access is try/catch-wrapped. `save` REJECTS on quota/
|
|
19
|
+
* private-mode failure so the store can keep the optimistic value for the
|
|
20
|
+
* session and surface the error via onError.
|
|
21
|
+
* - Reads self-heal: malformed entries are removed on sight.
|
|
22
|
+
* - Reserved-key hardening: capability ids of `__proto__` / `constructor` /
|
|
23
|
+
* `prototype` are skipped while scanning so a crafted same-origin key can't
|
|
24
|
+
* reach the `__proto__` setter on the accumulator (SEC-LS1).
|
|
25
|
+
* - NOTE: localStorage is readable by any same-origin script. Do NOT persist
|
|
26
|
+
* secrets or PII in a capability payload (SEC-LS2).
|
|
27
|
+
*
|
|
28
|
+
* Cross-tab: `subscribe` listens to the `storage` event, which the spec fires
|
|
29
|
+
* in OTHER tabs only — the writing tab is reconciled via the store's in-memory
|
|
30
|
+
* path.
|
|
31
|
+
*/
|
|
32
|
+
/** Object keys that must never be written from external (storage-derived) data. */
|
|
33
|
+
var RESERVED_KEYS = new Set(["__proto__", "constructor", "prototype"]);
|
|
34
|
+
function createLocalStorageAdapter(options) {
|
|
35
|
+
var opts = options || {};
|
|
36
|
+
var storage = opts.storage || (typeof window !== "undefined" && window.localStorage ? window.localStorage : null);
|
|
37
|
+
function isValidEnvelope(env) {
|
|
38
|
+
return !!env && _typeof(env) === "object" && Object.prototype.hasOwnProperty.call(env, "payload");
|
|
39
|
+
}
|
|
40
|
+
function safeRemove(key) {
|
|
41
|
+
if (!storage) return;
|
|
42
|
+
try {
|
|
43
|
+
storage.removeItem(key);
|
|
44
|
+
} catch (_unused) {
|
|
45
|
+
/* ignore */
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Synchronous scan of every capability blob for `scope`. */
|
|
50
|
+
function loadSync(scope) {
|
|
51
|
+
if (!storage) return {};
|
|
52
|
+
var out = {};
|
|
53
|
+
try {
|
|
54
|
+
var prefix = (0, _storageKey.buildScopePrefix)(scope);
|
|
55
|
+
for (var i = 0; i < storage.length; i++) {
|
|
56
|
+
var key = storage.key(i);
|
|
57
|
+
if (!key || key.indexOf(prefix) !== 0) continue;
|
|
58
|
+
var capId = key.slice(prefix.length);
|
|
59
|
+
// Skip empty + reserved keys: a same-origin writer could craft a
|
|
60
|
+
// `<prefix>__proto__` key, and `out[capId] = env` would otherwise hit
|
|
61
|
+
// the __proto__ setter on the accumulator (SEC-LS1).
|
|
62
|
+
if (!capId || RESERVED_KEYS.has(capId)) continue;
|
|
63
|
+
var raw = storage.getItem(key);
|
|
64
|
+
if (!raw) continue;
|
|
65
|
+
try {
|
|
66
|
+
var env = JSON.parse(raw);
|
|
67
|
+
if (isValidEnvelope(env)) out[capId] = env;else safeRemove(key);
|
|
68
|
+
} catch (_unused2) {
|
|
69
|
+
safeRemove(key);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
} catch (_unused3) {
|
|
73
|
+
/* enumeration blocked (sandboxed) — return what we have */
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
function load(scope) {
|
|
78
|
+
return Promise.resolve(loadSync(scope));
|
|
79
|
+
}
|
|
80
|
+
function save(scope, capabilityId, envelope) {
|
|
81
|
+
if (!storage) return Promise.resolve();
|
|
82
|
+
try {
|
|
83
|
+
storage.setItem((0, _storageKey.buildKey)(scope, capabilityId), JSON.stringify(envelope));
|
|
84
|
+
return Promise.resolve();
|
|
85
|
+
} catch (e) {
|
|
86
|
+
// Quota exceeded / private mode / sandboxed: reject so the store keeps
|
|
87
|
+
// the optimistic in-memory value and notifies onError.
|
|
88
|
+
return Promise.reject(e);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function remove(scope, capabilityId) {
|
|
92
|
+
if (!storage) return Promise.resolve();
|
|
93
|
+
safeRemove((0, _storageKey.buildKey)(scope, capabilityId));
|
|
94
|
+
return Promise.resolve();
|
|
95
|
+
}
|
|
96
|
+
function subscribe(scope, onChange) {
|
|
97
|
+
if (typeof window === "undefined" || typeof window.addEventListener !== "function") {
|
|
98
|
+
return function noop() {};
|
|
99
|
+
}
|
|
100
|
+
var prefix = (0, _storageKey.buildScopePrefix)(scope);
|
|
101
|
+
var handler = function handleStorage(e) {
|
|
102
|
+
if (!e || e.key == null) return; // e.key === null on storage.clear()
|
|
103
|
+
// storageArea may be undefined in some environments; only filter when present.
|
|
104
|
+
if (e.storageArea && e.storageArea !== storage) return;
|
|
105
|
+
if (e.key.indexOf(prefix) !== 0) return;
|
|
106
|
+
var capId = e.key.slice(prefix.length);
|
|
107
|
+
if (capId && !RESERVED_KEYS.has(capId)) onChange(capId);
|
|
108
|
+
};
|
|
109
|
+
window.addEventListener("storage", handler);
|
|
110
|
+
return function unsubscribe() {
|
|
111
|
+
window.removeEventListener("storage", handler);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
return Object.freeze({
|
|
115
|
+
name: "localStorage",
|
|
116
|
+
load: load,
|
|
117
|
+
loadSync: loadSync,
|
|
118
|
+
save: save,
|
|
119
|
+
remove: remove,
|
|
120
|
+
subscribe: subscribe,
|
|
121
|
+
capabilities: Object.freeze({
|
|
122
|
+
crossTab: true,
|
|
123
|
+
remote: false,
|
|
124
|
+
shared: false
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=createLocalStorageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createLocalStorageAdapter.js","names":["_storageKey","require","_typeof","obj","Symbol","iterator","constructor","prototype","RESERVED_KEYS","Set","createLocalStorageAdapter","options","opts","storage","window","localStorage","isValidEnvelope","env","Object","hasOwnProperty","call","safeRemove","key","removeItem","_unused","loadSync","scope","out","prefix","buildScopePrefix","i","length","indexOf","capId","slice","has","raw","getItem","JSON","parse","_unused2","_unused3","load","Promise","resolve","save","capabilityId","envelope","setItem","buildKey","stringify","e","reject","remove","subscribe","onChange","addEventListener","noop","handler","handleStorage","storageArea","unsubscribe","removeEventListener","freeze","name","capabilities","crossTab","remote","shared"],"sources":["../../../../src/lib/v2/personalization/adapters/createLocalStorageAdapter.ts"],"sourcesContent":["/**\r\n * createLocalStorageAdapter — Portnet UI v2 · personalization\r\n *\r\n * Default Adapter. Persists each capability as an opaque envelope under a\r\n * scoped key (see adapters/_storageKey.ts). The adapter never interprets\r\n * `envelope.payload`.\r\n *\r\n * Safety:\r\n * - SSR-safe: with no `window`, the adapter is inert (load → {}, save →\r\n * resolved no-op) so it can be constructed anywhere.\r\n * - Every storage access is try/catch-wrapped. `save` REJECTS on quota/\r\n * private-mode failure so the store can keep the optimistic value for the\r\n * session and surface the error via onError.\r\n * - Reads self-heal: malformed entries are removed on sight.\r\n * - Reserved-key hardening: capability ids of `__proto__` / `constructor` /\r\n * `prototype` are skipped while scanning so a crafted same-origin key can't\r\n * reach the `__proto__` setter on the accumulator (SEC-LS1).\r\n * - NOTE: localStorage is readable by any same-origin script. Do NOT persist\r\n * secrets or PII in a capability payload (SEC-LS2).\r\n *\r\n * Cross-tab: `subscribe` listens to the `storage` event, which the spec fires\r\n * in OTHER tabs only — the writing tab is reconciled via the store's in-memory\r\n * path.\r\n */\r\n\r\nimport { buildKey, buildScopePrefix } from \"./_storageKey\";\r\nimport type { Adapter, Envelope, Scope } from \"../types\";\r\n\r\nexport interface LocalStorageAdapterOptions {\r\n /** Inject a Storage impl (tests / custom). */\r\n storage?: Storage | undefined;\r\n}\r\n\r\n/** Object keys that must never be written from external (storage-derived) data. */\r\nconst RESERVED_KEYS = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\r\n\r\nexport default function createLocalStorageAdapter(\r\n options?: LocalStorageAdapterOptions\r\n): Adapter {\r\n const opts: LocalStorageAdapterOptions = options || {};\r\n const storage: Storage | null =\r\n opts.storage ||\r\n (typeof window !== \"undefined\" && window.localStorage\r\n ? window.localStorage\r\n : null);\r\n\r\n function isValidEnvelope(env: unknown): env is Envelope {\r\n return (\r\n !!env &&\r\n typeof env === \"object\" &&\r\n Object.prototype.hasOwnProperty.call(env, \"payload\")\r\n );\r\n }\r\n\r\n function safeRemove(key: string): void {\r\n if (!storage) return;\r\n try {\r\n storage.removeItem(key);\r\n } catch {\r\n /* ignore */\r\n }\r\n }\r\n\r\n /** Synchronous scan of every capability blob for `scope`. */\r\n function loadSync(scope: Scope): Record<string, Envelope> {\r\n if (!storage) return {};\r\n const out: Record<string, Envelope> = {};\r\n try {\r\n const prefix = buildScopePrefix(scope);\r\n for (let i = 0; i < storage.length; i++) {\r\n const key = storage.key(i);\r\n if (!key || key.indexOf(prefix) !== 0) continue;\r\n const capId = key.slice(prefix.length);\r\n // Skip empty + reserved keys: a same-origin writer could craft a\r\n // `<prefix>__proto__` key, and `out[capId] = env` would otherwise hit\r\n // the __proto__ setter on the accumulator (SEC-LS1).\r\n if (!capId || RESERVED_KEYS.has(capId)) continue;\r\n const raw = storage.getItem(key);\r\n if (!raw) continue;\r\n try {\r\n const env: unknown = JSON.parse(raw);\r\n if (isValidEnvelope(env)) out[capId] = env;\r\n else safeRemove(key);\r\n } catch {\r\n safeRemove(key);\r\n }\r\n }\r\n } catch {\r\n /* enumeration blocked (sandboxed) — return what we have */\r\n }\r\n return out;\r\n }\r\n\r\n function load(scope: Scope): Promise<Record<string, Envelope>> {\r\n return Promise.resolve(loadSync(scope));\r\n }\r\n\r\n function save(\r\n scope: Scope,\r\n capabilityId: string,\r\n envelope: Envelope\r\n ): Promise<void> {\r\n if (!storage) return Promise.resolve();\r\n try {\r\n storage.setItem(buildKey(scope, capabilityId), JSON.stringify(envelope));\r\n return Promise.resolve();\r\n } catch (e) {\r\n // Quota exceeded / private mode / sandboxed: reject so the store keeps\r\n // the optimistic in-memory value and notifies onError.\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n function remove(scope: Scope, capabilityId: string): Promise<void> {\r\n if (!storage) return Promise.resolve();\r\n safeRemove(buildKey(scope, capabilityId));\r\n return Promise.resolve();\r\n }\r\n\r\n function subscribe(\r\n scope: Scope,\r\n onChange: (capabilityId: string) => void\r\n ): () => void {\r\n if (\r\n typeof window === \"undefined\" ||\r\n typeof window.addEventListener !== \"function\"\r\n ) {\r\n return function noop() {};\r\n }\r\n const prefix = buildScopePrefix(scope);\r\n const handler = function handleStorage(e: StorageEvent) {\r\n if (!e || e.key == null) return; // e.key === null on storage.clear()\r\n // storageArea may be undefined in some environments; only filter when present.\r\n if (e.storageArea && e.storageArea !== storage) return;\r\n if (e.key.indexOf(prefix) !== 0) return;\r\n const capId = e.key.slice(prefix.length);\r\n if (capId && !RESERVED_KEYS.has(capId)) onChange(capId);\r\n };\r\n window.addEventListener(\"storage\", handler);\r\n return function unsubscribe() {\r\n window.removeEventListener(\"storage\", handler);\r\n };\r\n }\r\n\r\n return Object.freeze({\r\n name: \"localStorage\",\r\n load,\r\n loadSync,\r\n save,\r\n remove,\r\n subscribe,\r\n capabilities: Object.freeze({\r\n crossTab: true,\r\n remote: false,\r\n shared: false,\r\n }),\r\n });\r\n}\r\n"],"mappings":"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","ignoreList":[]}
|