@astryxdesign/core 0.1.6 → 0.1.7-canary.0a6de96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/README.md +2 -0
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +4 -1
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +3 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +4 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +8 -6
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.js +4 -1
- package/dist/Button/Button.d.ts +10 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +49 -6
- package/dist/ButtonGroup/ButtonGroup.d.ts +20 -5
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +27 -11
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +29 -7
- package/dist/Carousel/Carousel.d.ts +1 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +8 -5
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +4 -1
- package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +9 -2
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +6 -2
- package/dist/Chat/ChatLayout.d.ts +1 -11
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +6 -4
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +4 -2
- package/dist/Chat/ChatMessage.d.ts +1 -1
- package/dist/Chat/ChatMessage.d.ts.map +1 -1
- package/dist/Chat/ChatMessage.js +8 -2
- package/dist/Chat/ChatMessageBubble.d.ts +1 -1
- package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +3 -1
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +3 -1
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatMessageMetadata.js +13 -8
- package/dist/Chat/ChatPastedTextToken.d.ts.map +1 -1
- package/dist/Chat/ChatPastedTextToken.js +3 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +3 -1
- package/dist/Chat/index.d.ts +1 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts +12 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +43 -6
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +4 -2
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +4 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +4 -2
- package/dist/CheckboxList/CheckboxList.d.ts +1 -1
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +3 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +3 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +10 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +71 -53
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +8 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +8 -3
- package/dist/CommandPalette/CommandPaletteInput.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +4 -1
- package/dist/CommandPalette/CommandPaletteList.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteList.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteList.js +4 -1
- package/dist/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +8 -4
- package/dist/ContextMenu/index.d.ts +3 -0
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +7 -1
- package/dist/DateInput/DateInput.d.ts +1 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +10 -5
- package/dist/DateRangeInput/DateRangeInput.d.ts +1 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +11 -6
- package/dist/DateTimeInput/DateTimeInput.d.ts +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +15 -7
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +15 -12
- package/dist/Dialog/DialogHeader.d.ts +1 -1
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +7 -3
- package/dist/DropdownMenu/DropdownMenu.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +19 -9
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +89 -0
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +170 -0
- package/dist/DropdownMenu/DropdownMenuContext.d.ts +17 -1
- package/dist/DropdownMenu/DropdownMenuContext.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuContext.js +18 -0
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +69 -0
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +70 -0
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +69 -0
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +178 -0
- package/dist/DropdownMenu/index.d.ts +5 -1
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +10 -1
- package/dist/DropdownMenu/menuItemRoles.d.ts +13 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemRoles.js +15 -0
- package/dist/EmptyState/EmptyState.d.ts +4 -1
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +11 -1
- package/dist/Icon/Icon.d.ts +17 -12
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +28 -20
- package/dist/Kbd/Kbd.js +1 -1
- package/dist/Layer/useLayer.d.ts +10 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +23 -1
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +6 -4
- package/dist/Link/Link.d.ts +5 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +32 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +10 -8
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +4 -2
- package/dist/MobileNav/MobileNavToggle.d.ts +1 -1
- package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/MobileNav/MobileNavToggle.js +4 -1
- package/dist/MoreMenu/MoreMenu.d.ts +1 -1
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +4 -1
- package/dist/MultiSelector/MultiSelector.d.ts +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +13 -6
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +5 -1
- package/dist/Outline/Outline.d.ts +1 -1
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +4 -1
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +38 -11
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +4 -1
- package/dist/PowerSearch/PowerSearch.d.ts +1 -1
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +22 -12
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +26 -20
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +7 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +34 -21
- package/dist/PowerSearch/formatFilterValue.d.ts +2 -1
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +19 -9
- package/dist/PowerSearch/index.d.ts +2 -1
- package/dist/PowerSearch/index.d.ts.map +1 -1
- package/dist/PowerSearch/index.js +1 -0
- package/dist/PowerSearch/resolveOperatorLabel.d.ts +23 -0
- package/dist/PowerSearch/resolveOperatorLabel.d.ts.map +1 -0
- package/dist/PowerSearch/resolveOperatorLabel.js +28 -0
- package/dist/PowerSearch/types.d.ts +28 -2
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchConfig.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchConfig.js +27 -27
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.js +15 -8
- package/dist/Resizable/ResizeHandle.d.ts +1 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +4 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +52 -14
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +4 -2
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +3 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +5 -3
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +7 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +4 -2
- package/dist/TabList/TabList.d.ts +1 -1
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +4 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -16
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +5 -3
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +56 -19
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +12 -5
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +6 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +8 -6
- package/dist/Table/plugins/rowIndex/useTableRowIndex.d.ts +1 -1
- package/dist/Table/plugins/rowIndex/useTableRowIndex.js +1 -1
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +5 -2
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +6 -4
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -2
- package/dist/Table/types.d.ts +17 -10
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +5 -1
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +8 -2
- package/dist/TimeInput/TimeInput.d.ts +1 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +7 -2
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +18 -3
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +3 -1
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +3 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +8 -2
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +3 -1
- package/dist/TopNav/TopNav.d.ts +2 -1
- package/dist/TopNav/TopNav.d.ts.map +1 -1
- package/dist/TopNav/TopNav.js +4 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +5 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +5 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +7 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +8 -4
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +3 -1
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -0
- package/dist/astryx.css +35 -3
- package/dist/astryx.umd.js +62 -60
- package/dist/astryx.umd.js.map +4 -4
- package/dist/authoring/doc.d.ts +145 -0
- package/dist/authoring/doc.d.ts.map +1 -0
- package/dist/authoring/doc.js +100 -0
- package/dist/authoring/index.d.ts +29 -0
- package/dist/authoring/index.d.ts.map +1 -0
- package/dist/authoring/index.js +28 -0
- package/dist/authoring/integration.d.ts +35 -0
- package/dist/authoring/integration.d.ts.map +1 -0
- package/dist/authoring/integration.js +30 -0
- package/dist/authoring/template.d.ts +66 -0
- package/dist/authoring/template.d.ts.map +1 -0
- package/dist/authoring/template.js +55 -0
- package/dist/config.d.ts +80 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +40 -0
- package/dist/docs-types.d.ts +13 -4
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.d.ts +12 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -0
- package/dist/i18n/InternationalizationContext.js +29 -0
- package/dist/i18n/InternationalizationProvider.d.ts +61 -0
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -0
- package/dist/i18n/InternationalizationProvider.js +44 -0
- package/dist/i18n/index.d.ts +24 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +21 -0
- package/dist/i18n/resolve.d.ts +22 -0
- package/dist/i18n/resolve.d.ts.map +1 -0
- package/dist/i18n/resolve.js +141 -0
- package/dist/i18n/translator.d.ts +25 -0
- package/dist/i18n/translator.d.ts.map +1 -0
- package/dist/i18n/translator.js +1 -0
- package/dist/i18n/types.d.ts +47 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +1 -0
- package/dist/i18n/useTranslator.d.ts +15 -0
- package/dist/i18n/useTranslator.d.ts.map +1 -0
- package/dist/i18n/useTranslator.js +39 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/theme/hct.d.ts +0 -1
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +0 -3
- package/dist/utils/color.d.ts +13 -1
- package/dist/utils/color.d.ts.map +1 -1
- package/dist/utils/color.js +23 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/locales/en.json +746 -0
- package/locales/pseudo.json +560 -0
- package/package.json +23 -2
- package/src/AlertDialog/AlertDialog.doc.mjs +5 -0
- package/src/AlertDialog/AlertDialog.tsx +4 -1
- package/src/AppShell/AppShell.doc.mjs +8 -2
- package/src/AppShell/AppShell.tsx +3 -1
- package/src/AvatarGroup/AvatarGroup.tsx +4 -1
- package/src/Banner/Banner.tsx +10 -5
- package/src/Breadcrumbs/Breadcrumbs.tsx +4 -1
- package/src/Button/Button.doc.mjs +8 -0
- package/src/Button/Button.test.tsx +27 -0
- package/src/Button/Button.tsx +51 -5
- package/src/ButtonGroup/ButtonGroup.test.tsx +386 -2
- package/src/ButtonGroup/ButtonGroup.tsx +27 -11
- package/src/Calendar/Calendar.test.tsx +103 -2
- package/src/Calendar/Calendar.tsx +29 -6
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Carousel/Carousel.tsx +10 -7
- package/src/Chat/ChatComposer.tsx +5 -1
- package/src/Chat/ChatComposerDrawer.tsx +9 -2
- package/src/Chat/ChatComposerInput.tsx +10 -4
- package/src/Chat/ChatLayout.test.tsx +127 -2
- package/src/Chat/ChatLayout.tsx +5 -12
- package/src/Chat/ChatLayoutScrollButton.tsx +4 -2
- package/src/Chat/ChatMessage.tsx +5 -1
- package/src/Chat/ChatMessageBubble.tsx +2 -0
- package/src/Chat/ChatMessageList.doc.mjs +1 -1
- package/src/Chat/ChatMessageList.tsx +2 -0
- package/src/Chat/ChatMessageMetadata.tsx +15 -9
- package/src/Chat/ChatPastedTextToken.tsx +3 -1
- package/src/Chat/ChatSendButton.tsx +3 -1
- package/src/Chat/ChatToolCalls.doc.mjs +1 -1
- package/src/Chat/index.ts +1 -0
- package/src/Chat/useChatStreamScroll.test.tsx +168 -0
- package/src/Chat/useChatStreamScroll.ts +67 -11
- package/src/Chat/useSpeechRecognition.ts +11 -2
- package/src/Chat/useTriggerMenu.tsx +4 -2
- package/src/CheckboxInput/CheckboxInput.test.tsx +16 -0
- package/src/CheckboxInput/CheckboxInput.tsx +4 -2
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -1
- package/src/CheckboxList/CheckboxList.tsx +2 -0
- package/src/CheckboxList/CheckboxListItem.tsx +7 -1
- package/src/Citation/Citation.tsx +4 -2
- package/src/ClickableCard/ClickableCard.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.tsx +91 -40
- package/src/Collapsible/Collapsible.doc.mjs +1 -0
- package/src/Collapsible/Collapsible.test.tsx +6 -0
- package/src/Collapsible/Collapsible.tsx +19 -4
- package/src/CommandPalette/CommandPalette.tsx +10 -3
- package/src/CommandPalette/CommandPaletteInput.test.tsx +1 -1
- package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
- package/src/CommandPalette/CommandPaletteList.tsx +4 -1
- package/src/ContextMenu/ContextMenu.test.tsx +75 -1
- package/src/ContextMenu/ContextMenu.tsx +14 -6
- package/src/ContextMenu/index.ts +15 -0
- package/src/DateInput/DateInput.doc.mjs +2 -2
- package/src/DateInput/DateInput.test.tsx +17 -5
- package/src/DateInput/DateInput.tsx +13 -5
- package/src/DateRangeInput/DateRangeInput.doc.mjs +1 -1
- package/src/DateRangeInput/DateRangeInput.tsx +14 -6
- package/src/DateTimeInput/DateTimeInput.doc.mjs +2 -2
- package/src/DateTimeInput/DateTimeInput.tsx +17 -7
- package/src/Dialog/Dialog.tsx +11 -15
- package/src/Dialog/DialogHeader.tsx +7 -3
- package/src/DropdownMenu/DropdownMenu.doc.mjs +23 -0
- package/src/DropdownMenu/DropdownMenu.tsx +23 -14
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +95 -0
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +237 -0
- package/src/DropdownMenu/DropdownMenuContext.tsx +29 -1
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +6 -0
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +80 -0
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +119 -0
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +80 -0
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +232 -0
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +163 -0
- package/src/DropdownMenu/index.ts +23 -3
- package/src/DropdownMenu/menuItemRoles.ts +22 -0
- package/src/EmptyState/EmptyState.doc.mjs +3 -3
- package/src/EmptyState/EmptyState.tsx +4 -1
- package/src/Field/Field.doc.mjs +2 -2
- package/src/FileInput/FileInput.test.tsx +40 -1
- package/src/FileInput/FileInput.tsx +12 -1
- package/src/Grid/Grid.doc.mjs +5 -5
- package/src/Icon/Icon.test.tsx +46 -0
- package/src/Icon/Icon.tsx +37 -24
- package/src/InputGroup/InputGroup.doc.mjs +1 -1
- package/src/Kbd/Kbd.test.tsx +26 -0
- package/src/Kbd/Kbd.tsx +1 -1
- package/src/Layer/useLayer.doc.mjs +8 -5
- package/src/Layer/useLayer.test.tsx +136 -1
- package/src/Layer/useLayer.tsx +34 -2
- package/src/Lightbox/Lightbox.doc.mjs +7 -2
- package/src/Lightbox/Lightbox.tsx +6 -4
- package/src/Link/Link.test.tsx +74 -2
- package/src/Link/Link.tsx +48 -1
- package/src/Markdown/Markdown.tsx +12 -4
- package/src/MobileNav/MobileNav.tsx +4 -2
- package/src/MobileNav/MobileNavToggle.tsx +5 -3
- package/src/MoreMenu/MoreMenu.tsx +4 -1
- package/src/MultiSelector/MultiSelector.tsx +14 -5
- package/src/NumberInput/NumberInput.tsx +3 -1
- package/src/Outline/Outline.tsx +4 -1
- package/src/OverflowList/OverflowList.doc.mjs +2 -2
- package/src/Pagination/Pagination.tsx +35 -12
- package/src/Popover/usePopover.tsx +6 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +9 -4
- package/src/PowerSearch/PowerSearch.tsx +22 -10
- package/src/PowerSearch/PowerSearchEditPopover.tsx +27 -20
- package/src/PowerSearch/PowerSearchToken.tsx +17 -6
- package/src/PowerSearch/PowerSearchValueEditor.tsx +34 -21
- package/src/PowerSearch/formatFilterValue.test.ts +282 -0
- package/src/PowerSearch/formatFilterValue.ts +21 -8
- package/src/PowerSearch/index.ts +5 -0
- package/src/PowerSearch/resolveOperatorLabel.ts +34 -0
- package/src/PowerSearch/types.ts +33 -9
- package/src/PowerSearch/usePowerSearchConfig.ts +59 -27
- package/src/PowerSearch/usePowerSearchSource.ts +17 -8
- package/src/RadioList/RadioList.doc.mjs +1 -1
- package/src/Resizable/ResizeHandle.tsx +4 -1
- package/src/Section/Section.doc.mjs +4 -4
- package/src/SelectableCard/SelectableCard.doc.mjs +1 -1
- package/src/Selector/Selector.doc.mjs +6 -3
- package/src/Selector/Selector.test.tsx +114 -6
- package/src/Selector/Selector.tsx +68 -17
- package/src/SideNav/SideNav.tsx +4 -2
- package/src/SideNav/SideNavCollapseButton.tsx +3 -1
- package/src/SideNav/SideNavHeading.tsx +5 -3
- package/src/SideNav/SideNavItem.tsx +3 -1
- package/src/Slider/Slider.doc.mjs +2 -2
- package/src/Stack/Stack.doc.mjs +10 -10
- package/src/Switch/Switch.doc.mjs +2 -2
- package/src/Switch/Switch.test.tsx +16 -0
- package/src/Switch/Switch.tsx +4 -2
- package/src/TabList/TabList.tsx +4 -1
- package/src/Table/BaseTable.tsx +36 -19
- package/src/Table/Table.test.tsx +132 -1
- package/src/Table/Table.tsx +6 -4
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +1 -1
- package/src/Table/plugins/filtering/useTableFiltering.tsx +31 -30
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +7 -5
- package/src/Table/plugins/pagination/useTablePagination.tsx +4 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -8
- package/src/Table/plugins/rowIndex/useTableRowIndex.tsx +1 -1
- package/src/Table/plugins/selection/useTableSelection.tsx +6 -7
- package/src/Table/plugins/sortable/useTableSortable.tsx +8 -5
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +4 -4
- package/src/Table/types.ts +18 -12
- package/src/Table/useTableFiltering.doc.mjs +2 -2
- package/src/Table/useTableGroupedRows.doc.mjs +3 -3
- package/src/Table/useTableSortable.doc.mjs +11 -11
- package/src/Text/Text.doc.mjs +2 -2
- package/src/TextInput/TextInput.tsx +3 -1
- package/src/Thumbnail/Thumbnail.tsx +4 -2
- package/src/TimeInput/TimeInput.doc.mjs +2 -2
- package/src/TimeInput/TimeInput.tsx +6 -2
- package/src/Timestamp/Timestamp.doc.mjs +4 -4
- package/src/Timestamp/Timestamp.test.tsx +120 -7
- package/src/Timestamp/Timestamp.tsx +21 -1
- package/src/Toast/Toast.tsx +3 -1
- package/src/Toast/ToastViewport.tsx +3 -1
- package/src/Token/Token.tsx +4 -2
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.tsx +4 -4
- package/src/Toolbar/Toolbar.doc.mjs +1 -1
- package/src/TopNav/TopNav.doc.mjs +1 -0
- package/src/TopNav/TopNav.test.tsx +30 -0
- package/src/TopNav/TopNav.tsx +6 -4
- package/src/TopNav/TopNavHeading.tsx +5 -3
- package/src/TreeList/TreeList.tsx +5 -1
- package/src/TreeList/TreeListItem.tsx +6 -1
- package/src/Typeahead/BaseTypeahead.tsx +11 -4
- package/src/Typeahead/Typeahead.doc.mjs +1 -1
- package/src/Typeahead/Typeahead.tsx +3 -1
- package/src/VisuallyHidden/VisuallyHidden.tsx +1 -0
- package/src/authoring/doc.ts +166 -0
- package/src/authoring/index.test.ts +52 -0
- package/src/authoring/index.ts +50 -0
- package/src/authoring/integration.ts +42 -0
- package/src/authoring/template.ts +74 -0
- package/src/config.test.ts +16 -0
- package/src/config.ts +92 -0
- package/src/docPropLiterals.test.ts +938 -0
- package/src/docs-types.ts +15 -10
- package/src/i18n/InternationalizationContext.ts +39 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +72 -0
- package/src/i18n/InternationalizationProvider.tsx +82 -0
- package/src/i18n/__tests__/e2e-pagination.test.tsx +172 -0
- package/src/i18n/__tests__/e2e-powersearch.test.tsx +130 -0
- package/src/i18n/__tests__/resolve.test.ts +284 -0
- package/src/i18n/index.ts +32 -0
- package/src/i18n/resolve.ts +165 -0
- package/src/i18n/translator.ts +31 -0
- package/src/i18n/types.ts +53 -0
- package/src/i18n/useTranslator.doc.mjs +46 -0
- package/src/i18n/useTranslator.ts +50 -0
- package/src/index.ts +3 -0
- package/src/theme/hct.ts +0 -4
- package/src/utils/color.test.ts +101 -1
- package/src/utils/color.ts +23 -1
- package/src/utils/index.ts +8 -1
- package/dist/NavItem/index.d.ts +0 -9
- package/dist/NavItem/index.d.ts.map +0 -1
- package/dist/NavItem/index.js +0 -10
- package/src/NavItem/index.ts +0 -11
|
@@ -56,6 +56,7 @@ import {
|
|
|
56
56
|
} from './parser';
|
|
57
57
|
import type {BlockNode, InlineNode, IncrementalState} from './parser';
|
|
58
58
|
import {themeProps} from '../utils/themeProps';
|
|
59
|
+
import {useTranslator, type TranslatorFn} from '../i18n';
|
|
59
60
|
|
|
60
61
|
type SyncReactNode = Exclude<React.ReactNode, Promise<unknown>>;
|
|
61
62
|
|
|
@@ -1041,8 +1042,9 @@ function renderBlock(
|
|
|
1041
1042
|
contentWidthValue: string | null,
|
|
1042
1043
|
contentAlign: 'start' | 'center',
|
|
1043
1044
|
linkComponent: LinkComponentType = 'a',
|
|
1044
|
-
inlinePlugins
|
|
1045
|
-
components
|
|
1045
|
+
inlinePlugins: MarkdownInlinePlugin[] | undefined,
|
|
1046
|
+
components: Partial<MarkdownComponents> | undefined,
|
|
1047
|
+
t: TranslatorFn,
|
|
1046
1048
|
): SyncReactNode {
|
|
1047
1049
|
const blockAlignMargin = BLOCK_ALIGN_MARGIN[contentAlign];
|
|
1048
1050
|
const blockAlignStyle =
|
|
@@ -1197,6 +1199,7 @@ function renderBlock(
|
|
|
1197
1199
|
linkComponent,
|
|
1198
1200
|
inlinePlugins,
|
|
1199
1201
|
components,
|
|
1202
|
+
t,
|
|
1200
1203
|
),
|
|
1201
1204
|
);
|
|
1202
1205
|
return <BlockquoteComp key={index}>{bqC}</BlockquoteComp>;
|
|
@@ -1230,6 +1233,7 @@ function renderBlock(
|
|
|
1230
1233
|
linkComponent,
|
|
1231
1234
|
inlinePlugins,
|
|
1232
1235
|
components,
|
|
1236
|
+
t,
|
|
1233
1237
|
),
|
|
1234
1238
|
)}
|
|
1235
1239
|
</Blockquote>
|
|
@@ -1256,7 +1260,7 @@ function renderBlock(
|
|
|
1256
1260
|
isLast && styles.noMarginBlockEnd,
|
|
1257
1261
|
)}>
|
|
1258
1262
|
<CheckboxList
|
|
1259
|
-
label=
|
|
1263
|
+
label={t('@astryx.markdown.taskList')}
|
|
1260
1264
|
isLabelHidden
|
|
1261
1265
|
value={checkedValues}
|
|
1262
1266
|
xstyle={styles.blockIndent}
|
|
@@ -1300,6 +1304,7 @@ function renderBlock(
|
|
|
1300
1304
|
linkComponent,
|
|
1301
1305
|
inlinePlugins,
|
|
1302
1306
|
components,
|
|
1307
|
+
t,
|
|
1303
1308
|
),
|
|
1304
1309
|
)}
|
|
1305
1310
|
</>
|
|
@@ -1378,6 +1383,7 @@ function renderBlock(
|
|
|
1378
1383
|
linkComponent,
|
|
1379
1384
|
inlinePlugins,
|
|
1380
1385
|
components,
|
|
1386
|
+
t,
|
|
1381
1387
|
),
|
|
1382
1388
|
)}
|
|
1383
1389
|
</>
|
|
@@ -1407,7 +1413,7 @@ function renderBlock(
|
|
|
1407
1413
|
// (axe: landmark-unique).
|
|
1408
1414
|
tabIndex={0}
|
|
1409
1415
|
role="group"
|
|
1410
|
-
aria-label=
|
|
1416
|
+
aria-label={t('@astryx.markdown.table')}
|
|
1411
1417
|
{...stylex.props(
|
|
1412
1418
|
styles.tableWrapper,
|
|
1413
1419
|
spacing,
|
|
@@ -1567,6 +1573,7 @@ export function Markdown({
|
|
|
1567
1573
|
style,
|
|
1568
1574
|
'data-testid': testId,
|
|
1569
1575
|
}: MarkdownProps): React.ReactElement {
|
|
1576
|
+
const t = useTranslator();
|
|
1570
1577
|
const LinkComponent = useLinkComponent();
|
|
1571
1578
|
// Derive the set of source IDs for the parser (stable across renders when sources don't change)
|
|
1572
1579
|
const sourceIds = useMemo(
|
|
@@ -1725,6 +1732,7 @@ export function Markdown({
|
|
|
1725
1732
|
LinkComponent,
|
|
1726
1733
|
inlinePlugins,
|
|
1727
1734
|
components,
|
|
1735
|
+
t,
|
|
1728
1736
|
),
|
|
1729
1737
|
)}
|
|
1730
1738
|
</div>
|
|
@@ -49,6 +49,7 @@ import {useAppShellMobile} from '../AppShell/AppShellMobileContext';
|
|
|
49
49
|
import {mergeProps, mergeRefs, composeEventHandlers} from '../utils';
|
|
50
50
|
import type {BaseProps} from '../BaseProps';
|
|
51
51
|
import {themeProps} from '../utils/themeProps';
|
|
52
|
+
import {useTranslator} from '../i18n';
|
|
52
53
|
|
|
53
54
|
// =============================================================================
|
|
54
55
|
// Styles
|
|
@@ -290,6 +291,7 @@ export function MobileNav({
|
|
|
290
291
|
ref,
|
|
291
292
|
...rest
|
|
292
293
|
}: MobileNavProps) {
|
|
294
|
+
const t = useTranslator();
|
|
293
295
|
// Read from AppShell context as fallback
|
|
294
296
|
const appShellMobile = useAppShellMobile();
|
|
295
297
|
const isOpen = isOpenProp ?? appShellMobile.isMobileNavOpen;
|
|
@@ -423,7 +425,7 @@ export function MobileNav({
|
|
|
423
425
|
)}
|
|
424
426
|
{...rest}
|
|
425
427
|
data-testid={testId}
|
|
426
|
-
aria-label={label ?? (typeof header === 'string' ? header : '
|
|
428
|
+
aria-label={label ?? (typeof header === 'string' ? header : t('@astryx.mobileNav.navigation'))}
|
|
427
429
|
onClick={composeEventHandlers(onClickProp, handleDialogClick)}
|
|
428
430
|
onCancel={handleCancel}>
|
|
429
431
|
{/* Drawer panel — tabIndex so showModal() focuses the drawer, not the close button */}
|
|
@@ -448,7 +450,7 @@ export function MobileNav({
|
|
|
448
450
|
)}
|
|
449
451
|
<Button
|
|
450
452
|
variant="ghost"
|
|
451
|
-
label=
|
|
453
|
+
label={t('@astryx.mobileNav.closeNavigation')}
|
|
452
454
|
icon={<Icon icon="close" color="inherit" />}
|
|
453
455
|
onClick={() => onOpenChange(false)}
|
|
454
456
|
isIconOnly
|
|
@@ -18,6 +18,7 @@ import {Button} from '../Button';
|
|
|
18
18
|
import {Icon} from '../Icon';
|
|
19
19
|
import {useAppShellMobile} from '../AppShell/AppShellMobileContext';
|
|
20
20
|
import type {BaseProps} from '../BaseProps';
|
|
21
|
+
import {useTranslator} from '../i18n';
|
|
21
22
|
|
|
22
23
|
export interface MobileNavToggleProps extends Pick<
|
|
23
24
|
BaseProps,
|
|
@@ -60,14 +61,15 @@ export interface MobileNavToggleProps extends Pick<
|
|
|
60
61
|
export function MobileNavToggle({
|
|
61
62
|
ref,
|
|
62
63
|
children,
|
|
63
|
-
label
|
|
64
|
+
label: labelFromProps,
|
|
64
65
|
'data-testid': testId,
|
|
65
66
|
xstyle,
|
|
66
67
|
className,
|
|
67
68
|
style,
|
|
68
69
|
}: MobileNavToggleProps) {
|
|
69
|
-
const
|
|
70
|
-
|
|
70
|
+
const t = useTranslator();
|
|
71
|
+
const label = labelFromProps ?? t('@astryx.mobileNav.toggle.open');
|
|
72
|
+
const {isMobile, isMobileNavEnabled, toggleMobileNav} = useAppShellMobile();
|
|
71
73
|
|
|
72
74
|
// Don't render above the breakpoint or when mobile nav is disabled
|
|
73
75
|
if (!isMobile || !isMobileNavEnabled) {
|
|
@@ -26,6 +26,7 @@ import type {DropdownMenuOption} from '../DropdownMenu';
|
|
|
26
26
|
import type {ButtonVariant, ButtonSize} from '../Button';
|
|
27
27
|
import type {BaseProps} from '../BaseProps';
|
|
28
28
|
import {stableClassName} from '../naming';
|
|
29
|
+
import {useTranslator} from '../i18n';
|
|
29
30
|
|
|
30
31
|
export interface MoreMenuProps extends Pick<
|
|
31
32
|
BaseProps,
|
|
@@ -102,7 +103,7 @@ export interface MoreMenuProps extends Pick<
|
|
|
102
103
|
*/
|
|
103
104
|
export function MoreMenu({
|
|
104
105
|
items,
|
|
105
|
-
label
|
|
106
|
+
label: labelFromProps,
|
|
106
107
|
variant = 'ghost',
|
|
107
108
|
size: sizeProp,
|
|
108
109
|
icon,
|
|
@@ -115,6 +116,8 @@ export function MoreMenu({
|
|
|
115
116
|
'data-testid': testId,
|
|
116
117
|
ref,
|
|
117
118
|
}: MoreMenuProps) {
|
|
119
|
+
const t = useTranslator();
|
|
120
|
+
const label = labelFromProps ?? t('@astryx.moreMenu.label');
|
|
118
121
|
const size = useSize(sizeProp, 'md');
|
|
119
122
|
const moreIcon = getIcon('moreHorizontal');
|
|
120
123
|
|
|
@@ -76,6 +76,7 @@ import {themeProps} from '../utils/themeProps';
|
|
|
76
76
|
import {groupStyles} from '../InputGroup/groupStyles';
|
|
77
77
|
import {useInputGroup} from '../InputGroup/InputGroupContext';
|
|
78
78
|
import {VisuallyHidden} from '../VisuallyHidden';
|
|
79
|
+
import {useTranslator} from '../i18n';
|
|
79
80
|
|
|
80
81
|
// Sentinel value for the select-all item in keyboard navigation
|
|
81
82
|
const SELECT_ALL_VALUE = '__xds_select_all__';
|
|
@@ -589,16 +590,16 @@ export function MultiSelector<T extends MultiSelectorOptionType>({
|
|
|
589
590
|
onChange,
|
|
590
591
|
changeAction,
|
|
591
592
|
isLoading = false,
|
|
592
|
-
placeholder
|
|
593
|
+
placeholder: placeholderFromProps,
|
|
593
594
|
size: sizeProp,
|
|
594
595
|
status,
|
|
595
596
|
labelTooltip,
|
|
596
597
|
startIcon,
|
|
597
598
|
hasClear = false,
|
|
598
599
|
hasSelectAll = false,
|
|
599
|
-
selectAllLabel
|
|
600
|
+
selectAllLabel: selectAllLabelFromProps,
|
|
600
601
|
hasSearch = false,
|
|
601
|
-
searchPlaceholder
|
|
602
|
+
searchPlaceholder: searchPlaceholderFromProps,
|
|
602
603
|
triggerDisplay = 'count',
|
|
603
604
|
maxBadges = 3,
|
|
604
605
|
renderOption,
|
|
@@ -610,6 +611,13 @@ export function MultiSelector<T extends MultiSelectorOptionType>({
|
|
|
610
611
|
className,
|
|
611
612
|
style,
|
|
612
613
|
}: MultiSelectorProps<T>) {
|
|
614
|
+
const t = useTranslator();
|
|
615
|
+
const placeholder =
|
|
616
|
+
placeholderFromProps ?? t('@astryx.multiSelector.selectPlaceholder');
|
|
617
|
+
const selectAllLabel =
|
|
618
|
+
selectAllLabelFromProps ?? t('@astryx.multiSelector.selectAll');
|
|
619
|
+
const searchPlaceholder =
|
|
620
|
+
searchPlaceholderFromProps ?? t('@astryx.multiSelector.searchPlaceholder');
|
|
613
621
|
const size = useSize(sizeProp, 'md');
|
|
614
622
|
const triggerId = useId();
|
|
615
623
|
const listboxId = useId();
|
|
@@ -1030,7 +1038,7 @@ export function MultiSelector<T extends MultiSelectorOptionType>({
|
|
|
1030
1038
|
? getItemId(highlightedIndex)
|
|
1031
1039
|
: undefined
|
|
1032
1040
|
}
|
|
1033
|
-
aria-label=
|
|
1041
|
+
aria-label={t('@astryx.multiSelector.searchOptions')}
|
|
1034
1042
|
type="text"
|
|
1035
1043
|
value={searchQuery}
|
|
1036
1044
|
onChange={e => setSearchQuery(e.target.value)}
|
|
@@ -1063,6 +1071,7 @@ export function MultiSelector<T extends MultiSelectorOptionType>({
|
|
|
1063
1071
|
popover.isOpen,
|
|
1064
1072
|
highlightedIndex,
|
|
1065
1073
|
getItemId,
|
|
1074
|
+
t,
|
|
1066
1075
|
]);
|
|
1067
1076
|
|
|
1068
1077
|
// Render an individual item (index-based)
|
|
@@ -1305,7 +1314,7 @@ export function MultiSelector<T extends MultiSelectorOptionType>({
|
|
|
1305
1314
|
<button
|
|
1306
1315
|
type="button"
|
|
1307
1316
|
onClick={handleClear}
|
|
1308
|
-
aria-label={
|
|
1317
|
+
aria-label={t('@astryx.multiSelector.clearAll', {label})}
|
|
1309
1318
|
{...stylex.props(styles.clearButton)}>
|
|
1310
1319
|
<Icon icon="close" size="sm" color="secondary" />
|
|
1311
1320
|
</button>
|
|
@@ -135,6 +135,7 @@ import {mergeProps, mergeRefs} from '../utils';
|
|
|
135
135
|
import type {BaseProps} from '../BaseProps';
|
|
136
136
|
import type {SizeValue} from '../utils/types';
|
|
137
137
|
import {themeProps} from '../utils/themeProps';
|
|
138
|
+
import {useTranslator} from '../i18n';
|
|
138
139
|
|
|
139
140
|
interface NumberInputPropsBase extends Omit<
|
|
140
141
|
BaseProps,
|
|
@@ -399,6 +400,7 @@ export function NumberInput({
|
|
|
399
400
|
ref,
|
|
400
401
|
...rest
|
|
401
402
|
}: NumberInputProps) {
|
|
403
|
+
const t = useTranslator();
|
|
402
404
|
const size = useSize(sizeProp, 'md');
|
|
403
405
|
const id = useId();
|
|
404
406
|
const inputLabelID = useId();
|
|
@@ -663,7 +665,7 @@ export function NumberInput({
|
|
|
663
665
|
<button
|
|
664
666
|
type="button"
|
|
665
667
|
onClick={handleClear}
|
|
666
|
-
aria-label={
|
|
668
|
+
aria-label={t('@astryx.numberInput.clearLabel', {label})}
|
|
667
669
|
{...stylex.props(styles.clearButton)}>
|
|
668
670
|
<Icon icon="close" size="sm" color="secondary" />
|
|
669
671
|
</button>
|
package/src/Outline/Outline.tsx
CHANGED
|
@@ -37,6 +37,7 @@ import type {BaseProps} from '../BaseProps';
|
|
|
37
37
|
import {useScrollSpy} from './useScrollSpy';
|
|
38
38
|
import type {OutlineItem} from './types';
|
|
39
39
|
import {themeProps} from '../utils/themeProps';
|
|
40
|
+
import {useTranslator} from '../i18n';
|
|
40
41
|
|
|
41
42
|
export type {OutlineItem} from './types';
|
|
42
43
|
|
|
@@ -236,7 +237,7 @@ export function Outline({
|
|
|
236
237
|
items,
|
|
237
238
|
activeId,
|
|
238
239
|
onActiveIdChange,
|
|
239
|
-
label
|
|
240
|
+
label: labelFromProps,
|
|
240
241
|
density = 'default',
|
|
241
242
|
xstyle,
|
|
242
243
|
className,
|
|
@@ -245,6 +246,8 @@ export function Outline({
|
|
|
245
246
|
'data-testid': testId,
|
|
246
247
|
...props
|
|
247
248
|
}: OutlineProps) {
|
|
249
|
+
const t = useTranslator();
|
|
250
|
+
const label = labelFromProps ?? t('@astryx.outline.label');
|
|
248
251
|
const rootRef = useRef<HTMLElement | null>(null);
|
|
249
252
|
const LinkComponent = useLinkComponent();
|
|
250
253
|
const isControlled = activeId !== undefined;
|
|
@@ -50,7 +50,7 @@ export const docs = {
|
|
|
50
50
|
},
|
|
51
51
|
{
|
|
52
52
|
name: 'gap',
|
|
53
|
-
type: '
|
|
53
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
54
54
|
description:
|
|
55
55
|
'Gap between items as a spacing token step (0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10).',
|
|
56
56
|
default: '2',
|
|
@@ -116,7 +116,7 @@ export const docsZh = {
|
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
name: 'gap',
|
|
119
|
-
type: '
|
|
119
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
120
120
|
description:
|
|
121
121
|
'项目间距,使用间距步进值(0、0.5、1、1.5、2、3、4、5、6、8、10)。',
|
|
122
122
|
default: '2',
|
|
@@ -39,6 +39,7 @@ import {useListFocus} from '../hooks/useListFocus';
|
|
|
39
39
|
import {mergeProps} from '../utils';
|
|
40
40
|
import type {BaseProps} from '../BaseProps';
|
|
41
41
|
import {themeProps} from '../utils/themeProps';
|
|
42
|
+
import {useTranslator} from '../i18n/useTranslator';
|
|
42
43
|
|
|
43
44
|
// =============================================================================
|
|
44
45
|
// Types
|
|
@@ -344,7 +345,7 @@ export function Pagination({
|
|
|
344
345
|
siblingCount = 1,
|
|
345
346
|
size = 'md',
|
|
346
347
|
isDisabled = false,
|
|
347
|
-
label
|
|
348
|
+
label: labelFromProps,
|
|
348
349
|
'data-testid': testId,
|
|
349
350
|
xstyle,
|
|
350
351
|
className,
|
|
@@ -354,6 +355,14 @@ export function Pagination({
|
|
|
354
355
|
}: PaginationProps) {
|
|
355
356
|
const [, startTransition] = useTransition();
|
|
356
357
|
|
|
358
|
+
// Resolve system strings once per render. Prop overrides win.
|
|
359
|
+
const t = useTranslator();
|
|
360
|
+
const label = labelFromProps ?? t('@astryx.pagination.label');
|
|
361
|
+
const previousLabel = t('@astryx.pagination.previous');
|
|
362
|
+
const nextLabel = t('@astryx.pagination.next');
|
|
363
|
+
const pageIndicatorsLabel = t('@astryx.pagination.pageIndicators');
|
|
364
|
+
const itemsPerPageLabel = t('@astryx.pagination.itemsPerPage');
|
|
365
|
+
|
|
357
366
|
// pageSize is typed as number, so 0, NaN, and negatives are valid at the
|
|
358
367
|
// type level but yield Infinity/NaN page counts, and
|
|
359
368
|
// Array.from({length: Infinity}) crashes the dots variant. Coerce to a
|
|
@@ -418,8 +427,11 @@ export function Pagination({
|
|
|
418
427
|
onChange(newPage);
|
|
419
428
|
announce(
|
|
420
429
|
computedTotalPages != null
|
|
421
|
-
?
|
|
422
|
-
|
|
430
|
+
? t('@astryx.pagination.pageOfTotal', {
|
|
431
|
+
current: newPage,
|
|
432
|
+
total: computedTotalPages,
|
|
433
|
+
})
|
|
434
|
+
: t('@astryx.pagination.pageAnnounce', {current: newPage}),
|
|
423
435
|
);
|
|
424
436
|
startTransition(async () => {
|
|
425
437
|
setOptimisticPage(newPage);
|
|
@@ -511,8 +523,10 @@ export function Pagination({
|
|
|
511
523
|
return (
|
|
512
524
|
<Button
|
|
513
525
|
key={item}
|
|
514
|
-
label={
|
|
515
|
-
aria-label={
|
|
526
|
+
label={t('@astryx.pagination.goToPage', {page: item})}
|
|
527
|
+
aria-label={t('@astryx.pagination.goToPage', {
|
|
528
|
+
page: item,
|
|
529
|
+
})}
|
|
516
530
|
variant="ghost"
|
|
517
531
|
size={buttonSize}
|
|
518
532
|
onClick={() => handlePageChange(item)}
|
|
@@ -534,7 +548,11 @@ export function Pagination({
|
|
|
534
548
|
return (
|
|
535
549
|
<span {...stylex.props(styles.infoText)}>
|
|
536
550
|
<Text type="body" size="sm" color="secondary">
|
|
537
|
-
{
|
|
551
|
+
{t('@astryx.pagination.count', {
|
|
552
|
+
from: rangeStart,
|
|
553
|
+
to: rangeEnd,
|
|
554
|
+
total: totalItems,
|
|
555
|
+
})}
|
|
538
556
|
</Text>
|
|
539
557
|
</span>
|
|
540
558
|
);
|
|
@@ -547,7 +565,10 @@ export function Pagination({
|
|
|
547
565
|
return (
|
|
548
566
|
<span {...stylex.props(styles.infoText)}>
|
|
549
567
|
<Text type="body" size="sm" color="secondary">
|
|
550
|
-
{
|
|
568
|
+
{t('@astryx.pagination.pageOfTotal', {
|
|
569
|
+
current: optimisticPage,
|
|
570
|
+
total: computedTotalPages,
|
|
571
|
+
})}
|
|
551
572
|
</Text>
|
|
552
573
|
</span>
|
|
553
574
|
);
|
|
@@ -563,7 +584,7 @@ export function Pagination({
|
|
|
563
584
|
ref={dotsListRef}
|
|
564
585
|
{...stylex.props(styles.dotsContainer)}
|
|
565
586
|
role="group"
|
|
566
|
-
aria-label=
|
|
587
|
+
aria-label={pageIndicatorsLabel}
|
|
567
588
|
onKeyDown={handleDotsKeyDown}
|
|
568
589
|
onFocus={handleDotsFocus}>
|
|
569
590
|
{Array.from({length: computedTotalPages}, (_, i) => {
|
|
@@ -573,7 +594,9 @@ export function Pagination({
|
|
|
573
594
|
key={i + 1}
|
|
574
595
|
type="button"
|
|
575
596
|
data-page={i + 1}
|
|
576
|
-
aria-label={
|
|
597
|
+
aria-label={t('@astryx.pagination.goToPage', {
|
|
598
|
+
page: i + 1,
|
|
599
|
+
})}
|
|
577
600
|
aria-current={isActive ? 'page' : undefined}
|
|
578
601
|
// The active dot is the single roving tab stop; useListFocus
|
|
579
602
|
// maintains it as focus and the active page move.
|
|
@@ -624,7 +647,7 @@ export function Pagination({
|
|
|
624
647
|
<div {...stylex.props(styles.pageSizeSelector)}>
|
|
625
648
|
<div {...stylex.props(styles.pageSizeSelectorControl)}>
|
|
626
649
|
<Selector
|
|
627
|
-
label=
|
|
650
|
+
label={itemsPerPageLabel}
|
|
628
651
|
isLabelHidden
|
|
629
652
|
options={pageSizeOptions.map(opt => String(opt))}
|
|
630
653
|
value={String(pageSize)}
|
|
@@ -637,7 +660,7 @@ export function Pagination({
|
|
|
637
660
|
)}
|
|
638
661
|
<div {...stylex.props(styles.controls)}>
|
|
639
662
|
<Button
|
|
640
|
-
label=
|
|
663
|
+
label={previousLabel}
|
|
641
664
|
variant="ghost"
|
|
642
665
|
size={buttonSize}
|
|
643
666
|
icon={<Icon icon="chevronLeft" size={isSm ? 'sm' : 'md'} />}
|
|
@@ -649,7 +672,7 @@ export function Pagination({
|
|
|
649
672
|
{renderIndicator()}
|
|
650
673
|
|
|
651
674
|
<Button
|
|
652
|
-
label=
|
|
675
|
+
label={nextLabel}
|
|
653
676
|
variant="ghost"
|
|
654
677
|
size={buttonSize}
|
|
655
678
|
icon={<Icon icon="chevronRight" size={isSm ? 'sm' : 'md'} />}
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
shadowVars,
|
|
28
28
|
} from '../theme/tokens.stylex';
|
|
29
29
|
import {Button} from '../Button';
|
|
30
|
+
import {useTranslator} from '../i18n';
|
|
30
31
|
|
|
31
32
|
const styles = stylex.create({
|
|
32
33
|
// Default popover surface — background, radius, shadow.
|
|
@@ -309,12 +310,16 @@ export function usePopover(options: UsePopoverOptions = {}): UsePopoverReturn {
|
|
|
309
310
|
hasAutoFocus = true,
|
|
310
311
|
hasSurface = true,
|
|
311
312
|
hasCloseButton = true,
|
|
312
|
-
closeButtonLabel
|
|
313
|
+
closeButtonLabel: closeButtonLabelFromProps,
|
|
313
314
|
dialogLabel,
|
|
314
315
|
role = 'dialog',
|
|
315
316
|
isModal = true,
|
|
316
317
|
} = options;
|
|
317
318
|
|
|
319
|
+
const t = useTranslator();
|
|
320
|
+
const closeButtonLabel =
|
|
321
|
+
closeButtonLabelFromProps ?? t('@astryx.popover.close');
|
|
322
|
+
|
|
318
323
|
// Track the trigger element for returning focus
|
|
319
324
|
const triggerElementRef = useRef<HTMLElement | null>(null);
|
|
320
325
|
|
|
@@ -23,7 +23,7 @@ export const docs = {
|
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
name: 'onChange',
|
|
26
|
-
type:
|
|
26
|
+
type: "(filters: ReadonlyArray<PowerSearchFilter>, changeType: 'add' | 'edit' | 'remove', index: number) => void",
|
|
27
27
|
description:
|
|
28
28
|
"Called when filters change. changeType is 'add', 'edit', or 'remove'. index is the affected filter's position.",
|
|
29
29
|
required: true,
|
|
@@ -79,7 +79,7 @@ export const docs = {
|
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
name: 'status',
|
|
82
|
-
type: '
|
|
82
|
+
type: "{type: 'warning' | 'error' | 'success', message?: string}",
|
|
83
83
|
description:
|
|
84
84
|
'Validation status object with type and optional message.',
|
|
85
85
|
},
|
|
@@ -145,6 +145,11 @@ export const docs = {
|
|
|
145
145
|
{ guidance: false, description: 'Wrap a disabled PowerSearch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.' },
|
|
146
146
|
],
|
|
147
147
|
},
|
|
148
|
+
theming: {
|
|
149
|
+
targets: [
|
|
150
|
+
{className: 'astryx-power-search'},
|
|
151
|
+
],
|
|
152
|
+
},
|
|
148
153
|
};
|
|
149
154
|
|
|
150
155
|
// -------------------------------------------------------
|
|
@@ -172,7 +177,7 @@ export const docsZh = {
|
|
|
172
177
|
},
|
|
173
178
|
{
|
|
174
179
|
name: 'onChange',
|
|
175
|
-
type:
|
|
180
|
+
type: "(filters: ReadonlyArray<PowerSearchFilter>, changeType: 'add' | 'edit' | 'remove', index: number) => void",
|
|
176
181
|
description:
|
|
177
182
|
"当过滤器变更时调用。changeType 为 'add'、'edit' 或 'remove'。index 为受影响的过滤器位置。",
|
|
178
183
|
required: true,
|
|
@@ -227,7 +232,7 @@ export const docsZh = {
|
|
|
227
232
|
},
|
|
228
233
|
{
|
|
229
234
|
name: 'status',
|
|
230
|
-
type: '
|
|
235
|
+
type: "{type: 'warning' | 'error' | 'success', message?: string}",
|
|
231
236
|
description: '带有类型和可选消息的验证状态对象。',
|
|
232
237
|
},
|
|
233
238
|
{
|
|
@@ -52,7 +52,9 @@ import {useInternalConfig} from './useInternalConfig';
|
|
|
52
52
|
import {usePowerSearchSource} from './usePowerSearchSource';
|
|
53
53
|
import {formatFilterValue} from './formatFilterValue';
|
|
54
54
|
import {PowerSearchEditPopover} from './PowerSearchEditPopover';
|
|
55
|
+
import {resolveOperatorLabel} from './resolveOperatorLabel';
|
|
55
56
|
import {themeProps} from '../utils/themeProps';
|
|
57
|
+
import {useTranslator} from '../i18n';
|
|
56
58
|
import type {
|
|
57
59
|
PowerSearchConfig,
|
|
58
60
|
PowerSearchFilter,
|
|
@@ -513,9 +515,9 @@ export function PowerSearch({
|
|
|
513
515
|
config: configProp,
|
|
514
516
|
filters,
|
|
515
517
|
onChange,
|
|
516
|
-
label
|
|
518
|
+
label: labelFromProps,
|
|
517
519
|
isLabelHidden = true,
|
|
518
|
-
placeholder
|
|
520
|
+
placeholder: placeholderFromProps,
|
|
519
521
|
hasAutoFocus = false,
|
|
520
522
|
hasClear = true,
|
|
521
523
|
isReadOnly = false,
|
|
@@ -526,7 +528,7 @@ export function PowerSearch({
|
|
|
526
528
|
onBlur,
|
|
527
529
|
status,
|
|
528
530
|
maxTokenLength = 40,
|
|
529
|
-
popoverSaveButtonLabel
|
|
531
|
+
popoverSaveButtonLabel: popoverSaveButtonLabelFromProps,
|
|
530
532
|
timezoneID,
|
|
531
533
|
tokenOverflowBehavior,
|
|
532
534
|
endContent,
|
|
@@ -543,6 +545,12 @@ export function PowerSearch({
|
|
|
543
545
|
const size = useSize(sizeProp, 'md');
|
|
544
546
|
const config = useInternalConfig(configProp);
|
|
545
547
|
const searchSource = usePowerSearchSource(config);
|
|
548
|
+
const t = useTranslator();
|
|
549
|
+
const label = labelFromProps ?? t('@astryx.powersearch.label');
|
|
550
|
+
const placeholder =
|
|
551
|
+
placeholderFromProps ?? t('@astryx.powersearch.placeholder');
|
|
552
|
+
const popoverSaveButtonLabel =
|
|
553
|
+
popoverSaveButtonLabelFromProps ?? t('@astryx.powersearch.editor.apply');
|
|
546
554
|
const tokenizerRef = useRef<TokenizerHandle>(null);
|
|
547
555
|
|
|
548
556
|
const [popoverState, setPopoverStateRaw] = useState<PopoverState>({
|
|
@@ -598,13 +606,15 @@ export function PowerSearch({
|
|
|
598
606
|
return filters.map((filter, index) => {
|
|
599
607
|
const field = config.getField(filter.field);
|
|
600
608
|
const operator = config.getOperator(filter.field, filter.operator);
|
|
601
|
-
const
|
|
609
|
+
const resolvedOp = operator ? resolveOperatorLabel(operator, t) : '';
|
|
610
|
+
const operatorLabel = resolvedOp ? `: ${resolvedOp}` : '';
|
|
602
611
|
const valueStr = operator
|
|
603
612
|
? formatFilterValue(
|
|
604
613
|
config,
|
|
605
614
|
operator.value,
|
|
606
615
|
filter.value,
|
|
607
616
|
maxTokenLength,
|
|
617
|
+
t,
|
|
608
618
|
timezoneID,
|
|
609
619
|
)
|
|
610
620
|
: '';
|
|
@@ -624,7 +634,7 @@ export function PowerSearch({
|
|
|
624
634
|
},
|
|
625
635
|
};
|
|
626
636
|
});
|
|
627
|
-
}, [filters, config, maxTokenLength, timezoneID]);
|
|
637
|
+
}, [filters, config, maxTokenLength, timezoneID, t]);
|
|
628
638
|
|
|
629
639
|
// Handle tokenizer onChange (field selected from typeahead)
|
|
630
640
|
const handleTokenizerChange = useCallback(
|
|
@@ -787,7 +797,7 @@ export function PowerSearch({
|
|
|
787
797
|
|
|
788
798
|
// Default token rendering
|
|
789
799
|
const fieldLabel = field?.label ?? '';
|
|
790
|
-
const operatorLabel = operator
|
|
800
|
+
const operatorLabel = operator ? resolveOperatorLabel(operator, t) : '';
|
|
791
801
|
const tokenLabel = `${fieldLabel}: ${operatorLabel}`.trim();
|
|
792
802
|
const adjustedMaxLength = Math.max(
|
|
793
803
|
maxTokenLength - fieldLabel.length - operatorLabel.length,
|
|
@@ -843,6 +853,7 @@ export function PowerSearch({
|
|
|
843
853
|
isDisabled,
|
|
844
854
|
handleTokenClick,
|
|
845
855
|
componentOverrides,
|
|
856
|
+
t,
|
|
846
857
|
],
|
|
847
858
|
);
|
|
848
859
|
|
|
@@ -948,17 +959,18 @@ export function PowerSearch({
|
|
|
948
959
|
]);
|
|
949
960
|
|
|
950
961
|
// Plain-text form of the result count, shared by the visible label and the
|
|
951
|
-
// screen-reader announcement so the two never drift.
|
|
962
|
+
// screen-reader announcement so the two never drift. The ICU plural handles
|
|
963
|
+
// the number formatting + `result` vs `results` in one message so translators
|
|
964
|
+
// can match the locale's plural rules.
|
|
952
965
|
const resultCountText = useMemo((): string | null => {
|
|
953
966
|
if (resultCount == null) {
|
|
954
967
|
return null;
|
|
955
968
|
}
|
|
956
969
|
if (typeof resultCount === 'number') {
|
|
957
|
-
|
|
958
|
-
return `${formatted} ${resultCount === 1 ? 'result' : 'results'}`;
|
|
970
|
+
return t('@astryx.powersearch.resultCount', {count: resultCount});
|
|
959
971
|
}
|
|
960
972
|
return resultCount;
|
|
961
|
-
}, [resultCount]);
|
|
973
|
+
}, [resultCount, t]);
|
|
962
974
|
|
|
963
975
|
// Announce result-count changes to screen readers through a polite live
|
|
964
976
|
// region, mirroring the way Typeahead announces its dropdown result count.
|