@astryxdesign/core 0.1.9 → 0.2.0-canary.068bda9
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/Avatar/Avatar.d.ts +42 -3
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +190 -59
- package/dist/Avatar/AvatarStatusDot.d.ts +6 -4
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +58 -6
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -2
- package/dist/Banner/Banner.js +2 -2
- 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/Button/Button.d.ts +1 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +6 -4
- 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/ChatComposerInput.js +1 -1
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +3 -1
- package/dist/Chat/ChatLayout.js +4 -4
- 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/Chat/useTriggerMenu.js +2 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +6 -6
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +19 -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 +16 -10
- 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/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +23 -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 +10 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +33 -19
- package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +23 -20
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +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 +5 -2
- 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 +5 -2
- 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 +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/FieldLabel.d.ts +2 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -5
- 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 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +51 -5
- package/dist/FileInput/FileInput.d.ts +10 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +93 -65
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +3 -2
- 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/Item/Item.d.ts +16 -3
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +31 -6
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +10 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +34 -15
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +6 -3
- package/dist/List/ListItem.d.ts +11 -1
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +2 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -0
- package/dist/MetadataList/MetadataList.d.ts +1 -1
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +4 -2
- package/dist/MultiSelector/MultiSelector.d.ts +9 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +81 -43
- package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
- package/dist/NumberInput/NumberInput.d.ts +10 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +22 -17
- package/dist/Outline/Outline.js +2 -2
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +11 -3
- package/dist/PowerSearch/PowerSearch.d.ts +9 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +2 -0
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +6 -1
- package/dist/RadioList/RadioList.d.ts +2 -2
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -5
- 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 +5 -3
- package/dist/Selector/Selector.d.ts +8 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +66 -17
- 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/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +2 -2
- 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 +171 -91
- package/dist/TabList/Tab.js +2 -2
- 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/TabList/TabMenu.js +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +30 -4
- package/dist/Table/TableCell.js +3 -3
- package/dist/Table/TableHeaderCell.js +3 -3
- 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 +37 -27
- 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.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/Text/Text.d.ts +10 -1
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +25 -2
- package/dist/Text/index.d.ts +2 -2
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/TextArea/TextArea.d.ts +10 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +119 -52
- package/dist/TextInput/TextInput.d.ts +10 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +20 -17
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +51 -45
- package/dist/TimeInput/TimeInput.d.ts +10 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +17 -17
- package/dist/Timestamp/Timestamp.d.ts +31 -3
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +48 -77
- 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.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +3 -1
- package/dist/Token/Token.d.ts +34 -4
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +85 -45
- 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 +1 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts +9 -2
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +4 -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/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +9 -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 +9 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +22 -11
- package/dist/Typeahead/Typeahead.d.ts +9 -2
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +11 -2
- 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 +114 -35
- package/dist/astryx.umd.js +50 -50
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +281 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +281 -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/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 +1 -1
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +4 -2
- 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/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +13 -0
- package/dist/theme/index.d.ts +3 -3
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/types.d.ts +39 -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 +24 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -0
- package/dist/utils/rtlStyles.js +27 -0
- package/locales/en.json +120 -0
- package/locales/pseudo.json +90 -0
- package/package.json +7 -2
- package/src/Avatar/Avatar.doc.mjs +50 -3
- package/src/Avatar/Avatar.test.tsx +218 -0
- package/src/Avatar/Avatar.tsx +285 -79
- package/src/Avatar/AvatarStatusDot.doc.mjs +4 -4
- package/src/Avatar/AvatarStatusDot.tsx +6 -4
- package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
- package/src/AvatarGroup/AvatarGroup.test.tsx +162 -2
- package/src/AvatarGroup/AvatarGroup.tsx +58 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -2
- package/src/Banner/Banner.tsx +6 -6
- package/src/Breadcrumbs/BreadcrumbItem.tsx +10 -10
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +52 -1
- package/src/Breadcrumbs/index.ts +4 -0
- package/src/Button/Button.doc.mjs +0 -4
- package/src/Button/Button.test.tsx +16 -0
- package/src/Button/Button.tsx +6 -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/ChatComposerInput.tsx +2 -2
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatLayout.tsx +4 -4
- package/src/Chat/ChatMessageBubble.tsx +15 -10
- package/src/Chat/ChatSystemMessage.test.tsx +5 -0
- package/src/Chat/ChatToolCalls.tsx +9 -2
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +23 -0
- package/src/CheckboxInput/CheckboxInput.tsx +21 -6
- package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
- package/src/CheckboxList/CheckboxList.test.tsx +94 -3
- package/src/CheckboxList/CheckboxListItem.tsx +17 -10
- 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.test.tsx +17 -0
- package/src/CodeBlock/CodeBlock.tsx +38 -11
- 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/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +59 -2
- package/src/ContextMenu/ContextMenu.tsx +22 -11
- package/src/ContextMenu/index.ts +5 -0
- package/src/DateInput/DateInput.doc.mjs +25 -0
- package/src/DateInput/DateInput.test.tsx +230 -0
- package/src/DateInput/DateInput.tsx +51 -29
- package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
- package/src/DateRangeInput/DateRangeInput.tsx +42 -30
- package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
- package/src/DateTimeInput/DateTimeInput.test.tsx +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 +9 -3
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +4 -12
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +9 -3
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +20 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +663 -0
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +561 -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 +29 -15
- package/src/Field/Field.doc.mjs +4 -0
- package/src/Field/Field.tsx +14 -9
- package/src/Field/FieldLabel.test.tsx +25 -0
- package/src/Field/FieldLabel.tsx +12 -3
- package/src/Field/inputStyles.stylex.ts +2 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +1 -0
- package/src/FieldStatus/FieldStatus.test.tsx +133 -0
- package/src/FieldStatus/FieldStatus.tsx +61 -4
- package/src/FileInput/FileInput.doc.mjs +23 -2
- package/src/FileInput/FileInput.test.tsx +104 -13
- package/src/FileInput/FileInput.tsx +106 -79
- package/src/Heading/Heading.tsx +2 -1
- 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/Item/Item.doc.mjs +5 -0
- package/src/Item/Item.test.tsx +88 -0
- package/src/Item/Item.tsx +57 -11
- package/src/Layer/layerAnimations.stylex.ts +23 -0
- package/src/Lightbox/Lightbox.test.tsx +33 -0
- package/src/Lightbox/Lightbox.tsx +30 -10
- package/src/List/List.test.tsx +17 -29
- package/src/List/List.tsx +6 -1
- package/src/List/ListItem.doc.mjs +12 -0
- package/src/List/ListItem.tsx +13 -0
- package/src/Markdown/Markdown.test.tsx +21 -0
- package/src/Markdown/Markdown.tsx +4 -0
- package/src/MetadataList/MetadataList.test.tsx +24 -0
- package/src/MetadataList/MetadataList.tsx +6 -2
- package/src/MultiSelector/MultiSelector.doc.mjs +20 -0
- package/src/MultiSelector/MultiSelector.test.tsx +402 -0
- package/src/MultiSelector/MultiSelector.tsx +126 -64
- package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
- package/src/NumberInput/NumberInput.doc.mjs +21 -0
- package/src/NumberInput/NumberInput.test.tsx +71 -0
- package/src/NumberInput/NumberInput.tsx +35 -26
- package/src/Outline/Outline.test.tsx +12 -12
- package/src/Outline/Outline.tsx +2 -2
- package/src/Pagination/Pagination.tsx +11 -3
- package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
- package/src/PowerSearch/PowerSearch.test.tsx +23 -0
- package/src/PowerSearch/PowerSearch.tsx +10 -1
- package/src/ProgressBar/ProgressBar.test.tsx +34 -0
- package/src/ProgressBar/ProgressBar.tsx +16 -1
- package/src/RadioList/RadioList.doc.mjs +6 -0
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +2 -2
- package/src/RadioList/RadioListItem.tsx +12 -5
- package/src/Resizable/ResizeHandle.test.tsx +94 -0
- package/src/Resizable/ResizeHandle.tsx +70 -20
- package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +22 -2
- package/src/Selector/Selector.doc.mjs +15 -0
- package/src/Selector/Selector.test.tsx +370 -0
- package/src/Selector/Selector.tsx +88 -20
- package/src/SideNav/SideNav.tsx +1 -8
- package/src/SideNav/SideNavCollapseButton.tsx +9 -7
- package/src/SideNav/SideNavItem.tsx +5 -3
- package/src/Skeleton/Skeleton.test.tsx +16 -0
- package/src/Skeleton/Skeleton.tsx +13 -1
- 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 +111 -0
- package/src/Switch/Switch.tsx +149 -32
- package/src/TabList/Tab.tsx +2 -2
- 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/TabList/TabMenu.tsx +2 -2
- 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/TableCell.tsx +3 -3
- package/src/Table/TableHeaderCell.tsx +3 -3
- 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 +27 -18
- 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.tsx +17 -13
- package/src/Table/types.ts +33 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +3 -3
- package/src/Text/Text.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +25 -1
- package/src/Text/index.ts +2 -6
- package/src/TextArea/TextArea.doc.mjs +23 -2
- package/src/TextArea/TextArea.test.tsx +132 -4
- package/src/TextArea/TextArea.tsx +161 -67
- package/src/TextInput/TextInput.doc.mjs +21 -0
- package/src/TextInput/TextInput.test.tsx +150 -0
- package/src/TextInput/TextInput.tsx +28 -25
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +28 -35
- package/src/TimeInput/TimeInput.doc.mjs +21 -0
- package/src/TimeInput/TimeInput.test.tsx +23 -0
- package/src/TimeInput/TimeInput.tsx +24 -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/Toast/ToastViewport.test.tsx +218 -8
- package/src/Toast/ToastViewport.tsx +71 -12
- package/src/ToggleButton/ToggleButton.test.tsx +24 -0
- package/src/ToggleButton/ToggleButton.tsx +19 -1
- package/src/Token/Token.test.tsx +166 -15
- package/src/Token/Token.tsx +104 -47
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +23 -1
- package/src/Tokenizer/Tokenizer.test.tsx +23 -0
- package/src/Tokenizer/Tokenizer.tsx +14 -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/TopNavMegaMenu.tsx +26 -2
- 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 +42 -15
- package/src/Typeahead/Typeahead.doc.mjs +13 -0
- package/src/Typeahead/Typeahead.test.tsx +112 -0
- package/src/Typeahead/Typeahead.tsx +17 -1
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
- package/src/__tests__/forcedColors.ts +60 -0
- package/src/__tests__/inputWidthContract.test.tsx +62 -0
- package/src/doc-mjs.d.ts +19 -0
- package/src/hooks/containerReveal.pool.stylex.ts +464 -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/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +180 -0
- 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 +221 -0
- package/src/hooks/useInputStatusIcon.tsx +235 -0
- package/src/hooks/useKeyboardHint.test.tsx +22 -0
- package/src/hooks/useKeyboardHint.tsx +6 -2
- 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/i18n/InternationalizationContext.ts +4 -0
- 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/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/theme/index.ts +4 -8
- package/src/theme/types.ts +43 -13
- 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/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/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useDirection.ts
|
|
7
|
+
* @input InternationalizationContext (via use())
|
|
8
|
+
* @output 'ltr' | 'rtl'
|
|
9
|
+
* @position Client hook for reading the ambient text direction. Returns 'ltr'
|
|
10
|
+
* when called outside a provider (matches the silent-en-fallback pattern of
|
|
11
|
+
* useTranslator).
|
|
12
|
+
*
|
|
13
|
+
* Use this in components that need to swap directional icons, mirror
|
|
14
|
+
* behavioral logic (slider math, keyboard nav), or apply direction-specific
|
|
15
|
+
* styling that CSS logical properties can't express.
|
|
16
|
+
*
|
|
17
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
18
|
+
* - /packages/core/src/i18n/InternationalizationContext.ts
|
|
19
|
+
* - /packages/core/src/i18n/getLocaleDirection.ts (server-safe counterpart)
|
|
20
|
+
* - /packages/core/src/i18n/index.ts
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
import {use} from 'react';
|
|
24
|
+
import {InternationalizationContext} from './InternationalizationContext';
|
|
25
|
+
|
|
26
|
+
export function useDirection(): 'ltr' | 'rtl' {
|
|
27
|
+
const ctx = use(InternationalizationContext);
|
|
28
|
+
return ctx.direction;
|
|
29
|
+
}
|
package/src/reset.css
CHANGED
|
@@ -360,32 +360,6 @@
|
|
|
360
360
|
-webkit-tap-highlight-color: transparent;
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
-
/* ===========================================================================
|
|
364
|
-
Touch Devices
|
|
365
|
-
=========================================================================== */
|
|
366
|
-
|
|
367
|
-
/*
|
|
368
|
-
* Suppress focus-visible outlines on touch-only devices.
|
|
369
|
-
*
|
|
370
|
-
* Focus rings exist to show keyboard users where focus is. On devices
|
|
371
|
-
* with no hover capability and a coarse pointer (phones, tablets),
|
|
372
|
-
* there's no keyboard navigation — focus rings are visual noise that
|
|
373
|
-
* can flash on tap, on dialog open (showModal auto-focus), or on
|
|
374
|
-
* programmatic focus.
|
|
375
|
-
*
|
|
376
|
-
* This targets touch-only devices specifically:
|
|
377
|
-
* - (hover: none) — no hover capability (not a mouse)
|
|
378
|
-
* - (pointer: coarse) — imprecise pointer (finger, not stylus)
|
|
379
|
-
*
|
|
380
|
-
* Hybrid devices (laptop with touchscreen) are NOT affected because
|
|
381
|
-
* their primary pointer is fine (trackpad/mouse) and hover is available.
|
|
382
|
-
*/
|
|
383
|
-
@media (hover: none) and (pointer: coarse) {
|
|
384
|
-
:where(:focus-visible) {
|
|
385
|
-
outline: none;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
363
|
/* ===========================================================================
|
|
390
364
|
Color Scheme
|
|
391
365
|
=========================================================================== */
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tests for reset.css invariants that components rely on.
|
|
5
|
+
*
|
|
6
|
+
* reset.css is a plain stylesheet, so these tests assert on its source
|
|
7
|
+
* text (same approach as the reset.css baseline checks in
|
|
8
|
+
* theme/onMediaTokens.test.ts and AspectRatio/AspectRatio.test.tsx).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import fs from 'fs';
|
|
12
|
+
import path from 'path';
|
|
13
|
+
|
|
14
|
+
import {beforeAll, describe, expect, it} from 'vitest';
|
|
15
|
+
|
|
16
|
+
describe('reset.css accessibility invariants', () => {
|
|
17
|
+
let ruleBlocks: {selector: string; body: string}[];
|
|
18
|
+
|
|
19
|
+
beforeAll(() => {
|
|
20
|
+
const resetCSS = fs.readFileSync(
|
|
21
|
+
path.resolve(__dirname, './reset.css'),
|
|
22
|
+
'utf-8',
|
|
23
|
+
);
|
|
24
|
+
// Strip comments, then collect every innermost `selector { body }`
|
|
25
|
+
// block. `[^{}]` keeps at-rule preludes (@media, @layer) out of the
|
|
26
|
+
// selector capture, since their own `{` terminates any earlier match.
|
|
27
|
+
const stripped = resetCSS.replace(/\/\*[\s\S]*?\*\//g, '');
|
|
28
|
+
ruleBlocks = [...stripped.matchAll(/([^{}]+)\{([^{}]*)\}/g)].map(
|
|
29
|
+
([, selector, body]) => ({selector: selector.trim(), body}),
|
|
30
|
+
);
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it('parses rule blocks out of reset.css', () => {
|
|
34
|
+
// Guards the WCAG assertion below against silently passing if the
|
|
35
|
+
// block parsing ever breaks.
|
|
36
|
+
expect(ruleBlocks.length).toBeGreaterThan(20);
|
|
37
|
+
expect(
|
|
38
|
+
ruleBlocks.some(({body}) => body.includes('box-sizing: border-box')),
|
|
39
|
+
).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* WCAG 2.4.7 (Focus Visible, Level AA): keyboard focus indicators must
|
|
44
|
+
* not be suppressed. `:focus-visible` only matches keyboard-style focus,
|
|
45
|
+
* so any `outline: none` on it removes the focus indicator for keyboard
|
|
46
|
+
* users — and a `@media (hover: none) and (pointer: coarse)` guard does
|
|
47
|
+
* not exempt keyboard users on coarse-pointer devices (iPad/phone with a
|
|
48
|
+
* Bluetooth keyboard, switch-control users).
|
|
49
|
+
*/
|
|
50
|
+
it('does not suppress :focus-visible outlines (WCAG 2.4.7)', () => {
|
|
51
|
+
const focusVisibleBlocks = ruleBlocks.filter(({selector}) =>
|
|
52
|
+
selector.includes(':focus-visible'),
|
|
53
|
+
);
|
|
54
|
+
for (const {selector, body} of focusVisibleBlocks) {
|
|
55
|
+
expect
|
|
56
|
+
.soft(body, `":focus-visible" rule "${selector}" must keep the outline`)
|
|
57
|
+
.not.toMatch(/outline(?:-style|-width)?\s*:\s*(?:none|0)/);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
});
|
|
@@ -186,6 +186,7 @@ function discoverComponents(): ComponentInfo[] {
|
|
|
186
186
|
// ---------------------------------------------------------------------------
|
|
187
187
|
|
|
188
188
|
const DIR_TO_REGISTRY_KEY: Record<string, string> = {
|
|
189
|
+
Avatar: 'avatar',
|
|
189
190
|
Banner: 'banner',
|
|
190
191
|
Button: 'button',
|
|
191
192
|
Card: 'card',
|
|
@@ -35,6 +35,12 @@ export interface DerivedVarEntry {
|
|
|
35
35
|
* entries share the same property.
|
|
36
36
|
*/
|
|
37
37
|
export const derivedVarRegistry: Record<string, DerivedVarEntry[]> = {
|
|
38
|
+
avatar: [
|
|
39
|
+
{property: 'fontSize', vars: ['--_avatar-fallback-font-size']},
|
|
40
|
+
{property: 'fontWeight', vars: ['--_avatar-fallback-font-weight']},
|
|
41
|
+
{property: 'color', vars: ['--_avatar-fallback-color']},
|
|
42
|
+
{property: 'backgroundColor', vars: ['--_avatar-fallback-background']},
|
|
43
|
+
],
|
|
38
44
|
banner: [{property: 'borderRadius', vars: ['--_banner-radius']}],
|
|
39
45
|
button: [{property: 'borderRadius', vars: ['--_button-radius']}],
|
|
40
46
|
card: [
|
|
@@ -385,6 +385,48 @@ describe('derived var expansion', () => {
|
|
|
385
385
|
expect(rule).toContain('--_button-radius: 8px');
|
|
386
386
|
});
|
|
387
387
|
|
|
388
|
+
it('emits internal vars for avatar fallback typography (base)', () => {
|
|
389
|
+
const theme = defineTheme({
|
|
390
|
+
name: 'test-derived-avatar',
|
|
391
|
+
components: {
|
|
392
|
+
avatar: {
|
|
393
|
+
base: {
|
|
394
|
+
fontWeight: 'var(--font-weight-normal)',
|
|
395
|
+
color: 'var(--color-text-secondary)',
|
|
396
|
+
backgroundColor: 'var(--color-accent-muted)',
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
},
|
|
400
|
+
});
|
|
401
|
+
const rules = generateThemeRules(theme);
|
|
402
|
+
const rule = rules.find(r => r.includes('.astryx-avatar'));
|
|
403
|
+
expect(rule).toBeDefined();
|
|
404
|
+
expect(rule).toContain(
|
|
405
|
+
'--_avatar-fallback-font-weight: var(--font-weight-normal)',
|
|
406
|
+
);
|
|
407
|
+
expect(rule).toContain(
|
|
408
|
+
'--_avatar-fallback-color: var(--color-text-secondary)',
|
|
409
|
+
);
|
|
410
|
+
expect(rule).toContain(
|
|
411
|
+
'--_avatar-fallback-background: var(--color-accent-muted)',
|
|
412
|
+
);
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
it('emits a per-size fallback font-size for avatar (size:sm)', () => {
|
|
416
|
+
const theme = defineTheme({
|
|
417
|
+
name: 'test-derived-avatar-size',
|
|
418
|
+
components: {
|
|
419
|
+
avatar: {
|
|
420
|
+
'size:sm': {fontSize: '9px'},
|
|
421
|
+
},
|
|
422
|
+
},
|
|
423
|
+
});
|
|
424
|
+
const rules = generateThemeRules(theme);
|
|
425
|
+
const rule = rules.find(r => r.includes('.astryx-avatar.sm'));
|
|
426
|
+
expect(rule).toBeDefined();
|
|
427
|
+
expect(rule).toContain('--_avatar-fallback-font-size: 9px');
|
|
428
|
+
});
|
|
429
|
+
|
|
388
430
|
it('does not emit derived vars for components without registry entries', () => {
|
|
389
431
|
const theme = defineTheme({
|
|
390
432
|
name: 'test-no-derived',
|
package/src/theme/index.ts
CHANGED
|
@@ -71,19 +71,13 @@ export {expandTypeScale, generateTypeScaleComponents} from './expandTypeScale';
|
|
|
71
71
|
export type {TypeScaleConfig, TypeScaleTokens} from './expandTypeScale';
|
|
72
72
|
|
|
73
73
|
export {expandRadiusScale} from './expandRadiusScale';
|
|
74
|
-
export type {
|
|
75
|
-
RadiusScaleConfig,
|
|
76
|
-
RadiusScaleTokens,
|
|
77
|
-
} from './expandRadiusScale';
|
|
74
|
+
export type {RadiusScaleConfig, RadiusScaleTokens} from './expandRadiusScale';
|
|
78
75
|
|
|
79
76
|
export {expandColorScale} from './expandColorScale';
|
|
80
77
|
export type {ColorScaleConfig, ColorScaleTokens} from './expandColorScale';
|
|
81
78
|
|
|
82
79
|
export {expandMotionScale} from './expandMotionScale';
|
|
83
|
-
export type {
|
|
84
|
-
MotionScaleConfig,
|
|
85
|
-
MotionScaleTokens,
|
|
86
|
-
} from './expandMotionScale';
|
|
80
|
+
export type {MotionScaleConfig, MotionScaleTokens} from './expandMotionScale';
|
|
87
81
|
|
|
88
82
|
// Export token defaults and vars for use in custom components and themes
|
|
89
83
|
export {
|
|
@@ -155,6 +149,8 @@ export type {
|
|
|
155
149
|
TextSize,
|
|
156
150
|
TextWeight,
|
|
157
151
|
TextColor,
|
|
152
|
+
BuiltinTextColor,
|
|
153
|
+
TextColorMap,
|
|
158
154
|
TypographyConfig,
|
|
159
155
|
TypographyRole,
|
|
160
156
|
FontWeight,
|
package/src/theme/types.ts
CHANGED
|
@@ -15,11 +15,7 @@
|
|
|
15
15
|
* Raw CSS values (e.g. '800') are accepted as an escape hatch.
|
|
16
16
|
*/
|
|
17
17
|
export type FontWeight =
|
|
18
|
-
| '
|
|
19
|
-
| 'medium'
|
|
20
|
-
| 'semibold'
|
|
21
|
-
| 'bold'
|
|
22
|
-
| (string & {});
|
|
18
|
+
'normal' | 'medium' | 'semibold' | 'bold' | (string & {});
|
|
23
19
|
|
|
24
20
|
/**
|
|
25
21
|
* A typography role declaration (body, heading, or code).
|
|
@@ -155,15 +151,49 @@ export type TextSize =
|
|
|
155
151
|
export type TextWeight = 'normal' | 'medium' | 'semibold' | 'bold';
|
|
156
152
|
|
|
157
153
|
/**
|
|
158
|
-
*
|
|
154
|
+
* Extensible map of text color variants for Text/Heading.
|
|
155
|
+
*
|
|
156
|
+
* Themes add custom colors via component overrides in defineTheme; a custom
|
|
157
|
+
* color renders with the `primary` baseline color from StyleX and receives its
|
|
158
|
+
* actual color from theme CSS (`.astryx-text.<color>` / `.astryx-heading.<color>`),
|
|
159
|
+
* exactly like custom text `type`s.
|
|
160
|
+
*
|
|
161
|
+
* To add type-safe custom colors, use module augmentation — the same technique
|
|
162
|
+
* as `ButtonVariantMap` etc.:
|
|
163
|
+
* ```ts
|
|
164
|
+
* declare module '@astryxdesign/core/Text' {
|
|
165
|
+
* interface TextColorMap {
|
|
166
|
+
* brand: true;
|
|
167
|
+
* danger: true;
|
|
168
|
+
* }
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* `astryx theme build` generates these augmentations automatically when it
|
|
173
|
+
* detects new `color:*` values in a theme's Text/Heading component overrides.
|
|
159
174
|
*/
|
|
160
|
-
export
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
export interface TextColorMap {
|
|
176
|
+
primary: true;
|
|
177
|
+
secondary: true;
|
|
178
|
+
disabled: true;
|
|
179
|
+
placeholder: true;
|
|
180
|
+
accent: true;
|
|
181
|
+
inherit: true;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Built-in text color variants for Text/Heading. The concrete keys that ship
|
|
186
|
+
* with the design system, independent of theme augmentation — used where a
|
|
187
|
+
* value must be one of the real StyleX color styles (see `resolveStyleColor`).
|
|
188
|
+
*/
|
|
189
|
+
export type BuiltinTextColor =
|
|
190
|
+
'primary' | 'secondary' | 'disabled' | 'placeholder' | 'accent' | 'inherit';
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Text color variants for Text/Heading. Extensible via module augmentation of
|
|
194
|
+
* `TextColorMap`.
|
|
195
|
+
*/
|
|
196
|
+
export type TextColor = keyof TextColorMap;
|
|
167
197
|
|
|
168
198
|
/**
|
|
169
199
|
* Display mode for Text/Heading
|
package/src/utils/index.ts
CHANGED
|
@@ -235,19 +235,37 @@ describe('plainDateAddMonths', () => {
|
|
|
235
235
|
});
|
|
236
236
|
});
|
|
237
237
|
|
|
238
|
-
it('
|
|
238
|
+
it('clamps to the last day when the target month is shorter', () => {
|
|
239
|
+
// Jan 31 + 1 month lands in February (clamped), not overflowed into
|
|
240
|
+
// March — matching Temporal.PlainDate.add and date-fns addMonths.
|
|
239
241
|
expect(plainDateAddMonths({year: 2026, month: 1, day: 31}, 1)).toEqual({
|
|
240
242
|
year: 2026,
|
|
241
|
-
month:
|
|
242
|
-
day:
|
|
243
|
+
month: 2,
|
|
244
|
+
day: 28,
|
|
243
245
|
});
|
|
244
246
|
});
|
|
245
247
|
|
|
246
|
-
it('
|
|
248
|
+
it('clamps to Feb 29 in a leap year', () => {
|
|
247
249
|
expect(plainDateAddMonths({year: 2024, month: 1, day: 31}, 1)).toEqual({
|
|
248
250
|
year: 2024,
|
|
249
|
-
month:
|
|
250
|
-
day:
|
|
251
|
+
month: 2,
|
|
252
|
+
day: 29,
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it('clamps when subtracting into a shorter month', () => {
|
|
257
|
+
expect(plainDateAddMonths({year: 2026, month: 3, day: 31}, -1)).toEqual({
|
|
258
|
+
year: 2026,
|
|
259
|
+
month: 2,
|
|
260
|
+
day: 28,
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
it('clamps a 31st onto a 30-day month', () => {
|
|
265
|
+
expect(plainDateAddMonths({year: 2026, month: 5, day: 31}, 1)).toEqual({
|
|
266
|
+
year: 2026,
|
|
267
|
+
month: 6,
|
|
268
|
+
day: 30,
|
|
251
269
|
});
|
|
252
270
|
});
|
|
253
271
|
});
|
package/src/utils/plainDate.ts
CHANGED
|
@@ -72,9 +72,14 @@ export function plainDateDayOfWeek(pd: PlainDate): number {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
export function plainDateAddMonths(pd: PlainDate, n: number): PlainDate {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
// Pure month arithmetic with day clamping (Temporal.PlainDate.add
|
|
76
|
+
// semantics): Jan 31 + 1 month is Feb 28/29, not Mar 2/3. Date#setMonth
|
|
77
|
+
// would overflow the excess days into the following month instead.
|
|
78
|
+
const totalMonths = pd.year * 12 + (pd.month - 1) + n;
|
|
79
|
+
const year = Math.floor(totalMonths / 12);
|
|
80
|
+
const month = (((totalMonths % 12) + 12) % 12) + 1;
|
|
81
|
+
const day = Math.min(pd.day, getDaysInMonth(year, month));
|
|
82
|
+
return {year, month, day};
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
export function plainDateAddDays(pd: PlainDate, n: number): PlainDate {
|
|
@@ -83,7 +88,16 @@ export function plainDateAddDays(pd: PlainDate, n: number): PlainDate {
|
|
|
83
88
|
return plainDateFromDate(d);
|
|
84
89
|
}
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
/**
|
|
92
|
+
* The wall-clock fields an instant reads as in a given zone.
|
|
93
|
+
*
|
|
94
|
+
* A fixed `'en-US'` locale with `hourCycle: 'h23'` keeps the parts numeric and
|
|
95
|
+
* stable whatever locale the viewer has, so callers can assemble machine
|
|
96
|
+
* shapes (`YYYY-MM-DD`, `HH:mm:ss`) from them. Exported for Timestamp, whose
|
|
97
|
+
* `system_*` formats are built from these fields rather than through `Intl`
|
|
98
|
+
* formatting.
|
|
99
|
+
*/
|
|
100
|
+
export function getTimeZoneParts(
|
|
87
101
|
instant: number,
|
|
88
102
|
timezoneID: string,
|
|
89
103
|
): {
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file rtlStyles.ts
|
|
5
|
+
* @input None
|
|
6
|
+
* @output Shared StyleX style that horizontally mirrors an element under RTL
|
|
7
|
+
* @position Core utility; applied to directional-icon wrappers in Calendar,
|
|
8
|
+
* Lightbox, and the Table expand/disclosure plugins
|
|
9
|
+
*
|
|
10
|
+
* `mirror` flips its element on the horizontal axis only when an ancestor
|
|
11
|
+
* carries `dir="rtl"`. Using `scaleX(-1)` (not `scale(-1, -1)`) keeps the
|
|
12
|
+
* vertical axis intact, and applying it OUTSIDE any state-driven rotation lets
|
|
13
|
+
* it compose correctly — e.g. a Table disclosure chevron still rotates to point
|
|
14
|
+
* down when expanded under RTL. The `:is([dir="rtl"] *)` selector matches the
|
|
15
|
+
* MobileNav drawer convention; a bare `direction: rtl` alone won't trigger it.
|
|
16
|
+
*
|
|
17
|
+
* SYNC: When modified, update:
|
|
18
|
+
* - /packages/core/src/utils/index.ts
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import * as stylex from '@stylexjs/stylex';
|
|
22
|
+
|
|
23
|
+
export const rtlStyles = stylex.create({
|
|
24
|
+
mirror: {
|
|
25
|
+
transform: {default: null, ':is([dir="rtl"] *)': 'scaleX(-1)'},
|
|
26
|
+
},
|
|
27
|
+
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as stylex from '@stylexjs/stylex';
|
|
2
|
-
/**
|
|
3
|
-
* Scoped marker for Thumbnail ancestor selectors. Applied to the image
|
|
4
|
-
* container so the remove button's hover/focus reveal (`showRemoveOn="hover"`)
|
|
5
|
-
* responds only to this thumbnail — not to hover/focus state from an outer
|
|
6
|
-
* container the thumbnail happens to sit inside.
|
|
7
|
-
*/
|
|
8
|
-
export declare const thumbnailScope: ReturnType<typeof stylex.defineMarker>;
|
|
9
|
-
//# sourceMappingURL=thumbnail.markers.stylex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.markers.stylex.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/thumbnail.markers.stylex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,YAAY,CAC3C,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
import * as stylex from '@stylexjs/stylex';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Scoped marker for Thumbnail ancestor selectors. Applied to the image
|
|
7
|
-
* container so the remove button's hover/focus reveal (`showRemoveOn="hover"`)
|
|
8
|
-
* responds only to this thumbnail — not to hover/focus state from an outer
|
|
9
|
-
* container the thumbnail happens to sit inside.
|
|
10
|
-
*/
|
|
11
|
-
export const thumbnailScope = {
|
|
12
|
-
x9jk0ni: "x9jk0ni",
|
|
13
|
-
$$css: true
|
|
14
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
import * as stylex from '@stylexjs/stylex';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Scoped marker for Thumbnail ancestor selectors. Applied to the image
|
|
7
|
-
* container so the remove button's hover/focus reveal (`showRemoveOn="hover"`)
|
|
8
|
-
* responds only to this thumbnail — not to hover/focus state from an outer
|
|
9
|
-
* container the thumbnail happens to sit inside.
|
|
10
|
-
*/
|
|
11
|
-
export const thumbnailScope: ReturnType<typeof stylex.defineMarker> =
|
|
12
|
-
stylex.defineMarker();
|