@12-apps/ui 6.7.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-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/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 +159 -8
- 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/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 +1 -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/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
|
@@ -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
|
*/
|
|
@@ -299,10 +299,13 @@ const TableLoadingState: React.FC<{
|
|
|
299
299
|
const TableEmptyState: React.FC<{
|
|
300
300
|
shell: TableShellProps;
|
|
301
301
|
emptyStateComponent?: React.ReactNode;
|
|
302
|
+
emptyText: string;
|
|
302
303
|
colSpan: number;
|
|
303
|
-
}> = ({ shell, emptyStateComponent, colSpan }) => (
|
|
304
|
+
}> = ({ shell, emptyStateComponent, emptyText, colSpan }) => (
|
|
304
305
|
<TableShell {...shell}>
|
|
305
|
-
<EmptyRow colSpan={colSpan}>
|
|
306
|
+
<EmptyRow colSpan={colSpan}>
|
|
307
|
+
{emptyStateComponent || <NoDataPlaceholder emptyText={emptyText} />}
|
|
308
|
+
</EmptyRow>
|
|
306
309
|
</TableShell>
|
|
307
310
|
);
|
|
308
311
|
|
|
@@ -316,6 +319,7 @@ export const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(
|
|
|
316
319
|
loading,
|
|
317
320
|
loadingComponent,
|
|
318
321
|
emptyStateComponent,
|
|
322
|
+
emptyText,
|
|
319
323
|
children,
|
|
320
324
|
...props
|
|
321
325
|
} = resolved;
|
|
@@ -345,6 +349,7 @@ export const Table = React.forwardRef<globalThis.HTMLTableElement, TableProps>(
|
|
|
345
349
|
<TableEmptyState
|
|
346
350
|
shell={shell}
|
|
347
351
|
emptyStateComponent={emptyStateComponent}
|
|
352
|
+
emptyText={emptyText}
|
|
348
353
|
colSpan={finalColumns?.length || 1}
|
|
349
354
|
/>
|
|
350
355
|
);
|
|
@@ -62,6 +62,11 @@ export interface SelectionConfig {
|
|
|
62
62
|
export type TableStripeColor = ColorValue;
|
|
63
63
|
|
|
64
64
|
export interface TableProps extends Omit<MuiTableProps, 'variant'> {
|
|
65
|
+
/**
|
|
66
|
+
* What an empty result reads as. REQUIRED — the fallback was the English
|
|
67
|
+
* "No data available", on the package every host renders.
|
|
68
|
+
*/
|
|
69
|
+
emptyText: string;
|
|
65
70
|
/**
|
|
66
71
|
* The variant of the table
|
|
67
72
|
*/
|
|
@@ -2,9 +2,9 @@ import { Box, TableBody, TableCell, TableRow } from '@mui/material';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
export const NoDataPlaceholder: React.FC = () => (
|
|
5
|
+
export const NoDataPlaceholder: React.FC<{ emptyText: string }> = ({ emptyText }) => (
|
|
6
6
|
<Box py={4} color="text.secondary">
|
|
7
|
-
|
|
7
|
+
{emptyText}
|
|
8
8
|
</Box>
|
|
9
9
|
);
|
|
10
10
|
|
|
@@ -76,6 +76,7 @@ const VIEWS: Record<string, FC<TimingViewProps>> = {
|
|
|
76
76
|
|
|
77
77
|
// Main component
|
|
78
78
|
export const TimingDiagram: FC<TimingDiagramProps> = ({
|
|
79
|
+
copy,
|
|
79
80
|
data,
|
|
80
81
|
showLabels = true,
|
|
81
82
|
height = 40,
|
|
@@ -88,9 +89,9 @@ export const TimingDiagram: FC<TimingDiagramProps> = ({
|
|
|
88
89
|
const View = VIEWS[variant];
|
|
89
90
|
|
|
90
91
|
return (
|
|
91
|
-
<DiagramContainer elevation={2} role="region" aria-label=
|
|
92
|
+
<DiagramContainer elevation={2} role="region" aria-label={copy.regionLabel} tabIndex={0}>
|
|
92
93
|
<Typography variant="h6" fontWeight="bold" gutterBottom>
|
|
93
|
-
|
|
94
|
+
{copy.heading}
|
|
94
95
|
</Typography>
|
|
95
96
|
|
|
96
97
|
{View && (
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TimingDiagramCopy } from '../../../copy';
|
|
1
2
|
// Types
|
|
2
3
|
export interface TimingData {
|
|
3
4
|
dns?: number;
|
|
@@ -9,6 +10,8 @@ export interface TimingData {
|
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export interface TimingDiagramProps {
|
|
13
|
+
/** The region's accessible name and its visible heading. REQUIRED. */
|
|
14
|
+
copy: TimingDiagramCopy;
|
|
12
15
|
data: TimingData;
|
|
13
16
|
showLabels?: boolean;
|
|
14
17
|
color?: string;
|
|
@@ -71,7 +71,16 @@ const trackPromiseWithToasts = async <T,>(
|
|
|
71
71
|
}
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
export const SonnerProvider: React.FC<{
|
|
74
|
+
export const SonnerProvider: React.FC<{
|
|
75
|
+
children: React.ReactNode;
|
|
76
|
+
/**
|
|
77
|
+
* The dismiss button's accessible name, for every toast this provider
|
|
78
|
+
* raises. REQUIRED and mounted ONCE — the shortcut helpers
|
|
79
|
+
* (`sonner.success(…)`) take a message and nothing else by design, so the
|
|
80
|
+
* word cannot be a per-call argument without changing what they are for.
|
|
81
|
+
*/
|
|
82
|
+
dismissLabel: string;
|
|
83
|
+
}> = ({ children, dismissLabel }) => {
|
|
75
84
|
const [toasts, setToasts] = useState<SonnerItem[]>([]);
|
|
76
85
|
const toastCounter = useRef(0);
|
|
77
86
|
|
|
@@ -106,7 +115,7 @@ export const SonnerProvider: React.FC<{ children: React.ReactNode }> = ({ childr
|
|
|
106
115
|
const makeShortcut = useCallback(
|
|
107
116
|
(type: SonnerProps['type'], extra?: Partial<SonnerProps>) =>
|
|
108
117
|
(message: React.ReactNode, options?: Partial<SonnerProps>) =>
|
|
109
|
-
addToast({ ...options, ...extra, title: message }, type),
|
|
118
|
+
addToast({ dismissLabel, ...options, ...extra, title: message }, type),
|
|
110
119
|
[addToast],
|
|
111
120
|
);
|
|
112
121
|
|
|
@@ -306,4 +315,7 @@ export const Toaster: React.FC<{
|
|
|
306
315
|
expand?: boolean;
|
|
307
316
|
richColors?: boolean;
|
|
308
317
|
closeButton?: boolean;
|
|
309
|
-
|
|
318
|
+
dismissLabel: string;
|
|
319
|
+
}> = ({ children, dismissLabel }) => (
|
|
320
|
+
<SonnerProvider dismissLabel={dismissLabel}>{children}</SonnerProvider>
|
|
321
|
+
);
|
|
@@ -4,6 +4,8 @@ export type SonnerVariant = 'default' | 'glass' | 'minimal';
|
|
|
4
4
|
export type SonnerType = 'default' | 'success' | 'error' | 'warning' | 'info' | 'loading';
|
|
5
5
|
|
|
6
6
|
export interface SonnerProps {
|
|
7
|
+
/** The dismiss button's accessible name — it carries a glyph only. REQUIRED. */
|
|
8
|
+
dismissLabel: string;
|
|
7
9
|
id?: string;
|
|
8
10
|
title?: ReactNode;
|
|
9
11
|
description?: ReactNode;
|
|
@@ -153,6 +153,7 @@ export const SonnerToast: React.FC<SonnerItem & { onDismiss: (id: string) => voi
|
|
|
153
153
|
type = 'default',
|
|
154
154
|
variant = 'default',
|
|
155
155
|
closable = true,
|
|
156
|
+
dismissLabel,
|
|
156
157
|
action,
|
|
157
158
|
cancel,
|
|
158
159
|
icon,
|
|
@@ -198,7 +199,7 @@ export const SonnerToast: React.FC<SonnerItem & { onDismiss: (id: string) => voi
|
|
|
198
199
|
<IconButton
|
|
199
200
|
size="small"
|
|
200
201
|
onClick={handleDismiss}
|
|
201
|
-
aria-label=
|
|
202
|
+
aria-label={dismissLabel}
|
|
202
203
|
sx={{
|
|
203
204
|
ml: 'auto',
|
|
204
205
|
color: 'text.secondary',
|
|
@@ -121,6 +121,8 @@ interface ModalHeaderProps {
|
|
|
121
121
|
/** Deeper than the first panel, so the leading button goes back instead of closing. */
|
|
122
122
|
canGoBack: boolean;
|
|
123
123
|
onBack: () => void;
|
|
124
|
+
/** The back arrow's accessible name — it carries a glyph only. REQUIRED. */
|
|
125
|
+
backLabel: string;
|
|
124
126
|
onClose: () => void;
|
|
125
127
|
/** Renders the bar without its ✕ — the panel's content owns the dismiss. */
|
|
126
128
|
hideClose?: boolean;
|
|
@@ -135,15 +137,18 @@ interface ModalHeaderProps {
|
|
|
135
137
|
* all when the panel's content carries its own ✕ (`hideClose`).
|
|
136
138
|
*/
|
|
137
139
|
const HeaderLeadingButton: FC<
|
|
138
|
-
Pick<
|
|
139
|
-
|
|
140
|
+
Pick<
|
|
141
|
+
ModalHeaderProps,
|
|
142
|
+
'canGoBack' | 'onBack' | 'backLabel' | 'onClose' | 'hideClose' | 'rtl' | 'dataTestId'
|
|
143
|
+
>
|
|
144
|
+
> = ({ canGoBack, onBack, backLabel, onClose, hideClose, rtl, dataTestId }) => {
|
|
140
145
|
if (canGoBack) {
|
|
141
146
|
return (
|
|
142
147
|
<IconButton
|
|
143
148
|
edge="start"
|
|
144
149
|
color="inherit"
|
|
145
150
|
onClick={onBack}
|
|
146
|
-
aria-label=
|
|
151
|
+
aria-label={backLabel}
|
|
147
152
|
size="small"
|
|
148
153
|
sx={{ transform: rtl ? 'rotate(180deg)' : 'none' }}
|
|
149
154
|
data-testid={testId(dataTestId, 'back-button')}
|
|
@@ -174,6 +179,7 @@ export const ModalHeader: FC<ModalHeaderProps> = ({
|
|
|
174
179
|
onBack,
|
|
175
180
|
onClose,
|
|
176
181
|
hideClose,
|
|
182
|
+
backLabel,
|
|
177
183
|
headerActions,
|
|
178
184
|
rtl,
|
|
179
185
|
dataTestId,
|
|
@@ -183,6 +189,7 @@ export const ModalHeader: FC<ModalHeaderProps> = ({
|
|
|
183
189
|
<HeaderLeadingButton
|
|
184
190
|
canGoBack={canGoBack}
|
|
185
191
|
onBack={onBack}
|
|
192
|
+
backLabel={backLabel}
|
|
186
193
|
onClose={onClose}
|
|
187
194
|
hideClose={hideClose}
|
|
188
195
|
rtl={rtl}
|
|
@@ -59,7 +59,7 @@ type ResolvedProps = StackedModalProps & { modalId: string };
|
|
|
59
59
|
|
|
60
60
|
const StackedModalPanel: FC<ResolvedProps> = (props) => {
|
|
61
61
|
const {
|
|
62
|
-
open, onClose, glass, navigationTitle, hideClose, children, actions, modalId,
|
|
62
|
+
open, onClose, glass, navigationTitle, backLabel, hideClose, children, actions, modalId,
|
|
63
63
|
closeOnClickOutside, closeOnEsc, loading, loadingText, fullScreen, maxWidth, disableBackdrop,
|
|
64
64
|
disableFocusTrap, keepMounted, rtl, dataTestId,
|
|
65
65
|
'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...otherProps
|
|
@@ -105,6 +105,7 @@ const StackedModalPanel: FC<ResolvedProps> = (props) => {
|
|
|
105
105
|
{...otherProps}
|
|
106
106
|
>
|
|
107
107
|
<ModalPanelContents
|
|
108
|
+
backLabel={backLabel}
|
|
108
109
|
showSkeleton={showSkeleton}
|
|
109
110
|
loadingText={loadingText}
|
|
110
111
|
titleId={titleId}
|
|
@@ -7,6 +7,8 @@ export type ModalPanelRole = 'primary' | 'secondary' | 'background';
|
|
|
7
7
|
export type PanelMaxWidth = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | false;
|
|
8
8
|
|
|
9
9
|
export interface StackedModalProps {
|
|
10
|
+
/** The back arrow's accessible name — it carries a glyph only. REQUIRED. */
|
|
11
|
+
backLabel: string;
|
|
10
12
|
/** Controls the visibility of the modal */
|
|
11
13
|
open: boolean;
|
|
12
14
|
/** Callback fired when the component requests to be closed */
|
|
@@ -202,7 +202,16 @@ const TutorialTooltip: React.FC<{
|
|
|
202
202
|
showProgress: boolean;
|
|
203
203
|
animated: boolean;
|
|
204
204
|
requiresActionBeforeNext: boolean;
|
|
205
|
-
|
|
205
|
+
copy: TutorialOverlayProps['copy'];
|
|
206
|
+
}> = ({
|
|
207
|
+
tutorial,
|
|
208
|
+
steps,
|
|
209
|
+
allowSkip,
|
|
210
|
+
showProgress,
|
|
211
|
+
animated,
|
|
212
|
+
requiresActionBeforeNext,
|
|
213
|
+
copy,
|
|
214
|
+
}) => (
|
|
206
215
|
<Fade in={tutorial.isVisible} timeout={300}>
|
|
207
216
|
<TooltipContainer
|
|
208
217
|
ref={tutorial.tooltipRef}
|
|
@@ -218,6 +227,7 @@ const TutorialTooltip: React.FC<{
|
|
|
218
227
|
data-testid={`tutorial-step-${tutorial.currentStep}`}
|
|
219
228
|
>
|
|
220
229
|
<TutorialStepBody
|
|
230
|
+
copy={copy}
|
|
221
231
|
step={tutorial.currentStepData}
|
|
222
232
|
currentStep={tutorial.currentStep}
|
|
223
233
|
stepCount={steps.length}
|
|
@@ -237,6 +247,7 @@ const TutorialTooltip: React.FC<{
|
|
|
237
247
|
|
|
238
248
|
export const TutorialOverlay: FC<TutorialOverlayProps> = (componentProps) => {
|
|
239
249
|
const {
|
|
250
|
+
copy,
|
|
240
251
|
steps,
|
|
241
252
|
onComplete,
|
|
242
253
|
onSkip,
|
|
@@ -280,6 +291,7 @@ export const TutorialOverlay: FC<TutorialOverlayProps> = (componentProps) => {
|
|
|
280
291
|
/>
|
|
281
292
|
|
|
282
293
|
<TutorialTooltip
|
|
294
|
+
copy={copy}
|
|
283
295
|
tutorial={{ ...tutorial, currentStepData }}
|
|
284
296
|
steps={steps}
|
|
285
297
|
allowSkip={allowSkip}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TutorialCopy } from '../../../copy';
|
|
1
2
|
// Component types
|
|
2
3
|
export interface TutorialStep {
|
|
3
4
|
id: string;
|
|
@@ -15,6 +16,8 @@ export interface TutorialStep {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export interface TutorialOverlayProps {
|
|
19
|
+
/** The tour's four controls. REQUIRED — all four were English literals. */
|
|
20
|
+
copy: TutorialCopy;
|
|
18
21
|
steps: TutorialStep[];
|
|
19
22
|
onComplete?: () => void;
|
|
20
23
|
onSkip?: () => void;
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
import React, { } from 'react';
|
|
15
15
|
|
|
16
16
|
import type { TutorialOverlayProps } from './TutorialOverlay.types';
|
|
17
|
+
import type { TutorialCopy } from '../../../copy';
|
|
17
18
|
|
|
18
19
|
// Animation keyframes
|
|
19
20
|
|
|
@@ -42,6 +43,7 @@ const StepDot = styled(Box, {
|
|
|
42
43
|
|
|
43
44
|
// The step's controls: skip/restart on the left, previous/next on the right.
|
|
44
45
|
const TutorialStepNav: React.FC<{
|
|
46
|
+
copy: TutorialCopy;
|
|
45
47
|
currentStep: number;
|
|
46
48
|
stepCount: number;
|
|
47
49
|
isLastStep: boolean;
|
|
@@ -52,6 +54,7 @@ const TutorialStepNav: React.FC<{
|
|
|
52
54
|
onSkip: () => void;
|
|
53
55
|
onRestart: () => void;
|
|
54
56
|
}> = ({
|
|
57
|
+
copy,
|
|
55
58
|
currentStep,
|
|
56
59
|
stepCount,
|
|
57
60
|
isLastStep,
|
|
@@ -70,7 +73,7 @@ const TutorialStepNav: React.FC<{
|
|
|
70
73
|
<Stack direction="row" spacing={1}>
|
|
71
74
|
{allowSkip && (
|
|
72
75
|
<Button size="small" onClick={onSkip} variant="text">
|
|
73
|
-
|
|
76
|
+
{copy.skip}
|
|
74
77
|
</Button>
|
|
75
78
|
)}
|
|
76
79
|
{stepCount > 1 && (
|
|
@@ -78,7 +81,7 @@ const TutorialStepNav: React.FC<{
|
|
|
78
81
|
size="small"
|
|
79
82
|
onClick={onRestart}
|
|
80
83
|
disabled={currentStep === 0}
|
|
81
|
-
title=
|
|
84
|
+
title={copy.restart}
|
|
82
85
|
>
|
|
83
86
|
<RestartIcon fontSize="small" />
|
|
84
87
|
</IconButton>
|
|
@@ -94,7 +97,7 @@ const TutorialStepNav: React.FC<{
|
|
|
94
97
|
disabled={currentStep === 0}
|
|
95
98
|
data-testid="tutorial-prev-button"
|
|
96
99
|
>
|
|
97
|
-
|
|
100
|
+
{copy.previous}
|
|
98
101
|
</Button>
|
|
99
102
|
)}
|
|
100
103
|
|
|
@@ -108,7 +111,7 @@ const TutorialStepNav: React.FC<{
|
|
|
108
111
|
title={requiresActionBeforeNext ? 'Complete the required action first' : ''}
|
|
109
112
|
data-testid="tutorial-next-button"
|
|
110
113
|
>
|
|
111
|
-
|
|
114
|
+
{copy.next}
|
|
112
115
|
</Button>
|
|
113
116
|
) : (
|
|
114
117
|
<Button
|
|
@@ -175,6 +178,7 @@ const TutorialStepHeader: React.FC<{
|
|
|
175
178
|
);
|
|
176
179
|
|
|
177
180
|
export const TutorialStepBody: React.FC<{
|
|
181
|
+
copy: TutorialCopy;
|
|
178
182
|
step: TutorialOverlayProps['steps'][number];
|
|
179
183
|
currentStep: number;
|
|
180
184
|
stepCount: number;
|
|
@@ -188,6 +192,7 @@ export const TutorialStepBody: React.FC<{
|
|
|
188
192
|
onSkip: () => void;
|
|
189
193
|
onRestart: () => void;
|
|
190
194
|
}> = ({
|
|
195
|
+
copy,
|
|
191
196
|
step,
|
|
192
197
|
currentStep,
|
|
193
198
|
stepCount,
|
|
@@ -239,6 +244,7 @@ export const TutorialStepBody: React.FC<{
|
|
|
239
244
|
<StepDots currentStep={currentStep} stepCount={stepCount} />
|
|
240
245
|
|
|
241
246
|
<TutorialStepNav
|
|
247
|
+
copy={copy}
|
|
242
248
|
currentStep={currentStep}
|
|
243
249
|
stepCount={stepCount}
|
|
244
250
|
isLastStep={isLastStep}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
|
|
3
|
+
import type { AddressAutocompleteCopy } from '../../../copy';
|
|
3
4
|
import type { MockPrediction } from './mockPlaces';
|
|
4
5
|
|
|
5
6
|
/// <reference types="@types/google.maps" />
|
|
@@ -27,6 +28,12 @@ export interface AddressDetails {
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
export interface AddressAutocompleteProps {
|
|
31
|
+
/**
|
|
32
|
+
* The field's own three sentences. REQUIRED: this package ships no default
|
|
33
|
+
* copy, and two of the three are read while the field is unusable because
|
|
34
|
+
* Google Maps never arrived — the worst moment to speak the wrong language.
|
|
35
|
+
*/
|
|
36
|
+
copy: AddressAutocompleteCopy;
|
|
30
37
|
variant?: 'glass' | 'outlined' | 'filled';
|
|
31
38
|
label?: string;
|
|
32
39
|
placeholder?: string;
|