@12-apps/ui 6.6.0 → 6.8.0
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/dist/{chunk-QLBYAYUG.js → chunk-KR2BP7NK.js} +4 -4
- package/dist/chunk-KR2BP7NK.js.map +1 -0
- package/dist/{chunk-DFVRZ3UK.js → chunk-KXARS46L.js} +3 -3
- package/dist/chunk-KXARS46L.js.map +1 -0
- package/dist/{chunk-JP55QWVR.js → chunk-L7L6SX64.js} +5 -2
- package/dist/chunk-L7L6SX64.js.map +1 -0
- package/dist/{chunk-QZZVHY6U.js → chunk-PVLDKXKR.js} +7 -3
- package/dist/chunk-PVLDKXKR.js.map +1 -0
- package/dist/{chunk-3KWD5Y5O.js → chunk-RXE5CUUE.js} +8 -4
- package/dist/chunk-RXE5CUUE.js.map +1 -0
- package/dist/{chunk-H7UAGTVW.js → chunk-TSG5C7MP.js} +4 -3
- package/dist/chunk-TSG5C7MP.js.map +1 -0
- package/dist/{chunk-NUCLEOHF.js → chunk-UNM7KFDX.js} +44 -14
- package/dist/chunk-UNM7KFDX.js.map +1 -0
- package/dist/{chunk-CEKPLUQV.js → chunk-UY7UF7IN.js} +19 -13
- package/dist/chunk-UY7UF7IN.js.map +1 -0
- package/dist/data-display/Alert.js +1 -1
- package/dist/data-display/AsyncStateContainer.js +2 -1
- package/dist/data-display/AsyncStateContainer.js.map +1 -1
- package/dist/data-display/Banner.js +4 -2
- package/dist/data-display/Banner.js.map +1 -1
- package/dist/data-display/CardKit.js +3 -1
- package/dist/data-display/CardKit.js.map +1 -1
- package/dist/data-display/Carousel.js +5 -2
- package/dist/data-display/Carousel.js.map +1 -1
- package/dist/data-display/DataGrid.js +1 -1
- package/dist/data-display/DataViews.js +90 -66
- package/dist/data-display/DataViews.js.map +1 -1
- package/dist/data-display/HoverCard.js +4 -1
- package/dist/data-display/HoverCard.js.map +1 -1
- package/dist/data-display/Lightbox.js +147 -117
- package/dist/data-display/Lightbox.js.map +1 -1
- package/dist/data-display/MapPreview.js +14 -10
- package/dist/data-display/MapPreview.js.map +1 -1
- package/dist/data-display/Table.js +4 -2
- package/dist/data-display/Table.js.map +1 -1
- package/dist/data-display/TimingDiagram.js +3 -2
- package/dist/data-display/TimingDiagram.js.map +1 -1
- package/dist/feedback/Sonner.js +5 -4
- package/dist/feedback/Sonner.js.map +1 -1
- package/dist/feedback/StackedModal.js +1 -1
- package/dist/feedback/TutorialOverlay.js +19 -5
- package/dist/feedback/TutorialOverlay.js.map +1 -1
- package/dist/form/AddressAutocomplete.js +16 -8
- package/dist/form/AddressAutocomplete.js.map +1 -1
- package/dist/form/Autocomplete.js +9 -7
- package/dist/form/Autocomplete.js.map +1 -1
- package/dist/form/Calendar.js +1 -1
- package/dist/form/CodeEditor.js +14 -9
- package/dist/form/CodeEditor.js.map +1 -1
- package/dist/form/DateRangePicker.js +10 -3
- package/dist/form/DateRangePicker.js.map +1 -1
- package/dist/form/Menubar.js +4 -1
- package/dist/form/Menubar.js.map +1 -1
- package/dist/form/PasswordStrength.js +48 -28
- package/dist/form/PasswordStrength.js.map +1 -1
- package/dist/form/PhoneInput.js +11 -5
- package/dist/form/PhoneInput.js.map +1 -1
- package/dist/form/SearchPalette.js +4 -1
- package/dist/form/SearchPalette.js.map +1 -1
- package/dist/form/Textarea.js +21 -19
- package/dist/form/Textarea.js.map +1 -1
- package/dist/form/UploadButton.js +16 -11
- package/dist/form/UploadButton.js.map +1 -1
- package/dist/layout/ContentToolbar.js +1 -1
- package/dist/layout/Dashboard.js +2 -1
- package/dist/layout/Dashboard.js.map +1 -1
- package/dist/layout/ScrollArea.js +9 -3
- package/dist/layout/ScrollArea.js.map +1 -1
- package/dist/layout/TableFilter.js +1 -1
- package/dist/navigation/Breadcrumbs.js +9 -3
- package/dist/navigation/Breadcrumbs.js.map +1 -1
- package/dist/navigation/CommandPalette.js +20 -7
- package/dist/navigation/CommandPalette.js.map +1 -1
- package/dist/navigation/Pagination.js +1 -1
- package/dist/navigation/Tabs.js +7 -3
- package/dist/navigation/Tabs.js.map +1 -1
- package/dist/pt-BR.js +192 -5
- package/dist/pt-BR.js.map +1 -1
- package/dist/types/components/data-display/Alert/Alert.d.ts +9 -2
- package/dist/types/components/data-display/Alert/Alert.d.ts.map +1 -1
- package/dist/types/components/data-display/Alert/Alert.types.d.ts +25 -9
- package/dist/types/components/data-display/Alert/Alert.types.d.ts.map +1 -1
- package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.d.ts.map +1 -1
- package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.types.d.ts +6 -0
- package/dist/types/components/data-display/AsyncStateContainer/AsyncStateContainer.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Banner/Banner.d.ts.map +1 -1
- package/dist/types/components/data-display/Banner/Banner.types.d.ts +2 -0
- package/dist/types/components/data-display/Banner/Banner.types.d.ts.map +1 -1
- package/dist/types/components/data-display/CardKit/card-actions-context.d.ts +3 -1
- package/dist/types/components/data-display/CardKit/card-actions-context.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts +3 -0
- package/dist/types/components/data-display/Carousel/Carousel.chrome.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.parts.d.ts.map +1 -1
- package/dist/types/components/data-display/Carousel/Carousel.types.d.ts +7 -0
- package/dist/types/components/data-display/Carousel/Carousel.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts +1 -0
- package/dist/types/components/data-display/DataGrid/DataGrid.states.d.ts.map +1 -1
- package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts +5 -0
- package/dist/types/components/data-display/DataGrid/DataGrid.types.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-category-pill.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts +29 -1
- package/dist/types/components/data-display/DataViews/data-views-copy.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts +12 -1
- package/dist/types/components/data-display/DataViews/data-views-day-input.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-filter-panel.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-grid-bodies.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-grid-parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-more-fields.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-pagination.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-range-pill.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-table-parts.d.ts.map +1 -1
- package/dist/types/components/data-display/DataViews/data-views-toolbar.d.ts.map +1 -1
- package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts +1 -1
- package/dist/types/components/data-display/HoverCard/HoverCard.content.d.ts.map +1 -1
- package/dist/types/components/data-display/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts +2 -0
- package/dist/types/components/data-display/HoverCard/HoverCard.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/types/components/data-display/Lightbox/Lightbox.types.d.ts +9 -0
- package/dist/types/components/data-display/Lightbox/Lightbox.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Lightbox/LightboxControls.d.ts.map +1 -1
- package/dist/types/components/data-display/Lightbox/lightbox-copy-context.d.ts +17 -0
- package/dist/types/components/data-display/Lightbox/lightbox-copy-context.d.ts.map +1 -0
- package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts +7 -0
- package/dist/types/components/data-display/MapPreview/MapControlBar.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapLayers.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapPreview.types.d.ts +9 -0
- package/dist/types/components/data-display/MapPreview/MapPreview.types.d.ts.map +1 -1
- package/dist/types/components/data-display/MapPreview/MapSearchBar.d.ts +2 -0
- package/dist/types/components/data-display/MapPreview/MapSearchBar.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/Table.types.d.ts +5 -0
- package/dist/types/components/data-display/Table/Table.types.d.ts.map +1 -1
- package/dist/types/components/data-display/Table/TableStates.d.ts +3 -1
- package/dist/types/components/data-display/Table/TableStates.d.ts.map +1 -1
- package/dist/types/components/data-display/TimingDiagram/TimingDiagram.d.ts.map +1 -1
- package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts +3 -0
- package/dist/types/components/data-display/TimingDiagram/TimingDiagram.types.d.ts.map +1 -1
- package/dist/types/components/feedback/Sonner/Sonner.d.ts +8 -0
- package/dist/types/components/feedback/Sonner/Sonner.d.ts.map +1 -1
- package/dist/types/components/feedback/Sonner/Sonner.types.d.ts +2 -0
- package/dist/types/components/feedback/Sonner/Sonner.types.d.ts.map +1 -1
- package/dist/types/components/feedback/Sonner/SonnerToast.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts +2 -0
- package/dist/types/components/feedback/StackedModal/StackedModal.parts.d.ts.map +1 -1
- package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts +2 -0
- package/dist/types/components/feedback/StackedModal/StackedModal.types.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts +3 -0
- package/dist/types/components/feedback/TutorialOverlay/TutorialOverlay.types.d.ts.map +1 -1
- package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts +2 -0
- package/dist/types/components/feedback/TutorialOverlay/TutorialStepBody.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts +7 -0
- package/dist/types/components/form/AddressAutocomplete/AddressAutocomplete.types.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressAutocompleteField.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts +1 -0
- package/dist/types/components/form/AddressAutocomplete/AddressFallbackField.d.ts.map +1 -1
- package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts +1 -0
- package/dist/types/components/form/AddressAutocomplete/AddressInputField.d.ts.map +1 -1
- package/dist/types/components/form/Autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts +9 -3
- package/dist/types/components/form/Autocomplete/Autocomplete.parts.d.ts.map +1 -1
- package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts +7 -0
- package/dist/types/components/form/Autocomplete/Autocomplete.types.d.ts.map +1 -1
- package/dist/types/components/form/Calendar/Calendar.types.d.ts +6 -0
- package/dist/types/components/form/Calendar/Calendar.types.d.ts.map +1 -1
- package/dist/types/components/form/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts +7 -0
- package/dist/types/components/form/CodeEditor/CodeEditor.types.d.ts.map +1 -1
- package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts +2 -0
- package/dist/types/components/form/CodeEditor/CodeEditorToolbar.d.ts.map +1 -1
- package/dist/types/components/form/DateRangePicker/DateRangePicker.d.ts.map +1 -1
- package/dist/types/components/form/DateRangePicker/DateRangePicker.range.d.ts.map +1 -1
- package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts +11 -0
- package/dist/types/components/form/DateRangePicker/DateRangePicker.types.d.ts.map +1 -1
- package/dist/types/components/form/DateRangePicker/DateRangePickerFields.d.ts.map +1 -1
- package/dist/types/components/form/Menubar/Menubar.d.ts.map +1 -1
- package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts +1 -0
- package/dist/types/components/form/Menubar/Menubar.toolbar.d.ts.map +1 -1
- package/dist/types/components/form/Menubar/Menubar.types.d.ts +5 -0
- package/dist/types/components/form/Menubar/Menubar.types.d.ts.map +1 -1
- package/dist/types/components/form/PasswordStrength/PasswordStrength.d.ts.map +1 -1
- package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts +4 -2
- package/dist/types/components/form/PasswordStrength/PasswordStrength.helpers.d.ts.map +1 -1
- package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts +8 -0
- package/dist/types/components/form/PasswordStrength/PasswordStrength.types.d.ts.map +1 -1
- package/dist/types/components/form/PhoneInput/PhoneInput.d.ts.map +1 -1
- package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts +7 -0
- package/dist/types/components/form/PhoneInput/PhoneInput.types.d.ts.map +1 -1
- package/dist/types/components/form/SearchPalette/SearchPalette.d.ts.map +1 -1
- package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts +2 -0
- package/dist/types/components/form/SearchPalette/SearchPalette.parts.d.ts.map +1 -1
- package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts +6 -0
- package/dist/types/components/form/SearchPalette/SearchPalette.types.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/Textarea.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/Textarea.types.d.ts +16 -1
- package/dist/types/components/form/Textarea/Textarea.types.d.ts.map +1 -1
- package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts +7 -0
- package/dist/types/components/form/Textarea/TextareaRichEditor.d.ts.map +1 -1
- package/dist/types/components/form/UploadButton/UploadButton.d.ts.map +1 -1
- package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts +6 -3
- package/dist/types/components/form/UploadButton/UploadButton.parts.d.ts.map +1 -1
- package/dist/types/components/form/UploadButton/UploadButton.types.d.ts +7 -0
- package/dist/types/components/form/UploadButton/UploadButton.types.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts +12 -0
- package/dist/types/components/layout/ContentToolbar/ContentToolbar.types.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/MultiSelectDropdown.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/SortByDropdown.d.ts.map +1 -1
- package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts +1 -1
- package/dist/types/components/layout/ContentToolbar/ViewSelector.d.ts.map +1 -1
- package/dist/types/components/layout/Dashboard/Dashboard.d.ts +1 -1
- package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts +4 -0
- package/dist/types/components/layout/Dashboard/Dashboard.types.d.ts.map +1 -1
- package/dist/types/components/layout/Dashboard/DashboardParts.d.ts +1 -1
- package/dist/types/components/layout/Dashboard/DashboardParts.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts +21 -3
- package/dist/types/components/layout/ScrollArea/ScrollArea.types.d.ts.map +1 -1
- package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts +2 -0
- package/dist/types/components/layout/ScrollArea/ScrollViewport.d.ts.map +1 -1
- package/dist/types/components/layout/TableFilter/TableFilter.d.ts +1 -1
- package/dist/types/components/layout/TableFilter/TableFilter.d.ts.map +1 -1
- package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts +7 -0
- package/dist/types/components/layout/TableFilter/TableFilter.types.d.ts.map +1 -1
- package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts +9 -0
- package/dist/types/components/layout/TableFilter/TableFilterContext.d.ts.map +1 -1
- package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts +2 -0
- package/dist/types/components/navigation/Breadcrumbs/BreadcrumbEntry.d.ts.map +1 -1
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts +3 -0
- package/dist/types/components/navigation/Breadcrumbs/Breadcrumbs.types.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts +3 -0
- package/dist/types/components/navigation/CommandPalette/CommandPalette.types.d.ts.map +1 -1
- package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts +2 -0
- package/dist/types/components/navigation/CommandPalette/CommandPaletteResults.d.ts.map +1 -1
- package/dist/types/components/navigation/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/navigation/Pagination/Pagination.types.d.ts +2 -0
- package/dist/types/components/navigation/Pagination/Pagination.types.d.ts.map +1 -1
- package/dist/types/components/navigation/Pagination/PaginationParts.d.ts +2 -0
- package/dist/types/components/navigation/Pagination/PaginationParts.d.ts.map +1 -1
- package/dist/types/components/navigation/Tabs/Tabs.d.ts.map +1 -1
- package/dist/types/components/navigation/Tabs/Tabs.types.d.ts +2 -0
- package/dist/types/components/navigation/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts +6 -2
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.parts.d.ts.map +1 -1
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts +6 -0
- package/dist/types/components/utility/InfiniteScroll/InfiniteScroll.types.d.ts.map +1 -1
- package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts +4 -2
- package/dist/types/components/utility/InstallPrompt/InstallPrompt.d.ts.map +1 -1
- package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts +8 -7
- package/dist/types/components/utility/InstallPrompt/InstallPrompt.types.d.ts.map +1 -1
- package/dist/types/copy/data-display.d.ts +56 -0
- package/dist/types/copy/data-display.d.ts.map +1 -0
- package/dist/types/copy/feedback.d.ts +38 -0
- package/dist/types/copy/feedback.d.ts.map +1 -0
- package/dist/types/copy/form.d.ts +146 -0
- package/dist/types/copy/form.d.ts.map +1 -0
- package/dist/types/copy/layout.d.ts +18 -0
- package/dist/types/copy/layout.d.ts.map +1 -0
- package/dist/types/copy/navigation.d.ts +24 -0
- package/dist/types/copy/navigation.d.ts.map +1 -0
- package/dist/types/copy/shared.d.ts +119 -0
- package/dist/types/copy/shared.d.ts.map +1 -0
- package/dist/types/copy/utility.d.ts +35 -0
- package/dist/types/copy/utility.d.ts.map +1 -0
- package/dist/types/copy.d.ts +13 -113
- package/dist/types/copy.d.ts.map +1 -1
- package/dist/types/pt-BR.d.ts +15 -18
- package/dist/types/pt-BR.d.ts.map +1 -1
- package/dist/types/pt-BR.data-display.d.ts +13 -0
- package/dist/types/pt-BR.data-display.d.ts.map +1 -0
- package/dist/types/pt-BR.feedback.d.ts +8 -0
- package/dist/types/pt-BR.feedback.d.ts.map +1 -0
- package/dist/types/pt-BR.form.d.ts +13 -0
- package/dist/types/pt-BR.form.d.ts.map +1 -0
- package/dist/types/pt-BR.layout.d.ts +7 -0
- package/dist/types/pt-BR.layout.d.ts.map +1 -0
- package/dist/types/pt-BR.navigation.d.ts +8 -0
- package/dist/types/pt-BR.navigation.d.ts.map +1 -0
- package/dist/types/pt-BR.shared.d.ts +21 -0
- package/dist/types/pt-BR.shared.d.ts.map +1 -0
- package/dist/types/pt-BR.utility.d.ts +8 -0
- package/dist/types/pt-BR.utility.d.ts.map +1 -0
- package/dist/types/user-avatar/user-avatar.d.ts +7 -1
- package/dist/types/user-avatar/user-avatar.d.ts.map +1 -1
- package/dist/user-avatar.js +2 -2
- package/dist/user-avatar.js.map +1 -1
- package/dist/utility/InfiniteScroll.js +7 -5
- package/dist/utility/InfiniteScroll.js.map +1 -1
- package/dist/utility/InstallPrompt.js +14 -13
- package/dist/utility/InstallPrompt.js.map +1 -1
- package/package.json +1 -1
- package/src/components/data-display/Alert/Alert.tsx +22 -5
- package/src/components/data-display/Alert/Alert.types.ts +20 -10
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.tsx +2 -1
- package/src/components/data-display/AsyncStateContainer/AsyncStateContainer.types.ts +6 -0
- package/src/components/data-display/Banner/Banner.tsx +5 -2
- package/src/components/data-display/Banner/Banner.types.ts +2 -0
- package/src/components/data-display/CardKit/card-actions-context.tsx +4 -0
- package/src/components/data-display/Carousel/Carousel.chrome.tsx +5 -0
- package/src/components/data-display/Carousel/Carousel.parts.tsx +4 -3
- package/src/components/data-display/Carousel/Carousel.types.ts +7 -0
- package/src/components/data-display/DataGrid/DataGrid.states.tsx +3 -3
- package/src/components/data-display/DataGrid/DataGrid.tsx +1 -1
- package/src/components/data-display/DataGrid/DataGrid.types.ts +5 -0
- package/src/components/data-display/DataViews/data-views-category-pill.tsx +2 -0
- package/src/components/data-display/DataViews/data-views-copy.ts +29 -1
- package/src/components/data-display/DataViews/data-views-day-input.tsx +14 -3
- package/src/components/data-display/DataViews/data-views-filter-panel.tsx +2 -1
- package/src/components/data-display/DataViews/data-views-grid-bodies.tsx +3 -0
- package/src/components/data-display/DataViews/data-views-grid-parts.tsx +9 -10
- package/src/components/data-display/DataViews/data-views-more-fields.tsx +3 -1
- package/src/components/data-display/DataViews/data-views-pagination.tsx +3 -0
- package/src/components/data-display/DataViews/data-views-range-pill.tsx +3 -1
- package/src/components/data-display/DataViews/data-views-table-parts.tsx +1 -0
- package/src/components/data-display/DataViews/data-views-toolbar.tsx +2 -0
- package/src/components/data-display/HoverCard/HoverCard.content.tsx +10 -2
- package/src/components/data-display/HoverCard/HoverCard.tsx +2 -3
- package/src/components/data-display/HoverCard/HoverCard.types.ts +2 -0
- package/src/components/data-display/Lightbox/Lightbox.tsx +3 -0
- package/src/components/data-display/Lightbox/Lightbox.types.ts +9 -0
- package/src/components/data-display/Lightbox/LightboxControls.tsx +28 -15
- package/src/components/data-display/Lightbox/lightbox-copy-context.tsx +42 -0
- package/src/components/data-display/MapPreview/MapControlBar.tsx +17 -9
- package/src/components/data-display/MapPreview/MapLayers.tsx +2 -0
- package/src/components/data-display/MapPreview/MapPreview.types.ts +10 -0
- package/src/components/data-display/MapPreview/MapSearchBar.tsx +4 -1
- package/src/components/data-display/Table/Table.tsx +7 -2
- package/src/components/data-display/Table/Table.types.ts +5 -0
- package/src/components/data-display/Table/TableStates.tsx +2 -2
- package/src/components/data-display/TimingDiagram/TimingDiagram.tsx +3 -2
- package/src/components/data-display/TimingDiagram/TimingDiagram.types.ts +3 -0
- package/src/components/feedback/Sonner/Sonner.tsx +15 -3
- package/src/components/feedback/Sonner/Sonner.types.ts +2 -0
- package/src/components/feedback/Sonner/SonnerToast.tsx +2 -1
- package/src/components/feedback/StackedModal/StackedModal.parts.tsx +10 -3
- package/src/components/feedback/StackedModal/StackedModal.tsx +2 -1
- package/src/components/feedback/StackedModal/StackedModal.types.ts +2 -0
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.tsx +13 -1
- package/src/components/feedback/TutorialOverlay/TutorialOverlay.types.ts +3 -0
- package/src/components/feedback/TutorialOverlay/TutorialStepBody.tsx +10 -4
- package/src/components/form/AddressAutocomplete/AddressAutocomplete.types.ts +7 -0
- package/src/components/form/AddressAutocomplete/AddressAutocompleteField.tsx +2 -0
- package/src/components/form/AddressAutocomplete/AddressFallbackField.tsx +4 -2
- package/src/components/form/AddressAutocomplete/AddressInputField.tsx +13 -6
- package/src/components/form/Autocomplete/Autocomplete.parts.tsx +9 -6
- package/src/components/form/Autocomplete/Autocomplete.tsx +2 -1
- package/src/components/form/Autocomplete/Autocomplete.types.ts +7 -0
- package/src/components/form/Calendar/Calendar.tsx +2 -2
- package/src/components/form/Calendar/Calendar.types.ts +7 -0
- package/src/components/form/CodeEditor/CodeEditor.tsx +6 -4
- package/src/components/form/CodeEditor/CodeEditor.types.ts +7 -0
- package/src/components/form/CodeEditor/CodeEditorToolbar.tsx +12 -5
- package/src/components/form/DateRangePicker/DateRangePicker.range.ts +2 -0
- package/src/components/form/DateRangePicker/DateRangePicker.tsx +4 -0
- package/src/components/form/DateRangePicker/DateRangePicker.types.ts +11 -0
- package/src/components/form/DateRangePicker/DateRangePickerFields.tsx +2 -0
- package/src/components/form/Menubar/Menubar.toolbar.tsx +3 -1
- package/src/components/form/Menubar/Menubar.tsx +2 -1
- package/src/components/form/Menubar/Menubar.types.ts +5 -0
- package/src/components/form/PasswordStrength/PasswordStrength.helpers.tsx +33 -17
- package/src/components/form/PasswordStrength/PasswordStrength.tsx +29 -13
- package/src/components/form/PasswordStrength/PasswordStrength.types.ts +9 -0
- package/src/components/form/PhoneInput/PhoneInput.tsx +15 -5
- package/src/components/form/PhoneInput/PhoneInput.types.ts +7 -0
- package/src/components/form/SearchPalette/SearchPalette.parts.tsx +4 -1
- package/src/components/form/SearchPalette/SearchPalette.tsx +4 -1
- package/src/components/form/SearchPalette/SearchPalette.types.ts +6 -0
- package/src/components/form/Textarea/Textarea.tsx +6 -1
- package/src/components/form/Textarea/Textarea.types.ts +14 -1
- package/src/components/form/Textarea/TextareaRichEditor.tsx +28 -18
- package/src/components/form/UploadButton/UploadButton.parts.tsx +16 -7
- package/src/components/form/UploadButton/UploadButton.tsx +4 -1
- package/src/components/form/UploadButton/UploadButton.types.ts +8 -0
- package/src/components/layout/ContentToolbar/ContentToolbar.tsx +10 -2
- package/src/components/layout/ContentToolbar/ContentToolbar.types.ts +12 -0
- package/src/components/layout/ContentToolbar/MultiSelectDropdown.tsx +15 -4
- package/src/components/layout/ContentToolbar/SortByDropdown.tsx +12 -3
- package/src/components/layout/ContentToolbar/ViewSelector.tsx +2 -1
- package/src/components/layout/Dashboard/Dashboard.types.ts +4 -0
- package/src/components/layout/Dashboard/DashboardParts.tsx +2 -1
- package/src/components/layout/ScrollArea/ScrollArea.tsx +16 -3
- package/src/components/layout/ScrollArea/ScrollArea.types.ts +19 -4
- package/src/components/layout/ScrollArea/ScrollViewport.tsx +4 -1
- package/src/components/layout/TableFilter/TableFilter.tsx +19 -11
- package/src/components/layout/TableFilter/TableFilter.types.ts +8 -0
- package/src/components/layout/TableFilter/TableFilterContext.tsx +10 -0
- package/src/components/navigation/Breadcrumbs/BreadcrumbEntry.tsx +11 -4
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.tsx +2 -0
- package/src/components/navigation/Breadcrumbs/Breadcrumbs.types.ts +3 -0
- package/src/components/navigation/CommandPalette/CommandPalette.tsx +15 -5
- package/src/components/navigation/CommandPalette/CommandPalette.types.ts +3 -0
- package/src/components/navigation/CommandPalette/CommandPaletteResults.tsx +5 -2
- package/src/components/navigation/Pagination/Pagination.tsx +2 -0
- package/src/components/navigation/Pagination/Pagination.types.ts +2 -0
- package/src/components/navigation/Pagination/PaginationParts.tsx +4 -1
- package/src/components/navigation/Tabs/Tabs.tsx +8 -3
- package/src/components/navigation/Tabs/Tabs.types.ts +2 -0
- package/src/components/utility/InfiniteScroll/InfiniteScroll.parts.tsx +4 -4
- package/src/components/utility/InfiniteScroll/InfiniteScroll.tsx +4 -2
- package/src/components/utility/InfiniteScroll/InfiniteScroll.types.ts +6 -0
- package/src/components/utility/InstallPrompt/InstallPrompt.tsx +18 -13
- package/src/components/utility/InstallPrompt/InstallPrompt.types.ts +9 -7
- package/src/copy/data-display.ts +60 -0
- package/src/copy/feedback.ts +39 -0
- package/src/copy/form.ts +154 -0
- package/src/copy/layout.ts +18 -0
- package/src/copy/navigation.ts +25 -0
- package/src/copy/shared.ts +122 -0
- package/src/copy/utility.ts +36 -0
- package/src/copy.ts +13 -117
- package/src/pt-BR.data-display.ts +236 -0
- package/src/pt-BR.feedback.ts +25 -0
- package/src/pt-BR.form.ts +96 -0
- package/src/pt-BR.layout.ts +15 -0
- package/src/pt-BR.navigation.ts +21 -0
- package/src/pt-BR.shared.ts +94 -0
- package/src/pt-BR.ts +15 -267
- package/src/pt-BR.utility.ts +21 -0
- package/src/user-avatar/user-avatar.tsx +8 -2
- package/dist/chunk-3KWD5Y5O.js.map +0 -1
- package/dist/chunk-CEKPLUQV.js.map +0 -1
- package/dist/chunk-DFVRZ3UK.js.map +0 -1
- package/dist/chunk-H7UAGTVW.js.map +0 -1
- package/dist/chunk-JP55QWVR.js.map +0 -1
- package/dist/chunk-NUCLEOHF.js.map +0 -1
- package/dist/chunk-QLBYAYUG.js.map +0 -1
- package/dist/chunk-QZZVHY6U.js.map +0 -1
|
@@ -208,6 +208,7 @@ export function ResultRow(props: {
|
|
|
208
208
|
/** The "see all results — Press ENTER" footer row. */
|
|
209
209
|
export function SubmitAllFooter(props: {
|
|
210
210
|
label: string;
|
|
211
|
+
keyLabel: string;
|
|
211
212
|
selected: boolean;
|
|
212
213
|
onSelect: () => void;
|
|
213
214
|
onHover: () => void;
|
|
@@ -226,7 +227,7 @@ export function SubmitAllFooter(props: {
|
|
|
226
227
|
{props.label}
|
|
227
228
|
</Typography>
|
|
228
229
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: 0.5, color: 'text.secondary' }}>
|
|
229
|
-
<Typography variant="caption">
|
|
230
|
+
<Typography variant="caption">{props.keyLabel}</Typography>
|
|
230
231
|
<KeyboardReturnIcon sx={{ fontSize: 14 }} />
|
|
231
232
|
</Box>
|
|
232
233
|
</ListItemButton>
|
|
@@ -245,6 +246,7 @@ export interface BodyView<T> {
|
|
|
245
246
|
activeIndex: number;
|
|
246
247
|
trimmed: string;
|
|
247
248
|
submitAllLabel: (q: string) => string;
|
|
249
|
+
submitKeyLabel: string;
|
|
248
250
|
getKey: (item: T) => string;
|
|
249
251
|
getPrimary: (item: T) => string;
|
|
250
252
|
getSecondary?: (item: T) => string | undefined;
|
|
@@ -293,6 +295,7 @@ export function PaletteBody<T>(view: BodyView<T>): React.JSX.Element | null {
|
|
|
293
295
|
{view.showFooter && (
|
|
294
296
|
<SubmitAllFooter
|
|
295
297
|
label={view.submitAllLabel(view.trimmed)}
|
|
298
|
+
keyLabel={view.submitKeyLabel}
|
|
296
299
|
selected={view.activeIndex === view.footerIndex}
|
|
297
300
|
onSelect={() => view.onSubmitAll?.(view.trimmed)}
|
|
298
301
|
onHover={() => view.setActiveIndex(view.footerIndex)}
|
|
@@ -50,12 +50,14 @@ function resolveOpts<T>(props: SearchPaletteProps<T>): {
|
|
|
50
50
|
/** String / label defaults. */
|
|
51
51
|
function resolveText<T>(props: SearchPaletteProps<T>): {
|
|
52
52
|
submitAllLabel: (q: string) => string;
|
|
53
|
+
submitKeyLabel: string;
|
|
53
54
|
noResultsLabel: string;
|
|
54
55
|
placeholder: string;
|
|
55
56
|
dataTestId: string;
|
|
56
57
|
} {
|
|
57
58
|
return {
|
|
58
59
|
submitAllLabel: props.submitAllLabel,
|
|
60
|
+
submitKeyLabel: props.submitKeyLabel,
|
|
59
61
|
noResultsLabel: props.noResultsLabel,
|
|
60
62
|
placeholder: props.placeholder,
|
|
61
63
|
dataTestId: props.dataTestId ?? 'search-palette',
|
|
@@ -130,7 +132,8 @@ export function SearchPalette<T>(props: SearchPaletteProps<T>): React.JSX.Elemen
|
|
|
130
132
|
hasQuery={hasQuery} emptyQueryContent={props.emptyQueryContent} visible={visible}
|
|
131
133
|
isLoading={opts.isLoading} noResultsLabel={text.noResultsLabel} showFooter={showFooter}
|
|
132
134
|
footerIndex={footerIndex} activeIndex={activeIndex} trimmed={trimmed}
|
|
133
|
-
submitAllLabel={text.submitAllLabel}
|
|
135
|
+
submitAllLabel={text.submitAllLabel} submitKeyLabel={text.submitKeyLabel}
|
|
136
|
+
getKey={props.getKey} getPrimary={props.getPrimary}
|
|
134
137
|
getSecondary={props.getSecondary} getLead={props.getLead} getTrailing={props.getTrailing}
|
|
135
138
|
onSelect={props.onSelect} onSubmitAll={props.onSubmitAll} setActiveIndex={setActiveIndex}
|
|
136
139
|
/>
|
|
@@ -56,6 +56,12 @@ export interface SearchPaletteProps<T> {
|
|
|
56
56
|
onSubmitAll?: (query: string) => void;
|
|
57
57
|
/** Footer label builder; defaults to `Todos os resultados para "{q}"`. */
|
|
58
58
|
submitAllLabel: (query: string) => string;
|
|
59
|
+
/**
|
|
60
|
+
* The key legend beside the footer's return glyph. A key's printed name is
|
|
61
|
+
* not universal — an `ABNT2` keyboard says `Enter`, an `ISO` one may not —
|
|
62
|
+
* so the host names the key its own users are looking at.
|
|
63
|
+
*/
|
|
64
|
+
submitKeyLabel: string;
|
|
59
65
|
|
|
60
66
|
/**
|
|
61
67
|
* Content shown when the query is empty (e.g. a "Populares" block). Keeps the
|
|
@@ -200,6 +200,10 @@ export const Textarea: React.FC<TextareaProps> = (textareaProps) => {
|
|
|
200
200
|
...props
|
|
201
201
|
} = { ...TEXTAREA_DEFAULTS, ...definedProps(textareaProps) };
|
|
202
202
|
|
|
203
|
+
// Read off the props rather than the merged object: the spread widens every
|
|
204
|
+
// key to optional, which would lose what the variant union already proved.
|
|
205
|
+
const { richEditorCopy } = textareaProps;
|
|
206
|
+
|
|
203
207
|
const [richTextValue, setRichTextValue] = useState('');
|
|
204
208
|
const hasIcon = Boolean(icon);
|
|
205
209
|
const testId = dataTestId || dataTestIdCamelCase;
|
|
@@ -213,10 +217,11 @@ export const Textarea: React.FC<TextareaProps> = (textareaProps) => {
|
|
|
213
217
|
[iconPosition === 'start' ? 'paddingLeft' : 'paddingRight']: ICON_GUTTER }) };
|
|
214
218
|
|
|
215
219
|
// If rich text variant, use the rich text editor
|
|
216
|
-
if (variant === 'rich') {
|
|
220
|
+
if (variant === 'rich' && richEditorCopy) {
|
|
217
221
|
return (
|
|
218
222
|
<TextareaShell testId={testId} label={label} glassLabel={glassLabel} error={error} helperText={helperText}>
|
|
219
223
|
<TextareaRichEditor
|
|
224
|
+
copy={richEditorCopy}
|
|
220
225
|
value={richTextValue}
|
|
221
226
|
onChange={setRichTextValue}
|
|
222
227
|
placeholder={props.placeholder}
|
|
@@ -1,8 +1,21 @@
|
|
|
1
|
+
import type { RichEditorToolbarCopy } from '../../../copy';
|
|
1
2
|
import type { ColorValue, SizeValue } from '../../../tokens/scales';
|
|
2
3
|
import type { TextareaAutosizeProps } from '@mui/material';
|
|
3
4
|
import type React from 'react';
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The rich variant mounts a formatting toolbar of ten glyph buttons; the other
|
|
8
|
+
* three variants mount no toolbar at all. So only that variant owes the words
|
|
9
|
+
* — a plain textarea is not asked for tooltips it has nowhere to put.
|
|
10
|
+
*/
|
|
11
|
+
type TextareaRichCopy =
|
|
12
|
+
| { variant?: 'default' | 'autosize' | 'resizable'; richEditorCopy?: never }
|
|
13
|
+
| { variant: 'rich'; richEditorCopy: RichEditorToolbarCopy };
|
|
14
|
+
|
|
15
|
+
export type TextareaProps = TextareaBaseProps & TextareaRichCopy;
|
|
16
|
+
|
|
17
|
+
export interface TextareaBaseProps
|
|
18
|
+
extends Omit<TextareaAutosizeProps, 'variant' | 'color' | 'size'> {
|
|
6
19
|
/**
|
|
7
20
|
* The variant of the textarea
|
|
8
21
|
*/
|
|
@@ -14,6 +14,7 @@ import { styled } from '@mui/material';
|
|
|
14
14
|
import React, { useEffect, useRef, useState } from 'react';
|
|
15
15
|
|
|
16
16
|
import { floatAnimation, getColorFromTheme } from './Textarea.styles';
|
|
17
|
+
import type { RichEditorToolbarCopy } from '../../../copy';
|
|
17
18
|
|
|
18
19
|
const RichToolbar = styled(Box)<{ glass?: boolean }>(({ theme, glass }) => ({
|
|
19
20
|
display: 'flex',
|
|
@@ -206,11 +207,12 @@ const useRichEditorState = ({
|
|
|
206
207
|
};
|
|
207
208
|
|
|
208
209
|
const InlineFormatButtons: React.FC<{
|
|
210
|
+
copy: RichEditorToolbarCopy;
|
|
209
211
|
activeFormats: Record<string, boolean>;
|
|
210
212
|
onCommand: (command: string, value?: string) => void;
|
|
211
|
-
}> = ({ activeFormats, onCommand }) => (
|
|
213
|
+
}> = ({ copy, activeFormats, onCommand }) => (
|
|
212
214
|
<>
|
|
213
|
-
<Tooltip title=
|
|
215
|
+
<Tooltip title={copy.bold} arrow>
|
|
214
216
|
<ToolbarButton
|
|
215
217
|
size="small"
|
|
216
218
|
active={activeFormats.bold}
|
|
@@ -220,7 +222,7 @@ const InlineFormatButtons: React.FC<{
|
|
|
220
222
|
</ToolbarButton>
|
|
221
223
|
</Tooltip>
|
|
222
224
|
|
|
223
|
-
<Tooltip title=
|
|
225
|
+
<Tooltip title={copy.italic} arrow>
|
|
224
226
|
<ToolbarButton
|
|
225
227
|
size="small"
|
|
226
228
|
active={activeFormats.italic}
|
|
@@ -230,7 +232,7 @@ const InlineFormatButtons: React.FC<{
|
|
|
230
232
|
</ToolbarButton>
|
|
231
233
|
</Tooltip>
|
|
232
234
|
|
|
233
|
-
<Tooltip title=
|
|
235
|
+
<Tooltip title={copy.underline} arrow>
|
|
234
236
|
<ToolbarButton
|
|
235
237
|
size="small"
|
|
236
238
|
active={activeFormats.underline}
|
|
@@ -244,13 +246,14 @@ const InlineFormatButtons: React.FC<{
|
|
|
244
246
|
);
|
|
245
247
|
|
|
246
248
|
const BlockFormatButtons: React.FC<{
|
|
249
|
+
copy: RichEditorToolbarCopy;
|
|
247
250
|
activeFormats: Record<string, boolean>;
|
|
248
251
|
onCommand: (command: string, value?: string) => void;
|
|
249
|
-
}> = ({ activeFormats, onCommand }) => (
|
|
252
|
+
}> = ({ copy, activeFormats, onCommand }) => (
|
|
250
253
|
<>
|
|
251
254
|
<Divider orientation="vertical" flexItem />
|
|
252
255
|
|
|
253
|
-
<Tooltip title=
|
|
256
|
+
<Tooltip title={copy.bulletList} arrow>
|
|
254
257
|
<ToolbarButton
|
|
255
258
|
size="small"
|
|
256
259
|
active={activeFormats.list}
|
|
@@ -260,7 +263,7 @@ const BlockFormatButtons: React.FC<{
|
|
|
260
263
|
</ToolbarButton>
|
|
261
264
|
</Tooltip>
|
|
262
265
|
|
|
263
|
-
<Tooltip title=
|
|
266
|
+
<Tooltip title={copy.numberedList} arrow>
|
|
264
267
|
<ToolbarButton
|
|
265
268
|
size="small"
|
|
266
269
|
active={activeFormats.orderedList}
|
|
@@ -272,13 +275,13 @@ const BlockFormatButtons: React.FC<{
|
|
|
272
275
|
|
|
273
276
|
<Divider orientation="vertical" flexItem />
|
|
274
277
|
|
|
275
|
-
<Tooltip title=
|
|
278
|
+
<Tooltip title={copy.quote} arrow>
|
|
276
279
|
<ToolbarButton size="small" onClick={() => onCommand('formatBlock', 'blockquote')}>
|
|
277
280
|
<FormatQuote fontSize="small" />
|
|
278
281
|
</ToolbarButton>
|
|
279
282
|
</Tooltip>
|
|
280
283
|
|
|
281
|
-
<Tooltip title=
|
|
284
|
+
<Tooltip title={copy.code} arrow>
|
|
282
285
|
<ToolbarButton size="small" onClick={() => onCommand('formatBlock', 'pre')}>
|
|
283
286
|
<Code fontSize="small" />
|
|
284
287
|
</ToolbarButton>
|
|
@@ -286,11 +289,11 @@ const BlockFormatButtons: React.FC<{
|
|
|
286
289
|
|
|
287
290
|
<Divider orientation="vertical" flexItem />
|
|
288
291
|
|
|
289
|
-
<Tooltip title=
|
|
292
|
+
<Tooltip title={copy.insertLink} arrow>
|
|
290
293
|
<ToolbarButton
|
|
291
294
|
size="small"
|
|
292
295
|
onClick={() => {
|
|
293
|
-
const url = window.prompt(
|
|
296
|
+
const url = window.prompt(copy.linkPrompt);
|
|
294
297
|
if (url) onCommand('createLink', url);
|
|
295
298
|
}}
|
|
296
299
|
>
|
|
@@ -298,13 +301,13 @@ const BlockFormatButtons: React.FC<{
|
|
|
298
301
|
</ToolbarButton>
|
|
299
302
|
</Tooltip>
|
|
300
303
|
|
|
301
|
-
<Tooltip title=
|
|
304
|
+
<Tooltip title={copy.textColor} arrow>
|
|
302
305
|
<ToolbarButton size="small">
|
|
303
306
|
<FormatColorText fontSize="small" />
|
|
304
307
|
</ToolbarButton>
|
|
305
308
|
</Tooltip>
|
|
306
309
|
|
|
307
|
-
<Tooltip title=
|
|
310
|
+
<Tooltip title={copy.backgroundColor} arrow>
|
|
308
311
|
<ToolbarButton size="small">
|
|
309
312
|
<FormatColorFill fontSize="small" />
|
|
310
313
|
</ToolbarButton>
|
|
@@ -315,17 +318,24 @@ const BlockFormatButtons: React.FC<{
|
|
|
315
318
|
// The formatting buttons. Split out so the editor body is state, handlers and
|
|
316
319
|
// the editable region.
|
|
317
320
|
const EditorToolbar: React.FC<{
|
|
321
|
+
copy: RichEditorToolbarCopy;
|
|
318
322
|
glass?: boolean;
|
|
319
323
|
activeFormats: Record<string, boolean>;
|
|
320
324
|
onCommand: (command: string, value?: string) => void;
|
|
321
|
-
}> = ({ glass, activeFormats, onCommand }) => (
|
|
325
|
+
}> = ({ copy, glass, activeFormats, onCommand }) => (
|
|
322
326
|
<RichToolbar glass={glass}>
|
|
323
|
-
<InlineFormatButtons activeFormats={activeFormats} onCommand={onCommand} />
|
|
324
|
-
<BlockFormatButtons activeFormats={activeFormats} onCommand={onCommand} />
|
|
327
|
+
<InlineFormatButtons copy={copy} activeFormats={activeFormats} onCommand={onCommand} />
|
|
328
|
+
<BlockFormatButtons copy={copy} activeFormats={activeFormats} onCommand={onCommand} />
|
|
325
329
|
</RichToolbar>
|
|
326
330
|
);
|
|
327
331
|
|
|
328
332
|
export const TextareaRichEditor: React.FC<{
|
|
333
|
+
/**
|
|
334
|
+
* The ten toolbar buttons' tooltips — which are also their accessible names,
|
|
335
|
+
* since every one of them is a glyph — plus the link prompt. REQUIRED: this
|
|
336
|
+
* package ships no default copy.
|
|
337
|
+
*/
|
|
338
|
+
copy: RichEditorToolbarCopy;
|
|
329
339
|
value?: string;
|
|
330
340
|
onChange?: (html: string) => void;
|
|
331
341
|
placeholder?: string;
|
|
@@ -333,7 +343,7 @@ export const TextareaRichEditor: React.FC<{
|
|
|
333
343
|
glass?: boolean;
|
|
334
344
|
color?: string;
|
|
335
345
|
characterLimit?: number;
|
|
336
|
-
}> = ({ value, onChange, placeholder, error, glass, color, characterLimit }) => {
|
|
346
|
+
}> = ({ copy, value, onChange, placeholder, error, glass, color, characterLimit }) => {
|
|
337
347
|
const {
|
|
338
348
|
focused,
|
|
339
349
|
setFocused,
|
|
@@ -346,7 +356,7 @@ export const TextareaRichEditor: React.FC<{
|
|
|
346
356
|
|
|
347
357
|
return (
|
|
348
358
|
<Box sx={{ position: 'relative' }}>
|
|
349
|
-
<EditorToolbar glass={glass} activeFormats={activeFormats} onCommand={handleFormat} />
|
|
359
|
+
<EditorToolbar copy={copy} glass={glass} activeFormats={activeFormats} onCommand={handleFormat} />
|
|
350
360
|
|
|
351
361
|
<ContentEditableDiv
|
|
352
362
|
ref={contentRef}
|
|
@@ -4,10 +4,12 @@ import { Box, Button, LinearProgress, Typography, useTheme } from '@mui/material
|
|
|
4
4
|
import type React from 'react';
|
|
5
5
|
|
|
6
6
|
import type { DragHandlers } from './UploadButton.hooks';
|
|
7
|
+
import type { UploadButtonCopy } from '../../../copy';
|
|
7
8
|
import type { UploadButtonProps } from './UploadButton.types';
|
|
8
9
|
|
|
9
10
|
/** Shared shape for the two trigger variants. */
|
|
10
11
|
export interface TriggerProps {
|
|
12
|
+
copy: UploadButtonCopy;
|
|
11
13
|
label: string;
|
|
12
14
|
icon?: React.ReactNode;
|
|
13
15
|
disabled: boolean;
|
|
@@ -19,6 +21,7 @@ export interface TriggerProps {
|
|
|
19
21
|
|
|
20
22
|
/** The drag-and-drop surface. */
|
|
21
23
|
export function UploadDropzone({
|
|
24
|
+
copy,
|
|
22
25
|
label,
|
|
23
26
|
icon,
|
|
24
27
|
disabled,
|
|
@@ -61,7 +64,7 @@ export function UploadDropzone({
|
|
|
61
64
|
onOpen();
|
|
62
65
|
}}
|
|
63
66
|
aria-describedby={describedBy}
|
|
64
|
-
aria-label={
|
|
67
|
+
aria-label={copy.dropzoneRole(label)}
|
|
65
68
|
>
|
|
66
69
|
<Box sx={{ mb: 2 }}>
|
|
67
70
|
{icon || <CloudUploadOutlined sx={{ fontSize: 48, color: 'text.secondary' }} />}
|
|
@@ -70,7 +73,7 @@ export function UploadDropzone({
|
|
|
70
73
|
{label}
|
|
71
74
|
</Typography>
|
|
72
75
|
<Typography variant="body2" color="text.secondary">
|
|
73
|
-
|
|
76
|
+
{copy.dropzoneHint}
|
|
74
77
|
</Typography>
|
|
75
78
|
</Box>
|
|
76
79
|
);
|
|
@@ -81,6 +84,7 @@ const MUI_VARIANT = { outline: 'outlined', ghost: 'text' } as const;
|
|
|
81
84
|
|
|
82
85
|
/** The plain-button trigger. */
|
|
83
86
|
export function UploadTrigger({
|
|
87
|
+
copy,
|
|
84
88
|
label,
|
|
85
89
|
icon,
|
|
86
90
|
disabled,
|
|
@@ -110,18 +114,20 @@ export function UploadTrigger({
|
|
|
110
114
|
}),
|
|
111
115
|
}}
|
|
112
116
|
>
|
|
113
|
-
{isUploading ?
|
|
117
|
+
{isUploading ? copy.uploading : label}
|
|
114
118
|
</Button>
|
|
115
119
|
);
|
|
116
120
|
}
|
|
117
121
|
|
|
118
122
|
/** The screen-reader live region — drag, progress and error announcements. */
|
|
119
123
|
function UploadAnnouncer({
|
|
124
|
+
copy,
|
|
120
125
|
announceDragOver,
|
|
121
126
|
isUploading,
|
|
122
127
|
progress,
|
|
123
128
|
error,
|
|
124
129
|
}: {
|
|
130
|
+
copy: UploadButtonCopy;
|
|
125
131
|
announceDragOver: boolean;
|
|
126
132
|
isUploading: boolean;
|
|
127
133
|
progress: number;
|
|
@@ -140,15 +146,16 @@ function UploadAnnouncer({
|
|
|
140
146
|
overflow: 'hidden',
|
|
141
147
|
}}
|
|
142
148
|
>
|
|
143
|
-
{announceDragOver &&
|
|
144
|
-
{isUploading &&
|
|
145
|
-
{error &&
|
|
149
|
+
{announceDragOver && copy.dropReady}
|
|
150
|
+
{isUploading && copy.uploadInProgress(Math.round(progress))}
|
|
151
|
+
{error && copy.errorAnnouncement(error)}
|
|
146
152
|
</div>
|
|
147
153
|
);
|
|
148
154
|
}
|
|
149
155
|
|
|
150
156
|
/** Progress bar, helper text, error text and the live region. */
|
|
151
157
|
export function UploadFeedback({
|
|
158
|
+
copy,
|
|
152
159
|
isUploading,
|
|
153
160
|
progress,
|
|
154
161
|
helperText,
|
|
@@ -157,6 +164,7 @@ export function UploadFeedback({
|
|
|
157
164
|
errorId,
|
|
158
165
|
announceDragOver,
|
|
159
166
|
}: {
|
|
167
|
+
copy: UploadButtonCopy;
|
|
160
168
|
isUploading: boolean;
|
|
161
169
|
progress: number;
|
|
162
170
|
helperText?: string;
|
|
@@ -171,7 +179,7 @@ export function UploadFeedback({
|
|
|
171
179
|
<Box sx={{ mt: 1 }}>
|
|
172
180
|
<LinearProgress variant="determinate" value={progress} sx={{ borderRadius: 1 }} />
|
|
173
181
|
<Typography variant="caption" sx={{ mt: 0.5, display: 'block' }}>
|
|
174
|
-
{Math.round(progress)}
|
|
182
|
+
{copy.percentUploaded(Math.round(progress))}
|
|
175
183
|
</Typography>
|
|
176
184
|
</Box>
|
|
177
185
|
)}
|
|
@@ -200,6 +208,7 @@ export function UploadFeedback({
|
|
|
200
208
|
)}
|
|
201
209
|
|
|
202
210
|
<UploadAnnouncer
|
|
211
|
+
copy={copy}
|
|
203
212
|
announceDragOver={announceDragOver}
|
|
204
213
|
isUploading={isUploading}
|
|
205
214
|
progress={progress}
|
|
@@ -19,8 +19,9 @@ import type { UploadButtonProps, UploadButtonState } from './UploadButton.types'
|
|
|
19
19
|
*/
|
|
20
20
|
const UploadButton = React.forwardRef<HTMLInputElement, UploadButtonProps>((props, ref) => {
|
|
21
21
|
const {
|
|
22
|
+
copy,
|
|
22
23
|
variant = 'default',
|
|
23
|
-
label =
|
|
24
|
+
label = props.copy.buttonLabel,
|
|
24
25
|
disabled = false,
|
|
25
26
|
multiple = false,
|
|
26
27
|
accept,
|
|
@@ -34,6 +35,7 @@ const UploadButton = React.forwardRef<HTMLInputElement, UploadButtonProps>((prop
|
|
|
34
35
|
useUploadButton(props);
|
|
35
36
|
|
|
36
37
|
const trigger: TriggerProps = {
|
|
38
|
+
copy,
|
|
37
39
|
label,
|
|
38
40
|
icon,
|
|
39
41
|
disabled,
|
|
@@ -65,6 +67,7 @@ const UploadButton = React.forwardRef<HTMLInputElement, UploadButtonProps>((prop
|
|
|
65
67
|
)}
|
|
66
68
|
|
|
67
69
|
<UploadFeedback
|
|
70
|
+
copy={copy}
|
|
68
71
|
isUploading={derived.isUploading}
|
|
69
72
|
progress={derived.progress}
|
|
70
73
|
helperText={helperText}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
+
import type { UploadButtonCopy } from '../../../copy';
|
|
4
|
+
|
|
3
5
|
export interface UploadButtonProps {
|
|
6
|
+
/**
|
|
7
|
+
* What this control says beyond the host's own button label. REQUIRED: three
|
|
8
|
+
* of the four are announcements only a screen reader ever receives, which is
|
|
9
|
+
* how they stayed English through every language pass.
|
|
10
|
+
*/
|
|
11
|
+
copy: UploadButtonCopy;
|
|
4
12
|
/** Button variant style */
|
|
5
13
|
variant?: 'default' | 'outline' | 'ghost' | 'dropzone';
|
|
6
14
|
|
|
@@ -28,6 +28,8 @@ type SelectionClusterProps = Pick<
|
|
|
28
28
|
| 'clearAllTestId'
|
|
29
29
|
| 'edgeAlign'
|
|
30
30
|
| 'selectAllLabel'
|
|
31
|
+
| 'selectAllText'
|
|
32
|
+
| 'clearAllText'
|
|
31
33
|
>;
|
|
32
34
|
|
|
33
35
|
/** The left cluster: Select All + (when selecting) Clear All / count / actions. */
|
|
@@ -41,6 +43,8 @@ function SelectionCluster({
|
|
|
41
43
|
clearAllTestId,
|
|
42
44
|
edgeAlign = false,
|
|
43
45
|
selectAllLabel,
|
|
46
|
+
selectAllText,
|
|
47
|
+
clearAllText,
|
|
44
48
|
}: SelectionClusterProps): React.JSX.Element {
|
|
45
49
|
const actionsSlot = actions !== undefined && (
|
|
46
50
|
<Box sx={{ ml: 0.5, display: 'flex', flexShrink: 0, alignItems: 'center' }}>{actions}</Box>
|
|
@@ -68,7 +72,7 @@ function SelectionCluster({
|
|
|
68
72
|
data-testid={selectAllTestId}
|
|
69
73
|
sx={{ ...selectionButtonSx, display: { xs: 'none', md: 'inline-flex' } }}
|
|
70
74
|
>
|
|
71
|
-
|
|
75
|
+
{selectAllText}
|
|
72
76
|
</Button>
|
|
73
77
|
<Checkbox
|
|
74
78
|
size="small"
|
|
@@ -88,7 +92,7 @@ function SelectionCluster({
|
|
|
88
92
|
data-testid={clearAllTestId}
|
|
89
93
|
sx={selectionButtonSx}
|
|
90
94
|
>
|
|
91
|
-
|
|
95
|
+
{clearAllText}
|
|
92
96
|
</Button>
|
|
93
97
|
<Divider orientation="vertical" flexItem sx={{ height: 16, alignSelf: 'center' }} />
|
|
94
98
|
<Typography
|
|
@@ -216,6 +220,8 @@ export function ContentToolbar({
|
|
|
216
220
|
edgeAlign = false,
|
|
217
221
|
exclusiveSelection = false,
|
|
218
222
|
selectAllLabel,
|
|
223
|
+
selectAllText,
|
|
224
|
+
clearAllText,
|
|
219
225
|
}: ContentToolbarProps): React.JSX.Element {
|
|
220
226
|
// Under `exclusiveSelection` the two states are alternatives, not neighbours:
|
|
221
227
|
// browsing shows the controls and no checkbox, selecting shows the checkbox
|
|
@@ -241,6 +247,8 @@ export function ContentToolbar({
|
|
|
241
247
|
>
|
|
242
248
|
{showSelection && (
|
|
243
249
|
<SelectionCluster
|
|
250
|
+
selectAllText={selectAllText}
|
|
251
|
+
clearAllText={clearAllText}
|
|
244
252
|
hasSelection={hasSelection}
|
|
245
253
|
selectedCount={selectedCount}
|
|
246
254
|
selectAll={selectAll}
|
|
@@ -4,6 +4,9 @@ import type { ReactNode } from 'react';
|
|
|
4
4
|
|
|
5
5
|
/** Props for {@link ContentToolbar} — the shared content-page toolbar. */
|
|
6
6
|
export interface ContentToolbarProps {
|
|
7
|
+
/** The two bulk-selection buttons, spelled out where the bar has room. */
|
|
8
|
+
selectAllText: string;
|
|
9
|
+
clearAllText: string;
|
|
7
10
|
/**
|
|
8
11
|
* The select-all checkbox's accessible name. It carries no visible label of
|
|
9
12
|
* its own, so this is the only thing a screen reader gets for it. REQUIRED:
|
|
@@ -61,6 +64,8 @@ export type ViewMode = 'grid' | 'list';
|
|
|
61
64
|
|
|
62
65
|
/** Props for {@link ViewSelector}. */
|
|
63
66
|
export interface ViewSelectorProps {
|
|
67
|
+
/** The card-size control's accessible name — it renders icons only. */
|
|
68
|
+
cardSizeLabel: string;
|
|
64
69
|
/** Current view mode. */
|
|
65
70
|
viewMode: ViewMode;
|
|
66
71
|
/** Called when the view mode changes. */
|
|
@@ -99,6 +104,10 @@ export interface SortFieldDefinition<TField extends string = string> {
|
|
|
99
104
|
|
|
100
105
|
/** Props for {@link SortByDropdown}. */
|
|
101
106
|
export interface SortByDropdownProps<TField extends string = string> {
|
|
107
|
+
/** The menu's two section headings, and the trigger's own prefix. */
|
|
108
|
+
orderHeading: string;
|
|
109
|
+
sortHeading: string;
|
|
110
|
+
triggerPrefix: string;
|
|
102
111
|
fields: SortFieldDefinition<TField>[];
|
|
103
112
|
activeField: TField;
|
|
104
113
|
activeOrder?: string;
|
|
@@ -126,6 +135,9 @@ export interface MultiSelectExtraOption {
|
|
|
126
135
|
|
|
127
136
|
/** Props for {@link MultiSelectDropdown}. */
|
|
128
137
|
export interface MultiSelectDropdownProps<TValue extends string = string> {
|
|
138
|
+
/** The extra-options section heading, and the clear-selection action. */
|
|
139
|
+
extraOptionsHeading: string;
|
|
140
|
+
clearText: string;
|
|
129
141
|
/** Label before the trigger (e.g. "Content Type"). */
|
|
130
142
|
label: string;
|
|
131
143
|
options: MultiSelectOption<TValue>[];
|
|
@@ -62,6 +62,8 @@ export function MultiSelectDropdown<TValue extends string = string>({
|
|
|
62
62
|
onClear,
|
|
63
63
|
allLabel = 'All',
|
|
64
64
|
clearLabel,
|
|
65
|
+
clearText,
|
|
66
|
+
extraOptionsHeading,
|
|
65
67
|
extraOptions,
|
|
66
68
|
searchable,
|
|
67
69
|
searchPlaceholder = 'Search…',
|
|
@@ -111,7 +113,7 @@ export function MultiSelectDropdown<TValue extends string = string>({
|
|
|
111
113
|
<>
|
|
112
114
|
{renderTrigger()}
|
|
113
115
|
<MultiSelectMenu
|
|
114
|
-
anchorEl={anchorEl}
|
|
116
|
+
extraOptionsHeading={extraOptionsHeading} clearText={clearText} anchorEl={anchorEl}
|
|
115
117
|
open={open}
|
|
116
118
|
close={close}
|
|
117
119
|
options={options}
|
|
@@ -184,6 +186,8 @@ interface MultiSelectMenuProps<TValue extends string> {
|
|
|
184
186
|
onQueryChange: (value: string) => void;
|
|
185
187
|
searchPlaceholder: string;
|
|
186
188
|
noResultsLabel: string;
|
|
189
|
+
extraOptionsHeading: string;
|
|
190
|
+
clearText: string;
|
|
187
191
|
/** Match the menu width to the trigger and left-align it (stacked select). */
|
|
188
192
|
matchAnchorWidth?: boolean;
|
|
189
193
|
testId?: string;
|
|
@@ -211,6 +215,8 @@ function MultiSelectMenu<TValue extends string>({
|
|
|
211
215
|
selected,
|
|
212
216
|
onToggle,
|
|
213
217
|
extraOptions,
|
|
218
|
+
extraOptionsHeading,
|
|
219
|
+
clearText,
|
|
214
220
|
clearDisabled,
|
|
215
221
|
onClear,
|
|
216
222
|
showSearch,
|
|
@@ -267,25 +273,30 @@ function MultiSelectMenu<TValue extends string>({
|
|
|
267
273
|
? [
|
|
268
274
|
<Divider key="extra-divider" />,
|
|
269
275
|
<ListSubheader key="extra-label" sx={{ px: 1, py: 0.75, fontSize: '0.75rem', fontWeight: 600 }}>
|
|
270
|
-
|
|
276
|
+
{extraOptionsHeading}
|
|
271
277
|
</ListSubheader>,
|
|
272
278
|
...extraOptions.map((extra) => (
|
|
273
279
|
<CheckboxRow key={extra.id} label={extra.label} checked={extra.checked} onToggle={(next) => extra.onCheckedChange(next)} />
|
|
274
280
|
)),
|
|
275
281
|
]
|
|
276
282
|
: null}
|
|
277
|
-
<MenuClearFooter
|
|
283
|
+
<MenuClearFooter
|
|
284
|
+
clearText={clearText} clearDisabled={clearDisabled} onClear={onClear}
|
|
285
|
+
close={close} testId={testId}
|
|
286
|
+
/>
|
|
278
287
|
</Menu>
|
|
279
288
|
);
|
|
280
289
|
}
|
|
281
290
|
|
|
282
291
|
/** The bottom "Clear" footer that resets the selection and closes the menu. */
|
|
283
292
|
function MenuClearFooter({
|
|
293
|
+
clearText,
|
|
284
294
|
clearDisabled,
|
|
285
295
|
onClear,
|
|
286
296
|
close,
|
|
287
297
|
testId,
|
|
288
298
|
}: {
|
|
299
|
+
clearText: string;
|
|
289
300
|
clearDisabled: boolean;
|
|
290
301
|
onClear: () => void;
|
|
291
302
|
close: () => void;
|
|
@@ -320,7 +331,7 @@ function MenuClearFooter({
|
|
|
320
331
|
}}
|
|
321
332
|
sx={{ minWidth: 0, px: 1, py: 0.25, fontSize: '0.75rem', fontWeight: 400, textTransform: 'none', color: 'text.secondary' }}
|
|
322
333
|
>
|
|
323
|
-
|
|
334
|
+
{clearText}
|
|
324
335
|
</Button>
|
|
325
336
|
</Box>
|
|
326
337
|
);
|
|
@@ -103,6 +103,8 @@ interface SortMenuProps<TField extends string> {
|
|
|
103
103
|
fields: SortFieldDefinition<TField>[];
|
|
104
104
|
activeField: TField;
|
|
105
105
|
onFieldSelect: (field: TField) => void;
|
|
106
|
+
orderHeading: string;
|
|
107
|
+
sortHeading: string;
|
|
106
108
|
}
|
|
107
109
|
|
|
108
110
|
/** The Order + Sort sections of the dropdown menu. */
|
|
@@ -116,6 +118,8 @@ function SortMenu<TField extends string>({
|
|
|
116
118
|
fields,
|
|
117
119
|
activeField,
|
|
118
120
|
onFieldSelect,
|
|
121
|
+
orderHeading,
|
|
122
|
+
sortHeading,
|
|
119
123
|
}: SortMenuProps<TField>): React.JSX.Element {
|
|
120
124
|
return (
|
|
121
125
|
<Menu
|
|
@@ -128,7 +132,7 @@ function SortMenu<TField extends string>({
|
|
|
128
132
|
>
|
|
129
133
|
{orderOptions.length > 0 && [
|
|
130
134
|
<ListSubheader key="order-label" sx={sectionLabelSx}>
|
|
131
|
-
|
|
135
|
+
{orderHeading}
|
|
132
136
|
</ListSubheader>,
|
|
133
137
|
...orderOptions.map((option) => (
|
|
134
138
|
<SortRow
|
|
@@ -141,7 +145,7 @@ function SortMenu<TField extends string>({
|
|
|
141
145
|
)),
|
|
142
146
|
<Divider key="order-divider" />,
|
|
143
147
|
]}
|
|
144
|
-
<ListSubheader sx={sectionLabelSx}>
|
|
148
|
+
<ListSubheader sx={sectionLabelSx}>{sortHeading}</ListSubheader>
|
|
145
149
|
{fields.map((field) => (
|
|
146
150
|
<SortRow
|
|
147
151
|
key={field.value}
|
|
@@ -167,6 +171,9 @@ export function SortByDropdown<TField extends string = string>({
|
|
|
167
171
|
activeOrder,
|
|
168
172
|
onFieldChange,
|
|
169
173
|
onOrderChange,
|
|
174
|
+
orderHeading,
|
|
175
|
+
sortHeading,
|
|
176
|
+
triggerPrefix,
|
|
170
177
|
'data-testid': testId,
|
|
171
178
|
}: SortByDropdownProps<TField>): React.JSX.Element {
|
|
172
179
|
const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
|
|
@@ -195,7 +202,7 @@ export function SortByDropdown<TField extends string = string>({
|
|
|
195
202
|
component="span"
|
|
196
203
|
sx={{ display: { xs: 'none', md: 'inline' }, color: 'text.secondary', fontSize: '0.875rem' }}
|
|
197
204
|
>
|
|
198
|
-
|
|
205
|
+
{triggerPrefix}
|
|
199
206
|
</Typography>
|
|
200
207
|
<Button
|
|
201
208
|
variant="text"
|
|
@@ -219,6 +226,8 @@ export function SortByDropdown<TField extends string = string>({
|
|
|
219
226
|
<ChevronDownIcon sx={{ fontSize: 14 }} />
|
|
220
227
|
</Button>
|
|
221
228
|
<SortMenu
|
|
229
|
+
orderHeading={orderHeading}
|
|
230
|
+
sortHeading={sortHeading}
|
|
222
231
|
anchorEl={anchorEl}
|
|
223
232
|
open={open}
|
|
224
233
|
close={close}
|
|
@@ -25,6 +25,7 @@ export function ViewSelector({
|
|
|
25
25
|
onViewModeChange,
|
|
26
26
|
zoom,
|
|
27
27
|
onZoomChange,
|
|
28
|
+
cardSizeLabel,
|
|
28
29
|
}: ViewSelectorProps): React.JSX.Element {
|
|
29
30
|
const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);
|
|
30
31
|
const open = Boolean(anchorEl);
|
|
@@ -37,7 +38,7 @@ export function ViewSelector({
|
|
|
37
38
|
<Box sx={{ width: 96, display: 'flex', alignItems: 'center' }}>
|
|
38
39
|
<Slider
|
|
39
40
|
data-testid="resize-card-slider"
|
|
40
|
-
aria-label=
|
|
41
|
+
aria-label={cardSizeLabel}
|
|
41
42
|
value={zoom[0] ?? 0}
|
|
42
43
|
onChange={(_, value) => onZoomChange([value as number])}
|
|
43
44
|
min={0}
|