@astryxdesign/core 0.1.8 → 0.1.9-canary.02ef052
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 +100 -0
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +6 -2
- package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
- package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts +58 -3
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +240 -53
- package/dist/Avatar/AvatarStatusDot.d.ts +35 -5
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +144 -19
- package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +58 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -0
- package/dist/Banner/Banner.d.ts +9 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +33 -4
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +215 -6
- package/dist/Breadcrumbs/index.d.ts +6 -0
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +10 -1
- package/dist/Button/Button.d.ts +8 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +33 -4
- package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +30 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +80 -11
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +3 -3
- package/dist/Calendar/styles.d.ts +30 -31
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +30 -31
- package/dist/Card/Card.d.ts +8 -2
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +28 -2
- package/dist/Carousel/Carousel.d.ts +4 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +46 -16
- package/dist/Chat/ChatComposer.d.ts +8 -0
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +46 -7
- package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +11 -1
- package/dist/Chat/ChatComposerInput.d.ts +20 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +36 -4
- package/dist/Chat/ChatContext.d.ts +33 -0
- package/dist/Chat/ChatContext.d.ts.map +1 -1
- package/dist/Chat/ChatContext.js +16 -2
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +4 -2
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +4 -4
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +4 -4
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +7 -1
- package/dist/Chat/ChatToolCalls.d.ts +5 -1
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +27 -11
- package/dist/Chat/index.d.ts +2 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts +2 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +22 -8
- package/dist/Chat/useSpeechRecognition.d.ts +0 -1
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +2 -2
- package/dist/CheckboxInput/CheckboxInput.js +5 -5
- package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +11 -1
- package/dist/Citation/Citation.d.ts +22 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +20 -6
- package/dist/ClickableCard/ClickableCard.d.ts +9 -2
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +5 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +22 -9
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +3 -1
- package/dist/CommandPalette/CommandPalette.d.ts +2 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +45 -4
- package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +6 -1
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +14 -5
- package/dist/ContextMenu/index.d.ts +1 -0
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +3 -1
- package/dist/DateInput/DateInput.d.ts +56 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +59 -21
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +23 -20
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +33 -19
- package/dist/Dialog/Dialog.d.ts +3 -0
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +57 -6
- package/dist/Dialog/DialogContext.d.ts +7 -0
- package/dist/Dialog/DialogContext.d.ts.map +1 -1
- package/dist/Dialog/DialogContext.js +2 -2
- package/dist/Dialog/DialogHeader.d.ts +5 -2
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +6 -1
- package/dist/Divider/Divider.js +1 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +22 -5
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +5 -3
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
- package/dist/DropdownMenu/index.d.ts +10 -0
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +13 -0
- package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemHover.js +33 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemRoles.js +10 -1
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +21 -6
- package/dist/Field/Field.d.ts +3 -1
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +6 -4
- package/dist/Field/FieldLabel.d.ts +1 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +43 -16
- package/dist/Field/inputStyles.stylex.d.ts +1 -0
- package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
- package/dist/Field/inputStyles.stylex.js +1 -0
- package/dist/FieldStatus/FieldStatus.d.ts +18 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +60 -6
- package/dist/FileInput/FileInput.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +54 -35
- package/dist/HoverCard/HoverCard.d.ts +9 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +2 -0
- package/dist/HoverCard/useHoverCard.d.ts +8 -0
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +17 -6
- package/dist/Icon/Icon.d.ts +22 -3
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +19 -3
- package/dist/Item/Item.d.ts +6 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +22 -1
- package/dist/Layer/useLayer.d.ts +6 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +2 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +19 -13
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +6 -1
- package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/MobileNav/MobileNavToggle.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts +9 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +104 -50
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +16 -0
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +10 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +22 -17
- package/dist/Outline/Outline.d.ts +0 -1
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +0 -1
- package/dist/OverflowList/OverflowList.d.ts +20 -3
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +29 -4
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +11 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +3 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +3 -9
- package/dist/PowerSearch/PowerSearch.d.ts +9 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +2 -0
- package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/RadioList/RadioList.d.ts +2 -2
- package/dist/RadioList/RadioListItem.js +4 -4
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -1
- package/dist/SelectableCard/SelectableCard.d.ts +9 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +16 -13
- package/dist/Selector/Selector.d.ts +8 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +65 -19
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +16 -0
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +5 -5
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +13 -10
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +21 -8
- package/dist/SideNav/SideNavItem.d.ts +1 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +12 -10
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +106 -36
- package/dist/Stack/stack.stylex.d.ts +9 -9
- package/dist/Switch/Switch.d.ts +8 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +160 -91
- package/dist/TabList/Tab.js +2 -2
- package/dist/TabList/TabMenu.js +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +33 -6
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableHeaderCell.js +3 -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/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +36 -26
- package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
- package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/index.js +3 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +7 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +105 -12
- package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
- package/dist/Table/types.d.ts +32 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -3
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +18 -19
- package/dist/TextInput/TextInput.d.ts +10 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +20 -17
- package/dist/Thumbnail/Thumbnail.d.ts +26 -5
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +97 -54
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +32 -21
- package/dist/Timestamp/Timestamp.d.ts +3 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +8 -6
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +2 -5
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Token/Token.d.ts +30 -3
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +17 -2
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts +10 -3
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -6
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +18 -8
- package/dist/TopNav/TopNavMegaMenu.js +10 -4
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
- package/dist/TopNav/TopNavMenu.d.ts +2 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +68 -6
- package/dist/TreeList/TreeList.d.ts +12 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +3 -0
- package/dist/TreeList/TreeListBranches.d.ts +5 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +18 -10
- package/dist/TreeList/TreeListItem.d.ts +8 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +59 -21
- package/dist/TreeList/TreeListTypes.d.ts +25 -1
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +2 -2
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +20 -11
- package/dist/Typeahead/Typeahead.d.ts +9 -2
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +3 -1
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +20 -10
- package/dist/astryx.css +61 -39
- package/dist/astryx.umd.js +53 -53
- package/dist/astryx.umd.js.map +4 -4
- package/dist/authoring/doc.d.ts.map +1 -1
- package/dist/docs-types.d.ts +8 -0
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/computeOverflow.d.ts +47 -0
- package/dist/hooks/computeOverflow.d.ts.map +1 -0
- package/dist/hooks/computeOverflow.js +213 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/isRtlElement.d.ts +18 -0
- package/dist/hooks/isRtlElement.d.ts.map +1 -0
- package/dist/hooks/isRtlElement.js +27 -0
- package/dist/hooks/useDevWarning.d.ts +18 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -0
- package/dist/hooks/useDevWarning.js +49 -0
- package/dist/hooks/useGridFocus.d.ts +6 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +12 -9
- package/dist/hooks/useInputStatusIcon.d.ts +38 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
- package/dist/hooks/useInputStatusIcon.js +158 -0
- package/dist/hooks/useListFocus.d.ts +39 -1
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +54 -9
- package/dist/hooks/useOverflow.d.ts +19 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +36 -25
- package/dist/i18n/InternationalizationContext.d.ts +1 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -0
- package/dist/i18n/InternationalizationProvider.d.ts +8 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +5 -1
- package/dist/i18n/getLocaleDirection.d.ts +18 -0
- package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
- package/dist/i18n/getLocaleDirection.js +29 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +7 -1
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +7 -18
- package/dist/i18n/useDirection.d.ts +2 -0
- package/dist/i18n/useDirection.d.ts.map +1 -0
- package/dist/i18n/useDirection.js +27 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +51 -0
- package/dist/theme/hct.d.ts +0 -1
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
- package/dist/utils/devWarning.d.ts +42 -0
- package/dist/utils/devWarning.d.ts.map +1 -0
- package/dist/utils/devWarning.js +88 -0
- package/dist/utils/index.d.ts +4 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -2
- package/dist/utils/plainDate.d.ts +30 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +65 -3
- package/dist/utils/rtlStyles.d.ts +24 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +27 -0
- package/dist/utils/types.d.ts +13 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/locales/en.json +104 -0
- package/locales/fr-FR.json +14 -0
- package/locales/pseudo.json +78 -0
- package/package.json +6 -1
- package/src/AppShell/AppShell.tsx +6 -0
- package/src/AppShell/AppShellMobileContext.tsx +8 -0
- package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
- package/src/Avatar/Avatar.doc.mjs +64 -5
- package/src/Avatar/Avatar.test.tsx +374 -1
- package/src/Avatar/Avatar.tsx +367 -69
- package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
- package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
- package/src/Avatar/AvatarStatusDot.tsx +180 -21
- package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
- package/src/AvatarGroup/AvatarGroup.test.tsx +141 -1
- package/src/AvatarGroup/AvatarGroup.tsx +58 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -0
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +30 -0
- package/src/Banner/Banner.tsx +53 -9
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
- package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +335 -2
- package/src/Breadcrumbs/index.ts +31 -0
- package/src/Button/Button.doc.mjs +9 -4
- package/src/Button/Button.test.tsx +49 -0
- package/src/Button/Button.tsx +27 -3
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
- package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
- package/src/ButtonGroup/ButtonGroup.tsx +32 -0
- package/src/Calendar/Calendar.doc.mjs +12 -1
- package/src/Calendar/Calendar.test.tsx +362 -19
- package/src/Calendar/Calendar.tsx +111 -32
- package/src/Calendar/dayCellUtils.test.ts +23 -18
- package/src/Calendar/dayCellUtils.ts +3 -3
- package/src/Calendar/styles.ts +33 -39
- package/src/Card/Card.doc.mjs +9 -0
- package/src/Card/Card.test.tsx +21 -3
- package/src/Card/Card.tsx +35 -2
- package/src/Carousel/Carousel.doc.mjs +1 -0
- package/src/Carousel/Carousel.test.tsx +53 -0
- package/src/Carousel/Carousel.tsx +59 -10
- package/src/Chat/ChatComposer.doc.mjs +12 -3
- package/src/Chat/ChatComposer.test.tsx +115 -0
- package/src/Chat/ChatComposer.tsx +73 -9
- package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
- package/src/Chat/ChatComposerDrawer.tsx +11 -1
- package/src/Chat/ChatComposerInput.doc.mjs +7 -0
- package/src/Chat/ChatComposerInput.test.tsx +103 -0
- package/src/Chat/ChatComposerInput.tsx +51 -5
- package/src/Chat/ChatContext.tsx +37 -10
- package/src/Chat/ChatDictationButton.tsx +11 -2
- package/src/Chat/ChatLayout.tsx +7 -5
- package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
- package/src/Chat/ChatMessageMetadata.tsx +1 -2
- package/src/Chat/ChatSendButton.tsx +11 -1
- package/src/Chat/ChatToolCalls.test.tsx +64 -0
- package/src/Chat/ChatToolCalls.tsx +33 -5
- package/src/Chat/index.ts +5 -1
- package/src/Chat/useChatStreamScroll.test.tsx +49 -0
- package/src/Chat/useChatStreamScroll.ts +27 -10
- package/src/Chat/useSpeechRecognition.ts +1 -1
- package/src/Chat/useTriggerMenu.tsx +4 -2
- package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
- package/src/CheckboxInput/CheckboxInput.tsx +5 -5
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
- package/src/CheckboxList/CheckboxList.test.tsx +81 -3
- package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
- package/src/CheckboxList/CheckboxListItem.tsx +41 -5
- package/src/Citation/Citation.doc.mjs +4 -3
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +43 -11
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
- package/src/ClickableCard/ClickableCard.test.tsx +34 -0
- package/src/ClickableCard/ClickableCard.tsx +13 -3
- package/src/CodeBlock/CodeBlock.test.tsx +56 -0
- package/src/CodeBlock/CodeBlock.tsx +45 -10
- package/src/Collapsible/Collapsible.doc.mjs +1 -0
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +16 -6
- package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
- package/src/CommandPalette/CommandPalette.test.tsx +95 -1
- package/src/CommandPalette/CommandPalette.tsx +44 -3
- package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
- package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
- package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +235 -0
- package/src/ContextMenu/ContextMenu.tsx +13 -11
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +41 -0
- package/src/DateInput/DateInput.test.tsx +338 -0
- package/src/DateInput/DateInput.tsx +119 -32
- package/src/DateInput/index.ts +1 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +42 -30
- package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
- package/src/DateTimeInput/DateTimeInput.test.tsx +147 -0
- package/src/DateTimeInput/DateTimeInput.tsx +58 -41
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.test.tsx +77 -4
- package/src/Dialog/Dialog.tsx +89 -5
- package/src/Dialog/DialogContext.ts +9 -2
- package/src/Dialog/DialogHeader.doc.mjs +2 -2
- package/src/Dialog/DialogHeader.tsx +9 -2
- package/src/Divider/Divider.tsx +2 -2
- package/src/DropdownMenu/DropdownMenu.test.tsx +229 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -12
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +9 -4
- package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
- package/src/DropdownMenu/index.ts +16 -0
- package/src/DropdownMenu/menuItemHover.ts +39 -0
- package/src/DropdownMenu/menuItemRoles.ts +9 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
- package/src/Field/Field.test.tsx +57 -12
- package/src/Field/Field.tsx +20 -14
- package/src/Field/FieldLabel.tsx +9 -1
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
- package/src/FieldStatus/FieldStatus.test.tsx +150 -40
- package/src/FieldStatus/FieldStatus.tsx +69 -5
- package/src/FileInput/FileInput.doc.mjs +23 -2
- package/src/FileInput/FileInput.test.tsx +135 -12
- package/src/FileInput/FileInput.tsx +65 -51
- package/src/HoverCard/HoverCard.doc.mjs +13 -0
- package/src/HoverCard/HoverCard.test.tsx +21 -2
- package/src/HoverCard/HoverCard.tsx +11 -0
- package/src/HoverCard/useHoverCard.doc.mjs +2 -0
- package/src/HoverCard/useHoverCard.tsx +39 -5
- package/src/Icon/Icon.doc.mjs +16 -2
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +58 -5
- package/src/IconButton/IconButton.doc.mjs +8 -0
- package/src/IconButton/IconButton.test.tsx +15 -18
- package/src/Item/Item.test.tsx +40 -18
- package/src/Item/Item.tsx +38 -2
- package/src/Layer/useLayer.tsx +8 -0
- package/src/Lightbox/Lightbox.tsx +15 -7
- package/src/List/List.test.tsx +9 -8
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/MobileNav/MobileNav.tsx +12 -1
- package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
- package/src/MobileNav/MobileNavToggle.tsx +9 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +24 -2
- package/src/MultiSelector/MultiSelector.test.tsx +498 -3
- package/src/MultiSelector/MultiSelector.tsx +149 -65
- package/src/MultiSelector/hooks.ts +17 -0
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +21 -0
- package/src/NumberInput/NumberInput.test.tsx +82 -7
- package/src/NumberInput/NumberInput.tsx +36 -28
- package/src/Outline/Outline.tsx +0 -1
- package/src/OverflowList/OverflowList.doc.mjs +39 -6
- package/src/OverflowList/OverflowList.test.tsx +111 -0
- package/src/OverflowList/OverflowList.tsx +48 -8
- package/src/Pagination/Pagination.tsx +11 -3
- package/src/Popover/Popover.tsx +7 -4
- package/src/Popover/usePopover.tsx +9 -13
- package/src/PowerSearch/PowerSearch.doc.mjs +29 -0
- package/src/PowerSearch/PowerSearch.test.tsx +43 -0
- package/src/PowerSearch/PowerSearch.tsx +10 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
- package/src/PowerSearch/usePowerSearchSource.ts +1 -2
- package/src/RadioList/RadioList.doc.mjs +6 -0
- package/src/RadioList/RadioList.tsx +2 -2
- package/src/RadioList/RadioListItem.tsx +4 -4
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -0
- package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
- package/src/SelectableCard/SelectableCard.test.tsx +46 -4
- package/src/SelectableCard/SelectableCard.tsx +29 -16
- package/src/Selector/Selector.doc.mjs +15 -0
- package/src/Selector/Selector.test.tsx +417 -0
- package/src/Selector/Selector.tsx +86 -21
- package/src/Selector/hooks.ts +17 -0
- package/src/SideNav/SideNav.test.tsx +119 -3
- package/src/SideNav/SideNav.tsx +1 -8
- package/src/SideNav/SideNavCollapseButton.tsx +15 -8
- package/src/SideNav/SideNavHeading.tsx +24 -8
- package/src/SideNav/SideNavItem.tsx +10 -4
- package/src/Slider/Slider.doc.mjs +6 -0
- package/src/Slider/Slider.test.tsx +314 -13
- package/src/Slider/Slider.tsx +117 -28
- package/src/Switch/Switch.doc.mjs +142 -42
- package/src/Switch/Switch.test.tsx +54 -1
- package/src/Switch/Switch.tsx +90 -33
- package/src/TabList/Tab.tsx +2 -2
- package/src/TabList/TabMenu.tsx +2 -2
- package/src/Table/BaseTable.tsx +37 -7
- package/src/Table/Table.doc.mjs +11 -0
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/TableCell.tsx +3 -3
- package/src/Table/TableHeaderCell.tsx +3 -3
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +15 -8
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -17
- package/src/Table/plugins/rowStatus/index.ts +7 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
- package/src/Table/plugins/selection/useTableSelection.test.tsx +77 -3
- package/src/Table/plugins/selection/useTableSelection.tsx +22 -1
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -1
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
- package/src/Table/plugins/tree/useTableTreeData.tsx +139 -8
- package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
- package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
- package/src/Table/types.ts +33 -0
- package/src/Table/useBaseTablePlugins.ts +10 -6
- package/src/Table/useTableRowStatus.doc.mjs +30 -0
- package/src/Table/useTableSelection.doc.mjs +65 -14
- package/src/Table/useTableTreeData.doc.mjs +29 -0
- package/src/Table/useTableTreeState.doc.mjs +2 -2
- package/src/TextArea/TextArea.doc.mjs +21 -0
- package/src/TextArea/TextArea.test.tsx +32 -1
- package/src/TextArea/TextArea.tsx +27 -26
- package/src/TextInput/TextInput.doc.mjs +21 -0
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +28 -25
- package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
- package/src/Thumbnail/Thumbnail.test.tsx +98 -7
- package/src/Thumbnail/Thumbnail.tsx +142 -42
- package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
- package/src/TimeInput/TimeInput.doc.mjs +21 -0
- package/src/TimeInput/TimeInput.test.tsx +99 -1
- package/src/TimeInput/TimeInput.tsx +43 -31
- package/src/Timestamp/Timestamp.doc.mjs +4 -4
- package/src/Timestamp/Timestamp.test.tsx +32 -0
- package/src/Timestamp/Timestamp.tsx +28 -8
- package/src/Toast/useToast.tsx +7 -8
- package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
- package/src/Token/Token.test.tsx +21 -15
- package/src/Token/Token.tsx +31 -14
- package/src/Token/index.ts +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +38 -2
- package/src/Tokenizer/Tokenizer.test.tsx +206 -2
- package/src/Tokenizer/Tokenizer.tsx +30 -6
- package/src/Tooltip/Tooltip.test.tsx +46 -0
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.test.tsx +125 -1
- package/src/TopNav/TopNavHeading.tsx +24 -8
- package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
- package/src/TopNav/TopNavMegaMenu.tsx +10 -4
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
- package/src/TopNav/TopNavMenu.test.tsx +118 -4
- package/src/TopNav/TopNavMenu.tsx +83 -5
- package/src/TreeList/TreeList.doc.mjs +28 -0
- package/src/TreeList/TreeList.test.tsx +272 -0
- package/src/TreeList/TreeList.tsx +23 -2
- package/src/TreeList/TreeListBranches.tsx +24 -8
- package/src/TreeList/TreeListItem.tsx +84 -22
- package/src/TreeList/TreeListTypes.ts +27 -1
- package/src/TreeList/index.ts +2 -2
- package/src/Typeahead/BaseTypeahead.tsx +30 -15
- package/src/Typeahead/Typeahead.doc.mjs +13 -0
- package/src/Typeahead/Typeahead.test.tsx +50 -0
- package/src/Typeahead/Typeahead.tsx +11 -1
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/__tests__/inputWidthContract.test.tsx +62 -0
- package/src/authoring/doc.ts +1 -3
- package/src/doc-mjs.d.ts +19 -0
- package/src/docs-types.ts +5 -0
- package/src/hooks/computeOverflow.test.ts +422 -0
- package/src/hooks/computeOverflow.ts +290 -0
- package/src/hooks/index.ts +8 -0
- package/src/hooks/isRtlElement.ts +27 -0
- package/src/hooks/useDevWarning.test.tsx +45 -0
- package/src/hooks/useDevWarning.ts +54 -0
- package/src/hooks/useGridFocus.doc.mjs +3 -3
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useInputStatusIcon.test.tsx +162 -0
- package/src/hooks/useInputStatusIcon.tsx +224 -0
- package/src/hooks/useListFocus.doc.mjs +25 -3
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- package/src/hooks/useOverflow.test.ts +96 -4
- package/src/hooks/useOverflow.ts +74 -33
- package/src/i18n/InternationalizationContext.ts +4 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
- package/src/i18n/InternationalizationProvider.tsx +12 -2
- package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
- package/src/i18n/__tests__/useDirection.test.tsx +66 -0
- package/src/i18n/getLocaleDirection.ts +29 -0
- package/src/i18n/index.ts +6 -0
- package/src/i18n/resolve.ts +9 -21
- package/src/i18n/useDirection.ts +29 -0
- package/src/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- package/src/theme/Theme.tsx +11 -14
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/generateThemeRules.test.ts +107 -0
- package/src/theme/generateThemeRules.ts +56 -0
- package/src/theme/hct.ts +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
- package/src/utils/devWarning.test.ts +56 -0
- package/src/utils/devWarning.ts +102 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/plainDate.test.ts +46 -6
- package/src/utils/plainDate.ts +69 -3
- package/src/utils/rtlStyles.ts +27 -0
- package/src/utils/types.ts +14 -0
package/src/Slider/Slider.tsx
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Slider.tsx
|
|
7
|
-
* @input Uses React, useId, useRef, useCallback, Field, Tooltip, useTooltip
|
|
7
|
+
* @input Uses React, useId, useRef, useCallback, Field, Tooltip, useTooltip, VisuallyHidden
|
|
8
8
|
* @output Exports Slider component, SliderProps, SliderSingleProps, SliderRangeProps, SliderBaseProps
|
|
9
9
|
* @position Core implementation; consumed by index.ts, tested by Slider.test.tsx
|
|
10
10
|
*
|
|
@@ -38,8 +38,10 @@ import {
|
|
|
38
38
|
import {Field} from '../Field/Field';
|
|
39
39
|
import {Tooltip} from '../Tooltip/Tooltip';
|
|
40
40
|
import {useTooltip} from '../Tooltip';
|
|
41
|
+
import {VisuallyHidden} from '../VisuallyHidden';
|
|
41
42
|
import type {InputStatus} from '../Field/types';
|
|
42
43
|
import {mergeProps, mergeRefs} from '../utils';
|
|
44
|
+
import {isRtlElement} from '../hooks/isRtlElement';
|
|
43
45
|
import type {BaseProps} from '../BaseProps';
|
|
44
46
|
import type {SizeValue} from '../utils/types';
|
|
45
47
|
import {themeProps} from '../utils/themeProps';
|
|
@@ -191,8 +193,8 @@ const styles = stylex.create({
|
|
|
191
193
|
borderRadius: radiusVars['--radius-full'],
|
|
192
194
|
},
|
|
193
195
|
trackHorizontal: {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
insetInlineStart: 0,
|
|
197
|
+
insetInlineEnd: 0,
|
|
196
198
|
height: TRACK_SIZE,
|
|
197
199
|
top: '50%',
|
|
198
200
|
transform: 'translateY(-50%)',
|
|
@@ -201,7 +203,7 @@ const styles = stylex.create({
|
|
|
201
203
|
top: 0,
|
|
202
204
|
bottom: 0,
|
|
203
205
|
width: TRACK_SIZE,
|
|
204
|
-
|
|
206
|
+
insetInlineStart: '50%',
|
|
205
207
|
transform: 'translateX(-50%)',
|
|
206
208
|
},
|
|
207
209
|
filledTrack: {
|
|
@@ -216,7 +218,7 @@ const styles = stylex.create({
|
|
|
216
218
|
},
|
|
217
219
|
filledTrackVertical: {
|
|
218
220
|
width: TRACK_SIZE,
|
|
219
|
-
|
|
221
|
+
insetInlineStart: '50%',
|
|
220
222
|
transform: 'translateX(-50%)',
|
|
221
223
|
},
|
|
222
224
|
thumb: {
|
|
@@ -238,9 +240,17 @@ const styles = stylex.create({
|
|
|
238
240
|
},
|
|
239
241
|
thumbHorizontal: {
|
|
240
242
|
top: '50%',
|
|
243
|
+
// The thumb is positioned via logical `insetInlineStart`, which resolves
|
|
244
|
+
// from the right edge under RTL. The centering translate is a physical
|
|
245
|
+
// (screen-space) transform, so it must flip its X direction under RTL to
|
|
246
|
+
// keep the thumb centered on the value point.
|
|
247
|
+
transform: {
|
|
248
|
+
default: 'translate(-50%, -50%)',
|
|
249
|
+
':is([dir="rtl"] *)': 'translate(50%, -50%)',
|
|
250
|
+
},
|
|
241
251
|
},
|
|
242
252
|
thumbVertical: {
|
|
243
|
-
|
|
253
|
+
insetInlineStart: '50%',
|
|
244
254
|
transform: 'translate(-50%, 50%)',
|
|
245
255
|
},
|
|
246
256
|
thumbHover: {
|
|
@@ -276,14 +286,14 @@ const styles = stylex.create({
|
|
|
276
286
|
position: 'absolute',
|
|
277
287
|
},
|
|
278
288
|
marksContainerHorizontal: {
|
|
279
|
-
|
|
280
|
-
|
|
289
|
+
insetInlineStart: 0,
|
|
290
|
+
insetInlineEnd: 0,
|
|
281
291
|
top: '50%',
|
|
282
292
|
},
|
|
283
293
|
marksContainerVertical: {
|
|
284
294
|
top: 0,
|
|
285
295
|
bottom: 0,
|
|
286
|
-
|
|
296
|
+
insetInlineStart: '50%',
|
|
287
297
|
},
|
|
288
298
|
mark: {
|
|
289
299
|
position: 'absolute',
|
|
@@ -293,7 +303,10 @@ const styles = stylex.create({
|
|
|
293
303
|
markHorizontal: {
|
|
294
304
|
width: 2,
|
|
295
305
|
height: 8,
|
|
296
|
-
transform:
|
|
306
|
+
transform: {
|
|
307
|
+
default: 'translate(-50%, -50%)',
|
|
308
|
+
':is([dir="rtl"] *)': 'translate(50%, -50%)',
|
|
309
|
+
},
|
|
297
310
|
},
|
|
298
311
|
markVertical: {
|
|
299
312
|
height: 2,
|
|
@@ -308,12 +321,15 @@ const styles = stylex.create({
|
|
|
308
321
|
whiteSpace: 'nowrap',
|
|
309
322
|
},
|
|
310
323
|
markLabelHorizontal: {
|
|
311
|
-
transform:
|
|
324
|
+
transform: {
|
|
325
|
+
default: 'translateX(-50%)',
|
|
326
|
+
':is([dir="rtl"] *)': 'translateX(50%)',
|
|
327
|
+
},
|
|
312
328
|
top: THUMB_SIZE / 2 + 4,
|
|
313
329
|
},
|
|
314
330
|
markLabelVertical: {
|
|
315
331
|
transform: 'translateY(50%)',
|
|
316
|
-
|
|
332
|
+
insetInlineStart: THUMB_SIZE / 2 + 4,
|
|
317
333
|
},
|
|
318
334
|
});
|
|
319
335
|
|
|
@@ -325,12 +341,39 @@ function clamp(val: number, min: number, max: number): number {
|
|
|
325
341
|
return Math.min(Math.max(val, min), max);
|
|
326
342
|
}
|
|
327
343
|
|
|
344
|
+
/**
|
|
345
|
+
* Number of decimal places a value carries, including values in exponent
|
|
346
|
+
* notation (e.g. 1e-7 → 7). Used to round away binary floating-point error
|
|
347
|
+
* after step arithmetic.
|
|
348
|
+
*/
|
|
349
|
+
function getDecimalPrecision(num: number): number {
|
|
350
|
+
if (Math.abs(num) < 1) {
|
|
351
|
+
const parts = num.toExponential().split('e-');
|
|
352
|
+
if (parts.length === 2) {
|
|
353
|
+
const mantissaDecimals = parts[0].split('.')[1]?.length ?? 0;
|
|
354
|
+
return mantissaDecimals + parseInt(parts[1], 10);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
const decimalPart = String(num).split('.')[1];
|
|
358
|
+
return decimalPart ? decimalPart.length : 0;
|
|
359
|
+
}
|
|
360
|
+
|
|
328
361
|
function snapToStep(val: number, min: number, step: number): number {
|
|
329
362
|
if (step <= 0) {
|
|
330
363
|
return val;
|
|
331
364
|
}
|
|
332
365
|
const steps = Math.round((val - min) / step);
|
|
333
|
-
|
|
366
|
+
const snapped = min + steps * step;
|
|
367
|
+
// `min + steps * step` accumulates binary floating-point error with
|
|
368
|
+
// fractional steps (0 + 3 * 0.1 → 0.30000000000000004), which leaks into
|
|
369
|
+
// onChange/onChangeEnd payloads, aria-valuenow, and the value tooltip.
|
|
370
|
+
// Snapped values can never carry more decimals than min/step combined, so
|
|
371
|
+
// rounding to that precision removes only the error.
|
|
372
|
+
const precision = Math.min(
|
|
373
|
+
Math.max(getDecimalPrecision(min), getDecimalPrecision(step)),
|
|
374
|
+
20, // toFixed() throws past 20 digits
|
|
375
|
+
);
|
|
376
|
+
return Number(snapped.toFixed(precision));
|
|
334
377
|
}
|
|
335
378
|
|
|
336
379
|
function getPercent(val: number, min: number, max: number): number {
|
|
@@ -391,8 +434,10 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
391
434
|
const isHorizontal = orientation === 'horizontal';
|
|
392
435
|
|
|
393
436
|
const id = useId();
|
|
437
|
+
const labelID = useId();
|
|
394
438
|
const descriptionID = useId();
|
|
395
439
|
const statusMessageID = useId();
|
|
440
|
+
const requiredID = useId();
|
|
396
441
|
|
|
397
442
|
const trackRef = useRef<HTMLDivElement>(null);
|
|
398
443
|
const draggingThumbRef = useRef<number | null>(null);
|
|
@@ -412,6 +457,12 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
412
457
|
isEnabled: showsDisabledMessage,
|
|
413
458
|
});
|
|
414
459
|
|
|
460
|
+
// Required state. `aria-required` is not a supported property of
|
|
461
|
+
// role="slider" in WAI-ARIA 1.2, so the thumb instead points its
|
|
462
|
+
// aria-describedby at a visually hidden "Required" span — mirroring the
|
|
463
|
+
// Field label's visible indicator (where isOptional takes precedence).
|
|
464
|
+
const conveysRequired = isRequired && !isOptional;
|
|
465
|
+
|
|
415
466
|
// Build aria-describedby
|
|
416
467
|
const describedByParts: string[] = [];
|
|
417
468
|
if (description) {
|
|
@@ -420,6 +471,9 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
420
471
|
if (status?.message) {
|
|
421
472
|
describedByParts.push(statusMessageID);
|
|
422
473
|
}
|
|
474
|
+
if (conveysRequired) {
|
|
475
|
+
describedByParts.push(requiredID);
|
|
476
|
+
}
|
|
423
477
|
if (showsDisabledMessage) {
|
|
424
478
|
describedByParts.push(disabledMessageTooltip.describedBy);
|
|
425
479
|
}
|
|
@@ -428,10 +482,12 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
428
482
|
|
|
429
483
|
// Value helpers — guard against undefined value (e.g. playground previews
|
|
430
484
|
// that render the component without providing a value prop).
|
|
431
|
-
const values: number[] = useMemo(
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
485
|
+
const values: number[] = useMemo(() => {
|
|
486
|
+
const currentValues = Array.isArray(value)
|
|
487
|
+
? value
|
|
488
|
+
: [value != null ? value : min];
|
|
489
|
+
return currentValues.map(currentValue => clamp(currentValue, min, max));
|
|
490
|
+
}, [value, min, max]);
|
|
435
491
|
|
|
436
492
|
const valuesRef = useRef(values);
|
|
437
493
|
valuesRef.current = values;
|
|
@@ -446,7 +502,12 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
446
502
|
|
|
447
503
|
let percent: number;
|
|
448
504
|
if (isHorizontal) {
|
|
449
|
-
|
|
505
|
+
// In RTL the inline-start (value = min) is the right edge, so measure
|
|
506
|
+
// the pointer fraction from the right instead of the left. Detected
|
|
507
|
+
// from the track's computed direction (lazy, only on pointer move).
|
|
508
|
+
percent = isRtlElement(track)
|
|
509
|
+
? (rect.right - clientX) / rect.width
|
|
510
|
+
: (clientX - rect.left) / rect.width;
|
|
450
511
|
} else {
|
|
451
512
|
// Vertical: bottom = min, top = max
|
|
452
513
|
percent = 1 - (clientY - rect.top) / rect.height;
|
|
@@ -679,14 +740,28 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
679
740
|
const percent = getPercent(val, min, max);
|
|
680
741
|
|
|
681
742
|
const positionStyle = isHorizontal
|
|
682
|
-
? {
|
|
743
|
+
? {insetInlineStart: `${percent}%`}
|
|
683
744
|
: {bottom: `${percent}%`, left: '50%'};
|
|
684
745
|
|
|
746
|
+
// In range mode each thumb keeps a short individual name that composes
|
|
747
|
+
// with the group label (announced via the group's aria-labelledby), per
|
|
748
|
+
// the APG multi-thumb slider pattern. In single mode the thumb takes its
|
|
749
|
+
// name from the visible label element via aria-labelledby.
|
|
685
750
|
const thumbLabel = isRange
|
|
686
751
|
? thumbIndex === 0
|
|
687
|
-
?
|
|
688
|
-
:
|
|
689
|
-
:
|
|
752
|
+
? 'Minimum value'
|
|
753
|
+
: 'Maximum value'
|
|
754
|
+
: undefined;
|
|
755
|
+
|
|
756
|
+
// ARIA bounds must agree with the movement clamping in updateValue: in
|
|
757
|
+
// range mode a thumb can't cross its sibling (minus the
|
|
758
|
+
// minStepsBetweenThumbs gap), and the result is always clamped to
|
|
759
|
+
// [min, max].
|
|
760
|
+
const minGap = minStepsBetweenThumbs * step;
|
|
761
|
+
const ariaValueMin =
|
|
762
|
+
isRange && thumbIndex === 1 ? clamp(values[0] + minGap, min, max) : min;
|
|
763
|
+
const ariaValueMax =
|
|
764
|
+
isRange && thumbIndex === 0 ? clamp(values[1] - minGap, min, max) : max;
|
|
690
765
|
|
|
691
766
|
// Suppress the per-thumb value bubble while the disabled-message tooltip is
|
|
692
767
|
// showing, so a disabled slider surfaces the *reason* on hover/focus rather
|
|
@@ -703,14 +778,15 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
703
778
|
// focus-discoverable; value changes stay blocked by the isDisabled
|
|
704
779
|
// guards in the pointer/keyboard handlers.
|
|
705
780
|
tabIndex={isDisabled && !showsDisabledMessage ? -1 : 0}
|
|
706
|
-
aria-valuemin={
|
|
707
|
-
aria-valuemax={
|
|
781
|
+
aria-valuemin={ariaValueMin}
|
|
782
|
+
aria-valuemax={ariaValueMax}
|
|
708
783
|
aria-valuenow={val}
|
|
709
784
|
aria-valuetext={formatValue ? formatValue(val) : undefined}
|
|
710
785
|
aria-orientation={orientation}
|
|
711
786
|
aria-disabled={isDisabled || undefined}
|
|
712
787
|
aria-invalid={status?.type === 'error' ? true : undefined}
|
|
713
788
|
aria-label={thumbLabel}
|
|
789
|
+
aria-labelledby={!isRange ? labelID : undefined}
|
|
714
790
|
aria-describedby={ariaDescribedBy}
|
|
715
791
|
onKeyDown={e => handleKeyDown(thumbIndex, e)}
|
|
716
792
|
{...mergeProps(
|
|
@@ -755,13 +831,13 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
755
831
|
const p0 = getPercent(v0, min, max);
|
|
756
832
|
const p1 = getPercent(v1, min, max);
|
|
757
833
|
if (isHorizontal) {
|
|
758
|
-
return {
|
|
834
|
+
return {insetInlineStart: `${p0}%`, width: `${p1 - p0}%`};
|
|
759
835
|
}
|
|
760
836
|
return {bottom: `${p0}%`, height: `${p1 - p0}%`};
|
|
761
837
|
}
|
|
762
838
|
const p = getPercent(values[0], min, max);
|
|
763
839
|
if (isHorizontal) {
|
|
764
|
-
return {
|
|
840
|
+
return {insetInlineStart: '0%', width: `${p}%`};
|
|
765
841
|
}
|
|
766
842
|
return {bottom: '0%', height: `${p}%`};
|
|
767
843
|
})();
|
|
@@ -783,6 +859,14 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
783
859
|
isLabelHidden={isLabelHidden}
|
|
784
860
|
description={description}
|
|
785
861
|
inputID={id}
|
|
862
|
+
labelID={labelID}
|
|
863
|
+
// The thumb is a div[role="slider"], which a <label htmlFor> can't
|
|
864
|
+
// name (only form-associated elements are labelable). Render the label
|
|
865
|
+
// as a group label and associate it via aria-labelledby instead: the
|
|
866
|
+
// single thumb references it directly, and in range mode the
|
|
867
|
+
// role="group" container references it while each thumb keeps its own
|
|
868
|
+
// "Minimum value"/"Maximum value" name.
|
|
869
|
+
isGroupLabel
|
|
786
870
|
descriptionID={description ? descriptionID : undefined}
|
|
787
871
|
isOptional={isOptional}
|
|
788
872
|
isRequired={isRequired}
|
|
@@ -825,7 +909,9 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
825
909
|
))}
|
|
826
910
|
<div
|
|
827
911
|
ref={mergeRefs(ref, trackRef, disabledMessageTooltip.ref)}
|
|
828
|
-
{...(isRange
|
|
912
|
+
{...(isRange
|
|
913
|
+
? {role: 'group', 'aria-labelledby': labelID}
|
|
914
|
+
: undefined)}
|
|
829
915
|
onPointerDown={handlePointerDown}
|
|
830
916
|
onPointerMove={handlePointerMove}
|
|
831
917
|
onPointerUp={handlePointerUp}
|
|
@@ -876,7 +962,7 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
876
962
|
{marks.map(mark => {
|
|
877
963
|
const percent = getPercent(mark.value, min, max);
|
|
878
964
|
const markPos = isHorizontal
|
|
879
|
-
? {
|
|
965
|
+
? {insetInlineStart: `${percent}%`}
|
|
880
966
|
: {bottom: `${percent}%`};
|
|
881
967
|
return (
|
|
882
968
|
<div key={mark.value}>
|
|
@@ -921,6 +1007,9 @@ export function Slider({ref, ...props}: SliderProps) {
|
|
|
921
1007
|
|
|
922
1008
|
{textDisplay}
|
|
923
1009
|
</div>
|
|
1010
|
+
{conveysRequired && (
|
|
1011
|
+
<VisuallyHidden id={requiredID}>Required</VisuallyHidden>
|
|
1012
|
+
)}
|
|
924
1013
|
{showsDisabledMessage &&
|
|
925
1014
|
disabledMessageTooltip.renderTooltip(disabledMessage)}
|
|
926
1015
|
</Field>
|
|
@@ -6,7 +6,14 @@ export const docs = {
|
|
|
6
6
|
name: 'Switch',
|
|
7
7
|
displayName: 'Switch',
|
|
8
8
|
category: 'Data Input',
|
|
9
|
-
keywords: [
|
|
9
|
+
keywords: [
|
|
10
|
+
'switch',
|
|
11
|
+
'toggle',
|
|
12
|
+
'onoff',
|
|
13
|
+
'flipswitch',
|
|
14
|
+
'boolean',
|
|
15
|
+
'toggleswitch',
|
|
16
|
+
],
|
|
10
17
|
props: [
|
|
11
18
|
{
|
|
12
19
|
name: 'ref',
|
|
@@ -62,6 +69,13 @@ export const docs = {
|
|
|
62
69
|
description: 'Whether the switch is disabled.',
|
|
63
70
|
default: 'false',
|
|
64
71
|
},
|
|
72
|
+
{
|
|
73
|
+
name: 'size',
|
|
74
|
+
type: "'sm' | 'md'",
|
|
75
|
+
description:
|
|
76
|
+
'Size variant controlling track and thumb dimensions. sm (32x20px) matches sm checkbox/radio vertical rhythm; md (40x24px, default) matches md checkbox/radio vertical rhythm.',
|
|
77
|
+
default: "'md'",
|
|
78
|
+
},
|
|
65
79
|
{
|
|
66
80
|
name: 'htmlName',
|
|
67
81
|
type: 'string',
|
|
@@ -107,7 +121,8 @@ export const docs = {
|
|
|
107
121
|
{
|
|
108
122
|
name: 'labelIcon',
|
|
109
123
|
type: 'IconType',
|
|
110
|
-
description:
|
|
124
|
+
description:
|
|
125
|
+
'Icon displayed before the label text. See `astryx docs icons` for valid semantic names.',
|
|
111
126
|
},
|
|
112
127
|
{
|
|
113
128
|
name: 'labelTooltip',
|
|
@@ -129,23 +144,60 @@ export const docs = {
|
|
|
129
144
|
'Spacing behavior between label and switch. "hug" places them next to each other; "spread" pushes them to opposite ends of the container (full width). "default" is a deprecated alias for "hug".',
|
|
130
145
|
default: "'hug'",
|
|
131
146
|
},
|
|
147
|
+
{
|
|
148
|
+
name: 'width',
|
|
149
|
+
type: 'SizeValue',
|
|
150
|
+
description:
|
|
151
|
+
'Width of the field (number = pixels, string used as-is, e.g. "100%"). Sizes the whole field (label, control, and status) so they stay aligned.',
|
|
152
|
+
},
|
|
132
153
|
],
|
|
133
154
|
theming: {
|
|
134
155
|
targets: [
|
|
135
|
-
{
|
|
136
|
-
|
|
137
|
-
|
|
156
|
+
{
|
|
157
|
+
className: 'astryx-switch',
|
|
158
|
+
visualProps: ['size'],
|
|
159
|
+
states: ['checked', 'disabled'],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
className: 'astryx-switch-thumb',
|
|
163
|
+
visualProps: ['size'],
|
|
164
|
+
states: ['checked'],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
className: 'astryx-switch-field',
|
|
168
|
+
visualProps: ['labelPosition', 'labelSpacing'],
|
|
169
|
+
},
|
|
138
170
|
],
|
|
139
171
|
},
|
|
140
172
|
usage: {
|
|
141
173
|
description:
|
|
142
174
|
'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
|
|
143
175
|
bestPractices: [
|
|
144
|
-
{
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
176
|
+
{
|
|
177
|
+
guidance: true,
|
|
178
|
+
description:
|
|
179
|
+
'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
guidance: true,
|
|
183
|
+
description:
|
|
184
|
+
'Pair with a clear, concise label that describes the setting being controlled.',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
guidance: false,
|
|
188
|
+
description:
|
|
189
|
+
'Use for options that require a form submission to take effect; use a checkbox instead.',
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
guidance: false,
|
|
193
|
+
description:
|
|
194
|
+
"Use a switch for multi-state values; it's strictly on/off.",
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
guidance: false,
|
|
198
|
+
description:
|
|
199
|
+
'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
|
|
200
|
+
},
|
|
149
201
|
],
|
|
150
202
|
},
|
|
151
203
|
};
|
|
@@ -163,8 +215,7 @@ export const docsZh = {
|
|
|
163
215
|
{
|
|
164
216
|
name: 'label',
|
|
165
217
|
type: 'string',
|
|
166
|
-
description:
|
|
167
|
-
'开关的标签文本(始终渲染以确保无障碍性)。',
|
|
218
|
+
description: '开关的标签文本(始终渲染以确保无障碍性)。',
|
|
168
219
|
required: true,
|
|
169
220
|
},
|
|
170
221
|
{
|
|
@@ -187,15 +238,13 @@ export const docsZh = {
|
|
|
187
238
|
{
|
|
188
239
|
name: 'isLoading',
|
|
189
240
|
type: 'boolean',
|
|
190
|
-
description:
|
|
191
|
-
'开关是否处于加载状态,在滑块内显示旋转器。',
|
|
241
|
+
description: '开关是否处于加载状态,在滑块内显示旋转器。',
|
|
192
242
|
default: 'false',
|
|
193
243
|
},
|
|
194
244
|
{
|
|
195
245
|
name: 'isLabelHidden',
|
|
196
246
|
type: 'boolean',
|
|
197
|
-
description:
|
|
198
|
-
'视觉上隐藏标签,同时保持屏幕阅读器的无障碍性。',
|
|
247
|
+
description: '视觉上隐藏标签,同时保持屏幕阅读器的无障碍性。',
|
|
199
248
|
default: 'false',
|
|
200
249
|
},
|
|
201
250
|
{
|
|
@@ -212,7 +261,8 @@ export const docsZh = {
|
|
|
212
261
|
{
|
|
213
262
|
name: 'htmlName',
|
|
214
263
|
type: 'string',
|
|
215
|
-
description:
|
|
264
|
+
description:
|
|
265
|
+
'底层复选框输入的 HTML name 属性,用于表单提交(开启时提交 "on")。',
|
|
216
266
|
},
|
|
217
267
|
{
|
|
218
268
|
name: 'disabledMessage',
|
|
@@ -223,15 +273,13 @@ export const docsZh = {
|
|
|
223
273
|
{
|
|
224
274
|
name: 'isOptional',
|
|
225
275
|
type: 'boolean',
|
|
226
|
-
description:
|
|
227
|
-
'字段是否为可选。与 isRequired 互斥。',
|
|
276
|
+
description: '字段是否为可选。与 isRequired 互斥。',
|
|
228
277
|
default: 'false',
|
|
229
278
|
},
|
|
230
279
|
{
|
|
231
280
|
name: 'isRequired',
|
|
232
281
|
type: 'boolean',
|
|
233
|
-
description:
|
|
234
|
-
'开关是否为必填。与 isOptional 互斥。',
|
|
282
|
+
description: '开关是否为必填。与 isOptional 互斥。',
|
|
235
283
|
default: 'false',
|
|
236
284
|
},
|
|
237
285
|
{
|
|
@@ -258,14 +306,12 @@ export const docsZh = {
|
|
|
258
306
|
{
|
|
259
307
|
name: 'labelTooltip',
|
|
260
308
|
type: 'string',
|
|
261
|
-
description:
|
|
262
|
-
'在标签末尾的信息图标中显示的工具提示文本。',
|
|
309
|
+
description: '在标签末尾的信息图标中显示的工具提示文本。',
|
|
263
310
|
},
|
|
264
311
|
{
|
|
265
312
|
name: 'labelPosition',
|
|
266
313
|
type: "'start' | 'end'",
|
|
267
|
-
description:
|
|
268
|
-
'标签出现在开关的哪一侧。"start" 将标签放在开关前面。',
|
|
314
|
+
description: '标签出现在开关的哪一侧。"start" 将标签放在开关前面。',
|
|
269
315
|
default: "'end'",
|
|
270
316
|
},
|
|
271
317
|
{
|
|
@@ -278,20 +324,51 @@ export const docsZh = {
|
|
|
278
324
|
],
|
|
279
325
|
theming: {
|
|
280
326
|
targets: [
|
|
281
|
-
{
|
|
282
|
-
|
|
283
|
-
|
|
327
|
+
{
|
|
328
|
+
className: 'astryx-switch',
|
|
329
|
+
visualProps: ['size'],
|
|
330
|
+
states: ['checked', 'disabled'],
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
className: 'astryx-switch-thumb',
|
|
334
|
+
visualProps: ['size'],
|
|
335
|
+
states: ['checked'],
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
className: 'astryx-switch-field',
|
|
339
|
+
visualProps: ['labelPosition', 'labelSpacing'],
|
|
340
|
+
},
|
|
284
341
|
],
|
|
285
342
|
},
|
|
286
343
|
usage: {
|
|
287
344
|
description:
|
|
288
345
|
'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
|
|
289
346
|
bestPractices: [
|
|
290
|
-
{
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
347
|
+
{
|
|
348
|
+
guidance: true,
|
|
349
|
+
description:
|
|
350
|
+
'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
guidance: true,
|
|
354
|
+
description:
|
|
355
|
+
'Pair with a clear, concise label that describes the setting being controlled.',
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
guidance: false,
|
|
359
|
+
description:
|
|
360
|
+
'Use for options that require a form submission to take effect; use a checkbox instead.',
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
guidance: false,
|
|
364
|
+
description:
|
|
365
|
+
"Use a switch for multi-state values; it's strictly on/off.",
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
guidance: false,
|
|
369
|
+
description:
|
|
370
|
+
'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
|
|
371
|
+
},
|
|
295
372
|
],
|
|
296
373
|
},
|
|
297
374
|
};
|
|
@@ -303,11 +380,31 @@ export const docsDense = {
|
|
|
303
380
|
description:
|
|
304
381
|
'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
|
|
305
382
|
bestPractices: [
|
|
306
|
-
{
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
383
|
+
{
|
|
384
|
+
guidance: true,
|
|
385
|
+
description:
|
|
386
|
+
'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
guidance: true,
|
|
390
|
+
description:
|
|
391
|
+
'Pair with a clear, concise label that describes the setting being controlled.',
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
guidance: false,
|
|
395
|
+
description:
|
|
396
|
+
'Use for options that require a form submission to take effect; use a checkbox instead.',
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
guidance: false,
|
|
400
|
+
description:
|
|
401
|
+
"Use a switch for multi-state values; it's strictly on/off.",
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
guidance: false,
|
|
405
|
+
description:
|
|
406
|
+
'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
|
|
407
|
+
},
|
|
311
408
|
],
|
|
312
409
|
},
|
|
313
410
|
propDescriptions: {
|
|
@@ -315,7 +412,8 @@ export const docsDense = {
|
|
|
315
412
|
label: 'Label text (always rendered for a11y).',
|
|
316
413
|
value: 'Whether switch is on or off.',
|
|
317
414
|
onChange: 'Fired when switch state changes.',
|
|
318
|
-
changeAction:
|
|
415
|
+
changeAction:
|
|
416
|
+
'Async action after onChange; triggers optimistic UI + loading spinner until resolved.',
|
|
319
417
|
isLoading: 'Loading state; shows spinner in thumb.',
|
|
320
418
|
isLabelHidden: 'Visually hides label; still accessible to screen readers.',
|
|
321
419
|
description: 'Description text below label.',
|
|
@@ -323,12 +421,14 @@ export const docsDense = {
|
|
|
323
421
|
htmlName: 'HTML name attr for the checkbox; submits "on" when on.',
|
|
324
422
|
isOptional: 'Whether field is optional; mutually exclusive w/ isRequired.',
|
|
325
423
|
isRequired: 'Whether switch is required; mutually exclusive w/ isOptional.',
|
|
326
|
-
status:
|
|
424
|
+
status:
|
|
425
|
+
'Status indicator w/ type + message; colored message box, sets aria-invalid on error.',
|
|
327
426
|
onFocus: 'Fired when switch receives focus.',
|
|
328
427
|
onBlur: 'Fired when switch loses focus.',
|
|
329
428
|
labelIcon: 'Icon before label text.',
|
|
330
429
|
labelTooltip: 'Tooltip text in info icon at label end.',
|
|
331
430
|
labelPosition: 'Which side label appears; "start" places before switch.',
|
|
332
|
-
labelSpacing:
|
|
431
|
+
labelSpacing:
|
|
432
|
+
'Spacing behavior; "hug" places next to each other, "spread" pushes to opposite ends (full width). "default" is deprecated alias for "hug".',
|
|
333
433
|
},
|
|
334
|
-
};
|
|
434
|
+
};
|