@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
|
@@ -117,8 +117,14 @@ export const pressConsts = {
|
|
|
117
117
|
releaseMs: 200
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
/**
|
|
121
|
-
|
|
120
|
+
/**
|
|
121
|
+
* The release's clock as CSS, scaled by the theme's `--_astryx-motion-tempo`
|
|
122
|
+
* (`spec:AST-108` FR4, `component:Button` FR15) up to 1.5, its maximum. The
|
|
123
|
+
* controller's timer reads the same property.
|
|
124
|
+
*/
|
|
125
|
+
const PRESS_RELEASE_DURATION = `calc(${pressConsts.releaseMs}ms * min(var(--_astryx-motion-tempo, 1), 1.5))`;
|
|
126
|
+
/** The same clock under Reduce Motion: a tempo may shorten it, never lengthen it. */
|
|
127
|
+
const PRESS_RELEASE_DURATION_REDUCED = `min(${pressConsts.releaseMs}ms, calc(${pressConsts.releaseMs}ms * var(--_astryx-motion-tempo, 1)))`;
|
|
122
128
|
const ENABLED = ':where(:not(:disabled,[aria-disabled="true"]))';
|
|
123
129
|
const HOVER_HOVER = '@media (hover: hover)';
|
|
124
130
|
const COARSE = '@media (pointer: coarse)';
|
|
@@ -199,7 +205,10 @@ const pressReleaseAnimation = {
|
|
|
199
205
|
},
|
|
200
206
|
animationDuration: {
|
|
201
207
|
default: null,
|
|
202
|
-
'[data-astryx-press="fading"]':
|
|
208
|
+
'[data-astryx-press="fading"]': {
|
|
209
|
+
default: PRESS_RELEASE_DURATION,
|
|
210
|
+
'@media (prefers-reduced-motion: reduce)': PRESS_RELEASE_DURATION_REDUCED
|
|
211
|
+
}
|
|
203
212
|
},
|
|
204
213
|
animationTimingFunction: {
|
|
205
214
|
default: null,
|
|
@@ -214,7 +223,7 @@ export const interactionOverlayStyles = {
|
|
|
214
223
|
backgroundColor: {
|
|
215
224
|
"--astryx-press-alpha": "x11z29ks xli5ek3",
|
|
216
225
|
kKVMdj: "x14e4jsf",
|
|
217
|
-
k44tkh: "
|
|
226
|
+
k44tkh: "x1heh2iz x1sgdaq5",
|
|
218
227
|
kyAemX: "xwkbtvz",
|
|
219
228
|
kWV6AL: "xziyay6",
|
|
220
229
|
"--_press-paint": "xz2mauf",
|
|
@@ -226,7 +235,7 @@ export const interactionOverlayStyles = {
|
|
|
226
235
|
backgroundImage: {
|
|
227
236
|
"--astryx-press-alpha": "x11z29ks xli5ek3",
|
|
228
237
|
kKVMdj: "x14e4jsf",
|
|
229
|
-
k44tkh: "
|
|
238
|
+
k44tkh: "x1heh2iz x1sgdaq5",
|
|
230
239
|
kyAemX: "xwkbtvz",
|
|
231
240
|
kWV6AL: "xziyay6",
|
|
232
241
|
"--_press-paint": "xz2mauf",
|
|
@@ -237,7 +246,7 @@ export const interactionOverlayStyles = {
|
|
|
237
246
|
backgroundImageOnNeutral: {
|
|
238
247
|
"--astryx-press-alpha": "x11z29ks xli5ek3",
|
|
239
248
|
kKVMdj: "x14e4jsf",
|
|
240
|
-
k44tkh: "
|
|
249
|
+
k44tkh: "x1heh2iz x1sgdaq5",
|
|
241
250
|
kyAemX: "xwkbtvz",
|
|
242
251
|
kWV6AL: "xziyay6",
|
|
243
252
|
"--_press-paint": "xz2mauf",
|
|
@@ -248,7 +257,7 @@ export const interactionOverlayStyles = {
|
|
|
248
257
|
pressedBackgroundColor: {
|
|
249
258
|
"--astryx-press-alpha": "x11z29ks xli5ek3",
|
|
250
259
|
kKVMdj: "x14e4jsf",
|
|
251
|
-
k44tkh: "
|
|
260
|
+
k44tkh: "x1heh2iz x1sgdaq5",
|
|
252
261
|
kyAemX: "xwkbtvz",
|
|
253
262
|
kWV6AL: "xziyay6",
|
|
254
263
|
"--_press-paint": "xz2mauf",
|
|
@@ -260,7 +269,7 @@ export const interactionOverlayStyles = {
|
|
|
260
269
|
pressedAlpha: {
|
|
261
270
|
"--astryx-press-alpha": "x11z29ks xli5ek3",
|
|
262
271
|
kKVMdj: "x14e4jsf",
|
|
263
|
-
k44tkh: "
|
|
272
|
+
k44tkh: "x1heh2iz x1sgdaq5",
|
|
264
273
|
kyAemX: "xwkbtvz",
|
|
265
274
|
kWV6AL: "xziyay6",
|
|
266
275
|
"--_press-paint": "xz2mauf",
|
|
@@ -72,6 +72,8 @@ export declare const DATE_FORMAT_SHORT_WITH_YEAR: Intl.DateTimeFormatOptions;
|
|
|
72
72
|
* serialization, or any Astryx component's calendar semantics.
|
|
73
73
|
*/
|
|
74
74
|
export declare function plainDateFormat(pd: PlainDate, options: Intl.DateTimeFormatOptions, locale?: Locale): string;
|
|
75
|
+
/** @internal plainDateFormat's formatter cache; not part of the public API. */
|
|
76
|
+
export declare function dateTimeFormatFor(locale: Locale, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
|
|
75
77
|
/**
|
|
76
78
|
* The locale's name for the "week of year" date field ("week", "Woche", "週"),
|
|
77
79
|
* from CLDR through `Intl.DisplayNames`. Calendar names its week-number
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plainDate.d.ts","sourceRoot":"","sources":["../../src/utils/plainDate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plainDate.d.ts","sourceRoot":"","sources":["../../src/utils/plainDate.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/plainDate.js
CHANGED
|
@@ -290,10 +290,53 @@ export const DATE_FORMAT_SHORT_WITH_YEAR = {
|
|
|
290
290
|
* serialization, or any Astryx component's calendar semantics.
|
|
291
291
|
*/
|
|
292
292
|
export function plainDateFormat(pd, options, locale = 'en') {
|
|
293
|
-
|
|
293
|
+
const calendar = options.calendar ?? 'gregory';
|
|
294
|
+
if (options.timeZone != null) {
|
|
295
|
+
return dateTimeFormatFor(locale, {
|
|
296
|
+
...options,
|
|
297
|
+
calendar
|
|
298
|
+
}).format(plainDateToDate(pd));
|
|
299
|
+
}
|
|
300
|
+
if (TIME_OF_DAY_FIELDS.some(field => options[field] != null)) {
|
|
301
|
+
// A zone name or a time of day reads local midnight in the zone current
|
|
302
|
+
// at the call. A cached formatter would keep the zone it was built in,
|
|
303
|
+
// so this one is built for the call.
|
|
304
|
+
return new Intl.DateTimeFormat(locale, {
|
|
305
|
+
...options,
|
|
306
|
+
calendar
|
|
307
|
+
}).format(plainDateToDate(pd));
|
|
308
|
+
}
|
|
309
|
+
// Date fields alone: UTC midnight formatted in UTC, so neither the cached
|
|
310
|
+
// formatter nor the date depends on the host's zone, which can change while
|
|
311
|
+
// a page is open.
|
|
312
|
+
return dateTimeFormatFor(locale, {
|
|
294
313
|
...options,
|
|
295
|
-
calendar
|
|
296
|
-
|
|
314
|
+
calendar,
|
|
315
|
+
timeZone: 'UTC'
|
|
316
|
+
}).format(utcTime(pd.year, pd.month - 1, pd.day));
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
/** Options that print a time of day or a zone, which a PlainDate lacks. */
|
|
320
|
+
const TIME_OF_DAY_FIELDS = ['timeZoneName', 'hour', 'minute', 'second', 'fractionalSecondDigits', 'dayPeriod', 'timeStyle'];
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* One `Intl.DateTimeFormat` per locale and options, built on first use.
|
|
324
|
+
* Building a formatter costs far more than formatting with it, and a calendar
|
|
325
|
+
* formats each of a month's 42 day labels with the same options on every
|
|
326
|
+
* render. The options are keyed in a fixed order, so the same options written
|
|
327
|
+
* in another order share a formatter.
|
|
328
|
+
*/
|
|
329
|
+
const dateTimeFormats = new Map();
|
|
330
|
+
|
|
331
|
+
/** @internal plainDateFormat's formatter cache; not part of the public API. */
|
|
332
|
+
export function dateTimeFormatFor(locale, options) {
|
|
333
|
+
const key = JSON.stringify([locale, Object.entries(options).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)]);
|
|
334
|
+
let format = dateTimeFormats.get(key);
|
|
335
|
+
if (format == null) {
|
|
336
|
+
format = new Intl.DateTimeFormat(locale, options);
|
|
337
|
+
dateTimeFormats.set(key, format);
|
|
338
|
+
}
|
|
339
|
+
return format;
|
|
297
340
|
}
|
|
298
341
|
|
|
299
342
|
/**
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { AdaptivePresentation } from '../hooks/useAdaptivePresentation.js';
|
|
2
|
+
import type { CompactDefinition } from '../theme/themeAdaptations.js';
|
|
3
|
+
import { type TouchPresentation } from './touchPresentation.js';
|
|
4
|
+
/** What a component does when the caller omits `presentation`. */
|
|
5
|
+
export type PresentationDefault = 'popover' | 'touch';
|
|
6
|
+
export interface ResolvedPresentation {
|
|
7
|
+
/** The surface to render. */
|
|
8
|
+
readonly surface: 'popover' | 'bottom-sheet';
|
|
9
|
+
/**
|
|
10
|
+
* The component's touch input modes apply: a finger, and `presentation`
|
|
11
|
+
* not pinned to `'popover'`.
|
|
12
|
+
*/
|
|
13
|
+
readonly touchModes: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface PresentationOptions {
|
|
16
|
+
/** What an omitted `presentation` means. @default 'popover' */
|
|
17
|
+
readonly whenOmitted?: PresentationDefault;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* usePresentation's options. There is no server hint: the server and
|
|
21
|
+
* hydrating render never present touch modes (`spec:AST-094` FR13).
|
|
22
|
+
*/
|
|
23
|
+
export type UsePresentationOptions = PresentationOptions;
|
|
24
|
+
export interface ReadPresentationOptions extends PresentationOptions {
|
|
25
|
+
/** The window to read; the global one by default. */
|
|
26
|
+
readonly view?: Window | null;
|
|
27
|
+
/**
|
|
28
|
+
* The active theme's compact definition (`useCompactDefinition()`, read
|
|
29
|
+
* while rendering), so a theme that moves `md` moves the sheet too
|
|
30
|
+
* (`spec:AST-012` FR9).
|
|
31
|
+
*/
|
|
32
|
+
readonly compact: CompactDefinition;
|
|
33
|
+
}
|
|
34
|
+
/** The decision, from a presentation request and a touch presentation. */
|
|
35
|
+
export declare function resolvePresentation(presentation: AdaptivePresentation | undefined, touch: TouchPresentation, whenOmitted?: PresentationDefault): ResolvedPresentation;
|
|
36
|
+
/**
|
|
37
|
+
* The presentation now, following the pointer and the size as they change
|
|
38
|
+
* (a tablet docking a trackpad). SSR-safe: renders the server default (not
|
|
39
|
+
* touch, not compact) until hydrated (`spec:AST-094` FR13). It subscribes
|
|
40
|
+
* only to what the request reads: a pinned `'popover'` to neither query,
|
|
41
|
+
* `'bottom-sheet'` and the omitted `'touch'` default to the pointer, and
|
|
42
|
+
* `'adaptive'` to the pointer and the compact size.
|
|
43
|
+
*/
|
|
44
|
+
export declare function usePresentation(presentation: AdaptivePresentation | undefined, { whenOmitted }?: UsePresentationOptions): ResolvedPresentation;
|
|
45
|
+
/**
|
|
46
|
+
* The presentation at this moment, for a decision taken once (a menu
|
|
47
|
+
* deciding how it follows the finger that opened it).
|
|
48
|
+
*/
|
|
49
|
+
export declare function readPresentation(presentation: AdaptivePresentation | undefined, { whenOmitted, view, compact }: ReadPresentationOptions): ResolvedPresentation;
|
|
50
|
+
//# sourceMappingURL=presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../src/utils/presentation.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,kCAAkC,CAAC;AAC3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,kEAAkE;AAClE,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,cAAc,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEzD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,qDAAqD;IACrD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,oBAAoB,GAAG,SAAS,EAC9C,KAAK,EAAE,iBAAiB,EACxB,WAAW,GAAE,mBAA+B,GAC3C,oBAAoB,CAStB;AA8BD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,oBAAoB,GAAG,SAAS,EAC9C,EAAC,WAAuB,EAAC,GAAE,sBAA2B,GACrD,oBAAoB,CAWtB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,oBAAoB,GAAG,SAAS,EAC9C,EAAC,WAAuB,EAAE,IAAI,EAAE,OAAO,EAAC,EAAE,uBAAuB,GAChE,oBAAoB,CAQtB"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file presentation.ts
|
|
7
|
+
* @input A component's `presentation` prop (a caller's value, or omitted),
|
|
8
|
+
* what the component does when it is omitted, and the touch presentation
|
|
9
|
+
* (utils/touchPresentation.ts)
|
|
10
|
+
* @output usePresentation and readPresentation (and the pure
|
|
11
|
+
* resolvePresentation): the surface to render and whether the component's
|
|
12
|
+
* touch input modes apply
|
|
13
|
+
* @position Internal resolver for stable components that, under a finger,
|
|
14
|
+
* present a different surface or switch how an open surface follows input
|
|
15
|
+
* (architecture:public-component-api INV16)
|
|
16
|
+
*
|
|
17
|
+
* A caller's explicit `presentation` always wins over the touch default:
|
|
18
|
+
*
|
|
19
|
+
* - `'popover'`: the fine-pointer surface AND input modes, on every device;
|
|
20
|
+
* - `'bottom-sheet'`: the sheet everywhere, with touch input modes under a
|
|
21
|
+
* finger;
|
|
22
|
+
* - `'adaptive'`: the sheet on a compact touch screen and the popover
|
|
23
|
+
* elsewhere, with touch input modes under a finger;
|
|
24
|
+
* - omitted: the component's default. `whenOmitted: 'popover'` answers as
|
|
25
|
+
* `'popover'` (today's components). `whenOmitted: 'touch'` keeps the
|
|
26
|
+
* popover surface and turns the component's touch input modes on under a
|
|
27
|
+
* finger, as UIMenu tracks a finger in an anchored menu. Making `'touch'`
|
|
28
|
+
* a released component's default is a functional default change
|
|
29
|
+
* (`spec:AST-017` FR3) whose Changeset names `presentation="popover"`.
|
|
30
|
+
*
|
|
31
|
+
* One touch model on every touch device: the modes depend on the pointer,
|
|
32
|
+
* never on the platform. Touch styling (press paint, the text-size floor)
|
|
33
|
+
* and touch-only behavior that a component's own record defines (a row
|
|
34
|
+
* swipe, a slider's thumb) do not read this: they keep the touch
|
|
35
|
+
* presentation.
|
|
36
|
+
*
|
|
37
|
+
* CSS: a style that implements a touch surface or input mode is applied with
|
|
38
|
+
* `touchModes` (`stylex.props(touchModes && styles.touchMode)`), never as a
|
|
39
|
+
* bare media key on a base style, so a pinned `'popover'` keeps none of it.
|
|
40
|
+
* A rule inside it that needs the touch query uses the touch presentation's
|
|
41
|
+
* touch key; the iOS `@supports` gate is only for the one style iOS WebKit
|
|
42
|
+
* itself requires (the 16px text-size floor), never for a touch mode. On the
|
|
43
|
+
* server and while hydrating, `touchModes` is false and `'adaptive'` is the
|
|
44
|
+
* popover: a touch surface or mode opens only after hydration
|
|
45
|
+
* (`spec:AST-094` FR13), and no hint changes that. usePresentation listens
|
|
46
|
+
* only to the queries a request reads (`architecture:react-component-runtime`
|
|
47
|
+
* INV5): none for a pinned `'popover'`.
|
|
48
|
+
*
|
|
49
|
+
* SYNC: When modified, update presentation.test.ts.
|
|
50
|
+
*/
|
|
51
|
+
import { useCallback, useMemo, useSyncExternalStore } from 'react';
|
|
52
|
+
import { readTouchPresentation, TOUCH_QUERY, useCompactDefinition } from "./touchPresentation.js";
|
|
53
|
+
|
|
54
|
+
/** What a component does when the caller omits `presentation`. */
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* usePresentation's options. There is no server hint: the server and
|
|
58
|
+
* hydrating render never present touch modes (`spec:AST-094` FR13).
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
/** The decision, from a presentation request and a touch presentation. */
|
|
62
|
+
export function resolvePresentation(presentation, touch, whenOmitted = 'popover') {
|
|
63
|
+
const request = presentation ?? whenOmitted;
|
|
64
|
+
const surface = request === 'bottom-sheet' || request === 'adaptive' && touch.isTouch && touch.isCompact ? 'bottom-sheet' : 'popover';
|
|
65
|
+
const touchModes = request !== 'popover' && touch.isTouch;
|
|
66
|
+
return {
|
|
67
|
+
surface,
|
|
68
|
+
touchModes
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const noSubscription = () => () => {};
|
|
72
|
+
/** The server and hydrating render match no query (`spec:AST-094` FR13). */
|
|
73
|
+
const matchesNothing = () => false;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* A media query's match, subscribed only while `query` is given
|
|
77
|
+
* (`architecture:react-component-runtime` INV5); false on the server and
|
|
78
|
+
* while hydrating (`spec:AST-094` FR13).
|
|
79
|
+
*/
|
|
80
|
+
function useMatchWhileRead(query) {
|
|
81
|
+
const subscribe = useCallback(onStoreChange => {
|
|
82
|
+
if (query == null) {
|
|
83
|
+
return noSubscription();
|
|
84
|
+
}
|
|
85
|
+
const mql = window.matchMedia(query);
|
|
86
|
+
mql.addEventListener('change', onStoreChange);
|
|
87
|
+
return () => mql.removeEventListener('change', onStoreChange);
|
|
88
|
+
}, [query]);
|
|
89
|
+
const getSnapshot = useCallback(() => query != null && window.matchMedia(query).matches, [query]);
|
|
90
|
+
return useSyncExternalStore(subscribe, getSnapshot, matchesNothing);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* The presentation now, following the pointer and the size as they change
|
|
95
|
+
* (a tablet docking a trackpad). SSR-safe: renders the server default (not
|
|
96
|
+
* touch, not compact) until hydrated (`spec:AST-094` FR13). It subscribes
|
|
97
|
+
* only to what the request reads: a pinned `'popover'` to neither query,
|
|
98
|
+
* `'bottom-sheet'` and the omitted `'touch'` default to the pointer, and
|
|
99
|
+
* `'adaptive'` to the pointer and the compact size.
|
|
100
|
+
*/
|
|
101
|
+
export function usePresentation(presentation, {
|
|
102
|
+
whenOmitted = 'popover'
|
|
103
|
+
} = {}) {
|
|
104
|
+
const request = presentation ?? whenOmitted;
|
|
105
|
+
const compact = useCompactDefinition();
|
|
106
|
+
const isTouch = useMatchWhileRead(request === 'popover' ? null : TOUCH_QUERY);
|
|
107
|
+
const isCompact = useMatchWhileRead(request === 'adaptive' ? compact.query : null);
|
|
108
|
+
return useMemo(() => resolvePresentation(presentation, {
|
|
109
|
+
isTouch,
|
|
110
|
+
isCompact
|
|
111
|
+
}, whenOmitted), [presentation, isTouch, isCompact, whenOmitted]);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* The presentation at this moment, for a decision taken once (a menu
|
|
116
|
+
* deciding how it follows the finger that opened it).
|
|
117
|
+
*/
|
|
118
|
+
export function readPresentation(presentation, {
|
|
119
|
+
whenOmitted = 'popover',
|
|
120
|
+
view,
|
|
121
|
+
compact
|
|
122
|
+
}) {
|
|
123
|
+
const target = view === undefined ? typeof window === 'undefined' ? null : window : view;
|
|
124
|
+
return resolvePresentation(presentation, readTouchPresentation(target, compact), whenOmitted);
|
|
125
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pressFeedback.d.ts","sourceRoot":"","sources":["../../src/utils/pressFeedback.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE;IAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAA;CAE/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pressFeedback.d.ts","sourceRoot":"","sources":["../../src/utils/pressFeedback.ts"],"names":[],"mappings":"AAyDA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE;IAAC,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAA;CAE/D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAomB5C;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,IAAI,CA0BjD"}
|
|
@@ -131,6 +131,22 @@ const TIMER_MS = {
|
|
|
131
131
|
flash: PRESS_FLASH_MS,
|
|
132
132
|
onset: PRESS_ONSET_MS
|
|
133
133
|
};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The release fade's clock on `element`, read once, at the release, from the
|
|
137
|
+
* property its stylesheet reads: the theme's `--_astryx-motion-tempo`
|
|
138
|
+
* (`spec:AST-108` FR4, `component:Button` FR15). Under Reduce Motion a tempo
|
|
139
|
+
* may shorten the fade, never lengthen it past 200 ms.
|
|
140
|
+
*/
|
|
141
|
+
function fadeMs(element) {
|
|
142
|
+
const style = getComputedStyle(element);
|
|
143
|
+
const value = style.getPropertyValue('--_astryx-motion-tempo').trim();
|
|
144
|
+
const read = value === '' ? Number.NaN : Number(value);
|
|
145
|
+
const tempo = Number.isFinite(read) && read > 0 ? read : 1;
|
|
146
|
+
const scaled = PRESS_FADE_MS * tempo;
|
|
147
|
+
const reduced = typeof window.matchMedia === 'function' && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
148
|
+
return reduced ? Math.min(scaled, PRESS_FADE_MS) : scaled;
|
|
149
|
+
}
|
|
134
150
|
const TIMER_EVENT = {
|
|
135
151
|
fade: 'fadeEnd',
|
|
136
152
|
flash: 'flashEnd',
|
|
@@ -197,7 +213,10 @@ function apply(slot, step) {
|
|
|
197
213
|
apply(slot, pressGestureStep(slot.live?.gesture ?? idlePressGesture(), {
|
|
198
214
|
kind: TIMER_EVENT[kind]
|
|
199
215
|
}));
|
|
200
|
-
},
|
|
216
|
+
},
|
|
217
|
+
// The release fade follows the theme's tempo (`spec:AST-108` FR4,
|
|
218
|
+
// `component:Button` FR15); the onset delay and the tap flash do not.
|
|
219
|
+
kind === 'fade' ? fadeMs(live.element) : TIMER_MS[kind]);
|
|
201
220
|
}
|
|
202
221
|
}
|
|
203
222
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a button press is a primary click: the main button, and not a
|
|
3
|
+
* ctrl-click on macOS or iPadOS, which is that platform's context click
|
|
4
|
+
* (`spec:AST-094` FR43). A right click, a pen's barrel button and a macOS
|
|
5
|
+
* ctrl-click start no press.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isPrimaryClick(event: {
|
|
8
|
+
readonly button: number;
|
|
9
|
+
readonly ctrlKey: boolean;
|
|
10
|
+
}): boolean;
|
|
11
|
+
//# sourceMappingURL=primaryClick.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primaryClick.d.ts","sourceRoot":"","sources":["../../src/utils/primaryClick.ts"],"names":[],"mappings":"AAgBA;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAEV"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file primaryClick.ts
|
|
5
|
+
* @input A mouse or pen button press: its `button` and `ctrlKey`
|
|
6
|
+
* @output Exports isPrimaryClick
|
|
7
|
+
* @position Internal util, the one primary-click rule: the gesture host
|
|
8
|
+
* starts a press only for one, and the press controller paints only one;
|
|
9
|
+
* platform detection is utils/isApplePlatform.ts
|
|
10
|
+
*
|
|
11
|
+
* Deliberately absent from utils/index.ts: packages/core/src/index.ts does
|
|
12
|
+
* `export * from './utils'`, so naming it there would publish it as API.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { isApplePlatform } from "./isApplePlatform.js";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Whether a button press is a primary click: the main button, and not a
|
|
19
|
+
* ctrl-click on macOS or iPadOS, which is that platform's context click
|
|
20
|
+
* (`spec:AST-094` FR43). A right click, a pen's barrel button and a macOS
|
|
21
|
+
* ctrl-click start no press.
|
|
22
|
+
*/
|
|
23
|
+
export function isPrimaryClick(event) {
|
|
24
|
+
return event.button === 0 && !(event.ctrlKey && isApplePlatform());
|
|
25
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file timeFormat.ts
|
|
3
|
+
* @input An ISO time or typed text, plus the provider's BCP 47 locale
|
|
4
|
+
* @output Exports resolveHourFormat, formatLocaleTime, and parseLocaleTime
|
|
5
|
+
* @position Internal shared helper for TimeInput and DateTimeInput; not part
|
|
6
|
+
* of the public surface
|
|
7
|
+
*
|
|
8
|
+
* Time of day as the locale writes it. The hour cycle, digits, separator, and
|
|
9
|
+
* day-period words all come from Intl rather than a table, so a field reads
|
|
10
|
+
* the same way `Timestamp` does beside it.
|
|
11
|
+
*
|
|
12
|
+
* The hour cycle is the locale's own: `en-US` and `ko-KR` read twelve-hour,
|
|
13
|
+
* `en-GB`, `de-DE`, and `vi-VN` read twenty-four-hour. A `-u-hc-` extension
|
|
14
|
+
* on the provider locale (`en-US-u-hc-h23`) carries an app's per-user
|
|
15
|
+
* preference through the same path, so every Astryx time honors it.
|
|
16
|
+
*
|
|
17
|
+
* The parser reads back what the formatter writes: the locale's digits, its
|
|
18
|
+
* hour-minute separator, and its day-period words, on either side of the time.
|
|
19
|
+
* Whatever is left goes through the shared English-tolerant parser, so "2:30
|
|
20
|
+
* PM" and "14:30" keep working in every locale.
|
|
21
|
+
*
|
|
22
|
+
* SYNC: When modified, update these files to stay in sync:
|
|
23
|
+
* - /packages/core/src/utils/timeFormat.test.ts
|
|
24
|
+
* - /packages/core/src/TimeInput/TimeInput.tsx
|
|
25
|
+
* - /packages/core/src/DateTimeInput/DateTimeInput.tsx
|
|
26
|
+
*/
|
|
27
|
+
import type { Locale } from '../i18n/types.js';
|
|
28
|
+
import { type ISOTimeString } from './timeParser.js';
|
|
29
|
+
export type HourFormat = '12h' | '24h';
|
|
30
|
+
/**
|
|
31
|
+
* The hour format a field shows: the caller's explicit choice, else the
|
|
32
|
+
* locale's hour cycle (including a `-u-hc-` extension on the tag).
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveHourFormat(locale: Locale, hourFormat?: HourFormat): HourFormat;
|
|
35
|
+
/**
|
|
36
|
+
* Formats an ISO time as the locale writes it, in the given hour format.
|
|
37
|
+
* en-US: "14:30" → "2:30 PM"; de-DE 24h: "14:30"; ko-KR 12h: "오후 2:30".
|
|
38
|
+
* Returns '' for an empty or malformed time.
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatLocaleTime(time: ISOTimeString | undefined, locale: Locale, hourFormat: HourFormat, includeSeconds?: boolean): string;
|
|
41
|
+
/**
|
|
42
|
+
* Parses typed text into an ISO time, accepting the locale's digits,
|
|
43
|
+
* separator, and day-period words as well as everything `parseTimeInput`
|
|
44
|
+
* accepts. Returns null when no reading fits.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseLocaleTime(input: string, locale: Locale, includeSeconds?: boolean): ISOTimeString | null;
|
|
47
|
+
//# sourceMappingURL=timeFormat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeFormat.d.ts","sourceRoot":"","sources":["../../src/utils/timeFormat.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAA+B,KAAK,aAAa,EAAC,MAAM,cAAc,CAAC;AAG9E,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;AAsLvC;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,GACtB,UAAU,CAEZ;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,EACtB,cAAc,GAAE,OAAe,GAC9B,MAAM,CAeR;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,GAAE,OAAe,GAC9B,aAAa,GAAG,IAAI,CAmDtB"}
|