@astryxdesign/core 0.1.9-canary.d2d84f8 → 0.1.9-canary.e00a241
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/dist/Avatar/Avatar.d.ts +6 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +46 -12
- package/dist/Avatar/AvatarStatusDot.d.ts +6 -4
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -4
- package/dist/Breadcrumbs/index.d.ts +1 -0
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +2 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +50 -9
- package/dist/Calendar/dayCellUtils.d.ts +4 -4
- package/dist/Calendar/dayCellUtils.js +2 -2
- package/dist/Calendar/styles.d.ts +30 -31
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +30 -31
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +22 -12
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +3 -1
- package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
- package/dist/Chat/ChatMessageBubble.js +8 -8
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +10 -3
- package/dist/CheckboxInput/CheckboxInput.js +4 -4
- package/dist/Citation/Citation.d.ts +22 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +20 -6
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +13 -7
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +3 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +42 -3
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +14 -5
- package/dist/ContextMenu/index.d.ts +1 -0
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +3 -1
- package/dist/DateInput/DateInput.d.ts +1 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +31 -19
- package/dist/DateRangeInput/DateRangeInput.d.ts +1 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +20 -19
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +23 -18
- package/dist/Divider/Divider.d.ts +2 -2
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +13 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +22 -5
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
- package/dist/DropdownMenu/index.d.ts +10 -0
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +13 -0
- package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
- package/dist/DropdownMenu/menuItemHover.js +33 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
- package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemRoles.js +10 -1
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +21 -6
- package/dist/Field/Field.d.ts +3 -1
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -1
- 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 +4 -1
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +4 -2
- package/dist/FileInput/FileInput.d.ts +1 -0
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +91 -65
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +10 -4
- package/dist/Icon/Icon.d.ts +15 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +19 -3
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +15 -9
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +6 -3
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +65 -40
- package/dist/NumberInput/NumberInput.d.ts +1 -0
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +20 -17
- package/dist/Outline/Outline.js +2 -2
- package/dist/RadioList/RadioList.d.ts +2 -2
- package/dist/RadioList/RadioListItem.js +4 -4
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +49 -19
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +58 -16
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +5 -5
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +13 -10
- package/dist/SideNav/SideNavItem.d.ts +1 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +12 -10
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +87 -34
- package/dist/Spinner/Spinner.d.ts +3 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +11 -2
- package/dist/Switch/Switch.d.ts +8 -1
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +160 -91
- package/dist/TabList/TabList.d.ts +2 -11
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +5 -9
- 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/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +30 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +36 -26
- package/dist/Table/plugins/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 +14 -6
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +29 -23
- package/dist/Table/types.d.ts +32 -0
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +1 -0
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -19
- package/dist/TextInput/TextInput.d.ts +1 -0
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +18 -17
- package/dist/TimeInput/TimeInput.d.ts +1 -0
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +15 -17
- package/dist/Timestamp/Timestamp.d.ts +31 -3
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +47 -76
- 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/Token/Token.d.ts +30 -3
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +17 -2
- package/dist/Token/index.d.ts +1 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +2 -2
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +17 -1
- package/dist/TopNav/TopNavItem.d.ts +3 -1
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +30 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +1 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +8 -6
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +32 -14
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +19 -10
- package/dist/Typeahead/Typeahead.js +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +20 -10
- package/dist/astryx.css +38 -14
- package/dist/astryx.umd.js +52 -52
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- 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/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/useInputStatusIcon.d.ts +38 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
- package/dist/hooks/useInputStatusIcon.js +158 -0
- package/dist/hooks/useListFocus.d.ts +39 -1
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +54 -9
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- 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 +24 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +27 -0
- package/locales/en.json +76 -0
- package/locales/pseudo.json +57 -0
- package/package.json +6 -1
- package/src/Avatar/Avatar.doc.mjs +18 -4
- package/src/Avatar/Avatar.test.tsx +106 -0
- package/src/Avatar/Avatar.tsx +62 -10
- package/src/Avatar/AvatarStatusDot.doc.mjs +4 -4
- package/src/Avatar/AvatarStatusDot.tsx +6 -4
- package/src/AvatarGroup/AvatarGroup.test.tsx +16 -1
- package/src/Breadcrumbs/BreadcrumbItem.tsx +10 -10
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +51 -0
- package/src/Breadcrumbs/index.ts +4 -0
- package/src/Button/Button.doc.mjs +0 -4
- package/src/Calendar/Calendar.test.tsx +170 -20
- package/src/Calendar/Calendar.tsx +73 -16
- package/src/Calendar/dayCellUtils.test.ts +18 -18
- package/src/Calendar/dayCellUtils.ts +2 -2
- package/src/Calendar/styles.ts +33 -39
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.tsx +25 -6
- package/src/Chat/ChatComposer.doc.mjs +2 -2
- package/src/Chat/ChatComposerInput.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatMessageBubble.tsx +15 -10
- package/src/Chat/ChatSystemMessage.test.tsx +5 -0
- package/src/Chat/ChatToolCalls.tsx +9 -2
- package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
- package/src/CheckboxInput/CheckboxInput.tsx +4 -4
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
- package/src/Citation/Citation.doc.mjs +4 -3
- package/src/Citation/Citation.test.tsx +97 -0
- package/src/Citation/Citation.tsx +43 -11
- package/src/CodeBlock/CodeBlock.tsx +35 -8
- package/src/Collapsible/Collapsible.doc.mjs +1 -0
- package/src/Collapsible/Collapsible.test.tsx +7 -0
- package/src/Collapsible/Collapsible.tsx +16 -6
- package/src/CommandPalette/CommandPalette.test.tsx +95 -1
- package/src/CommandPalette/CommandPalette.tsx +41 -2
- package/src/ContextMenu/ContextMenu.test.tsx +42 -0
- package/src/ContextMenu/ContextMenu.tsx +13 -11
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +15 -5
- package/src/DateInput/DateInput.test.tsx +210 -3
- package/src/DateInput/DateInput.tsx +41 -29
- package/src/DateRangeInput/DateRangeInput.doc.mjs +11 -3
- package/src/DateRangeInput/DateRangeInput.test.tsx +120 -3
- package/src/DateRangeInput/DateRangeInput.tsx +29 -27
- package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
- package/src/DateTimeInput/DateTimeInput.test.tsx +112 -0
- package/src/DateTimeInput/DateTimeInput.tsx +44 -39
- package/src/Divider/Divider.test.tsx +32 -8
- package/src/Divider/Divider.tsx +14 -1
- package/src/DropdownMenu/DropdownMenu.test.tsx +60 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -12
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +8 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
- package/src/DropdownMenu/index.ts +16 -0
- package/src/DropdownMenu/menuItemHover.ts +39 -0
- package/src/DropdownMenu/menuItemRoles.ts +9 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
- package/src/Field/Field.tsx +14 -9
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.tsx +10 -4
- package/src/FileInput/FileInput.doc.mjs +13 -7
- package/src/FileInput/FileInput.test.tsx +84 -16
- package/src/FileInput/FileInput.tsx +96 -79
- package/src/HoverCard/useHoverCard.tsx +15 -3
- package/src/Icon/Icon.doc.mjs +13 -0
- package/src/Icon/Icon.test.tsx +89 -0
- package/src/Icon/Icon.tsx +51 -3
- package/src/Lightbox/Lightbox.tsx +11 -3
- package/src/List/List.test.tsx +17 -29
- package/src/List/List.tsx +6 -1
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +11 -0
- package/src/MultiSelector/MultiSelector.test.tsx +306 -3
- package/src/MultiSelector/MultiSelector.tsx +88 -57
- package/src/NumberInput/NumberInput.doc.mjs +11 -5
- package/src/NumberInput/NumberInput.test.tsx +48 -0
- package/src/NumberInput/NumberInput.tsx +25 -26
- package/src/Outline/Outline.test.tsx +12 -12
- package/src/Outline/Outline.tsx +2 -2
- package/src/RadioList/RadioList.doc.mjs +6 -0
- package/src/RadioList/RadioList.tsx +2 -2
- package/src/RadioList/RadioListItem.tsx +4 -4
- package/src/Resizable/ResizeHandle.test.tsx +94 -0
- package/src/Resizable/ResizeHandle.tsx +70 -20
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -0
- package/src/Selector/Selector.doc.mjs +8 -0
- package/src/Selector/Selector.test.tsx +328 -3
- package/src/Selector/Selector.tsx +70 -19
- package/src/SideNav/SideNav.tsx +1 -8
- package/src/SideNav/SideNavCollapseButton.tsx +9 -7
- package/src/SideNav/SideNavItem.tsx +5 -3
- package/src/Slider/Slider.doc.mjs +6 -0
- package/src/Slider/Slider.test.tsx +240 -12
- package/src/Slider/Slider.tsx +96 -23
- package/src/Spinner/Spinner.test.tsx +10 -8
- package/src/Spinner/Spinner.tsx +15 -5
- package/src/Switch/Switch.doc.mjs +142 -42
- package/src/Switch/Switch.test.tsx +22 -0
- package/src/Switch/Switch.tsx +90 -33
- package/src/TabList/TabList.doc.mjs +0 -6
- package/src/TabList/TabList.test.tsx +3 -15
- package/src/TabList/TabList.tsx +6 -17
- package/src/TabList/TabListContext.ts +0 -6
- package/src/Table/BaseTable.tsx +34 -2
- package/src/Table/Table.doc.mjs +11 -0
- package/src/Table/Table.test.tsx +85 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +9 -6
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -17
- 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 +37 -8
- package/src/Table/plugins/tree/useTableTreeData.tsx +17 -13
- package/src/Table/types.ts +33 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/TextArea/TextArea.doc.mjs +11 -5
- package/src/TextArea/TextArea.tsx +17 -26
- package/src/TextInput/TextInput.doc.mjs +11 -5
- package/src/TextInput/TextInput.test.tsx +130 -3
- package/src/TextInput/TextInput.tsx +18 -25
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +11 -5
- package/src/TimeInput/TimeInput.tsx +14 -25
- package/src/Timestamp/Timestamp.doc.mjs +32 -6
- package/src/Timestamp/Timestamp.test.tsx +371 -0
- package/src/Timestamp/Timestamp.tsx +96 -93
- 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/Token/Token.test.tsx +21 -15
- package/src/Token/Token.tsx +31 -14
- package/src/Token/index.ts +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +8 -1
- package/src/Tokenizer/Tokenizer.tsx +4 -2
- package/src/Tooltip/Tooltip.test.tsx +46 -0
- package/src/Tooltip/useTooltip.tsx +20 -0
- package/src/TopNav/TopNav.test.tsx +93 -2
- package/src/TopNav/TopNavItem.doc.mjs +3 -3
- package/src/TopNav/TopNavItem.tsx +35 -6
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
- package/src/TreeList/TreeList.doc.mjs +6 -0
- package/src/TreeList/TreeList.test.tsx +50 -10
- package/src/TreeList/TreeList.tsx +5 -0
- package/src/TreeList/TreeListBranches.tsx +8 -6
- package/src/TreeList/TreeListItem.tsx +33 -11
- package/src/Typeahead/BaseTypeahead.tsx +29 -14
- package/src/Typeahead/Typeahead.doc.mjs +6 -0
- package/src/Typeahead/Typeahead.test.tsx +27 -0
- package/src/Typeahead/Typeahead.tsx +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/__tests__/inputWidthContract.test.tsx +62 -0
- package/src/doc-mjs.d.ts +19 -0
- package/src/hooks/index.ts +6 -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/useFocusTrap.test.tsx +104 -0
- package/src/hooks/useFocusTrap.ts +61 -12
- package/src/hooks/useGridFocus.doc.mjs +3 -3
- package/src/hooks/useGridFocus.test.tsx +41 -0
- package/src/hooks/useGridFocus.ts +21 -10
- package/src/hooks/useHotkeys.ts +9 -0
- package/src/hooks/useInputStatusIcon.test.tsx +162 -0
- package/src/hooks/useInputStatusIcon.tsx +224 -0
- package/src/hooks/useListFocus.doc.mjs +25 -3
- package/src/hooks/useListFocus.test.tsx +153 -1
- package/src/hooks/useListFocus.ts +102 -9
- package/src/reset.css +0 -26
- package/src/reset.test.ts +60 -0
- package/src/theme/derivedVarRegistry.test.ts +1 -0
- package/src/theme/derivedVarRegistry.ts +6 -0
- package/src/theme/generateThemeRules.test.ts +42 -0
- 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 +27 -0
package/dist/Avatar/Avatar.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Avatar.tsx
|
|
3
3
|
* @input Uses React, HTMLAttributes, ReactNode, useState; useTooltip
|
|
4
|
-
* (Tooltip hook) for the optional name-on-hover tooltip
|
|
4
|
+
* (Tooltip hook) for the optional name-on-hover tooltip; useTranslator (i18n)
|
|
5
5
|
* @output Exports Avatar component, AvatarProps, AvatarSize types
|
|
6
6
|
* @position Core implementation; consumed by index.ts
|
|
7
7
|
*
|
|
@@ -72,6 +72,11 @@ export interface AvatarProps extends BaseProps<HTMLDivElement> {
|
|
|
72
72
|
/**
|
|
73
73
|
* Content displayed in the corner of the avatar.
|
|
74
74
|
* Typically used for status indicators or badges.
|
|
75
|
+
*
|
|
76
|
+
* When the element carries a string `label` prop (as `AvatarStatusDot`
|
|
77
|
+
* does), the label is composed into the avatar's accessible name
|
|
78
|
+
* (e.g. "Jane Doe, Online") so assistive tech can reach the status —
|
|
79
|
+
* the `role="img"` root prunes descendant semantics (WCAG 4.1.2).
|
|
75
80
|
*/
|
|
76
81
|
status?: ReactNode;
|
|
77
82
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../src/Avatar/Avatar.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAoC,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAc5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AA4BrD;;;;;;GAMG;AACH,KAAK,eAAe,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzD;;GAEG;AACH,KAAK,iBAAiB,GACpB,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBpD;AAiJD,MAAM,WAAW,WAAY,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC5D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B;;;;;;;OAOG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CAChD;AAwDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,WAAW,EACX,IAAI,EACJ,IAAW,EACX,GAAG,EACH,MAAM,EACN,OAAc,EACd,IAAI,EACJ,EAAE,EACF,MAAM,EACN,GAAG,EACH,OAAO,EACP,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,WAAW,+BAoPb;yBAvQe,MAAM"}
|
package/dist/Avatar/Avatar.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Avatar.tsx
|
|
7
7
|
* @input Uses React, HTMLAttributes, ReactNode, useState; useTooltip
|
|
8
|
-
* (Tooltip hook) for the optional name-on-hover tooltip
|
|
8
|
+
* (Tooltip hook) for the optional name-on-hover tooltip; useTranslator (i18n)
|
|
9
9
|
* @output Exports Avatar component, AvatarProps, AvatarSize types
|
|
10
10
|
* @position Core implementation; consumed by index.ts
|
|
11
11
|
*
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
*
|
|
18
18
|
* Last synced props: alt, fallbackSrc, name, size, src, status, href, as, target, rel, onClick
|
|
19
19
|
*/
|
|
20
|
-
import { useMemo, useState } from 'react';
|
|
20
|
+
import { isValidElement, useMemo, useState } from 'react';
|
|
21
21
|
import * as stylex from '@stylexjs/stylex';
|
|
22
22
|
import "../theme/tokens.stylex.js";
|
|
23
23
|
import { colorVars, typographyVars, fontWeightVars, radiusVars } from "../theme/tokens.stylex.js";
|
|
@@ -27,7 +27,8 @@ import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
|
27
27
|
import { themeProps } from "../utils/themeProps.js";
|
|
28
28
|
import { useTooltip } from "../Tooltip/useTooltip.js";
|
|
29
29
|
import { useLinkComponent } from "../Link/useLinkComponent.js";
|
|
30
|
-
import {
|
|
30
|
+
import { useTranslator } from "../i18n/index.js";
|
|
31
|
+
|
|
31
32
|
/**
|
|
32
33
|
* The offset ratio for positioning elements on a circle's edge at 45°.
|
|
33
34
|
*
|
|
@@ -40,6 +41,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
40
41
|
*
|
|
41
42
|
* This constant represents that ratio: (1 - 1/√2) / 2 ≈ 0.146
|
|
42
43
|
*/
|
|
44
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
43
45
|
const CIRCLE_EDGE_OFFSET_RATIO = (1 - 1 / Math.SQRT2) / 2;
|
|
44
46
|
|
|
45
47
|
/**
|
|
@@ -99,6 +101,7 @@ const styles = {
|
|
|
99
101
|
kVAEAm: "x1n2onr6",
|
|
100
102
|
k1xSpc: "x3nfvp2",
|
|
101
103
|
kmuXW: "x2lah0s",
|
|
104
|
+
kaIpWk: "xjspbzw",
|
|
102
105
|
$$css: true
|
|
103
106
|
},
|
|
104
107
|
content: {
|
|
@@ -116,10 +119,10 @@ const styles = {
|
|
|
116
119
|
kjj79g: "xl56j7k",
|
|
117
120
|
kzqmXN: "xh8yej3",
|
|
118
121
|
kZKoxP: "x5yr21d",
|
|
119
|
-
kWkggS: "
|
|
120
|
-
kMwMTN: "
|
|
122
|
+
kWkggS: "xelv01g",
|
|
123
|
+
kMwMTN: "xicfil",
|
|
121
124
|
kMv6JI: "x9ynric",
|
|
122
|
-
k63SB2: "
|
|
125
|
+
k63SB2: "xi08x9w",
|
|
123
126
|
kP9fke: "xtvhhri",
|
|
124
127
|
$$css: true
|
|
125
128
|
},
|
|
@@ -175,7 +178,7 @@ const dynamicStyles = {
|
|
|
175
178
|
"--x-height": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(size)
|
|
176
179
|
}],
|
|
177
180
|
fontSize: size => [_temp, {
|
|
178
|
-
"--x-fontSize": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(size * INITIALS_FONT_SIZE_RATIO)
|
|
181
|
+
"--x-fontSize": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(`var(--_avatar-fallback-font-size, ${size * INITIALS_FONT_SIZE_RATIO}px)`)
|
|
179
182
|
}],
|
|
180
183
|
statusPosition: size => [_temp2, {
|
|
181
184
|
"--x-bottom": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(size * CIRCLE_EDGE_OFFSET_RATIO),
|
|
@@ -227,6 +230,26 @@ function getInitials(name) {
|
|
|
227
230
|
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
228
231
|
}
|
|
229
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Reads the accessible status label off the `status` element, when it
|
|
235
|
+
* exposes one. `AvatarStatusDot`'s `label` prop is the canonical source,
|
|
236
|
+
* but any custom status element with a string `label` prop participates.
|
|
237
|
+
*
|
|
238
|
+
* The avatar root is `role="img"`, which prunes ALL descendant semantics
|
|
239
|
+
* from the accessibility tree — a label inside the status subtree is never
|
|
240
|
+
* announced on its own. Composing it into the avatar's own accessible name
|
|
241
|
+
* is the only way the status reaches assistive tech (WCAG 4.1.2).
|
|
242
|
+
*/
|
|
243
|
+
function getStatusLabel(status) {
|
|
244
|
+
if (! /*#__PURE__*/isValidElement(status)) {
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
const {
|
|
248
|
+
label
|
|
249
|
+
} = status.props;
|
|
250
|
+
return typeof label === 'string' && label !== '' ? label : undefined;
|
|
251
|
+
}
|
|
252
|
+
|
|
230
253
|
/**
|
|
231
254
|
* Default person icon SVG for when no image or name is provided
|
|
232
255
|
*/
|
|
@@ -291,10 +314,21 @@ export function Avatar({
|
|
|
291
314
|
const showInitials = !showImage && !showFallbackImage && name;
|
|
292
315
|
const showIcon = !showImage && !showFallbackImage && !name;
|
|
293
316
|
|
|
294
|
-
// A meaningful accessible name comes from `alt
|
|
295
|
-
//
|
|
296
|
-
//
|
|
297
|
-
|
|
317
|
+
// A meaningful accessible name comes from `alt`/`name`, composed with the
|
|
318
|
+
// status element's `label` when one is present ("Jane Doe, Online") — the
|
|
319
|
+
// `role="img"` root prunes descendant semantics, so surfacing the label in
|
|
320
|
+
// the avatar's own name is the only way assistive tech can reach the
|
|
321
|
+
// status (WCAG 4.1.2). A labelled status alone is also meaningful. With
|
|
322
|
+
// neither a name nor a labelled status, the avatar is decorative — expose
|
|
323
|
+
// it as `presentation`/`aria-hidden` rather than announcing a meaningless
|
|
324
|
+
// generic "Avatar" (obs-9).
|
|
325
|
+
const t = useTranslator();
|
|
326
|
+
const nameLabel = alt || name;
|
|
327
|
+
const statusLabel = getStatusLabel(status);
|
|
328
|
+
const accessibleName = nameLabel && statusLabel ? t('@astryx.avatar.nameWithStatus', {
|
|
329
|
+
name: nameLabel,
|
|
330
|
+
status: statusLabel
|
|
331
|
+
}) : nameLabel || statusLabel;
|
|
298
332
|
const isDecorative = !accessibleName;
|
|
299
333
|
const avatarGroup = useAvatarGroup();
|
|
300
334
|
const resolvedSize = avatarGroup?.size ?? size;
|
|
@@ -372,7 +406,7 @@ export function Avatar({
|
|
|
372
406
|
children: getInitials(name)
|
|
373
407
|
}), showIcon && /*#__PURE__*/_jsx("div", {
|
|
374
408
|
...{
|
|
375
|
-
className: "x78zum5 x6s0dn4 xl56j7k xh8yej3 x5yr21d
|
|
409
|
+
className: "x78zum5 x6s0dn4 xl56j7k xh8yej3 x5yr21d xelv01g xicfil x9ynric xi08x9w xtvhhri"
|
|
376
410
|
},
|
|
377
411
|
children: /*#__PURE__*/_jsx(DefaultIcon, {
|
|
378
412
|
size: numericSize
|
|
@@ -60,10 +60,12 @@ export interface AvatarStatusDotProps extends BaseProps<HTMLDivElement> {
|
|
|
60
60
|
* Describes the meaning of the indicator for screen readers
|
|
61
61
|
* (e.g. "Online", "Accepted", "John Doe is busy").
|
|
62
62
|
*
|
|
63
|
-
* Note: inside an Avatar the
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
63
|
+
* Note: inside an Avatar the dot sits in the avatar's `role="img"`
|
|
64
|
+
* subtree, where descendant semantics are pruned — the dot is never its
|
|
65
|
+
* own stop there. Instead, Avatar reads this `label` and composes it into
|
|
66
|
+
* its own accessible name (e.g. "Jane Doe, Online"), which is how the
|
|
67
|
+
* status reaches assistive tech (WCAG 4.1.2). Standalone dots (outside an
|
|
68
|
+
* Avatar) expose `role="img"` with this label directly.
|
|
67
69
|
*/
|
|
68
70
|
label?: string;
|
|
69
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarStatusDot.d.ts","sourceRoot":"","sources":["../../src/Avatar/AvatarStatusDot.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiD5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC
|
|
1
|
+
{"version":3,"file":"AvatarStatusDot.d.ts","sourceRoot":"","sources":["../../src/Avatar/AvatarStatusDot.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,EAAM,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAiD5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,IAAI,CAAC;CACb;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,cAAc,CAAC;IACrE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;;;OAkBG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AA2JD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,OAAmB,EACnB,KAAK,EACL,IAAI,EACJ,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,oBAAoB,qBAyCtB;yBAlDe,eAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"BreadcrumbItem.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/BreadcrumbItem.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,OAAO,CAAC;AAUf,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAQ5C,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,8BAA8B,CAAC;AAMrE,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,aAAa,CAAC,EACxB,SAAS,CACV;IACC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC/B;;;;OAIG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/C;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,kBAAkB,EAAE,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AA8GD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,EAC7B,GAAG,EACH,EAAE,EACF,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,SAAS,EAAE,aAAa,EACxB,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,IAAI,EACR,EAAE,mBAAmB,qBAoMrB;yBAnNe,cAAc"}
|
|
@@ -36,7 +36,7 @@ import { useTypeahead } from "../hooks/useTypeahead.js";
|
|
|
36
36
|
import { layerAnimations } from "../Layer/layerAnimations.stylex.js";
|
|
37
37
|
import { renderDropdownItems } from "../DropdownMenu/renderDropdownItems.js";
|
|
38
38
|
import { DropdownMenuContext } from "../DropdownMenu/DropdownMenuContext.js";
|
|
39
|
-
import { MENU_ITEM_ROLES, MENU_ITEM_SELECTOR } from "../DropdownMenu/menuItemRoles.js";
|
|
39
|
+
import { MENU_ITEM_ROLES, MENU_ITEM_SELECTOR, MENU_BOUNDARY_SELECTOR } from "../DropdownMenu/menuItemRoles.js";
|
|
40
40
|
|
|
41
41
|
// =============================================================================
|
|
42
42
|
// Props
|
|
@@ -319,19 +319,26 @@ function BreadcrumbMenuTrigger({
|
|
|
319
319
|
listRef,
|
|
320
320
|
handleKeyDown: listNavKeyDown,
|
|
321
321
|
focusFirst,
|
|
322
|
-
focusItem
|
|
322
|
+
focusItem,
|
|
323
|
+
ownsEvent,
|
|
324
|
+
getItems: getMenuItems
|
|
323
325
|
} = useListFocus({
|
|
324
326
|
itemSelector: MENU_ITEM_SELECTOR,
|
|
327
|
+
boundarySelector: MENU_BOUNDARY_SELECTOR,
|
|
325
328
|
wrap: false,
|
|
326
329
|
onEscape: closeMenu
|
|
327
330
|
});
|
|
328
|
-
const getMenuItems = useCallback(() => listRef.current ? Array.from(listRef.current.querySelectorAll(MENU_ITEM_SELECTOR)) : [], [listRef]);
|
|
329
331
|
const typeahead = useTypeahead({
|
|
330
332
|
getItemLabels: () => getMenuItems().map(el => el.textContent),
|
|
331
333
|
onMatch: focusItem,
|
|
332
334
|
getCurrentIndex: () => getMenuItems().findIndex(el => el === document.activeElement || el.contains(document.activeElement))
|
|
333
335
|
});
|
|
334
336
|
const listKeyDown = useCallback(e => {
|
|
337
|
+
// A submenu flyout renders inline inside this menu; its key events bubble
|
|
338
|
+
// up here. Let that level own them — only handle events from this level.
|
|
339
|
+
if (!ownsEvent(e)) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
335
342
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
336
343
|
e.preventDefault();
|
|
337
344
|
const focused = document.activeElement;
|
|
@@ -350,7 +357,7 @@ function BreadcrumbMenuTrigger({
|
|
|
350
357
|
return;
|
|
351
358
|
}
|
|
352
359
|
listNavKeyDown(e);
|
|
353
|
-
}, [listNavKeyDown, closeMenu, typeahead]);
|
|
360
|
+
}, [listNavKeyDown, closeMenu, typeahead, ownsEvent]);
|
|
354
361
|
const openAndFocus = useCallback(() => {
|
|
355
362
|
popover.show();
|
|
356
363
|
requestAnimationFrame(() => focusFirst());
|
|
@@ -9,5 +9,6 @@ export { DropdownMenuItem as BreadcrumbMenuItem, type DropdownMenuItemProps as B
|
|
|
9
9
|
export { DropdownMenuCheckboxItem as BreadcrumbMenuCheckboxItem, type DropdownMenuCheckboxItemProps as BreadcrumbMenuCheckboxItemProps, } from '../DropdownMenu/DropdownMenuCheckboxItem';
|
|
10
10
|
export { DropdownMenuRadioGroup as BreadcrumbMenuRadioGroup, type DropdownMenuRadioGroupProps as BreadcrumbMenuRadioGroupProps, } from '../DropdownMenu/DropdownMenuRadioGroup';
|
|
11
11
|
export { DropdownMenuRadioItem as BreadcrumbMenuRadioItem, type DropdownMenuRadioItemProps as BreadcrumbMenuRadioItemProps, } from '../DropdownMenu/DropdownMenuRadioItem';
|
|
12
|
+
export { DropdownMenuSubMenu as BreadcrumbMenuSubMenu, type DropdownMenuSubMenuProps as BreadcrumbMenuSubMenuProps, } from '../DropdownMenu/DropdownMenuSubMenu';
|
|
12
13
|
export type { DropdownMenuOption as BreadcrumbMenuOption, DropdownMenuItemData as BreadcrumbMenuItemData, DropdownMenuDivider as BreadcrumbMenuDivider, DropdownMenuSection as BreadcrumbMenuSection, } from '../DropdownMenu/DropdownMenu';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAM1D,OAAO,EACL,gBAAgB,IAAI,kBAAkB,EACtC,KAAK,qBAAqB,IAAI,uBAAuB,GACtD,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,IAAI,0BAA0B,EACtD,KAAK,6BAA6B,IAAI,+BAA+B,GACtE,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,sBAAsB,IAAI,wBAAwB,EAClD,KAAK,2BAA2B,IAAI,6BAA6B,GAClE,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,qBAAqB,IAAI,uBAAuB,EAChD,KAAK,0BAA0B,IAAI,4BAA4B,GAChE,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,kBAAkB,IAAI,oBAAoB,EAC1C,oBAAoB,IAAI,sBAAsB,EAC9C,mBAAmB,IAAI,qBAAqB,EAC5C,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Breadcrumbs/index.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AAM1D,OAAO,EACL,gBAAgB,IAAI,kBAAkB,EACtC,KAAK,qBAAqB,IAAI,uBAAuB,GACtD,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,wBAAwB,IAAI,0BAA0B,EACtD,KAAK,6BAA6B,IAAI,+BAA+B,GACtE,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,sBAAsB,IAAI,wBAAwB,EAClD,KAAK,2BAA2B,IAAI,6BAA6B,GAClE,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,qBAAqB,IAAI,uBAAuB,EAChD,KAAK,0BAA0B,IAAI,4BAA4B,GAChE,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,mBAAmB,IAAI,qBAAqB,EAC5C,KAAK,wBAAwB,IAAI,0BAA0B,GAC5D,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EACV,kBAAkB,IAAI,oBAAoB,EAC1C,oBAAoB,IAAI,sBAAsB,EAC9C,mBAAmB,IAAI,qBAAqB,EAC5C,mBAAmB,IAAI,qBAAqB,GAC7C,MAAM,8BAA8B,CAAC"}
|
|
@@ -14,4 +14,5 @@ export { BreadcrumbItem } from "./BreadcrumbItem.js";
|
|
|
14
14
|
export { DropdownMenuItem as BreadcrumbMenuItem } from "../DropdownMenu/DropdownMenuItem.js";
|
|
15
15
|
export { DropdownMenuCheckboxItem as BreadcrumbMenuCheckboxItem } from "../DropdownMenu/DropdownMenuCheckboxItem.js";
|
|
16
16
|
export { DropdownMenuRadioGroup as BreadcrumbMenuRadioGroup } from "../DropdownMenu/DropdownMenuRadioGroup.js";
|
|
17
|
-
export { DropdownMenuRadioItem as BreadcrumbMenuRadioItem } from "../DropdownMenu/DropdownMenuRadioItem.js";
|
|
17
|
+
export { DropdownMenuRadioItem as BreadcrumbMenuRadioItem } from "../DropdownMenu/DropdownMenuRadioItem.js";
|
|
18
|
+
export { DropdownMenuSubMenu as BreadcrumbMenuSubMenu } from "../DropdownMenu/DropdownMenuSubMenu.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"Calendar.d.ts","sourceRoot":"","sources":["../../src/Calendar/Calendar.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA8C5C,YAAY,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,GACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAK5B,+CAA+C;AAE/C,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,UAAU,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;CAC3C;AAID,UAAU,iBAAkB,SAAQ,IAAI,CACtC,SAAS,CAAC,cAAc,CAAC,EACzB,UAAU,GAAG,cAAc,CAC5B;IACC,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACtC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAEvB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB,4CAA4C;IAC5C,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,aAAa,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;IAEzD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC;IAE1B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,CAAC;CAC1C;AAID,UAAU,mBAAoB,SAAQ,iBAAiB;IACrD,qBAAqB;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,kBAAmB,SAAQ,iBAAiB;IACpD,qBAAqB;IACrB,IAAI,EAAE,OAAO,CAAC;IAEd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC;AAMrE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAC,GAAG,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,+BA+VtD;yBA/Ve,QAAQ"}
|
|
@@ -24,7 +24,7 @@ import { useAnnounce, useGridFocus } from "../hooks/index.js";
|
|
|
24
24
|
import { useCalendarDays, useCalendarConstraints } from "./hooks/index.js";
|
|
25
25
|
import { calendarStyles, monthGridStyles, dayCellStyles, dayCellTheme } from "./styles.js";
|
|
26
26
|
import { plainDateFromISO, plainDateToISO, plainDateToDate, plainDateToday, plainDateSetFirstOfMonth, plainDateAddMonths, plainDateAddDays, plainDateIsBefore, plainDateIsEqual, plainDateGetWeekNumber, plainDateFormat, DATE_FORMAT_WITH_WEEKDAY, DATE_FORMAT_MONTH_YEAR } from "../utils/plainDate.js";
|
|
27
|
-
import { mergeProps, composeEventHandlers } from "../utils/index.js";
|
|
27
|
+
import { mergeProps, composeEventHandlers, rtlStyles } from "../utils/index.js";
|
|
28
28
|
import { computeDayCellState, computeRangeRounding, computePreviewRounding, computeDayNeighborContinuity, isEndpoint } from "./dayCellUtils.js";
|
|
29
29
|
|
|
30
30
|
// =============================================================================
|
|
@@ -235,8 +235,14 @@ export function Calendar({
|
|
|
235
235
|
} else {
|
|
236
236
|
// Range mode
|
|
237
237
|
if (rangeSelectionStart === null) {
|
|
238
|
-
// First click - start the range
|
|
238
|
+
// First click - start the range. Nothing else about this pick is
|
|
239
|
+
// perceivable non-visually (WCAG 1.3.1) — the grid doesn't move, so
|
|
240
|
+
// the month-change announcement stays silent — so speak the range
|
|
241
|
+
// progress through the same polite live region.
|
|
239
242
|
setRangeSelectionStart(iso);
|
|
243
|
+
announce(t('@astryx.calendar.rangeStartAnnounce', {
|
|
244
|
+
date: plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY)
|
|
245
|
+
}));
|
|
240
246
|
} else {
|
|
241
247
|
// Second click - complete the range
|
|
242
248
|
const startPd = plainDateFromISO(rangeSelectionStart);
|
|
@@ -258,9 +264,15 @@ export function Calendar({
|
|
|
258
264
|
setInternalValue(range);
|
|
259
265
|
setRangeSelectionStart(null);
|
|
260
266
|
onChange?.(range);
|
|
267
|
+
// Completed-range announcement, in chronological order (matches the
|
|
268
|
+
// swapped {start, end} above even for a reverse pick).
|
|
269
|
+
announce(t('@astryx.calendar.rangeCompleteAnnounce', {
|
|
270
|
+
start: plainDateFormat(plainDateFromISO(start), DATE_FORMAT_WITH_WEEKDAY),
|
|
271
|
+
end: plainDateFormat(plainDateFromISO(end), DATE_FORMAT_WITH_WEEKDAY)
|
|
272
|
+
}));
|
|
261
273
|
}
|
|
262
274
|
}
|
|
263
|
-
}, [mode, onChange, rangeSelectionStart]);
|
|
275
|
+
}, [mode, onChange, rangeSelectionStart, announce, t]);
|
|
264
276
|
return /*#__PURE__*/_jsxs("div", {
|
|
265
277
|
ref: ref,
|
|
266
278
|
...rest,
|
|
@@ -283,7 +295,7 @@ export function Calendar({
|
|
|
283
295
|
// caller classNames, so the RTL mirror must live on its own
|
|
284
296
|
// element.
|
|
285
297
|
_jsx("span", {
|
|
286
|
-
...stylex.props(calendarStyles.navIcon),
|
|
298
|
+
...stylex.props(calendarStyles.navIcon, rtlStyles.mirror),
|
|
287
299
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
288
300
|
icon: "chevronLeft",
|
|
289
301
|
size: "sm",
|
|
@@ -304,7 +316,7 @@ export function Calendar({
|
|
|
304
316
|
label: t('@astryx.calendar.nextMonth'),
|
|
305
317
|
variant: "ghost",
|
|
306
318
|
icon: /*#__PURE__*/_jsx("span", {
|
|
307
|
-
...stylex.props(calendarStyles.navIcon),
|
|
319
|
+
...stylex.props(calendarStyles.navIcon, rtlStyles.mirror),
|
|
308
320
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
309
321
|
icon: "chevronRight",
|
|
310
322
|
size: "sm",
|
|
@@ -559,7 +571,11 @@ function MonthGrid({
|
|
|
559
571
|
children: /*#__PURE__*/_jsxs("div", {
|
|
560
572
|
ref: gridRef,
|
|
561
573
|
role: "grid",
|
|
562
|
-
"aria-label": monthLabel
|
|
574
|
+
"aria-label": monthLabel
|
|
575
|
+
// APG grid pattern: a range selection holds multiple selected cells,
|
|
576
|
+
// so the grid must advertise multi-selectability.
|
|
577
|
+
,
|
|
578
|
+
"aria-multiselectable": mode === 'range' ? true : undefined,
|
|
563
579
|
onKeyDown: handleGridKeyDown,
|
|
564
580
|
onFocus: handleGridFocus,
|
|
565
581
|
...stylex.props(monthGridStyles.daysGrid, hasWeekNumbers && monthGridStyles.daysGridWithNumbers),
|
|
@@ -612,6 +628,7 @@ function MonthGrid({
|
|
|
612
628
|
isDisabled: isDateDisabled(day.date),
|
|
613
629
|
neighbors: neighbors,
|
|
614
630
|
isTabbable: day.iso === seedTabbableIso,
|
|
631
|
+
isRangeSelectionInProgress: rangeSelectionStart !== null,
|
|
615
632
|
onDayClick: onDayClick,
|
|
616
633
|
onDayHover: onDayHover
|
|
617
634
|
}, day.iso);
|
|
@@ -640,9 +657,11 @@ function DayCell({
|
|
|
640
657
|
isDisabled,
|
|
641
658
|
neighbors,
|
|
642
659
|
isTabbable: isTabbableDay,
|
|
660
|
+
isRangeSelectionInProgress,
|
|
643
661
|
onDayClick,
|
|
644
662
|
onDayHover
|
|
645
663
|
}) {
|
|
664
|
+
const t = useTranslator();
|
|
646
665
|
const {
|
|
647
666
|
date,
|
|
648
667
|
isOutside,
|
|
@@ -679,6 +698,28 @@ function DayCell({
|
|
|
679
698
|
const showsTodayRing = state.isToday && !state.isSelected && !state.isInRange;
|
|
680
699
|
const showsTodayInRangeRing = state.isToday && !state.isSelected && state.isInRange;
|
|
681
700
|
const markerState = showsTodayRing ? 'today-only' : showsTodayInRangeRing ? 'today-in-range' : null;
|
|
701
|
+
|
|
702
|
+
// Accessible name for the day button. Roving focus lands on the <button>,
|
|
703
|
+
// not the role="gridcell" wrapper that carries aria-selected — and
|
|
704
|
+
// aria-selected is invalid on role="button" — so the selection/range state
|
|
705
|
+
// must be encoded into the button's name (WCAG 4.1.2). Localized via ICU
|
|
706
|
+
// params rather than string concatenation. A mid-flight first pick (where
|
|
707
|
+
// rangeStart === rangeEnd) reads as "range start" only; a completed one-day
|
|
708
|
+
// range reads as both start and end.
|
|
709
|
+
const dateLabel = plainDateFormat(date, DATE_FORMAT_WITH_WEEKDAY);
|
|
710
|
+
const dayLabel = state.isSelected ? t('@astryx.calendar.daySelected', {
|
|
711
|
+
date: dateLabel
|
|
712
|
+
}) : state.isRangeStart && state.isRangeEnd ? isRangeSelectionInProgress ? t('@astryx.calendar.dayRangeStart', {
|
|
713
|
+
date: dateLabel
|
|
714
|
+
}) : t('@astryx.calendar.dayRangeStartAndEnd', {
|
|
715
|
+
date: dateLabel
|
|
716
|
+
}) : state.isRangeStart ? t('@astryx.calendar.dayRangeStart', {
|
|
717
|
+
date: dateLabel
|
|
718
|
+
}) : state.isRangeEnd ? t('@astryx.calendar.dayRangeEnd', {
|
|
719
|
+
date: dateLabel
|
|
720
|
+
}) : state.isInRange ? t('@astryx.calendar.dayInRange', {
|
|
721
|
+
date: dateLabel
|
|
722
|
+
}) : dateLabel;
|
|
682
723
|
const rangeRounding = computeRangeRounding(state, {
|
|
683
724
|
prevInRange: neighbors.prevInRange,
|
|
684
725
|
nextInRange: neighbors.nextInRange
|
|
@@ -692,13 +733,13 @@ function DayCell({
|
|
|
692
733
|
"aria-selected": state.isSelected || state.isInRange || undefined,
|
|
693
734
|
...stylex.props(dayCellStyles.cell),
|
|
694
735
|
children: [state.isInRange && /*#__PURE__*/_jsx("div", {
|
|
695
|
-
...stylex.props(dayCellStyles.rangeBg, dayCellTheme.rangeBg, rangeRounding.
|
|
736
|
+
...stylex.props(dayCellStyles.rangeBg, dayCellTheme.rangeBg, rangeRounding.roundStart && dayCellStyles.rangeBgRadiusStart, rangeRounding.roundEnd && dayCellStyles.rangeBgRadiusEnd, state.isRangeStart && dayCellStyles.rangeInsetStart, state.isRangeStart && rangeRounding.roundEnd && dayCellStyles.rangeInsetEnd, state.isRangeEnd && dayCellStyles.rangeInsetEnd, state.isRangeStart && rangeRounding.roundStart && dayCellStyles.rangeInsetStart)
|
|
696
737
|
}), state.isInPreview && /*#__PURE__*/_jsx("div", {
|
|
697
|
-
...stylex.props(dayCellStyles.previewBg, dayCellTheme.previewBg, previewRounding.
|
|
738
|
+
...stylex.props(dayCellStyles.previewBg, dayCellTheme.previewBg, previewRounding.roundStart && dayCellStyles.previewBgRadiusStart, previewRounding.roundEnd && dayCellStyles.previewBgRadiusEnd, state.isPreviewStart && dayCellStyles.previewStart, state.isPreviewEnd && dayCellStyles.previewEnd)
|
|
698
739
|
}), /*#__PURE__*/_jsx("button", {
|
|
699
740
|
type: "button",
|
|
700
741
|
"data-date": day.iso,
|
|
701
|
-
"aria-label":
|
|
742
|
+
"aria-label": dayLabel,
|
|
702
743
|
"aria-disabled": state.effectivelyDisabled || undefined
|
|
703
744
|
// Mark today's cell programmatically (APG date-picker pattern), not just
|
|
704
745
|
// visually, so screen-reader users can identify the current date.
|
|
@@ -39,16 +39,16 @@ export declare function computeRangeRounding(state: DayCellState, neighbors?: {
|
|
|
39
39
|
prevInRange?: boolean;
|
|
40
40
|
nextInRange?: boolean;
|
|
41
41
|
}): {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
roundStart: boolean;
|
|
43
|
+
roundEnd: boolean;
|
|
44
44
|
};
|
|
45
45
|
/** Rounding for the hover-preview background. */
|
|
46
46
|
export declare function computePreviewRounding(state: DayCellState, neighbors?: {
|
|
47
47
|
prevInPreview?: boolean;
|
|
48
48
|
nextInPreview?: boolean;
|
|
49
49
|
}): {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
roundStart: boolean;
|
|
51
|
+
roundEnd: boolean;
|
|
52
52
|
};
|
|
53
53
|
/** Whether a day is a selection endpoint (selected, range start, or range end). */
|
|
54
54
|
export declare function isEndpoint(state: DayCellState): boolean;
|
|
@@ -49,8 +49,8 @@ function computeHighlightRounding(input) {
|
|
|
49
49
|
const prevBreaks = input.prevContinues !== undefined ? !input.prevContinues : false;
|
|
50
50
|
const nextBreaks = input.nextContinues !== undefined ? !input.nextContinues : false;
|
|
51
51
|
return {
|
|
52
|
-
|
|
53
|
-
|
|
52
|
+
roundStart: input.isStart || input.isFirstColumn || prevBreaks,
|
|
53
|
+
roundEnd: input.isEnd || input.isLastColumn || nextBreaks
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -48,7 +48,6 @@ export declare const calendarStyles: Readonly<{
|
|
|
48
48
|
}>;
|
|
49
49
|
readonly navIcon: Readonly<{
|
|
50
50
|
readonly display: stylex.StyleXClassNameFor<"display", "inline-flex">;
|
|
51
|
-
readonly transform: stylex.StyleXClassNameFor<"transform", "scaleX(-1)" | null>;
|
|
52
51
|
}>;
|
|
53
52
|
}>;
|
|
54
53
|
export declare const monthGridStyles: Readonly<{
|
|
@@ -103,51 +102,51 @@ export declare const dayCellStyles: Readonly<{
|
|
|
103
102
|
readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
|
|
104
103
|
readonly top: stylex.StyleXClassNameFor<"top", "2px">;
|
|
105
104
|
readonly bottom: stylex.StyleXClassNameFor<"bottom", "2px">;
|
|
106
|
-
readonly
|
|
107
|
-
readonly
|
|
105
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", 0>;
|
|
106
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", 0>;
|
|
108
107
|
}>;
|
|
109
|
-
readonly
|
|
110
|
-
readonly
|
|
111
|
-
readonly
|
|
112
|
-
readonly
|
|
108
|
+
readonly rangeBgRadiusStart: Readonly<{
|
|
109
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", "2px">;
|
|
110
|
+
readonly borderStartStartRadius: stylex.StyleXClassNameFor<"borderStartStartRadius", "9999px">;
|
|
111
|
+
readonly borderEndStartRadius: stylex.StyleXClassNameFor<"borderEndStartRadius", "9999px">;
|
|
113
112
|
}>;
|
|
114
|
-
readonly
|
|
115
|
-
readonly
|
|
116
|
-
readonly
|
|
117
|
-
readonly
|
|
113
|
+
readonly rangeBgRadiusEnd: Readonly<{
|
|
114
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", "2px">;
|
|
115
|
+
readonly borderStartEndRadius: stylex.StyleXClassNameFor<"borderStartEndRadius", "9999px">;
|
|
116
|
+
readonly borderEndEndRadius: stylex.StyleXClassNameFor<"borderEndEndRadius", "9999px">;
|
|
118
117
|
}>;
|
|
119
|
-
readonly
|
|
120
|
-
readonly
|
|
118
|
+
readonly rangeInsetStart: Readonly<{
|
|
119
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", "2px">;
|
|
121
120
|
}>;
|
|
122
|
-
readonly
|
|
123
|
-
readonly
|
|
121
|
+
readonly rangeInsetEnd: Readonly<{
|
|
122
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", "2px">;
|
|
124
123
|
}>;
|
|
125
124
|
readonly previewBg: Readonly<{
|
|
126
125
|
readonly position: stylex.StyleXClassNameFor<"position", "absolute">;
|
|
127
126
|
readonly top: stylex.StyleXClassNameFor<"top", "2px">;
|
|
128
127
|
readonly bottom: stylex.StyleXClassNameFor<"bottom", "2px">;
|
|
129
|
-
readonly
|
|
130
|
-
readonly
|
|
128
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", 0>;
|
|
129
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", 0>;
|
|
131
130
|
}>;
|
|
132
|
-
readonly
|
|
133
|
-
readonly
|
|
134
|
-
readonly
|
|
135
|
-
readonly
|
|
131
|
+
readonly previewBgRadiusStart: Readonly<{
|
|
132
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", "2px">;
|
|
133
|
+
readonly borderStartStartRadius: stylex.StyleXClassNameFor<"borderStartStartRadius", "9999px">;
|
|
134
|
+
readonly borderEndStartRadius: stylex.StyleXClassNameFor<"borderEndStartRadius", "9999px">;
|
|
136
135
|
}>;
|
|
137
|
-
readonly
|
|
138
|
-
readonly
|
|
139
|
-
readonly
|
|
140
|
-
readonly
|
|
136
|
+
readonly previewBgRadiusEnd: Readonly<{
|
|
137
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", "2px">;
|
|
138
|
+
readonly borderStartEndRadius: stylex.StyleXClassNameFor<"borderStartEndRadius", "9999px">;
|
|
139
|
+
readonly borderEndEndRadius: stylex.StyleXClassNameFor<"borderEndEndRadius", "9999px">;
|
|
141
140
|
}>;
|
|
142
141
|
readonly previewStart: Readonly<{
|
|
143
|
-
readonly
|
|
144
|
-
readonly
|
|
145
|
-
readonly
|
|
142
|
+
readonly insetInlineStart: stylex.StyleXClassNameFor<"insetInlineStart", "2px">;
|
|
143
|
+
readonly borderStartStartRadius: stylex.StyleXClassNameFor<"borderStartStartRadius", "9999px">;
|
|
144
|
+
readonly borderEndStartRadius: stylex.StyleXClassNameFor<"borderEndStartRadius", "9999px">;
|
|
146
145
|
}>;
|
|
147
146
|
readonly previewEnd: Readonly<{
|
|
148
|
-
readonly
|
|
149
|
-
readonly
|
|
150
|
-
readonly
|
|
147
|
+
readonly insetInlineEnd: stylex.StyleXClassNameFor<"insetInlineEnd", "2px">;
|
|
148
|
+
readonly borderStartEndRadius: stylex.StyleXClassNameFor<"borderStartEndRadius", "9999px">;
|
|
149
|
+
readonly borderEndEndRadius: stylex.StyleXClassNameFor<"borderEndEndRadius", "9999px">;
|
|
151
150
|
}>;
|
|
152
151
|
readonly day: Readonly<{
|
|
153
152
|
readonly width: stylex.StyleXClassNameFor<"width", "28px">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Calendar/styles.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAgB3C,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CzB,CAAC;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuC1B,CAAC;AAMH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GxB,CAAC;AAMH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoEvB,CAAC"}
|