@12-apps/ui 6.7.0 → 6.9.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-3X3JVF6E.js +438 -0
- package/dist/chunk-3X3JVF6E.js.map +1 -0
- package/dist/chunk-AL3W7TXN.js +465 -0
- package/dist/chunk-AL3W7TXN.js.map +1 -0
- 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-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/DataGrid.js +1 -1
- package/dist/data-display/DataViews.js +88 -65
- 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/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/en-US.js +56 -0
- package/dist/en-US.js.map +1 -0
- 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/locales.js +171 -0
- package/dist/locales.js.map +1 -0
- 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 +42 -274
- package/dist/pt-BR.js.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 +27 -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-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/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 +12 -165
- package/dist/types/copy.d.ts.map +1 -1
- package/dist/types/en-US.d.ts +24 -0
- package/dist/types/en-US.d.ts.map +1 -0
- package/dist/types/en-US.data-display.d.ts +13 -0
- package/dist/types/en-US.data-display.d.ts.map +1 -0
- package/dist/types/en-US.feedback.d.ts +8 -0
- package/dist/types/en-US.feedback.d.ts.map +1 -0
- package/dist/types/en-US.form.d.ts +13 -0
- package/dist/types/en-US.form.d.ts.map +1 -0
- package/dist/types/en-US.layout.d.ts +7 -0
- package/dist/types/en-US.layout.d.ts.map +1 -0
- package/dist/types/en-US.navigation.d.ts +8 -0
- package/dist/types/en-US.navigation.d.ts.map +1 -0
- package/dist/types/en-US.shared.d.ts +26 -0
- package/dist/types/en-US.shared.d.ts.map +1 -0
- package/dist/types/en-US.utility.d.ts +8 -0
- package/dist/types/en-US.utility.d.ts.map +1 -0
- package/dist/types/locales.d.ts +53 -0
- package/dist/types/locales.d.ts.map +1 -0
- package/dist/types/pt-BR.d.ts +15 -22
- 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 +10 -1
- 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 +27 -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-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/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 +12 -173
- package/src/en-US.data-display.ts +244 -0
- package/src/en-US.feedback.ts +25 -0
- package/src/en-US.form.ts +103 -0
- package/src/en-US.layout.ts +15 -0
- package/src/en-US.navigation.ts +23 -0
- package/src/en-US.shared.ts +105 -0
- package/src/en-US.ts +24 -0
- package/src/en-US.utility.ts +24 -0
- package/src/locales.ts +151 -0
- 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 -307
- package/src/pt-BR.utility.ts +21 -0
- package/src/user-avatar/user-avatar.tsx +8 -2
- 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
|
@@ -5,7 +5,25 @@ export type ScrollOrientation = 'vertical' | 'horizontal' | 'both';
|
|
|
5
5
|
export type ScrollbarSize = 'thin' | 'medium' | 'thick';
|
|
6
6
|
export type ScrollAreaVariant = 'default' | 'overlay' | 'glass';
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Conditionally-required copy for the scroll-to-top control. The fab only exists
|
|
10
|
+
* when `scrollToTopButton` is set, so only that side of the union owes a name —
|
|
11
|
+
* a host that never shows the button is not asked for a word it cannot place.
|
|
12
|
+
*/
|
|
13
|
+
type ScrollAreaScrollToTop =
|
|
14
|
+
| { scrollToTopButton?: false; scrollToTopLabel?: never }
|
|
15
|
+
| { scrollToTopButton: true; scrollToTopLabel: string };
|
|
16
|
+
|
|
17
|
+
export type ScrollAreaProps = ScrollAreaBase & ScrollAreaScrollToTop;
|
|
18
|
+
|
|
19
|
+
export interface ScrollAreaBase extends Omit<BoxProps, 'ref'> {
|
|
20
|
+
/**
|
|
21
|
+
* The scroll region's accessible name. REQUIRED: the viewport is a
|
|
22
|
+
* `role="region"`, so a screen reader announces this word and no other. The
|
|
23
|
+
* package cannot know whether it wraps a menu, a chat log or a table.
|
|
24
|
+
*/
|
|
25
|
+
regionLabel: string;
|
|
26
|
+
|
|
9
27
|
/** Content to be rendered inside the scrollable area */
|
|
10
28
|
children: ReactNode;
|
|
11
29
|
|
|
@@ -45,9 +63,6 @@ export interface ScrollAreaProps extends Omit<BoxProps, 'ref'> {
|
|
|
45
63
|
/** Scroll event handler */
|
|
46
64
|
onScroll?: (event: React.UIEvent<HTMLDivElement>) => void;
|
|
47
65
|
|
|
48
|
-
/** Show scroll-to-top button */
|
|
49
|
-
scrollToTopButton?: boolean;
|
|
50
|
-
|
|
51
66
|
/** Threshold for showing scroll-to-top button (in pixels) */
|
|
52
67
|
scrollToTopThreshold?: number;
|
|
53
68
|
|
|
@@ -20,6 +20,8 @@ export interface ScrollViewportProps
|
|
|
20
20
|
| 'loading'
|
|
21
21
|
| 'smoothScroll'
|
|
22
22
|
> {
|
|
23
|
+
/** The scroll region's accessible name. REQUIRED. */
|
|
24
|
+
regionLabel: string;
|
|
23
25
|
children: ReactNode;
|
|
24
26
|
shouldShowScrollbar: boolean;
|
|
25
27
|
setScrollRef: (node: HTMLDivElement | null) => void;
|
|
@@ -29,6 +31,7 @@ export interface ScrollViewportProps
|
|
|
29
31
|
// The element that actually scrolls: its own overflow and scrollbar styling,
|
|
30
32
|
// plus the disabled and loading treatments.
|
|
31
33
|
export const ScrollViewport: FC<ScrollViewportProps> = ({
|
|
34
|
+
regionLabel,
|
|
32
35
|
children,
|
|
33
36
|
height,
|
|
34
37
|
maxHeight,
|
|
@@ -52,7 +55,7 @@ export const ScrollViewport: FC<ScrollViewportProps> = ({
|
|
|
52
55
|
ref={setScrollRef}
|
|
53
56
|
onScroll={onScroll}
|
|
54
57
|
role="region"
|
|
55
|
-
aria-label=
|
|
58
|
+
aria-label={regionLabel}
|
|
56
59
|
aria-busy={loading}
|
|
57
60
|
tabIndex={disabled ? -1 : 0}
|
|
58
61
|
sx={{
|
|
@@ -54,9 +54,10 @@ export function TableFilter({
|
|
|
54
54
|
open,
|
|
55
55
|
onOpenChange,
|
|
56
56
|
hasActiveFilters = false,
|
|
57
|
+
copy,
|
|
57
58
|
}: TableFilterProps): React.JSX.Element {
|
|
58
59
|
return (
|
|
59
|
-
<TableFilterContext.Provider value={{ open, onOpenChange, hasActiveFilters }}>
|
|
60
|
+
<TableFilterContext.Provider value={{ open, onOpenChange, hasActiveFilters, copy }}>
|
|
60
61
|
{children}
|
|
61
62
|
</TableFilterContext.Provider>
|
|
62
63
|
);
|
|
@@ -97,7 +98,7 @@ const TableFilterPanel = ({
|
|
|
97
98
|
ariaLabel = 'Filters',
|
|
98
99
|
clearTestId,
|
|
99
100
|
}: TableFilterPanelProps): React.JSX.Element => {
|
|
100
|
-
const { open } = useTableFilterContext();
|
|
101
|
+
const { open, copy } = useTableFilterContext();
|
|
101
102
|
return (
|
|
102
103
|
<Box
|
|
103
104
|
component="aside"
|
|
@@ -142,7 +143,7 @@ const TableFilterPanel = ({
|
|
|
142
143
|
onClick={onClearAll}
|
|
143
144
|
sx={{ fontSize: '0.75rem', color: 'text.secondary' }}
|
|
144
145
|
>
|
|
145
|
-
|
|
146
|
+
{copy.clearAllFilters}
|
|
146
147
|
</Link>
|
|
147
148
|
</Box>
|
|
148
149
|
{children}
|
|
@@ -160,6 +161,7 @@ const TableFilterKeyword = ({
|
|
|
160
161
|
label = 'Filter by keyword',
|
|
161
162
|
testId,
|
|
162
163
|
}: TableFilterKeywordProps): React.JSX.Element => {
|
|
164
|
+
const { copy } = useTableFilterContext();
|
|
163
165
|
const [draft, setDraft] = useState(value);
|
|
164
166
|
const prevValue = useRef(value);
|
|
165
167
|
if (prevValue.current !== value) {
|
|
@@ -204,7 +206,7 @@ const TableFilterKeyword = ({
|
|
|
204
206
|
<InputAdornment position="end">
|
|
205
207
|
<IconButton
|
|
206
208
|
size="small"
|
|
207
|
-
aria-label=
|
|
209
|
+
aria-label={copy.clearKeyword}
|
|
208
210
|
data-testid={testId ? `${testId}-clear` : undefined}
|
|
209
211
|
onMouseDown={(event) => event.preventDefault()}
|
|
210
212
|
onClick={clearKeyword}
|
|
@@ -326,12 +328,18 @@ const TableFilterRangeField = ({
|
|
|
326
328
|
onChange,
|
|
327
329
|
unit,
|
|
328
330
|
step,
|
|
329
|
-
minPlaceholder
|
|
330
|
-
maxPlaceholder
|
|
331
|
+
minPlaceholder,
|
|
332
|
+
maxPlaceholder,
|
|
331
333
|
invalidLabel,
|
|
332
334
|
testId,
|
|
333
335
|
}: TableFilterRangeFieldProps): React.JSX.Element => {
|
|
336
|
+
const { copy } = useTableFilterContext();
|
|
334
337
|
const invalid = isRangeInverted(value);
|
|
338
|
+
// A field may override any of the three; unset, they come from the root's
|
|
339
|
+
// table. Neither path reaches an English literal in this package.
|
|
340
|
+
const minText = minPlaceholder ?? copy.rangeMin;
|
|
341
|
+
const maxText = maxPlaceholder ?? copy.rangeMax;
|
|
342
|
+
const invalidText = invalidLabel ?? copy.invalidRange;
|
|
335
343
|
return (
|
|
336
344
|
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }} data-testid={testId}>
|
|
337
345
|
<Typography sx={{ fontSize: '0.75rem', fontWeight: 500, color: 'text.secondary' }}>
|
|
@@ -342,9 +350,9 @@ const TableFilterRangeField = ({
|
|
|
342
350
|
<RangeBound
|
|
343
351
|
bound={value.min}
|
|
344
352
|
error={invalid}
|
|
345
|
-
placeholder={
|
|
353
|
+
placeholder={minText}
|
|
346
354
|
step={step}
|
|
347
|
-
ariaLabel={`${label} ${
|
|
355
|
+
ariaLabel={`${label} ${minText}`}
|
|
348
356
|
testId={testId ? `${testId}-min` : undefined}
|
|
349
357
|
onChange={(min) => onChange({ ...value, min })}
|
|
350
358
|
/>
|
|
@@ -354,9 +362,9 @@ const TableFilterRangeField = ({
|
|
|
354
362
|
<RangeBound
|
|
355
363
|
bound={value.max}
|
|
356
364
|
error={invalid}
|
|
357
|
-
placeholder={
|
|
365
|
+
placeholder={maxText}
|
|
358
366
|
step={step}
|
|
359
|
-
ariaLabel={`${label} ${
|
|
367
|
+
ariaLabel={`${label} ${maxText}`}
|
|
360
368
|
testId={testId ? `${testId}-max` : undefined}
|
|
361
369
|
onChange={(max) => onChange({ ...value, max })}
|
|
362
370
|
/>
|
|
@@ -367,7 +375,7 @@ const TableFilterRangeField = ({
|
|
|
367
375
|
data-testid={testId ? `${testId}-error` : undefined}
|
|
368
376
|
sx={{ fontSize: '0.7rem', color: 'error.main' }}
|
|
369
377
|
>
|
|
370
|
-
{
|
|
378
|
+
{invalidText}
|
|
371
379
|
</Typography>
|
|
372
380
|
)}
|
|
373
381
|
</Box>
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
+
import type { TableFilterCopy } from '../../../copy';
|
|
4
|
+
|
|
3
5
|
/** Props for the `<TableFilter>` root (provider). */
|
|
4
6
|
export interface TableFilterProps {
|
|
5
7
|
children: ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Every word this compound renders. REQUIRED: this package ships no default
|
|
10
|
+
* copy, and the two ends of a range plus the panel's clear link are read by
|
|
11
|
+
* the store's own customer, in the store's own language.
|
|
12
|
+
*/
|
|
13
|
+
copy: TableFilterCopy;
|
|
6
14
|
/** Whether the panel is open. */
|
|
7
15
|
open: boolean;
|
|
8
16
|
/** Toggle the panel. */
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { createContext, useContext } from 'react';
|
|
4
4
|
|
|
5
|
+
import type { TableFilterCopy } from '../../../copy';
|
|
6
|
+
|
|
5
7
|
/** Open/close + active state shared by every `TableFilter` compound part. */
|
|
6
8
|
export interface TableFilterContextValue {
|
|
7
9
|
/** Whether the filter panel is expanded. */
|
|
@@ -10,6 +12,14 @@ export interface TableFilterContextValue {
|
|
|
10
12
|
onOpenChange: (open: boolean) => void;
|
|
11
13
|
/** When true, the trigger shows a filled indicator dot. */
|
|
12
14
|
hasActiveFilters: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Every word the compound's parts render. Carried on the root's context
|
|
17
|
+
* rather than on each part's props because the parts are a TREE — a host
|
|
18
|
+
* composes `Panel`, `Keyword` and the fields under one root, and asking each
|
|
19
|
+
* one separately for its share of the same table is the shape that makes a
|
|
20
|
+
* host answer four times and get one of them wrong.
|
|
21
|
+
*/
|
|
22
|
+
copy: TableFilterCopy;
|
|
13
23
|
}
|
|
14
24
|
|
|
15
25
|
/** Backing context. `null` outside a `<TableFilter>` root. */
|
|
@@ -6,6 +6,7 @@ import React from 'react';
|
|
|
6
6
|
|
|
7
7
|
import { breadcrumbLinkStyles } from './Breadcrumbs.styles';
|
|
8
8
|
import type { BreadcrumbItem } from './Breadcrumbs.types';
|
|
9
|
+
import type { BreadcrumbCopy } from '../../../copy';
|
|
9
10
|
|
|
10
11
|
const BreadcrumbLink = styled(Link, {
|
|
11
12
|
shouldForwardProp: (prop) => prop !== 'size' && prop !== 'active' && prop !== 'visualStyle' })<{ size?: string; active?: boolean; visualStyle?: string }>(
|
|
@@ -96,10 +97,12 @@ const CollapsedMenu = ({
|
|
|
96
97
|
items,
|
|
97
98
|
size,
|
|
98
99
|
visualStyle,
|
|
100
|
+
copy,
|
|
99
101
|
dataTestId }: {
|
|
100
102
|
items: BreadcrumbItem[];
|
|
101
103
|
size: string;
|
|
102
104
|
visualStyle?: string;
|
|
105
|
+
copy: BreadcrumbCopy;
|
|
103
106
|
dataTestId?: string;
|
|
104
107
|
}) => {
|
|
105
108
|
const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);
|
|
@@ -115,7 +118,7 @@ const CollapsedMenu = ({
|
|
|
115
118
|
|
|
116
119
|
return (
|
|
117
120
|
<>
|
|
118
|
-
<Tooltip title=
|
|
121
|
+
<Tooltip title={copy.showMore} arrow>
|
|
119
122
|
<BreadcrumbLink
|
|
120
123
|
onClick={handleClick}
|
|
121
124
|
size={size}
|
|
@@ -174,10 +177,11 @@ const crumbIcon = ({
|
|
|
174
177
|
);
|
|
175
178
|
};
|
|
176
179
|
|
|
177
|
-
const EllipsisCrumb: React.FC<{ label: string; dataTestId?: string }> = ({
|
|
180
|
+
const EllipsisCrumb: React.FC<{ label: string; copy: BreadcrumbCopy; dataTestId?: string }> = ({
|
|
178
181
|
label,
|
|
182
|
+
copy,
|
|
179
183
|
dataTestId }) => (
|
|
180
|
-
<Tooltip title=
|
|
184
|
+
<Tooltip title={copy.moreItems} arrow>
|
|
181
185
|
<Box
|
|
182
186
|
sx={{
|
|
183
187
|
px: 1,
|
|
@@ -237,6 +241,7 @@ export const BreadcrumbEntry: React.FC<{
|
|
|
237
241
|
iconSize: 'small' | 'medium';
|
|
238
242
|
size: string;
|
|
239
243
|
variant: string;
|
|
244
|
+
copy: BreadcrumbCopy;
|
|
240
245
|
dataTestId?: string;
|
|
241
246
|
}> = ({
|
|
242
247
|
item,
|
|
@@ -249,6 +254,7 @@ export const BreadcrumbEntry: React.FC<{
|
|
|
249
254
|
iconSize,
|
|
250
255
|
size,
|
|
251
256
|
variant,
|
|
257
|
+
copy,
|
|
252
258
|
dataTestId }) => {
|
|
253
259
|
const testId = makeTestId(dataTestId);
|
|
254
260
|
const isLast = index === itemCount - 1;
|
|
@@ -262,6 +268,7 @@ export const BreadcrumbEntry: React.FC<{
|
|
|
262
268
|
return (
|
|
263
269
|
<>
|
|
264
270
|
<CollapsedMenu
|
|
271
|
+
copy={copy}
|
|
265
272
|
items={collapsedItems}
|
|
266
273
|
size={size}
|
|
267
274
|
visualStyle={variant}
|
|
@@ -273,7 +280,7 @@ export const BreadcrumbEntry: React.FC<{
|
|
|
273
280
|
}
|
|
274
281
|
|
|
275
282
|
if (item.isEllipsis) {
|
|
276
|
-
return <EllipsisCrumb label={item.label} dataTestId={dataTestId} />;
|
|
283
|
+
return <EllipsisCrumb copy={copy} label={item.label} dataTestId={dataTestId} />;
|
|
277
284
|
}
|
|
278
285
|
|
|
279
286
|
const icon = crumbIcon({ item, isFirst: index === 0, showHomeIcon, iconSize });
|
|
@@ -145,6 +145,7 @@ export const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(
|
|
|
145
145
|
collapseBehavior,
|
|
146
146
|
mobileMaxItems,
|
|
147
147
|
ariaLabel,
|
|
148
|
+
copy,
|
|
148
149
|
dataTestId,
|
|
149
150
|
...props
|
|
150
151
|
} = resolveProps(componentProps);
|
|
@@ -181,6 +182,7 @@ export const Breadcrumbs = React.forwardRef<HTMLElement, BreadcrumbsProps>(
|
|
|
181
182
|
>
|
|
182
183
|
{displayItems.map((item, index) => (
|
|
183
184
|
<BreadcrumbEntry
|
|
185
|
+
copy={copy}
|
|
184
186
|
key={index}
|
|
185
187
|
item={item}
|
|
186
188
|
index={index}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ColorValue, SizeValue } from '../../../tokens/scales';
|
|
2
2
|
import type { BreadcrumbsProps as MuiBreadcrumbsProps } from '@mui/material';
|
|
3
3
|
import type { ReactNode } from 'react';
|
|
4
|
+
import type { BreadcrumbCopy } from '../../../copy';
|
|
4
5
|
|
|
5
6
|
export interface BreadcrumbItem {
|
|
6
7
|
/**
|
|
@@ -57,6 +58,8 @@ export interface BreadcrumbItem {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
export interface BreadcrumbsProps extends Omit<MuiBreadcrumbsProps, 'separator'> {
|
|
61
|
+
/** The overflow control's tooltip, in its two spellings. REQUIRED. */
|
|
62
|
+
copy: BreadcrumbCopy;
|
|
60
63
|
/**
|
|
61
64
|
* The visual variant of the breadcrumbs container
|
|
62
65
|
* - default: No special styling
|
|
@@ -21,6 +21,7 @@ import { useCommandPalette } from './CommandPalette.hooks';
|
|
|
21
21
|
import { PaletteResults } from './CommandPaletteResults';
|
|
22
22
|
import { ShortcutChip } from './ShortcutChip';
|
|
23
23
|
import type { CommandPaletteProps } from './CommandPalette.types';
|
|
24
|
+
import type { CommandPaletteCopy } from '../../../copy';
|
|
24
25
|
|
|
25
26
|
// Styled components
|
|
26
27
|
const StyledDialog = styled(Dialog)(() => ({
|
|
@@ -98,7 +99,10 @@ const PaletteSearch: React.FC<{
|
|
|
98
99
|
</SearchContainer>
|
|
99
100
|
);
|
|
100
101
|
|
|
101
|
-
const PaletteFooter: React.FC<{ commandCount: number }> = ({
|
|
102
|
+
const PaletteFooter: React.FC<{ commandCount: number; copy: CommandPaletteCopy }> = ({
|
|
103
|
+
commandCount,
|
|
104
|
+
copy,
|
|
105
|
+
}) => {
|
|
102
106
|
const theme = useTheme();
|
|
103
107
|
|
|
104
108
|
return (
|
|
@@ -112,9 +116,13 @@ const PaletteFooter: React.FC<{ commandCount: number }> = ({ commandCount }) =>
|
|
|
112
116
|
background: alpha(theme.palette.background.default, 0.4) }}
|
|
113
117
|
>
|
|
114
118
|
<Box sx={{ display: 'flex', gap: 1 }}>
|
|
115
|
-
<ShortcutChip
|
|
116
|
-
|
|
117
|
-
|
|
119
|
+
<ShortcutChip
|
|
120
|
+
icon={<EnterIcon sx={{ fontSize: 12 }} />}
|
|
121
|
+
label={copy.execute}
|
|
122
|
+
size="small"
|
|
123
|
+
/>
|
|
124
|
+
<ShortcutChip label={copy.navigate} size="small" />
|
|
125
|
+
<ShortcutChip label={copy.close} size="small" />
|
|
118
126
|
</Box>
|
|
119
127
|
<Typography variant="caption" color="text.secondary">
|
|
120
128
|
{commandCount} commands
|
|
@@ -124,6 +132,7 @@ const PaletteFooter: React.FC<{ commandCount: number }> = ({ commandCount }) =>
|
|
|
124
132
|
};
|
|
125
133
|
|
|
126
134
|
export const CommandPalette: FC<CommandPaletteProps> = ({
|
|
135
|
+
copy,
|
|
127
136
|
open,
|
|
128
137
|
onClose,
|
|
129
138
|
commands,
|
|
@@ -177,6 +186,7 @@ export const CommandPalette: FC<CommandPaletteProps> = ({
|
|
|
177
186
|
/>
|
|
178
187
|
|
|
179
188
|
<PaletteResults
|
|
189
|
+
copy={copy}
|
|
180
190
|
listRef={listRef}
|
|
181
191
|
dataTestId={dataTestId}
|
|
182
192
|
searchQuery={searchQuery}
|
|
@@ -190,7 +200,7 @@ export const CommandPalette: FC<CommandPaletteProps> = ({
|
|
|
190
200
|
onExecute={executeCommand}
|
|
191
201
|
/>
|
|
192
202
|
|
|
193
|
-
<PaletteFooter commandCount={filteredCommands.length} />
|
|
203
|
+
<PaletteFooter copy={copy} commandCount={filteredCommands.length} />
|
|
194
204
|
</PaletteContainer>
|
|
195
205
|
</DialogContent>
|
|
196
206
|
</StyledDialog>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { CommandPaletteCopy } from '../../../copy';
|
|
2
3
|
|
|
3
4
|
export interface PaletteCommand {
|
|
4
5
|
id: string;
|
|
@@ -12,6 +13,8 @@ export interface PaletteCommand {
|
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export interface CommandPaletteProps {
|
|
16
|
+
/** The footer's keyboard hints and the empty state's nudge. REQUIRED. */
|
|
17
|
+
copy: CommandPaletteCopy;
|
|
15
18
|
open: boolean;
|
|
16
19
|
onClose: () => void;
|
|
17
20
|
commands: PaletteCommand[];
|
|
@@ -5,6 +5,7 @@ import React from 'react';
|
|
|
5
5
|
|
|
6
6
|
import { ShortcutChip } from './ShortcutChip';
|
|
7
7
|
import type { PaletteCommand } from './CommandPalette.types';
|
|
8
|
+
import type { CommandPaletteCopy } from '../../../copy';
|
|
8
9
|
|
|
9
10
|
const ResultsList = styled(List)(({ theme }) => ({
|
|
10
11
|
maxHeight: 400,
|
|
@@ -90,6 +91,7 @@ const slug = (value: string) => value.toLowerCase().replace(/\s+/g, '-');
|
|
|
90
91
|
// has to stay consistent across both sections, so it is threaded through here
|
|
91
92
|
// rather than mutated from inside the render as it was before.
|
|
92
93
|
export const PaletteResults: React.FC<{
|
|
94
|
+
copy: CommandPaletteCopy;
|
|
93
95
|
listRef: React.Ref<globalThis.HTMLUListElement>;
|
|
94
96
|
dataTestId?: string;
|
|
95
97
|
searchQuery: string;
|
|
@@ -102,6 +104,7 @@ export const PaletteResults: React.FC<{
|
|
|
102
104
|
onSelect: (index: number) => void;
|
|
103
105
|
onExecute: (command: PaletteCommand) => void;
|
|
104
106
|
}> = ({
|
|
107
|
+
copy,
|
|
105
108
|
listRef,
|
|
106
109
|
dataTestId,
|
|
107
110
|
searchQuery,
|
|
@@ -121,7 +124,7 @@ export const PaletteResults: React.FC<{
|
|
|
121
124
|
No commands found for "{searchQuery}"
|
|
122
125
|
</Typography>
|
|
123
126
|
<Typography variant="caption" color="text.disabled" sx={{ mt: 1 }}>
|
|
124
|
-
|
|
127
|
+
{copy.tryAnotherTerm}
|
|
125
128
|
</Typography>
|
|
126
129
|
</NoResults>
|
|
127
130
|
);
|
|
@@ -160,7 +163,7 @@ export const PaletteResults: React.FC<{
|
|
|
160
163
|
<>
|
|
161
164
|
<CategoryLabel data-testid={`${dataTestId}-group-recent`}>
|
|
162
165
|
<RecentIcon sx={{ fontSize: 14, mr: 0.5, verticalAlign: 'middle' }} />
|
|
163
|
-
|
|
166
|
+
{copy.recent}
|
|
164
167
|
</CategoryLabel>
|
|
165
168
|
{recent.map(row)}
|
|
166
169
|
{filteredCommands.length > recentCommandIds.length && <Divider sx={{ my: 1 }} />}
|
|
@@ -152,6 +152,7 @@ export const Pagination = React.forwardRef<HTMLElement, PaginationProps>(
|
|
|
152
152
|
(componentProps, ref) => {
|
|
153
153
|
const resolved = resolvePaginationProps(componentProps);
|
|
154
154
|
const {
|
|
155
|
+
pageSizeLabel,
|
|
155
156
|
variant,
|
|
156
157
|
size,
|
|
157
158
|
page,
|
|
@@ -194,6 +195,7 @@ export const Pagination = React.forwardRef<HTMLElement, PaginationProps>(
|
|
|
194
195
|
<PaginationContainer className={className} data-testid={dataTestId || 'pagination'}>
|
|
195
196
|
{showItemsPerPage && onItemsPerPageChange && (
|
|
196
197
|
<ItemsPerPageSelect
|
|
198
|
+
pageSizeLabel={pageSizeLabel}
|
|
197
199
|
value={itemsPerPage}
|
|
198
200
|
options={itemsPerPageOptions}
|
|
199
201
|
size={size}
|
|
@@ -3,6 +3,8 @@ import type { PaginationProps as MuiPaginationProps } from '@mui/material';
|
|
|
3
3
|
import type { ReactNode } from 'react';
|
|
4
4
|
|
|
5
5
|
export interface PaginationProps extends Omit<MuiPaginationProps, 'variant' | 'size' | 'color'> {
|
|
6
|
+
/** The label in front of the page-size select. REQUIRED. */
|
|
7
|
+
pageSizeLabel: string;
|
|
6
8
|
/**
|
|
7
9
|
* The variant of the pagination
|
|
8
10
|
*/
|
|
@@ -20,6 +20,8 @@ const PageInfoContainer = styled(Box)(({ theme }) => ({
|
|
|
20
20
|
}));
|
|
21
21
|
|
|
22
22
|
export interface ItemsPerPageSelectProps {
|
|
23
|
+
/** The label in front of the select. REQUIRED — it was `"Show:"`. */
|
|
24
|
+
pageSizeLabel: string;
|
|
23
25
|
value: number;
|
|
24
26
|
options: number[];
|
|
25
27
|
size: string;
|
|
@@ -29,6 +31,7 @@ export interface ItemsPerPageSelectProps {
|
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
export const ItemsPerPageSelect: FC<ItemsPerPageSelectProps> = ({
|
|
34
|
+
pageSizeLabel,
|
|
32
35
|
value,
|
|
33
36
|
options,
|
|
34
37
|
size,
|
|
@@ -38,7 +41,7 @@ export const ItemsPerPageSelect: FC<ItemsPerPageSelectProps> = ({
|
|
|
38
41
|
}) => (
|
|
39
42
|
<ItemsPerPageContainer>
|
|
40
43
|
<Typography variant="body2" color="text.secondary">
|
|
41
|
-
|
|
44
|
+
{pageSizeLabel}
|
|
42
45
|
</Typography>
|
|
43
46
|
<FormControl size="small" sx={{ minWidth: 80 }}>
|
|
44
47
|
<Select
|
|
@@ -105,8 +105,9 @@ const buildTabsSx = ({
|
|
|
105
105
|
// A tab's label: icon, text, optional close affordance, optionally badged.
|
|
106
106
|
const TabLabel: React.FC<{
|
|
107
107
|
item: TabItem;
|
|
108
|
+
closeTabLabel: string;
|
|
108
109
|
onClose: (event: React.MouseEvent | React.KeyboardEvent, tabId: string) => void;
|
|
109
|
-
}> = ({ item, onClose }) => {
|
|
110
|
+
}> = ({ item, closeTabLabel, onClose }) => {
|
|
110
111
|
const content = (
|
|
111
112
|
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
|
|
112
113
|
{item.icon}
|
|
@@ -116,7 +117,7 @@ const TabLabel: React.FC<{
|
|
|
116
117
|
onClick={(e) => onClose(e, item.id)}
|
|
117
118
|
role="button"
|
|
118
119
|
tabIndex={0}
|
|
119
|
-
aria-label=
|
|
120
|
+
aria-label={closeTabLabel}
|
|
120
121
|
onKeyDown={(e) => {
|
|
121
122
|
if (e.key !== 'Enter' && e.key !== ' ') return;
|
|
122
123
|
onClose(e, item.id);
|
|
@@ -176,7 +177,7 @@ const TabsBar: React.FC<
|
|
|
176
177
|
<MuiTab
|
|
177
178
|
key={item.id}
|
|
178
179
|
value={item.id}
|
|
179
|
-
label={<TabLabel item={item} onClose={onCloseTab} />}
|
|
180
|
+
label={<TabLabel closeTabLabel={p.closeTabLabel} item={item} onClose={onCloseTab} />}
|
|
180
181
|
disabled={item.disabled || p.disabled}
|
|
181
182
|
className={item.className}
|
|
182
183
|
id={`tab-${item.id}`}
|
|
@@ -224,6 +225,10 @@ export const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(
|
|
|
224
225
|
(tabsProps, ref) => {
|
|
225
226
|
const resolved = { ...TABS_DEFAULTS, ...definedProps(tabsProps) } as TabsProps;
|
|
226
227
|
const {
|
|
228
|
+
// Destructured only to keep it OUT of `rest`, which is spread onto the
|
|
229
|
+
// DOM node — `{...resolved}` below is what actually carries it to
|
|
230
|
+
// `TabsBar`. Same reason as `value` on the next line.
|
|
231
|
+
closeTabLabel: _closeTabLabel,
|
|
227
232
|
value: _value,
|
|
228
233
|
onChange,
|
|
229
234
|
onTabClose,
|
|
@@ -50,6 +50,8 @@ export interface TabItem {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
export interface TabsProps extends Omit<MuiTabsProps, 'variant' | 'children' | 'indicatorColor' | 'scrollButtons'> {
|
|
53
|
+
/** A closable tab's dismiss — a glyph with no visible label. REQUIRED. */
|
|
54
|
+
closeTabLabel: string;
|
|
53
55
|
/**
|
|
54
56
|
* The visual variant of the tabs
|
|
55
57
|
*/
|
|
@@ -12,19 +12,19 @@ const CENTERED = {
|
|
|
12
12
|
p: 2,
|
|
13
13
|
} as const;
|
|
14
14
|
|
|
15
|
-
export const DefaultLoader: React.FC = () => (
|
|
15
|
+
export const DefaultLoader: React.FC<{ loadingText: string }> = ({ loadingText }) => (
|
|
16
16
|
<Box sx={CENTERED}>
|
|
17
17
|
<CircularProgress size={24} />
|
|
18
18
|
<Typography variant="body2" sx={{ ml: 1 }}>
|
|
19
|
-
|
|
19
|
+
{loadingText}
|
|
20
20
|
</Typography>
|
|
21
21
|
</Box>
|
|
22
22
|
);
|
|
23
23
|
|
|
24
|
-
export const DefaultEndMessage: React.FC = () => (
|
|
24
|
+
export const DefaultEndMessage: React.FC<{ endText: string }> = ({ endText }) => (
|
|
25
25
|
<Box sx={CENTERED}>
|
|
26
26
|
<Typography variant="body2" color="text.secondary">
|
|
27
|
-
|
|
27
|
+
{endText}
|
|
28
28
|
</Typography>
|
|
29
29
|
</Box>
|
|
30
30
|
);
|
|
@@ -18,6 +18,8 @@ export const InfiniteScroll: React.FC<InfiniteScrollProps> = ({
|
|
|
18
18
|
threshold = 150,
|
|
19
19
|
loadMore,
|
|
20
20
|
loader,
|
|
21
|
+
loadingText,
|
|
22
|
+
endText,
|
|
21
23
|
endMessage,
|
|
22
24
|
error,
|
|
23
25
|
errorComponent,
|
|
@@ -45,9 +47,9 @@ export const InfiniteScroll: React.FC<InfiniteScrollProps> = ({
|
|
|
45
47
|
// The tail of the list is one of four things: the end message, an error, a
|
|
46
48
|
// spinner, or the sentinel that asks for the next page.
|
|
47
49
|
const renderSentinel = () => {
|
|
48
|
-
if (!hasMore) return endMessage || <DefaultEndMessage />;
|
|
50
|
+
if (!hasMore) return endMessage || <DefaultEndMessage endText={endText} />;
|
|
49
51
|
if (error) return errorComponent || <DefaultError error={error} />;
|
|
50
|
-
if (loading) return loader || <DefaultLoader />;
|
|
52
|
+
if (loading) return loader || <DefaultLoader loadingText={loadingText} />;
|
|
51
53
|
|
|
52
54
|
return (
|
|
53
55
|
<div
|
|
@@ -3,6 +3,12 @@ import type { ReactNode } from 'react';
|
|
|
3
3
|
export type InfiniteScrollVariant = 'default' | 'reverse' | 'horizontal';
|
|
4
4
|
|
|
5
5
|
export interface InfiniteScrollProps {
|
|
6
|
+
/**
|
|
7
|
+
* The two states the scroller renders on its own: fetching the next page,
|
|
8
|
+
* and having reached the end. REQUIRED — both were English literals.
|
|
9
|
+
*/
|
|
10
|
+
loadingText: string;
|
|
11
|
+
endText: string;
|
|
6
12
|
children: ReactNode;
|
|
7
13
|
variant?: InfiniteScrollVariant;
|
|
8
14
|
hasMore: boolean;
|