@astryxdesign/core 0.7.5 → 0.7.6-canary.0ef60dd
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/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/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 +20 -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/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/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +5 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +5 -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/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 +23 -3
- package/locales/pseudo.json +15 -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/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/__tests__/Carousel.a11y.chromium.spec.ts +21 -7
- 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/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/i18n/generated-locales/en.generated.ts +6 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +6 -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/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 @@
|
|
|
1
|
+
{"version":3,"file":"motionKnobs.d.ts","sourceRoot":"","sources":["../../src/theme/motionKnobs.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH,yCAAyC;AACzC,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,uCAAuC;AACvC,eAAO,MAAM,WAAW;;;CAAiC,CAAC;AAQ1D,kEAAkE;AAClE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,GAAG,SAAS,GACnC,mBAAmB,CAcrB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own.
|
|
23
|
+
* Internal: no theme sets it until `'always'` ships (`spec:AST-108` FR6).
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/** The motion knobs a theme sets (`spec:AST-108` FR1). */
|
|
27
|
+
|
|
28
|
+
/** The knobs with their defaults filled in and `tempo` clamped. */
|
|
29
|
+
|
|
30
|
+
/** The range `tempo` is clamped to. */
|
|
31
|
+
export const TEMPO_RANGE = {
|
|
32
|
+
min: 0.75,
|
|
33
|
+
max: 1.5
|
|
34
|
+
};
|
|
35
|
+
const CHARACTERS = ['crisp', 'standard', 'expressive'];
|
|
36
|
+
|
|
37
|
+
/** The knobs of `config`, defaults filled in, `tempo` clamped. */
|
|
38
|
+
export function resolveKnobs(config) {
|
|
39
|
+
const tempoIsSet = typeof config?.tempo === 'number' && Number.isFinite(config.tempo);
|
|
40
|
+
const tempo = tempoIsSet ? Math.min(TEMPO_RANGE.max, Math.max(TEMPO_RANGE.min, config.tempo)) : 1;
|
|
41
|
+
const character = config?.character != null && CHARACTERS.includes(config.character) ? config.character : 'standard';
|
|
42
|
+
return {
|
|
43
|
+
tempo,
|
|
44
|
+
character,
|
|
45
|
+
reducedMotion: 'system',
|
|
46
|
+
tempoIsSet
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -24,7 +24,7 @@ import type { ComponentStyleMap, TokenName, TokenValue } from './defineTheme.js'
|
|
|
24
24
|
import type { TypographyConfig, FontWeight } from './types.js';
|
|
25
25
|
import type { SyntaxThemeDefinition } from './syntax/index.js';
|
|
26
26
|
import { type TypeScaleConfig } from './expandTypeScale.js';
|
|
27
|
-
import { type
|
|
27
|
+
import { type MotionCharacter, type ThemeMotionConfig } from './themeMotion.js';
|
|
28
28
|
import { type RadiusScaleConfig } from './expandRadiusScale.js';
|
|
29
29
|
import { type ColorScaleConfig } from './expandColorScale.js';
|
|
30
30
|
/**
|
|
@@ -41,8 +41,8 @@ export interface ThemeValuesInput {
|
|
|
41
41
|
color?: ColorScaleConfig;
|
|
42
42
|
/** Radius scale configuration. */
|
|
43
43
|
radius?: RadiusScaleConfig;
|
|
44
|
-
/** Motion scale configuration. */
|
|
45
|
-
motion?:
|
|
44
|
+
/** Motion: the three knobs, a motion scale configuration, or both. */
|
|
45
|
+
motion?: ThemeMotionConfig;
|
|
46
46
|
/** Syntax highlighting theme. */
|
|
47
47
|
syntax?: SyntaxThemeDefinition;
|
|
48
48
|
/** Explicit token overrides — highest precedence. */
|
|
@@ -118,7 +118,14 @@ export declare function buildFontFamilyTokens(typo: TypographyConfig): Record<st
|
|
|
118
118
|
* `extends`, or nothing for a root theme. It sits below everything this input
|
|
119
119
|
* declares.
|
|
120
120
|
*/
|
|
121
|
-
export declare function resolveThemeValues(input: ThemeValuesInput, seed?: ThemeValuesSeed, { strictTokens }?: {
|
|
121
|
+
export declare function resolveThemeValues(input: ThemeValuesInput, seed?: ThemeValuesSeed, { strictTokens, inheritedCharacter, standardBeneath, }?: {
|
|
122
122
|
strictTokens?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* The motion character in effect beneath this layer, from a base theme or
|
|
125
|
+
* the theme an adaptation rule belongs to, for a layer that sets none.
|
|
126
|
+
*/
|
|
127
|
+
inheritedCharacter?: MotionCharacter;
|
|
128
|
+
/** The --ease-standard beneath a layer resolved without a seed: a rule's theme's. */
|
|
129
|
+
standardBeneath?: string;
|
|
123
130
|
}): ResolvedThemeValues;
|
|
124
131
|
//# sourceMappingURL=resolveThemeValues.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveThemeValues.d.ts","sourceRoot":"","sources":["../../src/theme/resolveThemeValues.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,UAAU,CAAC;AACpD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"resolveThemeValues.d.ts","sourceRoot":"","sources":["../../src/theme/resolveThemeValues.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAC,gBAAgB,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,UAAU,CAAC;AACpD,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAoB,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAmB,KAAK,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAO3E;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iCAAiC;IACjC,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,kCAAkC;IAClC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,sEAAsE;IACtE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,iCAAiC;IACjC,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,qDAAqD;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;IAChD,iCAAiC;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,iCAAiC;IACjC,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kDAAkD;IAClD,UAAU,CAAC,EAAE,iBAAiB,CAAC;CAChC;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,EAAC,MAAc,EAAC,GAAE;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAM,GACxC,MAAM,CAyBR;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CASpB;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,GACrB,eAAe,GAAG,SAAS,CA+C7B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAMD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,gBAAgB,EACvB,IAAI,CAAC,EAAE,eAAe,EACtB,EACE,YAAoB,EACpB,kBAAkB,EAClB,eAAe,GAChB,GAAE;IACD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,CAAC;CACrB,GACL,mBAAmB,CA0GrB"}
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
26
|
import { expandTypeScale, generateTypeScaleComponents } from "./expandTypeScale.js";
|
|
27
|
-
import {
|
|
27
|
+
import { expandThemeMotion, preTempoName } from "./themeMotion.js";
|
|
28
28
|
import { expandRadiusScale } from "./expandRadiusScale.js";
|
|
29
|
+
import { easeDefaults } from "./tokens.stylex.js";
|
|
29
30
|
import { expandColorScale } from "./expandColorScale.js";
|
|
30
31
|
import { deepMergeComponents } from "./mergeComponents.js";
|
|
31
32
|
|
|
@@ -212,7 +213,9 @@ export function buildFontFamilyTokens(typo) {
|
|
|
212
213
|
* declares.
|
|
213
214
|
*/
|
|
214
215
|
export function resolveThemeValues(input, seed, {
|
|
215
|
-
strictTokens = false
|
|
216
|
+
strictTokens = false,
|
|
217
|
+
inheritedCharacter,
|
|
218
|
+
standardBeneath
|
|
216
219
|
} = {}) {
|
|
217
220
|
const tokens = {
|
|
218
221
|
...seed?.tokens
|
|
@@ -235,9 +238,19 @@ export function resolveThemeValues(input, seed, {
|
|
|
235
238
|
Object.assign(tokens, expandRadiusScale(input.radius));
|
|
236
239
|
}
|
|
237
240
|
|
|
238
|
-
// 4. Motion-generated tokens
|
|
241
|
+
// 4. Motion-generated tokens (spec:AST-108 FR2, FR5). A layer that writes
|
|
242
|
+
// durations also writes the copies busy loops read (FR4), so an enclosing
|
|
243
|
+
// theme's tempo copies never stand in for its own: without a tempo of its
|
|
244
|
+
// own, they are its durations.
|
|
239
245
|
if (input.motion) {
|
|
240
|
-
|
|
246
|
+
const motion = expandThemeMotion(input.motion);
|
|
247
|
+
Object.assign(tokens, motion);
|
|
248
|
+
for (const [name, value] of Object.entries(motion)) {
|
|
249
|
+
const preTempo = preTempoName(name);
|
|
250
|
+
if (preTempo !== name && !(preTempo in motion)) {
|
|
251
|
+
tokens[preTempo] = value;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
241
254
|
}
|
|
242
255
|
|
|
243
256
|
// 5. Font family tokens
|
|
@@ -256,11 +269,34 @@ export function resolveThemeValues(input, seed, {
|
|
|
256
269
|
// 7. Explicit token overrides — highest precedence within this input layer.
|
|
257
270
|
// A generated axis in the same root or adaptation value cannot beat them.
|
|
258
271
|
if (input.tokens) {
|
|
272
|
+
const own = input.tokens;
|
|
259
273
|
for (const [key, value] of Object.entries(input.tokens)) {
|
|
260
274
|
if (value !== undefined) {
|
|
261
275
|
tokens[key] = resolveTokenValue(value, {
|
|
262
276
|
strict: strictTokens
|
|
263
277
|
});
|
|
278
|
+
// An explicit duration beats tempo, so a busy loop reading the
|
|
279
|
+
// pre-tempo value reads it too (spec:AST-108 FR4).
|
|
280
|
+
const preTempo = preTempoName(key);
|
|
281
|
+
if (preTempo !== key && own[preTempo] === undefined) {
|
|
282
|
+
tokens[preTempo] = tokens[key];
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// At 'standard', --ease-entrance and --ease-move equal the resolved
|
|
289
|
+
// --ease-standard (spec:AST-108 FR2): the layer's own, else the one beneath
|
|
290
|
+
// it. A layer that sets them itself, or whose character, its own or the one
|
|
291
|
+
// it inherits, picks its own curve, keeps them.
|
|
292
|
+
const own = input.tokens ?? {};
|
|
293
|
+
const ownCharacter = input.motion != null && 'character' in input.motion ? input.motion.character : undefined;
|
|
294
|
+
const character = ownCharacter ?? inheritedCharacter;
|
|
295
|
+
if (ownCharacter === 'standard' || own['--ease-standard'] !== undefined && (character === undefined || character === 'standard')) {
|
|
296
|
+
const standard = tokens['--ease-standard'] ?? standardBeneath ?? easeDefaults['--ease-standard'];
|
|
297
|
+
for (const name of ['--ease-entrance', '--ease-move']) {
|
|
298
|
+
if (own[name] === undefined) {
|
|
299
|
+
tokens[name] = standard;
|
|
264
300
|
}
|
|
265
301
|
}
|
|
266
302
|
}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
import type { ComponentStyleMap, TokenName, TokenValue } from './defineTheme.js';
|
|
25
25
|
import type { TypographyConfig } from './types.js';
|
|
26
26
|
import type { MotionScaleConfig } from './expandMotionScale.js';
|
|
27
|
+
import type { ThemeMotionConfig, ThemeMotionKnobs } from './themeMotion.js';
|
|
27
28
|
import type { RadiusScaleConfig } from './expandRadiusScale.js';
|
|
28
29
|
import type { ColorScaleConfig } from './expandColorScale.js';
|
|
29
30
|
/** Fixed names for viewport-width tier start points. */
|
|
@@ -88,8 +89,11 @@ export interface ThemeAdaptationValue {
|
|
|
88
89
|
color?: Partial<ColorScaleConfig>;
|
|
89
90
|
/** Radius axis overrides, completed from root metadata. */
|
|
90
91
|
radius?: Partial<RadiusScaleConfig>;
|
|
91
|
-
/**
|
|
92
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Motion axis overrides, completed from root metadata: scale fields, or the
|
|
94
|
+
* `tempo` and `character` knobs (spec:AST-108 FR5).
|
|
95
|
+
*/
|
|
96
|
+
motion?: Partial<MotionScaleConfig> & ThemeMotionKnobs;
|
|
93
97
|
/** Portable semantic-token writes. */
|
|
94
98
|
tokens?: Partial<Record<TokenName, TokenValue>>;
|
|
95
99
|
/** Replacements for exact theme-local names enrolled by the root lineage. */
|
|
@@ -123,7 +127,7 @@ export interface ThemeGenerativeAxes {
|
|
|
123
127
|
typography?: TypographyConfig;
|
|
124
128
|
color?: ColorScaleConfig;
|
|
125
129
|
radius?: RadiusScaleConfig;
|
|
126
|
-
motion?:
|
|
130
|
+
motion?: ThemeMotionConfig;
|
|
127
131
|
}
|
|
128
132
|
/** One rule lowered to concrete CSS writes. */
|
|
129
133
|
export interface ResolvedThemeAdaptationRule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"themeAdaptations.d.ts","sourceRoot":"","sources":["../../src/theme/themeAdaptations.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAC,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAC,gBAAgB,EAAiB,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAC;AAQzD,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,0CAA2C,CAAC;AAE/E,gDAAgD;AAChD,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAEnE,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,gBAAgB,CAO7D,CAAC;AAEL;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,GAAE,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAA6B,GACzE,iBAAiB,CASnB;AAED,0DAA0D;AAC1D,eAAO,MAAM,0BAA0B,EAAE,iBACpB,CAAC;AAEtB,yEAAyE;AACzE,MAAM,WAAW,6BAA6B;IAC5C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B;AAED,mEAAmE;AACnE,MAAM,WAAW,wBAAwB;IACvC,sDAAsD;IACtD,KAAK,CAAC,EAAE,6BAA6B,CAAC;IACtC,yCAAyC;IACzC,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;IAC7C,sCAAsC;IACtC,MAAM,CAAC,EAAE,QAAQ,GAAG,eAAe,CAAC;CACrC;AAED,sDAAsD;AACtD,MAAM,WAAW,+BAAgC,SAAQ,IAAI,CAC3D,gBAAgB,EAChB,OAAO,CACR;IACC,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACzD;AAED,iDAAiD;AACjD,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,UAAU,CAAC,EAAE,+BAA+B,CAAC;IAC7C,0DAA0D;IAC1D,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpC
|
|
1
|
+
{"version":3,"file":"themeAdaptations.d.ts","sourceRoot":"","sources":["../../src/theme/themeAdaptations.ts"],"names":[],"mappings":"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"}
|
|
@@ -344,20 +344,43 @@ function completeRadius(root, rule, path) {
|
|
|
344
344
|
};
|
|
345
345
|
}
|
|
346
346
|
function completeMotion(root, rule, path) {
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
347
|
+
// Not a public field, but a plain-JS caller may still pass it.
|
|
348
|
+
if (rule.reducedMotion !== undefined) {
|
|
349
|
+
throw new Error(`${path}.reducedMotion is a theme-wide setting: set it on the theme's own ` + `motion, not in an adaptation rule.`);
|
|
350
|
+
}
|
|
351
|
+
const tempo = rule.tempo ?? root?.tempo;
|
|
352
|
+
const character = rule.character ?? root?.character;
|
|
353
|
+
const knobs = {
|
|
354
|
+
...(tempo !== undefined ? {
|
|
355
|
+
tempo
|
|
356
|
+
} : {}),
|
|
357
|
+
...(character !== undefined ? {
|
|
358
|
+
character
|
|
359
|
+
} : {})
|
|
360
|
+
};
|
|
361
|
+
if (knobs.tempo !== undefined) {
|
|
362
|
+
assertFiniteNumber(knobs.tempo, `${path}.tempo`);
|
|
363
|
+
}
|
|
364
|
+
const rootScale = root != null && 'fast' in root ? root : {};
|
|
365
|
+
const writesScale = rule.fast !== undefined || rule.medium !== undefined || rule.ratio !== undefined || rule.slow !== undefined || rule.easing !== undefined;
|
|
366
|
+
if (!writesScale && 'fast' in rootScale === false) {
|
|
367
|
+
// Knobs only, over a root with no scale: the knobs generate the tokens.
|
|
368
|
+
return knobs;
|
|
369
|
+
}
|
|
370
|
+
const fast = rule.fast ?? rootScale.fast;
|
|
371
|
+
const medium = rule.medium ?? rootScale.medium;
|
|
372
|
+
const ratio = rule.ratio ?? rootScale.ratio;
|
|
350
373
|
if (fast === undefined || medium === undefined || ratio === undefined) {
|
|
351
374
|
throw new Error(`${path} must supply \`fast\`, \`medium\`, and \`ratio\` unless each missing field exists on the effective root motion axis.`);
|
|
352
375
|
}
|
|
353
376
|
assertFiniteNumber(fast, `${path}.fast`);
|
|
354
377
|
assertFiniteNumber(medium, `${path}.medium`);
|
|
355
378
|
assertFiniteNumber(ratio, `${path}.ratio`);
|
|
356
|
-
const slow = rule.slow ??
|
|
379
|
+
const slow = rule.slow ?? rootScale.slow;
|
|
357
380
|
if (slow !== undefined) {
|
|
358
381
|
assertFiniteNumber(slow, `${path}.slow`);
|
|
359
382
|
}
|
|
360
|
-
const easing = rule.easing ??
|
|
383
|
+
const easing = rule.easing ?? rootScale.easing;
|
|
361
384
|
return {
|
|
362
385
|
fast,
|
|
363
386
|
medium,
|
|
@@ -367,7 +390,8 @@ function completeMotion(root, rule, path) {
|
|
|
367
390
|
} : {}),
|
|
368
391
|
...(easing !== undefined ? {
|
|
369
392
|
easing
|
|
370
|
-
} : {})
|
|
393
|
+
} : {}),
|
|
394
|
+
...knobs
|
|
371
395
|
};
|
|
372
396
|
}
|
|
373
397
|
function valueToThemeInput(themeName, ruleIndex, value, axes) {
|
|
@@ -640,8 +664,13 @@ export function resolveThemeAdaptationRules(themeName, adaptations, axes, rootTo
|
|
|
640
664
|
// acceptance to preserve, so a malformed token is rejected here rather
|
|
641
665
|
// than emitted. The root path stays lenient for compatibility.
|
|
642
666
|
// SYNC: packages/core/src/theme/resolveThemeValues.ts (resolveTokenValue)
|
|
667
|
+
// A rule without motion of its own keeps the theme's character, so its
|
|
668
|
+
// explicit --ease-standard leaves that character's curves alone; one
|
|
669
|
+
// at 'standard' matches the theme's --ease-standard.
|
|
643
670
|
{
|
|
644
|
-
strictTokens: true
|
|
671
|
+
strictTokens: true,
|
|
672
|
+
inheritedCharacter: axes.motion?.character,
|
|
673
|
+
standardBeneath: rootTokens['--ease-standard']
|
|
645
674
|
});
|
|
646
675
|
for (const [name, value] of Object.entries(resolved.tokens)) {
|
|
647
676
|
assertConcreteLeaf(value, `defineTheme("${themeName}").adaptations.rules[${index}].value.tokens["${name}"]`);
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file themeMotion.ts
|
|
3
|
+
* @input A theme's motion configuration: the knobs (`tempo`, `character`),
|
|
4
|
+
* the existing `MotionScaleConfig`, or both
|
|
5
|
+
* @output The resolved knobs, the motion tokens they generate, and
|
|
6
|
+
* `resolveThemeMotion`, the internal resolver the animator and server code
|
|
7
|
+
* read (`spec:AST-108` FR1, FR2, FR5, FR6)
|
|
8
|
+
* @position Theme utility; consumed by resolveThemeValues.ts. Pure: no DOM,
|
|
9
|
+
* no import-time work, safe on the server.
|
|
10
|
+
*
|
|
11
|
+
* `tempo` scales every motion duration token, clamped to 0.75–1.5.
|
|
12
|
+
* `character` picks the entrance and move curves. Every theme follows each
|
|
13
|
+
* person's Reduce Motion setting (`reducedMotion` resolves to `'system'`).
|
|
14
|
+
* No spring reads the knobs yet. With the defaults (tempo 1, `'standard'`, `'system'`) every token is
|
|
15
|
+
* today's.
|
|
16
|
+
*
|
|
17
|
+
* A `MotionScaleConfig` keeps generating its duration tokens, and its fields
|
|
18
|
+
* win over `tempo` (FR5); explicit `tokens` win over both in
|
|
19
|
+
* resolveThemeValues.
|
|
20
|
+
*
|
|
21
|
+
* SYNC: When modified, update:
|
|
22
|
+
* - /packages/core/src/theme/themeMotion.test.ts
|
|
23
|
+
* - /packages/core/src/theme/resolveThemeValues.ts
|
|
24
|
+
* - /packages/core/src/theme/defineTheme.ts (the `motion` field's docs)
|
|
25
|
+
*/
|
|
26
|
+
import { type MotionScaleConfig } from './expandMotionScale.js';
|
|
27
|
+
import { type ResolvedMotionKnobs, type ThemeMotionKnobs } from './motionKnobs.js';
|
|
28
|
+
export { TEMPO_RANGE, type MotionCharacter, type ResolvedMotionKnobs, type ThemeMotionKnobs, type ThemeReducedMotion, } from './motionKnobs.js';
|
|
29
|
+
/**
|
|
30
|
+
* A theme's `motion`: the knobs, the existing `MotionScaleConfig`, or both.
|
|
31
|
+
* A `MotionScaleConfig`'s fields win over `tempo` for the durations they set.
|
|
32
|
+
*/
|
|
33
|
+
export type ThemeMotionConfig = ThemeMotionKnobs | (MotionScaleConfig & ThemeMotionKnobs);
|
|
34
|
+
/**
|
|
35
|
+
* The entrance and move curve at each character. `'standard'` is the theme's
|
|
36
|
+
* `--ease-standard`, so a theme that overrides that easing keeps its entrances
|
|
37
|
+
* on it.
|
|
38
|
+
*/
|
|
39
|
+
export declare const CHARACTER_EASE: {
|
|
40
|
+
readonly crisp: "cubic-bezier(0, 0, 0.2, 1)";
|
|
41
|
+
readonly standard: null;
|
|
42
|
+
readonly expressive: "cubic-bezier(0.3, 1.2, 0.5, 1)";
|
|
43
|
+
};
|
|
44
|
+
/** The knobs of `config`, defaults filled in, `tempo` clamped. */
|
|
45
|
+
export declare function resolveMotionKnobs(config: ThemeMotionConfig | undefined): ResolvedMotionKnobs;
|
|
46
|
+
/**
|
|
47
|
+
* The private custom property a theme with a `tempo` writes beside its
|
|
48
|
+
* duration tokens: the press release fade (`utils/interactionOverlay.stylex.ts`)
|
|
49
|
+
* multiplies its clock by it.
|
|
50
|
+
*/
|
|
51
|
+
export declare const MOTION_TEMPO_PROPERTY = "--_astryx-motion-tempo";
|
|
52
|
+
/** The duration tokens at `tempo`: today's values times it, to the ms. */
|
|
53
|
+
export declare function durationTokensAt(tempo: number): Record<string, string>;
|
|
54
|
+
/**
|
|
55
|
+
* The private custom property holding a duration token's value before
|
|
56
|
+
* `tempo` scaled it (`--duration-slow` → `--_astryx-pre-tempo-duration-slow`).
|
|
57
|
+
* Busy loops (Spinner, Skeleton) read it, falling back to the token, so their
|
|
58
|
+
* timing follows a duration scale or an explicit token but never `tempo`
|
|
59
|
+
* (FR4). Private, like every property the knobs add beside the core tokens
|
|
60
|
+
* (`architecture:theme-tokens` INV1).
|
|
61
|
+
*/
|
|
62
|
+
export declare function preTempoName(token: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* The motion tokens `config` generates (FR2, FR5): `--duration-*` times
|
|
65
|
+
* `tempo`, with a `MotionScaleConfig`'s own durations winning, and the
|
|
66
|
+
* job-named `--ease-entrance` and `--ease-move` at the theme's character.
|
|
67
|
+
* A knob the config leaves out writes nothing, so a theme extending another
|
|
68
|
+
* keeps the base's value for it; a knob it sets is written even at its
|
|
69
|
+
* default, so a child can set a base's tempo back to 1.
|
|
70
|
+
*/
|
|
71
|
+
export declare function expandThemeMotion(config: ThemeMotionConfig): Record<string, string>;
|
|
72
|
+
/** What `resolveThemeMotion` returns for a theme. */
|
|
73
|
+
export interface ThemeMotion {
|
|
74
|
+
/** The knobs, defaults filled in. */
|
|
75
|
+
readonly knobs: ResolvedMotionKnobs;
|
|
76
|
+
/** Every `--duration-*` token's value. */
|
|
77
|
+
readonly durations: Readonly<Record<string, string>>;
|
|
78
|
+
/** `--ease-standard`, `--ease-entrance` and `--ease-move`. */
|
|
79
|
+
readonly easings: Readonly<Record<string, string>>;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A theme's motion values, for the animator and for server code (FR6): the
|
|
83
|
+
* knobs, and the duration and easing tokens they resolve to with the theme's
|
|
84
|
+
* explicit tokens applied. A token written as a reference (`var(--name)`)
|
|
85
|
+
* resolves through the theme's tokens, as `resolveThemeTokens` resolves it
|
|
86
|
+
* (`architecture:theme-tokens` INV6). Pure: it reads only `theme`.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolveThemeMotion(theme: {
|
|
89
|
+
readonly motion?: ThemeMotionConfig;
|
|
90
|
+
readonly __axes?: {
|
|
91
|
+
readonly motion?: ThemeMotionConfig;
|
|
92
|
+
};
|
|
93
|
+
readonly tokens?: Readonly<Record<string, unknown>>;
|
|
94
|
+
readonly localTokens?: Readonly<Record<string, unknown>>;
|
|
95
|
+
}): ThemeMotion;
|
|
96
|
+
//# sourceMappingURL=themeMotion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themeMotion.d.ts","sourceRoot":"","sources":["../../src/theme/themeMotion.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAoB,KAAK,iBAAiB,EAAC,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,GACxB,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAC3B,gBAAgB,GAAG,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,cAAc;;;;CAIgC,CAAC;AAE5D,kEAAkE;AAClE,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,GAAG,SAAS,GACpC,mBAAmB,CAErB;AAaD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmCxB;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC1D,GAAG,WAAW,CAyCd"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file themeMotion.ts
|
|
5
|
+
* @input A theme's motion configuration: the knobs (`tempo`, `character`),
|
|
6
|
+
* the existing `MotionScaleConfig`, or both
|
|
7
|
+
* @output The resolved knobs, the motion tokens they generate, and
|
|
8
|
+
* `resolveThemeMotion`, the internal resolver the animator and server code
|
|
9
|
+
* read (`spec:AST-108` FR1, FR2, FR5, FR6)
|
|
10
|
+
* @position Theme utility; consumed by resolveThemeValues.ts. Pure: no DOM,
|
|
11
|
+
* no import-time work, safe on the server.
|
|
12
|
+
*
|
|
13
|
+
* `tempo` scales every motion duration token, clamped to 0.75–1.5.
|
|
14
|
+
* `character` picks the entrance and move curves. Every theme follows each
|
|
15
|
+
* person's Reduce Motion setting (`reducedMotion` resolves to `'system'`).
|
|
16
|
+
* No spring reads the knobs yet. With the defaults (tempo 1, `'standard'`, `'system'`) every token is
|
|
17
|
+
* today's.
|
|
18
|
+
*
|
|
19
|
+
* A `MotionScaleConfig` keeps generating its duration tokens, and its fields
|
|
20
|
+
* win over `tempo` (FR5); explicit `tokens` win over both in
|
|
21
|
+
* resolveThemeValues.
|
|
22
|
+
*
|
|
23
|
+
* SYNC: When modified, update:
|
|
24
|
+
* - /packages/core/src/theme/themeMotion.test.ts
|
|
25
|
+
* - /packages/core/src/theme/resolveThemeValues.ts
|
|
26
|
+
* - /packages/core/src/theme/defineTheme.ts (the `motion` field's docs)
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
import { expandMotionScale } from "./expandMotionScale.js";
|
|
30
|
+
import { resolveKnobs } from "./motionKnobs.js";
|
|
31
|
+
import { durationDefaults, easeDefaults } from "./tokens.stylex.js";
|
|
32
|
+
import { resolveTokenReferences } from "./tokenReferences.js";
|
|
33
|
+
export { TEMPO_RANGE } from "./motionKnobs.js";
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* A theme's `motion`: the knobs, the existing `MotionScaleConfig`, or both.
|
|
37
|
+
* A `MotionScaleConfig`'s fields win over `tempo` for the durations they set.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The entrance and move curve at each character. `'standard'` is the theme's
|
|
42
|
+
* `--ease-standard`, so a theme that overrides that easing keeps its entrances
|
|
43
|
+
* on it.
|
|
44
|
+
*/
|
|
45
|
+
export const CHARACTER_EASE = {
|
|
46
|
+
crisp: 'cubic-bezier(0, 0, 0.2, 1)',
|
|
47
|
+
standard: null,
|
|
48
|
+
expressive: 'cubic-bezier(0.3, 1.2, 0.5, 1)'
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/** The knobs of `config`, defaults filled in, `tempo` clamped. */
|
|
52
|
+
export function resolveMotionKnobs(config) {
|
|
53
|
+
return resolveKnobs(config);
|
|
54
|
+
}
|
|
55
|
+
function isScaleConfig(config) {
|
|
56
|
+
return 'fast' in config && 'medium' in config && 'ratio' in config;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** A duration token's value in ms (`'175ms'` → 175). */
|
|
60
|
+
function msOf(value) {
|
|
61
|
+
return Number.parseFloat(value);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The private custom property a theme with a `tempo` writes beside its
|
|
66
|
+
* duration tokens: the press release fade (`utils/interactionOverlay.stylex.ts`)
|
|
67
|
+
* multiplies its clock by it.
|
|
68
|
+
*/
|
|
69
|
+
export const MOTION_TEMPO_PROPERTY = '--_astryx-motion-tempo';
|
|
70
|
+
|
|
71
|
+
/** The duration tokens at `tempo`: today's values times it, to the ms. */
|
|
72
|
+
export function durationTokensAt(tempo) {
|
|
73
|
+
const tokens = {};
|
|
74
|
+
for (const [name, value] of Object.entries(durationDefaults)) {
|
|
75
|
+
tokens[name] = `${Math.round(msOf(value) * tempo)}ms`;
|
|
76
|
+
}
|
|
77
|
+
return tokens;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* The private custom property holding a duration token's value before
|
|
82
|
+
* `tempo` scaled it (`--duration-slow` → `--_astryx-pre-tempo-duration-slow`).
|
|
83
|
+
* Busy loops (Spinner, Skeleton) read it, falling back to the token, so their
|
|
84
|
+
* timing follows a duration scale or an explicit token but never `tempo`
|
|
85
|
+
* (FR4). Private, like every property the knobs add beside the core tokens
|
|
86
|
+
* (`architecture:theme-tokens` INV1).
|
|
87
|
+
*/
|
|
88
|
+
export function preTempoName(token) {
|
|
89
|
+
return token.replace(/^--duration-/, '--_astryx-pre-tempo-duration-');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The motion tokens `config` generates (FR2, FR5): `--duration-*` times
|
|
94
|
+
* `tempo`, with a `MotionScaleConfig`'s own durations winning, and the
|
|
95
|
+
* job-named `--ease-entrance` and `--ease-move` at the theme's character.
|
|
96
|
+
* A knob the config leaves out writes nothing, so a theme extending another
|
|
97
|
+
* keeps the base's value for it; a knob it sets is written even at its
|
|
98
|
+
* default, so a child can set a base's tempo back to 1.
|
|
99
|
+
*/
|
|
100
|
+
export function expandThemeMotion(config) {
|
|
101
|
+
const knobs = resolveMotionKnobs(config);
|
|
102
|
+
const tokens = {};
|
|
103
|
+
if (knobs.tempoIsSet) {
|
|
104
|
+
Object.assign(tokens, durationTokensAt(knobs.tempo));
|
|
105
|
+
for (const [name, value] of Object.entries(durationDefaults)) {
|
|
106
|
+
tokens[preTempoName(name)] = value;
|
|
107
|
+
}
|
|
108
|
+
// The press release fade, a fixed clock in the stylesheet, scales by the
|
|
109
|
+
// tempo itself (FR4; `component:Button` FR15), read where it plays.
|
|
110
|
+
tokens[MOTION_TEMPO_PROPERTY] = String(knobs.tempo);
|
|
111
|
+
}
|
|
112
|
+
if (isScaleConfig(config)) {
|
|
113
|
+
const scale = expandMotionScale(config);
|
|
114
|
+
Object.assign(tokens, scale);
|
|
115
|
+
if (knobs.tempoIsSet) {
|
|
116
|
+
for (const [name, value] of Object.entries(scale)) {
|
|
117
|
+
if (name.startsWith('--duration-')) {
|
|
118
|
+
tokens[preTempoName(name)] = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const scaleEasing = isScaleConfig(config) && config.easing != null ? config.easing : null;
|
|
124
|
+
const ease = CHARACTER_EASE[knobs.character] ?? (config.character != null ? scaleEasing ?? easeDefaults['--ease-standard'] : scaleEasing);
|
|
125
|
+
if (ease != null) {
|
|
126
|
+
tokens['--ease-entrance'] = ease;
|
|
127
|
+
tokens['--ease-move'] = ease;
|
|
128
|
+
}
|
|
129
|
+
return tokens;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/** What `resolveThemeMotion` returns for a theme. */
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* A theme's motion values, for the animator and for server code (FR6): the
|
|
136
|
+
* knobs, and the duration and easing tokens they resolve to with the theme's
|
|
137
|
+
* explicit tokens applied. A token written as a reference (`var(--name)`)
|
|
138
|
+
* resolves through the theme's tokens, as `resolveThemeTokens` resolves it
|
|
139
|
+
* (`architecture:theme-tokens` INV6). Pure: it reads only `theme`.
|
|
140
|
+
*/
|
|
141
|
+
export function resolveThemeMotion(theme) {
|
|
142
|
+
// A defined theme's motion is its axes': its own merged with its base's.
|
|
143
|
+
const config = theme.__axes?.motion ?? theme.motion;
|
|
144
|
+
const knobs = resolveMotionKnobs(config);
|
|
145
|
+
const generated = config ? expandThemeMotion(config) : {};
|
|
146
|
+
// The graph the references resolve through: the defaults, the knobs'
|
|
147
|
+
// tokens, then the theme's own (a light/dark pair is not a motion value, so
|
|
148
|
+
// only plain strings take part).
|
|
149
|
+
const graph = {
|
|
150
|
+
...durationDefaults,
|
|
151
|
+
...easeDefaults,
|
|
152
|
+
...generated
|
|
153
|
+
};
|
|
154
|
+
for (const tokens of [theme.localTokens, theme.tokens]) {
|
|
155
|
+
for (const [name, value] of Object.entries(tokens ?? {})) {
|
|
156
|
+
if (typeof value === 'string') {
|
|
157
|
+
graph[name] = value;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
const explicit = name => typeof theme.tokens?.[name] === 'string' || name in generated;
|
|
162
|
+
const resolved = resolveTokenReferences(graph);
|
|
163
|
+
const durations = {};
|
|
164
|
+
for (const name of Object.keys(durationDefaults)) {
|
|
165
|
+
durations[name] = resolved[name];
|
|
166
|
+
}
|
|
167
|
+
const standard = resolved['--ease-standard'];
|
|
168
|
+
return {
|
|
169
|
+
knobs,
|
|
170
|
+
durations,
|
|
171
|
+
easings: {
|
|
172
|
+
'--ease-standard': standard,
|
|
173
|
+
'--ease-entrance': explicit('--ease-entrance') ? resolved['--ease-entrance'] : standard,
|
|
174
|
+
'--ease-move': explicit('--ease-move') ? resolved['--ease-move'] : standard
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file tokenReferences.ts
|
|
3
|
+
* @input A flat map of token names to raw CSS values
|
|
4
|
+
* @output `resolveTokenReferences`, which follows `var(--name[, fallback])`
|
|
5
|
+
* references through the map, and the CSS parsing helpers it shares
|
|
6
|
+
* (`splitTopLevelComma`, `findMatchingParen`)
|
|
7
|
+
* @position Theme utility with no imports: tokens.ts resolves a theme's token
|
|
8
|
+
* graph on it (evaluating color functions as it goes), and themeMotion.ts
|
|
9
|
+
* resolves motion tokens written as references on it. Pure; safe on the
|
|
10
|
+
* server.
|
|
11
|
+
*
|
|
12
|
+
* SYNC: When modified, update:
|
|
13
|
+
* - /packages/core/src/theme/tokens.ts
|
|
14
|
+
* - /packages/core/src/theme/themeMotion.ts
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Split the arguments of a CSS function body on the first top-level comma.
|
|
18
|
+
* Handles nested functions such as rgba(), color-mix(), var(), and quoted strings.
|
|
19
|
+
*/
|
|
20
|
+
export declare function splitTopLevelComma(input: string): [string, string] | null;
|
|
21
|
+
/** Index of the `)` matching the `(` at `openIndex`, or -1 when unbalanced. */
|
|
22
|
+
export declare function findMatchingParen(input: string, openIndex: number): number;
|
|
23
|
+
/**
|
|
24
|
+
* Resolves every value in `raw` to a concrete one: each `var(--name[,
|
|
25
|
+
* fallback])` is replaced by `name`'s resolved value, or by its fallback when
|
|
26
|
+
* `raw` has no `name`, and is kept as written when neither exists or the
|
|
27
|
+
* references form a cycle. `evaluate` then runs on each substituted value
|
|
28
|
+
* (tokens.ts evaluates CSS color functions there).
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveTokenReferences(raw: Readonly<Record<string, string>>, evaluate?: (expr: string) => string): Record<string, string>;
|
|
31
|
+
//# sourceMappingURL=tokenReferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenReferences.d.ts","sourceRoot":"","sources":["../../src/theme/tokenReferences.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAwCzE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAc1E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACrC,QAAQ,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAqB,GAChD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyDxB"}
|