@portnet/ui 6.0.0 → 6.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +85 -0
- package/dist/esm/index.js +214 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldError.test.js +159 -0
- package/dist/esm/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js +146 -0
- package/dist/esm/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FileCard.test.js +143 -0
- package/dist/esm/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js +265 -0
- package/dist/esm/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js +248 -0
- package/dist/esm/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js +380 -0
- package/dist/esm/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js +332 -0
- package/dist/esm/v2/__tests__/MobileRowCard.test.js.map +1 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js +235 -0
- package/dist/esm/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/esm/v2/__tests__/apiError.test.js +181 -0
- package/dist/esm/v2/__tests__/apiError.test.js.map +1 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js +270 -0
- package/dist/esm/v2/__tests__/banned-patterns.test.js.map +1 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js +224 -0
- package/dist/esm/v2/__tests__/contrast-palette.test.js.map +1 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js +157 -0
- package/dist/esm/v2/__tests__/cssVariables.test.js.map +1 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js +146 -0
- package/dist/esm/v2/__tests__/labels-merge.test.js.map +1 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js +109 -0
- package/dist/esm/v2/__tests__/locale-fallback.test.js.map +1 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js +514 -0
- package/dist/esm/v2/__tests__/useFocusTrap.test.js.map +1 -0
- package/dist/esm/v2/components/Accordion.js +230 -0
- package/dist/esm/v2/components/Accordion.js.map +1 -0
- package/dist/esm/v2/components/ActionStrip.js +146 -0
- package/dist/esm/v2/components/ActionStrip.js.map +1 -0
- package/dist/esm/v2/components/Banner.js +254 -0
- package/dist/esm/v2/components/Banner.js.map +1 -0
- package/dist/esm/v2/components/Busy.js +97 -0
- package/dist/esm/v2/components/Busy.js.map +1 -0
- package/dist/esm/v2/components/Button.js +114 -0
- package/dist/esm/v2/components/Button.js.map +1 -0
- package/dist/esm/v2/components/CategoryTag.js +81 -0
- package/dist/esm/v2/components/CategoryTag.js.map +1 -0
- package/dist/esm/v2/components/Checkbox.js +124 -0
- package/dist/esm/v2/components/Checkbox.js.map +1 -0
- package/dist/esm/v2/components/Chip.js +124 -0
- package/dist/esm/v2/components/Chip.js.map +1 -0
- package/dist/esm/v2/components/Combobox.js +394 -0
- package/dist/esm/v2/components/Combobox.js.map +1 -0
- package/dist/esm/v2/components/CommandPalette.js +660 -0
- package/dist/esm/v2/components/CommandPalette.js.map +1 -0
- package/dist/esm/v2/components/ConfirmDialog.js +144 -0
- package/dist/esm/v2/components/ConfirmDialog.js.map +1 -0
- package/dist/esm/v2/components/DatePicker.js +200 -0
- package/dist/esm/v2/components/DatePicker.js.map +1 -0
- package/dist/esm/v2/components/DateRangePicker.js +289 -0
- package/dist/esm/v2/components/DateRangePicker.js.map +1 -0
- package/dist/esm/v2/components/DateTimePicker.js +215 -0
- package/dist/esm/v2/components/DateTimePicker.js.map +1 -0
- package/dist/esm/v2/components/Drawer.js +333 -0
- package/dist/esm/v2/components/Drawer.js.map +1 -0
- package/dist/esm/v2/components/Dropzone.js +540 -0
- package/dist/esm/v2/components/Dropzone.js.map +1 -0
- package/dist/esm/v2/components/EmptyState.js +102 -0
- package/dist/esm/v2/components/EmptyState.js.map +1 -0
- package/dist/esm/v2/components/FavoriteToggle.js +127 -0
- package/dist/esm/v2/components/FavoriteToggle.js.map +1 -0
- package/dist/esm/v2/components/Field.js +259 -0
- package/dist/esm/v2/components/Field.js.map +1 -0
- package/dist/esm/v2/components/FieldError.js +124 -0
- package/dist/esm/v2/components/FieldError.js.map +1 -0
- package/dist/esm/v2/components/FieldHelp.js +202 -0
- package/dist/esm/v2/components/FieldHelp.js.map +1 -0
- package/dist/esm/v2/components/FileCard.js +162 -0
- package/dist/esm/v2/components/FileCard.js.map +1 -0
- package/dist/esm/v2/components/FilterTab.js +138 -0
- package/dist/esm/v2/components/FilterTab.js.map +1 -0
- package/dist/esm/v2/components/ForbiddenPage.js +74 -0
- package/dist/esm/v2/components/ForbiddenPage.js.map +1 -0
- package/dist/esm/v2/components/FormGrid.js +179 -0
- package/dist/esm/v2/components/FormGrid.js.map +1 -0
- package/dist/esm/v2/components/FormikDisplay.js +118 -0
- package/dist/esm/v2/components/FormikDisplay.js.map +1 -0
- package/dist/esm/v2/components/Input.js +107 -0
- package/dist/esm/v2/components/Input.js.map +1 -0
- package/dist/esm/v2/components/KPICard.js +237 -0
- package/dist/esm/v2/components/KPICard.js.map +1 -0
- package/dist/esm/v2/components/KPIStrip.js +84 -0
- package/dist/esm/v2/components/KPIStrip.js.map +1 -0
- package/dist/esm/v2/components/KV.js +75 -0
- package/dist/esm/v2/components/KV.js.map +1 -0
- package/dist/esm/v2/components/KVGrid.js +74 -0
- package/dist/esm/v2/components/KVGrid.js.map +1 -0
- package/dist/esm/v2/components/Layout.js +284 -0
- package/dist/esm/v2/components/Layout.js.map +1 -0
- package/dist/esm/v2/components/MobileRowCard.js +314 -0
- package/dist/esm/v2/components/MobileRowCard.js.map +1 -0
- package/dist/esm/v2/components/Modal.js +276 -0
- package/dist/esm/v2/components/Modal.js.map +1 -0
- package/dist/esm/v2/components/NetworkErrorPage.js +78 -0
- package/dist/esm/v2/components/NetworkErrorPage.js.map +1 -0
- package/dist/esm/v2/components/NotFoundPage.js +58 -0
- package/dist/esm/v2/components/NotFoundPage.js.map +1 -0
- package/dist/esm/v2/components/NumberInput.js +309 -0
- package/dist/esm/v2/components/NumberInput.js.map +1 -0
- package/dist/esm/v2/components/OverflowMenu.js +184 -0
- package/dist/esm/v2/components/OverflowMenu.js.map +1 -0
- package/dist/esm/v2/components/PdfViewer.js +122 -0
- package/dist/esm/v2/components/PdfViewer.js.map +1 -0
- package/dist/esm/v2/components/ProgressBar.js +202 -0
- package/dist/esm/v2/components/ProgressBar.js.map +1 -0
- package/dist/esm/v2/components/Radio.js +228 -0
- package/dist/esm/v2/components/Radio.js.map +1 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js +214 -0
- package/dist/esm/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/esm/v2/components/SectionHeader.js +132 -0
- package/dist/esm/v2/components/SectionHeader.js.map +1 -0
- package/dist/esm/v2/components/Segmented.js +254 -0
- package/dist/esm/v2/components/Segmented.js.map +1 -0
- package/dist/esm/v2/components/Select.js +490 -0
- package/dist/esm/v2/components/Select.js.map +1 -0
- package/dist/esm/v2/components/ServerErrorPage.js +74 -0
- package/dist/esm/v2/components/ServerErrorPage.js.map +1 -0
- package/dist/esm/v2/components/Skeleton.js +269 -0
- package/dist/esm/v2/components/Skeleton.js.map +1 -0
- package/dist/esm/v2/components/SkipLink.js +49 -0
- package/dist/esm/v2/components/SkipLink.js.map +1 -0
- package/dist/esm/v2/components/Spinner.js +69 -0
- package/dist/esm/v2/components/Spinner.js.map +1 -0
- package/dist/esm/v2/components/Status.js +64 -0
- package/dist/esm/v2/components/Status.js.map +1 -0
- package/dist/esm/v2/components/Stepper.js +432 -0
- package/dist/esm/v2/components/Stepper.js.map +1 -0
- package/dist/esm/v2/components/Surface.js +159 -0
- package/dist/esm/v2/components/Surface.js.map +1 -0
- package/dist/esm/v2/components/Switch.js +128 -0
- package/dist/esm/v2/components/Switch.js.map +1 -0
- package/dist/esm/v2/components/Tabs.js +150 -0
- package/dist/esm/v2/components/Tabs.js.map +1 -0
- package/dist/esm/v2/components/TelInput.js +274 -0
- package/dist/esm/v2/components/TelInput.js.map +1 -0
- package/dist/esm/v2/components/Textarea.js +72 -0
- package/dist/esm/v2/components/Textarea.js.map +1 -0
- package/dist/esm/v2/components/TimePicker.js +134 -0
- package/dist/esm/v2/components/TimePicker.js.map +1 -0
- package/dist/esm/v2/components/Toast.js +376 -0
- package/dist/esm/v2/components/Toast.js.map +1 -0
- package/dist/esm/v2/components/Tooltip.js +161 -0
- package/dist/esm/v2/components/Tooltip.js.map +1 -0
- package/dist/esm/v2/components/_ErrorPageBody.js +85 -0
- package/dist/esm/v2/components/_ErrorPageBody.js.map +1 -0
- package/dist/esm/v2/components/_pickerShared.js +60 -0
- package/dist/esm/v2/components/_pickerShared.js.map +1 -0
- package/dist/esm/v2/components/index.js +271 -0
- package/dist/esm/v2/components/index.js.map +1 -0
- package/dist/esm/v2/hooks/index.js +10 -0
- package/dist/esm/v2/hooks/index.js.map +1 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js +55 -0
- package/dist/esm/v2/hooks/useDelayedFlag.js.map +1 -0
- package/dist/esm/v2/hooks/useDensity.js +119 -0
- package/dist/esm/v2/hooks/useDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js +197 -0
- package/dist/esm/v2/hooks/useFocusFirstError.js.map +1 -0
- package/dist/esm/v2/hooks/useFocusTrap.js +202 -0
- package/dist/esm/v2/hooks/useFocusTrap.js.map +1 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js +181 -0
- package/dist/esm/v2/hooks/useFormAutoSave.js.map +1 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js +131 -0
- package/dist/esm/v2/hooks/useFormCompletionProgress.js.map +1 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js +44 -0
- package/dist/esm/v2/hooks/useResolvedDensity.js.map +1 -0
- package/dist/esm/v2/hooks/useSortedRows.js +32 -0
- package/dist/esm/v2/hooks/useSortedRows.js.map +1 -0
- package/dist/esm/v2/hooks/useTabLoading.js +79 -0
- package/dist/esm/v2/hooks/useTabLoading.js.map +1 -0
- package/dist/esm/v2/index.js +132 -0
- package/dist/esm/v2/index.js.map +1 -0
- package/dist/esm/v2/modalContext.js +108 -0
- package/dist/esm/v2/modalContext.js.map +1 -0
- package/dist/esm/v2/models/favorite.js +2 -0
- package/dist/esm/v2/models/favorite.js.map +1 -0
- package/dist/esm/v2/models/index.js +12 -0
- package/dist/esm/v2/models/index.js.map +1 -0
- package/dist/esm/v2/models/personalization.js +2 -0
- package/dist/esm/v2/models/personalization.js.map +1 -0
- package/dist/esm/v2/models/referentiel.js +2 -0
- package/dist/esm/v2/models/referentiel.js.map +1 -0
- package/dist/esm/v2/models/savedFilter.js +2 -0
- package/dist/esm/v2/models/savedFilter.js.map +1 -0
- package/dist/esm/v2/patterns/ActionBar.js +603 -0
- package/dist/esm/v2/patterns/ActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/BulkActionBar.js +147 -0
- package/dist/esm/v2/patterns/BulkActionBar.js.map +1 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js +303 -0
- package/dist/esm/v2/patterns/CollapsibleDataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js +301 -0
- package/dist/esm/v2/patterns/ColumnsToggle.js.map +1 -0
- package/dist/esm/v2/patterns/DataGrid.js +820 -0
- package/dist/esm/v2/patterns/DataGrid.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js +375 -0
- package/dist/esm/v2/patterns/DataGridSettingsMenu.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js +249 -0
- package/dist/esm/v2/patterns/DataGridToolbar.js.map +1 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js +523 -0
- package/dist/esm/v2/patterns/DataGridVirtualized.js.map +1 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js +70 -0
- package/dist/esm/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js +117 -0
- package/dist/esm/v2/patterns/FavoriteColumn.js.map +1 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js +91 -0
- package/dist/esm/v2/patterns/FavoritesFilter.js.map +1 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js +101 -0
- package/dist/esm/v2/patterns/FormErrorSummary.js.map +1 -0
- package/dist/esm/v2/patterns/FormPageShell.js +126 -0
- package/dist/esm/v2/patterns/FormPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/FormSection.js +190 -0
- package/dist/esm/v2/patterns/FormSection.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js +140 -0
- package/dist/esm/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js +110 -0
- package/dist/esm/v2/patterns/FormikCheckboxGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikCombobox.js +118 -0
- package/dist/esm/v2/patterns/FormikCombobox.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js +162 -0
- package/dist/esm/v2/patterns/FormikDatePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js +150 -0
- package/dist/esm/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js +77 -0
- package/dist/esm/v2/patterns/FormikErrorFocus.js.map +1 -0
- package/dist/esm/v2/patterns/FormikFile.js +148 -0
- package/dist/esm/v2/patterns/FormikFile.js.map +1 -0
- package/dist/esm/v2/patterns/FormikInput.js +130 -0
- package/dist/esm/v2/patterns/FormikInput.js.map +1 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js +141 -0
- package/dist/esm/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js +116 -0
- package/dist/esm/v2/patterns/FormikReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/FormikSelect.js +162 -0
- package/dist/esm/v2/patterns/FormikSelect.js.map +1 -0
- package/dist/esm/v2/patterns/FormikTextarea.js +79 -0
- package/dist/esm/v2/patterns/FormikTextarea.js.map +1 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js +212 -0
- package/dist/esm/v2/patterns/KeyboardShortcutsHelp.js.map +1 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js +72 -0
- package/dist/esm/v2/patterns/NetworkErrorBanner.js.map +1 -0
- package/dist/esm/v2/patterns/PageContent.js +62 -0
- package/dist/esm/v2/patterns/PageContent.js.map +1 -0
- package/dist/esm/v2/patterns/ReferentielField.js +615 -0
- package/dist/esm/v2/patterns/ReferentielField.js.map +1 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js +122 -0
- package/dist/esm/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js +197 -0
- package/dist/esm/v2/patterns/SaveFilterDialog.js.map +1 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js +406 -0
- package/dist/esm/v2/patterns/SavedFiltersMenu.js.map +1 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js +342 -0
- package/dist/esm/v2/patterns/SkeletonPageShell.js.map +1 -0
- package/dist/esm/v2/patterns/SortableHeader.js +179 -0
- package/dist/esm/v2/patterns/SortableHeader.js.map +1 -0
- package/dist/esm/v2/patterns/Tour.js +471 -0
- package/dist/esm/v2/patterns/Tour.js.map +1 -0
- package/dist/esm/v2/patterns/_dataGridShared.js +431 -0
- package/dist/esm/v2/patterns/_dataGridShared.js.map +1 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js +74 -0
- package/dist/esm/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/esm/v2/patterns/_sort.js +112 -0
- package/dist/esm/v2/patterns/_sort.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js +257 -0
- package/dist/esm/v2/patterns/_useColumnReorder.js.map +1 -0
- package/dist/esm/v2/patterns/_useColumnResize.js +191 -0
- package/dist/esm/v2/patterns/_useColumnResize.js.map +1 -0
- package/dist/esm/v2/patterns/index.js +178 -0
- package/dist/esm/v2/patterns/index.js.map +1 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js +168 -0
- package/dist/esm/v2/personalization/PersonalizationProvider.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js +60 -0
- package/dist/esm/v2/personalization/adapters/_storageKey.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js +124 -0
- package/dist/esm/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js +70 -0
- package/dist/esm/v2/personalization/adapters/createMemoryAdapter.js.map +1 -0
- package/dist/esm/v2/personalization/adapters/index.js +11 -0
- package/dist/esm/v2/personalization/adapters/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js +216 -0
- package/dist/esm/v2/personalization/capabilities/favorites.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js +111 -0
- package/dist/esm/v2/personalization/capabilities/favoritesView.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js +209 -0
- package/dist/esm/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/index.js +22 -0
- package/dist/esm/v2/personalization/capabilities/index.js.map +1 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js +291 -0
- package/dist/esm/v2/personalization/capabilities/savedFilters.js.map +1 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js +472 -0
- package/dist/esm/v2/personalization/createPersonalizationStore.js.map +1 -0
- package/dist/esm/v2/personalization/index.js +64 -0
- package/dist/esm/v2/personalization/index.js.map +1 -0
- package/dist/esm/v2/personalization/personalizationContext.js +108 -0
- package/dist/esm/v2/personalization/personalizationContext.js.map +1 -0
- package/dist/esm/v2/personalization/schema.js +92 -0
- package/dist/esm/v2/personalization/schema.js.map +1 -0
- package/dist/esm/v2/personalization/types.js +2 -0
- package/dist/esm/v2/personalization/types.js.map +1 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js +87 -0
- package/dist/esm/v2/referentiel/ReferentielProvider.js.map +1 -0
- package/dist/esm/v2/referentiel/index.js +15 -0
- package/dist/esm/v2/referentiel/index.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js +37 -0
- package/dist/esm/v2/referentiel/useReferentielClient.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js +169 -0
- package/dist/esm/v2/referentiel/useReferentielOptions.js.map +1 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js +132 -0
- package/dist/esm/v2/referentiel/useReferentielSearch.js.map +1 -0
- package/dist/esm/v2/styles/base.css +425 -0
- package/dist/esm/v2/styles/css.d.ts +10 -0
- package/dist/esm/v2/styles/index.js +12 -0
- package/dist/esm/v2/styles/index.js.map +1 -0
- package/dist/esm/v2/theme/_brand.js +64 -0
- package/dist/esm/v2/theme/_brand.js.map +1 -0
- package/dist/esm/v2/theme/_brandSecondary.js +60 -0
- package/dist/esm/v2/theme/_brandSecondary.js.map +1 -0
- package/dist/esm/v2/theme/createPortnetTheme.js +548 -0
- package/dist/esm/v2/theme/createPortnetTheme.js.map +1 -0
- package/dist/esm/v2/theme/cssVariables.js +198 -0
- package/dist/esm/v2/theme/cssVariables.js.map +1 -0
- package/dist/esm/v2/theme/index.js +32 -0
- package/dist/esm/v2/theme/index.js.map +1 -0
- package/dist/esm/v2/tokens/breakpoints.js +106 -0
- package/dist/esm/v2/tokens/breakpoints.js.map +1 -0
- package/dist/esm/v2/tokens/colors.js +219 -0
- package/dist/esm/v2/tokens/colors.js.map +1 -0
- package/dist/esm/v2/tokens/density.js +98 -0
- package/dist/esm/v2/tokens/density.js.map +1 -0
- package/dist/esm/v2/tokens/index.js +80 -0
- package/dist/esm/v2/tokens/index.js.map +1 -0
- package/dist/esm/v2/tokens/motion.js +88 -0
- package/dist/esm/v2/tokens/motion.js.map +1 -0
- package/dist/esm/v2/tokens/radius.js +22 -0
- package/dist/esm/v2/tokens/radius.js.map +1 -0
- package/dist/esm/v2/tokens/shadows.js +40 -0
- package/dist/esm/v2/tokens/shadows.js.map +1 -0
- package/dist/esm/v2/tokens/spacing.js +51 -0
- package/dist/esm/v2/tokens/spacing.js.map +1 -0
- package/dist/esm/v2/tokens/state.js +41 -0
- package/dist/esm/v2/tokens/state.js.map +1 -0
- package/dist/esm/v2/tokens/statusPalette.js +66 -0
- package/dist/esm/v2/tokens/statusPalette.js.map +1 -0
- package/dist/esm/v2/tokens/tokens.json +153 -0
- package/dist/esm/v2/tokens/typography.js +149 -0
- package/dist/esm/v2/tokens/typography.js.map +1 -0
- package/dist/esm/v2/tokens/zIndex.js +44 -0
- package/dist/esm/v2/tokens/zIndex.js.map +1 -0
- package/dist/esm/v2/types/common.js +2 -0
- package/dist/esm/v2/types/common.js.map +1 -0
- package/dist/esm/v2/types/datagrid.js +2 -0
- package/dist/esm/v2/types/datagrid.js.map +1 -0
- package/dist/esm/v2/types/index.js +12 -0
- package/dist/esm/v2/types/index.js.map +1 -0
- package/dist/esm/v2/utils/apiError.js +281 -0
- package/dist/esm/v2/utils/apiError.js.map +1 -0
- package/dist/esm/v2/utils/contrast.js +157 -0
- package/dist/esm/v2/utils/contrast.js.map +1 -0
- package/dist/esm/v2/utils/cx.js +38 -0
- package/dist/esm/v2/utils/cx.js.map +1 -0
- package/dist/esm/v2/utils/fileDownload.js +226 -0
- package/dist/esm/v2/utils/fileDownload.js.map +1 -0
- package/dist/esm/v2/utils/fmtMoney.js +78 -0
- package/dist/esm/v2/utils/fmtMoney.js.map +1 -0
- package/dist/esm/v2/utils/index.js +43 -0
- package/dist/esm/v2/utils/index.js.map +1 -0
- package/dist/esm/v2/utils/mergeLabels.js +86 -0
- package/dist/esm/v2/utils/mergeLabels.js.map +1 -0
- package/dist/esm/v2/utils/networkStatus.js +114 -0
- package/dist/esm/v2/utils/networkStatus.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -1
- package/dist/v2/__tests__/FieldError.test.js +160 -0
- package/dist/v2/__tests__/FieldError.test.js.map +1 -0
- package/dist/v2/__tests__/FieldWidth.test.js +150 -0
- package/dist/v2/__tests__/FieldWidth.test.js.map +1 -0
- package/dist/v2/__tests__/FileCard.test.js +144 -0
- package/dist/v2/__tests__/FileCard.test.js.map +1 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js +268 -0
- package/dist/v2/__tests__/FormikCheckbox.test.js.map +1 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js +247 -0
- package/dist/v2/__tests__/FormikDateTimePicker.test.js.map +1 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js +381 -0
- package/dist/v2/__tests__/FormikRadioGroup.test.js.map +1 -0
- package/dist/v2/__tests__/MobileRowCard.test.js +52 -56
- package/dist/v2/__tests__/MobileRowCard.test.js.map +1 -1
- package/dist/v2/__tests__/SectionErrorBoundary.test.js +237 -0
- package/dist/v2/__tests__/SectionErrorBoundary.test.js.map +1 -0
- package/dist/v2/__tests__/labels-merge.test.js +20 -24
- package/dist/v2/__tests__/labels-merge.test.js.map +1 -1
- package/dist/v2/components/Accordion.d.ts +6 -6
- package/dist/v2/components/Accordion.d.ts.map +1 -1
- package/dist/v2/components/Accordion.js.map +1 -1
- package/dist/v2/components/ActionStrip.d.ts +12 -12
- package/dist/v2/components/ActionStrip.d.ts.map +1 -1
- package/dist/v2/components/ActionStrip.js.map +1 -1
- package/dist/v2/components/Banner.d.ts +48 -9
- package/dist/v2/components/Banner.d.ts.map +1 -1
- package/dist/v2/components/Banner.js +116 -35
- package/dist/v2/components/Banner.js.map +1 -1
- package/dist/v2/components/Busy.d.ts +3 -3
- package/dist/v2/components/Busy.d.ts.map +1 -1
- package/dist/v2/components/Busy.js.map +1 -1
- package/dist/v2/components/Button.d.ts +6 -6
- package/dist/v2/components/Button.d.ts.map +1 -1
- package/dist/v2/components/Button.js.map +1 -1
- package/dist/v2/components/CategoryTag.d.ts +3 -3
- package/dist/v2/components/CategoryTag.d.ts.map +1 -1
- package/dist/v2/components/CategoryTag.js.map +1 -1
- package/dist/v2/components/Checkbox.d.ts +11 -11
- package/dist/v2/components/Checkbox.d.ts.map +1 -1
- package/dist/v2/components/Checkbox.js.map +1 -1
- package/dist/v2/components/Chip.d.ts +8 -8
- package/dist/v2/components/Chip.d.ts.map +1 -1
- package/dist/v2/components/Chip.js +2 -1
- package/dist/v2/components/Chip.js.map +1 -1
- package/dist/v2/components/Combobox.d.ts +27 -27
- package/dist/v2/components/Combobox.d.ts.map +1 -1
- package/dist/v2/components/Combobox.js +3 -2
- package/dist/v2/components/Combobox.js.map +1 -1
- package/dist/v2/components/CommandPalette.d.ts +20 -20
- package/dist/v2/components/CommandPalette.d.ts.map +1 -1
- package/dist/v2/components/CommandPalette.js +2 -6
- package/dist/v2/components/CommandPalette.js.map +1 -1
- package/dist/v2/components/ConfirmDialog.d.ts +13 -13
- package/dist/v2/components/ConfirmDialog.d.ts.map +1 -1
- package/dist/v2/components/ConfirmDialog.js +2 -1
- package/dist/v2/components/ConfirmDialog.js.map +1 -1
- package/dist/v2/components/DatePicker.d.ts +11 -11
- package/dist/v2/components/DatePicker.d.ts.map +1 -1
- package/dist/v2/components/DatePicker.js.map +1 -1
- package/dist/v2/components/DateRangePicker.d.ts +16 -16
- package/dist/v2/components/DateRangePicker.d.ts.map +1 -1
- package/dist/v2/components/DateRangePicker.js +2 -1
- package/dist/v2/components/DateRangePicker.js.map +1 -1
- package/dist/v2/components/DateTimePicker.d.ts +11 -11
- package/dist/v2/components/DateTimePicker.d.ts.map +1 -1
- package/dist/v2/components/DateTimePicker.js +37 -4
- package/dist/v2/components/DateTimePicker.js.map +1 -1
- package/dist/v2/components/Drawer.d.ts +18 -18
- package/dist/v2/components/Drawer.d.ts.map +1 -1
- package/dist/v2/components/Drawer.js +2 -1
- package/dist/v2/components/Drawer.js.map +1 -1
- package/dist/v2/components/Dropzone.d.ts +34 -34
- package/dist/v2/components/Dropzone.d.ts.map +1 -1
- package/dist/v2/components/Dropzone.js +11 -3
- package/dist/v2/components/Dropzone.js.map +1 -1
- package/dist/v2/components/EmptyState.d.ts +7 -7
- package/dist/v2/components/EmptyState.d.ts.map +1 -1
- package/dist/v2/components/EmptyState.js.map +1 -1
- package/dist/v2/components/FavoriteToggle.d.ts +7 -7
- package/dist/v2/components/FavoriteToggle.d.ts.map +1 -1
- package/dist/v2/components/FavoriteToggle.js +2 -1
- package/dist/v2/components/FavoriteToggle.js.map +1 -1
- package/dist/v2/components/Field.d.ts +76 -13
- package/dist/v2/components/Field.d.ts.map +1 -1
- package/dist/v2/components/Field.js +87 -9
- package/dist/v2/components/Field.js.map +1 -1
- package/dist/v2/components/FieldError.d.ts +78 -0
- package/dist/v2/components/FieldError.d.ts.map +1 -0
- package/dist/v2/components/FieldError.js +131 -0
- package/dist/v2/components/FieldError.js.map +1 -0
- package/dist/v2/components/FieldHelp.d.ts +7 -7
- package/dist/v2/components/FieldHelp.d.ts.map +1 -1
- package/dist/v2/components/FieldHelp.js.map +1 -1
- package/dist/v2/components/FileCard.d.ts +75 -0
- package/dist/v2/components/FileCard.d.ts.map +1 -0
- package/dist/v2/components/FileCard.js +169 -0
- package/dist/v2/components/FileCard.js.map +1 -0
- package/dist/v2/components/FilterTab.d.ts +9 -9
- package/dist/v2/components/FilterTab.d.ts.map +1 -1
- package/dist/v2/components/FilterTab.js +2 -1
- package/dist/v2/components/FilterTab.js.map +1 -1
- package/dist/v2/components/FormGrid.d.ts +9 -4
- package/dist/v2/components/FormGrid.d.ts.map +1 -1
- package/dist/v2/components/FormGrid.js +11 -1
- package/dist/v2/components/FormGrid.js.map +1 -1
- package/dist/v2/components/FormikDisplay.d.ts +6 -6
- package/dist/v2/components/FormikDisplay.d.ts.map +1 -1
- package/dist/v2/components/FormikDisplay.js.map +1 -1
- package/dist/v2/components/Input.d.ts +6 -6
- package/dist/v2/components/Input.d.ts.map +1 -1
- package/dist/v2/components/Input.js.map +1 -1
- package/dist/v2/components/KPICard.d.ts +43 -13
- package/dist/v2/components/KPICard.d.ts.map +1 -1
- package/dist/v2/components/KPICard.js +53 -14
- package/dist/v2/components/KPICard.js.map +1 -1
- package/dist/v2/components/KPIStrip.d.ts +68 -0
- package/dist/v2/components/KPIStrip.d.ts.map +1 -0
- package/dist/v2/components/KPIStrip.js +92 -0
- package/dist/v2/components/KPIStrip.js.map +1 -0
- package/dist/v2/components/KV.d.ts +3 -3
- package/dist/v2/components/KV.d.ts.map +1 -1
- package/dist/v2/components/KV.js.map +1 -1
- package/dist/v2/components/KVGrid.d.ts +2 -2
- package/dist/v2/components/KVGrid.d.ts.map +1 -1
- package/dist/v2/components/KVGrid.js +8 -1
- package/dist/v2/components/KVGrid.js.map +1 -1
- package/dist/v2/components/Layout.d.ts +7 -7
- package/dist/v2/components/Layout.d.ts.map +1 -1
- package/dist/v2/components/Layout.js.map +1 -1
- package/dist/v2/components/MobileRowCard.d.ts +13 -13
- package/dist/v2/components/MobileRowCard.d.ts.map +1 -1
- package/dist/v2/components/MobileRowCard.js.map +1 -1
- package/dist/v2/components/Modal.d.ts +12 -12
- package/dist/v2/components/Modal.d.ts.map +1 -1
- package/dist/v2/components/Modal.js.map +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts +1 -1
- package/dist/v2/components/NetworkErrorPage.d.ts.map +1 -1
- package/dist/v2/components/NetworkErrorPage.js.map +1 -1
- package/dist/v2/components/NumberInput.d.ts +14 -14
- package/dist/v2/components/NumberInput.d.ts.map +1 -1
- package/dist/v2/components/NumberInput.js +7 -6
- package/dist/v2/components/NumberInput.js.map +1 -1
- package/dist/v2/components/OverflowMenu.d.ts +14 -14
- package/dist/v2/components/OverflowMenu.d.ts.map +1 -1
- package/dist/v2/components/OverflowMenu.js +4 -8
- package/dist/v2/components/OverflowMenu.js.map +1 -1
- package/dist/v2/components/PdfViewer.d.ts +9 -9
- package/dist/v2/components/PdfViewer.d.ts.map +1 -1
- package/dist/v2/components/PdfViewer.js.map +1 -1
- package/dist/v2/components/ProgressBar.d.ts +10 -10
- package/dist/v2/components/ProgressBar.d.ts.map +1 -1
- package/dist/v2/components/ProgressBar.js.map +1 -1
- package/dist/v2/components/Radio.d.ts +7 -7
- package/dist/v2/components/Radio.d.ts.map +1 -1
- package/dist/v2/components/Radio.js.map +1 -1
- package/dist/v2/components/SectionErrorBoundary.d.ts +89 -0
- package/dist/v2/components/SectionErrorBoundary.d.ts.map +1 -0
- package/dist/v2/components/SectionErrorBoundary.js +221 -0
- package/dist/v2/components/SectionErrorBoundary.js.map +1 -0
- package/dist/v2/components/SectionHeader.d.ts +5 -5
- package/dist/v2/components/SectionHeader.d.ts.map +1 -1
- package/dist/v2/components/SectionHeader.js.map +1 -1
- package/dist/v2/components/Segmented.d.ts +11 -11
- package/dist/v2/components/Segmented.d.ts.map +1 -1
- package/dist/v2/components/Segmented.js.map +1 -1
- package/dist/v2/components/Select.d.ts +33 -15
- package/dist/v2/components/Select.d.ts.map +1 -1
- package/dist/v2/components/Select.js +147 -30
- package/dist/v2/components/Select.js.map +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts +1 -1
- package/dist/v2/components/ServerErrorPage.d.ts.map +1 -1
- package/dist/v2/components/ServerErrorPage.js.map +1 -1
- package/dist/v2/components/Skeleton.d.ts +15 -15
- package/dist/v2/components/Skeleton.d.ts.map +1 -1
- package/dist/v2/components/Skeleton.js.map +1 -1
- package/dist/v2/components/SkipLink.d.ts +2 -2
- package/dist/v2/components/SkipLink.d.ts.map +1 -1
- package/dist/v2/components/SkipLink.js.map +1 -1
- package/dist/v2/components/Status.d.ts +3 -3
- package/dist/v2/components/Status.d.ts.map +1 -1
- package/dist/v2/components/Status.js.map +1 -1
- package/dist/v2/components/Stepper.d.ts +28 -22
- package/dist/v2/components/Stepper.d.ts.map +1 -1
- package/dist/v2/components/Stepper.js +31 -5
- package/dist/v2/components/Stepper.js.map +1 -1
- package/dist/v2/components/Surface.d.ts +94 -0
- package/dist/v2/components/Surface.d.ts.map +1 -0
- package/dist/v2/components/Surface.js +163 -0
- package/dist/v2/components/Surface.js.map +1 -0
- package/dist/v2/components/Switch.d.ts +4 -4
- package/dist/v2/components/Switch.d.ts.map +1 -1
- package/dist/v2/components/Switch.js.map +1 -1
- package/dist/v2/components/Tabs.d.ts +6 -6
- package/dist/v2/components/Tabs.d.ts.map +1 -1
- package/dist/v2/components/Tabs.js.map +1 -1
- package/dist/v2/components/TelInput.d.ts +8 -8
- package/dist/v2/components/TelInput.d.ts.map +1 -1
- package/dist/v2/components/TelInput.js +18 -18
- package/dist/v2/components/TelInput.js.map +1 -1
- package/dist/v2/components/Textarea.d.ts +1 -1
- package/dist/v2/components/Textarea.d.ts.map +1 -1
- package/dist/v2/components/Textarea.js.map +1 -1
- package/dist/v2/components/TimePicker.d.ts +11 -11
- package/dist/v2/components/TimePicker.d.ts.map +1 -1
- package/dist/v2/components/TimePicker.js.map +1 -1
- package/dist/v2/components/Toast.d.ts +6 -6
- package/dist/v2/components/Toast.d.ts.map +1 -1
- package/dist/v2/components/Toast.js +9 -8
- package/dist/v2/components/Toast.js.map +1 -1
- package/dist/v2/components/Tooltip.d.ts +1 -1
- package/dist/v2/components/Tooltip.d.ts.map +1 -1
- package/dist/v2/components/Tooltip.js.map +1 -1
- package/dist/v2/components/index.d.ts +170 -0
- package/dist/v2/components/index.d.ts.map +1 -1
- package/dist/v2/components/index.js +35 -0
- package/dist/v2/components/index.js.map +1 -1
- package/dist/v2/index.d.ts.map +1 -1
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/models/favorite.d.ts +1 -1
- package/dist/v2/models/favorite.d.ts.map +1 -1
- package/dist/v2/models/favorite.js.map +1 -1
- package/dist/v2/models/personalization.d.ts +13 -13
- package/dist/v2/models/personalization.d.ts.map +1 -1
- package/dist/v2/models/personalization.js.map +1 -1
- package/dist/v2/models/referentiel.d.ts +11 -11
- package/dist/v2/models/referentiel.d.ts.map +1 -1
- package/dist/v2/models/referentiel.js.map +1 -1
- package/dist/v2/models/savedFilter.d.ts +8 -8
- package/dist/v2/models/savedFilter.d.ts.map +1 -1
- package/dist/v2/models/savedFilter.js.map +1 -1
- package/dist/v2/patterns/ActionBar.d.ts +33 -33
- package/dist/v2/patterns/ActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/ActionBar.js +2 -1
- package/dist/v2/patterns/ActionBar.js.map +1 -1
- package/dist/v2/patterns/BulkActionBar.d.ts +12 -12
- package/dist/v2/patterns/BulkActionBar.d.ts.map +1 -1
- package/dist/v2/patterns/BulkActionBar.js +2 -1
- package/dist/v2/patterns/BulkActionBar.js.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts +15 -15
- package/dist/v2/patterns/CollapsibleDataGrid.d.ts.map +1 -1
- package/dist/v2/patterns/CollapsibleDataGrid.js.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.d.ts +7 -7
- package/dist/v2/patterns/ColumnsToggle.d.ts.map +1 -1
- package/dist/v2/patterns/ColumnsToggle.js +4 -8
- package/dist/v2/patterns/ColumnsToggle.js.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts +12 -12
- package/dist/v2/patterns/DataGridSettingsMenu.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridSettingsMenu.js +9 -8
- package/dist/v2/patterns/DataGridSettingsMenu.js.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.d.ts +40 -40
- package/dist/v2/patterns/DataGridToolbar.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridToolbar.js +2 -1
- package/dist/v2/patterns/DataGridToolbar.js.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.d.ts +27 -27
- package/dist/v2/patterns/DataGridVirtualized.d.ts.map +1 -1
- package/dist/v2/patterns/DataGridVirtualized.js.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts +5 -5
- package/dist/v2/patterns/DeleteResourceConfirmDialog.d.ts.map +1 -1
- package/dist/v2/patterns/DeleteResourceConfirmDialog.js.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.d.ts +15 -15
- package/dist/v2/patterns/FavoriteColumn.d.ts.map +1 -1
- package/dist/v2/patterns/FavoriteColumn.js +14 -61
- package/dist/v2/patterns/FavoriteColumn.js.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.d.ts +10 -10
- package/dist/v2/patterns/FavoritesFilter.d.ts.map +1 -1
- package/dist/v2/patterns/FavoritesFilter.js +2 -1
- package/dist/v2/patterns/FavoritesFilter.js.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.d.ts +4 -4
- package/dist/v2/patterns/FormErrorSummary.d.ts.map +1 -1
- package/dist/v2/patterns/FormErrorSummary.js.map +1 -1
- package/dist/v2/patterns/FormPageShell.d.ts +4 -4
- package/dist/v2/patterns/FormPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/FormPageShell.js.map +1 -1
- package/dist/v2/patterns/FormSection.d.ts +19 -8
- package/dist/v2/patterns/FormSection.d.ts.map +1 -1
- package/dist/v2/patterns/FormSection.js +106 -71
- package/dist/v2/patterns/FormSection.js.map +1 -1
- package/dist/v2/patterns/FormikCheckbox.d.ts +77 -0
- package/dist/v2/patterns/FormikCheckbox.d.ts.map +1 -0
- package/dist/v2/patterns/FormikCheckbox.js +147 -0
- package/dist/v2/patterns/FormikCheckbox.js.map +1 -0
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts +6 -6
- package/dist/v2/patterns/FormikCheckboxGroup.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCheckboxGroup.js.map +1 -1
- package/dist/v2/patterns/FormikCombobox.d.ts +18 -12
- package/dist/v2/patterns/FormikCombobox.d.ts.map +1 -1
- package/dist/v2/patterns/FormikCombobox.js +5 -2
- package/dist/v2/patterns/FormikCombobox.js.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.d.ts +48 -8
- package/dist/v2/patterns/FormikDatePicker.d.ts.map +1 -1
- package/dist/v2/patterns/FormikDatePicker.js +58 -65
- package/dist/v2/patterns/FormikDatePicker.js.map +1 -1
- package/dist/v2/patterns/FormikDateTimePicker.d.ts +111 -0
- package/dist/v2/patterns/FormikDateTimePicker.d.ts.map +1 -0
- package/dist/v2/patterns/FormikDateTimePicker.js +158 -0
- package/dist/v2/patterns/FormikDateTimePicker.js.map +1 -0
- package/dist/v2/patterns/FormikErrorFocus.d.ts +3 -3
- package/dist/v2/patterns/FormikErrorFocus.d.ts.map +1 -1
- package/dist/v2/patterns/FormikErrorFocus.js.map +1 -1
- package/dist/v2/patterns/FormikFile.d.ts +8 -8
- package/dist/v2/patterns/FormikFile.d.ts.map +1 -1
- package/dist/v2/patterns/FormikFile.js.map +1 -1
- package/dist/v2/patterns/FormikInput.d.ts +51 -6
- package/dist/v2/patterns/FormikInput.d.ts.map +1 -1
- package/dist/v2/patterns/FormikInput.js +53 -2
- package/dist/v2/patterns/FormikInput.js.map +1 -1
- package/dist/v2/patterns/FormikRadioGroup.d.ts +80 -0
- package/dist/v2/patterns/FormikRadioGroup.d.ts.map +1 -0
- package/dist/v2/patterns/FormikRadioGroup.js +148 -0
- package/dist/v2/patterns/FormikRadioGroup.js.map +1 -0
- package/dist/v2/patterns/FormikReferentielField.d.ts +8 -8
- package/dist/v2/patterns/FormikReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/FormikReferentielField.js.map +1 -1
- package/dist/v2/patterns/FormikSelect.d.ts +41 -12
- package/dist/v2/patterns/FormikSelect.d.ts.map +1 -1
- package/dist/v2/patterns/FormikSelect.js +32 -3
- package/dist/v2/patterns/FormikSelect.js.map +1 -1
- package/dist/v2/patterns/FormikTextarea.d.ts +14 -6
- package/dist/v2/patterns/FormikTextarea.d.ts.map +1 -1
- package/dist/v2/patterns/FormikTextarea.js +5 -2
- package/dist/v2/patterns/FormikTextarea.js.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts +21 -8
- package/dist/v2/patterns/KeyboardShortcutsHelp.d.ts.map +1 -1
- package/dist/v2/patterns/KeyboardShortcutsHelp.js +27 -14
- package/dist/v2/patterns/KeyboardShortcutsHelp.js.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.d.ts +4 -4
- package/dist/v2/patterns/NetworkErrorBanner.d.ts.map +1 -1
- package/dist/v2/patterns/NetworkErrorBanner.js.map +1 -1
- package/dist/v2/patterns/PageContent.d.ts +3 -3
- package/dist/v2/patterns/PageContent.d.ts.map +1 -1
- package/dist/v2/patterns/PageContent.js.map +1 -1
- package/dist/v2/patterns/ReferentielField.d.ts +49 -49
- package/dist/v2/patterns/ReferentielField.d.ts.map +1 -1
- package/dist/v2/patterns/ReferentielField.js +2 -1
- package/dist/v2/patterns/ReferentielField.js.map +1 -1
- package/dist/v2/patterns/RowFavoriteToggle.d.ts +92 -0
- package/dist/v2/patterns/RowFavoriteToggle.d.ts.map +1 -0
- package/dist/v2/patterns/RowFavoriteToggle.js +127 -0
- package/dist/v2/patterns/RowFavoriteToggle.js.map +1 -0
- package/dist/v2/patterns/SaveFilterDialog.d.ts +10 -10
- package/dist/v2/patterns/SaveFilterDialog.d.ts.map +1 -1
- package/dist/v2/patterns/SaveFilterDialog.js +9 -8
- package/dist/v2/patterns/SaveFilterDialog.js.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.d.ts +7 -7
- package/dist/v2/patterns/SavedFiltersMenu.d.ts.map +1 -1
- package/dist/v2/patterns/SavedFiltersMenu.js +9 -8
- package/dist/v2/patterns/SavedFiltersMenu.js.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.d.ts +7 -7
- package/dist/v2/patterns/SkeletonPageShell.d.ts.map +1 -1
- package/dist/v2/patterns/SkeletonPageShell.js.map +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts +1 -1
- package/dist/v2/patterns/SortableHeader.d.ts.map +1 -1
- package/dist/v2/patterns/SortableHeader.js.map +1 -1
- package/dist/v2/patterns/Tour.d.ts +12 -12
- package/dist/v2/patterns/Tour.d.ts.map +1 -1
- package/dist/v2/patterns/Tour.js +9 -8
- package/dist/v2/patterns/Tour.js.map +1 -1
- package/dist/v2/patterns/_dataGridShared.d.ts +25 -6
- package/dist/v2/patterns/_dataGridShared.d.ts.map +1 -1
- package/dist/v2/patterns/_dataGridShared.js +37 -3
- package/dist/v2/patterns/_dataGridShared.js.map +1 -1
- package/dist/v2/patterns/_pickerSerialisation.d.ts +44 -0
- package/dist/v2/patterns/_pickerSerialisation.d.ts.map +1 -0
- package/dist/v2/patterns/_pickerSerialisation.js +81 -0
- package/dist/v2/patterns/_pickerSerialisation.js.map +1 -0
- package/dist/v2/patterns/_useColumnReorder.d.ts +1 -1
- package/dist/v2/patterns/_useColumnReorder.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnReorder.js.map +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts +1 -1
- package/dist/v2/patterns/_useColumnResize.d.ts.map +1 -1
- package/dist/v2/patterns/_useColumnResize.js.map +1 -1
- package/dist/v2/patterns/index.d.ts +114 -0
- package/dist/v2/patterns/index.d.ts.map +1 -1
- package/dist/v2/patterns/index.js +34 -0
- package/dist/v2/patterns/index.js.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.d.ts +9 -9
- package/dist/v2/personalization/PersonalizationProvider.d.ts.map +1 -1
- package/dist/v2/personalization/PersonalizationProvider.js.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createLocalStorageAdapter.js.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.d.ts.map +1 -1
- package/dist/v2/personalization/adapters/createMemoryAdapter.js.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.d.ts +3 -3
- package/dist/v2/personalization/capabilities/favoritesView.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/favoritesView.js.map +1 -1
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts +100 -0
- package/dist/v2/personalization/capabilities/gridPreferences.d.ts.map +1 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js +215 -0
- package/dist/v2/personalization/capabilities/gridPreferences.js.map +1 -0
- package/dist/v2/personalization/capabilities/index.d.ts +6 -0
- package/dist/v2/personalization/capabilities/index.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/index.js +13 -0
- package/dist/v2/personalization/capabilities/index.js.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.d.ts +3 -3
- package/dist/v2/personalization/capabilities/savedFilters.d.ts.map +1 -1
- package/dist/v2/personalization/capabilities/savedFilters.js.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.d.ts +8 -8
- package/dist/v2/personalization/createPersonalizationStore.d.ts.map +1 -1
- package/dist/v2/personalization/createPersonalizationStore.js.map +1 -1
- package/dist/v2/personalization/index.d.ts +18 -0
- package/dist/v2/personalization/index.d.ts.map +1 -1
- package/dist/v2/personalization/index.js +13 -0
- package/dist/v2/personalization/index.js.map +1 -1
- package/dist/v2/personalization/schema.d.ts +2 -2
- package/dist/v2/personalization/schema.d.ts.map +1 -1
- package/dist/v2/personalization/schema.js.map +1 -1
- package/dist/v2/personalization/types.d.ts +19 -19
- package/dist/v2/personalization/types.d.ts.map +1 -1
- package/dist/v2/personalization/types.js.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.d.ts +4 -4
- package/dist/v2/referentiel/ReferentielProvider.d.ts.map +1 -1
- package/dist/v2/referentiel/ReferentielProvider.js.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.d.ts +4 -4
- package/dist/v2/referentiel/useReferentielOptions.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielOptions.js.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.d.ts +3 -3
- package/dist/v2/referentiel/useReferentielSearch.d.ts.map +1 -1
- package/dist/v2/referentiel/useReferentielSearch.js.map +1 -1
- package/dist/v2/theme/createPortnetTheme.d.ts +32 -7
- package/dist/v2/theme/createPortnetTheme.d.ts.map +1 -1
- package/dist/v2/theme/createPortnetTheme.js +25 -1
- package/dist/v2/theme/createPortnetTheme.js.map +1 -1
- package/dist/v2/types/datagrid.d.ts +59 -59
- package/dist/v2/types/datagrid.d.ts.map +1 -1
- package/dist/v2/types/datagrid.js.map +1 -1
- package/dist/v2/utils/apiError.d.ts +65 -4
- package/dist/v2/utils/apiError.d.ts.map +1 -1
- package/dist/v2/utils/apiError.js +69 -6
- package/dist/v2/utils/apiError.js.map +1 -1
- package/dist/v2/utils/index.d.ts +1 -0
- package/dist/v2/utils/index.d.ts.map +1 -1
- package/dist/v2/utils/index.js +7 -0
- package/dist/v2/utils/index.js.map +1 -1
- package/dist/v2/utils/mergeLabels.d.ts +59 -0
- package/dist/v2/utils/mergeLabels.d.ts.map +1 -0
- package/dist/v2/utils/mergeLabels.js +93 -0
- package/dist/v2/utils/mergeLabels.js.map +1 -0
- package/package.json +23 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","names":["_react","_interopRequireWildcard","require","React","_Autocomplete","_interopRequireDefault","_TextField","_Chip","_CircularProgress","_Box","_jsxRuntime","_excluded","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","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","AutocompleteWithTags","MuiAutocomplete","DEFAULT_LABELS","freeze","noOptions","loading","clear","close","open","placeholder","normaliseOption","o","label","Combobox","forwardRef","_ref","ref","onChange","_ref$options","options","_ref$multiple","multiple","_ref$freeSolo","freeSolo","disabled","error","_ref$fullWidth","fullWidth","_ref$loading","groupBy","getOptionLabel","isOptionEqualToValue","filterOptions","renderOption","onInputChange","labels","sx","ariaDescribedBy","ariaInvalid","ariaRequired","rest","L","effectivePlaceholder","normalised","useMemo","map","autoGroupBy","some","group","labelOf","useCallback","_ref2","_obj$label","eqOf","opt","val","a","b","handleChange","_event","next","arr","Array","isArray","out","n","_value","_value2","single","resolvedValue","v","find","anyHelper","helper","effectiveRenderOption","props","option","optValue","optionKey","createElement","jsxs","display","flexDirection","paddingY","minWidth","children","jsx","component","fontSize","color","lineHeight","noOptionsText","loadingText","clearText","closeText","openText","size","renderTags","values","getTagProps","index","rawVal","tagKey","height","paddingInline","renderInput","params","_params$slotProps","_params$slotProps$inp","_params$slotProps2","_params$slotProps$htm","_params$slotProps3","paramsSlotProps","slotProps","inputSlot","htmlInput","endAdornment","Fragment","role","marginRight","_default","exports"],"sources":["../../../src/lib/v2/components/Combobox.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiAutocomplete from \"@mui/material/Autocomplete\";\r\nimport type { AutocompleteProps, AutocompleteRenderGetTagProps } from \"@mui/material/Autocomplete\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport MuiChip from \"@mui/material/Chip\";\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\n\r\n/**\r\n * Combobox — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Combobox / Autocomplete\". Required by R-Sel.1\r\n * for any Select with > 30 options.\r\n *\r\n * Single:\r\n * <Field label=\"Pays\">\r\n * <Combobox\r\n * value={country}\r\n * onChange={setCountry}\r\n * options={countries} // strings or {value,label}\r\n * />\r\n * </Field>\r\n *\r\n * Multi (with helper text per option):\r\n * <Field label=\"Régime\">\r\n * <Combobox\r\n * value={regime}\r\n * onChange={setRegime}\r\n * options={[\r\n * { value: \"atpa\", label: \"ATPA\",\r\n * helper: \"Admission Temporaire avec Paiement\" },\r\n * { value: \"atpf\", label: \"ATPF\",\r\n * helper: \"Admission Temporaire en Franchise\" },\r\n * ]}\r\n * />\r\n * </Field>\r\n *\r\n * Async (server-side filter):\r\n * const [input, setInput] = useState(\"\");\r\n * const [opts, setOpts] = useState([]);\r\n * const [loading, setLoading] = useState(false);\r\n * useEffect(() => {\r\n * const t = setTimeout(() => {\r\n * setLoading(true);\r\n * fetch(`/api/companies?q=${input}`)\r\n * .then(r => r.json()).then(setOpts)\r\n * .finally(() => setLoading(false));\r\n * }, 250);\r\n * return () => clearTimeout(t);\r\n * }, [input]);\r\n *\r\n * <Combobox\r\n * value={company}\r\n * onChange={setCompany}\r\n * onInputChange={(_, v) => setInput(v)}\r\n * options={opts}\r\n * loading={loading}\r\n * filterOptions={(x) => x} // disable client-side filter\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <Combobox labels={{\r\n * noOptions: \"No results\",\r\n * loading: \"Loading…\",\r\n * clear: \"Clear\",\r\n * close: \"Close\",\r\n * open: \"Open\",\r\n * placeholder: \"Select…\",\r\n * }} />\r\n *\r\n * Defaults are French; partial overrides are merged onto the defaults.\r\n *\r\n * A11y:\r\n * - Built on MuiAutocomplete (full WAI-ARIA combobox pattern).\r\n * - When option.helper is present, it is rendered visually AND\r\n * becomes part of the option's accessible name (so screen-reader\r\n * users hear \"ATPA, Admission Temporaire avec Paiement\" when\r\n * navigating).\r\n * - Loading spinner is decorative (aria-hidden); the listbox already\r\n * announces \"Chargement…\" via the loadingText prop.\r\n * - COMBO-1: Field-injected aria-describedby / aria-invalid / aria-required\r\n * are threaded onto the native <input> via renderInput's htmlInput slot.\r\n * MUI spreads unknown top-level props onto the Autocomplete ROOT, so\r\n * without this the error association / invalid state would never reach\r\n * the combobox input for screen-reader users.\r\n */\r\n\r\nexport type ComboboxOptionValue = string | number | boolean;\r\n\r\nexport interface ComboboxOption {\r\n value: ComboboxOptionValue;\r\n label?: React.ReactNode;\r\n group?: string;\r\n helper?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Loose-but-honest value union used for BOTH the `value` input and the\r\n * `onChange` output, matching the any-based JS: callers may pass bare\r\n * values or option objects (single or array), and onChange re-emits bare\r\n * values (objects unwrapped to their `.value`).\r\n */\r\nexport type ComboboxValue =\r\n | ComboboxOptionValue\r\n | ComboboxOption\r\n | null\r\n | Array<ComboboxOptionValue | ComboboxOption>;\r\n\r\nexport interface ComboboxLabels {\r\n noOptions?: string;\r\n loading?: string;\r\n clear?: string;\r\n close?: string;\r\n open?: string;\r\n placeholder?: string;\r\n}\r\n\r\n/**\r\n * The option generic handed to MUI Autocomplete. It must admit raw\r\n * primitive values (not just option objects) because resolvedValue and\r\n * handleChange deliberately round-trip bare values (a numeric id stored\r\n * by FormikCombobox, a freeSolo string, etc.).\r\n */\r\ntype ComboboxItem = ComboboxOption | ComboboxOptionValue;\r\ntype MuiACProps = AutocompleteProps<ComboboxItem, boolean, false, boolean>;\r\n\r\n/**\r\n * MuiAutocomplete instantiated with `Multiple: boolean` (not a literal) lets\r\n * value/onChange's conditional types distribute naturally into `T | T[]`,\r\n * which is exactly what this component needs to handle both modes at\r\n * runtime from one implementation. MUI's `renderTags`, however, disappears\r\n * from the props type entirely under this instantiation (TS2339) — and,\r\n * per this MUI version, doesn't reappear even when explicitly instantiated\r\n * with the literal `Multiple = true` (TS2344: \"renderTags\" doesn't satisfy\r\n * `keyof AutocompleteProps<..., true, ...>` either). Rather than depend on\r\n * MUI's exact (apparently unstable across instantiations) type surface for\r\n * this one field, declare its shape ourselves — it matches exactly how the\r\n * callback is invoked below (values.map + getTagProps({ index })), and the\r\n * real runtime Autocomplete accepts renderTags regardless of the Multiple\r\n * type param.\r\n *\r\n * Defined once at module scope (not inside the component) so the cast\r\n * doesn't mint a new component identity on every render — that would make\r\n * React unmount/remount the Autocomplete on every parent re-render and drop\r\n * focus/open-state.\r\n */\r\nconst AutocompleteWithTags = MuiAutocomplete as unknown as React.ForwardRefExoticComponent<\r\n MuiACProps & {\r\n renderTags?: (\r\n value: ComboboxItem[],\r\n getTagProps: AutocompleteRenderGetTagProps\r\n ) => React.ReactNode;\r\n } & React.RefAttributes<HTMLDivElement>\r\n>;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n noOptions: \"Aucun résultat\",\r\n loading: \"Chargement…\",\r\n clear: \"Effacer\",\r\n close: \"Fermer\",\r\n open: \"Ouvrir\",\r\n placeholder: \"Sélectionner…\",\r\n});\r\n\r\nconst normaliseOption = (o: string | ComboboxOption): ComboboxOption =>\r\n typeof o === \"string\" ? { value: o, label: o } : o;\r\n\r\nexport interface ComboboxProps\r\n extends Omit<\r\n MuiACProps,\r\n | \"value\"\r\n | \"onChange\"\r\n | \"options\"\r\n | \"multiple\"\r\n | \"freeSolo\"\r\n | \"renderInput\"\r\n | \"renderTags\"\r\n | \"renderOption\"\r\n | \"getOptionLabel\"\r\n | \"isOptionEqualToValue\"\r\n | \"groupBy\"\r\n | \"filterOptions\"\r\n | \"onInputChange\"\r\n | \"loading\"\r\n | \"disabled\"\r\n | \"fullWidth\"\r\n | \"sx\"\r\n // AutocompleteProps carries its own loosely-typed `ref` (Ref<unknown>,\r\n // for its polymorphic root support) that isn't the \"real\" ref for this\r\n // component. Exclude it here so it never enters ComboboxProps as an\r\n // inherited field — the actual ref (RefAttributes<HTMLDivElement>) comes\r\n // from this component's own React.forwardRef below. Without this,\r\n // Omit<ComboboxProps, ...>-based prop types (e.g. FormikComboboxProps)\r\n // silently carry the stray ref through into their ...rest spreads.\r\n | \"ref\"\r\n > {\r\n value?: ComboboxValue;\r\n onChange?: (value: ComboboxValue) => void;\r\n options?: Array<string | ComboboxOption>;\r\n multiple?: boolean;\r\n freeSolo?: boolean;\r\n placeholder?: string;\r\n disabled?: boolean;\r\n error?: boolean;\r\n fullWidth?: boolean;\r\n loading?: boolean;\r\n groupBy?: (option: ComboboxItem) => string;\r\n getOptionLabel?: (option: ComboboxItem) => string;\r\n isOptionEqualToValue?: (option: ComboboxItem, value: ComboboxItem) => boolean;\r\n filterOptions?: MuiACProps[\"filterOptions\"];\r\n renderOption?: MuiACProps[\"renderOption\"];\r\n onInputChange?: MuiACProps[\"onInputChange\"];\r\n labels?: ComboboxLabels;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(function Combobox(\r\n {\r\n value,\r\n onChange,\r\n options = [],\r\n multiple = false,\r\n freeSolo = false,\r\n placeholder,\r\n disabled,\r\n error,\r\n fullWidth = true,\r\n loading = false,\r\n groupBy,\r\n getOptionLabel,\r\n isOptionEqualToValue,\r\n filterOptions,\r\n renderOption,\r\n onInputChange,\r\n labels,\r\n sx,\r\n // COMBO-1 — pulled out of ...rest so they DON'T land on the Autocomplete\r\n // root; threaded onto the native <input> in renderInput below.\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n ...rest\r\n },\r\n ref\r\n) {\r\n const L = labels ? { ...DEFAULT_LABELS, ...labels } : DEFAULT_LABELS;\r\n // Legacy `placeholder` prop wins over labels.placeholder.\r\n const effectivePlaceholder = placeholder ?? L.placeholder;\r\n\r\n const normalised = React.useMemo(() => options.map(normaliseOption), [options]);\r\n\r\n // Default groupBy — uses option.group if any option has one.\r\n const autoGroupBy = React.useMemo((): ((option: ComboboxItem) => string) | undefined => {\r\n if (groupBy) return groupBy;\r\n if (normalised.some((o) => o && typeof o === \"object\" && o.group)) {\r\n return (o: ComboboxItem): string => (o && typeof o === \"object\" ? o.group || \"\" : \"\");\r\n }\r\n return undefined;\r\n }, [normalised, groupBy]);\r\n\r\n const labelOf = React.useCallback(\r\n (o: ComboboxItem): string => {\r\n if (getOptionLabel) return getOptionLabel(o);\r\n if (o == null) return \"\";\r\n if (typeof o === \"string\") return o;\r\n const obj = o as ComboboxOption;\r\n return String(obj.label ?? obj.value ?? \"\");\r\n },\r\n [getOptionLabel]\r\n );\r\n\r\n const eqOf = React.useCallback(\r\n (opt: ComboboxItem, val: unknown): boolean => {\r\n if (isOptionEqualToValue) return isOptionEqualToValue(opt, val as ComboboxItem);\r\n if (opt == null || val == null) return opt === val;\r\n const a = typeof opt === \"string\" ? opt : (opt as ComboboxOption).value;\r\n // B-eq: primitives (numbers, booleans) are compared as-is.\r\n // Previously `val.value` for a non-string, non-object value\r\n // (e.g. a numeric id stored by FormikCombobox via setFieldValue)\r\n // resolved to undefined, so the lookup never matched and the\r\n // selected option was never visually reflected after picking.\r\n const b =\r\n typeof val === \"string\" ? val\r\n : (val !== null && typeof val === \"object\") ? (val as { value?: unknown }).value\r\n : val; // number, boolean, etc. — use the primitive directly\r\n return a === b;\r\n },\r\n [isOptionEqualToValue]\r\n );\r\n\r\n const handleChange = (\r\n _event: React.SyntheticEvent,\r\n next: ComboboxItem | ComboboxItem[] | null\r\n ): void => {\r\n if (!onChange) return;\r\n // Re-emit raw value(s) — strings stay strings, objects get unwrapped to\r\n // their `.value` so callers don't have to deal with the option shape.\r\n if (multiple) {\r\n const arr = Array.isArray(next) ? next : [];\r\n const out = arr.map((n) => (typeof n === \"string\" ? n : (n as ComboboxOption).value ?? n));\r\n onChange(out);\r\n return;\r\n }\r\n if (next == null) {\r\n onChange(null);\r\n } else {\r\n const single = next as ComboboxItem;\r\n onChange(typeof single === \"string\" ? single : (single as ComboboxOption).value ?? single);\r\n }\r\n };\r\n\r\n // Resolve raw value(s) back to option objects so MUI Autocomplete can\r\n // display labels properly.\r\n const resolvedValue = React.useMemo(() => {\r\n if (multiple) {\r\n const arr = Array.isArray(value) ? value : [];\r\n return arr.map(\r\n (v) =>\r\n normalised.find((o) => eqOf(o, v)) ||\r\n (typeof v === \"string\" ? { value: v, label: v } : v)\r\n );\r\n }\r\n if (value == null || value === \"\") return null;\r\n return (\r\n normalised.find((o) => eqOf(o, value)) ||\r\n (typeof value === \"string\" ? { value, label: value } : (value as ComboboxItem))\r\n );\r\n }, [value, normalised, multiple, eqOf]);\r\n\r\n // Auto-render helper text when at least one option has one. Hosts can\r\n // override entirely by passing their own renderOption.\r\n const anyHelper = normalised.some(\r\n (o) => o && typeof o === \"object\" && o.helper != null && o.helper !== \"\"\r\n );\r\n const effectiveRenderOption: MuiACProps[\"renderOption\"] = React.useMemo(() => {\r\n if (renderOption) return renderOption;\r\n if (!anyHelper) return undefined;\r\n // MUI Autocomplete passes (props, option, state) — `props` already\r\n // carries the correct <li> role/id/aria-selected. We render the\r\n // option content inside it; the helper line is in-flow text so it\r\n // becomes part of the option's accessible name automatically.\r\n return (props: React.HTMLAttributes<HTMLLIElement>, option: ComboboxItem): React.ReactNode => {\r\n const label = labelOf(option);\r\n const helper = option && typeof option === \"object\" ? option.helper : null;\r\n const optValue = typeof option === \"object\" && option !== null ? option.value : undefined;\r\n const optionKey: React.Key =\r\n optValue == null ? label\r\n : typeof optValue === \"boolean\" ? String(optValue)\r\n : optValue;\r\n return (\r\n <li {...props} key={optionKey}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", paddingY: 0.25, minWidth: 0 }}>\r\n <Box component=\"span\" sx={{ fontSize: \"var(--text-sm)\", color: \"var(--fg)\" }}>\r\n {label}\r\n </Box>\r\n {helper && (\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {helper}\r\n </Box>\r\n )}\r\n </Box>\r\n </li>\r\n );\r\n };\r\n }, [renderOption, anyHelper, labelOf]);\r\n\r\n return (\r\n <AutocompleteWithTags\r\n ref={ref}\r\n multiple={multiple}\r\n freeSolo={freeSolo}\r\n disabled={disabled}\r\n fullWidth={fullWidth}\r\n value={resolvedValue}\r\n onChange={handleChange}\r\n onInputChange={onInputChange}\r\n options={normalised}\r\n loading={loading}\r\n groupBy={autoGroupBy}\r\n getOptionLabel={labelOf}\r\n isOptionEqualToValue={eqOf}\r\n filterOptions={filterOptions}\r\n renderOption={effectiveRenderOption}\r\n noOptionsText={L.noOptions}\r\n loadingText={L.loading}\r\n clearText={L.clear}\r\n closeText={L.close}\r\n openText={L.open}\r\n size=\"small\"\r\n renderTags={(values: ComboboxItem[], getTagProps: AutocompleteRenderGetTagProps) =>\r\n values.map((option: ComboboxItem, index: number) => {\r\n const rawVal =\r\n typeof option === \"object\" && option !== null ? option.value : option;\r\n const tagKey: React.Key =\r\n rawVal == null ? index\r\n : typeof rawVal === \"boolean\" ? String(rawVal)\r\n : rawVal;\r\n return (\r\n <MuiChip\r\n {...getTagProps({ index })}\r\n key={tagKey}\r\n size=\"small\"\r\n label={labelOf(option)}\r\n sx={{\r\n height: 22,\r\n \"& .MuiChip-label\": { paddingInline: 1, fontSize: 12 },\r\n }}\r\n />\r\n );\r\n })\r\n }\r\n renderInput={(params) => {\r\n // MUI v9: the bag passed to renderInput carries the input slot props\r\n // at `params.slotProps.input` AND — crucially — the input element ref\r\n // at `params.slotProps.htmlInput.ref`, which MUI's Autocomplete\r\n // focuses on click. We must NOT rebuild slotProps from scratch (that\r\n // drops htmlInput → MUI focuses null → \"Cannot read properties of null\r\n // (reading 'focus')\"). Instead, spread the whole params.slotProps and\r\n // only override the input slot's endAdornment. inputSlot is annotated\r\n // as { endAdornment? } so the runtime spread still forwards htmlInput.\r\n // params.InputProps was the pre-v9 TextField prop, fully replaced by\r\n // params.slotProps.input — no longer exists on AutocompleteRenderInputParams.\r\n const paramsSlotProps = params.slotProps ?? {};\r\n const inputSlot: { endAdornment?: React.ReactNode } =\r\n params.slotProps?.input ?? {};\r\n return (\r\n <TextField\r\n {...params}\r\n placeholder={effectivePlaceholder}\r\n error={!!error}\r\n slotProps={{\r\n ...paramsSlotProps,\r\n // COMBO-1 — merge Field's aria onto the native <input>. Spread\r\n // MUI's existing htmlInput FIRST to keep its ref + combobox aria\r\n // (role/aria-expanded/aria-controls/aria-activedescendant); add\r\n // ours only when defined (exactOptionalPropertyTypes-safe).\r\n htmlInput: {\r\n ...(params.slotProps?.htmlInput ?? {}),\r\n ...(ariaDescribedBy != null ? { \"aria-describedby\": ariaDescribedBy } : {}),\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n },\r\n input: {\r\n ...inputSlot,\r\n endAdornment: (\r\n <>\r\n {/* R-Ar.3 — decorative spinner. The listbox already announces\r\n via the loadingText prop; making the spinner a second\r\n progressbar in the AT tree would just create duplicate\r\n noise. */}\r\n {loading ? (\r\n <CircularProgress\r\n size={14}\r\n aria-hidden=\"true\"\r\n role=\"presentation\"\r\n sx={{ marginRight: 0.5 }}\r\n />\r\n ) : null}\r\n {inputSlot.endAdornment}\r\n </>\r\n ),\r\n },\r\n }}\r\n />\r\n );\r\n }}\r\n sx={sx}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\nexport default Combobox;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Combobox.js","names":["_react","_interopRequireWildcard","require","React","_Autocomplete","_interopRequireDefault","_TextField","_Chip","_CircularProgress","_Box","_mergeLabels","_jsxRuntime","_excluded","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","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","Symbol","toPrimitive","undefined","res","TypeError","Number","iterator","constructor","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceSymbolKeys","indexOf","propertyIsEnumerable","sourceKeys","AutocompleteWithTags","MuiAutocomplete","DEFAULT_LABELS","freeze","noOptions","loading","clear","close","open","placeholder","normaliseOption","o","label","Combobox","forwardRef","_ref","ref","onChange","_ref$options","options","_ref$multiple","multiple","_ref$freeSolo","freeSolo","disabled","error","_ref$fullWidth","fullWidth","_ref$loading","groupBy","getOptionLabel","isOptionEqualToValue","filterOptions","renderOption","onInputChange","labels","sx","ariaDescribedBy","ariaInvalid","ariaRequired","rest","L","mergeLabels","effectivePlaceholder","normalised","useMemo","map","autoGroupBy","some","group","labelOf","useCallback","_ref2","_obj$label","eqOf","opt","val","a","b","handleChange","_event","next","arr","Array","isArray","out","n","_value","_value2","single","resolvedValue","v","find","anyHelper","helper","effectiveRenderOption","props","option","optValue","optionKey","createElement","jsxs","display","flexDirection","paddingY","minWidth","children","jsx","component","fontSize","color","lineHeight","noOptionsText","loadingText","clearText","closeText","openText","size","renderTags","values","getTagProps","index","rawVal","tagKey","height","paddingInline","renderInput","params","_params$slotProps","_params$slotProps$inp","_params$slotProps2","_params$slotProps$htm","_params$slotProps3","paramsSlotProps","slotProps","inputSlot","htmlInput","endAdornment","Fragment","role","marginRight","_default","exports"],"sources":["../../../src/lib/v2/components/Combobox.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport MuiAutocomplete from \"@mui/material/Autocomplete\";\r\nimport type { AutocompleteProps, AutocompleteRenderGetTagProps } from \"@mui/material/Autocomplete\";\r\nimport TextField from \"@mui/material/TextField\";\r\nimport MuiChip from \"@mui/material/Chip\";\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\nimport Box from \"@mui/material/Box\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * Combobox — Portnet UI v2\r\n *\r\n * Charter §03 · Component \"Combobox / Autocomplete\". Required by R-Sel.1\r\n * for any Select with > 30 options.\r\n *\r\n * Single:\r\n * <Field label=\"Pays\">\r\n * <Combobox\r\n * value={country}\r\n * onChange={setCountry}\r\n * options={countries} // strings or {value,label}\r\n * />\r\n * </Field>\r\n *\r\n * Multi (with helper text per option):\r\n * <Field label=\"Régime\">\r\n * <Combobox\r\n * value={regime}\r\n * onChange={setRegime}\r\n * options={[\r\n * { value: \"atpa\", label: \"ATPA\",\r\n * helper: \"Admission Temporaire avec Paiement\" },\r\n * { value: \"atpf\", label: \"ATPF\",\r\n * helper: \"Admission Temporaire en Franchise\" },\r\n * ]}\r\n * />\r\n * </Field>\r\n *\r\n * Async (server-side filter):\r\n * const [input, setInput] = useState(\"\");\r\n * const [opts, setOpts] = useState([]);\r\n * const [loading, setLoading] = useState(false);\r\n * useEffect(() => {\r\n * const t = setTimeout(() => {\r\n * setLoading(true);\r\n * fetch(`/api/companies?q=${input}`)\r\n * .then(r => r.json()).then(setOpts)\r\n * .finally(() => setLoading(false));\r\n * }, 250);\r\n * return () => clearTimeout(t);\r\n * }, [input]);\r\n *\r\n * <Combobox\r\n * value={company}\r\n * onChange={setCompany}\r\n * onInputChange={(_, v) => setInput(v)}\r\n * options={opts}\r\n * loading={loading}\r\n * filterOptions={(x) => x} // disable client-side filter\r\n * />\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <Combobox labels={{\r\n * noOptions: \"No results\",\r\n * loading: \"Loading…\",\r\n * clear: \"Clear\",\r\n * close: \"Close\",\r\n * open: \"Open\",\r\n * placeholder: \"Select…\",\r\n * }} />\r\n *\r\n * Defaults are French; partial overrides are merged onto the defaults.\r\n *\r\n * A11y:\r\n * - Built on MuiAutocomplete (full WAI-ARIA combobox pattern).\r\n * - When option.helper is present, it is rendered visually AND\r\n * becomes part of the option's accessible name (so screen-reader\r\n * users hear \"ATPA, Admission Temporaire avec Paiement\" when\r\n * navigating).\r\n * - Loading spinner is decorative (aria-hidden); the listbox already\r\n * announces \"Chargement…\" via the loadingText prop.\r\n * - COMBO-1: Field-injected aria-describedby / aria-invalid / aria-required\r\n * are threaded onto the native <input> via renderInput's htmlInput slot.\r\n * MUI spreads unknown top-level props onto the Autocomplete ROOT, so\r\n * without this the error association / invalid state would never reach\r\n * the combobox input for screen-reader users.\r\n */\r\n\r\nexport type ComboboxOptionValue = string | number | boolean;\r\n\r\nexport interface ComboboxOption {\r\n value: ComboboxOptionValue;\r\n label?: React.ReactNode | undefined;\r\n group?: string | undefined;\r\n helper?: React.ReactNode | undefined;\r\n}\r\n\r\n/**\r\n * Loose-but-honest value union used for BOTH the `value` input and the\r\n * `onChange` output, matching the any-based JS: callers may pass bare\r\n * values or option objects (single or array), and onChange re-emits bare\r\n * values (objects unwrapped to their `.value`).\r\n */\r\nexport type ComboboxValue =\r\n | ComboboxOptionValue\r\n | ComboboxOption\r\n | null\r\n | Array<ComboboxOptionValue | ComboboxOption>;\r\n\r\nexport interface ComboboxLabels {\r\n noOptions?: string | undefined;\r\n loading?: string | undefined;\r\n clear?: string | undefined;\r\n close?: string | undefined;\r\n open?: string | undefined;\r\n placeholder?: string | undefined;\r\n}\r\n\r\n/**\r\n * The option generic handed to MUI Autocomplete. It must admit raw\r\n * primitive values (not just option objects) because resolvedValue and\r\n * handleChange deliberately round-trip bare values (a numeric id stored\r\n * by FormikCombobox, a freeSolo string, etc.).\r\n */\r\ntype ComboboxItem = ComboboxOption | ComboboxOptionValue;\r\ntype MuiACProps = AutocompleteProps<ComboboxItem, boolean, false, boolean>;\r\n\r\n/**\r\n * MuiAutocomplete instantiated with `Multiple: boolean` (not a literal) lets\r\n * value/onChange's conditional types distribute naturally into `T | T[]`,\r\n * which is exactly what this component needs to handle both modes at\r\n * runtime from one implementation. MUI's `renderTags`, however, disappears\r\n * from the props type entirely under this instantiation (TS2339) — and,\r\n * per this MUI version, doesn't reappear even when explicitly instantiated\r\n * with the literal `Multiple = true` (TS2344: \"renderTags\" doesn't satisfy\r\n * `keyof AutocompleteProps<..., true, ...>` either). Rather than depend on\r\n * MUI's exact (apparently unstable across instantiations) type surface for\r\n * this one field, declare its shape ourselves — it matches exactly how the\r\n * callback is invoked below (values.map + getTagProps({ index })), and the\r\n * real runtime Autocomplete accepts renderTags regardless of the Multiple\r\n * type param.\r\n *\r\n * Defined once at module scope (not inside the component) so the cast\r\n * doesn't mint a new component identity on every render — that would make\r\n * React unmount/remount the Autocomplete on every parent re-render and drop\r\n * focus/open-state.\r\n */\r\nconst AutocompleteWithTags = MuiAutocomplete as unknown as React.ForwardRefExoticComponent<\r\n MuiACProps & {\r\n renderTags?: (\r\n value: ComboboxItem[],\r\n getTagProps: AutocompleteRenderGetTagProps\r\n ) => React.ReactNode;\r\n } & React.RefAttributes<HTMLDivElement>\r\n>;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n noOptions: \"Aucun résultat\",\r\n loading: \"Chargement…\",\r\n clear: \"Effacer\",\r\n close: \"Fermer\",\r\n open: \"Ouvrir\",\r\n placeholder: \"Sélectionner…\",\r\n});\r\n\r\nconst normaliseOption = (o: string | ComboboxOption): ComboboxOption =>\r\n typeof o === \"string\" ? { value: o, label: o } : o;\r\n\r\nexport interface ComboboxProps\r\n extends Omit<\r\n MuiACProps,\r\n | \"value\"\r\n | \"onChange\"\r\n | \"options\"\r\n | \"multiple\"\r\n | \"freeSolo\"\r\n | \"renderInput\"\r\n | \"renderTags\"\r\n | \"renderOption\"\r\n | \"getOptionLabel\"\r\n | \"isOptionEqualToValue\"\r\n | \"groupBy\"\r\n | \"filterOptions\"\r\n | \"onInputChange\"\r\n | \"loading\"\r\n | \"disabled\"\r\n | \"fullWidth\"\r\n | \"sx\"\r\n // AutocompleteProps carries its own loosely-typed `ref` (Ref<unknown>,\r\n // for its polymorphic root support) that isn't the \"real\" ref for this\r\n // component. Exclude it here so it never enters ComboboxProps as an\r\n // inherited field — the actual ref (RefAttributes<HTMLDivElement>) comes\r\n // from this component's own React.forwardRef below. Without this,\r\n // Omit<ComboboxProps, ...>-based prop types (e.g. FormikComboboxProps)\r\n // silently carry the stray ref through into their ...rest spreads.\r\n | \"ref\"\r\n > {\r\n value?: ComboboxValue | undefined;\r\n onChange?: ((value: ComboboxValue) => void) | undefined;\r\n options?: Array<string | ComboboxOption> | undefined;\r\n multiple?: boolean | undefined;\r\n freeSolo?: boolean | undefined;\r\n placeholder?: string | undefined;\r\n disabled?: boolean | undefined;\r\n error?: boolean | undefined;\r\n fullWidth?: boolean | undefined;\r\n loading?: boolean | undefined;\r\n groupBy?: ((option: ComboboxItem) => string) | undefined;\r\n getOptionLabel?: ((option: ComboboxItem) => string) | undefined;\r\n isOptionEqualToValue?: ((option: ComboboxItem, value: ComboboxItem) => boolean) | undefined;\r\n filterOptions?: MuiACProps[\"filterOptions\"] | undefined;\r\n renderOption?: MuiACProps[\"renderOption\"] | undefined;\r\n onInputChange?: MuiACProps[\"onInputChange\"] | undefined;\r\n labels?: ComboboxLabels | undefined;\r\n sx?: SxProps<Theme> | undefined;\r\n}\r\n\r\nconst Combobox = React.forwardRef<HTMLDivElement, ComboboxProps>(function Combobox(\r\n {\r\n value,\r\n onChange,\r\n options = [],\r\n multiple = false,\r\n freeSolo = false,\r\n placeholder,\r\n disabled,\r\n error,\r\n fullWidth = true,\r\n loading = false,\r\n groupBy,\r\n getOptionLabel,\r\n isOptionEqualToValue,\r\n filterOptions,\r\n renderOption,\r\n onInputChange,\r\n labels,\r\n sx,\r\n // COMBO-1 — pulled out of ...rest so they DON'T land on the Autocomplete\r\n // root; threaded onto the native <input> in renderInput below.\r\n \"aria-describedby\": ariaDescribedBy,\r\n \"aria-invalid\": ariaInvalid,\r\n \"aria-required\": ariaRequired,\r\n ...rest\r\n },\r\n ref\r\n) {\r\n const L = mergeLabels(DEFAULT_LABELS, labels);\r\n // Legacy `placeholder` prop wins over labels.placeholder.\r\n const effectivePlaceholder = placeholder ?? L.placeholder;\r\n\r\n const normalised = React.useMemo(() => options.map(normaliseOption), [options]);\r\n\r\n // Default groupBy — uses option.group if any option has one.\r\n const autoGroupBy = React.useMemo((): ((option: ComboboxItem) => string) | undefined => {\r\n if (groupBy) return groupBy;\r\n if (normalised.some((o) => o && typeof o === \"object\" && o.group)) {\r\n return (o: ComboboxItem): string => (o && typeof o === \"object\" ? o.group || \"\" : \"\");\r\n }\r\n return undefined;\r\n }, [normalised, groupBy]);\r\n\r\n const labelOf = React.useCallback(\r\n (o: ComboboxItem): string => {\r\n if (getOptionLabel) return getOptionLabel(o);\r\n if (o == null) return \"\";\r\n if (typeof o === \"string\") return o;\r\n const obj = o as ComboboxOption;\r\n return String(obj.label ?? obj.value ?? \"\");\r\n },\r\n [getOptionLabel]\r\n );\r\n\r\n const eqOf = React.useCallback(\r\n (opt: ComboboxItem, val: unknown): boolean => {\r\n if (isOptionEqualToValue) return isOptionEqualToValue(opt, val as ComboboxItem);\r\n if (opt == null || val == null) return opt === val;\r\n const a = typeof opt === \"string\" ? opt : (opt as ComboboxOption).value;\r\n // B-eq: primitives (numbers, booleans) are compared as-is.\r\n // Previously `val.value` for a non-string, non-object value\r\n // (e.g. a numeric id stored by FormikCombobox via setFieldValue)\r\n // resolved to undefined, so the lookup never matched and the\r\n // selected option was never visually reflected after picking.\r\n const b =\r\n typeof val === \"string\" ? val\r\n : (val !== null && typeof val === \"object\") ? (val as { value?: unknown }).value\r\n : val; // number, boolean, etc. — use the primitive directly\r\n return a === b;\r\n },\r\n [isOptionEqualToValue]\r\n );\r\n\r\n const handleChange = (\r\n _event: React.SyntheticEvent,\r\n next: ComboboxItem | ComboboxItem[] | null\r\n ): void => {\r\n if (!onChange) return;\r\n // Re-emit raw value(s) — strings stay strings, objects get unwrapped to\r\n // their `.value` so callers don't have to deal with the option shape.\r\n if (multiple) {\r\n const arr = Array.isArray(next) ? next : [];\r\n const out = arr.map((n) => (typeof n === \"string\" ? n : (n as ComboboxOption).value ?? n));\r\n onChange(out);\r\n return;\r\n }\r\n if (next == null) {\r\n onChange(null);\r\n } else {\r\n const single = next as ComboboxItem;\r\n onChange(typeof single === \"string\" ? single : (single as ComboboxOption).value ?? single);\r\n }\r\n };\r\n\r\n // Resolve raw value(s) back to option objects so MUI Autocomplete can\r\n // display labels properly.\r\n const resolvedValue = React.useMemo(() => {\r\n if (multiple) {\r\n const arr = Array.isArray(value) ? value : [];\r\n return arr.map(\r\n (v) =>\r\n normalised.find((o) => eqOf(o, v)) ||\r\n (typeof v === \"string\" ? { value: v, label: v } : v)\r\n );\r\n }\r\n if (value == null || value === \"\") return null;\r\n return (\r\n normalised.find((o) => eqOf(o, value)) ||\r\n (typeof value === \"string\" ? { value, label: value } : (value as ComboboxItem))\r\n );\r\n }, [value, normalised, multiple, eqOf]);\r\n\r\n // Auto-render helper text when at least one option has one. Hosts can\r\n // override entirely by passing their own renderOption.\r\n const anyHelper = normalised.some(\r\n (o) => o && typeof o === \"object\" && o.helper != null && o.helper !== \"\"\r\n );\r\n const effectiveRenderOption: MuiACProps[\"renderOption\"] = React.useMemo(() => {\r\n if (renderOption) return renderOption;\r\n if (!anyHelper) return undefined;\r\n // MUI Autocomplete passes (props, option, state) — `props` already\r\n // carries the correct <li> role/id/aria-selected. We render the\r\n // option content inside it; the helper line is in-flow text so it\r\n // becomes part of the option's accessible name automatically.\r\n return (props: React.HTMLAttributes<HTMLLIElement>, option: ComboboxItem): React.ReactNode => {\r\n const label = labelOf(option);\r\n const helper = option && typeof option === \"object\" ? option.helper : null;\r\n const optValue = typeof option === \"object\" && option !== null ? option.value : undefined;\r\n const optionKey: React.Key =\r\n optValue == null ? label\r\n : typeof optValue === \"boolean\" ? String(optValue)\r\n : optValue;\r\n return (\r\n <li {...props} key={optionKey}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", paddingY: 0.25, minWidth: 0 }}>\r\n <Box component=\"span\" sx={{ fontSize: \"var(--text-sm)\", color: \"var(--fg)\" }}>\r\n {label}\r\n </Box>\r\n {helper && (\r\n <Box\r\n component=\"span\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n lineHeight: \"var(--lh-snug)\",\r\n }}\r\n >\r\n {helper}\r\n </Box>\r\n )}\r\n </Box>\r\n </li>\r\n );\r\n };\r\n }, [renderOption, anyHelper, labelOf]);\r\n\r\n return (\r\n <AutocompleteWithTags\r\n ref={ref}\r\n multiple={multiple}\r\n freeSolo={freeSolo}\r\n disabled={disabled}\r\n fullWidth={fullWidth}\r\n value={resolvedValue}\r\n onChange={handleChange}\r\n onInputChange={onInputChange}\r\n options={normalised}\r\n loading={loading}\r\n groupBy={autoGroupBy}\r\n getOptionLabel={labelOf}\r\n isOptionEqualToValue={eqOf}\r\n filterOptions={filterOptions}\r\n renderOption={effectiveRenderOption}\r\n noOptionsText={L.noOptions}\r\n loadingText={L.loading}\r\n clearText={L.clear}\r\n closeText={L.close}\r\n openText={L.open}\r\n size=\"small\"\r\n renderTags={(values: ComboboxItem[], getTagProps: AutocompleteRenderGetTagProps) =>\r\n values.map((option: ComboboxItem, index: number) => {\r\n const rawVal =\r\n typeof option === \"object\" && option !== null ? option.value : option;\r\n const tagKey: React.Key =\r\n rawVal == null ? index\r\n : typeof rawVal === \"boolean\" ? String(rawVal)\r\n : rawVal;\r\n return (\r\n <MuiChip\r\n {...getTagProps({ index })}\r\n key={tagKey}\r\n size=\"small\"\r\n label={labelOf(option)}\r\n sx={{\r\n height: 22,\r\n \"& .MuiChip-label\": { paddingInline: 1, fontSize: 12 },\r\n }}\r\n />\r\n );\r\n })\r\n }\r\n renderInput={(params) => {\r\n // MUI v9: the bag passed to renderInput carries the input slot props\r\n // at `params.slotProps.input` AND — crucially — the input element ref\r\n // at `params.slotProps.htmlInput.ref`, which MUI's Autocomplete\r\n // focuses on click. We must NOT rebuild slotProps from scratch (that\r\n // drops htmlInput → MUI focuses null → \"Cannot read properties of null\r\n // (reading 'focus')\"). Instead, spread the whole params.slotProps and\r\n // only override the input slot's endAdornment. inputSlot is annotated\r\n // as { endAdornment? } so the runtime spread still forwards htmlInput.\r\n // params.InputProps was the pre-v9 TextField prop, fully replaced by\r\n // params.slotProps.input — no longer exists on AutocompleteRenderInputParams.\r\n const paramsSlotProps = params.slotProps ?? {};\r\n const inputSlot: { endAdornment?: React.ReactNode } =\r\n params.slotProps?.input ?? {};\r\n return (\r\n <TextField\r\n {...params}\r\n placeholder={effectivePlaceholder}\r\n error={!!error}\r\n slotProps={{\r\n ...paramsSlotProps,\r\n // COMBO-1 — merge Field's aria onto the native <input>. Spread\r\n // MUI's existing htmlInput FIRST to keep its ref + combobox aria\r\n // (role/aria-expanded/aria-controls/aria-activedescendant); add\r\n // ours only when defined (exactOptionalPropertyTypes-safe).\r\n htmlInput: {\r\n ...(params.slotProps?.htmlInput ?? {}),\r\n ...(ariaDescribedBy != null ? { \"aria-describedby\": ariaDescribedBy } : {}),\r\n ...(ariaInvalid != null ? { \"aria-invalid\": ariaInvalid } : {}),\r\n ...(ariaRequired != null ? { \"aria-required\": ariaRequired } : {}),\r\n },\r\n input: {\r\n ...inputSlot,\r\n endAdornment: (\r\n <>\r\n {/* R-Ar.3 — decorative spinner. The listbox already announces\r\n via the loadingText prop; making the spinner a second\r\n progressbar in the AT tree would just create duplicate\r\n noise. */}\r\n {loading ? (\r\n <CircularProgress\r\n size={14}\r\n aria-hidden=\"true\"\r\n role=\"presentation\"\r\n sx={{ marginRight: 0.5 }}\r\n />\r\n ) : null}\r\n {inputSlot.endAdornment}\r\n </>\r\n ),\r\n },\r\n }}\r\n />\r\n );\r\n }}\r\n sx={sx}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\nexport default Combobox;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,34 +2,34 @@ import * as React from "react";
|
|
|
2
2
|
export interface CommandPaletteItem {
|
|
3
3
|
id: string | number;
|
|
4
4
|
label: React.ReactNode;
|
|
5
|
-
icon?: React.ReactNode;
|
|
6
|
-
shortcut?: React.ReactNode;
|
|
7
|
-
keywords?: string;
|
|
8
|
-
onSelect?: () => void;
|
|
5
|
+
icon?: React.ReactNode | undefined;
|
|
6
|
+
shortcut?: React.ReactNode | undefined;
|
|
7
|
+
keywords?: string | undefined;
|
|
8
|
+
onSelect?: (() => void) | undefined;
|
|
9
9
|
}
|
|
10
10
|
export interface CommandPaletteGroup {
|
|
11
11
|
id: string;
|
|
12
|
-
title?: React.ReactNode;
|
|
12
|
+
title?: React.ReactNode | undefined;
|
|
13
13
|
items: CommandPaletteItem[];
|
|
14
14
|
}
|
|
15
15
|
export interface CommandPaletteLabels {
|
|
16
|
-
title?: string;
|
|
17
|
-
footerHint?: string;
|
|
18
|
-
closeButton?: string;
|
|
19
|
-
resultsCount?: (n: number) => React.ReactNode;
|
|
20
|
-
pinnedTitle?: React.ReactNode;
|
|
21
|
-
recentTitle?: React.ReactNode;
|
|
16
|
+
title?: string | undefined;
|
|
17
|
+
footerHint?: string | undefined;
|
|
18
|
+
closeButton?: string | undefined;
|
|
19
|
+
resultsCount?: ((n: number) => React.ReactNode) | undefined;
|
|
20
|
+
pinnedTitle?: React.ReactNode | undefined;
|
|
21
|
+
recentTitle?: React.ReactNode | undefined;
|
|
22
22
|
}
|
|
23
23
|
export interface CommandPaletteProps {
|
|
24
|
-
open?: boolean;
|
|
25
|
-
onClose?: () => void;
|
|
26
|
-
groups?: CommandPaletteGroup[];
|
|
27
|
-
recentItems?: CommandPaletteItem[];
|
|
28
|
-
pinnedItems?: CommandPaletteItem[];
|
|
29
|
-
placeholder?: string;
|
|
30
|
-
emptyState?: React.ReactNode;
|
|
31
|
-
onQueryChange?: (q: string) => void;
|
|
32
|
-
labels?: CommandPaletteLabels;
|
|
24
|
+
open?: boolean | undefined;
|
|
25
|
+
onClose?: (() => void) | undefined;
|
|
26
|
+
groups?: CommandPaletteGroup[] | undefined;
|
|
27
|
+
recentItems?: CommandPaletteItem[] | undefined;
|
|
28
|
+
pinnedItems?: CommandPaletteItem[] | undefined;
|
|
29
|
+
placeholder?: string | undefined;
|
|
30
|
+
emptyState?: React.ReactNode | undefined;
|
|
31
|
+
onQueryChange?: ((q: string) => void) | undefined;
|
|
32
|
+
labels?: CommandPaletteLabels | undefined;
|
|
33
33
|
}
|
|
34
34
|
declare function CommandPalette({ open, onClose, groups, recentItems, pinnedItems, placeholder, emptyState, onQueryChange, labels, }: CommandPaletteProps): React.JSX.Element;
|
|
35
35
|
export default CommandPalette;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6G/B,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CACrC;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IAC5D,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,MAAM,CAAC,EAAE,mBAAmB,EAAE,GAAG,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAClD,MAAM,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC3C;AAqID,iBAAS,cAAc,CAAC,EACtB,IAAI,EACJ,OAAO,EACP,MAAW,EACX,WAAW,EACX,WAAW,EACX,WAAgD,EAChD,UAA8B,EAC9B,aAAa,EACb,MAAM,GACP,EAAE,mBAAmB,qBAgWrB;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -12,6 +12,7 @@ var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
|
12
12
|
var _Search = _interopRequireDefault(require("@mui/icons-material/Search"));
|
|
13
13
|
var _Close = _interopRequireDefault(require("@mui/icons-material/Close"));
|
|
14
14
|
var _useFocusTrap = _interopRequireDefault(require("../hooks/useFocusTrap"));
|
|
15
|
+
var _mergeLabels = require("../utils/mergeLabels");
|
|
15
16
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
17
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
17
18
|
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); }
|
|
@@ -20,11 +21,6 @@ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableTo
|
|
|
20
21
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
21
22
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
22
23
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
23
|
-
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; }
|
|
24
|
-
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; }
|
|
25
|
-
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; }
|
|
26
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
27
|
-
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); }
|
|
28
24
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
29
25
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
30
26
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -320,7 +316,7 @@ function CommandPalette(_ref) {
|
|
|
320
316
|
onQueryChange = _ref.onQueryChange,
|
|
321
317
|
labels = _ref.labels;
|
|
322
318
|
var L = React.useMemo(function () {
|
|
323
|
-
return
|
|
319
|
+
return (0, _mergeLabels.mergeLabels)(DEFAULT_LABELS, labels);
|
|
324
320
|
}, [labels]);
|
|
325
321
|
var _React$useState3 = React.useState(""),
|
|
326
322
|
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandPalette.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_Box","_IconButton","_Search","_Close","_useFocusTrap","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","iter","Symbol","iterator","Array","from","isArray","_arrayLikeToArray","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","Number","_createForOfIteratorHelper","o","allowArrayLike","it","F","s","n","done","e","_e2","f","normalCompletion","didErr","err","step","next","_e3","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","toString","slice","constructor","name","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","DEBOUNCE_MS","DEFAULT_LABELS","freeze","title","footerHint","closeButton","resultsCount","concat","pinnedTitle","recentTitle","BACKDROP_SLOT_PROPS","sx","backgroundColor","useDebounced","ms","_React$useState","useState","_React$useState2","out","setOut","useEffect","t","setTimeout","clearTimeout","normalize","replace","toLowerCase","subsequenceRun","hay","token","consecutive","bestConsecutive","h","scoreToken","startsWith","wbIdx","indexOf","subIdx","Math","min","run","scoreQuery","haystack","query","tokens","split","Boolean","total","_iterator","_step","filterGroups","groups","q","trim","map","g","id","items","_iterator2","_step2","scored","_iterator3","_step3","label","keywords","item","score","sort","a","b","CommandPalette","_ref","open","onClose","_ref$groups","recentItems","pinnedItems","_ref$placeholder","placeholder","_ref$emptyState","emptyState","onQueryChange","labels","L","useMemo","_React$useState3","_React$useState4","setQuery","debouncedQuery","_React$useState5","_React$useState6","highlight","setHighlight","inputRef","useRef","listRef","titleId","useId","listId","inputId","paperRef","useFocusTrap","allGroups","hasPinned","hasRecent","visibleGroups","itemsOnly","flatMap","max","_listRef$current","node","current","querySelector","scrollIntoView","block","activate","index","_it$onSelect","onSelect","onInputKeyDown","preventDefault","onInputChange","activeItemId","slotProps","paper","ref","width","maxWidth","borderRadius","boxShadow","margin","overflow","backdrop","jsxs","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","children","jsx","className","display","alignItems","gap","padding","borderBottom","color","fontSize","component","type","role","autoFocus","onChange","onKeyDown","flex","border","outline","background","fontFamily","fontWeight","size","onClick","maxHeight","overflowY","textAlign","headerId","textTransform","letterSpacing","entry","isActive","idx","onMouseEnter","cursor","icon","minWidth","textOverflow","whiteSpace","shortcut","justifyContent","borderTop","_default","exports"],"sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\n\r\n/**\r\n * CommandPalette - Portnet UI v2\r\n *\r\n * Charter §03 / §07 · ⌘K command palette. Keyboard-first launcher for pages\r\n * and actions across the app.\r\n *\r\n * const [open, setOpen] = useState(false);\r\n * useEffect(() => {\r\n * const onKey = (e) => {\r\n * if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\r\n * e.preventDefault();\r\n * setOpen(true);\r\n * }\r\n * };\r\n * window.addEventListener(\"keydown\", onKey);\r\n * return () => window.removeEventListener(\"keydown\", onKey);\r\n * }, []);\r\n *\r\n * <CommandPalette\r\n * open={open}\r\n * onClose={() => setOpen(false)}\r\n * groups={[\r\n * { id: \"pages\", title: \"Pages\", items: [\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * { id: \"titres\", label: \"Titres d'importation\", onSelect: () => nav(\"/titres\") },\r\n * ]},\r\n * { id: \"actions\", title: \"Actions\", items: [\r\n * { id: \"new-titre\", label: \"Nouveau titre\", icon: <AddIcon />, shortcut: \"C\", onSelect: createTitre },\r\n * ]},\r\n * ]}\r\n * />\r\n *\r\n * Recent + Pinned items (Batch 16 / H4)\r\n * -------------------------------------\r\n * <CommandPalette\r\n * pinnedItems={[\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * ]}\r\n * recentItems={[\r\n * { id: \"titre-2025-IM-0042\", label: \"2025-IM-0042 (SOFRANE SA)\", onSelect: () => nav(\"/titres/2025-IM-0042\") },\r\n * ]}\r\n * groups={[ ... ]}\r\n * />\r\n *\r\n * Both extras are HOST-MANAGED. Lib does NOT track selections or\r\n * pinning state — track in your per-item onSelect handler and\r\n * persist to localStorage / server prefs as a host concern.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <CommandPalette\r\n * placeholder=\"Search a page or action…\"\r\n * emptyState=\"No result.\"\r\n * labels={{\r\n * title: \"Command palette\",\r\n * footerHint: \"↑↓ to navigate · ↵ to select · Esc to close\",\r\n * closeButton: \"Close palette\",\r\n * resultsCount: (n) => `${n} result${n === 1 ? \"\" : \"s\"}`,\r\n * pinnedTitle: \"Pinned\",\r\n * recentTitle: \"Recent\",\r\n * }}\r\n * />\r\n *\r\n * `resultsCount` is a function so the host can plug in proper plural\r\n * rules (Intl.PluralRules, ICU MessageFormat, i18next, …).\r\n *\r\n * Matching behaviour (Batch 13 / D2):\r\n * The search is fuzzy. Each match is scored across four tiers\r\n * (prefix > word-boundary > substring > subsequence) and within\r\n * each group items are surfaced in descending score order.\r\n * Multi-token queries (\"tit imp\") split on whitespace and require\r\n * every token to hit somewhere; final score is the per-token\r\n * average. Diacritics are folded — \"Emile\" matches \"Émile\".\r\n *\r\n * Focus management (R-F.2):\r\n * Backed by the v2 useFocusTrap hook (Batch 3). The search <input>\r\n * declares `autoFocus`, so on open the trap's initial-focus rAF\r\n * lands directly on it. The input is a role=\"combobox\" and carries an\r\n * aria-label (CP-1) so screen readers announce a name, not just a role.\r\n */\r\n\r\nconst DEBOUNCE_MS = 80;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n title: \"Palette de commandes\",\r\n footerHint: \"↑↓ pour naviguer · ↵ pour sélectionner · Esc pour fermer\",\r\n closeButton: \"Fermer la palette\",\r\n resultsCount: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n pinnedTitle: \"Épinglés\",\r\n recentTitle: \"Récents\",\r\n});\r\n\r\n// MUI v9: backdrop slot bag. Hoisted — its content (only an sx token)\r\n// is independent of any palette instance state.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-G.2 / R-AI.1 - backdrop derived from the live --fg token (matches\r\n // Modal). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nexport interface CommandPaletteItem {\r\n id: string | number;\r\n label: React.ReactNode;\r\n icon?: React.ReactNode;\r\n shortcut?: React.ReactNode;\r\n keywords?: string;\r\n onSelect?: () => void;\r\n}\r\n\r\nexport interface CommandPaletteGroup {\r\n id: string;\r\n title?: React.ReactNode;\r\n items: CommandPaletteItem[];\r\n}\r\n\r\nexport interface CommandPaletteLabels {\r\n title?: string;\r\n footerHint?: string;\r\n closeButton?: string;\r\n resultsCount?: (n: number) => React.ReactNode;\r\n pinnedTitle?: React.ReactNode;\r\n recentTitle?: React.ReactNode;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n open?: boolean;\r\n onClose?: () => void;\r\n groups?: CommandPaletteGroup[];\r\n recentItems?: CommandPaletteItem[];\r\n pinnedItems?: CommandPaletteItem[];\r\n placeholder?: string;\r\n emptyState?: React.ReactNode;\r\n onQueryChange?: (q: string) => void;\r\n labels?: CommandPaletteLabels;\r\n}\r\n\r\nfunction useDebounced<T>(value: T, ms: number): T {\r\n const [out, setOut] = React.useState(value);\r\n React.useEffect(() => {\r\n const t = setTimeout(() => setOut(value), ms);\r\n return () => clearTimeout(t);\r\n }, [value, ms]);\r\n return out;\r\n}\r\n\r\n/* ── Fuzzy matching (D2) ───────────────────────────────────────────────\r\n * Module-level pure helpers. No external dep, no allocation per match\r\n * beyond the obligatory tokenisation Array.\r\n *\r\n * Score scale is conventional, NOT meaningful in absolute terms:\r\n * - 0 → no match (filtered out)\r\n * - higher → more relevant (sorted descending within each group)\r\n */\r\n\r\n/**\r\n * NFD-normalise + strip combining marks + lowercase. Folds diacritics\r\n * so \"Émile\" → \"emile\" and \"Café\" → \"cafe\", letting users search\r\n * without typing accents. The unicode range \\u0300-\\u036F covers the\r\n * Combining Diacritical Marks block (U+0300..U+036F).\r\n */\r\nfunction normalize(s: string): string {\r\n if (!s) return \"\";\r\n return String(s).normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Subsequence match score — how well does `token` appear (in order,\r\n * not necessarily contiguous) inside `hay`?\r\n *\r\n * - Returns 0 if any character is missing.\r\n * - Otherwise returns the longest CONSECUTIVE run divided by the\r\n * token length. So \"imp\" inside \"important\" gets ratio 1.0\r\n * (whole word matched contiguously), while \"imp\" inside\r\n * \"i_m_p\" (gaps) gets a low ratio.\r\n *\r\n * The contiguous-run heuristic is much cheaper than a full Smith-\r\n * Waterman and good enough for command-palette UX.\r\n */\r\nfunction subsequenceRun(hay: string, token: string): number {\r\n let i = 0;\r\n let consecutive = 0;\r\n let bestConsecutive = 0;\r\n for (let h = 0; h < hay.length && i < token.length; h += 1) {\r\n if (hay[h] === token[i]) {\r\n i += 1;\r\n consecutive += 1;\r\n if (consecutive > bestConsecutive) bestConsecutive = consecutive;\r\n } else {\r\n consecutive = 0;\r\n }\r\n }\r\n if (i < token.length) return 0;\r\n return bestConsecutive / token.length;\r\n}\r\n\r\n/**\r\n * Score a single token against a haystack. Four tiers, best wins.\r\n * Both inputs are assumed already normalised (lowercase, no diacritics).\r\n */\r\nfunction scoreToken(hay: string, token: string): number {\r\n if (hay.startsWith(token)) return 100;\r\n\r\n const wbIdx = hay.indexOf(\" \" + token);\r\n if (wbIdx >= 0) return 80;\r\n\r\n const subIdx = hay.indexOf(token);\r\n if (subIdx >= 0) {\r\n return 60 - Math.min(20, subIdx * 0.1);\r\n }\r\n\r\n const run = subsequenceRun(hay, token);\r\n if (run > 0) return 40 * run;\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Score a multi-token query. Splits on whitespace; every token must hit\r\n * somewhere. Returns the average across tokens, or 0 if any token misses.\r\n */\r\nfunction scoreQuery(haystack: string, query: string): number {\r\n const hay = normalize(haystack);\r\n const tokens = normalize(query).split(/\\s+/).filter(Boolean);\r\n if (tokens.length === 0) return 1;\r\n if (!hay) return 0;\r\n\r\n let total = 0;\r\n for (const token of tokens) {\r\n const s = scoreToken(hay, token);\r\n if (s === 0) return 0;\r\n total += s;\r\n }\r\n return total / tokens.length;\r\n}\r\n\r\n/**\r\n * Filter `groups` against the query. Within each group, items are\r\n * surfaced in descending score order (most relevant first). Group\r\n * order itself is preserved — groups are author-defined categories,\r\n * not relevance buckets.\r\n *\r\n * Empty / whitespace-only query → return groups untouched (just drop\r\n * the empty ones). Preserves the original \"no query = browse\" UX.\r\n */\r\nfunction filterGroups(groups: CommandPaletteGroup[], query: string): CommandPaletteGroup[] {\r\n const q = query.trim();\r\n if (!q) {\r\n return groups\r\n .map((g) => ({ id: g.id, title: g.title, items: g.items }))\r\n .filter((g) => g.items.length > 0);\r\n }\r\n\r\n const out: CommandPaletteGroup[] = [];\r\n for (const g of groups) {\r\n const scored: Array<{ item: CommandPaletteItem; score: number }> = [];\r\n for (const it of g.items) {\r\n const hay = `${it.label} ${it.keywords || \"\"}`;\r\n const s = scoreQuery(hay, q);\r\n if (s > 0) scored.push({ item: it, score: s });\r\n }\r\n if (scored.length === 0) continue;\r\n scored.sort((a, b) => b.score - a.score);\r\n out.push({ id: g.id, title: g.title, items: scored.map((s) => s.item) });\r\n }\r\n return out;\r\n}\r\n\r\nfunction CommandPalette({\r\n open,\r\n onClose,\r\n groups = [],\r\n recentItems,\r\n pinnedItems,\r\n placeholder = \"Rechercher une page, une action…\",\r\n emptyState = \"Aucun résultat.\",\r\n onQueryChange,\r\n labels,\r\n}: CommandPaletteProps) {\r\n const L = React.useMemo(\r\n () => (labels ? { ...DEFAULT_LABELS, ...labels } : DEFAULT_LABELS),\r\n [labels]\r\n );\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const debouncedQuery = useDebounced(query, DEBOUNCE_MS);\r\n const [highlight, setHighlight] = React.useState(0);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const listRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const listId = React.useId();\r\n const inputId = React.useId();\r\n\r\n // R-F.2 - the v2 trap is wired on the Dialog Paper element, activated\r\n // only while the palette is open. MUI's own trap is disabled below.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef as React.RefObject<HTMLDivElement>, !!open);\r\n\r\n // H4 — synthetic groups for pinnedItems / recentItems prepended to\r\n // the host's groups. Empty extras collapse the array to `groups`\r\n // verbatim — same reference when neither prop is set, so downstream\r\n // memoisation stays valid for the no-op case.\r\n const allGroups = React.useMemo<CommandPaletteGroup[]>(() => {\r\n const hasPinned = Array.isArray(pinnedItems) && pinnedItems.length > 0;\r\n const hasRecent = Array.isArray(recentItems) && recentItems.length > 0;\r\n if (!hasPinned && !hasRecent) return groups;\r\n const out: CommandPaletteGroup[] = [];\r\n if (hasPinned) {\r\n out.push({ id: \"_pinned\", title: L.pinnedTitle, items: pinnedItems ?? [] });\r\n }\r\n if (hasRecent) {\r\n out.push({ id: \"_recent\", title: L.recentTitle, items: recentItems ?? [] });\r\n }\r\n return [...out, ...groups];\r\n }, [pinnedItems, recentItems, groups, L.pinnedTitle, L.recentTitle]);\r\n\r\n const visibleGroups = React.useMemo(\r\n () => filterGroups(allGroups, debouncedQuery),\r\n [allGroups, debouncedQuery]\r\n );\r\n const itemsOnly = React.useMemo(\r\n () => visibleGroups.flatMap((g) => g.items),\r\n [visibleGroups]\r\n );\r\n\r\n // Reset state on (re)open. Initial focus on the input is handled by\r\n // useFocusTrap above (the input carries `autoFocus`).\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setQuery(\"\");\r\n setHighlight(0);\r\n }, [open]);\r\n\r\n // Keep highlight valid when results shrink/grow\r\n React.useEffect(() => {\r\n if (highlight >= itemsOnly.length) {\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n }, [itemsOnly.length, highlight]);\r\n\r\n // Scroll the highlighted item into view\r\n React.useEffect(() => {\r\n if (!open || itemsOnly.length === 0) return;\r\n const node = listRef.current?.querySelector(`[data-item-index=\"${highlight}\"]`);\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [highlight, open, itemsOnly.length]);\r\n\r\n const activate = (index: number) => {\r\n const it = itemsOnly[index];\r\n if (!it) return;\r\n onClose?.();\r\n // Defer the action one tick so onClose can restore focus before any\r\n // navigation happens (consumer-side routing).\r\n setTimeout(() => it.onSelect?.(), 0);\r\n };\r\n\r\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h + 1) % itemsOnly.length));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h - 1 + itemsOnly.length) % itemsOnly.length));\r\n } else if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n activate(highlight);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n setHighlight(0);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setQuery(e.target.value);\r\n onQueryChange?.(e.target.value);\r\n setHighlight(0);\r\n };\r\n\r\n const activeItemId = itemsOnly[highlight] ? `${listId}-opt-${highlight}` : undefined;\r\n\r\n // MUI v9: Dialog paper + backdrop bags forwarded through slotProps.\r\n // The paper slot embeds the per-instance focus-trap ref so we\r\n // useMemo it for reference stability across renders.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: {\r\n width: \"100%\",\r\n maxWidth: 640,\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n margin: \"var(--s-3)\",\r\n overflow: \"hidden\",\r\n } satisfies SxProps<Theme>,\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n []\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={onClose}\r\n maxWidth={false}\r\n aria-labelledby={titleId}\r\n // Hand over focus management to useFocusTrap above.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n slotProps={slotProps}\r\n >\r\n <Box className=\"pui-sr-only\" id={titleId}>\r\n {L.title}\r\n </Box>\r\n\r\n {/* Search input row */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n }}\r\n >\r\n <SearchIcon\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--fg-subtle)\", fontSize: 20 }}\r\n />\r\n <Box\r\n component=\"input\"\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-controls={listId}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={activeItemId}\r\n // CP-1 — accessible name for the combobox input. The sr-only title\r\n // labels the Dialog, not this input, and a placeholder is not a\r\n // reliable accessible name; expose the placeholder text as the name.\r\n aria-label={placeholder}\r\n autoFocus\r\n value={query}\r\n onChange={onInputChange}\r\n onKeyDown={onInputKeyDown}\r\n placeholder={placeholder}\r\n sx={{\r\n flex: 1,\r\n border: 0,\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontFamily: \"inherit\",\r\n fontSize: \"var(--text-body, 14px)\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n ESC\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={onClose}\r\n aria-label={L.closeButton}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* Results listbox */}\r\n <Box\r\n ref={listRef}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-labelledby={titleId}\r\n sx={{\r\n maxHeight: 360,\r\n overflowY: \"auto\",\r\n padding: \"var(--s-2) 0\",\r\n }}\r\n >\r\n {visibleGroups.length === 0 && (\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5) var(--s-4)\",\r\n textAlign: \"center\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n {emptyState}\r\n </Box>\r\n )}\r\n {(() => {\r\n let i = -1;\r\n return visibleGroups.map((g) => {\r\n const headerId = `${listId}-h-${g.id}`;\r\n return (\r\n <Box\r\n key={g.id}\r\n role=\"group\"\r\n aria-labelledby={headerId}\r\n >\r\n <Box\r\n id={headerId}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n padding: \"var(--s-2) var(--s-4) var(--s-1)\",\r\n }}\r\n >\r\n {g.title}\r\n </Box>\r\n {g.items.map((entry) => {\r\n i += 1;\r\n const isActive = i === highlight;\r\n const idx = i;\r\n return (\r\n <Box\r\n key={entry.id}\r\n role=\"option\"\r\n id={`${listId}-opt-${idx}`}\r\n aria-selected={isActive}\r\n data-item-index={idx}\r\n onMouseEnter={() => setHighlight(idx)}\r\n onClick={() => activate(idx)}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n cursor: \"pointer\",\r\n background: isActive ? \"var(--accent-soft)\" : \"transparent\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg)\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {entry.icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg-muted)\",\r\n }}\r\n >\r\n {entry.icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n {entry.label}\r\n </Box>\r\n {entry.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {entry.shortcut}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n });\r\n })()}\r\n </Box>\r\n\r\n {/* Footer */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n background: \"var(--bg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {/* Visual-only keyboard hints. Hidden from SR — the listbox already\r\n exposes navigation via aria-activedescendant + role semantics. */}\r\n <Box aria-hidden=\"true\">{L.footerHint}</Box>\r\n {/* R-A.1 — polite live region so SR users hear the result count\r\n change as they type. aria-atomic ensures the full sentence is\r\n re-read on update. C6 — aria-relevant explicit closes NVDA +\r\n Firefox cross-sibling pull-in quirks. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\">\r\n {L.resultsCount(itemsOnly.length)}\r\n </Box>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default CommandPalette;\r\n"],"mappings":";;;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,IAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,WAAA,GAAAF,sBAAA,CAAAF,OAAA;AACA,IAAAK,OAAA,GAAAH,sBAAA,CAAAF,OAAA;AACA,IAAAM,MAAA,GAAAJ,sBAAA,CAAAF,OAAA;AAEA,IAAAO,aAAA,GAAAL,sBAAA,CAAAF,OAAA;AAAiD,IAAAQ,WAAA,GAAAR,OAAA;AAAA,SAAAE,uBAAAO,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,gBAAAA,GAAA;AAAA,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,yBAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAb,wBAAAU,GAAA,EAAAG,WAAA,SAAAA,WAAA,IAAAH,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,aAAAO,OAAA,CAAAP,GAAA,yBAAAA,GAAA,uCAAAA,GAAA,UAAAQ,KAAA,GAAAN,wBAAA,CAAAC,WAAA,OAAAK,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAT,GAAA,YAAAQ,KAAA,CAAAE,GAAA,CAAAV,GAAA,SAAAW,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAhB,GAAA,QAAAgB,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAnB,GAAA,EAAAgB,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAf,GAAA,EAAAgB,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAhB,GAAA,CAAAgB,GAAA,SAAAL,MAAA,cAAAX,GAAA,MAAAQ,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAArB,GAAA,EAAAW,MAAA,YAAAA,MAAA;AAAA,SAAAW,mBAAAC,GAAA,WAAAC,kBAAA,CAAAD,GAAA,KAAAE,gBAAA,CAAAF,GAAA,KAAAG,2BAAA,CAAAH,GAAA,KAAAI,kBAAA;AAAA,SAAAA,mBAAA,cAAAC,SAAA;AAAA,SAAAH,iBAAAI,IAAA,eAAAC,MAAA,oBAAAD,IAAA,CAAAC,MAAA,CAAAC,QAAA,aAAAF,IAAA,+BAAAG,KAAA,CAAAC,IAAA,CAAAJ,IAAA;AAAA,SAAAL,mBAAAD,GAAA,QAAAS,KAAA,CAAAE,OAAA,CAAAX,GAAA,UAAAY,iBAAA,CAAAZ,GAAA;AAAA,SAAAa,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAA1B,MAAA,CAAA0B,IAAA,CAAAF,MAAA,OAAAxB,MAAA,CAAA2B,qBAAA,QAAAC,OAAA,GAAA5B,MAAA,CAAA2B,qBAAA,CAAAH,MAAA,GAAAC,cAAA,KAAAG,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAA9B,MAAA,CAAAE,wBAAA,CAAAsB,MAAA,EAAAM,GAAA,EAAAC,UAAA,OAAAL,IAAA,CAAAM,IAAA,CAAAC,KAAA,CAAAP,IAAA,EAAAE,OAAA,YAAAF,IAAA;AAAA,SAAAQ,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAb,OAAA,CAAAvB,MAAA,CAAAuC,MAAA,OAAAC,OAAA,WAAArC,GAAA,IAAAsC,eAAA,CAAAN,MAAA,EAAAhC,GAAA,EAAAoC,MAAA,CAAApC,GAAA,SAAAH,MAAA,CAAA0C,yBAAA,GAAA1C,MAAA,CAAA2C,gBAAA,CAAAR,MAAA,EAAAnC,MAAA,CAAA0C,yBAAA,CAAAH,MAAA,KAAAhB,OAAA,CAAAvB,MAAA,CAAAuC,MAAA,GAAAC,OAAA,WAAArC,GAAA,IAAAH,MAAA,CAAAC,cAAA,CAAAkC,MAAA,EAAAhC,GAAA,EAAAH,MAAA,CAAAE,wBAAA,CAAAqC,MAAA,EAAApC,GAAA,iBAAAgC,MAAA;AAAA,SAAAM,gBAAAtD,GAAA,EAAAgB,GAAA,EAAAyC,KAAA,IAAAzC,GAAA,GAAA0C,cAAA,CAAA1C,GAAA,OAAAA,GAAA,IAAAhB,GAAA,IAAAa,MAAA,CAAAC,cAAA,CAAAd,GAAA,EAAAgB,GAAA,IAAAyC,KAAA,EAAAA,KAAA,EAAAb,UAAA,QAAAe,YAAA,QAAAC,QAAA,oBAAA5D,GAAA,CAAAgB,GAAA,IAAAyC,KAAA,WAAAzD,GAAA;AAAA,SAAA0D,eAAAG,GAAA,QAAA7C,GAAA,GAAA8C,YAAA,CAAAD,GAAA,oBAAAtD,OAAA,CAAAS,GAAA,iBAAAA,GAAA,GAAA+C,MAAA,CAAA/C,GAAA;AAAA,SAAA8C,aAAAE,KAAA,EAAAC,IAAA,QAAA1D,OAAA,CAAAyD,KAAA,kBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAlC,MAAA,CAAAqC,WAAA,OAAAD,IAAA,KAAAE,SAAA,QAAAC,GAAA,GAAAH,IAAA,CAAA/C,IAAA,CAAA6C,KAAA,EAAAC,IAAA,oBAAA1D,OAAA,CAAA8D,GAAA,uBAAAA,GAAA,YAAAzC,SAAA,4DAAAqC,IAAA,gBAAAF,MAAA,GAAAO,MAAA,EAAAN,KAAA;AAAA,SAAAO,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAA5C,MAAA,oBAAA0C,CAAA,CAAA1C,MAAA,CAAAC,QAAA,KAAAyC,CAAA,qBAAAE,EAAA,QAAA1C,KAAA,CAAAE,OAAA,CAAAsC,CAAA,MAAAE,EAAA,GAAAhD,2BAAA,CAAA8C,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAArB,MAAA,qBAAAuB,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAzB,CAAA,UAAA0B,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAA5B,CAAA,IAAAuB,CAAA,CAAArB,MAAA,WAAA2B,IAAA,mBAAAA,IAAA,SAAArB,KAAA,EAAAe,CAAA,CAAAvB,CAAA,UAAA8B,CAAA,WAAAA,EAAAC,GAAA,UAAAA,GAAA,KAAAC,CAAA,EAAAN,CAAA,gBAAA/C,SAAA,iJAAAsD,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAR,CAAA,WAAAA,EAAA,IAAAF,EAAA,GAAAA,EAAA,CAAAvD,IAAA,CAAAqD,CAAA,MAAAK,CAAA,WAAAA,EAAA,QAAAQ,IAAA,GAAAX,EAAA,CAAAY,IAAA,IAAAJ,gBAAA,GAAAG,IAAA,CAAAP,IAAA,SAAAO,IAAA,KAAAN,CAAA,WAAAA,EAAAQ,GAAA,IAAAJ,MAAA,SAAAC,GAAA,GAAAG,GAAA,KAAAN,CAAA,WAAAA,EAAA,eAAAC,gBAAA,IAAAR,EAAA,oBAAAA,EAAA,8BAAAS,MAAA,QAAAC,GAAA;AAAA,SAAAI,eAAAjE,GAAA,EAAA0B,CAAA,WAAAwC,eAAA,CAAAlE,GAAA,KAAAmE,qBAAA,CAAAnE,GAAA,EAAA0B,CAAA,KAAAvB,2BAAA,CAAAH,GAAA,EAAA0B,CAAA,KAAA0C,gBAAA;AAAA,SAAAA,iBAAA,cAAA/D,SAAA;AAAA,SAAAF,4BAAA8C,CAAA,EAAAoB,MAAA,SAAApB,CAAA,qBAAAA,CAAA,sBAAArC,iBAAA,CAAAqC,CAAA,EAAAoB,MAAA,OAAAf,CAAA,GAAAhE,MAAA,CAAAI,SAAA,CAAA4E,QAAA,CAAA1E,IAAA,CAAAqD,CAAA,EAAAsB,KAAA,aAAAjB,CAAA,iBAAAL,CAAA,CAAAuB,WAAA,EAAAlB,CAAA,GAAAL,CAAA,CAAAuB,WAAA,CAAAC,IAAA,MAAAnB,CAAA,cAAAA,CAAA,mBAAA7C,KAAA,CAAAC,IAAA,CAAAuC,CAAA,OAAAK,CAAA,+DAAAoB,IAAA,CAAApB,CAAA,UAAA1C,iBAAA,CAAAqC,CAAA,EAAAoB,MAAA;AAAA,SAAAzD,kBAAAZ,GAAA,EAAA2E,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAA3E,GAAA,CAAA4B,MAAA,EAAA+C,GAAA,GAAA3E,GAAA,CAAA4B,MAAA,WAAAF,CAAA,MAAAkD,IAAA,OAAAnE,KAAA,CAAAkE,GAAA,GAAAjD,CAAA,GAAAiD,GAAA,EAAAjD,CAAA,MAAAkD,IAAA,CAAAlD,CAAA,IAAA1B,GAAA,CAAA0B,CAAA,YAAAkD,IAAA;AAAA,SAAAT,sBAAAnE,GAAA,EAAA0B,CAAA,QAAAmD,EAAA,WAAA7E,GAAA,gCAAAO,MAAA,IAAAP,GAAA,CAAAO,MAAA,CAAAC,QAAA,KAAAR,GAAA,4BAAA6E,EAAA,QAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,IAAA,OAAAC,EAAA,OAAAC,EAAA,iBAAAJ,EAAA,IAAAH,EAAA,GAAAA,EAAA,CAAAjF,IAAA,CAAAI,GAAA,GAAA+D,IAAA,QAAArC,CAAA,QAAApC,MAAA,CAAAuF,EAAA,MAAAA,EAAA,UAAAM,EAAA,uBAAAA,EAAA,IAAAL,EAAA,GAAAE,EAAA,CAAApF,IAAA,CAAAiF,EAAA,GAAAtB,IAAA,MAAA2B,IAAA,CAAA5D,IAAA,CAAAwD,EAAA,CAAA5C,KAAA,GAAAgD,IAAA,CAAAtD,MAAA,KAAAF,CAAA,GAAAyD,EAAA,sBAAAtB,GAAA,IAAAuB,EAAA,OAAAL,EAAA,GAAAlB,GAAA,yBAAAsB,EAAA,YAAAN,EAAA,eAAAI,EAAA,GAAAJ,EAAA,cAAAvF,MAAA,CAAA2F,EAAA,MAAAA,EAAA,2BAAAG,EAAA,QAAAL,EAAA,aAAAG,IAAA;AAAA,SAAAhB,gBAAAlE,GAAA,QAAAS,KAAA,CAAAE,OAAA,CAAAX,GAAA,UAAAA,GAAA,IAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAMqF,WAAW,GAAG,EAAE;AAEtB,IAAMC,cAAc,GAAGhG,MAAM,CAACiG,MAAM,CAAC;EACnCC,KAAK,EAAS,sBAAsB;EACpCC,UAAU,EAAI,0DAA0D;EACxEC,WAAW,EAAG,mBAAmB;EACjCC,YAAY,EAAE,SAAAA,aAACrC,CAAS;IAAA,UAAAsC,MAAA,CAAQtC,CAAC,kBAAAsC,MAAA,CAAYtC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;EAAA,CAAE;EAC/DuC,WAAW,EAAG,UAAU;EACxBC,WAAW,EAAG;AAChB,CAAC,CAAC;;AAEF;AACA;AACA,IAAMC,mBAAmB,GAAGzG,MAAM,CAACiG,MAAM,CAAC;EACxC;EACA;EACAS,EAAE,EAAE;IAAEC,eAAe,EAAE;EAAiD;AAC1E,CAAC,CAAC;AAsCF,SAASC,YAAYA,CAAIhE,KAAQ,EAAEiE,EAAU,EAAK;EAChD,IAAAC,eAAA,GAAsBtI,KAAK,CAACuI,QAAQ,CAACnE,KAAK,CAAC;IAAAoE,gBAAA,GAAArC,cAAA,CAAAmC,eAAA;IAApCG,GAAG,GAAAD,gBAAA;IAAEE,MAAM,GAAAF,gBAAA;EAClBxI,KAAK,CAAC2I,SAAS,CAAC,YAAM;IACpB,IAAMC,CAAC,GAAGC,UAAU,CAAC;MAAA,OAAMH,MAAM,CAACtE,KAAK,CAAC;IAAA,GAAEiE,EAAE,CAAC;IAC7C,OAAO;MAAA,OAAMS,YAAY,CAACF,CAAC,CAAC;IAAA;EAC9B,CAAC,EAAE,CAACxE,KAAK,EAAEiE,EAAE,CAAC,CAAC;EACf,OAAOI,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASM,SAASA,CAACxD,CAAS,EAAU;EACpC,IAAI,CAACA,CAAC,EAAE,OAAO,EAAE;EACjB,OAAOb,MAAM,CAACa,CAAC,CAAC,CAACwD,SAAS,CAAC,KAAK,CAAC,CAACC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAACC,WAAW,CAAC,CAAC;AACjF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,cAAcA,CAACC,GAAW,EAAEC,KAAa,EAAU;EAC1D,IAAIxF,CAAC,GAAG,CAAC;EACT,IAAIyF,WAAW,GAAG,CAAC;EACnB,IAAIC,eAAe,GAAG,CAAC;EACvB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,GAAG,CAACrF,MAAM,IAAIF,CAAC,GAAGwF,KAAK,CAACtF,MAAM,EAAEyF,CAAC,IAAI,CAAC,EAAE;IAC1D,IAAIJ,GAAG,CAACI,CAAC,CAAC,KAAKH,KAAK,CAACxF,CAAC,CAAC,EAAE;MACvBA,CAAC,IAAI,CAAC;MACNyF,WAAW,IAAI,CAAC;MAChB,IAAIA,WAAW,GAAGC,eAAe,EAAEA,eAAe,GAAGD,WAAW;IAClE,CAAC,MAAM;MACLA,WAAW,GAAG,CAAC;IACjB;EACF;EACA,IAAIzF,CAAC,GAAGwF,KAAK,CAACtF,MAAM,EAAE,OAAO,CAAC;EAC9B,OAAOwF,eAAe,GAAGF,KAAK,CAACtF,MAAM;AACvC;;AAEA;AACA;AACA;AACA;AACA,SAAS0F,UAAUA,CAACL,GAAW,EAAEC,KAAa,EAAU;EACtD,IAAID,GAAG,CAACM,UAAU,CAACL,KAAK,CAAC,EAAE,OAAO,GAAG;EAErC,IAAMM,KAAK,GAAGP,GAAG,CAACQ,OAAO,CAAC,GAAG,GAAGP,KAAK,CAAC;EACtC,IAAIM,KAAK,IAAI,CAAC,EAAE,OAAO,EAAE;EAEzB,IAAME,MAAM,GAAGT,GAAG,CAACQ,OAAO,CAACP,KAAK,CAAC;EACjC,IAAIQ,MAAM,IAAI,CAAC,EAAE;IACf,OAAO,EAAE,GAAGC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEF,MAAM,GAAG,GAAG,CAAC;EACxC;EAEA,IAAMG,GAAG,GAAGb,cAAc,CAACC,GAAG,EAAEC,KAAK,CAAC;EACtC,IAAIW,GAAG,GAAG,CAAC,EAAE,OAAO,EAAE,GAAGA,GAAG;EAE5B,OAAO,CAAC;AACV;;AAEA;AACA;AACA;AACA;AACA,SAASC,UAAUA,CAACC,QAAgB,EAAEC,KAAa,EAAU;EAC3D,IAAMf,GAAG,GAAGJ,SAAS,CAACkB,QAAQ,CAAC;EAC/B,IAAME,MAAM,GAAGpB,SAAS,CAACmB,KAAK,CAAC,CAACE,KAAK,CAAC,KAAK,CAAC,CAAC/G,MAAM,CAACgH,OAAO,CAAC;EAC5D,IAAIF,MAAM,CAACrG,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC;EACjC,IAAI,CAACqF,GAAG,EAAE,OAAO,CAAC;EAElB,IAAImB,KAAK,GAAG,CAAC;EAAC,IAAAC,SAAA,GAAArF,0BAAA,CACMiF,MAAM;IAAAK,KAAA;EAAA;IAA1B,KAAAD,SAAA,CAAAhF,CAAA,MAAAiF,KAAA,GAAAD,SAAA,CAAA/E,CAAA,IAAAC,IAAA,GAA4B;MAAA,IAAjB2D,KAAK,GAAAoB,KAAA,CAAApG,KAAA;MACd,IAAMmB,CAAC,GAAGiE,UAAU,CAACL,GAAG,EAAEC,KAAK,CAAC;MAChC,IAAI7D,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;MACrB+E,KAAK,IAAI/E,CAAC;IACZ;EAAC,SAAAQ,GAAA;IAAAwE,SAAA,CAAA7E,CAAA,CAAAK,GAAA;EAAA;IAAAwE,SAAA,CAAA3E,CAAA;EAAA;EACD,OAAO0E,KAAK,GAAGH,MAAM,CAACrG,MAAM;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS2G,YAAYA,CAACC,MAA6B,EAAER,KAAa,EAAyB;EACzF,IAAMS,CAAC,GAAGT,KAAK,CAACU,IAAI,CAAC,CAAC;EACtB,IAAI,CAACD,CAAC,EAAE;IACN,OAAOD,MAAM,CACVG,GAAG,CAAC,UAACC,CAAC;MAAA,OAAM;QAAEC,EAAE,EAAED,CAAC,CAACC,EAAE;QAAErD,KAAK,EAAEoD,CAAC,CAACpD,KAAK;QAAEsD,KAAK,EAAEF,CAAC,CAACE;MAAM,CAAC;IAAA,CAAC,CAAC,CAC1D3H,MAAM,CAAC,UAACyH,CAAC;MAAA,OAAKA,CAAC,CAACE,KAAK,CAAClH,MAAM,GAAG,CAAC;IAAA,EAAC;EACtC;EAEA,IAAM2E,GAA0B,GAAG,EAAE;EAAC,IAAAwC,UAAA,GAAA/F,0BAAA,CACtBwF,MAAM;IAAAQ,MAAA;EAAA;IAAtB,KAAAD,UAAA,CAAA1F,CAAA,MAAA2F,MAAA,GAAAD,UAAA,CAAAzF,CAAA,IAAAC,IAAA,GAAwB;MAAA,IAAbqF,CAAC,GAAAI,MAAA,CAAA9G,KAAA;MACV,IAAM+G,MAA0D,GAAG,EAAE;MAAC,IAAAC,UAAA,GAAAlG,0BAAA,CACrD4F,CAAC,CAACE,KAAK;QAAAK,MAAA;MAAA;QAAxB,KAAAD,UAAA,CAAA7F,CAAA,MAAA8F,MAAA,GAAAD,UAAA,CAAA5F,CAAA,IAAAC,IAAA,GAA0B;UAAA,IAAfJ,EAAE,GAAAgG,MAAA,CAAAjH,KAAA;UACX,IAAM+E,GAAG,MAAArB,MAAA,CAAMzC,EAAE,CAACiG,KAAK,OAAAxD,MAAA,CAAIzC,EAAE,CAACkG,QAAQ,IAAI,EAAE,CAAE;UAC9C,IAAMhG,CAAC,GAAGyE,UAAU,CAACb,GAAG,EAAEwB,CAAC,CAAC;UAC5B,IAAIpF,CAAC,GAAG,CAAC,EAAE4F,MAAM,CAAC3H,IAAI,CAAC;YAAEgI,IAAI,EAAEnG,EAAE;YAAEoG,KAAK,EAAElG;UAAE,CAAC,CAAC;QAChD;MAAC,SAAAQ,GAAA;QAAAqF,UAAA,CAAA1F,CAAA,CAAAK,GAAA;MAAA;QAAAqF,UAAA,CAAAxF,CAAA;MAAA;MACD,IAAIuF,MAAM,CAACrH,MAAM,KAAK,CAAC,EAAE;MACzBqH,MAAM,CAACO,IAAI,CAAC,UAACC,CAAC,EAAEC,CAAC;QAAA,OAAKA,CAAC,CAACH,KAAK,GAAGE,CAAC,CAACF,KAAK;MAAA,EAAC;MACxChD,GAAG,CAACjF,IAAI,CAAC;QAAEuH,EAAE,EAAED,CAAC,CAACC,EAAE;QAAErD,KAAK,EAAEoD,CAAC,CAACpD,KAAK;QAAEsD,KAAK,EAAEG,MAAM,CAACN,GAAG,CAAC,UAACtF,CAAC;UAAA,OAAKA,CAAC,CAACiG,IAAI;QAAA;MAAE,CAAC,CAAC;IAC1E;EAAC,SAAAzF,GAAA;IAAAkF,UAAA,CAAAvF,CAAA,CAAAK,GAAA;EAAA;IAAAkF,UAAA,CAAArF,CAAA;EAAA;EACD,OAAO6C,GAAG;AACZ;AAEA,SAASoD,cAAcA,CAAAC,IAAA,EAUC;EAAA,IATtBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAAC,WAAA,GAAAH,IAAA,CACPpB,MAAM;IAANA,MAAM,GAAAuB,WAAA,cAAG,EAAE,GAAAA,WAAA;IACXC,WAAW,GAAAJ,IAAA,CAAXI,WAAW;IACXC,WAAW,GAAAL,IAAA,CAAXK,WAAW;IAAAC,gBAAA,GAAAN,IAAA,CACXO,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,kCAAkC,GAAAA,gBAAA;IAAAE,eAAA,GAAAR,IAAA,CAChDS,UAAU;IAAVA,UAAU,GAAAD,eAAA,cAAG,iBAAiB,GAAAA,eAAA;IAC9BE,aAAa,GAAAV,IAAA,CAAbU,aAAa;IACbC,MAAM,GAAAX,IAAA,CAANW,MAAM;EAEN,IAAMC,CAAC,GAAG1M,KAAK,CAAC2M,OAAO,CACrB;IAAA,OAAOF,MAAM,GAAA/I,aAAA,CAAAA,aAAA,KAAQ8D,cAAc,GAAKiF,MAAM,IAAKjF,cAAc;EAAA,CAAC,EAClE,CAACiF,MAAM,CACT,CAAC;EAED,IAAAG,gBAAA,GAA0B5M,KAAK,CAACuI,QAAQ,CAAC,EAAE,CAAC;IAAAsE,gBAAA,GAAA1G,cAAA,CAAAyG,gBAAA;IAArC1C,KAAK,GAAA2C,gBAAA;IAAEC,QAAQ,GAAAD,gBAAA;EACtB,IAAME,cAAc,GAAG3E,YAAY,CAAC8B,KAAK,EAAE3C,WAAW,CAAC;EACvD,IAAAyF,gBAAA,GAAkChN,KAAK,CAACuI,QAAQ,CAAC,CAAC,CAAC;IAAA0E,gBAAA,GAAA9G,cAAA,CAAA6G,gBAAA;IAA5CE,SAAS,GAAAD,gBAAA;IAAEE,YAAY,GAAAF,gBAAA;EAC9B,IAAMG,QAAQ,GAAGpN,KAAK,CAACqN,MAAM,CAAmB,IAAI,CAAC;EACrD,IAAMC,OAAO,GAAItN,KAAK,CAACqN,MAAM,CAAiB,IAAI,CAAC;EACnD,IAAME,OAAO,GAAIvN,KAAK,CAACwN,KAAK,CAAC,CAAC;EAC9B,IAAMC,MAAM,GAAKzN,KAAK,CAACwN,KAAK,CAAC,CAAC;EAC9B,IAAME,OAAO,GAAI1N,KAAK,CAACwN,KAAK,CAAC,CAAC;;EAE9B;EACA;EACA,IAAMG,QAAQ,GAAG3N,KAAK,CAACqN,MAAM,CAAiB,IAAI,CAAC;EACnD,IAAAO,wBAAY,EAACD,QAAQ,EAAqC,CAAC,CAAC5B,IAAI,CAAC;;EAEjE;EACA;EACA;EACA;EACA,IAAM8B,SAAS,GAAG7N,KAAK,CAAC2M,OAAO,CAAwB,YAAM;IAC3D,IAAMmB,SAAS,GAAGnL,KAAK,CAACE,OAAO,CAACsJ,WAAW,CAAC,IAAIA,WAAW,CAACrI,MAAM,GAAG,CAAC;IACtE,IAAMiK,SAAS,GAAGpL,KAAK,CAACE,OAAO,CAACqJ,WAAW,CAAC,IAAIA,WAAW,CAACpI,MAAM,GAAG,CAAC;IACtE,IAAI,CAACgK,SAAS,IAAI,CAACC,SAAS,EAAE,OAAOrD,MAAM;IAC3C,IAAMjC,GAA0B,GAAG,EAAE;IACrC,IAAIqF,SAAS,EAAE;MACbrF,GAAG,CAACjF,IAAI,CAAC;QAAEuH,EAAE,EAAE,SAAS;QAAErD,KAAK,EAAEgF,CAAC,CAAC3E,WAAW;QAAEiD,KAAK,EAAEmB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI;MAAG,CAAC,CAAC;IAC7E;IACA,IAAI4B,SAAS,EAAE;MACbtF,GAAG,CAACjF,IAAI,CAAC;QAAEuH,EAAE,EAAE,SAAS;QAAErD,KAAK,EAAEgF,CAAC,CAAC1E,WAAW;QAAEgD,KAAK,EAAEkB,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAI;MAAG,CAAC,CAAC;IAC7E;IACA,UAAApE,MAAA,CAAWW,GAAG,EAAAxG,kBAAA,CAAKyI,MAAM;EAC3B,CAAC,EAAE,CAACyB,WAAW,EAAED,WAAW,EAAExB,MAAM,EAAEgC,CAAC,CAAC3E,WAAW,EAAE2E,CAAC,CAAC1E,WAAW,CAAC,CAAC;EAEpE,IAAMgG,aAAa,GAAGhO,KAAK,CAAC2M,OAAO,CACjC;IAAA,OAAMlC,YAAY,CAACoD,SAAS,EAAEd,cAAc,CAAC;EAAA,GAC7C,CAACc,SAAS,EAAEd,cAAc,CAC5B,CAAC;EACD,IAAMkB,SAAS,GAAGjO,KAAK,CAAC2M,OAAO,CAC7B;IAAA,OAAMqB,aAAa,CAACE,OAAO,CAAC,UAACpD,CAAC;MAAA,OAAKA,CAAC,CAACE,KAAK;IAAA,EAAC;EAAA,GAC3C,CAACgD,aAAa,CAChB,CAAC;;EAED;EACA;EACAhO,KAAK,CAAC2I,SAAS,CAAC,YAAM;IACpB,IAAI,CAACoD,IAAI,EAAE;IACXe,QAAQ,CAAC,EAAE,CAAC;IACZK,YAAY,CAAC,CAAC,CAAC;EACjB,CAAC,EAAE,CAACpB,IAAI,CAAC,CAAC;;EAEV;EACA/L,KAAK,CAAC2I,SAAS,CAAC,YAAM;IACpB,IAAIuE,SAAS,IAAIe,SAAS,CAACnK,MAAM,EAAE;MACjCqJ,YAAY,CAACtD,IAAI,CAACsE,GAAG,CAAC,CAAC,EAAEF,SAAS,CAACnK,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD;EACF,CAAC,EAAE,CAACmK,SAAS,CAACnK,MAAM,EAAEoJ,SAAS,CAAC,CAAC;;EAEjC;EACAlN,KAAK,CAAC2I,SAAS,CAAC,YAAM;IAAA,IAAAyF,gBAAA;IACpB,IAAI,CAACrC,IAAI,IAAIkC,SAAS,CAACnK,MAAM,KAAK,CAAC,EAAE;IACrC,IAAMuK,IAAI,IAAAD,gBAAA,GAAGd,OAAO,CAACgB,OAAO,cAAAF,gBAAA,uBAAfA,gBAAA,CAAiBG,aAAa,uBAAAzG,MAAA,CAAsBoF,SAAS,QAAI,CAAC;IAC/E,IAAImB,IAAI,EAAEA,IAAI,CAACG,cAAc,CAAC;MAAEC,KAAK,EAAE;IAAU,CAAC,CAAC;EACrD,CAAC,EAAE,CAACvB,SAAS,EAAEnB,IAAI,EAAEkC,SAAS,CAACnK,MAAM,CAAC,CAAC;EAEvC,IAAM4K,QAAQ,GAAG,SAAXA,QAAQA,CAAIC,KAAa,EAAK;IAClC,IAAMtJ,EAAE,GAAG4I,SAAS,CAACU,KAAK,CAAC;IAC3B,IAAI,CAACtJ,EAAE,EAAE;IACT2G,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAG,CAAC;IACX;IACA;IACAnD,UAAU,CAAC;MAAA,IAAA+F,YAAA;MAAA,QAAAA,YAAA,GAAMvJ,EAAE,CAACwJ,QAAQ,cAAAD,YAAA,uBAAXA,YAAA,CAAA9M,IAAA,CAAAuD,EAAc,CAAC;IAAA,GAAE,CAAC,CAAC;EACtC,CAAC;EAED,IAAMyJ,cAAc,GAAG,SAAjBA,cAAcA,CAAIpJ,CAAwC,EAAK;IACnE,IAAIA,CAAC,CAAC/D,GAAG,KAAK,WAAW,EAAE;MACzB+D,CAAC,CAACqJ,cAAc,CAAC,CAAC;MAClB5B,YAAY,CAAC,UAAC5D,CAAC;QAAA,OAAM0E,SAAS,CAACnK,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAACyF,CAAC,GAAG,CAAC,IAAI0E,SAAS,CAACnK,MAAM;MAAA,CAAC,CAAC;IAChF,CAAC,MAAM,IAAI4B,CAAC,CAAC/D,GAAG,KAAK,SAAS,EAAE;MAC9B+D,CAAC,CAACqJ,cAAc,CAAC,CAAC;MAClB5B,YAAY,CAAC,UAAC5D,CAAC;QAAA,OAAM0E,SAAS,CAACnK,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,CAACyF,CAAC,GAAG,CAAC,GAAG0E,SAAS,CAACnK,MAAM,IAAImK,SAAS,CAACnK,MAAM;MAAA,CAAC,CAAC;IACnG,CAAC,MAAM,IAAI4B,CAAC,CAAC/D,GAAG,KAAK,OAAO,EAAE;MAC5B+D,CAAC,CAACqJ,cAAc,CAAC,CAAC;MAClBL,QAAQ,CAACxB,SAAS,CAAC;IACrB,CAAC,MAAM,IAAIxH,CAAC,CAAC/D,GAAG,KAAK,MAAM,EAAE;MAC3B+D,CAAC,CAACqJ,cAAc,CAAC,CAAC;MAClB5B,YAAY,CAAC,CAAC,CAAC;IACjB,CAAC,MAAM,IAAIzH,CAAC,CAAC/D,GAAG,KAAK,KAAK,EAAE;MAC1B+D,CAAC,CAACqJ,cAAc,CAAC,CAAC;MAClB5B,YAAY,CAACtD,IAAI,CAACsE,GAAG,CAAC,CAAC,EAAEF,SAAS,CAACnK,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD;EACF,CAAC;EAED,IAAMkL,aAAa,GAAG,SAAhBA,aAAaA,CAAItJ,CAAsC,EAAK;IAChEoH,QAAQ,CAACpH,CAAC,CAAC/B,MAAM,CAACS,KAAK,CAAC;IACxBoI,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAG9G,CAAC,CAAC/B,MAAM,CAACS,KAAK,CAAC;IAC/B+I,YAAY,CAAC,CAAC,CAAC;EACjB,CAAC;EAED,IAAM8B,YAAY,GAAGhB,SAAS,CAACf,SAAS,CAAC,MAAApF,MAAA,CAAM2F,MAAM,WAAA3F,MAAA,CAAQoF,SAAS,IAAKnI,SAAS;;EAEpF;EACA;EACA;EACA,IAAMmK,SAAS,GAAGlP,KAAK,CAAC2M,OAAO,CAC7B;IAAA,OAAO;MACLwC,KAAK,EAAE;QACLC,GAAG,EAAEzB,QAAQ;QACbzF,EAAE,EAAE;UACFmH,KAAK,EAAE,MAAM;UACbC,QAAQ,EAAE,GAAG;UACbC,YAAY,EAAE,aAAa;UAC3BC,SAAS,EAAE,kBAAkB;UAC7BC,MAAM,EAAE,YAAY;UACpBC,QAAQ,EAAE;QACZ;MACF,CAAC;MACDC,QAAQ,EAAE1H;IACZ,CAAC;EAAA,CAAC,EACF,EACF,CAAC;EAED,oBACE,IAAAvH,WAAA,CAAAkP,IAAA,EAACzP,OAAA,WAAM;IACL4L,IAAI,EAAE,CAAC,CAACA,IAAK;IACbC,OAAO,EAAEA,OAAQ;IACjBsD,QAAQ,EAAE,KAAM;IAChB,mBAAiB/B;IACjB;IAAA;IACAsC,gBAAgB;IAChBC,mBAAmB;IACnBC,mBAAmB;IACnBb,SAAS,EAAEA,SAAU;IAAAc,QAAA,gBAErB,IAAAtP,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;MAAC6P,SAAS,EAAC,aAAa;MAACnF,EAAE,EAAEwC,OAAQ;MAAAyC,QAAA,EACtCtD,CAAC,CAAChF;IAAK,CACL,CAAC,eAGN,IAAAhH,WAAA,CAAAkP,IAAA,EAACvP,IAAA,WAAG;MACF6H,EAAE,EAAE;QACFiI,OAAO,EAAE,MAAM;QACfC,UAAU,EAAE,QAAQ;QACpBC,GAAG,EAAE,YAAY;QACjBC,OAAO,EAAE,uBAAuB;QAChCC,YAAY,EAAE;MAChB,CAAE;MAAAP,QAAA,gBAEF,IAAAtP,WAAA,CAAAuP,GAAA,EAAC1P,OAAA,WAAU;QACT,eAAY,MAAM;QAClB2H,EAAE,EAAE;UAAEsI,KAAK,EAAE,kBAAkB;UAAEC,QAAQ,EAAE;QAAG;MAAE,CACjD,CAAC,eACF,IAAA/P,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;QACFqQ,SAAS,EAAC,OAAO;QACjBtB,GAAG,EAAEhC,QAAS;QACdrC,EAAE,EAAE2C,OAAQ;QACZiD,IAAI,EAAC,MAAM;QACXC,IAAI,EAAC,UAAU;QACf,iBAAc,MAAM;QACpB,iBAAenD,MAAO;QACtB,qBAAkB,MAAM;QACxB,yBAAuBwB;QACvB;QACA;QACA;QAAA;QACA,cAAY5C,WAAY;QACxBwE,SAAS;QACTzM,KAAK,EAAE8F,KAAM;QACb4G,QAAQ,EAAE9B,aAAc;QACxB+B,SAAS,EAAEjC,cAAe;QAC1BzC,WAAW,EAAEA,WAAY;QACzBnE,EAAE,EAAE;UACF8I,IAAI,EAAE,CAAC;UACPC,MAAM,EAAE,CAAC;UACTC,OAAO,EAAE,MAAM;UACfC,UAAU,EAAE,aAAa;UACzBC,UAAU,EAAE,SAAS;UACrBX,QAAQ,EAAE,wBAAwB;UAClCD,KAAK,EAAE,WAAW;UAClB,gBAAgB,EAAE;YAAEA,KAAK,EAAE;UAAmB;QAChD;MAAE,CACH,CAAC,eACF,IAAA9P,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;QACFqQ,SAAS,EAAC,KAAK;QACf,eAAY,MAAM;QAClBxI,EAAE,EAAE;UACFuI,QAAQ,EAAE,gBAAgB;UAC1BY,UAAU,EAAE,oBAAoB;UAChCb,KAAK,EAAE,kBAAkB;UACzBW,UAAU,EAAE,kBAAkB;UAC9BF,MAAM,EAAE,yBAAyB;UACjC1B,YAAY,EAAE,aAAa;UAC3Be,OAAO,EAAE,gBAAgB;UACzBc,UAAU,EAAE;QACd,CAAE;QAAApB,QAAA,EACH;MAED,CAAK,CAAC,eACN,IAAAtP,WAAA,CAAAuP,GAAA,EAAC3P,WAAA,WAAU;QACTgR,IAAI,EAAC,OAAO;QACZC,OAAO,EAAEvF,OAAQ;QACjB,cAAYU,CAAC,CAAC9E,WAAY;QAC1BM,EAAE,EAAE;UAAEsI,KAAK,EAAE;QAAkB,CAAE;QAAAR,QAAA,eAEjC,IAAAtP,WAAA,CAAAuP,GAAA,EAACzP,MAAA,WAAS;UAACiQ,QAAQ,EAAC;QAAO,CAAE;MAAC,CACpB,CAAC;IAAA,CACV,CAAC,eAGN,IAAA/P,WAAA,CAAAkP,IAAA,EAACvP,IAAA,WAAG;MACF+O,GAAG,EAAE9B,OAAQ;MACbsD,IAAI,EAAC,SAAS;MACd7F,EAAE,EAAE0C,MAAO;MACX,mBAAiBF,OAAQ;MACzBrF,EAAE,EAAE;QACFsJ,SAAS,EAAE,GAAG;QACdC,SAAS,EAAE,MAAM;QACjBnB,OAAO,EAAE;MACX,CAAE;MAAAN,QAAA,GAEDhC,aAAa,CAAClK,MAAM,KAAK,CAAC,iBACzB,IAAApD,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;QACF6H,EAAE,EAAE;UACFoI,OAAO,EAAE,uBAAuB;UAChCoB,SAAS,EAAE,QAAQ;UACnBlB,KAAK,EAAE,iBAAiB;UACxBC,QAAQ,EAAE;QACZ,CAAE;QAAAT,QAAA,EAEDzD;MAAU,CACR,CACN,EACC,YAAM;QACN,IAAI3I,CAAC,GAAG,CAAC,CAAC;QACV,OAAOoK,aAAa,CAACnD,GAAG,CAAC,UAACC,CAAC,EAAK;UAC9B,IAAM6G,QAAQ,MAAA7J,MAAA,CAAM2F,MAAM,SAAA3F,MAAA,CAAMgD,CAAC,CAACC,EAAE,CAAE;UACtC,oBACE,IAAArK,WAAA,CAAAkP,IAAA,EAACvP,IAAA,WAAG;YAEFuQ,IAAI,EAAC,OAAO;YACZ,mBAAiBe,QAAS;YAAA3B,QAAA,gBAE1B,IAAAtP,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;cACF0K,EAAE,EAAE4G,QAAS;cACbzJ,EAAE,EAAE;gBACFuI,QAAQ,EAAE,gBAAgB;gBAC1BY,UAAU,EAAE,oBAAoB;gBAChCb,KAAK,EAAE,kBAAkB;gBACzBoB,aAAa,EAAE,WAAW;gBAC1BC,aAAa,EAAE,QAAQ;gBACvBvB,OAAO,EAAE;cACX,CAAE;cAAAN,QAAA,EAEDlF,CAAC,CAACpD;YAAK,CACL,CAAC,EACLoD,CAAC,CAACE,KAAK,CAACH,GAAG,CAAC,UAACiH,KAAK,EAAK;cACtBlO,CAAC,IAAI,CAAC;cACN,IAAMmO,QAAQ,GAAGnO,CAAC,KAAKsJ,SAAS;cAChC,IAAM8E,GAAG,GAAGpO,CAAC;cACb,oBACE,IAAAlD,WAAA,CAAAkP,IAAA,EAACvP,IAAA,WAAG;gBAEFuQ,IAAI,EAAC,QAAQ;gBACb7F,EAAE,KAAAjD,MAAA,CAAK2F,MAAM,WAAA3F,MAAA,CAAQkK,GAAG,CAAG;gBAC3B,iBAAeD,QAAS;gBACxB,mBAAiBC,GAAI;gBACrBC,YAAY,EAAE,SAAAA,aAAA;kBAAA,OAAM9E,YAAY,CAAC6E,GAAG,CAAC;gBAAA,CAAC;gBACtCT,OAAO,EAAE,SAAAA,QAAA;kBAAA,OAAM7C,QAAQ,CAACsD,GAAG,CAAC;gBAAA,CAAC;gBAC7B9J,EAAE,EAAE;kBACFiI,OAAO,EAAE,MAAM;kBACfC,UAAU,EAAE,QAAQ;kBACpBC,GAAG,EAAE,YAAY;kBACjBC,OAAO,EAAE,uBAAuB;kBAChC4B,MAAM,EAAE,SAAS;kBACjBf,UAAU,EAAEY,QAAQ,GAAG,oBAAoB,GAAG,aAAa;kBAC3DvB,KAAK,EAAEuB,QAAQ,GAAG,eAAe,GAAG,WAAW;kBAC/CtB,QAAQ,EAAE,gBAAgB;kBAC1BY,UAAU,EAAE;gBACd,CAAE;gBAAArB,QAAA,GAED8B,KAAK,CAACK,IAAI,iBACT,IAAAzR,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;kBACF,eAAY,MAAM;kBAClB6H,EAAE,EAAE;oBACFiI,OAAO,EAAE,aAAa;oBACtBK,KAAK,EAAEuB,QAAQ,GAAG,eAAe,GAAG;kBACtC,CAAE;kBAAA/B,QAAA,EAED8B,KAAK,CAACK;gBAAI,CACR,CACN,eACD,IAAAzR,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;kBAAC6H,EAAE,EAAE;oBAAE8I,IAAI,EAAE,CAAC;oBAAEoB,QAAQ,EAAE,CAAC;oBAAE1C,QAAQ,EAAE,QAAQ;oBAAE2C,YAAY,EAAE,UAAU;oBAAEC,UAAU,EAAE;kBAAS,CAAE;kBAAAtC,QAAA,EACnG8B,KAAK,CAACxG;gBAAK,CACT,CAAC,EACLwG,KAAK,CAACS,QAAQ,iBACb,IAAA7R,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;kBACFqQ,SAAS,EAAC,KAAK;kBACf,eAAY,MAAM;kBAClBxI,EAAE,EAAE;oBACFuI,QAAQ,EAAE,gBAAgB;oBAC1BY,UAAU,EAAE,oBAAoB;oBAChCb,KAAK,EAAE,kBAAkB;oBACzBW,UAAU,EAAE,kBAAkB;oBAC9BF,MAAM,EAAE,yBAAyB;oBACjC1B,YAAY,EAAE,aAAa;oBAC3Be,OAAO,EAAE,gBAAgB;oBACzBc,UAAU,EAAE;kBACd,CAAE;kBAAApB,QAAA,EAED8B,KAAK,CAACS;gBAAQ,CACZ,CACN;cAAA,GAlDIT,KAAK,CAAC/G,EAmDR,CAAC;YAEV,CAAC,CAAC;UAAA,GA5EGD,CAAC,CAACC,EA6EJ,CAAC;QAEV,CAAC,CAAC;MACJ,CAAC,CAAE,CAAC;IAAA,CACD,CAAC,eAGN,IAAArK,WAAA,CAAAkP,IAAA,EAACvP,IAAA,WAAG;MACF6H,EAAE,EAAE;QACFiI,OAAO,EAAE,MAAM;QACfC,UAAU,EAAE,QAAQ;QACpBoC,cAAc,EAAE,eAAe;QAC/BnC,GAAG,EAAE,YAAY;QACjBC,OAAO,EAAE,uBAAuB;QAChCmC,SAAS,EAAE,yBAAyB;QACpCtB,UAAU,EAAE,kBAAkB;QAC9BV,QAAQ,EAAE,gBAAgB;QAC1BD,KAAK,EAAE;MACT,CAAE;MAAAR,QAAA,gBAIF,IAAAtP,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;QAAC,eAAY,MAAM;QAAA2P,QAAA,EAAEtD,CAAC,CAAC/E;MAAU,CAAM,CAAC,eAK5C,IAAAjH,WAAA,CAAAuP,GAAA,EAAC5P,IAAA,WAAG;QAACuQ,IAAI,EAAC,QAAQ;QAAC,aAAU,QAAQ;QAAC,iBAAc,gBAAgB;QAAC,eAAY,MAAM;QAAAZ,QAAA,EACpFtD,CAAC,CAAC7E,YAAY,CAACoG,SAAS,CAACnK,MAAM;MAAC,CAC9B,CAAC;IAAA,CACH,CAAC;EAAA,CACA,CAAC;AAEb;AAAC,IAAA4O,QAAA,GAAAC,OAAA,cAEc9G,cAAc","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","names":["React","_interopRequireWildcard","require","_Dialog","_interopRequireDefault","_Box","_IconButton","_Search","_Close","_useFocusTrap","_mergeLabels","_jsxRuntime","obj","__esModule","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","TypeError","iter","Symbol","iterator","Array","from","isArray","_arrayLikeToArray","_createForOfIteratorHelper","o","allowArrayLike","it","length","i","F","s","n","done","value","e","_e2","f","normalCompletion","didErr","err","step","next","_e3","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","minLen","toString","slice","constructor","name","test","len","arr2","_i","_s","_e","_x","_r","_arr","_n","_d","push","DEBOUNCE_MS","DEFAULT_LABELS","freeze","title","footerHint","closeButton","resultsCount","concat","pinnedTitle","recentTitle","BACKDROP_SLOT_PROPS","sx","backgroundColor","useDebounced","ms","_React$useState","useState","_React$useState2","out","setOut","useEffect","t","setTimeout","clearTimeout","normalize","String","replace","toLowerCase","subsequenceRun","hay","token","consecutive","bestConsecutive","h","scoreToken","startsWith","wbIdx","indexOf","subIdx","Math","min","run","scoreQuery","haystack","query","tokens","split","filter","Boolean","total","_iterator","_step","filterGroups","groups","q","trim","map","g","id","items","_iterator2","_step2","scored","_iterator3","_step3","label","keywords","item","score","sort","a","b","CommandPalette","_ref","open","onClose","_ref$groups","recentItems","pinnedItems","_ref$placeholder","placeholder","_ref$emptyState","emptyState","onQueryChange","labels","L","useMemo","mergeLabels","_React$useState3","_React$useState4","setQuery","debouncedQuery","_React$useState5","_React$useState6","highlight","setHighlight","inputRef","useRef","listRef","titleId","useId","listId","inputId","paperRef","useFocusTrap","allGroups","hasPinned","hasRecent","visibleGroups","itemsOnly","flatMap","max","_listRef$current","node","current","querySelector","scrollIntoView","block","activate","index","_it$onSelect","onSelect","onInputKeyDown","preventDefault","onInputChange","target","activeItemId","undefined","slotProps","paper","ref","width","maxWidth","borderRadius","boxShadow","margin","overflow","backdrop","jsxs","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","children","jsx","className","display","alignItems","gap","padding","borderBottom","color","fontSize","component","type","role","autoFocus","onChange","onKeyDown","flex","border","outline","background","fontFamily","fontWeight","size","onClick","maxHeight","overflowY","textAlign","headerId","textTransform","letterSpacing","entry","isActive","idx","onMouseEnter","cursor","icon","minWidth","textOverflow","whiteSpace","shortcut","justifyContent","borderTop","_default","exports"],"sources":["../../../src/lib/v2/components/CommandPalette.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport Dialog from \"@mui/material/Dialog\";\r\nimport Box from \"@mui/material/Box\";\r\nimport IconButton from \"@mui/material/IconButton\";\r\nimport SearchIcon from \"@mui/icons-material/Search\";\r\nimport CloseIcon from \"@mui/icons-material/Close\";\r\nimport type { SxProps, Theme } from \"@mui/material/styles\";\r\nimport useFocusTrap from \"../hooks/useFocusTrap\";\r\nimport { mergeLabels } from \"../utils/mergeLabels\";\r\n\r\n/**\r\n * CommandPalette - Portnet UI v2\r\n *\r\n * Charter §03 / §07 · ⌘K command palette. Keyboard-first launcher for pages\r\n * and actions across the app.\r\n *\r\n * const [open, setOpen] = useState(false);\r\n * useEffect(() => {\r\n * const onKey = (e) => {\r\n * if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === \"k\") {\r\n * e.preventDefault();\r\n * setOpen(true);\r\n * }\r\n * };\r\n * window.addEventListener(\"keydown\", onKey);\r\n * return () => window.removeEventListener(\"keydown\", onKey);\r\n * }, []);\r\n *\r\n * <CommandPalette\r\n * open={open}\r\n * onClose={() => setOpen(false)}\r\n * groups={[\r\n * { id: \"pages\", title: \"Pages\", items: [\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * { id: \"titres\", label: \"Titres d'importation\", onSelect: () => nav(\"/titres\") },\r\n * ]},\r\n * { id: \"actions\", title: \"Actions\", items: [\r\n * { id: \"new-titre\", label: \"Nouveau titre\", icon: <AddIcon />, shortcut: \"C\", onSelect: createTitre },\r\n * ]},\r\n * ]}\r\n * />\r\n *\r\n * Recent + Pinned items (Batch 16 / H4)\r\n * -------------------------------------\r\n * <CommandPalette\r\n * pinnedItems={[\r\n * { id: \"dashboard\", label: \"Tableau de bord\", icon: <DashboardIcon />, onSelect: () => nav(\"/\") },\r\n * ]}\r\n * recentItems={[\r\n * { id: \"titre-2025-IM-0042\", label: \"2025-IM-0042 (SOFRANE SA)\", onSelect: () => nav(\"/titres/2025-IM-0042\") },\r\n * ]}\r\n * groups={[ ... ]}\r\n * />\r\n *\r\n * Both extras are HOST-MANAGED. Lib does NOT track selections or\r\n * pinning state — track in your per-item onSelect handler and\r\n * persist to localStorage / server prefs as a host concern.\r\n *\r\n * Localisation (FR / EN / AR):\r\n * <CommandPalette\r\n * placeholder=\"Search a page or action…\"\r\n * emptyState=\"No result.\"\r\n * labels={{\r\n * title: \"Command palette\",\r\n * footerHint: \"↑↓ to navigate · ↵ to select · Esc to close\",\r\n * closeButton: \"Close palette\",\r\n * resultsCount: (n) => `${n} result${n === 1 ? \"\" : \"s\"}`,\r\n * pinnedTitle: \"Pinned\",\r\n * recentTitle: \"Recent\",\r\n * }}\r\n * />\r\n *\r\n * `resultsCount` is a function so the host can plug in proper plural\r\n * rules (Intl.PluralRules, ICU MessageFormat, i18next, …).\r\n *\r\n * Matching behaviour (Batch 13 / D2):\r\n * The search is fuzzy. Each match is scored across four tiers\r\n * (prefix > word-boundary > substring > subsequence) and within\r\n * each group items are surfaced in descending score order.\r\n * Multi-token queries (\"tit imp\") split on whitespace and require\r\n * every token to hit somewhere; final score is the per-token\r\n * average. Diacritics are folded — \"Emile\" matches \"Émile\".\r\n *\r\n * Focus management (R-F.2):\r\n * Backed by the v2 useFocusTrap hook (Batch 3). The search <input>\r\n * declares `autoFocus`, so on open the trap's initial-focus rAF\r\n * lands directly on it. The input is a role=\"combobox\" and carries an\r\n * aria-label (CP-1) so screen readers announce a name, not just a role.\r\n */\r\n\r\nconst DEBOUNCE_MS = 80;\r\n\r\nconst DEFAULT_LABELS = Object.freeze({\r\n title: \"Palette de commandes\",\r\n footerHint: \"↑↓ pour naviguer · ↵ pour sélectionner · Esc pour fermer\",\r\n closeButton: \"Fermer la palette\",\r\n resultsCount: (n: number) => `${n} résultat${n > 1 ? \"s\" : \"\"}`,\r\n pinnedTitle: \"Épinglés\",\r\n recentTitle: \"Récents\",\r\n});\r\n\r\n// MUI v9: backdrop slot bag. Hoisted — its content (only an sx token)\r\n// is independent of any palette instance state.\r\nconst BACKDROP_SLOT_PROPS = Object.freeze({\r\n // R-G.2 / R-AI.1 - backdrop derived from the live --fg token (matches\r\n // Modal). Adapts to any future theme override.\r\n sx: { backgroundColor: \"color-mix(in srgb, var(--fg) 45%, transparent)\" },\r\n});\r\n\r\nexport interface CommandPaletteItem {\r\n id: string | number;\r\n label: React.ReactNode;\r\n icon?: React.ReactNode | undefined;\r\n shortcut?: React.ReactNode | undefined;\r\n keywords?: string | undefined;\r\n onSelect?: (() => void) | undefined;\r\n}\r\n\r\nexport interface CommandPaletteGroup {\r\n id: string;\r\n title?: React.ReactNode | undefined;\r\n items: CommandPaletteItem[];\r\n}\r\n\r\nexport interface CommandPaletteLabels {\r\n title?: string | undefined;\r\n footerHint?: string | undefined;\r\n closeButton?: string | undefined;\r\n resultsCount?: ((n: number) => React.ReactNode) | undefined;\r\n pinnedTitle?: React.ReactNode | undefined;\r\n recentTitle?: React.ReactNode | undefined;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n open?: boolean | undefined;\r\n onClose?: (() => void) | undefined;\r\n groups?: CommandPaletteGroup[] | undefined;\r\n recentItems?: CommandPaletteItem[] | undefined;\r\n pinnedItems?: CommandPaletteItem[] | undefined;\r\n placeholder?: string | undefined;\r\n emptyState?: React.ReactNode | undefined;\r\n onQueryChange?: ((q: string) => void) | undefined;\r\n labels?: CommandPaletteLabels | undefined;\r\n}\r\n\r\nfunction useDebounced<T>(value: T, ms: number): T {\r\n const [out, setOut] = React.useState(value);\r\n React.useEffect(() => {\r\n const t = setTimeout(() => setOut(value), ms);\r\n return () => clearTimeout(t);\r\n }, [value, ms]);\r\n return out;\r\n}\r\n\r\n/* ── Fuzzy matching (D2) ───────────────────────────────────────────────\r\n * Module-level pure helpers. No external dep, no allocation per match\r\n * beyond the obligatory tokenisation Array.\r\n *\r\n * Score scale is conventional, NOT meaningful in absolute terms:\r\n * - 0 → no match (filtered out)\r\n * - higher → more relevant (sorted descending within each group)\r\n */\r\n\r\n/**\r\n * NFD-normalise + strip combining marks + lowercase. Folds diacritics\r\n * so \"Émile\" → \"emile\" and \"Café\" → \"cafe\", letting users search\r\n * without typing accents. The unicode range \\u0300-\\u036F covers the\r\n * Combining Diacritical Marks block (U+0300..U+036F).\r\n */\r\nfunction normalize(s: string): string {\r\n if (!s) return \"\";\r\n return String(s).normalize(\"NFD\").replace(/[\\u0300-\\u036F]/g, \"\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Subsequence match score — how well does `token` appear (in order,\r\n * not necessarily contiguous) inside `hay`?\r\n *\r\n * - Returns 0 if any character is missing.\r\n * - Otherwise returns the longest CONSECUTIVE run divided by the\r\n * token length. So \"imp\" inside \"important\" gets ratio 1.0\r\n * (whole word matched contiguously), while \"imp\" inside\r\n * \"i_m_p\" (gaps) gets a low ratio.\r\n *\r\n * The contiguous-run heuristic is much cheaper than a full Smith-\r\n * Waterman and good enough for command-palette UX.\r\n */\r\nfunction subsequenceRun(hay: string, token: string): number {\r\n let i = 0;\r\n let consecutive = 0;\r\n let bestConsecutive = 0;\r\n for (let h = 0; h < hay.length && i < token.length; h += 1) {\r\n if (hay[h] === token[i]) {\r\n i += 1;\r\n consecutive += 1;\r\n if (consecutive > bestConsecutive) bestConsecutive = consecutive;\r\n } else {\r\n consecutive = 0;\r\n }\r\n }\r\n if (i < token.length) return 0;\r\n return bestConsecutive / token.length;\r\n}\r\n\r\n/**\r\n * Score a single token against a haystack. Four tiers, best wins.\r\n * Both inputs are assumed already normalised (lowercase, no diacritics).\r\n */\r\nfunction scoreToken(hay: string, token: string): number {\r\n if (hay.startsWith(token)) return 100;\r\n\r\n const wbIdx = hay.indexOf(\" \" + token);\r\n if (wbIdx >= 0) return 80;\r\n\r\n const subIdx = hay.indexOf(token);\r\n if (subIdx >= 0) {\r\n return 60 - Math.min(20, subIdx * 0.1);\r\n }\r\n\r\n const run = subsequenceRun(hay, token);\r\n if (run > 0) return 40 * run;\r\n\r\n return 0;\r\n}\r\n\r\n/**\r\n * Score a multi-token query. Splits on whitespace; every token must hit\r\n * somewhere. Returns the average across tokens, or 0 if any token misses.\r\n */\r\nfunction scoreQuery(haystack: string, query: string): number {\r\n const hay = normalize(haystack);\r\n const tokens = normalize(query).split(/\\s+/).filter(Boolean);\r\n if (tokens.length === 0) return 1;\r\n if (!hay) return 0;\r\n\r\n let total = 0;\r\n for (const token of tokens) {\r\n const s = scoreToken(hay, token);\r\n if (s === 0) return 0;\r\n total += s;\r\n }\r\n return total / tokens.length;\r\n}\r\n\r\n/**\r\n * Filter `groups` against the query. Within each group, items are\r\n * surfaced in descending score order (most relevant first). Group\r\n * order itself is preserved — groups are author-defined categories,\r\n * not relevance buckets.\r\n *\r\n * Empty / whitespace-only query → return groups untouched (just drop\r\n * the empty ones). Preserves the original \"no query = browse\" UX.\r\n */\r\nfunction filterGroups(groups: CommandPaletteGroup[], query: string): CommandPaletteGroup[] {\r\n const q = query.trim();\r\n if (!q) {\r\n return groups\r\n .map((g) => ({ id: g.id, title: g.title, items: g.items }))\r\n .filter((g) => g.items.length > 0);\r\n }\r\n\r\n const out: CommandPaletteGroup[] = [];\r\n for (const g of groups) {\r\n const scored: Array<{ item: CommandPaletteItem; score: number }> = [];\r\n for (const it of g.items) {\r\n const hay = `${it.label} ${it.keywords || \"\"}`;\r\n const s = scoreQuery(hay, q);\r\n if (s > 0) scored.push({ item: it, score: s });\r\n }\r\n if (scored.length === 0) continue;\r\n scored.sort((a, b) => b.score - a.score);\r\n out.push({ id: g.id, title: g.title, items: scored.map((s) => s.item) });\r\n }\r\n return out;\r\n}\r\n\r\nfunction CommandPalette({\r\n open,\r\n onClose,\r\n groups = [],\r\n recentItems,\r\n pinnedItems,\r\n placeholder = \"Rechercher une page, une action…\",\r\n emptyState = \"Aucun résultat.\",\r\n onQueryChange,\r\n labels,\r\n}: CommandPaletteProps) {\r\n const L = React.useMemo(\r\n () => (mergeLabels(DEFAULT_LABELS, labels)),\r\n [labels]\r\n );\r\n\r\n const [query, setQuery] = React.useState(\"\");\r\n const debouncedQuery = useDebounced(query, DEBOUNCE_MS);\r\n const [highlight, setHighlight] = React.useState(0);\r\n const inputRef = React.useRef<HTMLInputElement>(null);\r\n const listRef = React.useRef<HTMLDivElement>(null);\r\n const titleId = React.useId();\r\n const listId = React.useId();\r\n const inputId = React.useId();\r\n\r\n // R-F.2 - the v2 trap is wired on the Dialog Paper element, activated\r\n // only while the palette is open. MUI's own trap is disabled below.\r\n const paperRef = React.useRef<HTMLDivElement>(null);\r\n useFocusTrap(paperRef as React.RefObject<HTMLDivElement>, !!open);\r\n\r\n // H4 — synthetic groups for pinnedItems / recentItems prepended to\r\n // the host's groups. Empty extras collapse the array to `groups`\r\n // verbatim — same reference when neither prop is set, so downstream\r\n // memoisation stays valid for the no-op case.\r\n const allGroups = React.useMemo<CommandPaletteGroup[]>(() => {\r\n const hasPinned = Array.isArray(pinnedItems) && pinnedItems.length > 0;\r\n const hasRecent = Array.isArray(recentItems) && recentItems.length > 0;\r\n if (!hasPinned && !hasRecent) return groups;\r\n const out: CommandPaletteGroup[] = [];\r\n if (hasPinned) {\r\n out.push({ id: \"_pinned\", title: L.pinnedTitle, items: pinnedItems ?? [] });\r\n }\r\n if (hasRecent) {\r\n out.push({ id: \"_recent\", title: L.recentTitle, items: recentItems ?? [] });\r\n }\r\n return [...out, ...groups];\r\n }, [pinnedItems, recentItems, groups, L.pinnedTitle, L.recentTitle]);\r\n\r\n const visibleGroups = React.useMemo(\r\n () => filterGroups(allGroups, debouncedQuery),\r\n [allGroups, debouncedQuery]\r\n );\r\n const itemsOnly = React.useMemo(\r\n () => visibleGroups.flatMap((g) => g.items),\r\n [visibleGroups]\r\n );\r\n\r\n // Reset state on (re)open. Initial focus on the input is handled by\r\n // useFocusTrap above (the input carries `autoFocus`).\r\n React.useEffect(() => {\r\n if (!open) return;\r\n setQuery(\"\");\r\n setHighlight(0);\r\n }, [open]);\r\n\r\n // Keep highlight valid when results shrink/grow\r\n React.useEffect(() => {\r\n if (highlight >= itemsOnly.length) {\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n }, [itemsOnly.length, highlight]);\r\n\r\n // Scroll the highlighted item into view\r\n React.useEffect(() => {\r\n if (!open || itemsOnly.length === 0) return;\r\n const node = listRef.current?.querySelector(`[data-item-index=\"${highlight}\"]`);\r\n if (node) node.scrollIntoView({ block: \"nearest\" });\r\n }, [highlight, open, itemsOnly.length]);\r\n\r\n const activate = (index: number) => {\r\n const it = itemsOnly[index];\r\n if (!it) return;\r\n onClose?.();\r\n // Defer the action one tick so onClose can restore focus before any\r\n // navigation happens (consumer-side routing).\r\n setTimeout(() => it.onSelect?.(), 0);\r\n };\r\n\r\n const onInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === \"ArrowDown\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h + 1) % itemsOnly.length));\r\n } else if (e.key === \"ArrowUp\") {\r\n e.preventDefault();\r\n setHighlight((h) => (itemsOnly.length === 0 ? 0 : (h - 1 + itemsOnly.length) % itemsOnly.length));\r\n } else if (e.key === \"Enter\") {\r\n e.preventDefault();\r\n activate(highlight);\r\n } else if (e.key === \"Home\") {\r\n e.preventDefault();\r\n setHighlight(0);\r\n } else if (e.key === \"End\") {\r\n e.preventDefault();\r\n setHighlight(Math.max(0, itemsOnly.length - 1));\r\n }\r\n };\r\n\r\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setQuery(e.target.value);\r\n onQueryChange?.(e.target.value);\r\n setHighlight(0);\r\n };\r\n\r\n const activeItemId = itemsOnly[highlight] ? `${listId}-opt-${highlight}` : undefined;\r\n\r\n // MUI v9: Dialog paper + backdrop bags forwarded through slotProps.\r\n // The paper slot embeds the per-instance focus-trap ref so we\r\n // useMemo it for reference stability across renders.\r\n const slotProps = React.useMemo(\r\n () => ({\r\n paper: {\r\n ref: paperRef,\r\n sx: {\r\n width: \"100%\",\r\n maxWidth: 640,\r\n borderRadius: \"var(--r-lg)\",\r\n boxShadow: \"var(--shadow-lg)\",\r\n margin: \"var(--s-3)\",\r\n overflow: \"hidden\",\r\n } satisfies SxProps<Theme>,\r\n },\r\n backdrop: BACKDROP_SLOT_PROPS,\r\n }),\r\n []\r\n );\r\n\r\n return (\r\n <Dialog\r\n open={!!open}\r\n onClose={onClose}\r\n maxWidth={false}\r\n aria-labelledby={titleId}\r\n // Hand over focus management to useFocusTrap above.\r\n disableAutoFocus\r\n disableEnforceFocus\r\n disableRestoreFocus\r\n slotProps={slotProps}\r\n >\r\n <Box className=\"pui-sr-only\" id={titleId}>\r\n {L.title}\r\n </Box>\r\n\r\n {/* Search input row */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-3) var(--s-4)\",\r\n borderBottom: \"1px solid var(--border)\",\r\n }}\r\n >\r\n <SearchIcon\r\n aria-hidden=\"true\"\r\n sx={{ color: \"var(--fg-subtle)\", fontSize: 20 }}\r\n />\r\n <Box\r\n component=\"input\"\r\n ref={inputRef}\r\n id={inputId}\r\n type=\"text\"\r\n role=\"combobox\"\r\n aria-expanded=\"true\"\r\n aria-controls={listId}\r\n aria-autocomplete=\"list\"\r\n aria-activedescendant={activeItemId}\r\n // CP-1 — accessible name for the combobox input. The sr-only title\r\n // labels the Dialog, not this input, and a placeholder is not a\r\n // reliable accessible name; expose the placeholder text as the name.\r\n aria-label={placeholder}\r\n autoFocus\r\n value={query}\r\n onChange={onInputChange}\r\n onKeyDown={onInputKeyDown}\r\n placeholder={placeholder}\r\n sx={{\r\n flex: 1,\r\n border: 0,\r\n outline: \"none\",\r\n background: \"transparent\",\r\n fontFamily: \"inherit\",\r\n fontSize: \"var(--text-body, 14px)\",\r\n color: \"var(--fg)\",\r\n \"&::placeholder\": { color: \"var(--fg-subtle)\" },\r\n }}\r\n />\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n ESC\r\n </Box>\r\n <IconButton\r\n size=\"small\"\r\n onClick={onClose}\r\n aria-label={L.closeButton}\r\n sx={{ color: \"var(--fg-muted)\" }}\r\n >\r\n <CloseIcon fontSize=\"small\" />\r\n </IconButton>\r\n </Box>\r\n\r\n {/* Results listbox */}\r\n <Box\r\n ref={listRef}\r\n role=\"listbox\"\r\n id={listId}\r\n aria-labelledby={titleId}\r\n sx={{\r\n maxHeight: 360,\r\n overflowY: \"auto\",\r\n padding: \"var(--s-2) 0\",\r\n }}\r\n >\r\n {visibleGroups.length === 0 && (\r\n <Box\r\n sx={{\r\n padding: \"var(--s-5) var(--s-4)\",\r\n textAlign: \"center\",\r\n color: \"var(--fg-muted)\",\r\n fontSize: \"var(--text-sm)\",\r\n }}\r\n >\r\n {emptyState}\r\n </Box>\r\n )}\r\n {(() => {\r\n let i = -1;\r\n return visibleGroups.map((g) => {\r\n const headerId = `${listId}-h-${g.id}`;\r\n return (\r\n <Box\r\n key={g.id}\r\n role=\"group\"\r\n aria-labelledby={headerId}\r\n >\r\n <Box\r\n id={headerId}\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n textTransform: \"uppercase\",\r\n letterSpacing: \"0.06em\",\r\n padding: \"var(--s-2) var(--s-4) var(--s-1)\",\r\n }}\r\n >\r\n {g.title}\r\n </Box>\r\n {g.items.map((entry) => {\r\n i += 1;\r\n const isActive = i === highlight;\r\n const idx = i;\r\n return (\r\n <Box\r\n key={entry.id}\r\n role=\"option\"\r\n id={`${listId}-opt-${idx}`}\r\n aria-selected={isActive}\r\n data-item-index={idx}\r\n onMouseEnter={() => setHighlight(idx)}\r\n onClick={() => activate(idx)}\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n gap: \"var(--s-2)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n cursor: \"pointer\",\r\n background: isActive ? \"var(--accent-soft)\" : \"transparent\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg)\",\r\n fontSize: \"var(--text-sm)\",\r\n fontWeight: \"var(--fw-medium)\",\r\n }}\r\n >\r\n {entry.icon && (\r\n <Box\r\n aria-hidden=\"true\"\r\n sx={{\r\n display: \"inline-flex\",\r\n color: isActive ? \"var(--accent)\" : \"var(--fg-muted)\",\r\n }}\r\n >\r\n {entry.icon}\r\n </Box>\r\n )}\r\n <Box sx={{ flex: 1, minWidth: 0, overflow: \"hidden\", textOverflow: \"ellipsis\", whiteSpace: \"nowrap\" }}>\r\n {entry.label}\r\n </Box>\r\n {entry.shortcut && (\r\n <Box\r\n component=\"kbd\"\r\n aria-hidden=\"true\"\r\n sx={{\r\n fontSize: \"var(--text-xs)\",\r\n fontWeight: \"var(--fw-semibold)\",\r\n color: \"var(--fg-subtle)\",\r\n background: \"var(--bg-subtle)\",\r\n border: \"1px solid var(--border)\",\r\n borderRadius: \"var(--r-sm)\",\r\n padding: \"1px var(--s-2)\",\r\n fontFamily: \"var(--font-mono)\",\r\n }}\r\n >\r\n {entry.shortcut}\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n });\r\n })()}\r\n </Box>\r\n\r\n {/* Footer */}\r\n <Box\r\n sx={{\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"space-between\",\r\n gap: \"var(--s-3)\",\r\n padding: \"var(--s-2) var(--s-4)\",\r\n borderTop: \"1px solid var(--border)\",\r\n background: \"var(--bg-subtle)\",\r\n fontSize: \"var(--text-xs)\",\r\n color: \"var(--fg-subtle)\",\r\n }}\r\n >\r\n {/* Visual-only keyboard hints. Hidden from SR — the listbox already\r\n exposes navigation via aria-activedescendant + role semantics. */}\r\n <Box aria-hidden=\"true\">{L.footerHint}</Box>\r\n {/* R-A.1 — polite live region so SR users hear the result count\r\n change as they type. aria-atomic ensures the full sentence is\r\n re-read on update. C6 — aria-relevant explicit closes NVDA +\r\n Firefox cross-sibling pull-in quirks. */}\r\n <Box role=\"status\" aria-live=\"polite\" aria-relevant=\"additions text\" aria-atomic=\"true\">\r\n {L.resultsCount(itemsOnly.length)}\r\n </Box>\r\n </Box>\r\n </Dialog>\r\n );\r\n}\r\n\r\nexport default CommandPalette;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import type { ButtonProps } from "./Button";
|
|
3
3
|
export interface ConfirmDialogLabels {
|
|
4
|
-
impactHeading?: React.ReactNode;
|
|
4
|
+
impactHeading?: React.ReactNode | undefined;
|
|
5
5
|
}
|
|
6
6
|
export interface ConfirmDialogProps {
|
|
7
|
-
open?: boolean;
|
|
8
|
-
onClose?: () => void;
|
|
9
|
-
onConfirm?: () => void;
|
|
10
|
-
title?: React.ReactNode;
|
|
11
|
-
description?: React.ReactNode;
|
|
12
|
-
confirmLabel?: React.ReactNode;
|
|
13
|
-
cancelLabel?: React.ReactNode;
|
|
14
|
-
confirmVariant?: ButtonProps["variant"];
|
|
15
|
-
loading?: boolean;
|
|
16
|
-
impact?: React.ReactNode[];
|
|
17
|
-
labels?: ConfirmDialogLabels;
|
|
18
|
-
children?: React.ReactNode;
|
|
7
|
+
open?: boolean | undefined;
|
|
8
|
+
onClose?: (() => void) | undefined;
|
|
9
|
+
onConfirm?: (() => void) | undefined;
|
|
10
|
+
title?: React.ReactNode | undefined;
|
|
11
|
+
description?: React.ReactNode | undefined;
|
|
12
|
+
confirmLabel?: React.ReactNode | undefined;
|
|
13
|
+
cancelLabel?: React.ReactNode | undefined;
|
|
14
|
+
confirmVariant?: ButtonProps["variant"] | undefined;
|
|
15
|
+
loading?: boolean | undefined;
|
|
16
|
+
impact?: React.ReactNode[] | undefined;
|
|
17
|
+
labels?: ConfirmDialogLabels | undefined;
|
|
18
|
+
children?: React.ReactNode | undefined;
|
|
19
19
|
}
|
|
20
20
|
declare function ConfirmDialog({ open, onClose, onConfirm, title, description, confirmLabel, cancelLabel, confirmVariant, loading, impact, // optional list of bullet-point consequences
|
|
21
21
|
labels, children, }: ConfirmDialogProps): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/lib/v2/components/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAuC5C,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC3C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1C,cAAc,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,SAAS,CAAC;IACvC,MAAM,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;CACxC;AAED,iBAAS,aAAa,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAA0B,EAC1B,WAAuB,EACvB,cAA0B,EAC1B,OAAe,EACf,MAAM,EAAE,6CAA6C;AACrD,MAAM,EACN,QAAQ,GACT,EAAE,kBAAkB,qBAmFpB;AAED,eAAe,aAAa,CAAC"}
|