@misoto22/kioku-ui 0.0.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Alert/Alert.js +1 -0
- package/dist/AlertDialog/AlertDialog.d.ts +8 -0
- package/dist/AlertDialog/AlertDialog.doc.d.ts +11 -0
- package/dist/AlertDialog/AlertDialog.doc.js +30 -0
- package/dist/AlertDialog/AlertDialog.js +16 -0
- package/dist/AlertDialog/index.d.ts +1 -0
- package/dist/AlertDialog/index.js +2 -0
- package/dist/AppShell/AppShell.d.ts +19 -0
- package/dist/AppShell/AppShell.doc.d.ts +11 -0
- package/dist/AppShell/AppShell.doc.js +36 -0
- package/dist/AppShell/AppShell.js +61 -0
- package/dist/AppShell/index.d.ts +1 -0
- package/dist/AppShell/index.js +2 -0
- package/dist/AspectRatio/AspectRatio.d.ts +11 -0
- package/dist/AspectRatio/AspectRatio.doc.d.ts +11 -0
- package/dist/AspectRatio/AspectRatio.doc.js +15 -0
- package/dist/AspectRatio/AspectRatio.js +30 -0
- package/dist/AspectRatio/index.d.ts +1 -0
- package/dist/AspectRatio/index.js +2 -0
- package/dist/AsyncState/AsyncState.js +14 -1
- package/dist/Avatar/Avatar.d.ts +14 -0
- package/dist/{components/Button.doc.d.ts → Avatar/Avatar.doc.d.ts} +1 -1
- package/dist/Avatar/Avatar.doc.js +18 -0
- package/dist/Avatar/Avatar.js +98 -0
- package/dist/Avatar/index.d.ts +1 -0
- package/dist/Avatar/index.js +2 -0
- package/dist/AvatarGroup/AvatarGroup.d.ts +20 -0
- package/dist/AvatarGroup/AvatarGroup.doc.d.ts +11 -0
- package/dist/AvatarGroup/AvatarGroup.doc.js +21 -0
- package/dist/AvatarGroup/AvatarGroup.js +99 -0
- package/dist/AvatarGroup/index.d.ts +1 -0
- package/dist/AvatarGroup/index.js +2 -0
- package/dist/Badge/Badge.js +1 -0
- package/dist/Banner/Banner.d.ts +14 -0
- package/dist/Banner/Banner.doc.d.ts +11 -0
- package/dist/Banner/Banner.doc.js +18 -0
- package/dist/Banner/Banner.js +85 -0
- package/dist/Banner/index.d.ts +1 -0
- package/dist/Banner/index.js +2 -0
- package/dist/Blockquote/Blockquote.d.ts +11 -0
- package/dist/Blockquote/Blockquote.doc.d.ts +11 -0
- package/dist/Blockquote/Blockquote.doc.js +15 -0
- package/dist/Blockquote/Blockquote.js +28 -0
- package/dist/Blockquote/index.d.ts +1 -0
- package/dist/Blockquote/index.js +2 -0
- package/dist/BottomSheet/BottomSheet.d.ts +13 -0
- package/dist/BottomSheet/BottomSheet.doc.d.ts +11 -0
- package/dist/BottomSheet/BottomSheet.doc.js +21 -0
- package/dist/BottomSheet/BottomSheet.js +68 -0
- package/dist/BottomSheet/index.d.ts +1 -0
- package/dist/BottomSheet/index.js +2 -0
- package/dist/BottomSheetSwitcher/BottomSheetSwitcher.d.ts +35 -0
- package/dist/BottomSheetSwitcher/BottomSheetSwitcher.doc.d.ts +11 -0
- package/dist/BottomSheetSwitcher/BottomSheetSwitcher.doc.js +30 -0
- package/dist/BottomSheetSwitcher/BottomSheetSwitcher.js +104 -0
- package/dist/BottomSheetSwitcher/index.d.ts +1 -0
- package/dist/BottomSheetSwitcher/index.js +2 -0
- package/dist/Box/Box.d.ts +53 -0
- package/dist/{components/Card.doc.d.ts → Box/Box.doc.d.ts} +1 -1
- package/dist/Box/Box.doc.js +21 -0
- package/dist/Box/Box.js +120 -0
- package/dist/Box/index.d.ts +1 -0
- package/dist/Box/index.js +2 -0
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +17 -0
- package/dist/Breadcrumbs/Breadcrumbs.doc.d.ts +11 -0
- package/dist/Breadcrumbs/Breadcrumbs.doc.js +18 -0
- package/dist/Breadcrumbs/Breadcrumbs.js +64 -0
- package/dist/Breadcrumbs/index.d.ts +1 -0
- package/dist/Breadcrumbs/index.js +2 -0
- package/dist/Button/Button.js +19 -8
- package/dist/ButtonGroup/ButtonGroup.d.ts +13 -0
- package/dist/ButtonGroup/ButtonGroup.doc.d.ts +11 -0
- package/dist/ButtonGroup/ButtonGroup.doc.js +18 -0
- package/dist/ButtonGroup/ButtonGroup.js +52 -0
- package/dist/ButtonGroup/index.d.ts +1 -0
- package/dist/ButtonGroup/index.js +2 -0
- package/dist/Calendar/Calendar.d.ts +27 -0
- package/dist/Calendar/Calendar.doc.d.ts +11 -0
- package/dist/Calendar/Calendar.doc.js +33 -0
- package/dist/Calendar/Calendar.js +307 -0
- package/dist/Calendar/index.d.ts +1 -0
- package/dist/Calendar/index.js +2 -0
- package/dist/Card/Card.js +1 -1
- package/dist/CardFooter/CardFooter.js +1 -1
- package/dist/CardHeader/CardHeader.js +1 -1
- package/dist/Carousel/Carousel.d.ts +14 -0
- package/dist/Carousel/Carousel.doc.d.ts +11 -0
- package/dist/Carousel/Carousel.doc.js +21 -0
- package/dist/Carousel/Carousel.js +117 -0
- package/dist/Carousel/index.d.ts +1 -0
- package/dist/Carousel/index.js +2 -0
- package/dist/Chat/Chat.d.ts +83 -0
- package/dist/{components/Table.doc.d.ts → Chat/Chat.doc.d.ts} +11 -26
- package/dist/Chat/Chat.doc.js +99 -0
- package/dist/Chat/Chat.js +361 -0
- package/dist/Chat/index.d.ts +1 -0
- package/dist/Chat/index.js +2 -0
- package/dist/CheckboxInput/CheckboxInput.d.ts +24 -0
- package/dist/CheckboxInput/CheckboxInput.doc.d.ts +11 -0
- package/dist/CheckboxInput/CheckboxInput.doc.js +27 -0
- package/dist/CheckboxInput/CheckboxInput.js +173 -0
- package/dist/CheckboxInput/index.d.ts +1 -0
- package/dist/CheckboxInput/index.js +2 -0
- package/dist/CheckboxList/CheckboxList.d.ts +30 -0
- package/dist/CheckboxList/CheckboxList.doc.d.ts +11 -0
- package/dist/CheckboxList/CheckboxList.doc.js +24 -0
- package/dist/CheckboxList/CheckboxList.js +60 -0
- package/dist/CheckboxList/index.d.ts +1 -0
- package/dist/CheckboxList/index.js +2 -0
- package/dist/Citation/Citation.d.ts +13 -0
- package/dist/Citation/Citation.doc.d.ts +11 -0
- package/dist/Citation/Citation.doc.js +18 -0
- package/dist/Citation/Citation.js +36 -0
- package/dist/Citation/index.d.ts +1 -0
- package/dist/Citation/index.js +2 -0
- package/dist/ClickableCard/ClickableCard.d.ts +10 -0
- package/dist/ClickableCard/ClickableCard.doc.d.ts +11 -0
- package/dist/ClickableCard/ClickableCard.doc.js +12 -0
- package/dist/ClickableCard/ClickableCard.js +24 -0
- package/dist/ClickableCard/index.d.ts +1 -0
- package/dist/ClickableCard/index.js +2 -0
- package/dist/Code/Code.d.ts +5 -0
- package/dist/{components/Text.doc.d.ts → Code/Code.doc.d.ts} +1 -1
- package/dist/Code/Code.doc.js +12 -0
- package/dist/Code/Code.js +19 -0
- package/dist/Code/index.d.ts +1 -0
- package/dist/Code/index.js +2 -0
- package/dist/CodeBlock/CodeBlock.d.ts +19 -0
- package/dist/CodeBlock/CodeBlock.doc.d.ts +11 -0
- package/dist/CodeBlock/CodeBlock.doc.js +24 -0
- package/dist/CodeBlock/CodeBlock.js +88 -0
- package/dist/CodeBlock/index.d.ts +1 -0
- package/dist/CodeBlock/index.js +2 -0
- package/dist/Collapsible/Collapsible.d.ts +23 -0
- package/dist/Collapsible/Collapsible.doc.d.ts +11 -0
- package/dist/Collapsible/Collapsible.doc.js +24 -0
- package/dist/Collapsible/Collapsible.js +93 -0
- package/dist/Collapsible/index.d.ts +1 -0
- package/dist/Collapsible/index.js +2 -0
- package/dist/CommandPalette/CommandPalette.d.ts +24 -0
- package/dist/CommandPalette/CommandPalette.doc.d.ts +11 -0
- package/dist/CommandPalette/CommandPalette.doc.js +30 -0
- package/dist/CommandPalette/CommandPalette.js +182 -0
- package/dist/CommandPalette/index.d.ts +1 -0
- package/dist/CommandPalette/index.js +2 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts +30 -0
- package/dist/ComplexSelector/ComplexSelector.doc.d.ts +11 -0
- package/dist/ComplexSelector/ComplexSelector.doc.js +24 -0
- package/dist/ComplexSelector/ComplexSelector.js +83 -0
- package/dist/ComplexSelector/index.d.ts +1 -0
- package/dist/ComplexSelector/index.js +2 -0
- package/dist/ContextMenu/ContextMenu.d.ts +13 -0
- package/dist/ContextMenu/ContextMenu.doc.d.ts +11 -0
- package/dist/ContextMenu/ContextMenu.doc.js +18 -0
- package/dist/ContextMenu/ContextMenu.js +52 -0
- package/dist/ContextMenu/index.d.ts +1 -0
- package/dist/ContextMenu/index.js +2 -0
- package/dist/DateInput/DateInput.d.ts +5 -0
- package/dist/DateInput/DateInput.doc.d.ts +11 -0
- package/dist/DateInput/DateInput.doc.js +18 -0
- package/dist/DateInput/DateInput.js +12 -0
- package/dist/DateInput/TemporalInput.d.ts +34 -0
- package/dist/DateInput/TemporalInput.js +169 -0
- package/dist/DateInput/index.d.ts +2 -0
- package/dist/DateInput/index.js +3 -0
- package/dist/DatePicker/DatePicker.d.ts +38 -0
- package/dist/{components/AsyncState.doc.d.ts → DatePicker/DatePicker.doc.d.ts} +1 -1
- package/dist/DatePicker/DatePicker.doc.js +31 -0
- package/dist/DatePicker/DatePicker.js +111 -0
- package/dist/DatePicker/index.d.ts +1 -0
- package/dist/DatePicker/index.js +2 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +34 -0
- package/dist/DateRangeInput/DateRangeInput.doc.d.ts +11 -0
- package/dist/DateRangeInput/DateRangeInput.doc.js +27 -0
- package/dist/DateRangeInput/DateRangeInput.js +108 -0
- package/dist/DateRangeInput/index.d.ts +1 -0
- package/dist/DateRangeInput/index.js +2 -0
- package/dist/DateTimeInput/DateTimeInput.d.ts +5 -0
- package/dist/DateTimeInput/DateTimeInput.doc.d.ts +11 -0
- package/dist/DateTimeInput/DateTimeInput.doc.js +18 -0
- package/dist/DateTimeInput/DateTimeInput.js +12 -0
- package/dist/DateTimeInput/index.d.ts +1 -0
- package/dist/DateTimeInput/index.js +2 -0
- package/dist/Dialog/Dialog.d.ts +23 -0
- package/dist/Dialog/Dialog.doc.d.ts +11 -0
- package/dist/Dialog/Dialog.doc.js +33 -0
- package/dist/Dialog/Dialog.js +152 -0
- package/dist/Dialog/index.d.ts +1 -0
- package/dist/Dialog/index.js +2 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +25 -0
- package/dist/DropdownMenu/DropdownMenu.doc.d.ts +22 -0
- package/dist/DropdownMenu/DropdownMenu.doc.js +47 -0
- package/dist/DropdownMenu/DropdownMenu.js +114 -0
- package/dist/DropdownMenu/index.d.ts +1 -0
- package/dist/DropdownMenu/index.js +2 -0
- package/dist/EmptyState/EmptyState.js +4 -4
- package/dist/Eyebrow/Eyebrow.d.ts +13 -0
- package/dist/Eyebrow/Eyebrow.doc.d.ts +11 -0
- package/dist/Eyebrow/Eyebrow.doc.js +15 -0
- package/dist/Eyebrow/Eyebrow.js +47 -0
- package/dist/Eyebrow/index.d.ts +1 -0
- package/dist/Eyebrow/index.js +2 -0
- package/dist/Field/Field.js +15 -7
- package/dist/FieldStatus/FieldStatus.d.ts +13 -0
- package/dist/FieldStatus/FieldStatus.doc.d.ts +11 -0
- package/dist/FieldStatus/FieldStatus.doc.js +15 -0
- package/dist/FieldStatus/FieldStatus.js +68 -0
- package/dist/FieldStatus/index.d.ts +1 -0
- package/dist/FieldStatus/index.js +2 -0
- package/dist/FileInput/FileInput.d.ts +10 -0
- package/dist/FileInput/FileInput.doc.d.ts +11 -0
- package/dist/FileInput/FileInput.doc.js +12 -0
- package/dist/FileInput/FileInput.js +74 -0
- package/dist/FileInput/index.d.ts +1 -0
- package/dist/FileInput/index.js +2 -0
- package/dist/FormLayout/FormLayout.d.ts +14 -0
- package/dist/FormLayout/FormLayout.doc.d.ts +11 -0
- package/dist/FormLayout/FormLayout.doc.js +18 -0
- package/dist/FormLayout/FormLayout.js +40 -0
- package/dist/FormLayout/index.d.ts +1 -0
- package/dist/FormLayout/index.js +2 -0
- package/dist/HStack/HStack.d.ts +15 -0
- package/dist/HStack/HStack.doc.d.ts +11 -0
- package/dist/HStack/HStack.doc.js +21 -0
- package/dist/{components/Stack.js → HStack/HStack.js} +47 -6
- package/dist/HStack/index.d.ts +1 -0
- package/dist/HStack/index.js +2 -0
- package/dist/Heading/Heading.js +4 -1
- package/dist/HoverCard/HoverCard.d.ts +31 -0
- package/dist/HoverCard/HoverCard.doc.d.ts +11 -0
- package/dist/HoverCard/HoverCard.doc.js +30 -0
- package/dist/HoverCard/HoverCard.js +77 -0
- package/dist/HoverCard/index.d.ts +1 -0
- package/dist/HoverCard/index.js +2 -0
- package/dist/Icon/Icon.d.ts +16 -0
- package/dist/{components/Grid.doc.d.ts → Icon/Icon.doc.d.ts} +1 -1
- package/dist/Icon/Icon.doc.js +18 -0
- package/dist/Icon/Icon.js +91 -0
- package/dist/Icon/index.d.ts +1 -0
- package/dist/Icon/index.js +2 -0
- package/dist/Indicator/Indicator.d.ts +15 -0
- package/dist/Indicator/Indicator.doc.d.ts +11 -0
- package/dist/Indicator/Indicator.doc.js +24 -0
- package/dist/Indicator/Indicator.js +90 -0
- package/dist/Indicator/index.d.ts +1 -0
- package/dist/Indicator/index.js +2 -0
- package/dist/InputGroup/InputGroup.d.ts +12 -0
- package/dist/InputGroup/InputGroup.doc.d.ts +11 -0
- package/dist/InputGroup/InputGroup.doc.js +18 -0
- package/dist/InputGroup/InputGroup.js +41 -0
- package/dist/InputGroup/index.d.ts +1 -0
- package/dist/InputGroup/index.js +2 -0
- package/dist/Item/Item.d.ts +12 -0
- package/dist/{components/Badge.doc.d.ts → Item/Item.doc.d.ts} +1 -1
- package/dist/Item/Item.doc.js +18 -0
- package/dist/Item/Item.js +50 -0
- package/dist/Item/index.d.ts +1 -0
- package/dist/Item/index.js +2 -0
- package/dist/Kbd/Kbd.d.ts +5 -0
- package/dist/Kbd/Kbd.doc.d.ts +11 -0
- package/dist/Kbd/Kbd.doc.js +12 -0
- package/dist/Kbd/Kbd.js +19 -0
- package/dist/Kbd/index.d.ts +1 -0
- package/dist/Kbd/index.js +2 -0
- package/dist/Layer/Layer.d.ts +19 -0
- package/dist/{components/Alert.doc.d.ts → Layer/Layer.doc.d.ts} +1 -1
- package/dist/Layer/Layer.doc.js +15 -0
- package/dist/Layer/Layer.js +32 -0
- package/dist/Layer/index.d.ts +1 -0
- package/dist/Layer/index.js +2 -0
- package/dist/Layout/Layout.d.ts +26 -0
- package/dist/Layout/Layout.doc.d.ts +11 -0
- package/dist/Layout/Layout.doc.js +36 -0
- package/dist/Layout/Layout.js +108 -0
- package/dist/Layout/index.d.ts +1 -0
- package/dist/Layout/index.js +2 -0
- package/dist/Lightbox/Lightbox.d.ts +14 -0
- package/dist/Lightbox/Lightbox.doc.d.ts +11 -0
- package/dist/Lightbox/Lightbox.doc.js +24 -0
- package/dist/Lightbox/Lightbox.js +80 -0
- package/dist/Lightbox/index.d.ts +1 -0
- package/dist/Lightbox/index.js +2 -0
- package/dist/List/List.d.ts +18 -0
- package/dist/List/List.doc.d.ts +22 -0
- package/dist/List/List.doc.js +26 -0
- package/dist/List/List.js +113 -0
- package/dist/List/index.d.ts +1 -0
- package/dist/List/index.js +2 -0
- package/dist/Markdown/Markdown.d.ts +11 -0
- package/dist/Markdown/Markdown.doc.d.ts +11 -0
- package/dist/Markdown/Markdown.doc.js +12 -0
- package/dist/Markdown/Markdown.js +90 -0
- package/dist/Markdown/index.d.ts +2 -0
- package/dist/Markdown/index.js +3 -0
- package/dist/Markdown/parse.d.ts +42 -0
- package/dist/Markdown/parse.js +128 -0
- package/dist/MetadataList/MetadataList.d.ts +18 -0
- package/dist/MetadataList/MetadataList.doc.d.ts +11 -0
- package/dist/MetadataList/MetadataList.doc.js +15 -0
- package/dist/MetadataList/MetadataList.js +93 -0
- package/dist/MetadataList/index.d.ts +1 -0
- package/dist/MetadataList/index.js +2 -0
- package/dist/MetricGrid/MetricGrid.js +5 -5
- package/dist/MobileNav/MobileNav.d.ts +13 -0
- package/dist/MobileNav/MobileNav.doc.d.ts +11 -0
- package/dist/MobileNav/MobileNav.doc.js +21 -0
- package/dist/MobileNav/MobileNav.js +126 -0
- package/dist/MobileNav/index.d.ts +1 -0
- package/dist/MobileNav/index.js +2 -0
- package/dist/MoreMenu/MoreMenu.d.ts +14 -0
- package/dist/MoreMenu/MoreMenu.doc.d.ts +11 -0
- package/dist/MoreMenu/MoreMenu.doc.js +21 -0
- package/dist/MoreMenu/MoreMenu.js +68 -0
- package/dist/MoreMenu/index.d.ts +1 -0
- package/dist/MoreMenu/index.js +2 -0
- package/dist/MultiSelector/MultiSelector.d.ts +17 -0
- package/dist/MultiSelector/MultiSelector.doc.d.ts +11 -0
- package/dist/MultiSelector/MultiSelector.doc.js +27 -0
- package/dist/MultiSelector/MultiSelector.js +58 -0
- package/dist/MultiSelector/index.d.ts +1 -0
- package/dist/MultiSelector/index.js +2 -0
- package/dist/NavIcon/NavIcon.d.ts +10 -0
- package/dist/NavIcon/NavIcon.doc.d.ts +11 -0
- package/dist/NavIcon/NavIcon.doc.js +12 -0
- package/dist/NavIcon/NavIcon.js +21 -0
- package/dist/NavIcon/index.d.ts +1 -0
- package/dist/NavIcon/index.js +2 -0
- package/dist/NavItem/NavItem.d.ts +13 -0
- package/dist/NavItem/NavItem.doc.d.ts +11 -0
- package/dist/NavItem/NavItem.doc.js +18 -0
- package/dist/NavItem/NavItem.js +62 -0
- package/dist/NavItem/index.d.ts +1 -0
- package/dist/NavItem/index.js +2 -0
- package/dist/NavMenu/NavMenu.d.ts +13 -0
- package/dist/NavMenu/NavMenu.doc.d.ts +11 -0
- package/dist/NavMenu/NavMenu.doc.js +18 -0
- package/dist/NavMenu/NavMenu.js +58 -0
- package/dist/NavMenu/index.d.ts +2 -0
- package/dist/NavMenu/index.js +5 -0
- package/dist/NavMenu/orientation.d.ts +4 -0
- package/dist/NavMenu/orientation.js +17 -0
- package/dist/NumberInput/NumberInput.d.ts +21 -0
- package/dist/NumberInput/NumberInput.doc.d.ts +11 -0
- package/dist/NumberInput/NumberInput.doc.js +18 -0
- package/dist/NumberInput/NumberInput.js +136 -0
- package/dist/NumberInput/index.d.ts +1 -0
- package/dist/NumberInput/index.js +2 -0
- package/dist/Numeral/Numeral.d.ts +10 -0
- package/dist/Numeral/Numeral.doc.d.ts +11 -0
- package/dist/Numeral/Numeral.doc.js +12 -0
- package/dist/Numeral/Numeral.js +24 -0
- package/dist/Numeral/index.d.ts +1 -0
- package/dist/Numeral/index.js +2 -0
- package/dist/Outline/Outline.d.ts +18 -0
- package/dist/Outline/Outline.doc.d.ts +11 -0
- package/dist/Outline/Outline.doc.js +18 -0
- package/dist/Outline/Outline.js +98 -0
- package/dist/Outline/index.d.ts +1 -0
- package/dist/Outline/index.js +2 -0
- package/dist/OverflowList/OverflowList.d.ts +19 -0
- package/dist/OverflowList/OverflowList.doc.d.ts +11 -0
- package/dist/OverflowList/OverflowList.doc.js +18 -0
- package/dist/OverflowList/OverflowList.js +81 -0
- package/dist/OverflowList/index.d.ts +1 -0
- package/dist/OverflowList/index.js +2 -0
- package/dist/Overlay/Overlay.d.ts +17 -0
- package/dist/Overlay/Overlay.doc.d.ts +11 -0
- package/dist/Overlay/Overlay.doc.js +30 -0
- package/dist/Overlay/Overlay.js +74 -0
- package/dist/Overlay/index.d.ts +1 -0
- package/dist/Overlay/index.js +2 -0
- package/dist/Pagination/Pagination.d.ts +14 -0
- package/dist/Pagination/Pagination.doc.d.ts +11 -0
- package/dist/Pagination/Pagination.doc.js +24 -0
- package/dist/Pagination/Pagination.js +128 -0
- package/dist/Pagination/index.d.ts +1 -0
- package/dist/Pagination/index.js +2 -0
- package/dist/Popover/Popover.d.ts +17 -0
- package/dist/Popover/Popover.doc.d.ts +11 -0
- package/dist/Popover/Popover.doc.js +30 -0
- package/dist/Popover/Popover.js +93 -0
- package/dist/Popover/index.d.ts +1 -0
- package/dist/Popover/index.js +2 -0
- package/dist/PowerSearch/PowerSearch.d.ts +22 -0
- package/dist/PowerSearch/PowerSearch.doc.d.ts +11 -0
- package/dist/PowerSearch/PowerSearch.doc.js +27 -0
- package/dist/PowerSearch/PowerSearch.js +108 -0
- package/dist/PowerSearch/index.d.ts +1 -0
- package/dist/PowerSearch/index.js +2 -0
- package/dist/ProgressBar/ProgressBar.d.ts +12 -0
- package/dist/ProgressBar/ProgressBar.doc.d.ts +11 -0
- package/dist/ProgressBar/ProgressBar.doc.js +18 -0
- package/dist/ProgressBar/ProgressBar.js +51 -0
- package/dist/ProgressBar/index.d.ts +1 -0
- package/dist/ProgressBar/index.js +2 -0
- package/dist/RadioList/RadioList.d.ts +30 -0
- package/dist/RadioList/RadioList.doc.d.ts +11 -0
- package/dist/RadioList/RadioList.doc.js +24 -0
- package/dist/RadioList/RadioList.js +130 -0
- package/dist/RadioList/index.d.ts +1 -0
- package/dist/RadioList/index.js +2 -0
- package/dist/Resizable/Resizable.d.ts +18 -0
- package/dist/Resizable/Resizable.doc.d.ts +11 -0
- package/dist/Resizable/Resizable.doc.js +33 -0
- package/dist/Resizable/Resizable.js +100 -0
- package/dist/Resizable/index.d.ts +1 -0
- package/dist/Resizable/index.js +2 -0
- package/dist/ResizeHandle/ResizeHandle.d.ts +23 -0
- package/dist/ResizeHandle/ResizeHandle.doc.d.ts +11 -0
- package/dist/ResizeHandle/ResizeHandle.doc.js +30 -0
- package/dist/ResizeHandle/ResizeHandle.js +118 -0
- package/dist/ResizeHandle/index.d.ts +1 -0
- package/dist/ResizeHandle/index.js +2 -0
- package/dist/SegmentedControl/SegmentedControl.js +4 -4
- package/dist/SelectableCard/SelectableCard.d.ts +25 -0
- package/dist/SelectableCard/SelectableCard.doc.d.ts +11 -0
- package/dist/SelectableCard/SelectableCard.doc.js +18 -0
- package/dist/SelectableCard/SelectableCard.js +178 -0
- package/dist/SelectableCard/index.d.ts +1 -0
- package/dist/SelectableCard/index.js +2 -0
- package/dist/Selector/Selector.d.ts +29 -0
- package/dist/Selector/Selector.doc.d.ts +11 -0
- package/dist/Selector/Selector.doc.js +24 -0
- package/dist/Selector/Selector.js +83 -0
- package/dist/Selector/index.d.ts +1 -0
- package/dist/Selector/index.js +2 -0
- package/dist/SideNav/SideNav.d.ts +15 -0
- package/dist/SideNav/SideNav.doc.d.ts +22 -0
- package/dist/SideNav/SideNav.doc.js +29 -0
- package/dist/SideNav/SideNav.js +51 -0
- package/dist/SideNav/index.d.ts +1 -0
- package/dist/SideNav/index.js +2 -0
- package/dist/Skeleton/Skeleton.doc.js +1 -1
- package/dist/Skeleton/Skeleton.js +1 -2
- package/dist/Slider/Slider.d.ts +27 -0
- package/dist/Slider/Slider.doc.d.ts +11 -0
- package/dist/Slider/Slider.doc.js +30 -0
- package/dist/Slider/Slider.js +133 -0
- package/dist/Slider/index.d.ts +1 -0
- package/dist/Slider/index.js +2 -0
- package/dist/Spinner/Spinner.js +5 -1
- package/dist/StatusDot/StatusDot.d.ts +2 -2
- package/dist/StatusDot/StatusDot.js +8 -0
- package/dist/Switch/Switch.d.ts +9 -0
- package/dist/Switch/Switch.doc.d.ts +11 -0
- package/dist/Switch/Switch.doc.js +21 -0
- package/dist/Switch/Switch.js +86 -0
- package/dist/Switch/index.d.ts +1 -0
- package/dist/Switch/index.js +2 -0
- package/dist/TabList/TabList.d.ts +25 -0
- package/dist/TabList/TabList.doc.d.ts +11 -0
- package/dist/TabList/TabList.doc.js +21 -0
- package/dist/TabList/TabList.js +79 -0
- package/dist/TabList/index.d.ts +1 -0
- package/dist/TabList/index.js +2 -0
- package/dist/Table/Table.d.ts +16 -6
- package/dist/Table/Table.doc.d.ts +12 -4
- package/dist/Table/Table.doc.js +9 -0
- package/dist/Table/Table.js +78 -14
- package/dist/Text/Text.js +1 -0
- package/dist/TextArea/TextArea.js +9 -4
- package/dist/TextInput/TextInput.js +4 -4
- package/dist/Thumbnail/Thumbnail.d.ts +15 -0
- package/dist/Thumbnail/Thumbnail.doc.d.ts +11 -0
- package/dist/Thumbnail/Thumbnail.doc.js +21 -0
- package/dist/Thumbnail/Thumbnail.js +95 -0
- package/dist/Thumbnail/index.d.ts +1 -0
- package/dist/Thumbnail/index.js +2 -0
- package/dist/TimeInput/TimeInput.d.ts +5 -0
- package/dist/TimeInput/TimeInput.doc.d.ts +11 -0
- package/dist/TimeInput/TimeInput.doc.js +18 -0
- package/dist/TimeInput/TimeInput.js +12 -0
- package/dist/TimeInput/index.d.ts +1 -0
- package/dist/TimeInput/index.js +2 -0
- package/dist/Timestamp/Timestamp.d.ts +11 -0
- package/dist/Timestamp/Timestamp.doc.d.ts +11 -0
- package/dist/Timestamp/Timestamp.doc.js +15 -0
- package/dist/Timestamp/Timestamp.js +33 -0
- package/dist/Timestamp/index.d.ts +1 -0
- package/dist/Timestamp/index.js +2 -0
- package/dist/Toast/Toast.d.ts +36 -0
- package/dist/Toast/Toast.doc.d.ts +22 -0
- package/dist/Toast/Toast.doc.js +35 -0
- package/dist/Toast/Toast.js +234 -0
- package/dist/Toast/index.d.ts +1 -0
- package/dist/Toast/index.js +2 -0
- package/dist/Toggle/Toggle.js +26 -8
- package/dist/ToggleButton/ToggleButton.d.ts +24 -0
- package/dist/ToggleButton/ToggleButton.doc.d.ts +11 -0
- package/dist/ToggleButton/ToggleButton.doc.js +21 -0
- package/dist/ToggleButton/ToggleButton.js +125 -0
- package/dist/ToggleButton/index.d.ts +1 -0
- package/dist/ToggleButton/index.js +2 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.d.ts +37 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.doc.d.ts +11 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.doc.js +30 -0
- package/dist/ToggleButtonGroup/ToggleButtonGroup.js +84 -0
- package/dist/ToggleButtonGroup/index.d.ts +1 -0
- package/dist/ToggleButtonGroup/index.js +2 -0
- package/dist/Token/Token.d.ts +14 -0
- package/dist/Token/Token.doc.d.ts +11 -0
- package/dist/Token/Token.doc.js +21 -0
- package/dist/Token/Token.js +57 -0
- package/dist/Token/index.d.ts +1 -0
- package/dist/Token/index.js +2 -0
- package/dist/Tokenizer/Tokenizer.d.ts +16 -0
- package/dist/Tokenizer/Tokenizer.doc.d.ts +11 -0
- package/dist/Tokenizer/Tokenizer.doc.js +24 -0
- package/dist/Tokenizer/Tokenizer.js +92 -0
- package/dist/Tokenizer/index.d.ts +1 -0
- package/dist/Tokenizer/index.js +2 -0
- package/dist/Toolbar/Toolbar.d.ts +13 -0
- package/dist/Toolbar/Toolbar.doc.d.ts +11 -0
- package/dist/Toolbar/Toolbar.doc.js +18 -0
- package/dist/Toolbar/Toolbar.js +65 -0
- package/dist/Toolbar/index.d.ts +1 -0
- package/dist/Toolbar/index.js +2 -0
- package/dist/Tooltip/Tooltip.d.ts +25 -0
- package/dist/Tooltip/Tooltip.doc.d.ts +11 -0
- package/dist/Tooltip/Tooltip.doc.js +24 -0
- package/dist/Tooltip/Tooltip.js +110 -0
- package/dist/Tooltip/index.d.ts +1 -0
- package/dist/Tooltip/index.js +2 -0
- package/dist/TopNav/TopNav.d.ts +12 -0
- package/dist/TopNav/TopNav.doc.d.ts +11 -0
- package/dist/TopNav/TopNav.doc.js +18 -0
- package/dist/TopNav/TopNav.js +39 -0
- package/dist/TopNav/index.d.ts +1 -0
- package/dist/TopNav/index.js +2 -0
- package/dist/TopNavMegaMenu/TopNavMegaMenu.d.ts +30 -0
- package/dist/TopNavMegaMenu/TopNavMegaMenu.doc.d.ts +22 -0
- package/dist/TopNavMegaMenu/TopNavMegaMenu.doc.js +38 -0
- package/dist/TopNavMegaMenu/TopNavMegaMenu.js +134 -0
- package/dist/TopNavMegaMenu/index.d.ts +1 -0
- package/dist/TopNavMegaMenu/index.js +2 -0
- package/dist/TopNavMenu/TopNavMenu.d.ts +15 -0
- package/dist/TopNavMenu/TopNavMenu.doc.d.ts +11 -0
- package/dist/TopNavMenu/TopNavMenu.doc.js +21 -0
- package/dist/TopNavMenu/TopNavMenu.js +105 -0
- package/dist/TopNavMenu/index.d.ts +1 -0
- package/dist/TopNavMenu/index.js +2 -0
- package/dist/TreeList/TreeList.d.ts +21 -0
- package/dist/TreeList/TreeList.doc.d.ts +11 -0
- package/dist/TreeList/TreeList.doc.js +27 -0
- package/dist/TreeList/TreeList.js +146 -0
- package/dist/TreeList/index.d.ts +1 -0
- package/dist/TreeList/index.js +2 -0
- package/dist/Typeahead/Typeahead.d.ts +20 -0
- package/dist/Typeahead/Typeahead.doc.d.ts +11 -0
- package/dist/Typeahead/Typeahead.doc.js +24 -0
- package/dist/Typeahead/Typeahead.js +177 -0
- package/dist/Typeahead/index.d.ts +1 -0
- package/dist/Typeahead/index.js +2 -0
- package/dist/TypeaheadItem/TypeaheadItem.d.ts +15 -0
- package/dist/TypeaheadItem/TypeaheadItem.doc.d.ts +11 -0
- package/dist/TypeaheadItem/TypeaheadItem.doc.js +24 -0
- package/dist/TypeaheadItem/TypeaheadItem.js +84 -0
- package/dist/TypeaheadItem/index.d.ts +1 -0
- package/dist/TypeaheadItem/index.js +2 -0
- package/dist/VStack/VStack.d.ts +8 -0
- package/dist/VStack/VStack.doc.d.ts +11 -0
- package/dist/VStack/VStack.doc.js +15 -0
- package/dist/VStack/VStack.js +14 -0
- package/dist/VStack/index.d.ts +1 -0
- package/dist/VStack/index.js +2 -0
- package/dist/authoring.stylex.d.ts +7 -0
- package/dist/authoring.stylex.js +7 -0
- package/dist/docs/index.d.ts +91 -1
- package/dist/docs/index.js +92 -2
- package/dist/hooks/focusableSelector.d.ts +19 -0
- package/dist/hooks/focusableSelector.js +42 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.js +12 -0
- package/dist/hooks/useAnchoredPosition.d.ts +33 -0
- package/dist/hooks/useAnchoredPosition.js +121 -0
- package/dist/hooks/useAnnounce.d.ts +7 -0
- package/dist/hooks/useAnnounce.js +34 -0
- package/dist/hooks/useClipboard.d.ts +10 -0
- package/dist/hooks/useClipboard.js +36 -0
- package/dist/hooks/useDevWarning.d.ts +5 -0
- package/dist/hooks/useDevWarning.js +20 -0
- package/dist/hooks/useFocusTrap.d.ts +9 -0
- package/dist/hooks/useFocusTrap.js +57 -0
- package/dist/hooks/useHotkeys.d.ts +12 -0
- package/dist/hooks/useHotkeys.js +57 -0
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +6 -0
- package/dist/hooks/useIsomorphicLayoutEffect.js +8 -0
- package/dist/hooks/useListFocus.d.ts +15 -0
- package/dist/hooks/useListFocus.js +61 -0
- package/dist/hooks/useMediaQuery.d.ts +5 -0
- package/dist/hooks/useMediaQuery.js +24 -0
- package/dist/hooks/useScrollLock.d.ts +5 -0
- package/dist/hooks/useScrollLock.js +29 -0
- package/dist/i18n/Internationalization.d.ts +28 -0
- package/dist/i18n/Internationalization.doc.d.ts +11 -0
- package/dist/i18n/Internationalization.doc.js +21 -0
- package/dist/i18n/Internationalization.js +52 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +3 -0
- package/dist/i18n/messages.d.ts +29 -0
- package/dist/i18n/messages.js +29 -0
- package/dist/index.d.ts +93 -1
- package/dist/index.js +92 -0
- package/dist/navigation/LinkProvider.d.ts +17 -1
- package/dist/navigation/LinkProvider.js +39 -2
- package/dist/scrolling/index.d.ts +1 -0
- package/dist/scrolling/index.js +2 -0
- package/dist/scrolling/scrolling.d.ts +22 -0
- package/dist/scrolling/scrolling.js +26 -0
- package/dist/styles/global.stylex.d.ts +1 -0
- package/dist/styles/global.stylex.js +1 -0
- package/dist/styles/stylex.css +472 -33
- package/dist/theme/Theme.d.ts +24 -1
- package/dist/theme/Theme.js +46 -2
- package/dist/theme/index.d.ts +1 -1
- package/dist/tokens/contracts.d.ts +9 -2
- package/dist/tokens/contracts.js +9 -2
- package/dist/utils/clamp.d.ts +2 -0
- package/dist/utils/clamp.js +5 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/mergeIds.d.ts +6 -0
- package/dist/utils/mergeIds.js +10 -0
- package/dist/utils/resolveInvalid.d.ts +6 -0
- package/dist/utils/resolveInvalid.js +9 -0
- package/package.json +1 -1
- package/src/Alert/Alert.tsx +1 -0
- package/src/AlertDialog/AlertDialog.doc.ts +22 -0
- package/src/AlertDialog/AlertDialog.tsx +18 -0
- package/src/AlertDialog/index.ts +1 -0
- package/src/AppShell/AppShell.doc.ts +30 -0
- package/src/AppShell/AppShell.tsx +93 -0
- package/src/AppShell/index.ts +1 -0
- package/src/AspectRatio/AspectRatio.doc.ts +15 -0
- package/src/AspectRatio/AspectRatio.tsx +47 -0
- package/src/AspectRatio/index.ts +1 -0
- package/src/AsyncState/AsyncState.tsx +42 -1
- package/src/Avatar/Avatar.doc.ts +16 -0
- package/src/Avatar/Avatar.tsx +100 -0
- package/src/Avatar/index.ts +1 -0
- package/src/AvatarGroup/AvatarGroup.doc.ts +17 -0
- package/src/AvatarGroup/AvatarGroup.tsx +124 -0
- package/src/AvatarGroup/index.ts +5 -0
- package/src/Badge/Badge.tsx +1 -0
- package/src/Banner/Banner.doc.ts +17 -0
- package/src/Banner/Banner.tsx +87 -0
- package/src/Banner/index.ts +1 -0
- package/src/Blockquote/Blockquote.doc.ts +15 -0
- package/src/Blockquote/Blockquote.tsx +55 -0
- package/src/Blockquote/index.ts +1 -0
- package/src/BottomSheet/BottomSheet.doc.ts +18 -0
- package/src/BottomSheet/BottomSheet.tsx +119 -0
- package/src/BottomSheet/index.ts +1 -0
- package/src/BottomSheetSwitcher/BottomSheetSwitcher.doc.ts +21 -0
- package/src/BottomSheetSwitcher/BottomSheetSwitcher.tsx +166 -0
- package/src/BottomSheetSwitcher/index.ts +5 -0
- package/src/Box/Box.doc.ts +15 -0
- package/src/Box/Box.tsx +98 -0
- package/src/Box/index.ts +1 -0
- package/src/Breadcrumbs/Breadcrumbs.doc.ts +18 -0
- package/src/Breadcrumbs/Breadcrumbs.tsx +124 -0
- package/src/Breadcrumbs/index.ts +5 -0
- package/src/Button/Button.tsx +36 -9
- package/src/ButtonGroup/ButtonGroup.doc.ts +19 -0
- package/src/ButtonGroup/ButtonGroup.tsx +52 -0
- package/src/ButtonGroup/index.ts +1 -0
- package/src/Calendar/Calendar.doc.ts +28 -0
- package/src/Calendar/Calendar.tsx +425 -0
- package/src/Calendar/index.ts +1 -0
- package/src/Card/Card.tsx +1 -1
- package/src/CardFooter/CardFooter.tsx +5 -5
- package/src/CardHeader/CardHeader.tsx +5 -5
- package/src/Carousel/Carousel.doc.ts +20 -0
- package/src/Carousel/Carousel.tsx +144 -0
- package/src/Carousel/index.ts +1 -0
- package/src/Chat/Chat.doc.ts +94 -0
- package/src/Chat/Chat.tsx +534 -0
- package/src/Chat/index.ts +19 -0
- package/src/CheckboxInput/CheckboxInput.doc.ts +26 -0
- package/src/CheckboxInput/CheckboxInput.tsx +276 -0
- package/src/CheckboxInput/index.ts +1 -0
- package/src/CheckboxList/CheckboxList.doc.ts +22 -0
- package/src/CheckboxList/CheckboxList.tsx +114 -0
- package/src/CheckboxList/index.ts +5 -0
- package/src/Citation/Citation.doc.ts +14 -0
- package/src/Citation/Citation.tsx +56 -0
- package/src/Citation/index.ts +1 -0
- package/src/ClickableCard/ClickableCard.doc.ts +10 -0
- package/src/ClickableCard/ClickableCard.tsx +79 -0
- package/src/ClickableCard/index.ts +1 -0
- package/src/Code/Code.doc.ts +10 -0
- package/src/Code/Code.tsx +31 -0
- package/src/Code/index.ts +1 -0
- package/src/CodeBlock/CodeBlock.doc.ts +21 -0
- package/src/CodeBlock/CodeBlock.tsx +122 -0
- package/src/CodeBlock/index.ts +1 -0
- package/src/Collapsible/Collapsible.doc.ts +18 -0
- package/src/Collapsible/Collapsible.tsx +165 -0
- package/src/Collapsible/index.ts +1 -0
- package/src/CommandPalette/CommandPalette.doc.ts +19 -0
- package/src/CommandPalette/CommandPalette.tsx +326 -0
- package/src/CommandPalette/index.ts +5 -0
- package/src/ComplexSelector/ComplexSelector.doc.ts +22 -0
- package/src/ComplexSelector/ComplexSelector.tsx +213 -0
- package/src/ComplexSelector/index.ts +5 -0
- package/src/ContextMenu/ContextMenu.doc.ts +18 -0
- package/src/ContextMenu/ContextMenu.tsx +61 -0
- package/src/ContextMenu/index.ts +1 -0
- package/src/DateInput/DateInput.doc.ts +16 -0
- package/src/DateInput/DateInput.tsx +9 -0
- package/src/DateInput/TemporalInput.tsx +305 -0
- package/src/DateInput/index.ts +6 -0
- package/src/DatePicker/DatePicker.doc.ts +21 -0
- package/src/DatePicker/DatePicker.tsx +138 -0
- package/src/DatePicker/index.ts +1 -0
- package/src/DateRangeInput/DateRangeInput.doc.ts +20 -0
- package/src/DateRangeInput/DateRangeInput.tsx +159 -0
- package/src/DateRangeInput/index.ts +5 -0
- package/src/DateTimeInput/DateTimeInput.doc.ts +16 -0
- package/src/DateTimeInput/DateTimeInput.tsx +9 -0
- package/src/DateTimeInput/index.ts +1 -0
- package/src/Dialog/Dialog.doc.ts +27 -0
- package/src/Dialog/Dialog.tsx +160 -0
- package/src/Dialog/index.ts +6 -0
- package/src/DropdownMenu/DropdownMenu.doc.ts +41 -0
- package/src/DropdownMenu/DropdownMenu.tsx +197 -0
- package/src/DropdownMenu/index.ts +6 -0
- package/src/EmptyState/EmptyState.tsx +29 -6
- package/src/Eyebrow/Eyebrow.doc.ts +16 -0
- package/src/Eyebrow/Eyebrow.tsx +56 -0
- package/src/Eyebrow/index.ts +1 -0
- package/src/Field/Field.tsx +25 -4
- package/src/FieldStatus/FieldStatus.doc.ts +15 -0
- package/src/FieldStatus/FieldStatus.tsx +72 -0
- package/src/FieldStatus/index.ts +1 -0
- package/src/FileInput/FileInput.doc.ts +12 -0
- package/src/FileInput/FileInput.tsx +186 -0
- package/src/FileInput/index.ts +1 -0
- package/src/FormLayout/FormLayout.doc.ts +20 -0
- package/src/FormLayout/FormLayout.tsx +69 -0
- package/src/FormLayout/index.ts +5 -0
- package/src/HStack/HStack.doc.ts +15 -0
- package/src/HStack/HStack.tsx +91 -0
- package/src/HStack/index.ts +6 -0
- package/src/Heading/Heading.tsx +17 -4
- package/src/HoverCard/HoverCard.doc.ts +31 -0
- package/src/HoverCard/HoverCard.tsx +121 -0
- package/src/HoverCard/index.ts +1 -0
- package/src/Icon/Icon.doc.ts +21 -0
- package/src/Icon/Icon.tsx +83 -0
- package/src/Icon/index.ts +1 -0
- package/src/Indicator/Indicator.doc.ts +21 -0
- package/src/Indicator/Indicator.tsx +99 -0
- package/src/Indicator/index.ts +1 -0
- package/src/InputGroup/InputGroup.doc.ts +23 -0
- package/src/InputGroup/InputGroup.tsx +73 -0
- package/src/InputGroup/index.ts +1 -0
- package/src/Item/Item.doc.ts +15 -0
- package/src/Item/Item.tsx +92 -0
- package/src/Item/index.ts +1 -0
- package/src/Kbd/Kbd.doc.ts +10 -0
- package/src/Kbd/Kbd.tsx +38 -0
- package/src/Kbd/index.ts +1 -0
- package/src/Layer/Layer.doc.ts +17 -0
- package/src/Layer/Layer.tsx +37 -0
- package/src/Layer/index.ts +1 -0
- package/src/Layout/Layout.doc.ts +33 -0
- package/src/Layout/Layout.tsx +190 -0
- package/src/Layout/index.ts +1 -0
- package/src/Lightbox/Lightbox.doc.ts +20 -0
- package/src/Lightbox/Lightbox.tsx +114 -0
- package/src/Lightbox/index.ts +1 -0
- package/src/List/List.doc.ts +27 -0
- package/src/List/List.tsx +94 -0
- package/src/List/index.ts +7 -0
- package/src/Markdown/Markdown.doc.ts +14 -0
- package/src/Markdown/Markdown.tsx +115 -0
- package/src/Markdown/index.ts +7 -0
- package/src/Markdown/parse.ts +135 -0
- package/src/MetadataList/MetadataList.doc.ts +15 -0
- package/src/MetadataList/MetadataList.tsx +87 -0
- package/src/MetadataList/index.ts +6 -0
- package/src/MetricGrid/MetricGrid.tsx +31 -9
- package/src/MobileNav/MobileNav.doc.ts +15 -0
- package/src/MobileNav/MobileNav.tsx +169 -0
- package/src/MobileNav/index.ts +1 -0
- package/src/MoreMenu/MoreMenu.doc.ts +19 -0
- package/src/MoreMenu/MoreMenu.tsx +67 -0
- package/src/MoreMenu/index.ts +1 -0
- package/src/MultiSelector/MultiSelector.doc.ts +23 -0
- package/src/MultiSelector/MultiSelector.tsx +89 -0
- package/src/MultiSelector/index.ts +1 -0
- package/src/NavIcon/NavIcon.doc.ts +10 -0
- package/src/NavIcon/NavIcon.tsx +45 -0
- package/src/NavIcon/index.ts +1 -0
- package/src/NavItem/NavItem.doc.ts +16 -0
- package/src/NavItem/NavItem.tsx +146 -0
- package/src/NavItem/index.ts +1 -0
- package/src/NavMenu/NavMenu.doc.ts +18 -0
- package/src/NavMenu/NavMenu.tsx +68 -0
- package/src/NavMenu/index.ts +4 -0
- package/src/NavMenu/orientation.ts +20 -0
- package/src/NumberInput/NumberInput.doc.ts +22 -0
- package/src/NumberInput/NumberInput.tsx +286 -0
- package/src/NumberInput/index.ts +1 -0
- package/src/Numeral/Numeral.doc.ts +10 -0
- package/src/Numeral/Numeral.tsx +34 -0
- package/src/Numeral/index.ts +1 -0
- package/src/Outline/Outline.doc.ts +14 -0
- package/src/Outline/Outline.tsx +124 -0
- package/src/Outline/index.ts +1 -0
- package/src/OverflowList/OverflowList.doc.ts +22 -0
- package/src/OverflowList/OverflowList.tsx +115 -0
- package/src/OverflowList/index.ts +5 -0
- package/src/Overlay/Overlay.doc.ts +23 -0
- package/src/Overlay/Overlay.tsx +122 -0
- package/src/Overlay/index.ts +1 -0
- package/src/Pagination/Pagination.doc.ts +28 -0
- package/src/Pagination/Pagination.tsx +259 -0
- package/src/Pagination/index.ts +1 -0
- package/src/Popover/Popover.doc.ts +27 -0
- package/src/Popover/Popover.tsx +122 -0
- package/src/Popover/index.ts +1 -0
- package/src/PowerSearch/PowerSearch.doc.ts +20 -0
- package/src/PowerSearch/PowerSearch.tsx +235 -0
- package/src/PowerSearch/index.ts +5 -0
- package/src/ProgressBar/ProgressBar.doc.ts +16 -0
- package/src/ProgressBar/ProgressBar.tsx +98 -0
- package/src/ProgressBar/index.ts +1 -0
- package/src/RadioList/RadioList.doc.ts +22 -0
- package/src/RadioList/RadioList.tsx +244 -0
- package/src/RadioList/index.ts +1 -0
- package/src/Resizable/Resizable.doc.ts +24 -0
- package/src/Resizable/Resizable.tsx +118 -0
- package/src/Resizable/index.ts +1 -0
- package/src/ResizeHandle/ResizeHandle.doc.ts +21 -0
- package/src/ResizeHandle/ResizeHandle.tsx +162 -0
- package/src/ResizeHandle/index.ts +5 -0
- package/src/SegmentedControl/SegmentedControl.tsx +36 -7
- package/src/SelectableCard/SelectableCard.doc.ts +16 -0
- package/src/SelectableCard/SelectableCard.tsx +252 -0
- package/src/SelectableCard/index.ts +1 -0
- package/src/Selector/Selector.doc.ts +22 -0
- package/src/Selector/Selector.tsx +206 -0
- package/src/Selector/index.ts +1 -0
- package/src/SideNav/SideNav.doc.ts +29 -0
- package/src/SideNav/SideNav.tsx +110 -0
- package/src/SideNav/index.ts +6 -0
- package/src/Skeleton/Skeleton.doc.ts +1 -1
- package/src/Skeleton/Skeleton.tsx +6 -13
- package/src/Slider/Slider.doc.ts +24 -0
- package/src/Slider/Slider.tsx +264 -0
- package/src/Slider/index.ts +1 -0
- package/src/Spinner/Spinner.tsx +15 -4
- package/src/StatusDot/StatusDot.tsx +13 -2
- package/src/Switch/Switch.doc.ts +19 -0
- package/src/Switch/Switch.tsx +152 -0
- package/src/Switch/index.ts +1 -0
- package/src/TabList/TabList.doc.ts +28 -0
- package/src/TabList/TabList.tsx +151 -0
- package/src/TabList/index.ts +1 -0
- package/src/Table/Table.doc.ts +15 -1
- package/src/Table/Table.tsx +95 -17
- package/src/Text/Text.tsx +1 -0
- package/src/TextArea/TextArea.tsx +21 -4
- package/src/TextInput/TextInput.tsx +11 -3
- package/src/Thumbnail/Thumbnail.doc.ts +20 -0
- package/src/Thumbnail/Thumbnail.tsx +94 -0
- package/src/Thumbnail/index.ts +5 -0
- package/src/TimeInput/TimeInput.doc.ts +16 -0
- package/src/TimeInput/TimeInput.tsx +9 -0
- package/src/TimeInput/index.ts +1 -0
- package/src/Timestamp/Timestamp.doc.ts +15 -0
- package/src/Timestamp/Timestamp.tsx +52 -0
- package/src/Timestamp/index.ts +1 -0
- package/src/Toast/Toast.doc.ts +35 -0
- package/src/Toast/Toast.tsx +271 -0
- package/src/Toast/index.ts +9 -0
- package/src/Toggle/Toggle.tsx +49 -23
- package/src/ToggleButton/ToggleButton.doc.ts +21 -0
- package/src/ToggleButton/ToggleButton.tsx +163 -0
- package/src/ToggleButton/index.ts +1 -0
- package/src/ToggleButtonGroup/ToggleButtonGroup.doc.ts +22 -0
- package/src/ToggleButtonGroup/ToggleButtonGroup.tsx +108 -0
- package/src/ToggleButtonGroup/index.ts +5 -0
- package/src/Token/Token.doc.ts +20 -0
- package/src/Token/Token.tsx +131 -0
- package/src/Token/index.ts +1 -0
- package/src/Tokenizer/Tokenizer.doc.ts +21 -0
- package/src/Tokenizer/Tokenizer.tsx +168 -0
- package/src/Tokenizer/index.ts +1 -0
- package/src/Toolbar/Toolbar.doc.ts +20 -0
- package/src/Toolbar/Toolbar.tsx +74 -0
- package/src/Toolbar/index.ts +1 -0
- package/src/Tooltip/Tooltip.doc.ts +22 -0
- package/src/Tooltip/Tooltip.tsx +166 -0
- package/src/Tooltip/index.ts +1 -0
- package/src/TopNav/TopNav.doc.ts +20 -0
- package/src/TopNav/TopNav.tsx +80 -0
- package/src/TopNav/index.ts +1 -0
- package/src/TopNavMegaMenu/TopNavMegaMenu.doc.ts +36 -0
- package/src/TopNavMegaMenu/TopNavMegaMenu.tsx +251 -0
- package/src/TopNavMegaMenu/index.ts +7 -0
- package/src/TopNavMenu/TopNavMenu.doc.ts +22 -0
- package/src/TopNavMenu/TopNavMenu.tsx +166 -0
- package/src/TopNavMenu/index.ts +1 -0
- package/src/TreeList/TreeList.doc.ts +20 -0
- package/src/TreeList/TreeList.tsx +265 -0
- package/src/TreeList/index.ts +1 -0
- package/src/Typeahead/Typeahead.doc.ts +22 -0
- package/src/Typeahead/Typeahead.tsx +312 -0
- package/src/Typeahead/index.ts +5 -0
- package/src/TypeaheadItem/TypeaheadItem.doc.ts +18 -0
- package/src/TypeaheadItem/TypeaheadItem.tsx +105 -0
- package/src/TypeaheadItem/index.ts +1 -0
- package/src/VStack/VStack.doc.ts +13 -0
- package/src/VStack/VStack.tsx +12 -0
- package/src/VStack/index.ts +1 -0
- package/src/authoring.stylex.ts +7 -0
- package/src/docs/index.ts +306 -0
- package/src/hooks/focusableSelector.ts +65 -0
- package/src/hooks/index.ts +31 -0
- package/src/hooks/useAnchoredPosition.ts +176 -0
- package/src/hooks/useAnnounce.ts +49 -0
- package/src/hooks/useClipboard.ts +48 -0
- package/src/hooks/useDevWarning.ts +24 -0
- package/src/hooks/useFocusTrap.ts +62 -0
- package/src/hooks/useHotkeys.ts +81 -0
- package/src/hooks/useIsomorphicLayoutEffect.ts +8 -0
- package/src/hooks/useListFocus.ts +75 -0
- package/src/hooks/useMediaQuery.ts +35 -0
- package/src/hooks/useScrollLock.ts +28 -0
- package/src/i18n/Internationalization.doc.ts +16 -0
- package/src/i18n/Internationalization.tsx +66 -0
- package/src/i18n/index.ts +8 -0
- package/src/i18n/messages.ts +51 -0
- package/src/index.ts +271 -0
- package/src/navigation/LinkProvider.tsx +58 -4
- package/src/scrolling/index.ts +1 -0
- package/src/scrolling/scrolling.ts +25 -0
- package/src/styles/global.stylex.ts +1 -0
- package/src/theme/Theme.tsx +66 -3
- package/src/theme/index.ts +1 -0
- package/src/tokens/contracts.ts +16 -2
- package/src/utils/clamp.ts +4 -0
- package/src/utils/index.ts +3 -0
- package/src/utils/mergeIds.ts +11 -0
- package/src/utils/resolveInvalid.ts +10 -0
- package/dist/components/Alert.d.ts +0 -7
- package/dist/components/Alert.doc.js +0 -15
- package/dist/components/Alert.js +0 -149
- package/dist/components/AsyncState.d.ts +0 -30
- package/dist/components/AsyncState.doc.js +0 -16
- package/dist/components/AsyncState.js +0 -36
- package/dist/components/Badge.d.ts +0 -10
- package/dist/components/Badge.doc.js +0 -12
- package/dist/components/Badge.js +0 -58
- package/dist/components/Button.d.ts +0 -18
- package/dist/components/Button.doc.js +0 -18
- package/dist/components/Button.js +0 -151
- package/dist/components/Card.d.ts +0 -6
- package/dist/components/Card.doc.js +0 -15
- package/dist/components/Card.js +0 -41
- package/dist/components/CardFooter.d.ts +0 -3
- package/dist/components/CardFooter.doc.d.ts +0 -11
- package/dist/components/CardFooter.doc.js +0 -12
- package/dist/components/CardFooter.js +0 -16
- package/dist/components/CardHeader.d.ts +0 -3
- package/dist/components/CardHeader.doc.d.ts +0 -11
- package/dist/components/CardHeader.doc.js +0 -12
- package/dist/components/CardHeader.js +0 -16
- package/dist/components/Center.d.ts +0 -3
- package/dist/components/Center.doc.d.ts +0 -11
- package/dist/components/Center.doc.js +0 -12
- package/dist/components/Center.js +0 -15
- package/dist/components/Divider.d.ts +0 -3
- package/dist/components/Divider.doc.d.ts +0 -11
- package/dist/components/Divider.doc.js +0 -12
- package/dist/components/Divider.js +0 -12
- package/dist/components/EmptyState.d.ts +0 -11
- package/dist/components/EmptyState.doc.d.ts +0 -16
- package/dist/components/EmptyState.doc.js +0 -25
- package/dist/components/EmptyState.js +0 -55
- package/dist/components/Field.d.ts +0 -21
- package/dist/components/Field.doc.d.ts +0 -16
- package/dist/components/Field.doc.js +0 -28
- package/dist/components/Field.js +0 -117
- package/dist/components/Grid.d.ts +0 -7
- package/dist/components/Grid.doc.js +0 -15
- package/dist/components/Grid.js +0 -76
- package/dist/components/Heading.d.ts +0 -293
- package/dist/components/Heading.doc.d.ts +0 -16
- package/dist/components/Heading.doc.js +0 -19
- package/dist/components/Heading.js +0 -46
- package/dist/components/IconButton.d.ts +0 -9
- package/dist/components/IconButton.doc.d.ts +0 -16
- package/dist/components/IconButton.doc.js +0 -22
- package/dist/components/IconButton.js +0 -11
- package/dist/components/MetricGrid.d.ts +0 -10
- package/dist/components/MetricGrid.doc.d.ts +0 -12
- package/dist/components/MetricGrid.doc.js +0 -13
- package/dist/components/MetricGrid.js +0 -37
- package/dist/components/Section.d.ts +0 -6
- package/dist/components/Section.doc.d.ts +0 -11
- package/dist/components/Section.doc.js +0 -12
- package/dist/components/Section.js +0 -49
- package/dist/components/SegmentedControl.d.ts +0 -31
- package/dist/components/SegmentedControl.doc.d.ts +0 -16
- package/dist/components/SegmentedControl.doc.js +0 -34
- package/dist/components/SegmentedControl.js +0 -108
- package/dist/components/Skeleton.d.ts +0 -5
- package/dist/components/Skeleton.doc.d.ts +0 -11
- package/dist/components/Skeleton.doc.js +0 -12
- package/dist/components/Skeleton.js +0 -20
- package/dist/components/Spinner.d.ts +0 -6
- package/dist/components/Spinner.doc.d.ts +0 -12
- package/dist/components/Spinner.doc.js +0 -13
- package/dist/components/Spinner.js +0 -25
- package/dist/components/Stack.d.ts +0 -7
- package/dist/components/Stack.doc.d.ts +0 -11
- package/dist/components/Stack.doc.js +0 -15
- package/dist/components/StatusDot.d.ts +0 -8
- package/dist/components/StatusDot.doc.d.ts +0 -16
- package/dist/components/StatusDot.doc.js +0 -16
- package/dist/components/StatusDot.js +0 -46
- package/dist/components/Table.d.ts +0 -20
- package/dist/components/Table.doc.js +0 -94
- package/dist/components/Table.js +0 -205
- package/dist/components/Text.d.ts +0 -7
- package/dist/components/Text.doc.js +0 -15
- package/dist/components/Text.js +0 -50
- package/dist/components/TextArea.d.ts +0 -16
- package/dist/components/TextArea.doc.d.ts +0 -11
- package/dist/components/TextArea.doc.js +0 -30
- package/dist/components/TextArea.js +0 -47
- package/dist/components/TextInput.d.ts +0 -16
- package/dist/components/TextInput.doc.d.ts +0 -11
- package/dist/components/TextInput.doc.js +0 -30
- package/dist/components/TextInput.js +0 -49
- package/dist/components/Toggle.d.ts +0 -16
- package/dist/components/Toggle.doc.d.ts +0 -11
- package/dist/components/Toggle.doc.js +0 -21
- package/dist/components/Toggle.js +0 -64
- package/dist/components/VisuallyHidden.d.ts +0 -3
- package/dist/components/VisuallyHidden.doc.d.ts +0 -11
- package/dist/components/VisuallyHidden.doc.js +0 -12
- package/dist/components/VisuallyHidden.js +0 -15
- package/dist/components/index.d.ts +0 -27
- package/dist/components/index.js +0 -28
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import * as stylex from '@stylexjs/stylex';
|
|
2
|
+
import type {ChangeEvent, ReactNode, SelectHTMLAttributes} from 'react';
|
|
3
|
+
|
|
4
|
+
import {semanticTokens} from '../authoring.stylex.js';
|
|
5
|
+
import {useFieldControl} from '../Field/index.js';
|
|
6
|
+
|
|
7
|
+
const styles = stylex.create({
|
|
8
|
+
// An input sinks below the card it sits on, and a select is an input: the
|
|
9
|
+
// muted fill and the strong hairline are what put it on the same rung as the
|
|
10
|
+
// text fields it shares a form with. Painted on `colorSurface` it read as a
|
|
11
|
+
// card among wells.
|
|
12
|
+
// The well is the frame, because the mark that says "this opens" is ours
|
|
13
|
+
// now. Left native, a select wore whichever arrow the platform draws — a
|
|
14
|
+
// blue chevron on one, a grey triangle on another — in the corner of a
|
|
15
|
+
// field this system had otherwise drawn to the hairline.
|
|
16
|
+
frame: {
|
|
17
|
+
alignItems: 'stretch',
|
|
18
|
+
backgroundColor: semanticTokens.colorSurfaceMuted,
|
|
19
|
+
borderColor: semanticTokens.borderStrong,
|
|
20
|
+
borderRadius: semanticTokens.radiusElement,
|
|
21
|
+
borderStyle: semanticTokens.borderStyle,
|
|
22
|
+
borderWidth: semanticTokens.borderWidth,
|
|
23
|
+
boxSizing: 'border-box',
|
|
24
|
+
display: 'flex',
|
|
25
|
+
height: semanticTokens.sizeControlMd,
|
|
26
|
+
overflow: 'hidden',
|
|
27
|
+
position: 'relative',
|
|
28
|
+
transitionDuration: semanticTokens.durationFast,
|
|
29
|
+
transitionProperty: 'background-color, border-color',
|
|
30
|
+
transitionTimingFunction: semanticTokens.easingStandard,
|
|
31
|
+
width: '100%',
|
|
32
|
+
':focus-within': {
|
|
33
|
+
borderColor: semanticTokens.borderInteractive,
|
|
34
|
+
outlineColor: semanticTokens.colorFocus,
|
|
35
|
+
outlineOffset: semanticTokens.focusOffset,
|
|
36
|
+
outlineStyle: semanticTokens.borderStyle,
|
|
37
|
+
outlineWidth: semanticTokens.focusWidth,
|
|
38
|
+
},
|
|
39
|
+
':hover': {borderColor: semanticTokens.borderInteractive},
|
|
40
|
+
},
|
|
41
|
+
frameDisabled: {
|
|
42
|
+
backgroundColor: semanticTokens.colorDisabledSurface,
|
|
43
|
+
borderColor: semanticTokens.borderDisabled,
|
|
44
|
+
':hover': {borderColor: semanticTokens.borderDisabled},
|
|
45
|
+
},
|
|
46
|
+
frameInvalid: {
|
|
47
|
+
borderColor: semanticTokens.statusDangerText,
|
|
48
|
+
':focus-within': {borderColor: semanticTokens.statusDangerText},
|
|
49
|
+
':hover': {borderColor: semanticTokens.statusDangerText},
|
|
50
|
+
},
|
|
51
|
+
// The chevron: two edges of an empty square stood on a corner, the same way
|
|
52
|
+
// the checkbox draws its tick and the number field its steps. It takes its
|
|
53
|
+
// colour from the palette, which is the whole point of not letting the
|
|
54
|
+
// engine draw it. `aria-hidden`, because the select already announces that
|
|
55
|
+
// it is a select.
|
|
56
|
+
chevron: {
|
|
57
|
+
borderBlockEndColor: semanticTokens.colorTextSecondary,
|
|
58
|
+
borderBlockEndStyle: semanticTokens.borderStyle,
|
|
59
|
+
borderBlockEndWidth: semanticTokens.borderWidth,
|
|
60
|
+
borderInlineEndColor: semanticTokens.colorTextSecondary,
|
|
61
|
+
borderInlineEndStyle: semanticTokens.borderStyle,
|
|
62
|
+
borderInlineEndWidth: semanticTokens.borderWidth,
|
|
63
|
+
blockSize: semanticTokens.spacingSm,
|
|
64
|
+
inlineSize: semanticTokens.spacingSm,
|
|
65
|
+
insetBlockStart: '50%',
|
|
66
|
+
insetInlineEnd: semanticTokens.spacingSm,
|
|
67
|
+
pointerEvents: 'none',
|
|
68
|
+
position: 'absolute',
|
|
69
|
+
transform: 'translateY(-70%) rotate(45deg)',
|
|
70
|
+
},
|
|
71
|
+
chevronDisabled: {
|
|
72
|
+
borderBlockEndColor: semanticTokens.colorDisabledText,
|
|
73
|
+
borderInlineEndColor: semanticTokens.colorDisabledText,
|
|
74
|
+
},
|
|
75
|
+
control: {
|
|
76
|
+
appearance: 'none',
|
|
77
|
+
backgroundColor: 'transparent',
|
|
78
|
+
borderStyle: 'none',
|
|
79
|
+
borderWidth: 0,
|
|
80
|
+
boxSizing: 'border-box',
|
|
81
|
+
color: semanticTokens.colorText,
|
|
82
|
+
cursor: 'pointer',
|
|
83
|
+
fontFamily: semanticTokens.fontFamilyBody,
|
|
84
|
+
fontSize: semanticTokens.fontSizeMd,
|
|
85
|
+
letterSpacing: semanticTokens.letterSpacingBody,
|
|
86
|
+
lineHeight: semanticTokens.lineHeightBody,
|
|
87
|
+
paddingBlock: semanticTokens.spacingXs,
|
|
88
|
+
// Trailing room for the chevron: without it the longest option ran under
|
|
89
|
+
// the mark that says the field opens.
|
|
90
|
+
paddingInlineEnd: `calc(${semanticTokens.spacingSm} + ${semanticTokens.spacingLg})`,
|
|
91
|
+
paddingInlineStart: semanticTokens.spacingSm,
|
|
92
|
+
width: '100%',
|
|
93
|
+
':disabled': {color: semanticTokens.colorDisabledText, cursor: 'default'},
|
|
94
|
+
':focus-visible': {outlineStyle: 'none'},
|
|
95
|
+
},
|
|
96
|
+
invalid: {
|
|
97
|
+
borderColor: semanticTokens.statusDangerText,
|
|
98
|
+
':focus-visible': {borderColor: semanticTokens.statusDangerText},
|
|
99
|
+
':hover:not(:disabled)': {borderColor: semanticTokens.statusDangerText},
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
/** One option in a `Selector`. */
|
|
104
|
+
export interface SelectorOption {
|
|
105
|
+
readonly disabled?: boolean;
|
|
106
|
+
readonly label: ReactNode;
|
|
107
|
+
readonly value: string;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
type SharedSelectorProps = Omit<
|
|
111
|
+
SelectHTMLAttributes<HTMLSelectElement>,
|
|
112
|
+
'children' | 'className' | 'defaultValue' | 'onChange' | 'value'
|
|
113
|
+
> & {
|
|
114
|
+
readonly onValueChange?: (value: string) => void;
|
|
115
|
+
readonly options: readonly SelectorOption[];
|
|
116
|
+
readonly placeholder?: string;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
type ControlledSelectorProps = SharedSelectorProps & {
|
|
120
|
+
readonly defaultValue?: never;
|
|
121
|
+
readonly onValueChange: (value: string) => void;
|
|
122
|
+
readonly value: string;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
type UncontrolledSelectorProps = SharedSelectorProps & {
|
|
126
|
+
readonly defaultValue?: string;
|
|
127
|
+
readonly value?: never;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
/** Props for choosing one option from a closed list. */
|
|
131
|
+
export type SelectorProps = ControlledSelectorProps | UncontrolledSelectorProps;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Chooses one option from a closed list using the native control, so the
|
|
135
|
+
* platform supplies its own keyboard, touch, and screen-reader behaviour.
|
|
136
|
+
*/
|
|
137
|
+
export function Selector({
|
|
138
|
+
'aria-describedby': ariaDescribedBy,
|
|
139
|
+
'aria-invalid': ariaInvalid,
|
|
140
|
+
disabled,
|
|
141
|
+
id,
|
|
142
|
+
onValueChange,
|
|
143
|
+
options,
|
|
144
|
+
placeholder,
|
|
145
|
+
required,
|
|
146
|
+
...props
|
|
147
|
+
}: SelectorProps) {
|
|
148
|
+
const field = useFieldControl();
|
|
149
|
+
const describedBy =
|
|
150
|
+
[field?.describedBy, ariaDescribedBy].filter(Boolean).join(' ') ||
|
|
151
|
+
undefined;
|
|
152
|
+
const resolvedInvalid = ariaInvalid ?? field?.invalid;
|
|
153
|
+
const invalid =
|
|
154
|
+
resolvedInvalid !== undefined &&
|
|
155
|
+
resolvedInvalid !== false &&
|
|
156
|
+
resolvedInvalid !== 'false';
|
|
157
|
+
|
|
158
|
+
function handleChange(event: ChangeEvent<HTMLSelectElement>) {
|
|
159
|
+
onValueChange?.(event.currentTarget.value);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return (
|
|
163
|
+
<span
|
|
164
|
+
{...stylex.props(
|
|
165
|
+
styles.frame,
|
|
166
|
+
invalid && !disabled ? styles.frameInvalid : undefined,
|
|
167
|
+
disabled ? styles.frameDisabled : undefined,
|
|
168
|
+
)}
|
|
169
|
+
>
|
|
170
|
+
<select
|
|
171
|
+
{...props}
|
|
172
|
+
aria-describedby={describedBy}
|
|
173
|
+
aria-invalid={resolvedInvalid}
|
|
174
|
+
disabled={disabled}
|
|
175
|
+
id={field?.controlId ?? id}
|
|
176
|
+
onChange={handleChange}
|
|
177
|
+
required={required ?? field?.required}
|
|
178
|
+
{...stylex.props(styles.control)}
|
|
179
|
+
>
|
|
180
|
+
{placeholder === undefined ? null : (
|
|
181
|
+
<option disabled value="">
|
|
182
|
+
{placeholder}
|
|
183
|
+
</option>
|
|
184
|
+
)}
|
|
185
|
+
{options.map(
|
|
186
|
+
({disabled: optionDisabled, label, value: optionValue}) => (
|
|
187
|
+
<option
|
|
188
|
+
disabled={optionDisabled ?? false}
|
|
189
|
+
key={optionValue}
|
|
190
|
+
value={optionValue}
|
|
191
|
+
>
|
|
192
|
+
{label}
|
|
193
|
+
</option>
|
|
194
|
+
),
|
|
195
|
+
)}
|
|
196
|
+
</select>
|
|
197
|
+
<span
|
|
198
|
+
aria-hidden="true"
|
|
199
|
+
{...stylex.props(
|
|
200
|
+
styles.chevron,
|
|
201
|
+
disabled ? styles.chevronDisabled : undefined,
|
|
202
|
+
)}
|
|
203
|
+
/>
|
|
204
|
+
</span>
|
|
205
|
+
);
|
|
206
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {Selector, type SelectorOption, type SelectorProps} from './Selector.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type {ComponentDoc} from '../docs/types.js';
|
|
2
|
+
|
|
3
|
+
export const sideNavDoc = {
|
|
4
|
+
name: 'SideNav',
|
|
5
|
+
description: 'Holds persistent navigation beside the main content.',
|
|
6
|
+
props: [
|
|
7
|
+
{name: 'children', description: 'Supplies the navigation sections.'},
|
|
8
|
+
{name: 'footer', description: 'Pins content to the end of the rail.'},
|
|
9
|
+
],
|
|
10
|
+
inheritedProps: [
|
|
11
|
+
'HTMLAttributes<HTMLDivElement> except children and className',
|
|
12
|
+
],
|
|
13
|
+
example: '<SideNav><SideNavSection title="Work">…</SideNavSection></SideNav>',
|
|
14
|
+
storyId: 'core-side-nav--default',
|
|
15
|
+
} satisfies ComponentDoc;
|
|
16
|
+
|
|
17
|
+
export const sideNavSectionDoc = {
|
|
18
|
+
name: 'SideNavSection',
|
|
19
|
+
description: 'Groups related destinations under an optional heading.',
|
|
20
|
+
props: [
|
|
21
|
+
{name: 'children', description: 'Supplies the destinations.'},
|
|
22
|
+
{name: 'title', description: 'Names the group.'},
|
|
23
|
+
],
|
|
24
|
+
inheritedProps: [
|
|
25
|
+
'HTMLAttributes<HTMLDivElement> except children, className, and title',
|
|
26
|
+
],
|
|
27
|
+
example: '<SideNavSection title="Work">…</SideNavSection>',
|
|
28
|
+
storyId: 'core-side-nav--default',
|
|
29
|
+
} satisfies ComponentDoc;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as stylex from '@stylexjs/stylex';
|
|
2
|
+
import type {HTMLAttributes, ReactNode} from 'react';
|
|
3
|
+
|
|
4
|
+
import {semanticTokens} from '../authoring.stylex.js';
|
|
5
|
+
|
|
6
|
+
// A rail wide enough for two words and a glyph. The scale cannot name it, so
|
|
7
|
+
// it is built from the scale rather than written as a length.
|
|
8
|
+
const railWidth = `calc(9 * ${semanticTokens.spacing2xl})`;
|
|
9
|
+
|
|
10
|
+
const styles = stylex.create({
|
|
11
|
+
// The rail is the binding edge of the same sheet the page is printed on, not
|
|
12
|
+
// a panel standing on it: the strong rule down its inline end is the fold,
|
|
13
|
+
// and it is the only thing that parts the two. A `colorSurface` rail put the
|
|
14
|
+
// navigation on the same rung as the cards it leads to.
|
|
15
|
+
rail: {
|
|
16
|
+
backgroundColor: semanticTokens.colorCanvas,
|
|
17
|
+
borderInlineEndColor: semanticTokens.borderStrong,
|
|
18
|
+
borderInlineEndStyle: semanticTokens.borderStyle,
|
|
19
|
+
borderInlineEndWidth: semanticTokens.borderWidth,
|
|
20
|
+
display: 'flex',
|
|
21
|
+
flexDirection: 'column',
|
|
22
|
+
fontFamily: semanticTokens.fontFamilyBody,
|
|
23
|
+
rowGap: semanticTokens.spacingLg,
|
|
24
|
+
paddingBlockEnd: semanticTokens.spacingLg,
|
|
25
|
+
paddingBlockStart: semanticTokens.spacingMd,
|
|
26
|
+
paddingInline: semanticTokens.spacingMd,
|
|
27
|
+
width: railWidth,
|
|
28
|
+
},
|
|
29
|
+
// An eyebrow: the smallest size, opened right up, in the second rank of ink
|
|
30
|
+
// and cut in the display face — group labels and table headers are the two
|
|
31
|
+
// places this system sets mincho, because a run of destinations wants a
|
|
32
|
+
// caption above it rather than another destination. It is indented to the
|
|
33
|
+
// destinations' own text, so the labels and the words they name share a
|
|
34
|
+
// margin and the selection mark keeps the edge to itself.
|
|
35
|
+
heading: {
|
|
36
|
+
color: semanticTokens.colorTextSecondary,
|
|
37
|
+
fontFamily: semanticTokens.fontFamilyDisplay,
|
|
38
|
+
fontSize: semanticTokens.fontSizeXs,
|
|
39
|
+
fontSynthesis: 'none',
|
|
40
|
+
fontWeight: semanticTokens.fontWeightMedium,
|
|
41
|
+
letterSpacing: semanticTokens.letterSpacingEyebrow,
|
|
42
|
+
lineHeight: semanticTokens.lineHeightHeading,
|
|
43
|
+
margin: 0,
|
|
44
|
+
paddingBlockEnd: semanticTokens.spacingXs,
|
|
45
|
+
paddingInlineEnd: 0,
|
|
46
|
+
paddingInlineStart: semanticTokens.spacingMd,
|
|
47
|
+
},
|
|
48
|
+
// The rows tile: one hairline apart, so the run reads as a single column of
|
|
49
|
+
// destinations rather than a stack of separated buttons.
|
|
50
|
+
section: {
|
|
51
|
+
display: 'flex',
|
|
52
|
+
flexDirection: 'column',
|
|
53
|
+
rowGap: semanticTokens.borderWidth,
|
|
54
|
+
},
|
|
55
|
+
// `auto` pins the block to the end of the rail; it is a position, not the
|
|
56
|
+
// gutter between siblings, which the rail's own gap already owns.
|
|
57
|
+
footer: {
|
|
58
|
+
borderBlockStartColor: semanticTokens.borderDefault,
|
|
59
|
+
borderBlockStartStyle: semanticTokens.borderStyle,
|
|
60
|
+
borderBlockStartWidth: semanticTokens.borderWidth,
|
|
61
|
+
marginBlockStart: 'auto',
|
|
62
|
+
paddingBlockStart: semanticTokens.spacingMd,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
/** Props for the vertical navigation rail. */
|
|
67
|
+
export interface SideNavProps extends Omit<
|
|
68
|
+
HTMLAttributes<HTMLDivElement>,
|
|
69
|
+
'children' | 'className'
|
|
70
|
+
> {
|
|
71
|
+
readonly children: ReactNode;
|
|
72
|
+
readonly footer?: ReactNode;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/** Holds persistent navigation beside the main content. */
|
|
76
|
+
export function SideNav({children, footer, ...props}: SideNavProps) {
|
|
77
|
+
return (
|
|
78
|
+
<div {...props} {...stylex.props(styles.rail)}>
|
|
79
|
+
{children}
|
|
80
|
+
{footer === undefined ? null : (
|
|
81
|
+
<div {...stylex.props(styles.footer)}>{footer}</div>
|
|
82
|
+
)}
|
|
83
|
+
</div>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Props for one titled group inside a `SideNav`. */
|
|
88
|
+
export interface SideNavSectionProps extends Omit<
|
|
89
|
+
HTMLAttributes<HTMLDivElement>,
|
|
90
|
+
'children' | 'className' | 'title'
|
|
91
|
+
> {
|
|
92
|
+
readonly children: ReactNode;
|
|
93
|
+
readonly title?: ReactNode;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Groups related destinations under an optional heading. */
|
|
97
|
+
export function SideNavSection({
|
|
98
|
+
children,
|
|
99
|
+
title,
|
|
100
|
+
...props
|
|
101
|
+
}: SideNavSectionProps) {
|
|
102
|
+
return (
|
|
103
|
+
<div {...props} {...stylex.props(styles.section)}>
|
|
104
|
+
{title === undefined ? null : (
|
|
105
|
+
<p {...stylex.props(styles.heading)}>{title}</p>
|
|
106
|
+
)}
|
|
107
|
+
{children}
|
|
108
|
+
</div>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
@@ -3,7 +3,7 @@ import type {ComponentDoc} from '../docs/types.js';
|
|
|
3
3
|
export const skeletonDoc = {
|
|
4
4
|
name: 'Skeleton',
|
|
5
5
|
description:
|
|
6
|
-
'Displays a decorative or explicitly labelled loading placeholder
|
|
6
|
+
'Displays a decorative or explicitly labelled loading placeholder as a still bar that never pulses.',
|
|
7
7
|
props: [
|
|
8
8
|
{name: 'label', description: 'Optionally announces what is loading.'},
|
|
9
9
|
],
|
|
@@ -3,23 +3,16 @@ import type {HTMLAttributes} from 'react';
|
|
|
3
3
|
|
|
4
4
|
import {semanticTokens} from '../authoring.stylex.js';
|
|
5
5
|
|
|
6
|
-
const pulse = stylex.keyframes({
|
|
7
|
-
'50%': {backgroundColor: semanticTokens.colorSurface},
|
|
8
|
-
});
|
|
9
|
-
|
|
10
6
|
const styles = stylex.create({
|
|
7
|
+
// A bar of timber standing in for ink that has not dried yet. It does not
|
|
8
|
+
// breathe, shimmer or travel: a page of placeholders that pulses turns the
|
|
9
|
+
// wait into the loudest thing on the screen, and the placeholder's whole job
|
|
10
|
+
// is to hold a line quietly until the line arrives.
|
|
11
11
|
base: {
|
|
12
|
-
animationDirection: 'alternate',
|
|
13
|
-
animationDuration: semanticTokens.durationSlow,
|
|
14
|
-
animationIterationCount: 'infinite',
|
|
15
|
-
animationName: {
|
|
16
|
-
default: pulse,
|
|
17
|
-
'@media (prefers-reduced-motion: reduce)': 'none',
|
|
18
|
-
},
|
|
19
|
-
animationTimingFunction: semanticTokens.easingStandard,
|
|
20
12
|
backgroundColor: semanticTokens.colorSurfaceMuted,
|
|
21
13
|
borderRadius: semanticTokens.radiusElement,
|
|
22
|
-
|
|
14
|
+
// The rule of type it stands in for, not the control it might become.
|
|
15
|
+
minHeight: semanticTokens.spacingMd,
|
|
23
16
|
width: '100%',
|
|
24
17
|
},
|
|
25
18
|
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type {ComponentDoc} from '../docs/types.js';
|
|
2
|
+
|
|
3
|
+
export const sliderDoc = {
|
|
4
|
+
name: 'Slider',
|
|
5
|
+
description: 'Chooses a number along a visible range.',
|
|
6
|
+
props: [
|
|
7
|
+
{name: 'defaultValue', description: 'Sets the initial uncontrolled value.'},
|
|
8
|
+
{
|
|
9
|
+
name: 'formatValue',
|
|
10
|
+
description: 'Supplies the text shown and announced for a value.',
|
|
11
|
+
},
|
|
12
|
+
{name: 'max', description: 'Sets the upper bound of the range.'},
|
|
13
|
+
{name: 'min', description: 'Sets the lower bound of the range.'},
|
|
14
|
+
{name: 'onValueChange', description: 'Receives the newly chosen number.'},
|
|
15
|
+
{name: 'step', description: 'Sets the increment between allowed values.'},
|
|
16
|
+
{name: 'value', description: 'Controls the current number.'},
|
|
17
|
+
],
|
|
18
|
+
inheritedProps: [
|
|
19
|
+
'InputHTMLAttributes<HTMLInputElement> except children, className, defaultValue, onChange, type, and value',
|
|
20
|
+
],
|
|
21
|
+
example:
|
|
22
|
+
'<Slider formatValue={(v) => `${v} percent`} onValueChange={setLevel} value={level} />',
|
|
23
|
+
storyId: 'core-slider--default',
|
|
24
|
+
} satisfies ComponentDoc;
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import * as stylex from '@stylexjs/stylex';
|
|
2
|
+
import {
|
|
3
|
+
useState,
|
|
4
|
+
type ChangeEvent,
|
|
5
|
+
type CSSProperties,
|
|
6
|
+
type InputHTMLAttributes,
|
|
7
|
+
} from 'react';
|
|
8
|
+
|
|
9
|
+
import {semanticTokens} from '../authoring.stylex.js';
|
|
10
|
+
import {useFieldControl} from '../Field/index.js';
|
|
11
|
+
import {clamp} from '../utils/index.js';
|
|
12
|
+
|
|
13
|
+
/*
|
|
14
|
+
* A range control is drawn by the engine, and each engine exposes its own
|
|
15
|
+
* pseudo-elements for the parts and ignores the other's — hence the doubled
|
|
16
|
+
* declarations. `appearance: 'none'` on the input is what hands authorship
|
|
17
|
+
* over: without it WebKit keeps painting its own thumb and the one declared
|
|
18
|
+
* here is ignored outright.
|
|
19
|
+
*
|
|
20
|
+
* The filled portion is a gradient on the track rather than a native part,
|
|
21
|
+
* because only Gecko exposes one (`::-moz-range-progress`) and WebKit has no
|
|
22
|
+
* counterpart. Painting it the same way in both engines makes them agree by
|
|
23
|
+
* construction; the Gecko part is then held transparent so it cannot lay a
|
|
24
|
+
* second fill over the gradient. Styling the track at all also stops WebKit
|
|
25
|
+
* painting the `accent-color` fill it would otherwise draw, so `accentColor`
|
|
26
|
+
* has nothing left to colour and is gone.
|
|
27
|
+
*
|
|
28
|
+
* The stop position is data — the current value — so it arrives as an inline
|
|
29
|
+
* custom property, the way `ProgressBar` carries its width.
|
|
30
|
+
*/
|
|
31
|
+
const progressProperty = '--kioku-ui-slider-progress';
|
|
32
|
+
// CSS has no logical direction keyword for a gradient, so this is physical.
|
|
33
|
+
// Under `direction: rtl` the engine flips the control but not the gradient,
|
|
34
|
+
// and the fill would sit on the wrong side.
|
|
35
|
+
//
|
|
36
|
+
// Written out twice rather than built by a helper. StyleX statically evaluates
|
|
37
|
+
// every identifier a style refers to, and a function is not something it can
|
|
38
|
+
// evaluate: a two-argument helper compiled fine through the CLI and failed the
|
|
39
|
+
// consumer that builds this package from source, which is the build that
|
|
40
|
+
// matters because it is the one a user of the library runs.
|
|
41
|
+
const restFill = `linear-gradient(to right, ${semanticTokens.colorAccent} 0 var(${progressProperty}, 0%), ${semanticTokens.colorSurfaceMuted} var(${progressProperty}, 0%) 100%)`;
|
|
42
|
+
const disabledFill = `linear-gradient(to right, ${semanticTokens.colorDisabledText} 0 var(${progressProperty}, 0%), ${semanticTokens.colorDisabledSurface} var(${progressProperty}, 0%) 100%)`;
|
|
43
|
+
|
|
44
|
+
// The knob's size is a relationship to the rule it rides, not a token that
|
|
45
|
+
// happens to look right: the track plus one spacing step of relief on each
|
|
46
|
+
// side, so it always covers the rule and always overhangs it by the same
|
|
47
|
+
// amount. WebKit then lays it out in flow on top of the track rather than
|
|
48
|
+
// centring it, so it is pulled back by half the difference between the two.
|
|
49
|
+
const trackThickness = semanticTokens.spacingSm;
|
|
50
|
+
const thumbRelief = semanticTokens.spacingXs;
|
|
51
|
+
const thumbSize = `calc(${trackThickness} + ${thumbRelief} * 2)`;
|
|
52
|
+
const thumbCentring = `calc((${trackThickness} - ${thumbSize}) / 2)`;
|
|
53
|
+
|
|
54
|
+
const styles = stylex.create({
|
|
55
|
+
// The control and the figure it reports are one field, so the gap between
|
|
56
|
+
// them belongs to this container rather than to a margin on either.
|
|
57
|
+
field: {
|
|
58
|
+
alignItems: 'center',
|
|
59
|
+
display: 'flex',
|
|
60
|
+
gap: semanticTokens.spacingSm,
|
|
61
|
+
},
|
|
62
|
+
/*
|
|
63
|
+
* The value, in the mono face with tabular figures. A slider that does not
|
|
64
|
+
* say where it is stopped is a control you have to guess at, and a
|
|
65
|
+
* proportional readout re-flows the row by a hair on every step, which reads
|
|
66
|
+
* as a wobble. It is secondary ink: it reports the control, it is not the
|
|
67
|
+
* control. `aria-hidden` because the input already announces the same value
|
|
68
|
+
* through `aria-valuetext`.
|
|
69
|
+
*/
|
|
70
|
+
readout: {
|
|
71
|
+
color: semanticTokens.colorTextSecondary,
|
|
72
|
+
flexShrink: 0,
|
|
73
|
+
fontFamily: semanticTokens.fontFamilyMono,
|
|
74
|
+
fontSize: semanticTokens.fontSizeSm,
|
|
75
|
+
fontVariantNumeric: 'tabular-nums',
|
|
76
|
+
letterSpacing: semanticTokens.letterSpacingMono,
|
|
77
|
+
lineHeight: semanticTokens.lineHeightBody,
|
|
78
|
+
textAlign: 'end',
|
|
79
|
+
},
|
|
80
|
+
// Muted, not disabled-text: the track and thumb already carry the disabled
|
|
81
|
+
// paint, and a figure nobody can read is not a softer figure, it is a lost
|
|
82
|
+
// one. Disabled-text on this theme's canvas is 3.85:1.
|
|
83
|
+
readoutDisabled: {color: semanticTokens.colorTextMuted},
|
|
84
|
+
/*
|
|
85
|
+
* There is deliberately no hover state. Every visible part is drawn by the
|
|
86
|
+
* engine, so a hover would have to hand-roll a ring shadow, which rule 2
|
|
87
|
+
* forbids — depth here is a hairline, not an invented one. A native range
|
|
88
|
+
* has no hover affordance worth inventing, and `:focus-visible` plus the
|
|
89
|
+
* disabled treatment carry the state matrix in both engines.
|
|
90
|
+
*/
|
|
91
|
+
control: {
|
|
92
|
+
appearance: 'none',
|
|
93
|
+
backgroundColor: 'transparent',
|
|
94
|
+
blockSize: semanticTokens.sizeHitTarget,
|
|
95
|
+
cursor: 'pointer',
|
|
96
|
+
flexShrink: 1,
|
|
97
|
+
inlineSize: '100%',
|
|
98
|
+
marginBlock: 0,
|
|
99
|
+
marginInline: 0,
|
|
100
|
+
minInlineSize: 0,
|
|
101
|
+
'::-webkit-slider-runnable-track': {
|
|
102
|
+
backgroundColor: semanticTokens.colorSurfaceMuted,
|
|
103
|
+
backgroundImage: restFill,
|
|
104
|
+
blockSize: trackThickness,
|
|
105
|
+
borderRadius: semanticTokens.radiusFull,
|
|
106
|
+
},
|
|
107
|
+
'::-webkit-slider-thumb': {
|
|
108
|
+
appearance: 'none',
|
|
109
|
+
backgroundColor: semanticTokens.colorSurface,
|
|
110
|
+
blockSize: thumbSize,
|
|
111
|
+
borderRadius: semanticTokens.radiusFull,
|
|
112
|
+
boxShadow: semanticTokens.elevationLow,
|
|
113
|
+
inlineSize: thumbSize,
|
|
114
|
+
marginBlockStart: thumbCentring,
|
|
115
|
+
},
|
|
116
|
+
'::-moz-range-track': {
|
|
117
|
+
backgroundColor: semanticTokens.colorSurfaceMuted,
|
|
118
|
+
backgroundImage: restFill,
|
|
119
|
+
blockSize: trackThickness,
|
|
120
|
+
borderRadius: semanticTokens.radiusFull,
|
|
121
|
+
},
|
|
122
|
+
// Held transparent so Gecko's own filled part cannot paint over the
|
|
123
|
+
// gradient the track already carries.
|
|
124
|
+
'::-moz-range-progress': {backgroundColor: 'transparent'},
|
|
125
|
+
'::-moz-range-thumb': {
|
|
126
|
+
backgroundColor: semanticTokens.colorSurface,
|
|
127
|
+
blockSize: thumbSize,
|
|
128
|
+
borderRadius: semanticTokens.radiusFull,
|
|
129
|
+
borderStyle: 'none',
|
|
130
|
+
borderWidth: 0,
|
|
131
|
+
boxShadow: semanticTokens.elevationLow,
|
|
132
|
+
inlineSize: thumbSize,
|
|
133
|
+
},
|
|
134
|
+
':focus-visible': {
|
|
135
|
+
outlineColor: semanticTokens.colorFocus,
|
|
136
|
+
outlineOffset: semanticTokens.focusOffset,
|
|
137
|
+
outlineStyle: semanticTokens.borderStyle,
|
|
138
|
+
outlineWidth: semanticTokens.focusWidth,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
// The engine draws every visible part, so a disabled slider has to restate
|
|
142
|
+
// them rather than tint the element. Driven from React, not from a selector.
|
|
143
|
+
// The fill stays legible: a disabled slider still reports its value.
|
|
144
|
+
disabled: {
|
|
145
|
+
cursor: 'default',
|
|
146
|
+
'::-webkit-slider-runnable-track': {
|
|
147
|
+
backgroundColor: semanticTokens.colorDisabledSurface,
|
|
148
|
+
backgroundImage: disabledFill,
|
|
149
|
+
},
|
|
150
|
+
'::-webkit-slider-thumb': {
|
|
151
|
+
backgroundColor: semanticTokens.colorDisabledText,
|
|
152
|
+
boxShadow: 'none',
|
|
153
|
+
},
|
|
154
|
+
'::-moz-range-track': {
|
|
155
|
+
backgroundColor: semanticTokens.colorDisabledSurface,
|
|
156
|
+
backgroundImage: disabledFill,
|
|
157
|
+
},
|
|
158
|
+
'::-moz-range-thumb': {
|
|
159
|
+
backgroundColor: semanticTokens.colorDisabledText,
|
|
160
|
+
boxShadow: 'none',
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
type SharedSliderProps = Omit<
|
|
166
|
+
InputHTMLAttributes<HTMLInputElement>,
|
|
167
|
+
'children' | 'className' | 'defaultValue' | 'onChange' | 'type' | 'value'
|
|
168
|
+
> & {
|
|
169
|
+
readonly formatValue?: (value: number) => string;
|
|
170
|
+
readonly max?: number;
|
|
171
|
+
readonly min?: number;
|
|
172
|
+
readonly onValueChange?: (value: number) => void;
|
|
173
|
+
readonly step?: number;
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
type ControlledSliderProps = SharedSliderProps & {
|
|
177
|
+
readonly defaultValue?: never;
|
|
178
|
+
readonly onValueChange: (value: number) => void;
|
|
179
|
+
readonly value: number;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
type UncontrolledSliderProps = SharedSliderProps & {
|
|
183
|
+
readonly defaultValue?: number;
|
|
184
|
+
readonly value?: never;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
/** Props for choosing a number along a visible range. */
|
|
188
|
+
export type SliderProps = ControlledSliderProps | UncontrolledSliderProps;
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Chooses a number along a visible range, and states where it is stopped in
|
|
192
|
+
* tabular figures beside the track. `formatValue` supplies both that figure and
|
|
193
|
+
* the spoken text, so "40 percent" can be read and announced where the raw
|
|
194
|
+
* number would not help.
|
|
195
|
+
*/
|
|
196
|
+
export function Slider({
|
|
197
|
+
'aria-describedby': ariaDescribedBy,
|
|
198
|
+
defaultValue,
|
|
199
|
+
disabled,
|
|
200
|
+
formatValue,
|
|
201
|
+
id,
|
|
202
|
+
max = 100,
|
|
203
|
+
min = 0,
|
|
204
|
+
onValueChange,
|
|
205
|
+
step = 1,
|
|
206
|
+
style,
|
|
207
|
+
value,
|
|
208
|
+
...props
|
|
209
|
+
}: SliderProps) {
|
|
210
|
+
const field = useFieldControl();
|
|
211
|
+
const [internalValue, setInternalValue] = useState(defaultValue ?? min);
|
|
212
|
+
const current = value ?? internalValue;
|
|
213
|
+
const describedBy =
|
|
214
|
+
[field?.describedBy, ariaDescribedBy].filter(Boolean).join(' ') ||
|
|
215
|
+
undefined;
|
|
216
|
+
|
|
217
|
+
// Measured from the value the input itself renders, so a controlled and an
|
|
218
|
+
// uncontrolled slider fill alike, and clamped so a value outside the bounds
|
|
219
|
+
// cannot put the gradient stop past either end.
|
|
220
|
+
const span = max - min;
|
|
221
|
+
const filled = span > 0 ? ((clamp(current, min, max) - min) / span) * 100 : 0;
|
|
222
|
+
|
|
223
|
+
function handleChange(event: ChangeEvent<HTMLInputElement>) {
|
|
224
|
+
const next = Number(event.currentTarget.value);
|
|
225
|
+
if (value === undefined) {
|
|
226
|
+
setInternalValue(next);
|
|
227
|
+
}
|
|
228
|
+
onValueChange?.(next);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return (
|
|
232
|
+
<span {...stylex.props(styles.field)}>
|
|
233
|
+
<input
|
|
234
|
+
{...props}
|
|
235
|
+
aria-describedby={describedBy}
|
|
236
|
+
{...(formatValue ? {'aria-valuetext': formatValue(current)} : {})}
|
|
237
|
+
disabled={disabled}
|
|
238
|
+
id={field?.controlId ?? id}
|
|
239
|
+
max={max}
|
|
240
|
+
min={min}
|
|
241
|
+
onChange={handleChange}
|
|
242
|
+
step={step}
|
|
243
|
+
{...stylex.props(
|
|
244
|
+
styles.control,
|
|
245
|
+
disabled ? styles.disabled : undefined,
|
|
246
|
+
)}
|
|
247
|
+
// The stop position is data, so it stays inline — after stylex.props,
|
|
248
|
+
// which would otherwise overwrite the style attribute it is carried in.
|
|
249
|
+
style={{...style, [progressProperty]: `${filled}%`} as CSSProperties}
|
|
250
|
+
type="range"
|
|
251
|
+
value={current}
|
|
252
|
+
/>
|
|
253
|
+
<span
|
|
254
|
+
aria-hidden="true"
|
|
255
|
+
{...stylex.props(
|
|
256
|
+
styles.readout,
|
|
257
|
+
disabled ? styles.readoutDisabled : undefined,
|
|
258
|
+
)}
|
|
259
|
+
>
|
|
260
|
+
{formatValue ? formatValue(current) : String(current)}
|
|
261
|
+
</span>
|
|
262
|
+
</span>
|
|
263
|
+
);
|
|
264
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {Slider, type SliderProps} from './Slider.js';
|