@astryxdesign/core 0.7.5 → 0.7.6-canary.00507ba
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +5 -5
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +183 -5
- package/dist/AppShell/observeMainOverflow.d.ts +9 -0
- package/dist/AppShell/observeMainOverflow.d.ts.map +1 -0
- package/dist/AppShell/observeMainOverflow.js +125 -0
- package/dist/Avatar/Avatar.d.ts.map +1 -1
- package/dist/Avatar/Avatar.js +12 -3
- package/dist/Badge/Badge.d.ts.map +1 -1
- package/dist/Badge/Badge.js +7 -1
- package/dist/BottomSheet/BottomSheet.js +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +2 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +12 -0
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +30 -3
- package/dist/Button/Button.js +4 -4
- package/dist/Carousel/Carousel.d.ts +3 -1
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +12 -3
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +6 -5
- package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
- package/dist/ClickableCard/ClickableCard.js +37 -4
- package/dist/DateInput/DateInput.d.ts.map +1 -1
- package/dist/DateInput/DateInput.js +12 -4
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +101 -15
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +8 -3
- package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/DateRangeInput/DateRangeInput.js +1 -1
- package/dist/DateTimeInput/DateTimeInput.d.ts +5 -2
- package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
- package/dist/DateTimeInput/DateTimeInput.js +23 -12
- package/dist/DateTimeInput/NativeTimeSegment.d.ts.map +1 -1
- package/dist/DateTimeInput/NativeTimeSegment.js +5 -4
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +4 -3
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +34 -9
- package/dist/Dialog/DialogHeader.d.ts.map +1 -1
- package/dist/Dialog/DialogHeader.js +5 -4
- package/dist/Divider/Divider.d.ts.map +1 -1
- package/dist/Divider/Divider.js +2 -1
- package/dist/Drawer/Drawer.d.ts +1 -0
- package/dist/Drawer/Drawer.d.ts.map +1 -1
- package/dist/Drawer/Drawer.js +7 -2
- package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/DropdownMenu/DropdownMenu.js +7 -3
- package/dist/DropdownMenu/MenuBottomSheetActionList.d.ts.map +1 -1
- package/dist/DropdownMenu/MenuBottomSheetActionList.js +6 -5
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts +20 -2
- package/dist/DropdownMenu/lazyMenuBottomSheet.d.ts.map +1 -1
- package/dist/DropdownMenu/lazyMenuBottomSheet.js +31 -3
- package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
- package/dist/DropdownMenu/renderDropdownItems.js +21 -16
- package/dist/EmptyState/EmptyState.d.ts.map +1 -1
- package/dist/EmptyState/EmptyState.js +2 -1
- package/dist/Field/FieldLabel.d.ts +1 -1
- package/dist/Field/FieldLabel.d.ts.map +1 -1
- package/dist/Field/FieldLabel.js +4 -4
- package/dist/Field/InputClearButton.js +3 -3
- package/dist/Field/PanelSearchInput.js +2 -2
- package/dist/FieldStatus/FieldStatus.js +2 -2
- package/dist/FileInput/FileInput.d.ts.map +1 -1
- package/dist/FileInput/FileInput.js +7 -1
- package/dist/Heading/Heading.js +1 -1
- package/dist/Icon/Icon.js +1 -1
- package/dist/Indicator/CheckIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckIndicator.js +2 -1
- package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -1
- package/dist/Indicator/CheckboxIndicator.js +3 -1
- package/dist/Indicator/RadioIndicator.d.ts.map +1 -1
- package/dist/Indicator/RadioIndicator.js +3 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/Item/Item.js +2 -1
- package/dist/Item/ItemSwipeLayer.js +1 -1
- package/dist/Layer/popoverOperations.d.ts +27 -0
- package/dist/Layer/popoverOperations.d.ts.map +1 -0
- package/dist/Layer/popoverOperations.js +159 -0
- package/dist/Layer/useLayer.d.ts +1 -1
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +93 -59
- package/dist/Layout/Layout.js +1 -1
- package/dist/Layout/LayoutContent.js +1 -1
- package/dist/Layout/LayoutFooter.js +1 -1
- package/dist/Layout/LayoutHeader.js +1 -1
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +5 -0
- package/dist/Lightbox/LightboxViewport.a11y.browser.spec.js +5 -4
- package/dist/List/List.js +1 -1
- package/dist/List/ListItem.js +3 -3
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +7 -2
- package/dist/MultiSelector/CreateRow.a11y.chromium.spec.js +7 -6
- package/dist/MultiSelector/MultiSelector.d.ts +1 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +26 -10
- package/dist/NumberInput/NumberInput.d.ts +3 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +3 -3
- package/dist/NumberInput/numberParser.d.ts +3 -0
- package/dist/NumberInput/numberParser.d.ts.map +1 -1
- package/dist/NumberInput/numberParser.js +7 -44
- package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBar.js +16 -12
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +28 -2
- package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
- package/dist/SegmentedControl/SegmentedControlItem.js +4 -1
- package/dist/Selector/useSelectorPresentation.d.ts +8 -1
- package/dist/Selector/useSelectorPresentation.d.ts.map +1 -1
- package/dist/Selector/useSelectorPresentation.js +20 -4
- package/dist/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/Skeleton/Skeleton.js +1 -1
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +10 -2
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +3 -3
- package/dist/Stack/Stack.js +1 -1
- package/dist/Stack/StackItem.js +1 -1
- package/dist/TabList/TabList.d.ts.map +1 -1
- package/dist/TabList/TabList.js +16 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +9 -1
- package/dist/Text/Text.js +1 -1
- package/dist/Text/useTruncation.d.ts.map +1 -1
- package/dist/Text/useTruncation.js +23 -5
- package/dist/TextArea/TextArea.d.ts +1 -1
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +13 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +3 -3
- package/dist/TimeInput/TimeInput.d.ts +6 -2
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +21 -14
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +5 -4
- package/dist/Timestamp/Timestamp.d.ts.map +1 -1
- package/dist/Timestamp/Timestamp.js +2 -2
- package/dist/Timestamp/TimestampHoverCard.js +4 -4
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +60 -20
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +82 -51
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +13 -2
- package/dist/Tokenizer/TokenizerBottomSheet.js +3 -3
- package/dist/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/Toolbar/Toolbar.js +2 -1
- package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMegaMenu.js +3 -0
- package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
- package/dist/TopNav/TopNavMenu.js +1 -0
- package/dist/Typeahead/Typeahead.d.ts +1 -1
- package/dist/Typeahead/Typeahead.d.ts.map +1 -1
- package/dist/Typeahead/Typeahead.js +9 -1
- package/dist/astryx.css +21 -4
- package/dist/gestures/GestureArena.d.ts +6 -0
- package/dist/gestures/GestureArena.d.ts.map +1 -1
- package/dist/gestures/GestureArena.js +39 -0
- package/dist/gestures/GestureHost.d.ts +352 -0
- package/dist/gestures/GestureHost.d.ts.map +1 -0
- package/dist/gestures/GestureHost.js +1773 -0
- package/dist/gestures/GestureRecognizer.d.ts +10 -0
- package/dist/gestures/GestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/GestureRecognizer.js +16 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts +1 -0
- package/dist/gestures/LongPressGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/LongPressGestureRecognizer.js +3 -0
- package/dist/gestures/PanGestureRecognizer.d.ts +1 -0
- package/dist/gestures/PanGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/PanGestureRecognizer.js +3 -0
- package/dist/gestures/PinchGestureRecognizer.d.ts +31 -0
- package/dist/gestures/PinchGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/PinchGestureRecognizer.js +128 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts +71 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/ScreenEdgePanGestureRecognizer.js +223 -0
- package/dist/gestures/SwipeGestureRecognizer.d.ts +37 -0
- package/dist/gestures/SwipeGestureRecognizer.d.ts.map +1 -0
- package/dist/gestures/SwipeGestureRecognizer.js +148 -0
- package/dist/gestures/TapGestureRecognizer.d.ts +1 -0
- package/dist/gestures/TapGestureRecognizer.d.ts.map +1 -1
- package/dist/gestures/TapGestureRecognizer.js +3 -0
- package/dist/gestures/VelocityTracker.d.ts +6 -2
- package/dist/gestures/VelocityTracker.d.ts.map +1 -1
- package/dist/gestures/VelocityTracker.js +7 -3
- package/dist/gestures/haptics.d.ts +65 -0
- package/dist/gestures/haptics.d.ts.map +1 -0
- package/dist/gestures/haptics.js +182 -0
- package/dist/gestures/nativeScroll.d.ts +42 -0
- package/dist/gestures/nativeScroll.d.ts.map +1 -0
- package/dist/gestures/nativeScroll.js +228 -0
- package/dist/gestures/touchAction.d.ts +60 -0
- package/dist/gestures/touchAction.d.ts.map +1 -0
- package/dist/gestures/touchAction.js +157 -0
- package/dist/gestures/touchActionRule.d.ts +34 -0
- package/dist/gestures/touchActionRule.d.ts.map +1 -0
- package/dist/gestures/touchActionRule.js +140 -0
- package/dist/gestures/types.d.ts +18 -7
- package/dist/gestures/types.d.ts.map +1 -1
- package/dist/gestures/types.js +22 -2
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/modalAnnounce.d.ts.map +1 -1
- package/dist/hooks/modalAnnounce.js +107 -61
- package/dist/hooks/scrollKeyboardDelegation.d.ts.map +1 -1
- package/dist/hooks/scrollKeyboardDelegation.js +7 -3
- package/dist/hooks/useAdaptivePresentation.d.ts.map +1 -1
- package/dist/hooks/useAdaptivePresentation.js +4 -1
- package/dist/hooks/useAnnounce.d.ts +101 -42
- package/dist/hooks/useAnnounce.d.ts.map +1 -1
- package/dist/hooks/useAnnounce.js +161 -75
- package/dist/hooks/useAnnounceRenderedText.d.ts +11 -3
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +5 -3
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +6 -12
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +12 -1
- package/dist/hooks/useScrollOverflow.d.ts +2 -1
- package/dist/hooks/useScrollOverflow.d.ts.map +1 -1
- package/dist/hooks/useScrollOverflow.js +56 -10
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +6 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +6 -0
- package/dist/motion/animator.d.ts +7 -1
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +119 -27
- package/dist/theme/defineTheme.d.ts +19 -5
- package/dist/theme/defineTheme.d.ts.map +1 -1
- package/dist/theme/defineTheme.js +64 -4
- package/dist/theme/domainTokens/domainTokenDefaults.d.ts +3 -0
- package/dist/theme/domainTokens/domainTokenDefaults.d.ts.map +1 -0
- package/dist/theme/domainTokens/domainTokenDefaults.js +19 -0
- package/dist/theme/domainTokens/index.d.ts +5 -4
- package/dist/theme/domainTokens/index.d.ts.map +1 -1
- package/dist/theme/domainTokens/index.js +5 -9
- package/dist/theme/index.d.ts +1 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/motionKnobs.d.ts +56 -0
- package/dist/theme/motionKnobs.d.ts.map +1 -0
- package/dist/theme/motionKnobs.js +48 -0
- package/dist/theme/resolveThemeValues.d.ts +11 -4
- package/dist/theme/resolveThemeValues.d.ts.map +1 -1
- package/dist/theme/resolveThemeValues.js +40 -4
- package/dist/theme/themeAdaptations.d.ts +7 -3
- package/dist/theme/themeAdaptations.d.ts.map +1 -1
- package/dist/theme/themeAdaptations.js +36 -7
- package/dist/theme/themeMotion.d.ts +96 -0
- package/dist/theme/themeMotion.d.ts.map +1 -0
- package/dist/theme/themeMotion.js +177 -0
- package/dist/theme/tokenReferences.d.ts +31 -0
- package/dist/theme/tokenReferences.d.ts.map +1 -0
- package/dist/theme/tokenReferences.js +132 -0
- package/dist/theme/tokens.d.ts +1 -0
- package/dist/theme/tokens.d.ts.map +1 -1
- package/dist/theme/tokens.js +9 -129
- package/dist/theme/tokens.stylex.d.ts +12 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +12 -0
- package/dist/utils/focusReturn.d.ts +17 -1
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +11 -4
- package/dist/utils/getNodeText.d.ts +8 -0
- package/dist/utils/getNodeText.d.ts.map +1 -0
- package/dist/utils/getNodeText.js +37 -0
- package/dist/utils/interactionModality.d.ts +11 -2
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +58 -5
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +17 -8
- package/dist/utils/plainDate.d.ts +2 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +46 -3
- package/dist/utils/presentation.d.ts +50 -0
- package/dist/utils/presentation.d.ts.map +1 -0
- package/dist/utils/presentation.js +125 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +20 -1
- package/dist/utils/primaryClick.d.ts +11 -0
- package/dist/utils/primaryClick.d.ts.map +1 -0
- package/dist/utils/primaryClick.js +25 -0
- package/dist/utils/sharedMutationObserver.d.ts +19 -11
- package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
- package/dist/utils/sharedMutationObserver.js +66 -26
- package/dist/utils/timeFormat.d.ts +47 -0
- package/dist/utils/timeFormat.d.ts.map +1 -0
- package/dist/utils/timeFormat.js +240 -0
- package/dist/utils/touchPresentation.d.ts.map +1 -1
- package/dist/utils/touchPresentation.js +5 -3
- package/dist/utils/touchPresentation.stylex.d.ts +15 -0
- package/dist/utils/touchPresentation.stylex.d.ts.map +1 -0
- package/dist/utils/touchPresentation.stylex.js +33 -0
- package/dist/utils/unicodeDigits.d.ts +20 -0
- package/dist/utils/unicodeDigits.d.ts.map +1 -0
- package/dist/utils/unicodeDigits.js +70 -0
- package/locales/en.json +27 -3
- package/locales/pseudo.json +18 -0
- package/package.json +5 -4
- package/src/AlertDialog/AlertDialog.tsx +6 -5
- package/src/AlertDialog/__tests__/AlertDialog.a11y.chromium.spec.ts +18 -6
- package/src/AppShell/AppShell.doc.mjs +1 -1
- package/src/AppShell/AppShell.spec.md +9 -12
- package/src/AppShell/AppShell.test.tsx +164 -2
- package/src/AppShell/AppShell.tsx +225 -5
- package/src/AppShell/__tests__/AppShellMainKeyboard.a11y.browser.spec.ts +534 -0
- package/src/AppShell/observeMainOverflow.test.ts +173 -0
- package/src/AppShell/observeMainOverflow.ts +143 -0
- package/src/Avatar/Avatar.spec.md +22 -22
- package/src/Avatar/Avatar.tsx +18 -1
- package/src/Avatar/__tests__/AvatarForcedColors.a11y.chromium.spec.ts +126 -0
- package/src/Badge/Badge.doc.mjs +1 -1
- package/src/Badge/Badge.tsx +19 -2
- package/src/Badge/__tests__/BadgeLargerText.a11y.chromium.spec.ts +260 -0
- package/src/BottomSheet/BottomSheet.test.tsx +46 -0
- package/src/BottomSheet/BottomSheet.tsx +1 -1
- package/src/BottomSheet/BottomSheetPanel.tsx +2 -1
- package/src/BottomSheet/useSheetGestures.test.ts +52 -0
- package/src/BottomSheet/useSheetGestures.ts +37 -6
- package/src/Breadcrumbs/__tests__/Breadcrumbs.a11y.chromium.spec.ts +18 -6
- package/src/Button/Button.tsx +4 -4
- package/src/Calendar/Calendar.spec.md +87 -48
- package/src/Calendar/__tests__/Calendar.a11y.chromium.spec.ts +21 -7
- package/src/Carousel/Carousel.doc.mjs +1 -1
- package/src/Carousel/Carousel.spec.md +9 -9
- package/src/Carousel/Carousel.test.tsx +124 -3
- package/src/Carousel/Carousel.tsx +10 -2
- package/src/Carousel/__tests__/Carousel.a11y.chromium.spec.ts +21 -7
- package/src/Carousel/__tests__/Carousel.a11y.known-failures.ts +1 -16
- package/src/Chat/ChatComposerTokenElement.spec.md +45 -33
- package/src/CheckboxInput/CheckboxInput.tsx +6 -5
- package/src/ClickableCard/ClickableCard.test.tsx +96 -0
- package/src/ClickableCard/ClickableCard.tsx +48 -4
- package/src/Collapsible/Collapsible.spec.md +2 -0
- package/src/Collapsible/CollapsibleGroup.spec.md +57 -29
- package/src/Collapsible/__tests__/Collapsible.a11y.chromium.spec.ts +18 -7
- package/src/Collapsible/__tests__/CollapsibleGroupAccordion.a11y.chromium.spec.ts +18 -6
- package/src/ComplexSelector/ComplexSelector.test.tsx +37 -0
- package/src/ContextMenu/ContextMenu.test.tsx +35 -0
- package/src/DateInput/DateInput.test.tsx +115 -3
- package/src/DateInput/DateInput.tsx +29 -14
- package/src/DateInput/DateInputTouch.test.tsx +76 -0
- package/src/DateInput/MonthScroller.tsx +106 -20
- package/src/DateInput/MonthScrollerSettle.test.tsx +165 -0
- package/src/DateInput/TouchDateField.tsx +14 -3
- package/src/DateInput/__tests__/MonthScrollerSteps.interaction.browser.spec.ts +312 -0
- package/src/DateRangeInput/DateRangeInput.test.tsx +46 -3
- package/src/DateRangeInput/DateRangeInput.tsx +16 -12
- package/src/DateTimeInput/DateTimeInput.doc.mjs +10 -8
- package/src/DateTimeInput/DateTimeInput.spec.md +75 -51
- package/src/DateTimeInput/DateTimeInput.test.tsx +81 -0
- package/src/DateTimeInput/DateTimeInput.tsx +46 -24
- package/src/DateTimeInput/NativeTimeSegment.tsx +4 -6
- package/src/DateTimeInput/TouchDateTimeField.tsx +3 -7
- package/src/Dialog/Dialog.test.tsx +216 -2
- package/src/Dialog/Dialog.tsx +42 -9
- package/src/Dialog/DialogHeader.tsx +5 -4
- package/src/Dialog/__tests__/DialogSecondDocument.a11y.browser.spec.ts +202 -0
- package/src/Divider/Divider.tsx +2 -1
- package/src/Drawer/Drawer.spec.md +111 -80
- package/src/Drawer/Drawer.test.tsx +35 -0
- package/src/Drawer/Drawer.tsx +13 -2
- package/src/Drawer/DrawerHeader.spec.md +181 -0
- package/src/Drawer/__tests__/DrawerNonModalPageScroll.a11y.chromium.spec.ts +267 -0
- package/src/DropdownMenu/DropdownMenu.test.tsx +41 -0
- package/src/DropdownMenu/DropdownMenu.tsx +10 -3
- package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +34 -0
- package/src/DropdownMenu/MenuBottomSheetActionList.tsx +6 -5
- package/src/DropdownMenu/__tests__/Menu.a11y.chromium.spec.ts +19 -7
- package/src/DropdownMenu/__tests__/MenuButton.a11y.chromium.spec.ts +21 -9
- package/src/DropdownMenu/lazyMenuBottomSheet.test.ts +60 -0
- package/src/DropdownMenu/lazyMenuBottomSheet.ts +36 -7
- package/src/DropdownMenu/renderDropdownItems.tsx +24 -19
- package/src/EmptyState/EmptyState.tsx +2 -1
- package/src/Field/FieldLabel.tsx +5 -4
- package/src/Field/InputClearButton.tsx +3 -3
- package/src/Field/PanelSearchInput.tsx +2 -2
- package/src/FieldStatus/FieldStatus.tsx +2 -2
- package/src/FileInput/FileInput.test.tsx +21 -0
- package/src/FileInput/FileInput.tsx +4 -1
- package/src/FormLayout/FormLayout.spec.md +7 -8
- package/src/Heading/Heading.tsx +1 -1
- package/src/Icon/Icon.tsx +1 -1
- package/src/Indicator/CheckIndicator.spec.md +47 -42
- package/src/Indicator/CheckIndicator.tsx +2 -1
- package/src/Indicator/CheckboxIndicator.spec.md +40 -37
- package/src/Indicator/CheckboxIndicator.tsx +3 -1
- package/src/Indicator/Indicator.spec.md +188 -0
- package/src/Indicator/RadioIndicator.tsx +3 -1
- package/src/Item/Item.tsx +2 -1
- package/src/Item/ItemSwipeLayer.tsx +1 -1
- package/src/Kbd/Kbd.spec.md +81 -38
- package/src/Layer/__tests__/LayerBrowserHide.a11y.chromium.spec.ts +126 -0
- package/src/Layer/popoverOperations.test.ts +205 -0
- package/src/Layer/popoverOperations.ts +172 -0
- package/src/Layer/useLayer.test.tsx +348 -1
- package/src/Layer/useLayer.tsx +118 -71
- package/src/Layout/Layout.spec.md +127 -131
- package/src/Layout/Layout.tsx +1 -1
- package/src/Layout/LayoutContent.spec.md +205 -0
- package/src/Layout/LayoutContent.tsx +1 -1
- package/src/Layout/LayoutFooter.spec.md +190 -0
- package/src/Layout/LayoutFooter.tsx +1 -1
- package/src/Layout/LayoutHeader.spec.md +193 -0
- package/src/Layout/LayoutHeader.tsx +1 -1
- package/src/Layout/LayoutPanel.spec.md +194 -0
- package/src/Layout/__tests__/Layout.a11y.chromium.spec.ts +18 -6
- package/src/Lightbox/Lightbox.test.tsx +18 -0
- package/src/Lightbox/Lightbox.tsx +5 -0
- package/src/Lightbox/LightboxViewport.a11y.browser.spec.ts +8 -4
- package/src/Link/__tests__/Link.a11y.chromium.spec.ts +18 -8
- package/src/List/List.tsx +1 -1
- package/src/List/ListItem.spec.md +205 -0
- package/src/List/ListItem.tsx +3 -3
- package/src/MetadataList/MetadataList.spec.md +187 -0
- package/src/MetadataList/MetadataListItem.spec.md +165 -0
- package/src/MobileNav/MobileNav.test.tsx +15 -0
- package/src/MobileNav/MobileNav.tsx +9 -1
- package/src/MobileNav/__tests__/MobileNavHeader.a11y.chromium.spec.ts +89 -0
- package/src/MoreMenu/MoreMenu.test.tsx +11 -0
- package/src/MultiSelector/CreateRow.a11y.chromium.spec.ts +7 -8
- package/src/MultiSelector/MultiSelector.spec.md +7 -4
- package/src/MultiSelector/MultiSelector.test.tsx +270 -1
- package/src/MultiSelector/MultiSelector.tsx +25 -10
- package/src/MultiSelector/__tests__/MultiSelector.listbox.a11y.test.tsx +8 -1
- package/src/NavMenu/NavHeadingMenu.spec.md +1 -5
- package/src/NumberInput/NumberInput.doc.mjs +13 -7
- package/src/NumberInput/NumberInput.spec.md +59 -37
- package/src/NumberInput/NumberInput.tsx +13 -3
- package/src/NumberInput/__tests__/NumberInput.coarse-pointer.a11y.chromium.spec.ts +102 -0
- package/src/NumberInput/numberParser.ts +7 -45
- package/src/ProgressBar/ProgressBar.test.tsx +108 -32
- package/src/ProgressBar/ProgressBar.tsx +58 -10
- package/src/ProgressBar/__tests__/ProgressBar.a11y.chromium.spec.ts +21 -9
- package/src/ProgressBar/__tests__/ProgressBarMotion.a11y.chromium.spec.ts +831 -0
- package/src/Resizable/__tests__/ResizeHandle.a11y.chromium.spec.ts +21 -14
- package/src/Resizable/useResizable.test.ts +43 -0
- package/src/Resizable/useResizable.ts +32 -9
- package/src/SegmentedControl/SegmentedControl.test.tsx +84 -0
- package/src/SegmentedControl/SegmentedControlItem.tsx +11 -5
- package/src/Selector/Selector.test.tsx +90 -1
- package/src/Selector/__tests__/Selector.combobox.a11y.test.tsx +8 -1
- package/src/Selector/__tests__/Selector.listbox.a11y.test.tsx +8 -1
- package/src/Selector/useSelectorPresentation.ts +31 -3
- package/src/SideNav/SideNav.test.tsx +27 -0
- package/src/SideNav/__tests__/SideNavRailMotion.interaction.browser.spec.ts +176 -51
- package/src/Skeleton/Skeleton.tsx +3 -1
- package/src/Slider/Slider.test.tsx +31 -0
- package/src/Slider/Slider.tsx +8 -3
- package/src/Slider/__tests__/Slider.a11y.chromium.spec.ts +19 -7
- package/src/Spinner/Spinner.tsx +5 -3
- package/src/Stack/Stack.tsx +1 -1
- package/src/Stack/StackItem.tsx +1 -1
- package/src/TabList/TabList.test.tsx +58 -4
- package/src/TabList/TabList.tsx +16 -1
- package/src/TabList/__tests__/TabPressPointer.interaction.browser.spec.ts +163 -0
- package/src/Table/__tests__/Table.a11y.chromium.spec.ts +18 -6
- package/src/Table/plugins/columnResize/useTableColumnResize.test.tsx +22 -0
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +8 -4
- package/src/Text/Text.tsx +1 -1
- package/src/Text/useTruncation.test.tsx +128 -1
- package/src/Text/useTruncation.ts +23 -5
- package/src/TextArea/TextArea.spec.md +10 -13
- package/src/TextArea/TextArea.test.tsx +60 -0
- package/src/TextArea/TextArea.tsx +15 -1
- package/src/TextInput/TextInput.test.tsx +21 -0
- package/src/TextInput/TextInput.tsx +3 -1
- package/src/TimeInput/NativeTimeInput.test.tsx +17 -0
- package/src/TimeInput/Presentation.test.tsx +21 -0
- package/src/TimeInput/TimeInput.doc.mjs +8 -8
- package/src/TimeInput/TimeInput.spec.md +45 -48
- package/src/TimeInput/TimeInput.test.tsx +76 -0
- package/src/TimeInput/TimeInput.tsx +36 -18
- package/src/TimeInput/TouchTimeField.tsx +4 -6
- package/src/Timestamp/Timestamp.spec.md +6 -12
- package/src/Timestamp/Timestamp.test.tsx +30 -5
- package/src/Timestamp/Timestamp.tsx +6 -2
- package/src/Timestamp/TimestampHoverCard.tsx +4 -4
- package/src/Toast/Toast.spec.md +14 -20
- package/src/Toast/Toast.tsx +104 -36
- package/src/Toast/ToastViewport.test.tsx +719 -1
- package/src/Toast/ToastViewport.tsx +100 -50
- package/src/Tokenizer/Tokenizer.spec.md +5 -3
- package/src/Tokenizer/Tokenizer.test.tsx +68 -0
- package/src/Tokenizer/Tokenizer.tsx +14 -2
- package/src/Tokenizer/TokenizerBottomSheet.test.tsx +15 -4
- package/src/Tokenizer/TokenizerBottomSheet.tsx +3 -3
- package/src/Toolbar/Toolbar.spec.md +5 -6
- package/src/Toolbar/Toolbar.test.tsx +30 -0
- package/src/Toolbar/Toolbar.tsx +2 -1
- package/src/Toolbar/__tests__/Toolbar.a11y.chromium.spec.ts +18 -6
- package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +18 -7
- package/src/TopNav/TopNav.test.tsx +27 -0
- package/src/TopNav/TopNavMegaMenu.test.tsx +21 -0
- package/src/TopNav/TopNavMegaMenu.tsx +4 -1
- package/src/TopNav/TopNavMenu.test.tsx +17 -0
- package/src/TopNav/TopNavMenu.tsx +1 -0
- package/src/Typeahead/Typeahead.test.tsx +40 -0
- package/src/Typeahead/Typeahead.tsx +12 -1
- package/src/__tests__/pressState.ts +8 -4
- package/src/gestures/GestureArena.ts +35 -0
- package/src/gestures/GestureHost.ts +2065 -0
- package/src/gestures/GestureRecognizer.ts +18 -0
- package/src/gestures/LongPressGestureRecognizer.ts +4 -0
- package/src/gestures/PanGestureRecognizer.ts +4 -0
- package/src/gestures/PinchGestureRecognizer.ts +148 -0
- package/src/gestures/ScreenEdgePanGestureRecognizer.ts +256 -0
- package/src/gestures/SwipeGestureRecognizer.ts +197 -0
- package/src/gestures/TapGestureRecognizer.ts +4 -0
- package/src/gestures/VelocityTracker.ts +10 -3
- package/src/gestures/__tests__/GestureHost.test.ts +2087 -0
- package/src/gestures/__tests__/PanGestureRecognizer.test.ts +4 -4
- package/src/gestures/__tests__/PinchGestureRecognizer.test.ts +74 -0
- package/src/gestures/__tests__/ScreenEdgePanGestureRecognizer.test.ts +498 -0
- package/src/gestures/__tests__/SwipeGestureRecognizer.test.ts +108 -0
- package/src/gestures/__tests__/arena.test.ts +5 -0
- package/src/gestures/__tests__/arenaPinchSwipeEdge.test.ts +193 -0
- package/src/gestures/__tests__/browser/build-fixture.mjs +46 -0
- package/src/gestures/__tests__/browser/fixture.ts +307 -0
- package/src/gestures/__tests__/browser/gestures.interaction.browser.spec.ts +1137 -0
- package/src/gestures/__tests__/browserNegotiation.test.ts +293 -0
- package/src/gestures/__tests__/haptics.test.ts +187 -0
- package/src/gestures/__tests__/harness.ts +21 -2
- package/src/gestures/__tests__/recognizerKind.test.ts +78 -0
- package/src/gestures/__tests__/touchActionRule.test.ts +54 -0
- package/src/gestures/haptics.ts +203 -0
- package/src/gestures/nativeScroll.ts +277 -0
- package/src/gestures/touchAction.ts +191 -0
- package/src/gestures/touchActionRule.ts +157 -0
- package/src/gestures/types.ts +30 -9
- package/src/hooks/index.ts +5 -1
- package/src/hooks/modalAnnounce.ts +129 -72
- package/src/hooks/scrollKeyboardDelegation.test.ts +33 -0
- package/src/hooks/scrollKeyboardDelegation.ts +9 -3
- package/src/hooks/useAdaptivePresentation.ts +4 -1
- package/src/hooks/useAnnounce.doc.mjs +35 -3
- package/src/hooks/useAnnounce.replace.test.tsx +516 -0
- package/src/hooks/useAnnounce.ts +209 -102
- package/src/hooks/useAnnounceRenderedText.adopters.test.tsx +10 -1
- package/src/hooks/useAnnounceRenderedText.ts +17 -3
- package/src/hooks/useBusyAnnouncement.ts +7 -10
- package/src/hooks/useMenuHover.ts +15 -1
- package/src/hooks/useScrollOverflow.doc.mjs +1 -1
- package/src/hooks/useScrollOverflow.test.tsx +102 -1
- package/src/hooks/useScrollOverflow.ts +59 -10
- package/src/i18n/generated-locales/en.generated.ts +7 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +7 -0
- package/src/motion/README.md +11 -1
- package/src/motion/animator.test.ts +151 -3
- package/src/motion/animator.ts +149 -33
- package/src/theme/Theme.doc.mjs +1 -1
- package/src/theme/defineTheme.ts +117 -8
- package/src/theme/derivedVarRegistry.test.ts +4 -0
- package/src/theme/domainTokens/domainTokenDefaults.ts +19 -0
- package/src/theme/domainTokens/index.ts +6 -10
- package/src/theme/expandMotionScale.test.ts +1 -1
- package/src/theme/index.ts +5 -0
- package/src/theme/motionKnobs.ts +82 -0
- package/src/theme/resolveThemeValues.ts +68 -6
- package/src/theme/themeAdaptations.ts +52 -12
- package/src/theme/themeMotion.test.ts +620 -0
- package/src/theme/themeMotion.ts +221 -0
- package/src/theme/tokenReferences.ts +149 -0
- package/src/theme/tokens.stylex.ts +10 -0
- package/src/theme/tokens.ts +15 -158
- package/src/utils/focusReturn.ts +17 -6
- package/src/utils/getNodeText.test.ts +24 -0
- package/src/utils/getNodeText.ts +37 -0
- package/src/utils/interactionModality.test.ts +45 -1
- package/src/utils/interactionModality.ts +64 -5
- package/src/utils/interactionOverlay.stylex.ts +12 -3
- package/src/utils/plainDate.test.ts +90 -0
- package/src/utils/plainDate.ts +58 -3
- package/src/utils/presentation.test.ts +380 -0
- package/src/utils/presentation.ts +180 -0
- package/src/utils/pressFeedback.test.ts +138 -0
- package/src/utils/pressFeedback.ts +34 -11
- package/src/utils/pressPaintPriority.test.ts +80 -0
- package/src/utils/primaryClick.test.ts +38 -0
- package/src/utils/primaryClick.ts +28 -0
- package/src/utils/sharedMutationObserver.test.ts +54 -1
- package/src/utils/sharedMutationObserver.ts +87 -29
- package/src/utils/timeFormat.test.ts +204 -0
- package/src/utils/timeFormat.ts +314 -0
- package/src/utils/touchPresentation.stylex.ts +43 -0
- package/src/utils/touchPresentation.test.ts +140 -1
- package/src/utils/touchPresentation.ts +5 -3
- package/src/utils/unicodeDigits.test.ts +44 -0
- package/src/utils/unicodeDigits.ts +71 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file motionKnobs.ts
|
|
5
|
+
* @input A theme's motion knobs (`tempo`, `character`)
|
|
6
|
+
* @output Their types and `resolveMotionKnobs`, which fills in the defaults
|
|
7
|
+
* and clamps `tempo` (`spec:AST-108` FR1). `reducedMotion` is not a public
|
|
8
|
+
* knob until `'always'` ships: every theme resolves to `'system'`
|
|
9
|
+
* @position Theme utility with no imports: themeMotion.ts builds the motion
|
|
10
|
+
* tokens on it, and the motion foundation reads a theme's knobs through it
|
|
11
|
+
* without loading the token stylesheet. Pure; safe on the server and in
|
|
12
|
+
* plain Node.
|
|
13
|
+
*
|
|
14
|
+
* SYNC: When modified, update:
|
|
15
|
+
* - /packages/core/src/theme/themeMotion.ts (re-exports these)
|
|
16
|
+
* - /packages/core/src/theme/themeMotion.test.ts
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** How lively a theme's motion feels. */
|
|
20
|
+
export type MotionCharacter = 'crisp' | 'standard' | 'expressive';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own.
|
|
24
|
+
* Internal: no theme sets it until `'always'` ships (`spec:AST-108` FR6).
|
|
25
|
+
*/
|
|
26
|
+
export type ThemeReducedMotion = 'system';
|
|
27
|
+
|
|
28
|
+
/** The motion knobs a theme sets (`spec:AST-108` FR1). */
|
|
29
|
+
export interface ThemeMotionKnobs {
|
|
30
|
+
/**
|
|
31
|
+
* Scales every motion duration: 1 is Astryx's own, 0.75 the quickest and
|
|
32
|
+
* 1.5 the slowest (values outside are clamped). Default 1.
|
|
33
|
+
*/
|
|
34
|
+
tempo?: number;
|
|
35
|
+
/**
|
|
36
|
+
* `'crisp'` decelerates without overshoot, `'standard'` is Astryx's own,
|
|
37
|
+
* `'expressive'` overshoots slightly on entrances and moves. Exits and
|
|
38
|
+
* fades never overshoot. Default `'standard'`.
|
|
39
|
+
*/
|
|
40
|
+
character?: MotionCharacter;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** The knobs with their defaults filled in and `tempo` clamped. */
|
|
44
|
+
export interface ResolvedMotionKnobs {
|
|
45
|
+
readonly tempo: number;
|
|
46
|
+
readonly character: MotionCharacter;
|
|
47
|
+
readonly reducedMotion: ThemeReducedMotion;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the theme sets `tempo` itself. A `MotionScaleConfig` alone
|
|
50
|
+
* implies a tempo for its CSS durations only; the animator's springs stay
|
|
51
|
+
* at tempo 1 unless this is true (FR5).
|
|
52
|
+
*/
|
|
53
|
+
readonly tempoIsSet: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** The range `tempo` is clamped to. */
|
|
57
|
+
export const TEMPO_RANGE = {min: 0.75, max: 1.5} as const;
|
|
58
|
+
|
|
59
|
+
const CHARACTERS: ReadonlyArray<MotionCharacter> = [
|
|
60
|
+
'crisp',
|
|
61
|
+
'standard',
|
|
62
|
+
'expressive',
|
|
63
|
+
];
|
|
64
|
+
|
|
65
|
+
/** The knobs of `config`, defaults filled in, `tempo` clamped. */
|
|
66
|
+
export function resolveKnobs(
|
|
67
|
+
config: ThemeMotionKnobs | undefined,
|
|
68
|
+
): ResolvedMotionKnobs {
|
|
69
|
+
const tempoIsSet =
|
|
70
|
+
typeof config?.tempo === 'number' && Number.isFinite(config.tempo);
|
|
71
|
+
const tempo = tempoIsSet
|
|
72
|
+
? Math.min(
|
|
73
|
+
TEMPO_RANGE.max,
|
|
74
|
+
Math.max(TEMPO_RANGE.min, config.tempo as number),
|
|
75
|
+
)
|
|
76
|
+
: 1;
|
|
77
|
+
const character =
|
|
78
|
+
config?.character != null && CHARACTERS.includes(config.character)
|
|
79
|
+
? config.character
|
|
80
|
+
: 'standard';
|
|
81
|
+
return {tempo, character, reducedMotion: 'system', tempoIsSet};
|
|
82
|
+
}
|
|
@@ -31,8 +31,14 @@ import {
|
|
|
31
31
|
generateTypeScaleComponents,
|
|
32
32
|
type TypeScaleConfig,
|
|
33
33
|
} from './expandTypeScale';
|
|
34
|
-
import {
|
|
34
|
+
import {
|
|
35
|
+
expandThemeMotion,
|
|
36
|
+
preTempoName,
|
|
37
|
+
type MotionCharacter,
|
|
38
|
+
type ThemeMotionConfig,
|
|
39
|
+
} from './themeMotion';
|
|
35
40
|
import {expandRadiusScale, type RadiusScaleConfig} from './expandRadiusScale';
|
|
41
|
+
import {easeDefaults} from './tokens.stylex';
|
|
36
42
|
import {expandColorScale, type ColorScaleConfig} from './expandColorScale';
|
|
37
43
|
import {deepMergeComponents} from './mergeComponents';
|
|
38
44
|
|
|
@@ -54,8 +60,8 @@ export interface ThemeValuesInput {
|
|
|
54
60
|
color?: ColorScaleConfig;
|
|
55
61
|
/** Radius scale configuration. */
|
|
56
62
|
radius?: RadiusScaleConfig;
|
|
57
|
-
/** Motion scale configuration. */
|
|
58
|
-
motion?:
|
|
63
|
+
/** Motion: the three knobs, a motion scale configuration, or both. */
|
|
64
|
+
motion?: ThemeMotionConfig;
|
|
59
65
|
/** Syntax highlighting theme. */
|
|
60
66
|
syntax?: SyntaxThemeDefinition;
|
|
61
67
|
/** Explicit token overrides — highest precedence. */
|
|
@@ -271,7 +277,20 @@ export function buildFontFamilyTokens(
|
|
|
271
277
|
export function resolveThemeValues(
|
|
272
278
|
input: ThemeValuesInput,
|
|
273
279
|
seed?: ThemeValuesSeed,
|
|
274
|
-
{
|
|
280
|
+
{
|
|
281
|
+
strictTokens = false,
|
|
282
|
+
inheritedCharacter,
|
|
283
|
+
standardBeneath,
|
|
284
|
+
}: {
|
|
285
|
+
strictTokens?: boolean;
|
|
286
|
+
/**
|
|
287
|
+
* The motion character in effect beneath this layer, from a base theme or
|
|
288
|
+
* the theme an adaptation rule belongs to, for a layer that sets none.
|
|
289
|
+
*/
|
|
290
|
+
inheritedCharacter?: MotionCharacter;
|
|
291
|
+
/** The --ease-standard beneath a layer resolved without a seed: a rule's theme's. */
|
|
292
|
+
standardBeneath?: string;
|
|
293
|
+
} = {},
|
|
275
294
|
): ResolvedThemeValues {
|
|
276
295
|
const tokens: Record<string, string> = {...seed?.tokens};
|
|
277
296
|
|
|
@@ -293,9 +312,19 @@ export function resolveThemeValues(
|
|
|
293
312
|
Object.assign(tokens, expandRadiusScale(input.radius));
|
|
294
313
|
}
|
|
295
314
|
|
|
296
|
-
// 4. Motion-generated tokens
|
|
315
|
+
// 4. Motion-generated tokens (spec:AST-108 FR2, FR5). A layer that writes
|
|
316
|
+
// durations also writes the copies busy loops read (FR4), so an enclosing
|
|
317
|
+
// theme's tempo copies never stand in for its own: without a tempo of its
|
|
318
|
+
// own, they are its durations.
|
|
297
319
|
if (input.motion) {
|
|
298
|
-
|
|
320
|
+
const motion = expandThemeMotion(input.motion);
|
|
321
|
+
Object.assign(tokens, motion);
|
|
322
|
+
for (const [name, value] of Object.entries(motion)) {
|
|
323
|
+
const preTempo = preTempoName(name);
|
|
324
|
+
if (preTempo !== name && !(preTempo in motion)) {
|
|
325
|
+
tokens[preTempo] = value;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
299
328
|
}
|
|
300
329
|
|
|
301
330
|
// 5. Font family tokens
|
|
@@ -314,9 +343,42 @@ export function resolveThemeValues(
|
|
|
314
343
|
// 7. Explicit token overrides — highest precedence within this input layer.
|
|
315
344
|
// A generated axis in the same root or adaptation value cannot beat them.
|
|
316
345
|
if (input.tokens) {
|
|
346
|
+
const own = input.tokens as Partial<Record<string, TokenValue>>;
|
|
317
347
|
for (const [key, value] of Object.entries(input.tokens)) {
|
|
318
348
|
if (value !== undefined) {
|
|
319
349
|
tokens[key] = resolveTokenValue(value, {strict: strictTokens});
|
|
350
|
+
// An explicit duration beats tempo, so a busy loop reading the
|
|
351
|
+
// pre-tempo value reads it too (spec:AST-108 FR4).
|
|
352
|
+
const preTempo = preTempoName(key);
|
|
353
|
+
if (preTempo !== key && own[preTempo] === undefined) {
|
|
354
|
+
tokens[preTempo] = tokens[key];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// At 'standard', --ease-entrance and --ease-move equal the resolved
|
|
361
|
+
// --ease-standard (spec:AST-108 FR2): the layer's own, else the one beneath
|
|
362
|
+
// it. A layer that sets them itself, or whose character, its own or the one
|
|
363
|
+
// it inherits, picks its own curve, keeps them.
|
|
364
|
+
const own: Partial<Record<string, TokenValue>> = input.tokens ?? {};
|
|
365
|
+
const ownCharacter =
|
|
366
|
+
input.motion != null && 'character' in input.motion
|
|
367
|
+
? input.motion.character
|
|
368
|
+
: undefined;
|
|
369
|
+
const character = ownCharacter ?? inheritedCharacter;
|
|
370
|
+
if (
|
|
371
|
+
ownCharacter === 'standard' ||
|
|
372
|
+
(own['--ease-standard'] !== undefined &&
|
|
373
|
+
(character === undefined || character === 'standard'))
|
|
374
|
+
) {
|
|
375
|
+
const standard =
|
|
376
|
+
tokens['--ease-standard'] ??
|
|
377
|
+
standardBeneath ??
|
|
378
|
+
easeDefaults['--ease-standard'];
|
|
379
|
+
for (const name of ['--ease-entrance', '--ease-move']) {
|
|
380
|
+
if (own[name] === undefined) {
|
|
381
|
+
tokens[name] = standard;
|
|
320
382
|
}
|
|
321
383
|
}
|
|
322
384
|
}
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
import type {ComponentStyleMap, TokenName, TokenValue} from './defineTheme';
|
|
28
28
|
import type {TypographyConfig, TypographyRole} from './types';
|
|
29
29
|
import type {MotionScaleConfig} from './expandMotionScale';
|
|
30
|
+
import type {ThemeMotionConfig, ThemeMotionKnobs} from './themeMotion';
|
|
30
31
|
import type {RadiusScaleConfig} from './expandRadiusScale';
|
|
31
32
|
import type {ColorScaleConfig} from './expandColorScale';
|
|
32
33
|
import {resolveThemeValues, type ThemeValuesInput} from './resolveThemeValues';
|
|
@@ -133,8 +134,11 @@ export interface ThemeAdaptationValue {
|
|
|
133
134
|
color?: Partial<ColorScaleConfig>;
|
|
134
135
|
/** Radius axis overrides, completed from root metadata. */
|
|
135
136
|
radius?: Partial<RadiusScaleConfig>;
|
|
136
|
-
/**
|
|
137
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Motion axis overrides, completed from root metadata: scale fields, or the
|
|
139
|
+
* `tempo` and `character` knobs (spec:AST-108 FR5).
|
|
140
|
+
*/
|
|
141
|
+
motion?: Partial<MotionScaleConfig> & ThemeMotionKnobs;
|
|
138
142
|
/** Portable semantic-token writes. */
|
|
139
143
|
tokens?: Partial<Record<TokenName, TokenValue>>;
|
|
140
144
|
/** Replacements for exact theme-local names enrolled by the root lineage. */
|
|
@@ -176,7 +180,7 @@ export interface ThemeGenerativeAxes {
|
|
|
176
180
|
typography?: TypographyConfig;
|
|
177
181
|
color?: ColorScaleConfig;
|
|
178
182
|
radius?: RadiusScaleConfig;
|
|
179
|
-
motion?:
|
|
183
|
+
motion?: ThemeMotionConfig;
|
|
180
184
|
}
|
|
181
185
|
|
|
182
186
|
/** One rule lowered to concrete CSS writes. */
|
|
@@ -570,13 +574,41 @@ function completeRadius(
|
|
|
570
574
|
}
|
|
571
575
|
|
|
572
576
|
function completeMotion(
|
|
573
|
-
root:
|
|
574
|
-
rule: Partial<MotionScaleConfig
|
|
577
|
+
root: ThemeMotionConfig | undefined,
|
|
578
|
+
rule: Partial<MotionScaleConfig> & ThemeMotionKnobs,
|
|
575
579
|
path: string,
|
|
576
|
-
):
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
+
): ThemeMotionConfig {
|
|
581
|
+
// Not a public field, but a plain-JS caller may still pass it.
|
|
582
|
+
if ((rule as {reducedMotion?: unknown}).reducedMotion !== undefined) {
|
|
583
|
+
throw new Error(
|
|
584
|
+
`${path}.reducedMotion is a theme-wide setting: set it on the theme's own ` +
|
|
585
|
+
`motion, not in an adaptation rule.`,
|
|
586
|
+
);
|
|
587
|
+
}
|
|
588
|
+
const tempo = rule.tempo ?? root?.tempo;
|
|
589
|
+
const character = rule.character ?? root?.character;
|
|
590
|
+
const knobs: ThemeMotionKnobs = {
|
|
591
|
+
...(tempo !== undefined ? {tempo} : {}),
|
|
592
|
+
...(character !== undefined ? {character} : {}),
|
|
593
|
+
};
|
|
594
|
+
if (knobs.tempo !== undefined) {
|
|
595
|
+
assertFiniteNumber(knobs.tempo, `${path}.tempo`);
|
|
596
|
+
}
|
|
597
|
+
const rootScale: Partial<MotionScaleConfig> =
|
|
598
|
+
root != null && 'fast' in root ? root : {};
|
|
599
|
+
const writesScale =
|
|
600
|
+
rule.fast !== undefined ||
|
|
601
|
+
rule.medium !== undefined ||
|
|
602
|
+
rule.ratio !== undefined ||
|
|
603
|
+
rule.slow !== undefined ||
|
|
604
|
+
rule.easing !== undefined;
|
|
605
|
+
if (!writesScale && 'fast' in rootScale === false) {
|
|
606
|
+
// Knobs only, over a root with no scale: the knobs generate the tokens.
|
|
607
|
+
return knobs;
|
|
608
|
+
}
|
|
609
|
+
const fast = rule.fast ?? rootScale.fast;
|
|
610
|
+
const medium = rule.medium ?? rootScale.medium;
|
|
611
|
+
const ratio = rule.ratio ?? rootScale.ratio;
|
|
580
612
|
if (fast === undefined || medium === undefined || ratio === undefined) {
|
|
581
613
|
throw new Error(
|
|
582
614
|
`${path} must supply \`fast\`, \`medium\`, and \`ratio\` unless each missing field exists on the effective root motion axis.`,
|
|
@@ -585,17 +617,18 @@ function completeMotion(
|
|
|
585
617
|
assertFiniteNumber(fast, `${path}.fast`);
|
|
586
618
|
assertFiniteNumber(medium, `${path}.medium`);
|
|
587
619
|
assertFiniteNumber(ratio, `${path}.ratio`);
|
|
588
|
-
const slow = rule.slow ??
|
|
620
|
+
const slow = rule.slow ?? rootScale.slow;
|
|
589
621
|
if (slow !== undefined) {
|
|
590
622
|
assertFiniteNumber(slow, `${path}.slow`);
|
|
591
623
|
}
|
|
592
|
-
const easing = rule.easing ??
|
|
624
|
+
const easing = rule.easing ?? rootScale.easing;
|
|
593
625
|
return {
|
|
594
626
|
fast,
|
|
595
627
|
medium,
|
|
596
628
|
ratio,
|
|
597
629
|
...(slow !== undefined ? {slow} : {}),
|
|
598
630
|
...(easing !== undefined ? {easing} : {}),
|
|
631
|
+
...knobs,
|
|
599
632
|
};
|
|
600
633
|
}
|
|
601
634
|
|
|
@@ -990,7 +1023,14 @@ export function resolveThemeAdaptationRules(
|
|
|
990
1023
|
// acceptance to preserve, so a malformed token is rejected here rather
|
|
991
1024
|
// than emitted. The root path stays lenient for compatibility.
|
|
992
1025
|
// SYNC: packages/core/src/theme/resolveThemeValues.ts (resolveTokenValue)
|
|
993
|
-
|
|
1026
|
+
// A rule without motion of its own keeps the theme's character, so its
|
|
1027
|
+
// explicit --ease-standard leaves that character's curves alone; one
|
|
1028
|
+
// at 'standard' matches the theme's --ease-standard.
|
|
1029
|
+
{
|
|
1030
|
+
strictTokens: true,
|
|
1031
|
+
inheritedCharacter: axes.motion?.character,
|
|
1032
|
+
standardBeneath: rootTokens['--ease-standard'],
|
|
1033
|
+
},
|
|
994
1034
|
);
|
|
995
1035
|
for (const [name, value] of Object.entries(resolved.tokens)) {
|
|
996
1036
|
assertConcreteLeaf(
|