@astryxdesign/core 0.1.1 → 0.1.2-canary.04e71b2
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 +105 -0
- package/README.md +131 -13
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +4 -1
- package/dist/Banner/Banner.d.ts +7 -0
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +9 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +24 -5
- package/dist/Button/Button.d.ts +12 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +53 -17
- package/dist/Calendar/Calendar.d.ts +5 -4
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +82 -43
- package/dist/Calendar/hooks/index.d.ts +0 -2
- package/dist/Calendar/hooks/index.d.ts.map +1 -1
- package/dist/Calendar/hooks/index.js +1 -2
- package/dist/Calendar/index.d.ts +3 -3
- package/dist/Calendar/index.d.ts.map +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/styles.d.ts +3 -9
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +3 -11
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +17 -3
- package/dist/Center/Center.d.ts +11 -1
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +9 -3
- package/dist/Chat/ChatMessageList.d.ts +14 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -0
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +4 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +23 -2
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +51 -9
- package/dist/CheckboxList/CheckboxList.d.ts +13 -1
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +39 -9
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +3 -3
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +49 -37
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +5 -5
- package/dist/ContextMenu/ContextMenu.d.ts +4 -5
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +93 -11
- package/dist/DateInput/DateInput.d.ts +23 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +59 -8
- package/dist/DateRangeInput/DateRangeInput.d.ts +23 -1
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +42 -9
- package/dist/DateTimeInput/DateTimeInput.d.ts +35 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +78 -15
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +12 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +1 -8
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +42 -14
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +7 -1
- package/dist/Field/Field.d.ts +19 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +4 -0
- package/dist/Field/FieldLabel.d.ts +21 -2
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +41 -26
- package/dist/FileInput/FileInput.d.ts +22 -1
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +56 -10
- package/dist/Grid/Grid.d.ts +11 -1
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +8 -0
- package/dist/HoverCard/HoverCard.d.ts +2 -2
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +18 -6
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -3
- package/dist/InputGroup/InputGroup.d.ts +2 -2
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +14 -5
- package/dist/InputGroup/InputGroupContext.d.ts +4 -0
- package/dist/InputGroup/InputGroupContext.d.ts.map +1 -1
- package/dist/InputGroup/InputGroupContext.js +2 -2
- package/dist/InputGroup/index.d.ts +1 -0
- package/dist/InputGroup/index.d.ts.map +1 -1
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +34 -2
- package/dist/Layer/anchorName.d.ts +20 -0
- package/dist/Layer/anchorName.d.ts.map +1 -0
- package/dist/Layer/anchorName.js +36 -0
- package/dist/Layer/layerAnimations.stylex.d.ts +4 -0
- package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
- package/dist/Layer/layerAnimations.stylex.js +8 -4
- package/dist/Layer/useLayer.d.ts +29 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +55 -11
- package/dist/Layout/Layout.d.ts +4 -11
- package/dist/Layout/Layout.d.ts.map +1 -1
- package/dist/Layout/Layout.js +10 -11
- package/dist/Layout/LayoutFooter.d.ts +2 -2
- package/dist/Layout/LayoutFooter.d.ts.map +1 -1
- package/dist/Layout/LayoutHeader.d.ts +2 -2
- package/dist/Layout/LayoutHeader.d.ts.map +1 -1
- package/dist/Layout/LayoutPanel.d.ts +2 -2
- package/dist/Layout/LayoutPanel.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.d.ts +51 -0
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +63 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +4 -2
- package/dist/Link/Link.d.ts +17 -2
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +20 -9
- package/dist/Link/LinkProvider.d.ts +1 -0
- package/dist/Link/LinkProvider.d.ts.map +1 -1
- package/dist/Link/LinkProvider.js +1 -0
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +18 -3
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +13 -0
- package/dist/MoreMenu/MoreMenu.d.ts +1 -7
- package/dist/MoreMenu/MoreMenu.d.ts.map +1 -1
- package/dist/MoreMenu/MoreMenu.js +0 -2
- package/dist/MultiSelector/MultiSelector.d.ts +25 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +103 -22
- package/dist/MultiSelector/hooks.d.ts +12 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +14 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +34 -3
- package/dist/NumberInput/NumberInput.d.ts +23 -2
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +62 -12
- package/dist/Pagination/Pagination.d.ts +1 -1
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +46 -28
- package/dist/Popover/usePopover.d.ts +25 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +18 -6
- package/dist/PowerSearch/PowerSearch.d.ts +11 -1
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +6 -1
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +3 -5
- package/dist/RadioList/RadioList.d.ts +20 -2
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +105 -9
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts +13 -2
- package/dist/SegmentedControl/SegmentedControl.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +78 -44
- package/dist/SegmentedControl/SegmentedControlContext.d.ts +7 -0
- package/dist/SegmentedControl/SegmentedControlContext.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +13 -2
- package/dist/Selector/Selector.d.ts +22 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +84 -23
- package/dist/Selector/hooks.d.ts +8 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +14 -1
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +8 -2
- package/dist/Slider/Slider.d.ts +21 -0
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +38 -11
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +38 -23
- package/dist/Stack/Stack.d.ts.map +1 -1
- package/dist/Stack/Stack.js +25 -1
- package/dist/Stack/StackItem.d.ts +12 -23
- package/dist/Stack/StackItem.d.ts.map +1 -1
- package/dist/Stack/StackItem.js +8 -1
- package/dist/Switch/Switch.d.ts +23 -2
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +41 -11
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +6 -0
- package/dist/TabList/TabList.d.ts +16 -4
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +86 -10
- package/dist/TabList/TabListContext.d.ts +5 -0
- package/dist/TabList/TabListContext.d.ts.map +1 -1
- package/dist/TabList/TabListContext.js +5 -0
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +6 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +38 -16
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +36 -7
- package/dist/Table/TableCell.d.ts +8 -1
- package/dist/Table/TableCell.d.ts.map +1 -1
- package/dist/Table/TableCell.js +10 -10
- package/dist/Table/TableHeaderCell.d.ts +8 -1
- package/dist/Table/TableHeaderCell.d.ts.map +1 -1
- package/dist/Table/TableHeaderCell.js +16 -16
- package/dist/Table/TableRow.d.ts +6 -1
- package/dist/Table/TableRow.d.ts.map +1 -1
- package/dist/Table/TableRow.js +15 -7
- package/dist/Table/index.d.ts +4 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +3 -2
- package/dist/Table/plugins/pagination/paginateData.d.ts +2 -1
- package/dist/Table/plugins/pagination/paginateData.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/paginateData.js +8 -3
- package/dist/Table/plugins/pagination/useTablePagination.d.ts.map +1 -1
- package/dist/Table/plugins/pagination/useTablePagination.js +6 -1
- package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
- package/dist/Table/plugins/sortable/useTableSortable.js +59 -3
- package/dist/Table/plugins/stickyColumns/index.d.ts +3 -0
- package/dist/Table/plugins/stickyColumns/index.d.ts.map +1 -0
- package/dist/Table/plugins/stickyColumns/index.js +3 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts +25 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -0
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +369 -0
- package/dist/Table/tableContextMenu.d.ts +33 -0
- package/dist/Table/tableContextMenu.d.ts.map +1 -0
- package/dist/Table/tableContextMenu.js +133 -0
- package/dist/Table/types.d.ts +161 -5
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +1 -1
- package/dist/Text/text.stylex.d.ts +2 -2
- package/dist/Text/text.stylex.js +2 -2
- package/dist/TextArea/TextArea.d.ts +22 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +41 -9
- package/dist/TextInput/TextInput.d.ts +23 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +55 -10
- package/dist/TimeInput/TimeInput.d.ts +23 -1
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +53 -10
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +28 -3
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +14 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +132 -3
- package/dist/ToggleButton/ToggleButton.d.ts +7 -9
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +34 -57
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +27 -5
- package/dist/Toolbar/Toolbar.d.ts +3 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +51 -7
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +57 -9
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +72 -2
- package/dist/TreeList/TreeListItem.d.ts +11 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +51 -12
- package/dist/TreeList/treeListItem.markers.stylex.d.ts +16 -0
- package/dist/TreeList/treeListItem.markers.stylex.d.ts.map +1 -0
- package/dist/TreeList/treeListItem.markers.stylex.js +22 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +9 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +67 -6
- package/dist/Typeahead/Typeahead.d.ts +24 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +29 -5
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +61 -0
- package/dist/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/VisuallyHidden/VisuallyHidden.js +65 -0
- package/dist/VisuallyHidden/index.d.ts +11 -0
- package/dist/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/VisuallyHidden/index.js +13 -0
- package/dist/astryx.css +40 -1
- package/dist/astryx.umd.js +147 -0
- package/dist/astryx.umd.js.map +7 -0
- package/dist/hooks/focusableSelector.d.ts +22 -0
- package/dist/hooks/focusableSelector.d.ts.map +1 -0
- package/dist/hooks/focusableSelector.js +24 -0
- package/dist/hooks/index.d.ts +12 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +7 -2
- package/dist/hooks/useAnnounce.d.ts +40 -0
- package/dist/hooks/useAnnounce.d.ts.map +1 -0
- package/dist/hooks/useAnnounce.js +142 -0
- package/dist/hooks/useClickableContainer.d.ts +16 -1
- package/dist/hooks/useClickableContainer.d.ts.map +1 -1
- package/dist/hooks/useClickableContainer.js +16 -4
- package/dist/hooks/useEntryAnimation.d.ts.map +1 -1
- package/dist/hooks/useEntryAnimation.js +4 -4
- package/dist/hooks/useFocusTrap.d.ts +18 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +87 -3
- package/dist/hooks/useGridFocus.d.ts +88 -1
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +261 -62
- package/dist/hooks/useKeyboardHint.d.ts +82 -0
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -0
- package/dist/hooks/useKeyboardHint.js +220 -0
- package/dist/hooks/useListFocus.d.ts +78 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +305 -52
- package/dist/hooks/useLongPress.d.ts +21 -0
- package/dist/hooks/useLongPress.d.ts.map +1 -0
- package/dist/hooks/useLongPress.js +89 -0
- package/dist/hooks/useTreeFocus.d.ts +157 -0
- package/dist/hooks/useTreeFocus.d.ts.map +1 -0
- package/dist/hooks/useTreeFocus.js +337 -0
- package/dist/hooks/useTypeahead.d.ts +63 -0
- package/dist/hooks/useTypeahead.d.ts.map +1 -0
- package/dist/hooks/useTypeahead.js +117 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/theme/generateThemeRules.js +1 -1
- package/dist/theme/syntax/SyntaxTheme.d.ts +1 -1
- package/dist/theme/syntax/SyntaxTheme.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +2 -2
- package/dist/theme/syntax/presets.d.ts +1 -1
- package/dist/theme/syntax/presets.d.ts.map +1 -1
- package/dist/theme/syntax/presets.js +1 -1
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.js +1 -1
- package/dist/theme/types.d.ts +1 -1
- package/dist/utils/dateTypes.d.ts +12 -0
- package/dist/utils/dateTypes.d.ts.map +1 -1
- package/dist/utils/dateTypes.js +41 -1
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/inputAria.d.ts +29 -0
- package/dist/utils/inputAria.d.ts.map +1 -0
- package/dist/utils/inputAria.js +30 -0
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +5 -2
- package/package.json +15 -5
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +3 -0
- package/src/Banner/Banner.doc.mjs +8 -0
- package/src/Banner/Banner.test.tsx +16 -7
- package/src/Banner/Banner.tsx +9 -2
- package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -7
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Button/Button.doc.mjs +6 -0
- package/src/Button/Button.test.tsx +105 -11
- package/src/Button/Button.tsx +76 -21
- package/src/Calendar/Calendar.doc.mjs +4 -4
- package/src/Calendar/Calendar.test.tsx +168 -30
- package/src/Calendar/Calendar.tsx +121 -66
- package/src/Calendar/hooks/index.ts +0 -6
- package/src/Calendar/index.ts +1 -3
- package/src/Calendar/styles.ts +4 -9
- package/src/Carousel/Carousel.doc.mjs +7 -1
- package/src/Carousel/Carousel.test.tsx +20 -0
- package/src/Carousel/Carousel.tsx +16 -1
- package/src/Center/Center.doc.mjs +12 -2
- package/src/Center/Center.tsx +28 -3
- package/src/Chat/ChatComposer.doc.mjs +3 -0
- package/src/Chat/ChatComposerDrawer.doc.mjs +12 -0
- package/src/Chat/ChatMessageList.doc.mjs +8 -0
- package/src/Chat/ChatMessageList.test.tsx +18 -0
- package/src/Chat/ChatMessageList.tsx +16 -0
- package/src/Chat/useTriggerMenu.tsx +3 -0
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.test.tsx +172 -27
- package/src/CheckboxInput/CheckboxInput.tsx +78 -6
- package/src/CheckboxList/CheckboxList.doc.mjs +9 -0
- package/src/CheckboxList/CheckboxList.test.tsx +169 -16
- package/src/CheckboxList/CheckboxList.tsx +56 -3
- package/src/CheckboxList/CheckboxListContext.tsx +7 -0
- package/src/Citation/Citation.doc.mjs +10 -0
- package/src/Citation/Citation.test.tsx +117 -0
- package/src/Citation/Citation.tsx +9 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +15 -0
- package/src/CodeBlock/CodeBlock.test.tsx +115 -0
- package/src/CodeBlock/CodeBlock.tsx +61 -33
- package/src/CommandPalette/CommandPalette.test.tsx +47 -1
- package/src/CommandPalette/CommandPalette.tsx +9 -21
- package/src/ContextMenu/ContextMenu.doc.mjs +4 -4
- package/src/ContextMenu/ContextMenu.test.tsx +155 -1
- package/src/ContextMenu/ContextMenu.tsx +113 -16
- package/src/DateInput/DateInput.doc.mjs +281 -56
- package/src/DateInput/DateInput.test.tsx +188 -2
- package/src/DateInput/DateInput.tsx +89 -10
- package/src/DateRangeInput/DateRangeInput.doc.mjs +251 -46
- package/src/DateRangeInput/DateRangeInput.test.tsx +182 -20
- package/src/DateRangeInput/DateRangeInput.tsx +63 -5
- package/src/DateTimeInput/DateTimeInput.doc.mjs +368 -67
- package/src/DateTimeInput/DateTimeInput.test.tsx +279 -11
- package/src/DateTimeInput/DateTimeInput.tsx +125 -17
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.tsx +12 -0
- package/src/DropdownMenu/DropdownMenu.doc.mjs +1 -8
- package/src/DropdownMenu/DropdownMenu.test.tsx +56 -42
- package/src/DropdownMenu/DropdownMenu.tsx +52 -18
- package/src/EmptyState/EmptyState.test.tsx +4 -2
- package/src/EmptyState/EmptyState.tsx +6 -2
- package/src/Field/Field.test.tsx +32 -0
- package/src/Field/Field.tsx +23 -5
- package/src/Field/FieldLabel.tsx +55 -17
- package/src/FileInput/FileInput.doc.mjs +17 -0
- package/src/FileInput/FileInput.test.tsx +283 -49
- package/src/FileInput/FileInput.tsx +76 -4
- package/src/Grid/Grid.doc.mjs +14 -4
- package/src/Grid/Grid.tsx +20 -0
- package/src/HoverCard/HoverCard.doc.mjs +3 -0
- package/src/HoverCard/HoverCard.test.tsx +189 -2
- package/src/HoverCard/HoverCard.tsx +20 -16
- package/src/HoverCard/useHoverCard.tsx +13 -10
- package/src/Icon/Icon.doc.mjs +8 -0
- package/src/InputGroup/InputGroup.doc.mjs +2 -2
- package/src/InputGroup/InputGroup.test.tsx +98 -60
- package/src/InputGroup/InputGroup.tsx +21 -4
- package/src/InputGroup/InputGroupContext.ts +9 -4
- package/src/InputGroup/index.ts +1 -0
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +37 -12
- package/src/Layer/anchorName.test.ts +146 -0
- package/src/Layer/anchorName.ts +46 -0
- package/src/Layer/layerAnimations.stylex.ts +20 -4
- package/src/Layer/useLayer.doc.mjs +12 -2
- package/src/Layer/useLayer.tsx +100 -15
- package/src/Layout/Layout.doc.mjs +1 -1
- package/src/Layout/Layout.tsx +8 -16
- package/src/Layout/LayoutFooter.doc.mjs +4 -4
- package/src/Layout/LayoutFooter.tsx +3 -3
- package/src/Layout/LayoutHeader.doc.mjs +4 -4
- package/src/Layout/LayoutHeader.tsx +3 -3
- package/src/Layout/LayoutPanel.tsx +3 -3
- package/src/Layout/padding.stylex.ts +52 -0
- package/src/Lightbox/Lightbox.doc.mjs +9 -2
- package/src/Lightbox/Lightbox.test.tsx +53 -5
- package/src/Lightbox/Lightbox.tsx +9 -4
- package/src/Link/Link.doc.mjs +14 -0
- package/src/Link/Link.test.tsx +52 -2
- package/src/Link/Link.tsx +42 -7
- package/src/Link/LinkProvider.tsx +1 -0
- package/src/List/List.doc.mjs +7 -0
- package/src/Markdown/Markdown.doc.mjs +2 -0
- package/src/Markdown/Markdown.test.tsx +28 -26
- package/src/Markdown/Markdown.tsx +21 -6
- package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
- package/src/MobileNav/MobileNav.doc.mjs +8 -8
- package/src/MobileNav/MobileNav.tsx +13 -0
- package/src/MobileNav/MobileNavReopen.test.tsx +118 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -17
- package/src/MoreMenu/MoreMenu.tsx +0 -9
- package/src/MultiSelector/MultiSelector.doc.mjs +25 -0
- package/src/MultiSelector/MultiSelector.test.tsx +375 -8
- package/src/MultiSelector/MultiSelector.tsx +145 -21
- package/src/MultiSelector/hooks.ts +27 -0
- package/src/NavMenu/NavHeadingMenu.test.tsx +77 -1
- package/src/NavMenu/NavHeadingMenu.tsx +50 -3
- package/src/NumberInput/NumberInput.doc.mjs +17 -0
- package/src/NumberInput/NumberInput.test.tsx +242 -40
- package/src/NumberInput/NumberInput.tsx +89 -11
- package/src/OverflowList/OverflowList.doc.mjs +17 -0
- package/src/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.test.tsx +250 -14
- package/src/Pagination/Pagination.tsx +54 -29
- package/src/Popover/usePopover.doc.mjs +7 -3
- package/src/Popover/usePopover.tsx +49 -6
- package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
- package/src/PowerSearch/PowerSearch.test.tsx +97 -1
- package/src/PowerSearch/PowerSearch.tsx +16 -3
- package/src/ProgressBar/ProgressBar.test.tsx +45 -27
- package/src/ProgressBar/ProgressBar.tsx +3 -4
- package/src/RadioList/RadioList.doc.mjs +9 -0
- package/src/RadioList/RadioList.test.tsx +252 -16
- package/src/RadioList/RadioList.tsx +166 -10
- package/src/RadioList/RadioListItem.tsx +14 -2
- package/src/Resizable/Resizable.doc.mjs +1 -1
- package/src/Section/Section.doc.mjs +11 -0
- package/src/SegmentedControl/SegmentedControl.doc.mjs +9 -0
- package/src/SegmentedControl/SegmentedControl.test.tsx +214 -42
- package/src/SegmentedControl/SegmentedControl.tsx +102 -54
- package/src/SegmentedControl/SegmentedControlContext.ts +7 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +14 -1
- package/src/SelectableCard/SelectableCard.doc.mjs +15 -0
- package/src/Selector/Selector.doc.mjs +25 -0
- package/src/Selector/Selector.test.tsx +322 -15
- package/src/Selector/Selector.tsx +126 -40
- package/src/Selector/hooks.ts +23 -0
- package/src/SideNav/SideNav.test.tsx +16 -0
- package/src/SideNav/SideNavItem.tsx +2 -4
- package/src/Skeleton/Skeleton.doc.mjs +11 -1
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Slider/Slider.doc.mjs +19 -0
- package/src/Slider/Slider.test.tsx +158 -18
- package/src/Slider/Slider.tsx +54 -6
- package/src/Spinner/Spinner.tsx +7 -1
- package/src/Stack/Stack.doc.mjs +77 -0
- package/src/Stack/Stack.test.tsx +55 -5
- package/src/Stack/Stack.tsx +73 -24
- package/src/Stack/StackItem.test.tsx +23 -0
- package/src/Stack/StackItem.tsx +20 -23
- package/src/Switch/Switch.doc.mjs +15 -0
- package/src/Switch/Switch.test.tsx +162 -27
- package/src/Switch/Switch.tsx +61 -21
- package/src/TabList/Tab.tsx +6 -0
- package/src/TabList/TabList.doc.mjs +12 -0
- package/src/TabList/TabList.test.tsx +208 -0
- package/src/TabList/TabList.tsx +102 -12
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +6 -3
- package/src/Table/BaseTable.tsx +72 -41
- package/src/Table/Table.doc.mjs +14 -0
- package/src/Table/Table.test.tsx +39 -30
- package/src/Table/Table.tsx +27 -1
- package/src/Table/TableCell.tsx +25 -23
- package/src/Table/TableHeaderCell.tsx +28 -29
- package/src/Table/TableRow.tsx +37 -7
- package/src/Table/index.ts +6 -2
- package/src/Table/plugins/pagination/paginateData.ts +10 -3
- package/src/Table/plugins/pagination/useTablePagination.test.tsx +16 -0
- package/src/Table/plugins/pagination/useTablePagination.tsx +8 -1
- package/src/Table/plugins/sortable/useTableSortable.test.tsx +91 -2
- package/src/Table/plugins/sortable/useTableSortable.tsx +53 -1
- package/src/Table/plugins/stickyColumns/index.ts +4 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.test.tsx +163 -0
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +407 -0
- package/src/Table/tableContextMenu.test.tsx +157 -0
- package/src/Table/tableContextMenu.tsx +142 -0
- package/src/Table/types.ts +175 -4
- package/src/Table/useBaseTablePlugins.ts +1 -0
- package/src/Table/useTableColumnResize.doc.mjs +96 -0
- package/src/Table/useTableStickyColumns.doc.mjs +59 -0
- package/src/Text/Heading.doc.mjs +15 -2
- package/src/Text/Text.doc.mjs +7 -1
- package/src/Text/text.stylex.ts +2 -2
- package/src/TextArea/TextArea.doc.mjs +17 -0
- package/src/TextArea/TextArea.test.tsx +167 -35
- package/src/TextArea/TextArea.tsx +62 -15
- package/src/TextInput/TextInput.doc.mjs +17 -0
- package/src/TextInput/TextInput.test.tsx +168 -34
- package/src/TextInput/TextInput.tsx +77 -9
- package/src/TimeInput/TimeInput.doc.mjs +335 -60
- package/src/TimeInput/TimeInput.test.tsx +144 -7
- package/src/TimeInput/TimeInput.tsx +74 -5
- package/src/Timestamp/Timestamp.doc.mjs +9 -0
- package/src/Timestamp/Timestamp.test.tsx +44 -18
- package/src/Timestamp/Timestamp.tsx +30 -10
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +204 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/ToggleButton/ToggleButton.doc.mjs +9 -3
- package/src/ToggleButton/ToggleButton.test.tsx +39 -18
- package/src/ToggleButton/ToggleButton.tsx +46 -83
- package/src/Tokenizer/Tokenizer.doc.mjs +15 -0
- package/src/Tokenizer/Tokenizer.test.tsx +105 -1
- package/src/Tokenizer/Tokenizer.tsx +41 -2
- package/src/Toolbar/Toolbar.doc.mjs +65 -5
- package/src/Toolbar/Toolbar.test.tsx +109 -6
- package/src/Toolbar/Toolbar.tsx +59 -5
- package/src/Tooltip/Tooltip.test.tsx +81 -0
- package/src/Tooltip/useTooltip.tsx +57 -11
- package/src/TreeList/TreeList.test.tsx +295 -6
- package/src/TreeList/TreeList.tsx +73 -1
- package/src/TreeList/TreeListItem.tsx +51 -5
- package/src/TreeList/treeListItem.markers.stylex.ts +20 -0
- package/src/Typeahead/BaseTypeahead.tsx +86 -9
- package/src/Typeahead/Typeahead.doc.mjs +136 -30
- package/src/Typeahead/Typeahead.test.tsx +331 -1
- package/src/Typeahead/Typeahead.tsx +52 -1
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +80 -0
- package/src/VisuallyHidden/VisuallyHidden.test.tsx +76 -0
- package/src/VisuallyHidden/VisuallyHidden.tsx +113 -0
- package/src/VisuallyHidden/index.ts +15 -0
- package/src/hooks/focusableSelector.ts +25 -0
- package/src/hooks/index.ts +28 -2
- package/src/hooks/useAnnounce.test.tsx +101 -0
- package/src/hooks/useAnnounce.ts +168 -0
- package/src/hooks/useClickableContainer.ts +16 -4
- package/src/hooks/useEntryAnimation.ts +16 -4
- package/src/hooks/useFocusTrap.test.tsx +132 -0
- package/src/hooks/useFocusTrap.ts +98 -4
- package/src/hooks/useGridFocus.doc.mjs +40 -2
- package/src/hooks/useGridFocus.test.tsx +132 -0
- package/src/hooks/useGridFocus.ts +343 -67
- package/src/hooks/useImageMode.test.ts +133 -0
- package/src/hooks/useKeyboardHint.doc.mjs +101 -0
- package/src/hooks/useKeyboardHint.test.tsx +70 -0
- package/src/hooks/useKeyboardHint.tsx +332 -0
- package/src/hooks/useListFocus.doc.mjs +50 -10
- package/src/hooks/useListFocus.test.tsx +375 -0
- package/src/hooks/useListFocus.ts +395 -57
- package/src/hooks/useLongPress.test.tsx +134 -0
- package/src/hooks/useLongPress.ts +119 -0
- package/src/hooks/useTreeFocus.doc.mjs +140 -0
- package/src/hooks/useTreeFocus.test.tsx +214 -0
- package/src/hooks/useTreeFocus.ts +559 -0
- package/src/hooks/useTypeahead.test.tsx +109 -0
- package/src/hooks/useTypeahead.ts +183 -0
- package/src/index.ts +1 -0
- package/src/theme/derivedVarRegistry.test.ts +4 -0
- package/src/theme/generateThemeRules.test.ts +7 -8
- package/src/theme/generateThemeRules.ts +1 -1
- package/src/theme/syntax/SyntaxTheme.tsx +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +20 -11
- package/src/theme/syntax/presets.ts +5 -2
- package/src/theme/syntax/tokens.ts +1 -1
- package/src/theme/types.ts +1 -1
- package/src/utils/dateTypes.test.ts +40 -0
- package/src/utils/dateTypes.ts +40 -0
- package/src/utils/index.ts +9 -0
- package/src/utils/inputAria.test.ts +39 -0
- package/src/utils/inputAria.ts +58 -0
- package/src/utils/timeParser.test.ts +10 -0
- package/src/utils/timeParser.ts +5 -2
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts +0 -57
- package/dist/Calendar/hooks/useCalendarRovingTabindex.d.ts.map +0 -1
- package/dist/Calendar/hooks/useCalendarRovingTabindex.js +0 -96
- package/src/Calendar/hooks/useCalendarRovingTabindex.ts +0 -118
package/src/Layout/Layout.tsx
CHANGED
|
@@ -26,7 +26,7 @@ import {stack} from '../Stack/stack.stylex';
|
|
|
26
26
|
import {stackItem} from '../Stack/stackItem.stylex';
|
|
27
27
|
import {mergeProps} from '../utils';
|
|
28
28
|
import type {BaseProps} from '../BaseProps';
|
|
29
|
-
import type {SpacingStep} from '../utils/types';
|
|
29
|
+
import type {SizeValue, SpacingStep} from '../utils/types';
|
|
30
30
|
import {themeProps} from '../utils/themeProps';
|
|
31
31
|
import {
|
|
32
32
|
layoutPaddingOuterXVarStyles,
|
|
@@ -76,12 +76,12 @@ const styles = stylex.create({
|
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
const dynamicStyles = stylex.create({
|
|
79
|
-
contentWidthVar: (width:
|
|
80
|
-
'--layout-content-width': `${width}px
|
|
79
|
+
contentWidthVar: (width: SizeValue) => ({
|
|
80
|
+
'--layout-content-width': typeof width === 'number' ? `${width}px` : width,
|
|
81
81
|
}),
|
|
82
|
-
contentWidth: (width:
|
|
82
|
+
contentWidth: (width: SizeValue) => ({
|
|
83
83
|
width: '100%',
|
|
84
|
-
maxWidth: width,
|
|
84
|
+
maxWidth: typeof width === 'number' ? `${width}px` : width,
|
|
85
85
|
marginInline: 'auto',
|
|
86
86
|
}),
|
|
87
87
|
});
|
|
@@ -102,11 +102,12 @@ export interface LayoutProps extends Omit<BaseProps, 'content'> {
|
|
|
102
102
|
* panels). Dividers remain full-bleed. Content is centered with
|
|
103
103
|
* `margin-inline: auto` when narrower than the available space.
|
|
104
104
|
*
|
|
105
|
-
*
|
|
105
|
+
* Numbers are treated as pixels, strings are used as-is (e.g., '60ch').
|
|
106
|
+
* Common page widths:
|
|
106
107
|
* - `640` — forms, settings, text-focused pages
|
|
107
108
|
* - `960` — content pages, component demos, wider layouts
|
|
108
109
|
*/
|
|
109
|
-
contentWidth?:
|
|
110
|
+
contentWidth?: SizeValue;
|
|
110
111
|
|
|
111
112
|
/**
|
|
112
113
|
* End panel slot (right in LTR, left in RTL).
|
|
@@ -149,15 +150,6 @@ export interface LayoutProps extends Omit<BaseProps, 'content'> {
|
|
|
149
150
|
*/
|
|
150
151
|
defaultHasDividers?: boolean;
|
|
151
152
|
|
|
152
|
-
/**
|
|
153
|
-
* CSS class name(s) appended to the root element.
|
|
154
|
-
*/
|
|
155
|
-
className?: string;
|
|
156
|
-
/**
|
|
157
|
-
* Inline styles to apply to the root element.
|
|
158
|
-
*/
|
|
159
|
-
style?: React.CSSProperties;
|
|
160
|
-
|
|
161
153
|
/**
|
|
162
154
|
* Children are a shorthand for the `content` slot:
|
|
163
155
|
* `<Layout>{main}</Layout>` is equivalent to `<Layout content={main} />`.
|
|
@@ -22,8 +22,8 @@ export const docs = {
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
name: 'height',
|
|
25
|
-
type: '
|
|
26
|
-
description: 'Footer height.',
|
|
25
|
+
type: 'SizeValue',
|
|
26
|
+
description: 'Footer height. Numbers are treated as pixels, strings are used as-is.',
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
name: 'label',
|
|
@@ -57,8 +57,8 @@ export const docsZh = {
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
name: 'height',
|
|
60
|
-
type: '
|
|
61
|
-
description: '
|
|
60
|
+
type: 'SizeValue',
|
|
61
|
+
description: '页脚高度。数字类型会被解释为像素值,字符串类型按原样使用。',
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
name: 'label',
|
|
@@ -22,7 +22,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
22
22
|
import {LayoutDividerContext} from './LayoutDividerContext';
|
|
23
23
|
import {colorVars, spacingVars} from '../theme/tokens.stylex';
|
|
24
24
|
import {mergeProps} from '../utils';
|
|
25
|
-
import type {SpacingStep} from '../utils/types';
|
|
25
|
+
import type {SizeValue, SpacingStep} from '../utils/types';
|
|
26
26
|
import {themeProps} from '../utils/themeProps';
|
|
27
27
|
import {
|
|
28
28
|
paddingStyles,
|
|
@@ -71,7 +71,7 @@ const styles = stylex.create({
|
|
|
71
71
|
|
|
72
72
|
// Dynamic styles for sizing props
|
|
73
73
|
const dynamicStyles = stylex.create({
|
|
74
|
-
sizing: (height:
|
|
74
|
+
sizing: (height: SizeValue | null) => ({
|
|
75
75
|
height,
|
|
76
76
|
}),
|
|
77
77
|
});
|
|
@@ -95,7 +95,7 @@ export interface LayoutFooterProps extends BaseProps<HTMLDivElement> {
|
|
|
95
95
|
* Height of the footer.
|
|
96
96
|
* Numbers are treated as pixels, strings are used as-is.
|
|
97
97
|
*/
|
|
98
|
-
height?:
|
|
98
|
+
height?: SizeValue;
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
101
|
* Internal padding of the footer using the spacing scale.
|
|
@@ -22,8 +22,8 @@ export const docs = {
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
name: 'height',
|
|
25
|
-
type: '
|
|
26
|
-
description: 'Header height.',
|
|
25
|
+
type: 'SizeValue',
|
|
26
|
+
description: 'Header height. Numbers are treated as pixels, strings are used as-is.',
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
name: 'label',
|
|
@@ -57,8 +57,8 @@ export const docsZh = {
|
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
59
|
name: 'height',
|
|
60
|
-
type: '
|
|
61
|
-
description: '
|
|
60
|
+
type: 'SizeValue',
|
|
61
|
+
description: '页眉高度。数字类型会被解释为像素值,字符串类型按原样使用。',
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
name: 'label',
|
|
@@ -22,7 +22,7 @@ import * as stylex from '@stylexjs/stylex';
|
|
|
22
22
|
import {LayoutDividerContext} from './LayoutDividerContext';
|
|
23
23
|
import {colorVars, spacingVars} from '../theme/tokens.stylex';
|
|
24
24
|
import {mergeProps} from '../utils';
|
|
25
|
-
import type {SpacingStep} from '../utils/types';
|
|
25
|
+
import type {SizeValue, SpacingStep} from '../utils/types';
|
|
26
26
|
import {themeProps} from '../utils/themeProps';
|
|
27
27
|
import {
|
|
28
28
|
paddingStyles,
|
|
@@ -71,7 +71,7 @@ const styles = stylex.create({
|
|
|
71
71
|
|
|
72
72
|
// Dynamic styles for sizing props
|
|
73
73
|
const dynamicStyles = stylex.create({
|
|
74
|
-
sizing: (height:
|
|
74
|
+
sizing: (height: SizeValue | null) => ({
|
|
75
75
|
height,
|
|
76
76
|
}),
|
|
77
77
|
});
|
|
@@ -95,7 +95,7 @@ export interface LayoutHeaderProps extends BaseProps<HTMLDivElement> {
|
|
|
95
95
|
* Height of the header.
|
|
96
96
|
* Numbers are treated as pixels, strings are used as-is.
|
|
97
97
|
*/
|
|
98
|
-
height?:
|
|
98
|
+
height?: SizeValue;
|
|
99
99
|
|
|
100
100
|
/**
|
|
101
101
|
* Internal padding of the header using the spacing scale.
|
|
@@ -23,7 +23,7 @@ import {colorVars, spacingVars} from '../theme/tokens.stylex';
|
|
|
23
23
|
import {LayoutAreaContext} from './LayoutAreaContext';
|
|
24
24
|
import {LayoutSlotsContext} from './LayoutSlotsContext';
|
|
25
25
|
import {mergeProps} from '../utils';
|
|
26
|
-
import type {SpacingStep} from '../utils/types';
|
|
26
|
+
import type {SizeValue, SpacingStep} from '../utils/types';
|
|
27
27
|
import type {ResizableProps} from '../Resizable/useResizable';
|
|
28
28
|
import {themeProps} from '../utils/themeProps';
|
|
29
29
|
import {
|
|
@@ -102,7 +102,7 @@ const styles = stylex.create({
|
|
|
102
102
|
|
|
103
103
|
// Dynamic styles for sizing props
|
|
104
104
|
const dynamicStyles = stylex.create({
|
|
105
|
-
sizing: (width:
|
|
105
|
+
sizing: (width: SizeValue | null) => ({
|
|
106
106
|
width,
|
|
107
107
|
}),
|
|
108
108
|
});
|
|
@@ -158,7 +158,7 @@ export interface LayoutPanelProps extends BaseProps<HTMLDivElement> {
|
|
|
158
158
|
* Numbers are treated as pixels, strings are used as-is.
|
|
159
159
|
* When `resizable` is provided, this is ignored — the hook controls width.
|
|
160
160
|
*/
|
|
161
|
-
width?:
|
|
161
|
+
width?: SizeValue;
|
|
162
162
|
|
|
163
163
|
/**
|
|
164
164
|
* Resize props from `useResizable()`. When provided, the panel width
|
|
@@ -220,6 +220,58 @@ export const layoutPaddingOuterYVarStyles = stylex.create({
|
|
|
220
220
|
10: {'--layout-padding-outer-y': spacingVars['--spacing-10']},
|
|
221
221
|
});
|
|
222
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Inline-only padding styles.
|
|
225
|
+
* Use when a component needs to set inline (horizontal) padding independently
|
|
226
|
+
* of block padding — e.g. the `paddingX` prop on Stack.
|
|
227
|
+
*/
|
|
228
|
+
export const paddingInlineStyles = stylex.create({
|
|
229
|
+
0: {
|
|
230
|
+
paddingInlineStart: spacingVars['--spacing-0'],
|
|
231
|
+
paddingInlineEnd: spacingVars['--spacing-0'],
|
|
232
|
+
},
|
|
233
|
+
0.5: {
|
|
234
|
+
paddingInlineStart: spacingVars['--spacing-0-5'],
|
|
235
|
+
paddingInlineEnd: spacingVars['--spacing-0-5'],
|
|
236
|
+
},
|
|
237
|
+
1: {
|
|
238
|
+
paddingInlineStart: spacingVars['--spacing-1'],
|
|
239
|
+
paddingInlineEnd: spacingVars['--spacing-1'],
|
|
240
|
+
},
|
|
241
|
+
1.5: {
|
|
242
|
+
paddingInlineStart: spacingVars['--spacing-1-5'],
|
|
243
|
+
paddingInlineEnd: spacingVars['--spacing-1-5'],
|
|
244
|
+
},
|
|
245
|
+
2: {
|
|
246
|
+
paddingInlineStart: spacingVars['--spacing-2'],
|
|
247
|
+
paddingInlineEnd: spacingVars['--spacing-2'],
|
|
248
|
+
},
|
|
249
|
+
3: {
|
|
250
|
+
paddingInlineStart: spacingVars['--spacing-3'],
|
|
251
|
+
paddingInlineEnd: spacingVars['--spacing-3'],
|
|
252
|
+
},
|
|
253
|
+
4: {
|
|
254
|
+
paddingInlineStart: spacingVars['--spacing-4'],
|
|
255
|
+
paddingInlineEnd: spacingVars['--spacing-4'],
|
|
256
|
+
},
|
|
257
|
+
5: {
|
|
258
|
+
paddingInlineStart: spacingVars['--spacing-5'],
|
|
259
|
+
paddingInlineEnd: spacingVars['--spacing-5'],
|
|
260
|
+
},
|
|
261
|
+
6: {
|
|
262
|
+
paddingInlineStart: spacingVars['--spacing-6'],
|
|
263
|
+
paddingInlineEnd: spacingVars['--spacing-6'],
|
|
264
|
+
},
|
|
265
|
+
8: {
|
|
266
|
+
paddingInlineStart: spacingVars['--spacing-8'],
|
|
267
|
+
paddingInlineEnd: spacingVars['--spacing-8'],
|
|
268
|
+
},
|
|
269
|
+
10: {
|
|
270
|
+
paddingInlineStart: spacingVars['--spacing-10'],
|
|
271
|
+
paddingInlineEnd: spacingVars['--spacing-10'],
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
|
|
223
275
|
/**
|
|
224
276
|
* Block-only padding override styles.
|
|
225
277
|
* Use when a component needs to override block padding independently
|
|
@@ -30,7 +30,6 @@ export const docs = {
|
|
|
30
30
|
name: 'index',
|
|
31
31
|
type: 'number',
|
|
32
32
|
description: 'Current index in gallery mode (when media is an array).',
|
|
33
|
-
default: '0',
|
|
34
33
|
},
|
|
35
34
|
{
|
|
36
35
|
name: 'onIndexChange',
|
|
@@ -65,6 +64,15 @@ export const docs = {
|
|
|
65
64
|
{ guidance: false, description: 'Nest interactive content inside captions; keep them plain text.' },
|
|
66
65
|
],
|
|
67
66
|
},
|
|
67
|
+
playground: {
|
|
68
|
+
defaults: {
|
|
69
|
+
media: {
|
|
70
|
+
src: 'https://lookaside.facebook.com/assets/astryx/light-scene-horizontal-1.png',
|
|
71
|
+
alt: 'Coastal shoreline with ocean waves',
|
|
72
|
+
caption: 'A scenic coastline with waves rolling onto a sandy beach beneath a clear sky.',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
},
|
|
68
76
|
};
|
|
69
77
|
|
|
70
78
|
/** @type {import('../docs-types').ComponentDoc} */
|
|
@@ -94,7 +102,6 @@ export const docsZh = {
|
|
|
94
102
|
name: 'index',
|
|
95
103
|
type: 'number',
|
|
96
104
|
description: '画廊模式中当前索引。',
|
|
97
|
-
default: '0',
|
|
98
105
|
},
|
|
99
106
|
{
|
|
100
107
|
name: 'onIndexChange',
|
|
@@ -177,7 +177,7 @@ describe('Lightbox', () => {
|
|
|
177
177
|
expect(screen.getByLabelText('Next')).toBeInTheDocument();
|
|
178
178
|
});
|
|
179
179
|
|
|
180
|
-
it('
|
|
180
|
+
it('keeps prev mounted and disabled on first item', () => {
|
|
181
181
|
render(
|
|
182
182
|
<Lightbox
|
|
183
183
|
isOpen={true}
|
|
@@ -186,11 +186,16 @@ describe('Lightbox', () => {
|
|
|
186
186
|
index={0}
|
|
187
187
|
/>,
|
|
188
188
|
);
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
// The Prev button stays mounted at the range boundary (disabled) rather
|
|
190
|
+
// than unmounting, so navigating to the first item never removes the
|
|
191
|
+
// focused control and drops focus to <body>.
|
|
192
|
+
const prev = screen.getByLabelText('Previous');
|
|
193
|
+
expect(prev).toBeInTheDocument();
|
|
194
|
+
expect(prev).toBeDisabled();
|
|
195
|
+
expect(screen.getByLabelText('Next')).not.toBeDisabled();
|
|
191
196
|
});
|
|
192
197
|
|
|
193
|
-
it('
|
|
198
|
+
it('keeps next mounted and disabled on last item', () => {
|
|
194
199
|
render(
|
|
195
200
|
<Lightbox
|
|
196
201
|
isOpen={true}
|
|
@@ -199,8 +204,51 @@ describe('Lightbox', () => {
|
|
|
199
204
|
index={2}
|
|
200
205
|
/>,
|
|
201
206
|
);
|
|
207
|
+
const next = screen.getByLabelText('Next');
|
|
208
|
+
expect(next).toBeInTheDocument();
|
|
209
|
+
expect(next).toBeDisabled();
|
|
210
|
+
expect(screen.getByLabelText('Previous')).not.toBeDisabled();
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it('does not drop focus to <body> when navigating to the last item', () => {
|
|
214
|
+
const {rerender} = render(
|
|
215
|
+
<Lightbox
|
|
216
|
+
isOpen={true}
|
|
217
|
+
onOpenChange={() => {}}
|
|
218
|
+
media={media}
|
|
219
|
+
index={1}
|
|
220
|
+
/>,
|
|
221
|
+
);
|
|
222
|
+
// Simulate arriving at the final item (Next becomes disabled).
|
|
223
|
+
rerender(
|
|
224
|
+
<Lightbox
|
|
225
|
+
isOpen={true}
|
|
226
|
+
onOpenChange={() => {}}
|
|
227
|
+
media={media}
|
|
228
|
+
index={2}
|
|
229
|
+
/>,
|
|
230
|
+
);
|
|
231
|
+
// Both nav buttons remain in the DOM; the dialog stays available so
|
|
232
|
+
// keyboard gallery navigation isn't dead-ended.
|
|
202
233
|
expect(screen.getByLabelText('Previous')).toBeInTheDocument();
|
|
203
|
-
expect(screen.
|
|
234
|
+
expect(screen.getByLabelText('Next')).toBeInTheDocument();
|
|
235
|
+
const dialog = document.querySelector('dialog');
|
|
236
|
+
expect(dialog).toBeInTheDocument();
|
|
237
|
+
// Arrow handling is on the dialog, so navigation still works at the edge.
|
|
238
|
+
const onIndexChange = vi.fn();
|
|
239
|
+
rerender(
|
|
240
|
+
<Lightbox
|
|
241
|
+
isOpen={true}
|
|
242
|
+
onOpenChange={() => {}}
|
|
243
|
+
media={media}
|
|
244
|
+
index={2}
|
|
245
|
+
onIndexChange={onIndexChange}
|
|
246
|
+
/>,
|
|
247
|
+
);
|
|
248
|
+
if (dialog instanceof HTMLElement) {
|
|
249
|
+
fireEvent.keyDown(dialog, {key: 'ArrowLeft'});
|
|
250
|
+
}
|
|
251
|
+
expect(onIndexChange).toHaveBeenCalledWith(1);
|
|
204
252
|
});
|
|
205
253
|
|
|
206
254
|
it('calls onIndexChange when next is clicked', () => {
|
|
@@ -496,13 +496,16 @@ export function Lightbox({
|
|
|
496
496
|
/>
|
|
497
497
|
</div>
|
|
498
498
|
|
|
499
|
-
{/* Gallery nav: prev
|
|
500
|
-
|
|
499
|
+
{/* Gallery nav: prev — stays mounted and is disabled at the start of
|
|
500
|
+
the range so pressing/arrowing to the boundary doesn't unmount the
|
|
501
|
+
focused control and drop focus to <body>. */}
|
|
502
|
+
{isGallery && (
|
|
501
503
|
<div {...stylex.props(styles.navButton, styles.navPrev)}>
|
|
502
504
|
<IconButton
|
|
503
505
|
icon={<Icon icon="chevronLeft" size="sm" color="inherit" />}
|
|
504
506
|
label="Previous"
|
|
505
507
|
variant="ghost"
|
|
508
|
+
isDisabled={!canPrev}
|
|
506
509
|
onClick={goToPrev}
|
|
507
510
|
xstyle={styles.controlButton}
|
|
508
511
|
/>
|
|
@@ -549,13 +552,15 @@ export function Lightbox({
|
|
|
549
552
|
)}
|
|
550
553
|
</div>
|
|
551
554
|
|
|
552
|
-
{/* Gallery nav: next
|
|
553
|
-
|
|
555
|
+
{/* Gallery nav: next — see "prev" above; stays mounted and disabled at
|
|
556
|
+
the end of the range instead of unmounting. */}
|
|
557
|
+
{isGallery && (
|
|
554
558
|
<div {...stylex.props(styles.navButton, styles.navNext)}>
|
|
555
559
|
<IconButton
|
|
556
560
|
icon={<Icon icon="chevronRight" size="sm" color="inherit" />}
|
|
557
561
|
label="Next"
|
|
558
562
|
variant="ghost"
|
|
563
|
+
isDisabled={!canNext}
|
|
559
564
|
onClick={goToNext}
|
|
560
565
|
xstyle={styles.controlButton}
|
|
561
566
|
/>
|
package/src/Link/Link.doc.mjs
CHANGED
|
@@ -59,6 +59,13 @@ export const docs = {
|
|
|
59
59
|
'Opens in new tab with external icon and safe rel tokens',
|
|
60
60
|
default: 'false',
|
|
61
61
|
},
|
|
62
|
+
{
|
|
63
|
+
name: 'newTabLabel',
|
|
64
|
+
type: 'string',
|
|
65
|
+
description:
|
|
66
|
+
'Screen-reader text announcing that an external link opens in a new tab. Override for localization.',
|
|
67
|
+
default: "'(opens in new tab)'",
|
|
68
|
+
},
|
|
62
69
|
{
|
|
63
70
|
name: 'target',
|
|
64
71
|
type: 'string',
|
|
@@ -185,6 +192,12 @@ export const docsZh = {
|
|
|
185
192
|
description: '在新标签页中打开,带外部图标和安全 rel 标记',
|
|
186
193
|
default: 'false',
|
|
187
194
|
},
|
|
195
|
+
{
|
|
196
|
+
name: 'newTabLabel',
|
|
197
|
+
type: 'string',
|
|
198
|
+
description: '向屏幕阅读器announce外部链接将在新标签页打开的文本。可覆盖以本地化。',
|
|
199
|
+
default: "'(opens in new tab)'",
|
|
200
|
+
},
|
|
188
201
|
{
|
|
189
202
|
name: 'target',
|
|
190
203
|
type: 'string',
|
|
@@ -296,6 +309,7 @@ export const docsDense = {
|
|
|
296
309
|
hasUnderline: 'Always show underline',
|
|
297
310
|
isDisabled: 'Disables link',
|
|
298
311
|
isExternalLink: 'Opens new tab w/ external icon and safe rel tokens',
|
|
312
|
+
newTabLabel: 'SR text announcing an external link opens in a new tab',
|
|
299
313
|
target:
|
|
300
314
|
'Where to open linked document. target="_blank" auto-adds noopener noreferrer.',
|
|
301
315
|
rel: 'Link relationship tokens. noopener noreferrer are merged for target="_blank".',
|
package/src/Link/Link.test.tsx
CHANGED
|
@@ -99,8 +99,8 @@ describe('Link', () => {
|
|
|
99
99
|
|
|
100
100
|
it('renders with different color values', () => {
|
|
101
101
|
const {rerender} = render(
|
|
102
|
-
<Link href="/test" color="
|
|
103
|
-
|
|
102
|
+
<Link href="/test" color="accent">
|
|
103
|
+
Accent
|
|
104
104
|
</Link>,
|
|
105
105
|
);
|
|
106
106
|
expect(screen.getByRole('link')).toBeInTheDocument();
|
|
@@ -120,6 +120,24 @@ describe('Link', () => {
|
|
|
120
120
|
expect(screen.getByRole('link')).toBeInTheDocument();
|
|
121
121
|
});
|
|
122
122
|
|
|
123
|
+
it('defaults the inner text type to body', () => {
|
|
124
|
+
render(<Link href="/test">Body link</Link>);
|
|
125
|
+
expect(screen.getByText('Body link')).toHaveClass('astryx-text', 'body');
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
it('forwards type="inherit" so the link adopts the surrounding text type', () => {
|
|
129
|
+
render(
|
|
130
|
+
<Link href="/test" type="inherit">
|
|
131
|
+
Inline link
|
|
132
|
+
</Link>,
|
|
133
|
+
);
|
|
134
|
+
// The inner Text renders with the `inherit` type, so font-size/line-height
|
|
135
|
+
// inherit from the surrounding text rather than imposing the body type.
|
|
136
|
+
const text = screen.getByText('Inline link');
|
|
137
|
+
expect(text).toHaveClass('astryx-text', 'inherit');
|
|
138
|
+
expect(text).not.toHaveClass('body');
|
|
139
|
+
});
|
|
140
|
+
|
|
123
141
|
it('applies hasUnderline style when true', () => {
|
|
124
142
|
render(
|
|
125
143
|
<Link href="/test" hasUnderline>
|
|
@@ -152,6 +170,38 @@ describe('Link', () => {
|
|
|
152
170
|
expect(link.querySelector('svg')).toBeInTheDocument();
|
|
153
171
|
});
|
|
154
172
|
|
|
173
|
+
it('announces the new-tab context via screen-reader text (obs-4)', () => {
|
|
174
|
+
render(
|
|
175
|
+
<Link href="https://example.com" isExternalLink>
|
|
176
|
+
Docs
|
|
177
|
+
</Link>,
|
|
178
|
+
);
|
|
179
|
+
// The link's accessible name includes the new-tab hint (the icon is
|
|
180
|
+
// decorative).
|
|
181
|
+
expect(
|
|
182
|
+
screen.getByRole('link', {name: 'Docs (opens in new tab)'}),
|
|
183
|
+
).toBeInTheDocument();
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it('supports a custom newTabLabel for localization', () => {
|
|
187
|
+
render(
|
|
188
|
+
<Link
|
|
189
|
+
href="https://example.com"
|
|
190
|
+
isExternalLink
|
|
191
|
+
newTabLabel="(new window)">
|
|
192
|
+
Docs
|
|
193
|
+
</Link>,
|
|
194
|
+
);
|
|
195
|
+
expect(
|
|
196
|
+
screen.getByRole('link', {name: 'Docs (new window)'}),
|
|
197
|
+
).toBeInTheDocument();
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
it('does not add new-tab text to non-external links', () => {
|
|
201
|
+
render(<Link href="/internal">Internal</Link>);
|
|
202
|
+
expect(screen.getByRole('link', {name: 'Internal'})).toBeInTheDocument();
|
|
203
|
+
});
|
|
204
|
+
|
|
155
205
|
it('renders external link with existing rel merged', () => {
|
|
156
206
|
render(
|
|
157
207
|
<Link href="https://example.com" isExternalLink rel="sponsored">
|
package/src/Link/Link.tsx
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
import {Icon} from '../Icon';
|
|
31
31
|
import {Tooltip} from '../Tooltip';
|
|
32
32
|
import {Text} from '../Text';
|
|
33
|
+
import {VisuallyHidden} from '../VisuallyHidden';
|
|
33
34
|
import type {
|
|
34
35
|
TextType,
|
|
35
36
|
TextSize,
|
|
@@ -106,10 +107,20 @@ const styles = stylex.create({
|
|
|
106
107
|
*/
|
|
107
108
|
const linkColorStyles = stylex.create({
|
|
108
109
|
primary: {
|
|
109
|
-
color:
|
|
110
|
+
color: {
|
|
111
|
+
default: colorVars['--color-text-primary'],
|
|
112
|
+
':hover': {
|
|
113
|
+
'@media (hover: hover)': `color-mix(in srgb, ${colorVars['--color-text-primary']}, ${colorVars['--color-tint-hover']} 15%)`,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
110
116
|
},
|
|
111
117
|
secondary: {
|
|
112
|
-
color:
|
|
118
|
+
color: {
|
|
119
|
+
default: colorVars['--color-text-secondary'],
|
|
120
|
+
':hover': {
|
|
121
|
+
'@media (hover: hover)': `color-mix(in srgb, ${colorVars['--color-text-secondary']}, ${colorVars['--color-tint-hover']} 15%)`,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
113
124
|
},
|
|
114
125
|
disabled: {
|
|
115
126
|
color: colorVars['--color-text-disabled'],
|
|
@@ -117,8 +128,13 @@ const linkColorStyles = stylex.create({
|
|
|
117
128
|
placeholder: {
|
|
118
129
|
color: colorVars['--color-text-secondary'],
|
|
119
130
|
},
|
|
120
|
-
|
|
121
|
-
color:
|
|
131
|
+
accent: {
|
|
132
|
+
color: {
|
|
133
|
+
default: colorVars['--color-text-accent'],
|
|
134
|
+
':hover': {
|
|
135
|
+
'@media (hover: hover)': `color-mix(in srgb, ${colorVars['--color-text-accent']}, ${colorVars['--color-tint-hover']} 15%)`,
|
|
136
|
+
},
|
|
137
|
+
},
|
|
122
138
|
},
|
|
123
139
|
inherit: {
|
|
124
140
|
color: 'inherit',
|
|
@@ -167,6 +183,12 @@ export interface LinkProps extends BaseProps<
|
|
|
167
183
|
* @default false
|
|
168
184
|
*/
|
|
169
185
|
isExternalLink?: boolean;
|
|
186
|
+
/**
|
|
187
|
+
* Screen-reader text appended to an external link to announce that it opens
|
|
188
|
+
* in a new tab (the visual icon is decorative). Override for localization.
|
|
189
|
+
* @default '(opens in new tab)'
|
|
190
|
+
*/
|
|
191
|
+
newTabLabel?: string;
|
|
170
192
|
/**
|
|
171
193
|
* Where to open the linked document.
|
|
172
194
|
* Overridden to "_blank" when isExternalLink is true.
|
|
@@ -203,6 +225,10 @@ export interface LinkProps extends BaseProps<
|
|
|
203
225
|
isStandalone?: boolean;
|
|
204
226
|
/**
|
|
205
227
|
* Semantic text type for Text. Determines base typography.
|
|
228
|
+
*
|
|
229
|
+
* Use `type="inherit"` for inline links inside an existing `Text` element so
|
|
230
|
+
* the link adopts the surrounding text's size and line-height instead of
|
|
231
|
+
* imposing its own (e.g. a link within a `large` paragraph).
|
|
206
232
|
* @default 'body'
|
|
207
233
|
*/
|
|
208
234
|
type?: TextType;
|
|
@@ -216,7 +242,7 @@ export interface LinkProps extends BaseProps<
|
|
|
216
242
|
weight?: TextWeight;
|
|
217
243
|
/**
|
|
218
244
|
* Text color. Forwarded to Text.
|
|
219
|
-
* @default '
|
|
245
|
+
* @default 'accent'
|
|
220
246
|
*/
|
|
221
247
|
color?: TextColor;
|
|
222
248
|
/**
|
|
@@ -248,6 +274,11 @@ export interface LinkProps extends BaseProps<
|
|
|
248
274
|
* <Link href="/settings" color="secondary">Settings</Link>
|
|
249
275
|
* <Link href="/privacy" hasUnderline>Privacy Policy</Link>
|
|
250
276
|
* <Link label="Close dialog" href="/home"><Icon icon="x" /></Link>
|
|
277
|
+
*
|
|
278
|
+
* // Inline link inside text — inherits the surrounding type/size:
|
|
279
|
+
* <Text type="large">
|
|
280
|
+
* Read our <Link href="/terms" type="inherit">terms</Link> first.
|
|
281
|
+
* </Text>
|
|
251
282
|
* ```
|
|
252
283
|
*/
|
|
253
284
|
export function Link({
|
|
@@ -257,6 +288,7 @@ export function Link({
|
|
|
257
288
|
hasUnderline = false,
|
|
258
289
|
isDisabled = false,
|
|
259
290
|
isExternalLink = false,
|
|
291
|
+
newTabLabel = '(opens in new tab)',
|
|
260
292
|
target: targetFromProps,
|
|
261
293
|
onClick,
|
|
262
294
|
tooltip,
|
|
@@ -264,7 +296,7 @@ export function Link({
|
|
|
264
296
|
type = 'body',
|
|
265
297
|
size,
|
|
266
298
|
weight,
|
|
267
|
-
color = '
|
|
299
|
+
color = 'accent',
|
|
268
300
|
display = 'inline',
|
|
269
301
|
maxLines = 0,
|
|
270
302
|
children,
|
|
@@ -300,7 +332,10 @@ export function Link({
|
|
|
300
332
|
{children}
|
|
301
333
|
</Text>
|
|
302
334
|
{isExternalLink && !renderAsButton && (
|
|
303
|
-
|
|
335
|
+
<>
|
|
336
|
+
<Icon icon="externalLink" size="xsm" color="inherit" />
|
|
337
|
+
<VisuallyHidden>{newTabLabel}</VisuallyHidden>
|
|
338
|
+
</>
|
|
304
339
|
)}
|
|
305
340
|
</>
|
|
306
341
|
);
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* - /packages/core/src/Link/index.ts
|
|
24
24
|
* - /packages/core/src/Link/Link.doc.mjs
|
|
25
25
|
* - /packages/cli/templates/blocks/components/Link/ (showcase blocks)
|
|
26
|
+
* - /packages/cli/templates/blocks/components/LinkProvider/ (example blocks)
|
|
26
27
|
*/
|
|
27
28
|
|
|
28
29
|
import {useMemo, type ReactNode} from 'react';
|
package/src/List/List.doc.mjs
CHANGED
|
@@ -61,6 +61,13 @@ export const docs = {
|
|
|
61
61
|
description: "List marker style. 'decimal' renders an <ol> element instead of <ul>.",
|
|
62
62
|
default: "'none'",
|
|
63
63
|
},
|
|
64
|
+
{
|
|
65
|
+
name: 'start',
|
|
66
|
+
type: 'number',
|
|
67
|
+
description:
|
|
68
|
+
"Starting number for ordered lists (listStyle='decimal'). Sets the CSS counter to begin at this value.",
|
|
69
|
+
default: '1',
|
|
70
|
+
},
|
|
64
71
|
{
|
|
65
72
|
name: 'xstyle',
|
|
66
73
|
type: 'StyleXStyles',
|
|
@@ -75,6 +75,7 @@ export const docs = {
|
|
|
75
75
|
type: 'number | string',
|
|
76
76
|
description:
|
|
77
77
|
'Max width for prose content (paragraphs, headings, lists, blockquotes). Tables and code blocks are unconstrained and can expand to the full container width. Use for readable line lengths in wide layouts.',
|
|
78
|
+
default: '680',
|
|
78
79
|
},
|
|
79
80
|
{
|
|
80
81
|
name: 'contentAlign',
|
|
@@ -245,6 +246,7 @@ export const docsZh = {
|
|
|
245
246
|
type: 'number | string',
|
|
246
247
|
description:
|
|
247
248
|
'正文内容的最大宽度(段落、标题、列表、引用块)。表格和代码块不受限制,可扩展到完整容器宽度。用于在宽布局中保持可读行长。',
|
|
249
|
+
default: '680',
|
|
248
250
|
},
|
|
249
251
|
{
|
|
250
252
|
name: 'contentAlign',
|