@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
|
@@ -119,6 +119,11 @@ export interface GridEditing<T = Record<string, unknown>> {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
export interface DataGridProps<T = Record<string, unknown>> extends React.HTMLAttributes<HTMLElement> {
|
|
122
|
+
/**
|
|
123
|
+
* What an empty result reads as. REQUIRED — the fallback was the English
|
|
124
|
+
* "No data available", on the package every host renders.
|
|
125
|
+
*/
|
|
126
|
+
emptyText: string;
|
|
122
127
|
/** Dataset (client mode uses this array; server mode renders current page) */
|
|
123
128
|
rows: T[];
|
|
124
129
|
/** Stable row id accessor */
|
|
@@ -84,6 +84,8 @@ export function PillControl<T extends Record<string, unknown>>({
|
|
|
84
84
|
}
|
|
85
85
|
return (
|
|
86
86
|
<MultiSelectDropdown
|
|
87
|
+
extraOptionsHeading={copy.filters.optionsHeading}
|
|
88
|
+
clearText={copy.filters.clear}
|
|
87
89
|
clearLabel={copy.filters.clearRange(pill.label)}
|
|
88
90
|
label={pill.label}
|
|
89
91
|
options={pill.options}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CategorySelectCopy, ConfirmActionCopy } from "../../../copy";
|
|
1
|
+
import type { CategorySelectCopy, ConfirmActionCopy, TableFilterCopy } from "../../../copy";
|
|
2
2
|
import type { SavedViewsLabels } from "../../layout/ContentToolbar/ContentToolbar.types";
|
|
3
3
|
/**
|
|
4
4
|
* Every word the DataViews family renders, as REQUIRED host config (FUT-760).
|
|
@@ -177,6 +177,16 @@ export interface DataViewsFiltersCopy {
|
|
|
177
177
|
* dates alone — and getting it wrong silently drops or adds a day's rows.
|
|
178
178
|
*/
|
|
179
179
|
rangeInclusiveNote: string;
|
|
180
|
+
/** The FROM half of a range, in the box itself. */
|
|
181
|
+
rangeStart: string;
|
|
182
|
+
/**
|
|
183
|
+
* The day field's mask, which IS its placeholder — so the expected ORDER is
|
|
184
|
+
* on screen before the first keystroke rather than discovered by getting it
|
|
185
|
+
* wrong. `dd/mm/aaaa` is one locale's order and one locale's letters.
|
|
186
|
+
*/
|
|
187
|
+
dayMask: string;
|
|
188
|
+
/** Drop every applied filter, spelled out in the panel where there is room. */
|
|
189
|
+
clearAllFilters: string;
|
|
180
190
|
/** The day-range presets' labels, keyed by preset id. */
|
|
181
191
|
rangePresets: Readonly<Record<string, string>>;
|
|
182
192
|
scopesLabel: string;
|
|
@@ -197,6 +207,11 @@ export interface DataViewsFiltersCopy {
|
|
|
197
207
|
allOption: string;
|
|
198
208
|
optionSearchPlaceholder: string;
|
|
199
209
|
optionsEmpty: string;
|
|
210
|
+
/**
|
|
211
|
+
* The heading over a dropdown's EXTRA toggles — the section below the option
|
|
212
|
+
* list, not the list itself. It only appears when a pill supplies extras.
|
|
213
|
+
*/
|
|
214
|
+
optionsHeading: string;
|
|
200
215
|
}
|
|
201
216
|
|
|
202
217
|
export interface DataViewsSelectionCopy {
|
|
@@ -231,6 +246,12 @@ export interface DataViewsNavCopy {
|
|
|
231
246
|
reset: string;
|
|
232
247
|
/** The inline error when a view could not be refreshed or saved. */
|
|
233
248
|
updateFailed: string;
|
|
249
|
+
/** The dismiss on that failure's alert — a glyph with no visible label. */
|
|
250
|
+
dismissError: string;
|
|
251
|
+
/** The filter panel's back arrow — a glyph with no visible label. */
|
|
252
|
+
goBack: string;
|
|
253
|
+
/** The label in front of the page-size select. */
|
|
254
|
+
pageSize: string;
|
|
234
255
|
saveFailed: string;
|
|
235
256
|
/** Reopen the save dialog over an existing view. */
|
|
236
257
|
editView: string;
|
|
@@ -265,6 +286,13 @@ export interface DataViewsCopy {
|
|
|
265
286
|
savedViewsMenu: SavedViewsLabels;
|
|
266
287
|
confirmAction: ConfirmActionCopy;
|
|
267
288
|
categorySelect: CategorySelectCopy;
|
|
289
|
+
/**
|
|
290
|
+
* The filter shell's own words. DataViews mounts three of its parts — the
|
|
291
|
+
* panel, the keyword box and the numeric range field — so all five are on
|
|
292
|
+
* screen; the range's two ends are `Mínimo`/`Máximo` rather than the day
|
|
293
|
+
* range's `De`/`Até`, which is why this cannot be derived from `filters`.
|
|
294
|
+
*/
|
|
295
|
+
tableFilter: TableFilterCopy;
|
|
268
296
|
board: DataViewsBoardCopy;
|
|
269
297
|
deleteView: DeleteViewCopy;
|
|
270
298
|
manageViews: ManageViewsCopy;
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
import { TextField } from '@mui/material';
|
|
31
31
|
import React, { useEffect, useState } from 'react';
|
|
32
32
|
|
|
33
|
+
|
|
33
34
|
/** `AAAA-MM-DD` (the wire) → `dd/mm/aaaa` (what the merchant reads). */
|
|
34
35
|
export function isoToBr(iso: string): string {
|
|
35
36
|
const parts = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso);
|
|
@@ -112,6 +113,7 @@ export function DayBoundInput({
|
|
|
112
113
|
testId,
|
|
113
114
|
error = false,
|
|
114
115
|
describedBy,
|
|
116
|
+
mask,
|
|
115
117
|
}: {
|
|
116
118
|
label: string;
|
|
117
119
|
/** The applied bound, `AAAA-MM-DD`, or undefined when this end is open. */
|
|
@@ -127,6 +129,17 @@ export function DayBoundInput({
|
|
|
127
129
|
error?: boolean;
|
|
128
130
|
/** Id of the element carrying that complaint, so it is read WITH the field. */
|
|
129
131
|
describedBy?: string;
|
|
132
|
+
/**
|
|
133
|
+
* The day mask, which IS the placeholder — so the expected ORDER is on
|
|
134
|
+
* screen before the first keystroke rather than discovered by getting it
|
|
135
|
+
* wrong. `dd/mm/aaaa` is one locale's order and one locale's letters.
|
|
136
|
+
*
|
|
137
|
+
* A PROP rather than a context read: this field has two callers, and only
|
|
138
|
+
* one of them is inside DataViews. `DateRangePicker` mounts it standalone
|
|
139
|
+
* with its own message table, so a context read here throws for every host
|
|
140
|
+
* of that picker — which is exactly what it did.
|
|
141
|
+
*/
|
|
142
|
+
mask: string;
|
|
130
143
|
}): React.JSX.Element {
|
|
131
144
|
const applied = value ?? '';
|
|
132
145
|
const [text, setText] = useState(() => isoToBr(applied));
|
|
@@ -146,9 +159,7 @@ export function DayBoundInput({
|
|
|
146
159
|
type="text"
|
|
147
160
|
label={label}
|
|
148
161
|
error={error}
|
|
149
|
-
|
|
150
|
-
// the first keystroke rather than discovered by getting it wrong.
|
|
151
|
-
placeholder="dd/mm/aaaa"
|
|
162
|
+
placeholder={mask}
|
|
152
163
|
value={text}
|
|
153
164
|
onChange={(event) => {
|
|
154
165
|
const next = maskBrDate(event.target.value);
|
|
@@ -159,6 +159,7 @@ export function FilterDialog<T extends Record<string, unknown>>({
|
|
|
159
159
|
open={open}
|
|
160
160
|
onClose={onClose}
|
|
161
161
|
navigationTitle={copy.filters.panelTitle}
|
|
162
|
+
backLabel={copy.nav.goBack}
|
|
162
163
|
modalId={`${props.testIdPrefix}-filters`}
|
|
163
164
|
maxWidth="xs"
|
|
164
165
|
dataTestId={`${props.testIdPrefix}-filter-dialog`}
|
|
@@ -174,7 +175,7 @@ export function FilterDialog<T extends Record<string, unknown>>({
|
|
|
174
175
|
data-testid={`${props.testIdPrefix}-clear-filters`}
|
|
175
176
|
sx={{ fontSize: "0.75rem", color: "text.secondary" }}
|
|
176
177
|
>
|
|
177
|
-
|
|
178
|
+
{copy.filters.clearAllFilters}
|
|
178
179
|
</Link>
|
|
179
180
|
</Box>
|
|
180
181
|
<FilterControls {...props} />
|
|
@@ -19,6 +19,7 @@ import { SelectAllStrip } from "./data-views-select-all-strip";
|
|
|
19
19
|
import { ListCardGroup, type ListGroupConfig } from "./list-card-rails";
|
|
20
20
|
import type { DataViewCardSelection } from "./data-views-types";
|
|
21
21
|
import type { DataViewsController } from "./use-data-views-state";
|
|
22
|
+
import { useDataViewsCopy } from "./data-views-copy-context";
|
|
22
23
|
|
|
23
24
|
/* ── Body (grid) ─────────────────────────────────────────────────────────── */
|
|
24
25
|
|
|
@@ -52,6 +53,7 @@ function GridBody<T extends Record<string, unknown>>({
|
|
|
52
53
|
dataTestId,
|
|
53
54
|
emptyState,
|
|
54
55
|
}: GridBodyProps<T>): React.JSX.Element {
|
|
56
|
+
const copy = useDataViewsCopy();
|
|
55
57
|
return (
|
|
56
58
|
<Box
|
|
57
59
|
sx={{
|
|
@@ -77,6 +79,7 @@ function GridBody<T extends Record<string, unknown>>({
|
|
|
77
79
|
sorting={{ mode: sortMode, sortBy, onChangeSortBy }}
|
|
78
80
|
data-testid={dataTestId}
|
|
79
81
|
emptyState={emptyState}
|
|
82
|
+
emptyText={copy.grid.emptyFilteredTitle}
|
|
80
83
|
/>
|
|
81
84
|
</Box>
|
|
82
85
|
);
|
|
@@ -20,6 +20,7 @@ import { toOverflowFields, useFilterOverflow, type OverflowSplit } from "./data-
|
|
|
20
20
|
import { ShellToolbar } from "./data-views-shell-toolbar";
|
|
21
21
|
import type { DisplayPanelView } from "./data-views-display-panel";
|
|
22
22
|
import type { DataViewExport } from "./data-views-export";
|
|
23
|
+
import { useDataViewsCopy } from "./data-views-copy-context";
|
|
23
24
|
import { DataViewsEmpty } from "./data-views-empty";
|
|
24
25
|
import { DataViewsPagination } from "./data-views-pagination";
|
|
25
26
|
import type { BoardConfig } from "./DataViewsBoard";
|
|
@@ -286,6 +287,7 @@ function ShellStack<T extends Record<string, unknown>>({
|
|
|
286
287
|
props: GridShellProps<T>;
|
|
287
288
|
filters: ReturnType<typeof useGridShellFilters<T>>;
|
|
288
289
|
}): React.JSX.Element {
|
|
290
|
+
const copy = useDataViewsCopy();
|
|
289
291
|
const { c, testIdPrefix, dataTestId, scopes = [], emptyState, inlineFilters = false } = props;
|
|
290
292
|
const { showInline, useModal, inlineVisible, filterProps, split, onControlOpenChange } = filters;
|
|
291
293
|
// The grid renders the FILTERED empty state itself — it is the only party
|
|
@@ -299,7 +301,10 @@ function ShellStack<T extends Record<string, unknown>>({
|
|
|
299
301
|
/>
|
|
300
302
|
);
|
|
301
303
|
return (
|
|
302
|
-
<TableFilter
|
|
304
|
+
<TableFilter
|
|
305
|
+
copy={copy.tableFilter} open={c.filterOpen} onOpenChange={c.setFilterOpen}
|
|
306
|
+
hasActiveFilters={c.activeFilterCount > 0}
|
|
307
|
+
>
|
|
303
308
|
<Stack spacing={0} data-testid={dataTestId ? `${dataTestId}-container` : undefined}>
|
|
304
309
|
<GridHeaderRow title={props.title} headerActions={props.headerActions} testIdPrefix={testIdPrefix} />
|
|
305
310
|
<ShellToolbar
|
|
@@ -311,9 +316,7 @@ function ShellStack<T extends Record<string, unknown>>({
|
|
|
311
316
|
filterControls={
|
|
312
317
|
inlineVisible ? (
|
|
313
318
|
<InlineFilterControls
|
|
314
|
-
{...filterProps}
|
|
315
|
-
split={split}
|
|
316
|
-
activeFilterCount={c.activeFilterCount}
|
|
319
|
+
{...filterProps} split={split} activeFilterCount={c.activeFilterCount}
|
|
317
320
|
onControlOpenChange={onControlOpenChange}
|
|
318
321
|
/>
|
|
319
322
|
) : undefined
|
|
@@ -328,12 +331,8 @@ function ShellStack<T extends Record<string, unknown>>({
|
|
|
328
331
|
showInline={showInline}
|
|
329
332
|
/>
|
|
330
333
|
<ScopeTabsSlot
|
|
331
|
-
scopes={scopes}
|
|
332
|
-
|
|
333
|
-
board={props.board}
|
|
334
|
-
value={c.scope}
|
|
335
|
-
onChange={c.setScope}
|
|
336
|
-
counts={c.scopeCounts}
|
|
334
|
+
scopes={scopes} scopeFieldId={props.scopeFieldId} board={props.board}
|
|
335
|
+
value={c.scope} onChange={c.setScope} counts={c.scopeCounts}
|
|
337
336
|
testIdPrefix={testIdPrefix}
|
|
338
337
|
/>
|
|
339
338
|
<TableFilter.Layout>
|
|
@@ -60,7 +60,9 @@ function OverflowPill<T extends Record<string, unknown>>({
|
|
|
60
60
|
if (options.length > INLINE_OPTION_LIMIT) {
|
|
61
61
|
return (
|
|
62
62
|
<MultiSelectDropdown
|
|
63
|
-
|
|
63
|
+
extraOptionsHeading={copy.filters.optionsHeading}
|
|
64
|
+
clearText={copy.filters.clear}
|
|
65
|
+
clearLabel={copy.filters.clearRange(field.label)}
|
|
64
66
|
label={field.pill?.label ?? field.label}
|
|
65
67
|
options={options}
|
|
66
68
|
selected={new Set(values)}
|
|
@@ -4,6 +4,7 @@ import { Box } from "../../../mui/Box";
|
|
|
4
4
|
import { Pagination } from "../../navigation/Pagination";
|
|
5
5
|
|
|
6
6
|
import type { DataViewsController } from "./use-data-views-state";
|
|
7
|
+
import { useDataViewsCopy } from "./data-views-copy-context";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* The server-mode pagination control rendered beneath the grid — shown only
|
|
@@ -17,10 +18,12 @@ export function DataViewsPagination<T extends Record<string, unknown>>({
|
|
|
17
18
|
c: DataViewsController<T>;
|
|
18
19
|
testIdPrefix: string;
|
|
19
20
|
}): React.JSX.Element | null {
|
|
21
|
+
const copy = useDataViewsCopy();
|
|
20
22
|
if (!c.serverMode || c.serverPageCount <= 1) return null;
|
|
21
23
|
return (
|
|
22
24
|
<Box sx={{ mt: 2, display: "flex", justifyContent: "center" }}>
|
|
23
25
|
<Pagination
|
|
26
|
+
pageSizeLabel={copy.nav.pageSize}
|
|
24
27
|
page={c.serverPage}
|
|
25
28
|
count={c.serverPageCount}
|
|
26
29
|
onChange={(_event, page) => c.changePage(page)}
|
|
@@ -52,9 +52,11 @@ function BoundField<T extends Record<string, unknown>>({
|
|
|
52
52
|
onChange: (bound: number | string | undefined) => void;
|
|
53
53
|
testId: string;
|
|
54
54
|
}): React.JSX.Element {
|
|
55
|
+
const copy = useDataViewsCopy();
|
|
55
56
|
if (field.kind === 'day') {
|
|
56
57
|
return (
|
|
57
58
|
<DayBoundInput
|
|
59
|
+
mask={copy.filters.dayMask}
|
|
58
60
|
label={label}
|
|
59
61
|
value={value == null ? undefined : String(value)}
|
|
60
62
|
onChange={onChange}
|
|
@@ -102,7 +104,7 @@ export function RangeBounds<T extends Record<string, unknown>>({
|
|
|
102
104
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1.5 }}>
|
|
103
105
|
<BoundField
|
|
104
106
|
field={field}
|
|
105
|
-
label=
|
|
107
|
+
label={copy.filters.rangeStart}
|
|
106
108
|
value={value.min}
|
|
107
109
|
onChange={(min) => onChange({ ...value, min })}
|
|
108
110
|
testId={`${testId}-min`}
|
|
@@ -153,6 +153,8 @@ export function GridToolbar<T extends Record<string, unknown>>(props: GridToolba
|
|
|
153
153
|
>
|
|
154
154
|
<ContentToolbar
|
|
155
155
|
selectAllLabel={copy.selection.selectAll}
|
|
156
|
+
selectAllText={copy.selection.selectAllOnPage}
|
|
157
|
+
clearAllText={copy.filters.clearAll}
|
|
156
158
|
hasSelection={selectedRows.length > 0}
|
|
157
159
|
selectedCount={selectedRows.length}
|
|
158
160
|
selectAll={props.selectAll}
|
|
@@ -19,7 +19,14 @@ const testId = (base: string | undefined, suffix: string, fallback: string) =>
|
|
|
19
19
|
export interface HoverCardContentProps
|
|
20
20
|
extends Pick<
|
|
21
21
|
HoverCardProps,
|
|
22
|
-
|
|
22
|
+
| 'variant'
|
|
23
|
+
| 'title'
|
|
24
|
+
| 'description'
|
|
25
|
+
| 'avatar'
|
|
26
|
+
| 'loading'
|
|
27
|
+
| 'loadingComponent'
|
|
28
|
+
| 'loadingText'
|
|
29
|
+
| 'children'
|
|
23
30
|
> {
|
|
24
31
|
dataTestId?: string;
|
|
25
32
|
}
|
|
@@ -113,6 +120,7 @@ const DetailedContent: React.FC<HoverCardContentProps> = ({
|
|
|
113
120
|
export const HoverCardContent: React.FC<HoverCardContentProps> = (props) => {
|
|
114
121
|
const { variant, title, description, avatar, loading, loadingComponent, children, dataTestId } =
|
|
115
122
|
props;
|
|
123
|
+
const { loadingText } = props;
|
|
116
124
|
|
|
117
125
|
if (loading) {
|
|
118
126
|
return (
|
|
@@ -120,7 +128,7 @@ export const HoverCardContent: React.FC<HoverCardContentProps> = (props) => {
|
|
|
120
128
|
{loadingComponent || (
|
|
121
129
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
122
130
|
<CircularProgress size={20} />
|
|
123
|
-
<Typography variant="body2">
|
|
131
|
+
<Typography variant="body2">{loadingText}</Typography>
|
|
124
132
|
</Box>
|
|
125
133
|
)}
|
|
126
134
|
</LoadingContainer>
|
|
@@ -62,7 +62,7 @@ const offsetMargin = (placement: HoverCardPlacement, offset: number) => {
|
|
|
62
62
|
export const HoverCard = React.forwardRef<HTMLDivElement, HoverCardProps>((props, ref) => {
|
|
63
63
|
const {
|
|
64
64
|
variant, glow, pulse, title, description, avatar, trigger, placement, showArrow,
|
|
65
|
-
animation, enterDelay, exitDelay, maxWidth, loading, loadingComponent, touchEnabled,
|
|
65
|
+
animation, enterDelay, exitDelay, maxWidth, loading, loadingComponent, loadingText, touchEnabled,
|
|
66
66
|
offset, disabled, onOpen, onClose, children, dataTestId,
|
|
67
67
|
...rest
|
|
68
68
|
} = withDefaults(props, DEFAULTS) as ResolvedProps;
|
|
@@ -122,8 +122,7 @@ export const HoverCard = React.forwardRef<HTMLDivElement, HoverCardProps>((props
|
|
|
122
122
|
>
|
|
123
123
|
<CardContent sx={{ p: padding, '&:last-child': { pb: padding } }}>
|
|
124
124
|
<HoverCardContent
|
|
125
|
-
variant={variant}
|
|
126
|
-
title={title}
|
|
125
|
+
loadingText={loadingText} variant={variant} title={title}
|
|
127
126
|
description={description}
|
|
128
127
|
avatar={avatar}
|
|
129
128
|
loading={loading}
|
|
@@ -9,6 +9,8 @@ export type HoverCardPlacement =
|
|
|
9
9
|
export type HoverCardAnimation = 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right';
|
|
10
10
|
|
|
11
11
|
export interface HoverCardProps extends Omit<MuiPopoverProps, 'variant' | 'open' | 'anchorEl'> {
|
|
12
|
+
/** What the card says while its content is in flight. REQUIRED. */
|
|
13
|
+
loadingText: string;
|
|
12
14
|
/**
|
|
13
15
|
* The variant of the hover card
|
|
14
16
|
*/
|
|
@@ -3,6 +3,7 @@ import React from 'react';
|
|
|
3
3
|
|
|
4
4
|
import { makeTestId } from './Lightbox.constants';
|
|
5
5
|
import { resolveLightboxProps } from './Lightbox.helpers';
|
|
6
|
+
import { LightboxCopyProvider } from './lightbox-copy-context';
|
|
6
7
|
import type { LightboxProps, LightboxRef } from './Lightbox.types';
|
|
7
8
|
import { LightboxCurrentMedia } from './LightboxCurrentMedia';
|
|
8
9
|
import { LightboxOverlay } from './LightboxOverlay';
|
|
@@ -32,6 +33,7 @@ export const Lightbox = React.forwardRef<LightboxRef, LightboxProps>((componentP
|
|
|
32
33
|
const { currentIndex, currentItem, zoom } = lightbox;
|
|
33
34
|
|
|
34
35
|
return (
|
|
36
|
+
<LightboxCopyProvider copy={props.copy}>
|
|
35
37
|
<Dialog
|
|
36
38
|
open={isOpen}
|
|
37
39
|
onClose={lightbox.close}
|
|
@@ -98,6 +100,7 @@ export const Lightbox = React.forwardRef<LightboxRef, LightboxProps>((componentP
|
|
|
98
100
|
}
|
|
99
101
|
/>
|
|
100
102
|
</Dialog>
|
|
103
|
+
</LightboxCopyProvider>
|
|
101
104
|
);
|
|
102
105
|
});
|
|
103
106
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CSSProperties } from 'react';
|
|
2
|
+
import type { LightboxCopy } from '../../../copy';
|
|
2
3
|
|
|
3
4
|
export interface LightboxItem {
|
|
4
5
|
src: string;
|
|
@@ -12,6 +13,14 @@ export interface AutoplayConfig {
|
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export interface LightboxProps {
|
|
16
|
+
/**
|
|
17
|
+
* Every word this viewer renders — all of them aria-labels on glyph-only
|
|
18
|
+
* controls, so this object IS what a screen-reader user hears for the whole
|
|
19
|
+
* component. REQUIRED: a default could only be one language read aloud to
|
|
20
|
+
* everybody else's users, and the sighted path looks identical either way,
|
|
21
|
+
* which is why the English literals survived so long.
|
|
22
|
+
*/
|
|
23
|
+
copy: LightboxCopy;
|
|
15
24
|
/** Controls visibility; must lock body scroll when true */
|
|
16
25
|
isOpen: boolean;
|
|
17
26
|
/** Fired on close button, backdrop click, Esc, and swipe-down (mobile) */
|
|
@@ -11,22 +11,26 @@ import type { FC } from 'react';
|
|
|
11
11
|
import React from 'react';
|
|
12
12
|
|
|
13
13
|
import { navButtonSx, OVERLAY_Z_INDEX, overlayButtonSx } from './Lightbox.constants';
|
|
14
|
+
import { useLightboxCopy } from './lightbox-copy-context';
|
|
14
15
|
|
|
15
16
|
type TestId = (suffix: string) => string;
|
|
16
17
|
|
|
17
18
|
export const LightboxCloseButton: FC<{ testId: TestId; onClose: () => void }> = ({
|
|
18
19
|
testId,
|
|
19
20
|
onClose,
|
|
20
|
-
}) =>
|
|
21
|
+
}) => {
|
|
22
|
+
const copy = useLightboxCopy();
|
|
23
|
+
return (
|
|
21
24
|
<IconButton
|
|
22
25
|
onClick={onClose}
|
|
23
26
|
sx={{ ...overlayButtonSx, position: 'absolute', top: 16, right: 16, zIndex: OVERLAY_Z_INDEX }}
|
|
24
|
-
aria-label=
|
|
27
|
+
aria-label={copy.close}
|
|
25
28
|
data-testid={testId('close')}
|
|
26
29
|
>
|
|
27
30
|
<CloseIcon />
|
|
28
31
|
</IconButton>
|
|
29
|
-
);
|
|
32
|
+
);
|
|
33
|
+
};
|
|
30
34
|
|
|
31
35
|
const arrowSx = (side: 'left' | 'right') =>
|
|
32
36
|
({
|
|
@@ -52,13 +56,15 @@ export const LightboxNavButtons: FC<LightboxNavButtonsProps> = ({
|
|
|
52
56
|
atEnd,
|
|
53
57
|
onPrev,
|
|
54
58
|
onNext,
|
|
55
|
-
}) =>
|
|
59
|
+
}) => {
|
|
60
|
+
const copy = useLightboxCopy();
|
|
61
|
+
return (
|
|
56
62
|
<>
|
|
57
63
|
<IconButton
|
|
58
64
|
onClick={onPrev}
|
|
59
65
|
disabled={atStart}
|
|
60
66
|
sx={arrowSx('left')}
|
|
61
|
-
aria-label=
|
|
67
|
+
aria-label={copy.previous}
|
|
62
68
|
data-testid={testId('prev')}
|
|
63
69
|
>
|
|
64
70
|
<PrevIcon />
|
|
@@ -68,13 +74,14 @@ export const LightboxNavButtons: FC<LightboxNavButtonsProps> = ({
|
|
|
68
74
|
onClick={onNext}
|
|
69
75
|
disabled={atEnd}
|
|
70
76
|
sx={arrowSx('right')}
|
|
71
|
-
aria-label=
|
|
77
|
+
aria-label={copy.next}
|
|
72
78
|
data-testid={testId('next')}
|
|
73
79
|
>
|
|
74
80
|
<NextIcon />
|
|
75
81
|
</IconButton>
|
|
76
82
|
</>
|
|
77
|
-
);
|
|
83
|
+
);
|
|
84
|
+
};
|
|
78
85
|
|
|
79
86
|
export interface LightboxZoomControlsProps {
|
|
80
87
|
testId: TestId;
|
|
@@ -88,7 +95,9 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
|
|
|
88
95
|
onZoomIn,
|
|
89
96
|
onZoomOut,
|
|
90
97
|
onResetZoom,
|
|
91
|
-
}) =>
|
|
98
|
+
}) => {
|
|
99
|
+
const copy = useLightboxCopy();
|
|
100
|
+
return (
|
|
92
101
|
<Box
|
|
93
102
|
sx={{
|
|
94
103
|
position: 'absolute',
|
|
@@ -101,13 +110,13 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
|
|
|
101
110
|
}}
|
|
102
111
|
data-testid={testId('zoom-controls')}
|
|
103
112
|
>
|
|
104
|
-
<IconButton onClick={onZoomIn} sx={overlayButtonSx} aria-label=
|
|
113
|
+
<IconButton onClick={onZoomIn} sx={overlayButtonSx} aria-label={copy.zoomIn} data-testid={testId('zoom-in')}>
|
|
105
114
|
<ZoomInIcon />
|
|
106
115
|
</IconButton>
|
|
107
116
|
<IconButton
|
|
108
117
|
onClick={onZoomOut}
|
|
109
118
|
sx={overlayButtonSx}
|
|
110
|
-
aria-label=
|
|
119
|
+
aria-label={copy.zoomOut}
|
|
111
120
|
data-testid={testId('zoom-out')}
|
|
112
121
|
>
|
|
113
122
|
<ZoomOutIcon />
|
|
@@ -115,13 +124,14 @@ export const LightboxZoomControls: FC<LightboxZoomControlsProps> = ({
|
|
|
115
124
|
<IconButton
|
|
116
125
|
onClick={onResetZoom}
|
|
117
126
|
sx={overlayButtonSx}
|
|
118
|
-
aria-label=
|
|
127
|
+
aria-label={copy.resetZoom}
|
|
119
128
|
data-testid={testId('zoom-reset')}
|
|
120
129
|
>
|
|
121
130
|
<ResetZoomIcon />
|
|
122
131
|
</IconButton>
|
|
123
132
|
</Box>
|
|
124
|
-
);
|
|
133
|
+
);
|
|
134
|
+
};
|
|
125
135
|
|
|
126
136
|
export interface LightboxAutoplayButtonProps {
|
|
127
137
|
testId: TestId;
|
|
@@ -133,7 +143,9 @@ export const LightboxAutoplayButton: FC<LightboxAutoplayButtonProps> = ({
|
|
|
133
143
|
testId,
|
|
134
144
|
isAutoPlaying,
|
|
135
145
|
onToggle,
|
|
136
|
-
}) =>
|
|
146
|
+
}) => {
|
|
147
|
+
const copy = useLightboxCopy();
|
|
148
|
+
return (
|
|
137
149
|
<IconButton
|
|
138
150
|
onClick={onToggle}
|
|
139
151
|
sx={{
|
|
@@ -144,9 +156,10 @@ export const LightboxAutoplayButton: FC<LightboxAutoplayButtonProps> = ({
|
|
|
144
156
|
transform: 'translateX(-50%)',
|
|
145
157
|
zIndex: OVERLAY_Z_INDEX,
|
|
146
158
|
}}
|
|
147
|
-
aria-label={isAutoPlaying ?
|
|
159
|
+
aria-label={isAutoPlaying ? copy.pause : copy.play}
|
|
148
160
|
data-testid={testId('autoplay')}
|
|
149
161
|
>
|
|
150
162
|
{isAutoPlaying ? <PauseIcon /> : <PlayIcon />}
|
|
151
163
|
</IconButton>
|
|
152
|
-
);
|
|
164
|
+
);
|
|
165
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext, type ReactNode } from 'react';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
|
|
6
|
+
import type { LightboxCopy } from '../../../copy';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The lightbox's words, for the four control components that render them.
|
|
10
|
+
*
|
|
11
|
+
* A CONTEXT rather than props: the viewer is `Lightbox` → `LightboxOverlay` →
|
|
12
|
+
* three separate control clusters, and threading one object down three hops is
|
|
13
|
+
* how a copy port comes to exist, be required, and go unread. It stays a
|
|
14
|
+
* single REQUIRED prop at the mount, which is the only place a host answers.
|
|
15
|
+
*/
|
|
16
|
+
const LightboxCopyContext = createContext<LightboxCopy | null>(null);
|
|
17
|
+
|
|
18
|
+
export function LightboxCopyProvider({
|
|
19
|
+
copy,
|
|
20
|
+
children,
|
|
21
|
+
}: {
|
|
22
|
+
copy: LightboxCopy;
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
}): React.JSX.Element {
|
|
25
|
+
return <LightboxCopyContext.Provider value={copy}>{children}</LightboxCopyContext.Provider>;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The words this viewer renders — THROWS outside a provider rather than
|
|
30
|
+
* falling back.
|
|
31
|
+
*
|
|
32
|
+
* Every one of them is an aria-label on a glyph, so a fallback would be the
|
|
33
|
+
* one failure nobody sees in review: the sighted path renders identically
|
|
34
|
+
* whichever language it is in.
|
|
35
|
+
*/
|
|
36
|
+
export function useLightboxCopy(): LightboxCopy {
|
|
37
|
+
const copy = useContext(LightboxCopyContext);
|
|
38
|
+
if (!copy) {
|
|
39
|
+
throw new Error('useLightboxCopy must be rendered inside a <LightboxCopyProvider>');
|
|
40
|
+
}
|
|
41
|
+
return copy;
|
|
42
|
+
}
|
|
@@ -9,6 +9,7 @@ import React from 'react';
|
|
|
9
9
|
|
|
10
10
|
import { MAX_ZOOM, MIN_ZOOM } from './MapPreview.constants';
|
|
11
11
|
import type { MapType } from './MapPreview.types';
|
|
12
|
+
import type { MapPreviewCopy } from '../../../copy';
|
|
12
13
|
|
|
13
14
|
// Kept module-local: the inferred type of a styled() component cannot be named
|
|
14
15
|
// across a module boundary here (TS2742).
|
|
@@ -41,6 +42,12 @@ const ControlButton = styled(IconButton)(({ theme }) => ({
|
|
|
41
42
|
}));
|
|
42
43
|
|
|
43
44
|
export interface MapControlBarProps {
|
|
45
|
+
/**
|
|
46
|
+
* The six controls' names. Every one is a glyph with a `title` AND an
|
|
47
|
+
* `aria-label`, so this object is both the tooltip and what a screen reader
|
|
48
|
+
* reads — REQUIRED, because a default is one language for every adopter.
|
|
49
|
+
*/
|
|
50
|
+
copy: MapPreviewCopy;
|
|
44
51
|
zoom: number;
|
|
45
52
|
mapType: MapType;
|
|
46
53
|
onZoomIn: () => void;
|
|
@@ -51,6 +58,7 @@ export interface MapControlBarProps {
|
|
|
51
58
|
}
|
|
52
59
|
|
|
53
60
|
export const MapControlBar: FC<MapControlBarProps> = ({
|
|
61
|
+
copy,
|
|
54
62
|
zoom,
|
|
55
63
|
mapType,
|
|
56
64
|
onZoomIn,
|
|
@@ -60,33 +68,33 @@ export const MapControlBar: FC<MapControlBarProps> = ({
|
|
|
60
68
|
onToggleFullscreen,
|
|
61
69
|
}) => (
|
|
62
70
|
<MapControls data-testid="map-controls">
|
|
63
|
-
<Tooltip title=
|
|
71
|
+
<Tooltip title={copy.zoomIn} placement="left">
|
|
64
72
|
<ControlButton
|
|
65
73
|
size="small"
|
|
66
74
|
onClick={onZoomIn}
|
|
67
|
-
aria-label=
|
|
75
|
+
aria-label={copy.zoomIn}
|
|
68
76
|
data-testid="zoom-in-button"
|
|
69
77
|
disabled={zoom >= MAX_ZOOM}
|
|
70
78
|
>
|
|
71
79
|
<ZoomInIcon fontSize="small" />
|
|
72
80
|
</ControlButton>
|
|
73
81
|
</Tooltip>
|
|
74
|
-
<Tooltip title=
|
|
82
|
+
<Tooltip title={copy.zoomOut} placement="left">
|
|
75
83
|
<ControlButton
|
|
76
84
|
size="small"
|
|
77
85
|
onClick={onZoomOut}
|
|
78
|
-
aria-label=
|
|
86
|
+
aria-label={copy.zoomOut}
|
|
79
87
|
data-testid="zoom-out-button"
|
|
80
88
|
disabled={zoom <= MIN_ZOOM}
|
|
81
89
|
>
|
|
82
90
|
<ZoomOutIcon fontSize="small" />
|
|
83
91
|
</ControlButton>
|
|
84
92
|
</Tooltip>
|
|
85
|
-
<Tooltip title=
|
|
93
|
+
<Tooltip title={copy.center} placement="left">
|
|
86
94
|
<ControlButton
|
|
87
95
|
size="small"
|
|
88
96
|
onClick={onCenter}
|
|
89
|
-
aria-label=
|
|
97
|
+
aria-label={copy.center}
|
|
90
98
|
data-testid="center-button"
|
|
91
99
|
>
|
|
92
100
|
<CenterIcon fontSize="small" />
|
|
@@ -96,17 +104,17 @@ export const MapControlBar: FC<MapControlBarProps> = ({
|
|
|
96
104
|
<ControlButton
|
|
97
105
|
size="small"
|
|
98
106
|
onClick={onToggleMapType}
|
|
99
|
-
aria-label=
|
|
107
|
+
aria-label={copy.mapType}
|
|
100
108
|
data-testid="map-type-button"
|
|
101
109
|
>
|
|
102
110
|
<LayersIcon fontSize="small" />
|
|
103
111
|
</ControlButton>
|
|
104
112
|
</Tooltip>
|
|
105
|
-
<Tooltip title=
|
|
113
|
+
<Tooltip title={copy.fullscreen} placement="left">
|
|
106
114
|
<ControlButton
|
|
107
115
|
size="small"
|
|
108
116
|
onClick={onToggleFullscreen}
|
|
109
|
-
aria-label=
|
|
117
|
+
aria-label={copy.fullscreen}
|
|
110
118
|
data-testid="fullscreen-button"
|
|
111
119
|
>
|
|
112
120
|
<FullscreenIcon fontSize="small" />
|