@cdx-ui/primitives 0.0.1-beta.144 → 0.0.1-beta.145

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 (63) hide show
  1. package/lib/commonjs/index.js +12 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/overlay/useAnchorPosition.js +13 -23
  4. package/lib/commonjs/overlay/useAnchorPosition.js.map +1 -1
  5. package/lib/commonjs/tooltip/TooltipContent.js +106 -0
  6. package/lib/commonjs/tooltip/TooltipContent.js.map +1 -0
  7. package/lib/commonjs/tooltip/TooltipRoot.js +128 -0
  8. package/lib/commonjs/tooltip/TooltipRoot.js.map +1 -0
  9. package/lib/commonjs/tooltip/TooltipTrigger.js +132 -0
  10. package/lib/commonjs/tooltip/TooltipTrigger.js.map +1 -0
  11. package/lib/commonjs/tooltip/context.js +11 -0
  12. package/lib/commonjs/tooltip/context.js.map +1 -0
  13. package/lib/commonjs/tooltip/getTooltipPosition.js +124 -0
  14. package/lib/commonjs/tooltip/getTooltipPosition.js.map +1 -0
  15. package/lib/commonjs/tooltip/index.js +53 -0
  16. package/lib/commonjs/tooltip/index.js.map +1 -0
  17. package/lib/commonjs/tooltip/types.js +6 -0
  18. package/lib/commonjs/tooltip/types.js.map +1 -0
  19. package/lib/module/index.js +1 -0
  20. package/lib/module/index.js.map +1 -1
  21. package/lib/module/overlay/useAnchorPosition.js +13 -23
  22. package/lib/module/overlay/useAnchorPosition.js.map +1 -1
  23. package/lib/module/tooltip/TooltipContent.js +102 -0
  24. package/lib/module/tooltip/TooltipContent.js.map +1 -0
  25. package/lib/module/tooltip/TooltipRoot.js +124 -0
  26. package/lib/module/tooltip/TooltipRoot.js.map +1 -0
  27. package/lib/module/tooltip/TooltipTrigger.js +128 -0
  28. package/lib/module/tooltip/TooltipTrigger.js.map +1 -0
  29. package/lib/module/tooltip/context.js +5 -0
  30. package/lib/module/tooltip/context.js.map +1 -0
  31. package/lib/module/tooltip/getTooltipPosition.js +119 -0
  32. package/lib/module/tooltip/getTooltipPosition.js.map +1 -0
  33. package/lib/module/tooltip/index.js +8 -0
  34. package/lib/module/tooltip/index.js.map +1 -0
  35. package/lib/module/tooltip/types.js +4 -0
  36. package/lib/module/tooltip/types.js.map +1 -0
  37. package/lib/typescript/index.d.ts +1 -0
  38. package/lib/typescript/index.d.ts.map +1 -1
  39. package/lib/typescript/overlay/useAnchorPosition.d.ts.map +1 -1
  40. package/lib/typescript/tooltip/TooltipContent.d.ts +6 -0
  41. package/lib/typescript/tooltip/TooltipContent.d.ts.map +1 -0
  42. package/lib/typescript/tooltip/TooltipRoot.d.ts +7 -0
  43. package/lib/typescript/tooltip/TooltipRoot.d.ts.map +1 -0
  44. package/lib/typescript/tooltip/TooltipTrigger.d.ts +5 -0
  45. package/lib/typescript/tooltip/TooltipTrigger.d.ts.map +1 -0
  46. package/lib/typescript/tooltip/context.d.ts +6 -0
  47. package/lib/typescript/tooltip/context.d.ts.map +1 -0
  48. package/lib/typescript/tooltip/getTooltipPosition.d.ts +20 -0
  49. package/lib/typescript/tooltip/getTooltipPosition.d.ts.map +1 -0
  50. package/lib/typescript/tooltip/index.d.ts +7 -0
  51. package/lib/typescript/tooltip/index.d.ts.map +1 -0
  52. package/lib/typescript/tooltip/types.d.ts +78 -0
  53. package/lib/typescript/tooltip/types.d.ts.map +1 -0
  54. package/package.json +3 -3
  55. package/src/index.ts +1 -0
  56. package/src/overlay/useAnchorPosition.ts +15 -20
  57. package/src/tooltip/TooltipContent.tsx +119 -0
  58. package/src/tooltip/TooltipRoot.tsx +187 -0
  59. package/src/tooltip/TooltipTrigger.tsx +160 -0
  60. package/src/tooltip/context.tsx +5 -0
  61. package/src/tooltip/getTooltipPosition.ts +147 -0
  62. package/src/tooltip/index.ts +19 -0
  63. package/src/tooltip/types.ts +85 -0
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useCallback } from 'react';
4
+ import { Platform, Pressable } from 'react-native';
5
+ import { composeEventHandlers, mergeRefs } from '@cdx-ui/utils';
6
+ import { useFocus } from '@react-native-aria/focus';
7
+ import { useHover } from '@react-native-aria/interactions';
8
+ import { Slot } from '../slot';
9
+ import { dataAttributes, mergeDataAttributes } from '../utils/dataAttributes';
10
+ import { useTooltipContext } from './context';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ export const TooltipTrigger = /*#__PURE__*/forwardRef(({
13
+ asChild = true,
14
+ children,
15
+ onHoverIn,
16
+ onHoverOut,
17
+ onFocus,
18
+ onBlur,
19
+ onLongPress,
20
+ onPress,
21
+ onLayout,
22
+ ...props
23
+ }, ref) => {
24
+ const {
25
+ open,
26
+ setOpen,
27
+ requestOpen,
28
+ requestClose,
29
+ isDisabled,
30
+ trigger,
31
+ triggerRef,
32
+ contentId,
33
+ triggerId
34
+ } = useTooltipContext();
35
+ const mergedRef = mergeRefs(ref, triggerRef);
36
+ const {
37
+ hoverProps,
38
+ isHovered
39
+ } = useHover({}, mergedRef);
40
+ const {
41
+ focusProps,
42
+ isFocused
43
+ } = useFocus();
44
+ const handleOpen = useCallback(() => {
45
+ if (isDisabled) {
46
+ return;
47
+ }
48
+ requestOpen();
49
+ }, [isDisabled, requestOpen]);
50
+ const handleClose = useCallback(() => {
51
+ requestClose();
52
+ }, [requestClose]);
53
+ const isWeb = Platform.OS === 'web';
54
+ const usesLongPressOnNative = !isWeb && (trigger === 'hover' || trigger === 'focus');
55
+ const usesClickToggle = trigger === 'click';
56
+ const handlePress = composeEventHandlers(onPress, () => {
57
+ if (!usesClickToggle || isDisabled) {
58
+ return;
59
+ }
60
+ setOpen(!open);
61
+ });
62
+ const handleHoverIn = composeEventHandlers(composeEventHandlers(onHoverIn, hoverProps.onHoverIn), () => {
63
+ if (isWeb && trigger === 'hover') {
64
+ handleOpen();
65
+ }
66
+ });
67
+ const handleHoverOut = composeEventHandlers(composeEventHandlers(onHoverOut, hoverProps.onHoverOut), () => {
68
+ if (isWeb && trigger === 'hover') {
69
+ handleClose();
70
+ }
71
+ });
72
+ const handleFocus = composeEventHandlers(composeEventHandlers(onFocus, focusProps.onFocus), () => {
73
+ if (!isWeb) {
74
+ return;
75
+ }
76
+ if (trigger === 'focus' || trigger === 'hover') {
77
+ handleOpen();
78
+ }
79
+ });
80
+ const handleBlur = composeEventHandlers(composeEventHandlers(onBlur, focusProps.onBlur), () => {
81
+ if (!isWeb) {
82
+ return;
83
+ }
84
+ if (trigger === 'focus' || trigger === 'hover') {
85
+ handleClose();
86
+ }
87
+ });
88
+ const handleLongPress = composeEventHandlers(onLongPress, () => {
89
+ if (usesLongPressOnNative) {
90
+ handleOpen();
91
+ }
92
+ });
93
+ const webHoverProps = isWeb && trigger === 'hover' ? {
94
+ onPointerEnter: handleHoverIn,
95
+ onPointerLeave: handleHoverOut
96
+ } : {};
97
+ const webA11yProps = isWeb ? {
98
+ id: triggerId,
99
+ 'aria-describedby': open ? contentId : undefined,
100
+ ...(trigger === 'click' ? {
101
+ 'aria-expanded': open
102
+ } : {})
103
+ } : {};
104
+ const Comp = asChild ? Slot : Pressable;
105
+ return /*#__PURE__*/_jsx(Comp, {
106
+ ref: mergedRef,
107
+ disabled: isDisabled,
108
+ ...props,
109
+ ...webA11yProps,
110
+ ...focusProps,
111
+ ...webHoverProps,
112
+ onLayout: onLayout,
113
+ ...mergeDataAttributes(props, dataAttributes({
114
+ triggerHover: isHovered,
115
+ triggerFocus: isFocused,
116
+ disabled: isDisabled
117
+ })),
118
+ onHoverIn: handleHoverIn,
119
+ onHoverOut: handleHoverOut,
120
+ onFocus: handleFocus,
121
+ onBlur: handleBlur,
122
+ onLongPress: handleLongPress,
123
+ onPress: handlePress,
124
+ children: children
125
+ });
126
+ });
127
+ TooltipTrigger.displayName = 'TooltipTrigger';
128
+ //# sourceMappingURL=TooltipTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useCallback","Platform","Pressable","composeEventHandlers","mergeRefs","useFocus","useHover","Slot","dataAttributes","mergeDataAttributes","useTooltipContext","jsx","_jsx","TooltipTrigger","asChild","children","onHoverIn","onHoverOut","onFocus","onBlur","onLongPress","onPress","onLayout","props","ref","open","setOpen","requestOpen","requestClose","isDisabled","trigger","triggerRef","contentId","triggerId","mergedRef","hoverProps","isHovered","focusProps","isFocused","handleOpen","handleClose","isWeb","OS","usesLongPressOnNative","usesClickToggle","handlePress","handleHoverIn","handleHoverOut","handleFocus","handleBlur","handleLongPress","webHoverProps","onPointerEnter","onPointerLeave","webA11yProps","id","undefined","Comp","disabled","triggerHover","triggerFocus","displayName"],"sourceRoot":"../../../src","sources":["tooltip/TooltipTrigger.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createContext } from '@cdx-ui/utils';
4
+ export const [TooltipProvider, useTooltipContext] = createContext('TooltipContext');
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","TooltipProvider","useTooltipContext"],"sourceRoot":"../../../src","sources":["tooltip/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAG7C,OAAO,MAAM,CAACC,eAAe,EAAEC,iBAAiB,CAAC,GAC/CF,aAAa,CAAsB,gBAAgB,CAAC","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ export const TOOLTIP_PLACEMENTS = ['auto', 'auto-start', 'auto-end', 'top', 'top-start', 'top-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', 'right', 'right-start', 'right-end'];
5
+ export const TOOLTIP_Z_INDEX = 9999;
6
+ const SCREEN_PADDING = 8;
7
+ function parsePlacement(placement) {
8
+ if (placement === 'auto' || placement === 'auto-start' || placement === 'auto-end') {
9
+ return 'auto';
10
+ }
11
+ const segments = placement.split('-');
12
+ const side = segments[0];
13
+ if (segments.length === 1) {
14
+ return {
15
+ side,
16
+ align: 'center'
17
+ };
18
+ }
19
+ return {
20
+ side,
21
+ align: segments[1]
22
+ };
23
+ }
24
+ function resolveAutoPlacement(anchor, viewport, alignPreference) {
25
+ const spaceTop = anchor.y - SCREEN_PADDING;
26
+ const spaceBottom = viewport.height - anchor.y - anchor.height - SCREEN_PADDING;
27
+ const spaceLeft = anchor.x - SCREEN_PADDING;
28
+ const spaceRight = viewport.width - anchor.x - anchor.width - SCREEN_PADDING;
29
+ const spaces = [{
30
+ side: 'top',
31
+ value: spaceTop
32
+ }, {
33
+ side: 'bottom',
34
+ value: spaceBottom
35
+ }, {
36
+ side: 'left',
37
+ value: spaceLeft
38
+ }, {
39
+ side: 'right',
40
+ value: spaceRight
41
+ }];
42
+ const best = spaces.reduce((current, next) => next.value > current.value ? next : current);
43
+ return {
44
+ side: best.side,
45
+ align: alignPreference
46
+ };
47
+ }
48
+ function getAlignOffset(anchor, align, axis) {
49
+ if (align === 'start') {
50
+ return axis === 'horizontal' ? anchor.x : anchor.y;
51
+ }
52
+ if (align === 'end') {
53
+ return axis === 'horizontal' ? anchor.x + anchor.width : anchor.y + anchor.height;
54
+ }
55
+ return axis === 'horizontal' ? anchor.x + anchor.width / 2 : anchor.y + anchor.height / 2;
56
+ }
57
+ export function getTooltipAnchorStyle(anchor, placement, offset, viewport) {
58
+ const parsed = parsePlacement(placement);
59
+ const resolved = parsed === 'auto' ? resolveAutoPlacement(anchor, viewport, placement === 'auto-start' ? 'start' : placement === 'auto-end' ? 'end' : 'center') : parsed;
60
+ const position = Platform.OS === 'web' ? 'fixed' : 'absolute';
61
+ const style = {
62
+ position,
63
+ zIndex: TOOLTIP_Z_INDEX
64
+ };
65
+ const {
66
+ side,
67
+ align
68
+ } = resolved;
69
+ if (side === 'top') {
70
+ style.top = anchor.y - offset;
71
+ style.left = getAlignOffset(anchor, align, 'horizontal');
72
+ style.transform = align === 'center' ? [{
73
+ translateX: '-50%'
74
+ }, {
75
+ translateY: '-100%'
76
+ }] : align === 'end' ? [{
77
+ translateX: '-100%'
78
+ }, {
79
+ translateY: '-100%'
80
+ }] : [{
81
+ translateY: '-100%'
82
+ }];
83
+ } else if (side === 'bottom') {
84
+ style.top = anchor.y + anchor.height + offset;
85
+ style.left = getAlignOffset(anchor, align, 'horizontal');
86
+ style.transform = align === 'center' ? [{
87
+ translateX: '-50%'
88
+ }] : align === 'end' ? [{
89
+ translateX: '-100%'
90
+ }] : undefined;
91
+ } else if (side === 'left') {
92
+ style.left = anchor.x - offset;
93
+ style.top = getAlignOffset(anchor, align, 'vertical');
94
+ style.transform = align === 'center' ? [{
95
+ translateX: '-100%'
96
+ }, {
97
+ translateY: '-50%'
98
+ }] : align === 'end' ? [{
99
+ translateX: '-100%'
100
+ }, {
101
+ translateY: '-100%'
102
+ }] : [{
103
+ translateX: '-100%'
104
+ }];
105
+ } else {
106
+ style.left = anchor.x + anchor.width + offset;
107
+ style.top = getAlignOffset(anchor, align, 'vertical');
108
+ style.transform = align === 'center' ? [{
109
+ translateY: '-50%'
110
+ }] : align === 'end' ? [{
111
+ translateY: '-100%'
112
+ }] : undefined;
113
+ }
114
+ return {
115
+ style,
116
+ resolved
117
+ };
118
+ }
119
+ //# sourceMappingURL=getTooltipPosition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","TOOLTIP_PLACEMENTS","TOOLTIP_Z_INDEX","SCREEN_PADDING","parsePlacement","placement","segments","split","side","length","align","resolveAutoPlacement","anchor","viewport","alignPreference","spaceTop","y","spaceBottom","height","spaceLeft","x","spaceRight","width","spaces","value","best","reduce","current","next","getAlignOffset","axis","getTooltipAnchorStyle","offset","parsed","resolved","position","OS","style","zIndex","top","left","transform","translateX","translateY","undefined"],"sourceRoot":"../../../src","sources":["tooltip/getTooltipPosition.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ export { TooltipProvider, useTooltipContext } from './context';
4
+ export { TooltipRoot } from './TooltipRoot';
5
+ export { TooltipTrigger } from './TooltipTrigger';
6
+ export { TooltipContent } from './TooltipContent';
7
+ export { TOOLTIP_PLACEMENTS, getTooltipAnchorStyle } from './getTooltipPosition';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TooltipProvider","useTooltipContext","TooltipRoot","TooltipTrigger","TooltipContent","TOOLTIP_PLACEMENTS","getTooltipAnchorStyle"],"sourceRoot":"../../../src","sources":["tooltip/index.ts"],"mappings":";;AAAA,SAASA,eAAe,EAAEC,iBAAiB,QAAQ,WAAW;AAC9D,SAASC,WAAW,QAA+B,eAAe;AAClE,SAASC,cAAc,QAAkC,kBAAkB;AAC3E,SAASC,cAAc,QAAkC,kBAAkB;AAC3E,SACEC,kBAAkB,EAClBC,qBAAqB,QAMhB,sBAAsB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["tooltip/types.ts"],"mappings":"","ignoreList":[]}
@@ -27,6 +27,7 @@ export * from './switch';
27
27
  export * from './tabs';
28
28
  export * from './tile';
29
29
  export * from './toast';
30
+ export * from './tooltip';
30
31
  export * from './portal';
31
32
  export * from './progress-bar';
32
33
  export * from './radio';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,OAAO,EACL,KAAK,UAAU,EACf,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,eAAe,GACrB,MAAM,WAAW,CAAC;AACnB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,GAAG,IAAI,CAqGrB"}
1
+ {"version":3,"file":"useAnchorPosition.d.ts","sourceRoot":"","sources":["../../../src/overlay/useAnchorPosition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAwBD,MAAM,WAAW,wBAAwB;IACvC,qFAAqF;IACrF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oFAAoF;IACpF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,EACzB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,GAAG,IAAI,CAgGrB"}
@@ -0,0 +1,6 @@
1
+ import { View } from 'react-native';
2
+ import type { ITooltipContentProps } from './types';
3
+ export interface TooltipContentProps extends ITooltipContentProps {
4
+ }
5
+ export declare const TooltipContent: import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<View>>;
6
+ //# sourceMappingURL=TooltipContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipContent.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipContent.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAwB,IAAI,EAAuB,MAAM,cAAc,CAAC;AAS/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,sGA+F1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { View } from 'react-native';
2
+ import type { ITooltipProps } from './types';
3
+ export interface TooltipRootProps extends ITooltipProps {
4
+ asChild?: boolean;
5
+ }
6
+ export declare const TooltipRoot: import("react").ForwardRefExoticComponent<TooltipRootProps & import("react").RefAttributes<View>>;
7
+ //# sourceMappingURL=TooltipRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipRoot.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipRoot.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAMpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,WAAW,mGAkKvB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ITooltipTriggerProps } from './types';
2
+ export interface TooltipTriggerProps extends ITooltipTriggerProps {
3
+ }
4
+ export declare const TooltipTrigger: import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<import("react-native").View>>;
5
+ //# sourceMappingURL=TooltipTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TooltipTrigger.d.ts","sourceRoot":"","sources":["../../../src/tooltip/TooltipTrigger.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,6HAiJ1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TooltipContextValue } from './types';
2
+ export declare const TooltipProvider: import("react").FunctionComponent<{
3
+ children: import("react").ReactNode;
4
+ value: TooltipContextValue;
5
+ }>, useTooltipContext: () => TooltipContextValue;
6
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/tooltip/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,eAAO,MAAO,eAAe;;;IAAE,iBAAiB,2BACM,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type ViewStyle } from 'react-native';
2
+ import type { AnchorLayout } from '../overlay/useAnchorPosition';
3
+ export declare const TOOLTIP_PLACEMENTS: readonly ["auto", "auto-start", "auto-end", "top", "top-start", "top-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end", "right", "right-start", "right-end"];
4
+ export type TooltipPlacement = (typeof TOOLTIP_PLACEMENTS)[number];
5
+ export type TooltipTriggerMode = 'hover' | 'focus' | 'click';
6
+ export type TooltipSide = 'top' | 'bottom' | 'left' | 'right';
7
+ export type TooltipAlign = 'start' | 'center' | 'end';
8
+ export interface ResolvedTooltipPlacement {
9
+ readonly side: TooltipSide;
10
+ readonly align: TooltipAlign;
11
+ }
12
+ export declare const TOOLTIP_Z_INDEX = 9999;
13
+ export declare function getTooltipAnchorStyle(anchor: AnchorLayout, placement: TooltipPlacement, offset: number, viewport: {
14
+ width: number;
15
+ height: number;
16
+ }): {
17
+ style: ViewStyle;
18
+ resolved: ResolvedTooltipPlacement;
19
+ };
20
+ //# sourceMappingURL=getTooltipPosition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getTooltipPosition.d.ts","sourceRoot":"","sources":["../../../src/tooltip/getTooltipPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,eAAO,MAAM,kBAAkB,2LAgBrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AAED,eAAO,MAAM,eAAe,OAAO,CAAC;AAwDpC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,gBAAgB,EAC3B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,CAsD1D"}
@@ -0,0 +1,7 @@
1
+ export { TooltipProvider, useTooltipContext } from './context';
2
+ export { TooltipRoot, type TooltipRootProps } from './TooltipRoot';
3
+ export { TooltipTrigger, type TooltipTriggerProps } from './TooltipTrigger';
4
+ export { TooltipContent, type TooltipContentProps } from './TooltipContent';
5
+ export { TOOLTIP_PLACEMENTS, getTooltipAnchorStyle, type TooltipPlacement, type TooltipTriggerMode, type TooltipSide, type TooltipAlign, type ResolvedTooltipPlacement, } from './getTooltipPosition';
6
+ export type { ITooltipProps, ITooltipTriggerProps, ITooltipContentProps, TooltipContextValue, } from './types';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tooltip/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,wBAAwB,GAC9B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,78 @@
1
+ import type { ComponentRef, ReactNode, RefObject } from 'react';
2
+ import type { PressableProps, View, ViewProps } from 'react-native';
3
+ import type { ResolvedTooltipPlacement, TooltipPlacement, TooltipTriggerMode } from './getTooltipPosition';
4
+ export interface ITooltipProps extends Omit<ViewProps, 'children'> {
5
+ readonly children?: ReactNode;
6
+ readonly isDisabled?: boolean;
7
+ /**
8
+ * Milliseconds to wait before showing the tooltip.
9
+ * @default `0`
10
+ */
11
+ readonly enterDelay?: number;
12
+ /**
13
+ * Milliseconds to wait before hiding the tooltip.
14
+ * @default `0`
15
+ */
16
+ readonly leaveDelay?: number;
17
+ /**
18
+ * Controlled open state.
19
+ */
20
+ readonly isOpen?: boolean;
21
+ /**
22
+ * Uncontrolled initial open state.
23
+ * @default `false`
24
+ */
25
+ readonly defaultOpen?: boolean;
26
+ /**
27
+ * Called when the tooltip opens.
28
+ */
29
+ readonly onOpen?: () => void;
30
+ /**
31
+ * Called when the tooltip closes.
32
+ */
33
+ readonly onClose?: () => void;
34
+ /**
35
+ * Preferred placement relative to the trigger.
36
+ * @default `'top'`
37
+ */
38
+ readonly placement?: TooltipPlacement;
39
+ /**
40
+ * Distance in pixels between the tooltip and the trigger.
41
+ * @default `8`
42
+ */
43
+ readonly offset?: number;
44
+ /**
45
+ * Interaction that opens the tooltip. On web, `hover` opens on hover and focus; on native, long press.
46
+ * `focus` opens on focus (web) or long press (native). `click` toggles on press — on web, dismisses on outside click or Escape.
47
+ * @default `'hover'`
48
+ */
49
+ readonly trigger?: TooltipTriggerMode;
50
+ }
51
+ export interface TooltipContextValue {
52
+ readonly open: boolean;
53
+ readonly setOpen: (open: boolean) => void;
54
+ readonly requestOpen: () => void;
55
+ readonly requestClose: () => void;
56
+ readonly clearTimers: () => void;
57
+ readonly isDisabled: boolean;
58
+ readonly enterDelay: number;
59
+ readonly leaveDelay: number;
60
+ readonly placement: TooltipPlacement;
61
+ readonly offset: number;
62
+ readonly trigger: TooltipTriggerMode;
63
+ readonly triggerRef: RefObject<ComponentRef<typeof View> | null>;
64
+ readonly contentId: string;
65
+ readonly triggerId: string;
66
+ readonly resolvedPlacement: ResolvedTooltipPlacement | null;
67
+ readonly setResolvedPlacement: (placement: ResolvedTooltipPlacement) => void;
68
+ }
69
+ export interface ITooltipTriggerProps extends PressableProps {
70
+ /** When true, merges trigger props onto the single child element. */
71
+ readonly asChild?: boolean;
72
+ readonly children?: ReactNode;
73
+ }
74
+ export interface ITooltipContentProps extends ViewProps {
75
+ readonly asChild?: boolean;
76
+ readonly children?: ReactNode;
77
+ }
78
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tooltip/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5D,QAAQ,CAAC,oBAAoB,EAAE,CAAC,SAAS,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAC9E;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,qEAAqE;IACrE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-beta.144",
3
+ "version": "0.0.1-beta.145",
4
4
  "license": "MIT",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -61,8 +61,8 @@
61
61
  "@react-stately/checkbox": "3.7.4",
62
62
  "@react-stately/radio": "3.12.0",
63
63
  "@react-stately/toggle": "3.9.4",
64
- "@cdx-ui/formatters": "0.0.1-beta.135",
65
- "@cdx-ui/utils": "0.0.1-beta.144"
64
+ "@cdx-ui/formatters": "0.0.1-beta.136",
65
+ "@cdx-ui/utils": "0.0.1-beta.145"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/react": "19.1.17",
package/src/index.ts CHANGED
@@ -37,6 +37,7 @@ export * from './switch';
37
37
  export * from './tabs';
38
38
  export * from './tile';
39
39
  export * from './toast';
40
+ export * from './tooltip';
40
41
  export * from './portal';
41
42
  export * from './progress-bar';
42
43
  export * from './radio';
@@ -77,38 +77,33 @@ export function useAnchorPosition(
77
77
  }
78
78
 
79
79
  let cancelled = false;
80
+ let retryFrameId = 0;
81
+ let webFrameId = 0;
80
82
 
81
83
  const runMeasure = () => {
82
- if (!cancelled) {
83
- measureAnchor();
84
+ if (cancelled) {
85
+ return;
84
86
  }
87
+
88
+ const anchor = anchorRef.current;
89
+ if (!anchor) {
90
+ retryFrameId = requestAnimationFrame(runMeasure);
91
+ return;
92
+ }
93
+
94
+ measureAnchor();
85
95
  };
86
96
 
87
97
  runMeasure();
88
98
 
89
99
  if (Platform.OS === 'web') {
90
- const frame = requestAnimationFrame(runMeasure);
91
- return () => {
92
- cancelled = true;
93
- cancelAnimationFrame(frame);
94
- };
95
- }
96
-
97
- const anchor = anchorRef.current;
98
- if (!anchor) {
99
- return () => {
100
- cancelled = true;
101
- };
100
+ webFrameId = requestAnimationFrame(runMeasure);
102
101
  }
103
102
 
104
- anchor.measureInWindow((x: number, y: number, width: number, height: number) => {
105
- if (!cancelled) {
106
- setLayoutIfChanged(setLayout, { x, y, width, height });
107
- }
108
- });
109
-
110
103
  return () => {
111
104
  cancelled = true;
105
+ cancelAnimationFrame(retryFrameId);
106
+ cancelAnimationFrame(webFrameId);
112
107
  };
113
108
  }, [open, anchorRef, remeasureKey]);
114
109