@tamagui/tooltip 1.0.1-beta.99 → 1.0.1-rc.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.
Files changed (44) hide show
  1. package/dist/cjs/Tooltip.js +110 -163
  2. package/dist/cjs/Tooltip.js.map +3 -3
  3. package/dist/cjs/Tooltip.native.js +3 -5
  4. package/dist/cjs/Tooltip.native.js.map +2 -2
  5. package/dist/cjs/TooltipSimple.js +92 -0
  6. package/dist/cjs/TooltipSimple.js.map +7 -0
  7. package/dist/cjs/TooltipSimple.native.js +32 -0
  8. package/dist/cjs/TooltipSimple.native.js.map +7 -0
  9. package/dist/cjs/index.js +2 -0
  10. package/dist/cjs/index.js.map +2 -2
  11. package/dist/esm/Tooltip.js +105 -163
  12. package/dist/esm/Tooltip.js.map +3 -3
  13. package/dist/esm/Tooltip.native.js +1 -3
  14. package/dist/esm/Tooltip.native.js.map +2 -2
  15. package/dist/esm/TooltipSimple.js +68 -0
  16. package/dist/esm/TooltipSimple.js.map +7 -0
  17. package/dist/esm/TooltipSimple.native.js +8 -0
  18. package/dist/esm/TooltipSimple.native.js.map +7 -0
  19. package/dist/esm/index.js +1 -0
  20. package/dist/esm/index.js.map +2 -2
  21. package/dist/jsx/Tooltip.js +67 -89
  22. package/dist/jsx/Tooltip.js.map +3 -3
  23. package/dist/jsx/Tooltip.native.js +1 -3
  24. package/dist/jsx/Tooltip.native.js.map +2 -2
  25. package/dist/jsx/TooltipSimple.js +39 -0
  26. package/dist/jsx/TooltipSimple.js.map +7 -0
  27. package/dist/jsx/TooltipSimple.native.js +8 -0
  28. package/dist/jsx/TooltipSimple.native.js.map +7 -0
  29. package/dist/jsx/index.js +1 -0
  30. package/dist/jsx/index.js.map +2 -2
  31. package/package.json +19 -17
  32. package/src/Tooltip.native.tsx +0 -2
  33. package/src/Tooltip.tsx +33 -76
  34. package/src/TooltipSimple.native.tsx +5 -0
  35. package/src/TooltipSimple.tsx +68 -0
  36. package/src/index.tsx +1 -0
  37. package/types/Tooltip.d.ts +17 -22
  38. package/types/Tooltip.native.d.ts +0 -1
  39. package/types/TooltipSimple.d.ts +10 -0
  40. package/types/TooltipSimple.native.d.ts +2 -0
  41. package/types/index.d.ts +1 -0
  42. package/types/Tooltip.d.ts.map +0 -1
  43. package/types/Tooltip.native.d.ts.map +0 -1
  44. package/types/index.d.ts.map +0 -1
@@ -10,7 +10,7 @@ import {
10
10
  useInteractions,
11
11
  useRole
12
12
  } from "@floating-ui/react-dom-interactions";
13
- import { useId, withStaticProperties } from "@tamagui/core";
13
+ import { useEvent, useId, withStaticProperties } from "@tamagui/core";
14
14
  import {
15
15
  PopoverAnchor,
16
16
  PopoverArrow,
@@ -24,103 +24,81 @@ import {
24
24
  Popper,
25
25
  usePopperContext
26
26
  } from "@tamagui/popper";
27
- import { Paragraph } from "@tamagui/text";
28
27
  import * as React from "react";
29
- const TooltipContent = React.forwardRef(({ __scopePopover, ...props }, ref) => {
30
- const popperScope = usePopoverScope(__scopePopover);
31
- const popper = usePopperContext("PopperContent", popperScope["__scopePopper"]);
32
- return <PopoverContent disableRemoveScroll trapFocus={false} padding={props.size || popper.size || "$2"} componentName="TooltipContent" pointerEvents="none" ref={ref} {...props} />;
33
- });
28
+ const TooltipContent = React.forwardRef(
29
+ ({ __scopePopover, ...props }, ref) => {
30
+ const popperScope = usePopoverScope(__scopePopover);
31
+ const popper = usePopperContext("PopperContent", popperScope["__scopePopper"]);
32
+ return <PopoverContent componentName="TooltipContent" disableRemoveScroll trapFocus={false} padding={props.size || popper.size || "$2"} pointerEvents="none" ref={ref} {...props} />;
33
+ }
34
+ );
34
35
  const TooltipArrow = React.forwardRef((props, ref) => {
35
36
  return <PopoverArrow componentName="TooltipArrow" ref={ref} {...props} />;
36
37
  });
37
- const TooltipGroup = FloatingDelayGroup;
38
- const Tooltip = withStaticProperties((props) => {
39
- const {
40
- __scopePopover,
41
- children,
42
- restMs = 500,
43
- delay: delayProp,
44
- onOpenChange: onOpenChangeProp,
45
- ...restProps
46
- } = props;
47
- const popperScope = usePopoverScope(__scopePopover);
48
- const triggerRef = React.useRef(null);
49
- const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);
50
- const { delay: delayGroup, setCurrentId } = useDelayGroupContext();
51
- const delay = delayProp != null ? delayProp : delayGroup;
52
- const [open, setOpen] = React.useState(false);
53
- const id = props.groupId;
54
- const onOpenChange = React.useCallback((open2) => {
55
- setOpen(open2);
56
- if (open2) {
57
- setCurrentId(id);
58
- }
59
- onOpenChangeProp == null ? void 0 : onOpenChangeProp(open2);
60
- }, [id, setCurrentId, onOpenChangeProp]);
61
- const useFloatingFn = (props2) => {
62
- const floating = useFloating({
63
- ...props2,
64
- open,
65
- onOpenChange
38
+ const TooltipGroup = ({ children, delay }) => {
39
+ return <FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>{children}</FloatingDelayGroup>;
40
+ };
41
+ const Tooltip = withStaticProperties(
42
+ (props) => {
43
+ const {
44
+ __scopePopover,
45
+ children,
46
+ restMs = 500,
47
+ delay: delayProp,
48
+ onOpenChange: onOpenChangeProp,
49
+ ...restProps
50
+ } = props;
51
+ const popperScope = usePopoverScope(__scopePopover);
52
+ const triggerRef = React.useRef(null);
53
+ const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);
54
+ const { delay: delayGroup, setCurrentId } = useDelayGroupContext();
55
+ const delay = delayProp ?? delayGroup;
56
+ const [open, setOpen] = React.useState(false);
57
+ const id = props.groupId;
58
+ const onOpenChange = useEvent((open2) => {
59
+ setOpen(open2);
60
+ if (open2) {
61
+ setCurrentId(id);
62
+ }
63
+ onOpenChangeProp?.(open2);
66
64
  });
67
- const { getReferenceProps, getFloatingProps } = useInteractions([
68
- useHover(floating.context, { delay, restMs }),
69
- useFocus(floating.context),
70
- useRole(floating.context, { role: "tooltip" }),
71
- useDismiss(floating.context),
72
- useDelayGroup(floating.context, { id })
73
- ]);
74
- return {
75
- ...floating,
76
- getReferenceProps,
77
- getFloatingProps
65
+ const useFloatingFn = (props2) => {
66
+ const floating = useFloating({
67
+ ...props2,
68
+ open,
69
+ onOpenChange
70
+ });
71
+ const { getReferenceProps, getFloatingProps } = useInteractions([
72
+ useHover(floating.context, { delay, restMs }),
73
+ useFocus(floating.context),
74
+ useRole(floating.context, { role: "tooltip" }),
75
+ useDismiss(floating.context),
76
+ useDelayGroup(floating.context, { id })
77
+ ]);
78
+ return {
79
+ ...floating,
80
+ getReferenceProps,
81
+ getFloatingProps
82
+ };
78
83
  };
79
- };
80
- const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open]);
81
- const voidFn = React.useCallback(() => {
82
- }, [setOpen]);
83
- return <FloatingOverrideContext.Provider value={useFloatingContext}><Popper size="$2" {...popperScope} {...restProps}><__PopoverProviderInternal scope={__scopePopover} contentId={useId()} triggerRef={triggerRef} open={open} onOpenChange={setOpen} onOpenToggle={voidFn} hasCustomAnchor={hasCustomAnchor} onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])} onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}>{children}</__PopoverProviderInternal></Popper></FloatingOverrideContext.Provider>;
84
- }, {
85
- Anchor: PopoverAnchor,
86
- Arrow: TooltipArrow,
87
- Content: TooltipContent,
88
- Trigger: PopoverTrigger
89
- });
90
- Tooltip.displayName = "Tooltip";
91
- const TooltipSimple = ({
92
- label,
93
- children,
94
- contentProps,
95
- ...tooltipProps
96
- }) => {
97
- let context;
98
- try {
99
- context = useDelayGroupContext();
100
- } catch {
101
- }
102
- const contents = <Tooltip {...tooltipProps}>
103
- <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
104
- <Tooltip.Content enterStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }} exitStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }} x={0} scale={1} y={0} elevation="$1" opacity={1} animation={[
105
- "bouncy",
106
- {
107
- opacity: {
108
- overshootClamping: true
109
- }
110
- }
111
- ]} {...contentProps}>
112
- <Tooltip.Arrow />
113
- <Paragraph size="$2" lineHeight="$1">{label}</Paragraph>
114
- </Tooltip.Content>
115
- </Tooltip>;
116
- if (!context) {
117
- return <TooltipGroup delay={{ open: 3e3, close: 100 }}>{contents}</TooltipGroup>;
84
+ const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open]);
85
+ const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), []);
86
+ const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), []);
87
+ const contentId = useId();
88
+ return <FloatingOverrideContext.Provider value={useFloatingContext}><Popper size="$2" {...popperScope} {...restProps}><__PopoverProviderInternal scope={__scopePopover} contentId={contentId} triggerRef={triggerRef} sheetBreakpoint={false} scopeKey="" open={open} onOpenChange={setOpen} onOpenToggle={voidFn} hasCustomAnchor={hasCustomAnchor} onCustomAnchorAdd={onCustomAnchorAdd} onCustomAnchorRemove={onCustomAnchorRemove}>{children}</__PopoverProviderInternal></Popper></FloatingOverrideContext.Provider>;
89
+ },
90
+ {
91
+ Anchor: PopoverAnchor,
92
+ Arrow: TooltipArrow,
93
+ Content: TooltipContent,
94
+ Trigger: PopoverTrigger
118
95
  }
119
- return contents;
96
+ );
97
+ Tooltip.displayName = "Tooltip";
98
+ const voidFn = () => {
120
99
  };
121
100
  export {
122
101
  Tooltip,
123
- TooltipGroup,
124
- TooltipSimple
102
+ TooltipGroup
125
103
  };
126
104
  //# sourceMappingURL=Tooltip.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Tooltip.tsx"],
4
- "sourcesContent": ["import '@tamagui/polyfill-dev'\n\nimport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\nimport { useId, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps } from '@tamagui/create-context'\nimport {\n PopoverAnchor,\n PopoverArrow,\n PopoverArrowProps,\n PopoverContent,\n PopoverContentProps,\n PopoverTrigger,\n __PopoverProviderInternal,\n usePopoverScope,\n} from '@tamagui/popover'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperProps,\n UseFloatingFn,\n usePopperContext,\n} from '@tamagui/popper'\nimport { SizableStackProps } from '@tamagui/stacks'\nimport { Paragraph } from '@tamagui/text'\nimport * as React from 'react'\n\nconst TooltipContent = React.forwardRef(\n ({ __scopePopover, ...props }: ScopedProps<PopoverContentProps, 'Popover'>, ref: any) => {\n const popperScope = usePopoverScope(__scopePopover)\n const popper = usePopperContext('PopperContent', popperScope['__scopePopper'])\n return (\n <PopoverContent\n disableRemoveScroll\n trapFocus={false}\n padding={props.size || popper.size || '$2'}\n componentName=\"TooltipContent\"\n pointerEvents=\"none\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nconst TooltipArrow = React.forwardRef((props: PopoverArrowProps, ref: any) => {\n return <PopoverArrow componentName=\"TooltipArrow\" ref={ref} {...props} />\n})\n\nexport type TooltipProps = PopperProps & {\n children?: React.ReactNode\n onOpenChange?: (open: boolean) => void\n groupId?: string\n restMs?: number\n delay?:\n | number\n | {\n open?: number\n close?: number\n }\n}\n\nexport const TooltipGroup = FloatingDelayGroup\n\nexport const Tooltip = withStaticProperties(\n ((props: ScopedProps<TooltipProps, 'Popover'>) => {\n const {\n __scopePopover,\n children,\n restMs = 500,\n delay: delayProp,\n onOpenChange: onOpenChangeProp,\n ...restProps\n } = props\n const popperScope = usePopoverScope(__scopePopover)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false)\n const { delay: delayGroup, setCurrentId } = useDelayGroupContext()\n const delay = delayProp ?? delayGroup\n const [open, setOpen] = React.useState(false)\n const id = props.groupId\n\n // TODO useEvent when ready\n const onOpenChange = React.useCallback(\n (open) => {\n setOpen(open)\n if (open) {\n setCurrentId(id)\n }\n onOpenChangeProp?.(open)\n },\n [id, setCurrentId, onOpenChangeProp]\n )\n\n const useFloatingFn: UseFloatingFn = (props) => {\n const floating = useFloating({\n ...props,\n open,\n onOpenChange,\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(floating.context, { delay, restMs }),\n useFocus(floating.context),\n useRole(floating.context, { role: 'tooltip' }),\n useDismiss(floating.context),\n useDelayGroup(floating.context, { id }),\n ])\n return {\n ...floating,\n getReferenceProps,\n getFloatingProps,\n } as any\n }\n\n const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open])\n\n const voidFn = React.useCallback(() => {}, [setOpen])\n\n return (\n <FloatingOverrideContext.Provider value={useFloatingContext}>\n {/* default tooltip to a smaller size */}\n <Popper size=\"$2\" {...popperScope} {...restProps}>\n <__PopoverProviderInternal\n scope={__scopePopover}\n contentId={useId()}\n triggerRef={triggerRef}\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={voidFn}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}\n onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}\n >\n {children}\n </__PopoverProviderInternal>\n </Popper>\n </FloatingOverrideContext.Provider>\n )\n }) as React.FC<TooltipProps>,\n {\n Anchor: PopoverAnchor,\n Arrow: TooltipArrow,\n Content: TooltipContent,\n Trigger: PopoverTrigger,\n }\n)\n\nTooltip.displayName = 'Tooltip'\n\nexport type TooltipSimpleProps = TooltipProps & {\n label?: React.ReactNode\n children?: React.ReactNode\n contentProps?: SizableStackProps\n}\n\nexport const TooltipSimple: React.FC<TooltipSimpleProps> = ({\n label,\n children,\n contentProps,\n ...tooltipProps\n}) => {\n let context\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n context = useDelayGroupContext()\n } catch {\n // ok\n }\n\n const contents = (\n <Tooltip {...tooltipProps}>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Tooltip.Content\n enterStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}\n exitStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}\n x={0}\n scale={1}\n y={0}\n elevation=\"$1\"\n opacity={1}\n animation={[\n 'bouncy',\n {\n opacity: {\n overshootClamping: true,\n },\n },\n ]}\n {...contentProps}\n >\n <Tooltip.Arrow />\n <Paragraph size=\"$2\" lineHeight=\"$1\">\n {label}\n </Paragraph>\n </Tooltip.Content>\n </Tooltip>\n )\n\n if (!context) {\n return <TooltipGroup delay={{ open: 3000, close: 100 }}>{contents}</TooltipGroup>\n }\n\n return contents\n}\n"],
5
- "mappings": "AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;AAAA;AAAA;AAAA;AAAA;AAQA;AACA;AAEA,MAAM,iBAAiB,MAAM,WAC3B,CAAC,EAAE,mBAAmB,SAAsD,QAAa;AACvF,QAAM,cAAc,gBAAgB,cAAc;AAClD,QAAM,SAAS,iBAAiB,iBAAiB,YAAY,gBAAgB;AAC7E,SACE,CAAC,eACC,oBACA,WAAW,OACX,SAAS,MAAM,QAAQ,OAAO,QAAQ,MACtC,cAAc,iBACd,cAAc,OACd,KAAK,SACD,OACN;AAEJ,CACF;AAEA,MAAM,eAAe,MAAM,WAAW,CAAC,OAA0B,QAAa;AAC5E,SAAO,CAAC,aAAa,cAAc,eAAe,KAAK,SAAS,OAAO;AACzE,CAAC;AAeM,MAAM,eAAe;AAErB,MAAM,UAAU,qBACpB,CAAC,UAAgD;AAChD,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,OAAO;AAAA,IACP,cAAc;AAAA,OACX;AAAA,MACD;AACJ,QAAM,cAAc,gBAAgB,cAAc;AAClD,QAAM,aAAa,MAAM,OAA0B,IAAI;AACvD,QAAM,CAAC,iBAAiB,sBAAsB,MAAM,SAAS,KAAK;AAClE,QAAM,EAAE,OAAO,YAAY,iBAAiB,qBAAqB;AACjE,QAAM,QAAQ,gCAAa;AAC3B,QAAM,CAAC,MAAM,WAAW,MAAM,SAAS,KAAK;AAC5C,QAAM,KAAK,MAAM;AAGjB,QAAM,eAAe,MAAM,YACzB,CAAC,UAAS;AACR,YAAQ,KAAI;AACZ,QAAI,OAAM;AACR,mBAAa,EAAE;AAAA,IACjB;AACA,yDAAmB;AAAA,EACrB,GACA,CAAC,IAAI,cAAc,gBAAgB,CACrC;AAEA,QAAM,gBAA+B,CAAC,WAAU;AAC9C,UAAM,WAAW,YAAY;AAAA,MAC3B,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACF,CAAC;AACD,UAAM,EAAE,mBAAmB,qBAAqB,gBAAgB;AAAA,MAC9D,SAAS,SAAS,SAAS,EAAE,OAAO,OAAO,CAAC;AAAA,MAC5C,SAAS,SAAS,OAAO;AAAA,MACzB,QAAQ,SAAS,SAAS,EAAE,MAAM,UAAU,CAAC;AAAA,MAC7C,WAAW,SAAS,OAAO;AAAA,MAC3B,cAAc,SAAS,SAAS,EAAE,GAAG,CAAC;AAAA,IACxC,CAAC;AACD,WAAO;AAAA,MACL,GAAG;AAAA,MACH;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,MAAM,YAAY,eAAe,CAAC,IAAI,OAAO,IAAI,CAAC;AAE7E,QAAM,SAAS,MAAM,YAAY,MAAM;AAAA,EAAC,GAAG,CAAC,OAAO,CAAC;AAEpD,SACE,CAAC,wBAAwB,SAAS,OAAO,oBAEvC,CAAC,OAAO,KAAK,SAAS,iBAAiB,WACrC,CAAC,0BACC,OAAO,gBACP,WAAW,MAAM,GACjB,YAAY,YACZ,MAAM,MACN,cAAc,SACd,cAAc,QACd,iBAAiB,iBACjB,mBAAmB,MAAM,YAAY,MAAM,mBAAmB,IAAI,GAAG,CAAC,CAAC,GACvE,sBAAsB,MAAM,YAAY,MAAM,mBAAmB,KAAK,GAAG,CAAC,CAAC,IAE1E,SACH,EAZC,0BAaH,EAdC,OAeH,EAjBC,wBAAwB;AAmB7B,GACA;AAAA,EACE,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,CACF;AAEA,QAAQ,cAAc;AAQf,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,KACG;AAAA,MACC;AACJ,MAAI;AACJ,MAAI;AAEF,cAAU,qBAAqB;AAAA,EACjC,QAAE;AAAA,EAEF;AAEA,QAAM,WACJ,CAAC,YAAY;AAAA,IACX,CAAC,QAAQ,QAAQ,SAAS,SAAS,EAAlC,QAAQ;AAAA,IACT,CAAC,QAAQ,QACP,YAAY,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,OAAO,IAAI,GACnD,WAAW,EAAE,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,OAAO,IAAI,GAClD,GAAG,GACH,OAAO,GACP,GAAG,GACH,UAAU,KACV,SAAS,GACT,WAAW;AAAA,MACT;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,IACF,OACI;AAAA,MAEJ,CAAC,QAAQ,MAAM;AAAA,MACf,CAAC,UAAU,KAAK,KAAK,WAAW,MAC7B,MACH,EAFC;AAAA,IAGH,EAtBC,QAAQ;AAAA,EAuBX,EAzBC;AA4BH,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,aAAa,OAAO,EAAE,MAAM,KAAM,OAAO,IAAI,IAAI,SAAS,EAA1D;AAAA,EACV;AAEA,SAAO;AACT;",
6
- "names": []
4
+ "sourcesContent": ["import '@tamagui/polyfill-dev'\n\nimport {\n FloatingDelayGroup,\n useDelayGroup,\n useDelayGroupContext,\n useDismiss,\n useFloating,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from '@floating-ui/react-dom-interactions'\nimport { useEvent, useId, withStaticProperties } from '@tamagui/core'\nimport { ScopedProps } from '@tamagui/create-context'\nimport {\n PopoverAnchor,\n PopoverArrow,\n PopoverArrowProps,\n PopoverContent,\n PopoverContentProps,\n PopoverTrigger,\n __PopoverProviderInternal,\n usePopoverScope,\n} from '@tamagui/popover'\nimport {\n FloatingOverrideContext,\n Popper,\n PopperProps,\n UseFloatingFn,\n usePopperContext,\n} from '@tamagui/popper'\nimport * as React from 'react'\n\nconst TooltipContent = React.forwardRef(\n ({ __scopePopover, ...props }: ScopedProps<PopoverContentProps, 'Popover'>, ref: any) => {\n const popperScope = usePopoverScope(__scopePopover)\n const popper = usePopperContext('PopperContent', popperScope['__scopePopper'])\n return (\n <PopoverContent\n componentName=\"TooltipContent\"\n disableRemoveScroll\n trapFocus={false}\n padding={props.size || popper.size || '$2'}\n pointerEvents=\"none\"\n ref={ref}\n {...props}\n />\n )\n }\n)\n\nconst TooltipArrow = React.forwardRef((props: PopoverArrowProps, ref: any) => {\n return <PopoverArrow componentName=\"TooltipArrow\" ref={ref} {...props} />\n})\n\nexport type TooltipProps = PopperProps & {\n children?: React.ReactNode\n onOpenChange?: (open: boolean) => void\n groupId?: string\n restMs?: number\n delay?:\n | number\n | {\n open?: number\n close?: number\n }\n}\n\ntype Delay =\n | number\n | Partial<{\n open: number\n close: number\n }>\n\nexport const TooltipGroup = ({ children, delay }: { children?: any; delay: Delay }) => {\n return (\n <FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>\n {children}\n </FloatingDelayGroup>\n )\n}\n\nexport const Tooltip = withStaticProperties(\n ((props: ScopedProps<TooltipProps, 'Popover'>) => {\n const {\n __scopePopover,\n children,\n restMs = 500,\n delay: delayProp,\n onOpenChange: onOpenChangeProp,\n ...restProps\n } = props\n const popperScope = usePopoverScope(__scopePopover)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false)\n const { delay: delayGroup, setCurrentId } = useDelayGroupContext()\n const delay = delayProp ?? delayGroup\n const [open, setOpen] = React.useState(false)\n const id = props.groupId\n\n const onOpenChange = useEvent((open) => {\n setOpen(open)\n if (open) {\n setCurrentId(id)\n }\n onOpenChangeProp?.(open)\n })\n\n const useFloatingFn: UseFloatingFn = (props) => {\n // @ts-ignore\n const floating = useFloating({\n ...props,\n open,\n onOpenChange,\n })\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(floating.context, { delay, restMs }),\n useFocus(floating.context),\n useRole(floating.context, { role: 'tooltip' }),\n useDismiss(floating.context),\n useDelayGroup(floating.context, { id }),\n ])\n return {\n ...floating,\n getReferenceProps,\n getFloatingProps,\n } as any\n }\n\n const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open])\n const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), [])\n const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), [])\n const contentId = useId()\n\n return (\n <FloatingOverrideContext.Provider value={useFloatingContext}>\n {/* default tooltip to a smaller size */}\n <Popper size=\"$2\" {...popperScope} {...restProps}>\n <__PopoverProviderInternal\n scope={__scopePopover}\n contentId={contentId}\n triggerRef={triggerRef}\n sheetBreakpoint={false}\n scopeKey=\"\"\n open={open}\n onOpenChange={setOpen}\n onOpenToggle={voidFn}\n hasCustomAnchor={hasCustomAnchor}\n onCustomAnchorAdd={onCustomAnchorAdd}\n onCustomAnchorRemove={onCustomAnchorRemove}\n >\n {children}\n </__PopoverProviderInternal>\n </Popper>\n </FloatingOverrideContext.Provider>\n )\n }) as React.FC<TooltipProps>,\n {\n Anchor: PopoverAnchor,\n Arrow: TooltipArrow,\n Content: TooltipContent,\n Trigger: PopoverTrigger,\n }\n)\n\nTooltip.displayName = 'Tooltip'\n\nconst voidFn = () => {}\n"],
5
+ "mappings": "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",
6
+ "names": ["open", "props"]
7
7
  }
@@ -12,9 +12,7 @@ const Tooltip = withStaticProperties(RenderChildren, {
12
12
  Content: RenderNull,
13
13
  Trigger: RenderChildren
14
14
  });
15
- const TooltipSimple = RenderChildren;
16
15
  export {
17
- Tooltip,
18
- TooltipSimple
16
+ Tooltip
19
17
  };
20
18
  //# sourceMappingURL=Tooltip.native.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Tooltip.native.tsx"],
4
- "sourcesContent": ["import { withStaticProperties } from '@tamagui/core'\n\n// no output on native for now\n// could have an option to long-press or similar to show in a context menu/drawer\n\nconst RenderChildren = (props: any) => {\n return props.children\n}\n\nconst RenderNull = (props: any) => {\n return null\n}\n\nexport const Tooltip = withStaticProperties(RenderChildren, {\n Anchor: RenderChildren,\n Arrow: RenderNull,\n Close: RenderNull,\n Content: RenderNull,\n Trigger: RenderChildren,\n})\n\nexport const TooltipSimple = RenderChildren\n"],
5
- "mappings": "AAAA;AAKA,MAAM,iBAAiB,CAAC,UAAe;AACrC,SAAO,MAAM;AACf;AAEA,MAAM,aAAa,CAAC,UAAe;AACjC,SAAO;AACT;AAEO,MAAM,UAAU,qBAAqB,gBAAgB;AAAA,EAC1D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,CAAC;AAEM,MAAM,gBAAgB;",
4
+ "sourcesContent": ["import { withStaticProperties } from '@tamagui/core'\n\n// no output on native for now\n// could have an option to long-press or similar to show in a context menu/drawer\n\nconst RenderChildren = (props: any) => {\n return props.children\n}\n\nconst RenderNull = (props: any) => {\n return null\n}\n\nexport const Tooltip = withStaticProperties(RenderChildren, {\n Anchor: RenderChildren,\n Arrow: RenderNull,\n Close: RenderNull,\n Content: RenderNull,\n Trigger: RenderChildren,\n})\n"],
5
+ "mappings": "AAAA,SAAS,4BAA4B;AAKrC,MAAM,iBAAiB,CAAC,UAAe;AACrC,SAAO,MAAM;AACf;AAEA,MAAM,aAAa,CAAC,UAAe;AACjC,SAAO;AACT;AAEO,MAAM,UAAU,qBAAqB,gBAAgB;AAAA,EAC1D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,SAAS;AAAA,EACT,SAAS;AACX,CAAC;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,39 @@
1
+ import { useDelayGroupContext } from "@floating-ui/react-dom-interactions";
2
+ import { Theme } from "@tamagui/core";
3
+ import { Paragraph } from "@tamagui/text";
4
+ import { Tooltip, TooltipGroup } from "./Tooltip";
5
+ const TooltipSimple = ({
6
+ label,
7
+ children,
8
+ contentProps,
9
+ ...tooltipProps
10
+ }) => {
11
+ let context;
12
+ try {
13
+ context = useDelayGroupContext();
14
+ } catch {
15
+ }
16
+ const contents = <Tooltip {...tooltipProps}>
17
+ <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
18
+ <Theme inverse><Tooltip.Content zIndex={1e5} enterStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }} exitStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }} x={0} scale={1} y={0} elevation="$0.5" opacity={1} animation={[
19
+ "quick",
20
+ {
21
+ opacity: {
22
+ overshootClamping: true
23
+ }
24
+ }
25
+ ]} {...contentProps}>
26
+ <Tooltip.Arrow />
27
+ <Paragraph size="$2" lineHeight="$0">{label}</Paragraph>
28
+ </Tooltip.Content></Theme>
29
+ </Tooltip>;
30
+ if (!context) {
31
+ return <TooltipGroup delay={defaultTooltipDelay}>{contents}</TooltipGroup>;
32
+ }
33
+ return contents;
34
+ };
35
+ const defaultTooltipDelay = { open: 3e3, close: 100 };
36
+ export {
37
+ TooltipSimple
38
+ };
39
+ //# sourceMappingURL=TooltipSimple.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/TooltipSimple.tsx"],
4
+ "sourcesContent": ["import { useDelayGroupContext } from '@floating-ui/react-dom-interactions'\nimport { Theme } from '@tamagui/core'\nimport { SizableStackProps } from '@tamagui/stacks'\nimport { Paragraph } from '@tamagui/text'\nimport * as React from 'react'\n\nimport { Tooltip, TooltipGroup, TooltipProps } from './Tooltip'\n\nexport type TooltipSimpleProps = TooltipProps & {\n label?: React.ReactNode\n children?: React.ReactNode\n contentProps?: SizableStackProps\n}\n\nexport const TooltipSimple: React.FC<TooltipSimpleProps> = ({\n label,\n children,\n contentProps,\n ...tooltipProps\n}) => {\n let context\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n context = useDelayGroupContext()\n } catch {\n // ok\n }\n\n const contents = (\n <Tooltip {...tooltipProps}>\n <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>\n <Theme inverse>\n <Tooltip.Content\n zIndex={100_000}\n enterStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }}\n exitStyle={{ x: 0, y: -8, opacity: 0, scale: 0.93 }}\n x={0}\n scale={1}\n y={0}\n elevation=\"$0.5\"\n opacity={1}\n animation={[\n 'quick',\n {\n opacity: {\n overshootClamping: true,\n },\n },\n ]}\n {...contentProps}\n >\n <Tooltip.Arrow />\n <Paragraph size=\"$2\" lineHeight=\"$0\">\n {label}\n </Paragraph>\n </Tooltip.Content>\n </Theme>\n </Tooltip>\n )\n\n if (!context) {\n return <TooltipGroup delay={defaultTooltipDelay}>{contents}</TooltipGroup>\n }\n\n return contents\n}\n\nconst defaultTooltipDelay = { open: 3000, close: 100 }\n"],
5
+ "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAS,aAAa;AAEtB,SAAS,iBAAiB;AAG1B,SAAS,SAAS,oBAAkC;AAQ7C,MAAM,gBAA8C,CAAC;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,KACG;AACL,MAAM;AACJ,MAAI;AACJ,MAAI;AAEF,cAAU,qBAAqB;AAAA,EACjC,QAAE;AAAA,EAEF;AAEA,QAAM,WACJ,CAAC,YAAY;AAAA,IACX,CAAC,QAAQ,QAAQ,SAAS,SAAS,EAAlC,QAAQ;AAAA,IACT,CAAC,MAAM,QACL,CAAC,QAAQ,QACP,QAAQ,KACR,YAAY,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,GAAG,OAAO,KAAK,GACnD,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,SAAS,GAAG,OAAO,KAAK,GAClD,GAAG,GACH,OAAO,GACP,GAAG,GACH,UAAU,OACV,SAAS,GACT,WAAW;AAAA,MACT;AAAA,MACA;AAAA,QACE,SAAS;AAAA,UACP,mBAAmB;AAAA,QACrB;AAAA,MACF;AAAA,IACF,OACI;AAAA,MAEJ,CAAC,QAAQ,MAAM;AAAA,MACf,CAAC,UAAU,KAAK,KAAK,WAAW,MAC7B,MACH,EAFC;AAAA,IAGH,EAvBC,QAAQ,QAwBX,EAzBC;AAAA,EA0BH,EA5BC;AA+BH,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC,aAAa,OAAO,sBAAsB,SAAS,EAAnD;AAAA,EACV;AAEA,SAAO;AACT;AAEA,MAAM,sBAAsB,EAAE,MAAM,KAAM,OAAO,IAAI;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ const RenderChildren = (props) => {
2
+ return props.children;
3
+ };
4
+ const TooltipSimple = RenderChildren;
5
+ export {
6
+ TooltipSimple
7
+ };
8
+ //# sourceMappingURL=TooltipSimple.native.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/TooltipSimple.native.tsx"],
4
+ "sourcesContent": ["const RenderChildren = (props: any) => {\n return props.children\n}\n\nexport const TooltipSimple = RenderChildren\n"],
5
+ "mappings": "AAAA,MAAM,iBAAiB,CAAC,UAAe;AACrC,SAAO,MAAM;AACf;AAEO,MAAM,gBAAgB;",
6
+ "names": []
7
+ }
package/dist/jsx/index.js CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from "./Tooltip";
2
+ export * from "./TooltipSimple";
2
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.tsx"],
4
- "sourcesContent": ["export * from './Tooltip'\n"],
5
- "mappings": "AAAA;",
4
+ "sourcesContent": ["export * from './Tooltip'\nexport * from './TooltipSimple'\n"],
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/tooltip",
3
- "version": "1.0.1-beta.99",
3
+ "version": "1.0.1-rc.0",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -17,32 +17,34 @@
17
17
  "scripts": {
18
18
  "build": "tamagui-build",
19
19
  "watch": "tamagui-build --watch",
20
+ "lint": "eslint src",
21
+ "lint:fix": "yarn lint --fix",
20
22
  "clean": "tamagui-build clean",
21
23
  "clean:build": "tamagui-build clean:build"
22
24
  },
23
25
  "dependencies": {
24
- "@floating-ui/react-dom-interactions": "^0.5.0",
25
- "@tamagui/compose-refs": "^1.0.1-beta.99",
26
- "@tamagui/core": "^1.0.1-beta.99",
27
- "@tamagui/create-context": "^1.0.1-beta.99",
28
- "@tamagui/polyfill-dev": "^1.0.1-beta.99",
29
- "@tamagui/popover": "^1.0.1-beta.99",
30
- "@tamagui/popper": "^1.0.1-beta.99",
31
- "@tamagui/stacks": "^1.0.1-beta.99",
32
- "@tamagui/text": "^1.0.1-beta.99",
33
- "@tamagui/use-controllable-state": "^1.0.1-beta.99"
26
+ "@floating-ui/react-dom-interactions": "^0.10.3",
27
+ "@tamagui/compose-refs": "^1.0.1-rc.0",
28
+ "@tamagui/core": "^1.0.1-rc.0",
29
+ "@tamagui/create-context": "^1.0.1-rc.0",
30
+ "@tamagui/polyfill-dev": "^1.0.1-rc.0",
31
+ "@tamagui/popover": "^1.0.1-rc.0",
32
+ "@tamagui/popper": "^1.0.1-rc.0",
33
+ "@tamagui/stacks": "^1.0.1-rc.0",
34
+ "@tamagui/text": "^1.0.1-rc.0",
35
+ "@tamagui/use-controllable-state": "^1.0.1-rc.0"
34
36
  },
35
37
  "peerDependencies": {
36
- "react": "*",
37
- "react-dom": "*",
38
+ "react": ">=18",
39
+ "react-dom": ">=18",
38
40
  "react-native": "*"
39
41
  },
40
42
  "devDependencies": {
41
- "@tamagui/build": "^1.0.1-beta.99",
43
+ "@tamagui/build": "^1.0.1-rc.0",
42
44
  "@types/react-dom": "^18.0.3",
43
- "@types/react-native": "^0.67.3",
44
- "react": "*",
45
- "react-dom": "*",
45
+ "@types/react-native": "^0.69.2",
46
+ "react": ">=18",
47
+ "react-dom": ">=18",
46
48
  "react-native": "*"
47
49
  },
48
50
  "publishConfig": {
@@ -18,5 +18,3 @@ export const Tooltip = withStaticProperties(RenderChildren, {
18
18
  Content: RenderNull,
19
19
  Trigger: RenderChildren,
20
20
  })
21
-
22
- export const TooltipSimple = RenderChildren
package/src/Tooltip.tsx CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  useInteractions,
12
12
  useRole,
13
13
  } from '@floating-ui/react-dom-interactions'
14
- import { useId, withStaticProperties } from '@tamagui/core'
14
+ import { useEvent, useId, withStaticProperties } from '@tamagui/core'
15
15
  import { ScopedProps } from '@tamagui/create-context'
16
16
  import {
17
17
  PopoverAnchor,
@@ -30,8 +30,6 @@ import {
30
30
  UseFloatingFn,
31
31
  usePopperContext,
32
32
  } from '@tamagui/popper'
33
- import { SizableStackProps } from '@tamagui/stacks'
34
- import { Paragraph } from '@tamagui/text'
35
33
  import * as React from 'react'
36
34
 
37
35
  const TooltipContent = React.forwardRef(
@@ -40,10 +38,10 @@ const TooltipContent = React.forwardRef(
40
38
  const popper = usePopperContext('PopperContent', popperScope['__scopePopper'])
41
39
  return (
42
40
  <PopoverContent
41
+ componentName="TooltipContent"
43
42
  disableRemoveScroll
44
43
  trapFocus={false}
45
44
  padding={props.size || popper.size || '$2'}
46
- componentName="TooltipContent"
47
45
  pointerEvents="none"
48
46
  ref={ref}
49
47
  {...props}
@@ -69,7 +67,20 @@ export type TooltipProps = PopperProps & {
69
67
  }
70
68
  }
71
69
 
72
- export const TooltipGroup = FloatingDelayGroup
70
+ type Delay =
71
+ | number
72
+ | Partial<{
73
+ open: number
74
+ close: number
75
+ }>
76
+
77
+ export const TooltipGroup = ({ children, delay }: { children?: any; delay: Delay }) => {
78
+ return (
79
+ <FloatingDelayGroup delay={React.useMemo(() => delay, [JSON.stringify(delay)])}>
80
+ {children}
81
+ </FloatingDelayGroup>
82
+ )
83
+ }
73
84
 
74
85
  export const Tooltip = withStaticProperties(
75
86
  ((props: ScopedProps<TooltipProps, 'Popover'>) => {
@@ -89,19 +100,16 @@ export const Tooltip = withStaticProperties(
89
100
  const [open, setOpen] = React.useState(false)
90
101
  const id = props.groupId
91
102
 
92
- // TODO useEvent when ready
93
- const onOpenChange = React.useCallback(
94
- (open) => {
95
- setOpen(open)
96
- if (open) {
97
- setCurrentId(id)
98
- }
99
- onOpenChangeProp?.(open)
100
- },
101
- [id, setCurrentId, onOpenChangeProp]
102
- )
103
+ const onOpenChange = useEvent((open) => {
104
+ setOpen(open)
105
+ if (open) {
106
+ setCurrentId(id)
107
+ }
108
+ onOpenChangeProp?.(open)
109
+ })
103
110
 
104
111
  const useFloatingFn: UseFloatingFn = (props) => {
112
+ // @ts-ignore
105
113
  const floating = useFloating({
106
114
  ...props,
107
115
  open,
@@ -122,8 +130,9 @@ export const Tooltip = withStaticProperties(
122
130
  }
123
131
 
124
132
  const useFloatingContext = React.useCallback(useFloatingFn, [id, delay, open])
125
-
126
- const voidFn = React.useCallback(() => {}, [setOpen])
133
+ const onCustomAnchorAdd = React.useCallback(() => setHasCustomAnchor(true), [])
134
+ const onCustomAnchorRemove = React.useCallback(() => setHasCustomAnchor(false), [])
135
+ const contentId = useId()
127
136
 
128
137
  return (
129
138
  <FloatingOverrideContext.Provider value={useFloatingContext}>
@@ -131,14 +140,16 @@ export const Tooltip = withStaticProperties(
131
140
  <Popper size="$2" {...popperScope} {...restProps}>
132
141
  <__PopoverProviderInternal
133
142
  scope={__scopePopover}
134
- contentId={useId()}
143
+ contentId={contentId}
135
144
  triggerRef={triggerRef}
145
+ sheetBreakpoint={false}
146
+ scopeKey=""
136
147
  open={open}
137
148
  onOpenChange={setOpen}
138
149
  onOpenToggle={voidFn}
139
150
  hasCustomAnchor={hasCustomAnchor}
140
- onCustomAnchorAdd={React.useCallback(() => setHasCustomAnchor(true), [])}
141
- onCustomAnchorRemove={React.useCallback(() => setHasCustomAnchor(false), [])}
151
+ onCustomAnchorAdd={onCustomAnchorAdd}
152
+ onCustomAnchorRemove={onCustomAnchorRemove}
142
153
  >
143
154
  {children}
144
155
  </__PopoverProviderInternal>
@@ -156,58 +167,4 @@ export const Tooltip = withStaticProperties(
156
167
 
157
168
  Tooltip.displayName = 'Tooltip'
158
169
 
159
- export type TooltipSimpleProps = TooltipProps & {
160
- label?: React.ReactNode
161
- children?: React.ReactNode
162
- contentProps?: SizableStackProps
163
- }
164
-
165
- export const TooltipSimple: React.FC<TooltipSimpleProps> = ({
166
- label,
167
- children,
168
- contentProps,
169
- ...tooltipProps
170
- }) => {
171
- let context
172
- try {
173
- // eslint-disable-next-line react-hooks/rules-of-hooks
174
- context = useDelayGroupContext()
175
- } catch {
176
- // ok
177
- }
178
-
179
- const contents = (
180
- <Tooltip {...tooltipProps}>
181
- <Tooltip.Trigger asChild>{children}</Tooltip.Trigger>
182
- <Tooltip.Content
183
- enterStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}
184
- exitStyle={{ x: 0, y: -10, opacity: 0, scale: 0.9 }}
185
- x={0}
186
- scale={1}
187
- y={0}
188
- elevation="$1"
189
- opacity={1}
190
- animation={[
191
- 'bouncy',
192
- {
193
- opacity: {
194
- overshootClamping: true,
195
- },
196
- },
197
- ]}
198
- {...contentProps}
199
- >
200
- <Tooltip.Arrow />
201
- <Paragraph size="$2" lineHeight="$1">
202
- {label}
203
- </Paragraph>
204
- </Tooltip.Content>
205
- </Tooltip>
206
- )
207
-
208
- if (!context) {
209
- return <TooltipGroup delay={{ open: 3000, close: 100 }}>{contents}</TooltipGroup>
210
- }
211
-
212
- return contents
213
- }
170
+ const voidFn = () => {}
@@ -0,0 +1,5 @@
1
+ const RenderChildren = (props: any) => {
2
+ return props.children
3
+ }
4
+
5
+ export const TooltipSimple = RenderChildren