@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
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file indicatorRegistry.ts
|
|
3
|
+
* @input Theme source and indicator name
|
|
4
|
+
* @output Exports the default indicator map and getIndicator resolution
|
|
5
|
+
* @position Server-safe indicator resolver; no 'use client' so it is
|
|
6
|
+
* importable from RSC
|
|
7
|
+
*
|
|
8
|
+
* Two name spaces meet here, and keeping them apart is the whole design:
|
|
9
|
+
*
|
|
10
|
+
* - {@link CoreIndicatorName} — the indicators Astryx itself ships. Closed,
|
|
11
|
+
* and every one of them has a default, so resolving one always yields a
|
|
12
|
+
* component.
|
|
13
|
+
* - {@link IndicatorName} — every indicator name that exists, including the
|
|
14
|
+
* ones other packages add by augmenting `IndicatorMap`. Open, and core has
|
|
15
|
+
* no default for a name it has never heard of.
|
|
16
|
+
*
|
|
17
|
+
* `getIndicator` is overloaded along that seam: a core name resolves to a
|
|
18
|
+
* component, an augmented name resolves to a component *or* `undefined`, and
|
|
19
|
+
* the caller has to say what to do about it. Typing the map as total over the
|
|
20
|
+
* open union instead — which is what shipped in #4712 — made the compiler
|
|
21
|
+
* promise a component for `getIndicator('brand-star')` and hand back
|
|
22
|
+
* `undefined` at runtime.
|
|
23
|
+
*/
|
|
24
|
+
import type { DefinedTheme } from '../theme/defineTheme';
|
|
25
|
+
import type { IndicatorComponent, IndicatorMap, IndicatorName } from './types';
|
|
26
|
+
/**
|
|
27
|
+
* The indicator names Astryx ships a default for.
|
|
28
|
+
*
|
|
29
|
+
* Written out rather than derived from {@link IndicatorMap}, because that
|
|
30
|
+
* interface is open to augmentation and this set is not: it is exactly what is
|
|
31
|
+
* in {@link defaultIndicators} below. `indicatorRegistry.test.tsx` pins the two
|
|
32
|
+
* together in both directions.
|
|
33
|
+
*/
|
|
34
|
+
export type CoreIndicatorName = 'check' | 'checkbox' | 'radio';
|
|
35
|
+
/**
|
|
36
|
+
* The indicators Astryx ships. A theme's `indicators` entries override these
|
|
37
|
+
* by name.
|
|
38
|
+
*
|
|
39
|
+
* Typed per family (rather than as one widened component type) so a default
|
|
40
|
+
* declared here has to accept the states its family passes — the same rule
|
|
41
|
+
* {@link IndicatorRegistry} holds replacements to.
|
|
42
|
+
*/
|
|
43
|
+
export declare const defaultIndicators: {
|
|
44
|
+
[N in CoreIndicatorName]: IndicatorComponent<IndicatorMap[N]>;
|
|
45
|
+
};
|
|
46
|
+
export type IndicatorRegistrySource = DefinedTheme | string | null | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Resolve an indicator component by name, preferring the theme's override and
|
|
49
|
+
* falling back to the built-in indicator.
|
|
50
|
+
*
|
|
51
|
+
* Works in both server and client environments. Client components should use
|
|
52
|
+
* the {@link useIndicator} hook, which resolves against the nearest `<Theme>`.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```
|
|
56
|
+
* const Radio = getIndicator('radio', themeName);
|
|
57
|
+
* <Radio state="checked" />
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* For a name contributed by augmentation there is no built-in to fall back to,
|
|
61
|
+
* so the result is `undefined` unless a theme supplies one — the package that
|
|
62
|
+
* added the name owns its default:
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```
|
|
66
|
+
* const Star = getIndicator('brand-star', themeName) ?? BrandStar;
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function getIndicator<N extends CoreIndicatorName>(name: N, source?: IndicatorRegistrySource): IndicatorComponent<IndicatorMap[N]>;
|
|
70
|
+
export declare function getIndicator<N extends IndicatorName>(name: N, source?: IndicatorRegistrySource): IndicatorComponent<IndicatorMap[N]> | undefined;
|
|
71
|
+
//# sourceMappingURL=indicatorRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"indicatorRegistry.d.ts","sourceRoot":"","sources":["../../src/Indicator/indicatorRegistry.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAKvD,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,aAAa,EAEd,MAAM,SAAS,CAAC;AAEjB;;;;;;;GAOG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAE;KAC7B,CAAC,IAAI,iBAAiB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAK9D,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAe/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACtD,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,uBAAuB,GAC/B,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,uBAAuB,GAC/B,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file indicatorRegistry.ts
|
|
5
|
+
* @input Theme source and indicator name
|
|
6
|
+
* @output Exports the default indicator map and getIndicator resolution
|
|
7
|
+
* @position Server-safe indicator resolver; no 'use client' so it is
|
|
8
|
+
* importable from RSC
|
|
9
|
+
*
|
|
10
|
+
* Two name spaces meet here, and keeping them apart is the whole design:
|
|
11
|
+
*
|
|
12
|
+
* - {@link CoreIndicatorName} — the indicators Astryx itself ships. Closed,
|
|
13
|
+
* and every one of them has a default, so resolving one always yields a
|
|
14
|
+
* component.
|
|
15
|
+
* - {@link IndicatorName} — every indicator name that exists, including the
|
|
16
|
+
* ones other packages add by augmenting `IndicatorMap`. Open, and core has
|
|
17
|
+
* no default for a name it has never heard of.
|
|
18
|
+
*
|
|
19
|
+
* `getIndicator` is overloaded along that seam: a core name resolves to a
|
|
20
|
+
* component, an augmented name resolves to a component *or* `undefined`, and
|
|
21
|
+
* the caller has to say what to do about it. Typing the map as total over the
|
|
22
|
+
* open union instead — which is what shipped in #4712 — made the compiler
|
|
23
|
+
* promise a component for `getIndicator('brand-star')` and hand back
|
|
24
|
+
* `undefined` at runtime.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import { getRegisteredTheme } from "../theme/themeRegistry.js";
|
|
28
|
+
import { CheckboxIndicator } from "./CheckboxIndicator.js";
|
|
29
|
+
import { CheckIndicator } from "./CheckIndicator.js";
|
|
30
|
+
import { RadioIndicator } from "./RadioIndicator.js";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* The indicator names Astryx ships a default for.
|
|
34
|
+
*
|
|
35
|
+
* Written out rather than derived from {@link IndicatorMap}, because that
|
|
36
|
+
* interface is open to augmentation and this set is not: it is exactly what is
|
|
37
|
+
* in {@link defaultIndicators} below. `indicatorRegistry.test.tsx` pins the two
|
|
38
|
+
* together in both directions.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The indicators Astryx ships. A theme's `indicators` entries override these
|
|
43
|
+
* by name.
|
|
44
|
+
*
|
|
45
|
+
* Typed per family (rather than as one widened component type) so a default
|
|
46
|
+
* declared here has to accept the states its family passes — the same rule
|
|
47
|
+
* {@link IndicatorRegistry} holds replacements to.
|
|
48
|
+
*/
|
|
49
|
+
export const defaultIndicators = {
|
|
50
|
+
check: CheckIndicator,
|
|
51
|
+
checkbox: CheckboxIndicator,
|
|
52
|
+
radio: RadioIndicator
|
|
53
|
+
};
|
|
54
|
+
function getTheme(source) {
|
|
55
|
+
if (source == null) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return typeof source === 'string' ? getRegisteredTheme(source) : source;
|
|
59
|
+
}
|
|
60
|
+
function getThemeIndicators(source) {
|
|
61
|
+
return getTheme(source)?.indicators ?? null;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Resolve an indicator component by name, preferring the theme's override and
|
|
66
|
+
* falling back to the built-in indicator.
|
|
67
|
+
*
|
|
68
|
+
* Works in both server and client environments. Client components should use
|
|
69
|
+
* the {@link useIndicator} hook, which resolves against the nearest `<Theme>`.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```
|
|
73
|
+
* const Radio = getIndicator('radio', themeName);
|
|
74
|
+
* <Radio state="checked" />
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* For a name contributed by augmentation there is no built-in to fall back to,
|
|
78
|
+
* so the result is `undefined` unless a theme supplies one — the package that
|
|
79
|
+
* added the name owns its default:
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```
|
|
83
|
+
* const Star = getIndicator('brand-star', themeName) ?? BrandStar;
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
|
|
87
|
+
export function getIndicator(name, source) {
|
|
88
|
+
const override = getThemeIndicators(source)?.[name];
|
|
89
|
+
return override ??
|
|
90
|
+
// `name` may be an augmented one, which this map has no entry for — hence
|
|
91
|
+
// the `| undefined` the overloads expose to those callers.
|
|
92
|
+
defaultIndicators[name];
|
|
93
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file types.ts
|
|
3
|
+
* @input None (pure type definitions)
|
|
4
|
+
* @output The indicator contract: families, states, props, names, registry
|
|
5
|
+
* @position Type foundation for stateful control visuals
|
|
6
|
+
*
|
|
7
|
+
* An **indicator** is a decorative visual that expresses a piece of component
|
|
8
|
+
* state: the box a checkbox draws, the circle a radio draws, the mark on a
|
|
9
|
+
* chosen list option. The owning component keeps the input, role, accessible
|
|
10
|
+
* name, focus, and keyboard behavior; the indicator turns state into a picture.
|
|
11
|
+
*
|
|
12
|
+
* Componentizing them buys three things a theme could not otherwise have:
|
|
13
|
+
*
|
|
14
|
+
* 1. **Theme it** — an indicator renders stable `astryx-*` class targets, so
|
|
15
|
+
* `defineTheme({components})` restyles it like any other component, in one
|
|
16
|
+
* place rather than per host component.
|
|
17
|
+
* 2. **Swizzle it** — `astryx swizzle <Name>` copies the source to own.
|
|
18
|
+
* 3. **Replace it** — `defineTheme({indicators})` swaps in another component
|
|
19
|
+
* by name, and every component that renders that indicator follows. A
|
|
20
|
+
* product that wants radio visuals for single selection replaces `check`.
|
|
21
|
+
*
|
|
22
|
+
* Indicators come in **families**, and a family fixes the state space. That is
|
|
23
|
+
* what lets one mechanism serve semantics as different as "is this option
|
|
24
|
+
* chosen" and "are several of these chosen" without either pretending to be
|
|
25
|
+
* the other, and without a shared enum that would typecheck `indeterminate` on
|
|
26
|
+
* a radio.
|
|
27
|
+
*
|
|
28
|
+
* Each family's vocabulary is the one the accessibility layer already uses, so
|
|
29
|
+
* a component passing state down says the same word its ARIA attribute says.
|
|
30
|
+
* Sharing one enum across families was measured and rejected (#4831): it
|
|
31
|
+
* produced call sites reading `aria-expanded={isOpen}` beside
|
|
32
|
+
* `state={isOpen ? 'on' : 'off'}`.
|
|
33
|
+
*/
|
|
34
|
+
import type { ComponentType, ReactNode, Ref } from 'react';
|
|
35
|
+
import type { BaseProps } from '../BaseProps';
|
|
36
|
+
/**
|
|
37
|
+
* The indicator families, each mapped to the states it can express.
|
|
38
|
+
*
|
|
39
|
+
* Single and multi selection are separate families because their state spaces
|
|
40
|
+
* genuinely differ: `aria-checked` is `true|false` for a radio and
|
|
41
|
+
* `true|false|mixed` for a checkbox. Keeping them apart is what makes a
|
|
42
|
+
* replacement type-checkable — a checkbox visual cannot stand in where only
|
|
43
|
+
* two states are ever passed, and a radio cannot be asked to draw a partial
|
|
44
|
+
* state it has no picture for.
|
|
45
|
+
*
|
|
46
|
+
* Adding a family is additive: declare it here, then declare indicators of
|
|
47
|
+
* that family in {@link IndicatorMap}. Packages outside core can contribute
|
|
48
|
+
* families through module augmentation.
|
|
49
|
+
*/
|
|
50
|
+
export interface IndicatorFamilyMap {
|
|
51
|
+
/** Is this one thing chosen? Radios, and the mark on a selected option. */
|
|
52
|
+
singleSelection: 'unchecked' | 'checked';
|
|
53
|
+
/** Which of these are chosen? Checkboxes, including the partial state. */
|
|
54
|
+
multiSelection: 'unchecked' | 'checked' | 'indeterminate';
|
|
55
|
+
}
|
|
56
|
+
export type IndicatorFamily = keyof IndicatorFamilyMap & string;
|
|
57
|
+
/** The states an indicator of family `F` can be asked to draw. */
|
|
58
|
+
export type IndicatorState<F extends IndicatorFamily = IndicatorFamily> = IndicatorFamilyMap[F];
|
|
59
|
+
/** Indicator size scale — matches the control sizes of the owning inputs. */
|
|
60
|
+
export type IndicatorSize = 'sm' | 'md';
|
|
61
|
+
/**
|
|
62
|
+
* Props every indicator accepts.
|
|
63
|
+
*
|
|
64
|
+
* Indicators are **decorative**: they render `aria-hidden` visuals and own no
|
|
65
|
+
* role, focus, keyboard handling, or state. The component that renders one
|
|
66
|
+
* (CheckboxInput, RadioListItem, a listbox option) keeps all of that. An
|
|
67
|
+
* indicator's only job is to turn `state` into a picture.
|
|
68
|
+
*
|
|
69
|
+
* The a11y props are omitted from this interface rather than left to
|
|
70
|
+
* convention: un-hiding an indicator has it announced next to the control that
|
|
71
|
+
* owns the accessible name — the same thing said twice (#4918). A replacement
|
|
72
|
+
* that genuinely needs announcing is not an indicator; name the owning control.
|
|
73
|
+
*
|
|
74
|
+
* `tabIndex` is omitted for the same reason, one step on: the element is
|
|
75
|
+
* unconditionally `aria-hidden`, so a tab stop on it is a focusable node inside
|
|
76
|
+
* a hidden subtree. Measured with axe in real Chromium: 0 `aria-hidden-focus`
|
|
77
|
+
* violations becomes 1 the moment it is forwarded.
|
|
78
|
+
*
|
|
79
|
+
* The omission is only half enforceable, and it is worth knowing which half.
|
|
80
|
+
* TypeScript exempts JSX attribute names that are not valid JS identifiers from
|
|
81
|
+
* excess-property checking, so a LITERAL `role=` is a compile error while
|
|
82
|
+
* `aria-hidden` and `aria-label` are not — and a spread (`{...props}`, the
|
|
83
|
+
* ordinary host idiom) bypasses the check for every member, `role` included.
|
|
84
|
+
* Measured, not assumed. So the components also emit their own `aria-hidden`
|
|
85
|
+
* AFTER `{...rest}` and drop a forwarded `tabIndex`: that ordering, not the
|
|
86
|
+
* type, is what enforces the contract. Nothing else is stripped — a forwarded
|
|
87
|
+
* `aria-label` still reaches the DOM, inert inside an `aria-hidden` subtree.
|
|
88
|
+
*
|
|
89
|
+
* Interaction state is deliberately *not* a prop. Hover and focus reach an
|
|
90
|
+
* indicator through the CSS ancestor marker ({@link indicatorScope}) applied
|
|
91
|
+
* by its owner, so a row hover tints the control without anyone threading a
|
|
92
|
+
* boolean through React — and an owner that should not tint its indicator
|
|
93
|
+
* simply does not apply the marker.
|
|
94
|
+
*/
|
|
95
|
+
export interface IndicatorProps<F extends IndicatorFamily = IndicatorFamily> extends Omit<BaseProps<HTMLSpanElement>, 'aria-hidden' | 'role' | 'aria-label' | 'aria-labelledby' | 'tabIndex'> {
|
|
96
|
+
/** Ref forwarded to the indicator's root element. */
|
|
97
|
+
ref?: Ref<HTMLSpanElement>;
|
|
98
|
+
/** Which state to draw. The state space is fixed by the family. */
|
|
99
|
+
state: IndicatorState<F>;
|
|
100
|
+
/**
|
|
101
|
+
* Control size.
|
|
102
|
+
* @default 'md'
|
|
103
|
+
*/
|
|
104
|
+
size?: IndicatorSize;
|
|
105
|
+
/**
|
|
106
|
+
* Whether the owning control is disabled. Purely visual — the owner still
|
|
107
|
+
* owns the actual disabled semantics.
|
|
108
|
+
* @default false
|
|
109
|
+
*/
|
|
110
|
+
isDisabled?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Content rendered inside the indicator chrome *instead of* the state mark.
|
|
113
|
+
* CheckboxInput uses this to show a loading Spinner inside the box while a
|
|
114
|
+
* change action is pending.
|
|
115
|
+
*/
|
|
116
|
+
children?: ReactNode;
|
|
117
|
+
}
|
|
118
|
+
/** An indicator is any component accepting {@link IndicatorProps} of its family. */
|
|
119
|
+
export type IndicatorComponent<F extends IndicatorFamily = IndicatorFamily> = ComponentType<IndicatorProps<F>>;
|
|
120
|
+
/**
|
|
121
|
+
* The named indicators a theme can replace, each mapped to its family.
|
|
122
|
+
*
|
|
123
|
+
* The name is what a theme addresses, and what every component renders
|
|
124
|
+
* through — so replacing `check` reaches every single-selection mark at once,
|
|
125
|
+
* which is the point.
|
|
126
|
+
*
|
|
127
|
+
* Packages outside core can contribute their own through module augmentation.
|
|
128
|
+
* Core ships no default for a name it does not know, so the package that adds
|
|
129
|
+
* the name owns its default — `getIndicator`/`useIndicator` return
|
|
130
|
+
* `| undefined` for it, and the call site supplies the fallback:
|
|
131
|
+
*
|
|
132
|
+
* ```ts
|
|
133
|
+
* declare module '@astryxdesign/core/Indicator' {
|
|
134
|
+
* interface IndicatorMap {
|
|
135
|
+
* 'brand-star': 'singleSelection';
|
|
136
|
+
* }
|
|
137
|
+
* }
|
|
138
|
+
*
|
|
139
|
+
* const Star = useIndicator('brand-star') ?? BrandStar;
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
export interface IndicatorMap {
|
|
143
|
+
/** The mark on a chosen option — a checkmark by default. */
|
|
144
|
+
check: 'singleSelection';
|
|
145
|
+
/** The filled circle of a radio control. */
|
|
146
|
+
radio: 'singleSelection';
|
|
147
|
+
/** The box of a checkbox control, including its partial state. */
|
|
148
|
+
checkbox: 'multiSelection';
|
|
149
|
+
}
|
|
150
|
+
export type IndicatorName = keyof IndicatorMap & string;
|
|
151
|
+
/** The indicator names belonging to family `F`. */
|
|
152
|
+
export type IndicatorNameOfFamily<F extends IndicatorFamily> = {
|
|
153
|
+
[N in IndicatorName]: IndicatorMap[N] extends F ? N : never;
|
|
154
|
+
}[IndicatorName];
|
|
155
|
+
/**
|
|
156
|
+
* Theme-provided indicator overrides, keyed by indicator name.
|
|
157
|
+
*
|
|
158
|
+
* Family-checked: each entry must accept the state space of that indicator's
|
|
159
|
+
* family, so a replacement cannot be written against the wrong states. A
|
|
160
|
+
* `check` replacement that only handles `collapsed`/`expanded`, or a `radio`
|
|
161
|
+
* replacement expecting `indeterminate`, is a type error rather than a
|
|
162
|
+
* runtime surprise.
|
|
163
|
+
*/
|
|
164
|
+
export type IndicatorRegistry = {
|
|
165
|
+
[N in IndicatorName]?: IndicatorComponent<IndicatorMap[N]>;
|
|
166
|
+
};
|
|
167
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Indicator/types.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAC,aAAa,EAAE,SAAS,EAAE,GAAG,EAAC,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAE5C;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IACjC,2EAA2E;IAC3E,eAAe,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,0EAA0E;IAC1E,cAAc,EAAE,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC;CAC3D;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEhE,kEAAkE;AAClE,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACpE,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAExB,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,WAAW,cAAc,CAC7B,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,IAAI,CACZ,SAAS,CAAC,eAAe,CAAC,EAC1B,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,iBAAiB,GAAG,UAAU,CACvE;IACC,qDAAqD;IACrD,GAAG,CAAC,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IAC3B,mEAAmE;IACnE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzB;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,oFAAoF;AACpF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe,IACxE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,KAAK,EAAE,iBAAiB,CAAC;IACzB,4CAA4C;IAC5C,KAAK,EAAE,iBAAiB,CAAC;IACzB,kEAAkE;IAClE,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,YAAY,GAAG,MAAM,CAAC;AAExD,mDAAmD;AACnD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,eAAe,IAAI;KAC5D,CAAC,IAAI,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;CAC5D,CAAC,aAAa,CAAC,CAAC;AAEjB;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GAAG;KAC7B,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type CoreIndicatorName } from './indicatorRegistry';
|
|
2
|
+
import type { IndicatorComponent, IndicatorMap, IndicatorName } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Resolve an indicator component from the nearest `<Theme>`.
|
|
5
|
+
*
|
|
6
|
+
* A core indicator always resolves. A name contributed by augmentation
|
|
7
|
+
* resolves only if a theme supplies it, so that overload returns
|
|
8
|
+
* `| undefined` — see {@link getIndicator}.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```
|
|
12
|
+
* const Checkbox = useIndicator('checkbox');
|
|
13
|
+
* return <Checkbox state={isChecked ? 'checked' : 'unchecked'} size={size} />;
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function useIndicator<N extends CoreIndicatorName>(name: N): IndicatorComponent<IndicatorMap[N]>;
|
|
17
|
+
export declare function useIndicator<N extends IndicatorName>(name: N): IndicatorComponent<IndicatorMap[N]> | undefined;
|
|
18
|
+
//# sourceMappingURL=useIndicator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIndicator.d.ts","sourceRoot":"","sources":["../../src/Indicator/useIndicator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAe,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAC,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAC,MAAM,SAAS,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,iBAAiB,EACtD,IAAI,EAAE,CAAC,GACN,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AACvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,IAAI,EAAE,CAAC,GACN,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useIndicator.ts
|
|
7
|
+
* @input Indicator name
|
|
8
|
+
* @output Exports useIndicator hook for theme-aware indicator components
|
|
9
|
+
* @position Client hook used by controls that render a selection visual
|
|
10
|
+
*/
|
|
11
|
+
import { useThemeName } from "../theme/useTheme.js";
|
|
12
|
+
import { getIndicator } from "./indicatorRegistry.js";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Resolve an indicator component from the nearest `<Theme>`.
|
|
16
|
+
*
|
|
17
|
+
* A core indicator always resolves. A name contributed by augmentation
|
|
18
|
+
* resolves only if a theme supplies it, so that overload returns
|
|
19
|
+
* `| undefined` — see {@link getIndicator}.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```
|
|
23
|
+
* const Checkbox = useIndicator('checkbox');
|
|
24
|
+
* return <Checkbox state={isChecked ? 'checked' : 'unchecked'} size={size} />;
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
export function useIndicator(name) {
|
|
29
|
+
return getIndicator(name, useThemeName());
|
|
30
|
+
}
|
package/dist/Item/Item.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAU7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/Item/Item.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAS,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAU7C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,SAAU,SAAQ,SAAS,CAAC,WAAW,CAAC;IACvD,yCAAyC;IACzC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B;;;OAGG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB;;;;OAIG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAE5C;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAErD;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,IAAI,CAAC,EACnB,EAAE,EAAE,SAAiB,EACrB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,WAAW,EACX,UAAU,EACV,KAAgB,EAChB,OAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,IAAI,EACJ,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,YAAY,EACjB,aAAqB,EACrB,UAAkB,EAClB,UAAkB,EAClB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,IAAI,EACJ,GAAG,SAAS,EACb,EAAE,SAAS,+BA2MX;yBApOe,IAAI"}
|
package/dist/Item/Item.js
CHANGED
|
@@ -25,6 +25,7 @@ import { useLinkComponent } from "../Link/useLinkComponent.js";
|
|
|
25
25
|
import { useClickableContainer } from "../hooks/useClickableContainer.js";
|
|
26
26
|
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
27
27
|
import { themeProps } from "../utils/themeProps.js";
|
|
28
|
+
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
28
29
|
|
|
29
30
|
// =============================================================================
|
|
30
31
|
// Types
|
|
@@ -68,11 +69,6 @@ const styles = {
|
|
|
68
69
|
kWkggS: "xjbqb8w xe9uy6x xyxi2l3",
|
|
69
70
|
$$css: true
|
|
70
71
|
},
|
|
71
|
-
focusVisibleOutline: {
|
|
72
|
-
kI3sdo: "x1a2a7pz x1irc7jg",
|
|
73
|
-
kInvED: "x1wfwxd8 xdjuwb3",
|
|
74
|
-
$$css: true
|
|
75
|
-
},
|
|
76
72
|
highlighted: {
|
|
77
73
|
kWkggS: "x1lmrjuc",
|
|
78
74
|
$$css: true
|
|
@@ -87,7 +83,7 @@ const styles = {
|
|
|
87
83
|
$$css: true
|
|
88
84
|
},
|
|
89
85
|
label: {
|
|
90
|
-
kMwMTN: "
|
|
86
|
+
kMwMTN: "x5tbw38",
|
|
91
87
|
kGuDYH: "xjm74w1",
|
|
92
88
|
kLWn49: "xw6l6zx",
|
|
93
89
|
$$css: true
|
|
@@ -105,7 +101,7 @@ const styles = {
|
|
|
105
101
|
$$css: true
|
|
106
102
|
},
|
|
107
103
|
description: {
|
|
108
|
-
kMwMTN: "
|
|
104
|
+
kMwMTN: "x1gb3s7i",
|
|
109
105
|
kGuDYH: "x141an7d",
|
|
110
106
|
kLWn49: "x1ltkj2j",
|
|
111
107
|
$$css: true
|
|
@@ -332,7 +328,7 @@ export function Item({
|
|
|
332
328
|
...mergeProps(themeProps('item', {
|
|
333
329
|
density,
|
|
334
330
|
align
|
|
335
|
-
}),
|
|
331
|
+
}), focusOutlineProps.focusWithin(styles.root, densityStyles[density], align === 'start' && styles.alignStart, isInteractive && styles.interactive, isHighlighted && styles.highlighted, isSelected && styles.selected, isDisabled && !hasParentRole && styles.disabled, xstyle), className, style),
|
|
336
332
|
role: role,
|
|
337
333
|
onClick: isDelegate ? delegatedOnClick : hasParentRole ? onClick : isInteractive ? handleContainerClick : undefined,
|
|
338
334
|
children: innerContent
|
package/dist/Layer/useLayer.d.ts
CHANGED
|
@@ -51,6 +51,20 @@ export interface ContextRenderProps {
|
|
|
51
51
|
* is `'custom'`.
|
|
52
52
|
*/
|
|
53
53
|
alignment?: LayerAlignment;
|
|
54
|
+
/**
|
|
55
|
+
* Clearance between the layer and its anchor, as a CSS length (a number is
|
|
56
|
+
* treated as `px`). Applied along the placement axis and flip-safe, so the
|
|
57
|
+
* gap survives a `position-try-fallbacks` flip to the opposite side.
|
|
58
|
+
*
|
|
59
|
+
* Layers sit flush by default: the hook zeroes the UA margins so anchor
|
|
60
|
+
* positioning has a clean box, and clearance is a deliberate choice per
|
|
61
|
+
* surface. `var(--spacing-1)` is the system's standard clearance.
|
|
62
|
+
*
|
|
63
|
+
* Ignored when `positioning` is `'custom'` — that mode owns its own insets.
|
|
64
|
+
*
|
|
65
|
+
* @default 0
|
|
66
|
+
*/
|
|
67
|
+
offset?: number | string;
|
|
54
68
|
/**
|
|
55
69
|
* ARIA role applied to the popover container (e.g. `'tooltip'`). Lets
|
|
56
70
|
* consumers complete the ARIA pattern and gives test tooling a stable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLayer.d.ts","sourceRoot":"","sources":["../../src/Layer/useLayer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"useLayer.d.ts","sourceRoot":"","sources":["../../src/Layer/useLayer.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,EAMZ,KAAK,SAAS,EACd,KAAK,WAAW,EACjB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAwCnD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEjE;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;;;;;;;;;OAcG;IACH,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;;;;;;;;;;OAWG;IACH,EAAE,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACpD;;OAEG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,SAAS,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IAE9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,SAAS,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,GAAG,EAAE,SAAS,CAAC;IAEf;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,KAAK,SAAS,CAAC;CACrE;AAgDD;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,GAAE,cAAwB,EACnC,SAAS,GAAE,cAAyB,GACnC,MAAM,CAgBR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAAC;AAC3E,wBAAgB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC"}
|
package/dist/Layer/useLayer.js
CHANGED
|
@@ -19,6 +19,11 @@ import { addAnchorName, removeAnchorName } from "./anchorName.js";
|
|
|
19
19
|
import "../theme/tokens.stylex.js";
|
|
20
20
|
import { typographyVars } from "../theme/tokens.stylex.js";
|
|
21
21
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
+
const _temp = {
|
|
23
|
+
keoZOQ: "x1vhfslr",
|
|
24
|
+
k1K539: "xlm3tn6",
|
|
25
|
+
"$$css": true
|
|
26
|
+
};
|
|
22
27
|
const styles = {
|
|
23
28
|
base: {
|
|
24
29
|
keoZOQ: "xdj266r",
|
|
@@ -39,7 +44,19 @@ const styles = {
|
|
|
39
44
|
fixed: {
|
|
40
45
|
kVAEAm: "xixxii4",
|
|
41
46
|
$$css: true
|
|
42
|
-
}
|
|
47
|
+
},
|
|
48
|
+
offsetBlock: offset => [_temp, {
|
|
49
|
+
"--x-marginBlockStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(offset),
|
|
50
|
+
"--x-marginBlockEnd": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(offset)
|
|
51
|
+
}],
|
|
52
|
+
offsetInline: offset => [{
|
|
53
|
+
keTefX: offset != null ? "x4lel18" : offset,
|
|
54
|
+
k71WvV: offset != null ? "x1c9tiao" : offset,
|
|
55
|
+
$$css: true
|
|
56
|
+
}, {
|
|
57
|
+
"--x-marginInlineStart": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(offset),
|
|
58
|
+
"--x-marginInlineEnd": (val => typeof val === "number" ? val + "px" : val != null ? val : undefined)(offset)
|
|
59
|
+
}]
|
|
43
60
|
};
|
|
44
61
|
|
|
45
62
|
/**
|
|
@@ -80,6 +97,10 @@ const styles = {
|
|
|
80
97
|
* Return type for fixed mode
|
|
81
98
|
*/
|
|
82
99
|
|
|
100
|
+
function toCssLength(value) {
|
|
101
|
+
return typeof value === 'number' ? `${value}px` : value;
|
|
102
|
+
}
|
|
103
|
+
|
|
83
104
|
/**
|
|
84
105
|
* Map logical placement/alignment to a CSS position-area value.
|
|
85
106
|
*
|
|
@@ -285,6 +306,7 @@ export function useLayer(options) {
|
|
|
285
306
|
placement = 'above',
|
|
286
307
|
alignment = 'center',
|
|
287
308
|
positioning = 'anchor',
|
|
309
|
+
offset,
|
|
288
310
|
role,
|
|
289
311
|
'aria-label': ariaLabel,
|
|
290
312
|
xstyle,
|
|
@@ -306,7 +328,8 @@ export function useLayer(options) {
|
|
|
306
328
|
positionArea: getPositionArea(placement, alignment),
|
|
307
329
|
positionTryFallbacks: getPositionTryFallbacks(placement, alignment)
|
|
308
330
|
};
|
|
309
|
-
const
|
|
331
|
+
const offsetStyle = positioning === 'anchor' && offset ? placement === 'above' || placement === 'below' ? styles.offsetBlock(toCssLength(offset)) : styles.offsetInline(toCssLength(offset)) : null;
|
|
332
|
+
const stylexResult = stylex.props(styles.base, offsetStyle, xstyle);
|
|
310
333
|
const combinedClassName = extraClassName ? `${extraClassName} ${stylexResult.className ?? ''}` : stylexResult.className;
|
|
311
334
|
|
|
312
335
|
// Render as the requested tag. A `span` keeps the layer phrasing content
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"Lightbox.d.ts","sourceRoot":"","sources":["../../src/Lightbox/Lightbox.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,iBAAiB,CAAC;IACjE,+CAA+C;IAC/C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACnC;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH,KAAK,EAAE,aAAa,GAAG,aAAa,EAAE,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,QAAQ,CAAC,EACvB,MAAM,EACN,YAAY,EACZ,KAAK,EACL,KAAK,EAAE,eAAe,EACtB,YAAgB,EAChB,aAAa,EACb,OAAe,EACf,WAAmB,EACnB,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,KAAK,EACT,EAAE,aAAa,sCAyYf;yBAzZe,QAAQ"}
|