@astryxdesign/core 0.4.7 → 0.5.0-canary.009bcb3
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 +161 -1
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +3 -2
- package/dist/AspectRatio/AspectRatio.d.ts +24 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +23 -4
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +58 -19
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +8 -4
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +10 -6
- package/dist/Banner/Banner.d.ts +49 -15
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +62 -20
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +17 -4
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +3 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +11 -10
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +11 -6
- package/dist/ButtonGroup/ButtonGroup.d.ts +5 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +26 -7
- package/dist/Calendar/Calendar.d.ts +7 -3
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +21 -23
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Calendar/styles.d.ts +5 -14
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -15
- package/dist/Card/Card.d.ts +12 -12
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +17 -9
- package/dist/Card/index.d.ts +35 -1
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +21 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +3 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +2 -3
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +3 -3
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/Chat/ChatTokenizedText.d.ts +2 -0
- package/dist/Chat/ChatTokenizedText.d.ts.map +1 -1
- package/dist/Chat/ChatTokenizedText.js +11 -6
- package/dist/Chat/useChatComposerTokens.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +10 -3
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +3 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +3 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +1 -3
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +4 -3
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -2
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +82 -23
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +21 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +406 -12
- package/dist/DateTimeInput/index.d.ts +1 -1
- package/dist/DateTimeInput/index.d.ts.map +1 -1
- package/dist/Dialog/Dialog.d.ts +21 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +110 -58
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +6 -5
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/Field/InputClearButton.d.ts +9 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +14 -3
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +3 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -3
- package/dist/HoverCard/HoverCard.d.ts +6 -0
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +19 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +74 -26
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -19
- package/dist/Layer/LayerDepthContext.d.ts +52 -0
- package/dist/Layer/LayerDepthContext.d.ts.map +1 -0
- package/dist/Layer/LayerDepthContext.js +66 -0
- package/dist/Layer/gestureCounter.d.ts +8 -0
- package/dist/Layer/gestureCounter.d.ts.map +1 -0
- package/dist/Layer/gestureCounter.js +53 -0
- package/dist/Layer/index.d.ts +3 -0
- package/dist/Layer/index.d.ts.map +1 -1
- package/dist/Layer/index.js +4 -0
- package/dist/Layer/layerStack.d.ts +98 -0
- package/dist/Layer/layerStack.d.ts.map +1 -0
- package/dist/Layer/layerStack.js +306 -0
- package/dist/Layer/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +128 -8
- package/dist/Layer/useLayerDismissal.d.ts +93 -0
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -0
- package/dist/Layer/useLayerDismissal.js +91 -0
- package/dist/Lightbox/Lightbox.d.ts +1 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +103 -81
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +15 -4
- package/dist/Markdown/Markdown.d.ts +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +20 -7
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +182 -32
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/MetadataList/MetadataListItem.js +4 -1
- package/dist/MobileNav/MobileNav.d.ts +6 -1
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +61 -36
- package/dist/MultiSelector/MultiSelector.d.ts +32 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +73 -15
- package/dist/MultiSelector/hooks.d.ts +7 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +3 -2
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +9 -5
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +54 -104
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +3 -2
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -2
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +3 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +1 -9
- package/dist/Popover/usePopover.d.ts +7 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +40 -21
- package/dist/PowerSearch/PowerSearch.d.ts +8 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +19 -6
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +28 -6
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +3 -1
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +110 -27
- package/dist/PowerSearch/types.d.ts +2 -0
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts +6 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/PowerSearch/usePowerSearchSource.js +14 -5
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +3 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +3 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +12 -3
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +91 -18
- package/dist/Selector/hooks.d.ts +7 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +3 -2
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +4 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +37 -5
- package/dist/Spinner/Spinner.d.ts +3 -3
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +130 -78
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +8 -3
- package/dist/TabList/Tab.d.ts +15 -2
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +32 -7
- package/dist/TabList/TabList.d.ts +46 -7
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +353 -23
- package/dist/TabList/TabListContext.d.ts +11 -1
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +11 -2
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +3 -2
- package/dist/TabList/index.d.ts +2 -2
- package/dist/TabList/index.d.ts.map +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +10 -2
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/TableRow.d.ts +16 -5
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +16 -5
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +54 -11
- package/dist/Table/plugins/pagination/useTablePagination.d.ts +3 -0
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +21 -4
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +7 -2
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +43 -5
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -3
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +16 -10
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +3 -2
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +15 -21
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +22 -7
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +71 -18
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -9
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +7 -4
- package/dist/Tokenizer/Tokenizer.d.ts +14 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +33 -21
- package/dist/Tooltip/Tooltip.d.ts +5 -0
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.d.ts +5 -0
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +39 -24
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +5 -4
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +31 -11
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +22 -7
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +7 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +35 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +119 -37
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +5 -2
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +7 -2
- package/dist/astryx.css +113 -11
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useFocusTrap.d.ts +7 -4
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +60 -95
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -18
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/generateThemeRules.d.ts +21 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +26 -0
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/utils/groupItems.d.ts +5 -1
- package/dist/utils/groupItems.d.ts.map +1 -1
- package/dist/utils/groupItems.js +9 -9
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/sharedResizeObserver.d.ts.map +1 -1
- package/dist/utils/sharedResizeObserver.js +10 -1
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/af-ZA.json +6 -6
- package/locales/ar-SA.json +6 -6
- package/locales/ca-ES.json +5 -5
- package/locales/cs-CZ.json +6 -6
- package/locales/da-DK.json +6 -6
- package/locales/de-DE.json +6 -6
- package/locales/el-GR.json +6 -6
- package/locales/en.json +163 -11
- package/locales/es-ES.json +5 -5
- package/locales/fi-FI.json +6 -6
- package/locales/fr-FR.json +6 -6
- package/locales/he-IL.json +6 -6
- package/locales/hu-HU.json +6 -6
- package/locales/it-IT.json +6 -6
- package/locales/ja-JP.json +6 -6
- package/locales/ko-KR.json +6 -6
- package/locales/nl-NL.json +6 -6
- package/locales/no-NO.json +6 -6
- package/locales/pl-PL.json +6 -6
- package/locales/pseudo.json +114 -0
- package/locales/pt-BR.json +6 -6
- package/locales/pt-PT.json +6 -6
- package/locales/ro-RO.json +6 -6
- package/locales/ru-RU.json +6 -6
- package/locales/sr-SP.json +6 -6
- package/locales/sv-SE.json +6 -6
- package/locales/tr-TR.json +6 -6
- package/locales/uk-UA.json +6 -6
- package/locales/vi-VN.json +6 -6
- package/locales/zh-CN.json +6 -6
- package/locales/zh-TW.json +6 -6
- package/package.json +8 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AppShell/AppShell.tsx +3 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +6 -3
- package/src/AspectRatio/AspectRatio.test.tsx +57 -10
- package/src/AspectRatio/AspectRatio.tsx +40 -1
- package/src/Avatar/Avatar.doc.mjs +14 -3
- package/src/Avatar/Avatar.test.tsx +97 -0
- package/src/Avatar/Avatar.tsx +125 -52
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +15 -6
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +10 -4
- package/src/Banner/Banner.doc.mjs +22 -11
- package/src/Banner/Banner.test.tsx +177 -25
- package/src/Banner/Banner.tsx +93 -27
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +17 -4
- package/src/BottomSheet/BottomSheetSwitcher.tsx +3 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +9 -5
- package/src/Button/Button.doc.mjs +24 -1
- package/src/Button/Button.test.tsx +32 -4
- package/src/Button/Button.tsx +12 -5
- package/src/ButtonGroup/ButtonGroup.doc.mjs +10 -1
- package/src/ButtonGroup/ButtonGroup.test.tsx +404 -1
- package/src/ButtonGroup/ButtonGroup.tsx +23 -5
- package/src/Calendar/Calendar.doc.mjs +7 -6
- package/src/Calendar/Calendar.test.tsx +143 -0
- package/src/Calendar/Calendar.tsx +30 -26
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Calendar/styles.ts +49 -31
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +113 -19
- package/src/Card/Card.tsx +67 -89
- package/src/Card/index.ts +36 -1
- package/src/Carousel/Carousel.tsx +3 -2
- package/src/Chat/ChatComposerInput.tsx +5 -1
- package/src/Chat/ChatLayout.tsx +3 -2
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/Chat/ChatTokenizedText.tsx +17 -10
- package/src/Chat/useChatComposerTokens.ts +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +2 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +8 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -2
- package/src/CodeBlock/CodeBlock.doc.mjs +16 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteInput.tsx +3 -2
- package/src/CommandPalette/CommandPaletteItem.tsx +3 -2
- package/src/ComplexSelector/ComplexSelector.test.tsx +32 -0
- package/src/ComplexSelector/ComplexSelector.tsx +1 -3
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/ContextMenu/ContextMenu.tsx +4 -3
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.tsx +55 -2
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +108 -24
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +22 -0
- package/src/DateRangeInput/DateRangeInput.tsx +4 -2
- package/src/DateTimeInput/DateTimeInput.doc.mjs +18 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +1088 -0
- package/src/DateTimeInput/DateTimeInput.tsx +556 -24
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +429 -2
- package/src/Dialog/Dialog.tsx +133 -58
- package/src/DropdownMenu/DropdownMenu.doc.mjs +6 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +8 -5
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +8 -11
- package/src/Field/Field.doc.mjs +13 -2
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/Field/InputClearButton.test.tsx +15 -1
- package/src/Field/InputClearButton.tsx +28 -4
- package/src/FileInput/FileInput.tsx +3 -2
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -3
- package/src/HoverCard/HoverCard.doc.mjs +13 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +143 -3
- package/src/HoverCard/useHoverCard.tsx +104 -33
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +2 -0
- package/src/Item/Item.tsx +5 -4
- package/src/Kbd/Kbd.tsx +2 -19
- package/src/Layer/LayerDepthContext.tsx +62 -0
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/index.ts +9 -0
- package/src/Layer/layerDismissalFamilies.test.tsx +359 -0
- package/src/Layer/layerDismissalInvariants.test.tsx +417 -0
- package/src/Layer/layerStack.ts +362 -0
- package/src/Layer/useLayer.test.tsx +324 -15
- package/src/Layer/useLayer.tsx +164 -8
- package/src/Layer/useLayerDismissal.test.tsx +469 -0
- package/src/Layer/useLayerDismissal.ts +173 -0
- package/src/Layout/Layout.doc.mjs +2 -2
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +12 -0
- package/src/Lightbox/Lightbox.tsx +124 -102
- package/src/Link/Link.doc.mjs +39 -0
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.doc.mjs +5 -0
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/incremental.test.ts +16 -2
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +96 -1
- package/src/Markdown/parser.test.ts +178 -2
- package/src/Markdown/parser.ts +253 -32
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MobileNav/MobileNav.tsx +62 -36
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +49 -1
- package/src/MultiSelector/MultiSelector.test.tsx +311 -0
- package/src/MultiSelector/MultiSelector.tsx +151 -15
- package/src/MultiSelector/hooks.ts +9 -2
- package/src/MultiSelector/index.ts +1 -0
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +9 -5
- package/src/NumberInput/NumberInput.doc.mjs +31 -7
- package/src/NumberInput/NumberInput.test.tsx +436 -8
- package/src/NumberInput/NumberInput.tsx +62 -114
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +3 -2
- package/src/OverflowList/OverflowList.tsx +3 -2
- package/src/Overlay/Overlay.tsx +3 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.test.tsx +14 -0
- package/src/Popover/Popover.tsx +1 -9
- package/src/Popover/usePopover.tsx +57 -32
- package/src/PowerSearch/PowerSearch.doc.mjs +160 -28
- package/src/PowerSearch/PowerSearch.test.tsx +240 -1
- package/src/PowerSearch/PowerSearch.tsx +34 -5
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +288 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +29 -2
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +111 -1
- package/src/PowerSearch/PowerSearchValueEditor.tsx +124 -10
- package/src/PowerSearch/types.ts +2 -0
- package/src/PowerSearch/usePowerSearchSource.test.ts +82 -2
- package/src/PowerSearch/usePowerSearchSource.ts +13 -3
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/Resizable/ResizeHandle.tsx +3 -2
- package/src/SegmentedControl/SegmentedControl.tsx +3 -2
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -2
- package/src/Selector/Selector.doc.mjs +26 -1
- package/src/Selector/Selector.test.tsx +346 -1
- package/src/Selector/Selector.tsx +148 -21
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +6 -6
- package/src/SideNav/SideNav.tsx +4 -2
- package/src/SideNav/SideNavHeading.tsx +12 -12
- package/src/SideNav/SideNavItem.tsx +4 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +55 -3
- package/src/Spinner/Spinner.test.tsx +147 -1
- package/src/Spinner/Spinner.tsx +120 -101
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/Switch/Switch.doc.mjs +2 -0
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +6 -2
- package/src/TabList/Tab.doc.mjs +13 -1
- package/src/TabList/Tab.tsx +67 -7
- package/src/TabList/TabList.doc.mjs +22 -6
- package/src/TabList/TabList.test.tsx +559 -0
- package/src/TabList/TabList.tsx +490 -22
- package/src/TabList/TabListContext.ts +13 -2
- package/src/TabList/TabMenu.tsx +3 -2
- package/src/TabList/index.ts +6 -2
- package/src/Table/BaseTable.tsx +12 -4
- package/src/Table/Table.doc.mjs +9 -2
- package/src/Table/Table.test.tsx +132 -14
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +40 -0
- package/src/Table/TableFooter.doc.mjs +40 -0
- package/src/Table/TableHeader.doc.mjs +40 -0
- package/src/Table/TableRow.tsx +16 -5
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +67 -12
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +34 -4
- package/src/Table/plugins/pagination/useTablePagination.tsx +35 -3
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +9 -2
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +138 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +63 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTablePagination.doc.mjs +7 -0
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +67 -1
- package/src/Text/Text.tsx +6 -3
- package/src/TextArea/TextArea.doc.mjs +12 -2
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +37 -24
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/TextInput/TextInput.tsx +3 -2
- package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.tsx +2 -2
- package/src/Timestamp/Timestamp.test.tsx +58 -0
- package/src/Timestamp/Timestamp.tsx +12 -10
- package/src/Toast/Toast.doc.mjs +26 -12
- package/src/Toast/Toast.tsx +28 -4
- package/src/Toast/ToastViewport.test.tsx +536 -8
- package/src/Toast/ToastViewport.tsx +81 -12
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +15 -10
- package/src/Token/TokenLink.tsx +14 -5
- package/src/Tokenizer/Tokenizer.doc.mjs +43 -3
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +53 -24
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.doc.mjs +5 -0
- package/src/Tooltip/Tooltip.test.tsx +32 -0
- package/src/Tooltip/Tooltip.tsx +5 -0
- package/src/Tooltip/useTooltip.tsx +47 -24
- package/src/TopNav/TopNavHeading.tsx +5 -4
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -5
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -7
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/Typeahead/BaseTypeahead.doc.mjs +24 -0
- package/src/Typeahead/BaseTypeahead.tsx +181 -39
- package/src/Typeahead/Typeahead.doc.mjs +11 -0
- package/src/Typeahead/Typeahead.test.tsx +203 -0
- package/src/Typeahead/Typeahead.tsx +12 -2
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useContainerReveal.doc.mjs +2 -2
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useFocusTrap.test.tsx +14 -0
- package/src/hooks/useFocusTrap.ts +62 -111
- package/src/hooks/useFocusTrapEscapeShim.test.tsx +165 -0
- package/src/hooks/useHotkeys.ts +3 -18
- package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
- package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
- package/src/hooks/useInteractiveRole.doc.mjs +119 -0
- package/src/hooks/useLongPress.doc.mjs +123 -0
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/index.ts +1 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/theme/Theme.test.tsx +104 -2
- package/src/theme/Theme.tsx +49 -14
- package/src/theme/defineTheme.test.ts +23 -0
- package/src/theme/derivedVarRegistry.test.ts +26 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +99 -1
- package/src/theme/generateThemeRules.ts +28 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/utils/groupItems.ts +12 -6
- package/src/utils/index.ts +1 -1
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/sharedResizeObserver.ts +10 -2
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
- package/src/__tests__/inputWidthContract.test.tsx +0 -69
|
@@ -7,7 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
import {describe, it, expect} from 'vitest';
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
dataTokenDefaults,
|
|
12
|
+
defineTheme,
|
|
13
|
+
generateThemeCSS,
|
|
14
|
+
generateThemeRules,
|
|
15
|
+
} from './index';
|
|
16
|
+
import {generateDataTokenDefaultsCSS} from './generateThemeRules';
|
|
11
17
|
|
|
12
18
|
const defaultInput = {
|
|
13
19
|
name: 'default',
|
|
@@ -702,3 +708,95 @@ describe('physical padding longhands', () => {
|
|
|
702
708
|
expect(rule).not.toContain('--_dropdown-menu-padding');
|
|
703
709
|
});
|
|
704
710
|
});
|
|
711
|
+
|
|
712
|
+
describe('renamed theme targets', () => {
|
|
713
|
+
// The renamed targets emit both classes, so a rule written against either
|
|
714
|
+
// key selects the element. What is easy to miss is the derived-var half: a
|
|
715
|
+
// key the registry does not know still emits a rule, minus every var the
|
|
716
|
+
// component actually reads — the same silent nothing a misspelled key gives.
|
|
717
|
+
it('expands derived vars for a renamed key and its deprecated spelling', () => {
|
|
718
|
+
const rules = (component: string, styles: Record<string, string>) =>
|
|
719
|
+
generateThemeRules(
|
|
720
|
+
defineTheme({
|
|
721
|
+
name: `test-renamed-${component}`,
|
|
722
|
+
components: {[component]: {base: styles}},
|
|
723
|
+
}),
|
|
724
|
+
).join('\n');
|
|
725
|
+
|
|
726
|
+
const hoverCard = rules('hover-card', {borderRadius: '9px'});
|
|
727
|
+
expect(hoverCard).toContain('.astryx-hover-card');
|
|
728
|
+
expect(hoverCard).toContain('--_hovercard-radius: 9px');
|
|
729
|
+
expect(rules('hovercard', {borderRadius: '9px'})).toContain(
|
|
730
|
+
'--_hovercard-radius: 9px',
|
|
731
|
+
);
|
|
732
|
+
|
|
733
|
+
const textArea = rules('text-area', {paddingInline: '11px'});
|
|
734
|
+
expect(textArea).toContain('.astryx-text-area');
|
|
735
|
+
expect(textArea).toContain('--_textarea-inline-padding: 11px');
|
|
736
|
+
expect(rules('textarea', {paddingInline: '11px'})).toContain(
|
|
737
|
+
'--_textarea-inline-padding: 11px',
|
|
738
|
+
);
|
|
739
|
+
|
|
740
|
+
const mark = rules('progress-bar-mark', {width: '3px'});
|
|
741
|
+
expect(mark).toContain('.astryx-progress-bar-mark');
|
|
742
|
+
expect(mark).toContain('--_progressbar-mark-width: 3px');
|
|
743
|
+
expect(rules('progressbar-mark', {width: '3px'})).toContain(
|
|
744
|
+
'--_progressbar-mark-width: 3px',
|
|
745
|
+
);
|
|
746
|
+
});
|
|
747
|
+
});
|
|
748
|
+
|
|
749
|
+
describe('data visualization tokens', () => {
|
|
750
|
+
const scopeBlock = (theme: Parameters<typeof generateThemeRules>[0]) =>
|
|
751
|
+
generateThemeRules(theme).find(r => r.includes(':scope'));
|
|
752
|
+
|
|
753
|
+
it('seeds the whole palette once, at :root', () => {
|
|
754
|
+
const css = generateDataTokenDefaultsCSS();
|
|
755
|
+
|
|
756
|
+
expect(css.startsWith(':root {')).toBe(true);
|
|
757
|
+
for (const [name, value] of Object.entries(dataTokenDefaults)) {
|
|
758
|
+
expect(css).toContain(`${name}: ${value};`);
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
|
|
762
|
+
it('leaves the defaults out of a theme scope block', () => {
|
|
763
|
+
// A scope block that re-declared them would shadow a parent theme's
|
|
764
|
+
// override in every nested <Theme>, which no other token family does.
|
|
765
|
+
expect(scopeBlock(defineTheme({name: 'data-bare'}))).toBeUndefined();
|
|
766
|
+
});
|
|
767
|
+
|
|
768
|
+
it("puts only the theme's own data token in its scope block", () => {
|
|
769
|
+
const block = scopeBlock(
|
|
770
|
+
defineTheme({
|
|
771
|
+
name: 'data-override',
|
|
772
|
+
tokens: {'--color-data-categorical-blue': ['#123456', '#654321']},
|
|
773
|
+
}),
|
|
774
|
+
)!;
|
|
775
|
+
|
|
776
|
+
expect(block).toContain(
|
|
777
|
+
'--color-data-categorical-blue: light-dark(#123456, #654321);',
|
|
778
|
+
);
|
|
779
|
+
expect(block.match(/--color-data-/g)).toHaveLength(1);
|
|
780
|
+
expect(block).not.toContain('--color-data-categorical-orange');
|
|
781
|
+
});
|
|
782
|
+
|
|
783
|
+
it('keeps the palette out of the scoped stylesheet', () => {
|
|
784
|
+
// The palette's own contents are asserted once, against
|
|
785
|
+
// `dataTokenDefaults`, in `seeds the whole palette once, at :root` above.
|
|
786
|
+
const {component, prose} = generateThemeCSS(
|
|
787
|
+
defineTheme({name: 'data-css'}),
|
|
788
|
+
);
|
|
789
|
+
|
|
790
|
+
expect(component).not.toContain('--color-data-');
|
|
791
|
+
expect(prose).not.toContain('--color-data-');
|
|
792
|
+
});
|
|
793
|
+
|
|
794
|
+
it('keeps generateThemeCSS to its two scoped blocks', () => {
|
|
795
|
+
// The defaults are theme-independent, so they are not part of the theme
|
|
796
|
+
// CSS contract: `astryx theme build` formats them from the public
|
|
797
|
+
// `dataTokenDefaults` export instead.
|
|
798
|
+
expect(
|
|
799
|
+
Object.keys(generateThemeCSS(defineTheme({name: 'data-shape'}))).sort(),
|
|
800
|
+
).toEqual(['component', 'prose']);
|
|
801
|
+
});
|
|
802
|
+
});
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import type {DefinedTheme} from './defineTheme';
|
|
19
19
|
import {parseStyleKey} from '../utils/parseStyleKey';
|
|
20
20
|
import {getDerivedVars} from './derivedVarRegistry';
|
|
21
|
+
import {dataTokenDefaults} from './domainTokens/dataTokens';
|
|
21
22
|
import {cssVar, classPrefix, dataAttrNamespace} from '../naming';
|
|
22
23
|
|
|
23
24
|
/**
|
|
@@ -758,6 +759,30 @@ export function generateOnMediaCSS(theme: DefinedTheme): string {
|
|
|
758
759
|
return `@scope (${scopeSelector}) to (${THEME_SCOPE_TO}) {\n${inner}\n}`;
|
|
759
760
|
}
|
|
760
761
|
|
|
762
|
+
/**
|
|
763
|
+
* The `--color-data-*` defaults as one unscoped `:root` block.
|
|
764
|
+
*
|
|
765
|
+
* Core tokens reach CSS once, at `:root`, from StyleX's `defineVars` output in
|
|
766
|
+
* `@layer astryx-base`; a theme's own scope block then carries only the tokens
|
|
767
|
+
* that theme overrides, which is why a nested theme inherits its parent's
|
|
768
|
+
* override instead of shadowing it. Data tokens are not StyleX vars, so nothing
|
|
769
|
+
* declares them — this is their equivalent, and callers put it in
|
|
770
|
+
* `@layer astryx-base` so a theme's override wins by layer rather than by
|
|
771
|
+
* specificity. Seeding it per theme scope instead re-declares the default
|
|
772
|
+
* inside every nested theme, which is the shadowing this shape avoids.
|
|
773
|
+
*
|
|
774
|
+
* @internal Not exported from `@astryxdesign/core/theme`: the `<Theme>`
|
|
775
|
+
* runtime is the only caller. `astryx theme build` formats the same block from
|
|
776
|
+
* the public `dataTokenDefaults` export, and a CLI test asserts the two are
|
|
777
|
+
* byte-identical.
|
|
778
|
+
*/
|
|
779
|
+
export function generateDataTokenDefaultsCSS(): string {
|
|
780
|
+
const declarations = Object.entries(dataTokenDefaults)
|
|
781
|
+
.map(([prop, value]) => ` ${prop}: ${value};`)
|
|
782
|
+
.join('\n');
|
|
783
|
+
return `:root {\n${declarations}\n}`;
|
|
784
|
+
}
|
|
785
|
+
|
|
761
786
|
/**
|
|
762
787
|
* Generate layered CSS for a theme — runtime path.
|
|
763
788
|
*
|
|
@@ -768,6 +793,9 @@ export function generateOnMediaCSS(theme: DefinedTheme): string {
|
|
|
768
793
|
* This separation ensures prose defaults (what bare HTML looks like in a theme)
|
|
769
794
|
* sit at reset-layer priority where any class-based style wins, while component
|
|
770
795
|
* overrides sit above StyleX so themes can restyle components intentionally.
|
|
796
|
+
*
|
|
797
|
+
* The theme-independent `--color-data-*` defaults are not part of this output:
|
|
798
|
+
* see `generateDataTokenDefaultsCSS`.
|
|
771
799
|
*/
|
|
772
800
|
export function generateThemeCSS(theme: DefinedTheme): ThemeCSSOutput {
|
|
773
801
|
const {component, prose} = generateThemeRulesSplit(theme);
|
|
@@ -44,8 +44,11 @@ export const syntaxTokenDefaults = {
|
|
|
44
44
|
'--color-syntax-attribute': 'var(--color-text-teal)',
|
|
45
45
|
// property -> cyan text (object properties)
|
|
46
46
|
'--color-syntax-property': 'var(--color-text-cyan)',
|
|
47
|
-
// punctuation ->
|
|
48
|
-
|
|
47
|
+
// punctuation -> secondary text (brackets, semicolons). Not disabled text:
|
|
48
|
+
// disabled grey is calibrated to fail AA on purpose (WCAG exempts inactive
|
|
49
|
+
// controls), and punctuation in a code sample is normal, always-active
|
|
50
|
+
// text — see #5386.
|
|
51
|
+
'--color-syntax-punctuation': 'var(--color-text-secondary)',
|
|
49
52
|
// background -> muted surface
|
|
50
53
|
'--color-syntax-background': 'var(--color-background-muted)',
|
|
51
54
|
} as const;
|
package/src/utils/groupItems.ts
CHANGED
|
@@ -19,6 +19,11 @@ export interface ItemGroup<T extends SearchableItem = SearchableItem> {
|
|
|
19
19
|
items: T[];
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
export interface GroupItemsOptions {
|
|
23
|
+
/** Place ungrouped items before named groups instead of after them. */
|
|
24
|
+
ungroupedFirst?: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
22
27
|
/**
|
|
23
28
|
* Extract the group string from an item's auxiliaryData.
|
|
24
29
|
*/
|
|
@@ -52,6 +57,7 @@ export function getItemGroup(item: SearchableItem): string | undefined {
|
|
|
52
57
|
*/
|
|
53
58
|
export function groupItems<T extends SearchableItem>(
|
|
54
59
|
items: T[],
|
|
60
|
+
{ungroupedFirst = false}: GroupItemsOptions = {},
|
|
55
61
|
): ItemGroup<T>[] {
|
|
56
62
|
const hasGroups = items.some(item => getItemGroup(item) != null);
|
|
57
63
|
|
|
@@ -76,14 +82,14 @@ export function groupItems<T extends SearchableItem>(
|
|
|
76
82
|
}
|
|
77
83
|
}
|
|
78
84
|
|
|
79
|
-
const
|
|
85
|
+
const namedGroups: ItemGroup<T>[] = groupOrder.map(heading => ({
|
|
80
86
|
heading,
|
|
81
87
|
items: groups.get(heading) ?? [],
|
|
82
88
|
}));
|
|
89
|
+
const ungroupedGroup: ItemGroup<T>[] =
|
|
90
|
+
ungrouped.length > 0 ? [{heading: null, items: ungrouped}] : [];
|
|
83
91
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
return result;
|
|
92
|
+
return ungroupedFirst
|
|
93
|
+
? [...ungroupedGroup, ...namedGroups]
|
|
94
|
+
: [...namedGroups, ...ungroupedGroup];
|
|
89
95
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -86,7 +86,7 @@ export type {
|
|
|
86
86
|
ThemeProps,
|
|
87
87
|
} from './themeProps';
|
|
88
88
|
export {groupItems, getItemGroup} from './groupItems';
|
|
89
|
-
export type {ItemGroup} from './groupItems';
|
|
89
|
+
export type {ItemGroup, GroupItemsOptions} from './groupItems';
|
|
90
90
|
export {observeResize, unobserveResize} from './sharedResizeObserver';
|
|
91
91
|
export {isRenderable} from './isRenderable';
|
|
92
92
|
export {getInputARIA} from './inputAria';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file isApplePlatform.test.ts
|
|
5
|
+
* @input Uses vitest, isApplePlatform
|
|
6
|
+
* @output Unit tests for isApplePlatform
|
|
7
|
+
* @position Testing; validates isApplePlatform.ts implementation
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {describe, it, expect, vi, afterEach} from 'vitest';
|
|
11
|
+
import {isApplePlatform} from './isApplePlatform';
|
|
12
|
+
|
|
13
|
+
afterEach(() => {
|
|
14
|
+
vi.unstubAllGlobals();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
describe('isApplePlatform', () => {
|
|
18
|
+
it('trusts a client-hints platform that names one', () => {
|
|
19
|
+
vi.stubGlobal('navigator', {
|
|
20
|
+
userAgentData: {platform: 'macOS'},
|
|
21
|
+
platform: 'Win32',
|
|
22
|
+
});
|
|
23
|
+
expect(isApplePlatform()).toBe(true);
|
|
24
|
+
|
|
25
|
+
vi.stubGlobal('navigator', {
|
|
26
|
+
userAgentData: {platform: 'Windows'},
|
|
27
|
+
platform: 'MacIntel',
|
|
28
|
+
});
|
|
29
|
+
expect(isApplePlatform()).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it.each([
|
|
33
|
+
['blank', ''],
|
|
34
|
+
['whitespace', ' '],
|
|
35
|
+
['the spec Unknown sentinel', 'Unknown'],
|
|
36
|
+
['unknown in any case', 'UNKNOWN'],
|
|
37
|
+
['a non-string', null],
|
|
38
|
+
])('falls through to navigator.platform on %s', (_label, platform) => {
|
|
39
|
+
vi.stubGlobal('navigator', {
|
|
40
|
+
userAgentData: {platform},
|
|
41
|
+
platform: 'MacIntel',
|
|
42
|
+
});
|
|
43
|
+
expect(isApplePlatform()).toBe(true);
|
|
44
|
+
|
|
45
|
+
vi.stubGlobal('navigator', {userAgentData: {platform}, platform: 'Win32'});
|
|
46
|
+
expect(isApplePlatform()).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('falls back to navigator.platform when client hints are absent', () => {
|
|
50
|
+
vi.stubGlobal('navigator', {platform: 'iPhone'});
|
|
51
|
+
expect(isApplePlatform()).toBe(true);
|
|
52
|
+
|
|
53
|
+
vi.stubGlobal('navigator', {platform: 'Linux x86_64'});
|
|
54
|
+
expect(isApplePlatform()).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('answers false when there is no navigator at all', () => {
|
|
58
|
+
vi.stubGlobal('navigator', undefined);
|
|
59
|
+
expect(isApplePlatform()).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file isApplePlatform.ts
|
|
5
|
+
* @input Reads navigator.userAgentData.platform and navigator.platform
|
|
6
|
+
* @output Exports isApplePlatform
|
|
7
|
+
* @position Internal util; the single platform detection behind useHotkeys and Kbd
|
|
8
|
+
*
|
|
9
|
+
* Deliberately absent from utils/index.ts: packages/core/src/index.ts does
|
|
10
|
+
* `export * from './utils'`, so naming it there would publish it as API.
|
|
11
|
+
* Import it by path, as interactionModality is imported.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Detects whether the current platform is macOS/iOS.
|
|
16
|
+
* Prefers the User-Agent Client Hints API when it names a platform (modern
|
|
17
|
+
* Chrome/Edge), falls back to navigator.platform (deprecated but universally
|
|
18
|
+
* supported) when it names none.
|
|
19
|
+
*/
|
|
20
|
+
export function isApplePlatform(): boolean {
|
|
21
|
+
if (typeof navigator === 'undefined') {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const uaData = 'userAgentData' in navigator ? navigator.userAgentData : null;
|
|
25
|
+
if (uaData && typeof uaData === 'object' && 'platform' in uaData) {
|
|
26
|
+
const uaPlatform = (uaData as {platform?: unknown}).platform;
|
|
27
|
+
const named = typeof uaPlatform === 'string' ? uaPlatform.trim() : '';
|
|
28
|
+
// A value that names nothing is no answer, not a negative one: builds that
|
|
29
|
+
// rewrite their client-hints identity ship '', and 'Unknown' is the spec's
|
|
30
|
+
// own sentinel for "cannot say". Both fall through rather than reading as
|
|
31
|
+
// "not Apple".
|
|
32
|
+
if (named !== '' && named.toLowerCase() !== 'unknown') {
|
|
33
|
+
return /mac/i.test(named);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return /Mac|iPhone|iPad|iPod/.test(navigator.platform ?? '');
|
|
37
|
+
}
|
|
@@ -24,7 +24,15 @@ type ResizeCallback = (entry: ResizeObserverEntry) => void;
|
|
|
24
24
|
let observer: ResizeObserver | null = null;
|
|
25
25
|
const callbacks = new Map<Element, ResizeCallback>();
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The shared observer, or null where the API does not exist (jsdom, an old
|
|
29
|
+
* browser). Callers still get the one-shot measurement `observeResize` fires
|
|
30
|
+
* on registration; live resize updates are the part that needs the API.
|
|
31
|
+
*/
|
|
32
|
+
function getObserver(): ResizeObserver | null {
|
|
33
|
+
if (typeof ResizeObserver === 'undefined') {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
28
36
|
if (!observer) {
|
|
29
37
|
observer = new ResizeObserver(entries => {
|
|
30
38
|
for (const entry of entries) {
|
|
@@ -64,7 +72,7 @@ export function observeResize(
|
|
|
64
72
|
callback: ResizeCallback,
|
|
65
73
|
): void {
|
|
66
74
|
callbacks.set(element, callback);
|
|
67
|
-
getObserver()
|
|
75
|
+
getObserver()?.observe(element);
|
|
68
76
|
|
|
69
77
|
// Fire once immediately so callers get an initial measurement
|
|
70
78
|
// without duplicating their logic outside the observer path.
|
|
@@ -135,6 +135,9 @@ describe('parseTimeInput', () => {
|
|
|
135
135
|
it('parses compact formats', () => {
|
|
136
136
|
expect(parseTimeInput('1430')).toBe('14:30');
|
|
137
137
|
expect(parseTimeInput('0000')).toBe('00:00');
|
|
138
|
+
expect(parseTimeInput('0230pm')).toBe('14:30');
|
|
139
|
+
expect(parseTimeInput('1230am')).toBe('00:30');
|
|
140
|
+
expect(parseTimeInput('023045pm', true)).toBe('14:30:45');
|
|
138
141
|
});
|
|
139
142
|
|
|
140
143
|
it('parses hour-only with meridiem', () => {
|
|
@@ -259,7 +262,9 @@ describe('adjustTime', () => {
|
|
|
259
262
|
|
|
260
263
|
it('wraps large negative deltas in constant time', () => {
|
|
261
264
|
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7)).toBe('10:00');
|
|
262
|
-
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
265
|
+
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
266
|
+
'09:30',
|
|
267
|
+
);
|
|
263
268
|
});
|
|
264
269
|
|
|
265
270
|
it('adds minutes', () => {
|
package/src/utils/timeParser.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @file timeParser.ts
|
|
5
5
|
* @input Uses string parsing
|
|
6
6
|
* @output Exports time parsing and formatting utilities
|
|
7
|
-
* @position Shared utility; used by
|
|
7
|
+
* @position Shared utility; used by TimeInput and DateTimeInput
|
|
8
8
|
*
|
|
9
9
|
* SYNC: When modified, update this header
|
|
10
10
|
*/
|
|
@@ -175,16 +175,29 @@ export function parseTimeInput(
|
|
|
175
175
|
// Remove AM/PM suffix
|
|
176
176
|
const timeStr = trimmed.replace(/\s*[ap]\.?m?\.?\s*$/i, '').trim();
|
|
177
177
|
|
|
178
|
+
const convertHourTo24Hour = (hour: number): number | null => {
|
|
179
|
+
if (!hasMeridiem) {
|
|
180
|
+
return hour;
|
|
181
|
+
}
|
|
182
|
+
if (hour < 1 || hour > 12) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (isPM && hour !== 12) {
|
|
186
|
+
return hour + 12;
|
|
187
|
+
}
|
|
188
|
+
if (isAM && hour === 12) {
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
return hour;
|
|
192
|
+
};
|
|
193
|
+
|
|
178
194
|
// Handle formats like "2pm" -> "2"
|
|
179
195
|
if (/^\d{1,2}$/.test(timeStr)) {
|
|
180
196
|
const hour = parseInt(timeStr, 10);
|
|
181
|
-
if (
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
if (isAM && hour === 12) {
|
|
187
|
-
hour24 = 0;
|
|
197
|
+
if (hasMeridiem) {
|
|
198
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
199
|
+
if (hour24 === null) {
|
|
200
|
+
return null;
|
|
188
201
|
}
|
|
189
202
|
return formatISOTime(
|
|
190
203
|
{hour: hour24, minute: 0, second: 0},
|
|
@@ -201,8 +214,15 @@ export function parseTimeInput(
|
|
|
201
214
|
if (/^\d{4}$/.test(timeStr)) {
|
|
202
215
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
203
216
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
204
|
-
|
|
205
|
-
|
|
217
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
218
|
+
if (
|
|
219
|
+
hour24 !== null &&
|
|
220
|
+
hour24 >= 0 &&
|
|
221
|
+
hour24 <= 23 &&
|
|
222
|
+
minute >= 0 &&
|
|
223
|
+
minute <= 59
|
|
224
|
+
) {
|
|
225
|
+
return formatISOTime({hour: hour24, minute, second: 0}, includeSeconds);
|
|
206
226
|
}
|
|
207
227
|
return null;
|
|
208
228
|
}
|
|
@@ -212,15 +232,17 @@ export function parseTimeInput(
|
|
|
212
232
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
213
233
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
214
234
|
const second = parseInt(timeStr.slice(4, 6), 10);
|
|
235
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
215
236
|
if (
|
|
216
|
-
|
|
217
|
-
|
|
237
|
+
hour24 !== null &&
|
|
238
|
+
hour24 >= 0 &&
|
|
239
|
+
hour24 <= 23 &&
|
|
218
240
|
minute >= 0 &&
|
|
219
241
|
minute <= 59 &&
|
|
220
242
|
second >= 0 &&
|
|
221
243
|
second <= 59
|
|
222
244
|
) {
|
|
223
|
-
return formatISOTime({hour, minute, second}, includeSeconds);
|
|
245
|
+
return formatISOTime({hour: hour24, minute, second}, includeSeconds);
|
|
224
246
|
}
|
|
225
247
|
return null;
|
|
226
248
|
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
-
|
|
3
|
-
import {describe, it, expect} from 'vitest';
|
|
4
|
-
|
|
5
|
-
import {docs as CheckboxInputDocs} from '../CheckboxInput/CheckboxInput.doc.mjs';
|
|
6
|
-
import {docs as CheckboxListDocs} from '../CheckboxList/CheckboxList.doc.mjs';
|
|
7
|
-
import {docs as DateInputDocs} from '../DateInput/DateInput.doc.mjs';
|
|
8
|
-
import {docs as DateRangeInputDocs} from '../DateRangeInput/DateRangeInput.doc.mjs';
|
|
9
|
-
import {docs as DateTimeInputDocs} from '../DateTimeInput/DateTimeInput.doc.mjs';
|
|
10
|
-
import {docs as FileInputDocs} from '../FileInput/FileInput.doc.mjs';
|
|
11
|
-
import {docs as MultiSelectorDocs} from '../MultiSelector/MultiSelector.doc.mjs';
|
|
12
|
-
import {docs as NumberInputDocs} from '../NumberInput/NumberInput.doc.mjs';
|
|
13
|
-
import {docs as RadioListDocs} from '../RadioList/RadioList.doc.mjs';
|
|
14
|
-
import {docs as SelectorDocs} from '../Selector/Selector.doc.mjs';
|
|
15
|
-
import {docs as SliderDocs} from '../Slider/Slider.doc.mjs';
|
|
16
|
-
import {docs as SwitchDocs} from '../Switch/Switch.doc.mjs';
|
|
17
|
-
import {docs as TextAreaDocs} from '../TextArea/TextArea.doc.mjs';
|
|
18
|
-
import {docs as TextInputDocs} from '../TextInput/TextInput.doc.mjs';
|
|
19
|
-
import {docs as TimeInputDocs} from '../TimeInput/TimeInput.doc.mjs';
|
|
20
|
-
import {docs as TokenizerDocs} from '../Tokenizer/Tokenizer.doc.mjs';
|
|
21
|
-
import {docs as TypeaheadDocs} from '../Typeahead/Typeahead.doc.mjs';
|
|
22
|
-
|
|
23
|
-
const inputDocsSuite = [
|
|
24
|
-
{name: 'CheckboxInput', docs: CheckboxInputDocs},
|
|
25
|
-
{name: 'CheckboxList', docs: CheckboxListDocs},
|
|
26
|
-
{name: 'DateInput', docs: DateInputDocs},
|
|
27
|
-
{name: 'DateRangeInput', docs: DateRangeInputDocs},
|
|
28
|
-
{name: 'DateTimeInput', docs: DateTimeInputDocs},
|
|
29
|
-
{name: 'FileInput', docs: FileInputDocs},
|
|
30
|
-
{name: 'MultiSelector', docs: MultiSelectorDocs},
|
|
31
|
-
{name: 'NumberInput', docs: NumberInputDocs},
|
|
32
|
-
{name: 'RadioList', docs: RadioListDocs},
|
|
33
|
-
{name: 'Selector', docs: SelectorDocs},
|
|
34
|
-
{name: 'Slider', docs: SliderDocs},
|
|
35
|
-
{name: 'Switch', docs: SwitchDocs},
|
|
36
|
-
{name: 'TextArea', docs: TextAreaDocs},
|
|
37
|
-
{name: 'TextInput', docs: TextInputDocs},
|
|
38
|
-
{name: 'TimeInput', docs: TimeInputDocs},
|
|
39
|
-
{name: 'Tokenizer', docs: TokenizerDocs},
|
|
40
|
-
{name: 'Typeahead', docs: TypeaheadDocs},
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
describe('Input Family width Prop Contract (#4163)', () => {
|
|
44
|
-
inputDocsSuite.forEach(({name, docs}) => {
|
|
45
|
-
it(`documents the width prop for ${name}`, () => {
|
|
46
|
-
// `docs` is the ComponentDoc union (single vs multi component); narrow it
|
|
47
|
-
// for structural access to either the top-level props or the first
|
|
48
|
-
// sub-component's props.
|
|
49
|
-
const doc = docs as {
|
|
50
|
-
props?: {name: string; type: string}[];
|
|
51
|
-
components?: {props?: {name: string; type: string}[]}[];
|
|
52
|
-
};
|
|
53
|
-
const propsList = (doc.props || doc.components?.[0]?.props) as {
|
|
54
|
-
name: string;
|
|
55
|
-
type: string;
|
|
56
|
-
}[];
|
|
57
|
-
expect(
|
|
58
|
-
propsList,
|
|
59
|
-
`${name}.doc.mjs must expose a props array`,
|
|
60
|
-
).toBeDefined();
|
|
61
|
-
const widthProp = propsList.find(p => p.name === 'width');
|
|
62
|
-
expect(
|
|
63
|
-
widthProp,
|
|
64
|
-
`${name}.doc.mjs must document the width prop`,
|
|
65
|
-
).toBeDefined();
|
|
66
|
-
expect(widthProp?.type).toBe('SizeValue');
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
});
|