@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
|
@@ -5,37 +5,159 @@ export const docs = {
|
|
|
5
5
|
name: 'useHoverCard',
|
|
6
6
|
displayName: 'useHoverCard',
|
|
7
7
|
group: 'HoverCard',
|
|
8
|
-
keywords: [
|
|
8
|
+
keywords: [
|
|
9
|
+
'hovercard',
|
|
10
|
+
'hover',
|
|
11
|
+
'preview',
|
|
12
|
+
'card',
|
|
13
|
+
'tooltip',
|
|
14
|
+
'popup',
|
|
15
|
+
'floating',
|
|
16
|
+
'anchor',
|
|
17
|
+
],
|
|
9
18
|
params: [
|
|
10
|
-
{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
{
|
|
20
|
+
name: 'placement',
|
|
21
|
+
type: "'above' | 'below' | 'start' | 'end'",
|
|
22
|
+
description:
|
|
23
|
+
"Position relative to the trigger. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
|
|
24
|
+
default: "'above'",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'alignment',
|
|
28
|
+
type: "'start' | 'center' | 'end'",
|
|
29
|
+
description:
|
|
30
|
+
"Alignment along the placement axis. Logical: start/end resolve against the popover\'s own inherited direction (RTL mirrors in pure CSS).",
|
|
31
|
+
default: "'center'",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'delay',
|
|
35
|
+
type: 'number',
|
|
36
|
+
description:
|
|
37
|
+
'Delay before showing the hover card on hover, in milliseconds.',
|
|
38
|
+
default: '300',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'hideDelay',
|
|
42
|
+
type: 'number',
|
|
43
|
+
description:
|
|
44
|
+
'Delay before hiding after mouse or focus leaves, in milliseconds.',
|
|
45
|
+
default: '200',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'focusTrigger',
|
|
49
|
+
type: "'auto' | 'always' | 'never'",
|
|
50
|
+
description:
|
|
51
|
+
'When focus should open the hover card. auto opens when the trigger itself takes focus, or focus lands inside a trigger that is focusable at that moment, so a roving-tabindex member opens when the arrow keys reach it.',
|
|
52
|
+
default: "'auto'",
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'touchTrigger',
|
|
56
|
+
type: "'auto' | 'tap' | 'none'",
|
|
57
|
+
description:
|
|
58
|
+
'What a tap does where there is no hover. auto opens on tap unless the trigger performs an action of its own (an aria-disabled control performs none); tap always opens; none never opens on touch.',
|
|
59
|
+
default: "'auto'",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'isEnabled',
|
|
63
|
+
type: 'boolean',
|
|
64
|
+
description: 'Whether hover and focus triggers are enabled.',
|
|
65
|
+
default: 'true',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'label',
|
|
69
|
+
type: 'string',
|
|
70
|
+
description:
|
|
71
|
+
'Accessible name for the hover card popup. When provided, the popup is exposed as a named role="dialog"; when omitted, it falls back to role="group" (a group may validly be unnamed).',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: 'isOpen',
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
description:
|
|
77
|
+
'Controlled open state. true force-shows, false force-hides, undefined lets hover/focus manage visibility.',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'isDefaultOpen',
|
|
81
|
+
type: 'boolean',
|
|
82
|
+
description: 'Whether the hover card should be shown on mount.',
|
|
83
|
+
default: 'false',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'onShow',
|
|
87
|
+
type: '() => void',
|
|
88
|
+
description: 'Callback fired when the hover card becomes visible.',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: 'onHide',
|
|
92
|
+
type: '() => void',
|
|
93
|
+
description: 'Callback fired when the hover card is hidden.',
|
|
94
|
+
},
|
|
22
95
|
],
|
|
23
96
|
returns: [
|
|
24
|
-
{
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{
|
|
31
|
-
|
|
97
|
+
{
|
|
98
|
+
name: 'ref',
|
|
99
|
+
type: 'RefCallback<HTMLElement>',
|
|
100
|
+
description:
|
|
101
|
+
'Combined ref that sets both position and interaction on the same trigger element.',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
name: 'positionRef',
|
|
105
|
+
type: 'RefCallback<HTMLElement>',
|
|
106
|
+
description:
|
|
107
|
+
'Ref for the positioning anchor element. Use when position and interaction live on different elements.',
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'interactionRef',
|
|
111
|
+
type: 'RefCallback<HTMLElement>',
|
|
112
|
+
description:
|
|
113
|
+
'Ref for the hover/focus interaction element. Use with positionRef for split trigger patterns.',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'anchorId',
|
|
117
|
+
type: 'string',
|
|
118
|
+
description: 'CSS anchor name for advanced positioning cases.',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
name: 'describedBy',
|
|
122
|
+
type: 'string',
|
|
123
|
+
description: 'ID to compose into aria-describedby on the trigger.',
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
name: 'renderHoverCard',
|
|
127
|
+
type: "(children: ReactNode, props?: Omit<ContextRenderProps, 'positioning'>) => ReactNode",
|
|
128
|
+
description:
|
|
129
|
+
'Render function for the anchor-positioned hover card content. The positioning opt-out is excluded: the hover card always derives its position from placement/alignment.',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: 'show',
|
|
133
|
+
type: '() => void',
|
|
134
|
+
description: 'Imperatively show the hover card immediately.',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'hide',
|
|
138
|
+
type: '() => void',
|
|
139
|
+
description: 'Imperatively hide the hover card immediately.',
|
|
140
|
+
},
|
|
32
141
|
],
|
|
33
142
|
usage: {
|
|
34
|
-
description:
|
|
143
|
+
description:
|
|
144
|
+
'Headless hook for hover-triggered floating cards. Builds on useLayer with hover/focus intent detection, configurable delays, safe hover behavior, and accessible aria-describedby linking. Use for rich previews on hover when you need full control over the trigger or rendered content.',
|
|
35
145
|
bestPractices: [
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
|
|
146
|
+
{
|
|
147
|
+
guidance: true,
|
|
148
|
+
description:
|
|
149
|
+
'Use for rich content previews such as user profiles, entity summaries, and link previews.',
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
guidance: true,
|
|
153
|
+
description:
|
|
154
|
+
'Prefer the HoverCard component for standard trigger-content pairs; use the hook for custom trigger patterns.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
guidance: false,
|
|
158
|
+
description:
|
|
159
|
+
'Use for simple text hints: use Tooltip or useTooltip instead.',
|
|
160
|
+
},
|
|
39
161
|
],
|
|
40
162
|
},
|
|
41
163
|
relatedComponents: ['HoverCard', 'Tooltip', 'Popover'],
|
|
@@ -46,17 +168,24 @@ export const docs = {
|
|
|
46
168
|
|
|
47
169
|
/** @type {import('@astryxdesign/cli/authoring').HookTranslationDoc} */
|
|
48
170
|
export const docsDense = {
|
|
49
|
-
description:
|
|
171
|
+
description:
|
|
172
|
+
'Headless hover-triggered floating cards. Builds on useLayer w/ hover/focus intent, delays, safe hover behavior, aria-describedby. Use for rich previews when trigger/content rendering needs full control.',
|
|
50
173
|
paramDescriptions: {
|
|
51
|
-
placement:
|
|
52
|
-
|
|
174
|
+
placement:
|
|
175
|
+
"position relative to trigger. logical: start/end follow the popover's inherited direction (RTL mirrors).",
|
|
176
|
+
alignment:
|
|
177
|
+
"alignment along placement axis. logical: start/end follow the popover's inherited direction (RTL mirrors).",
|
|
53
178
|
delay: 'show delay in ms.',
|
|
54
179
|
hideDelay: 'hide delay after mouse/focus leave in ms.',
|
|
55
|
-
focusTrigger:
|
|
56
|
-
|
|
180
|
+
focusTrigger:
|
|
181
|
+
'when focus opens hover card; auto = focus on the trigger, or inside a trigger focusable when focus arrives.',
|
|
182
|
+
touchTrigger:
|
|
183
|
+
'tap behavior with no hover; auto = tap unless trigger acts, tap = always, none = never.',
|
|
57
184
|
isEnabled: 'whether hover/focus triggers are enabled.',
|
|
58
|
-
label:
|
|
59
|
-
|
|
185
|
+
label:
|
|
186
|
+
'accessible name for popup. with label: named role="dialog"; without: role="group".',
|
|
187
|
+
isOpen:
|
|
188
|
+
'controlled open state: true force-show, false force-hide, undefined unmanaged.',
|
|
60
189
|
isDefaultOpen: 'show on mount.',
|
|
61
190
|
onShow: 'fires when hover card becomes visible.',
|
|
62
191
|
onHide: 'fires when hover card hides.',
|
|
@@ -72,11 +201,24 @@ export const docsDense = {
|
|
|
72
201
|
hide: 'hide immediately.',
|
|
73
202
|
},
|
|
74
203
|
usage: {
|
|
75
|
-
description:
|
|
204
|
+
description:
|
|
205
|
+
'Headless hover-triggered floating cards. Builds on useLayer w/ hover/focus intent, delays, safe hover behavior, aria-describedby. Use for rich previews when trigger/content rendering needs full control.',
|
|
76
206
|
bestPractices: [
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
207
|
+
{
|
|
208
|
+
guidance: true,
|
|
209
|
+
description:
|
|
210
|
+
'Use for rich previews: profiles, entity summaries, link previews.',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
guidance: true,
|
|
214
|
+
description:
|
|
215
|
+
'Prefer HoverCard for standard trigger-content pairs; use hook for custom trigger patterns.',
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
guidance: false,
|
|
219
|
+
description:
|
|
220
|
+
'Use for simple text hints: use Tooltip / useTooltip instead.',
|
|
221
|
+
},
|
|
80
222
|
],
|
|
81
223
|
},
|
|
82
224
|
};
|
|
@@ -16,9 +16,11 @@ import {
|
|
|
16
16
|
useCallback,
|
|
17
17
|
useEffect,
|
|
18
18
|
useRef,
|
|
19
|
+
useState,
|
|
19
20
|
type ReactNode,
|
|
20
21
|
type RefCallback,
|
|
21
22
|
} from 'react';
|
|
23
|
+
import {createTriggerFocusGate} from '../utils/triggerFocus';
|
|
22
24
|
import * as stylex from '@stylexjs/stylex';
|
|
23
25
|
import {
|
|
24
26
|
useLayer,
|
|
@@ -60,7 +62,7 @@ const styles = stylex.create({
|
|
|
60
62
|
});
|
|
61
63
|
|
|
62
64
|
/**
|
|
63
|
-
*
|
|
65
|
+
* When focus on the trigger opens the hover card
|
|
64
66
|
*/
|
|
65
67
|
export type HoverCardFocusTrigger = 'auto' | 'always' | 'never';
|
|
66
68
|
|
|
@@ -96,9 +98,10 @@ export interface HoverCardOptions {
|
|
|
96
98
|
|
|
97
99
|
/**
|
|
98
100
|
* When to trigger on focus:
|
|
99
|
-
* - `auto`:
|
|
100
|
-
*
|
|
101
|
-
* - `
|
|
101
|
+
* - `auto`: focus on the trigger itself, or within a trigger that is
|
|
102
|
+
* focusable when focus arrives
|
|
103
|
+
* - `always`: focus on the trigger or anything inside it
|
|
104
|
+
* - `never`: never on focus (for composite widgets)
|
|
102
105
|
*
|
|
103
106
|
* @default 'auto'
|
|
104
107
|
*/
|
|
@@ -235,29 +238,6 @@ export interface HoverCardReturn {
|
|
|
235
238
|
hide: () => void;
|
|
236
239
|
}
|
|
237
240
|
|
|
238
|
-
/**
|
|
239
|
-
* Check if an element is naturally focusable
|
|
240
|
-
*/
|
|
241
|
-
function isFocusable(element: HTMLElement): boolean {
|
|
242
|
-
// Elements with explicit tabindex
|
|
243
|
-
if (element.hasAttribute('tabindex')) {
|
|
244
|
-
return element.tabIndex >= 0;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Naturally focusable elements
|
|
248
|
-
const focusableTags = ['A', 'BUTTON', 'INPUT', 'SELECT', 'TEXTAREA'];
|
|
249
|
-
if (focusableTags.includes(element.tagName)) {
|
|
250
|
-
return !(element as HTMLButtonElement).disabled;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
// Elements with contenteditable
|
|
254
|
-
if (element.isContentEditable) {
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
return false;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
241
|
/**
|
|
262
242
|
* Hook for hover card behavior with hover/focus triggers.
|
|
263
243
|
*
|
|
@@ -421,32 +401,54 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
421
401
|
// Tap-to-open on touch; on a mouse this does nothing and hover still rules.
|
|
422
402
|
const handlePointerDown = useCallback(
|
|
423
403
|
(event: PointerEvent) => {
|
|
424
|
-
|
|
404
|
+
// A pen in range starts the hover show before it lands. Left pending,
|
|
405
|
+
// that show opens the card during the press. The tap then closes it.
|
|
406
|
+
if (handleTouchPointerDown(event) && showTimeoutRef.current) {
|
|
407
|
+
clearTimeout(showTimeoutRef.current);
|
|
408
|
+
showTimeoutRef.current = null;
|
|
409
|
+
}
|
|
425
410
|
},
|
|
426
411
|
[handleTouchPointerDown],
|
|
427
412
|
);
|
|
428
413
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
414
|
+
// Under `auto`, whether focus counts is decided when it arrives, and a
|
|
415
|
+
// focus that counted still hides on blur (utils/triggerFocus.ts).
|
|
416
|
+
const [focusGate] = useState(createTriggerFocusGate);
|
|
417
|
+
|
|
418
|
+
const handleFocusIn = useCallback(
|
|
419
|
+
(e: Event) => {
|
|
420
|
+
if (!focusGate.focusIn(e, focusTrigger) || !isEnabled) {
|
|
421
|
+
return;
|
|
422
|
+
}
|
|
423
|
+
// A tap focuses the trigger it activates. Opening on that focus would
|
|
424
|
+
// reinstate exactly the behavior the touch path just decided against —
|
|
425
|
+
// and on an action trigger it covers the thing the user tapped.
|
|
426
|
+
if (isTouchInteraction()) {
|
|
427
|
+
return;
|
|
428
|
+
}
|
|
429
|
+
// Skip showing if we're in the middle of an Escape dismiss
|
|
430
|
+
if (isEscapeDismissingRef.current) {
|
|
431
|
+
isEscapeDismissingRef.current = false;
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
clearTimeouts();
|
|
435
|
+
showLayer();
|
|
436
|
+
},
|
|
437
|
+
[
|
|
438
|
+
focusGate,
|
|
439
|
+
focusTrigger,
|
|
440
|
+
isEnabled,
|
|
441
|
+
isTouchInteraction,
|
|
442
|
+
clearTimeouts,
|
|
443
|
+
showLayer,
|
|
444
|
+
],
|
|
445
|
+
);
|
|
447
446
|
|
|
448
447
|
const handleFocusOut = useCallback(
|
|
449
448
|
(e: FocusEvent) => {
|
|
449
|
+
if (!focusGate.focusOut(e, focusTrigger)) {
|
|
450
|
+
return;
|
|
451
|
+
}
|
|
450
452
|
// Check if focus is moving to the hover card content
|
|
451
453
|
const relatedTarget = e.relatedTarget as HTMLElement | null;
|
|
452
454
|
const popoverElement = document.getElementById(layerId);
|
|
@@ -458,7 +460,7 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
458
460
|
|
|
459
461
|
scheduleHide();
|
|
460
462
|
},
|
|
461
|
-
[layerId, scheduleHide],
|
|
463
|
+
[focusGate, focusTrigger, layerId, scheduleHide],
|
|
462
464
|
);
|
|
463
465
|
|
|
464
466
|
// Escape dismissal (WCAG 1.4.13) goes through the shared layer stack: a
|
|
@@ -558,12 +560,9 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
558
560
|
el.addEventListener('mouseleave', handleMouseLeave);
|
|
559
561
|
el.addEventListener('pointerdown', handlePointerDown);
|
|
560
562
|
|
|
561
|
-
//
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
(focusTrigger === 'auto' && isFocusable(el));
|
|
565
|
-
|
|
566
|
-
if (shouldAttachFocus) {
|
|
563
|
+
// Focus listeners unless focus never opens the card; `auto` decides
|
|
564
|
+
// per event (utils/triggerFocus.ts).
|
|
565
|
+
if (focusTrigger !== 'never') {
|
|
567
566
|
el.addEventListener('focusin', handleFocusIn);
|
|
568
567
|
el.addEventListener('focusout', handleFocusOut as EventListener);
|
|
569
568
|
}
|
|
@@ -591,7 +590,7 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
591
590
|
[layerRef, interactionRef],
|
|
592
591
|
);
|
|
593
592
|
|
|
594
|
-
//
|
|
593
|
+
// Releases the hover-card timers on unmount.
|
|
595
594
|
useEffect(() => {
|
|
596
595
|
return () => {
|
|
597
596
|
clearTimeouts();
|
|
@@ -606,7 +605,8 @@ export function useHoverCard(options: HoverCardOptions = {}): HoverCardReturn {
|
|
|
606
605
|
// eslint-disable-next-line @eslint-react/exhaustive-deps -- intentionally only on mount
|
|
607
606
|
}, []);
|
|
608
607
|
|
|
609
|
-
//
|
|
608
|
+
// Syncs the layer with the controlled `isOpen`. A close moves focus back to
|
|
609
|
+
// the trigger when the card holds it.
|
|
610
610
|
useEffect(() => {
|
|
611
611
|
if (isOpen === undefined) {
|
|
612
612
|
return;
|
package/src/Icon/Icon.doc.mjs
CHANGED
|
@@ -71,15 +71,16 @@ export const docs = {
|
|
|
71
71
|
props: [
|
|
72
72
|
{
|
|
73
73
|
name: 'icon',
|
|
74
|
-
type: 'IconName | ComponentType<SVGProps>',
|
|
74
|
+
type: 'IconName | NamespacedIconName | ComponentType<SVGProps>',
|
|
75
75
|
description:
|
|
76
|
-
'Semantic icon name or SVG component. Valid semantic names: close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone. For any icon not in this list, pass an SVG component directly (e.g. import from lucide-react or @heroicons/react). Note: this prop is called `icon`, not `name`.',
|
|
76
|
+
'Semantic icon name or SVG component. Valid semantic names: close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone. A namespaced key such as `richtext:bold` names a glyph that one component or library registers, and a theme can replace it by key; a namespaced key that nothing registers renders nothing. For any icon not in this list, pass an SVG component directly (e.g. import from lucide-react or @heroicons/react). Note: this prop is called `icon`, not `name`.',
|
|
77
77
|
required: true,
|
|
78
78
|
},
|
|
79
79
|
{
|
|
80
80
|
name: 'color',
|
|
81
|
-
type: "'primary' | 'secondary' | 'tertiary' | 'disabled' | 'accent' | 'info' | 'success' | 'error' | 'warning' | 'inherit'",
|
|
82
|
-
description:
|
|
81
|
+
type: "'primary' | 'secondary' | 'tertiary' | 'disabled' | 'accent' | 'info' | 'success' | 'error' | 'warning' | 'inherit' | 'blue' | 'red' | 'green' | 'gray' | 'cyan' | 'teal' | 'yellow' | 'orange' | 'pink' | 'purple'",
|
|
82
|
+
description:
|
|
83
|
+
'Color variant mapped to Astryx icon color tokens. Semantic values (primary through warning) follow the role, and inherit uses the surrounding text color. On the web, Icon also accepts the palette values blue, red, green, gray, cyan, teal, yellow, orange, pink, and purple, which pick a non-semantic hue.',
|
|
83
84
|
default: "'inherit'",
|
|
84
85
|
},
|
|
85
86
|
{
|
|
@@ -107,6 +108,24 @@ export const docs = {
|
|
|
107
108
|
description:
|
|
108
109
|
"StyleX styles for customization (color, size, opacity). Folded into the icon's own stylex.props() call so it composes with the base color/size styles. Must be a stylex.create() value, not an inline style object like style={{}}.",
|
|
109
110
|
},
|
|
111
|
+
{
|
|
112
|
+
name: 'className',
|
|
113
|
+
type: 'string',
|
|
114
|
+
description:
|
|
115
|
+
'Class name added to the rendered glyph, beside the astryx-icon target class.',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
name: 'style',
|
|
119
|
+
type: 'CSSProperties',
|
|
120
|
+
description:
|
|
121
|
+
"Inline styles merged onto the rendered glyph after Icon's own size and color styles.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
name: 'ref',
|
|
125
|
+
type: 'Ref<SVGSVGElement>',
|
|
126
|
+
description:
|
|
127
|
+
'Ref to the rendered SVG element, for an icon component and for a semantic or namespaced name. For a name, it is the <svg> inside the wrapper, or null when the resolved glyph has no <svg>.',
|
|
128
|
+
},
|
|
110
129
|
],
|
|
111
130
|
theming: {
|
|
112
131
|
targets: [{className: 'astryx-icon', visualProps: ['color', 'size']}],
|
|
@@ -207,15 +226,16 @@ export const docsZh = {
|
|
|
207
226
|
props: [
|
|
208
227
|
{
|
|
209
228
|
name: 'icon',
|
|
210
|
-
type: 'IconName | ComponentType<SVGProps>',
|
|
229
|
+
type: 'IconName | NamespacedIconName | ComponentType<SVGProps>',
|
|
211
230
|
description:
|
|
212
|
-
'语义图标名称或 SVG 组件。有效语义名称:close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone
|
|
231
|
+
'语义图标名称或 SVG 组件。有效语义名称:close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone。命名空间键(如 `richtext:bold`)指向某个组件或库注册的图标,主题可以按键替换它;没有注册的命名空间键不渲染任何内容。列表之外的图标请直接传入 SVG 组件。',
|
|
213
232
|
required: true,
|
|
214
233
|
},
|
|
215
234
|
{
|
|
216
235
|
name: 'color',
|
|
217
|
-
type: "'primary' | 'secondary' | 'tertiary' | 'disabled' | 'accent' | 'info' | 'success' | 'error' | 'warning' | 'inherit'",
|
|
218
|
-
description:
|
|
236
|
+
type: "'primary' | 'secondary' | 'tertiary' | 'disabled' | 'accent' | 'info' | 'success' | 'error' | 'warning' | 'inherit' | 'blue' | 'red' | 'green' | 'gray' | 'cyan' | 'teal' | 'yellow' | 'orange' | 'pink' | 'purple'",
|
|
237
|
+
description:
|
|
238
|
+
'映射到 Astryx 图标颜色令牌的颜色变体。语义值(primary 到 warning)跟随角色,inherit 使用周围文字的颜色。在 Web 上,Icon 还接受调色板值 blue、red、green、gray、cyan、teal、yellow、orange、pink 和 purple,它们选择非语义色相。',
|
|
219
239
|
default: "'inherit'",
|
|
220
240
|
},
|
|
221
241
|
{
|
|
@@ -243,6 +263,23 @@ export const docsZh = {
|
|
|
243
263
|
description:
|
|
244
264
|
'用于自定义的 StyleX 样式(颜色、尺寸、不透明度)。会并入图标自身的 stylex.props() 调用,从而与基础的颜色/尺寸样式组合。必须是 stylex.create() 的值,而不是像 style={{}} 这样的内联样式对象。',
|
|
245
265
|
},
|
|
266
|
+
{
|
|
267
|
+
name: 'className',
|
|
268
|
+
type: 'string',
|
|
269
|
+
description: '添加到渲染图标上的类名,与 astryx-icon 目标类名并列。',
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: 'style',
|
|
273
|
+
type: 'CSSProperties',
|
|
274
|
+
description:
|
|
275
|
+
'合并到渲染图标上的内联样式,位于 Icon 自身的尺寸和颜色样式之后。',
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: 'ref',
|
|
279
|
+
type: 'Ref<SVGSVGElement>',
|
|
280
|
+
description:
|
|
281
|
+
'指向渲染的 SVG 元素的 ref,适用于图标组件以及语义名称或命名空间名称。对于名称,它指向包装元素内的 <svg>;若解析出的图形没有 <svg>,则为 null。',
|
|
282
|
+
},
|
|
246
283
|
],
|
|
247
284
|
theming: {
|
|
248
285
|
targets: [{className: 'astryx-icon', visualProps: ['color', 'size']}],
|
|
@@ -390,8 +427,9 @@ export const docsDense = {
|
|
|
390
427
|
],
|
|
391
428
|
},
|
|
392
429
|
propDescriptions: {
|
|
393
|
-
icon: 'Semantic icon name or SVG component. Valid names: close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone. For others, pass an SVG component.',
|
|
394
|
-
color:
|
|
430
|
+
icon: 'Semantic icon name or SVG component. Valid names: close, chevronDown, chevronLeft, chevronRight, chevronsLeft, chevronsRight, check, success, error, warning, info, calendar, clock, externalLink, menu, moreHorizontal, search, upload, arrowUp, arrowDown, arrowsUpDown, funnel, eyeSlash, viewColumns, copy, checkDouble, wrench, stop, microphone. A namespaced key (`richtext:bold`) names a glyph a component or library registers; an unregistered one renders nothing. For others, pass an SVG component.',
|
|
431
|
+
color:
|
|
432
|
+
'Color variant mapped to Astryx icon color tokens; inherit = surrounding text color. Web also accepts the non-semantic palette: blue, red, green, gray, cyan, teal, yellow, orange, pink, purple.',
|
|
395
433
|
size: "xsm/sm/md/lg = 12/16/20/24px at a 16px root, scale w/ root font size; theme sets a size's glyph dimension via width + height (px or rem) on components.icon['size:sm'] etc. Explicit Icon size; otherwise nearest owning-component default, then 'md' when no contextual default exists",
|
|
396
434
|
variant:
|
|
397
435
|
"Requests the active theme's alternate artwork (e.g. 'filled'); names from augmentable IconVariantMap. Reaches the entry only if the active theme's iconVariants lists it (and an inherited entry's defining theme does too); else normal artwork. Ignored by a directly passed component; never in the DOM; no theming selector.",
|
|
@@ -399,5 +437,8 @@ export const docsDense = {
|
|
|
399
437
|
'Accessible name for a meaningful, standalone icon. Sets role="img" + aria-label and drops the default aria-hidden. Omit (default) for decorative icons (stays aria-hidden). Empty string = decorative. The accessible-name/alt-text prop for icons.',
|
|
400
438
|
xstyle:
|
|
401
439
|
'StyleX styles (color, size, opacity) via stylex.create(); composes with the base color/size styles.',
|
|
440
|
+
className: 'Class added to the rendered glyph beside astryx-icon.',
|
|
441
|
+
style: "Inline styles merged after Icon's size and color styles.",
|
|
442
|
+
ref: 'Reaches the rendered SVG for every icon value; null when a resolved glyph has no <svg>.',
|
|
402
443
|
},
|
|
403
444
|
};
|
package/src/Icon/Icon.tsx
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* - /packages/cli/assets/templates/blocks/components/Icon/ (showcase blocks)
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
|
-
import React, {type ComponentType, type SVGProps} from 'react';
|
|
33
|
+
import React, {useCallback, type ComponentType, type SVGProps} from 'react';
|
|
34
34
|
import * as stylex from '@stylexjs/stylex';
|
|
35
35
|
import type {StyleXStyles} from '@stylexjs/stylex';
|
|
36
36
|
import {colorVars} from '../theme/tokens.stylex';
|
|
@@ -39,6 +39,7 @@ import {resolveIcon} from './globalIconRegistry';
|
|
|
39
39
|
import type {IconName, NamespacedIconName} from './globalIconRegistry';
|
|
40
40
|
import type {IconVariant} from './index';
|
|
41
41
|
import {mergeProps} from '../utils/mergeProps';
|
|
42
|
+
import {mergeRefs} from '../utils/mergeRefs';
|
|
42
43
|
import {themeProps} from '../utils/themeProps';
|
|
43
44
|
import {useIconSize} from './IconDefaultSizeContext';
|
|
44
45
|
import {iconSizeStyles, type IconSize} from './IconSize.stylex';
|
|
@@ -176,7 +177,11 @@ export interface IconProps extends Omit<
|
|
|
176
177
|
SVGProps<SVGSVGElement>,
|
|
177
178
|
'ref' | 'color'
|
|
178
179
|
> {
|
|
179
|
-
/**
|
|
180
|
+
/**
|
|
181
|
+
* Ref to the rendered SVG element. For a semantic or namespaced name it is
|
|
182
|
+
* the `<svg>` inside Icon's wrapper, or `null` when the resolved glyph has
|
|
183
|
+
* no `<svg>`.
|
|
184
|
+
*/
|
|
180
185
|
ref?: React.Ref<SVGSVGElement>;
|
|
181
186
|
/**
|
|
182
187
|
* Icon to render. Can be:
|
|
@@ -267,22 +272,26 @@ export interface IconProps extends Omit<
|
|
|
267
272
|
xstyle?: StyleXStyles;
|
|
268
273
|
}
|
|
269
274
|
|
|
275
|
+
type IconA11yProps =
|
|
276
|
+
| {role: 'img'; 'aria-label': string; 'aria-hidden': undefined}
|
|
277
|
+
| {'aria-hidden': 'true'};
|
|
278
|
+
|
|
270
279
|
/**
|
|
271
280
|
* Derives the ARIA attributes for an icon from its `label` prop.
|
|
272
281
|
*
|
|
273
282
|
* - Non-empty `label` → meaningful image: `role="img"` + `aria-label`, and no
|
|
274
283
|
* `aria-hidden` (an `aria-hidden` element is removed from the accessibility
|
|
275
|
-
* tree, so its accessible name would be ignored).
|
|
284
|
+
* tree, so its accessible name would be ignored). Icon passes
|
|
285
|
+
* `aria-hidden: undefined`. Many icon components, such as Heroicons, write
|
|
286
|
+
* `aria-hidden="true"` unless a prop replaces it.
|
|
276
287
|
* - Omitted or empty `label` → decorative default: `aria-hidden="true"`.
|
|
277
288
|
*
|
|
278
289
|
* The result is spread BEFORE `{...props}` in both render modes so an explicit
|
|
279
290
|
* `aria-hidden` / `role` / `aria-label` from the consumer always wins.
|
|
280
291
|
*/
|
|
281
|
-
function getIconA11yProps(
|
|
282
|
-
label: string | undefined,
|
|
283
|
-
): {role: 'img'; 'aria-label': string} | {'aria-hidden': 'true'} {
|
|
292
|
+
function getIconA11yProps(label: string | undefined): IconA11yProps {
|
|
284
293
|
return label != null && label !== ''
|
|
285
|
-
? {role: 'img', 'aria-label': label}
|
|
294
|
+
? {role: 'img', 'aria-label': label, 'aria-hidden': undefined}
|
|
286
295
|
: {'aria-hidden': 'true'};
|
|
287
296
|
}
|
|
288
297
|
|
|
@@ -327,6 +336,7 @@ export function Icon({
|
|
|
327
336
|
className={className}
|
|
328
337
|
style={style}
|
|
329
338
|
xstyle={xstyle}
|
|
339
|
+
svgRef={ref}
|
|
330
340
|
spanProps={props}
|
|
331
341
|
/>
|
|
332
342
|
);
|
|
@@ -386,20 +396,32 @@ function IconFromRegistry({
|
|
|
386
396
|
className,
|
|
387
397
|
style,
|
|
388
398
|
xstyle,
|
|
399
|
+
svgRef,
|
|
389
400
|
spanProps,
|
|
390
401
|
}: {
|
|
391
402
|
name: IconName | NamespacedIconName;
|
|
392
403
|
color: IconColor;
|
|
393
404
|
size: IconSize;
|
|
394
405
|
variant: IconVariant | undefined;
|
|
395
|
-
a11yProps:
|
|
406
|
+
a11yProps: IconA11yProps;
|
|
396
407
|
className?: string;
|
|
397
408
|
style?: React.CSSProperties;
|
|
398
409
|
xstyle?: StyleXStyles;
|
|
410
|
+
svgRef?: React.Ref<SVGSVGElement>;
|
|
399
411
|
spanProps?: Omit<SVGProps<SVGSVGElement>, 'ref' | 'color'>;
|
|
400
412
|
}) {
|
|
401
413
|
const themeName = useThemeName();
|
|
402
414
|
const resolvedIcon = resolveIcon(name, themeName, {size, variant});
|
|
415
|
+
// The glyph can change while the span stays. Attach the ref again when it
|
|
416
|
+
// does.
|
|
417
|
+
const attachSvgRef = useCallback(
|
|
418
|
+
(span: HTMLSpanElement | null) =>
|
|
419
|
+
svgRef == null
|
|
420
|
+
? undefined
|
|
421
|
+
: mergeRefs(svgRef)(span?.querySelector('svg') ?? null),
|
|
422
|
+
// eslint-disable-next-line @eslint-react/exhaustive-deps -- resolveIcon's inputs: a new glyph gets a new attach, and a function entry's new element each render does not.
|
|
423
|
+
[svgRef, name, themeName, size, variant],
|
|
424
|
+
);
|
|
403
425
|
|
|
404
426
|
if (resolvedIcon == null) {
|
|
405
427
|
return null;
|
|
@@ -415,6 +437,7 @@ function IconFromRegistry({
|
|
|
415
437
|
|
|
416
438
|
return (
|
|
417
439
|
<span
|
|
440
|
+
ref={svgRef == null ? undefined : attachSvgRef}
|
|
418
441
|
// Derived a11y — decorative (aria-hidden) by default, or a meaningful
|
|
419
442
|
// image (role="img" + aria-label) when `label` is set. Placed BEFORE the
|
|
420
443
|
// prop spread so consumers can still override it with explicit
|