@astryxdesign/core 0.1.8 → 0.1.9
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 +100 -0
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +6 -2
- package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
- package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
- package/dist/Avatar/Avatar.d.ts +18 -2
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +63 -7
- package/dist/Avatar/AvatarStatusDot.d.ts +33 -5
- package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
- package/dist/Avatar/AvatarStatusDot.js +144 -19
- package/dist/Banner/Banner.d.ts +9 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +31 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +208 -6
- package/dist/Breadcrumbs/index.d.ts +5 -0
- package/dist/Breadcrumbs/index.d.ts.map +1 -1
- package/dist/Breadcrumbs/index.js +9 -1
- package/dist/Button/Button.d.ts +8 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +31 -2
- package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
- package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/dist/ButtonGroup/ButtonGroup.js +30 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +30 -2
- package/dist/Calendar/dayCellUtils.js +1 -1
- package/dist/Card/Card.d.ts +8 -2
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +28 -2
- package/dist/Carousel/Carousel.d.ts +4 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +24 -4
- package/dist/Chat/ChatComposer.d.ts +8 -0
- package/dist/Chat/ChatComposer.d.ts.map +1 -1
- package/dist/Chat/ChatComposer.js +46 -7
- package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
- package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
- package/dist/Chat/ChatComposerDrawer.js +11 -1
- package/dist/Chat/ChatComposerInput.d.ts +20 -3
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +35 -3
- package/dist/Chat/ChatContext.d.ts +33 -0
- package/dist/Chat/ChatContext.d.ts.map +1 -1
- package/dist/Chat/ChatContext.js +16 -2
- package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
- package/dist/Chat/ChatDictationButton.js +1 -1
- package/dist/Chat/ChatLayout.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
- package/dist/Chat/ChatLayoutScrollButton.js +4 -4
- package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.d.ts.map +1 -1
- package/dist/Chat/ChatSendButton.js +7 -1
- package/dist/Chat/ChatToolCalls.d.ts +5 -1
- package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
- package/dist/Chat/ChatToolCalls.js +18 -9
- package/dist/Chat/index.d.ts +2 -1
- package/dist/Chat/index.d.ts.map +1 -1
- package/dist/Chat/index.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts +2 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +22 -8
- package/dist/Chat/useSpeechRecognition.d.ts +0 -1
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +1 -1
- package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +1 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +11 -1
- package/dist/ClickableCard/ClickableCard.d.ts +9 -2
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +5 -2
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +8 -1
- package/dist/CommandPalette/CommandPalette.d.ts +1 -1
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +3 -1
- package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
- package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
- package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteInput.js +6 -1
- package/dist/DateInput/DateInput.d.ts +47 -1
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +26 -2
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +10 -1
- package/dist/Dialog/Dialog.d.ts +3 -0
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +57 -6
- package/dist/Dialog/DialogContext.d.ts +7 -0
- package/dist/Dialog/DialogContext.d.ts.map +1 -1
- package/dist/Dialog/DialogContext.js +2 -2
- package/dist/Dialog/DialogHeader.d.ts +5 -2
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +6 -1
- package/dist/Divider/Divider.js +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
- package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
- package/dist/Field/Field.d.ts.map +1 -1
- package/dist/Field/Field.js +2 -3
- package/dist/Field/FieldLabel.d.ts +1 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +42 -15
- package/dist/FieldStatus/FieldStatus.d.ts +8 -0
- package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
- package/dist/FieldStatus/FieldStatus.js +22 -4
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +10 -2
- package/dist/HoverCard/HoverCard.d.ts +9 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +2 -0
- package/dist/HoverCard/useHoverCard.d.ts +8 -0
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -2
- package/dist/Icon/Icon.d.ts +7 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Item/Item.d.ts +6 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +22 -1
- package/dist/Layer/useLayer.d.ts +6 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +2 -0
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +6 -1
- package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
- package/dist/MobileNav/MobileNavToggle.js +4 -0
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +39 -12
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +16 -0
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/Outline/Outline.d.ts +0 -1
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +0 -1
- package/dist/OverflowList/OverflowList.d.ts +20 -3
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +29 -4
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +3 -2
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +3 -9
- package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
- package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.d.ts +9 -2
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +16 -13
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +4 -2
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +16 -0
- package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +21 -8
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +19 -2
- package/dist/Stack/stack.stylex.d.ts +9 -9
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +3 -2
- package/dist/Table/index.d.ts +2 -0
- package/dist/Table/index.d.ts.map +1 -1
- package/dist/Table/index.js +1 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
- package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/index.js +3 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +4 -1
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +87 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
- package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -3
- package/dist/Thumbnail/Thumbnail.d.ts +26 -5
- package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
- package/dist/Thumbnail/Thumbnail.js +97 -54
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
- package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +15 -4
- package/dist/Timestamp/Timestamp.d.ts +3 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +8 -6
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +2 -5
- package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
- package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
- package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts +1 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +16 -4
- package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
- package/dist/TopNav/TopNavHeading.js +18 -8
- package/dist/TopNav/TopNavMegaMenu.js +10 -4
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
- package/dist/TopNav/TopNavMenu.d.ts +2 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +68 -6
- package/dist/TreeList/TreeList.d.ts +12 -3
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +2 -0
- package/dist/TreeList/TreeListBranches.d.ts +5 -0
- package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
- package/dist/TreeList/TreeListBranches.js +10 -4
- package/dist/TreeList/TreeListItem.d.ts +8 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +27 -7
- package/dist/TreeList/TreeListTypes.d.ts +25 -1
- package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
- package/dist/TreeList/index.d.ts +2 -2
- package/dist/TreeList/index.d.ts.map +1 -1
- package/dist/astryx.css +28 -18
- package/dist/astryx.umd.js +51 -51
- package/dist/astryx.umd.js.map +4 -4
- package/dist/authoring/doc.d.ts.map +1 -1
- package/dist/docs-types.d.ts +8 -0
- package/dist/docs-types.d.ts.map +1 -1
- package/dist/hooks/computeOverflow.d.ts +47 -0
- package/dist/hooks/computeOverflow.d.ts.map +1 -0
- package/dist/hooks/computeOverflow.js +213 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +2 -1
- package/dist/hooks/useDevWarning.d.ts +18 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -0
- package/dist/hooks/useDevWarning.js +49 -0
- package/dist/hooks/useOverflow.d.ts +19 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +36 -25
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +7 -18
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +2 -7
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +51 -0
- package/dist/theme/hct.d.ts +0 -1
- package/dist/theme/hct.d.ts.map +1 -1
- package/dist/theme/hct.js +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
- package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
- package/dist/utils/devWarning.d.ts +42 -0
- package/dist/utils/devWarning.d.ts.map +1 -0
- package/dist/utils/devWarning.js +88 -0
- package/dist/utils/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -2
- package/dist/utils/plainDate.d.ts +30 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +53 -0
- package/dist/utils/types.d.ts +13 -0
- package/dist/utils/types.d.ts.map +1 -1
- package/locales/en.json +24 -0
- package/locales/fr-FR.json +14 -0
- package/locales/pseudo.json +18 -0
- package/package.json +1 -1
- package/src/AppShell/AppShell.tsx +6 -0
- package/src/AppShell/AppShellMobileContext.tsx +8 -0
- package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
- package/src/Avatar/Avatar.doc.mjs +15 -3
- package/src/Avatar/Avatar.test.tsx +156 -1
- package/src/Avatar/Avatar.tsx +96 -4
- package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
- package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
- package/src/Avatar/AvatarStatusDot.tsx +178 -21
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +30 -0
- package/src/Banner/Banner.tsx +47 -3
- package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
- package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
- package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
- package/src/Breadcrumbs/Breadcrumbs.test.tsx +284 -2
- package/src/Breadcrumbs/index.ts +27 -0
- package/src/Button/Button.doc.mjs +9 -0
- package/src/Button/Button.test.tsx +49 -0
- package/src/Button/Button.tsx +25 -1
- package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
- package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
- package/src/ButtonGroup/ButtonGroup.tsx +32 -0
- package/src/Calendar/Calendar.doc.mjs +12 -1
- package/src/Calendar/Calendar.test.tsx +193 -0
- package/src/Calendar/Calendar.tsx +38 -16
- package/src/Calendar/dayCellUtils.test.ts +5 -0
- package/src/Calendar/dayCellUtils.ts +1 -1
- package/src/Card/Card.doc.mjs +9 -0
- package/src/Card/Card.test.tsx +21 -3
- package/src/Card/Card.tsx +35 -2
- package/src/Carousel/Carousel.doc.mjs +1 -0
- package/src/Carousel/Carousel.test.tsx +53 -0
- package/src/Carousel/Carousel.tsx +34 -4
- package/src/Chat/ChatComposer.doc.mjs +12 -3
- package/src/Chat/ChatComposer.test.tsx +115 -0
- package/src/Chat/ChatComposer.tsx +73 -9
- package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
- package/src/Chat/ChatComposerDrawer.tsx +11 -1
- package/src/Chat/ChatComposerInput.doc.mjs +7 -0
- package/src/Chat/ChatComposerInput.test.tsx +103 -0
- package/src/Chat/ChatComposerInput.tsx +49 -3
- package/src/Chat/ChatContext.tsx +37 -10
- package/src/Chat/ChatDictationButton.tsx +4 -1
- package/src/Chat/ChatLayout.tsx +3 -1
- package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
- package/src/Chat/ChatMessageMetadata.tsx +1 -2
- package/src/Chat/ChatSendButton.tsx +11 -1
- package/src/Chat/ChatToolCalls.test.tsx +64 -0
- package/src/Chat/ChatToolCalls.tsx +25 -4
- package/src/Chat/index.ts +5 -1
- package/src/Chat/useChatStreamScroll.test.tsx +49 -0
- package/src/Chat/useChatStreamScroll.ts +27 -10
- package/src/Chat/useSpeechRecognition.ts +1 -1
- package/src/Chat/useTriggerMenu.tsx +3 -1
- package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
- package/src/CheckboxInput/CheckboxInput.tsx +1 -1
- package/src/CheckboxList/CheckboxList.test.tsx +81 -3
- package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
- package/src/CheckboxList/CheckboxListItem.tsx +41 -5
- package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
- package/src/ClickableCard/ClickableCard.test.tsx +34 -0
- package/src/ClickableCard/ClickableCard.tsx +13 -3
- package/src/CodeBlock/CodeBlock.test.tsx +56 -0
- package/src/CodeBlock/CodeBlock.tsx +9 -1
- package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
- package/src/CommandPalette/CommandPalette.tsx +3 -1
- package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
- package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
- package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
- package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
- package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
- package/src/ContextMenu/ContextMenu.test.tsx +193 -0
- package/src/DateInput/DateInput.doc.mjs +16 -0
- package/src/DateInput/DateInput.test.tsx +108 -0
- package/src/DateInput/DateInput.tsx +68 -3
- package/src/DateInput/index.ts +1 -0
- package/src/DateTimeInput/DateTimeInput.test.tsx +35 -0
- package/src/DateTimeInput/DateTimeInput.tsx +14 -2
- package/src/Dialog/Dialog.doc.mjs +2 -2
- package/src/Dialog/Dialog.test.tsx +77 -4
- package/src/Dialog/Dialog.tsx +89 -5
- package/src/Dialog/DialogContext.ts +9 -2
- package/src/Dialog/DialogHeader.doc.mjs +2 -2
- package/src/Dialog/DialogHeader.tsx +9 -2
- package/src/Divider/Divider.tsx +2 -2
- package/src/DropdownMenu/DropdownMenu.test.tsx +169 -0
- package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +1 -2
- package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
- package/src/Field/Field.test.tsx +57 -12
- package/src/Field/Field.tsx +6 -5
- package/src/Field/FieldLabel.tsx +8 -0
- package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
- package/src/FieldStatus/FieldStatus.test.tsx +78 -40
- package/src/FieldStatus/FieldStatus.tsx +22 -4
- package/src/FileInput/FileInput.test.tsx +52 -3
- package/src/FileInput/FileInput.tsx +13 -2
- package/src/HoverCard/HoverCard.doc.mjs +13 -0
- package/src/HoverCard/HoverCard.test.tsx +21 -2
- package/src/HoverCard/HoverCard.tsx +11 -0
- package/src/HoverCard/useHoverCard.doc.mjs +2 -0
- package/src/HoverCard/useHoverCard.tsx +24 -2
- package/src/Icon/Icon.doc.mjs +3 -2
- package/src/Icon/Icon.tsx +7 -2
- package/src/IconButton/IconButton.doc.mjs +8 -0
- package/src/IconButton/IconButton.test.tsx +15 -18
- package/src/Item/Item.test.tsx +40 -18
- package/src/Item/Item.tsx +38 -2
- package/src/Layer/useLayer.tsx +8 -0
- package/src/List/List.test.tsx +9 -8
- package/src/MobileNav/MobileNav.tsx +12 -1
- package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
- package/src/MobileNav/MobileNavToggle.tsx +9 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +4 -2
- package/src/MultiSelector/MultiSelector.test.tsx +172 -3
- package/src/MultiSelector/MultiSelector.tsx +55 -12
- package/src/MultiSelector/hooks.ts +17 -0
- package/src/NumberInput/NumberInput.test.tsx +11 -7
- package/src/NumberInput/NumberInput.tsx +1 -2
- package/src/Outline/Outline.tsx +0 -1
- package/src/OverflowList/OverflowList.doc.mjs +39 -6
- package/src/OverflowList/OverflowList.test.tsx +111 -0
- package/src/OverflowList/OverflowList.tsx +48 -8
- package/src/Popover/Popover.tsx +7 -4
- package/src/Popover/usePopover.tsx +9 -13
- package/src/PowerSearch/PowerSearch.doc.mjs +14 -0
- package/src/PowerSearch/PowerSearch.test.tsx +20 -0
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
- package/src/PowerSearch/usePowerSearchSource.ts +1 -2
- package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
- package/src/SelectableCard/SelectableCard.test.tsx +46 -4
- package/src/SelectableCard/SelectableCard.tsx +29 -16
- package/src/Selector/Selector.test.tsx +69 -0
- package/src/Selector/Selector.tsx +5 -1
- package/src/Selector/hooks.ts +17 -0
- package/src/SideNav/SideNav.test.tsx +119 -3
- package/src/SideNav/SideNavCollapseButton.tsx +6 -1
- package/src/SideNav/SideNavHeading.tsx +24 -8
- package/src/SideNav/SideNavItem.tsx +5 -1
- package/src/Slider/Slider.test.tsx +75 -2
- package/src/Slider/Slider.tsx +21 -5
- package/src/Switch/Switch.test.tsx +32 -1
- package/src/Table/BaseTable.tsx +3 -5
- package/src/Table/index.ts +5 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +6 -2
- package/src/Table/plugins/rowStatus/index.ts +7 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
- package/src/Table/plugins/selection/useTableSelection.test.tsx +16 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +19 -1
- package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
- package/src/Table/plugins/tree/useTableTreeData.tsx +128 -1
- package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
- package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
- package/src/Table/useBaseTablePlugins.ts +10 -6
- package/src/Table/useTableRowStatus.doc.mjs +30 -0
- package/src/Table/useTableSelection.doc.mjs +65 -14
- package/src/Table/useTableTreeData.doc.mjs +29 -0
- package/src/Table/useTableTreeState.doc.mjs +2 -2
- package/src/TextArea/TextArea.test.tsx +9 -1
- package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
- package/src/Thumbnail/Thumbnail.test.tsx +98 -7
- package/src/Thumbnail/Thumbnail.tsx +141 -41
- package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
- package/src/TimeInput/TimeInput.test.tsx +76 -1
- package/src/TimeInput/TimeInput.tsx +19 -6
- package/src/Timestamp/Timestamp.doc.mjs +4 -4
- package/src/Timestamp/Timestamp.test.tsx +32 -0
- package/src/Timestamp/Timestamp.tsx +28 -8
- package/src/Toast/useToast.tsx +7 -8
- package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
- package/src/Tokenizer/Tokenizer.doc.mjs +15 -1
- package/src/Tokenizer/Tokenizer.test.tsx +183 -2
- package/src/Tokenizer/Tokenizer.tsx +16 -4
- package/src/TopNav/TopNav.test.tsx +125 -1
- package/src/TopNav/TopNavHeading.tsx +24 -8
- package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
- package/src/TopNav/TopNavMegaMenu.tsx +10 -4
- package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
- package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
- package/src/TopNav/TopNavMenu.test.tsx +118 -4
- package/src/TopNav/TopNavMenu.tsx +83 -5
- package/src/TreeList/TreeList.doc.mjs +22 -0
- package/src/TreeList/TreeList.test.tsx +232 -0
- package/src/TreeList/TreeList.tsx +18 -2
- package/src/TreeList/TreeListBranches.tsx +16 -2
- package/src/TreeList/TreeListItem.tsx +51 -11
- package/src/TreeList/TreeListTypes.ts +27 -1
- package/src/TreeList/index.ts +2 -2
- package/src/authoring/doc.ts +1 -3
- package/src/docs-types.ts +5 -0
- package/src/hooks/computeOverflow.test.ts +422 -0
- package/src/hooks/computeOverflow.ts +290 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useDevWarning.test.tsx +45 -0
- package/src/hooks/useDevWarning.ts +54 -0
- package/src/hooks/useOverflow.test.ts +96 -4
- package/src/hooks/useOverflow.ts +74 -33
- package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
- package/src/i18n/resolve.ts +9 -21
- package/src/theme/Theme.tsx +11 -14
- package/src/theme/generateThemeRules.test.ts +65 -0
- package/src/theme/generateThemeRules.ts +56 -0
- package/src/theme/hct.ts +1 -1
- package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
- package/src/utils/devWarning.test.ts +56 -0
- package/src/utils/devWarning.ts +102 -0
- package/src/utils/index.ts +6 -0
- package/src/utils/plainDate.test.ts +22 -0
- package/src/utils/plainDate.ts +61 -0
- package/src/utils/types.ts +14 -0
|
@@ -141,6 +141,23 @@ export function useTableTreeState(config) {
|
|
|
141
141
|
return idsAcc;
|
|
142
142
|
}, [data, getId, getChildren, getIsExpandable]);
|
|
143
143
|
const hasExpandableRows = allExpandableIds.length > 0;
|
|
144
|
+
|
|
145
|
+
// Aggregate state for the header expand-all control. Only expandable ids
|
|
146
|
+
// count toward the total, so expanded ids that match a leaf or no row at
|
|
147
|
+
// all never skew the tally.
|
|
148
|
+
const isAllExpanded = useMemo(() => {
|
|
149
|
+
if (!hasExpandableRows) {
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
const expandedCount = allExpandableIds.filter(id => expandedIds.has(id)).length;
|
|
153
|
+
if (expandedCount === 0) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
if (expandedCount === allExpandableIds.length) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
return 'indeterminate';
|
|
160
|
+
}, [hasExpandableRows, allExpandableIds, expandedIds]);
|
|
144
161
|
const onToggleItem = useCallback(item => {
|
|
145
162
|
const id = getId(item);
|
|
146
163
|
const next = new Set(expandedIdsRef.current);
|
|
@@ -162,13 +179,17 @@ export function useTableTreeState(config) {
|
|
|
162
179
|
getRowMeta,
|
|
163
180
|
onToggleItem,
|
|
164
181
|
hasExpandableRows,
|
|
182
|
+
isAllExpanded,
|
|
183
|
+
onExpandAll: expandAll,
|
|
184
|
+
onCollapseAll: collapseAll,
|
|
165
185
|
indent,
|
|
166
186
|
treeColumnKey
|
|
167
|
-
}), [getRowMeta, onToggleItem, hasExpandableRows, indent, treeColumnKey]);
|
|
187
|
+
}), [getRowMeta, onToggleItem, hasExpandableRows, isAllExpanded, expandAll, collapseAll, indent, treeColumnKey]);
|
|
168
188
|
return {
|
|
169
189
|
visibleData,
|
|
170
190
|
treeConfig,
|
|
171
191
|
expandedIds,
|
|
192
|
+
isAllExpanded,
|
|
172
193
|
expandAll,
|
|
173
194
|
collapseAll
|
|
174
195
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBaseTablePlugins.d.ts","sourceRoot":"","sources":["../../src/Table/useBaseTablePlugins.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"useBaseTablePlugins.d.ts","sourceRoot":"","sources":["../../src/Table/useBaseTablePlugins.ts"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,SAAS,CAAC;AAkHzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,GACtD,WAAW,CAAC,CAAC,CAAC,EAAE,CA2ClB"}
|
|
@@ -36,6 +36,8 @@
|
|
|
36
36
|
* - /packages/core/src/Table/Table.tsx (primary consumer)
|
|
37
37
|
*/
|
|
38
38
|
import { useRef } from 'react';
|
|
39
|
+
import { devWarn } from "../utils/devWarning.js";
|
|
40
|
+
|
|
39
41
|
// ======================================================================// Canonical Plugin Order
|
|
40
42
|
// ======================================================================
|
|
41
43
|
/**
|
|
@@ -86,7 +88,7 @@ function validatePlugin(name, plugin) {
|
|
|
86
88
|
// Warn about unknown keys (likely misspelled transform names)
|
|
87
89
|
for (const key of keys) {
|
|
88
90
|
if (!VALID_TRANSFORM_KEYS.has(key)) {
|
|
89
|
-
|
|
91
|
+
devWarn('Table', `Plugin "${name}" has unknown key "${key}". ` + `Valid keys: ${[...VALID_TRANSFORM_KEYS].join(', ')}. ` + `This key will be ignored.`);
|
|
90
92
|
}
|
|
91
93
|
}
|
|
92
94
|
|
|
@@ -95,7 +97,7 @@ function validatePlugin(name, plugin) {
|
|
|
95
97
|
if (VALID_TRANSFORM_KEYS.has(key)) {
|
|
96
98
|
const value = plugin[key];
|
|
97
99
|
if (value != null && typeof value !== 'function') {
|
|
98
|
-
|
|
100
|
+
devWarn('Table', `Plugin "${name}" has non-function value for "${key}" ` + `(got ${typeof value}). Transform will be skipped.`);
|
|
99
101
|
}
|
|
100
102
|
}
|
|
101
103
|
}
|
|
@@ -103,7 +105,7 @@ function validatePlugin(name, plugin) {
|
|
|
103
105
|
// Warn about empty plugins that add pipeline overhead
|
|
104
106
|
const hasTransforms = keys.some(key => VALID_TRANSFORM_KEYS.has(key) && typeof plugin[key] === 'function');
|
|
105
107
|
if (!hasTransforms) {
|
|
106
|
-
|
|
108
|
+
devWarn('Table', `Plugin "${name}" has no transform methods. ` + `It will be included in the pipeline but won't do anything.`);
|
|
107
109
|
}
|
|
108
110
|
}
|
|
109
111
|
|
|
@@ -8,7 +8,14 @@ export interface ThumbnailProps extends BaseProps<HTMLDivElement> {
|
|
|
8
8
|
*/
|
|
9
9
|
src?: string;
|
|
10
10
|
/**
|
|
11
|
-
* Alt text for the image.
|
|
11
|
+
* Alt text for the image.
|
|
12
|
+
*
|
|
13
|
+
* When omitted, the image is explicitly decorative (`alt=""` +
|
|
14
|
+
* `role="presentation"` + `aria-hidden`, matching Avatar) and hidden from
|
|
15
|
+
* assistive technology. Provide `alt` whenever the image conveys content;
|
|
16
|
+
* without it, screen reader users only hear the `label` (file name), or a
|
|
17
|
+
* generic "thumbnail" if `label` is also missing — which triggers a
|
|
18
|
+
* dev-time warning.
|
|
12
19
|
*/
|
|
13
20
|
alt?: string;
|
|
14
21
|
/**
|
|
@@ -44,6 +51,17 @@ export interface ThumbnailProps extends BaseProps<HTMLDivElement> {
|
|
|
44
51
|
* @default false
|
|
45
52
|
*/
|
|
46
53
|
isDisabled?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* When the remove button is visible.
|
|
56
|
+
* - `'hover'` — the button is revealed on hover, and on keyboard focus so
|
|
57
|
+
* it stays reachable. On any touch-capable device it stays visible.
|
|
58
|
+
* This is the default.
|
|
59
|
+
* - `'always'` — the button is always shown.
|
|
60
|
+
*
|
|
61
|
+
* Only has an effect when `onRemove` is set.
|
|
62
|
+
* @default 'hover'
|
|
63
|
+
*/
|
|
64
|
+
showRemoveOn?: 'always' | 'hover';
|
|
47
65
|
/**
|
|
48
66
|
* Test ID for testing frameworks.
|
|
49
67
|
*/
|
|
@@ -54,18 +72,21 @@ export interface ThumbnailProps extends BaseProps<HTMLDivElement> {
|
|
|
54
72
|
*
|
|
55
73
|
* Shows a skeleton shimmer while the image loads, the image on success, or
|
|
56
74
|
* a placeholder icon on failure / when no src is provided. An overlaid
|
|
57
|
-
* remove button appears when `onRemove` is set
|
|
75
|
+
* remove button appears when `onRemove` is set — revealed on hover or
|
|
76
|
+
* keyboard focus by default (`showRemoveOn`), or always shown.
|
|
58
77
|
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
78
|
+
* The remove button uses a fixed `--color-overlay` scrim with an
|
|
79
|
+
* `--color-on-dark` icon so it stays legible on any image without sampling
|
|
80
|
+
* the image's luminance.
|
|
61
81
|
*
|
|
62
82
|
* @example
|
|
63
83
|
* ```
|
|
64
84
|
* <Thumbnail src="/photo.jpg" alt="Vacation photo" onRemove={() => {}} />
|
|
65
85
|
* <Thumbnail src="/preview.png" alt="Preview" onClick={() => {}} label="preview.png" />
|
|
86
|
+
* <Thumbnail src="/logo.png" alt="Logo" onRemove={() => {}} showRemoveOn="always" />
|
|
66
87
|
* ```
|
|
67
88
|
*/
|
|
68
|
-
export declare function Thumbnail({ src, alt, label, onRemove, onClick, isLoading, isDisabled, xstyle, className, style, 'data-testid': testId, ref, ...props }: ThumbnailProps): import("react").JSX.Element;
|
|
89
|
+
export declare function Thumbnail({ src, alt, label, onRemove, onClick, isLoading, isDisabled, showRemoveOn, xstyle, className, style, 'data-testid': testId, ref, ...props }: ThumbnailProps): import("react").JSX.Element;
|
|
69
90
|
export declare namespace Thumbnail {
|
|
70
91
|
var displayName: string;
|
|
71
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Thumbnail.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/Thumbnail.tsx"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAM5C,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;;OASG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC;;;OAGG;IACH;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAyKD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,GAAG,EACH,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAiB,EACjB,UAAkB,EAClB,YAAsB,EACtB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,+BAiIhB;yBAhJe,SAAS"}
|
|
@@ -4,14 +4,18 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file Thumbnail.tsx
|
|
7
|
-
* @input Uses React, stylex, Button, Skeleton, Spinner
|
|
7
|
+
* @input Uses React, stylex, Button, Skeleton, Spinner
|
|
8
8
|
* @output Exports Thumbnail component, ThumbnailProps
|
|
9
9
|
* @position Core implementation; consumed by index.ts
|
|
10
10
|
*
|
|
11
11
|
* Square preview card for image attachments. Shows a skeleton shimmer while
|
|
12
12
|
* the image loads, the image on success, or a placeholder on failure.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* The overlaid remove button sits on a fixed --color-overlay scrim with an
|
|
14
|
+
* --color-on-dark icon so it always has sufficient contrast against the image.
|
|
15
|
+
*
|
|
16
|
+
* Images without `alt` are explicitly decorative (alt="" +
|
|
17
|
+
* role="presentation" + aria-hidden, matching Avatar). A dev-time warning
|
|
18
|
+
* fires once when `src` is set with no `alt` and no other name source.
|
|
15
19
|
*
|
|
16
20
|
* SYNC: When modified, update these files to stay in sync:
|
|
17
21
|
* - /packages/core/src/Thumbnail/Thumbnail.doc.mjs
|
|
@@ -22,26 +26,19 @@
|
|
|
22
26
|
*/
|
|
23
27
|
import * as stylex from '@stylexjs/stylex';
|
|
24
28
|
import "../theme/tokens.stylex.js";
|
|
25
|
-
import { colorVars, radiusVars, spacingVars,
|
|
29
|
+
import { colorVars, radiusVars, spacingVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
26
30
|
import { Button } from "../Button/index.js";
|
|
27
31
|
import { Icon } from "../Icon/index.js";
|
|
28
32
|
import { Skeleton } from "../Skeleton/index.js";
|
|
29
33
|
import { Spinner } from "../Spinner/index.js";
|
|
30
34
|
import { Tooltip } from "../Tooltip/Tooltip.js";
|
|
31
|
-
import {
|
|
32
|
-
import { useImageMode } from "../hooks/useImageMode.js";
|
|
35
|
+
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
33
36
|
import { mergeProps } from "../utils/index.js";
|
|
34
37
|
import { themeProps } from "../utils/themeProps.js";
|
|
35
38
|
import { useTranslator } from "../i18n/index.js";
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
import "./thumbnail.markers.stylex.js";
|
|
40
|
+
import { thumbnailScope } from "./thumbnail.markers.stylex.js";
|
|
38
41
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
39
|
-
const BUTTON_REGION = {
|
|
40
|
-
x: 0.5,
|
|
41
|
-
y: 0.06,
|
|
42
|
-
width: 0.44,
|
|
43
|
-
height: 0.44
|
|
44
|
-
};
|
|
45
42
|
// =============================================================================
|
|
46
43
|
// Styles
|
|
47
44
|
// =============================================================================
|
|
@@ -56,14 +53,44 @@ const styles = {
|
|
|
56
53
|
kHBbk8: "xc8icb0",
|
|
57
54
|
$$css: true
|
|
58
55
|
},
|
|
56
|
+
imageContainer: {
|
|
57
|
+
kVAEAm: "x1n2onr6",
|
|
58
|
+
kzqmXN: "xh8yej3",
|
|
59
|
+
kOBAk4: "x1plog1",
|
|
60
|
+
kaIpWk: "xh6dtrn",
|
|
61
|
+
kVQacm: "xb3r6kr",
|
|
62
|
+
kWkggS: "x17x4s8c",
|
|
63
|
+
$$css: true
|
|
64
|
+
},
|
|
65
|
+
interactive: {
|
|
66
|
+
kkrTdU: "x1ypdohk",
|
|
67
|
+
kI3sdo: "x1irc7jg",
|
|
68
|
+
kInvED: "x1wfwxd8 xdjuwb3",
|
|
69
|
+
$$css: true
|
|
70
|
+
},
|
|
71
|
+
overlay: {
|
|
72
|
+
k5JduY: "x1s928wv",
|
|
73
|
+
kwXMNM: "x1j6awrg",
|
|
74
|
+
kv0HGH: "xarstr8",
|
|
75
|
+
kUfP38: "x1k48kgn",
|
|
76
|
+
kloYau: "x2q1x1w",
|
|
77
|
+
kRicXK: "x1ywzrc5",
|
|
78
|
+
kPNhGg: "x97pup0",
|
|
79
|
+
kA8PQs: "x1dlmc9c",
|
|
80
|
+
ks3ayO: "xyhc2n1",
|
|
81
|
+
kAcZsS: "x1k7wiig",
|
|
82
|
+
$$css: true
|
|
83
|
+
},
|
|
84
|
+
hoverOnPointer: {
|
|
85
|
+
kJs8I2: "xi14tyy",
|
|
86
|
+
$$css: true
|
|
87
|
+
},
|
|
59
88
|
removeButtonOverrides: {
|
|
60
|
-
kVAEAm: "x10l6tqk",
|
|
61
|
-
k87sOh: "x8d4r5l",
|
|
62
|
-
kCIrl2: "xs7l08f",
|
|
63
|
-
kY2c9j: "x1vjfegm",
|
|
64
89
|
"--_button-radius": "xh8ntw8",
|
|
65
90
|
kZKoxP: "x1qx5ct2",
|
|
66
91
|
k7Eaqz: "xt4ypqs",
|
|
92
|
+
kWkggS: "x1u4601x",
|
|
93
|
+
kMwMTN: "x9e3rv5",
|
|
67
94
|
$$css: true
|
|
68
95
|
},
|
|
69
96
|
disabled: {
|
|
@@ -99,15 +126,18 @@ function ImagePlaceholder() {
|
|
|
99
126
|
*
|
|
100
127
|
* Shows a skeleton shimmer while the image loads, the image on success, or
|
|
101
128
|
* a placeholder icon on failure / when no src is provided. An overlaid
|
|
102
|
-
* remove button appears when `onRemove` is set
|
|
129
|
+
* remove button appears when `onRemove` is set — revealed on hover or
|
|
130
|
+
* keyboard focus by default (`showRemoveOn`), or always shown.
|
|
103
131
|
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
132
|
+
* The remove button uses a fixed `--color-overlay` scrim with an
|
|
133
|
+
* `--color-on-dark` icon so it stays legible on any image without sampling
|
|
134
|
+
* the image's luminance.
|
|
106
135
|
*
|
|
107
136
|
* @example
|
|
108
137
|
* ```
|
|
109
138
|
* <Thumbnail src="/photo.jpg" alt="Vacation photo" onRemove={() => {}} />
|
|
110
139
|
* <Thumbnail src="/preview.png" alt="Preview" onClick={() => {}} label="preview.png" />
|
|
140
|
+
* <Thumbnail src="/logo.png" alt="Logo" onRemove={() => {}} showRemoveOn="always" />
|
|
111
141
|
* ```
|
|
112
142
|
*/
|
|
113
143
|
export function Thumbnail({
|
|
@@ -118,6 +148,7 @@ export function Thumbnail({
|
|
|
118
148
|
onClick,
|
|
119
149
|
isLoading = false,
|
|
120
150
|
isDisabled = false,
|
|
151
|
+
showRemoveOn = 'hover',
|
|
121
152
|
xstyle,
|
|
122
153
|
className,
|
|
123
154
|
style,
|
|
@@ -126,21 +157,33 @@ export function Thumbnail({
|
|
|
126
157
|
...props
|
|
127
158
|
}) {
|
|
128
159
|
const t = useTranslator();
|
|
129
|
-
const imageMode = useImageMode(src, {
|
|
130
|
-
region: BUTTON_REGION,
|
|
131
|
-
fallback: null
|
|
132
|
-
});
|
|
133
160
|
const hasSrc = src != null;
|
|
134
161
|
const showSkeleton = isLoading && !hasSrc;
|
|
135
162
|
const showImage = hasSrc && !showSkeleton;
|
|
136
163
|
const showUploadOverlay = isLoading && hasSrc;
|
|
137
164
|
const showPlaceholder = !isLoading && !hasSrc;
|
|
138
165
|
const isInteractive = onClick != null && !isDisabled && !isLoading;
|
|
139
|
-
const
|
|
166
|
+
const hasRemove = onRemove != null && !isDisabled;
|
|
167
|
+
const isHoverReveal = hasRemove && showRemoveOn === 'hover';
|
|
168
|
+
const accessibleName = label && alt ? `${label} — ${alt}` : label ?? alt ?? t('@astryx.thumbnail.fallbackName');
|
|
169
|
+
|
|
170
|
+
// Without `alt`, the image is explicitly decorative rather than silently
|
|
171
|
+
// empty-alt, matching Avatar's handling of unnamed images.
|
|
172
|
+
const isImageDecorative = !alt;
|
|
173
|
+
|
|
174
|
+
// Dev-time guardrail: `src` with no `alt` hides the image from assistive
|
|
175
|
+
// technology. That is fine when the thumbnail is otherwise named — `label`
|
|
176
|
+
// (or a consumer-provided aria name) becomes the group's accessible name —
|
|
177
|
+
// but with no name source at all the group falls back to a generic
|
|
178
|
+
// "thumbnail".
|
|
179
|
+
const hasNameSource = alt != null || label != null || props['aria-label'] != null || props['aria-labelledby'] != null;
|
|
180
|
+
useDevWarning('Thumbnail', '`src` is set without `alt` or `label`. The image is ' + 'treated as decorative and hidden from assistive technology, and ' + 'the thumbnail falls back to a generic "thumbnail" name. Pass ' + '`alt` to describe the image content, or `label` (file name) to ' + 'name the thumbnail.', hasSrc && !hasNameSource);
|
|
140
181
|
const imageContent = /*#__PURE__*/_jsxs(_Fragment, {
|
|
141
182
|
children: [showImage && /*#__PURE__*/_jsx("img", {
|
|
142
183
|
src: src,
|
|
143
184
|
alt: alt ?? '',
|
|
185
|
+
role: isImageDecorative ? 'presentation' : undefined,
|
|
186
|
+
"aria-hidden": isImageDecorative || undefined,
|
|
144
187
|
...{
|
|
145
188
|
className: "xh8yej3 x5yr21d xl1xv1r x1lliihq"
|
|
146
189
|
}
|
|
@@ -153,22 +196,32 @@ export function Thumbnail({
|
|
|
153
196
|
children: /*#__PURE__*/_jsx(ImagePlaceholder, {})
|
|
154
197
|
})]
|
|
155
198
|
});
|
|
156
|
-
const removeButtonEl =
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
199
|
+
const removeButtonEl = hasRemove ? /*#__PURE__*/_jsx("div", {
|
|
200
|
+
...{
|
|
201
|
+
0: {
|
|
202
|
+
className: "x10l6tqk x8d4r5l xs7l08f x1vjfegm x14ju556"
|
|
203
|
+
},
|
|
204
|
+
1: {
|
|
205
|
+
className: "x10l6tqk x8d4r5l xs7l08f x1vjfegm x14ju556 xg01cxk xb7nc9r x1cyvi8a xhva3ql x19991ni xuedmi6 x12w9bfk xlr8y92"
|
|
206
|
+
}
|
|
207
|
+
}[!!isHoverReveal << 0],
|
|
208
|
+
children: /*#__PURE__*/_jsx(Button, {
|
|
209
|
+
icon: /*#__PURE__*/_jsx(Icon, {
|
|
210
|
+
icon: "close",
|
|
211
|
+
size: "xsm"
|
|
212
|
+
}),
|
|
213
|
+
label: t('@astryx.thumbnail.remove', {
|
|
214
|
+
accessibleName
|
|
215
|
+
}),
|
|
216
|
+
variant: "secondary",
|
|
217
|
+
size: "sm",
|
|
218
|
+
isIconOnly: true,
|
|
219
|
+
onClick: e => {
|
|
220
|
+
e.stopPropagation();
|
|
221
|
+
onRemove(e);
|
|
222
|
+
},
|
|
223
|
+
xstyle: styles.removeButtonOverrides
|
|
224
|
+
})
|
|
172
225
|
}) : null;
|
|
173
226
|
const thumbnail = /*#__PURE__*/_jsx("div", {
|
|
174
227
|
ref: ref,
|
|
@@ -178,14 +231,7 @@ export function Thumbnail({
|
|
|
178
231
|
...mergeProps(themeProps('thumbnail'), stylex.props(styles.root, isDisabled && styles.disabled, xstyle), className, style),
|
|
179
232
|
...props,
|
|
180
233
|
children: /*#__PURE__*/_jsxs("div", {
|
|
181
|
-
...
|
|
182
|
-
0: {
|
|
183
|
-
className: "x1n2onr6 xh8yej3 x1plog1 xh6dtrn xb3r6kr x17x4s8c"
|
|
184
|
-
},
|
|
185
|
-
1: {
|
|
186
|
-
className: "x1n2onr6 xh8yej3 x1plog1 xh6dtrn xb3r6kr x17x4s8c x1ypdohk x1kx2cm7 xuedmi6 xlr8y92 x1gnnqk1 xhouywz x1hc1fzr xzomjkg x1tmayz8 x1irc7jg x1wfwxd8 xdjuwb3"
|
|
187
|
-
}
|
|
188
|
-
}[!!isInteractive << 0],
|
|
234
|
+
...stylex.props(styles.imageContainer, isHoverReveal && thumbnailScope, isInteractive && styles.interactive, isInteractive && styles.overlay, isInteractive && styles.hoverOnPointer),
|
|
189
235
|
children: [isInteractive ? /*#__PURE__*/_jsx("button", {
|
|
190
236
|
type: "button",
|
|
191
237
|
onClick: onClick,
|
|
@@ -208,10 +254,7 @@ export function Thumbnail({
|
|
|
208
254
|
size: "sm",
|
|
209
255
|
shade: "onMedia"
|
|
210
256
|
})
|
|
211
|
-
}), removeButtonEl
|
|
212
|
-
mode: imageMode,
|
|
213
|
-
children: removeButtonEl
|
|
214
|
-
}) : removeButtonEl]
|
|
257
|
+
}), removeButtonEl]
|
|
215
258
|
})
|
|
216
259
|
});
|
|
217
260
|
if (label != null) {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as stylex from '@stylexjs/stylex';
|
|
2
|
+
/**
|
|
3
|
+
* Scoped marker for Thumbnail ancestor selectors. Applied to the image
|
|
4
|
+
* container so the remove button's hover/focus reveal (`showRemoveOn="hover"`)
|
|
5
|
+
* responds only to this thumbnail — not to hover/focus state from an outer
|
|
6
|
+
* container the thumbnail happens to sit inside.
|
|
7
|
+
*/
|
|
8
|
+
export declare const thumbnailScope: ReturnType<typeof stylex.defineMarker>;
|
|
9
|
+
//# sourceMappingURL=thumbnail.markers.stylex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thumbnail.markers.stylex.d.ts","sourceRoot":"","sources":["../../src/Thumbnail/thumbnail.markers.stylex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,YAAY,CAC3C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
import * as stylex from '@stylexjs/stylex';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Scoped marker for Thumbnail ancestor selectors. Applied to the image
|
|
7
|
+
* container so the remove button's hover/focus reveal (`showRemoveOn="hover"`)
|
|
8
|
+
* responds only to this thumbnail — not to hover/focus state from an outer
|
|
9
|
+
* container the thumbnail happens to sit inside.
|
|
10
|
+
*/
|
|
11
|
+
export const thumbnailScope = {
|
|
12
|
+
x9jk0ni: "x9jk0ni",
|
|
13
|
+
$$css: true
|
|
14
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeInput.d.ts","sourceRoot":"","sources":["../../src/TimeInput/TimeInput.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimeInput.d.ts","sourceRoot":"","sources":["../../src/TimeInput/TimeInput.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAU3C,OAAO,EAEL,KAAK,WAAW,EAMjB,MAAM,UAAU,CAAC;AAIlB,OAAO,EACL,KAAK,aAAa,EAUnB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AA8D9C,QAAA,MAAM,UAAU;;;;;;;;;;;;;EAad,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,UAAU,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,KAAK,CAAC;AAIhD,YAAY,EACV,WAAW,IAAI,eAAe,EAC9B,eAAe,IAAI,mBAAmB,GACvC,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,cAAe,SAAQ,IAAI,CAC1C,SAAS,EACT,UAAU,GAAG,cAAc,CAC5B;IACC,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,CAAC;IAEtD;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1E;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IAErB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,eAAe,EACf,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,GAAG,EACH,GAAG,EACH,UAAkB,EAClB,QAAgB,EAChB,YAAoB,EACpB,UAAkB,EAClB,SAAa,EACb,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,QAAQ,EACd,MAAM,EACN,YAAY,EACZ,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,GACJ,EAAE,cAAc,+BAsXhB;yBAlZe,SAAS"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @file TimeInput.tsx
|
|
7
|
-
* @input Uses React, useId, useState, useCallback, useRef, Field, Icon, InputGroupContext
|
|
7
|
+
* @input Uses React, useId, useState, useCallback, useRef, Field, Icon, InputGroupContext, useAnnounce
|
|
8
8
|
* @output Exports TimeInput component, TimeInputProps
|
|
9
9
|
* @position Core implementation; consumed by index.ts, tested by TimeInput.test.tsx
|
|
10
10
|
*
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* - /apps/storybook/stories/TimeInput.stories.tsx (storybook stories)
|
|
16
16
|
* - /packages/cli/templates/blocks/components/TimeInput/ (showcase blocks)
|
|
17
17
|
*/
|
|
18
|
-
import { useId, useState, useCallback, useRef, useMemo, useOptimistic, useTransition } from 'react';
|
|
18
|
+
import { useId, useState, useCallback, useEffect, useRef, useMemo, useOptimistic, useTransition } from 'react';
|
|
19
19
|
import * as stylex from '@stylexjs/stylex';
|
|
20
20
|
import "../theme/tokens.stylex.js";
|
|
21
21
|
import { colorVars, sizeVars, radiusVars, typographyVars, typeScaleVars, borderVars } from "../theme/tokens.stylex.js";
|
|
@@ -25,6 +25,7 @@ import { Spinner } from "../Spinner/index.js";
|
|
|
25
25
|
import { VisuallyHidden } from "../VisuallyHidden/index.js";
|
|
26
26
|
import { parseTimeInput, formatDisplayTime12h, formatDisplayTime24h, formatISOTime, adjustTime, isTimeInRange, mergeProps, mergeRefs, getInputARIA } from "../utils/index.js";
|
|
27
27
|
import { useSize } from "../SizeContext/SizeContext.js";
|
|
28
|
+
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
28
29
|
import { useInputContainer } from "../hooks/useInputContainer.js";
|
|
29
30
|
import { useInputGroup } from "../InputGroup/InputGroupContext.js";
|
|
30
31
|
import { groupStyles } from "../InputGroup/groupStyles.js";
|
|
@@ -109,6 +110,18 @@ export function TimeInput({
|
|
|
109
110
|
const [optimisticValue, setOptimisticValue] = useOptimistic(value);
|
|
110
111
|
const isBusy = isLoading || optimisticValue !== value;
|
|
111
112
|
|
|
113
|
+
// In grouped mode the status message renders as a visually-hidden node that
|
|
114
|
+
// exists only for aria-describedby. Announce it through the persistent
|
|
115
|
+
// useAnnounce live regions instead of role/aria-live on that node — a live
|
|
116
|
+
// region mounted together with its content is not reliably announced.
|
|
117
|
+
// Ungrouped mode delegates to Field -> FieldStatus, which announces itself.
|
|
118
|
+
const announce = useAnnounce();
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
if (inputGroup && status?.message) {
|
|
121
|
+
announce(status.message, status.type === 'error' ? 'assertive' : 'polite');
|
|
122
|
+
}
|
|
123
|
+
}, [announce, inputGroup, status?.message, status?.type]);
|
|
124
|
+
|
|
112
125
|
// Disabled-reason tooltip. Disabled controls swallow pointer events, so the
|
|
113
126
|
// tooltip listeners attach to the input container (which already exists) and
|
|
114
127
|
// the input stays perceivable via aria-disabled instead of the disabled
|
|
@@ -317,8 +330,6 @@ export function TimeInput({
|
|
|
317
330
|
}), inputGroup && status?.message && /*#__PURE__*/_jsx(VisuallyHidden, {
|
|
318
331
|
as: "div",
|
|
319
332
|
id: statusMessageID,
|
|
320
|
-
role: status.type === 'error' ? 'alert' : 'status',
|
|
321
|
-
"aria-live": status.type === 'error' ? 'assertive' : 'polite',
|
|
322
333
|
children: status.message
|
|
323
334
|
}), /*#__PURE__*/_jsx("input", {
|
|
324
335
|
ref: mergeRefs(ref, inputRef),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TextType, TextSize, TextColor, TextWeight } from '../theme/types';
|
|
2
2
|
import type { BaseProps } from '../BaseProps';
|
|
3
|
-
export type TimestampFormat = 'relative' | 'auto' | 'date' | 'date_time' | 'time' | 'system_date' | 'system_date_time' | 'system_time';
|
|
3
|
+
export type TimestampFormat = 'relative' | 'auto' | 'date' | 'date_long' | 'date_weekday' | 'date_time' | 'time' | 'system_date' | 'system_date_time' | 'system_time';
|
|
4
4
|
export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
5
5
|
/** Ref forwarded to the root `<time>` element. */
|
|
6
6
|
ref?: React.Ref<HTMLTimeElement>;
|
|
@@ -11,6 +11,8 @@ export interface TimestampProps extends BaseProps<HTMLTimeElement> {
|
|
|
11
11
|
* - `'relative'`: "2 hours ago", "yesterday", "now"
|
|
12
12
|
* - `'auto'`: Relative for recent times, `date_time` for older
|
|
13
13
|
* - `'date'`: "Mar 21, 2025"
|
|
14
|
+
* - `'date_long'`: "March 21, 2025"
|
|
15
|
+
* - `'date_weekday'`: "Wed, Mar 21, 2025"
|
|
14
16
|
* - `'date_time'`: "Mar 21, 2025, 2:51 PM"
|
|
15
17
|
* - `'time'`: "2:51 PM"
|
|
16
18
|
* - `'system_date'`: "2025-03-21"
|
|
@@ -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;AAG9E,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAa5C,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,MAAM,GACN,MAAM,GACN,WAAW,GACX,cAAc,GACd,WAAW,GACX,MAAM,GACN,aAAa,GACb,kBAAkB,GAClB,aAAa,CAAC;AAElB,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;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;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;AAqPD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,MAAe,EACf,aAAsC,EACtC,UAAiB,EACjB,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,sCA6GhB;yBA7He,SAAS"}
|
|
@@ -19,9 +19,11 @@ import { useEffect, useRef, useState, lazy, Suspense } 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
|
+
import { useDevWarning } from "../hooks/useDevWarning.js";
|
|
22
23
|
import { themeProps } from "../utils/themeProps.js";
|
|
23
24
|
import "../theme/tokens.stylex.js";
|
|
24
25
|
import { colorVars } from "../theme/tokens.stylex.js";
|
|
26
|
+
import { SHARED_DATE_FORMAT_OPTIONS } from "../utils/plainDate.js";
|
|
25
27
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
28
|
const LazyXDSTooltip = /*#__PURE__*/lazy(async () => import('../Tooltip/Tooltip').then(mod => ({
|
|
27
29
|
default: mod.Tooltip
|
|
@@ -141,11 +143,11 @@ function pad(n) {
|
|
|
141
143
|
function formatTimestamp(date, format, isTimezoneShown) {
|
|
142
144
|
switch (format) {
|
|
143
145
|
case 'date':
|
|
144
|
-
return new Intl.DateTimeFormat(undefined,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
146
|
+
return new Intl.DateTimeFormat(undefined, SHARED_DATE_FORMAT_OPTIONS.date).format(date);
|
|
147
|
+
case 'date_long':
|
|
148
|
+
return new Intl.DateTimeFormat(undefined, SHARED_DATE_FORMAT_OPTIONS.date_long).format(date);
|
|
149
|
+
case 'date_weekday':
|
|
150
|
+
return new Intl.DateTimeFormat(undefined, SHARED_DATE_FORMAT_OPTIONS.date_weekday).format(date);
|
|
149
151
|
case 'date_time':
|
|
150
152
|
return new Intl.DateTimeFormat(undefined, {
|
|
151
153
|
year: 'numeric',
|
|
@@ -291,10 +293,10 @@ export function Timestamp({
|
|
|
291
293
|
}, interval);
|
|
292
294
|
return () => clearInterval(timer);
|
|
293
295
|
}, [isLive, isValidDate, effectiveFormat, diffSeconds]);
|
|
296
|
+
useDevWarning('Timestamp', `could not parse value ${JSON.stringify(value)} as a date. Rendering nothing.`, !isValidDate);
|
|
294
297
|
|
|
295
298
|
// Placed after all hooks so the hook order stays stable across renders.
|
|
296
299
|
if (!isValidDate) {
|
|
297
|
-
console.warn(`Timestamp: could not parse value ${JSON.stringify(value)} as a date. Rendering nothing.`);
|
|
298
300
|
return null;
|
|
299
301
|
}
|
|
300
302
|
const showTooltip = hasTooltip && effectiveFormat === 'relative';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../src/Toast/useToast.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useToast.d.ts","sourceRoot":"","sources":["../../src/Toast/useToast.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,WAAW,EAEZ,MAAM,SAAS,CAAC;AAoIjB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,IAAI,WAAW,CAetC"}
|
package/dist/Toast/useToast.js
CHANGED
|
@@ -7,11 +7,11 @@ import { createRoot } from 'react-dom/client';
|
|
|
7
7
|
import { dataAttr } from "../naming.js";
|
|
8
8
|
import { ToastContext } from "./ToastContext.js";
|
|
9
9
|
import { ToastViewport } from "./ToastViewport.js";
|
|
10
|
+
import { warnOnce } from "../utils/devWarning.js";
|
|
10
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
12
|
// Fallback singleton
|
|
12
13
|
let fallbackContext = null;
|
|
13
14
|
let fallbackRoot = null;
|
|
14
|
-
let fallbackWarned = false;
|
|
15
15
|
const ROOT_THEME_ATTRS = ['data-theme', dataAttr('theme')];
|
|
16
16
|
|
|
17
17
|
// The fallback container is a detached tree with no ThemeContext, so this
|
|
@@ -57,10 +57,7 @@ function getFallbackContext() {
|
|
|
57
57
|
if (typeof document === 'undefined') {
|
|
58
58
|
throw new Error('useToast: Cannot create fallback viewport during SSR. ' + 'Wrap your app with <LayerProvider> or <AppShell>.');
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
fallbackWarned = true;
|
|
62
|
-
console.warn('useToast: No LayerProvider found. Using fallback viewport. ' + 'Wrap your app with <LayerProvider> or <AppShell> for full control.');
|
|
63
|
-
}
|
|
60
|
+
warnOnce('toast-fallback-viewport', 'useToast', 'No LayerProvider found. Using fallback viewport. ' + 'Wrap your app with <LayerProvider> or <AppShell> for full control.');
|
|
64
61
|
const container = document.createElement('div');
|
|
65
62
|
container.setAttribute('data-astryx-toast-fallback', '');
|
|
66
63
|
document.body.appendChild(container);
|
|
@@ -26,7 +26,6 @@ interface ToggleButtonGroupContextValue {
|
|
|
26
26
|
/** Group disabled state. */
|
|
27
27
|
isDisabled?: boolean;
|
|
28
28
|
}
|
|
29
|
-
export declare const ToggleButtonGroupContext: import("react").Context<ToggleButtonGroupContextValue | null>;
|
|
30
29
|
/**
|
|
31
30
|
* Hook for ToggleButton to read group context.
|
|
32
31
|
* Returns null when used outside a group.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;
|
|
1
|
+
{"version":3,"file":"ToggleButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ToggleButton/ToggleButtonGroup.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA2C,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAG/E,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAOnD,UAAU,6BAA6B;IACrC,mCAAmC;IACnC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,6BAA6B,GAAG,IAAI,CAE3E;AAsBD,UAAU,0BAA0B;IAClC,8BAA8B;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAEhB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA+B,SAAQ,0BAA0B;IAChF,+BAA+B;IAC/B,IAAI,EAAE,UAAU,CAAC;IAEjB,iCAAiC;IACjC,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACrC;AAED,8DAA8D;AAC9D,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,8BAA8B,CAAC;AAMnC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,GAC5B,SAAS,CAgEX;yBAlEe,iBAAiB"}
|
|
@@ -28,7 +28,7 @@ import { themeProps } from "../utils/themeProps.js";
|
|
|
28
28
|
// Context
|
|
29
29
|
// =============================================================================
|
|
30
30
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
31
|
-
|
|
31
|
+
const ToggleButtonGroupContext = /*#__PURE__*/createContext(null);
|
|
32
32
|
ToggleButtonGroupContext.displayName = 'ToggleButtonGroupContext';
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Tokenizer.tsx
|
|
3
|
-
* @input Uses React, BaseTypeahead, Field, Token
|
|
3
|
+
* @input Uses React, BaseTypeahead, Field, Token, useAnnounce
|
|
4
4
|
* @output Exports Tokenizer multi-select typeahead component
|
|
5
5
|
* @position Composed component; forwards DOM ref and exposes focus control via
|
|
6
6
|
* handleRef
|