@astryxdesign/core 0.7.7 → 0.7.8-canary.0588a13
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 +4 -1
- package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
- package/dist/AlertDialog/AlertDialog.js +46 -6
- package/dist/AppShell/AppShell.d.ts.map +1 -1
- package/dist/AppShell/AppShell.js +11 -3
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +1 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts +1 -1
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +55 -18
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +5 -0
- package/dist/BottomSheet/bottomSheetStack.js +1 -1
- package/dist/BottomSheet/useSheetGestures.d.ts +3 -1
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +16 -1
- package/dist/Button/Button.d.ts.map +1 -1
- package/dist/Button/Button.js +17 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +18 -22
- package/dist/Calendar/getWeekdayHeaderNames.d.ts +16 -0
- package/dist/Calendar/getWeekdayHeaderNames.d.ts.map +1 -0
- package/dist/Calendar/getWeekdayHeaderNames.js +70 -0
- package/dist/Calendar/hooks/useCalendarDays.d.ts.map +1 -1
- package/dist/Calendar/hooks/useCalendarDays.js +2 -10
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.d.ts → weekdayHeaderNames.generated.d.ts} +14 -14
- package/dist/Calendar/weekdayHeaderNames.generated.d.ts.map +1 -0
- package/dist/Calendar/{standaloneShortWeekdayNames.generated.js → weekdayHeaderNames.generated.js} +12 -12
- package/dist/Carousel/Carousel.d.ts.map +1 -1
- package/dist/Carousel/Carousel.js +2 -0
- package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
- package/dist/Chat/ChatComposerInput.js +6 -1
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +2 -1
- package/dist/Chat/useChatDictation.d.ts.map +1 -1
- package/dist/Chat/useChatDictation.js +2 -0
- package/dist/Chat/useChatNewMessages.js +1 -1
- package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
- package/dist/Chat/useChatStreamScroll.js +2 -0
- package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
- package/dist/Chat/useSpeechRecognition.js +3 -0
- package/dist/Chat/useTriggerMenu.js +1 -1
- package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
- package/dist/CheckboxInput/CheckboxInput.js +17 -12
- package/dist/CheckboxList/CheckboxList.d.ts +20 -2
- package/dist/CheckboxList/CheckboxList.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxList.js +12 -4
- package/dist/CheckboxList/CheckboxListContext.d.ts +7 -0
- package/dist/CheckboxList/CheckboxListContext.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListContext.js +2 -1
- package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
- package/dist/CheckboxList/CheckboxListItem.js +14 -2
- package/dist/CheckboxList/requiredGroup.d.ts +22 -0
- package/dist/CheckboxList/requiredGroup.d.ts.map +1 -0
- package/dist/CheckboxList/requiredGroup.js +52 -0
- package/dist/CodeBlock/CodeBlock.d.ts +10 -1
- package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
- package/dist/CodeBlock/CodeBlock.js +28 -11
- package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPalette.js +2 -0
- package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
- package/dist/CommandPalette/CommandPaletteItem.js +2 -0
- package/dist/ComplexSelector/ComplexSelector.d.ts +4 -1
- package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
- package/dist/ComplexSelector/ComplexSelector.js +14 -4
- package/dist/ContextMenu/ContextMenu.js +2 -2
- package/dist/DateInput/MonthScroller.d.ts.map +1 -1
- package/dist/DateInput/MonthScroller.js +5 -2
- package/dist/DateInput/PickerWheel.d.ts +19 -0
- package/dist/DateInput/PickerWheel.d.ts.map +1 -0
- package/dist/DateInput/PickerWheel.js +646 -0
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +9 -30
- package/dist/DateInput/Wheel.d.ts +18 -37
- package/dist/DateInput/Wheel.d.ts.map +1 -1
- package/dist/DateInput/Wheel.js +133 -120
- package/dist/DateInput/datePickerTouch.d.ts +13 -0
- package/dist/DateInput/datePickerTouch.d.ts.map +1 -0
- package/dist/DateInput/datePickerTouch.js +14 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts +10 -0
- package/dist/DateInput/useOwnScrollGesture.d.ts.map +1 -1
- package/dist/DateInput/useOwnScrollGesture.js +16 -3
- package/dist/DateInput/usePointerDragScroll.d.ts.map +1 -1
- package/dist/DateInput/usePointerDragScroll.js +2 -0
- package/dist/DateInput/useScrollSettle.d.ts.map +1 -1
- package/dist/DateInput/useScrollSettle.js +3 -0
- package/dist/DateInput/useWheelListbox.d.ts +59 -0
- package/dist/DateInput/useWheelListbox.d.ts.map +1 -0
- package/dist/DateInput/useWheelListbox.js +88 -0
- package/dist/DateInput/wheelOptions.d.ts +94 -0
- package/dist/DateInput/wheelOptions.d.ts.map +1 -0
- package/dist/DateInput/wheelOptions.js +110 -0
- package/dist/DateInput/wheelPhysics.d.ts +127 -0
- package/dist/DateInput/wheelPhysics.d.ts.map +1 -0
- package/dist/DateInput/wheelPhysics.js +341 -0
- package/dist/DateInput/wheelStrip.d.ts +92 -0
- package/dist/DateInput/wheelStrip.d.ts.map +1 -0
- package/dist/DateInput/wheelStrip.js +258 -0
- package/dist/DateTimeInput/TouchDateTimeField.d.ts.map +1 -1
- package/dist/DateTimeInput/TouchDateTimeField.js +70 -127
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +9 -32
- package/dist/Drawer/useDrawerDialogPresence.d.ts.map +1 -1
- package/dist/Drawer/useDrawerDialogPresence.js +3 -0
- package/dist/DropdownMenu/useMenuOverflow.d.ts.map +1 -1
- package/dist/DropdownMenu/useMenuOverflow.js +5 -0
- package/dist/Field/Field.js +2 -2
- package/dist/FieldStatus/useFieldStatusAnnouncement.d.ts.map +1 -1
- package/dist/FieldStatus/useFieldStatusAnnouncement.js +1 -0
- package/dist/FormLayout/FormLayout.d.ts +5 -1
- package/dist/FormLayout/FormLayout.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.d.ts +6 -4
- package/dist/HoverCard/HoverCard.d.ts.map +1 -1
- package/dist/HoverCard/HoverCard.js +48 -3
- package/dist/HoverCard/useHoverCard.d.ts +5 -4
- package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
- package/dist/HoverCard/useHoverCard.js +26 -34
- package/dist/Icon/Icon.d.ts +5 -1
- package/dist/Icon/Icon.d.ts.map +1 -1
- package/dist/Icon/Icon.js +20 -3
- package/dist/InfoTip/InfoTip.d.ts +5 -5
- package/dist/InfoTip/InfoTip.d.ts.map +1 -1
- package/dist/InfoTip/InfoTip.js +58 -19
- package/dist/Item/useSwipeAction.d.ts.map +1 -1
- package/dist/Item/useSwipeAction.js +3 -0
- package/dist/Layer/modalOutlet.d.ts.map +1 -1
- package/dist/Layer/modalOutlet.js +2 -0
- package/dist/Layer/outsidePress.d.ts.map +1 -1
- package/dist/Layer/outsidePress.js +1 -0
- package/dist/Layer/useLayer.d.ts.map +1 -1
- package/dist/Layer/useLayer.js +4 -1
- package/dist/Layer/useLayerDismissal.d.ts.map +1 -1
- package/dist/Layer/useLayerDismissal.js +3 -0
- package/dist/Layer/useTouchTrigger.d.ts +13 -7
- package/dist/Layer/useTouchTrigger.d.ts.map +1 -1
- package/dist/Layer/useTouchTrigger.js +20 -6
- package/dist/Layout/index.d.ts +1 -1
- package/dist/Layout/index.d.ts.map +1 -1
- package/dist/Layout/index.js +1 -1
- package/dist/Layout/layoutReset.js +1 -1
- package/dist/Layout/overlayPaddingReset.stylex.d.ts +68 -0
- package/dist/Layout/overlayPaddingReset.stylex.d.ts.map +1 -0
- package/dist/Layout/overlayPaddingReset.stylex.js +72 -0
- package/dist/Layout/padding.stylex.d.ts +5 -129
- package/dist/Layout/padding.stylex.d.ts.map +1 -1
- package/dist/Layout/padding.stylex.js +9 -143
- package/dist/Layout/paddingStyles.stylex.d.ts +83 -0
- package/dist/Layout/paddingStyles.stylex.d.ts.map +1 -0
- package/dist/Layout/paddingStyles.stylex.js +99 -0
- package/dist/Lightbox/Lightbox.d.ts.map +1 -1
- package/dist/Lightbox/Lightbox.js +20 -1
- package/dist/MobileNav/MobileNav.d.ts +3 -2
- package/dist/MobileNav/MobileNav.d.ts.map +1 -1
- package/dist/MobileNav/MobileNav.js +10 -26
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +2 -1
- package/dist/NumberInput/NumberInput.d.ts.map +1 -1
- package/dist/NumberInput/NumberInput.js +2 -1
- package/dist/Outline/useOutlineFromDOM.d.ts.map +1 -1
- package/dist/Outline/useOutlineFromDOM.js +3 -0
- package/dist/Outline/useScrollSpy.d.ts.map +1 -1
- package/dist/Outline/useScrollSpy.js +3 -0
- package/dist/OverflowList/OverflowList.d.ts.map +1 -1
- package/dist/OverflowList/OverflowList.js +3 -0
- package/dist/Overlay/Overlay.d.ts.map +1 -1
- package/dist/Overlay/Overlay.js +7 -2
- package/dist/Popover/Popover.d.ts.map +1 -1
- package/dist/Popover/Popover.js +6 -0
- package/dist/Popover/usePopover.js +2 -2
- package/dist/PowerSearch/PowerSearch.d.ts +41 -4
- package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearch.js +441 -134
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts +125 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.d.ts.map +1 -0
- package/dist/PowerSearch/PowerSearchBottomSheet.js +2041 -0
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts +35 -2
- package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchEditPopover.js +43 -10
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchFilterEditor.js +4 -2
- package/dist/PowerSearch/PowerSearchToken.d.ts +1 -1
- package/dist/PowerSearch/PowerSearchToken.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchToken.js +3 -2
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts +38 -3
- package/dist/PowerSearch/PowerSearchValueEditor.d.ts.map +1 -1
- package/dist/PowerSearch/PowerSearchValueEditor.js +273 -86
- package/dist/PowerSearch/formatFilterValue.d.ts +14 -7
- package/dist/PowerSearch/formatFilterValue.d.ts.map +1 -1
- package/dist/PowerSearch/formatFilterValue.js +31 -23
- package/dist/PowerSearch/formatTokenValue.d.ts +28 -0
- package/dist/PowerSearch/formatTokenValue.d.ts.map +1 -0
- package/dist/PowerSearch/formatTokenValue.js +161 -0
- package/dist/PowerSearch/index.d.ts +1 -1
- package/dist/PowerSearch/index.d.ts.map +1 -1
- package/dist/PowerSearch/powerSearchDateZone.d.ts +25 -0
- package/dist/PowerSearch/powerSearchDateZone.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchDateZone.js +57 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts +65 -0
- package/dist/PowerSearch/powerSearchSheetUtils.d.ts.map +1 -0
- package/dist/PowerSearch/powerSearchSheetUtils.js +168 -0
- package/dist/PowerSearch/types.d.ts +8 -1
- package/dist/PowerSearch/types.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.d.ts.map +1 -1
- package/dist/ProgressBar/ProgressBarTouch.js +2 -0
- package/dist/RadioList/RadioList.d.ts.map +1 -1
- package/dist/RadioList/RadioList.js +3 -2
- package/dist/RadioList/RadioListItem.d.ts +1 -1
- package/dist/RadioList/RadioListItem.d.ts.map +1 -1
- package/dist/RadioList/RadioListItem.js +5 -3
- package/dist/Resizable/ResizeHandle.d.ts +2 -1
- package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
- package/dist/Resizable/ResizeHandle.js +116 -92
- package/dist/Resizable/createResizable.d.ts +199 -0
- package/dist/Resizable/createResizable.d.ts.map +1 -0
- package/dist/Resizable/createResizable.js +733 -0
- package/dist/Resizable/separatorAttributes.d.ts +45 -0
- package/dist/Resizable/separatorAttributes.d.ts.map +1 -0
- package/dist/Resizable/separatorAttributes.js +35 -0
- package/dist/Resizable/useResizable.d.ts +3 -3
- package/dist/Resizable/useResizable.d.ts.map +1 -1
- package/dist/Resizable/useResizable.js +252 -459
- package/dist/SegmentedControl/useSegmentedSelectionMotion.d.ts.map +1 -1
- package/dist/SegmentedControl/useSegmentedSelectionMotion.js +3 -3
- package/dist/SelectableCard/SelectableCard.d.ts +2 -0
- package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
- package/dist/SelectableCard/SelectableCard.js +36 -11
- package/dist/SelectableCard/selectableCardInput.d.ts +12 -0
- package/dist/SelectableCard/selectableCardInput.d.ts.map +1 -0
- package/dist/SelectableCard/selectableCardInput.js +20 -0
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +7 -9
- package/dist/SideNav/SideNav.d.ts.map +1 -1
- package/dist/SideNav/SideNav.js +36 -5
- package/dist/Slider/Slider.d.ts.map +1 -1
- package/dist/Slider/Slider.js +16 -11
- package/dist/Slider/sliderTouchController.js +2 -2
- package/dist/Spinner/Spinner.d.ts +1 -1
- package/dist/Spinner/Spinner.d.ts.map +1 -1
- package/dist/Spinner/Spinner.js +60 -58
- package/dist/Stepper/Stepper.d.ts.map +1 -1
- package/dist/Stepper/Stepper.js +10 -15
- package/dist/Switch/Switch.d.ts.map +1 -1
- package/dist/Switch/Switch.js +4 -10
- package/dist/Switch/useSwitchTouch.js +4 -4
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +29 -8
- package/dist/Table/plugins/columnResize/useTableColumnResize.d.ts.map +1 -1
- package/dist/Table/plugins/columnResize/useTableColumnResize.js +3 -1
- package/dist/Table/plugins/filtering/useTableFiltering.d.ts.map +1 -1
- package/dist/Table/plugins/filtering/useTableFiltering.js +2 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +12 -0
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
- package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +17 -3
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
- package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +2 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts +11 -0
- package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
- package/dist/Table/plugins/tree/useTableTreeData.js +27 -14
- package/dist/TextArea/TextArea.d.ts.map +1 -1
- package/dist/TextArea/TextArea.js +2 -1
- package/dist/TextInput/TextInput.d.ts +2 -2
- package/dist/TextInput/TextInput.d.ts.map +1 -1
- package/dist/TextInput/TextInput.js +12 -8
- package/dist/TimeInput/TimeInput.d.ts.map +1 -1
- package/dist/TimeInput/TimeInput.js +2 -0
- package/dist/TimeInput/TimeWheels.d.ts +32 -0
- package/dist/TimeInput/TimeWheels.d.ts.map +1 -0
- package/dist/TimeInput/TimeWheels.js +144 -0
- package/dist/TimeInput/TouchTimeField.d.ts.map +1 -1
- package/dist/TimeInput/TouchTimeField.js +63 -116
- package/dist/TimeInput/timeWheelRules.d.ts +124 -0
- package/dist/TimeInput/timeWheelRules.d.ts.map +1 -0
- package/dist/TimeInput/timeWheelRules.js +277 -0
- package/dist/Timer/Timer.d.ts.map +1 -1
- package/dist/Timer/Timer.js +2 -0
- package/dist/Timestamp/Timestamp.js +1 -1
- package/dist/Timestamp/formatInstant.d.ts.map +1 -1
- package/dist/Timestamp/formatInstant.js +1 -23
- package/dist/Toast/Toast.d.ts +11 -1
- package/dist/Toast/Toast.d.ts.map +1 -1
- package/dist/Toast/Toast.js +25 -15
- package/dist/Toast/ToastViewport.d.ts.map +1 -1
- package/dist/Toast/ToastViewport.js +97 -34
- package/dist/Toast/types.d.ts +9 -3
- package/dist/Toast/types.d.ts.map +1 -1
- package/dist/Toast/useToast.d.ts.map +1 -1
- package/dist/Toast/useToast.js +1 -0
- package/dist/Tokenizer/Tokenizer.d.ts +44 -46
- package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
- package/dist/Tokenizer/Tokenizer.js +20 -21
- package/dist/Tokenizer/TokenizerBottomSheet.d.ts +1 -1
- package/dist/Tokenizer/TokenizerBottomSheet.js +12 -18
- package/dist/Tokenizer/index.d.ts +1 -1
- package/dist/Tokenizer/index.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.d.ts +2 -23
- package/dist/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/Tooltip/Tooltip.js +5 -29
- package/dist/Tooltip/useTooltip.d.ts +23 -30
- package/dist/Tooltip/useTooltip.d.ts.map +1 -1
- package/dist/Tooltip/useTooltip.js +200 -108
- package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
- package/dist/Typeahead/BaseTypeahead.js +27 -18
- package/dist/Typeahead/TypeaheadItem.d.ts +2 -1
- package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
- package/dist/animator/createAnimator.d.ts +98 -0
- package/dist/animator/createAnimator.d.ts.map +1 -0
- package/dist/animator/createAnimator.js +259 -0
- package/dist/astryx.css +53 -8
- package/dist/gestures/GestureHost.d.ts +16 -1
- package/dist/gestures/GestureHost.d.ts.map +1 -1
- package/dist/gestures/GestureHost.js +4 -1
- package/dist/gestures/PressTracker.d.ts.map +1 -1
- package/dist/gestures/PressTracker.js +4 -3
- package/dist/hooks/ModalAnnounceProvider.d.ts.map +1 -1
- package/dist/hooks/ModalAnnounceProvider.js +1 -0
- package/dist/hooks/actionGroupTracker.d.ts +4 -1
- package/dist/hooks/actionGroupTracker.d.ts.map +1 -1
- package/dist/hooks/actionGroupTracker.js +18 -7
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/longPressDetector.d.ts +66 -0
- package/dist/hooks/longPressDetector.d.ts.map +1 -0
- package/dist/hooks/longPressDetector.js +200 -0
- package/dist/hooks/pressGroupContext.d.ts +6 -0
- package/dist/hooks/pressGroupContext.d.ts.map +1 -0
- package/dist/hooks/pressGroupContext.js +20 -0
- package/dist/hooks/rootScrollStyles.d.ts +48 -0
- package/dist/hooks/rootScrollStyles.d.ts.map +1 -0
- package/dist/hooks/rootScrollStyles.js +207 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts +13 -0
- package/dist/hooks/scrollLockTouchGuard.d.ts.map +1 -0
- package/dist/hooks/scrollLockTouchGuard.js +117 -0
- package/dist/hooks/scrollbarGutter.d.ts +4 -4
- package/dist/hooks/scrollbarGutter.d.ts.map +1 -1
- package/dist/hooks/scrollbarGutter.js +36 -23
- package/dist/hooks/useActionGroupTracking.d.ts +53 -0
- package/dist/hooks/useActionGroupTracking.d.ts.map +1 -0
- package/dist/hooks/useActionGroupTracking.js +174 -0
- package/dist/hooks/useAnimator.d.ts +41 -0
- package/dist/hooks/useAnimator.d.ts.map +1 -0
- package/dist/hooks/useAnimator.js +70 -0
- package/dist/hooks/useAnnounceRenderedText.d.ts.map +1 -1
- package/dist/hooks/useAnnounceRenderedText.js +1 -0
- package/dist/hooks/useAttachment.d.ts +1 -1
- package/dist/hooks/useAttachment.js +1 -1
- package/dist/hooks/useAutoMediaMode.d.ts.map +1 -1
- package/dist/hooks/useAutoMediaMode.js +1 -0
- package/dist/hooks/useBusyAnnouncement.d.ts.map +1 -1
- package/dist/hooks/useBusyAnnouncement.js +2 -0
- package/dist/hooks/useDevWarning.d.ts.map +1 -1
- package/dist/hooks/useDevWarning.js +2 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -0
- package/dist/hooks/useGridFocus.d.ts +8 -5
- package/dist/hooks/useGridFocus.d.ts.map +1 -1
- package/dist/hooks/useGridFocus.js +4 -3
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +3 -0
- package/dist/hooks/useImageMode.d.ts.map +1 -1
- package/dist/hooks/useImageMode.js +3 -0
- package/dist/hooks/useInputStatusIcon.d.ts +1 -1
- package/dist/hooks/useInputStatusIcon.d.ts.map +1 -1
- package/dist/hooks/useInputStatusIcon.js +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts +2 -2
- package/dist/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/dist/hooks/useKeyboardHint.js +1 -1
- package/dist/hooks/useLongPress.d.ts +8 -9
- package/dist/hooks/useLongPress.d.ts.map +1 -1
- package/dist/hooks/useLongPress.js +23 -106
- package/dist/hooks/useMenuHover.d.ts.map +1 -1
- package/dist/hooks/useMenuHover.js +2 -0
- package/dist/hooks/useMenuPress.d.ts.map +1 -1
- package/dist/hooks/useMenuPress.js +3 -0
- package/dist/hooks/useOverflow.d.ts.map +1 -1
- package/dist/hooks/useOverflow.js +2 -1
- package/dist/hooks/usePressFeedback.d.ts.map +1 -1
- package/dist/hooks/usePressFeedback.js +1 -0
- package/dist/hooks/useResolvedRequired.d.ts +3 -0
- package/dist/hooks/useResolvedRequired.d.ts.map +1 -1
- package/dist/hooks/useResolvedRequired.js +3 -0
- package/dist/hooks/useScrollLock.d.ts +8 -9
- package/dist/hooks/useScrollLock.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.js +50 -48
- package/dist/hooks/useScrollableArea.d.ts.map +1 -1
- package/dist/hooks/useScrollableArea.js +5 -0
- package/dist/hooks/useStreamingText.d.ts.map +1 -1
- package/dist/hooks/useStreamingText.js +3 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.js +45 -0
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.js +6 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts +8 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/PowerSearch/formatTokenValue.generated.js +14 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts +8 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/Resizable/createResizable.generated.js +13 -0
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.js +3 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.d.ts.map +1 -1
- package/dist/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.js +3 -1
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts +8 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.d.ts.map +1 -0
- package/dist/i18n/generated-english/TimeInput/TimeWheels.generated.js +17 -0
- package/dist/i18n/generated-locales/en.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/en.generated.js +37 -0
- package/dist/i18n/generated-locales/pseudo.generated.d.ts.map +1 -1
- package/dist/i18n/generated-locales/pseudo.generated.js +37 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/internal/indicatorPress.stylex.d.ts +20 -0
- package/dist/internal/indicatorPress.stylex.d.ts.map +1 -0
- package/dist/internal/indicatorPress.stylex.js +26 -0
- package/dist/internal/selectable-card.d.ts +21 -0
- package/dist/internal/selectable-card.d.ts.map +1 -0
- package/dist/internal/selectable-card.js +20 -0
- package/dist/internal/sheetDraft.d.ts +2 -2
- package/dist/internal/sheetDraft.js +2 -2
- package/dist/keyboard/index.d.ts +17 -0
- package/dist/keyboard/index.d.ts.map +1 -0
- package/dist/keyboard/index.js +19 -0
- package/dist/keyboard/keyboardHeight.d.ts +149 -0
- package/dist/keyboard/keyboardHeight.d.ts.map +1 -0
- package/dist/keyboard/keyboardHeight.js +432 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts +59 -0
- package/dist/keyboard/keyboardLayoutGuide.d.ts.map +1 -0
- package/dist/keyboard/keyboardLayoutGuide.js +207 -0
- package/dist/keyboard/keyboardModel.d.ts +93 -0
- package/dist/keyboard/keyboardModel.d.ts.map +1 -0
- package/dist/keyboard/keyboardModel.js +220 -0
- package/dist/keyboard/rideKeyboard.d.ts +42 -0
- package/dist/keyboard/rideKeyboard.d.ts.map +1 -0
- package/dist/keyboard/rideKeyboard.js +77 -0
- package/dist/keyboard/useMobileKeyboard.d.ts +61 -0
- package/dist/keyboard/useMobileKeyboard.d.ts.map +1 -0
- package/dist/keyboard/useMobileKeyboard.js +699 -0
- package/dist/motion/android/index.d.ts +16 -0
- package/dist/motion/android/index.d.ts.map +1 -0
- package/dist/motion/android/index.js +18 -0
- package/dist/motion/android/keyboard.d.ts +83 -0
- package/dist/motion/android/keyboard.d.ts.map +1 -0
- package/dist/motion/android/keyboard.js +96 -0
- package/dist/motion/animatedLayout.d.ts +8 -0
- package/dist/motion/animatedLayout.d.ts.map +1 -1
- package/dist/motion/animatedLayout.js +246 -53
- package/dist/motion/animator.d.ts +14 -14
- package/dist/motion/animator.d.ts.map +1 -1
- package/dist/motion/animator.js +45 -26
- package/dist/motion/frameBlock.d.ts +14 -0
- package/dist/motion/frameBlock.d.ts.map +1 -0
- package/dist/motion/frameBlock.js +16 -0
- package/dist/motion/progress.d.ts +88 -0
- package/dist/motion/progress.d.ts.map +1 -0
- package/dist/motion/progress.js +128 -0
- package/dist/motion/reducedMotion.d.ts.map +1 -1
- package/dist/motion/reducedMotion.js +3 -1
- package/dist/motion/uikit/alert.d.ts +41 -0
- package/dist/motion/uikit/alert.d.ts.map +1 -0
- package/dist/motion/uikit/alert.js +43 -0
- package/dist/motion/uikit/datePicker.d.ts +58 -0
- package/dist/motion/uikit/datePicker.d.ts.map +1 -0
- package/dist/motion/uikit/datePicker.js +60 -0
- package/dist/motion/uikit/index.d.ts +6 -4
- package/dist/motion/uikit/index.d.ts.map +1 -1
- package/dist/motion/uikit/index.js +6 -4
- package/dist/motion/uikit/picker.d.ts +96 -0
- package/dist/motion/uikit/picker.d.ts.map +1 -0
- package/dist/motion/uikit/picker.js +117 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts +22 -0
- package/dist/privateAttributes/pressGroupItem.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/pressGroupItem.stylex.js +36 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts +23 -0
- package/dist/privateAttributes/reducedMotion.stylex.d.ts.map +1 -0
- package/dist/privateAttributes/reducedMotion.stylex.js +40 -0
- package/dist/theme/Theme.d.ts.map +1 -1
- package/dist/theme/Theme.js +29 -4
- package/dist/theme/generateThemeRules.d.ts.map +1 -1
- package/dist/theme/generateThemeRules.js +14 -13
- package/dist/theme/motionKnobs.d.ts +4 -3
- package/dist/theme/motionKnobs.d.ts.map +1 -1
- package/dist/theme/motionKnobs.js +3 -2
- package/dist/theme/themeMotion.d.ts +6 -0
- package/dist/theme/themeMotion.d.ts.map +1 -1
- package/dist/theme/themeMotion.js +15 -2
- package/dist/theme/tokens.stylex.d.ts +3 -0
- package/dist/theme/tokens.stylex.d.ts.map +1 -1
- package/dist/theme/tokens.stylex.js +4 -1
- package/dist/utils/dateParser.d.ts.map +1 -1
- package/dist/utils/dateParser.js +12 -0
- package/dist/utils/disabledInteraction.d.ts +10 -2
- package/dist/utils/disabledInteraction.d.ts.map +1 -1
- package/dist/utils/disabledInteraction.js +16 -2
- package/dist/utils/focusReturn.d.ts +22 -25
- package/dist/utils/focusReturn.d.ts.map +1 -1
- package/dist/utils/focusReturn.js +36 -29
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/interactionModality.d.ts.map +1 -1
- package/dist/utils/interactionModality.js +4 -0
- package/dist/utils/interactionOverlay.stylex.d.ts +6 -4
- package/dist/utils/interactionOverlay.stylex.d.ts.map +1 -1
- package/dist/utils/interactionOverlay.stylex.js +6 -4
- package/dist/utils/isFocusDetached.d.ts +27 -0
- package/dist/utils/isFocusDetached.d.ts.map +1 -0
- package/dist/utils/isFocusDetached.js +32 -0
- package/dist/utils/layoutViewport.d.ts +25 -0
- package/dist/utils/layoutViewport.d.ts.map +1 -0
- package/dist/utils/layoutViewport.js +102 -0
- package/dist/utils/plainDate.d.ts +31 -0
- package/dist/utils/plainDate.d.ts.map +1 -1
- package/dist/utils/plainDate.js +68 -4
- package/dist/utils/pressFeedback.d.ts +6 -0
- package/dist/utils/pressFeedback.d.ts.map +1 -1
- package/dist/utils/pressFeedback.js +97 -18
- package/dist/utils/pressGesture.d.ts +4 -2
- package/dist/utils/pressGesture.d.ts.map +1 -1
- package/dist/utils/pressGesture.js +3 -1
- package/dist/utils/selectionLock.d.ts +10 -1
- package/dist/utils/selectionLock.d.ts.map +1 -1
- package/dist/utils/selectionLock.js +31 -5
- package/dist/utils/sharedMutationObserver.d.ts +2 -1
- package/dist/utils/sharedMutationObserver.d.ts.map +1 -1
- package/dist/utils/sharedMutationObserver.js +2 -1
- package/dist/utils/timeParser.d.ts +2 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +29 -3
- package/dist/utils/triggerFocus.d.ts +36 -0
- package/dist/utils/triggerFocus.d.ts.map +1 -0
- package/dist/utils/triggerFocus.js +65 -0
- package/locales/en.json +148 -0
- package/locales/pseudo.json +111 -0
- package/package.json +14 -9
- package/src/AlertDialog/AlertDialog.doc.mjs +2 -2
- package/src/AlertDialog/AlertDialog.tsx +46 -5
- package/src/AppShell/AppShell.tsx +13 -4
- package/src/BottomSheet/BottomSheet.doc.mjs +1 -1
- package/src/BottomSheet/BottomSheet.tsx +1 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +80 -16
- package/src/BottomSheet/BottomSheetSwitcher.doc.mjs +5 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +5 -0
- package/src/BottomSheet/bottomSheetStack.ts +1 -1
- package/src/BottomSheet/useSheetGestures.ts +16 -1
- package/src/Button/Button.tsx +26 -4
- package/src/Calendar/Calendar.tsx +40 -32
- package/src/Calendar/getWeekdayHeaderNames.ts +88 -0
- package/src/Calendar/hooks/useCalendarDays.ts +5 -10
- package/src/Calendar/{standaloneShortWeekdayNames.generated.ts → weekdayHeaderNames.generated.ts} +14 -14
- package/src/Carousel/Carousel.tsx +1 -0
- package/src/Chat/ChatComposerInput.tsx +4 -7
- package/src/Chat/ChatMessageList.tsx +2 -1
- package/src/Chat/useChatDictation.ts +1 -0
- package/src/Chat/useChatNewMessages.ts +1 -1
- package/src/Chat/useChatStreamScroll.ts +2 -0
- package/src/Chat/useSpeechRecognition.ts +2 -0
- package/src/Chat/useTriggerMenu.tsx +1 -1
- package/src/CheckboxInput/CheckboxInput.doc.mjs +18 -0
- package/src/CheckboxInput/CheckboxInput.tsx +38 -15
- package/src/CheckboxList/CheckboxList.doc.mjs +14 -0
- package/src/CheckboxList/CheckboxList.tsx +43 -2
- package/src/CheckboxList/CheckboxListContext.tsx +9 -1
- package/src/CheckboxList/CheckboxListItem.tsx +23 -2
- package/src/CheckboxList/requiredGroup.ts +77 -0
- package/src/CodeBlock/CodeBlock.doc.mjs +9 -1
- package/src/CodeBlock/CodeBlock.tsx +41 -4
- package/src/CommandPalette/CommandPalette.tsx +1 -0
- package/src/CommandPalette/CommandPaletteItem.tsx +1 -0
- package/src/ComplexSelector/ComplexSelector.tsx +20 -5
- package/src/ContextMenu/ContextMenu.tsx +2 -2
- package/src/DateInput/MonthScroller.tsx +8 -2
- package/src/DateInput/PickerWheel.tsx +796 -0
- package/src/DateInput/TouchDateField.tsx +6 -32
- package/src/DateInput/Wheel.tsx +188 -171
- package/src/DateInput/datePickerTouch.ts +15 -0
- package/src/DateInput/useOwnScrollGesture.ts +25 -3
- package/src/DateInput/usePointerDragScroll.ts +1 -0
- package/src/DateInput/useScrollSettle.ts +2 -0
- package/src/DateInput/useWheelListbox.ts +112 -0
- package/src/DateInput/wheelOptions.ts +184 -0
- package/src/DateInput/wheelPhysics.ts +406 -0
- package/src/DateInput/wheelStrip.ts +341 -0
- package/src/DateTimeInput/TouchDateTimeField.tsx +100 -189
- package/src/Dialog/Dialog.tsx +12 -32
- package/src/Drawer/useDrawerDialogPresence.ts +2 -0
- package/src/DropdownMenu/useMenuOverflow.ts +3 -0
- package/src/Field/Field.tsx +2 -2
- package/src/FieldStatus/useFieldStatusAnnouncement.ts +1 -0
- package/src/FormLayout/FormLayout.doc.mjs +181 -46
- package/src/FormLayout/FormLayout.tsx +5 -1
- package/src/HoverCard/HoverCard.doc.mjs +10 -8
- package/src/HoverCard/HoverCard.tsx +58 -6
- package/src/HoverCard/useHoverCard.doc.mjs +178 -36
- package/src/HoverCard/useHoverCard.tsx +55 -55
- package/src/Icon/Icon.doc.mjs +51 -10
- package/src/Icon/Icon.tsx +31 -8
- package/src/IconButton/IconButton.doc.mjs +141 -21
- package/src/InfoTip/InfoTip.tsx +72 -16
- package/src/Item/useSwipeAction.ts +2 -0
- package/src/Layer/modalOutlet.ts +2 -0
- package/src/Layer/outsidePress.ts +1 -0
- package/src/Layer/useLayer.tsx +3 -1
- package/src/Layer/useLayerDismissal.ts +2 -0
- package/src/Layer/useTouchTrigger.ts +19 -6
- package/src/Layout/index.ts +1 -1
- package/src/Layout/layoutReset.ts +1 -1
- package/src/Layout/overlayPaddingReset.stylex.ts +73 -0
- package/src/Layout/padding.stylex.ts +9 -133
- package/src/Layout/paddingStyles.stylex.ts +87 -0
- package/src/Lightbox/Lightbox.tsx +20 -1
- package/src/Lightbox/useLightbox.doc.mjs +167 -0
- package/src/MobileNav/MobileNav.tsx +10 -31
- package/src/MultiSelector/MultiSelector.tsx +2 -7
- package/src/NumberInput/NumberInput.tsx +2 -7
- package/src/Outline/useOutlineFromDOM.ts +2 -0
- package/src/Outline/useScrollSpy.ts +2 -0
- package/src/OverflowList/OverflowList.tsx +2 -0
- package/src/Overlay/Overlay.tsx +7 -2
- package/src/Popover/Popover.tsx +4 -0
- package/src/Popover/usePopover.tsx +2 -2
- package/src/PowerSearch/PowerSearch.doc.mjs +60 -8
- package/src/PowerSearch/PowerSearch.tsx +622 -157
- package/src/PowerSearch/PowerSearchBottomSheet.tsx +2700 -0
- package/src/PowerSearch/PowerSearchEditPopover.tsx +65 -9
- package/src/PowerSearch/PowerSearchFilterEditor.tsx +2 -0
- package/src/PowerSearch/PowerSearchToken.tsx +2 -0
- package/src/PowerSearch/PowerSearchValueEditor.tsx +340 -59
- package/src/PowerSearch/formatFilterValue.ts +49 -27
- package/src/PowerSearch/formatTokenValue.ts +220 -0
- package/src/PowerSearch/index.ts +5 -1
- package/src/PowerSearch/powerSearchDateZone.ts +95 -0
- package/src/PowerSearch/powerSearchSheetUtils.ts +224 -0
- package/src/PowerSearch/types.ts +8 -1
- package/src/ProgressBar/ProgressBarTouch.ts +2 -0
- package/src/RadioList/RadioList.tsx +3 -2
- package/src/RadioList/RadioListItem.tsx +5 -3
- package/src/Resizable/Resizable.doc.mjs +5 -4
- package/src/Resizable/ResizeHandle.tsx +187 -135
- package/src/Resizable/createResizable.ts +1046 -0
- package/src/Resizable/separatorAttributes.ts +73 -0
- package/src/Resizable/useResizable.ts +292 -623
- package/src/SegmentedControl/useSegmentedSelectionMotion.ts +6 -3
- package/src/SelectableCard/SelectableCard.tsx +39 -10
- package/src/SelectableCard/selectableCardInput.ts +30 -0
- package/src/Selector/Selector.tsx +7 -19
- package/src/SideNav/SideNav.tsx +41 -5
- package/src/Slider/Slider.tsx +20 -11
- package/src/Slider/sliderTouchController.ts +2 -2
- package/src/Spinner/Spinner.tsx +77 -63
- package/src/Stepper/Stepper.tsx +10 -27
- package/src/Switch/Switch.tsx +2 -6
- package/src/Switch/useSwitchTouch.ts +4 -4
- package/src/Table/BaseTable.tsx +46 -12
- package/src/Table/plugins/columnResize/useTableColumnResize.tsx +2 -1
- package/src/Table/plugins/filtering/useTableFiltering.tsx +1 -0
- package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +31 -7
- package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +2 -0
- package/src/Table/plugins/tree/useTableTreeData.tsx +43 -20
- package/src/Table/useTableRowExpansion.doc.mjs +9 -0
- package/src/Table/useTableTreeData.doc.mjs +15 -3
- package/src/TextArea/TextArea.tsx +2 -7
- package/src/TextInput/TextInput.tsx +13 -17
- package/src/TimeInput/TimeInput.tsx +2 -0
- package/src/TimeInput/TimeWheels.tsx +218 -0
- package/src/TimeInput/TouchTimeField.tsx +93 -155
- package/src/TimeInput/timeWheelRules.ts +352 -0
- package/src/Timer/Timer.tsx +1 -0
- package/src/Timestamp/Timestamp.tsx +1 -1
- package/src/Timestamp/formatInstant.ts +1 -33
- package/src/Toast/Toast.doc.mjs +4 -3
- package/src/Toast/Toast.tsx +52 -32
- package/src/Toast/ToastViewport.tsx +123 -35
- package/src/Toast/types.ts +9 -3
- package/src/Toast/useToast.tsx +1 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -10
- package/src/Tokenizer/Tokenizer.tsx +61 -62
- package/src/Tokenizer/TokenizerBottomSheet.tsx +17 -23
- package/src/Tokenizer/index.ts +1 -0
- package/src/Tooltip/Tooltip.tsx +6 -42
- package/src/Tooltip/useTooltip.doc.mjs +24 -0
- package/src/Tooltip/useTooltip.tsx +243 -134
- package/src/Typeahead/BaseTypeahead.tsx +27 -17
- package/src/Typeahead/TypeaheadItem.doc.mjs +6 -3
- package/src/Typeahead/TypeaheadItem.tsx +2 -1
- package/src/animator/createAnimator.doc.mjs +153 -0
- package/src/animator/createAnimator.ts +324 -0
- package/src/gestures/GestureHost.ts +6 -5
- package/src/gestures/PressTracker.ts +4 -3
- package/src/gestures/README.md +10 -4
- package/src/hooks/ModalAnnounceProvider.tsx +1 -0
- package/src/hooks/actionGroupTracker.ts +25 -9
- package/src/hooks/index.ts +2 -0
- package/src/hooks/longPressDetector.ts +273 -0
- package/src/hooks/pressGroupContext.ts +21 -0
- package/src/hooks/rootScrollStyles.ts +247 -0
- package/src/hooks/scrollLockTouchGuard.ts +149 -0
- package/src/hooks/scrollbarGutter.ts +41 -26
- package/src/hooks/useActionGroupTracking.ts +224 -0
- package/src/hooks/useAnimator.doc.mjs +109 -0
- package/src/hooks/useAnimator.ts +67 -0
- package/src/hooks/useAnnounceRenderedText.ts +1 -0
- package/src/hooks/useAttachment.ts +1 -1
- package/src/hooks/useAutoMediaMode.ts +1 -0
- package/src/hooks/useBusyAnnouncement.ts +2 -0
- package/src/hooks/useDevWarning.ts +2 -0
- package/src/hooks/useFocusTrap.ts +2 -0
- package/src/hooks/useGridFocus.doc.mjs +6 -6
- package/src/hooks/useGridFocus.ts +10 -7
- package/src/hooks/useHotkeys.ts +2 -0
- package/src/hooks/useImageMode.ts +2 -0
- package/src/hooks/useInputStatusIcon.tsx +3 -2
- package/src/hooks/useKeyboardHint.tsx +1 -1
- package/src/hooks/useLongPress.doc.mjs +2 -2
- package/src/hooks/useLongPress.ts +32 -122
- package/src/hooks/useMenuHover.ts +1 -0
- package/src/hooks/useMenuPress.ts +2 -0
- package/src/hooks/useOverflow.ts +2 -1
- package/src/hooks/usePressFeedback.ts +1 -0
- package/src/hooks/useResolvedRequired.ts +3 -0
- package/src/hooks/useScrollLock.doc.mjs +51 -12
- package/src/hooks/useScrollLock.ts +53 -60
- package/src/hooks/useScrollableArea.ts +4 -0
- package/src/hooks/useStreamingText.ts +2 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchBottomSheet.generated.ts +46 -0
- package/src/i18n/generated-english/PowerSearch/PowerSearchValueEditor.generated.ts +6 -0
- package/src/i18n/generated-english/PowerSearch/formatTokenValue.generated.ts +15 -0
- package/src/i18n/generated-english/Resizable/createResizable.generated.ts +14 -0
- package/src/i18n/generated-english/Table/plugins/rowExpansion/useTableRowExpansion.generated.ts +3 -1
- package/src/i18n/generated-english/Table/plugins/tree/useTableTreeData.generated.ts +3 -1
- package/src/i18n/generated-english/TimeInput/TimeWheels.generated.ts +18 -0
- package/src/i18n/generated-locales/en.generated.ts +47 -0
- package/src/i18n/generated-locales/pseudo.generated.ts +48 -0
- package/src/index.ts +13 -0
- package/src/internal/indicatorPress.stylex.ts +24 -0
- package/src/internal/selectable-card.ts +21 -0
- package/src/internal/sheetDraft.ts +2 -2
- package/src/keyboard/README.md +197 -0
- package/src/keyboard/index.ts +48 -0
- package/src/keyboard/keyboardHeight.ts +543 -0
- package/src/keyboard/keyboardLayoutGuide.ts +266 -0
- package/src/keyboard/keyboardModel.ts +301 -0
- package/src/keyboard/rideKeyboard.ts +100 -0
- package/src/keyboard/useMobileKeyboard.ts +866 -0
- package/src/motion/MEASUREMENTS.md +28 -0
- package/src/motion/README.md +12 -5
- package/src/motion/android/index.ts +18 -0
- package/src/motion/android/keyboard.ts +96 -0
- package/src/motion/animatedLayout.ts +323 -60
- package/src/motion/animator.ts +66 -37
- package/src/motion/frameBlock.ts +16 -0
- package/src/motion/progress.ts +155 -0
- package/src/motion/reducedMotion.ts +3 -1
- package/src/motion/uikit/alert.ts +43 -0
- package/src/motion/uikit/datePicker.ts +60 -0
- package/src/motion/uikit/index.ts +6 -4
- package/src/motion/uikit/picker.ts +116 -0
- package/src/privateAttributes/pressGroupItem.stylex.ts +44 -0
- package/src/privateAttributes/reducedMotion.stylex.ts +45 -0
- package/src/theme/Theme.tsx +37 -3
- package/src/theme/generateThemeRules.ts +14 -12
- package/src/theme/motionKnobs.ts +4 -3
- package/src/theme/themeMotion.ts +17 -2
- package/src/theme/tokens.stylex.ts +2 -0
- package/src/utils/dateParser.ts +16 -0
- package/src/utils/disabledInteraction.ts +23 -2
- package/src/utils/focusReturn.ts +38 -31
- package/src/utils/index.ts +1 -1
- package/src/utils/interactionModality.ts +4 -0
- package/src/utils/interactionOverlay.stylex.ts +6 -4
- package/src/utils/isFocusDetached.ts +34 -0
- package/src/utils/layoutViewport.ts +104 -0
- package/src/utils/plainDate.ts +80 -4
- package/src/utils/pressFeedback.ts +126 -30
- package/src/utils/pressGesture.ts +4 -2
- package/src/utils/selectionLock.ts +40 -6
- package/src/utils/sharedMutationObserver.ts +2 -1
- package/src/utils/timeParser.ts +40 -3
- package/src/utils/triggerFocus.ts +80 -0
- package/dist/BottomSheet/useMobileKeyboard.d.ts +0 -21
- package/dist/BottomSheet/useMobileKeyboard.d.ts.map +0 -1
- package/dist/BottomSheet/useMobileKeyboard.js +0 -407
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts +0 -14
- package/dist/Calendar/getStandaloneShortWeekdayNames.d.ts.map +0 -1
- package/dist/Calendar/getStandaloneShortWeekdayNames.js +0 -26
- package/dist/Calendar/standaloneShortWeekdayNames.generated.d.ts.map +0 -1
- package/dist/Layer/usePressPin.d.ts +0 -93
- package/dist/Layer/usePressPin.d.ts.map +0 -1
- package/dist/Layer/usePressPin.js +0 -363
- package/dist/internal/touch-sheet.d.ts +0 -21
- package/dist/internal/touch-sheet.d.ts.map +0 -1
- package/dist/internal/touch-sheet.js +0 -19
- package/src/BottomSheet/useMobileKeyboard.ts +0 -538
- package/src/Calendar/getStandaloneShortWeekdayNames.ts +0 -38
- package/src/Layer/usePressPin.ts +0 -510
- package/src/internal/touch-sheet.ts +0 -21
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
/**
|
|
3
|
+
* @file privateAttributes/pressGroupItem.stylex.ts
|
|
4
|
+
* @input Nothing: the private press-group-item attribute
|
|
5
|
+
* @output pressGroupItemProps, which marks an action a group's tracker
|
|
6
|
+
* follows with the pointers it follows, and isTrackedByGroup, which reads
|
|
7
|
+
* the mark
|
|
8
|
+
* @position Owner module of the private press-group-item attribute: the only
|
|
9
|
+
* file that writes its name. AlertDialog marks its actions, and the press
|
|
10
|
+
* controller (utils/pressFeedback.ts) leaves a press of those pointers to
|
|
11
|
+
* the group's tracker. No package entry exports it.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const PRESS_GROUP_ITEM = 'data-astryx-press-group-item';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Spread on each action that a group's tracker follows. It names the pointer
|
|
18
|
+
* types the tracker follows, such as `['touch', 'pen']`.
|
|
19
|
+
*/
|
|
20
|
+
export function pressGroupItemProps(
|
|
21
|
+
pointerTypes: ReadonlyArray<string>,
|
|
22
|
+
): Readonly<Record<string, string>> {
|
|
23
|
+
return {[PRESS_GROUP_ITEM]: pointerTypes.join(' ')};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Whether a group's tracker paints the press on `element` or an ancestor: a
|
|
28
|
+
* press of `pointerType`, or any press when it is null.
|
|
29
|
+
*/
|
|
30
|
+
export function isTrackedByGroup(
|
|
31
|
+
element: Element,
|
|
32
|
+
pointerType: string | null = null,
|
|
33
|
+
): boolean {
|
|
34
|
+
const marked = element.closest(`[${PRESS_GROUP_ITEM}]`);
|
|
35
|
+
if (marked == null) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return (
|
|
39
|
+
pointerType == null ||
|
|
40
|
+
(marked.getAttribute(PRESS_GROUP_ITEM) ?? '')
|
|
41
|
+
.split(' ')
|
|
42
|
+
.includes(pointerType)
|
|
43
|
+
);
|
|
44
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
/**
|
|
3
|
+
* @file privateAttributes/reducedMotion.stylex.ts
|
|
4
|
+
* @input Whether a theme reduces motion for everyone
|
|
5
|
+
* @output reducedMotionMarkProps and setRootReducedMotionMark, which write the
|
|
6
|
+
* mark, and themeReducesMotion, which reads it
|
|
7
|
+
* @position Owner module of the private reduced-motion attribute: the only
|
|
8
|
+
* file that writes its name. Theme marks its root, and the root theme marks
|
|
9
|
+
* `<html>`; the animator, reducedMotionFade and the layout glide read it as
|
|
10
|
+
* the person's Reduce Motion setting. No package entry exports it.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const REDUCED_MOTION = 'data-astryx-reduced-motion';
|
|
14
|
+
|
|
15
|
+
/** Spread on a theme's root when the theme reduces motion for everyone. */
|
|
16
|
+
export function reducedMotionMarkProps(
|
|
17
|
+
isMarked: boolean,
|
|
18
|
+
): Readonly<Record<string, string>> {
|
|
19
|
+
return isMarked ? {[REDUCED_MOTION]: ''} : {};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Marks or unmarks `<html>` for the root theme, so a layer portaled outside
|
|
24
|
+
* the theme's root reads the mark too.
|
|
25
|
+
*/
|
|
26
|
+
export function setRootReducedMotionMark(
|
|
27
|
+
root: HTMLElement,
|
|
28
|
+
isMarked: boolean,
|
|
29
|
+
): void {
|
|
30
|
+
if (isMarked) {
|
|
31
|
+
root.setAttribute(REDUCED_MOTION, '');
|
|
32
|
+
} else {
|
|
33
|
+
root.removeAttribute(REDUCED_MOTION);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Whether the theme `element` is in reduces motion for everyone: its root,
|
|
39
|
+
* or `<html>` for the root theme, carries the mark.
|
|
40
|
+
*/
|
|
41
|
+
export function themeReducesMotion(
|
|
42
|
+
element: Element | null | undefined,
|
|
43
|
+
): boolean {
|
|
44
|
+
return element?.closest?.(`[${REDUCED_MOTION}]`) != null;
|
|
45
|
+
}
|
package/src/theme/Theme.tsx
CHANGED
|
@@ -45,6 +45,11 @@ import {registerTheme} from './themeRegistry';
|
|
|
45
45
|
import {dataAttr} from '../naming';
|
|
46
46
|
import {ThemeContext} from './useTheme';
|
|
47
47
|
import {warnOnce} from '../utils/devWarning';
|
|
48
|
+
import {REDUCED_MOTION_PROPERTY, resolveMotionKnobs} from './themeMotion';
|
|
49
|
+
import {
|
|
50
|
+
reducedMotionMarkProps,
|
|
51
|
+
setRootReducedMotionMark,
|
|
52
|
+
} from '../privateAttributes/reducedMotion.stylex';
|
|
48
53
|
|
|
49
54
|
/**
|
|
50
55
|
* Theme provider props
|
|
@@ -76,6 +81,11 @@ const wrapperStyles = stylex.create({
|
|
|
76
81
|
system: {
|
|
77
82
|
colorScheme: 'light dark',
|
|
78
83
|
},
|
|
84
|
+
// The mark's custom property (REDUCED_MOTION_PROPERTY), which every element
|
|
85
|
+
// under the mark inherits.
|
|
86
|
+
reducedMotion: {
|
|
87
|
+
'--_astryx-reduced-motion': '1',
|
|
88
|
+
},
|
|
79
89
|
});
|
|
80
90
|
|
|
81
91
|
// =============================================================================
|
|
@@ -110,6 +120,7 @@ const THEME_LAYER_ORDER = '@layer reset, astryx-base, astryx-theme;';
|
|
|
110
120
|
function useThemeStyleInjection(theme: DefinedTheme): void {
|
|
111
121
|
const id = useId();
|
|
112
122
|
|
|
123
|
+
// Syncs the document's stylesheets with the runtime theme CSS.
|
|
113
124
|
useInsertionEffect(() => {
|
|
114
125
|
// Built themes have their CSS in a separate file — skip injection
|
|
115
126
|
if (theme.__built) {
|
|
@@ -197,12 +208,18 @@ function useThemeStyleInjection(theme: DefinedTheme): void {
|
|
|
197
208
|
*
|
|
198
209
|
* - 'light' | 'dark' → sets data-theme="light" | "dark"
|
|
199
210
|
* - 'system' → removes data-theme (reset.css defaults to color-scheme: light dark)
|
|
211
|
+
*
|
|
212
|
+
* A theme that reduces motion for everyone also marks `<html>` with
|
|
213
|
+
* `data-astryx-reduced-motion` and its custom property, so layers portaled
|
|
214
|
+
* outside the wrapper reduce their motion too.
|
|
200
215
|
*/
|
|
201
216
|
function useRootThemeSync(
|
|
202
217
|
isNested: boolean,
|
|
203
218
|
mode: ThemeMode,
|
|
204
219
|
themeName: string,
|
|
220
|
+
reducesMotion: boolean,
|
|
205
221
|
): void {
|
|
222
|
+
// Syncs the theme attributes on the root `<html>` element.
|
|
206
223
|
useIsomorphicLayoutEffect(() => {
|
|
207
224
|
if (isNested) {
|
|
208
225
|
return;
|
|
@@ -220,12 +237,20 @@ function useRootThemeSync(
|
|
|
220
237
|
|
|
221
238
|
// Sync theme name so @scope rules reach portals/fallback viewports.
|
|
222
239
|
document.documentElement.setAttribute(dataAttr('theme'), themeName);
|
|
240
|
+
setRootReducedMotionMark(document.documentElement, reducesMotion);
|
|
241
|
+
if (reducesMotion) {
|
|
242
|
+
document.documentElement.style.setProperty(REDUCED_MOTION_PROPERTY, '1');
|
|
243
|
+
} else {
|
|
244
|
+
document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
|
|
245
|
+
}
|
|
223
246
|
|
|
224
247
|
return () => {
|
|
225
248
|
document.documentElement.removeAttribute('data-theme');
|
|
226
249
|
document.documentElement.removeAttribute(dataAttr('theme'));
|
|
250
|
+
setRootReducedMotionMark(document.documentElement, false);
|
|
251
|
+
document.documentElement.style.removeProperty(REDUCED_MOTION_PROPERTY);
|
|
227
252
|
};
|
|
228
|
-
}, [isNested, mode, themeName]);
|
|
253
|
+
}, [isNested, mode, themeName, reducesMotion]);
|
|
229
254
|
}
|
|
230
255
|
|
|
231
256
|
// =============================================================================
|
|
@@ -255,7 +280,11 @@ export function Theme({
|
|
|
255
280
|
registerTheme(theme);
|
|
256
281
|
|
|
257
282
|
useThemeStyleInjection(theme);
|
|
258
|
-
|
|
283
|
+
// resolveMotionKnobs resolves no public theme to 'always', so no theme
|
|
284
|
+
// marks its root.
|
|
285
|
+
const reducesMotion =
|
|
286
|
+
resolveMotionKnobs(theme.__axes?.motion).reducedMotion === 'always';
|
|
287
|
+
useRootThemeSync(isNested, mode, theme.name, reducesMotion);
|
|
259
288
|
|
|
260
289
|
// Get color-scheme style
|
|
261
290
|
const colorSchemeStyle =
|
|
@@ -272,8 +301,13 @@ export function Theme({
|
|
|
272
301
|
<ThemeContext value={ctxValue}>
|
|
273
302
|
<ThemeNestingContext value={true}>
|
|
274
303
|
<div
|
|
275
|
-
{...stylex.props(
|
|
304
|
+
{...stylex.props(
|
|
305
|
+
wrapperStyles.base,
|
|
306
|
+
colorSchemeStyle,
|
|
307
|
+
reducesMotion && wrapperStyles.reducedMotion,
|
|
308
|
+
)}
|
|
276
309
|
data-astryx-theme={theme.name}
|
|
310
|
+
{...reducedMotionMarkProps(reducesMotion)}
|
|
277
311
|
data-theme={mode === 'system' ? undefined : mode}>
|
|
278
312
|
{children}
|
|
279
313
|
</div>
|
|
@@ -463,17 +463,18 @@ function joinDeclarations(
|
|
|
463
463
|
}
|
|
464
464
|
|
|
465
465
|
/**
|
|
466
|
-
* Public
|
|
467
|
-
*
|
|
468
|
-
* source repeats its omitted
|
|
469
|
-
* bind the alias locally without changing authored-token
|
|
466
|
+
* Public tokens whose canonical default references another public token: the
|
|
467
|
+
* status roles and `--duration-exit`. StyleX owns the document defaults. A
|
|
468
|
+
* theme that authors a source repeats its omitted token at the theme root so
|
|
469
|
+
* nested Theme regions bind the alias locally without changing authored-token
|
|
470
|
+
* metadata.
|
|
470
471
|
*
|
|
471
472
|
* Conditional scopes repeat an omitted alias only when the source changes on
|
|
472
473
|
* that scope. Explicit adaptation role writes are replayed after generated
|
|
473
474
|
* aliases (and on media descendants) so authored role precedence survives
|
|
474
475
|
* overlapping conditions without disabling the alias in non-matching states.
|
|
475
476
|
*/
|
|
476
|
-
const
|
|
477
|
+
const SCOPED_REFERENCE_DEFAULTS: ReadonlyArray<
|
|
477
478
|
readonly [role: string, source: string]
|
|
478
479
|
> = [
|
|
479
480
|
['--color-text-info', '--color-text-blue'],
|
|
@@ -493,16 +494,17 @@ const SCOPED_STATUS_ROLE_DEFAULTS: ReadonlyArray<
|
|
|
493
494
|
['--color-border-success', '--color-text-success'],
|
|
494
495
|
['--color-border-warning', '--color-text-warning'],
|
|
495
496
|
['--color-border-error', '--color-text-error'],
|
|
497
|
+
['--duration-exit', '--duration-fast'],
|
|
496
498
|
];
|
|
497
499
|
|
|
498
|
-
const
|
|
500
|
+
const SCOPED_REFERENCE_SOURCES = new Map(SCOPED_REFERENCE_DEFAULTS);
|
|
499
501
|
|
|
500
502
|
/** Colours INV17's derivation measures; a scope that sets one re-derives. */
|
|
501
503
|
const STATUS_MEASURED =
|
|
502
504
|
/^--color-(?:info|success|warning|error|on-|background-surface|background-card)/;
|
|
503
505
|
|
|
504
506
|
const STATUS_ROLE_ORDER = new Map(
|
|
505
|
-
|
|
507
|
+
SCOPED_REFERENCE_DEFAULTS.map(([role], index) => [role, index]),
|
|
506
508
|
);
|
|
507
509
|
|
|
508
510
|
type TokenValues = Record<string, unknown>;
|
|
@@ -740,7 +742,7 @@ export function generatedScopedStatusRoleDefaults(
|
|
|
740
742
|
),
|
|
741
743
|
}));
|
|
742
744
|
|
|
743
|
-
for (const [role, source] of
|
|
745
|
+
for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
|
|
744
746
|
const alias = `var(${source})`;
|
|
745
747
|
if (
|
|
746
748
|
authoredRoot[role] !== undefined ||
|
|
@@ -775,7 +777,7 @@ function authoredStatusRoleEntries(
|
|
|
775
777
|
tokens: Record<string, string>,
|
|
776
778
|
): [string, string][] {
|
|
777
779
|
const canonicalTokens = createTokenCascade(tokens).values;
|
|
778
|
-
return
|
|
780
|
+
return SCOPED_REFERENCE_DEFAULTS.flatMap(([role]) => {
|
|
779
781
|
const value = canonicalTokens[role];
|
|
780
782
|
return value === undefined ? [] : [[role, stringifyTokenValue(value)]];
|
|
781
783
|
});
|
|
@@ -789,7 +791,7 @@ function tokenValueIsAliasOf(value: unknown, source: string): boolean {
|
|
|
789
791
|
}
|
|
790
792
|
|
|
791
793
|
function mediaRoleRestorationValue(role: string, value: string): string {
|
|
792
|
-
const source =
|
|
794
|
+
const source = SCOPED_REFERENCE_SOURCES.get(role);
|
|
793
795
|
return source !== undefined && tokenValueIsAliasOf(value, source)
|
|
794
796
|
? value
|
|
795
797
|
: 'inherit';
|
|
@@ -843,7 +845,7 @@ function generatedAdaptationStatusRoleDefaults(
|
|
|
843
845
|
// alias, and roles that follow them (icon and border) alias them here.
|
|
844
846
|
const ruleRoles = new Map(aliases[index]);
|
|
845
847
|
const ruleSources = {...authoredRule, ...Object.fromEntries(ruleRoles)};
|
|
846
|
-
for (const [role, source] of
|
|
848
|
+
for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
|
|
847
849
|
const alias = `var(${source})`;
|
|
848
850
|
const rootRole = rootValues[role];
|
|
849
851
|
if (
|
|
@@ -921,7 +923,7 @@ function generatedMediaStatusRoleDefaults(
|
|
|
921
923
|
return stringifyTokenValue(candidate.values[role]);
|
|
922
924
|
};
|
|
923
925
|
|
|
924
|
-
for (const [role, source] of
|
|
926
|
+
for (const [role, source] of SCOPED_REFERENCE_DEFAULTS) {
|
|
925
927
|
const alias = `var(${source})`;
|
|
926
928
|
const rootRole = rootValues[role];
|
|
927
929
|
if (
|
package/src/theme/motionKnobs.ts
CHANGED
|
@@ -20,10 +20,11 @@
|
|
|
20
20
|
export type MotionCharacter = 'crisp' | 'standard' | 'expressive';
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own
|
|
24
|
-
*
|
|
23
|
+
* Whose Reduce Motion setting a theme follows: `'system'`, each person's own,
|
|
24
|
+
* or `'always'`, reduced for everyone. Internal: `resolveKnobs` resolves
|
|
25
|
+
* every theme to `'system'` until `'always'` ships (`spec:AST-108` FR6).
|
|
25
26
|
*/
|
|
26
|
-
export type ThemeReducedMotion = 'system';
|
|
27
|
+
export type ThemeReducedMotion = 'system' | 'always';
|
|
27
28
|
|
|
28
29
|
/** The motion knobs a theme sets (`spec:AST-108` FR1). */
|
|
29
30
|
export interface ThemeMotionKnobs {
|
package/src/theme/themeMotion.ts
CHANGED
|
@@ -87,10 +87,25 @@ function msOf(value: string): number {
|
|
|
87
87
|
*/
|
|
88
88
|
export const MOTION_TEMPO_PROPERTY = '--_astryx-motion-tempo';
|
|
89
89
|
|
|
90
|
+
/**
|
|
91
|
+
* The custom property a theme whose `reducedMotion` resolves to `'always'`
|
|
92
|
+
* sets to `1` on its root, and the root theme on `<html>`: styles that cannot
|
|
93
|
+
* key a selector on the mark read it in a value.
|
|
94
|
+
*/
|
|
95
|
+
export const REDUCED_MOTION_PROPERTY = '--_astryx-reduced-motion';
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* A reference such as `--duration-exit` follows the token it names, so tempo
|
|
99
|
+
* writes no value for it.
|
|
100
|
+
*/
|
|
101
|
+
const TIMED_DURATION_DEFAULTS = Object.entries(durationDefaults).filter(
|
|
102
|
+
([, value]) => !value.startsWith('var('),
|
|
103
|
+
);
|
|
104
|
+
|
|
90
105
|
/** The duration tokens at `tempo`: today's values times it, to the ms. */
|
|
91
106
|
export function durationTokensAt(tempo: number): Record<string, string> {
|
|
92
107
|
const tokens: Record<string, string> = {};
|
|
93
|
-
for (const [name, value] of
|
|
108
|
+
for (const [name, value] of TIMED_DURATION_DEFAULTS) {
|
|
94
109
|
tokens[name] = `${Math.round(msOf(value) * tempo)}ms`;
|
|
95
110
|
}
|
|
96
111
|
return tokens;
|
|
@@ -123,7 +138,7 @@ export function expandThemeMotion(
|
|
|
123
138
|
const tokens: Record<string, string> = {};
|
|
124
139
|
if (knobs.tempoIsSet) {
|
|
125
140
|
Object.assign(tokens, durationTokensAt(knobs.tempo));
|
|
126
|
-
for (const [name, value] of
|
|
141
|
+
for (const [name, value] of TIMED_DURATION_DEFAULTS) {
|
|
127
142
|
tokens[preTempoName(name)] = value;
|
|
128
143
|
}
|
|
129
144
|
// The press release fade, a fixed clock in the stylesheet, scales by the
|
|
@@ -307,6 +307,8 @@ export const durationDefaults = {
|
|
|
307
307
|
'--duration-slow-min': '730ms',
|
|
308
308
|
'--duration-slow': '975ms',
|
|
309
309
|
'--duration-slow-max': '1300ms',
|
|
310
|
+
/** The standard dismissal duration. */
|
|
311
|
+
'--duration-exit': 'var(--duration-fast)',
|
|
310
312
|
} as const;
|
|
311
313
|
|
|
312
314
|
export const durationVars = stylex.defineVars(durationDefaults);
|
package/src/utils/dateParser.ts
CHANGED
|
@@ -32,6 +32,11 @@ export function isLocaleDayFirst(locale: Locale = 'en'): boolean {
|
|
|
32
32
|
return dayIndex < monthIndex;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// Built at run time: a Unicode property escape in a literal fails a source
|
|
36
|
+
// build whose Babel lacks the Unicode data.
|
|
37
|
+
const LETTER_FREE = new RegExp('^[^\\p{L}]+$', 'u');
|
|
38
|
+
const YEAR_FIRST = new RegExp('^\\d{4}[^\\p{L}\\d]', 'u');
|
|
39
|
+
|
|
35
40
|
/**
|
|
36
41
|
* Parses user input into a PlainDate.
|
|
37
42
|
*
|
|
@@ -138,6 +143,17 @@ export function parseDateInput(
|
|
|
138
143
|
if (/^\d+$/.test(trimmed)) {
|
|
139
144
|
return null;
|
|
140
145
|
}
|
|
146
|
+
// In a day-first locale, letter-free text that no form above matched is not
|
|
147
|
+
// a date. Native `Date` reads `a/b/c` month first. It also takes a year of
|
|
148
|
+
// one to three digits. So "12/01/2" gives a wrong date. A four-digit year
|
|
149
|
+
// written first is not ambiguous.
|
|
150
|
+
if (
|
|
151
|
+
isLocaleDayFirst(locale) &&
|
|
152
|
+
LETTER_FREE.test(trimmed) &&
|
|
153
|
+
!YEAR_FIRST.test(trimmed)
|
|
154
|
+
) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
141
157
|
|
|
142
158
|
const parsed = new Date(trimmed);
|
|
143
159
|
if (!isNaN(parsed.getTime())) {
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @file disabledInteraction.ts
|
|
5
|
-
* @input An optional caller keydown handler
|
|
6
|
-
* @output Event props that keep a focusable, aria-disabled control inert
|
|
5
|
+
* @input An optional caller keydown handler, or a control's caller props
|
|
6
|
+
* @output Event props that keep a focusable, aria-disabled control inert, and
|
|
7
|
+
* the caller props such a control hands its element
|
|
7
8
|
* @position Shared by controls that replace native `disabled` with
|
|
8
9
|
* `aria-disabled` under spec:AST-085 (FR1, FR2)
|
|
9
10
|
*/
|
|
@@ -38,3 +39,23 @@ export function disabledInteractionProps<T extends HTMLElement>(
|
|
|
38
39
|
},
|
|
39
40
|
};
|
|
40
41
|
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The caller props a disabled, focusable control hands its element: every
|
|
45
|
+
* `on*` handler is dropped except focus and blur, so the control runs no
|
|
46
|
+
* caller callback, as a natively disabled one runs none. Enabled, `props` pass
|
|
47
|
+
* through unchanged.
|
|
48
|
+
*/
|
|
49
|
+
export function withholdCallerHandlers<P extends object>(
|
|
50
|
+
props: P,
|
|
51
|
+
isDisabled: boolean,
|
|
52
|
+
): P {
|
|
53
|
+
if (!isDisabled) {
|
|
54
|
+
return props;
|
|
55
|
+
}
|
|
56
|
+
return Object.fromEntries(
|
|
57
|
+
Object.entries(props).filter(
|
|
58
|
+
([key]) => !/^on[A-Z]/.test(key) || /^on(Focus|Blur)/.test(key),
|
|
59
|
+
),
|
|
60
|
+
) as P;
|
|
61
|
+
}
|
package/src/utils/focusReturn.ts
CHANGED
|
@@ -4,43 +4,20 @@
|
|
|
4
4
|
* @file focusReturn.ts
|
|
5
5
|
* @input The document's current active element and the shared interaction
|
|
6
6
|
* modality.
|
|
7
|
-
* @output Whether focus
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* overlays (Dialog, DropdownMenu) that move focus programmatically, and by
|
|
15
|
-
* disclosures that hide focused content. Only
|
|
16
|
-
* `isFocusDetached` is exported from the utils entry; the rest is internal.
|
|
7
|
+
* @output Whether focus would be lost if a surface hid now; a focus move whose
|
|
8
|
+
* ring follows the last input; and the one path that moves focus out of
|
|
9
|
+
* content a change removed or hid (`noteFocusWithin`, `moveFocusLeftBehind`).
|
|
10
|
+
* @position Utility; used by overlays (BottomSheet, Dialog, DropdownMenu) that
|
|
11
|
+
* move focus programmatically, and by disclosures that hide focused
|
|
12
|
+
* content. isFocusDetached lives in isFocusDetached.ts, so the utils entry,
|
|
13
|
+
* which exports only it, does not reach this module.
|
|
17
14
|
*/
|
|
18
15
|
|
|
19
16
|
import {
|
|
20
17
|
getInteractionModality,
|
|
21
18
|
type InteractionModality,
|
|
22
19
|
} from './interactionModality';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* True when focus rests on nothing in particular — no active element, or the
|
|
26
|
-
* document body / root element.
|
|
27
|
-
*
|
|
28
|
-
* An overlay (popover, calendar, dropdown) that restores focus to its trigger
|
|
29
|
-
* on close should do so ONLY when this is true. A native `popover="auto"`
|
|
30
|
-
* light-dismiss fires its close synchronously with the pointer event that
|
|
31
|
-
* moved focus, so by the time the close handler runs, focus has already
|
|
32
|
-
* landed on whatever the user clicked — another field, a button, anywhere.
|
|
33
|
-
* Restoring focus unconditionally would yank it back and fight that click.
|
|
34
|
-
* The one case the browser leaves unresolved is Escape or a click on
|
|
35
|
-
* non-focusable empty space, which drops focus to the body; that is exactly
|
|
36
|
-
* when the trigger should reclaim it.
|
|
37
|
-
*/
|
|
38
|
-
export function isFocusDetached(doc: Document = document): boolean {
|
|
39
|
-
const active = doc.activeElement;
|
|
40
|
-
return (
|
|
41
|
-
active == null || active === doc.body || active === doc.documentElement
|
|
42
|
-
);
|
|
43
|
-
}
|
|
20
|
+
import {isFocusDetached} from './isFocusDetached';
|
|
44
21
|
|
|
45
22
|
/**
|
|
46
23
|
* True when focus would be lost if `surface` hid now: nothing is focused (see
|
|
@@ -151,3 +128,33 @@ export function focusForLastInput(
|
|
|
151
128
|
}
|
|
152
129
|
element.focus({...options, focusVisible: false});
|
|
153
130
|
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Prepares the focus return for an open surface that may be removed while
|
|
134
|
+
* open (rendered only while open, or removed with its view). Removing a
|
|
135
|
+
* `<dialog>` runs no close and no browser focus return. Call this while the
|
|
136
|
+
* surface is mounted: it reads the frame that hosts the surface now, because a
|
|
137
|
+
* removed frame's document has no window. Call the returned function from the
|
|
138
|
+
* effect cleanup with the opener.
|
|
139
|
+
*
|
|
140
|
+
* Once the commit has finished, focus moves to the opener only when the
|
|
141
|
+
* surface really left the document (StrictMode's simulated unmount keeps it),
|
|
142
|
+
* the opener is still on the page, and the removal lost focus, both in the
|
|
143
|
+
* surface's document and in the document that hosts its frame. A control the
|
|
144
|
+
* user pressed outside the surface, or outside its frame, keeps its focus.
|
|
145
|
+
*/
|
|
146
|
+
export function prepareFocusReturnOnRemoval(
|
|
147
|
+
surface: Element,
|
|
148
|
+
): (opener: Element | null) => void {
|
|
149
|
+
const host = surface.ownerDocument.defaultView?.frameElement ?? null;
|
|
150
|
+
return opener => {
|
|
151
|
+
queueMicrotask(() => {
|
|
152
|
+
if (surface.isConnected || opener == null || !opener.isConnected) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (isFocusLost(surface) && (host == null || isFocusLost(host))) {
|
|
156
|
+
focusForLastInput(opener as HTMLElement);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
};
|
|
160
|
+
}
|
package/src/utils/index.ts
CHANGED
|
@@ -76,7 +76,7 @@ export {characterCount, firstCharacter, truncateCharacters} from './characters';
|
|
|
76
76
|
|
|
77
77
|
export {mergeProps} from './mergeProps';
|
|
78
78
|
export {mergeRefs} from './mergeRefs';
|
|
79
|
-
export {isFocusDetached} from './
|
|
79
|
+
export {isFocusDetached} from './isFocusDetached';
|
|
80
80
|
export {composeEventHandlers} from './composeEventHandlers';
|
|
81
81
|
export {themeProps, themeDataAttributes} from './themeProps';
|
|
82
82
|
export type {
|
|
@@ -203,6 +203,7 @@ function holdNodeDocument(
|
|
|
203
203
|
* tracker of its own for modality.
|
|
204
204
|
*/
|
|
205
205
|
export function useInteractionModalityTracking(): InteractionModalityTracking {
|
|
206
|
+
// Syncs the document's interaction-modality tracking with this mount.
|
|
206
207
|
useEffect(() => trackInteractionModality(), []);
|
|
207
208
|
const nodeRef = useRef<Element | null>(null);
|
|
208
209
|
const holdRef = useRef<{release: (() => void) | null}>({release: null});
|
|
@@ -236,7 +237,10 @@ export function useInteractionModalityTracking(): InteractionModalityTracking {
|
|
|
236
237
|
export function useInteractionModalityTrackingFor(
|
|
237
238
|
elementRef: RefObject<Element | null>,
|
|
238
239
|
): () => InteractionModality {
|
|
240
|
+
// Syncs the document's interaction-modality tracking with this mount.
|
|
239
241
|
useEffect(() => trackInteractionModality(), []);
|
|
242
|
+
// Syncs modality tracking in the element's second document, such as an iframe
|
|
243
|
+
// or a Picture-in-Picture window.
|
|
240
244
|
useEffect(() => {
|
|
241
245
|
const ownerDocument = elementRef.current?.ownerDocument;
|
|
242
246
|
if (
|
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* SYNC: When modified, update pressFeedback.ts, pressGesture.ts (the fade
|
|
16
16
|
* clock), hooks/usePressFeedback.doc.mjs, the components that paint the touch
|
|
17
17
|
* press off an ancestor scope or a pseudo-element (Switch, Tab,
|
|
18
|
-
* CheckboxInput, RadioListItem, ClickableCard, SelectableCard, Thumbnail)
|
|
19
|
-
* and
|
|
18
|
+
* CheckboxInput, RadioListItem, ClickableCard, SelectableCard, Thumbnail),
|
|
19
|
+
* Button (a tracked action sizes its `:active` image to zero) and
|
|
20
|
+
* scripts/build-css.test.mjs.
|
|
20
21
|
*/
|
|
21
22
|
|
|
22
23
|
// Every surface that paints a press uses one of these styles, so a change to
|
|
@@ -75,8 +76,9 @@ export const pressVars = stylex.defineVars({
|
|
|
75
76
|
*
|
|
76
77
|
* `defineConsts`, so the one number is inlined here at build time and is the
|
|
77
78
|
* controller's constant at run time (`PRESS_FADE_MS` in pressGesture.ts):
|
|
78
|
-
* the release animation and the
|
|
79
|
-
*
|
|
79
|
+
* the release animation and the controller's clock cannot drift apart. When
|
|
80
|
+
* that clock runs out, the controller waits for a release animation that a
|
|
81
|
+
* busy main thread started late, then removes the attribute.
|
|
80
82
|
*/
|
|
81
83
|
export const pressConsts = stylex.defineConsts({
|
|
82
84
|
/** How long the release takes, in ms. UIKit's deselect clock. */
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file isFocusDetached.ts
|
|
5
|
+
* @input The document's current active element
|
|
6
|
+
* @output Whether focus is currently "detached": on nothing in particular
|
|
7
|
+
* @position Utility, exported from utils/index.ts; used by overlay triggers
|
|
8
|
+
* (e.g. DateInput, DateTimeInput) that return focus to their control when the
|
|
9
|
+
* overlay closes, but only when the dismiss did not already move focus
|
|
10
|
+
* somewhere the user chose. Apart from focusReturn.ts so the utils barrel
|
|
11
|
+
* does not reach focusForLastInput: an overlay loaded with import() that
|
|
12
|
+
* uses it then keeps it out of the chunk it shares with eager code.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* True when focus rests on nothing in particular — no active element, or the
|
|
17
|
+
* document body / root element.
|
|
18
|
+
*
|
|
19
|
+
* An overlay (popover, calendar, dropdown) that restores focus to its trigger
|
|
20
|
+
* on close should do so ONLY when this is true. A native `popover="auto"`
|
|
21
|
+
* light-dismiss fires its close synchronously with the pointer event that
|
|
22
|
+
* moved focus, so by the time the close handler runs, focus has already
|
|
23
|
+
* landed on whatever the user clicked — another field, a button, anywhere.
|
|
24
|
+
* Restoring focus unconditionally would yank it back and fight that click.
|
|
25
|
+
* The one case the browser leaves unresolved is Escape or a click on
|
|
26
|
+
* non-focusable empty space, which drops focus to the body; that is exactly
|
|
27
|
+
* when the trigger should reclaim it.
|
|
28
|
+
*/
|
|
29
|
+
export function isFocusDetached(doc: Document = document): boolean {
|
|
30
|
+
const active = doc.activeElement;
|
|
31
|
+
return (
|
|
32
|
+
active == null || active === doc.body || active === doc.documentElement
|
|
33
|
+
);
|
|
34
|
+
}
|