@astryxdesign/core 0.2.0-canary.ea693ac → 0.2.0-canary.ebed74f
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/README.md +5 -3
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.js +1 -1
- package/dist/AppShell/AppShell.d.ts +2 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +1 -14
- package/dist/AppShell/index.d.ts +20 -1
- package/dist/AppShell/index.d.ts.map +1 -1
- package/dist/AppShell/index.js +14 -0
- package/dist/AspectRatio/AspectRatio.d.ts +1 -1
- package/dist/AspectRatio/AspectRatio.js +1 -1
- package/dist/Avatar/Avatar.d.ts +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +4 -4
- package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +1 -22
- package/dist/Avatar/index.d.ts +26 -1
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +21 -0
- package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +4 -8
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -1
- package/dist/Badge/Badge.d.ts +2 -30
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +2 -17
- package/dist/Badge/index.d.ts +31 -2
- package/dist/Badge/index.d.ts.map +1 -1
- package/dist/Badge/index.js +15 -1
- package/dist/Banner/Banner.d.ts +2 -37
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +6 -34
- package/dist/Banner/index.d.ts +37 -1
- package/dist/Banner/index.d.ts.map +1 -1
- package/dist/Banner/index.js +27 -0
- package/dist/Blockquote/Blockquote.d.ts +1 -1
- package/dist/Blockquote/Blockquote.js +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
- package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
- package/dist/Breadcrumbs/index.d.ts +18 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +14 -0
- package/dist/Button/Button.d.ts +2 -20
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +2 -17
- package/dist/Button/index.d.ts +21 -3
- package/dist/Button/index.d.ts.map +1 -1
- package/dist/Button/index.js +15 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/Calendar/Calendar.js +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.js +2 -2
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts +54 -3
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +82 -15
- package/dist/Carousel/index.d.ts +1 -1
- package/dist/Carousel/index.d.ts.map +1 -1
- package/dist/Center/Center.d.ts +21 -4
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +11 -3
- package/dist/Chat/ChatComposer.d.ts +1 -1
- package/dist/Chat/ChatComposer.js +9 -9
- package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
- package/dist/Chat/ChatComposerDrawer.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.js +1 -1
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.js +1 -1
- package/dist/Chat/ChatLayout.d.ts +8 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +15 -4
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +1 -1
- package/dist/Chat/ChatMessage.d.ts +1 -1
- package/dist/Chat/ChatMessage.js +1 -1
- package/dist/Chat/ChatMessageBubble.d.ts +1 -1
- package/dist/Chat/ChatMessageBubble.js +1 -1
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.js +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -2
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.js +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +1 -1
- package/dist/CheckboxList/CheckboxList.d.ts +1 -1
- package/dist/CheckboxList/CheckboxList.js +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +1 -1
- package/dist/Citation/Citation.d.ts +1 -1
- package/dist/Citation/Citation.js +1 -1
- package/dist/ClickableCard/ClickableCard.d.ts +3 -3
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/Code/Code.d.ts +2 -2
- package/dist/Code/Code.js +2 -2
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.js +3 -3
- package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.js +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
- package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +4 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +14 -5
- package/dist/DateInput/DateInput.js +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +1 -1
- package/dist/Dialog/Dialog.d.ts +46 -23
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +59 -31
- package/dist/Dialog/DialogHeader.d.ts +1 -1
- package/dist/Dialog/DialogHeader.js +1 -1
- package/dist/Dialog/index.d.ts +18 -1
- package/dist/Dialog/index.d.ts.map +1 -1
- package/dist/Dialog/index.js +14 -0
- package/dist/Divider/Divider.d.ts +2 -18
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +1 -15
- package/dist/Divider/index.d.ts +18 -1
- package/dist/Divider/index.d.ts.map +1 -1
- package/dist/Divider/index.js +14 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +23 -19
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
- package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemHover.js +1 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +6 -4
- package/dist/EmptyState/EmptyState.d.ts +1 -1
- package/dist/EmptyState/EmptyState.js +1 -1
- package/dist/Field/Field.d.ts +1 -1
- package/dist/Field/Field.js +1 -1
- package/dist/Field/FieldLabel.d.ts +2 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +41 -2
- package/dist/FieldStatus/FieldStatus.d.ts +1 -18
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +13 -17
- package/dist/FieldStatus/index.d.ts +19 -1
- package/dist/FieldStatus/index.d.ts.map +1 -1
- package/dist/FieldStatus/index.js +14 -0
- package/dist/FileInput/FileInput.js +1 -1
- package/dist/FormLayout/FormLayout.d.ts +1 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/FormLayout/FormLayout.js +1 -1
- package/dist/Grid/Grid.d.ts +1 -1
- package/dist/Grid/Grid.js +1 -1
- package/dist/Grid/GridSpan.d.ts +1 -1
- package/dist/Grid/GridSpan.js +1 -1
- package/dist/HStack/HStack.d.ts +1 -1
- package/dist/HStack/HStack.js +1 -1
- package/dist/Heading/Heading.d.ts +2 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +5 -4
- package/dist/HoverCard/HoverCard.d.ts +1 -1
- package/dist/HoverCard/HoverCard.js +1 -1
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +4 -2
- package/dist/Icon/globalIconRegistry.d.ts +47 -5
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +74 -7
- package/dist/Icon/index.d.ts +4 -3
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/index.js +2 -1
- package/dist/Icon/useIcon.d.ts +14 -0
- package/dist/Icon/useIcon.d.ts.map +1 -0
- package/dist/Icon/useIcon.js +21 -0
- package/dist/IconButton/IconButton.d.ts +1 -1
- package/dist/IconButton/IconButton.js +1 -1
- package/dist/InputGroup/InputGroup.d.ts +1 -1
- package/dist/InputGroup/InputGroup.js +1 -1
- package/dist/InputGroup/InputGroupText.d.ts +1 -1
- package/dist/InputGroup/InputGroupText.js +1 -1
- package/dist/Item/Item.d.ts +1 -1
- package/dist/Item/Item.js +1 -1
- package/dist/Kbd/Kbd.d.ts +1 -1
- package/dist/Kbd/Kbd.js +1 -1
- package/dist/Layout/Layout.d.ts +1 -1
- package/dist/Layout/Layout.js +1 -1
- package/dist/Layout/LayoutContent.d.ts +1 -1
- package/dist/Layout/LayoutContent.js +1 -1
- package/dist/Layout/LayoutFooter.d.ts +1 -1
- package/dist/Layout/LayoutFooter.js +1 -1
- package/dist/Layout/LayoutHeader.d.ts +1 -1
- package/dist/Layout/LayoutHeader.js +1 -1
- package/dist/Layout/LayoutPanel.d.ts +1 -1
- package/dist/Layout/LayoutPanel.js +1 -1
- package/dist/Lightbox/Lightbox.d.ts +1 -1
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +16 -3
- package/dist/Link/Link.d.ts +1 -1
- package/dist/Link/Link.js +1 -1
- package/dist/Link/LinkProvider.d.ts +2 -2
- package/dist/Link/LinkProvider.js +2 -2
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.js +1 -1
- package/dist/List/ListItem.d.ts +1 -1
- package/dist/List/ListItem.js +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +35 -13
- package/dist/MetadataList/MetadataList.d.ts +1 -1
- package/dist/MetadataList/MetadataList.js +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.js +1 -1
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.js +1 -1
- package/dist/MoreMenu/MoreMenu.d.ts +1 -1
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.d.ts +13 -4
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +105 -22
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +1 -1
- package/dist/NumberInput/NumberInput.js +1 -1
- package/dist/Outline/Outline.js +1 -1
- package/dist/OverflowList/OverflowList.d.ts +1 -1
- package/dist/OverflowList/OverflowList.js +1 -1
- package/dist/Pagination/Pagination.d.ts +1 -20
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +1 -15
- package/dist/Pagination/index.d.ts +21 -1
- package/dist/Pagination/index.d.ts.map +1 -1
- package/dist/Pagination/index.js +14 -0
- package/dist/Popover/Popover.d.ts +20 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/ProgressBar/ProgressBar.d.ts +1 -20
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +1 -15
- package/dist/ProgressBar/index.d.ts +21 -1
- package/dist/ProgressBar/index.d.ts.map +1 -1
- package/dist/ProgressBar/index.js +14 -0
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.js +1 -1
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.js +1 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -10
- package/dist/Section/Section.d.ts +2 -19
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +1 -15
- package/dist/Section/index.d.ts +19 -1
- package/dist/Section/index.d.ts.map +1 -1
- package/dist/Section/index.js +14 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +1 -1
- package/dist/SelectableCard/SelectableCard.d.ts +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +15 -3
- package/dist/Selector/Selector.d.ts +12 -3
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +104 -21
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +6 -7
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +1 -1
- package/dist/Skeleton/Skeleton.js +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +78 -68
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +1 -1
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.d.ts +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/StatusDot/StatusDot.d.ts +1 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +2 -17
- package/dist/StatusDot/index.d.ts +21 -1
- package/dist/StatusDot/index.d.ts.map +1 -1
- package/dist/StatusDot/index.js +14 -0
- package/dist/Switch/Switch.d.ts +1 -1
- package/dist/Switch/Switch.js +1 -1
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.js +1 -1
- package/dist/TabList/TabList.d.ts +1 -1
- package/dist/TabList/TabList.js +1 -1
- package/dist/TabList/TabMenu.d.ts +1 -1
- package/dist/TabList/TabMenu.js +1 -1
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.js +1 -1
- package/dist/Table/Table.d.ts +1 -1
- package/dist/Table/Table.js +1 -1
- package/dist/Table/TableCell.d.ts +1 -1
- package/dist/Table/TableCell.js +1 -1
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +1 -1
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +21 -3
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
- package/dist/Text/Text.d.ts +11 -2
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +26 -3
- package/dist/Text/index.d.ts +31 -1
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/Text/index.js +23 -0
- package/dist/TextArea/TextArea.d.ts +1 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +107 -39
- package/dist/TextInput/TextInput.d.ts +1 -1
- package/dist/TextInput/TextInput.js +1 -1
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +52 -46
- package/dist/TimeInput/TimeInput.js +1 -1
- package/dist/Timestamp/Timestamp.d.ts +4 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +78 -7
- package/dist/Timestamp/formatInstant.d.ts +3 -3
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +2 -2
- package/dist/Timestamp/tooltipEntries.d.ts +3 -2
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.js +3 -2
- package/dist/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton/ToggleButton.js +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Token/Token.d.ts +2 -27
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +1 -15
- package/dist/Token/index.d.ts +27 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Token/index.js +14 -0
- package/dist/Tokenizer/Tokenizer.d.ts +1 -1
- package/dist/Tokenizer/Tokenizer.js +1 -1
- package/dist/Toolbar/Toolbar.d.ts +1 -1
- package/dist/Toolbar/Toolbar.js +1 -1
- package/dist/Tooltip/Tooltip.d.ts +1 -1
- package/dist/Tooltip/Tooltip.js +1 -1
- package/dist/TopNav/TopNav.d.ts +1 -1
- package/dist/TopNav/TopNav.js +1 -1
- package/dist/TopNav/TopNavHeading.d.ts +1 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +7 -6
- package/dist/TopNav/TopNavItem.d.ts +1 -1
- package/dist/TopNav/TopNavItem.js +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +15 -7
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +5 -4
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.js +1 -1
- package/dist/TreeList/TreeListBranches.js +1 -1
- package/dist/TreeList/TreeListItem.d.ts +1 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +4 -3
- package/dist/TreeList/TreeListTypes.d.ts +1 -17
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +18 -1
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/TreeList/index.js +14 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +1 -1
- package/dist/Typeahead/BaseTypeahead.js +1 -1
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.js +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.js +1 -1
- package/dist/VStack/VStack.d.ts +1 -1
- package/dist/VStack/VStack.js +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/astryx.css +83 -22
- package/dist/astryx.umd.js +50 -50
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +292 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useContainerReveal.d.ts +83 -0
- package/dist/hooks/useContainerReveal.d.ts.map +1 -0
- package/dist/hooks/useContainerReveal.js +123 -0
- package/dist/hooks/useGridFocus.d.ts +8 -6
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +11 -0
- package/dist/hooks/useKeyboardHint.d.ts +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/hooks/useListFocus.d.ts +8 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +13 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/defineTheme.d.ts +6 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +4 -1
- package/dist/theme/expandColorScale.d.ts +19 -2
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +38 -10
- package/dist/theme/index.d.ts +6 -4
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +2 -1
- package/dist/theme/themeRegistry.d.ts +32 -0
- package/dist/theme/themeRegistry.d.ts.map +1 -0
- package/dist/theme/themeRegistry.js +49 -0
- package/dist/theme/types.d.ts +10 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/useTheme.d.ts +9 -0
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +82 -27
- package/dist/utils/rtlStyles.d.ts +21 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -1
- package/dist/utils/rtlStyles.js +26 -1
- package/groups.doc.mjs +2 -2
- package/locales/en.json +8 -0
- package/locales/pseudo.json +6 -0
- package/package.json +4 -13
- package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
- package/src/AlertDialog/AlertDialog.tsx +1 -1
- package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
- package/src/AppShell/AppShell.doc.mjs +3 -3
- package/src/AppShell/AppShell.tsx +2 -20
- package/src/AppShell/index.ts +20 -1
- package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +1 -1
- package/src/Avatar/Avatar.doc.mjs +3 -3
- package/src/Avatar/Avatar.tsx +8 -3
- package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
- package/src/Avatar/AvatarStatusDot.tsx +2 -27
- package/src/Avatar/index.ts +26 -1
- package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
- package/src/AvatarGroup/AvatarGroup.tsx +3 -7
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -1
- package/src/Badge/Badge.doc.mjs +3 -3
- package/src/Badge/Badge.tsx +2 -31
- package/src/Badge/index.ts +32 -6
- package/src/Banner/Banner.doc.mjs +3 -3
- package/src/Banner/Banner.tsx +8 -45
- package/src/Banner/index.ts +39 -7
- package/src/Blockquote/Blockquote.doc.mjs +3 -3
- package/src/Blockquote/Blockquote.tsx +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
- package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
- package/src/Breadcrumbs/index.ts +19 -5
- package/src/Button/Button.doc.mjs +3 -3
- package/src/Button/Button.tsx +2 -21
- package/src/Button/index.ts +22 -7
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
- package/src/ButtonGroup/ButtonGroup.tsx +1 -1
- package/src/Calendar/Calendar.doc.mjs +3 -3
- package/src/Calendar/Calendar.test.tsx +15 -3
- package/src/Calendar/Calendar.tsx +1 -1
- package/src/Calendar/styles.ts +2 -2
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.doc.mjs +10 -3
- package/src/Carousel/Carousel.test.tsx +232 -1
- package/src/Carousel/Carousel.tsx +144 -21
- package/src/Carousel/index.ts +1 -1
- package/src/Center/Center.doc.mjs +41 -3
- package/src/Center/Center.test.tsx +75 -0
- package/src/Center/Center.tsx +38 -3
- package/src/Chat/Chat.doc.mjs +3 -3
- package/src/Chat/ChatComposer.doc.mjs +1 -1
- package/src/Chat/ChatComposer.tsx +5 -5
- package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
- package/src/Chat/ChatComposerDrawer.tsx +3 -3
- package/src/Chat/ChatComposerInput.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.tsx +1 -1
- package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.tsx +1 -1
- package/src/Chat/ChatLayout.doc.mjs +1 -1
- package/src/Chat/ChatLayout.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +23 -2
- package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
- package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
- package/src/Chat/ChatMessage.doc.mjs +1 -1
- package/src/Chat/ChatMessage.tsx +1 -1
- package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
- package/src/Chat/ChatMessageBubble.tsx +1 -1
- package/src/Chat/ChatMessageList.doc.mjs +1 -1
- package/src/Chat/ChatMessageList.tsx +1 -1
- package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.tsx +5 -3
- package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
- package/src/Chat/ChatSystemMessage.tsx +1 -1
- package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
- package/src/Chat/ChatTokenizedText.tsx +1 -1
- package/src/Chat/ChatToolCalls.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +33 -0
- package/src/CheckboxInput/CheckboxInput.tsx +1 -1
- package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
- package/src/CheckboxList/CheckboxList.tsx +1 -1
- package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxListItem.tsx +1 -1
- package/src/Citation/Citation.doc.mjs +2 -2
- package/src/Citation/Citation.tsx +1 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -3
- package/src/Code/Code.tsx +2 -2
- package/src/CodeBlock/Code.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.tsx +3 -3
- package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
- package/src/Collapsible/CollapsibleGroup.tsx +1 -1
- package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
- package/src/Collapsible/useCollapsible.doc.mjs +2 -2
- package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
- package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteList.tsx +1 -1
- package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
- package/src/ContextMenu/ContextMenu.tsx +17 -5
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +3 -3
- package/src/DateInput/DateInput.tsx +1 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.tsx +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
- package/src/DateTimeInput/DateTimeInput.tsx +1 -1
- package/src/Dialog/Dialog.doc.mjs +9 -5
- package/src/Dialog/Dialog.test.tsx +84 -1
- package/src/Dialog/Dialog.tsx +87 -45
- package/src/Dialog/DialogHeader.doc.mjs +1 -1
- package/src/Dialog/DialogHeader.tsx +1 -1
- package/src/Dialog/index.ts +18 -1
- package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
- package/src/Divider/Divider.doc.mjs +3 -3
- package/src/Divider/Divider.tsx +2 -19
- package/src/Divider/index.ts +19 -5
- package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
- package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -20
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +10 -1
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +64 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
- package/src/DropdownMenu/menuItemHover.ts +1 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
- package/src/EmptyState/EmptyState.doc.mjs +3 -3
- package/src/EmptyState/EmptyState.tsx +1 -1
- package/src/Field/Field.doc.mjs +7 -3
- package/src/Field/Field.tsx +1 -1
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +78 -0
- package/src/Field/FieldLabel.tsx +50 -3
- package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
- package/src/FieldStatus/FieldStatus.test.tsx +61 -0
- package/src/FieldStatus/FieldStatus.tsx +16 -23
- package/src/FieldStatus/index.ts +20 -5
- package/src/FileInput/FileInput.doc.mjs +3 -3
- package/src/FileInput/FileInput.tsx +1 -1
- package/src/FormLayout/FormLayout.doc.mjs +3 -3
- package/src/FormLayout/FormLayout.tsx +2 -5
- package/src/Grid/Grid.doc.mjs +3 -3
- package/src/Grid/Grid.tsx +1 -1
- package/src/Grid/GridSpan.doc.mjs +1 -1
- package/src/Grid/GridSpan.tsx +1 -1
- package/src/HStack/HStack.tsx +1 -1
- package/src/Heading/Heading.tsx +4 -3
- package/src/HoverCard/HoverCard.doc.mjs +3 -3
- package/src/HoverCard/HoverCard.tsx +1 -1
- package/src/HoverCard/useHoverCard.doc.mjs +2 -2
- package/src/Icon/Icon.doc.mjs +4 -3
- package/src/Icon/Icon.test.tsx +23 -0
- package/src/Icon/Icon.tsx +4 -2
- package/src/Icon/globalIconRegistry.test.tsx +87 -1
- package/src/Icon/globalIconRegistry.tsx +109 -9
- package/src/Icon/index.ts +9 -7
- package/src/Icon/useIcon.ts +23 -0
- package/src/IconButton/IconButton.doc.mjs +2 -2
- package/src/IconButton/IconButton.tsx +1 -1
- package/src/InputGroup/InputGroup.doc.mjs +2 -2
- package/src/InputGroup/InputGroup.tsx +1 -1
- package/src/InputGroup/InputGroupText.doc.mjs +1 -1
- package/src/InputGroup/InputGroupText.tsx +1 -1
- package/src/Item/Item.doc.mjs +3 -3
- package/src/Item/Item.tsx +1 -1
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.tsx +1 -1
- package/src/Layer/Layer.doc.mjs +2 -2
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layout/Layout.doc.mjs +3 -3
- package/src/Layout/Layout.tsx +1 -1
- package/src/Layout/LayoutContent.doc.mjs +1 -1
- package/src/Layout/LayoutContent.tsx +1 -1
- package/src/Layout/LayoutFooter.doc.mjs +1 -1
- package/src/Layout/LayoutFooter.tsx +1 -1
- package/src/Layout/LayoutHeader.doc.mjs +1 -1
- package/src/Layout/LayoutHeader.tsx +1 -1
- package/src/Layout/LayoutPanel.doc.mjs +1 -1
- package/src/Layout/LayoutPanel.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +3 -3
- package/src/Lightbox/Lightbox.test.tsx +33 -0
- package/src/Lightbox/Lightbox.tsx +16 -4
- package/src/Link/Link.doc.mjs +3 -3
- package/src/Link/Link.tsx +1 -1
- package/src/Link/LinkProvider.doc.mjs +2 -2
- package/src/Link/LinkProvider.tsx +2 -2
- package/src/List/List.doc.mjs +3 -3
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.doc.mjs +2 -2
- package/src/List/ListItem.tsx +1 -1
- package/src/Markdown/Markdown.doc.mjs +81 -1
- package/src/Markdown/Markdown.test.tsx +92 -0
- package/src/Markdown/Markdown.tsx +96 -68
- package/src/Markdown/parser.perf.test.ts +47 -35
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.tsx +1 -1
- package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
- package/src/MetadataList/MetadataListItem.tsx +1 -1
- package/src/MobileNav/MobileNav.doc.mjs +3 -3
- package/src/MobileNav/MobileNav.tsx +1 -1
- package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
- package/src/MoreMenu/MoreMenu.tsx +3 -3
- package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
- package/src/MultiSelector/MultiSelector.test.tsx +220 -0
- package/src/MultiSelector/MultiSelector.tsx +201 -56
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NumberInput/NumberInput.doc.mjs +3 -3
- package/src/NumberInput/NumberInput.tsx +1 -1
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.tsx +1 -1
- package/src/OverflowList/OverflowList.doc.mjs +3 -3
- package/src/OverflowList/OverflowList.tsx +1 -1
- package/src/Overlay/Overlay.doc.mjs +2 -2
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.tsx +2 -22
- package/src/Pagination/index.ts +21 -1
- package/src/Popover/Popover.doc.mjs +31 -3
- package/src/Popover/Popover.test.tsx +41 -0
- package/src/Popover/Popover.tsx +25 -2
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
- package/src/ProgressBar/ProgressBar.tsx +2 -22
- package/src/ProgressBar/index.ts +22 -5
- package/src/RadioList/RadioList.doc.mjs +3 -3
- package/src/RadioList/RadioList.tsx +1 -1
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +1 -1
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +3 -2
- package/src/Resizable/ResizeHandle.tsx +8 -12
- package/src/Resizable/useResizable.doc.mjs +2 -2
- package/src/Section/Section.doc.mjs +3 -3
- package/src/Section/Section.tsx +2 -20
- package/src/Section/index.ts +20 -5
- package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +1 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
- package/src/SelectableCard/SelectableCard.test.tsx +55 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -3
- package/src/Selector/Selector.doc.mjs +28 -8
- package/src/Selector/Selector.test.tsx +193 -0
- package/src/Selector/Selector.tsx +194 -51
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.tsx +1 -1
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +4 -3
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +8 -9
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +5 -6
- package/src/SideNav/SideNavSection.doc.mjs +1 -1
- package/src/SideNav/SideNavSection.tsx +1 -1
- package/src/Skeleton/Skeleton.doc.mjs +3 -3
- package/src/Skeleton/Skeleton.tsx +1 -1
- package/src/Slider/Slider.doc.mjs +3 -3
- package/src/Slider/Slider.tsx +9 -13
- package/src/Spinner/Spinner.doc.mjs +3 -3
- package/src/Spinner/Spinner.tsx +1 -1
- package/src/Stack/Stack.doc.mjs +3 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/StatusDot/StatusDot.doc.mjs +3 -3
- package/src/StatusDot/StatusDot.tsx +2 -22
- package/src/StatusDot/index.ts +22 -5
- package/src/Switch/Switch.doc.mjs +3 -3
- package/src/Switch/Switch.test.tsx +34 -0
- package/src/Switch/Switch.tsx +1 -1
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +1 -1
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/TabList/TabList.tsx +1 -1
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +1 -1
- package/src/Table/BaseTable.tsx +1 -1
- package/src/Table/Table.doc.mjs +3 -3
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +1 -1
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +1 -1
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +21 -3
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
- package/src/Table/useTableColumnResize.doc.mjs +1 -1
- package/src/Table/useTableColumnSettings.doc.mjs +1 -1
- package/src/Table/useTableFilterState.doc.mjs +1 -1
- package/src/Table/useTableFiltering.doc.mjs +1 -1
- package/src/Table/useTableGroupedRows.doc.mjs +2 -2
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +57 -4
- package/src/Table/useTableRowIndex.doc.mjs +2 -2
- package/src/Table/useTableRowStatus.doc.mjs +2 -2
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Table/useTableSelectionState.doc.mjs +1 -1
- package/src/Table/useTableSortable.doc.mjs +1 -1
- package/src/Table/useTableStickyColumns.doc.mjs +1 -1
- package/src/Table/useTableTreeData.doc.mjs +10 -1
- package/src/Table/useTableTreeState.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +4 -4
- package/src/Text/Text.doc.mjs +4 -4
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +26 -2
- package/src/Text/index.ts +32 -6
- package/src/TextArea/TextArea.doc.mjs +5 -5
- package/src/TextArea/TextArea.test.tsx +112 -7
- package/src/TextArea/TextArea.tsx +143 -50
- package/src/TextInput/TextInput.doc.mjs +3 -3
- package/src/TextInput/TextInput.tsx +1 -1
- package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +28 -35
- package/src/TimeInput/TimeInput.doc.mjs +3 -3
- package/src/TimeInput/TimeInput.tsx +1 -1
- package/src/Timestamp/Timestamp.doc.mjs +5 -5
- package/src/Timestamp/Timestamp.test.tsx +131 -0
- package/src/Timestamp/Timestamp.tsx +92 -9
- package/src/Timestamp/formatInstant.ts +3 -4
- package/src/Timestamp/tooltipEntries.ts +3 -2
- package/src/Toast/Toast.doc.mjs +3 -3
- package/src/Toast/useToast.doc.mjs +2 -2
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.tsx +1 -1
- package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
- package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
- package/src/Token/Token.doc.mjs +3 -3
- package/src/Token/Token.tsx +2 -28
- package/src/Token/index.ts +28 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
- package/src/Tokenizer/Tokenizer.tsx +1 -1
- package/src/Toolbar/Toolbar.doc.mjs +3 -3
- package/src/Toolbar/Toolbar.tsx +1 -1
- package/src/Tooltip/Tooltip.doc.mjs +3 -3
- package/src/Tooltip/Tooltip.tsx +1 -1
- package/src/Tooltip/useTooltip.doc.mjs +2 -2
- package/src/TopNav/TopNav.doc.mjs +3 -3
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -1
- package/src/TopNav/TopNavHeading.tsx +7 -8
- package/src/TopNav/TopNavItem.doc.mjs +1 -1
- package/src/TopNav/TopNavItem.tsx +1 -1
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +32 -6
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
- package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
- package/src/TopNav/TopNavMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMenu.tsx +5 -4
- package/src/TreeList/TreeList.doc.mjs +3 -3
- package/src/TreeList/TreeList.tsx +1 -1
- package/src/TreeList/TreeListBranches.tsx +1 -1
- package/src/TreeList/TreeListItem.tsx +4 -3
- package/src/TreeList/TreeListTypes.ts +1 -18
- package/src/TreeList/index.ts +19 -1
- package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
- package/src/Typeahead/BaseTypeahead.tsx +1 -1
- package/src/Typeahead/Typeahead.doc.mjs +3 -3
- package/src/Typeahead/Typeahead.tsx +1 -1
- package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +1 -1
- package/src/VStack/VStack.tsx +1 -1
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
- package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
- package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
- package/src/__tests__/inputWidthContract.test.tsx +8 -1
- package/src/doc-mjs.d.ts +5 -2
- package/src/docPropLiterals.test.ts +1 -1
- package/src/docPropReferences.test.ts +1 -1
- package/src/hooks/containerReveal.pool.stylex.ts +571 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/useClickableContainer.doc.mjs +2 -2
- package/src/hooks/useContainerReveal.doc.mjs +75 -0
- package/src/hooks/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +181 -0
- package/src/hooks/useEntryAnimation.doc.mjs +2 -2
- package/src/hooks/useFocusTrap.doc.mjs +2 -2
- package/src/hooks/useGridFocus.doc.mjs +2 -2
- package/src/hooks/useGridFocus.ts +8 -6
- package/src/hooks/useHotkeys.doc.mjs +2 -2
- package/src/hooks/useImageMode.doc.mjs +2 -2
- package/src/hooks/useInputContainer.doc.mjs +2 -2
- package/src/hooks/useInputContainer.test.tsx +180 -0
- package/src/hooks/useInputContainer.ts +36 -1
- package/src/hooks/useInputStatusIcon.test.tsx +59 -0
- package/src/hooks/useInputStatusIcon.tsx +12 -1
- package/src/hooks/useKeyboardHint.doc.mjs +2 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useListFocus.ts +8 -7
- package/src/hooks/useMediaQuery.doc.mjs +2 -2
- package/src/hooks/useOverflow.doc.mjs +2 -2
- package/src/hooks/useScrollLock.doc.mjs +2 -2
- package/src/hooks/useScrollOverflow.doc.mjs +2 -2
- package/src/hooks/useStreamingText.doc.mjs +2 -2
- package/src/hooks/useTreeFocus.doc.mjs +2 -2
- package/src/hooks/useTreeFocus.test.tsx +53 -1
- package/src/hooks/useTreeFocus.ts +13 -2
- package/src/i18n/InternationalizationProvider.doc.mjs +2 -2
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +14 -10
- package/src/theme/MediaTheme.doc.mjs +2 -2
- package/src/theme/SyntaxTheme.doc.mjs +2 -2
- package/src/theme/Theme.doc.mjs +2 -2
- package/src/theme/Theme.tsx +3 -7
- package/src/theme/defineTheme.ts +11 -1
- package/src/theme/expandColorScale.test.ts +144 -0
- package/src/theme/expandColorScale.ts +53 -15
- package/src/theme/index.ts +11 -9
- package/src/theme/themeRegistry.test.ts +59 -0
- package/src/theme/themeRegistry.ts +53 -0
- package/src/theme/types.ts +14 -13
- package/src/theme/useTheme.doc.mjs +2 -2
- package/src/theme/useTheme.test.tsx +48 -3
- package/src/theme/useTheme.ts +100 -29
- package/src/utils/rtlStyles.ts +22 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
- package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
- package/dist/authoring/doc.d.ts +0 -145
- package/dist/authoring/doc.d.ts.map +0 -1
- package/dist/authoring/doc.js +0 -100
- package/dist/authoring/index.d.ts +0 -29
- package/dist/authoring/index.d.ts.map +0 -1
- package/dist/authoring/index.js +0 -28
- package/dist/authoring/integration.d.ts +0 -35
- package/dist/authoring/integration.d.ts.map +0 -1
- package/dist/authoring/integration.js +0 -30
- package/dist/authoring/template.d.ts +0 -66
- package/dist/authoring/template.d.ts.map +0 -1
- package/dist/authoring/template.js +0 -55
- package/dist/config.d.ts +0 -80
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -40
- package/dist/docs-types.d.ts +0 -969
- package/dist/docs-types.d.ts.map +0 -1
- package/dist/docs-types.js +0 -1
- package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
- package/src/authoring/doc.ts +0 -164
- package/src/authoring/index.test.ts +0 -52
- package/src/authoring/index.ts +0 -50
- package/src/authoring/integration.ts +0 -42
- package/src/authoring/template.ts +0 -74
- package/src/config.test.ts +0 -16
- package/src/config.ts +0 -92
- package/src/docs-types.ts +0 -1108
package/src/Text/Text.tsx
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/Text/Text.test.tsx (tests for new/changed behavior)
|
|
14
14
|
* - /packages/core/src/Text/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/Text.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Text/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/Text/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import {lazy, Suspense, useRef, type ReactNode} from 'react';
|
|
@@ -23,6 +23,7 @@ import type {
|
|
|
23
23
|
BuiltinTextType,
|
|
24
24
|
TextSize,
|
|
25
25
|
TextColor,
|
|
26
|
+
BuiltinTextColor,
|
|
26
27
|
TextWeight,
|
|
27
28
|
TextDisplay,
|
|
28
29
|
TextJustify,
|
|
@@ -185,6 +186,24 @@ function resolveStyleType(type: TextType): BuiltinTextType {
|
|
|
185
186
|
return 'body';
|
|
186
187
|
}
|
|
187
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Resolve the StyleX baseline color. Built-in colors map to their own color
|
|
191
|
+
* style; custom (theme-defined) colors fall back to the `primary` baseline —
|
|
192
|
+
* their actual color comes from theme CSS (`.astryx-text.<color>` /
|
|
193
|
+
* `.astryx-heading.<color>`), which the rendered `color` class targets.
|
|
194
|
+
*
|
|
195
|
+
* Exported so Heading applies the same custom-color fallback as Text.
|
|
196
|
+
*/
|
|
197
|
+
export function resolveStyleColor(color: TextColor): BuiltinTextColor {
|
|
198
|
+
// The `in` guard is a runtime check for consumer-augmented custom colors
|
|
199
|
+
// (which widen `TextColor` beyond the built-ins via TextColorMap); within
|
|
200
|
+
// core the two types coincide, so no cast is needed.
|
|
201
|
+
if (color in colorStyles) {
|
|
202
|
+
return color;
|
|
203
|
+
}
|
|
204
|
+
return 'primary';
|
|
205
|
+
}
|
|
206
|
+
|
|
188
207
|
/**
|
|
189
208
|
* Semantic text component. Renders text with type-based styling from the theme.
|
|
190
209
|
*
|
|
@@ -228,6 +247,11 @@ export function Text({
|
|
|
228
247
|
// Resolve style type — custom types fall back to 'body' for StyleX baseline
|
|
229
248
|
const styleType = resolveStyleType(type);
|
|
230
249
|
|
|
250
|
+
// Resolve style color — custom colors fall back to 'primary' for StyleX
|
|
251
|
+
// baseline; the real color comes from theme CSS via the rendered `color`
|
|
252
|
+
// class (see themeProps below).
|
|
253
|
+
const styleColor = resolveStyleColor(resolvedColor);
|
|
254
|
+
|
|
231
255
|
// Resolve wordBreak with smart default
|
|
232
256
|
const resolvedWordBreak =
|
|
233
257
|
wordBreak ?? (maxLines === 1 ? 'break-all' : 'break-word');
|
|
@@ -257,7 +281,7 @@ export function Text({
|
|
|
257
281
|
{...mergeProps(
|
|
258
282
|
themeProps('text', {type, size, color: resolvedColor}),
|
|
259
283
|
stylex.props(
|
|
260
|
-
colorStyles[
|
|
284
|
+
colorStyles[styleColor],
|
|
261
285
|
sizeByTypeStyles[styleType],
|
|
262
286
|
size && sizeStyles[size],
|
|
263
287
|
defaultWeightByTypeStyles[styleType],
|
package/src/Text/index.ts
CHANGED
|
@@ -7,12 +7,38 @@
|
|
|
7
7
|
* @position Entry point for Text components
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Extensible map of text color variants for Text/Heading.
|
|
12
|
+
*
|
|
13
|
+
* Themes add custom colors via component overrides in defineTheme; a custom
|
|
14
|
+
* color renders with the `primary` baseline color from StyleX and receives its
|
|
15
|
+
* actual color from theme CSS (`.astryx-text.<color>` / `.astryx-heading.<color>`),
|
|
16
|
+
* exactly like custom text `type`s.
|
|
17
|
+
*
|
|
18
|
+
* To add type-safe custom colors, use module augmentation — the same technique
|
|
19
|
+
* as `ButtonVariantMap` etc.:
|
|
20
|
+
* ```ts
|
|
21
|
+
* declare module '@astryxdesign/core/Text' {
|
|
22
|
+
* interface TextColorMap {
|
|
23
|
+
* brand: true;
|
|
24
|
+
* danger: true;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* `astryx theme build` generates these augmentations automatically when it
|
|
30
|
+
* detects new `color:*` values in a theme's Text/Heading component overrides.
|
|
31
|
+
*/
|
|
32
|
+
export interface TextColorMap {
|
|
33
|
+
primary: true;
|
|
34
|
+
secondary: true;
|
|
35
|
+
disabled: true;
|
|
36
|
+
placeholder: true;
|
|
37
|
+
accent: true;
|
|
38
|
+
inherit: true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export {Text, type TextProps, type TextType, type TextSize} from './Text';
|
|
16
42
|
export {
|
|
17
43
|
Heading,
|
|
18
44
|
type HeadingProps,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'TextArea',
|
|
@@ -98,7 +98,7 @@ export const docs = {
|
|
|
98
98
|
name: 'maxLength',
|
|
99
99
|
type: 'number',
|
|
100
100
|
description:
|
|
101
|
-
'Maximum number of characters allowed. When set, a character counter (current/max) is displayed
|
|
101
|
+
'Maximum number of characters allowed. When set, a character counter (current/max) is displayed inside the input container, anchored to the bottom-right beneath the text. Does not enforce the limit natively; when exceeded the counter turns red and shows a warning icon (a non-color cue), and screen-reader users hear the remaining/over-limit count announced.',
|
|
102
102
|
},
|
|
103
103
|
{
|
|
104
104
|
name: 'status',
|
|
@@ -198,7 +198,7 @@ export const docs = {
|
|
|
198
198
|
},
|
|
199
199
|
};
|
|
200
200
|
|
|
201
|
-
/** @type {import('
|
|
201
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
202
202
|
export const docsZh = {
|
|
203
203
|
name: 'TextArea',
|
|
204
204
|
displayName: 'Text Area',
|
|
@@ -374,7 +374,7 @@ export const docsZh = {
|
|
|
374
374
|
},
|
|
375
375
|
};
|
|
376
376
|
|
|
377
|
-
/** @type {import('
|
|
377
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
378
378
|
export const docsDense = {
|
|
379
379
|
description: 'Multi-line text input for collecting longer user input.',
|
|
380
380
|
usage: {
|
|
@@ -407,7 +407,7 @@ export const docsDense = {
|
|
|
407
407
|
isLoading: 'Loading state w/ spinner inside input.',
|
|
408
408
|
placeholder: 'Placeholder when textarea empty.',
|
|
409
409
|
rows: 'Visible text rows.',
|
|
410
|
-
maxLength: 'Max chars allowed. Shows counter (current/max)
|
|
410
|
+
maxLength: 'Max chars allowed. Shows counter (current/max) inside the container, bottom-right beneath the text. No native enforcement; over-limit shows red + a warning icon and is announced to screen readers.',
|
|
411
411
|
status: 'Colored border+icon status. Optional floating message below textarea.',
|
|
412
412
|
statusVariant: 'How status message is placed: attached overlaps below input; detached floats below w/ spacing; tooltip hides the box and shows it on the status icon.',
|
|
413
413
|
labelTooltip: 'Tooltip in info icon at label end.',
|
|
@@ -335,6 +335,23 @@ describe('TextArea', () => {
|
|
|
335
335
|
expect(messageElement).toHaveAttribute('id');
|
|
336
336
|
expect(describedBy).toContain(messageElement.id);
|
|
337
337
|
});
|
|
338
|
+
|
|
339
|
+
it('shows both the loading spinner and the status icon while busy', () => {
|
|
340
|
+
const {container} = render(
|
|
341
|
+
<TextArea
|
|
342
|
+
label="Description"
|
|
343
|
+
value=""
|
|
344
|
+
onChange={() => {}}
|
|
345
|
+
isLoading
|
|
346
|
+
status={{type: 'error'}}
|
|
347
|
+
/>,
|
|
348
|
+
);
|
|
349
|
+
// Matches the other inputs: spinner (role="status") and the status icon
|
|
350
|
+
// render side by side in the end slot, not mutually exclusively.
|
|
351
|
+
expect(screen.getByRole('status')).toBeInTheDocument();
|
|
352
|
+
// Status icon svg is also present alongside the spinner.
|
|
353
|
+
expect(container.querySelectorAll('svg').length).toBeGreaterThan(0);
|
|
354
|
+
});
|
|
338
355
|
});
|
|
339
356
|
|
|
340
357
|
it('renders tooltip info icon when labelTooltip is provided', () => {
|
|
@@ -506,7 +523,70 @@ describe('TextArea', () => {
|
|
|
506
523
|
expect(screen.getByText('5/50')).toBeInTheDocument();
|
|
507
524
|
});
|
|
508
525
|
|
|
509
|
-
it('
|
|
526
|
+
it('announces remaining characters politely as the value nears the limit', async () => {
|
|
527
|
+
const user = userEvent.setup();
|
|
528
|
+
function Wrapper() {
|
|
529
|
+
const [val, setVal] = useState('x'.repeat(44));
|
|
530
|
+
return (
|
|
531
|
+
<TextArea
|
|
532
|
+
label="Description"
|
|
533
|
+
value={val}
|
|
534
|
+
onChange={setVal}
|
|
535
|
+
maxLength={50}
|
|
536
|
+
/>
|
|
537
|
+
);
|
|
538
|
+
}
|
|
539
|
+
render(<Wrapper />);
|
|
540
|
+
// Type one more char to cross into the "near the limit" zone (45/50).
|
|
541
|
+
await user.type(screen.getByRole('textbox'), 'x');
|
|
542
|
+
const politeRegion = () =>
|
|
543
|
+
document.querySelector('[data-astryx-live-region="polite"]');
|
|
544
|
+
await waitFor(() => {
|
|
545
|
+
expect(politeRegion()).toHaveTextContent('5 characters remaining');
|
|
546
|
+
});
|
|
547
|
+
});
|
|
548
|
+
|
|
549
|
+
it('announces over-limit assertively once the value exceeds the max', async () => {
|
|
550
|
+
const user = userEvent.setup();
|
|
551
|
+
function Wrapper() {
|
|
552
|
+
const [val, setVal] = useState('x'.repeat(50));
|
|
553
|
+
return (
|
|
554
|
+
<TextArea
|
|
555
|
+
label="Description"
|
|
556
|
+
value={val}
|
|
557
|
+
onChange={setVal}
|
|
558
|
+
maxLength={50}
|
|
559
|
+
/>
|
|
560
|
+
);
|
|
561
|
+
}
|
|
562
|
+
render(<Wrapper />);
|
|
563
|
+
await user.type(screen.getByRole('textbox'), 'x');
|
|
564
|
+
const assertiveRegion = () =>
|
|
565
|
+
document.querySelector('[data-astryx-live-region="assertive"]');
|
|
566
|
+
await waitFor(() => {
|
|
567
|
+
expect(assertiveRegion()).toHaveTextContent(
|
|
568
|
+
'1 character over the limit',
|
|
569
|
+
);
|
|
570
|
+
});
|
|
571
|
+
});
|
|
572
|
+
|
|
573
|
+
it('shows a non-color over-limit indicator icon when exceeded', () => {
|
|
574
|
+
const {container} = render(
|
|
575
|
+
<TextArea
|
|
576
|
+
label="Description"
|
|
577
|
+
value={'x'.repeat(55)}
|
|
578
|
+
onChange={() => {}}
|
|
579
|
+
maxLength={50}
|
|
580
|
+
/>,
|
|
581
|
+
);
|
|
582
|
+
// The counter renders a warning icon (a shape cue) alongside the red
|
|
583
|
+
// count, so the over-limit state is not conveyed by color alone.
|
|
584
|
+
const counter = screen.getByText('55/50').closest('div');
|
|
585
|
+
expect(counter?.querySelector('svg')).toBeInTheDocument();
|
|
586
|
+
expect(container).toBeInTheDocument();
|
|
587
|
+
});
|
|
588
|
+
|
|
589
|
+
it('does not show the over-limit indicator icon within the limit', () => {
|
|
510
590
|
render(
|
|
511
591
|
<TextArea
|
|
512
592
|
label="Description"
|
|
@@ -515,9 +595,8 @@ describe('TextArea', () => {
|
|
|
515
595
|
maxLength={50}
|
|
516
596
|
/>,
|
|
517
597
|
);
|
|
518
|
-
const
|
|
519
|
-
expect(
|
|
520
|
-
expect(liveRegion).toHaveTextContent('5 characters remaining');
|
|
598
|
+
const counter = screen.getByText('45/50').closest('div');
|
|
599
|
+
expect(counter?.querySelector('svg')).not.toBeInTheDocument();
|
|
521
600
|
});
|
|
522
601
|
|
|
523
602
|
it('counter is linked to textarea via aria-describedby', () => {
|
|
@@ -535,6 +614,22 @@ describe('TextArea', () => {
|
|
|
535
614
|
expect(counter).toHaveAttribute('id');
|
|
536
615
|
expect(describedBy).toContain(counter.id);
|
|
537
616
|
});
|
|
617
|
+
|
|
618
|
+
it('renders the counter inside the input container (same wrapper as textarea)', () => {
|
|
619
|
+
render(
|
|
620
|
+
<TextArea
|
|
621
|
+
label="Description"
|
|
622
|
+
value="Hello"
|
|
623
|
+
onChange={() => {}}
|
|
624
|
+
maxLength={50}
|
|
625
|
+
/>,
|
|
626
|
+
);
|
|
627
|
+
const textarea = screen.getByRole('textbox');
|
|
628
|
+
const counter = screen.getByText('5/50');
|
|
629
|
+
// The counter now lives inside the bordered input container as a sibling
|
|
630
|
+
// overlay of the textarea, not below it as an out-of-container element.
|
|
631
|
+
expect(textarea.parentElement).toBe(counter.parentElement);
|
|
632
|
+
});
|
|
538
633
|
});
|
|
539
634
|
|
|
540
635
|
describe('hasAutoFocus prop', () => {
|
|
@@ -737,11 +832,15 @@ describe('TextArea', () => {
|
|
|
737
832
|
});
|
|
738
833
|
});
|
|
739
834
|
|
|
740
|
-
|
|
741
835
|
describe('TextArea statusVariant forwarding', () => {
|
|
742
836
|
it('defaults to attached (status renders with data-variant="attached")', () => {
|
|
743
837
|
const {container} = render(
|
|
744
|
-
<TextArea
|
|
838
|
+
<TextArea
|
|
839
|
+
label="Bio"
|
|
840
|
+
value=""
|
|
841
|
+
onChange={() => {}}
|
|
842
|
+
status={{type: 'error', message: 'Required'}}
|
|
843
|
+
/>,
|
|
745
844
|
);
|
|
746
845
|
expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
|
|
747
846
|
'data-variant',
|
|
@@ -751,7 +850,13 @@ describe('TextArea statusVariant forwarding', () => {
|
|
|
751
850
|
|
|
752
851
|
it('forwards statusVariant="detached" to the underlying Field status', () => {
|
|
753
852
|
const {container} = render(
|
|
754
|
-
<TextArea
|
|
853
|
+
<TextArea
|
|
854
|
+
label="Bio"
|
|
855
|
+
value=""
|
|
856
|
+
onChange={() => {}}
|
|
857
|
+
status={{type: 'error', message: 'Required'}}
|
|
858
|
+
statusVariant="detached"
|
|
859
|
+
/>,
|
|
755
860
|
);
|
|
756
861
|
expect(container.querySelector('.astryx-field-status')).toHaveAttribute(
|
|
757
862
|
'data-variant',
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/TextArea/TextArea.test.tsx (tests for new/changed behavior)
|
|
14
14
|
* - /packages/core/src/TextArea/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/TextArea.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/TextArea/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/TextArea/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import {
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
useOptimistic,
|
|
22
22
|
useTransition,
|
|
23
23
|
useRef,
|
|
24
|
+
useCallback,
|
|
24
25
|
type ChangeEvent,
|
|
25
26
|
type ClipboardEvent,
|
|
26
27
|
type FocusEvent,
|
|
@@ -41,7 +42,7 @@ import {
|
|
|
41
42
|
inputStatusFocusWithinStyles,
|
|
42
43
|
type FieldStatusVariant,
|
|
43
44
|
} from '../Field';
|
|
44
|
-
import {renderIconSlot, type IconType} from '../Icon';
|
|
45
|
+
import {Icon, renderIconSlot, type IconType} from '../Icon';
|
|
45
46
|
import {Spinner} from '../Spinner';
|
|
46
47
|
import {useTooltip} from '../Tooltip';
|
|
47
48
|
import {mergeProps, mergeRefs} from '../utils';
|
|
@@ -49,25 +50,39 @@ import type {BaseProps} from '../BaseProps';
|
|
|
49
50
|
import type {SizeValue} from '../utils/types';
|
|
50
51
|
import {useInputContainer} from '../hooks/useInputContainer';
|
|
51
52
|
import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
|
|
53
|
+
import {useAnnounce} from '../hooks/useAnnounce';
|
|
52
54
|
import {useSize} from '../SizeContext/SizeContext';
|
|
53
55
|
import {themeProps} from '../utils/themeProps';
|
|
54
|
-
import {
|
|
56
|
+
import {useTranslator} from '../i18n';
|
|
55
57
|
|
|
56
58
|
const COUNTER_WARNING_THRESHOLD = 0.8;
|
|
57
59
|
|
|
58
60
|
const styles = stylex.create({
|
|
61
|
+
// The wrapper is a bare positioning context. The <textarea> spans the full
|
|
62
|
+
// container and carries its own internal padding; icons, status/spinner, and
|
|
63
|
+
// the character counter are absolutely-positioned overlays anchored to the
|
|
64
|
+
// container corners. This keeps the native resize grip in the true
|
|
65
|
+
// bottom-right corner and lets the scrollbar represent the full input area.
|
|
59
66
|
wrapper: {
|
|
60
67
|
zIndex: 1,
|
|
61
|
-
|
|
62
|
-
|
|
68
|
+
display: 'block',
|
|
69
|
+
padding: 0,
|
|
70
|
+
// Internal inline padding for the textarea's text. Defined on the wrapper
|
|
71
|
+
// so the counter (a sibling overlay) inherits the same value and stays
|
|
72
|
+
// aligned with the text edge. Kept as an internal var so it can later be
|
|
73
|
+
// driven by a theme "padding" translation without touching either child.
|
|
74
|
+
'--_textarea-inline-padding': spacingVars['--spacing-2'],
|
|
63
75
|
},
|
|
64
76
|
textarea: {
|
|
65
77
|
display: 'block',
|
|
66
|
-
|
|
78
|
+
width: '100%',
|
|
79
|
+
boxSizing: 'border-box',
|
|
67
80
|
minWidth: 0,
|
|
68
81
|
borderWidth: 0,
|
|
69
82
|
borderStyle: 'none',
|
|
70
|
-
padding
|
|
83
|
+
// Base internal padding; overlays get their own reserved space below.
|
|
84
|
+
paddingBlock: spacingVars['--spacing-1'],
|
|
85
|
+
paddingInline: 'var(--_textarea-inline-padding)',
|
|
71
86
|
fontFamily: typographyVars['--font-family-body'],
|
|
72
87
|
fontSize: {
|
|
73
88
|
default: typeScaleVars['--text-body-size'],
|
|
@@ -85,29 +100,59 @@ const styles = stylex.create({
|
|
|
85
100
|
textareaDisabled: {
|
|
86
101
|
cursor: 'not-allowed',
|
|
87
102
|
},
|
|
103
|
+
// Reserve start padding so text clears the start icon.
|
|
104
|
+
// inline inset + 16px icon (sm) + 8px gap
|
|
105
|
+
textareaWithStartIcon: {
|
|
106
|
+
paddingInlineStart: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
|
|
107
|
+
},
|
|
108
|
+
// Reserve end padding so text clears the status icon / spinner overlay.
|
|
109
|
+
// inline inset + 20px icon (md) + 4px gap
|
|
110
|
+
textareaWithStatus: {
|
|
111
|
+
paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-6']})`,
|
|
112
|
+
},
|
|
113
|
+
// Reserve wider end padding when the spinner AND status icon both show.
|
|
114
|
+
// inline inset + 16px spinner + 8px gap + 20px icon + 4px gap
|
|
115
|
+
textareaWithBusyStatus: {
|
|
116
|
+
paddingInlineEnd: `calc(var(--_textarea-inline-padding) + ${spacingVars['--spacing-12']})`,
|
|
117
|
+
},
|
|
118
|
+
// Reserve bottom padding so text clears the character counter overlay.
|
|
119
|
+
textareaWithCounter: {
|
|
120
|
+
paddingBottom: spacingVars['--spacing-7'],
|
|
121
|
+
},
|
|
122
|
+
startIcon: {
|
|
123
|
+
position: 'absolute',
|
|
124
|
+
top: spacingVars['--spacing-2'],
|
|
125
|
+
insetInlineStart: 'var(--_textarea-inline-padding)',
|
|
126
|
+
pointerEvents: 'none',
|
|
127
|
+
display: 'flex',
|
|
128
|
+
},
|
|
129
|
+
endSlot: {
|
|
130
|
+
position: 'absolute',
|
|
131
|
+
top: spacingVars['--spacing-2'],
|
|
132
|
+
insetInlineEnd: 'var(--_textarea-inline-padding)',
|
|
133
|
+
pointerEvents: 'none',
|
|
134
|
+
display: 'flex',
|
|
135
|
+
alignItems: 'center',
|
|
136
|
+
gap: spacingVars['--spacing-2'],
|
|
137
|
+
},
|
|
138
|
+
// Character counter lives inside the input container, anchored bottom-right
|
|
139
|
+
// underneath the textarea, aligned to the same inline inset as the text.
|
|
88
140
|
counter: {
|
|
141
|
+
position: 'absolute',
|
|
142
|
+
bottom: spacingVars['--spacing-1'],
|
|
143
|
+
insetInlineEnd: 'var(--_textarea-inline-padding)',
|
|
144
|
+
pointerEvents: 'none',
|
|
89
145
|
display: 'flex',
|
|
90
|
-
|
|
91
|
-
|
|
146
|
+
alignItems: 'center',
|
|
147
|
+
gap: spacingVars['--spacing-1'],
|
|
92
148
|
fontFamily: typographyVars['--font-family-body'],
|
|
93
149
|
fontSize: typeScaleVars['--text-supporting-size'],
|
|
150
|
+
lineHeight: typeScaleVars['--text-supporting-leading'],
|
|
94
151
|
color: colorVars['--color-text-secondary'],
|
|
95
152
|
},
|
|
96
153
|
counterError: {
|
|
97
154
|
color: colorVars['--color-error'],
|
|
98
155
|
},
|
|
99
|
-
statusIcon: {
|
|
100
|
-
position: 'absolute',
|
|
101
|
-
top: spacingVars['--spacing-2'],
|
|
102
|
-
insetInlineEnd: spacingVars['--spacing-2'],
|
|
103
|
-
pointerEvents: 'none',
|
|
104
|
-
display: 'flex',
|
|
105
|
-
},
|
|
106
|
-
textareaWithStatus: {
|
|
107
|
-
// Reserve space so text doesn't flow under the absolutely-positioned icon.
|
|
108
|
-
// 20px (icon md) + 4px gap = 24px (--spacing-6)
|
|
109
|
-
paddingInlineEnd: spacingVars['--spacing-6'],
|
|
110
|
-
},
|
|
111
156
|
});
|
|
112
157
|
|
|
113
158
|
const textareaSizeStyles = stylex.create({
|
|
@@ -326,12 +371,17 @@ export function TextArea({
|
|
|
326
371
|
...rest
|
|
327
372
|
}: TextAreaProps) {
|
|
328
373
|
const size = useSize(sizeProp, 'md');
|
|
374
|
+
const t = useTranslator();
|
|
375
|
+
const announce = useAnnounce();
|
|
329
376
|
const id = useId();
|
|
330
377
|
const descriptionID = useId();
|
|
331
378
|
const statusMessageID = useId();
|
|
332
379
|
const counterID = useId();
|
|
333
380
|
const textareaRef = useRef<HTMLTextAreaElement | null>(null);
|
|
334
381
|
const containerRef = useRef<HTMLDivElement | null>(null);
|
|
382
|
+
// Tracks the counter "zone" last announced (under / near / over) so we only
|
|
383
|
+
// announce on a zone change, not on every keystroke.
|
|
384
|
+
const counterZoneRef = useRef<'under' | 'near' | 'over' | null>(null);
|
|
335
385
|
|
|
336
386
|
const [, startTransition] = useTransition();
|
|
337
387
|
const [optimisticValue, setOptimisticValue] = useOptimistic(value);
|
|
@@ -370,6 +420,43 @@ export function TextArea({
|
|
|
370
420
|
.filter(Boolean)
|
|
371
421
|
.join(' ') || undefined;
|
|
372
422
|
|
|
423
|
+
// Announce the character-count status through the shared live region, but
|
|
424
|
+
// only when the value crosses into a new zone (near the limit / over the
|
|
425
|
+
// limit) so we don't speak on every keystroke. Over-limit is assertive (an
|
|
426
|
+
// error the user should hear immediately); nearing the limit is polite.
|
|
427
|
+
const announceCounter = useCallback(
|
|
428
|
+
(length: number) => {
|
|
429
|
+
if (maxLength == null) {
|
|
430
|
+
return;
|
|
431
|
+
}
|
|
432
|
+
const zone: 'under' | 'near' | 'over' =
|
|
433
|
+
length > maxLength
|
|
434
|
+
? 'over'
|
|
435
|
+
: length >= maxLength * COUNTER_WARNING_THRESHOLD
|
|
436
|
+
? 'near'
|
|
437
|
+
: 'under';
|
|
438
|
+
if (zone === counterZoneRef.current) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
counterZoneRef.current = zone;
|
|
442
|
+
if (zone === 'over') {
|
|
443
|
+
announce(
|
|
444
|
+
t('@astryx.textArea.charactersOverLimit', {
|
|
445
|
+
count: length - maxLength,
|
|
446
|
+
}),
|
|
447
|
+
'assertive',
|
|
448
|
+
);
|
|
449
|
+
} else if (zone === 'near') {
|
|
450
|
+
announce(
|
|
451
|
+
t('@astryx.textArea.charactersRemaining', {
|
|
452
|
+
count: maxLength - length,
|
|
453
|
+
}),
|
|
454
|
+
);
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
[announce, t, maxLength],
|
|
458
|
+
);
|
|
459
|
+
|
|
373
460
|
const handleChange = (e: ChangeEvent<HTMLTextAreaElement>) => {
|
|
374
461
|
// Value can't change while showing a disabled message (the field is
|
|
375
462
|
// read-only and non-native-disabled), but guard the handler too so the
|
|
@@ -378,6 +465,7 @@ export function TextArea({
|
|
|
378
465
|
return;
|
|
379
466
|
}
|
|
380
467
|
const newValue = e.target.value;
|
|
468
|
+
announceCounter(newValue.length);
|
|
381
469
|
onChange?.(newValue, e);
|
|
382
470
|
if (changeAction && !e.defaultPrevented) {
|
|
383
471
|
startTransition(async () => {
|
|
@@ -434,20 +522,20 @@ export function TextArea({
|
|
|
434
522
|
stylex.props(
|
|
435
523
|
inputWrapperStyles.base,
|
|
436
524
|
styles.wrapper,
|
|
437
|
-
|
|
438
|
-
effectivelyDisabled && inputWrapperStyles.disabled,
|
|
525
|
+
isDisabled && inputWrapperStyles.disabled,
|
|
439
526
|
status && inputStatusBorderStyles[status.type],
|
|
440
|
-
status &&
|
|
441
|
-
!effectivelyDisabled &&
|
|
442
|
-
inputStatusHoverShadowStyles[status.type],
|
|
527
|
+
status && !isDisabled && inputStatusHoverShadowStyles[status.type],
|
|
443
528
|
status && inputStatusFocusWithinStyles[status.type],
|
|
444
529
|
xstyle,
|
|
445
530
|
),
|
|
446
531
|
className,
|
|
447
532
|
style,
|
|
448
533
|
)}>
|
|
449
|
-
{startIcon &&
|
|
450
|
-
|
|
534
|
+
{startIcon && (
|
|
535
|
+
<span {...stylex.props(styles.startIcon)}>
|
|
536
|
+
{renderIconSlot(startIcon, {size: 'sm', color: 'secondary'})}
|
|
537
|
+
</span>
|
|
538
|
+
)}
|
|
451
539
|
<textarea
|
|
452
540
|
{...rest}
|
|
453
541
|
ref={mergeRefs(ref, textareaRef)}
|
|
@@ -480,32 +568,37 @@ export function TextArea({
|
|
|
480
568
|
aria-busy={isBusy || undefined}
|
|
481
569
|
{...stylex.props(
|
|
482
570
|
styles.textarea,
|
|
483
|
-
|
|
484
|
-
|
|
571
|
+
textareaSizeStyles[size],
|
|
572
|
+
isDisabled && styles.textareaDisabled,
|
|
573
|
+
Boolean(startIcon) && styles.textareaWithStartIcon,
|
|
574
|
+
(status || isBusy) && styles.textareaWithStatus,
|
|
575
|
+
isBusy && !!statusIcon && styles.textareaWithBusyStatus,
|
|
576
|
+
maxLength != null && styles.textareaWithCounter,
|
|
485
577
|
)}
|
|
486
578
|
/>
|
|
487
|
-
{isBusy
|
|
488
|
-
|
|
489
|
-
|
|
579
|
+
{(isBusy || statusIcon) && (
|
|
580
|
+
<span {...stylex.props(styles.endSlot)}>
|
|
581
|
+
{isBusy && <Spinner size="sm" />}
|
|
582
|
+
{statusIcon}
|
|
583
|
+
</span>
|
|
584
|
+
)}
|
|
585
|
+
{maxLength != null && (
|
|
586
|
+
<div
|
|
587
|
+
id={counterID}
|
|
588
|
+
{...stylex.props(
|
|
589
|
+
styles.counter,
|
|
590
|
+
optimisticValue.length > maxLength && styles.counterError,
|
|
591
|
+
)}>
|
|
592
|
+
{optimisticValue.length > maxLength && (
|
|
593
|
+
// Non-color cue so the over-limit state isn't conveyed by the red
|
|
594
|
+
// color alone (WCAG 1.4.1). Decorative — the count text and the
|
|
595
|
+
// live-region announcement carry the meaning.
|
|
596
|
+
<Icon icon="warning" size="sm" />
|
|
597
|
+
)}
|
|
598
|
+
{optimisticValue.length}/{maxLength}
|
|
599
|
+
</div>
|
|
490
600
|
)}
|
|
491
601
|
</div>
|
|
492
|
-
{maxLength != null && (
|
|
493
|
-
<div
|
|
494
|
-
id={counterID}
|
|
495
|
-
{...stylex.props(
|
|
496
|
-
styles.counter,
|
|
497
|
-
optimisticValue.length > maxLength && styles.counterError,
|
|
498
|
-
)}>
|
|
499
|
-
{optimisticValue.length}/{maxLength}
|
|
500
|
-
<VisuallyHidden aria-live="polite">
|
|
501
|
-
{optimisticValue.length >= maxLength * COUNTER_WARNING_THRESHOLD
|
|
502
|
-
? optimisticValue.length > maxLength
|
|
503
|
-
? `${optimisticValue.length - maxLength} characters over limit`
|
|
504
|
-
: `${maxLength - optimisticValue.length} characters remaining`
|
|
505
|
-
: ''}
|
|
506
|
-
</VisuallyHidden>
|
|
507
|
-
</div>
|
|
508
|
-
)}
|
|
509
602
|
{showsDisabledMessage &&
|
|
510
603
|
disabledMessageTooltip.renderTooltip(disabledMessage)}
|
|
511
604
|
</Field>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'TextInput',
|
|
@@ -177,7 +177,7 @@ export const docs = {
|
|
|
177
177
|
},
|
|
178
178
|
};
|
|
179
179
|
|
|
180
|
-
/** @type {import('
|
|
180
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
181
181
|
export const docsZh = {
|
|
182
182
|
name: 'TextInput',
|
|
183
183
|
displayName: 'Text Input',
|
|
@@ -343,7 +343,7 @@ export const docsZh = {
|
|
|
343
343
|
},
|
|
344
344
|
};
|
|
345
345
|
|
|
346
|
-
/** @type {import('
|
|
346
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
347
347
|
export const docsDense = {
|
|
348
348
|
description: 'Text input for collecting user text w/ label, description, validation status, optional/required indicators.',
|
|
349
349
|
usage: {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/TextInput/TextInput.test.tsx (tests for new/changed behavior)
|
|
14
14
|
* - /packages/core/src/TextInput/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/TextInput.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/TextInput/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/TextInput/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
19
|
import {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
/** @type {import('
|
|
3
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentDoc} */
|
|
4
4
|
|
|
5
5
|
export const docs = {
|
|
6
6
|
name: 'Thumbnail',
|
|
@@ -98,7 +98,7 @@ export const docs = {
|
|
|
98
98
|
},
|
|
99
99
|
};
|
|
100
100
|
|
|
101
|
-
/** @type {import('
|
|
101
|
+
/** @type {import('@astryxdesign/cli/authoring').ComponentTranslationDoc} */
|
|
102
102
|
export const docsZh = {
|
|
103
103
|
propDescriptions: {
|
|
104
104
|
src: '\u56FE\u7247\u6E90 URL\u3002',
|