@astryxdesign/core 0.3.0 → 0.4.0-canary.41f53a0
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 +156 -0
- package/dist/AlertDialog/AlertDialog.d.ts +10 -2
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +22 -3
- package/dist/AppShell/AppShell.d.ts +2 -2
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +40 -9
- package/dist/AspectRatio/AspectRatio.d.ts +13 -0
- package/dist/AspectRatio/AspectRatio.d.ts.map +1 -1
- package/dist/AspectRatio/AspectRatio.js +9 -0
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +33 -20
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +15 -14
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
- package/dist/Breadcrumbs/index.d.ts +2 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +1 -0
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +12 -16
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +2 -1
- package/dist/Calendar/styles.d.ts +0 -2
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +0 -2
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +8 -12
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +2 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +3 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -3
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +17 -17
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +2 -6
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +36 -125
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +3 -11
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +84 -67
- package/dist/Collapsible/Collapsible.d.ts.map +1 -1
- package/dist/Collapsible/Collapsible.js +35 -15
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +6 -3
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +32 -31
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +1 -1
- package/dist/ContextMenu/index.d.ts +2 -1
- package/dist/ContextMenu/index.d.ts.map +1 -1
- package/dist/ContextMenu/index.js +1 -0
- package/dist/DateInput/DateInput.d.ts +9 -2
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +47 -33
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +55 -32
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +54 -30
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +4 -4
- package/dist/DropdownMenu/DropdownMenu.d.ts +33 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +62 -20
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts +25 -0
- package/dist/DropdownMenu/DropdownMenuDivider.d.ts.map +1 -0
- package/dist/DropdownMenu/DropdownMenuDivider.js +66 -0
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +15 -2
- package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +20 -8
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +2 -8
- package/dist/DropdownMenu/index.d.ts +2 -1
- package/dist/DropdownMenu/index.d.ts.map +1 -1
- package/dist/DropdownMenu/index.js +4 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +35 -27
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +9 -5
- package/dist/Field/InputClearButton.d.ts +16 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +15 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +3 -19
- package/dist/Indicator/CheckIndicator.d.ts +25 -0
- package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckIndicator.js +155 -0
- package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
- package/dist/Indicator/CheckboxIndicator.js +173 -0
- package/dist/Indicator/RadioIndicator.d.ts +23 -0
- package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
- package/dist/Indicator/RadioIndicator.js +137 -0
- package/dist/Indicator/index.d.ts +24 -0
- package/dist/Indicator/index.d.ts.map +1 -0
- package/dist/Indicator/index.js +26 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
- package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
- package/dist/Indicator/indicator.markers.stylex.js +21 -0
- package/dist/Indicator/indicatorRegistry.d.ts +71 -0
- package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
- package/dist/Indicator/indicatorRegistry.js +93 -0
- package/dist/Indicator/types.d.ts +177 -0
- package/dist/Indicator/types.d.ts.map +1 -0
- package/dist/Indicator/types.js +1 -0
- package/dist/Indicator/useIndicator.d.ts +18 -0
- package/dist/Indicator/useIndicator.d.ts.map +1 -0
- package/dist/Indicator/useIndicator.js +30 -0
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +4 -8
- package/dist/Layer/useLayer.d.ts +14 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +25 -2
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +80 -103
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +4 -5
- package/dist/MobileNav/MobileNav.js +8 -8
- package/dist/MoreMenu/MoreMenu.d.ts +14 -1
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts +8 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +119 -95
- package/dist/NumberInput/NumberInput.d.ts +27 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +230 -42
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +2 -3
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +61 -63
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -8
- package/dist/Popover/usePopover.d.ts +15 -0
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -2
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
- package/dist/ProgressBar/ProgressBar.d.ts +11 -4
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +95 -6
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +29 -84
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +2 -3
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +3 -11
- package/dist/Selector/Selector.d.ts +12 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +222 -111
- package/dist/Selector/hooks.d.ts +18 -6
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +57 -40
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +29 -14
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +56 -20
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +28 -22
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +2 -6
- package/dist/Stack/stack.stylex.d.ts +3 -3
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +14 -13
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +2 -3
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +41 -19
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +8 -0
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
- package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
- package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/index.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
- package/dist/Table/tableContextMenu.d.ts.map +1 -1
- package/dist/Table/tableContextMenu.js +2 -1
- package/dist/Table/types.d.ts +11 -0
- package/dist/Table/types.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 +16 -6
- package/dist/TextInput/TextInput.d.ts +10 -1
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +13 -19
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +32 -26
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +14 -17
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +14 -3
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
- package/dist/Timestamp/TimestampHoverCard.js +16 -34
- package/dist/Timestamp/formatInstant.d.ts +11 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +3 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +20 -11
- 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 +3 -19
- package/dist/TopNav/TopNav.d.ts.map +1 -1
- package/dist/TopNav/TopNav.js +6 -5
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +54 -16
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -9
- package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +146 -60
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +83 -38
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +13 -0
- package/dist/TreeList/TreeListBranches.d.ts +1 -1
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +14 -4
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +57 -30
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +16 -8
- package/dist/astryx.css +84 -96
- package/dist/astryx.umd.js +56 -56
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.stylex.d.ts +61 -0
- package/dist/hooks/containerReveal.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.stylex.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -0
- package/dist/hooks/useClipboard.d.ts +59 -0
- package/dist/hooks/useClipboard.d.ts.map +1 -0
- package/dist/hooks/useClipboard.js +106 -0
- package/dist/hooks/useContainerReveal.d.ts +14 -8
- package/dist/hooks/useContainerReveal.d.ts.map +1 -1
- package/dist/hooks/useContainerReveal.js +28 -69
- package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
- package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
- package/dist/hooks/useIndicatorFocusRing.js +96 -0
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +17 -4
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +12 -2
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +33 -18
- package/dist/hooks/useStreamingText.d.ts +18 -3
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +47 -7
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +9 -3
- package/dist/hooks/useTypeahead.d.ts +3 -2
- package/dist/hooks/useTypeahead.d.ts.map +1 -1
- package/dist/hooks/useTypeahead.js +19 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/defineTheme.d.ts +18 -2
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +10 -1
- package/dist/theme/derivedVarRegistry.d.ts +8 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +14 -13
- package/dist/theme/expandColorScale.d.ts +3 -1
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +17 -7
- package/dist/theme/expandTypeScale.d.ts.map +1 -1
- package/dist/theme/expandTypeScale.js +17 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +11 -0
- package/dist/theme/index.d.ts +2 -1
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -1
- package/dist/theme/tokens.stylex.d.ts +12 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +23 -0
- package/dist/utils/focusOutline.stylex.d.ts +122 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
- package/dist/utils/focusOutline.stylex.js +143 -0
- package/dist/utils/focusReturn.d.ts +24 -0
- package/dist/utils/focusReturn.d.ts.map +1 -0
- package/dist/utils/focusReturn.js +29 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +6 -1
- package/dist/utils/mergeRefs.d.ts.map +1 -1
- package/dist/utils/mergeRefs.js +7 -5
- package/dist/utils/rtlStyles.d.ts +2 -2
- package/dist/utils/rtlStyles.js +2 -2
- package/dist/utils/themeProps.d.ts +20 -1
- package/dist/utils/themeProps.d.ts.map +1 -1
- package/dist/utils/themeProps.js +8 -2
- package/locales/en.json +20 -0
- package/locales/pseudo.json +15 -0
- package/package.json +8 -3
- package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
- package/src/AlertDialog/AlertDialog.test.tsx +208 -1
- package/src/AlertDialog/AlertDialog.tsx +21 -3
- package/src/AppShell/AppShell.doc.mjs +11 -0
- package/src/AppShell/AppShell.test.tsx +139 -0
- package/src/AppShell/AppShell.tsx +32 -22
- package/src/AspectRatio/AspectRatio.doc.mjs +27 -3
- package/src/AspectRatio/AspectRatio.test.tsx +30 -0
- package/src/AspectRatio/AspectRatio.tsx +13 -0
- package/src/Avatar/Avatar.doc.mjs +2 -13
- package/src/Avatar/Avatar.test.tsx +33 -8
- package/src/Avatar/Avatar.tsx +52 -50
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
- package/src/Banner/Banner.tsx +9 -6
- package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
- package/src/Breadcrumbs/index.ts +5 -1
- package/src/Button/Button.doc.mjs +2 -2
- package/src/Button/Button.tsx +22 -41
- package/src/Calendar/Calendar.tsx +2 -1
- package/src/Calendar/styles.ts +0 -8
- package/src/Carousel/Carousel.doc.mjs +3 -0
- package/src/Carousel/Carousel.tsx +10 -6
- package/src/Chat/Chat.doc.mjs +2 -0
- package/src/Chat/ChatDictationButton.tsx +7 -1
- package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
- package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
- package/src/Chat/ChatSendButton.tsx +2 -3
- package/src/Chat/ChatToolCalls.test.tsx +35 -0
- package/src/Chat/ChatToolCalls.tsx +36 -16
- package/src/Chat/useTriggerMenu.tsx +2 -5
- package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
- package/src/CheckboxInput/CheckboxInput.test.tsx +120 -0
- package/src/CheckboxInput/CheckboxInput.tsx +45 -202
- package/src/ClickableCard/ClickableCard.tsx +6 -11
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -0
- package/src/CodeBlock/CodeBlock.test.tsx +91 -0
- package/src/CodeBlock/CodeBlock.tsx +57 -80
- package/src/Collapsible/Collapsible.tsx +22 -18
- package/src/CommandPalette/CommandPalette.test.tsx +29 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
- package/src/CommandPalette/CommandPaletteList.tsx +2 -2
- package/src/ComplexSelector/ComplexSelector.doc.mjs +42 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +73 -0
- package/src/ComplexSelector/ComplexSelector.tsx +41 -28
- package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
- package/src/ContextMenu/ContextMenu.test.tsx +41 -0
- package/src/ContextMenu/ContextMenu.tsx +3 -3
- package/src/ContextMenu/index.ts +5 -1
- package/src/DateInput/DateInput.doc.mjs +18 -3
- package/src/DateInput/DateInput.test.tsx +112 -11
- package/src/DateInput/DateInput.tsx +44 -25
- package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
- package/src/DateRangeInput/DateRangeInput.tsx +27 -21
- package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +154 -1
- package/src/DateTimeInput/DateTimeInput.tsx +58 -17
- package/src/Dialog/Dialog.tsx +2 -9
- package/src/DropdownMenu/DropdownMenu.doc.mjs +5 -9
- package/src/DropdownMenu/DropdownMenu.test.tsx +534 -4
- package/src/DropdownMenu/DropdownMenu.tsx +113 -52
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
- package/src/DropdownMenu/DropdownMenuDivider.doc.mjs +34 -0
- package/src/DropdownMenu/DropdownMenuDivider.tsx +81 -0
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +39 -4
- package/src/DropdownMenu/DropdownMenuItem.tsx +48 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +1 -5
- package/src/DropdownMenu/index.ts +8 -1
- package/src/DropdownMenu/renderDropdownItems.tsx +33 -34
- package/src/EmptyState/EmptyState.doc.mjs +4 -0
- package/src/EmptyState/EmptyState.test.tsx +62 -0
- package/src/EmptyState/EmptyState.tsx +16 -6
- package/src/Field/Field.doc.mjs +1 -0
- package/src/Field/InputClearButton.test.tsx +117 -0
- package/src/Field/InputClearButton.tsx +30 -3
- package/src/HoverCard/useHoverCard.tsx +2 -23
- package/src/Icon/Icon.doc.mjs +2 -1
- package/src/Indicator/CheckIndicator.tsx +174 -0
- package/src/Indicator/CheckboxIndicator.tsx +257 -0
- package/src/Indicator/Indicator.doc.mjs +344 -0
- package/src/Indicator/Indicator.test.tsx +393 -0
- package/src/Indicator/RadioIndicator.tsx +206 -0
- package/src/Indicator/index.ts +46 -0
- package/src/Indicator/indicator.markers.stylex.ts +19 -0
- package/src/Indicator/indicatorRegistry.test.tsx +106 -0
- package/src/Indicator/indicatorRegistry.ts +120 -0
- package/src/Indicator/types.ts +197 -0
- package/src/Indicator/useIndicator.ts +39 -0
- package/src/Item/Item.doc.mjs +1 -1
- package/src/Item/Item.tsx +7 -14
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layer/useLayer.test.tsx +85 -0
- package/src/Layer/useLayer.tsx +39 -1
- package/src/Lightbox/Lightbox.doc.mjs +1 -1
- package/src/Lightbox/Lightbox.tsx +45 -49
- package/src/Link/Link.tsx +4 -11
- package/src/MobileNav/MobileNav.tsx +3 -3
- package/src/MoreMenu/MoreMenu.doc.mjs +31 -0
- package/src/MoreMenu/MoreMenu.test.tsx +68 -1
- package/src/MoreMenu/MoreMenu.tsx +19 -0
- package/src/MultiSelector/MultiSelector.doc.mjs +16 -1
- package/src/MultiSelector/MultiSelector.test.tsx +259 -16
- package/src/MultiSelector/MultiSelector.tsx +144 -121
- package/src/NumberInput/NumberInput.doc.mjs +265 -50
- package/src/NumberInput/NumberInput.test.tsx +726 -21
- package/src/NumberInput/NumberInput.tsx +353 -59
- package/src/Outline/Outline.tsx +2 -5
- package/src/Pagination/Pagination.doc.mjs +1 -1
- package/src/Pagination/Pagination.test.tsx +22 -7
- package/src/Pagination/Pagination.tsx +38 -35
- package/src/Popover/Popover.doc.mjs +2 -0
- package/src/Popover/Popover.tsx +6 -7
- package/src/Popover/usePopover.tsx +37 -4
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +27 -5
- package/src/ProgressBar/ProgressBar.test.tsx +224 -1
- package/src/ProgressBar/ProgressBar.tsx +126 -30
- package/src/RadioList/RadioList.doc.mjs +4 -2
- package/src/RadioList/RadioListItem.tsx +31 -130
- package/src/Resizable/ResizeHandle.tsx +2 -9
- package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
- package/src/SelectableCard/SelectableCard.tsx +4 -9
- package/src/Selector/Selector.doc.mjs +15 -4
- package/src/Selector/Selector.test.tsx +1234 -98
- package/src/Selector/Selector.tsx +254 -126
- package/src/Selector/hooks.ts +77 -50
- package/src/SideNav/SideNav.test.tsx +46 -0
- package/src/SideNav/SideNav.tsx +1 -0
- package/src/SideNav/SideNavCollapseButton.tsx +15 -10
- package/src/SideNav/SideNavHeading.tsx +48 -10
- package/src/SideNav/SideNavItem.tsx +20 -12
- package/src/Slider/Slider.tsx +2 -11
- package/src/Stack/Stack.doc.mjs +110 -0
- package/src/StatusDot/StatusDot.doc.mjs +12 -3
- package/src/Switch/Switch.test.tsx +32 -0
- package/src/Switch/Switch.tsx +18 -10
- package/src/TabList/Tab.tsx +2 -9
- package/src/TabList/TabMenu.tsx +14 -21
- package/src/Table/BaseTable.tsx +11 -0
- package/src/Table/index.ts +1 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
- package/src/Table/plugins/rowExpansion/index.ts +1 -4
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
- package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
- package/src/Table/tableContextMenu.test.tsx +27 -0
- package/src/Table/tableContextMenu.tsx +1 -0
- package/src/Table/types.ts +11 -0
- package/src/Table/useTableGroupedRows.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +43 -66
- package/src/TextArea/TextArea.doc.mjs +42 -2
- package/src/TextArea/TextArea.test.tsx +219 -0
- package/src/TextArea/TextArea.tsx +34 -7
- package/src/TextInput/TextInput.doc.mjs +18 -2
- package/src/TextInput/TextInput.test.tsx +189 -0
- package/src/TextInput/TextInput.tsx +25 -31
- package/src/Thumbnail/Thumbnail.tsx +2 -9
- package/src/TimeInput/TimeInput.doc.mjs +2 -2
- package/src/TimeInput/TimeInput.test.tsx +84 -3
- package/src/TimeInput/TimeInput.tsx +26 -28
- package/src/Timestamp/Timestamp.doc.mjs +4 -3
- package/src/Timestamp/Timestamp.test.tsx +91 -14
- package/src/Timestamp/Timestamp.tsx +14 -2
- package/src/Timestamp/TimestampHoverCard.tsx +13 -35
- package/src/Timestamp/formatInstant.ts +16 -1
- package/src/Token/Token.tsx +5 -28
- package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
- package/src/Tokenizer/Tokenizer.test.tsx +45 -3
- package/src/Tokenizer/Tokenizer.tsx +10 -2
- package/src/Tooltip/useTooltip.tsx +2 -23
- package/src/TopNav/TopNav.tsx +1 -3
- package/src/TopNav/TopNavHeading.tsx +42 -13
- package/src/TopNav/TopNavItem.tsx +3 -21
- package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
- package/src/TopNav/TopNavMegaMenu.tsx +118 -53
- package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
- package/src/TopNav/TopNavMenu.tsx +34 -37
- package/src/TreeList/TreeList.doc.mjs +5 -0
- package/src/TreeList/TreeList.test.tsx +208 -8
- package/src/TreeList/TreeList.tsx +22 -0
- package/src/TreeList/TreeListBranches.tsx +25 -2
- package/src/TreeList/TreeListItem.tsx +89 -52
- package/src/Typeahead/BaseTypeahead.tsx +19 -6
- package/src/Typeahead/Typeahead.doc.mjs +1 -0
- package/src/Typeahead/Typeahead.test.tsx +76 -3
- package/src/hooks/containerReveal.stylex.ts +102 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useClipboard.doc.mjs +87 -0
- package/src/hooks/useClipboard.test.tsx +151 -0
- package/src/hooks/useClipboard.ts +135 -0
- package/src/hooks/useContainerReveal.doc.mjs +7 -7
- package/src/hooks/useContainerReveal.test.tsx +42 -62
- package/src/hooks/useContainerReveal.ts +36 -91
- package/src/hooks/useImageMode.test.ts +1 -1
- package/src/hooks/useIndicatorFocusRing.tsx +120 -0
- package/src/hooks/useInputStatusIcon.tsx +8 -8
- package/src/hooks/useLongPress.test.tsx +18 -0
- package/src/hooks/useLongPress.ts +12 -2
- package/src/hooks/useScrollLock.test.ts +72 -0
- package/src/hooks/useScrollLock.ts +51 -19
- package/src/hooks/useStreamingText.test.ts +46 -1
- package/src/hooks/useStreamingText.ts +49 -7
- package/src/hooks/useTreeFocus.test.tsx +50 -0
- package/src/hooks/useTreeFocus.ts +14 -3
- package/src/hooks/useTypeahead.test.tsx +150 -0
- package/src/hooks/useTypeahead.ts +24 -9
- package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
- package/src/index.ts +1 -0
- package/src/theme/defineTheme.ts +27 -0
- package/src/theme/derivedVarRegistry.test.ts +21 -1
- package/src/theme/derivedVarRegistry.ts +19 -6
- package/src/theme/expandColorScale.test.ts +14 -0
- package/src/theme/expandColorScale.ts +24 -9
- package/src/theme/expandTypeScale.test.ts +43 -0
- package/src/theme/expandTypeScale.ts +17 -0
- package/src/theme/generateThemeRules.test.ts +78 -20
- package/src/theme/generateThemeRules.ts +11 -0
- package/src/theme/index.ts +15 -0
- package/src/theme/tokens.stylex.ts +18 -0
- package/src/theme/tokens.test.ts +37 -0
- package/src/utils/focusOutline.stylex.ts +177 -0
- package/src/utils/focusReturn.test.ts +42 -0
- package/src/utils/focusReturn.ts +31 -0
- package/src/utils/index.ts +5 -0
- package/src/utils/mergeRefs.test.ts +48 -0
- package/src/utils/mergeRefs.ts +12 -6
- package/src/utils/rtlStyles.ts +2 -2
- package/src/utils/themeProps.ts +26 -4
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
- package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
- package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
- package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
- package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
- package/dist/RadioList/radio.markers.stylex.js +0 -12
- package/dist/hooks/containerReveal.pool.stylex.d.ts +0 -303
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +0 -1
- package/dist/hooks/containerReveal.pool.stylex.js +0 -292
- package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
- package/src/RadioList/radio.markers.stylex.ts +0 -10
- package/src/hooks/containerReveal.pool.stylex.ts +0 -571
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
} from '../theme/tokens.stylex';
|
|
36
36
|
import {
|
|
37
37
|
Field,
|
|
38
|
+
InputClearButton,
|
|
38
39
|
type InputStatus,
|
|
39
40
|
inputWrapperStyles,
|
|
40
41
|
inputStatusBorderStyles,
|
|
@@ -48,7 +49,13 @@ import {useInputGroup} from '../InputGroup/InputGroupContext';
|
|
|
48
49
|
import {groupStyles} from '../InputGroup/groupStyles';
|
|
49
50
|
import {useSize} from '../SizeContext/SizeContext';
|
|
50
51
|
import {Spinner} from '../Spinner';
|
|
51
|
-
import {
|
|
52
|
+
import {
|
|
53
|
+
Calendar,
|
|
54
|
+
type ISODateString,
|
|
55
|
+
type CalendarHandle,
|
|
56
|
+
type DayOfWeek,
|
|
57
|
+
type DayOfWeekName,
|
|
58
|
+
} from '../Calendar';
|
|
52
59
|
import {useCalendarConstraints} from '../Calendar/hooks';
|
|
53
60
|
import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
|
|
54
61
|
import {usePopover} from '../Popover';
|
|
@@ -73,11 +80,6 @@ const styles = stylex.create({
|
|
|
73
80
|
backgroundColor: 'transparent',
|
|
74
81
|
cursor: 'pointer',
|
|
75
82
|
borderRadius: radiusVars['--radius-element'],
|
|
76
|
-
outline: {
|
|
77
|
-
default: 'none',
|
|
78
|
-
':focus-visible': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
79
|
-
},
|
|
80
|
-
outlineOffset: 1,
|
|
81
83
|
},
|
|
82
84
|
iconButtonDisabled: {
|
|
83
85
|
cursor: 'not-allowed',
|
|
@@ -152,10 +154,12 @@ export type {
|
|
|
152
154
|
InputStatus as DateInputStatus,
|
|
153
155
|
InputStatusType as DateInputStatusType,
|
|
154
156
|
} from '../Field';
|
|
155
|
-
import {mergeProps, mergeRefs} from '../utils';
|
|
157
|
+
import {mergeProps, mergeRefs, isFocusDetached} from '../utils';
|
|
156
158
|
import type {BaseProps} from '../BaseProps';
|
|
157
159
|
import type {SizeValue} from '../utils/types';
|
|
158
160
|
import {themeProps} from '../utils/themeProps';
|
|
161
|
+
import {focusOutlineStyles} from '../utils/focusOutline.stylex';
|
|
162
|
+
import {stableClassName} from '../naming';
|
|
159
163
|
import {useTranslator} from '../i18n';
|
|
160
164
|
|
|
161
165
|
export interface DateInputProps extends Omit<
|
|
@@ -311,6 +315,14 @@ export interface DateInputProps extends Omit<
|
|
|
311
315
|
*/
|
|
312
316
|
numberOfMonths?: 1 | 2;
|
|
313
317
|
|
|
318
|
+
/**
|
|
319
|
+
* First day of week in the calendar popover. Accepts a number
|
|
320
|
+
* (0 = Sunday … 6 = Saturday) or a three-letter day name ('sun'–'sat',
|
|
321
|
+
* case-insensitive).
|
|
322
|
+
* @default 0
|
|
323
|
+
*/
|
|
324
|
+
weekStartsOn?: DayOfWeek | DayOfWeekName;
|
|
325
|
+
|
|
314
326
|
/**
|
|
315
327
|
* How the committed date value is displayed in the text field. Accepts a
|
|
316
328
|
* named format reused from `Timestamp`'s `format` vocabulary (so the same
|
|
@@ -377,6 +389,7 @@ export function DateInput({
|
|
|
377
389
|
labelTooltip,
|
|
378
390
|
hasClear = false,
|
|
379
391
|
numberOfMonths = 1,
|
|
392
|
+
weekStartsOn,
|
|
380
393
|
format = 'date_long',
|
|
381
394
|
width,
|
|
382
395
|
xstyle,
|
|
@@ -489,7 +502,18 @@ export function DateInput({
|
|
|
489
502
|
const popover = usePopover({
|
|
490
503
|
dialogLabel: t('@astryx.dateInput.dialogLabel'),
|
|
491
504
|
closeButtonLabel: t('@astryx.dateInput.closeCalendar'),
|
|
492
|
-
|
|
505
|
+
// Return focus to the input when the calendar closes — but only when the
|
|
506
|
+
// dismiss left focus detached (Escape, or a click on non-focusable empty
|
|
507
|
+
// space), which the focus trap can't restore on its own. A native
|
|
508
|
+
// popover="auto" light-dismiss fires synchronously with the pointer event
|
|
509
|
+
// that moved focus, so if the user clicked another control — the clear
|
|
510
|
+
// button, another field, anywhere — focus has already landed there;
|
|
511
|
+
// reclaiming it would fight their click.
|
|
512
|
+
onHide: () => {
|
|
513
|
+
if (isFocusDetached()) {
|
|
514
|
+
inputRef.current?.focus();
|
|
515
|
+
}
|
|
516
|
+
},
|
|
493
517
|
});
|
|
494
518
|
|
|
495
519
|
// Handle toggling the popover from button click (focus calendar)
|
|
@@ -635,7 +659,11 @@ export function DateInput({
|
|
|
635
659
|
}}
|
|
636
660
|
{...rest}
|
|
637
661
|
{...mergeProps(
|
|
638
|
-
themeProps('date-input', {
|
|
662
|
+
themeProps('date-input', {
|
|
663
|
+
size,
|
|
664
|
+
status: status?.type ?? null,
|
|
665
|
+
disabled: isDisabled ? 'disabled' : null,
|
|
666
|
+
}),
|
|
639
667
|
stylex.props(
|
|
640
668
|
inputWrapperStyles.base,
|
|
641
669
|
sizeStyles[size],
|
|
@@ -662,6 +690,7 @@ export function DateInput({
|
|
|
662
690
|
: t('@astryx.dateInput.openCalendar')
|
|
663
691
|
}
|
|
664
692
|
{...stylex.props(
|
|
693
|
+
focusOutlineStyles.focusVisible,
|
|
665
694
|
styles.iconButton,
|
|
666
695
|
isEffectivelyDisabled && styles.iconButtonDisabled,
|
|
667
696
|
)}>
|
|
@@ -722,25 +751,14 @@ export function DateInput({
|
|
|
722
751
|
user would get no feedback that their entry was rejected (WCAG 3.3.1).
|
|
723
752
|
*/}
|
|
724
753
|
<VisuallyHidden as="div" role="alert" aria-live="assertive">
|
|
725
|
-
{!isInputValid ? '
|
|
754
|
+
{!isInputValid ? t('@astryx.dateInput.invalidDate') : ''}
|
|
726
755
|
</VisuallyHidden>
|
|
727
756
|
{hasClear && value !== undefined && !isEffectivelyDisabled && (
|
|
728
|
-
<
|
|
729
|
-
|
|
757
|
+
<InputClearButton
|
|
758
|
+
label={t('@astryx.dateInput.clear', {label})}
|
|
730
759
|
onClick={handleClear}
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
<Icon
|
|
734
|
-
icon="close"
|
|
735
|
-
size="sm"
|
|
736
|
-
color="secondary"
|
|
737
|
-
// Stable theme target on the clear glyph itself, so a theme can
|
|
738
|
-
// restyle just this icon (color, size, hover) via `defineTheme`.
|
|
739
|
-
// Same-element rules in @layer astryx-theme win over the icon's own
|
|
740
|
-
// base color/size, which a button-level target could not reach.
|
|
741
|
-
{...themeProps('date-input-clear-icon')}
|
|
742
|
-
/>
|
|
743
|
-
</button>
|
|
760
|
+
iconClassName={stableClassName('date-input-clear-icon')}
|
|
761
|
+
/>
|
|
744
762
|
)}
|
|
745
763
|
{isBusy && <Spinner size="sm" />}
|
|
746
764
|
{statusIcon}
|
|
@@ -754,6 +772,7 @@ export function DateInput({
|
|
|
754
772
|
max={max}
|
|
755
773
|
dateConstraints={dateConstraints}
|
|
756
774
|
numberOfMonths={numberOfMonths}
|
|
775
|
+
weekStartsOn={weekStartsOn}
|
|
757
776
|
/>,
|
|
758
777
|
{placement: 'below', alignment: 'start'},
|
|
759
778
|
)}
|
|
@@ -145,6 +145,13 @@ export const docs = {
|
|
|
145
145
|
description: 'Number of months in the calendar.',
|
|
146
146
|
default: '2',
|
|
147
147
|
},
|
|
148
|
+
{
|
|
149
|
+
name: 'weekStartsOn',
|
|
150
|
+
type: "0 | 1 | 2 | 3 | 4 | 5 | 6 | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'",
|
|
151
|
+
description:
|
|
152
|
+
'First day of week in the calendar. A number (0 = Sunday to 6 = Saturday) or a three-letter day name.',
|
|
153
|
+
default: '0',
|
|
154
|
+
},
|
|
148
155
|
{
|
|
149
156
|
name: 'width',
|
|
150
157
|
type: 'SizeValue',
|
|
@@ -159,9 +166,9 @@ export const docs = {
|
|
|
159
166
|
],
|
|
160
167
|
theming: {
|
|
161
168
|
targets: [
|
|
162
|
-
{className: 'astryx-date-range-input', visualProps: ['size', 'status']},
|
|
169
|
+
{className: 'astryx-date-range-input', visualProps: ['size', 'status'], states: ['disabled']},
|
|
163
170
|
{className: 'astryx-date-range-input-toggle-icon', states: ['state']},
|
|
164
|
-
{className: 'astryx-date-range-input-clear-icon'},
|
|
171
|
+
{className: 'astryx-date-range-input-clear-icon', deprecatedFor: 'input-clear-icon'},
|
|
165
172
|
],
|
|
166
173
|
},
|
|
167
174
|
usage: {
|
|
@@ -314,6 +321,7 @@ export const docsDense = {
|
|
|
314
321
|
statusVariant: 'How status message is placed: attached overlaps below input; detached floats below w/ spacing; tooltip hides the box and shows it on the status icon.',
|
|
315
322
|
labelTooltip: 'tooltip via info icon at label end',
|
|
316
323
|
numberOfMonths: 'months in calendar (default 2)',
|
|
324
|
+
weekStartsOn: 'first day of week in calendar (0=Sunday, or name e.g. "mon")',
|
|
317
325
|
changeAction:
|
|
318
326
|
'async action fired after onChange; drives optimistic UI updates via useTransition',
|
|
319
327
|
isLoading: 'loading state; disables interaction + shows a spinner',
|
|
@@ -511,6 +511,72 @@ describe('DateRangeInput statusVariant forwarding', () => {
|
|
|
511
511
|
'detached',
|
|
512
512
|
);
|
|
513
513
|
});
|
|
514
|
+
|
|
515
|
+
describe('weekStartsOn', () => {
|
|
516
|
+
// The calendar popover renders in the top layer; jsdom keeps the content in
|
|
517
|
+
// the DOM but role queries skip it, so read the columnheaders directly.
|
|
518
|
+
const openAndReadWeekdays = (container: HTMLElement): (string | null)[] => {
|
|
519
|
+
fireEvent.click(getButton('Open calendar'));
|
|
520
|
+
return Array.from(container.querySelectorAll('[role="columnheader"]'))
|
|
521
|
+
.slice(0, 7)
|
|
522
|
+
.map(h => h.textContent);
|
|
523
|
+
};
|
|
524
|
+
|
|
525
|
+
it('defaults to a Sunday-first week', () => {
|
|
526
|
+
const {container} = render(
|
|
527
|
+
<DateRangeInput label="Range" value={null} onChange={() => {}} />,
|
|
528
|
+
);
|
|
529
|
+
expect(openAndReadWeekdays(container)).toEqual([
|
|
530
|
+
'Su',
|
|
531
|
+
'Mo',
|
|
532
|
+
'Tu',
|
|
533
|
+
'We',
|
|
534
|
+
'Th',
|
|
535
|
+
'Fr',
|
|
536
|
+
'Sa',
|
|
537
|
+
]);
|
|
538
|
+
});
|
|
539
|
+
|
|
540
|
+
it('forwards a numeric weekStartsOn to the calendar', () => {
|
|
541
|
+
const {container} = render(
|
|
542
|
+
<DateRangeInput
|
|
543
|
+
label="Range"
|
|
544
|
+
value={null}
|
|
545
|
+
onChange={() => {}}
|
|
546
|
+
weekStartsOn={1}
|
|
547
|
+
/>,
|
|
548
|
+
);
|
|
549
|
+
expect(openAndReadWeekdays(container)).toEqual([
|
|
550
|
+
'Mo',
|
|
551
|
+
'Tu',
|
|
552
|
+
'We',
|
|
553
|
+
'Th',
|
|
554
|
+
'Fr',
|
|
555
|
+
'Sa',
|
|
556
|
+
'Su',
|
|
557
|
+
]);
|
|
558
|
+
});
|
|
559
|
+
|
|
560
|
+
it('accepts a three-letter day name', () => {
|
|
561
|
+
const {container} = render(
|
|
562
|
+
<DateRangeInput
|
|
563
|
+
label="Range"
|
|
564
|
+
value={null}
|
|
565
|
+
onChange={() => {}}
|
|
566
|
+
weekStartsOn="mon"
|
|
567
|
+
/>,
|
|
568
|
+
);
|
|
569
|
+
expect(openAndReadWeekdays(container)).toEqual([
|
|
570
|
+
'Mo',
|
|
571
|
+
'Tu',
|
|
572
|
+
'We',
|
|
573
|
+
'Th',
|
|
574
|
+
'Fr',
|
|
575
|
+
'Sa',
|
|
576
|
+
'Su',
|
|
577
|
+
]);
|
|
578
|
+
});
|
|
579
|
+
});
|
|
514
580
|
});
|
|
515
581
|
|
|
516
582
|
describe('DateRangeInput icon theme targets', () => {
|
|
@@ -526,7 +592,7 @@ describe('DateRangeInput icon theme targets', () => {
|
|
|
526
592
|
return icon as HTMLElement;
|
|
527
593
|
};
|
|
528
594
|
|
|
529
|
-
it('renders astryx-
|
|
595
|
+
it('renders astryx-input-clear-icon (plus the legacy alias) on the clear glyph', () => {
|
|
530
596
|
render(
|
|
531
597
|
<DateRangeInput
|
|
532
598
|
label="Range"
|
|
@@ -535,10 +601,13 @@ describe('DateRangeInput icon theme targets', () => {
|
|
|
535
601
|
hasClear
|
|
536
602
|
/>,
|
|
537
603
|
);
|
|
538
|
-
// The
|
|
539
|
-
// theme can restyle just this glyph (color, size, hover) via
|
|
540
|
-
// a button-level target could not reach the icon's own
|
|
604
|
+
// The canonical target lands on the icon element itself (not the button),
|
|
605
|
+
// so a theme can restyle just this glyph (color, size, hover) via
|
|
606
|
+
// defineTheme — a button-level target could not reach the icon's own
|
|
607
|
+
// color/size. The original per-component name rides along for a
|
|
608
|
+
// deprecation window.
|
|
541
609
|
const icon = iconIn(getButton('Clear Range'));
|
|
610
|
+
expect(icon).toHaveClass('astryx-input-clear-icon');
|
|
542
611
|
expect(icon).toHaveClass('astryx-date-range-input-clear-icon');
|
|
543
612
|
expect(icon).toHaveClass('astryx-icon');
|
|
544
613
|
});
|
|
@@ -552,11 +621,12 @@ describe('DateRangeInput icon theme targets', () => {
|
|
|
552
621
|
expect(icon).toHaveAttribute('data-state', 'collapsed');
|
|
553
622
|
});
|
|
554
623
|
|
|
555
|
-
it('
|
|
556
|
-
//
|
|
557
|
-
//
|
|
558
|
-
//
|
|
559
|
-
//
|
|
624
|
+
it('routes the clear glyph through the shared clear button (default look unchanged)', () => {
|
|
625
|
+
// Default-look guard for the clear affordance. It now composes the shared
|
|
626
|
+
// InputClearButton (a ghost Button with a secondary/sm glyph), so aside
|
|
627
|
+
// from its target classes the glyph matches a standalone `secondary`/`sm`
|
|
628
|
+
// close icon — the default clear look is defined once, in InputClearButton.
|
|
629
|
+
// (The calendar-toggle glyph is covered separately.)
|
|
560
630
|
render(
|
|
561
631
|
<DateRangeInput
|
|
562
632
|
label="Range"
|
|
@@ -567,22 +637,24 @@ describe('DateRangeInput icon theme targets', () => {
|
|
|
567
637
|
);
|
|
568
638
|
const clearIcon = iconIn(getButton('Clear Range'));
|
|
569
639
|
|
|
570
|
-
const {container:
|
|
640
|
+
const {container: clearRefContainer} = render(
|
|
571
641
|
<Icon icon="close" size="sm" color="secondary" />,
|
|
572
642
|
);
|
|
573
|
-
const
|
|
643
|
+
const clearRefIcon = clearRefContainer.querySelector(
|
|
644
|
+
'.astryx-icon',
|
|
645
|
+
) as HTMLElement;
|
|
574
646
|
|
|
575
647
|
const styleClasses = (el: HTMLElement) =>
|
|
576
648
|
el.className
|
|
577
649
|
.split(' ')
|
|
578
650
|
.filter(
|
|
579
651
|
c =>
|
|
580
|
-
c !== 'astryx-
|
|
581
|
-
c !== 'astryx-date-range-input-
|
|
652
|
+
c !== 'astryx-input-clear-icon' &&
|
|
653
|
+
c !== 'astryx-date-range-input-clear-icon',
|
|
582
654
|
)
|
|
583
655
|
.sort();
|
|
584
656
|
|
|
585
|
-
expect(styleClasses(clearIcon)).toEqual(styleClasses(
|
|
657
|
+
expect(styleClasses(clearIcon)).toEqual(styleClasses(clearRefIcon));
|
|
586
658
|
});
|
|
587
659
|
|
|
588
660
|
it('exposes the icon targets so a theme reaches icon color, size, and hover', () => {
|
|
@@ -616,3 +688,27 @@ describe('DateRangeInput icon theme targets', () => {
|
|
|
616
688
|
expect(css).toContain('14px');
|
|
617
689
|
});
|
|
618
690
|
});
|
|
691
|
+
|
|
692
|
+
describe('DateRangeInput disabled theme state', () => {
|
|
693
|
+
it('reflects disabled on the root target so themes can gate paint on it', () => {
|
|
694
|
+
const {container} = render(
|
|
695
|
+
<DateRangeInput
|
|
696
|
+
label="Range"
|
|
697
|
+
value={null}
|
|
698
|
+
onChange={() => {}}
|
|
699
|
+
isDisabled
|
|
700
|
+
/>,
|
|
701
|
+
);
|
|
702
|
+
const root = container.querySelector('.astryx-date-range-input');
|
|
703
|
+
expect(root).toHaveAttribute('data-disabled', 'disabled');
|
|
704
|
+
expect(root).toHaveClass('disabled');
|
|
705
|
+
});
|
|
706
|
+
|
|
707
|
+
it('omits data-disabled when enabled, like status does', () => {
|
|
708
|
+
const {container} = render(
|
|
709
|
+
<DateRangeInput label="Range" value={null} onChange={() => {}} />,
|
|
710
|
+
);
|
|
711
|
+
const root = container.querySelector('.astryx-date-range-input');
|
|
712
|
+
expect(root).not.toHaveAttribute('data-disabled');
|
|
713
|
+
});
|
|
714
|
+
});
|
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
} from '../theme/tokens.stylex';
|
|
37
37
|
import {
|
|
38
38
|
Field,
|
|
39
|
+
InputClearButton,
|
|
39
40
|
type InputStatus,
|
|
40
41
|
inputWrapperStyles,
|
|
41
42
|
inputStatusBorderStyles,
|
|
@@ -45,7 +46,13 @@ import {
|
|
|
45
46
|
} from '../Field';
|
|
46
47
|
import {Icon} from '../Icon';
|
|
47
48
|
import {Spinner} from '../Spinner';
|
|
48
|
-
import {
|
|
49
|
+
import {
|
|
50
|
+
Calendar,
|
|
51
|
+
type ISODateString,
|
|
52
|
+
type DateRange,
|
|
53
|
+
type DayOfWeek,
|
|
54
|
+
type DayOfWeekName,
|
|
55
|
+
} from '../Calendar';
|
|
49
56
|
import {usePopover} from '../Popover';
|
|
50
57
|
import {useTooltip} from '../Tooltip';
|
|
51
58
|
import {mergeProps} from '../utils';
|
|
@@ -54,6 +61,8 @@ import type {SizeValue} from '../utils/types';
|
|
|
54
61
|
import {useSize} from '../SizeContext/SizeContext';
|
|
55
62
|
import {useInputStatusIcon} from '../hooks/useInputStatusIcon';
|
|
56
63
|
import {themeProps} from '../utils/themeProps';
|
|
64
|
+
import {focusOutlineStyles} from '../utils/focusOutline.stylex';
|
|
65
|
+
import {stableClassName} from '../naming';
|
|
57
66
|
import {useTranslator} from '../i18n';
|
|
58
67
|
|
|
59
68
|
export type {DateRange} from '../Calendar';
|
|
@@ -110,11 +119,6 @@ const styles = stylex.create({
|
|
|
110
119
|
backgroundColor: 'transparent',
|
|
111
120
|
cursor: 'pointer',
|
|
112
121
|
borderRadius: radiusVars['--radius-element'],
|
|
113
|
-
outline: {
|
|
114
|
-
default: 'none',
|
|
115
|
-
':focus-visible': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
116
|
-
},
|
|
117
|
-
outlineOffset: 1,
|
|
118
122
|
},
|
|
119
123
|
iconButtonDisabled: {
|
|
120
124
|
cursor: 'not-allowed',
|
|
@@ -152,10 +156,6 @@ const styles = stylex.create({
|
|
|
152
156
|
color: colorVars['--color-text-primary'],
|
|
153
157
|
cursor: 'pointer',
|
|
154
158
|
textAlign: 'start',
|
|
155
|
-
outline: {
|
|
156
|
-
default: 'none',
|
|
157
|
-
':focus-visible': `${borderVars['--border-width']} solid ${colorVars['--color-accent']}`,
|
|
158
|
-
},
|
|
159
159
|
},
|
|
160
160
|
presetButtonActive: {
|
|
161
161
|
backgroundColor: colorVars['--color-accent-muted'],
|
|
@@ -355,6 +355,14 @@ export interface DateRangeInputProps extends Omit<
|
|
|
355
355
|
* @default 2
|
|
356
356
|
*/
|
|
357
357
|
numberOfMonths?: 1 | 2;
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* First day of week in the calendar. Accepts a number
|
|
361
|
+
* (0 = Sunday … 6 = Saturday) or a three-letter day name ('sun'–'sat',
|
|
362
|
+
* case-insensitive).
|
|
363
|
+
* @default 0
|
|
364
|
+
*/
|
|
365
|
+
weekStartsOn?: DayOfWeek | DayOfWeekName;
|
|
358
366
|
}
|
|
359
367
|
|
|
360
368
|
/**
|
|
@@ -396,6 +404,7 @@ export function DateRangeInput({
|
|
|
396
404
|
statusVariant = 'attached',
|
|
397
405
|
labelTooltip,
|
|
398
406
|
numberOfMonths = 2,
|
|
407
|
+
weekStartsOn,
|
|
399
408
|
width,
|
|
400
409
|
xstyle,
|
|
401
410
|
className,
|
|
@@ -548,6 +557,7 @@ export function DateRangeInput({
|
|
|
548
557
|
themeProps('date-range-input', {
|
|
549
558
|
size,
|
|
550
559
|
status: status?.type ?? null,
|
|
560
|
+
disabled: isDisabled ? 'disabled' : null,
|
|
551
561
|
}),
|
|
552
562
|
stylex.props(
|
|
553
563
|
inputWrapperStyles.base,
|
|
@@ -574,6 +584,7 @@ export function DateRangeInput({
|
|
|
574
584
|
}
|
|
575
585
|
tabIndex={-1}
|
|
576
586
|
{...stylex.props(
|
|
587
|
+
focusOutlineStyles.focusVisible,
|
|
577
588
|
styles.iconButton,
|
|
578
589
|
isEffectivelyDisabled && styles.iconButtonDisabled,
|
|
579
590
|
)}>
|
|
@@ -612,18 +623,11 @@ export function DateRangeInput({
|
|
|
612
623
|
{displayValue || placeholder}
|
|
613
624
|
</button>
|
|
614
625
|
{hasClear && value !== null && !isEffectivelyDisabled && (
|
|
615
|
-
<
|
|
616
|
-
|
|
626
|
+
<InputClearButton
|
|
627
|
+
label={t('@astryx.dateInput.clear', {label})}
|
|
617
628
|
onClick={handleClear}
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
<Icon
|
|
621
|
-
icon="close"
|
|
622
|
-
size="sm"
|
|
623
|
-
color="secondary"
|
|
624
|
-
{...themeProps('date-range-input-clear-icon')}
|
|
625
|
-
/>
|
|
626
|
-
</button>
|
|
629
|
+
iconClassName={stableClassName('date-range-input-clear-icon')}
|
|
630
|
+
/>
|
|
627
631
|
)}
|
|
628
632
|
{isBusy && <Spinner size="sm" />}
|
|
629
633
|
{statusIcon}
|
|
@@ -650,6 +654,7 @@ export function DateRangeInput({
|
|
|
650
654
|
aria-current={isActive ? 'true' : undefined}
|
|
651
655
|
onClick={() => handlePresetClick(preset)}
|
|
652
656
|
{...stylex.props(
|
|
657
|
+
focusOutlineStyles.focusVisible,
|
|
653
658
|
styles.presetButton,
|
|
654
659
|
isActive && styles.presetButtonActive,
|
|
655
660
|
)}>
|
|
@@ -667,6 +672,7 @@ export function DateRangeInput({
|
|
|
667
672
|
max={max}
|
|
668
673
|
dateConstraints={dateConstraints}
|
|
669
674
|
numberOfMonths={numberOfMonths}
|
|
675
|
+
weekStartsOn={weekStartsOn}
|
|
670
676
|
/>
|
|
671
677
|
</div>,
|
|
672
678
|
{placement: 'below', alignment: 'start'},
|
|
@@ -173,6 +173,13 @@ export const docs = {
|
|
|
173
173
|
description: 'Number of months displayed simultaneously in the calendar.',
|
|
174
174
|
default: '1',
|
|
175
175
|
},
|
|
176
|
+
{
|
|
177
|
+
name: 'weekStartsOn',
|
|
178
|
+
type: "0 | 1 | 2 | 3 | 4 | 5 | 6 | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'",
|
|
179
|
+
description:
|
|
180
|
+
'First day of week in the calendar. A number (0 = Sunday to 6 = Saturday) or a three-letter day name.',
|
|
181
|
+
default: '0',
|
|
182
|
+
},
|
|
176
183
|
{
|
|
177
184
|
name: 'width',
|
|
178
185
|
type: 'SizeValue',
|
|
@@ -188,7 +195,7 @@ export const docs = {
|
|
|
188
195
|
],
|
|
189
196
|
theming: {
|
|
190
197
|
targets: [
|
|
191
|
-
{className: 'astryx-date-time-input', visualProps: ['size', 'status']},
|
|
198
|
+
{className: 'astryx-date-time-input', visualProps: ['size', 'status'], states: ['disabled']},
|
|
192
199
|
{
|
|
193
200
|
className: 'astryx-date-time-input-date-segment',
|
|
194
201
|
visualProps: ['size', 'status'],
|
|
@@ -477,6 +484,12 @@ export const docsZh = {
|
|
|
477
484
|
description: '日历中同时显示的月份数量。',
|
|
478
485
|
default: '1',
|
|
479
486
|
},
|
|
487
|
+
{
|
|
488
|
+
name: 'weekStartsOn',
|
|
489
|
+
type: "0 | 1 | 2 | 3 | 4 | 5 | 6 | 'sun' | 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat'",
|
|
490
|
+
description: '日历中每周的起始日。可为数字(0=周日……6=周六)或三字母星期缩写。',
|
|
491
|
+
default: '0',
|
|
492
|
+
},
|
|
480
493
|
{
|
|
481
494
|
name: 'xstyle',
|
|
482
495
|
type: 'StyleXStyles',
|
|
@@ -486,7 +499,7 @@ export const docsZh = {
|
|
|
486
499
|
],
|
|
487
500
|
theming: {
|
|
488
501
|
targets: [
|
|
489
|
-
{className: 'astryx-date-time-input', visualProps: ['size', 'status']},
|
|
502
|
+
{className: 'astryx-date-time-input', visualProps: ['size', 'status'], states: ['disabled']},
|
|
490
503
|
{
|
|
491
504
|
className: 'astryx-date-time-input-date-segment',
|
|
492
505
|
visualProps: ['size', 'status'],
|
|
@@ -577,6 +590,7 @@ export const docsDense = {
|
|
|
577
590
|
status: 'error/warning/success status w/ message',
|
|
578
591
|
labelTooltip: 'tooltip text via info icon at label end',
|
|
579
592
|
numberOfMonths: 'months shown simultaneously in calendar',
|
|
593
|
+
weekStartsOn: 'first day of week in calendar (0=Sunday, or name e.g. "mon")',
|
|
580
594
|
xstyle: 'StyleX styles for layout; must be stylex.create() value',
|
|
581
595
|
},
|
|
582
596
|
};
|