@astryxdesign/core 0.1.6 → 0.1.7-canary.04cd8f7
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 +25 -14
- 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 +11 -1
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +36 -4
- 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/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +2 -2
- package/dist/TabList/TabList.d.ts +1 -1
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +6 -1
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +1 -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/index.d.ts +2 -0
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -0
- 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/plugins/tree/index.d.ts +5 -0
- package/dist/Table/plugins/tree/index.d.ts.map +1 -0
- package/dist/Table/plugins/tree/index.js +4 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +38 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -0
- package/dist/Table/plugins/tree/useTableTreeData.js +358 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts +51 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -0
- package/dist/Table/plugins/tree/useTableTreeState.js +175 -0
- package/dist/Table/types.d.ts +17 -10
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +6 -3
- 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/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +8 -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 +38 -4
- 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/Theme.js +1 -1
- package/dist/theme/defineTheme.d.ts +1 -1
- package/dist/theme/defineTheme.js +1 -1
- 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 +754 -0
- package/locales/pseudo.json +566 -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.doc.mjs +1 -1
- 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 +7 -0
- package/src/Collapsible/Collapsible.test.tsx +80 -0
- package/src/Collapsible/Collapsible.tsx +58 -5
- 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 +7 -1
- 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 +3 -3
- package/src/Field/FieldLabel.doc.mjs +1 -1
- 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.doc.mjs +2 -2
- 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/Selector/SelectorOption.doc.mjs +1 -1
- 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.doc.mjs +2 -2
- 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 +3 -3
- package/src/Switch/Switch.test.tsx +16 -0
- package/src/Switch/Switch.tsx +4 -2
- package/src/TabList/Tab.tsx +5 -1
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/TabList/TabList.test.tsx +66 -0
- package/src/TabList/TabList.tsx +12 -1
- package/src/TabList/TabMenu.tsx +4 -1
- package/src/Table/BaseTable.tsx +36 -19
- package/src/Table/Table.doc.mjs +2 -0
- package/src/Table/Table.test.tsx +132 -1
- package/src/Table/Table.tsx +6 -4
- package/src/Table/index.ts +7 -0
- 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/plugins/tree/index.ts +12 -0
- package/src/Table/plugins/tree/useTableTreeData-perf.test.tsx +163 -0
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +594 -0
- package/src/Table/plugins/tree/useTableTreeData.tsx +495 -0
- package/src/Table/plugins/tree/useTableTreeState.test.tsx +636 -0
- package/src/Table/plugins/tree/useTableTreeState.tsx +253 -0
- package/src/Table/types.ts +18 -12
- package/src/Table/useBaseTablePlugins.ts +6 -2
- 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/Table/useTableTreeData.doc.mjs +75 -0
- package/src/Table/useTableTreeState.doc.mjs +98 -0
- package/src/Text/Text.doc.mjs +2 -2
- package/src/TextArea/TextArea.doc.mjs +1 -1
- package/src/TextInput/TextInput.doc.mjs +1 -1
- 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/Toolbar/Toolbar.tsx +10 -3
- 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/Theme.doc.mjs +4 -4
- package/src/theme/Theme.tsx +1 -1
- package/src/theme/defineTheme.ts +1 -1
- 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
|
@@ -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.
|
|
@@ -19,8 +19,10 @@ import {Selector} from '../Selector';
|
|
|
19
19
|
import {HStack, VStack} from '../Stack';
|
|
20
20
|
import {Icon} from '../Icon';
|
|
21
21
|
import {TreeList, type TreeListItemData} from '../TreeList';
|
|
22
|
+
import {useTranslator} from '../i18n';
|
|
22
23
|
import {spacingVars, typeScaleVars} from '../theme/tokens.stylex';
|
|
23
24
|
import {PowerSearchValueEditor} from './PowerSearchValueEditor';
|
|
25
|
+
import {resolveOperatorLabel} from './resolveOperatorLabel';
|
|
24
26
|
import type {InternalConfig} from './useInternalConfig';
|
|
25
27
|
import type {
|
|
26
28
|
PowerSearchFilter,
|
|
@@ -238,6 +240,7 @@ function NestedSubFilterRow({
|
|
|
238
240
|
onChange,
|
|
239
241
|
isReadOnly,
|
|
240
242
|
}: NestedSubFilterRowProps) {
|
|
243
|
+
const t = useTranslator();
|
|
241
244
|
const fieldOptions = useMemo(
|
|
242
245
|
() =>
|
|
243
246
|
config.getVisibleFields().map(field => ({
|
|
@@ -251,9 +254,9 @@ function NestedSubFilterRow({
|
|
|
251
254
|
const operators = config.getVisibleOperators(subFilter.field);
|
|
252
255
|
return operators.map(op => ({
|
|
253
256
|
value: op.key,
|
|
254
|
-
label: op
|
|
257
|
+
label: resolveOperatorLabel(op, t),
|
|
255
258
|
}));
|
|
256
|
-
}, [config, subFilter.field]);
|
|
259
|
+
}, [config, subFilter.field, t]);
|
|
257
260
|
|
|
258
261
|
const currentOperator = subFilter.operator
|
|
259
262
|
? config.getOperator(subFilter.field, subFilter.operator)
|
|
@@ -308,7 +311,7 @@ function NestedSubFilterRow({
|
|
|
308
311
|
<HStack gap={2} vAlign="center">
|
|
309
312
|
<div {...stylex.props(styles.nestedFieldSelector)}>
|
|
310
313
|
<Selector
|
|
311
|
-
label=
|
|
314
|
+
label={t('@astryx.powersearch.editor.field')}
|
|
312
315
|
isLabelHidden
|
|
313
316
|
options={fieldOptions}
|
|
314
317
|
value={subFilter.field}
|
|
@@ -320,7 +323,7 @@ function NestedSubFilterRow({
|
|
|
320
323
|
{operatorOptions.length > 0 && (
|
|
321
324
|
<div {...stylex.props(styles.nestedOperatorSelector)}>
|
|
322
325
|
<Selector
|
|
323
|
-
label=
|
|
326
|
+
label={t('@astryx.powersearch.editor.operator')}
|
|
324
327
|
isLabelHidden
|
|
325
328
|
options={operatorOptions}
|
|
326
329
|
value={subFilter.operator}
|
|
@@ -366,6 +369,7 @@ function NestedEditor({
|
|
|
366
369
|
onPartialFilterChange,
|
|
367
370
|
isReadOnly,
|
|
368
371
|
}: NestedEditorProps) {
|
|
372
|
+
const t = useTranslator();
|
|
369
373
|
const [subFilters, setSubFilters] = useState<EditablePartialFilter[]>(() => {
|
|
370
374
|
if (partialFilter.value && partialFilter.value.type === 'nested') {
|
|
371
375
|
return partialFilter.value.value.map(f => initEditableFilter(config, f));
|
|
@@ -468,7 +472,7 @@ function NestedEditor({
|
|
|
468
472
|
id: `${itemPath.join('-')}-add`,
|
|
469
473
|
label: (
|
|
470
474
|
<Button
|
|
471
|
-
label=
|
|
475
|
+
label={t('@astryx.powersearch.editor.addFilter')}
|
|
472
476
|
onClick={() => handleAdd(itemPath)}
|
|
473
477
|
variant="ghost"
|
|
474
478
|
size="sm"
|
|
@@ -491,7 +495,7 @@ function NestedEditor({
|
|
|
491
495
|
children,
|
|
492
496
|
endContent: !isReadOnly ? (
|
|
493
497
|
<Button
|
|
494
|
-
label=
|
|
498
|
+
label={t('@astryx.powersearch.editor.removeFilter')}
|
|
495
499
|
icon={<Icon icon="close" size="sm" />}
|
|
496
500
|
variant="ghost"
|
|
497
501
|
size="sm"
|
|
@@ -515,7 +519,7 @@ function NestedEditor({
|
|
|
515
519
|
),
|
|
516
520
|
endContent: !isReadOnly ? (
|
|
517
521
|
<Button
|
|
518
|
-
label=
|
|
522
|
+
label={t('@astryx.powersearch.editor.removeFilter')}
|
|
519
523
|
icon={<Icon icon="close" size="sm" />}
|
|
520
524
|
variant="ghost"
|
|
521
525
|
size="sm"
|
|
@@ -536,7 +540,7 @@ function NestedEditor({
|
|
|
536
540
|
id: 'add-filter',
|
|
537
541
|
label: (
|
|
538
542
|
<Button
|
|
539
|
-
label=
|
|
543
|
+
label={t('@astryx.powersearch.editor.addFilter')}
|
|
540
544
|
onClick={() => handleAdd([])}
|
|
541
545
|
variant="ghost"
|
|
542
546
|
size="sm"
|
|
@@ -550,7 +554,7 @@ function NestedEditor({
|
|
|
550
554
|
{operatorOptions.length > 1 ? (
|
|
551
555
|
<div {...stylex.props(styles.operatorSelector)}>
|
|
552
556
|
<Selector
|
|
553
|
-
label=
|
|
557
|
+
label={t('@astryx.powersearch.editor.groupOperator')}
|
|
554
558
|
isLabelHidden
|
|
555
559
|
options={operatorOptions}
|
|
556
560
|
value={partialFilter.operator}
|
|
@@ -560,7 +564,7 @@ function NestedEditor({
|
|
|
560
564
|
/>
|
|
561
565
|
</div>
|
|
562
566
|
) : (
|
|
563
|
-
(operatorOptions[0]?.label ?? '
|
|
567
|
+
(operatorOptions[0]?.label ?? t('@astryx.powersearch.editor.group'))
|
|
564
568
|
)}
|
|
565
569
|
</div>
|
|
566
570
|
);
|
|
@@ -587,9 +591,12 @@ export function PowerSearchEditPopover({
|
|
|
587
591
|
mode,
|
|
588
592
|
onSave,
|
|
589
593
|
onCancel,
|
|
590
|
-
saveButtonLabel
|
|
594
|
+
saveButtonLabel: saveButtonLabelFromProps,
|
|
591
595
|
isReadOnly = false,
|
|
592
596
|
}: PowerSearchEditPopoverProps) {
|
|
597
|
+
const t = useTranslator();
|
|
598
|
+
const saveButtonLabel =
|
|
599
|
+
saveButtonLabelFromProps ?? t('@astryx.powersearch.editor.apply');
|
|
593
600
|
const [partialFilter, setPartialFilter] =
|
|
594
601
|
useState<PartialFilter>(initialFilter);
|
|
595
602
|
const valueEditorRef = useRef<HTMLDivElement>(null);
|
|
@@ -628,9 +635,9 @@ export function PowerSearchEditPopover({
|
|
|
628
635
|
const operators = config.getVisibleOperators(partialFilter.field);
|
|
629
636
|
return operators.map(op => ({
|
|
630
637
|
value: op.key,
|
|
631
|
-
label: op
|
|
638
|
+
label: resolveOperatorLabel(op, t),
|
|
632
639
|
}));
|
|
633
|
-
}, [config, partialFilter.field]);
|
|
640
|
+
}, [config, partialFilter.field, t]);
|
|
634
641
|
|
|
635
642
|
const handleFieldChange = useCallback(
|
|
636
643
|
(fieldKey: string) => {
|
|
@@ -732,7 +739,7 @@ export function PowerSearchEditPopover({
|
|
|
732
739
|
<HStack gap={2}>
|
|
733
740
|
<div {...stylex.props(styles.fieldSelector)}>
|
|
734
741
|
<Selector
|
|
735
|
-
label=
|
|
742
|
+
label={t('@astryx.powersearch.editor.field')}
|
|
736
743
|
isLabelHidden
|
|
737
744
|
options={fieldOptions}
|
|
738
745
|
value={partialFilter.field}
|
|
@@ -756,7 +763,7 @@ export function PowerSearchEditPopover({
|
|
|
756
763
|
<HStack gap={2} hAlign="between">
|
|
757
764
|
{!isReadOnly && mode === 'edit' ? (
|
|
758
765
|
<Button
|
|
759
|
-
label=
|
|
766
|
+
label={t('@astryx.powersearch.editor.delete')}
|
|
760
767
|
onClick={handleDelete}
|
|
761
768
|
variant="ghost"
|
|
762
769
|
size="sm"
|
|
@@ -766,7 +773,7 @@ export function PowerSearchEditPopover({
|
|
|
766
773
|
)}
|
|
767
774
|
<HStack gap={2}>
|
|
768
775
|
<Button
|
|
769
|
-
label=
|
|
776
|
+
label={t('@astryx.powersearch.editor.cancel')}
|
|
770
777
|
onClick={onCancel}
|
|
771
778
|
variant="ghost"
|
|
772
779
|
size="sm"
|
|
@@ -791,7 +798,7 @@ export function PowerSearchEditPopover({
|
|
|
791
798
|
<HStack gap={2}>
|
|
792
799
|
<div {...stylex.props(styles.fieldSelector)}>
|
|
793
800
|
<Selector
|
|
794
|
-
label=
|
|
801
|
+
label={t('@astryx.powersearch.editor.field')}
|
|
795
802
|
isLabelHidden
|
|
796
803
|
options={fieldOptions}
|
|
797
804
|
value={partialFilter.field}
|
|
@@ -803,7 +810,7 @@ export function PowerSearchEditPopover({
|
|
|
803
810
|
{showOperatorSelector && operatorOptions.length > 0 && (
|
|
804
811
|
<div {...stylex.props(styles.operatorSelector)}>
|
|
805
812
|
<Selector
|
|
806
|
-
label=
|
|
813
|
+
label={t('@astryx.powersearch.editor.operator')}
|
|
807
814
|
isLabelHidden
|
|
808
815
|
options={operatorOptions}
|
|
809
816
|
value={partialFilter.operator}
|
|
@@ -832,7 +839,7 @@ export function PowerSearchEditPopover({
|
|
|
832
839
|
<HStack gap={2} hAlign="between">
|
|
833
840
|
{!isReadOnly && mode === 'edit' ? (
|
|
834
841
|
<Button
|
|
835
|
-
label=
|
|
842
|
+
label={t('@astryx.powersearch.editor.delete')}
|
|
836
843
|
onClick={handleDelete}
|
|
837
844
|
variant="ghost"
|
|
838
845
|
size="sm"
|
|
@@ -842,7 +849,7 @@ export function PowerSearchEditPopover({
|
|
|
842
849
|
)}
|
|
843
850
|
<HStack gap={2}>
|
|
844
851
|
<Button
|
|
845
|
-
label=
|
|
852
|
+
label={t('@astryx.powersearch.editor.cancel')}
|
|
846
853
|
onClick={onCancel}
|
|
847
854
|
variant="ghost"
|
|
848
855
|
size="sm"
|
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
import React from 'react';
|
|
13
13
|
import * as stylex from '@stylexjs/stylex';
|
|
14
14
|
import {Token} from '../Token';
|
|
15
|
+
import {useTranslator} from '../i18n';
|
|
15
16
|
import {fontWeightVars} from '../theme/tokens.stylex';
|
|
16
17
|
import {formatFilterValue} from './formatFilterValue';
|
|
18
|
+
import {resolveOperatorLabel} from './resolveOperatorLabel';
|
|
17
19
|
import {useInternalConfig} from './useInternalConfig';
|
|
18
20
|
import type {PowerSearchTokenProps} from './types';
|
|
19
21
|
|
|
@@ -41,13 +43,17 @@ export function PowerSearchToken({
|
|
|
41
43
|
isDisabled,
|
|
42
44
|
}: PowerSearchTokenProps) {
|
|
43
45
|
const config = useInternalConfig(configProp);
|
|
46
|
+
const t = useTranslator();
|
|
44
47
|
|
|
45
48
|
const fieldLabel = field.label;
|
|
46
|
-
const
|
|
49
|
+
const resolvedOperatorLabel = resolveOperatorLabel(operator, t);
|
|
50
|
+
const operatorLabel = resolvedOperatorLabel
|
|
51
|
+
? `: ${resolvedOperatorLabel}`
|
|
52
|
+
: '';
|
|
47
53
|
const tokenLabel = `${fieldLabel}${operatorLabel}`;
|
|
48
54
|
|
|
49
55
|
const adjustedMaxLength = Math.max(
|
|
50
|
-
maxLength - fieldLabel.length -
|
|
56
|
+
maxLength - fieldLabel.length - resolvedOperatorLabel.length,
|
|
51
57
|
10,
|
|
52
58
|
);
|
|
53
59
|
|
|
@@ -56,6 +62,7 @@ export function PowerSearchToken({
|
|
|
56
62
|
operator.value,
|
|
57
63
|
filter.value,
|
|
58
64
|
adjustedMaxLength,
|
|
65
|
+
t,
|
|
59
66
|
);
|
|
60
67
|
|
|
61
68
|
const valueContent = valueStr ? (
|
|
@@ -66,10 +73,14 @@ export function PowerSearchToken({
|
|
|
66
73
|
<Token
|
|
67
74
|
label={tokenLabel}
|
|
68
75
|
endContent={valueContent}
|
|
69
|
-
onClick={
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
onClick={
|
|
77
|
+
onClick
|
|
78
|
+
? (e: React.MouseEvent) => {
|
|
79
|
+
e.stopPropagation();
|
|
80
|
+
onClick();
|
|
81
|
+
}
|
|
82
|
+
: undefined
|
|
83
|
+
}
|
|
73
84
|
onRemove={onRemove}
|
|
74
85
|
isDisabled={isDisabled}
|
|
75
86
|
/>
|