@astryxdesign/core 0.5.0 → 0.5.1-canary.046f6ea
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 +222 -0
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +45 -20
- package/dist/AspectRatio/AspectRatio.d.ts +6 -6
- package/dist/Avatar/Avatar.d.ts +25 -1
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +43 -9
- package/dist/Avatar/index.d.ts +2 -2
- package/dist/Avatar/index.d.ts.map +1 -1
- package/dist/Avatar/index.js +1 -1
- package/dist/AvatarGroup/AvatarGroup.d.ts +9 -2
- package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroup.js +5 -2
- package/dist/AvatarGroup/AvatarGroupContext.d.ts +2 -1
- package/dist/AvatarGroup/AvatarGroupContext.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
- package/dist/AvatarGroup/AvatarGroupOverflow.js +11 -7
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +26 -2
- package/dist/Banner/Banner.d.ts +10 -1
- package/dist/Banner/Banner.d.ts.map +1 -1
- package/dist/Banner/Banner.js +11 -2
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +8 -7
- package/dist/Calendar/Calendar.d.ts +4 -2
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +15 -21
- package/dist/Calendar/hooks/useCalendarDays.js +4 -6
- package/dist/Calendar/hooks/useCalendarNavigation.js +4 -6
- package/dist/Calendar/styles.d.ts +5 -20
- package/dist/Calendar/styles.d.ts.map +1 -1
- package/dist/Calendar/styles.js +15 -17
- package/dist/Card/Card.d.ts +12 -12
- package/dist/Card/Card.d.ts.map +1 -1
- package/dist/Card/Card.js +17 -9
- package/dist/Card/index.d.ts +35 -1
- package/dist/Card/index.d.ts.map +1 -1
- package/dist/Card/index.js +21 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +108 -7
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +7 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +15 -4
- package/dist/CodeBlock/highlightRanges.js +1 -1
- package/dist/CodeBlock/highlightStyles.js +13 -13
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -7
- package/dist/ComplexSelector/ComplexSelector.d.ts +10 -2
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -7
- package/dist/DateInput/DateInput.d.ts +43 -0
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +22 -5
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -3
- package/dist/DateInput/MonthYearWheels.d.ts.map +1 -1
- package/dist/DateInput/MonthYearWheels.js +6 -4
- package/dist/DateInput/NativeDateField.d.ts +10 -0
- package/dist/DateInput/NativeDateField.d.ts.map +1 -0
- package/dist/DateInput/NativeDateField.js +494 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +52 -25
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +1 -0
- package/dist/DateInput/index.d.ts +1 -1
- package/dist/DateInput/index.d.ts.map +1 -1
- package/dist/DateInput/nativeDateSegments.d.ts +22 -0
- package/dist/DateInput/nativeDateSegments.d.ts.map +1 -0
- package/dist/DateInput/nativeDateSegments.js +111 -0
- package/dist/DateRangeInput/DateRangeInput.d.ts +4 -2
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +3 -5
- package/dist/DateTimeInput/DateTimeInput.d.ts +23 -24
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +35 -10
- package/dist/DateTimeInput/TouchDateTimeField.d.ts +6 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -0
- package/dist/DateTimeInput/TouchDateTimeField.js +1021 -0
- package/dist/Dialog/Dialog.d.ts +16 -2
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +28 -7
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +4 -13
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +9 -1
- package/dist/Field/InputClearButton.d.ts +9 -3
- package/dist/Field/InputClearButton.d.ts.map +1 -1
- package/dist/Field/InputClearButton.js +14 -3
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +0 -1
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +104 -3
- package/dist/HoverCard/useHoverCard.d.ts +14 -2
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +7 -1
- package/dist/Icon/Icon.d.ts +4 -2
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.d.ts +3 -2
- package/dist/Icon/defaultIcons.d.ts.map +1 -1
- package/dist/Icon/defaultIcons.js +7 -0
- package/dist/Icon/globalIconRegistry.d.ts +13 -0
- package/dist/Icon/globalIconRegistry.d.ts.map +1 -1
- package/dist/Icon/globalIconRegistry.js +34 -6
- package/dist/Icon/index.d.ts +1 -1
- package/dist/Icon/index.d.ts.map +1 -1
- package/dist/Icon/useIcon.d.ts +5 -2
- package/dist/Icon/useIcon.d.ts.map +1 -1
- package/dist/Icon/useIcon.js +3 -0
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +6 -2
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +2 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +2 -26
- package/dist/Layer/gestureCounter.d.ts +8 -0
- package/dist/Layer/gestureCounter.d.ts.map +1 -0
- package/dist/Layer/gestureCounter.js +53 -0
- package/dist/Layer/useLayer.d.ts +23 -13
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +146 -24
- package/dist/List/List.d.ts +1 -1
- package/dist/List/List.d.ts.map +1 -1
- package/dist/List/List.js +15 -4
- package/dist/Markdown/Markdown.d.ts +1 -1
- package/dist/Markdown/Markdown.d.ts.map +1 -1
- package/dist/Markdown/Markdown.js +20 -7
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +5 -3
- package/dist/MetadataList/MetadataListItem.d.ts +1 -1
- package/dist/MetadataList/MetadataListItem.d.ts.map +1 -1
- package/dist/MetadataList/MetadataListItem.js +4 -1
- package/dist/MultiSelector/MultiSelector.d.ts +18 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +58 -11
- package/dist/MultiSelector/hooks.d.ts +7 -1
- package/dist/MultiSelector/hooks.d.ts.map +1 -1
- package/dist/MultiSelector/hooks.js +3 -2
- package/dist/NavIcon/NavIcon.d.ts.map +1 -1
- package/dist/NavIcon/NavIcon.js +5 -1
- package/dist/NavItem/navItemStyles.stylex.d.ts +0 -8
- package/dist/NavItem/navItemStyles.stylex.d.ts.map +1 -1
- package/dist/NavItem/navItemStyles.stylex.js +0 -2
- package/dist/NavMenu/NavHeadingMenu.d.ts +1 -1
- package/dist/NavMenu/NavHeadingMenu.d.ts.map +1 -1
- package/dist/NavMenu/NavHeadingMenu.js +7 -4
- package/dist/NumberInput/NumberInput.d.ts +6 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +95 -126
- package/dist/NumberInput/numberInputCommit.d.ts +34 -0
- package/dist/NumberInput/numberInputCommit.d.ts.map +1 -0
- package/dist/NumberInput/numberInputCommit.js +71 -0
- package/dist/NumberInput/numberParser.d.ts +64 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -0
- package/dist/NumberInput/numberParser.js +350 -0
- package/dist/Outline/Outline.d.ts.map +1 -1
- package/dist/Outline/Outline.js +2 -3
- package/dist/OverflowList/OverflowList.d.ts +41 -1
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +43 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +8 -14
- package/dist/Popover/usePopover.d.ts +15 -41
- package/dist/Popover/usePopover.d.ts.map +1 -1
- package/dist/Popover/usePopover.js +26 -7
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +91 -18
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +4 -2
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +18 -5
- package/dist/Resizable/useResizable.d.ts +19 -1
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +104 -38
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +9 -0
- package/dist/Selector/Selector.d.ts +18 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +92 -21
- package/dist/Selector/hooks.d.ts +7 -1
- package/dist/Selector/hooks.d.ts.map +1 -1
- package/dist/Selector/hooks.js +3 -2
- package/dist/SideNav/SideNav.d.ts +6 -1
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +57 -27
- package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
- package/dist/SideNav/SideNavHeading.js +5 -4
- package/dist/SideNav/SideNavItem.d.ts +29 -4
- package/dist/SideNav/SideNavItem.d.ts.map +1 -1
- package/dist/SideNav/SideNavItem.js +75 -20
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +34 -2
- package/dist/Spinner/Spinner.d.ts +3 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +199 -20
- package/dist/StatusDot/StatusDot.d.ts.map +1 -1
- package/dist/StatusDot/StatusDot.js +6 -1
- package/dist/Stepper/Step.d.ts.map +1 -1
- package/dist/Stepper/Step.js +7 -6
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +5 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +6 -1
- package/dist/Table/Table.d.ts.map +1 -1
- package/dist/Table/Table.js +3 -6
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +73 -4
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +26 -0
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +34 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +25 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +3 -4
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +0 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +13 -8
- package/dist/Timestamp/Timestamp.d.ts +1 -1
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +10 -18
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +10 -5
- package/dist/Toast/Toast.d.ts +17 -2
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +77 -11
- package/dist/Toast/ToastViewport.d.ts +1 -0
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +76 -21
- package/dist/Toast/index.d.ts +1 -1
- package/dist/Toast/index.d.ts.map +1 -1
- package/dist/Toast/types.d.ts +38 -0
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToastGesture.d.ts +26 -0
- package/dist/Toast/useToastGesture.d.ts.map +1 -0
- package/dist/Toast/useToastGesture.js +223 -0
- package/dist/Token/Token.d.ts +1 -1
- package/dist/Token/Token.d.ts.map +1 -1
- package/dist/Token/Token.js +23 -12
- package/dist/Token/TokenLink.d.ts +1 -1
- package/dist/Token/TokenLink.d.ts.map +1 -1
- package/dist/Token/TokenLink.js +5 -2
- package/dist/Tokenizer/Tokenizer.d.ts +12 -1
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +31 -21
- package/dist/TopNav/TopNavHeading.js +2 -2
- package/dist/TopNav/TopNavItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavItem.js +3 -3
- package/dist/TopNav/TopNavMegaMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +30 -9
- package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenuItem.js +3 -3
- package/dist/TopNav/TopNavMenu.d.ts +1 -1
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +21 -6
- package/dist/TreeList/TreeList.d.ts +1 -1
- package/dist/TreeList/TreeList.d.ts.map +1 -1
- package/dist/TreeList/TreeList.js +7 -2
- package/dist/TreeList/TreeListItem.d.ts.map +1 -1
- package/dist/TreeList/TreeListItem.js +2 -2
- package/dist/Typeahead/BaseTypeahead.d.ts +33 -0
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +51 -8
- package/dist/Typeahead/Typeahead.d.ts +8 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +2 -0
- package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/Typeahead/TypeaheadItem.js +7 -2
- package/dist/astryx.css +87 -22
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -25
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +14 -4
- package/dist/i18n/InternationalizationContext.d.ts +2 -0
- package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
- package/dist/i18n/InternationalizationContext.js +3 -1
- package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
- package/dist/i18n/InternationalizationProvider.js +3 -1
- package/dist/i18n/resolve.d.ts +1 -1
- package/dist/i18n/resolve.d.ts.map +1 -1
- package/dist/i18n/resolve.js +37 -38
- package/dist/i18n/useTranslator.d.ts.map +1 -1
- package/dist/i18n/useTranslator.js +2 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +46 -10
- package/dist/theme/defineTheme.d.ts +9 -3
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +5 -0
- package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
- package/dist/theme/derivedVarRegistry.js +24 -4
- package/dist/theme/generateThemeRules.d.ts +21 -0
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +26 -0
- package/dist/theme/syntax/tokens.d.ts +1 -1
- package/dist/theme/syntax/tokens.d.ts.map +1 -1
- package/dist/theme/syntax/tokens.js +5 -2
- package/dist/theme/useTheme.d.ts.map +1 -1
- package/dist/theme/useTheme.js +6 -7
- package/dist/utils/dateParser.d.ts +5 -8
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +10 -11
- package/dist/utils/focusOutline.stylex.d.ts +25 -0
- package/dist/utils/focusOutline.stylex.d.ts.map +1 -1
- package/dist/utils/focusOutline.stylex.js +15 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +26 -0
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -0
- package/dist/utils/interactionOverlay.stylex.js +42 -0
- package/dist/utils/isApplePlatform.d.ts +18 -0
- package/dist/utils/isApplePlatform.d.ts.map +1 -0
- package/dist/utils/isApplePlatform.js +37 -0
- package/dist/utils/plainDate.d.ts +11 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +20 -4
- package/locales/af-ZA.json +7 -7
- package/locales/ar-SA.json +7 -7
- package/locales/ca-ES.json +6 -6
- package/locales/cs-CZ.json +7 -7
- package/locales/da-DK.json +7 -7
- package/locales/de-DE.json +7 -7
- package/locales/el-GR.json +7 -7
- package/locales/en.json +178 -6
- package/locales/es-ES.json +6 -6
- package/locales/fi-FI.json +7 -7
- package/locales/fr-FR.json +7 -7
- package/locales/he-IL.json +7 -7
- package/locales/hu-HU.json +7 -7
- package/locales/it-IT.json +7 -7
- package/locales/ja-JP.json +7 -7
- package/locales/ko-KR.json +7 -7
- package/locales/nl-NL.json +7 -7
- package/locales/no-NO.json +7 -7
- package/locales/pl-PL.json +7 -7
- package/locales/pseudo.json +130 -1
- package/locales/pt-BR.json +7 -7
- package/locales/pt-PT.json +7 -7
- package/locales/ro-RO.json +7 -7
- package/locales/ru-RU.json +7 -7
- package/locales/sr-SP.json +7 -7
- package/locales/sv-SE.json +7 -7
- package/locales/tr-TR.json +7 -7
- package/locales/uk-UA.json +7 -7
- package/locales/vi-VN.json +7 -7
- package/locales/zh-CN.json +7 -7
- package/locales/zh-TW.json +7 -7
- package/package.json +4 -5
- package/src/AlertDialog/AlertDialog.doc.mjs +114 -30
- package/src/AlertDialog/AlertDialog.test.tsx +211 -2
- package/src/AlertDialog/AlertDialog.tsx +62 -20
- package/src/AspectRatio/AspectRatio.doc.mjs +3 -3
- package/src/AspectRatio/AspectRatio.tsx +6 -6
- package/src/Avatar/Avatar.doc.mjs +12 -2
- package/src/Avatar/Avatar.test.tsx +80 -0
- package/src/Avatar/Avatar.tsx +64 -14
- package/src/Avatar/index.ts +2 -2
- package/src/AvatarGroup/AvatarGroup.doc.mjs +8 -2
- package/src/AvatarGroup/AvatarGroup.test.tsx +24 -0
- package/src/AvatarGroup/AvatarGroup.tsx +12 -4
- package/src/AvatarGroup/AvatarGroupContext.ts +5 -3
- package/src/AvatarGroup/AvatarGroupOverflow.tsx +12 -12
- package/src/Badge/Badge.doc.mjs +3 -2
- package/src/Badge/Badge.test.tsx +32 -3
- package/src/Badge/Badge.tsx +42 -1
- package/src/Banner/Banner.doc.mjs +9 -0
- package/src/Banner/Banner.test.tsx +76 -11
- package/src/Banner/Banner.tsx +21 -2
- package/src/Button/Button.doc.mjs +2 -1
- package/src/Button/Button.test.tsx +19 -4
- package/src/Button/Button.tsx +9 -29
- package/src/ButtonGroup/ButtonGroup.doc.mjs +2 -2
- package/src/ButtonGroup/ButtonGroup.test.tsx +13 -0
- package/src/Calendar/Calendar.doc.mjs +4 -4
- package/src/Calendar/Calendar.test.tsx +112 -0
- package/src/Calendar/Calendar.tsx +18 -16
- package/src/Calendar/hooks/useCalendarDays.ts +4 -4
- package/src/Calendar/hooks/useCalendarNavigation.ts +4 -4
- package/src/Calendar/styles.ts +48 -42
- package/src/Card/Card.doc.mjs +10 -7
- package/src/Card/Card.test.tsx +113 -19
- package/src/Card/Card.tsx +67 -89
- package/src/Card/index.ts +36 -1
- package/src/Carousel/Carousel.doc.mjs +3 -0
- package/src/Carousel/Carousel.test.tsx +360 -0
- package/src/Carousel/Carousel.tsx +116 -15
- package/src/CheckboxInput/CheckboxInput.doc.mjs +3 -1
- package/src/CheckboxInput/CheckboxInput.test.tsx +15 -0
- package/src/CheckboxInput/CheckboxInput.tsx +5 -0
- package/src/CheckboxList/CheckboxList.doc.mjs +1 -1
- package/src/CodeBlock/CodeBlock.doc.mjs +10 -4
- package/src/CodeBlock/CodeBlock.test.tsx +37 -0
- package/src/CodeBlock/CodeBlock.tsx +20 -4
- package/src/CodeBlock/highlightRanges.ts +1 -1
- package/src/CodeBlock/highlightStyles.ts +13 -13
- package/src/CommandPalette/CommandPaletteItem.tsx +2 -12
- package/src/ComplexSelector/ComplexSelector.doc.mjs +9 -2
- package/src/ComplexSelector/ComplexSelector.test.tsx +183 -0
- package/src/ComplexSelector/ComplexSelector.tsx +22 -12
- package/src/DateInput/DateInput.doc.mjs +17 -1
- package/src/DateInput/DateInput.test.tsx +9 -4
- package/src/DateInput/DateInput.tsx +54 -3
- package/src/DateInput/DateInputTouch.test.tsx +146 -32
- package/src/DateInput/MonthScroller.tsx +5 -1
- package/src/DateInput/MonthYearWheels.tsx +7 -4
- package/src/DateInput/NativeDateField.test.tsx +635 -0
- package/src/DateInput/NativeDateField.tsx +641 -0
- package/src/DateInput/TouchDateField.tsx +83 -33
- package/src/DateInput/Wheel.tsx +1 -0
- package/src/DateInput/index.ts +1 -0
- package/src/DateInput/nativeDateSegments.ts +127 -0
- package/src/DateRangeInput/DateRangeInput.doc.mjs +3 -3
- package/src/DateRangeInput/DateRangeInput.test.tsx +46 -0
- package/src/DateRangeInput/DateRangeInput.tsx +8 -13
- package/src/DateTimeInput/DateTimeInput.doc.mjs +39 -22
- package/src/DateTimeInput/DateTimeInput.test.tsx +76 -0
- package/src/DateTimeInput/DateTimeInput.tsx +54 -20
- package/src/DateTimeInput/DateTimeInputTouch.test.tsx +980 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +1437 -0
- package/src/Dialog/Dialog.test.tsx +185 -18
- package/src/Dialog/Dialog.tsx +35 -11
- package/src/DropdownMenu/DropdownMenu.test.tsx +44 -10
- package/src/DropdownMenu/DropdownMenu.tsx +4 -13
- package/src/Field/Field.doc.mjs +1 -1
- package/src/Field/FieldLabel.test.tsx +29 -0
- package/src/Field/FieldLabel.tsx +7 -0
- package/src/Field/InputClearButton.test.tsx +15 -1
- package/src/Field/InputClearButton.tsx +28 -4
- package/src/FieldStatus/FieldStatus.doc.mjs +1 -1
- package/src/FileInput/FileInput.doc.mjs +1 -1
- package/src/Heading/Heading.tsx +0 -1
- package/src/HoverCard/HoverCard.doc.mjs +8 -2
- package/src/HoverCard/HoverCard.test.tsx +154 -4
- package/src/HoverCard/HoverCard.tsx +137 -3
- package/src/HoverCard/useHoverCard.tsx +23 -3
- package/src/Icon/Icon.test.tsx +55 -1
- package/src/Icon/Icon.tsx +5 -3
- package/src/Icon/defaultIcons.tsx +11 -2
- package/src/Icon/globalIconRegistry.test.tsx +16 -3
- package/src/Icon/globalIconRegistry.tsx +37 -6
- package/src/Icon/index.ts +1 -0
- package/src/Icon/useIcon.ts +9 -2
- package/src/Indicator/CheckboxIndicator.tsx +14 -8
- package/src/Indicator/Indicator.doc.mjs +3 -1
- package/src/InputGroup/InputGroup.doc.mjs +1 -1
- package/src/Item/Item.tsx +2 -7
- package/src/Kbd/Kbd.test.tsx +0 -17
- package/src/Kbd/Kbd.tsx +2 -26
- package/src/Layer/gestureCounter.ts +57 -0
- package/src/Layer/useLayer.test.tsx +368 -16
- package/src/Layer/useLayer.tsx +208 -35
- package/src/Layout/__tests__/edgeCompensation.test.tsx +1 -1
- package/src/List/List.test.tsx +38 -0
- package/src/List/List.tsx +8 -1
- package/src/Markdown/Markdown.test.tsx +37 -0
- package/src/Markdown/Markdown.tsx +16 -5
- package/src/Markdown/parser.test.ts +33 -0
- package/src/Markdown/parser.ts +9 -3
- package/src/MetadataList/MetadataList.test.tsx +75 -2
- package/src/MetadataList/MetadataListItem.tsx +5 -2
- package/src/MultiSelector/MultiSelector.doc.mjs +23 -2
- package/src/MultiSelector/MultiSelector.test.tsx +205 -0
- package/src/MultiSelector/MultiSelector.tsx +103 -16
- package/src/MultiSelector/hooks.ts +9 -2
- package/src/NavIcon/NavIcon.doc.mjs +8 -2
- package/src/NavIcon/NavIcon.test.tsx +9 -0
- package/src/NavIcon/NavIcon.tsx +5 -1
- package/src/NavItem/navItemStyles.stylex.ts +0 -8
- package/src/NavMenu/NavHeadingMenu.test.tsx +30 -0
- package/src/NavMenu/NavHeadingMenu.tsx +7 -4
- package/src/NumberInput/NumberInput.doc.mjs +27 -8
- package/src/NumberInput/NumberInput.test.tsx +563 -8
- package/src/NumberInput/NumberInput.tsx +77 -131
- package/src/NumberInput/numberInputCommit.test.ts +72 -0
- package/src/NumberInput/numberInputCommit.ts +103 -0
- package/src/NumberInput/numberParser.docblock.test.ts +234 -0
- package/src/NumberInput/numberParser.test.ts +222 -0
- package/src/NumberInput/numberParser.ts +403 -0
- package/src/Outline/Outline.tsx +2 -4
- package/src/OverflowList/OverflowList.doc.mjs +102 -21
- package/src/OverflowList/OverflowList.test.tsx +550 -4
- package/src/OverflowList/OverflowList.tsx +100 -2
- package/src/Pagination/Pagination.test.tsx +3 -2
- package/src/Popover/Popover.doc.mjs +2 -2
- package/src/Popover/Popover.test.tsx +38 -0
- package/src/Popover/Popover.tsx +28 -66
- package/src/Popover/usePopover.tsx +44 -5
- package/src/PowerSearch/PowerSearch.doc.mjs +1 -1
- package/src/PowerSearch/PowerSearchEditPopover.test.tsx +87 -0
- package/src/PowerSearch/PowerSearchValueEditor.test.tsx +64 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +109 -10
- package/src/PowerSearch/formatFilterValue.test.ts +16 -1
- package/src/PowerSearch/formatFilterValue.ts +2 -0
- package/src/ProgressBar/ProgressBar.doc.mjs +42 -6
- package/src/ProgressBar/ProgressBar.test.tsx +24 -0
- package/src/ProgressBar/ProgressBar.tsx +28 -8
- package/src/RadioList/RadioList.doc.mjs +1 -1
- package/src/Resizable/Resizable.doc.mjs +2 -2
- package/src/Resizable/useResizable.doc.mjs +21 -2
- package/src/Resizable/useResizable.test.ts +421 -0
- package/src/Resizable/useResizable.ts +133 -48
- package/src/SelectableCard/SelectableCard.doc.mjs +3 -0
- package/src/SelectableCard/SelectableCard.tsx +16 -0
- package/src/Selector/Selector.doc.mjs +15 -1
- package/src/Selector/Selector.source-build.test.mjs +65 -0
- package/src/Selector/Selector.test.tsx +301 -0
- package/src/Selector/Selector.tsx +145 -32
- package/src/Selector/hooks.ts +17 -2
- package/src/SideNav/SideNav.doc.mjs +2 -2
- package/src/SideNav/SideNav.test.tsx +1069 -6
- package/src/SideNav/SideNav.tsx +109 -38
- package/src/SideNav/SideNavHeading.tsx +5 -2
- package/src/SideNav/SideNavItem.doc.mjs +24 -3
- package/src/SideNav/SideNavItem.tsx +134 -44
- package/src/Slider/Slider.doc.mjs +2 -2
- package/src/Slider/Slider.test.tsx +106 -1
- package/src/Slider/Slider.tsx +52 -1
- package/src/Spinner/Spinner.doc.mjs +17 -5
- package/src/Spinner/Spinner.test.tsx +164 -0
- package/src/Spinner/Spinner.tsx +252 -22
- package/src/StatusDot/StatusDot.doc.mjs +8 -2
- package/src/StatusDot/StatusDot.test.tsx +9 -0
- package/src/StatusDot/StatusDot.tsx +7 -1
- package/src/Stepper/Step.doc.mjs +1 -1
- package/src/Stepper/Step.tsx +7 -14
- package/src/Switch/Switch.doc.mjs +3 -1
- package/src/Switch/Switch.test.tsx +10 -0
- package/src/Switch/Switch.tsx +3 -0
- package/src/Table/BaseTable.tsx +6 -1
- package/src/Table/Table.doc.mjs +5 -3
- package/src/Table/Table.tsx +3 -8
- package/src/Table/TableBody.doc.mjs +2 -2
- package/src/Table/TableFooter.doc.mjs +1 -1
- package/src/Table/TableHeader.doc.mjs +1 -1
- package/src/Table/plugins/filtering/useTableFiltering.test.tsx +44 -6
- package/src/Table/plugins/filtering/useTableFiltering.tsx +100 -4
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +50 -4
- package/src/Table/plugins/selection/useTableSelection.test.tsx +62 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +25 -2
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -2
- package/src/Table/useTableGroupedRows.doc.mjs +3 -3
- package/src/Table/useTablePagination.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +1 -1
- package/src/Text/Text.test.tsx +44 -0
- package/src/Text/Text.tsx +0 -1
- package/src/TextArea/TextArea.doc.mjs +13 -3
- package/src/TextArea/TextArea.test.tsx +11 -0
- package/src/TextArea/TextArea.tsx +34 -22
- package/src/TextInput/TextInput.doc.mjs +1 -1
- package/src/TimeInput/TimeInput.doc.mjs +1 -1
- package/src/Timestamp/Timestamp.test.tsx +89 -0
- package/src/Timestamp/Timestamp.tsx +8 -8
- package/src/Timestamp/formatInstant.ts +5 -0
- package/src/Toast/Toast.doc.mjs +213 -44
- package/src/Toast/Toast.tsx +118 -23
- package/src/Toast/ToastViewport.test.tsx +1434 -8
- package/src/Toast/ToastViewport.tsx +85 -14
- package/src/Toast/index.ts +2 -0
- package/src/Toast/types.ts +43 -5
- package/src/Toast/useToastGesture.ts +361 -0
- package/src/Token/Token.test.tsx +95 -0
- package/src/Token/Token.tsx +19 -17
- package/src/Token/TokenLink.tsx +12 -3
- package/src/Tokenizer/Tokenizer.doc.mjs +17 -4
- package/src/Tokenizer/Tokenizer.test.tsx +161 -0
- package/src/Tokenizer/Tokenizer.tsx +49 -24
- package/src/TopNav/TopNavHeading.tsx +2 -2
- package/src/TopNav/TopNavItem.tsx +3 -7
- package/src/TopNav/TopNavMegaMenu.test.tsx +104 -0
- package/src/TopNav/TopNavMegaMenu.tsx +47 -4
- package/src/TopNav/TopNavMegaMenuItem.tsx +10 -9
- package/src/TopNav/TopNavMenu.test.tsx +133 -1
- package/src/TopNav/TopNavMenu.tsx +38 -5
- package/src/TreeList/TreeList.test.tsx +49 -0
- package/src/TreeList/TreeList.tsx +7 -2
- package/src/TreeList/TreeListItem.tsx +2 -7
- package/src/Typeahead/BaseTypeahead.doc.mjs +13 -0
- package/src/Typeahead/BaseTypeahead.tsx +96 -6
- package/src/Typeahead/Typeahead.doc.mjs +7 -1
- package/src/Typeahead/Typeahead.test.tsx +154 -0
- package/src/Typeahead/Typeahead.tsx +9 -0
- package/src/Typeahead/TypeaheadItem.test.tsx +43 -0
- package/src/Typeahead/TypeaheadItem.tsx +8 -1
- package/src/hooks/useAnnounce.doc.mjs +96 -0
- package/src/hooks/useDevWarning.doc.mjs +96 -0
- package/src/hooks/useHotkeys.test.ts +0 -18
- package/src/hooks/useHotkeys.ts +3 -25
- package/src/hooks/useIndicatorFocusRing.doc.mjs +104 -0
- package/src/hooks/useInputStatusIcon.doc.mjs +142 -0
- package/src/hooks/useInteractiveRole.doc.mjs +119 -0
- package/src/hooks/useLongPress.doc.mjs +123 -0
- package/src/hooks/useOverflow.doc.mjs +58 -17
- package/src/hooks/useOverflow.ts +16 -4
- package/src/hooks/useTypeahead.doc.mjs +153 -0
- package/src/i18n/InternationalizationContext.ts +3 -0
- package/src/i18n/InternationalizationProvider.tsx +8 -1
- package/src/i18n/__tests__/resolve.test.ts +23 -1
- package/src/i18n/resolve.ts +46 -49
- package/src/i18n/useTranslator.ts +2 -7
- package/src/index.ts +2 -0
- package/src/raw-import.d.ts +14 -0
- package/src/theme/Theme.test.tsx +104 -2
- package/src/theme/Theme.tsx +49 -14
- package/src/theme/defineTheme.test.ts +23 -0
- package/src/theme/defineTheme.ts +12 -3
- package/src/theme/derivedVarRegistry.test.ts +87 -3
- package/src/theme/derivedVarRegistry.ts +23 -4
- package/src/theme/generateThemeRules.test.ts +99 -1
- package/src/theme/generateThemeRules.ts +28 -0
- package/src/theme/syntax/tokens.ts +5 -2
- package/src/theme/useTheme.test.tsx +10 -0
- package/src/theme/useTheme.ts +16 -10
- package/src/utils/dateParser.test.ts +34 -2
- package/src/utils/dateParser.ts +11 -14
- package/src/utils/focusOutline.stylex.ts +50 -0
- package/src/utils/interactionOverlay.stylex.ts +74 -0
- package/src/utils/isApplePlatform.test.ts +61 -0
- package/src/utils/isApplePlatform.ts +37 -0
- package/src/utils/plainDate.test.ts +46 -0
- package/src/utils/plainDate.ts +18 -3
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
'use client';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* @file ToastViewport.tsx
|
|
7
|
+
* @input Uses React state/effects, ToastContext, useAnnounce, viewport tokens,
|
|
8
|
+
* and placement-derived motion variables
|
|
9
|
+
* @output Exports the ToastViewport provider, stack, live announcement dispatch,
|
|
10
|
+
* focus handoff, safe-area-aware edge gutters, and motion context
|
|
11
|
+
* @position Core provider/imperative viewport for useToast()
|
|
12
|
+
*
|
|
13
|
+
* SYNC: When placement, stacking, focus, announcement, or safe-area behavior
|
|
14
|
+
* changes, update ToastViewport.test.tsx, Toast.doc.mjs, and Toast.stories.tsx.
|
|
15
|
+
*/
|
|
5
16
|
import { isValidElement, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
6
17
|
import * as stylex from '@stylexjs/stylex';
|
|
7
18
|
import "../theme/tokens.stylex.js";
|
|
@@ -9,17 +20,27 @@ import { spacingVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
|
|
|
9
20
|
import { mergeProps } from "../utils/index.js";
|
|
10
21
|
import { INTERACTIVE_SELECTORS } from "../hooks/useClickableContainer.js";
|
|
11
22
|
import { useAnnounce } from "../hooks/useAnnounce.js";
|
|
12
|
-
import {
|
|
23
|
+
import { ToastSurface } from "./Toast.js";
|
|
13
24
|
import { ToastContext } from "./ToastContext.js";
|
|
14
25
|
import { useTranslator } from "../i18n/index.js";
|
|
15
26
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
27
|
+
const SAFE_AREA_INLINE_START = `max(${spacingVars['--spacing-4']}, env(safe-area-inset-left, 0px))`;
|
|
28
|
+
const SAFE_AREA_INLINE_END = `max(${spacingVars['--spacing-4']}, env(safe-area-inset-right, 0px))`;
|
|
29
|
+
const SAFE_AREA_BLOCK_START = `max(${spacingVars['--spacing-4']}, env(safe-area-inset-top, 0px))`;
|
|
30
|
+
const SAFE_AREA_BLOCK_END = `max(${spacingVars['--spacing-4']}, env(safe-area-inset-bottom, 0px))`;
|
|
31
|
+
const TOAST_EDGE_DRIFT = spacingVars['--spacing-2'];
|
|
32
|
+
const TOAST_EDGE_DRIFT_NEGATIVE = `calc(-1 * ${TOAST_EDGE_DRIFT})`;
|
|
16
33
|
const styles = {
|
|
17
34
|
viewport: {
|
|
18
35
|
kVAEAm: "xixxii4",
|
|
19
36
|
kY2c9j: "x6cuj84",
|
|
20
37
|
k1xSpc: "x78zum5",
|
|
38
|
+
kB7OPa: "x9f619",
|
|
21
39
|
kXwgrk: "xdt5ytf",
|
|
22
|
-
|
|
40
|
+
kLKAdn: "x1vjezoa",
|
|
41
|
+
kGO01o: "xew4nw4",
|
|
42
|
+
kZCmMZ: "xf4btlh x19efkpl",
|
|
43
|
+
kwRFfy: "x1g0rcpp x1n6uwha",
|
|
23
44
|
kfzvcC: "x47corl",
|
|
24
45
|
kpwlN0: "xh3736h",
|
|
25
46
|
kogj98: "x1ghz6dp",
|
|
@@ -27,31 +48,67 @@ const styles = {
|
|
|
27
48
|
kVQacm: "x1rea2x4",
|
|
28
49
|
$$css: true
|
|
29
50
|
},
|
|
51
|
+
viewportInlineSpan: {
|
|
52
|
+
kLqNvP: "x1o0tod",
|
|
53
|
+
kt4wiu: "xtijo5x",
|
|
54
|
+
$$css: true
|
|
55
|
+
},
|
|
30
56
|
bottomEnd: {
|
|
31
57
|
krVfgx: "x1ey2m1c",
|
|
32
|
-
kt4wiu: "xtijo5x",
|
|
33
58
|
kGNEyG: "xuk3077",
|
|
34
59
|
$$css: true
|
|
35
60
|
},
|
|
36
61
|
bottomStart: {
|
|
37
62
|
krVfgx: "x1ey2m1c",
|
|
38
|
-
kLqNvP: "x1o0tod",
|
|
39
63
|
kGNEyG: "x1cy8zhl",
|
|
40
64
|
$$css: true
|
|
41
65
|
},
|
|
42
66
|
topEnd: {
|
|
43
67
|
k87sOh: "x13vifvy",
|
|
44
|
-
kt4wiu: "xtijo5x",
|
|
45
68
|
kGNEyG: "xuk3077",
|
|
46
69
|
kXwgrk: "x3ieub6",
|
|
47
70
|
$$css: true
|
|
48
71
|
},
|
|
49
72
|
topStart: {
|
|
50
73
|
k87sOh: "x13vifvy",
|
|
51
|
-
kLqNvP: "x1o0tod",
|
|
52
74
|
kGNEyG: "x1cy8zhl",
|
|
53
75
|
kXwgrk: "x3ieub6",
|
|
54
76
|
$$css: true
|
|
77
|
+
},
|
|
78
|
+
toastWrapper: {
|
|
79
|
+
kfzvcC: "x67bb7w",
|
|
80
|
+
k1xSpc: "xrvj5dj",
|
|
81
|
+
kzqmXN: "xh8yej3",
|
|
82
|
+
ks0D6T: "x1j9u4d2",
|
|
83
|
+
k7Eaqz: "xeuugli",
|
|
84
|
+
k9llMU: "x1tu4anv",
|
|
85
|
+
k1ekBW: "xjshnde",
|
|
86
|
+
kIyJzY: "xuedmi6 xsagj69",
|
|
87
|
+
kAMwcw: "xlr8y92",
|
|
88
|
+
ke1DCf: "x1sopeo2",
|
|
89
|
+
kNIiQF: "x5rzir7",
|
|
90
|
+
$$css: true
|
|
91
|
+
},
|
|
92
|
+
toastWrapperFromBottom: {
|
|
93
|
+
"--_toast-slide-y": "x1heqljd",
|
|
94
|
+
$$css: true
|
|
95
|
+
},
|
|
96
|
+
toastWrapperFromTop: {
|
|
97
|
+
"--_toast-slide-y": "x87gnkx",
|
|
98
|
+
$$css: true
|
|
99
|
+
},
|
|
100
|
+
toastWrapperGap: {
|
|
101
|
+
kGO01o: "x1wesfrj xup0pd7",
|
|
102
|
+
$$css: true
|
|
103
|
+
},
|
|
104
|
+
toastWrapperGapReversed: {
|
|
105
|
+
kGO01o: "x1wesfrj x1vjq31q",
|
|
106
|
+
$$css: true
|
|
107
|
+
},
|
|
108
|
+
toastWrapperExiting: {
|
|
109
|
+
k9llMU: "xihq33y",
|
|
110
|
+
kGO01o: "x18d9i69",
|
|
111
|
+
$$css: true
|
|
55
112
|
}
|
|
56
113
|
};
|
|
57
114
|
|
|
@@ -346,18 +403,21 @@ export function ToastViewport({
|
|
|
346
403
|
};
|
|
347
404
|
}, [hasToasts, getFocusable]);
|
|
348
405
|
const posStyle = position === 'topEnd' ? styles.topEnd : position === 'topStart' ? styles.topStart : position === 'bottomStart' ? styles.bottomStart : styles.bottomEnd;
|
|
406
|
+
const isReversed = position === 'topEnd' || position === 'topStart';
|
|
407
|
+
const toastWrapperPositionStyle = isReversed ? styles.toastWrapperFromTop : styles.toastWrapperFromBottom;
|
|
408
|
+
const gapStyle = isReversed ? styles.toastWrapperGapReversed : styles.toastWrapperGap;
|
|
349
409
|
return /*#__PURE__*/_jsxs(ToastContext, {
|
|
350
410
|
value: contextValue,
|
|
351
411
|
children: [children, /*#__PURE__*/_jsx("div", {
|
|
352
412
|
ref: viewportRef,
|
|
353
|
-
role:
|
|
354
|
-
"aria-label": t('@astryx.toast.viewport'),
|
|
355
|
-
tabIndex: -1
|
|
413
|
+
role: hasToasts ? 'region' : undefined,
|
|
414
|
+
"aria-label": hasToasts ? t('@astryx.toast.viewport') : undefined,
|
|
415
|
+
tabIndex: hasToasts ? -1 : undefined
|
|
356
416
|
// popover="manual" promotes to the top layer (above dialogs).
|
|
357
417
|
// Omitted inside dialogs where the viewport is already in a top layer.
|
|
358
418
|
,
|
|
359
419
|
popover: isTopLayer ? 'manual' : undefined,
|
|
360
|
-
...mergeProps(stylex.props(styles.viewport, posStyle), {
|
|
420
|
+
...mergeProps(stylex.props(styles.viewport, styles.viewportInlineSpan, posStyle), {
|
|
361
421
|
style: Object.keys(insetStyle).length > 0 ? insetStyle : undefined
|
|
362
422
|
}),
|
|
363
423
|
children: visibleToasts.map(entry => {
|
|
@@ -368,14 +428,7 @@ export function ToastViewport({
|
|
|
368
428
|
const isExiting = exitingIds.has(entry.id);
|
|
369
429
|
return /*#__PURE__*/_jsx("div", {
|
|
370
430
|
"data-toast-id": entry.id,
|
|
371
|
-
...
|
|
372
|
-
0: {
|
|
373
|
-
className: "x67bb7w xrvj5dj x1tu4anv xvmdzux xjshnde xuedmi6 xsagj69 xlr8y92 x1sopeo2 x5rzir7"
|
|
374
|
-
},
|
|
375
|
-
1: {
|
|
376
|
-
className: "x67bb7w xrvj5dj xjshnde xuedmi6 xsagj69 xlr8y92 x1sopeo2 x5rzir7 xihq33y x18d9i69"
|
|
377
|
-
}
|
|
378
|
-
}[!!isExiting << 0],
|
|
431
|
+
...stylex.props(styles.toastWrapper, toastWrapperPositionStyle, gapStyle, isExiting && styles.toastWrapperExiting),
|
|
379
432
|
onTransitionEnd: isExiting ? e => {
|
|
380
433
|
if (e.propertyName === 'grid-template-rows') {
|
|
381
434
|
handleExited(entry.id);
|
|
@@ -383,16 +436,18 @@ export function ToastViewport({
|
|
|
383
436
|
} : undefined,
|
|
384
437
|
children: /*#__PURE__*/_jsx("div", {
|
|
385
438
|
...{
|
|
386
|
-
className: "xb3r6kr"
|
|
439
|
+
className: "xh8yej3 x193iq5w xeuugli x2lwn1j xb3r6kr"
|
|
387
440
|
},
|
|
388
|
-
children: /*#__PURE__*/_jsx(
|
|
441
|
+
children: /*#__PURE__*/_jsx(ToastSurface, {
|
|
389
442
|
type: type,
|
|
390
443
|
body: o.body,
|
|
391
444
|
endContent: o.endContent,
|
|
392
445
|
isAutoHide: isAutoHide,
|
|
393
446
|
autoHideDuration: dur,
|
|
394
447
|
isExiting: isExiting,
|
|
395
|
-
|
|
448
|
+
gestureDirection: isReversed ? -1 : 1,
|
|
449
|
+
onDismiss: reason => removeToast(entry.id, reason),
|
|
450
|
+
renderContent: o.renderContent
|
|
396
451
|
})
|
|
397
452
|
})
|
|
398
453
|
}, entry.id);
|
package/dist/Toast/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { useToast } from './useToast';
|
|
2
|
-
export type { ToastType, ToastPosition, ToastCollisionBehavior, ToastDismissReason, ToastOptions, ToastDismissFn, ShowToastFn, } from './types';
|
|
2
|
+
export type { ToastType, ToastPosition, ToastCollisionBehavior, ToastDismissReason, ToastOptions, ToastDismissFn, ShowToastFn, ToastContentRenderProps, ToastContentRenderFn, } from './types';
|
|
3
3
|
export { ToastViewport } from './ToastViewport';
|
|
4
4
|
export type { ToastViewportProps } from './ToastViewport';
|
|
5
5
|
export { Toast } from './Toast';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Toast/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,YAAY,EACV,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Toast/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,YAAY,EACV,SAAS,EACT,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAC,kBAAkB,EAAC,MAAM,iBAAiB,CAAC;AAGxD,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,YAAY,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC"}
|
package/dist/Toast/types.d.ts
CHANGED
|
@@ -28,6 +28,21 @@ export interface ToastOptions {
|
|
|
28
28
|
autoHideDuration?: number;
|
|
29
29
|
/** Content rendered at the end of the toast (trailing slot). */
|
|
30
30
|
endContent?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Replaces the content of this toast's card with your own layout.
|
|
33
|
+
*
|
|
34
|
+
* Astryx keeps the card, live-region role and auto-hide behavior, then hands
|
|
35
|
+
* the renderer this toast's content, resolved settings and `dismiss`
|
|
36
|
+
* callback. The renderer owns every control inside its layout; call
|
|
37
|
+
* `dismiss` from the control that should close the toast. Astryx does not
|
|
38
|
+
* inject a fallback control into custom content.
|
|
39
|
+
*
|
|
40
|
+
* Per-toast rather than app-wide on purpose. An app that wants every one of
|
|
41
|
+
* its toasts to share a layout wraps `useToast()` once and passes this on
|
|
42
|
+
* every call; a toast raised by library code that knows nothing about that
|
|
43
|
+
* wrapper then renders as an ordinary Astryx toast.
|
|
44
|
+
*/
|
|
45
|
+
renderContent?: ToastContentRenderFn;
|
|
31
46
|
/** Unique identifier for deduplication. */
|
|
32
47
|
uniqueID?: string;
|
|
33
48
|
/**
|
|
@@ -40,6 +55,29 @@ export interface ToastOptions {
|
|
|
40
55
|
}
|
|
41
56
|
/** Function to programmatically dismiss a toast. */
|
|
42
57
|
export type ToastDismissFn = () => void;
|
|
58
|
+
/** Values passed to a custom toast content renderer. */
|
|
59
|
+
export interface ToastContentRenderProps {
|
|
60
|
+
/** Primary message content, as passed to `showToast`. */
|
|
61
|
+
body: ReactNode;
|
|
62
|
+
/** Trailing content, as passed to `showToast`. Place it in your layout. */
|
|
63
|
+
endContent?: ReactNode;
|
|
64
|
+
/** Resolved toast type — `'error'` also makes the live region assertive. */
|
|
65
|
+
type: ToastType;
|
|
66
|
+
/** Whether this toast will dismiss itself. */
|
|
67
|
+
isAutoHide: boolean;
|
|
68
|
+
/** Milliseconds until auto-dismiss, when `isAutoHide`. */
|
|
69
|
+
autoHideDuration: number;
|
|
70
|
+
/**
|
|
71
|
+
* Dismisses this toast with reason `'manual'`. Pass it through any nested
|
|
72
|
+
* components that need to close the toast.
|
|
73
|
+
*/
|
|
74
|
+
dismiss: ToastDismissFn;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Renders the content of one toast inside Astryx's card — see
|
|
78
|
+
* `ToastOptions.renderContent`.
|
|
79
|
+
*/
|
|
80
|
+
export type ToastContentRenderFn = (toast: ToastContentRenderProps) => ReactNode;
|
|
43
81
|
/** Function returned by useToast to show toasts. */
|
|
44
82
|
export type ShowToastFn = (options: ToastOptions) => ToastDismissFn;
|
|
45
83
|
/** Internal toast state with ID and metadata. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Toast/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,gDAAgD;AAChD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Toast/types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAErC,gDAAgD;AAChD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzC,6DAA6D;AAC7D,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhF,mEAAmE;AACnE,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5D,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnD,mCAAmC;AACnC,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAErC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IAC3C,gDAAgD;IAChD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,CAAC;CAC/C;AAED,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,yDAAyD;IACzD,IAAI,EAAE,SAAS,CAAC;IAChB,2EAA2E;IAC3E,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,4EAA4E;IAC5E,IAAI,EAAE,SAAS,CAAC;IAChB,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,uBAAuB,KAC3B,SAAS,CAAC;AAEf,oDAAoD;AACpD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,cAAc,CAAC;AAEpE,iDAAiD;AACjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PointerEvent as ReactPointerEvent, RefObject } from 'react';
|
|
2
|
+
export type ToastGestureDirection = 1 | -1;
|
|
3
|
+
interface UseToastGestureOptions {
|
|
4
|
+
direction: ToastGestureDirection;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
canPauseTimer: boolean;
|
|
7
|
+
isTimerPaused: () => boolean;
|
|
8
|
+
pauseTimer: () => void;
|
|
9
|
+
resumeTimer: () => void;
|
|
10
|
+
dismiss: () => void;
|
|
11
|
+
shouldIgnoreTarget: (target: EventTarget | null, root: HTMLElement) => boolean;
|
|
12
|
+
}
|
|
13
|
+
interface ToastGestureBindings {
|
|
14
|
+
onPointerDown: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
15
|
+
onPointerMove: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
16
|
+
onPointerUp: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
17
|
+
onPointerCancel: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
18
|
+
onLostPointerCapture: (event: ReactPointerEvent<HTMLDivElement>) => void;
|
|
19
|
+
}
|
|
20
|
+
interface UseToastGestureResult {
|
|
21
|
+
rootRef: RefObject<HTMLDivElement | null>;
|
|
22
|
+
bindings: ToastGestureBindings;
|
|
23
|
+
}
|
|
24
|
+
export declare function useToastGesture({ direction, enabled, canPauseTimer, isTimerPaused, pauseTimer, resumeTimer, dismiss, shouldIgnoreTarget, }: UseToastGestureOptions): UseToastGestureResult;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=useToastGesture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToastGesture.d.ts","sourceRoot":"","sources":["../../src/Toast/useToastGesture.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,YAAY,IAAI,iBAAiB,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAWxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAoB3C,UAAU,sBAAsB;IAC9B,SAAS,EAAE,qBAAqB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,kBAAkB,EAAE,CAClB,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,WAAW,KACd,OAAO,CAAC;CACd;AAED,UAAU,oBAAoB;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,aAAa,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAClE,WAAW,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IAChE,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;IACpE,oBAAoB,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAC1E;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC1C,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAcD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,OAAO,EACP,aAAa,EACb,aAAa,EACb,UAAU,EACV,WAAW,EACX,OAAO,EACP,kBAAkB,GACnB,EAAE,sBAAsB,GAAG,qBAAqB,CA4QhD"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file useToastGesture.ts
|
|
7
|
+
* @input Uses a resolved Toast edge direction, timer pause/resume hooks,
|
|
8
|
+
* dismissal callback, enabled state, and interactive-descendant policy
|
|
9
|
+
* @output Returns the Toast card root ref and touch/pen gesture bindings
|
|
10
|
+
* @position Internal Toast gesture unit; attached to the Toast card root
|
|
11
|
+
*/
|
|
12
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
13
|
+
const DRAG_PROMOTION_SLOP = 8;
|
|
14
|
+
const SWIPE_DISMISS_RATIO = 0.4;
|
|
15
|
+
const FLICK_MIN_DISTANCE = 48;
|
|
16
|
+
const FLICK_VELOCITY = 1.2;
|
|
17
|
+
const VERTICAL_INTENT_RATIO = 1.2;
|
|
18
|
+
const SWIPE_EXIT_DISTANCE = '120%';
|
|
19
|
+
const SWIPE_ACTIVE_FADE_MAX = 0.4;
|
|
20
|
+
const SWIPE_ACTIVE_SCALE_MAX = 0.02;
|
|
21
|
+
function swipeProgressValue(travel, surfaceSize) {
|
|
22
|
+
return Math.min(Math.max(travel / surfaceSize, 0), 1);
|
|
23
|
+
}
|
|
24
|
+
function clearTransientStyles(root) {
|
|
25
|
+
root.style.removeProperty('transition-duration');
|
|
26
|
+
root.style.removeProperty('--_toast-swipe-y');
|
|
27
|
+
root.style.removeProperty('--_toast-swipe-exit-y');
|
|
28
|
+
root.style.removeProperty('--_toast-swipe-opacity');
|
|
29
|
+
root.style.removeProperty('--_toast-swipe-scale');
|
|
30
|
+
}
|
|
31
|
+
export function useToastGesture({
|
|
32
|
+
direction,
|
|
33
|
+
enabled,
|
|
34
|
+
canPauseTimer,
|
|
35
|
+
isTimerPaused,
|
|
36
|
+
pauseTimer,
|
|
37
|
+
resumeTimer,
|
|
38
|
+
dismiss,
|
|
39
|
+
shouldIgnoreTarget
|
|
40
|
+
}) {
|
|
41
|
+
const rootRef = useRef(null);
|
|
42
|
+
const gestureRef = useRef(null);
|
|
43
|
+
const resetGesture = useCallback(shouldResume => {
|
|
44
|
+
const root = rootRef.current;
|
|
45
|
+
const state = gestureRef.current;
|
|
46
|
+
gestureRef.current = null;
|
|
47
|
+
if (root) {
|
|
48
|
+
clearTransientStyles(root);
|
|
49
|
+
}
|
|
50
|
+
if (shouldResume && state?.pausedTimer) {
|
|
51
|
+
resumeTimer();
|
|
52
|
+
}
|
|
53
|
+
}, [resumeTimer]);
|
|
54
|
+
const beginGesture = useCallback((point, target) => {
|
|
55
|
+
const root = rootRef.current;
|
|
56
|
+
if (!root || !enabled || gestureRef.current != null || shouldIgnoreTarget(target, root)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const pausedTimer = canPauseTimer && !isTimerPaused();
|
|
60
|
+
if (pausedTimer) {
|
|
61
|
+
pauseTimer();
|
|
62
|
+
}
|
|
63
|
+
const surfaceSize = Math.max(root.getBoundingClientRect().height, 1);
|
|
64
|
+
gestureRef.current = {
|
|
65
|
+
pointerId: point.pointerId,
|
|
66
|
+
startX: point.clientX,
|
|
67
|
+
startY: point.clientY,
|
|
68
|
+
startTime: Date.now(),
|
|
69
|
+
direction,
|
|
70
|
+
intent: 'pending',
|
|
71
|
+
pausedTimer,
|
|
72
|
+
surfaceSize,
|
|
73
|
+
dismissThreshold: Math.max(surfaceSize * SWIPE_DISMISS_RATIO, FLICK_MIN_DISTANCE)
|
|
74
|
+
};
|
|
75
|
+
return true;
|
|
76
|
+
}, [canPauseTimer, direction, enabled, isTimerPaused, pauseTimer, shouldIgnoreTarget]);
|
|
77
|
+
const moveGesture = useCallback((point, preventDefault, releaseCapture) => {
|
|
78
|
+
const state = gestureRef.current;
|
|
79
|
+
const root = rootRef.current;
|
|
80
|
+
if (!state || !root || point.pointerId !== state.pointerId) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const deltaX = point.clientX - state.startX;
|
|
84
|
+
const deltaY = point.clientY - state.startY;
|
|
85
|
+
const absX = Math.abs(deltaX);
|
|
86
|
+
const absY = Math.abs(deltaY);
|
|
87
|
+
if (state.intent === 'pending') {
|
|
88
|
+
if (absX > DRAG_PROMOTION_SLOP && absX > absY) {
|
|
89
|
+
releaseCapture?.();
|
|
90
|
+
resetGesture(true);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (absY <= DRAG_PROMOTION_SLOP || absY <= absX * VERTICAL_INTENT_RATIO) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
state.intent = deltaY * state.direction > 0 ? 'vertical' : 'opposite';
|
|
97
|
+
if (state.intent === 'opposite') {
|
|
98
|
+
releaseCapture?.();
|
|
99
|
+
resetGesture(true);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
root.style.setProperty('transition-duration', '0s');
|
|
103
|
+
}
|
|
104
|
+
preventDefault();
|
|
105
|
+
const travel = Math.max(0, deltaY * state.direction);
|
|
106
|
+
const progress = swipeProgressValue(travel, state.surfaceSize);
|
|
107
|
+
root.style.setProperty('--_toast-swipe-y', `${travel * state.direction}px`);
|
|
108
|
+
root.style.setProperty('--_toast-swipe-opacity', (1 - progress * SWIPE_ACTIVE_FADE_MAX).toFixed(3));
|
|
109
|
+
root.style.setProperty('--_toast-swipe-scale', (1 - progress * SWIPE_ACTIVE_SCALE_MAX).toFixed(3));
|
|
110
|
+
}, [resetGesture]);
|
|
111
|
+
const endGesture = useCallback(point => {
|
|
112
|
+
const state = gestureRef.current;
|
|
113
|
+
const root = rootRef.current;
|
|
114
|
+
if (!state || !root || point.pointerId !== state.pointerId) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const travel = Math.max(0, (point.clientY - state.startY) * state.direction);
|
|
118
|
+
const elapsed = Math.max(1, Date.now() - state.startTime);
|
|
119
|
+
const isDismissed = state.intent === 'vertical' && (travel >= state.dismissThreshold || travel >= FLICK_MIN_DISTANCE && travel / elapsed > FLICK_VELOCITY);
|
|
120
|
+
gestureRef.current = null;
|
|
121
|
+
root.style.removeProperty('transition-duration');
|
|
122
|
+
if (isDismissed) {
|
|
123
|
+
root.style.setProperty('--_toast-swipe-exit-y', state.direction === 1 ? SWIPE_EXIT_DISTANCE : `calc(-1 * ${SWIPE_EXIT_DISTANCE})`);
|
|
124
|
+
dismiss();
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
clearTransientStyles(root);
|
|
128
|
+
if (state.pausedTimer) {
|
|
129
|
+
resumeTimer();
|
|
130
|
+
}
|
|
131
|
+
}, [dismiss, resumeTimer]);
|
|
132
|
+
const handlePointerDown = useCallback(event => {
|
|
133
|
+
if (event.pointerType === 'pen' && (event.button == null || event.button === 0) && beginGesture(event, event.target)) {
|
|
134
|
+
rootRef.current?.setPointerCapture?.(event.pointerId);
|
|
135
|
+
}
|
|
136
|
+
}, [beginGesture]);
|
|
137
|
+
const handlePointerMove = useCallback(event => {
|
|
138
|
+
if (event.pointerType !== 'pen') {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
moveGesture(event, () => event.preventDefault(), () => rootRef.current?.releasePointerCapture?.(event.pointerId));
|
|
142
|
+
}, [moveGesture]);
|
|
143
|
+
const handlePointerUp = useCallback(event => {
|
|
144
|
+
if (event.pointerType !== 'pen') {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
rootRef.current?.releasePointerCapture?.(event.pointerId);
|
|
148
|
+
endGesture(event);
|
|
149
|
+
}, [endGesture]);
|
|
150
|
+
const handlePointerCancel = useCallback(event => {
|
|
151
|
+
if (event.pointerType === 'pen' && gestureRef.current?.pointerId === event.pointerId) {
|
|
152
|
+
resetGesture(true);
|
|
153
|
+
}
|
|
154
|
+
}, [resetGesture]);
|
|
155
|
+
useEffect(() => {
|
|
156
|
+
const root = rootRef.current;
|
|
157
|
+
if (!root || !enabled) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const point = touch => ({
|
|
161
|
+
pointerId: touch.identifier,
|
|
162
|
+
clientX: touch.clientX,
|
|
163
|
+
clientY: touch.clientY
|
|
164
|
+
});
|
|
165
|
+
const changedTouch = event => {
|
|
166
|
+
const pointerId = gestureRef.current?.pointerId;
|
|
167
|
+
return pointerId == null ? undefined : [...event.changedTouches].find(touch => touch.identifier === pointerId);
|
|
168
|
+
};
|
|
169
|
+
const handleTouchStart = event => {
|
|
170
|
+
const touch = event.touches.length === 1 ? event.changedTouches[0] : null;
|
|
171
|
+
if (touch) {
|
|
172
|
+
beginGesture(point(touch), event.target);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
const handleTouchMove = event => {
|
|
176
|
+
const touch = changedTouch(event);
|
|
177
|
+
if (touch) {
|
|
178
|
+
moveGesture(point(touch), () => {
|
|
179
|
+
if (event.cancelable) {
|
|
180
|
+
event.preventDefault();
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const handleTouchEnd = event => {
|
|
186
|
+
const touch = changedTouch(event);
|
|
187
|
+
if (touch) {
|
|
188
|
+
endGesture(point(touch));
|
|
189
|
+
} else if (event.touches.length === 0) {
|
|
190
|
+
resetGesture(true);
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
const handleTouchCancel = () => resetGesture(true);
|
|
194
|
+
root.addEventListener('touchstart', handleTouchStart, {
|
|
195
|
+
passive: true
|
|
196
|
+
});
|
|
197
|
+
root.addEventListener('touchmove', handleTouchMove, {
|
|
198
|
+
passive: false
|
|
199
|
+
});
|
|
200
|
+
root.addEventListener('touchend', handleTouchEnd, {
|
|
201
|
+
passive: true
|
|
202
|
+
});
|
|
203
|
+
root.addEventListener('touchcancel', handleTouchCancel, {
|
|
204
|
+
passive: true
|
|
205
|
+
});
|
|
206
|
+
return () => {
|
|
207
|
+
root.removeEventListener('touchstart', handleTouchStart);
|
|
208
|
+
root.removeEventListener('touchmove', handleTouchMove);
|
|
209
|
+
root.removeEventListener('touchend', handleTouchEnd);
|
|
210
|
+
root.removeEventListener('touchcancel', handleTouchCancel);
|
|
211
|
+
};
|
|
212
|
+
}, [beginGesture, enabled, endGesture, moveGesture, resetGesture]);
|
|
213
|
+
return {
|
|
214
|
+
rootRef,
|
|
215
|
+
bindings: {
|
|
216
|
+
onPointerDown: handlePointerDown,
|
|
217
|
+
onPointerMove: handlePointerMove,
|
|
218
|
+
onPointerUp: handlePointerUp,
|
|
219
|
+
onPointerCancel: handlePointerCancel,
|
|
220
|
+
onLostPointerCapture: handlePointerCancel
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
}
|
package/dist/Token/Token.d.ts
CHANGED
|
@@ -95,7 +95,7 @@ export interface TokenProps extends BaseProps<HTMLElement> {
|
|
|
95
95
|
* <Token label="Link" href="/path" />
|
|
96
96
|
* ```
|
|
97
97
|
*/
|
|
98
|
-
export declare function Token({ label, size, color, icon, isDisabled, onRemove, onClick, href, description, endContent, isLabelHidden, xstyle, className, style, 'data-testid': testId, ref, }: TokenProps): import("react").JSX.Element;
|
|
98
|
+
export declare function Token({ label, size, color, icon, isDisabled, onRemove, onClick, href, description, endContent, isLabelHidden, xstyle, className, style, 'data-testid': testId, ref, ...rest }: TokenProps): import("react").JSX.Element;
|
|
99
99
|
export declare namespace Token {
|
|
100
100
|
var displayName: string;
|
|
101
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/Token/Token.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/Token/Token.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBrC,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAK5C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAM3C;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,UAAW,SAAQ,SAAS,CAAC,WAAW,CAAC;IACxD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;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;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA8JD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,IAAW,EACX,KAAiB,EACjB,IAAI,EACJ,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,UAAU,EACV,aAAqB,EACrB,MAAM,EACN,SAAS,EACT,KAAK,EACL,aAAa,EAAE,MAAM,EACrB,GAAG,EACH,GAAG,IAAI,EACR,EAAE,UAAU,+BAwLZ;yBA1Me,KAAK"}
|
package/dist/Token/Token.js
CHANGED
|
@@ -26,6 +26,7 @@ import { useInteractiveRole } from "../hooks/useInteractiveRole.js";
|
|
|
26
26
|
import { TokenLink } from "./TokenLink.js";
|
|
27
27
|
import { themeProps } from "../utils/themeProps.js";
|
|
28
28
|
import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
|
|
29
|
+
import { interactionOverlayStyles } from "../utils/interactionOverlay.stylex.js";
|
|
29
30
|
import { useTranslator } from "../i18n/index.js";
|
|
30
31
|
|
|
31
32
|
// =============================================================================
|
|
@@ -65,7 +66,6 @@ const styles = {
|
|
|
65
66
|
k1ekBW: "x12qzo2w",
|
|
66
67
|
kIyJzY: "xuedmi6",
|
|
67
68
|
kAMwcw: "xlr8y92",
|
|
68
|
-
kKwaWg: "xmvprkv xq8i9tn",
|
|
69
69
|
$$css: true
|
|
70
70
|
},
|
|
71
71
|
disabled: {
|
|
@@ -208,7 +208,8 @@ export function Token({
|
|
|
208
208
|
className,
|
|
209
209
|
style,
|
|
210
210
|
'data-testid': testId,
|
|
211
|
-
ref
|
|
211
|
+
ref,
|
|
212
|
+
...rest
|
|
212
213
|
}) {
|
|
213
214
|
const t = useTranslator();
|
|
214
215
|
const LinkComponent = useLinkComponent();
|
|
@@ -253,20 +254,27 @@ export function Token({
|
|
|
253
254
|
});
|
|
254
255
|
const sharedProps = {
|
|
255
256
|
'data-testid': testId,
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
...(isLabelHidden ? {
|
|
258
|
+
'aria-label': label
|
|
259
|
+
} : {}),
|
|
260
|
+
...(description != null ? {
|
|
261
|
+
'aria-description': description
|
|
262
|
+
} : {})
|
|
258
263
|
};
|
|
259
264
|
if (role === 'link') {
|
|
260
265
|
if (onRemove == null) {
|
|
261
266
|
return /*#__PURE__*/_jsx(LinkComponent, {
|
|
262
267
|
ref: ref,
|
|
263
268
|
href: href,
|
|
264
|
-
"aria-disabled": isDisabled || undefined,
|
|
265
|
-
...sharedProps,
|
|
266
269
|
...mergeProps(themeProps('token', {
|
|
267
270
|
color,
|
|
268
271
|
size
|
|
269
|
-
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, isDisabled && styles.disabled, xstyle), className, style),
|
|
272
|
+
}), focusOutlineProps.focusVisible(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
|
|
273
|
+
...rest,
|
|
274
|
+
...(isDisabled ? {
|
|
275
|
+
'aria-disabled': true
|
|
276
|
+
} : {}),
|
|
277
|
+
...sharedProps,
|
|
270
278
|
children: content
|
|
271
279
|
});
|
|
272
280
|
}
|
|
@@ -300,11 +308,12 @@ export function Token({
|
|
|
300
308
|
}[!!isLabelHidden << 0],
|
|
301
309
|
children: label
|
|
302
310
|
}),
|
|
303
|
-
...sharedProps,
|
|
304
311
|
...mergeProps(themeProps('token', {
|
|
305
312
|
color,
|
|
306
313
|
size
|
|
307
|
-
}), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, isDisabled && styles.disabled, xstyle), className, style)
|
|
314
|
+
}), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
|
|
315
|
+
...rest,
|
|
316
|
+
...sharedProps
|
|
308
317
|
});
|
|
309
318
|
}
|
|
310
319
|
if (effectiveOnClick != null) {
|
|
@@ -318,11 +327,12 @@ export function Token({
|
|
|
318
327
|
return /*#__PURE__*/_jsxs("span", {
|
|
319
328
|
ref: ref,
|
|
320
329
|
onClick: isDisabled ? undefined : handleContainerClick,
|
|
321
|
-
...sharedProps,
|
|
322
330
|
...mergeProps(themeProps('token', {
|
|
323
331
|
color,
|
|
324
332
|
size
|
|
325
|
-
}), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, isDisabled && styles.disabled, xstyle), className, style),
|
|
333
|
+
}), focusOutlineProps.focusWithin(styles.base, sizeStyles[size], colorStyles[color], styles.interactive, interactionOverlayStyles.backgroundImage, isDisabled && styles.disabled, xstyle), className, style),
|
|
334
|
+
...rest,
|
|
335
|
+
...sharedProps,
|
|
326
336
|
children: [icon, /*#__PURE__*/_jsx("button", {
|
|
327
337
|
type: "button",
|
|
328
338
|
onClick: effectiveOnClick,
|
|
@@ -346,11 +356,12 @@ export function Token({
|
|
|
346
356
|
}
|
|
347
357
|
return /*#__PURE__*/_jsx("span", {
|
|
348
358
|
ref: ref,
|
|
349
|
-
...sharedProps,
|
|
350
359
|
...mergeProps(themeProps('token', {
|
|
351
360
|
color,
|
|
352
361
|
size
|
|
353
362
|
}), stylex.props(styles.base, sizeStyles[size], colorStyles[color], isDisabled && styles.disabled, xstyle), className, style),
|
|
363
|
+
...rest,
|
|
364
|
+
...sharedProps,
|
|
354
365
|
children: content
|
|
355
366
|
});
|
|
356
367
|
}
|
|
@@ -55,7 +55,7 @@ export interface TokenLinkProps extends HTMLAttributes<HTMLElement> {
|
|
|
55
55
|
* (including middle-click / cmd+click to open in a new tab) while the remove
|
|
56
56
|
* button keeps handling its own clicks.
|
|
57
57
|
*/
|
|
58
|
-
export declare function TokenLink({ ref, href, isDisabled, LinkComponent, linkStyleProps, labelContent, icon, endContent, removeButton, ...containerProps }: TokenLinkProps): import("react").JSX.Element;
|
|
58
|
+
export declare function TokenLink({ ref, href, isDisabled, LinkComponent, linkStyleProps, labelContent, icon, endContent, removeButton, onClick: onClickProp, onMouseUp: onMouseUpProp, ...containerProps }: TokenLinkProps): import("react").JSX.Element;
|
|
59
59
|
export declare namespace TokenLink {
|
|
60
60
|
var displayName: string;
|
|
61
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenLink.d.ts","sourceRoot":"","sources":["../../src/Token/TokenLink.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenLink.d.ts","sourceRoot":"","sources":["../../src/Token/TokenLink.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,cAAc,EAAC,MAAM,OAAO,CAAC;AAGzE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,eAAe,CAAC;AAIrD,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,WAAW,CAAC;IACjE,8CAA8C;IAC9C,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IACvB,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,+DAA+D;IAC/D,aAAa,EAAE,iBAAiB,CAAC;IACjC,mEAAmE;IACnE,cAAc,EAAE;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,aAAa,CAAA;KAAC,CAAC;IAC5D,wEAAwE;IACxE,YAAY,EAAE,SAAS,CAAC;IACxB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kEAAkE;IAClE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,iEAAiE;IACjE,YAAY,EAAE,SAAS,CAAC;IACxB,kFAAkF;IAClF,CAAC,QAAQ,EAAE,QAAQ,MAAM,EAAE,GAAG,OAAO,CAAC;CACvC;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EACxB,GAAG,EACH,IAAI,EACJ,UAAU,EACV,aAAa,EACb,cAAc,EACd,YAAY,EACZ,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,GAAG,cAAc,EAClB,EAAE,cAAc,+BAmChB;yBAhDe,SAAS"}
|