@astryxdesign/core 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +110 -0
- package/README.md +5 -3
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.js +1 -1
- package/dist/AppShell/AppShell.d.ts +2 -20
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +25 -18
- package/dist/AppShell/index.d.ts +20 -1
- package/dist/AppShell/index.d.ts.map +1 -1
- package/dist/AppShell/index.js +14 -0
- package/dist/AspectRatio/AspectRatio.d.ts +1 -1
- package/dist/AspectRatio/AspectRatio.js +1 -1
- package/dist/Avatar/Avatar.d.ts +1 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +4 -4
- package/dist/Avatar/AvatarStatusDot.d.ts +2 -26
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +1 -22
- package/dist/Avatar/index.d.ts +26 -1
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +21 -0
- package/dist/AvatarGroup/AvatarGroup.d.ts +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +4 -8
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +2 -2
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -3
- package/dist/Badge/Badge.d.ts +2 -30
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +2 -17
- package/dist/Badge/index.d.ts +31 -2
- package/dist/Badge/index.d.ts.map +1 -1
- package/dist/Badge/index.js +15 -1
- package/dist/Banner/Banner.d.ts +2 -37
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +6 -34
- package/dist/Banner/index.d.ts +37 -1
- package/dist/Banner/index.d.ts.map +1 -1
- package/dist/Banner/index.js +27 -0
- package/dist/Blockquote/Blockquote.d.ts +1 -1
- package/dist/Blockquote/Blockquote.js +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +4 -3
- package/dist/Breadcrumbs/Breadcrumbs.d.ts +2 -18
- package/dist/Breadcrumbs/Breadcrumbs.d.ts.map +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.js +1 -15
- package/dist/Breadcrumbs/index.d.ts +18 -1
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +14 -0
- package/dist/Button/Button.d.ts +3 -21
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +6 -19
- package/dist/Button/index.d.ts +21 -3
- package/dist/Button/index.d.ts.map +1 -1
- package/dist/Button/index.js +15 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/Calendar/Calendar.js +1 -1
- package/dist/Calendar/index.d.ts +1 -1
- package/dist/Calendar/index.d.ts.map +1 -1
- package/dist/Calendar/index.js +1 -1
- package/dist/Calendar/styles.d.ts +2 -2
- package/dist/Calendar/styles.js +2 -2
- package/dist/Calendar/utils.d.ts +0 -4
- package/dist/Calendar/utils.d.ts.map +1 -1
- package/dist/Calendar/utils.js +1 -8
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.js +1 -1
- package/dist/Carousel/Carousel.d.ts +54 -3
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +82 -15
- package/dist/Carousel/index.d.ts +1 -1
- package/dist/Carousel/index.d.ts.map +1 -1
- package/dist/Center/Center.d.ts +21 -4
- package/dist/Center/Center.d.ts.map +1 -1
- package/dist/Center/Center.js +11 -3
- package/dist/Chat/ChatComposer.d.ts +1 -1
- package/dist/Chat/ChatComposer.js +9 -9
- package/dist/Chat/ChatComposerDrawer.d.ts +1 -1
- package/dist/Chat/ChatComposerDrawer.js +5 -5
- package/dist/Chat/ChatComposerInput.d.ts +1 -1
- package/dist/Chat/ChatComposerInput.js +1 -1
- package/dist/Chat/ChatDictationButton.d.ts +1 -1
- package/dist/Chat/ChatDictationButton.js +1 -1
- package/dist/Chat/ChatLayout.d.ts +8 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayout.js +15 -4
- package/dist/Chat/ChatLayoutScrollButton.d.ts +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +1 -1
- package/dist/Chat/ChatMessage.d.ts +1 -1
- package/dist/Chat/ChatMessage.js +1 -1
- package/dist/Chat/ChatMessageBubble.d.ts +1 -1
- package/dist/Chat/ChatMessageBubble.js +1 -1
- package/dist/Chat/ChatMessageList.d.ts +1 -1
- package/dist/Chat/ChatMessageList.js +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +4 -2
- package/dist/Chat/ChatSystemMessage.d.ts +1 -1
- package/dist/Chat/ChatSystemMessage.js +1 -1
- package/dist/Chat/ChatTokenizedText.d.ts +1 -1
- package/dist/Chat/ChatTokenizedText.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +3 -3
- package/dist/CheckboxList/CheckboxList.d.ts +1 -1
- package/dist/CheckboxList/CheckboxList.js +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +20 -5
- package/dist/Citation/Citation.d.ts +1 -1
- package/dist/Citation/Citation.js +1 -1
- package/dist/ClickableCard/ClickableCard.d.ts +3 -3
- package/dist/ClickableCard/ClickableCard.js +3 -3
- package/dist/Code/Code.d.ts +2 -2
- package/dist/Code/Code.js +2 -2
- package/dist/CodeBlock/CodeBlock.js +2 -2
- package/dist/Collapsible/Collapsible.d.ts +1 -1
- package/dist/Collapsible/Collapsible.js +3 -3
- package/dist/Collapsible/CollapsibleGroup.d.ts +1 -1
- package/dist/Collapsible/CollapsibleGroup.js +1 -1
- package/dist/Collapsible/CollapsibleGroupContext.js +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.js +1 -1
- package/dist/CommandPalette/CommandPaletteEmpty.js +1 -1
- package/dist/CommandPalette/CommandPaletteFooter.js +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +1 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts +2 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +4 -2
- package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +1 -1
- package/dist/CommandPalette/CommandPaletteList.js +1 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts +108 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -0
- package/dist/ComplexSelector/ComplexSelector.js +316 -0
- package/dist/ComplexSelector/index.d.ts +7 -0
- package/dist/ComplexSelector/index.d.ts.map +1 -0
- package/dist/ComplexSelector/index.js +10 -0
- package/dist/ContextMenu/ContextMenu.d.ts +2 -2
- package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
- package/dist/ContextMenu/ContextMenu.js +24 -6
- package/dist/DateInput/DateInput.js +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +1 -1
- package/dist/Dialog/Dialog.d.ts +33 -24
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +47 -31
- package/dist/Dialog/DialogHeader.d.ts +1 -1
- package/dist/Dialog/DialogHeader.js +1 -1
- package/dist/Dialog/index.d.ts +18 -1
- package/dist/Dialog/index.d.ts.map +1 -1
- package/dist/Dialog/index.js +14 -0
- package/dist/Divider/Divider.d.ts +2 -18
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +1 -15
- package/dist/Divider/index.d.ts +18 -1
- package/dist/Divider/index.d.ts.map +1 -1
- package/dist/Divider/index.js +14 -0
- package/dist/DropdownMenu/DropdownMenu.d.ts +9 -3
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +23 -19
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +18 -12
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +38 -63
- package/dist/DropdownMenu/DropdownMenuItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioItem.js +6 -2
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuSubMenu.js +14 -6
- package/dist/DropdownMenu/menuItemHover.d.ts +1 -0
- package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -1
- package/dist/DropdownMenu/menuItemHover.js +1 -0
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +6 -4
- package/dist/EmptyState/EmptyState.d.ts +1 -1
- package/dist/EmptyState/EmptyState.js +1 -1
- package/dist/Field/Field.d.ts +1 -1
- package/dist/Field/Field.js +1 -1
- package/dist/Field/FieldLabel.d.ts +4 -3
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +48 -5
- package/dist/FieldStatus/FieldStatus.d.ts +1 -18
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +13 -17
- package/dist/FieldStatus/index.d.ts +19 -1
- package/dist/FieldStatus/index.d.ts.map +1 -1
- package/dist/FieldStatus/index.js +14 -0
- package/dist/FileInput/FileInput.js +1 -1
- package/dist/FormLayout/FormLayout.d.ts +1 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/FormLayout/FormLayout.js +1 -1
- package/dist/Grid/Grid.d.ts +2 -10
- package/dist/Grid/Grid.d.ts.map +1 -1
- package/dist/Grid/Grid.js +1 -10
- package/dist/Grid/GridSpan.d.ts +1 -1
- package/dist/Grid/GridSpan.js +1 -1
- package/dist/HStack/HStack.d.ts +1 -1
- package/dist/HStack/HStack.js +1 -1
- package/dist/Heading/Heading.d.ts +2 -2
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +5 -4
- package/dist/HoverCard/HoverCard.d.ts +1 -1
- package/dist/HoverCard/HoverCard.js +1 -1
- package/dist/Icon/Icon.d.ts +1 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +4 -2
- package/dist/Icon/defaultIcons.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.js +14 -0
- package/dist/Icon/globalIconRegistry.d.ts +48 -6
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +74 -7
- package/dist/Icon/index.d.ts +4 -3
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/index.js +2 -1
- package/dist/Icon/useIcon.d.ts +14 -0
- package/dist/Icon/useIcon.d.ts.map +1 -0
- package/dist/Icon/useIcon.js +21 -0
- package/dist/IconButton/IconButton.d.ts +1 -1
- package/dist/IconButton/IconButton.js +1 -1
- package/dist/InputGroup/InputGroup.d.ts +1 -1
- package/dist/InputGroup/InputGroup.js +1 -1
- package/dist/InputGroup/InputGroupText.d.ts +1 -1
- package/dist/InputGroup/InputGroupText.js +1 -1
- package/dist/Item/Item.d.ts +17 -4
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +32 -7
- package/dist/Kbd/Kbd.d.ts +1 -1
- package/dist/Kbd/Kbd.js +1 -1
- package/dist/Layout/Layout.d.ts +1 -1
- package/dist/Layout/Layout.js +1 -1
- package/dist/Layout/LayoutContent.d.ts +1 -1
- package/dist/Layout/LayoutContent.js +1 -1
- package/dist/Layout/LayoutFooter.d.ts +1 -1
- package/dist/Layout/LayoutFooter.js +1 -1
- package/dist/Layout/LayoutHeader.d.ts +1 -1
- package/dist/Layout/LayoutHeader.js +1 -1
- package/dist/Layout/LayoutPanel.d.ts +1 -1
- package/dist/Layout/LayoutPanel.js +1 -1
- package/dist/Lightbox/Lightbox.d.ts +6 -4
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +117 -26
- package/dist/Link/Link.d.ts +1 -1
- package/dist/Link/Link.js +1 -1
- package/dist/Link/LinkProvider.d.ts +2 -2
- package/dist/Link/LinkProvider.js +2 -2
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.js +1 -1
- package/dist/List/ListItem.d.ts +12 -2
- package/dist/List/ListItem.d.ts.map +1 -1
- package/dist/List/ListItem.js +3 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +35 -13
- package/dist/MetadataList/MetadataList.d.ts +2 -2
- package/dist/MetadataList/MetadataList.d.ts.map +1 -1
- package/dist/MetadataList/MetadataList.js +38 -12
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.js +1 -1
- package/dist/MobileNav/MobileNav.d.ts +1 -1
- package/dist/MobileNav/MobileNav.js +1 -1
- package/dist/MoreMenu/MoreMenu.d.ts +1 -1
- package/dist/MoreMenu/MoreMenu.js +3 -3
- package/dist/MultiSelector/MultiSelector.d.ts +13 -4
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +118 -24
- package/dist/NavIcon/NavIcon.d.ts +1 -1
- package/dist/NavIcon/NavIcon.js +1 -1
- package/dist/NavMenu/index.d.ts +0 -2
- package/dist/NavMenu/index.d.ts.map +1 -1
- package/dist/NavMenu/index.js +1 -3
- package/dist/NumberInput/NumberInput.d.ts +1 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +16 -5
- package/dist/Outline/Outline.js +1 -1
- package/dist/OverflowList/OverflowList.d.ts +1 -1
- package/dist/OverflowList/OverflowList.js +1 -1
- package/dist/Pagination/Pagination.d.ts +26 -21
- package/dist/Pagination/Pagination.d.ts.map +1 -1
- package/dist/Pagination/Pagination.js +169 -41
- package/dist/Pagination/index.d.ts +22 -1
- package/dist/Pagination/index.d.ts.map +1 -1
- package/dist/Pagination/index.js +14 -0
- package/dist/Popover/Popover.d.ts +20 -3
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +5 -1
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +14 -3
- package/dist/PowerSearch/PowerSearch.d.ts +1 -1
- package/dist/PowerSearch/PowerSearch.js +1 -1
- package/dist/ProgressBar/ProgressBar.d.ts +49 -22
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +79 -22
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts +27 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.d.ts.map +1 -0
- package/dist/ProgressBar/ProgressBarMarkTooltip.js +35 -0
- package/dist/ProgressBar/index.d.ts +21 -1
- package/dist/ProgressBar/index.d.ts.map +1 -1
- package/dist/ProgressBar/index.js +14 -0
- package/dist/RadioList/RadioList.d.ts +1 -1
- package/dist/RadioList/RadioList.js +1 -1
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +2 -2
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +15 -11
- package/dist/Section/Section.d.ts +2 -19
- package/dist/Section/Section.d.ts.map +1 -1
- package/dist/Section/Section.js +1 -15
- package/dist/Section/index.d.ts +19 -1
- package/dist/Section/index.d.ts.map +1 -1
- package/dist/Section/index.js +14 -0
- package/dist/SegmentedControl/SegmentedControl.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControl.js +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts +4 -3
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +15 -3
- package/dist/Selector/Selector.d.ts +12 -3
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +109 -21
- package/dist/SideNav/SideNav.d.ts +1 -1
- package/dist/SideNav/SideNav.js +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavCollapseButton.js +4 -3
- package/dist/SideNav/SideNavHeading.d.ts +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +8 -7
- package/dist/SideNav/SideNavItem.d.ts +2 -2
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +6 -7
- package/dist/SideNav/SideNavSection.d.ts +1 -1
- package/dist/SideNav/SideNavSection.js +1 -1
- package/dist/Skeleton/Skeleton.d.ts +1 -1
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +3 -3
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +78 -68
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.js +1 -1
- package/dist/Stack/Stack.d.ts +1 -1
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.d.ts +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/StatusDot/StatusDot.d.ts +1 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +2 -17
- package/dist/StatusDot/index.d.ts +21 -1
- package/dist/StatusDot/index.d.ts.map +1 -1
- package/dist/StatusDot/index.js +14 -0
- package/dist/Switch/Switch.d.ts +2 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +18 -10
- package/dist/TabList/Tab.d.ts +1 -1
- package/dist/TabList/Tab.js +1 -1
- package/dist/TabList/TabList.d.ts +1 -1
- package/dist/TabList/TabList.js +1 -1
- package/dist/TabList/TabMenu.d.ts +1 -1
- package/dist/TabList/TabMenu.d.ts.map +1 -1
- package/dist/TabList/TabMenu.js +11 -3
- package/dist/Table/BaseTable.d.ts +1 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +4 -7
- package/dist/Table/Table.d.ts +1 -1
- package/dist/Table/Table.js +1 -1
- package/dist/Table/TableCell.d.ts +1 -1
- package/dist/Table/TableCell.js +4 -2
- package/dist/Table/TableHeaderCell.d.ts +1 -1
- package/dist/Table/TableHeaderCell.js +4 -2
- package/dist/Table/TableRow.d.ts +1 -1
- package/dist/Table/TableRow.js +1 -1
- package/dist/Table/index.d.ts +1 -1
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +18 -3
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +22 -4
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +36 -2
- package/dist/Table/types.d.ts +0 -9
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Text/Text.d.ts +11 -2
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +26 -3
- package/dist/Text/index.d.ts +31 -1
- package/dist/Text/index.d.ts.map +1 -1
- package/dist/Text/index.js +23 -0
- package/dist/TextArea/TextArea.d.ts +1 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +107 -39
- package/dist/TextInput/TextInput.d.ts +1 -1
- package/dist/TextInput/TextInput.js +1 -1
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +52 -46
- package/dist/TimeInput/TimeInput.js +1 -1
- package/dist/Timestamp/Timestamp.d.ts +26 -12
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +128 -65
- package/dist/Timestamp/TimestampHoverCard.d.ts +45 -0
- package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -0
- package/dist/Timestamp/TimestampHoverCard.js +228 -0
- package/dist/Timestamp/formatInstant.d.ts +3 -3
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +7 -2
- package/dist/Timestamp/tooltipEntries.d.ts +17 -2
- package/dist/Timestamp/tooltipEntries.d.ts.map +1 -1
- package/dist/Timestamp/tooltipEntries.js +4 -2
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +61 -9
- package/dist/ToggleButton/ToggleButton.d.ts +1 -1
- package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButton.js +4 -2
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Token/Token.d.ts +6 -28
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +69 -58
- package/dist/Token/TokenLink.d.ts +62 -0
- package/dist/Token/TokenLink.d.ts.map +1 -0
- package/dist/Token/TokenLink.js +76 -0
- package/dist/Token/index.d.ts +27 -1
- package/dist/Token/index.d.ts.map +1 -1
- package/dist/Token/index.js +14 -0
- package/dist/Tokenizer/Tokenizer.d.ts +1 -1
- package/dist/Tokenizer/Tokenizer.js +1 -1
- package/dist/Toolbar/Toolbar.d.ts +1 -1
- package/dist/Toolbar/Toolbar.js +1 -1
- package/dist/Tooltip/Tooltip.d.ts +1 -1
- package/dist/Tooltip/Tooltip.js +1 -1
- package/dist/TopNav/TopNav.d.ts +1 -1
- package/dist/TopNav/TopNav.js +1 -1
- package/dist/TopNav/TopNavHeading.d.ts +2 -8
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +8 -10
- package/dist/TopNav/TopNavItem.d.ts +1 -1
- package/dist/TopNav/TopNavItem.js +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +15 -7
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +1 -1
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +5 -4
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.js +1 -1
- package/dist/TreeList/TreeListBranches.js +1 -1
- package/dist/TreeList/TreeListItem.d.ts +1 -1
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +4 -3
- package/dist/TreeList/TreeListTypes.d.ts +1 -17
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +18 -1
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/TreeList/index.js +14 -0
- package/dist/Typeahead/BaseTypeahead.d.ts +10 -1
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +3 -1
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +9 -2
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.js +1 -1
- package/dist/VStack/VStack.d.ts +1 -1
- package/dist/VStack/VStack.js +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.d.ts +1 -1
- package/dist/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/astryx.css +111 -33
- package/dist/astryx.umd.js +50 -54
- package/dist/astryx.umd.js.map +4 -4
- package/dist/hooks/containerReveal.pool.stylex.d.ts +303 -0
- package/dist/hooks/containerReveal.pool.stylex.d.ts.map +1 -0
- package/dist/hooks/containerReveal.pool.stylex.js +292 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useContainerReveal.d.ts +83 -0
- package/dist/hooks/useContainerReveal.d.ts.map +1 -0
- package/dist/hooks/useContainerReveal.js +123 -0
- package/dist/hooks/useGridFocus.d.ts +8 -6
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.d.ts.map +1 -1
- package/dist/hooks/useInputContainer.js +29 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +11 -0
- package/dist/hooks/useKeyboardHint.d.ts +2 -2
- package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +5 -3
- package/dist/hooks/useListFocus.d.ts +8 -7
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.d.ts.map +1 -1
- package/dist/hooks/useTreeFocus.js +13 -2
- package/dist/i18n/InternationalizationProvider.d.ts +6 -0
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/useDirection.d.ts.map +1 -1
- package/dist/i18n/useDirection.js +6 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/contrast.d.ts +45 -0
- package/dist/theme/contrast.d.ts.map +1 -0
- package/dist/theme/contrast.js +88 -0
- package/dist/theme/defineTheme.d.ts +9 -3
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +6 -4
- package/dist/theme/expandColorScale.d.ts +29 -2
- package/dist/theme/expandColorScale.d.ts.map +1 -1
- package/dist/theme/expandColorScale.js +91 -12
- package/dist/theme/generateThemeRules.d.ts +0 -6
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +0 -15
- package/dist/theme/index.d.ts +9 -7
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +4 -3
- package/dist/theme/themeRegistry.d.ts +32 -0
- package/dist/theme/themeRegistry.d.ts.map +1 -0
- package/dist/theme/themeRegistry.js +49 -0
- package/dist/theme/tokens.stylex.d.ts +0 -17
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +0 -22
- package/dist/theme/types.d.ts +10 -2
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/theme/useTheme.d.ts +9 -0
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +82 -27
- package/dist/utils/rtlStyles.d.ts +21 -0
- package/dist/utils/rtlStyles.d.ts.map +1 -1
- package/dist/utils/rtlStyles.js +26 -1
- package/groups.doc.mjs +2 -2
- package/locales/en.json +124 -0
- package/locales/pseudo.json +93 -0
- package/package.json +10 -14
- package/src/AlertDialog/AlertDialog.doc.mjs +3 -3
- package/src/AlertDialog/AlertDialog.tsx +1 -1
- package/src/AlertDialog/useImperativeAlertDialog.doc.mjs +1 -1
- package/src/AppShell/AppShell.doc.mjs +3 -3
- package/src/AppShell/AppShell.test.tsx +55 -0
- package/src/AppShell/AppShell.tsx +27 -22
- package/src/AppShell/index.ts +20 -1
- package/src/AppShell/useAppShellMobile.doc.mjs +2 -2
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +1 -1
- package/src/Avatar/Avatar.doc.mjs +3 -3
- package/src/Avatar/Avatar.tsx +8 -3
- package/src/Avatar/AvatarStatusDot.doc.mjs +1 -1
- package/src/Avatar/AvatarStatusDot.tsx +2 -27
- package/src/Avatar/index.ts +26 -1
- package/src/AvatarGroup/AvatarGroup.doc.mjs +3 -3
- package/src/AvatarGroup/AvatarGroup.test.tsx +21 -1
- package/src/AvatarGroup/AvatarGroup.tsx +3 -7
- package/src/AvatarGroup/AvatarGroupOverflow.doc.mjs +1 -1
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -3
- package/src/Badge/Badge.doc.mjs +3 -3
- package/src/Badge/Badge.tsx +2 -31
- package/src/Badge/index.ts +32 -6
- package/src/Banner/Banner.doc.mjs +3 -3
- package/src/Banner/Banner.tsx +8 -45
- package/src/Banner/index.ts +39 -7
- package/src/Blockquote/Blockquote.doc.mjs +3 -3
- package/src/Blockquote/Blockquote.tsx +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +1 -1
- package/src/Breadcrumbs/BreadcrumbItem.tsx +5 -3
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +3 -3
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +1 -1
- package/src/Breadcrumbs/Breadcrumbs.tsx +2 -19
- package/src/Breadcrumbs/index.ts +19 -5
- package/src/Button/Button.doc.mjs +3 -3
- package/src/Button/Button.test.tsx +16 -0
- package/src/Button/Button.tsx +6 -23
- package/src/Button/index.ts +22 -7
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -3
- package/src/ButtonGroup/ButtonGroup.tsx +1 -1
- package/src/Calendar/Calendar.doc.mjs +3 -3
- package/src/Calendar/Calendar.test.tsx +22 -6
- package/src/Calendar/Calendar.tsx +1 -1
- package/src/Calendar/index.ts +1 -6
- package/src/Calendar/styles.ts +2 -2
- package/src/Calendar/utils.ts +0 -11
- package/src/Card/Card.doc.mjs +3 -3
- package/src/Card/Card.tsx +1 -1
- package/src/Carousel/Carousel.doc.mjs +10 -3
- package/src/Carousel/Carousel.test.tsx +232 -1
- package/src/Carousel/Carousel.tsx +144 -21
- package/src/Carousel/index.ts +1 -1
- package/src/Center/Center.doc.mjs +41 -3
- package/src/Center/Center.test.tsx +75 -0
- package/src/Center/Center.tsx +38 -3
- package/src/Chat/Chat.doc.mjs +3 -3
- package/src/Chat/ChatComposer.doc.mjs +1 -1
- package/src/Chat/ChatComposer.tsx +5 -5
- package/src/Chat/ChatComposerDrawer.doc.mjs +1 -1
- package/src/Chat/ChatComposerDrawer.tsx +5 -5
- package/src/Chat/ChatComposerInput.doc.mjs +1 -1
- package/src/Chat/ChatComposerInput.tsx +1 -1
- package/src/Chat/ChatComposerTokenElement.doc.mjs +1 -1
- package/src/Chat/ChatDictationButton.doc.mjs +3 -3
- package/src/Chat/ChatDictationButton.tsx +1 -1
- package/src/Chat/ChatLayout.doc.mjs +1 -1
- package/src/Chat/ChatLayout.test.tsx +57 -0
- package/src/Chat/ChatLayout.tsx +23 -2
- package/src/Chat/ChatLayoutScrollButton.doc.mjs +1 -1
- package/src/Chat/ChatLayoutScrollButton.tsx +1 -1
- package/src/Chat/ChatMessage.doc.mjs +1 -1
- package/src/Chat/ChatMessage.tsx +1 -1
- package/src/Chat/ChatMessageBubble.doc.mjs +1 -1
- package/src/Chat/ChatMessageBubble.tsx +1 -1
- package/src/Chat/ChatMessageList.doc.mjs +1 -1
- package/src/Chat/ChatMessageList.tsx +1 -1
- package/src/Chat/ChatMessageMetadata.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.doc.mjs +1 -1
- package/src/Chat/ChatSendButton.tsx +5 -3
- package/src/Chat/ChatSystemMessage.doc.mjs +1 -1
- package/src/Chat/ChatSystemMessage.tsx +1 -1
- package/src/Chat/ChatTokenizedText.doc.mjs +1 -1
- package/src/Chat/ChatTokenizedText.tsx +1 -1
- package/src/Chat/ChatToolCalls.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -3
- package/src/CheckboxInput/CheckboxInput.test.tsx +56 -0
- package/src/CheckboxInput/CheckboxInput.tsx +18 -3
- package/src/CheckboxList/CheckboxList.doc.mjs +3 -3
- package/src/CheckboxList/CheckboxList.test.tsx +94 -3
- package/src/CheckboxList/CheckboxList.tsx +1 -1
- package/src/CheckboxList/CheckboxListItem.doc.mjs +1 -1
- package/src/CheckboxList/CheckboxListItem.tsx +18 -11
- package/src/Citation/Citation.doc.mjs +2 -2
- package/src/Citation/Citation.tsx +1 -1
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
- package/src/ClickableCard/ClickableCard.tsx +3 -3
- package/src/Code/Code.tsx +2 -2
- package/src/CodeBlock/Code.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.doc.mjs +3 -3
- package/src/CodeBlock/CodeBlock.test.tsx +17 -0
- package/src/CodeBlock/CodeBlock.tsx +2 -2
- package/src/Collapsible/Collapsible.doc.mjs +3 -3
- package/src/Collapsible/Collapsible.tsx +3 -3
- package/src/Collapsible/CollapsibleGroup.doc.mjs +1 -1
- package/src/Collapsible/CollapsibleGroup.tsx +1 -1
- package/src/Collapsible/CollapsibleGroupContext.tsx +1 -1
- package/src/Collapsible/useCollapsible.doc.mjs +2 -2
- package/src/CommandPalette/CommandPalette.doc.mjs +4 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteEmpty.tsx +1 -1
- package/src/CommandPalette/CommandPaletteFooter.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteFooter.tsx +1 -1
- package/src/CommandPalette/CommandPaletteGroup.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteGroup.test.tsx +6 -2
- package/src/CommandPalette/CommandPaletteGroup.tsx +1 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteInput.tsx +5 -1
- package/src/CommandPalette/CommandPaletteItem.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
- package/src/CommandPalette/CommandPaletteList.doc.mjs +1 -1
- package/src/CommandPalette/CommandPaletteList.tsx +1 -1
- package/src/ComplexSelector/ComplexSelector.doc.mjs +179 -0
- package/src/ComplexSelector/ComplexSelector.test.tsx +156 -0
- package/src/ComplexSelector/ComplexSelector.tsx +429 -0
- package/src/ComplexSelector/index.ts +17 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +3 -3
- package/src/ContextMenu/ContextMenu.test.tsx +17 -2
- package/src/ContextMenu/ContextMenu.tsx +27 -6
- package/src/ContextMenu/ContextMenuItem.doc.mjs +1 -1
- package/src/DateInput/DateInput.doc.mjs +3 -3
- package/src/DateInput/DateInput.test.tsx +7 -3
- package/src/DateInput/DateInput.tsx +1 -1
- package/src/DateRangeInput/DateRangeInput.doc.mjs +2 -2
- package/src/DateRangeInput/DateRangeInput.test.tsx +7 -2
- package/src/DateRangeInput/DateRangeInput.tsx +1 -1
- package/src/DateTimeInput/DateTimeInput.doc.mjs +3 -3
- package/src/DateTimeInput/DateTimeInput.test.tsx +6 -2
- package/src/DateTimeInput/DateTimeInput.tsx +1 -1
- package/src/Dialog/Dialog.doc.mjs +7 -5
- package/src/Dialog/Dialog.test.tsx +46 -3
- package/src/Dialog/Dialog.tsx +61 -44
- package/src/Dialog/DialogHeader.doc.mjs +1 -1
- package/src/Dialog/DialogHeader.tsx +1 -1
- package/src/Dialog/index.ts +18 -1
- package/src/Dialog/useImperativeDialog.doc.mjs +1 -1
- package/src/Divider/Divider.doc.mjs +3 -3
- package/src/Divider/Divider.tsx +2 -19
- package/src/Divider/index.ts +19 -5
- package/src/DropdownMenu/DropdownMenu.doc.mjs +20 -5
- package/src/DropdownMenu/DropdownMenu.test.tsx +122 -0
- package/src/DropdownMenu/DropdownMenu.tsx +31 -20
- package/src/DropdownMenu/DropdownMenuCheckboxItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +41 -64
- package/src/DropdownMenu/DropdownMenuItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuItem.tsx +1 -1
- package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +5 -13
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
- package/src/DropdownMenu/DropdownMenuRadioItem.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuRadioItem.tsx +11 -2
- package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +84 -2
- package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +1 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +46 -1
- package/src/DropdownMenu/DropdownMenuSubMenu.tsx +24 -8
- package/src/DropdownMenu/menuItemHover.ts +1 -0
- package/src/DropdownMenu/renderDropdownItems.tsx +14 -2
- package/src/EmptyState/EmptyState.doc.mjs +3 -3
- package/src/EmptyState/EmptyState.tsx +1 -1
- package/src/Field/Field.doc.mjs +7 -3
- package/src/Field/Field.tsx +1 -1
- package/src/Field/FieldLabel.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +103 -0
- package/src/Field/FieldLabel.tsx +61 -5
- package/src/FieldStatus/FieldStatus.doc.mjs +3 -2
- package/src/FieldStatus/FieldStatus.test.tsx +61 -0
- package/src/FieldStatus/FieldStatus.tsx +16 -23
- package/src/FieldStatus/index.ts +20 -5
- package/src/FileInput/FileInput.doc.mjs +3 -3
- package/src/FileInput/FileInput.tsx +1 -1
- package/src/FormLayout/FormLayout.doc.mjs +3 -3
- package/src/FormLayout/FormLayout.tsx +2 -5
- package/src/Grid/Grid.doc.mjs +3 -8
- package/src/Grid/Grid.tsx +1 -25
- package/src/Grid/GridSpan.doc.mjs +1 -1
- package/src/Grid/GridSpan.tsx +1 -1
- package/src/HStack/HStack.tsx +1 -1
- package/src/Heading/Heading.tsx +4 -3
- package/src/HoverCard/HoverCard.doc.mjs +3 -3
- package/src/HoverCard/HoverCard.tsx +1 -1
- package/src/HoverCard/useHoverCard.doc.mjs +2 -2
- package/src/Icon/Icon.doc.mjs +7 -6
- package/src/Icon/Icon.test.tsx +23 -0
- package/src/Icon/Icon.tsx +4 -2
- package/src/Icon/defaultIcons.tsx +14 -0
- package/src/Icon/globalIconRegistry.test.tsx +87 -1
- package/src/Icon/globalIconRegistry.tsx +111 -9
- package/src/Icon/index.ts +9 -7
- package/src/Icon/useIcon.ts +23 -0
- package/src/IconButton/IconButton.doc.mjs +2 -2
- package/src/IconButton/IconButton.tsx +1 -1
- package/src/InputGroup/InputGroup.doc.mjs +2 -2
- package/src/InputGroup/InputGroup.tsx +1 -1
- package/src/InputGroup/InputGroupText.doc.mjs +1 -1
- package/src/InputGroup/InputGroupText.tsx +1 -1
- package/src/Item/Item.doc.mjs +8 -3
- package/src/Item/Item.test.tsx +88 -0
- package/src/Item/Item.tsx +58 -12
- package/src/Kbd/Kbd.doc.mjs +3 -3
- package/src/Kbd/Kbd.tsx +1 -1
- package/src/Layer/Layer.doc.mjs +2 -2
- package/src/Layer/useLayer.doc.mjs +2 -2
- package/src/Layout/Layout.doc.mjs +3 -3
- package/src/Layout/Layout.tsx +1 -1
- package/src/Layout/LayoutContent.doc.mjs +1 -1
- package/src/Layout/LayoutContent.tsx +1 -1
- package/src/Layout/LayoutFooter.doc.mjs +1 -1
- package/src/Layout/LayoutFooter.tsx +1 -1
- package/src/Layout/LayoutHeader.doc.mjs +1 -1
- package/src/Layout/LayoutHeader.tsx +1 -1
- package/src/Layout/LayoutPanel.doc.mjs +1 -1
- package/src/Layout/LayoutPanel.tsx +1 -1
- package/src/Lightbox/Lightbox.doc.mjs +5 -5
- package/src/Lightbox/Lightbox.test.tsx +211 -0
- package/src/Lightbox/Lightbox.tsx +109 -22
- package/src/Link/Link.doc.mjs +3 -3
- package/src/Link/Link.tsx +1 -1
- package/src/Link/LinkProvider.doc.mjs +2 -2
- package/src/Link/LinkProvider.tsx +2 -2
- package/src/List/List.doc.mjs +3 -3
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.doc.mjs +13 -1
- package/src/List/ListItem.tsx +14 -1
- package/src/Markdown/Markdown.doc.mjs +81 -1
- package/src/Markdown/Markdown.test.tsx +92 -0
- package/src/Markdown/Markdown.tsx +96 -68
- package/src/Markdown/parser.perf.test.ts +47 -35
- package/src/MetadataList/MetadataList.doc.mjs +3 -3
- package/src/MetadataList/MetadataList.test.tsx +82 -0
- package/src/MetadataList/MetadataList.tsx +45 -20
- package/src/MetadataList/MetadataListItem.doc.mjs +1 -1
- package/src/MetadataList/MetadataListItem.tsx +1 -1
- package/src/MobileNav/MobileNav.doc.mjs +3 -3
- package/src/MobileNav/MobileNav.tsx +1 -1
- package/src/MoreMenu/MoreMenu.doc.mjs +3 -3
- package/src/MoreMenu/MoreMenu.tsx +3 -3
- package/src/MultiSelector/MultiSelector.doc.mjs +35 -10
- package/src/MultiSelector/MultiSelector.test.tsx +303 -3
- package/src/MultiSelector/MultiSelector.tsx +223 -58
- package/src/NavIcon/NavIcon.doc.mjs +3 -3
- package/src/NavIcon/NavIcon.tsx +1 -1
- package/src/NavMenu/NavHeadingMenu.test.tsx +0 -16
- package/src/NavMenu/NavMenu.doc.mjs +2 -2
- package/src/NavMenu/index.ts +0 -4
- package/src/NumberInput/NumberInput.doc.mjs +3 -6
- package/src/NumberInput/NumberInput.test.tsx +38 -3
- package/src/NumberInput/NumberInput.tsx +24 -1
- package/src/Outline/Outline.doc.mjs +3 -3
- package/src/Outline/Outline.tsx +1 -1
- package/src/OverflowList/OverflowList.doc.mjs +3 -3
- package/src/OverflowList/OverflowList.tsx +1 -1
- package/src/Overlay/Overlay.doc.mjs +2 -2
- package/src/Pagination/Pagination.doc.mjs +55 -8
- package/src/Pagination/Pagination.test.tsx +567 -0
- package/src/Pagination/Pagination.tsx +223 -41
- package/src/Pagination/index.ts +22 -1
- package/src/Popover/Popover.doc.mjs +31 -3
- package/src/Popover/Popover.test.tsx +41 -0
- package/src/Popover/Popover.tsx +25 -2
- package/src/Popover/usePopover.doc.mjs +2 -2
- package/src/Popover/usePopover.tsx +10 -4
- package/src/PowerSearch/PowerSearch.doc.mjs +3 -3
- package/src/PowerSearch/PowerSearch.tsx +1 -1
- package/src/ProgressBar/ProgressBar.doc.mjs +18 -3
- package/src/ProgressBar/ProgressBar.test.tsx +340 -2
- package/src/ProgressBar/ProgressBar.tsx +153 -25
- package/src/ProgressBar/ProgressBarMarkTooltip.tsx +43 -0
- package/src/ProgressBar/index.ts +22 -1
- package/src/RadioList/RadioList.doc.mjs +3 -3
- package/src/RadioList/RadioList.test.tsx +26 -4
- package/src/RadioList/RadioList.tsx +1 -1
- package/src/RadioList/RadioListItem.doc.mjs +1 -1
- package/src/RadioList/RadioListItem.tsx +9 -2
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/ResizeHandle.test.tsx +52 -3
- package/src/Resizable/ResizeHandle.tsx +25 -13
- package/src/Resizable/useResizable.doc.mjs +2 -2
- package/src/Section/Section.doc.mjs +3 -3
- package/src/Section/Section.tsx +2 -20
- package/src/Section/index.ts +20 -5
- package/src/SegmentedControl/SegmentedControl.doc.mjs +3 -3
- package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
- package/src/SegmentedControl/SegmentedControl.tsx +1 -1
- package/src/SegmentedControl/SegmentedControlItem.doc.mjs +1 -1
- package/src/SegmentedControl/SegmentedControlItem.tsx +21 -3
- package/src/SelectableCard/SelectableCard.doc.mjs +4 -2
- package/src/SelectableCard/SelectableCard.test.tsx +55 -0
- package/src/SelectableCard/SelectableCard.tsx +19 -3
- package/src/Selector/Selector.doc.mjs +28 -8
- package/src/Selector/Selector.test.tsx +222 -3
- package/src/Selector/Selector.tsx +202 -52
- package/src/Selector/SelectorOption.doc.mjs +1 -1
- package/src/SideNav/SideNav.doc.mjs +3 -3
- package/src/SideNav/SideNav.tsx +1 -1
- package/src/SideNav/SideNavCollapseButton.doc.mjs +1 -1
- package/src/SideNav/SideNavCollapseButton.tsx +4 -3
- package/src/SideNav/SideNavHeading.doc.mjs +1 -1
- package/src/SideNav/SideNavHeading.tsx +8 -9
- package/src/SideNav/SideNavItem.doc.mjs +1 -1
- package/src/SideNav/SideNavItem.tsx +5 -6
- package/src/SideNav/SideNavSection.doc.mjs +1 -1
- package/src/SideNav/SideNavSection.tsx +1 -1
- package/src/Skeleton/Skeleton.doc.mjs +3 -3
- package/src/Skeleton/Skeleton.test.tsx +16 -0
- package/src/Skeleton/Skeleton.tsx +14 -2
- package/src/Slider/Slider.doc.mjs +3 -3
- package/src/Slider/Slider.tsx +9 -13
- package/src/Spinner/Spinner.doc.mjs +3 -3
- package/src/Spinner/Spinner.tsx +1 -1
- package/src/Stack/Stack.doc.mjs +3 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/StatusDot/StatusDot.doc.mjs +3 -3
- package/src/StatusDot/StatusDot.tsx +2 -22
- package/src/StatusDot/index.ts +22 -5
- package/src/Switch/Switch.doc.mjs +5 -5
- package/src/Switch/Switch.test.tsx +71 -25
- package/src/Switch/Switch.tsx +56 -18
- package/src/TabList/Tab.doc.mjs +1 -1
- package/src/TabList/Tab.tsx +1 -1
- package/src/TabList/TabList.doc.mjs +3 -3
- package/src/TabList/TabList.test.tsx +21 -18
- package/src/TabList/TabList.tsx +1 -1
- package/src/TabList/TabMenu.doc.mjs +1 -1
- package/src/TabList/TabMenu.tsx +11 -3
- package/src/Table/BaseTable.tsx +4 -5
- package/src/Table/Table.doc.mjs +5 -5
- package/src/Table/Table.test.tsx +27 -49
- package/src/Table/Table.tsx +1 -1
- package/src/Table/TableCell.doc.mjs +1 -1
- package/src/Table/TableCell.tsx +2 -2
- package/src/Table/TableHeaderCell.doc.mjs +1 -1
- package/src/Table/TableHeaderCell.tsx +2 -2
- package/src/Table/TableRow.doc.mjs +1 -1
- package/src/Table/TableRow.tsx +1 -1
- package/src/Table/index.ts +1 -1
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +1 -1
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -4
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +161 -2
- package/src/Table/plugins/tree/useTableTreeData.tsx +54 -1
- package/src/Table/types.ts +0 -9
- package/src/Table/useTableColumnResize.doc.mjs +1 -1
- package/src/Table/useTableColumnSettings.doc.mjs +1 -1
- package/src/Table/useTableFilterState.doc.mjs +1 -1
- package/src/Table/useTableFiltering.doc.mjs +1 -1
- package/src/Table/useTableGroupedRows.doc.mjs +2 -2
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableRowExpansion.doc.mjs +57 -4
- package/src/Table/useTableRowIndex.doc.mjs +2 -2
- package/src/Table/useTableRowStatus.doc.mjs +3 -3
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Table/useTableSelectionState.doc.mjs +1 -1
- package/src/Table/useTableSortable.doc.mjs +1 -1
- package/src/Table/useTableStickyColumns.doc.mjs +1 -1
- package/src/Table/useTableTreeData.doc.mjs +10 -1
- package/src/Table/useTableTreeState.doc.mjs +1 -1
- package/src/Text/Heading.doc.mjs +4 -4
- package/src/Text/Text.doc.mjs +4 -4
- package/src/Text/Text.test.tsx +42 -0
- package/src/Text/Text.tsx +26 -2
- package/src/Text/index.ts +32 -6
- package/src/TextArea/TextArea.doc.mjs +5 -5
- package/src/TextArea/TextArea.test.tsx +112 -7
- package/src/TextArea/TextArea.tsx +143 -50
- package/src/TextInput/TextInput.doc.mjs +3 -3
- package/src/TextInput/TextInput.tsx +1 -1
- package/src/Thumbnail/Thumbnail.doc.mjs +2 -2
- package/src/Thumbnail/Thumbnail.test.tsx +24 -1
- package/src/Thumbnail/Thumbnail.tsx +28 -35
- package/src/TimeInput/TimeInput.doc.mjs +3 -3
- package/src/TimeInput/TimeInput.tsx +1 -1
- package/src/Timestamp/Timestamp.doc.mjs +29 -24
- package/src/Timestamp/Timestamp.test.tsx +438 -107
- package/src/Timestamp/Timestamp.tsx +167 -103
- package/src/Timestamp/TimestampHoverCard.tsx +283 -0
- package/src/Timestamp/formatInstant.ts +9 -4
- package/src/Timestamp/tooltipEntries.test.ts +9 -0
- package/src/Timestamp/tooltipEntries.ts +18 -2
- package/src/Toast/Toast.doc.mjs +3 -3
- package/src/Toast/ToastViewport.test.tsx +218 -8
- package/src/Toast/ToastViewport.tsx +71 -12
- package/src/Toast/useToast.doc.mjs +2 -2
- package/src/ToggleButton/ToggleButton.doc.mjs +3 -3
- package/src/ToggleButton/ToggleButton.test.tsx +24 -0
- package/src/ToggleButton/ToggleButton.tsx +20 -2
- package/src/ToggleButton/ToggleButtonGroup.doc.mjs +1 -1
- package/src/ToggleButton/ToggleButtonGroup.tsx +3 -6
- package/src/Token/Token.doc.mjs +3 -3
- package/src/Token/Token.test.tsx +145 -0
- package/src/Token/Token.tsx +75 -61
- package/src/Token/TokenLink.tsx +107 -0
- package/src/Token/index.ts +28 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +3 -3
- package/src/Tokenizer/Tokenizer.tsx +1 -1
- package/src/Toolbar/Toolbar.doc.mjs +3 -3
- package/src/Toolbar/Toolbar.tsx +1 -1
- package/src/Tooltip/Tooltip.doc.mjs +3 -3
- package/src/Tooltip/Tooltip.tsx +1 -1
- package/src/Tooltip/useTooltip.doc.mjs +2 -2
- package/src/TopNav/TopNav.doc.mjs +3 -3
- package/src/TopNav/TopNav.test.tsx +2 -2
- package/src/TopNav/TopNav.tsx +1 -1
- package/src/TopNav/TopNavHeading.doc.mjs +1 -12
- package/src/TopNav/TopNavHeading.tsx +8 -18
- package/src/TopNav/TopNavItem.doc.mjs +1 -1
- package/src/TopNav/TopNavItem.tsx +1 -1
- package/src/TopNav/TopNavMegaMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenu.tsx +32 -6
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +1 -1
- package/src/TopNav/TopNavMegaMenuItem.doc.mjs +1 -1
- package/src/TopNav/TopNavMegaMenuItem.tsx +1 -1
- package/src/TopNav/TopNavMenu.doc.mjs +1 -1
- package/src/TopNav/TopNavMenu.tsx +5 -4
- package/src/TreeList/TreeList.doc.mjs +3 -3
- package/src/TreeList/TreeList.test.tsx +10 -6
- package/src/TreeList/TreeList.tsx +1 -1
- package/src/TreeList/TreeListBranches.tsx +1 -1
- package/src/TreeList/TreeListItem.tsx +4 -3
- package/src/TreeList/TreeListTypes.ts +1 -18
- package/src/TreeList/index.ts +19 -1
- package/src/Typeahead/BaseTypeahead.doc.mjs +1 -1
- package/src/Typeahead/BaseTypeahead.tsx +13 -1
- package/src/Typeahead/Typeahead.doc.mjs +3 -3
- package/src/Typeahead/Typeahead.test.tsx +62 -0
- package/src/Typeahead/Typeahead.tsx +7 -1
- package/src/Typeahead/TypeaheadItem.doc.mjs +1 -1
- package/src/Typeahead/TypeaheadItem.tsx +1 -1
- package/src/VStack/VStack.tsx +1 -1
- package/src/VisuallyHidden/VisuallyHidden.doc.mjs +3 -3
- package/src/VisuallyHidden/VisuallyHidden.tsx +1 -1
- package/src/__tests__/babelPluginAddExtensions.test.ts +190 -0
- package/src/__tests__/forcedColors.ts +60 -0
- package/src/__tests__/inputWidthContract.test.tsx +8 -1
- package/src/doc-mjs.d.ts +5 -2
- package/src/docPropLiterals.test.ts +1 -1
- package/src/docPropReferences.test.ts +1 -1
- package/src/hooks/containerReveal.pool.stylex.ts +571 -0
- package/src/hooks/index.ts +7 -0
- package/src/hooks/useClickableContainer.doc.mjs +2 -2
- package/src/hooks/useContainerReveal.doc.mjs +75 -0
- package/src/hooks/useContainerReveal.test.tsx +116 -0
- package/src/hooks/useContainerReveal.ts +181 -0
- package/src/hooks/useEntryAnimation.doc.mjs +2 -2
- package/src/hooks/useFocusTrap.doc.mjs +2 -2
- package/src/hooks/useGridFocus.doc.mjs +2 -2
- package/src/hooks/useGridFocus.ts +8 -6
- package/src/hooks/useHotkeys.doc.mjs +2 -2
- package/src/hooks/useImageMode.doc.mjs +2 -2
- package/src/hooks/useInputContainer.doc.mjs +2 -2
- package/src/hooks/useInputContainer.test.tsx +180 -0
- package/src/hooks/useInputContainer.ts +36 -1
- package/src/hooks/useInputStatusIcon.test.tsx +59 -0
- package/src/hooks/useInputStatusIcon.tsx +12 -1
- package/src/hooks/useKeyboardHint.doc.mjs +2 -2
- package/src/hooks/useKeyboardHint.test.tsx +22 -0
- package/src/hooks/useKeyboardHint.tsx +7 -3
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useListFocus.ts +8 -7
- package/src/hooks/useMediaQuery.doc.mjs +2 -2
- package/src/hooks/useOverflow.doc.mjs +2 -2
- package/src/hooks/useScrollLock.doc.mjs +2 -2
- package/src/hooks/useScrollOverflow.doc.mjs +2 -2
- package/src/hooks/useStreamingText.doc.mjs +2 -2
- package/src/hooks/useTreeFocus.doc.mjs +2 -2
- package/src/hooks/useTreeFocus.test.tsx +53 -1
- package/src/hooks/useTreeFocus.ts +13 -2
- package/src/i18n/InternationalizationProvider.doc.mjs +14 -2
- package/src/i18n/InternationalizationProvider.tsx +6 -0
- package/src/i18n/useDirection.ts +6 -3
- package/src/i18n/useTranslator.doc.mjs +2 -2
- package/src/index.ts +2 -18
- package/src/theme/MediaTheme.doc.mjs +2 -2
- package/src/theme/SyntaxTheme.doc.mjs +2 -2
- package/src/theme/Theme.doc.mjs +2 -2
- package/src/theme/Theme.tsx +3 -7
- package/src/theme/contrast.test.ts +94 -0
- package/src/theme/contrast.ts +99 -0
- package/src/theme/defineTheme.test.ts +29 -30
- package/src/theme/defineTheme.ts +11 -5
- package/src/theme/expandColorScale.test.ts +387 -1
- package/src/theme/expandColorScale.ts +126 -17
- package/src/theme/generateThemeRules.ts +0 -15
- package/src/theme/index.ts +11 -13
- package/src/theme/themeRegistry.test.ts +59 -0
- package/src/theme/themeRegistry.ts +53 -0
- package/src/theme/tokens.stylex.ts +0 -19
- package/src/theme/types.ts +14 -13
- package/src/theme/useTheme.doc.mjs +2 -2
- package/src/theme/useTheme.test.tsx +48 -3
- package/src/theme/useTheme.ts +100 -29
- package/src/utils/rtlStyles.ts +22 -0
- package/dist/NavMenu/NavMenuItem.d.ts +0 -13
- package/dist/NavMenu/NavMenuItem.d.ts.map +0 -1
- package/dist/NavMenu/NavMenuItem.js +0 -16
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +0 -9
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +0 -1
- package/dist/Thumbnail/thumbnail.markers.stylex.js +0 -14
- package/dist/authoring/doc.d.ts +0 -145
- package/dist/authoring/doc.d.ts.map +0 -1
- package/dist/authoring/doc.js +0 -100
- package/dist/authoring/index.d.ts +0 -29
- package/dist/authoring/index.d.ts.map +0 -1
- package/dist/authoring/index.js +0 -28
- package/dist/authoring/integration.d.ts +0 -35
- package/dist/authoring/integration.d.ts.map +0 -1
- package/dist/authoring/integration.js +0 -30
- package/dist/authoring/template.d.ts +0 -66
- package/dist/authoring/template.d.ts.map +0 -1
- package/dist/authoring/template.js +0 -55
- package/dist/config.d.ts +0 -80
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -40
- package/dist/docs-types.d.ts +0 -969
- package/dist/docs-types.d.ts.map +0 -1
- package/dist/docs-types.js +0 -1
- package/src/NavMenu/NavMenuItem.tsx +0 -19
- package/src/Thumbnail/thumbnail.markers.stylex.ts +0 -12
- package/src/authoring/doc.ts +0 -164
- package/src/authoring/index.test.ts +0 -52
- package/src/authoring/index.ts +0 -50
- package/src/authoring/integration.ts +0 -42
- package/src/authoring/template.ts +0 -74
- package/src/config.test.ts +0 -16
- package/src/config.ts +0 -92
- package/src/docs-types.ts +0 -1108
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - /packages/core/src/TimeInput/TimeInput.test.tsx (tests for new/changed behavior)
|
|
14
14
|
* - /packages/core/src/TimeInput/index.ts (exports if types change)
|
|
15
15
|
* - /apps/storybook/stories/TimeInput.stories.tsx (storybook stories)
|
|
16
|
-
* - /packages/cli/templates/blocks/components/TimeInput/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/TimeInput/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
18
|
import { useId, useState, useCallback, useEffect, useRef, useMemo, useOptimistic, useTransition } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TextType, TextSize, TextColor, TextWeight } from '../theme/types';
|
|
2
2
|
import type { BaseProps } from '../BaseProps';
|
|
3
3
|
import type { TimestampTooltipEntry } from './tooltipEntries';
|
|
4
|
-
export type TimestampFormat = 'relative' | 'auto' | 'date' | 'date_long' | 'date_weekday' | 'date_time' | 'time' | 'system_date' | 'system_date_time' | 'system_time';
|
|
4
|
+
export type TimestampFormat = 'relative' | 'relative_short' | 'auto' | 'date' | 'date_long' | 'date_weekday' | 'date_time' | 'time' | 'system_date' | 'system_date_time' | 'system_time' | 'unix_seconds';
|
|
5
5
|
export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
6
6
|
/** Ref forwarded to the root `<time>` element. */
|
|
7
7
|
ref?: React.Ref<HTMLTimeElement>;
|
|
@@ -10,6 +10,9 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
10
10
|
/**
|
|
11
11
|
* Display format.
|
|
12
12
|
* - `'relative'`: "2 hours ago", "yesterday", "now"
|
|
13
|
+
* - `'relative_short'`: "2h ago", "1d ago", "now" — the same tiers as
|
|
14
|
+
* `'relative'` with abbreviated units (s/m/h/d/mo/y), for compact,
|
|
15
|
+
* space-constrained surfaces
|
|
13
16
|
* - `'auto'`: Relative for recent times, `date_time` for older
|
|
14
17
|
* - `'date'`: "Mar 21, 2025"
|
|
15
18
|
* - `'date_long'`: "March 21, 2025"
|
|
@@ -19,6 +22,8 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
19
22
|
* - `'system_date'`: "2025-03-21"
|
|
20
23
|
* - `'system_date_time'`: "2025-03-21 14:51:53"
|
|
21
24
|
* - `'system_time'`: "14:51:53"
|
|
25
|
+
* - `'unix_seconds'`: "1742565113" — Unix time in whole seconds since the
|
|
26
|
+
* epoch. Absolute (zone-independent), so it ignores any tooltip time zone.
|
|
22
27
|
* @default 'auto'
|
|
23
28
|
*/
|
|
24
29
|
format?: TimestampFormat;
|
|
@@ -28,21 +33,29 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
28
33
|
*/
|
|
29
34
|
autoThreshold?: number;
|
|
30
35
|
/**
|
|
31
|
-
* Whether to show a
|
|
36
|
+
* Whether to show a hover card with the full date/time on hover. The card
|
|
37
|
+
* is copyable — its default single row carries the full absolute time — and
|
|
38
|
+
* `tooltipEntries` customizes its rows.
|
|
32
39
|
* @default true
|
|
33
40
|
*/
|
|
34
41
|
hasTooltip?: boolean;
|
|
35
42
|
/**
|
|
36
|
-
* Lines to show
|
|
37
|
-
* time zones and/or formats at once. Each entry is one
|
|
38
|
-
* order given, with an optional label.
|
|
43
|
+
* Lines to show on hover, so one instant can be read — and optionally
|
|
44
|
+
* copied — in several time zones and/or formats at once. Each entry is one
|
|
45
|
+
* line, rendered in the order given, with an optional label.
|
|
39
46
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
47
|
+
* Rows are read-only unless they set `isCopyable` (default `false`). A
|
|
48
|
+
* copyable row shows a copy button in a dedicated trailing action column so
|
|
49
|
+
* the buttons align across rows; that column is only present when some row
|
|
50
|
+
* is copyable. With no entries the card shows a single default row with the
|
|
51
|
+
* full absolute time in the viewer's own zone, which is copyable.
|
|
43
52
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
53
|
+
* Configuring entries also attaches the surface to absolute formats, which
|
|
54
|
+
* otherwise have no hover card at all. `hasTooltip={false}` still suppresses
|
|
55
|
+
* it, and an empty array is treated as no configuration.
|
|
56
|
+
*
|
|
57
|
+
* @default undefined — a single default row with the full absolute time in
|
|
58
|
+
* the viewer's own time zone
|
|
46
59
|
* @example
|
|
47
60
|
* ```
|
|
48
61
|
* <Timestamp
|
|
@@ -50,6 +63,7 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
50
63
|
* tooltipEntries={[
|
|
51
64
|
* {label: 'Your time'},
|
|
52
65
|
* {timezoneID: 'UTC', label: 'UTC'},
|
|
66
|
+
* {timezoneID: 'UTC', format: 'system_date_time', label: 'ISO', isCopyable: true},
|
|
53
67
|
* ]}
|
|
54
68
|
* />
|
|
55
69
|
* ```
|
|
@@ -96,8 +110,8 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
96
110
|
*
|
|
97
111
|
* Renders a semantic `<time>` element with an ISO 8601 `datetime` attribute,
|
|
98
112
|
* styled via Text. Supports relative ("2 hours ago"), multiple absolute
|
|
99
|
-
* formats, and auto formatting. Optionally shows a
|
|
100
|
-
* absolute time and can update live.
|
|
113
|
+
* formats, and auto formatting. Optionally shows a hover card with the full
|
|
114
|
+
* absolute time (copyable) and can update live.
|
|
101
115
|
*
|
|
102
116
|
* @example
|
|
103
117
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../src/Timestamp/Timestamp.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../src/Timestamp/Timestamp.tsx"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAI9E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAI5C,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,kBAAkB,CAAC;AAW1B,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,gBAAgB,GAChB,MAAM,GACN,MAAM,GACN,WAAW,GACX,cAAc,GACd,WAAW,GACX,MAAM,GACN,aAAa,GACb,kBAAkB,GAClB,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,eAAe,CAAC;IAChE,kDAAkD;IAClD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACjC,uFAAuF;IACvF,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACtD;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAe,EACf,aAAsC,EACtC,UAAiB,EACjB,cAAc,EACd,eAAuB,EACvB,MAAc,EACd,IAAmB,EACnB,IAAI,EACJ,KAAmB,EACnB,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,aAAa,EAAE,MAAM,GACtB,EAAE,cAAc,sCAgJhB;yBAjKe,SAAS"}
|
|
@@ -13,22 +13,22 @@
|
|
|
13
13
|
* - /packages/core/src/Timestamp/Timestamp.test.tsx
|
|
14
14
|
* - /packages/core/src/Timestamp/index.ts
|
|
15
15
|
* - /apps/storybook/stories/Timestamp.stories.tsx
|
|
16
|
-
* - /packages/cli/templates/blocks/components/Timestamp/ (showcase blocks)
|
|
16
|
+
* - /packages/cli/assets/templates/blocks/components/Timestamp/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
|
-
import {
|
|
18
|
+
import { lazy, Suspense, useEffect, useRef, useState } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import { Text } from "../Text/index.js";
|
|
21
21
|
import { mergeProps, mergeRefs } from "../utils/index.js";
|
|
22
22
|
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
23
|
+
import { useTranslator } from "../i18n/index.js";
|
|
23
24
|
import { themeProps } from "../utils/themeProps.js";
|
|
24
|
-
import "../theme/tokens.stylex.js";
|
|
25
|
-
import { colorVars, spacingVars } from "../theme/tokens.stylex.js";
|
|
26
25
|
import { formatInstant } from "./formatInstant.js";
|
|
27
26
|
import { formatTooltipLines } from "./tooltipEntries.js";
|
|
28
|
-
import { jsx as _jsx
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
28
|
+
// Load the overlay lazily so a card-less Timestamp — the default — never
|
|
29
|
+
// bundles HoverCard or the copy affordance's Icon/IconButton. Mirrors the code
|
|
30
|
+
// split the read-only Tooltip path used before it.
|
|
31
|
+
const LazyTimestampHoverCard = /*#__PURE__*/lazy(async () => import("./TimestampHoverCard.js"));
|
|
32
32
|
|
|
33
33
|
// =============================================================================
|
|
34
34
|
// Types
|
|
@@ -139,6 +139,67 @@ function getRelativeTimeString(date, now) {
|
|
|
139
139
|
return `${years} ${years === 1 ? 'year' : 'years'} ago`;
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
+
/**
|
|
143
|
+
* The compact sibling of `getRelativeTimeString`: the same tier boundaries and
|
|
144
|
+
* present/future-skew handling, rendered with abbreviated units for
|
|
145
|
+
* space-constrained surfaces (chat metadata, dense tables, chips).
|
|
146
|
+
*
|
|
147
|
+
* Units follow the common compact convention (and the Microsoft Style Guide):
|
|
148
|
+
* `s` seconds, `m` minutes, `h` hours, `d` days, `mo` months, `y` years.
|
|
149
|
+
* Months use `mo` — not `m` — because `m` already means minutes; a bare `m`
|
|
150
|
+
* for months would be ambiguous. The value is always numeric (no "yesterday"
|
|
151
|
+
* idiom, which belongs to the long form) so the short form stays predictable
|
|
152
|
+
* and easy to scan. The `ago` / `in` affixes are kept so direction stays
|
|
153
|
+
* unambiguous at a glance.
|
|
154
|
+
*/
|
|
155
|
+
function getRelativeTimeShortString(date, now) {
|
|
156
|
+
const diffSeconds = Math.round((now.getTime() - date.getTime()) / 1000);
|
|
157
|
+
|
|
158
|
+
// Present clamp — identical to the long form (see getRelativeTimeString).
|
|
159
|
+
if (Math.abs(diffSeconds) < 10) {
|
|
160
|
+
return 'now';
|
|
161
|
+
}
|
|
162
|
+
if (diffSeconds < 0) {
|
|
163
|
+
// Future dates.
|
|
164
|
+
const absDiff = Math.abs(diffSeconds);
|
|
165
|
+
if (absDiff <= FUTURE_SKEW_TOLERANCE) {
|
|
166
|
+
return 'now';
|
|
167
|
+
}
|
|
168
|
+
if (absDiff < MINUTE) {
|
|
169
|
+
return `in ${absDiff}s`;
|
|
170
|
+
}
|
|
171
|
+
if (absDiff < HOUR) {
|
|
172
|
+
return `in ${Math.floor(absDiff / MINUTE)}m`;
|
|
173
|
+
}
|
|
174
|
+
if (absDiff < DAY) {
|
|
175
|
+
return `in ${Math.floor(absDiff / HOUR)}h`;
|
|
176
|
+
}
|
|
177
|
+
if (absDiff < MONTH) {
|
|
178
|
+
return `in ${Math.floor(absDiff / DAY)}d`;
|
|
179
|
+
}
|
|
180
|
+
if (absDiff < YEAR) {
|
|
181
|
+
return `in ${Math.floor(absDiff / MONTH)}mo`;
|
|
182
|
+
}
|
|
183
|
+
return `in ${Math.floor(absDiff / YEAR)}y`;
|
|
184
|
+
}
|
|
185
|
+
if (diffSeconds < MINUTE) {
|
|
186
|
+
return `${diffSeconds}s ago`;
|
|
187
|
+
}
|
|
188
|
+
if (diffSeconds < HOUR) {
|
|
189
|
+
return `${Math.floor(diffSeconds / MINUTE)}m ago`;
|
|
190
|
+
}
|
|
191
|
+
if (diffSeconds < DAY) {
|
|
192
|
+
return `${Math.floor(diffSeconds / HOUR)}h ago`;
|
|
193
|
+
}
|
|
194
|
+
if (diffSeconds < MONTH) {
|
|
195
|
+
return `${Math.floor(diffSeconds / DAY)}d ago`;
|
|
196
|
+
}
|
|
197
|
+
if (diffSeconds < YEAR) {
|
|
198
|
+
return `${Math.floor(diffSeconds / MONTH)}mo ago`;
|
|
199
|
+
}
|
|
200
|
+
return `${Math.floor(diffSeconds / YEAR)}y ago`;
|
|
201
|
+
}
|
|
202
|
+
|
|
142
203
|
/** Returns the interval (in ms) at which a relative timestamp should update. */
|
|
143
204
|
function getLiveInterval(diffSeconds) {
|
|
144
205
|
const absDiff = Math.abs(diffSeconds);
|
|
@@ -156,7 +217,17 @@ function getLiveInterval(diffSeconds) {
|
|
|
156
217
|
|
|
157
218
|
/** Whether a format is non-relative (i.e. shows a fixed date/time). */
|
|
158
219
|
function isAbsoluteFormat(format) {
|
|
159
|
-
return format !== 'relative' && format !== 'auto';
|
|
220
|
+
return format !== 'relative' && format !== 'relative_short' && format !== 'auto';
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Whether a format renders a relative phrase ("2 hours ago" / "2h ago") rather
|
|
225
|
+
* than a fixed instant. Both the long and short relative forms share the same
|
|
226
|
+
* treatment: they get the accessible full-date name, the hover tooltip, and
|
|
227
|
+
* live updates.
|
|
228
|
+
*/
|
|
229
|
+
function isRelativeFormat(format) {
|
|
230
|
+
return format === 'relative' || format === 'relative_short';
|
|
160
231
|
}
|
|
161
232
|
|
|
162
233
|
// =============================================================================
|
|
@@ -168,8 +239,8 @@ function isAbsoluteFormat(format) {
|
|
|
168
239
|
*
|
|
169
240
|
* Renders a semantic `<time>` element with an ISO 8601 `datetime` attribute,
|
|
170
241
|
* styled via Text. Supports relative ("2 hours ago"), multiple absolute
|
|
171
|
-
* formats, and auto formatting. Optionally shows a
|
|
172
|
-
* absolute time and can update live.
|
|
242
|
+
* formats, and auto formatting. Optionally shows a hover card with the full
|
|
243
|
+
* absolute time (copyable) and can update live.
|
|
173
244
|
*
|
|
174
245
|
* @example
|
|
175
246
|
* ```
|
|
@@ -197,6 +268,7 @@ export function Timestamp({
|
|
|
197
268
|
ref,
|
|
198
269
|
'data-testid': testId
|
|
199
270
|
}) {
|
|
271
|
+
const t = useTranslator();
|
|
200
272
|
const timeRef = useRef(null);
|
|
201
273
|
const [now, setNow] = useState(() => new Date());
|
|
202
274
|
const date = parseValue(value);
|
|
@@ -213,7 +285,7 @@ export function Timestamp({
|
|
|
213
285
|
|
|
214
286
|
// Format the display text. No time zone is passed: the visible text always
|
|
215
287
|
// reads in the viewer's own zone, and only the tooltip names others.
|
|
216
|
-
const displayText = !isValidDate ? '' : effectiveFormat === 'relative' ? getRelativeTimeString(date, now) : isAbsoluteFormat(effectiveFormat) ? formatInstant(date, effectiveFormat, {
|
|
288
|
+
const displayText = !isValidDate ? '' : effectiveFormat === 'relative' ? getRelativeTimeString(date, now) : effectiveFormat === 'relative_short' ? getRelativeTimeShortString(date, now) : isAbsoluteFormat(effectiveFormat) ? formatInstant(date, effectiveFormat, {
|
|
217
289
|
isTimezoneShown
|
|
218
290
|
}) : '';
|
|
219
291
|
|
|
@@ -222,7 +294,7 @@ export function Timestamp({
|
|
|
222
294
|
|
|
223
295
|
// Live updates
|
|
224
296
|
useEffect(() => {
|
|
225
|
-
if (!isLive || !isValidDate || effectiveFormat
|
|
297
|
+
if (!isLive || !isValidDate || !isRelativeFormat(effectiveFormat)) {
|
|
226
298
|
return;
|
|
227
299
|
}
|
|
228
300
|
const interval = getLiveInterval(diffSeconds);
|
|
@@ -242,11 +314,20 @@ export function Timestamp({
|
|
|
242
314
|
// only on/off axis — so normalize it away before anything reads it.
|
|
243
315
|
const entries = tooltipEntries !== undefined && tooltipEntries.length > 0 ? tooltipEntries : undefined;
|
|
244
316
|
|
|
245
|
-
// Absolute formats have never carried a
|
|
246
|
-
// when a consumer has explicitly configured tooltip lines would let
|
|
247
|
-
// silently suppress another prop's output, so entry presence opens
|
|
248
|
-
// With no entries this reduces to the original condition exactly.
|
|
249
|
-
const showTooltip = hasTooltip && (effectiveFormat
|
|
317
|
+
// Absolute formats have never carried a hover surface. Leaving that gate
|
|
318
|
+
// closed when a consumer has explicitly configured tooltip lines would let
|
|
319
|
+
// `format` silently suppress another prop's output, so entry presence opens
|
|
320
|
+
// it too. With no entries this reduces to the original condition exactly.
|
|
321
|
+
const showTooltip = hasTooltip && (isRelativeFormat(effectiveFormat) || entries !== undefined);
|
|
322
|
+
|
|
323
|
+
// The rows the hover card renders: the configured entries, or the single
|
|
324
|
+
// default absolute line shown when none are set. Either way the surface is
|
|
325
|
+
// the same copyable card — the default line is a one-row card carrying the
|
|
326
|
+
// full absolute time, itself copyable, just like a configured entry.
|
|
327
|
+
const lines = entries === undefined ? [{
|
|
328
|
+
value: fullAbsoluteText,
|
|
329
|
+
isCopyable: true
|
|
330
|
+
}] : formatTooltipLines(date, entries);
|
|
250
331
|
const timestampProps = mergeProps(themeProps('timestamp', {
|
|
251
332
|
format: effectiveFormat
|
|
252
333
|
}), {
|
|
@@ -263,61 +344,43 @@ export function Timestamp({
|
|
|
263
344
|
children: /*#__PURE__*/_jsx("time", {
|
|
264
345
|
ref: mergeRefs(ref, timeRef),
|
|
265
346
|
dateTime: isoString,
|
|
266
|
-
"aria-label": effectiveFormat
|
|
267
|
-
// The
|
|
268
|
-
// focus
|
|
269
|
-
// <time> is not focusable, so without a tab stop
|
|
270
|
-
// users could never reveal the
|
|
271
|
-
//
|
|
272
|
-
// gratuitous tab stops otherwise.
|
|
347
|
+
"aria-label": isRelativeFormat(effectiveFormat) ? fullAbsoluteText : undefined
|
|
348
|
+
// The hover card is anchored here with focusTrigger="always", which
|
|
349
|
+
// attaches focus listeners but does not itself make the anchor
|
|
350
|
+
// focusable. A bare <time> is not focusable, so without a tab stop
|
|
351
|
+
// sighted keyboard users could never reveal the card (WCAG 1.4.13 /
|
|
352
|
+
// 2.1.1). Add the tab stop only while a card is actually attached — no
|
|
353
|
+
// gratuitous tab stops otherwise. The card carries its own
|
|
354
|
+
// dashed-underline hover indication as the affordance, so the anchor
|
|
355
|
+
// needs no separate focus outline.
|
|
273
356
|
,
|
|
274
357
|
tabIndex: showTooltip ? 0 : undefined,
|
|
275
358
|
"data-testid": testId,
|
|
276
359
|
...{
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
},
|
|
280
|
-
1: {
|
|
281
|
-
className: "xt0psk2 xjb2p0i x1j61x8r x1qlqyl8 x15bjb6t x1heor9g x1pd3egz x17nn4n9 x1wfwxd8 x7s97pk"
|
|
282
|
-
}
|
|
283
|
-
}[!!showTooltip << 0],
|
|
360
|
+
className: "xt0psk2 xjb2p0i x1j61x8r x1qlqyl8 x15bjb6t x1heor9g x1pd3egz"
|
|
361
|
+
},
|
|
284
362
|
children: displayText
|
|
285
363
|
})
|
|
286
364
|
});
|
|
287
365
|
if (showTooltip) {
|
|
288
|
-
//
|
|
289
|
-
//
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
className: "x10im51j xrxpjvj"
|
|
307
|
-
},
|
|
308
|
-
children: line.value
|
|
309
|
-
})]
|
|
310
|
-
}, index))
|
|
311
|
-
});
|
|
312
|
-
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
313
|
-
children: [timeElement, /*#__PURE__*/_jsx(Suspense, {
|
|
314
|
-
fallback: null,
|
|
315
|
-
children: /*#__PURE__*/_jsx(LazyXDSTooltip, {
|
|
316
|
-
anchorRef: timeRef,
|
|
317
|
-
content: tooltipContent,
|
|
318
|
-
placement: "above"
|
|
319
|
-
})
|
|
320
|
-
})]
|
|
366
|
+
// One surface for every timestamp that shows one: the copyable hover card,
|
|
367
|
+
// loaded lazily so the default card-less path never bundles it. Each line
|
|
368
|
+
// becomes a labelled row with its own copy button. With no configured
|
|
369
|
+
// entries this is a single row carrying the full absolute time, itself
|
|
370
|
+
// copyable — so hovering a relative timestamp reveals the full time and
|
|
371
|
+
// lets the reader copy it. Opens on hover and on keyboard focus (the
|
|
372
|
+
// <time> tab stop above), with the dashed-underline affordance signalling
|
|
373
|
+
// it is interactive.
|
|
374
|
+
//
|
|
375
|
+
// While the chunk loads the bare <time> stays visible (the Suspense
|
|
376
|
+
// fallback), so nothing disappears — the card simply attaches once ready.
|
|
377
|
+
return /*#__PURE__*/_jsx(Suspense, {
|
|
378
|
+
fallback: timeElement,
|
|
379
|
+
children: /*#__PURE__*/_jsx(LazyTimestampHoverCard, {
|
|
380
|
+
lines: lines,
|
|
381
|
+
label: t('@astryx.timestamp.detailsLabel'),
|
|
382
|
+
children: timeElement
|
|
383
|
+
})
|
|
321
384
|
});
|
|
322
385
|
}
|
|
323
386
|
return timeElement;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file TimestampHoverCard.tsx
|
|
3
|
+
* @input Uses React, HoverCard, IconButton, Icon, formatted lines
|
|
4
|
+
* @output Default-exports the lazily-loaded copyable hover card for Timestamp
|
|
5
|
+
* @position Split out of Timestamp so the overlay (HoverCard) and the copy
|
|
6
|
+
* affordance's Icon/IconButton load only when a card is actually shown — the
|
|
7
|
+
* default, card-less Timestamp never bundles this chunk.
|
|
8
|
+
*
|
|
9
|
+
* Layout: a semantic `<dl>` laid out as a grid. Labelled cards use three
|
|
10
|
+
* columns — label, value, and a trailing action column for copy buttons —
|
|
11
|
+
* so the buttons align down a single column no matter how wide each value
|
|
12
|
+
* is. The action column is only added when at least one row is copyable, so
|
|
13
|
+
* a fully read-only card carries no dangling gutter. Label-less cards drop
|
|
14
|
+
* the label column and stack to whatever columns remain.
|
|
15
|
+
*
|
|
16
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
17
|
+
* - /packages/core/src/Timestamp/Timestamp.tsx (the lazy() + Suspense wrapper)
|
|
18
|
+
* - /packages/core/src/Timestamp/Timestamp.doc.mjs (theming.targets)
|
|
19
|
+
* - /packages/core/src/Timestamp/Timestamp.test.tsx
|
|
20
|
+
*/
|
|
21
|
+
import type { ReactNode } from 'react';
|
|
22
|
+
import type { TimestampTooltipLine } from './tooltipEntries';
|
|
23
|
+
export interface TimestampHoverCardProps {
|
|
24
|
+
/** The rows to render, each a labelled instant, optionally copyable. */
|
|
25
|
+
lines: ReadonlyArray<TimestampTooltipLine>;
|
|
26
|
+
/** Accessible name for the card. */
|
|
27
|
+
label: string;
|
|
28
|
+
/** The anchor the card is attached to (the `<time>` element). */
|
|
29
|
+
children: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* The copyable hover card for Timestamp. Renders a semantic `<dl>` as a grid:
|
|
33
|
+
* an optional label column, the value, and — when any row is copyable — a
|
|
34
|
+
* trailing action column carrying that row's copy button, so buttons align
|
|
35
|
+
* down one column. With a single default line this is a one-row card carrying
|
|
36
|
+
* the full absolute time, copyable. Opens on hover and on keyboard focus (the
|
|
37
|
+
* anchor's tab stop), with a dashed-underline affordance signalling it is
|
|
38
|
+
* interactive.
|
|
39
|
+
*/
|
|
40
|
+
declare function TimestampHoverCard({ lines, label, children, }: TimestampHoverCardProps): ReactNode;
|
|
41
|
+
declare namespace TimestampHoverCard {
|
|
42
|
+
var displayName: string;
|
|
43
|
+
}
|
|
44
|
+
export default TimestampHoverCard;
|
|
45
|
+
//# sourceMappingURL=TimestampHoverCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimestampHoverCard.d.ts","sourceRoot":"","sources":["../../src/Timestamp/TimestampHoverCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAerC,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kBAAkB,CAAC;AAoK3D,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC3C,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAkBD;;;;;;;;GAQG;AACH,iBAAwB,kBAAkB,CAAC,EACzC,KAAK,EACL,KAAK,EACL,QAAQ,GACT,EAAE,uBAAuB,GAAG,SAAS,CAsCrC;kBA1CuB,kBAAkB;;;eAAlB,kBAAkB"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file TimestampHoverCard.tsx
|
|
7
|
+
* @input Uses React, HoverCard, IconButton, Icon, formatted lines
|
|
8
|
+
* @output Default-exports the lazily-loaded copyable hover card for Timestamp
|
|
9
|
+
* @position Split out of Timestamp so the overlay (HoverCard) and the copy
|
|
10
|
+
* affordance's Icon/IconButton load only when a card is actually shown — the
|
|
11
|
+
* default, card-less Timestamp never bundles this chunk.
|
|
12
|
+
*
|
|
13
|
+
* Layout: a semantic `<dl>` laid out as a grid. Labelled cards use three
|
|
14
|
+
* columns — label, value, and a trailing action column for copy buttons —
|
|
15
|
+
* so the buttons align down a single column no matter how wide each value
|
|
16
|
+
* is. The action column is only added when at least one row is copyable, so
|
|
17
|
+
* a fully read-only card carries no dangling gutter. Label-less cards drop
|
|
18
|
+
* the label column and stack to whatever columns remain.
|
|
19
|
+
*
|
|
20
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
21
|
+
* - /packages/core/src/Timestamp/Timestamp.tsx (the lazy() + Suspense wrapper)
|
|
22
|
+
* - /packages/core/src/Timestamp/Timestamp.doc.mjs (theming.targets)
|
|
23
|
+
* - /packages/core/src/Timestamp/Timestamp.test.tsx
|
|
24
|
+
*/
|
|
25
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
26
|
+
import * as stylex from '@stylexjs/stylex';
|
|
27
|
+
import { HoverCard } from "../HoverCard/index.js";
|
|
28
|
+
import { IconButton } from "../IconButton/index.js";
|
|
29
|
+
import { Icon } from "../Icon/index.js";
|
|
30
|
+
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
31
|
+
import { useTranslator } from "../i18n/index.js";
|
|
32
|
+
import { themeProps } from "../utils/themeProps.js";
|
|
33
|
+
import "../theme/tokens.stylex.js";
|
|
34
|
+
import { colorVars, spacingVars, typeScaleVars, fontWeightVars } from "../theme/tokens.stylex.js";
|
|
35
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
36
|
+
const styles = {
|
|
37
|
+
dl: {
|
|
38
|
+
k1xSpc: "xrvj5dj",
|
|
39
|
+
kGNEyG: "x6s0dn4",
|
|
40
|
+
k1C7PZ: "xty4p9g",
|
|
41
|
+
khm7nJ: "x1x7z4sm",
|
|
42
|
+
kogj98: "x1ghz6dp",
|
|
43
|
+
kmVPX3: "x1717udv",
|
|
44
|
+
$$css: true
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Grid templates, selected per-card by which columns are present.
|
|
49
|
+
// - hasAnyLabel + hasAnyCopyable → label | value | action
|
|
50
|
+
// - hasAnyLabel only → label | value
|
|
51
|
+
// - hasAnyCopyable only → value | action
|
|
52
|
+
// - neither → value
|
|
53
|
+
const gridTemplates = {
|
|
54
|
+
labelValueAction: {
|
|
55
|
+
kumcoG: "x1g3yg12",
|
|
56
|
+
$$css: true
|
|
57
|
+
},
|
|
58
|
+
labelValue: {
|
|
59
|
+
kumcoG: "x1pmbctz",
|
|
60
|
+
$$css: true
|
|
61
|
+
},
|
|
62
|
+
valueAction: {
|
|
63
|
+
kumcoG: "x52fmzj",
|
|
64
|
+
$$css: true
|
|
65
|
+
},
|
|
66
|
+
value: {
|
|
67
|
+
kumcoG: "x1y6fwsi",
|
|
68
|
+
$$css: true
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/** How long the copied checkmark stays before reverting to the copy icon. */
|
|
73
|
+
const COPY_FEEDBACK_MS = 1500;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* The per-row copy affordance: a compact ghost `IconButton` that writes the
|
|
77
|
+
* row's value to the clipboard, flips `copy` → `check` for a moment, and
|
|
78
|
+
* announces the copy to a polite live region (a swapped aria-label alone
|
|
79
|
+
* isn't reliably announced). A clipboard rejection is a silent no-op.
|
|
80
|
+
*
|
|
81
|
+
* Kept as its own component so its state/timer/effect only exist for rows that
|
|
82
|
+
* actually opt into copying — read-only rows render no button and carry none
|
|
83
|
+
* of this machinery.
|
|
84
|
+
*/
|
|
85
|
+
function CopyButton({
|
|
86
|
+
value
|
|
87
|
+
}) {
|
|
88
|
+
const t = useTranslator();
|
|
89
|
+
const announce = useAnnounce();
|
|
90
|
+
const [copied, setCopied] = useState(false);
|
|
91
|
+
const resetTimerRef = useRef(null);
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
return () => {
|
|
94
|
+
if (resetTimerRef.current != null) {
|
|
95
|
+
clearTimeout(resetTimerRef.current);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}, []);
|
|
99
|
+
const handleCopy = useCallback(async () => {
|
|
100
|
+
try {
|
|
101
|
+
await navigator.clipboard.writeText(value);
|
|
102
|
+
setCopied(true);
|
|
103
|
+
announce(t('@astryx.timestamp.copied'));
|
|
104
|
+
// Restart the reset timer on every copy so a rapid re-copy isn't
|
|
105
|
+
// reverted early by the previous click's timer.
|
|
106
|
+
if (resetTimerRef.current != null) {
|
|
107
|
+
clearTimeout(resetTimerRef.current);
|
|
108
|
+
}
|
|
109
|
+
resetTimerRef.current = setTimeout(() => {
|
|
110
|
+
resetTimerRef.current = null;
|
|
111
|
+
setCopied(false);
|
|
112
|
+
}, COPY_FEEDBACK_MS);
|
|
113
|
+
} catch {
|
|
114
|
+
// Clipboard failures leave the copied state unchanged.
|
|
115
|
+
}
|
|
116
|
+
}, [value, announce, t]);
|
|
117
|
+
return /*#__PURE__*/_jsx(IconButton, {
|
|
118
|
+
variant: "ghost",
|
|
119
|
+
size: "sm",
|
|
120
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
121
|
+
icon: copied ? 'check' : 'copy',
|
|
122
|
+
size: "sm",
|
|
123
|
+
color: "inherit"
|
|
124
|
+
})
|
|
125
|
+
// Visible hover/focus hint via Button's built-in tooltip: 'Copy',
|
|
126
|
+
// flipping to 'Copied' after a successful copy in step with the icon.
|
|
127
|
+
// The full 'Copy <value>' string stays the aria-label for assistive tech.
|
|
128
|
+
,
|
|
129
|
+
tooltip: t(copied ? '@astryx.timestamp.copied' : '@astryx.timestamp.copy'),
|
|
130
|
+
label: copied ? t('@astryx.timestamp.copied') : t('@astryx.timestamp.copyValue', {
|
|
131
|
+
value
|
|
132
|
+
}),
|
|
133
|
+
onClick: () => {
|
|
134
|
+
void handleCopy();
|
|
135
|
+
},
|
|
136
|
+
...themeProps('timestamp-copy-button')
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* One row of the hover card: an optional label, the formatted instant, and —
|
|
142
|
+
* when the card reserves an action column — a trailing action cell holding the
|
|
143
|
+
* copy button (for a copyable row) or nothing (for a read-only row, so the
|
|
144
|
+
* columns stay aligned). Pure presentation: the copy state lives in
|
|
145
|
+
* {@link CopyButton}, which only copyable rows render.
|
|
146
|
+
*/
|
|
147
|
+
function EntryRow({
|
|
148
|
+
line,
|
|
149
|
+
hasLabelColumn,
|
|
150
|
+
hasActionColumn
|
|
151
|
+
}) {
|
|
152
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
153
|
+
...{
|
|
154
|
+
className: "xjp7ctv"
|
|
155
|
+
},
|
|
156
|
+
children: [hasLabelColumn && /*#__PURE__*/_jsx("dt", {
|
|
157
|
+
...{
|
|
158
|
+
className: "xv1l7n4 x141an7d x1ltkj2j x1sodnla x1ghz6dp x1717udv xuxw1ft"
|
|
159
|
+
},
|
|
160
|
+
children: line.label ?? ''
|
|
161
|
+
}), /*#__PURE__*/_jsx("dd", {
|
|
162
|
+
...{
|
|
163
|
+
className: "x1tgivj0 xjm74w1 xw6l6zx x1sodnla x1ghz6dp x1717udv xuxw1ft"
|
|
164
|
+
},
|
|
165
|
+
children: line.value
|
|
166
|
+
}), hasActionColumn && /*#__PURE__*/_jsx("div", {
|
|
167
|
+
...{
|
|
168
|
+
className: "x78zum5 x13a6bvl x6s0dn4"
|
|
169
|
+
},
|
|
170
|
+
children: line.isCopyable && /*#__PURE__*/_jsx(CopyButton, {
|
|
171
|
+
value: line.value
|
|
172
|
+
})
|
|
173
|
+
})]
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
function gridTemplateFor(hasLabelColumn, hasActionColumn) {
|
|
177
|
+
if (hasLabelColumn && hasActionColumn) {
|
|
178
|
+
return gridTemplates.labelValueAction;
|
|
179
|
+
}
|
|
180
|
+
if (hasLabelColumn) {
|
|
181
|
+
return gridTemplates.labelValue;
|
|
182
|
+
}
|
|
183
|
+
if (hasActionColumn) {
|
|
184
|
+
return gridTemplates.valueAction;
|
|
185
|
+
}
|
|
186
|
+
return gridTemplates.value;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* The copyable hover card for Timestamp. Renders a semantic `<dl>` as a grid:
|
|
191
|
+
* an optional label column, the value, and — when any row is copyable — a
|
|
192
|
+
* trailing action column carrying that row's copy button, so buttons align
|
|
193
|
+
* down one column. With a single default line this is a one-row card carrying
|
|
194
|
+
* the full absolute time, copyable. Opens on hover and on keyboard focus (the
|
|
195
|
+
* anchor's tab stop), with a dashed-underline affordance signalling it is
|
|
196
|
+
* interactive.
|
|
197
|
+
*/
|
|
198
|
+
export default function TimestampHoverCard({
|
|
199
|
+
lines,
|
|
200
|
+
label,
|
|
201
|
+
children
|
|
202
|
+
}) {
|
|
203
|
+
// A label column is only reserved when some row is labelled; otherwise the
|
|
204
|
+
// value sits flush at the card's leading edge. An action column is only
|
|
205
|
+
// reserved when some row is copyable (option B), so a fully read-only card
|
|
206
|
+
// has no trailing gutter.
|
|
207
|
+
const hasLabelColumn = lines.some(line => line.label != null && line.label !== '');
|
|
208
|
+
const hasActionColumn = lines.some(line => line.isCopyable);
|
|
209
|
+
const cardContent = /*#__PURE__*/_jsx("dl", {
|
|
210
|
+
...stylex.props(styles.dl, gridTemplateFor(hasLabelColumn, hasActionColumn)),
|
|
211
|
+
children: lines.map((line, index) => /*#__PURE__*/_jsx(EntryRow
|
|
212
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key -- rows are fixed positional slots and two entries may legitimately be identical
|
|
213
|
+
, {
|
|
214
|
+
line: line,
|
|
215
|
+
hasLabelColumn: hasLabelColumn,
|
|
216
|
+
hasActionColumn: hasActionColumn
|
|
217
|
+
}, index))
|
|
218
|
+
});
|
|
219
|
+
return /*#__PURE__*/_jsx(HoverCard, {
|
|
220
|
+
content: cardContent,
|
|
221
|
+
placement: "above",
|
|
222
|
+
focusTrigger: "always",
|
|
223
|
+
hasHoverIndication: true,
|
|
224
|
+
label: label,
|
|
225
|
+
children: children
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
TimestampHoverCard.displayName = 'TimestampHoverCard';
|