@astryxdesign/core 0.1.2 → 0.1.3-canary.6d57c8d
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 +165 -0
- package/README.md +12 -12
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +11 -5
- 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.map +1 -1
- package/dist/Button/Button.js +2 -4
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +0 -1
- 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/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +0 -1
- 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 +8 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/Chat/useTriggerMenu.js +15 -3
- 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/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +0 -1
- package/dist/Citation/Citation.d.ts.map +1 -1
- package/dist/Citation/Citation.js +9 -5
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +51 -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 +167 -99
- 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/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 +32 -6
- package/dist/InputGroup/InputGroup.d.ts +4 -3
- package/dist/InputGroup/InputGroup.d.ts.map +1 -1
- package/dist/InputGroup/InputGroup.js +16 -6
- 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/groupStyles.d.ts +1 -1
- package/dist/InputGroup/groupStyles.d.ts.map +1 -1
- package/dist/InputGroup/groupStyles.js +3 -3
- 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 +33 -1
- 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 +10 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +64 -9
- 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 +16 -1
- package/dist/Link/Link.d.ts.map +1 -1
- package/dist/Link/Link.js +18 -7
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +7 -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 +27 -2
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +141 -42
- 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 +15 -1
- package/dist/Popover/Popover.d.ts +18 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -2
- package/dist/Popover/usePopover.d.ts +38 -3
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +24 -9
- 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 +24 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +122 -43
- 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/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +2 -0
- 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 +36 -9
- 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 +87 -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 +11 -8
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +10 -1
- 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/index.d.ts +2 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +2 -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/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 +66 -0
- package/dist/Table/types.d.ts.map +1 -1
- 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 +147 -76
- 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 +131 -3
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +26 -4
- 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 +56 -9
- package/dist/TopNav/TopNavHeading.d.ts +7 -1
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +8 -0
- 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 +13 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +69 -6
- package/dist/Typeahead/Typeahead.d.ts +26 -3
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +65 -29
- 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 +18 -0
- package/dist/astryx.umd.js +55 -55
- package/dist/astryx.umd.js.map +4 -4
- 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/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/docs.mjs +2 -2
- package/package.json +12 -8
- package/src/Avatar/Avatar.test.tsx +37 -0
- package/src/Avatar/Avatar.tsx +10 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +25 -7
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +31 -10
- package/src/Button/Button.tsx +3 -16
- package/src/ButtonGroup/ButtonGroup.test.tsx +9 -9
- package/src/ButtonGroup/ButtonGroup.tsx +0 -1
- 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/ChatComposerInput.test.tsx +26 -7
- package/src/Chat/ChatComposerInput.tsx +0 -1
- package/src/Chat/ChatDictationButton.doc.mjs +1 -1
- 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 +22 -4
- package/src/CheckboxInput/CheckboxInput.doc.mjs +10 -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 +192 -26
- package/src/CheckboxList/CheckboxList.tsx +56 -3
- package/src/CheckboxList/CheckboxListContext.tsx +7 -0
- package/src/CheckboxList/CheckboxListItem.tsx +0 -3
- package/src/Citation/Citation.doc.mjs +10 -0
- package/src/Citation/Citation.test.tsx +121 -0
- package/src/Citation/Citation.tsx +15 -3
- package/src/CodeBlock/CodeBlock.test.tsx +115 -0
- package/src/CodeBlock/CodeBlock.tsx +63 -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 +286 -56
- package/src/DateInput/DateInput.test.tsx +248 -2
- package/src/DateInput/DateInput.tsx +196 -100
- 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/Field/Field.doc.mjs +59 -18
- 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 +17 -4
- package/src/Grid/Grid.test.tsx +43 -30
- package/src/Grid/Grid.tsx +38 -3
- package/src/Icon/Icon.doc.mjs +3 -3
- package/src/InputGroup/InputGroup.doc.mjs +111 -23
- package/src/InputGroup/InputGroup.test.tsx +257 -60
- package/src/InputGroup/InputGroup.tsx +23 -5
- package/src/InputGroup/InputGroupContext.ts +9 -4
- package/src/InputGroup/groupStyles.ts +7 -1
- package/src/InputGroup/index.ts +1 -0
- package/src/Kbd/Kbd.test.tsx +22 -4
- package/src/Kbd/Kbd.tsx +35 -3
- package/src/Layer/layerAnimations.stylex.ts +20 -4
- package/src/Layer/useLayer.doc.mjs +5 -0
- package/src/Layer/useLayer.test.tsx +111 -0
- package/src/Layer/useLayer.tsx +90 -9
- 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 -0
- 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 +50 -0
- package/src/Link/Link.tsx +39 -4
- package/src/Markdown/Markdown.test.tsx +11 -0
- package/src/Markdown/Markdown.tsx +7 -0
- package/src/MetadataList/MetadataListItem.doc.mjs +4 -0
- package/src/MoreMenu/MoreMenu.doc.mjs +2 -17
- package/src/MoreMenu/MoreMenu.tsx +0 -9
- package/src/MultiSelector/MultiSelector.doc.mjs +30 -0
- package/src/MultiSelector/MultiSelector.test.tsx +375 -8
- package/src/MultiSelector/MultiSelector.tsx +194 -48
- 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/Pagination/Pagination.doc.mjs +3 -3
- package/src/Pagination/Pagination.test.tsx +117 -5
- package/src/Pagination/Pagination.tsx +21 -1
- package/src/Popover/Popover.doc.mjs +26 -0
- package/src/Popover/Popover.test.tsx +121 -0
- package/src/Popover/Popover.tsx +23 -2
- package/src/Popover/usePopover.doc.mjs +9 -3
- package/src/Popover/usePopover.tsx +70 -12
- 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 +34 -26
- 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/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 +1 -1
- package/src/Selector/Selector.doc.mjs +26 -0
- package/src/Selector/Selector.test.tsx +387 -15
- package/src/Selector/Selector.tsx +175 -67
- package/src/Selector/hooks.ts +23 -0
- package/src/SideNav/SideNav.test.tsx +48 -0
- package/src/SideNav/SideNavHeading.tsx +8 -2
- package/src/SideNav/SideNavItem.tsx +2 -4
- package/src/Skeleton/Skeleton.test.tsx +25 -0
- package/src/Skeleton/Skeleton.tsx +11 -1
- package/src/Slider/Slider.doc.mjs +15 -0
- package/src/Slider/Slider.test.tsx +155 -2
- package/src/Slider/Slider.tsx +53 -5
- 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 +6 -0
- package/src/TabList/TabList.test.tsx +251 -0
- package/src/TabList/TabList.tsx +103 -12
- package/src/TabList/TabListContext.ts +7 -3
- package/src/TabList/TabMenu.tsx +6 -3
- package/src/Table/BaseTable.tsx +21 -17
- package/src/Table/Table.doc.mjs +2 -0
- package/src/Table/Table.test.tsx +10 -0
- package/src/Table/Table.tsx +8 -0
- package/src/Table/TableCell.tsx +25 -23
- package/src/Table/TableHeaderCell.tsx +28 -29
- package/src/Table/index.ts +3 -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/tableContextMenu.test.tsx +157 -0
- package/src/Table/tableContextMenu.tsx +142 -0
- package/src/Table/types.ts +74 -0
- package/src/Table/useTableColumnResize.doc.mjs +3 -3
- package/src/Table/useTableStickyColumns.doc.mjs +2 -2
- package/src/Text/Text.doc.mjs +18 -18
- 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/Thumbnail/Thumbnail.doc.mjs +4 -4
- package/src/TimeInput/TimeInput.doc.mjs +340 -60
- package/src/TimeInput/TimeInput.test.tsx +255 -7
- package/src/TimeInput/TimeInput.tsx +176 -70
- package/src/Timestamp/Timestamp.doc.mjs +19 -19
- package/src/Toast/Toast.tsx +14 -0
- package/src/Toast/ToastViewport.test.tsx +214 -0
- package/src/Toast/ToastViewport.tsx +167 -21
- package/src/Tokenizer/Tokenizer.doc.mjs +29 -14
- package/src/Tokenizer/Tokenizer.test.tsx +105 -1
- package/src/Tokenizer/Tokenizer.tsx +37 -1
- package/src/Toolbar/Toolbar.test.tsx +109 -6
- package/src/Toolbar/Toolbar.tsx +59 -5
- package/src/Tooltip/Tooltip.test.tsx +68 -0
- package/src/Tooltip/useTooltip.tsx +55 -8
- package/src/TopNav/TopNav.test.tsx +50 -0
- package/src/TopNav/TopNavHeading.tsx +17 -1
- 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 +93 -9
- package/src/Typeahead/Typeahead.doc.mjs +141 -30
- package/src/Typeahead/Typeahead.test.tsx +331 -1
- package/src/Typeahead/Typeahead.tsx +105 -33
- 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/docs-script.test.mjs +50 -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/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 +10 -5
- 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
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Typeahead.tsx
|
|
7
|
-
* @input Uses React, BaseTypeahead, Field, Token
|
|
7
|
+
* @input Uses React, BaseTypeahead, Field, Token, InputGroupContext
|
|
8
8
|
* @output Exports Typeahead styled typeahead component
|
|
9
|
-
* @position Styled wrapper; composes BaseTypeahead with Field
|
|
9
|
+
* @position Styled wrapper; composes BaseTypeahead with Field or InputGroup
|
|
10
10
|
*
|
|
11
11
|
* Owns the input wrapper (border, padding, status styles), selected value
|
|
12
12
|
* token with spacing compensation, and edit mode behavior. Delegates
|
|
@@ -23,12 +23,16 @@ import { BaseTypeahead } from "./BaseTypeahead.js";
|
|
|
23
23
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
24
24
|
import { Field, InputClearButton, inputWrapperStyles, inputStatusBorderStyles, inputStatusHoverShadowStyles, inputStatusFocusWithinStyles } from "../Field/index.js";
|
|
25
25
|
import { Token } from "../Token/index.js";
|
|
26
|
+
import { useTooltip } from "../Tooltip/index.js";
|
|
26
27
|
import { renderIconSlot } from "../Icon/index.js";
|
|
28
|
+
import { VisuallyHidden } from "../VisuallyHidden/index.js";
|
|
27
29
|
import "../theme/tokens.stylex.js";
|
|
28
30
|
import { spacingVars, sizeVars } from "../theme/tokens.stylex.js";
|
|
29
|
-
import {
|
|
31
|
+
import { groupStyles } from "../InputGroup/groupStyles.js";
|
|
32
|
+
import { useInputGroup } from "../InputGroup/InputGroupContext.js";
|
|
33
|
+
import { getInputARIA, mergeProps, mergeRefs } from "../utils/index.js";
|
|
30
34
|
import { themeProps } from "../utils/themeProps.js";
|
|
31
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
35
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
32
36
|
// =============================================================================
|
|
33
37
|
// Styles
|
|
34
38
|
// =============================================================================
|
|
@@ -127,6 +131,7 @@ export function Typeahead({
|
|
|
127
131
|
maxMenuItems,
|
|
128
132
|
emptySearchResultsText,
|
|
129
133
|
isDisabled = false,
|
|
134
|
+
disabledMessage,
|
|
130
135
|
hasClear = true,
|
|
131
136
|
hasAutoFocus,
|
|
132
137
|
size: sizeProp,
|
|
@@ -141,12 +146,29 @@ export function Typeahead({
|
|
|
141
146
|
}) {
|
|
142
147
|
const size = useSize(sizeProp, 'md');
|
|
143
148
|
const inputId = useId();
|
|
149
|
+
const inputLabelId = useId();
|
|
144
150
|
const descriptionId = useId();
|
|
145
151
|
const statusMessageId = useId();
|
|
152
|
+
const inputGroup = useInputGroup();
|
|
146
153
|
const wrapperRef = useRef(null);
|
|
147
154
|
const inputRef = useRef(null);
|
|
148
155
|
const tokenRef = useRef(null);
|
|
149
156
|
|
|
157
|
+
// Disabled-reason tooltip. Disabled controls swallow pointer events, so the
|
|
158
|
+
// tooltip listeners attach to the input wrapper (which already exists) and
|
|
159
|
+
// the input stays perceivable via aria-disabled + readOnly instead of the
|
|
160
|
+
// disabled attribute. Editing and selection stay blocked by the isDisabled
|
|
161
|
+
// guards (handleWrapperClick, handleEnterEditMode, and BaseTypeahead's own
|
|
162
|
+
// focus/change guards).
|
|
163
|
+
const showsDisabledMessage = isDisabled && !!disabledMessage;
|
|
164
|
+
const disabledMessageTooltip = useTooltip({
|
|
165
|
+
placement: 'above',
|
|
166
|
+
// The wrapper div is not naturally focusable; focusin bubbles up from the
|
|
167
|
+
// input, so always attach focus listeners.
|
|
168
|
+
focusTrigger: 'always',
|
|
169
|
+
isEnabled: showsDisabledMessage
|
|
170
|
+
});
|
|
171
|
+
|
|
150
172
|
// Edit mode: when the user clicks the token to edit the selected value
|
|
151
173
|
const [isEditing, setIsEditing] = useState(false);
|
|
152
174
|
const [editingValue, setEditingValue] = useState(null);
|
|
@@ -240,40 +262,27 @@ export function Typeahead({
|
|
|
240
262
|
inputRef.current?.focus();
|
|
241
263
|
}
|
|
242
264
|
}, [isDisabled, showToken, handleEnterEditMode]);
|
|
243
|
-
const
|
|
265
|
+
const {
|
|
266
|
+
ariaLabelledBy,
|
|
267
|
+
ariaDescribedBy
|
|
268
|
+
} = getInputARIA(inputLabelId, [description ? descriptionId : null, status?.message ? statusMessageId : null, showsDisabledMessage ? disabledMessageTooltip.describedBy : null], inputGroup);
|
|
244
269
|
const sizeStyle = wrapperSizeStyles[size];
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
isLabelHidden: isLabelHidden,
|
|
249
|
-
description: description,
|
|
250
|
-
inputID: inputId,
|
|
251
|
-
descriptionID: description ? descriptionId : undefined,
|
|
252
|
-
isOptional: isOptional,
|
|
253
|
-
isRequired: isRequired,
|
|
254
|
-
isDisabled: isDisabled,
|
|
255
|
-
status: status ? {
|
|
256
|
-
type: status.type,
|
|
257
|
-
message: status.message,
|
|
258
|
-
messageID: status.message ? statusMessageId : undefined
|
|
259
|
-
} : undefined,
|
|
260
|
-
labelTooltip: labelTooltip,
|
|
261
|
-
width: width,
|
|
262
|
-
xstyle: xstyle,
|
|
263
|
-
className: className,
|
|
264
|
-
style: style,
|
|
265
|
-
children: /*#__PURE__*/_jsxs("div", {
|
|
266
|
-
ref: wrapperRef,
|
|
270
|
+
const typeaheadContent = /*#__PURE__*/_jsxs(_Fragment, {
|
|
271
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
272
|
+
ref: mergeRefs(wrapperRef, disabledMessageTooltip.ref, inputGroup ? ref : undefined),
|
|
267
273
|
"data-testid": testId,
|
|
268
274
|
onClick: handleWrapperClick,
|
|
269
275
|
onBlur: handleBlur,
|
|
270
276
|
...mergeProps(themeProps('typeahead', {
|
|
271
277
|
size,
|
|
272
278
|
status: status?.type
|
|
273
|
-
}), stylex.props(inputWrapperStyles.base, styles.wrapper, sizeStyle, status && inputStatusBorderStyles[status.type], status && inputStatusHoverShadowStyles[status.type], status && inputStatusFocusWithinStyles[status.type], isDisabled && inputWrapperStyles.disabled)),
|
|
279
|
+
}), stylex.props(inputWrapperStyles.base, styles.wrapper, sizeStyle, status && inputStatusBorderStyles[status.type], status && inputStatusHoverShadowStyles[status.type], status && inputStatusFocusWithinStyles[status.type], isDisabled && inputWrapperStyles.disabled, inputGroup && groupStyles.inGroup, inputGroup && xstyle), inputGroup ? className : undefined, inputGroup ? style : undefined),
|
|
274
280
|
children: [startIcon && renderIconSlot(startIcon, {
|
|
275
281
|
size: 'sm',
|
|
276
282
|
color: 'secondary'
|
|
283
|
+
}), inputGroup && /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
284
|
+
id: inputLabelId,
|
|
285
|
+
children: label
|
|
277
286
|
}), showToken && /*#__PURE__*/_jsx(Token, {
|
|
278
287
|
ref: tokenRef,
|
|
279
288
|
label: value.label,
|
|
@@ -293,8 +302,10 @@ export function Typeahead({
|
|
|
293
302
|
emptySearchResultsText: emptySearchResultsText,
|
|
294
303
|
isDisabled: isDisabled,
|
|
295
304
|
hasAutoFocus: hasAutoFocus,
|
|
305
|
+
isFocusableDisabled: showsDisabledMessage,
|
|
296
306
|
inputId: inputId,
|
|
297
307
|
ariaDescribedBy: ariaDescribedBy,
|
|
308
|
+
ariaLabelledBy: ariaLabelledBy,
|
|
298
309
|
onChangeQuery: onChangeQuery,
|
|
299
310
|
onOpenChange: onOpenChange,
|
|
300
311
|
debounceMs: debounceMs,
|
|
@@ -310,7 +321,32 @@ export function Typeahead({
|
|
|
310
321
|
},
|
|
311
322
|
xstyle: [styles.clearButton, size === 'sm' && styles.clearButtonSm]
|
|
312
323
|
})]
|
|
313
|
-
})
|
|
324
|
+
}), showsDisabledMessage && disabledMessageTooltip.renderTooltip(disabledMessage)]
|
|
325
|
+
});
|
|
326
|
+
if (inputGroup) {
|
|
327
|
+
return typeaheadContent;
|
|
328
|
+
}
|
|
329
|
+
return /*#__PURE__*/_jsx(Field, {
|
|
330
|
+
ref: ref,
|
|
331
|
+
label: label,
|
|
332
|
+
isLabelHidden: isLabelHidden,
|
|
333
|
+
description: description,
|
|
334
|
+
inputID: inputId,
|
|
335
|
+
descriptionID: description ? descriptionId : undefined,
|
|
336
|
+
isOptional: isOptional,
|
|
337
|
+
isRequired: isRequired,
|
|
338
|
+
isDisabled: isDisabled,
|
|
339
|
+
status: status ? {
|
|
340
|
+
type: status.type,
|
|
341
|
+
message: status.message,
|
|
342
|
+
messageID: status.message ? statusMessageId : undefined
|
|
343
|
+
} : undefined,
|
|
344
|
+
labelTooltip: labelTooltip,
|
|
345
|
+
width: width,
|
|
346
|
+
xstyle: xstyle,
|
|
347
|
+
className: className,
|
|
348
|
+
style: style,
|
|
349
|
+
children: typeaheadContent
|
|
314
350
|
});
|
|
315
351
|
}
|
|
316
352
|
Typeahead.displayName = 'Typeahead';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file VisuallyHidden.tsx
|
|
3
|
+
* @input Uses React createElement/ElementType, stylex
|
|
4
|
+
* @output Exports VisuallyHidden component and VisuallyHiddenProps
|
|
5
|
+
* @position Accessibility primitive; renders content in the a11y tree while
|
|
6
|
+
* hiding it visually (icon-only labels, aria-live regions, SR-only context)
|
|
7
|
+
*
|
|
8
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
9
|
+
* - /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
|
|
10
|
+
* - /packages/core/src/VisuallyHidden/VisuallyHidden.test.tsx
|
|
11
|
+
* - /apps/storybook/stories/VisuallyHidden.stories.tsx
|
|
12
|
+
*/
|
|
13
|
+
import { type ElementType, type ReactNode } from 'react';
|
|
14
|
+
import type { BaseProps } from '../BaseProps';
|
|
15
|
+
/**
|
|
16
|
+
* VisuallyHidden is deliberately styling-free: it exists to *not* be seen, so it
|
|
17
|
+
* intentionally omits `xstyle`/`className`/`style`. The clip block is fixed and
|
|
18
|
+
* non-overridable — styling a visually-hidden node is always a mistake. The
|
|
19
|
+
* accessibility pass-throughs from `BaseProps` (`aria-*`, `role`, `id`,
|
|
20
|
+
* `data-*`, event handlers) remain, since the live-region use case needs them.
|
|
21
|
+
*/
|
|
22
|
+
export interface VisuallyHiddenProps extends Omit<BaseProps<HTMLElement>, 'className' | 'style'> {
|
|
23
|
+
/** Ref forwarded to the rendered element. */
|
|
24
|
+
ref?: React.Ref<HTMLElement>;
|
|
25
|
+
/** Content to expose to assistive technology while hidden from sight. */
|
|
26
|
+
children: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* HTML tag to render as. Defaults to `'span'` (inline) for the common
|
|
29
|
+
* icon-label case; pass a block element such as `'div'` when wrapping block
|
|
30
|
+
* content or hosting an `aria-live` region. This is a structural choice, not
|
|
31
|
+
* a visual one.
|
|
32
|
+
*
|
|
33
|
+
* @default 'span'
|
|
34
|
+
*/
|
|
35
|
+
as?: ElementType;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Renders its children in the accessibility tree while hiding them visually.
|
|
39
|
+
*
|
|
40
|
+
* Use for content that assistive technology must perceive but sighted users
|
|
41
|
+
* should not see: accessible names for icon-only controls, `aria-live`
|
|
42
|
+
* announcement regions, and supplementary screen-reader context.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```
|
|
46
|
+
* // Accessible name for an icon-only button
|
|
47
|
+
* <IconButton icon="trash" label="">
|
|
48
|
+
* <VisuallyHidden>Delete incident</VisuallyHidden>
|
|
49
|
+
* </IconButton>
|
|
50
|
+
*
|
|
51
|
+
* // Live region for announcements
|
|
52
|
+
* <VisuallyHidden as="div" aria-live="polite">
|
|
53
|
+
* {`Moved ${task} to ${column}`}
|
|
54
|
+
* </VisuallyHidden>
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function VisuallyHidden({ children, as: element, ref, ...props }: VisuallyHiddenProps): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
58
|
+
export declare namespace VisuallyHidden {
|
|
59
|
+
var displayName: string;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=VisuallyHidden.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VisuallyHidden.d.ts","sourceRoot":"","sources":["../../src/VisuallyHidden/VisuallyHidden.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAgB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAW,MAAM,OAAO,CAAC;AAChF,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAC/C,SAAS,CAAC,WAAW,CAAC,EACtB,WAAW,GAAG,OAAO,CACtB;IACC,6CAA6C;IAC7C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7B,yEAAyE;IACzE,QAAQ,EAAE,SAAS,CAAC;IAEpB;;;;;;;OAOG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;CAClB;AAyBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,EAAE,EAAE,OAAgB,EACpB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,mBAAmB,0FAarB;yBAlBe,cAAc"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file VisuallyHidden.tsx
|
|
7
|
+
* @input Uses React createElement/ElementType, stylex
|
|
8
|
+
* @output Exports VisuallyHidden component and VisuallyHiddenProps
|
|
9
|
+
* @position Accessibility primitive; renders content in the a11y tree while
|
|
10
|
+
* hiding it visually (icon-only labels, aria-live regions, SR-only context)
|
|
11
|
+
*
|
|
12
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
13
|
+
* - /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
|
|
14
|
+
* - /packages/core/src/VisuallyHidden/VisuallyHidden.test.tsx
|
|
15
|
+
* - /apps/storybook/stories/VisuallyHidden.stories.tsx
|
|
16
|
+
*/
|
|
17
|
+
import { createElement } from 'react';
|
|
18
|
+
import * as stylex from '@stylexjs/stylex';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* VisuallyHidden is deliberately styling-free: it exists to *not* be seen, so it
|
|
22
|
+
* intentionally omits `xstyle`/`className`/`style`. The clip block is fixed and
|
|
23
|
+
* non-overridable — styling a visually-hidden node is always a mistake. The
|
|
24
|
+
* accessibility pass-throughs from `BaseProps` (`aria-*`, `role`, `id`,
|
|
25
|
+
* `data-*`, event handlers) remain, since the live-region use case needs them.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Renders its children in the accessibility tree while hiding them visually.
|
|
30
|
+
*
|
|
31
|
+
* Use for content that assistive technology must perceive but sighted users
|
|
32
|
+
* should not see: accessible names for icon-only controls, `aria-live`
|
|
33
|
+
* announcement regions, and supplementary screen-reader context.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```
|
|
37
|
+
* // Accessible name for an icon-only button
|
|
38
|
+
* <IconButton icon="trash" label="">
|
|
39
|
+
* <VisuallyHidden>Delete incident</VisuallyHidden>
|
|
40
|
+
* </IconButton>
|
|
41
|
+
*
|
|
42
|
+
* // Live region for announcements
|
|
43
|
+
* <VisuallyHidden as="div" aria-live="polite">
|
|
44
|
+
* {`Moved ${task} to ${column}`}
|
|
45
|
+
* </VisuallyHidden>
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export function VisuallyHidden({
|
|
49
|
+
children,
|
|
50
|
+
as: element = 'span',
|
|
51
|
+
ref,
|
|
52
|
+
...props
|
|
53
|
+
}) {
|
|
54
|
+
return /*#__PURE__*/createElement(element, {
|
|
55
|
+
ref: ref,
|
|
56
|
+
// Spread consumer props (aria-*, role, id, data-*, handlers) first, then
|
|
57
|
+
// the fixed clip styles, so the visually-hidden class can never be
|
|
58
|
+
// displaced. There is no consumer className/style to merge — by design.
|
|
59
|
+
...props,
|
|
60
|
+
...{
|
|
61
|
+
className: "x10l6tqk x1i1rx1s xjm9jq1 xkdpibf x1717udv xb3r6kr xzpqnlu xuxw1ft xng3xce x13vifvy x1o0tod x47corl x87ps6o"
|
|
62
|
+
}
|
|
63
|
+
}, children);
|
|
64
|
+
}
|
|
65
|
+
VisuallyHidden.displayName = 'VisuallyHidden';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file index.ts
|
|
3
|
+
* @input Imports from VisuallyHidden.tsx
|
|
4
|
+
* @output Exports VisuallyHidden component and props type
|
|
5
|
+
* @position Package entry point for VisuallyHidden
|
|
6
|
+
*
|
|
7
|
+
* SYNC: When modified, update /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
|
|
8
|
+
*/
|
|
9
|
+
export { VisuallyHidden } from './VisuallyHidden';
|
|
10
|
+
export type { VisuallyHiddenProps } from './VisuallyHidden';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/VisuallyHidden/index.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAC,mBAAmB,EAAC,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file index.ts
|
|
7
|
+
* @input Imports from VisuallyHidden.tsx
|
|
8
|
+
* @output Exports VisuallyHidden component and props type
|
|
9
|
+
* @position Package entry point for VisuallyHidden
|
|
10
|
+
*
|
|
11
|
+
* SYNC: When modified, update /packages/core/src/VisuallyHidden/VisuallyHidden.doc.mjs
|
|
12
|
+
*/
|
|
13
|
+
export { VisuallyHidden } from "./VisuallyHidden.js";
|
package/dist/astryx.css
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
@property --x-counterReset { syntax: "*"; inherits: false;}
|
|
15
15
|
@property --x-fontSize { syntax: "*"; inherits: false;}
|
|
16
16
|
@property --x-gap { syntax: "*"; inherits: false;}
|
|
17
|
+
@property --x-gridAutoRows { syntax: "*"; inherits: false;}
|
|
18
|
+
@property --x-gridTemplateColumns { syntax: "*"; inherits: false;}
|
|
17
19
|
@property --x-height { syntax: "*"; inherits: false;}
|
|
18
20
|
@property --x-left { syntax: "*"; inherits: false;}
|
|
19
21
|
@property --x-marginInline { syntax: "*"; inherits: false;}
|
|
@@ -253,6 +255,7 @@
|
|
|
253
255
|
@media (hover: hover){.x1pkcbo2.x1pkcbo2:hover{--table-row-overlay:var(--color-overlay-hover)}}
|
|
254
256
|
.xln7xf2:not(#\#){font:inherit}
|
|
255
257
|
.x10a8y8t:not(#\#){inset:0}
|
|
258
|
+
.x1anvkwx:not(#\#){inset:auto}
|
|
256
259
|
.xh3736h:not(#\#){inset:unset}
|
|
257
260
|
.xkdpibf:not(#\#){margin:-1px}
|
|
258
261
|
.x1ghz6dp:not(#\#){margin:0}
|
|
@@ -410,6 +413,7 @@
|
|
|
410
413
|
.xq2gx43:not(#\#):not(#\#){transition:none}
|
|
411
414
|
.x1ey1afo:not(#\#):not(#\#){transition:opacity var(--duration-fast)}
|
|
412
415
|
.x1ob6yzd:not(#\#):not(#\#){transition:transform var(--duration-fast) var(--ease-standard)}
|
|
416
|
+
.xr21g96.xr21g96:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#){outline:2px solid var(--color-accent)}
|
|
413
417
|
.x6q1khz:focus-within:not(#\#):not(#\#){border-color:var(--color-accent)}
|
|
414
418
|
.xk2sxw7:focus-within:not(#\#):not(#\#){border-color:var(--color-error)}
|
|
415
419
|
.xyq33ac:focus-within:not(#\#):not(#\#){border-color:var(--color-success)}
|
|
@@ -442,6 +446,7 @@
|
|
|
442
446
|
.x1bv1mxo:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 36px)}
|
|
443
447
|
.xo9xo30:not(#\#):not(#\#):not(#\#){-webkit-mask-image:linear-gradient(to bottom,transparent,black 48px)}
|
|
444
448
|
.x5lxg6s:not(#\#):not(#\#):not(#\#){-webkit-overflow-scrolling:touch}
|
|
449
|
+
.xpdipgo:not(#\#):not(#\#):not(#\#){-webkit-touch-callout:none}
|
|
445
450
|
.x1pha0wt:not(#\#):not(#\#):not(#\#){align-items:baseline}
|
|
446
451
|
.x6s0dn4:not(#\#):not(#\#):not(#\#){align-items:center}
|
|
447
452
|
.xpqajaz:not(#\#):not(#\#):not(#\#){align-items:end}
|
|
@@ -737,6 +742,7 @@
|
|
|
737
742
|
.xv8on6e:not(#\#):not(#\#):not(#\#){font-weight:var(--text-supporting-weight)}
|
|
738
743
|
.xu6a5m6:not(#\#):not(#\#):not(#\#){grid-auto-columns:1fr}
|
|
739
744
|
.x1mt1orb:not(#\#):not(#\#):not(#\#){grid-auto-flow:column}
|
|
745
|
+
.xhij9v2:not(#\#):not(#\#):not(#\#){grid-auto-rows:var(--x-gridAutoRows)}
|
|
740
746
|
.xcrlgei:not(#\#):not(#\#):not(#\#){grid-column-start:1}
|
|
741
747
|
.x1agbcgv:not(#\#):not(#\#):not(#\#){grid-row-start:1}
|
|
742
748
|
.x134kloy:not(#\#):not(#\#):not(#\#){grid-template-columns:1fr auto 1fr}
|
|
@@ -745,6 +751,7 @@
|
|
|
745
751
|
.x1wthsqz:not(#\#):not(#\#):not(#\#){grid-template-columns:auto repeat(7,1fr)}
|
|
746
752
|
.x1mzazjb:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(7,1fr)}
|
|
747
753
|
.x189bvgu:not(#\#):not(#\#):not(#\#){grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
|
|
754
|
+
.xqketvx:not(#\#):not(#\#):not(#\#){grid-template-columns:var(--x-gridTemplateColumns)}
|
|
748
755
|
.xihq33y:not(#\#):not(#\#):not(#\#){grid-template-rows:0fr}
|
|
749
756
|
.x1tu4anv:not(#\#):not(#\#):not(#\#){grid-template-rows:1fr}
|
|
750
757
|
.xtijo5x:not(#\#):not(#\#):not(#\#){inset-inline-end:0}
|
|
@@ -941,6 +948,7 @@
|
|
|
941
948
|
.x1ahifba:not(#\#):not(#\#):not(#\#){transition-delay:0s}
|
|
942
949
|
.x10b1n17:not(#\#):not(#\#):not(#\#){transition-delay:var(--duration-fast)}
|
|
943
950
|
.x11bq7d0:not(#\#):not(#\#):not(#\#){transition-duration:.06s}
|
|
951
|
+
.xx6bhzk:not(#\#):not(#\#):not(#\#){transition-duration:.15s}
|
|
944
952
|
.x13dflua:not(#\#):not(#\#):not(#\#){transition-duration:.2s}
|
|
945
953
|
.xjd9b36:not(#\#):not(#\#):not(#\#){transition-duration:1ms}
|
|
946
954
|
.x2rcmwa:not(#\#):not(#\#):not(#\#){transition-duration:var(--duration-fast-max)}
|
|
@@ -969,6 +977,7 @@
|
|
|
969
977
|
.x1wbls7o:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color,transform}
|
|
970
978
|
.xnpjden:not(#\#):not(#\#):not(#\#){transition-property:opacity,background-color}
|
|
971
979
|
.x1kx2cm7:not(#\#):not(#\#):not(#\#){transition-property:opacity,box-shadow}
|
|
980
|
+
.xsm4mo9:not(#\#):not(#\#):not(#\#){transition-property:opacity,display,overlay}
|
|
972
981
|
.x1apppo2:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,max-width}
|
|
973
982
|
.x4bbghf:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform,overlay,display}
|
|
974
983
|
.x6o7n8i:not(#\#):not(#\#):not(#\#){transition-property:opacity,transform}
|
|
@@ -1003,6 +1012,7 @@
|
|
|
1003
1012
|
.x6cuj84:not(#\#):not(#\#):not(#\#){z-index:500}
|
|
1004
1013
|
.x1q2oy4v:not(#\#):not(#\#):not(#\#){z-index:9999}
|
|
1005
1014
|
.x1v2claj.x1v2claj:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){opacity:1}
|
|
1015
|
+
.xs4y3kv.xs4y3kv:where(.x1g2q90y:focus-visible *):not(#\#):not(#\#):not(#\#){outline-offset:2px}
|
|
1006
1016
|
.x3730vf.x3730vf:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){pointer-events:auto}
|
|
1007
1017
|
.xuqivmr.xuqivmr:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){transform:translateY(0)}
|
|
1008
1018
|
.x7v6acp.x7v6acp:where(.x84s7jz:focus-within *):not(#\#):not(#\#):not(#\#){visibility:visible}
|
|
@@ -1024,6 +1034,10 @@
|
|
|
1024
1034
|
.xttggg:is([dir="rtl"] *):not(#\#):not(#\#):not(#\#){transform:translateX(100%)}
|
|
1025
1035
|
.x9cjr8z:popover-open:not(#\#):not(#\#):not(#\#){transform:translateY(0)}
|
|
1026
1036
|
.x1rm9qnc:focus-within:not(#\#):not(#\#):not(#\#){z-index:1}
|
|
1037
|
+
.x1vej5at:has(+ [popover] + [popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}
|
|
1038
|
+
.xxd14kb:has(+ [popover]:last-child):not(#\#):not(#\#):not(#\#){border-end-end-radius:var(--radius-element)}
|
|
1039
|
+
.x1ir7nn6:has(+ [popover] + [popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}
|
|
1040
|
+
.xpufgd0:has(+ [popover]:last-child):not(#\#):not(#\#):not(#\#){border-start-end-radius:var(--radius-element)}
|
|
1027
1041
|
.x92e2el:has(> [data-astryx-edge-comp]:last-child):not(#\#):not(#\#):not(#\#){margin-inline-end:var(--x-4drmnv)}
|
|
1028
1042
|
.x1kftj4p:has(> [data-astryx-edge-comp]:first-child):not(#\#):not(#\#):not(#\#){margin-inline-start:var(--x-126w13d)}
|
|
1029
1043
|
.xdjuwb3:has(:focus-visible):not(#\#):not(#\#):not(#\#){outline-offset:2px}
|
|
@@ -1101,6 +1115,9 @@
|
|
|
1101
1115
|
@media (hover: hover){.x8o3jvd.x8o3jvd:hover:not(#\#):not(#\#):not(#\#){background-image:none}}
|
|
1102
1116
|
@media (hover: hover){.xw6ruzt.xw6ruzt:hover:not(#\#):not(#\#):not(#\#){box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-accent) 20%,transparent)}}
|
|
1103
1117
|
@media (hover: hover){.xhouywz.xhouywz:hover:not(#\#):not(#\#):not(#\#){box-shadow:var(--shadow-med)}}
|
|
1118
|
+
@media (hover: hover){.x17qfo7y.x17qfo7y:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-accent),var(--color-tint-hover) 15%)}}
|
|
1119
|
+
@media (hover: hover){.x4z56r7.x4z56r7:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-primary),var(--color-tint-hover) 15%)}}
|
|
1120
|
+
@media (hover: hover){.x7ruf5d.x7ruf5d:hover:not(#\#):not(#\#):not(#\#){color:color-mix(in srgb,var(--color-text-secondary),var(--color-tint-hover) 15%)}}
|
|
1104
1121
|
@media (hover: hover){.x140uwzg.x140uwzg:hover:not(#\#):not(#\#):not(#\#){color:var(--color-text-primary)}}
|
|
1105
1122
|
@media (hover: hover){.xzomjkg.xzomjkg:hover:not(#\#):not(#\#):not(#\#){opacity:.85}}
|
|
1106
1123
|
.xib2hle:not(#\#):not(#\#):not(#\#):not(#\#){border-bottom-color:var(--color-border-emphasized)}
|
|
@@ -1183,6 +1200,7 @@
|
|
|
1183
1200
|
.x102lyln:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-lg) - 8px)}
|
|
1184
1201
|
.x184gfjb:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 4px)}
|
|
1185
1202
|
.xrmxcn7:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) - 8px)}
|
|
1203
|
+
.x1u5rhrp:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-md) + var(--spacing-1))}
|
|
1186
1204
|
.xzj98nu:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 4px)}
|
|
1187
1205
|
.xzydfjl:not(#\#):not(#\#):not(#\#):not(#\#){height:calc(var(--size-element-sm) - 8px)}
|
|
1188
1206
|
.xg7h5cd:not(#\#):not(#\#):not(#\#):not(#\#){height:fit-content}
|