@astryxdesign/core 0.1.9 → 0.2.0-canary.0b7a99e
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 +107 -0
- 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 +43 -4
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +194 -63
- package/dist/Avatar/AvatarStatusDot.d.ts +8 -30
- 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 +8 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +59 -7
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +8 -3
- 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 +7 -35
- 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.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +12 -5
- 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 +19 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +16 -1
- package/dist/Button/Button.d.ts +3 -21
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +8 -21
- 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.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +51 -10
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +2 -2
- package/dist/Calendar/styles.d.ts +32 -33
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +32 -33
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +2 -2
- package/dist/Carousel/Carousel.d.ts +1 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +23 -13
- 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 +2 -2
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +4 -2
- package/dist/Chat/ChatLayout.d.ts +8 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +17 -6
- 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.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +9 -9
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.js +1 -1
- 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/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +10 -3
- package/dist/Chat/useTriggerMenu.js +2 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -7
- 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.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +20 -5
- package/dist/Citation/Citation.d.ts +23 -2
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +21 -7
- 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/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +16 -10
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +4 -2
- 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 +2 -2
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +43 -4
- 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 +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +1 -1
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -2
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +24 -6
- 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 +10 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +34 -20
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +24 -21
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +24 -19
- 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 +4 -20
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +14 -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 +7 -1
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +23 -6
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +42 -64
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +6 -3
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +10 -3
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +435 -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 +24 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemHover.js +34 -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 +27 -10
- package/dist/EmptyState/EmptyState.d.ts +1 -1
- package/dist/EmptyState/EmptyState.js +1 -1
- package/dist/Field/Field.d.ts +4 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +5 -2
- package/dist/Field/FieldLabel.d.ts +4 -3
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +50 -7
- 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 +10 -17
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +52 -20
- 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.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +94 -66
- 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/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +10 -4
- package/dist/Icon/Icon.d.ts +16 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -4
- package/dist/Icon/globalIconRegistry.js +1 -1
- 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 +17 -4
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +32 -7
- package/dist/Kbd/Kbd.d.ts +1 -1
- package/dist/Kbd/Kbd.js +1 -1
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +10 -2
- 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 +35 -16
- 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.d.ts.map +1 -1
- package/dist/List/List.js +7 -4
- package/dist/List/ListItem.d.ts +12 -2
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +3 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +11 -4
- package/dist/MetadataList/MetadataList.d.ts +2 -2
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +5 -3
- 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 +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts +10 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +88 -46
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +11 -3
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +23 -18
- package/dist/Outline/Outline.js +3 -3
- 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 +12 -18
- 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 +1 -1
- package/dist/Popover/Popover.js +1 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +10 -3
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +3 -1
- package/dist/ProgressBar/ProgressBar.d.ts +1 -20
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +7 -16
- 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 +3 -3
- package/dist/RadioList/RadioList.js +1 -1
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +6 -6
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +45 -22
- 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 +2 -2
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +6 -4
- 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 +9 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +73 -20
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +6 -6
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +14 -11
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.js +1 -1
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +13 -11
- 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.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +146 -83
- package/dist/Spinner/Spinner.d.ts +4 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +12 -3
- 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 +9 -2
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +172 -92
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.js +3 -3
- package/dist/TabList/TabList.d.ts +3 -12
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +6 -10
- package/dist/TabList/TabListContext.d.ts +0 -5
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +0 -5
- package/dist/TabList/TabMenu.d.ts +1 -1
- package/dist/TabList/TabMenu.js +2 -2
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +31 -5
- 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 +4 -4
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +4 -4
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- 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 +18 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +58 -30
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +3 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +15 -7
- 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 +65 -25
- package/dist/Table/types.d.ts +32 -0
- package/dist/Table/types.d.ts.map +1 -1
- 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 +11 -2
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +120 -53
- package/dist/TextInput/TextInput.d.ts +11 -3
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +21 -18
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +52 -46
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +18 -18
- package/dist/Timestamp/Timestamp.d.ts +31 -3
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +49 -78
- package/dist/Timestamp/formatInstant.d.ts +41 -0
- package/dist/Timestamp/formatInstant.d.ts.map +1 -0
- package/dist/Timestamp/formatInstant.js +177 -0
- package/dist/Timestamp/index.d.ts +1 -0
- package/dist/Timestamp/index.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.d.ts +56 -0
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -0
- package/dist/Timestamp/tooltipEntries.js +163 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +61 -9
- package/dist/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +4 -2
- 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 +10 -5
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +72 -46
- package/dist/Token/TokenLink.d.ts +62 -0
- package/dist/Token/TokenLink.d.ts.map +1 -0
- package/dist/Token/TokenLink.js +76 -0
- package/dist/Token/index.d.ts +26 -0
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Token/index.js +14 -0
- package/dist/Tokenizer/Tokenizer.d.ts +10 -3
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +5 -3
- 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/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -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.js +1 -1
- package/dist/TopNav/TopNavItem.d.ts +4 -2
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +31 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +10 -4
- 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.js +1 -1
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +2 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +9 -7
- package/dist/TreeList/TreeListItem.d.ts +1 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +33 -15
- 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 +10 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +23 -12
- package/dist/Typeahead/Typeahead.d.ts +10 -3
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +12 -3
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -2
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +21 -11
- 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 +150 -51
- package/dist/astryx.umd.js +51 -51
- 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 +4 -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/useAnnounce.d.ts +3 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -1
- package/dist/hooks/useAnnounce.js +39 -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/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +52 -11
- 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/useHotkeys.d.ts +9 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +9 -0
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useInputStatusIcon.d.ts +38 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
- package/dist/hooks/useInputStatusIcon.js +169 -0
- package/dist/hooks/useKeyboardHint.d.ts +2 -2
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +5 -3
- 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/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/useDirection.d.ts +2 -0
- package/dist/i18n/useDirection.d.ts.map +1 -0
- package/dist/i18n/useDirection.js +27 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/theme/defineTheme.d.ts +6 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- 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 +4 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/types.d.ts +10 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/plainDate.d.ts +17 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +23 -4
- package/dist/utils/rtlStyles.d.ts +45 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +52 -0
- package/groups.doc.mjs +2 -2
- package/locales/en.json +120 -0
- package/locales/pseudo.json +90 -0
- package/package.json +9 -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 +53 -6
- package/src/Avatar/Avatar.test.tsx +218 -0
- package/src/Avatar/Avatar.tsx +293 -82
- package/src/Avatar/AvatarStatusDot.doc.mjs +5 -5
- package/src/Avatar/AvatarStatusDot.tsx +8 -31
- package/src/Avatar/index.ts +26 -1
- package/src/AvatarGroup/AvatarGroup.doc.mjs +5 -3
- package/src/AvatarGroup/AvatarGroup.test.tsx +162 -2
- package/src/AvatarGroup/AvatarGroup.tsx +59 -4
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +6 -3
- 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 +14 -51
- 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 +11 -11
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +52 -1
- package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
- package/src/Breadcrumbs/index.ts +23 -5
- package/src/Button/Button.doc.mjs +3 -7
- package/src/Button/Button.test.tsx +16 -0
- package/src/Button/Button.tsx +8 -25
- 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 +185 -23
- package/src/Calendar/Calendar.tsx +74 -17
- package/src/Calendar/dayCellUtils.test.ts +18 -18
- package/src/Calendar/dayCellUtils.ts +2 -2
- package/src/Calendar/styles.ts +35 -41
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +2 -2
- package/src/Carousel/Carousel.doc.mjs +3 -3
- package/src/Carousel/Carousel.tsx +26 -7
- 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 +3 -3
- 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 +2 -2
- package/src/Chat/ChatComposerInput.tsx +3 -3
- package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.tsx +8 -2
- package/src/Chat/ChatLayout.doc.mjs +1 -1
- package/src/Chat/ChatLayout.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +27 -6
- 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 +16 -11
- 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/ChatSystemMessage.doc.mjs +1 -1
- package/src/Chat/ChatSystemMessage.test.tsx +5 -0
- 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/Chat/ChatToolCalls.tsx +9 -2
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +9 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
- package/src/CheckboxInput/CheckboxInput.tsx +22 -7
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -3
- package/src/CheckboxList/CheckboxList.test.tsx +94 -3
- package/src/CheckboxList/CheckboxList.tsx +1 -1
- package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxListItem.tsx +18 -11
- package/src/Citation/Citation.doc.mjs +6 -5
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +44 -12
- 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/CodeBlock/CodeBlock.test.tsx +17 -0
- package/src/CodeBlock/CodeBlock.tsx +38 -11
- package/src/Collapsible/Collapsible.doc.mjs +4 -3
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +17 -7
- 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.test.tsx +95 -1
- package/src/CommandPalette/CommandPalette.tsx +42 -3
- 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 +1 -1
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteItem.tsx +2 -2
- 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.test.tsx +59 -2
- package/src/ContextMenu/ContextMenu.tsx +23 -12
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +28 -3
- package/src/DateInput/DateInput.test.tsx +230 -0
- package/src/DateInput/DateInput.tsx +52 -30
- package/src/DateRangeInput/DateRangeInput.doc.mjs +18 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +43 -31
- package/src/DateTimeInput/DateTimeInput.doc.mjs +25 -4
- package/src/DateTimeInput/DateTimeInput.test.tsx +112 -0
- package/src/DateTimeInput/DateTimeInput.tsx +45 -40
- 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.test.tsx +32 -8
- package/src/Divider/Divider.tsx +16 -20
- package/src/Divider/index.ts +19 -5
- package/src/DropdownMenu/DropdownMenu.doc.mjs +8 -5
- package/src/DropdownMenu/DropdownMenu.test.tsx +95 -0
- package/src/DropdownMenu/DropdownMenu.tsx +32 -13
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +49 -66
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +10 -4
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +5 -13
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +19 -4
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +680 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +569 -0
- package/src/DropdownMenu/index.ts +16 -0
- package/src/DropdownMenu/menuItemHover.ts +40 -0
- package/src/DropdownMenu/menuItemRoles.ts +9 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +40 -14
- 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 +15 -10
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +103 -0
- package/src/Field/FieldLabel.tsx +62 -6
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
- package/src/FieldStatus/FieldStatus.test.tsx +133 -0
- package/src/FieldStatus/FieldStatus.tsx +62 -23
- package/src/FieldStatus/index.ts +20 -5
- package/src/FileInput/FileInput.doc.mjs +26 -5
- package/src/FileInput/FileInput.test.tsx +104 -13
- package/src/FileInput/FileInput.tsx +107 -80
- 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/HoverCard/useHoverCard.tsx +15 -3
- package/src/Icon/Icon.doc.mjs +16 -3
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +52 -4
- package/src/Icon/globalIconRegistry.tsx +1 -1
- 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 +8 -3
- package/src/Item/Item.test.tsx +88 -0
- package/src/Item/Item.tsx +58 -12
- 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/layerAnimations.stylex.ts +23 -0
- 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 +31 -11
- 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.test.tsx +17 -29
- package/src/List/List.tsx +7 -2
- package/src/List/ListItem.doc.mjs +13 -1
- package/src/List/ListItem.tsx +14 -1
- package/src/Markdown/Markdown.doc.mjs +1 -1
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +7 -3
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.test.tsx +24 -0
- package/src/MetadataList/MetadataList.tsx +7 -3
- 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 +1 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +23 -3
- package/src/MultiSelector/MultiSelector.test.tsx +436 -0
- package/src/MultiSelector/MultiSelector.tsx +134 -68
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NumberInput/NumberInput.doc.mjs +24 -3
- package/src/NumberInput/NumberInput.test.tsx +71 -0
- package/src/NumberInput/NumberInput.tsx +36 -27
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.test.tsx +12 -12
- package/src/Outline/Outline.tsx +3 -3
- 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 +13 -25
- package/src/Pagination/index.ts +21 -1
- package/src/Popover/Popover.doc.mjs +3 -3
- package/src/Popover/Popover.tsx +1 -1
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +18 -3
- package/src/PowerSearch/PowerSearch.test.tsx +23 -0
- package/src/PowerSearch/PowerSearch.tsx +11 -2
- package/src/ProgressBar/ProgressBar.doc.mjs +3 -3
- package/src/ProgressBar/ProgressBar.test.tsx +34 -0
- package/src/ProgressBar/ProgressBar.tsx +18 -23
- package/src/ProgressBar/index.ts +22 -5
- package/src/RadioList/RadioList.doc.mjs +9 -3
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +3 -3
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +13 -6
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +95 -0
- package/src/Resizable/ResizeHandle.tsx +71 -25
- 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.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +23 -3
- 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 +18 -3
- package/src/Selector/Selector.test.tsx +400 -0
- package/src/Selector/Selector.tsx +96 -24
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.tsx +2 -9
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +10 -8
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +1 -1
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +6 -4
- 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.test.tsx +16 -0
- package/src/Skeleton/Skeleton.tsx +14 -2
- package/src/Slider/Slider.doc.mjs +9 -3
- package/src/Slider/Slider.test.tsx +240 -12
- package/src/Slider/Slider.tsx +102 -33
- package/src/Spinner/Spinner.doc.mjs +3 -3
- package/src/Spinner/Spinner.test.tsx +10 -8
- package/src/Spinner/Spinner.tsx +16 -6
- 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 +145 -45
- package/src/Switch/Switch.test.tsx +145 -0
- package/src/Switch/Switch.tsx +150 -33
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +3 -3
- package/src/TabList/TabList.doc.mjs +3 -9
- package/src/TabList/TabList.test.tsx +3 -15
- package/src/TabList/TabList.tsx +7 -18
- package/src/TabList/TabListContext.ts +0 -6
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +3 -3
- package/src/Table/BaseTable.tsx +35 -3
- package/src/Table/Table.doc.mjs +14 -3
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +4 -4
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +4 -4
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +9 -6
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +48 -21
- package/src/Table/plugins/selection/useTableSelection.test.tsx +61 -3
- package/src/Table/plugins/selection/useTableSelection.tsx +3 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +38 -9
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +71 -14
- package/src/Table/types.ts +33 -0
- 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 +3 -3
- 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 +26 -5
- package/src/TextArea/TextArea.test.tsx +132 -4
- package/src/TextArea/TextArea.tsx +162 -68
- package/src/TextInput/TextInput.doc.mjs +24 -3
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +29 -26
- package/src/Thumbnail/Thumbnail.doc.mjs +3 -3
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +29 -36
- package/src/TimeInput/TimeInput.doc.mjs +24 -3
- package/src/TimeInput/TimeInput.test.tsx +23 -0
- package/src/TimeInput/TimeInput.tsx +25 -26
- package/src/Timestamp/Timestamp.doc.mjs +35 -9
- package/src/Timestamp/Timestamp.test.tsx +371 -0
- package/src/Timestamp/Timestamp.tsx +97 -94
- package/src/Timestamp/formatInstant.ts +218 -0
- package/src/Timestamp/index.ts +4 -0
- package/src/Timestamp/tooltipEntries.test.ts +552 -0
- package/src/Timestamp/tooltipEntries.ts +210 -0
- package/src/Toast/Toast.doc.mjs +3 -3
- package/src/Toast/ToastViewport.test.tsx +218 -8
- package/src/Toast/ToastViewport.tsx +71 -12
- package/src/Toast/useToast.doc.mjs +2 -2
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.test.tsx +24 -0
- package/src/ToggleButton/ToggleButton.tsx +20 -2
- 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.test.tsx +166 -15
- package/src/Token/Token.tsx +79 -48
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +27 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +26 -4
- package/src/Tokenizer/Tokenizer.test.tsx +23 -0
- package/src/Tokenizer/Tokenizer.tsx +15 -3
- 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.test.tsx +46 -0
- package/src/Tooltip/Tooltip.tsx +1 -1
- package/src/Tooltip/useTooltip.doc.mjs +2 -2
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.doc.mjs +3 -3
- package/src/TopNav/TopNav.test.tsx +93 -2
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -1
- package/src/TopNav/TopNavHeading.tsx +1 -1
- package/src/TopNav/TopNavItem.doc.mjs +4 -4
- package/src/TopNav/TopNavItem.tsx +36 -7
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +27 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +2 -2
- 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 +1 -1
- package/src/TreeList/TreeList.doc.mjs +9 -3
- package/src/TreeList/TreeList.test.tsx +50 -10
- package/src/TreeList/TreeList.tsx +6 -1
- package/src/TreeList/TreeListBranches.tsx +9 -7
- package/src/TreeList/TreeListItem.tsx +34 -12
- 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 +43 -16
- package/src/Typeahead/Typeahead.doc.mjs +16 -3
- package/src/Typeahead/Typeahead.test.tsx +112 -0
- package/src/Typeahead/Typeahead.tsx +18 -2
- package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +3 -2
- 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__/forcedColors.ts +60 -0
- package/src/__tests__/inputWidthContract.test.tsx +69 -0
- package/src/doc-mjs.d.ts +22 -0
- 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 +13 -0
- package/src/hooks/isRtlElement.ts +27 -0
- package/src/hooks/useAnnounce.test.tsx +75 -2
- package/src/hooks/useAnnounce.ts +47 -1
- 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/useFocusTrap.test.tsx +104 -0
- package/src/hooks/useFocusTrap.ts +61 -12
- package/src/hooks/useGridFocus.doc.mjs +5 -5
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useHotkeys.doc.mjs +2 -2
- package/src/hooks/useHotkeys.ts +9 -0
- 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 +221 -0
- package/src/hooks/useInputStatusIcon.tsx +235 -0
- package/src/hooks/useKeyboardHint.doc.mjs +2 -2
- package/src/hooks/useKeyboardHint.test.tsx +22 -0
- package/src/hooks/useKeyboardHint.tsx +7 -3
- package/src/hooks/useListFocus.doc.mjs +27 -5
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- 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/i18n/InternationalizationContext.ts +4 -0
- package/src/i18n/InternationalizationProvider.doc.mjs +2 -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/useDirection.ts +29 -0
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +14 -10
- package/src/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- 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/defineTheme.ts +6 -0
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/expandColorScale.test.ts +144 -0
- package/src/theme/expandColorScale.ts +53 -15
- package/src/theme/generateThemeRules.test.ts +42 -0
- package/src/theme/index.ts +4 -8
- package/src/theme/types.ts +14 -13
- package/src/theme/useTheme.doc.mjs +2 -2
- package/src/utils/index.ts +2 -0
- package/src/utils/plainDate.test.ts +24 -6
- package/src/utils/plainDate.ts +18 -4
- package/src/utils/rtlStyles.ts +49 -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
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file isRtlElement.ts
|
|
7
|
+
* @input DOM element (nullable)
|
|
8
|
+
* @output Exports isRtlElement helper resolving an element's computed text
|
|
9
|
+
* direction
|
|
10
|
+
* @position Internal hook utility; used by useListFocus and useGridFocus to
|
|
11
|
+
* auto-detect RTL for arrow-key navigation (same getComputedStyle precedent
|
|
12
|
+
* as Resizable's ResizeHandle drag deltas).
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Whether `el` renders right-to-left, per its computed `direction`.
|
|
17
|
+
*
|
|
18
|
+
* SSR-safe: returns false when `el` is null or no DOM is available. Callers
|
|
19
|
+
* should invoke this lazily (on keydown, not on render) so getComputedStyle
|
|
20
|
+
* runs only when a horizontal arrow key is actually handled.
|
|
21
|
+
*/
|
|
22
|
+
export function isRtlElement(el) {
|
|
23
|
+
if (!el || typeof window === 'undefined') {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return window.getComputedStyle(el).direction === 'rtl';
|
|
27
|
+
}
|
|
@@ -17,6 +17,9 @@ export type AnnounceFn = (message: string, politeness?: AnnouncePoliteness) => v
|
|
|
17
17
|
* The polite and assertive regions are created once on first use and kept
|
|
18
18
|
* mounted, so announcements are reliable even for messages that appear
|
|
19
19
|
* immediately (unlike a live region rendered together with its content).
|
|
20
|
+
* Each message is automatically cleared a couple of seconds after being
|
|
21
|
+
* announced, so users browsing the DOM later do not encounter stale status
|
|
22
|
+
* text; announcing again before the clear simply resets the countdown.
|
|
20
23
|
*
|
|
21
24
|
* @example
|
|
22
25
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnnounce.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnounce.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAnnounce.d.ts","sourceRoot":"","sources":["../../src/hooks/useAnnounce.ts"],"names":[],"mappings":"AAmBA;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,kBAAkB,KAC5B,IAAI,CAAC;AAgIV;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAaxC;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAQhD"}
|
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* @input Uses React useCallback; DOM APIs for a singleton live-region pair
|
|
8
8
|
* @output Exports useAnnounce hook and AnnouncePoliteness type
|
|
9
9
|
* @position Core a11y hook; provides imperative screen-reader announcements
|
|
10
|
-
* via persistently-mounted polite/assertive live regions
|
|
10
|
+
* via persistently-mounted polite/assertive live regions; regions are
|
|
11
|
+
* auto-cleared shortly after announcing so stale status text does not
|
|
12
|
+
* linger in the accessibility tree
|
|
11
13
|
*
|
|
12
14
|
* SYNC: When modified, update:
|
|
13
15
|
* - /packages/core/src/hooks/index.ts
|
|
@@ -31,6 +33,32 @@ const CONTAINER_ATTR = 'data-astryx-live-region';
|
|
|
31
33
|
// Visually-hidden clip block (matches the VisuallyHidden primitive). Applied
|
|
32
34
|
// inline so the regions work without any stylesheet being present.
|
|
33
35
|
const VISUALLY_HIDDEN_CSS = 'position:absolute;width:1px;height:1px;margin:-1px;padding:0;' + 'overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;' + 'inset-block-start:0;inset-inline-start:0;pointer-events:none;' + 'user-select:none;';
|
|
36
|
+
/**
|
|
37
|
+
* How long an announcement stays in its region before being auto-cleared.
|
|
38
|
+
* Long enough for screen readers to pick the message up and finish reading
|
|
39
|
+
* it; clearing afterwards keeps stale status text out of the accessibility
|
|
40
|
+
* tree for users who browse the DOM later. Each announce resets the timer.
|
|
41
|
+
*/
|
|
42
|
+
const CLEAR_DELAY_MS = 2000;
|
|
43
|
+
const clearTimers = {
|
|
44
|
+
polite: null,
|
|
45
|
+
assertive: null
|
|
46
|
+
};
|
|
47
|
+
function cancelScheduledClear(politeness) {
|
|
48
|
+
const timer = clearTimers[politeness];
|
|
49
|
+
if (timer != null) {
|
|
50
|
+
clearTimeout(timer);
|
|
51
|
+
clearTimers[politeness] = null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function scheduleClear(politeness, target) {
|
|
55
|
+
cancelScheduledClear(politeness);
|
|
56
|
+
clearTimers[politeness] = setTimeout(() => {
|
|
57
|
+
clearTimers[politeness] = null;
|
|
58
|
+
target.textContent = '';
|
|
59
|
+
}, CLEAR_DELAY_MS);
|
|
60
|
+
}
|
|
61
|
+
|
|
34
62
|
// Singleton: the live regions are created ONCE and stay mounted for the
|
|
35
63
|
// lifetime of the document. This is the crux of reliable announcements — many
|
|
36
64
|
// screen readers will not announce content injected into a live region that is
|
|
@@ -81,6 +109,10 @@ function announceMessage(message, politeness) {
|
|
|
81
109
|
requestAnimationFrame(() => {
|
|
82
110
|
target.textContent = message;
|
|
83
111
|
});
|
|
112
|
+
// Auto-clear so the last message does not linger in the accessibility tree
|
|
113
|
+
// indefinitely. Scheduled per announce, so a newer announcement always
|
|
114
|
+
// resets the countdown (the delay comfortably outlasts the rAF re-set).
|
|
115
|
+
scheduleClear(politeness, target);
|
|
84
116
|
}
|
|
85
117
|
|
|
86
118
|
/**
|
|
@@ -89,6 +121,7 @@ function announceMessage(message, politeness) {
|
|
|
89
121
|
* so stale status text does not linger in the accessibility tree.
|
|
90
122
|
*/
|
|
91
123
|
function clearRegion(politeness) {
|
|
124
|
+
cancelScheduledClear(politeness);
|
|
92
125
|
if (!regions) {
|
|
93
126
|
return;
|
|
94
127
|
}
|
|
@@ -103,6 +136,9 @@ function clearRegion(politeness) {
|
|
|
103
136
|
* The polite and assertive regions are created once on first use and kept
|
|
104
137
|
* mounted, so announcements are reliable even for messages that appear
|
|
105
138
|
* immediately (unlike a live region rendered together with its content).
|
|
139
|
+
* Each message is automatically cleared a couple of seconds after being
|
|
140
|
+
* announced, so users browsing the DOM later do not encounter stale status
|
|
141
|
+
* text; announcing again before the clear simply resets the countdown.
|
|
106
142
|
*
|
|
107
143
|
* @example
|
|
108
144
|
* ```
|
|
@@ -134,6 +170,8 @@ export function useAnnounce() {
|
|
|
134
170
|
* @internal
|
|
135
171
|
*/
|
|
136
172
|
export function __resetLiveRegionsForTest() {
|
|
173
|
+
cancelScheduledClear('polite');
|
|
174
|
+
cancelScheduledClear('assertive');
|
|
137
175
|
if (regions) {
|
|
138
176
|
regions.polite.remove();
|
|
139
177
|
regions.assertive.remove();
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file useContainerReveal.ts
|
|
3
|
+
* @input Uses React, the generated marker pool, useDevWarning
|
|
4
|
+
* @output Exports useContainerReveal — a headless hover/focus reveal primitive
|
|
5
|
+
* @position Core hook. Consumed by any component that reveals (or conceals)
|
|
6
|
+
* content when its container is hovered or focused — e.g. Thumbnail's remove
|
|
7
|
+
* button, TreeList row actions.
|
|
8
|
+
*
|
|
9
|
+
* Gives a container a scoped hover/focus-within trigger that reveals or
|
|
10
|
+
* conceals content inside it, entirely in CSS (no hover state in JS, no
|
|
11
|
+
* re-render on hover). The caller authors NO StyleX: the hook hands out a
|
|
12
|
+
* marker + matching reveal styles from a pre-compiled pool.
|
|
13
|
+
*
|
|
14
|
+
* ACCESSIBILITY (WCAG 2.2 by construction):
|
|
15
|
+
* - Revealed content is visually hidden at rest via position + opacity, so it
|
|
16
|
+
* stays in the accessibility tree and tab order — never display:none.
|
|
17
|
+
* - Keyboard: revealed on :focus-within, so tabbing in shows it.
|
|
18
|
+
* - Touch: always visible on coarse pointers; never gated behind hover.
|
|
19
|
+
* - Concealed (inverted) content is a mouse-only visual swap: it ignores
|
|
20
|
+
* :focus-within (a keyboard user must never watch content vanish) and stays
|
|
21
|
+
* visible on touch and in the a11y tree.
|
|
22
|
+
* - Motion: honors prefers-reduced-motion.
|
|
23
|
+
*
|
|
24
|
+
* SYNC: When modified, update:
|
|
25
|
+
* - /packages/core/src/hooks/index.ts (export)
|
|
26
|
+
* - containerReveal.pool.stylex.ts (if the slot shape changes)
|
|
27
|
+
*/
|
|
28
|
+
import { type CSSProperties } from 'react';
|
|
29
|
+
export interface UseContainerRevealOptions {
|
|
30
|
+
/**
|
|
31
|
+
* When false the hook is inert: no marker is applied and content getters
|
|
32
|
+
* return no styles, so content is always shown. Lets a component gate on its
|
|
33
|
+
* own prop (e.g. `revealOn === 'hover'`).
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
isEnabled?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface ContentRevealOptions {
|
|
39
|
+
/**
|
|
40
|
+
* Conceal-on-hover instead of reveal-on-hover: content is visible at rest
|
|
41
|
+
* and fades out while the container is hovered. Mouse-only and visual —
|
|
42
|
+
* stays in the a11y tree, ignores focus-within, stays visible on touch.
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
isRevealInverted?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Reserve the content's layout box while hidden (opacity-only) instead of
|
|
48
|
+
* collapsing it, to avoid layout shift when it appears.
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
isLayoutPreserved?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface UseContainerRevealReturn {
|
|
54
|
+
/** Spread onto the container whose hover/focus-within drives the reveal. */
|
|
55
|
+
getContainerProps: () => {
|
|
56
|
+
className?: string;
|
|
57
|
+
style?: CSSProperties;
|
|
58
|
+
};
|
|
59
|
+
/** Spread onto each revealed / concealed child. */
|
|
60
|
+
getContentRevealProps: (options?: ContentRevealOptions) => {
|
|
61
|
+
className?: string;
|
|
62
|
+
style?: CSSProperties;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Scoped, CSS-only hover/focus reveal for content inside a container.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```tsx
|
|
70
|
+
* const {getContainerProps, getContentRevealProps} = useContainerReveal({
|
|
71
|
+
* isEnabled: revealOn === 'hover',
|
|
72
|
+
* });
|
|
73
|
+
*
|
|
74
|
+
* <div {...mergeProps(getContainerProps(), stylex.props(styles.row))}>
|
|
75
|
+
* {label}
|
|
76
|
+
* <span {...mergeProps(getContentRevealProps(), stylex.props(styles.actions))}>
|
|
77
|
+
* {actions}
|
|
78
|
+
* </span>
|
|
79
|
+
* </div>
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function useContainerReveal(options?: UseContainerRevealOptions): UseContainerRevealReturn;
|
|
83
|
+
//# sourceMappingURL=useContainerReveal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useContainerReveal.d.ts","sourceRoot":"","sources":["../../src/hooks/useContainerReveal.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAsB,KAAK,aAAa,EAAC,MAAM,OAAO,CAAC;AA0C9D,MAAM,WAAW,yBAAyB;IACxC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,iBAAiB,EAAE,MAAM;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAC,CAAC;IACrE,mDAAmD;IACnD,qBAAqB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK;QACzD,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,aAAa,CAAC;KACvB,CAAC;CACH;AAID;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAiD1B"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useContainerReveal.ts
|
|
7
|
+
* @input Uses React, the generated marker pool, useDevWarning
|
|
8
|
+
* @output Exports useContainerReveal — a headless hover/focus reveal primitive
|
|
9
|
+
* @position Core hook. Consumed by any component that reveals (or conceals)
|
|
10
|
+
* content when its container is hovered or focused — e.g. Thumbnail's remove
|
|
11
|
+
* button, TreeList row actions.
|
|
12
|
+
*
|
|
13
|
+
* Gives a container a scoped hover/focus-within trigger that reveals or
|
|
14
|
+
* conceals content inside it, entirely in CSS (no hover state in JS, no
|
|
15
|
+
* re-render on hover). The caller authors NO StyleX: the hook hands out a
|
|
16
|
+
* marker + matching reveal styles from a pre-compiled pool.
|
|
17
|
+
*
|
|
18
|
+
* ACCESSIBILITY (WCAG 2.2 by construction):
|
|
19
|
+
* - Revealed content is visually hidden at rest via position + opacity, so it
|
|
20
|
+
* stays in the accessibility tree and tab order — never display:none.
|
|
21
|
+
* - Keyboard: revealed on :focus-within, so tabbing in shows it.
|
|
22
|
+
* - Touch: always visible on coarse pointers; never gated behind hover.
|
|
23
|
+
* - Concealed (inverted) content is a mouse-only visual swap: it ignores
|
|
24
|
+
* :focus-within (a keyboard user must never watch content vanish) and stays
|
|
25
|
+
* visible on touch and in the a11y tree.
|
|
26
|
+
* - Motion: honors prefers-reduced-motion.
|
|
27
|
+
*
|
|
28
|
+
* SYNC: When modified, update:
|
|
29
|
+
* - /packages/core/src/hooks/index.ts (export)
|
|
30
|
+
* - containerReveal.pool.stylex.ts (if the slot shape changes)
|
|
31
|
+
*/
|
|
32
|
+
import { useState, useEffect } from 'react';
|
|
33
|
+
import * as stylex from '@stylexjs/stylex';
|
|
34
|
+
import { POOL, POOL_SIZE } from "./containerReveal.pool.stylex.js";
|
|
35
|
+
import { useDevWarning } from "./useDevWarning.js";
|
|
36
|
+
|
|
37
|
+
// Module-level free-list. Each mounted, enabled useContainerReveal claims a
|
|
38
|
+
// distinct pool slot so that any two CONCURRENTLY mounted containers — in
|
|
39
|
+
// particular a nested container inside another's revealed content — get
|
|
40
|
+
// different markers and cannot leak hover/focus into one another. Slots are
|
|
41
|
+
// returned on unmount. Sibling containers that would only ever collide when
|
|
42
|
+
// the pool is exhausted are harmless (a sibling is never an ancestor), so the
|
|
43
|
+
// pool only needs to cover the number of concurrently mounted containers, not
|
|
44
|
+
// instances over time.
|
|
45
|
+
const claimed = new Array(POOL_SIZE).fill(false);
|
|
46
|
+
function claimSlot() {
|
|
47
|
+
for (let i = 0; i < POOL_SIZE; i++) {
|
|
48
|
+
if (!claimed[i]) {
|
|
49
|
+
claimed[i] = true;
|
|
50
|
+
return {
|
|
51
|
+
index: i,
|
|
52
|
+
isExhausted: false
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Exhausted: fall back to slot 0. Safe for siblings (a sibling is never an
|
|
57
|
+
// ancestor); only nesting deeper than POOL_SIZE could reintroduce a leak.
|
|
58
|
+
// Surfaced via useDevWarning so the pool can be grown.
|
|
59
|
+
return {
|
|
60
|
+
index: 0,
|
|
61
|
+
isExhausted: true
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function releaseSlot(index, isExhausted) {
|
|
65
|
+
// A fallback claim never owned the slot exclusively; leave it as-is.
|
|
66
|
+
if (!isExhausted) {
|
|
67
|
+
claimed[index] = false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const EMPTY = Object.freeze({});
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Scoped, CSS-only hover/focus reveal for content inside a container.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```tsx
|
|
77
|
+
* const {getContainerProps, getContentRevealProps} = useContainerReveal({
|
|
78
|
+
* isEnabled: revealOn === 'hover',
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* <div {...mergeProps(getContainerProps(), stylex.props(styles.row))}>
|
|
82
|
+
* {label}
|
|
83
|
+
* <span {...mergeProps(getContentRevealProps(), stylex.props(styles.actions))}>
|
|
84
|
+
* {actions}
|
|
85
|
+
* </span>
|
|
86
|
+
* </div>
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export function useContainerReveal(options = {}) {
|
|
90
|
+
const {
|
|
91
|
+
isEnabled = true
|
|
92
|
+
} = options;
|
|
93
|
+
|
|
94
|
+
// Claim a slot for this container's lifetime. Assigned in the initializer
|
|
95
|
+
// (not the render body) and released on unmount so the free-list stays
|
|
96
|
+
// effect-scoped and StrictMode-safe.
|
|
97
|
+
const [claim] = useState(() => isEnabled ? claimSlot() : null);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
if (claim == null) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
return () => releaseSlot(claim.index, claim.isExhausted);
|
|
103
|
+
}, [claim]);
|
|
104
|
+
useDevWarning('useContainerReveal', `More than ${POOL_SIZE} reveal containers are mounted at once; nested ` + `containers beyond the pool may share a marker. Add markers to ` + `containerReveal.pool.stylex.ts and raise POOL_SIZE.`, claim?.isExhausted ?? false);
|
|
105
|
+
if (claim == null) {
|
|
106
|
+
return {
|
|
107
|
+
getContainerProps: () => EMPTY,
|
|
108
|
+
getContentRevealProps: () => EMPTY
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const slot = POOL[claim.index];
|
|
112
|
+
return {
|
|
113
|
+
getContainerProps: () => stylex.props(slot.marker),
|
|
114
|
+
getContentRevealProps: (contentOptions = {}) => {
|
|
115
|
+
const {
|
|
116
|
+
isRevealInverted = false,
|
|
117
|
+
isLayoutPreserved = false
|
|
118
|
+
} = contentOptions;
|
|
119
|
+
const style = isRevealInverted ? isLayoutPreserved ? slot.concealLayoutPreserved : slot.conceal : isLayoutPreserved ? slot.revealLayoutPreserved : slot.reveal;
|
|
120
|
+
return stylex.props(style);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFocusTrap.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusTrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFocusTrap.d.ts","sourceRoot":"","sources":["../../src/hooks/useFocusTrap.ts"],"names":[],"mappings":"AAsFA;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAEV;AAgFD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACrE;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAExC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAC9D,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAAC,CAAC,CAAC,CAsMvB"}
|
|
@@ -24,21 +24,51 @@ import { FOCUSABLE_SELECTOR } from "./focusableSelector.js";
|
|
|
24
24
|
* Every active `useFocusTrap` used to attach its own document-level `keydown`
|
|
25
25
|
* listener with no coordination, so a single Escape press closed *every* open
|
|
26
26
|
* layer at once (e.g. a popover nested inside a Dialog closed both). Tracking
|
|
27
|
-
* traps in a shared stack lets only the most
|
|
28
|
-
*
|
|
27
|
+
* traps in a shared stack lets only the top-most trap respond to Escape.
|
|
28
|
+
*
|
|
29
|
+
* "Top-most" is resolved by DOM containment first, push order second. Push
|
|
30
|
+
* order alone is not reliable: React runs child effects before parent
|
|
31
|
+
* effects, so when an outer and an inner (DOM-nested) trap mount in the SAME
|
|
32
|
+
* commit, the inner trap pushes first and the outer trap would wrongly win a
|
|
33
|
+
* pure last-pushed comparison.
|
|
29
34
|
*/
|
|
35
|
+
|
|
30
36
|
const escapeStack = [];
|
|
31
|
-
function pushEscapeHandler(
|
|
32
|
-
escapeStack.push(
|
|
37
|
+
function pushEscapeHandler(entry) {
|
|
38
|
+
escapeStack.push(entry);
|
|
33
39
|
}
|
|
34
40
|
function removeEscapeHandler(handler) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
41
|
+
for (let i = escapeStack.length - 1; i >= 0; i--) {
|
|
42
|
+
if (escapeStack[i].handler === handler) {
|
|
43
|
+
escapeStack.splice(i, 1);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
38
46
|
}
|
|
39
47
|
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Resolve the top-most trap: walk the stack in push order, keeping the
|
|
51
|
+
* deepest container by DOM containment. When a later entry's container
|
|
52
|
+
* contains the current candidate's container, the candidate is nested inside
|
|
53
|
+
* it and stays on top; otherwise the later push wins (containment for nested
|
|
54
|
+
* traps, push order as the tiebreaker for unrelated ones).
|
|
55
|
+
*/
|
|
40
56
|
function isTopEscapeHandler(handler) {
|
|
41
|
-
|
|
57
|
+
if (escapeStack.length === 0) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
let top = escapeStack[0];
|
|
61
|
+
for (let i = 1; i < escapeStack.length; i++) {
|
|
62
|
+
const entry = escapeStack[i];
|
|
63
|
+
const topContainer = top.getContainer();
|
|
64
|
+
const entryContainer = entry.getContainer();
|
|
65
|
+
if (topContainer != null && entryContainer != null && entryContainer !== topContainer && entryContainer.contains(topContainer)) {
|
|
66
|
+
// The current top is nested inside this entry — it stays on top.
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
top = entry;
|
|
70
|
+
}
|
|
71
|
+
return top.handler === handler;
|
|
42
72
|
}
|
|
43
73
|
|
|
44
74
|
/**
|
|
@@ -65,7 +95,9 @@ export function isImeKeyEvent(event) {
|
|
|
65
95
|
/**
|
|
66
96
|
* Whether an element is currently perceivable/focusable — excludes ones hidden
|
|
67
97
|
* via `display:none`/`visibility:hidden` or inside an `inert`/`hidden` subtree,
|
|
68
|
-
* which the browser skips for Tab
|
|
98
|
+
* which the browser skips for Tab, and ones inside an `aria-hidden="true"`
|
|
99
|
+
* subtree, which sighted-keyboard users could Tab to while AT skips them
|
|
100
|
+
* (WCAG 4.1.2 — focusable content must be exposed to assistive tech).
|
|
69
101
|
*/
|
|
70
102
|
function isVisiblyFocusable(el) {
|
|
71
103
|
if (el.hasAttribute('inert') || el.closest('[inert]')) {
|
|
@@ -74,6 +106,10 @@ function isVisiblyFocusable(el) {
|
|
|
74
106
|
if (el.hidden || el.closest('[hidden]')) {
|
|
75
107
|
return false;
|
|
76
108
|
}
|
|
109
|
+
// closest() matches the element itself as well as any ancestor.
|
|
110
|
+
if (el.closest('[aria-hidden="true"]')) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
77
113
|
// offsetParent is null for display:none (and fixed elements); pair with a
|
|
78
114
|
// visibility check via getComputedStyle when available.
|
|
79
115
|
if (typeof window !== 'undefined' && window.getComputedStyle) {
|
|
@@ -274,12 +310,17 @@ export function useFocusTrap(options) {
|
|
|
274
310
|
|
|
275
311
|
// Register this trap on the shared Escape stack so only the top-most
|
|
276
312
|
// active trap responds to Escape. A stable identity per active period is
|
|
277
|
-
// enough — we push on activate and remove on cleanup.
|
|
313
|
+
// enough — we push on activate and remove on cleanup. The container is
|
|
314
|
+
// read lazily: the ref may not be attached yet at effect time, and the
|
|
315
|
+
// stack resolves top-most by DOM containment at keydown time.
|
|
278
316
|
const escapeHandler = () => {
|
|
279
317
|
onEscape?.();
|
|
280
318
|
};
|
|
281
319
|
if (onEscape) {
|
|
282
|
-
pushEscapeHandler(
|
|
320
|
+
pushEscapeHandler({
|
|
321
|
+
handler: escapeHandler,
|
|
322
|
+
getContainer: () => containerRef.current
|
|
323
|
+
});
|
|
283
324
|
}
|
|
284
325
|
const handleKeyDown = event => {
|
|
285
326
|
const container = containerRef.current;
|
|
@@ -62,7 +62,12 @@ export interface UseGridFocusOptions {
|
|
|
62
62
|
/**
|
|
63
63
|
* Whether the grid is in a right-to-left context. When true, ArrowLeft and
|
|
64
64
|
* ArrowRight are swapped so horizontal navigation follows visual direction.
|
|
65
|
-
*
|
|
65
|
+
*
|
|
66
|
+
* When omitted, the direction is auto-detected from the container's computed
|
|
67
|
+
* `direction` (read lazily on keydown, only for horizontal arrow keys), so
|
|
68
|
+
* grids inside `dir="rtl"` subtrees flip automatically. Pass an explicit
|
|
69
|
+
* boolean to override detection.
|
|
70
|
+
* @default undefined (auto-detect from the container)
|
|
66
71
|
*/
|
|
67
72
|
isRtl?: boolean;
|
|
68
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGridFocus.d.ts","sourceRoot":"","sources":["../../src/hooks/useGridFocus.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useGridFocus.d.ts","sourceRoot":"","sources":["../../src/hooks/useGridFocus.ts"],"names":[],"mappings":"AAsBA;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC;IAEjD;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,WAAW,GAAG,IAAI,CAAC;IAE3D;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5D;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3D;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAExB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACrE;;OAEG;IACH,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEnC;;OAEG;IACH,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAEhD;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE3C;;OAEG;IACH,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAC9D,OAAO,EAAE,mBAAmB,GAC3B,kBAAkB,CAAC,CAAC,CAAC,CAyYvB"}
|
|
@@ -4,15 +4,19 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file useGridFocus.ts
|
|
7
|
-
* @input Uses React useCallback, useRef, useIsomorphicLayoutEffect
|
|
7
|
+
* @input Uses React useCallback, useRef, useIsomorphicLayoutEffect,
|
|
8
|
+
* isRtlElement
|
|
8
9
|
* @output Exports useGridFocus hook for grid keyboard navigation
|
|
9
|
-
* @position Core hook; used by Calendar for date grid navigation
|
|
10
|
+
* @position Core hook; used by Calendar for date grid navigation. Auto-detects
|
|
11
|
+
* RTL from the container's computed direction so horizontal arrow keys
|
|
12
|
+
* follow visual direction (WCAG 1.3.2).
|
|
10
13
|
*
|
|
11
14
|
* SYNC: When modified, update:
|
|
12
15
|
* - /packages/core/src/hooks/index.ts
|
|
13
16
|
* - /packages/core/src/hooks/useGridFocus.test.tsx
|
|
14
17
|
*/
|
|
15
18
|
import { useCallback, useRef } from 'react';
|
|
19
|
+
import { isRtlElement } from "./isRtlElement.js";
|
|
16
20
|
import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
|
|
17
21
|
|
|
18
22
|
/**
|
|
@@ -87,7 +91,7 @@ export function useGridFocus(options) {
|
|
|
87
91
|
onNavigateAfter,
|
|
88
92
|
onPageUp,
|
|
89
93
|
onPageDown,
|
|
90
|
-
isRtl
|
|
94
|
+
isRtl,
|
|
91
95
|
hasRovingTabIndex = false
|
|
92
96
|
} = options;
|
|
93
97
|
const gridRef = useRef(null);
|
|
@@ -297,13 +301,12 @@ export function useGridFocus(options) {
|
|
|
297
301
|
|
|
298
302
|
// In RTL, ArrowLeft/ArrowRight are swapped so horizontal navigation
|
|
299
303
|
// follows visual direction. Vertical keys (Up/Down) are unaffected.
|
|
304
|
+
// Direction is resolved lazily — getComputedStyle runs only when a
|
|
305
|
+
// horizontal arrow key is actually pressed (SSR-safe, no layout thrash
|
|
306
|
+
// on unrelated keys) — and an explicit `isRtl` always wins.
|
|
300
307
|
let key = e.key;
|
|
301
|
-
if (isRtl) {
|
|
302
|
-
|
|
303
|
-
key = 'ArrowRight';
|
|
304
|
-
} else if (key === 'ArrowRight') {
|
|
305
|
-
key = 'ArrowLeft';
|
|
306
|
-
}
|
|
308
|
+
if ((key === 'ArrowLeft' || key === 'ArrowRight') && (isRtl ?? isRtlElement(gridRef.current))) {
|
|
309
|
+
key = key === 'ArrowLeft' ? 'ArrowRight' : 'ArrowLeft';
|
|
307
310
|
}
|
|
308
311
|
switch (key) {
|
|
309
312
|
case 'ArrowRight':
|
|
@@ -36,6 +36,15 @@ export interface Hotkey {
|
|
|
36
36
|
* definitions live in a ref, so re-renders update behavior without
|
|
37
37
|
* re-subscribing. First matching hotkey wins per event.
|
|
38
38
|
*
|
|
39
|
+
* Accessibility (WCAG 2.1.4 — Character Key Shortcuts): a shortcut whose
|
|
40
|
+
* combo is a single unmodified character (letter, digit, punctuation or
|
|
41
|
+
* symbol — e.g. 'c' or '/') is easily triggered by accident by speech-input
|
|
42
|
+
* users and keyboard users with motor impairments. If you register one, you
|
|
43
|
+
* MUST also provide at least one of: (a) a way to turn the shortcut off,
|
|
44
|
+
* (b) a way to remap it to include a modifier, or (c) scope it so it is only
|
|
45
|
+
* active while the relevant component has focus. Prefer `mod`-based combos
|
|
46
|
+
* where possible; the `isDisabled` flag can back a user-facing off switch.
|
|
47
|
+
*
|
|
39
48
|
* @param hotkeys - Shortcut registrations to listen for.
|
|
40
49
|
*
|
|
41
50
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHotkeys.d.ts","sourceRoot":"","sources":["../../src/hooks/useHotkeys.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA2FD
|
|
1
|
+
{"version":3,"file":"useHotkeys.d.ts","sourceRoot":"","sources":["../../src/hooks/useHotkeys.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA2FD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAkClD"}
|
package/dist/hooks/useHotkeys.js
CHANGED
|
@@ -115,6 +115,15 @@ function matchesCombo(keys, event, isApple) {
|
|
|
115
115
|
* definitions live in a ref, so re-renders update behavior without
|
|
116
116
|
* re-subscribing. First matching hotkey wins per event.
|
|
117
117
|
*
|
|
118
|
+
* Accessibility (WCAG 2.1.4 — Character Key Shortcuts): a shortcut whose
|
|
119
|
+
* combo is a single unmodified character (letter, digit, punctuation or
|
|
120
|
+
* symbol — e.g. 'c' or '/') is easily triggered by accident by speech-input
|
|
121
|
+
* users and keyboard users with motor impairments. If you register one, you
|
|
122
|
+
* MUST also provide at least one of: (a) a way to turn the shortcut off,
|
|
123
|
+
* (b) a way to remap it to include a modifier, or (c) scope it so it is only
|
|
124
|
+
* active while the relevant component has focus. Prefer `mod`-based combos
|
|
125
|
+
* where possible; the `isDisabled` flag can back a user-facing off switch.
|
|
126
|
+
*
|
|
118
127
|
* @param hotkeys - Shortcut registrations to listen for.
|
|
119
128
|
*
|
|
120
129
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInputContainer.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputContainer.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useInputContainer.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputContainer.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAc,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAoDlD,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,YAAY,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC5C,iDAAiD;IACjD,QAAQ,EAAE,SAAS,CACjB,gBAAgB,GAAG,mBAAmB,GAAG,WAAW,GAAG,IAAI,CAC5D,CAAC;IACF,oCAAoC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,QAAQ,EACR,QAAgB,GACjB,EAAE,wBAAwB,8DA+B1B"}
|
|
@@ -20,6 +20,29 @@ import { useClickableContainer } from "./useClickableContainer.js";
|
|
|
20
20
|
* Other input types (e.g. checkbox, radio, file) use `.click()` instead.
|
|
21
21
|
*/
|
|
22
22
|
const FOCUS_INPUT_TYPES = new Set(['text', 'password', 'email', 'number', 'search', 'tel', 'url', 'date', 'datetime-local', 'month', 'time', 'week']);
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* `aria-haspopup` values that advertise a control opens a popup on activation.
|
|
26
|
+
* https://www.w3.org/TR/wai-aria-1.2/#aria-haspopup
|
|
27
|
+
*/
|
|
28
|
+
const HASPOPUP_VALUES = new Set(['true', 'menu', 'listbox', 'tree', 'grid', 'dialog']);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Whether an element is a popup trigger — a combobox or any control that
|
|
32
|
+
* advertises `aria-haspopup`. Such controls activate their popup on *click*
|
|
33
|
+
* (e.g. DateInput's `<input type="text" role="combobox" aria-haspopup="dialog">`
|
|
34
|
+
* opens its calendar via `onClick`, with no `onFocus` opener). Forwarding a
|
|
35
|
+
* container click to `.focus()` would focus the control but leave the popup
|
|
36
|
+
* closed — so we `.click()` these instead. Plain text inputs (no popup) are
|
|
37
|
+
* unaffected and keep `.focus()`.
|
|
38
|
+
*/
|
|
39
|
+
function isPopupTrigger(el) {
|
|
40
|
+
if (el.getAttribute('role') === 'combobox') {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
const haspopup = el.getAttribute('aria-haspopup');
|
|
44
|
+
return haspopup != null && HASPOPUP_VALUES.has(haspopup);
|
|
45
|
+
}
|
|
23
46
|
/**
|
|
24
47
|
* Hook that makes an input container wrapper clickable, delegating focus
|
|
25
48
|
* to the inner input/textarea when the user clicks non-interactive areas
|
|
@@ -57,7 +80,12 @@ export function useInputContainer({
|
|
|
57
80
|
if (input == null) {
|
|
58
81
|
return;
|
|
59
82
|
}
|
|
60
|
-
|
|
83
|
+
// Popup triggers (combobox / aria-haspopup) activate their popup on
|
|
84
|
+
// *click*, not focus — so check this BEFORE the type check, otherwise a
|
|
85
|
+
// `type="text"` combobox (DateInput) would `.focus()` and never open.
|
|
86
|
+
if (input instanceof HTMLElement && isPopupTrigger(input)) {
|
|
87
|
+
input.click();
|
|
88
|
+
} else if (input instanceof HTMLInputElement && FOCUS_INPUT_TYPES.has(input.type)) {
|
|
61
89
|
input.focus();
|
|
62
90
|
} else if (input instanceof HTMLTextAreaElement) {
|
|
63
91
|
input.focus();
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconSize } from '../Icon';
|
|
3
|
+
import type { FieldStatusVariant } from '../FieldStatus/FieldStatus';
|
|
4
|
+
import type { InputStatus } from '../Field/types';
|
|
5
|
+
export interface UseInputStatusIconOptions {
|
|
6
|
+
/** The input's status, or undefined when there is none. */
|
|
7
|
+
status?: InputStatus;
|
|
8
|
+
/** How the status is presented relative to the input. */
|
|
9
|
+
statusVariant?: FieldStatusVariant;
|
|
10
|
+
/** Whether the input is inside an InputGroup (which owns status rendering). */
|
|
11
|
+
isInGroup?: boolean;
|
|
12
|
+
/** Size of the on-field icon. @default 'md' */
|
|
13
|
+
size?: IconSize;
|
|
14
|
+
}
|
|
15
|
+
export interface UseInputStatusIconReturn {
|
|
16
|
+
/**
|
|
17
|
+
* The on-field status affordance to render inside the input container —
|
|
18
|
+
* the status icon (plain, for attached) or a focusable info-tip button plus
|
|
19
|
+
* its tooltip layer (for the `tooltip` variant). `null` when no icon should
|
|
20
|
+
* render (no status, `detached` variant, or inside a group).
|
|
21
|
+
*/
|
|
22
|
+
statusIcon: ReactNode;
|
|
23
|
+
/**
|
|
24
|
+
* ID to add to the input's `aria-describedby` when — and only when — the
|
|
25
|
+
* status is surfaced through a rendered tooltip layer (the `tooltip` variant
|
|
26
|
+
* with a message). It is `undefined` in every other case (no status, no
|
|
27
|
+
* message, `attached`/`detached`, or inside a group), so call-sites can drop
|
|
28
|
+
* it straight into their described-by list without a dangling reference: the
|
|
29
|
+
* id is present exactly when its tooltip element is in the DOM.
|
|
30
|
+
*/
|
|
31
|
+
describedBy: string | undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Builds the on-field status icon and its accessibility wiring for a bordered
|
|
35
|
+
* input. See the file header for the per-variant behavior.
|
|
36
|
+
*/
|
|
37
|
+
export declare function useInputStatusIcon({ status, statusVariant, isInGroup, size, }: UseInputStatusIconOptions): UseInputStatusIconReturn;
|
|
38
|
+
//# sourceMappingURL=useInputStatusIcon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInputStatusIcon.d.ts","sourceRoot":"","sources":["../../src/hooks/useInputStatusIcon.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,OAAO,EAAsB,KAAK,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAC,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAuDjE,MAAM,WAAW,yBAAyB;IACxC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,yDAAyD;IACzD,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,QAAQ,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,UAAU,EAAE,SAAS,CAAC;IACtB;;;;;;;OAOG;IACH,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,aAA0B,EAC1B,SAAiB,EACjB,IAAW,GACZ,EAAE,yBAAyB,GAAG,wBAAwB,CAqGtD"}
|