@graphprotocol/gds-react 0.1.1 → 0.2.0
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/GDSProvider.d.ts +12 -10
- package/dist/GDSProvider.d.ts.map +1 -1
- package/dist/GDSProvider.js +10 -8
- package/dist/GDSProvider.js.map +1 -1
- package/dist/components/Address.js +2 -2
- package/dist/components/Address.meta.d.ts +1 -13
- package/dist/components/Address.meta.d.ts.map +1 -1
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js +7 -11
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Avatar.meta.d.ts +0 -2
- package/dist/components/Avatar.meta.d.ts.map +1 -1
- package/dist/components/AvatarGroup.meta.d.ts +8 -2
- package/dist/components/AvatarGroup.meta.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.meta.d.ts +2 -3
- package/dist/components/Breadcrumbs.meta.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.meta.js +3 -1
- package/dist/components/Breadcrumbs.meta.js.map +1 -1
- package/dist/components/Breadcrumbs.parts.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.parts.js +15 -23
- package/dist/components/Breadcrumbs.parts.js.map +1 -1
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +17 -12
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Button.meta.d.ts +1 -4
- package/dist/components/Button.meta.d.ts.map +1 -1
- package/dist/components/ButtonGroup.d.ts.map +1 -1
- package/dist/components/ButtonGroup.js +1 -5
- package/dist/components/ButtonGroup.js.map +1 -1
- package/dist/components/ButtonGroup.meta.d.ts +1 -5
- package/dist/components/ButtonGroup.meta.d.ts.map +1 -1
- package/dist/components/ButtonGroup.meta.js +8 -0
- package/dist/components/ButtonGroup.meta.js.map +1 -1
- package/dist/components/Card.js +1 -1
- package/dist/components/Card.js.map +1 -1
- package/dist/components/Card.meta.d.ts +1 -2
- package/dist/components/Card.meta.d.ts.map +1 -1
- package/dist/components/Card.meta.js +1 -0
- package/dist/components/Card.meta.js.map +1 -1
- package/dist/components/Checkbox.meta.d.ts +1 -6
- package/dist/components/Checkbox.meta.d.ts.map +1 -1
- package/dist/components/Checkbox.meta.js +1 -5
- package/dist/components/Checkbox.meta.js.map +1 -1
- package/dist/components/Chip.d.ts +6 -0
- package/dist/components/Chip.d.ts.map +1 -0
- package/dist/components/Chip.js +5 -0
- package/dist/components/Chip.js.map +1 -0
- package/dist/components/Chip.meta.d.ts +15 -0
- package/dist/components/Chip.meta.d.ts.map +1 -0
- package/dist/components/Chip.meta.js +22 -0
- package/dist/components/Chip.meta.js.map +1 -0
- package/dist/components/Chip.parts.d.ts +52 -0
- package/dist/components/Chip.parts.d.ts.map +1 -0
- package/dist/components/Chip.parts.js +114 -0
- package/dist/components/Chip.parts.js.map +1 -0
- package/dist/components/Cluster.meta.d.ts +8 -2
- package/dist/components/Cluster.meta.d.ts.map +1 -1
- package/dist/components/CodeBlock.d.ts +1 -1
- package/dist/components/CodeBlock.meta.d.ts +2 -4
- package/dist/components/CodeBlock.meta.d.ts.map +1 -1
- package/dist/components/CodeBlock.parts.d.ts +6 -7
- package/dist/components/CodeBlock.parts.d.ts.map +1 -1
- package/dist/components/CodeBlock.parts.js +28 -10
- package/dist/components/CodeBlock.parts.js.map +1 -1
- package/dist/components/CodeInline.js +3 -3
- package/dist/components/CodeInline.meta.d.ts +1 -1
- package/dist/components/CodeInline.meta.d.ts.map +1 -1
- package/dist/components/CopyButton.d.ts.map +1 -1
- package/dist/components/CopyButton.js +2 -4
- package/dist/components/CopyButton.js.map +1 -1
- package/dist/components/CopyButton.meta.d.ts +1 -12
- package/dist/components/CopyButton.meta.d.ts.map +1 -1
- package/dist/components/CopyButton.meta.js +1 -6
- package/dist/components/CopyButton.meta.js.map +1 -1
- package/dist/components/CurrencyInput.meta.d.ts +1 -6
- package/dist/components/CurrencyInput.meta.d.ts.map +1 -1
- package/dist/components/CurrencyInput.meta.js +1 -5
- package/dist/components/CurrencyInput.meta.js.map +1 -1
- package/dist/components/DescriptionList.meta.d.ts +2 -5
- package/dist/components/DescriptionList.meta.d.ts.map +1 -1
- package/dist/components/DescriptionList.parts.d.ts +3 -0
- package/dist/components/DescriptionList.parts.d.ts.map +1 -1
- package/dist/components/DescriptionList.parts.js +2 -1
- package/dist/components/DescriptionList.parts.js.map +1 -1
- package/dist/components/Divider.meta.d.ts +1 -3
- package/dist/components/Divider.meta.d.ts.map +1 -1
- package/dist/components/Icon.js +4 -4
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/Icon.meta.d.ts +0 -2
- package/dist/components/Icon.meta.d.ts.map +1 -1
- package/dist/components/Icon.meta.js +1 -0
- package/dist/components/Icon.meta.js.map +1 -1
- package/dist/components/Input.d.ts +5 -4
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +1 -0
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Input.meta.d.ts +1 -6
- package/dist/components/Input.meta.d.ts.map +1 -1
- package/dist/components/Input.meta.js +1 -5
- package/dist/components/Input.meta.js.map +1 -1
- package/dist/components/Keyboard.js +1 -1
- package/dist/components/Keyboard.meta.d.ts +0 -1
- package/dist/components/Keyboard.meta.d.ts.map +1 -1
- package/dist/components/Label.meta.d.ts +1 -3
- package/dist/components/Label.meta.d.ts.map +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +1 -2
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Link.meta.d.ts +1 -2
- package/dist/components/Link.meta.d.ts.map +1 -1
- package/dist/components/Link.meta.js +1 -0
- package/dist/components/Link.meta.js.map +1 -1
- package/dist/components/Menu.meta.d.ts +31 -2
- package/dist/components/Menu.meta.d.ts.map +1 -1
- package/dist/components/Menu.meta.js +39 -1
- package/dist/components/Menu.meta.js.map +1 -1
- package/dist/components/Menu.parts.d.ts +23 -32
- package/dist/components/Menu.parts.d.ts.map +1 -1
- package/dist/components/Menu.parts.js +284 -303
- package/dist/components/Menu.parts.js.map +1 -1
- package/dist/components/Modal.d.ts +1 -1
- package/dist/components/Modal.meta.d.ts +1 -3
- package/dist/components/Modal.meta.d.ts.map +1 -1
- package/dist/components/Modal.meta.js +1 -1
- package/dist/components/Modal.meta.js.map +1 -1
- package/dist/components/Modal.parts.d.ts +14 -15
- package/dist/components/Modal.parts.d.ts.map +1 -1
- package/dist/components/Modal.parts.js +36 -32
- package/dist/components/Modal.parts.js.map +1 -1
- package/dist/components/OTCInput.js +1 -1
- package/dist/components/OTCInput.meta.d.ts +1 -6
- package/dist/components/OTCInput.meta.d.ts.map +1 -1
- package/dist/components/OTCInput.meta.js +1 -5
- package/dist/components/OTCInput.meta.js.map +1 -1
- package/dist/components/Radio.meta.d.ts +1 -6
- package/dist/components/Radio.meta.d.ts.map +1 -1
- package/dist/components/Radio.meta.js +1 -5
- package/dist/components/Radio.meta.js.map +1 -1
- package/dist/components/Search.meta.d.ts +1 -3
- package/dist/components/Search.meta.d.ts.map +1 -1
- package/dist/components/SegmentedControl.meta.d.ts +2 -3
- package/dist/components/SegmentedControl.meta.d.ts.map +1 -1
- package/dist/components/SegmentedControl.meta.js +3 -1
- package/dist/components/SegmentedControl.meta.js.map +1 -1
- package/dist/components/SegmentedControl.parts.d.ts.map +1 -1
- package/dist/components/SegmentedControl.parts.js +15 -31
- package/dist/components/SegmentedControl.parts.js.map +1 -1
- package/dist/components/Status.meta.d.ts +0 -2
- package/dist/components/Status.meta.d.ts.map +1 -1
- package/dist/components/Stepper.meta.d.ts +1 -2
- package/dist/components/Stepper.meta.d.ts.map +1 -1
- package/dist/components/Stepper.meta.js +1 -0
- package/dist/components/Stepper.meta.js.map +1 -1
- package/dist/components/Stepper.parts.d.ts.map +1 -1
- package/dist/components/Stepper.parts.js +1 -1
- package/dist/components/Stepper.parts.js.map +1 -1
- package/dist/components/Switch.meta.d.ts +1 -6
- package/dist/components/Switch.meta.d.ts.map +1 -1
- package/dist/components/Switch.meta.js +1 -5
- package/dist/components/Switch.meta.js.map +1 -1
- package/dist/components/TabSet.meta.d.ts +2 -5
- package/dist/components/TabSet.meta.d.ts.map +1 -1
- package/dist/components/TabSet.meta.js +3 -1
- package/dist/components/TabSet.meta.js.map +1 -1
- package/dist/components/TabSet.parts.js +1 -1
- package/dist/components/Tag.meta.d.ts +0 -2
- package/dist/components/Tag.meta.d.ts.map +1 -1
- package/dist/components/TextArea.meta.d.ts +1 -6
- package/dist/components/TextArea.meta.d.ts.map +1 -1
- package/dist/components/TextArea.meta.js +1 -5
- package/dist/components/TextArea.meta.js.map +1 -1
- package/dist/components/ToggleButton.d.ts +0 -2
- package/dist/components/ToggleButton.d.ts.map +1 -1
- package/dist/components/ToggleButton.js +2 -2
- package/dist/components/ToggleButton.js.map +1 -1
- package/dist/components/ToggleButton.meta.d.ts +1 -12
- package/dist/components/ToggleButton.meta.d.ts.map +1 -1
- package/dist/components/ToggleButton.meta.js +1 -6
- package/dist/components/ToggleButton.meta.js.map +1 -1
- package/dist/components/Tooltip.d.ts +2 -2
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip.js +2 -2
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Tooltip.meta.d.ts +12 -7
- package/dist/components/Tooltip.meta.d.ts.map +1 -1
- package/dist/components/Tooltip.meta.js +13 -2
- package/dist/components/Tooltip.meta.js.map +1 -1
- package/dist/components/Tooltip.parts.d.ts +20 -20
- package/dist/components/Tooltip.parts.d.ts.map +1 -1
- package/dist/components/Tooltip.parts.js +129 -88
- package/dist/components/Tooltip.parts.js.map +1 -1
- package/dist/components/base/Addon.meta.d.ts +1 -1
- package/dist/components/base/Addon.meta.d.ts.map +1 -1
- package/dist/components/base/Addon.meta.js +3 -1
- package/dist/components/base/Addon.meta.js.map +1 -1
- package/dist/components/base/ButtonOrLink.d.ts +1 -1
- package/dist/components/base/ButtonOrLink.parts.d.ts +14 -10
- package/dist/components/base/ButtonOrLink.parts.d.ts.map +1 -1
- package/dist/components/base/ButtonOrLink.parts.js +47 -47
- package/dist/components/base/ButtonOrLink.parts.js.map +1 -1
- package/dist/components/base/Checkable.meta.d.ts +1 -2
- package/dist/components/base/Checkable.meta.d.ts.map +1 -1
- package/dist/components/base/Checkable.parts.d.ts +6 -6
- package/dist/components/base/Checkable.parts.d.ts.map +1 -1
- package/dist/components/base/Checkable.parts.js +2 -2
- package/dist/components/base/Checkable.parts.js.map +1 -1
- package/dist/components/base/Field.meta.d.ts +1 -2
- package/dist/components/base/Field.meta.d.ts.map +1 -1
- package/dist/components/base/Field.parts.d.ts +5 -4
- package/dist/components/base/Field.parts.d.ts.map +1 -1
- package/dist/components/base/Field.parts.js +1 -1
- package/dist/components/base/Field.parts.js.map +1 -1
- package/dist/components/base/MaybeButtonOrLink.d.ts +1 -1
- package/dist/components/base/MaybeButtonOrLink.d.ts.map +1 -1
- package/dist/components/base/Portal.d.ts +1 -1
- package/dist/components/base/Portal.d.ts.map +1 -1
- package/dist/components/base/Portal.js +3 -6
- package/dist/components/base/Portal.js.map +1 -1
- package/dist/components/base/Render.d.ts +21 -6
- package/dist/components/base/Render.d.ts.map +1 -1
- package/dist/components/base/Render.js +3 -2
- package/dist/components/base/Render.js.map +1 -1
- package/dist/components/base/Transition.js +2 -2
- package/dist/components/base/Transition.meta.d.ts +1 -1
- package/dist/components/base/Transition.meta.d.ts.map +1 -1
- package/dist/components/base/Transition.meta.js +1 -0
- package/dist/components/base/Transition.meta.js.map +1 -1
- package/dist/components/base/index.d.ts +1 -2
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/base/index.js +1 -2
- package/dist/components/base/index.js.map +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +3 -1
- package/dist/components/index.js.map +1 -1
- 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/index.js.map +1 -1
- package/dist/hooks/useCSSProp.d.ts.map +1 -1
- package/dist/hooks/useCSSProp.js +6 -6
- package/dist/hooks/useCSSProp.js.map +1 -1
- package/dist/hooks/useCSSProps.d.ts +11 -13
- package/dist/hooks/useCSSProps.d.ts.map +1 -1
- package/dist/hooks/useCSSProps.js +11 -19
- package/dist/hooks/useCSSProps.js.map +1 -1
- package/dist/hooks/useCSSPropsPolyfill.d.ts +1 -1
- package/dist/hooks/useCSSPropsPolyfill.d.ts.map +1 -1
- package/dist/hooks/useCSSPropsPolyfill.js +12 -20
- package/dist/hooks/useCSSPropsPolyfill.js.map +1 -1
- package/dist/hooks/useCSSState.d.ts.map +1 -1
- package/dist/hooks/useCSSState.js +7 -3
- package/dist/hooks/useCSSState.js.map +1 -1
- package/dist/hooks/useEffectWithRefDeps.d.ts +2 -2
- package/dist/hooks/useEffectWithRefDeps.d.ts.map +1 -1
- package/dist/hooks/useEffectWithRefDeps.js +1 -1
- package/dist/hooks/useEffectWithRefDeps.js.map +1 -1
- package/dist/hooks/useFirstRender.d.ts +14 -0
- package/dist/hooks/useFirstRender.d.ts.map +1 -0
- package/dist/hooks/useFirstRender.js +20 -0
- package/dist/hooks/useFirstRender.js.map +1 -0
- package/dist/hooks/useGDS.d.ts +1 -1
- package/dist/hooks/usePrevious.d.ts +6 -4
- package/dist/hooks/usePrevious.d.ts.map +1 -1
- package/dist/hooks/usePrevious.js +6 -4
- package/dist/hooks/usePrevious.js.map +1 -1
- package/dist/hooks/useRefWithInit.d.ts +2 -2
- package/dist/hooks/useRefWithInit.d.ts.map +1 -1
- package/dist/hooks/useRefWithInit.js.map +1 -1
- package/dist/hooks/useStyleObserver.d.ts +2 -2
- package/dist/hooks/useStyleObserver.d.ts.map +1 -1
- package/dist/hooks/useStyleObserver.js.map +1 -1
- package/dist/icons/CalendarDynamicIcon.d.ts +8 -5
- package/dist/icons/CalendarDynamicIcon.d.ts.map +1 -1
- package/dist/icons/CalendarDynamicIcon.js +5 -2
- package/dist/icons/CalendarDynamicIcon.js.map +1 -1
- package/dist/icons/CopyInteractiveIcon.d.ts +5 -4
- package/dist/icons/CopyInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/CopyInteractiveIcon.js +2 -2
- package/dist/icons/CopyInteractiveIcon.js.map +1 -1
- package/dist/icons/SidebarLeftInteractiveIcon.d.ts +4 -3
- package/dist/icons/SidebarLeftInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/SidebarLeftInteractiveIcon.js +2 -2
- package/dist/icons/SidebarLeftInteractiveIcon.js.map +1 -1
- package/dist/icons/SidebarRightInteractiveIcon.d.ts +4 -3
- package/dist/icons/SidebarRightInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/SidebarRightInteractiveIcon.js +2 -2
- package/dist/icons/SidebarRightInteractiveIcon.js.map +1 -1
- package/dist/tailwind-plugin.d.ts.map +1 -1
- package/dist/tailwind-plugin.js +8 -5
- package/dist/tailwind-plugin.js.map +1 -1
- package/dist/utils/cn.d.ts +3 -1
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +3 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/getCSSPropsAttributes.d.ts +10 -3
- package/dist/utils/getCSSPropsAttributes.d.ts.map +1 -1
- package/dist/utils/getCSSPropsAttributes.js +4 -5
- package/dist/utils/getCSSPropsAttributes.js.map +1 -1
- package/dist/utils/splitProps.d.ts +1 -4
- package/dist/utils/splitProps.d.ts.map +1 -1
- package/dist/utils/splitProps.js +2 -7
- package/dist/utils/splitProps.js.map +1 -1
- package/dist/utils/trimReactNode.d.ts +10 -8
- package/dist/utils/trimReactNode.d.ts.map +1 -1
- package/dist/utils/trimReactNode.js +10 -8
- package/dist/utils/trimReactNode.js.map +1 -1
- package/package.json +17 -17
- package/src/GDSProvider.tsx +11 -9
- package/src/components/Address.tsx +2 -2
- package/src/components/Avatar.tsx +10 -11
- package/src/components/Breadcrumbs.meta.ts +3 -1
- package/src/components/Breadcrumbs.parts.tsx +18 -30
- package/src/components/Button.tsx +27 -13
- package/src/components/ButtonGroup.meta.ts +8 -0
- package/src/components/ButtonGroup.tsx +1 -5
- package/src/components/Card.meta.ts +1 -0
- package/src/components/Card.tsx +1 -1
- package/src/components/Checkbox.meta.ts +1 -5
- package/src/components/Chip.meta.ts +23 -0
- package/src/components/Chip.parts.tsx +319 -0
- package/src/components/Chip.tsx +7 -0
- package/src/components/CodeBlock.parts.tsx +75 -50
- package/src/components/CodeInline.tsx +3 -3
- package/src/components/CopyButton.meta.ts +1 -6
- package/src/components/CopyButton.tsx +3 -4
- package/src/components/CurrencyInput.meta.ts +1 -5
- package/src/components/DescriptionList.parts.tsx +2 -1
- package/src/components/Icon.meta.ts +1 -0
- package/src/components/Icon.tsx +4 -4
- package/src/components/Input.meta.ts +1 -5
- package/src/components/Input.tsx +5 -6
- package/src/components/Keyboard.tsx +1 -1
- package/src/components/Link.meta.ts +1 -0
- package/src/components/Link.tsx +2 -3
- package/src/components/Menu.meta.ts +39 -1
- package/src/components/Menu.parts.tsx +553 -549
- package/src/components/Modal.meta.ts +1 -1
- package/src/components/Modal.parts.tsx +67 -68
- package/src/components/OTCInput.meta.ts +1 -5
- package/src/components/OTCInput.tsx +1 -1
- package/src/components/Radio.meta.ts +1 -5
- package/src/components/SegmentedControl.meta.ts +3 -1
- package/src/components/SegmentedControl.parts.tsx +40 -44
- package/src/components/Stepper.meta.ts +1 -0
- package/src/components/Stepper.parts.tsx +3 -1
- package/src/components/Switch.meta.ts +1 -5
- package/src/components/TabSet.meta.ts +3 -1
- package/src/components/TabSet.parts.tsx +1 -1
- package/src/components/TextArea.meta.ts +1 -5
- package/src/components/ToggleButton.meta.ts +1 -6
- package/src/components/ToggleButton.tsx +1 -3
- package/src/components/Tooltip.meta.ts +13 -2
- package/src/components/Tooltip.parts.tsx +215 -159
- package/src/components/Tooltip.tsx +2 -2
- package/src/components/base/Addon.meta.ts +3 -1
- package/src/components/base/ButtonOrLink.parts.tsx +91 -73
- package/src/components/base/Checkable.parts.tsx +6 -13
- package/src/components/base/Field.parts.tsx +5 -5
- package/src/components/base/Portal.tsx +5 -7
- package/src/components/base/Render.tsx +37 -15
- package/src/components/base/Transition.meta.ts +1 -0
- package/src/components/base/Transition.tsx +2 -2
- package/src/components/base/index.ts +8 -2
- package/src/components/index.ts +3 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useCSSProp.ts +6 -8
- package/src/hooks/useCSSProps.ts +13 -22
- package/src/hooks/useCSSPropsPolyfill.ts +15 -23
- package/src/hooks/useCSSState.ts +11 -6
- package/src/hooks/useEffectWithRefDeps.ts +2 -2
- package/src/hooks/useFirstRender.ts +36 -0
- package/src/hooks/usePrevious.ts +6 -4
- package/src/hooks/useRefWithInit.ts +2 -2
- package/src/hooks/useStyleObserver.ts +5 -1
- package/src/icons/CalendarDynamicIcon.tsx +16 -6
- package/src/icons/CopyInteractiveIcon.tsx +10 -5
- package/src/icons/SidebarLeftInteractiveIcon.tsx +9 -5
- package/src/icons/SidebarRightInteractiveIcon.tsx +9 -5
- package/src/tailwind-plugin.ts +8 -5
- package/src/utils/cn.ts +3 -1
- package/src/utils/getCSSPropsAttributes.ts +13 -8
- package/src/utils/splitProps.ts +9 -9
- package/src/utils/trimReactNode.tsx +10 -8
- package/dist/components/base/ButtonOrLink.meta.d.ts +0 -2
- package/dist/components/base/ButtonOrLink.meta.d.ts.map +0 -1
- package/dist/components/base/ButtonOrLink.meta.js +0 -6
- package/dist/components/base/ButtonOrLink.meta.js.map +0 -1
- package/src/components/base/ButtonOrLink.meta.ts +0 -6
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
createContext,
|
|
5
|
-
useCallback,
|
|
6
5
|
useContext,
|
|
7
6
|
useEffect,
|
|
8
|
-
useMemo,
|
|
9
7
|
useRef,
|
|
10
8
|
useState,
|
|
11
9
|
type ComponentProps,
|
|
@@ -13,24 +11,25 @@ import {
|
|
|
13
11
|
type ReactNode,
|
|
14
12
|
} from 'react'
|
|
15
13
|
import { Tooltip } from '@base-ui/react/tooltip'
|
|
14
|
+
import type { SetReturnType } from 'type-fest'
|
|
16
15
|
|
|
17
16
|
import { twToPx, type GDSComponentProps } from '@graphprotocol/gds-css'
|
|
18
17
|
|
|
19
18
|
import { useControlled, useCSSPropsPolyfill, useGDS } from '../hooks/index.ts'
|
|
20
|
-
import { cn, getCSSPropsAttributes } from '../utils/index.ts'
|
|
19
|
+
import { cn, getCSSPropsAttributes, getReactNodeKey } from '../utils/index.ts'
|
|
21
20
|
import { Portal } from './base/Portal.tsx'
|
|
22
|
-
import { Render, type
|
|
21
|
+
import { Render, type RenderProp } from './base/Render.tsx'
|
|
23
22
|
import { TooltipMeta } from './Tooltip.meta.ts'
|
|
24
23
|
|
|
25
|
-
type
|
|
24
|
+
type Content = Exclude<ReactNode, undefined>
|
|
25
|
+
type SetDeferredContentFunction = (content: Content, priority?: number) => void
|
|
26
26
|
|
|
27
27
|
const TooltipContext = createContext<{
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
collectContent: SetDeferredContentFunction
|
|
29
|
+
inheritContent: SetDeferredContentFunction
|
|
30
|
+
disableDescendants: boolean
|
|
31
|
+
registerDescendantSetOpen: (descendantSetOpen: (newOpen: boolean) => void) => void
|
|
30
32
|
} | null>(null)
|
|
31
|
-
const TooltipCollectorContext = createContext<
|
|
32
|
-
((content: DefinedReactNode, priority?: number) => void) | null
|
|
33
|
-
>(null)
|
|
34
33
|
|
|
35
34
|
const OPEN_DELAY = 300
|
|
36
35
|
|
|
@@ -40,24 +39,26 @@ export interface TooltipProps
|
|
|
40
39
|
* The content to display in the tooltip. If not provided, defaults to any content collected from
|
|
41
40
|
* `Tooltip.Content` or `Tooltip.Collector` descendants.
|
|
42
41
|
*/
|
|
43
|
-
content?:
|
|
42
|
+
content?: Content | undefined
|
|
44
43
|
/** Force the tooltip to be open or closed. */
|
|
45
44
|
open?: boolean | undefined
|
|
46
45
|
/** Called when the tooltip is opened or closed. */
|
|
47
46
|
onOpenChange?: ((open: boolean) => void) | undefined
|
|
48
47
|
/** The element that triggers the tooltip. */
|
|
49
|
-
children: ReactElement
|
|
48
|
+
children: ReactElement
|
|
50
49
|
}
|
|
51
50
|
|
|
52
51
|
export function TooltipRoot({
|
|
53
52
|
ref: passedRef,
|
|
54
53
|
content: passedContent,
|
|
55
|
-
|
|
54
|
+
side,
|
|
56
55
|
gap,
|
|
57
56
|
align,
|
|
57
|
+
alignOffset,
|
|
58
58
|
open: controlledOpen,
|
|
59
59
|
onOpenChange,
|
|
60
60
|
disabled,
|
|
61
|
+
overrideDescendants,
|
|
61
62
|
className,
|
|
62
63
|
style,
|
|
63
64
|
children,
|
|
@@ -65,44 +66,85 @@ export function TooltipRoot({
|
|
|
65
66
|
}: TooltipProps) {
|
|
66
67
|
const { dirProps } = useGDS()
|
|
67
68
|
|
|
69
|
+
const ancestorTooltip = useContext(TooltipContext)
|
|
70
|
+
const triggerRef = useRef<HTMLButtonElement>(null)
|
|
71
|
+
|
|
68
72
|
const [cssPropsPolyfillRef, cssPropsPolyfillAttributes, cssProps] = useCSSPropsPolyfill(
|
|
69
73
|
TooltipMeta,
|
|
70
|
-
{
|
|
71
|
-
{ returnPropValues: {
|
|
74
|
+
{ side, align, disabled, overrideDescendants },
|
|
75
|
+
{ returnPropValues: { side, gap, align, alignOffset, disabled, overrideDescendants } },
|
|
72
76
|
)
|
|
73
77
|
const cssPropsAttributes = getCSSPropsAttributes(
|
|
74
78
|
TooltipMeta,
|
|
75
|
-
{
|
|
79
|
+
{ side, gap, align, alignOffset, disabled, overrideDescendants },
|
|
76
80
|
style,
|
|
77
81
|
)
|
|
78
82
|
|
|
79
|
-
const
|
|
80
|
-
const
|
|
83
|
+
const [setCollectedContent, collectedContent] = useDeferredContent()
|
|
84
|
+
const [setInheritedContent, inheritedContent] = useDeferredContent()
|
|
85
|
+
|
|
86
|
+
const content =
|
|
87
|
+
passedContent !== undefined
|
|
88
|
+
? passedContent
|
|
89
|
+
: collectedContent !== undefined
|
|
90
|
+
? collectedContent
|
|
91
|
+
: inheritedContent
|
|
81
92
|
|
|
82
|
-
const
|
|
83
|
-
|
|
93
|
+
const triggerDisabled =
|
|
94
|
+
'props' in children &&
|
|
95
|
+
children.props &&
|
|
96
|
+
typeof children.props === 'object' &&
|
|
97
|
+
'disabled' in children.props
|
|
98
|
+
? children.props.disabled === true
|
|
99
|
+
: false
|
|
100
|
+
|
|
101
|
+
// Propagate the passed/collected content up for the first tooltip ancestor that needs them
|
|
102
|
+
if (passedContent !== undefined && !cssProps.disabled && !triggerDisabled) {
|
|
103
|
+
ancestorTooltip?.inheritContent(passedContent, 3)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const collectContent: SetDeferredContentFunction = (newCollectedContent, priority) => {
|
|
107
|
+
const prioritizedCollectedContent = setCollectedContent(newCollectedContent, priority)
|
|
108
|
+
if (!triggerDisabled) ancestorTooltip?.inheritContent(prioritizedCollectedContent, 2)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const inheritContent: SetDeferredContentFunction = (newInheritedContent, priority) => {
|
|
112
|
+
void setInheritedContent(newInheritedContent, priority)
|
|
113
|
+
if (!triggerDisabled) ancestorTooltip?.inheritContent(newInheritedContent, 1)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const disabledByAncestor = ancestorTooltip?.disableDescendants ?? false
|
|
117
|
+
const disableDescendants =
|
|
118
|
+
disabledByAncestor ||
|
|
119
|
+
triggerDisabled ||
|
|
120
|
+
(content !== undefined && !cssProps.disabled && cssProps.overrideDescendants)
|
|
121
|
+
const enabled = Boolean(content) && !cssProps.disabled && !triggerDisabled && !disabledByAncestor
|
|
84
122
|
|
|
85
|
-
const enabled = !cssProps.disabled && !hasEnabledTooltipAncestor && Boolean(content)
|
|
86
123
|
const [open, ownSetOpen] = useControlled(controlledOpen, false, onOpenChange)
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
}
|
|
124
|
+
const descendantSetOpen = useRef<(newOpen: boolean) => void>(null)
|
|
125
|
+
const registerDescendantSetOpen = (newDescendantSetOpen: (newOpen: boolean) => void) => {
|
|
126
|
+
descendantSetOpen.current = newDescendantSetOpen
|
|
127
|
+
}
|
|
128
|
+
const justOpenedRef = useRef(false)
|
|
91
129
|
const setOpen = (newOpen: boolean) => {
|
|
92
130
|
ownSetOpen(newOpen)
|
|
93
131
|
/**
|
|
94
|
-
* Notify
|
|
95
|
-
* moving the cursor away from a `CopyButton` while its "Copied!" tooltip is shown closes
|
|
96
|
-
* inner tooltip as well (which doesn't happen automatically because nested
|
|
97
|
-
* disabled to prevent a lot of weirdness).
|
|
132
|
+
* Notify overridden descendant tooltips of the open state change. This ensures, for example,
|
|
133
|
+
* that moving the cursor away from a `CopyButton` while its "Copied!" tooltip is shown closes
|
|
134
|
+
* the inner tooltip as well (which doesn't happen automatically because tooltips nested under
|
|
135
|
+
* an enabled tooltip are disabled to prevent a lot of weirdness).
|
|
98
136
|
*/
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
137
|
+
if (cssProps.overrideDescendants) {
|
|
138
|
+
descendantSetOpen.current?.(newOpen)
|
|
139
|
+
}
|
|
140
|
+
if (newOpen) {
|
|
141
|
+
justOpenedRef.current = true
|
|
142
|
+
window.setTimeout(() => {
|
|
143
|
+
justOpenedRef.current = false
|
|
144
|
+
}, 0)
|
|
145
|
+
}
|
|
105
146
|
}
|
|
147
|
+
ancestorTooltip?.registerDescendantSetOpen(setOpen)
|
|
106
148
|
|
|
107
149
|
const openTimeoutRef = useRef<number>(undefined)
|
|
108
150
|
const clearOpenTimeout = () => {
|
|
@@ -114,148 +156,145 @@ export function TooltipRoot({
|
|
|
114
156
|
clearOpenTimeout()
|
|
115
157
|
}
|
|
116
158
|
|
|
117
|
-
const tooltipContextValue = useMemo(
|
|
118
|
-
() => ({
|
|
119
|
-
enabled,
|
|
120
|
-
registerNestedSetOpen,
|
|
121
|
-
}),
|
|
122
|
-
[enabled, registerNestedSetOpen],
|
|
123
|
-
)
|
|
124
|
-
|
|
125
159
|
return (
|
|
126
|
-
<TooltipContext.Provider
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
160
|
+
<TooltipContext.Provider
|
|
161
|
+
value={{
|
|
162
|
+
collectContent,
|
|
163
|
+
inheritContent,
|
|
164
|
+
disableDescendants,
|
|
165
|
+
registerDescendantSetOpen,
|
|
166
|
+
}}
|
|
167
|
+
>
|
|
168
|
+
<Tooltip.Root
|
|
169
|
+
disabled={!enabled}
|
|
170
|
+
disableHoverablePopup
|
|
171
|
+
open={open}
|
|
172
|
+
onOpenChange={(newOpen, eventDetails) => {
|
|
173
|
+
clearOpenTimeout()
|
|
174
|
+
if (!enabled) return
|
|
175
|
+
// Disable Base UI's default behavior of closing the tooltip when pressing the trigger
|
|
176
|
+
if (!newOpen && eventDetails.reason === 'trigger-press') {
|
|
177
|
+
// Ensure clicking on the trigger before the tooltip has a chance to open doesn't prevent it from opening
|
|
178
|
+
openTimeoutRef.current = window.setTimeout(() => setOpen(true), OPEN_DELAY)
|
|
179
|
+
return
|
|
180
|
+
}
|
|
181
|
+
// Make `overrideDescendants={false}` work as expected (see the `NestedSimultaneous` story)
|
|
182
|
+
if (
|
|
183
|
+
!newOpen &&
|
|
184
|
+
eventDetails.reason === 'none' &&
|
|
185
|
+
(justOpenedRef.current ||
|
|
186
|
+
(!cssProps.overrideDescendants && triggerRef.current?.matches(':hover')))
|
|
187
|
+
) {
|
|
188
|
+
return
|
|
189
|
+
}
|
|
190
|
+
setOpen(newOpen)
|
|
191
|
+
}}
|
|
192
|
+
>
|
|
193
|
+
<Tooltip.Trigger
|
|
194
|
+
ref={triggerRef}
|
|
195
|
+
delay={OPEN_DELAY}
|
|
196
|
+
closeDelay={100}
|
|
197
|
+
render={({ onClick: _onClick, ...renderProps }) => (
|
|
198
|
+
<Render {...(enabled ? renderProps : {})} render={children} />
|
|
199
|
+
)}
|
|
200
|
+
/>
|
|
201
|
+
<Tooltip.Portal>
|
|
202
|
+
<Tooltip.Positioner
|
|
203
|
+
side={
|
|
204
|
+
cssProps.side === 'start'
|
|
205
|
+
? 'inline-start'
|
|
206
|
+
: cssProps.side === 'end'
|
|
207
|
+
? 'inline-end'
|
|
208
|
+
: cssProps.side
|
|
140
209
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
className={cn(
|
|
164
|
-
`gds-tooltip root-block u:max-w-(--available-width) u:rounded-4 u:bg-default u:px-2 u:py-1 u:text-12 u:text-default u:transition
|
|
165
|
-
i:origin-(--transform-origin)
|
|
166
|
-
i:data-ending-style:opacity-0
|
|
167
|
-
i:data-starting-style:opacity-0
|
|
168
|
-
i:data-starting-style:data-[side=bottom]:-translate-y-1
|
|
169
|
-
i:data-starting-style:data-[side=inline-end]:-translate-x-1
|
|
170
|
-
i:data-starting-style:data-[side=inline-start]:translate-x-1
|
|
171
|
-
i:data-starting-style:data-[side=top]:translate-y-1
|
|
172
|
-
i:rtl:data-starting-style:data-[side=inline-end]:translate-x-1
|
|
173
|
-
i:rtl:data-starting-style:data-[side=inline-start]:-translate-x-1`,
|
|
174
|
-
className,
|
|
175
|
-
)}
|
|
176
|
-
{...cssPropsAttributes}
|
|
177
|
-
{...cssPropsPolyfillAttributes}
|
|
178
|
-
{...props}
|
|
179
|
-
>
|
|
180
|
-
{content}
|
|
181
|
-
</Tooltip.Popup>
|
|
182
|
-
</Tooltip.Positioner>
|
|
183
|
-
</Tooltip.Portal>
|
|
184
|
-
{/* Ensure changes to CSS props are detected even when the tooltip is not mounted */}
|
|
185
|
-
<Portal>
|
|
186
|
-
<span
|
|
187
|
-
ref={cssPropsPolyfillRef}
|
|
188
|
-
className={cn('gds-tooltip i:invisible', className)}
|
|
210
|
+
sideOffset={twToPx(cssProps.gap)}
|
|
211
|
+
align={cssProps.align}
|
|
212
|
+
alignOffset={twToPx(cssProps.alignOffset)}
|
|
213
|
+
collisionPadding={8}
|
|
214
|
+
{...dirProps}
|
|
215
|
+
>
|
|
216
|
+
<Tooltip.Popup
|
|
217
|
+
ref={passedRef}
|
|
218
|
+
data-side={cssProps.side}
|
|
219
|
+
className={cn(
|
|
220
|
+
`gds-tooltip root-block u:max-w-(--available-width) u:rounded-4 u:bg-default u:px-2 u:py-1 u:text-12 u:transition
|
|
221
|
+
i:origin-(--transform-origin)
|
|
222
|
+
i:data-ending-style:opacity-0
|
|
223
|
+
i:data-starting-style:opacity-0
|
|
224
|
+
i:data-starting-style:data-[side=bottom]:-translate-y-1
|
|
225
|
+
i:data-starting-style:data-[side=end]:-translate-x-1
|
|
226
|
+
i:data-starting-style:data-[side=start]:translate-x-1
|
|
227
|
+
i:data-starting-style:data-[side=top]:translate-y-1
|
|
228
|
+
i:rtl:data-starting-style:data-[side=end]:translate-x-1
|
|
229
|
+
i:rtl:data-starting-style:data-[side=start]:-translate-x-1`,
|
|
230
|
+
className,
|
|
231
|
+
)}
|
|
189
232
|
{...cssPropsAttributes}
|
|
190
233
|
{...cssPropsPolyfillAttributes}
|
|
191
234
|
{...props}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
235
|
+
>
|
|
236
|
+
{content}
|
|
237
|
+
</Tooltip.Popup>
|
|
238
|
+
</Tooltip.Positioner>
|
|
239
|
+
</Tooltip.Portal>
|
|
240
|
+
{/* Ensure changes to CSS props are detected even when the tooltip is not mounted */}
|
|
241
|
+
<Portal>
|
|
242
|
+
<span
|
|
243
|
+
ref={cssPropsPolyfillRef}
|
|
244
|
+
className={cn('gds-tooltip i:invisible', className)}
|
|
245
|
+
{...cssPropsAttributes}
|
|
246
|
+
{...cssPropsPolyfillAttributes}
|
|
247
|
+
{...props}
|
|
248
|
+
/>
|
|
249
|
+
</Portal>
|
|
250
|
+
</Tooltip.Root>
|
|
196
251
|
</TooltipContext.Provider>
|
|
197
252
|
)
|
|
198
253
|
}
|
|
199
254
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
255
|
+
function useDeferredContent() {
|
|
256
|
+
const [content, setContent] = useState<Content | undefined>(undefined)
|
|
257
|
+
const pendingContentRef = useRef<Content | undefined>(undefined)
|
|
258
|
+
const pendingPriorityRef = useRef<number | undefined>(undefined)
|
|
205
259
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
/** Hook for components to collect tooltip content from children. */
|
|
220
|
-
export function useCollectedTooltip() {
|
|
221
|
-
const [collectedContent, setCollectedContent] = useState<DefinedReactNode>(null)
|
|
222
|
-
const pendingContent = useRef<DefinedReactNode>(null)
|
|
223
|
-
const pendingPriority = useRef<number>(0)
|
|
224
|
-
|
|
225
|
-
// Collect tooltip during render phase (store in ref to avoid state update during render)
|
|
226
|
-
const onCollect = (content: DefinedReactNode, priority = 0) => {
|
|
227
|
-
// Only update if this content has higher priority than what we've collected so far
|
|
228
|
-
if (priority >= pendingPriority.current) {
|
|
229
|
-
pendingContent.current = content
|
|
230
|
-
pendingPriority.current = priority
|
|
260
|
+
// Store the content in a ref to avoid updating the state during render
|
|
261
|
+
const setDeferredContent: SetReturnType<SetDeferredContentFunction, Content> = (
|
|
262
|
+
newContent: Content,
|
|
263
|
+
priority = 0,
|
|
264
|
+
) => {
|
|
265
|
+
// If we've already stored content this render, only replace it if the new content has higher priority
|
|
266
|
+
if (
|
|
267
|
+
pendingContentRef.current === undefined ||
|
|
268
|
+
priority >= (pendingPriorityRef.current ?? -Infinity)
|
|
269
|
+
) {
|
|
270
|
+
pendingContentRef.current = newContent
|
|
271
|
+
pendingPriorityRef.current = priority
|
|
231
272
|
}
|
|
273
|
+
return pendingContentRef.current
|
|
232
274
|
}
|
|
233
275
|
|
|
234
|
-
// Commit the
|
|
235
|
-
// oxlint-disable-next-line react-hooks/exhaustive-deps -- Must run after every render to sync
|
|
276
|
+
// Commit the stored content after render
|
|
277
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps -- Must run after every render to sync
|
|
236
278
|
useEffect(() => {
|
|
237
|
-
if (
|
|
238
|
-
|
|
279
|
+
if (getReactNodeKey(content) !== getReactNodeKey(pendingContentRef.current)) {
|
|
280
|
+
setContent(pendingContentRef.current)
|
|
239
281
|
}
|
|
240
282
|
// Reset for next render
|
|
241
|
-
|
|
242
|
-
|
|
283
|
+
pendingContentRef.current = undefined
|
|
284
|
+
pendingPriorityRef.current = undefined
|
|
243
285
|
})
|
|
244
286
|
|
|
245
|
-
return
|
|
246
|
-
onCollect,
|
|
247
|
-
collectedContent,
|
|
248
|
-
}
|
|
287
|
+
return [setDeferredContent, content] as const
|
|
249
288
|
}
|
|
250
289
|
|
|
251
290
|
export interface TooltipContentProps {
|
|
252
|
-
render?:
|
|
291
|
+
render?: RenderProp | undefined
|
|
253
292
|
children: ReactNode
|
|
254
293
|
}
|
|
255
294
|
|
|
256
295
|
/**
|
|
257
296
|
* Wrap any text or `ReactNode` with this component to use it as the default `content` of the
|
|
258
|
-
*
|
|
297
|
+
* closest `Tooltip`, in addition to rendering it inline. It is meant to be wrapped in a `sr-only`
|
|
259
298
|
* element, so that the content rendered inline is visually hidden but accessible to screen readers,
|
|
260
299
|
* unlike the content rendered in the tooltip itself, which is hidden from the accessibility tree
|
|
261
300
|
* since most tooltips are decorative. This allows a tooltip to be non-decorative, in the rare case
|
|
@@ -263,15 +302,32 @@ export interface TooltipContentProps {
|
|
|
263
302
|
* from the trigger's accessible name).
|
|
264
303
|
*/
|
|
265
304
|
export function TooltipContent({ render, children }: TooltipContentProps) {
|
|
266
|
-
const
|
|
305
|
+
const ancestorTooltip = useContext(TooltipContext)
|
|
267
306
|
|
|
268
|
-
|
|
269
|
-
collectTooltip(children || null, 100)
|
|
270
|
-
}
|
|
307
|
+
ancestorTooltip?.collectContent(children || null)
|
|
271
308
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
309
|
+
return render ? <Render render={render}>{children}</Render> : children
|
|
310
|
+
}
|
|
311
|
+
TooltipContent.displayName = 'Tooltip.Content'
|
|
312
|
+
|
|
313
|
+
const TooltipCollectorContext = createContext<SetDeferredContentFunction | null>(null)
|
|
275
314
|
|
|
276
|
-
|
|
315
|
+
export interface TooltipCollectorProps {
|
|
316
|
+
children: ReactNode
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export function TooltipCollector({ children }: TooltipCollectorProps) {
|
|
320
|
+
const ancestorTooltip = useContext(TooltipContext)
|
|
321
|
+
|
|
322
|
+
return (
|
|
323
|
+
<TooltipCollectorContext.Provider value={ancestorTooltip?.collectContent ?? null}>
|
|
324
|
+
{children}
|
|
325
|
+
</TooltipCollectorContext.Provider>
|
|
326
|
+
)
|
|
327
|
+
}
|
|
328
|
+
TooltipCollector.displayName = 'Tooltip.Collector'
|
|
329
|
+
|
|
330
|
+
/** Hook for components to send tooltip content up to a collector. */
|
|
331
|
+
export function useTooltipCollector() {
|
|
332
|
+
return useContext(TooltipCollectorContext)
|
|
277
333
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { TooltipCollector, TooltipContent, TooltipRoot } from './Tooltip.parts.tsx'
|
|
2
2
|
|
|
3
3
|
export const Tooltip = Object.assign(TooltipRoot, {
|
|
4
|
-
Collector: TooltipCollector,
|
|
5
4
|
Content: TooltipContent,
|
|
5
|
+
Collector: TooltipCollector,
|
|
6
6
|
})
|
|
7
7
|
|
|
8
|
-
export {
|
|
8
|
+
export { useTooltipCollector } from './Tooltip.parts.tsx'
|
|
9
9
|
|
|
10
10
|
export type { TooltipProps, TooltipCollectorProps, TooltipContentProps } from './Tooltip.parts.tsx'
|