@astryxdesign/core 0.3.0 → 0.4.0
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 +11 -15
- 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 +35 -33
- 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 +24 -23
- package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +11 -16
- package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +22 -17
- 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 +167 -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 +56 -53
- 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.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +78 -75
- 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/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 +96 -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 +2 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +164 -94
- 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/Stack/stack.stylex.d.ts +3 -3
- package/dist/Switch/Switch.js +11 -10
- 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 +7 -15
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
- package/dist/Timestamp/TimestampHoverCard.js +16 -34
- 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 +74 -85
- 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/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 +16 -0
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +8 -0
- 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 +1 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.d.ts +107 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
- package/dist/utils/focusOutline.stylex.js +130 -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 +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- 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 +12 -0
- package/locales/pseudo.json +9 -0
- package/package.json +7 -2
- 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.tsx +21 -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 +115 -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 +64 -0
- package/src/ComplexSelector/ComplexSelector.tsx +46 -29
- 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 +93 -11
- package/src/DateInput/DateInput.tsx +41 -19
- package/src/DateRangeInput/DateRangeInput.doc.mjs +10 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +110 -14
- package/src/DateRangeInput/DateRangeInput.tsx +24 -12
- package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
- package/src/DateTimeInput/DateTimeInput.test.tsx +75 -0
- package/src/DateTimeInput/DateTimeInput.tsx +35 -8
- 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 +45 -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 +186 -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 +43 -38
- 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 +9 -1
- package/src/MultiSelector/MultiSelector.test.tsx +255 -16
- package/src/MultiSelector/MultiSelector.tsx +103 -99
- 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.tsx +6 -7
- 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 +124 -22
- 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 +7 -4
- package/src/Selector/Selector.test.tsx +935 -25
- package/src/Selector/Selector.tsx +189 -106
- 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/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 +8 -8
- 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 +30 -3
- package/src/TimeInput/TimeInput.tsx +9 -26
- package/src/Timestamp/Timestamp.doc.mjs +4 -3
- package/src/Timestamp/TimestampHoverCard.tsx +13 -35
- 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 +206 -7
- 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/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 +24 -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 +61 -20
- package/src/theme/generateThemeRules.ts +11 -0
- package/src/theme/index.ts +13 -0
- package/src/utils/focusOutline.stylex.ts +163 -0
- package/src/utils/focusReturn.test.ts +42 -0
- package/src/utils/focusReturn.ts +31 -0
- package/src/utils/index.ts +1 -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
package/src/Stack/Stack.doc.mjs
CHANGED
|
@@ -15,6 +15,116 @@ export const docs = {
|
|
|
15
15
|
],
|
|
16
16
|
},
|
|
17
17
|
components: [
|
|
18
|
+
{
|
|
19
|
+
name: 'Stack',
|
|
20
|
+
displayName: 'Stack',
|
|
21
|
+
description:
|
|
22
|
+
'Unified stack layout component with a direction prop. Use direction="horizontal" for left-to-right flow or direction="vertical" (default) for top-to-bottom. For convenience, HStack and VStack are pre-configured wrappers.',
|
|
23
|
+
props: [
|
|
24
|
+
{
|
|
25
|
+
name: 'direction',
|
|
26
|
+
type: "'horizontal' | 'vertical'",
|
|
27
|
+
description:
|
|
28
|
+
"Direction of the stack layout. 'horizontal' flows items left-to-right (like HStack), 'vertical' flows top-to-bottom (like VStack). Note: the value is 'horizontal', NOT 'row'.",
|
|
29
|
+
default: "'vertical'",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'gap',
|
|
33
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
34
|
+
description:
|
|
35
|
+
'Spacing step (number literal): 0, 0.5, 1, 1.5, 2, 3, 4, 5, 6, 8, 10. Pass as a JSX number expression e.g. gap={4}, NOT a string like gap="4".',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'padding',
|
|
39
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
40
|
+
description:
|
|
41
|
+
'Inner padding on all sides, using the spacing scale. Pass as a JSX number expression e.g. padding={3}.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'paddingInline',
|
|
45
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
46
|
+
description:
|
|
47
|
+
'Inline (horizontal) padding. Overrides padding on the inline axis when both are set.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'paddingBlock',
|
|
51
|
+
type: '0 | 0.5 | 1 | 1.5 | 2 | 3 | 4 | 5 | 6 | 8 | 10',
|
|
52
|
+
description:
|
|
53
|
+
'Block (vertical) padding. Overrides padding on the block axis when both are set.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'isScrollable',
|
|
57
|
+
type: 'boolean',
|
|
58
|
+
description:
|
|
59
|
+
'Enables scrollable overflow (overflow: auto).',
|
|
60
|
+
default: 'false',
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: 'width',
|
|
64
|
+
type: 'SizeValue',
|
|
65
|
+
description: "Width of the stack container. Numbers are treated as pixels, strings are used as-is (e.g., '100%').",
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'height',
|
|
69
|
+
type: 'SizeValue',
|
|
70
|
+
description: "Height of the stack container. Numbers are treated as pixels, strings are used as-is (e.g., '100%').",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'maxWidth',
|
|
74
|
+
type: 'SizeValue',
|
|
75
|
+
description: "Maximum width of the stack container.",
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: 'minHeight',
|
|
79
|
+
type: 'SizeValue',
|
|
80
|
+
description: "Minimum height of the stack container.",
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: 'hAlign',
|
|
84
|
+
type: "'start' | 'center' | 'end' | 'between' | 'around' | 'evenly' | 'stretch'",
|
|
85
|
+
description: "Horizontal alignment. When direction='horizontal': main-axis (justify-content). When direction='vertical': cross-axis (align-items).",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
name: 'vAlign',
|
|
89
|
+
type: "'start' | 'center' | 'end' | 'between' | 'around' | 'evenly' | 'stretch'",
|
|
90
|
+
description: "Vertical alignment. When direction='horizontal': cross-axis (align-items). When direction='vertical': main-axis (justify-content).",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'justify',
|
|
94
|
+
type: "'start' | 'center' | 'end' | 'between' | 'around' | 'evenly'",
|
|
95
|
+
description: "Main-axis alignment alias. Resolves to hAlign (horizontal) or vAlign (vertical). Note: use 'between', NOT 'space-between'.",
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'align',
|
|
99
|
+
type: "'start' | 'center' | 'end' | 'stretch'",
|
|
100
|
+
description: 'Cross-axis alignment alias. Mirrors CSS align-items.',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'wrap',
|
|
104
|
+
type: "'nowrap' | 'wrap' | 'wrap-reverse'",
|
|
105
|
+
description: 'Flex wrap behavior.',
|
|
106
|
+
default: "'nowrap'",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'as',
|
|
110
|
+
type: 'ElementType',
|
|
111
|
+
description: 'HTML element to render as the stack container.',
|
|
112
|
+
default: "'div'",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
name: 'children',
|
|
116
|
+
type: 'ReactNode',
|
|
117
|
+
description: 'Stack content.',
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'xstyle',
|
|
121
|
+
type: 'StyleXStyles',
|
|
122
|
+
description:
|
|
123
|
+
'StyleX styles for layout customization (margins, positioning, sizing). Must be a stylex.create() value, not an inline style object like style={{}}.',
|
|
124
|
+
},
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
|
|
18
128
|
{
|
|
19
129
|
name: 'HStack',
|
|
20
130
|
isHiddenFromOverview: true,
|
|
@@ -49,10 +49,13 @@ export const docs = {
|
|
|
49
49
|
description:
|
|
50
50
|
'A small colored dot that communicates status like online/offline presence or severity levels. Supports five semantic variants and an optional pulse animation. Always pair with a visible text label, as color alone should not carry meaning.',
|
|
51
51
|
bestPractices: [
|
|
52
|
+
{ guidance: true, description: 'Use StatusDot as a binary present/absent signal; avoid encoding many distinct states in a single dot, since color and size alone cannot reliably distinguish them.' },
|
|
52
53
|
{ guidance: true, description: 'Always pair with a visible text label so status is not conveyed by color alone.' },
|
|
53
54
|
{ guidance: true, description: 'Provide a descriptive `label` prop for screen reader accessibility.' },
|
|
55
|
+
{ guidance: true, description: 'Pair the dot with an icon that carries the status as a distinct shape when it must stand on its own without adjacent text, so meaning survives without color.' },
|
|
56
|
+
{ guidance: true, description: 'If you can\'t add a label or an icon, make sure the status is conveyed elsewhere accessibly (e.g. adjacent text, a table column, or a live region).' },
|
|
57
|
+
{ guidance: false, description: 'Rely on color alone to communicate status; StatusDot is not fully accessible in isolation, so the builder must make the status distinguishable in context via a label, an icon, or an accessible alternative.' },
|
|
54
58
|
{ guidance: false, description: 'Use the pulse animation for purely decorative purposes; reserve it for states that require immediate attention.' },
|
|
55
|
-
{ guidance: false, description: 'Rely on color alone to communicate status; always include text.' },
|
|
56
59
|
],
|
|
57
60
|
},
|
|
58
61
|
};
|
|
@@ -97,10 +100,13 @@ export const docsZh = {
|
|
|
97
100
|
description:
|
|
98
101
|
'A small colored dot that communicates status like online/offline presence or severity levels. Supports five semantic variants and an optional pulse animation. Always pair with a visible text label, as color alone should not carry meaning.',
|
|
99
102
|
bestPractices: [
|
|
103
|
+
{ guidance: true, description: 'Use StatusDot as a binary present/absent signal; avoid encoding many distinct states in a single dot, since color and size alone cannot reliably distinguish them.' },
|
|
100
104
|
{ guidance: true, description: 'Always pair with a visible text label so status is not conveyed by color alone.' },
|
|
101
105
|
{ guidance: true, description: 'Provide a descriptive `label` prop for screen reader accessibility.' },
|
|
106
|
+
{ guidance: true, description: 'Pair the dot with an icon that carries the status as a distinct shape when it must stand on its own without adjacent text, so meaning survives without color.' },
|
|
107
|
+
{ guidance: true, description: 'If you can\'t add a label or an icon, make sure the status is conveyed elsewhere accessibly (e.g. adjacent text, a table column, or a live region).' },
|
|
108
|
+
{ guidance: false, description: 'Rely on color alone to communicate status; StatusDot is not fully accessible in isolation, so the builder must make the status distinguishable in context via a label, an icon, or an accessible alternative.' },
|
|
102
109
|
{ guidance: false, description: 'Use the pulse animation for purely decorative purposes; reserve it for states that require immediate attention.' },
|
|
103
|
-
{ guidance: false, description: 'Rely on color alone to communicate status; always include text.' },
|
|
104
110
|
],
|
|
105
111
|
},
|
|
106
112
|
};
|
|
@@ -112,10 +118,13 @@ export const docsDense = {
|
|
|
112
118
|
description:
|
|
113
119
|
'A small colored dot that communicates status like online/offline presence or severity levels. Supports five semantic variants and an optional pulse animation. Always pair with a visible text label, as color alone should not carry meaning.',
|
|
114
120
|
bestPractices: [
|
|
121
|
+
{ guidance: true, description: 'Use StatusDot as a binary present/absent signal; avoid encoding many distinct states in a single dot, since color and size alone cannot reliably distinguish them.' },
|
|
115
122
|
{ guidance: true, description: 'Always pair with a visible text label so status is not conveyed by color alone.' },
|
|
116
123
|
{ guidance: true, description: 'Provide a descriptive `label` prop for screen reader accessibility.' },
|
|
124
|
+
{ guidance: true, description: 'Pair the dot with an icon that carries the status as a distinct shape when it must stand on its own without adjacent text, so meaning survives without color.' },
|
|
125
|
+
{ guidance: true, description: 'If you can\'t add a label or an icon, make sure the status is conveyed elsewhere accessibly (e.g. adjacent text, a table column, or a live region).' },
|
|
126
|
+
{ guidance: false, description: 'Rely on color alone to communicate status; StatusDot is not fully accessible in isolation, so the builder must make the status distinguishable in context via a label, an icon, or an accessible alternative.' },
|
|
117
127
|
{ guidance: false, description: 'Use the pulse animation for purely decorative purposes; reserve it for states that require immediate attention.' },
|
|
118
|
-
{ guidance: false, description: 'Rely on color alone to communicate status; always include text.' },
|
|
119
128
|
],
|
|
120
129
|
},
|
|
121
130
|
propDescriptions: {
|
|
@@ -636,6 +636,38 @@ describe('Switch', () => {
|
|
|
636
636
|
expect(data.get('notify')).toBe('on');
|
|
637
637
|
});
|
|
638
638
|
|
|
639
|
+
it('does not block form submission when required and disabled with a disabledMessage', () => {
|
|
640
|
+
const {container} = render(
|
|
641
|
+
<form>
|
|
642
|
+
<Switch
|
|
643
|
+
label="Notify"
|
|
644
|
+
htmlName="notify"
|
|
645
|
+
value={false}
|
|
646
|
+
onChange={() => {}}
|
|
647
|
+
isRequired
|
|
648
|
+
isDisabled
|
|
649
|
+
disabledMessage="Notifications are turned off org-wide"
|
|
650
|
+
/>
|
|
651
|
+
</form>,
|
|
652
|
+
);
|
|
653
|
+
expect(container.querySelector('form')!.checkValidity()).toBe(true);
|
|
654
|
+
});
|
|
655
|
+
|
|
656
|
+
it('still blocks submission when required and off but enabled', () => {
|
|
657
|
+
const {container} = render(
|
|
658
|
+
<form>
|
|
659
|
+
<Switch
|
|
660
|
+
label="Notify"
|
|
661
|
+
htmlName="notify"
|
|
662
|
+
value={false}
|
|
663
|
+
onChange={() => {}}
|
|
664
|
+
isRequired
|
|
665
|
+
/>
|
|
666
|
+
</form>,
|
|
667
|
+
);
|
|
668
|
+
expect(container.querySelector('form')!.checkValidity()).toBe(false);
|
|
669
|
+
});
|
|
670
|
+
|
|
639
671
|
it('is excluded from form data when disabled, even with a disabledMessage', () => {
|
|
640
672
|
const {container} = render(
|
|
641
673
|
<form>
|
package/src/Switch/Switch.tsx
CHANGED
|
@@ -523,6 +523,7 @@ export function Switch({
|
|
|
523
523
|
// isDisabled guard in onChange below.
|
|
524
524
|
disabled={isDisabled && !showsDisabledMessage}
|
|
525
525
|
aria-disabled={showsDisabledMessage ? 'true' : undefined}
|
|
526
|
+
form={showsDisabledMessage ? '' : undefined}
|
|
526
527
|
required={isRequired}
|
|
527
528
|
onChange={e => {
|
|
528
529
|
if (isDisabled || isBusy) {
|
|
@@ -643,14 +644,13 @@ export function Switch({
|
|
|
643
644
|
)}
|
|
644
645
|
</div>
|
|
645
646
|
{status?.message && (
|
|
646
|
-
<
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
</div>
|
|
647
|
+
<FieldStatus
|
|
648
|
+
type={status.type}
|
|
649
|
+
message={status.message}
|
|
650
|
+
id={statusMessageID}
|
|
651
|
+
variant="detached"
|
|
652
|
+
xstyle={styles.statusGap}
|
|
653
|
+
/>
|
|
654
654
|
)}
|
|
655
655
|
{showsDisabledMessage &&
|
|
656
656
|
disabledMessageTooltip.renderTooltip(disabledMessage)}
|
package/src/TabList/Tab.tsx
CHANGED
|
@@ -37,6 +37,7 @@ import type {LinkComponentType} from '../Link/types';
|
|
|
37
37
|
import {mergeProps} from '../utils';
|
|
38
38
|
import {EDGE_COMP_ATTR} from '../Layout/edgeCompensation.stylex';
|
|
39
39
|
import {themeProps} from '../utils/themeProps';
|
|
40
|
+
import {focusOutlineProps} from '../utils/focusOutline.stylex';
|
|
40
41
|
|
|
41
42
|
export interface TabProps extends BaseProps<HTMLButtonElement> {
|
|
42
43
|
/**
|
|
@@ -106,14 +107,6 @@ const styles = stylex.create({
|
|
|
106
107
|
transitionProperty: 'color',
|
|
107
108
|
transitionDuration: durationVars['--duration-fast'],
|
|
108
109
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
109
|
-
outline: {
|
|
110
|
-
default: null,
|
|
111
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
112
|
-
},
|
|
113
|
-
outlineOffset: {
|
|
114
|
-
default: '0',
|
|
115
|
-
':focus-visible': '2px',
|
|
116
|
-
},
|
|
117
110
|
},
|
|
118
111
|
hoverBg: {
|
|
119
112
|
position: 'absolute',
|
|
@@ -274,7 +267,7 @@ export function Tab({
|
|
|
274
267
|
themeProps('tab', {
|
|
275
268
|
selected: isSelected ? 'selected' : null,
|
|
276
269
|
}),
|
|
277
|
-
|
|
270
|
+
focusOutlineProps.focusVisible(
|
|
278
271
|
styles.base,
|
|
279
272
|
sizeStyles[size],
|
|
280
273
|
isSelected && styles.selected,
|
package/src/TabList/TabMenu.tsx
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
fontWeightVars,
|
|
31
31
|
typeScaleVars,
|
|
32
32
|
} from '../theme/tokens.stylex';
|
|
33
|
+
import {focusOutlineProps} from '../utils/focusOutline.stylex';
|
|
33
34
|
import {usePopover} from '../Popover/usePopover';
|
|
34
35
|
import {MENU_ITEM_SELECTOR} from '../DropdownMenu/menuItemRoles';
|
|
35
36
|
import {useListFocus} from '../hooks/useListFocus';
|
|
@@ -91,14 +92,6 @@ const styles = stylex.create({
|
|
|
91
92
|
transitionProperty: 'color',
|
|
92
93
|
transitionDuration: durationVars['--duration-fast'],
|
|
93
94
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
94
|
-
outline: {
|
|
95
|
-
default: null,
|
|
96
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
97
|
-
},
|
|
98
|
-
outlineOffset: {
|
|
99
|
-
default: '0',
|
|
100
|
-
':focus-visible': '2px',
|
|
101
|
-
},
|
|
102
95
|
},
|
|
103
96
|
triggerSelected: {
|
|
104
97
|
color: colorVars['--color-text-primary'],
|
|
@@ -161,6 +154,10 @@ const styles = stylex.create({
|
|
|
161
154
|
width: spacingVars['--spacing-4'],
|
|
162
155
|
height: spacingVars['--spacing-4'],
|
|
163
156
|
flexShrink: 0,
|
|
157
|
+
},
|
|
158
|
+
// Applied to the chevron <Icon> (via `xstyle`) rather than its wrapper, so the
|
|
159
|
+
// element that rotates is the element a theme targets.
|
|
160
|
+
chevronIcon: {
|
|
164
161
|
transitionProperty: 'transform',
|
|
165
162
|
transitionDuration: durationVars['--duration-fast'],
|
|
166
163
|
transitionTimingFunction: easeVars['--ease-standard'],
|
|
@@ -198,10 +195,6 @@ const styles = stylex.create({
|
|
|
198
195
|
'@media (hover: hover)': colorVars['--color-overlay-hover'],
|
|
199
196
|
},
|
|
200
197
|
},
|
|
201
|
-
outline: {
|
|
202
|
-
default: null,
|
|
203
|
-
':focus-visible': `2px solid ${colorVars['--color-accent']}`,
|
|
204
|
-
},
|
|
205
198
|
},
|
|
206
199
|
menuItemSelected: {
|
|
207
200
|
fontWeight: fontWeightVars['--font-weight-medium'],
|
|
@@ -356,7 +349,7 @@ export function TabMenu({
|
|
|
356
349
|
onClick={handleToggle}
|
|
357
350
|
{...mergeProps(
|
|
358
351
|
themeProps('tab-menu'),
|
|
359
|
-
|
|
352
|
+
focusOutlineProps.focusVisible(
|
|
360
353
|
styles.trigger,
|
|
361
354
|
sizeStyles[size],
|
|
362
355
|
hasSelectedOption && styles.triggerSelected,
|
|
@@ -376,13 +369,13 @@ export function TabMenu({
|
|
|
376
369
|
{triggerLabel}
|
|
377
370
|
</span>
|
|
378
371
|
</span>
|
|
379
|
-
<span
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
372
|
+
<span aria-hidden="true" {...stylex.props(styles.chevron)}>
|
|
373
|
+
<Icon
|
|
374
|
+
icon="chevronDown"
|
|
375
|
+
size="sm"
|
|
376
|
+
color="inherit"
|
|
377
|
+
xstyle={[styles.chevronIcon, popover.isOpen && styles.chevronOpen]}
|
|
378
|
+
/>
|
|
386
379
|
</span>
|
|
387
380
|
{hasSelectedOption && (
|
|
388
381
|
<span
|
|
@@ -429,7 +422,7 @@ export function TabMenu({
|
|
|
429
422
|
}}
|
|
430
423
|
{...mergeProps(
|
|
431
424
|
themeProps('tab-menu-item'),
|
|
432
|
-
|
|
425
|
+
focusOutlineProps.focusVisible(
|
|
433
426
|
styles.menuItem,
|
|
434
427
|
isSelected && styles.menuItemSelected,
|
|
435
428
|
),
|
package/src/Table/BaseTable.tsx
CHANGED
|
@@ -243,6 +243,17 @@ function TableRowInner<T extends Record<string, unknown>>({
|
|
|
243
243
|
</RowComponent>
|
|
244
244
|
);
|
|
245
245
|
|
|
246
|
+
// afterRow: plugins (e.g. row expansion) can append a full-width detail
|
|
247
|
+
// panel `<tr>` after the row. Rendered as a sibling fragment.
|
|
248
|
+
if (rowRenderProps.afterRow) {
|
|
249
|
+
return (
|
|
250
|
+
<>
|
|
251
|
+
{row}
|
|
252
|
+
{rowRenderProps.afterRow}
|
|
253
|
+
</>
|
|
254
|
+
);
|
|
255
|
+
}
|
|
256
|
+
|
|
246
257
|
return row;
|
|
247
258
|
}
|
|
248
259
|
|
package/src/Table/index.ts
CHANGED
|
@@ -28,11 +28,8 @@ export {useTableColumnResize} from './plugins/columnResize';
|
|
|
28
28
|
export {useTableStickyColumns} from './plugins/stickyColumns';
|
|
29
29
|
export {useTableGroupedRows} from './plugins/groupedRows';
|
|
30
30
|
export {useTableRowIndex} from './plugins/rowIndex';
|
|
31
|
-
export {
|
|
32
|
-
useTableRowExpansion,
|
|
33
|
-
useTableRowExpansionState,
|
|
34
|
-
} from './plugins/rowExpansion';
|
|
35
31
|
export {useTableRowStatus} from './plugins/rowStatus';
|
|
32
|
+
export {useTableRowExpansion} from './plugins/rowExpansion';
|
|
36
33
|
export {useTableTreeData, useTableTreeState} from './plugins/tree';
|
|
37
34
|
export {resolveContextActions} from './tableContextMenu';
|
|
38
35
|
export {
|
|
@@ -20,7 +20,6 @@ import {
|
|
|
20
20
|
fontWeightVars,
|
|
21
21
|
} from '../../../theme/tokens.stylex';
|
|
22
22
|
import {Icon} from '../../../Icon';
|
|
23
|
-
import {rtlStyles} from '../../../utils';
|
|
24
23
|
import type {TablePlugin} from '../../types';
|
|
25
24
|
import {useTranslator} from '../../../i18n';
|
|
26
25
|
|
|
@@ -153,12 +152,25 @@ const styles = stylex.create({
|
|
|
153
152
|
},
|
|
154
153
|
},
|
|
155
154
|
chevronIcon: {
|
|
156
|
-
display: 'inline-flex',
|
|
157
155
|
transitionProperty: 'transform',
|
|
158
156
|
transitionDuration: '150ms',
|
|
159
157
|
},
|
|
160
|
-
|
|
161
|
-
|
|
158
|
+
// The RTL mirror is folded into each state's transform rather than living on
|
|
159
|
+
// a parent span. Both are `transform`, so on one element the later value
|
|
160
|
+
// would win — spelling out `scaleX(-1) rotate(...)` per state composes them
|
|
161
|
+
// exactly as the nested elements did, while leaving a single element to
|
|
162
|
+
// carry the glyph's theme target.
|
|
163
|
+
chevronIconCollapsed: {
|
|
164
|
+
transform: {
|
|
165
|
+
default: 'rotate(0deg)',
|
|
166
|
+
':is([dir="rtl"] *)': 'scaleX(-1) rotate(0deg)',
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
chevronIconExpanded: {
|
|
170
|
+
transform: {
|
|
171
|
+
default: 'rotate(90deg)',
|
|
172
|
+
':is([dir="rtl"] *)': 'scaleX(-1) rotate(90deg)',
|
|
173
|
+
},
|
|
162
174
|
},
|
|
163
175
|
// Emphasized body text — same size as body, heavier weight (Ernest #3).
|
|
164
176
|
label: {
|
|
@@ -178,7 +190,7 @@ const styles = stylex.create({
|
|
|
178
190
|
* data rows while keeping the header visible.
|
|
179
191
|
*
|
|
180
192
|
* Mirrors other controlled Table state helpers: the consumer owns the
|
|
181
|
-
* `collapsedGroups` set and this hook returns `{data, plugin, idKey}
|
|
193
|
+
* `collapsedGroups` set and this hook returns `{data, plugin, idKey}`:
|
|
182
194
|
* pass all three to `<Table>`.
|
|
183
195
|
*
|
|
184
196
|
* @example
|
|
@@ -334,15 +346,19 @@ export function useTableGroupedRows<T extends Record<string, unknown>>(
|
|
|
334
346
|
})
|
|
335
347
|
}
|
|
336
348
|
aria-expanded={!collapsed}>
|
|
337
|
-
<
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
349
|
+
<Icon
|
|
350
|
+
icon="chevronRight"
|
|
351
|
+
size="xsm"
|
|
352
|
+
// The rotation rides on the glyph rather than a wrapper
|
|
353
|
+
// span so the theme target below reaches both the mark and
|
|
354
|
+
// its open/closed transform.
|
|
355
|
+
xstyle={[
|
|
356
|
+
styles.chevronIcon,
|
|
357
|
+
collapsed
|
|
358
|
+
? styles.chevronIconCollapsed
|
|
359
|
+
: styles.chevronIconExpanded,
|
|
360
|
+
]}
|
|
361
|
+
/>
|
|
346
362
|
</button>
|
|
347
363
|
{content}
|
|
348
364
|
</span>
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
2
|
|
|
3
|
-
export {
|
|
4
|
-
useTableRowExpansion,
|
|
5
|
-
useTableRowExpansionState,
|
|
6
|
-
} from './useTableRowExpansion';
|
|
3
|
+
export {useTableRowExpansion} from './useTableRowExpansion';
|
|
7
4
|
export type {UseTableRowExpansionConfig} from './useTableRowExpansion';
|