datocms-react-ui 2.1.0-alpha.0 → 2.1.0-alpha.2

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 (126) hide show
  1. package/dist/cjs/HotKey/index.js +105 -0
  2. package/dist/cjs/HotKey/index.js.map +1 -0
  3. package/dist/cjs/HotKey/styles.module.css.json +1 -0
  4. package/dist/cjs/SplitView/SplitViewPane/index.js +14 -0
  5. package/dist/cjs/SplitView/SplitViewPane/index.js.map +1 -0
  6. package/dist/cjs/SplitView/SplitViewPane/styles.module.css.json +1 -0
  7. package/dist/cjs/SplitView/SplitViewSash/index.js +76 -0
  8. package/dist/cjs/SplitView/SplitViewSash/index.js.map +1 -0
  9. package/dist/cjs/SplitView/SplitViewSash/styles.module.css.json +1 -0
  10. package/dist/cjs/SplitView/index.js +206 -0
  11. package/dist/cjs/SplitView/index.js.map +1 -0
  12. package/dist/cjs/SplitView/styles.module.css.json +1 -0
  13. package/dist/cjs/SplitView/types.js +3 -0
  14. package/dist/cjs/SplitView/types.js.map +1 -0
  15. package/dist/cjs/Tooltip/Tooltip/index.js +116 -0
  16. package/dist/cjs/Tooltip/Tooltip/index.js.map +1 -0
  17. package/dist/cjs/Tooltip/TooltipContent/index.js +147 -0
  18. package/dist/cjs/Tooltip/TooltipContent/index.js.map +1 -0
  19. package/dist/cjs/Tooltip/TooltipContent/styles.module.css.json +1 -0
  20. package/dist/cjs/Tooltip/TooltipDelayGroup/index.js +140 -0
  21. package/dist/cjs/Tooltip/TooltipDelayGroup/index.js.map +1 -0
  22. package/dist/cjs/Tooltip/TooltipTrigger/index.js +102 -0
  23. package/dist/cjs/Tooltip/TooltipTrigger/index.js.map +1 -0
  24. package/dist/cjs/Tooltip/index.js +12 -0
  25. package/dist/cjs/Tooltip/index.js.map +1 -0
  26. package/dist/cjs/Tooltip/utils.js +165 -0
  27. package/dist/cjs/Tooltip/utils.js.map +1 -0
  28. package/dist/cjs/VerticalSplit/index.js +337 -0
  29. package/dist/cjs/VerticalSplit/index.js.map +1 -0
  30. package/dist/cjs/VerticalSplit/styles.module.css.json +1 -0
  31. package/dist/cjs/icons.js +19 -1
  32. package/dist/cjs/icons.js.map +1 -1
  33. package/dist/cjs/index.js +7 -3
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/esm/HotKey/index.d.ts +70 -0
  36. package/dist/esm/HotKey/index.js +75 -0
  37. package/dist/esm/HotKey/index.js.map +1 -0
  38. package/dist/esm/HotKey/styles.module.css.json +1 -0
  39. package/dist/esm/SplitView/SplitViewPane/index.d.ts +7 -0
  40. package/dist/esm/SplitView/SplitViewPane/index.js +7 -0
  41. package/dist/esm/SplitView/SplitViewPane/index.js.map +1 -0
  42. package/dist/esm/SplitView/SplitViewPane/styles.module.css.json +1 -0
  43. package/dist/esm/SplitView/SplitViewSash/index.d.ts +17 -0
  44. package/dist/esm/SplitView/SplitViewSash/index.js +46 -0
  45. package/dist/esm/SplitView/SplitViewSash/index.js.map +1 -0
  46. package/dist/esm/SplitView/SplitViewSash/styles.module.css.json +1 -0
  47. package/dist/esm/SplitView/index.d.ts +16 -0
  48. package/dist/esm/SplitView/index.js +176 -0
  49. package/dist/esm/SplitView/index.js.map +1 -0
  50. package/dist/esm/SplitView/styles.module.css.json +1 -0
  51. package/dist/esm/SplitView/types.d.ts +8 -0
  52. package/dist/esm/SplitView/types.js +2 -0
  53. package/dist/esm/SplitView/types.js.map +1 -0
  54. package/dist/esm/Tooltip/Tooltip/index.d.ts +74 -0
  55. package/dist/esm/Tooltip/Tooltip/index.js +89 -0
  56. package/dist/esm/Tooltip/Tooltip/index.js.map +1 -0
  57. package/dist/esm/Tooltip/TooltipContent/index.d.ts +68 -0
  58. package/dist/esm/Tooltip/TooltipContent/index.js +118 -0
  59. package/dist/esm/Tooltip/TooltipContent/index.js.map +1 -0
  60. package/dist/esm/Tooltip/TooltipContent/styles.module.css.json +1 -0
  61. package/dist/esm/Tooltip/TooltipDelayGroup/index.d.ts +118 -0
  62. package/dist/esm/Tooltip/TooltipDelayGroup/index.js +113 -0
  63. package/dist/esm/Tooltip/TooltipDelayGroup/index.js.map +1 -0
  64. package/dist/esm/Tooltip/TooltipTrigger/index.d.ts +45 -0
  65. package/dist/esm/Tooltip/TooltipTrigger/index.js +76 -0
  66. package/dist/esm/Tooltip/TooltipTrigger/index.js.map +1 -0
  67. package/dist/esm/Tooltip/index.d.ts +8 -0
  68. package/dist/esm/Tooltip/index.js +5 -0
  69. package/dist/esm/Tooltip/index.js.map +1 -0
  70. package/dist/esm/Tooltip/utils.d.ts +166 -0
  71. package/dist/esm/Tooltip/utils.js +135 -0
  72. package/dist/esm/Tooltip/utils.js.map +1 -0
  73. package/dist/esm/VerticalSplit/index.d.ts +238 -0
  74. package/dist/esm/VerticalSplit/index.js +307 -0
  75. package/dist/esm/VerticalSplit/index.js.map +1 -0
  76. package/dist/esm/VerticalSplit/styles.module.css.json +1 -0
  77. package/dist/esm/icons.d.ts +3 -0
  78. package/dist/esm/icons.js +15 -0
  79. package/dist/esm/icons.js.map +1 -1
  80. package/dist/esm/index.d.ts +7 -3
  81. package/dist/esm/index.js +7 -3
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/types/HotKey/index.d.ts +70 -0
  84. package/dist/types/SplitView/SplitViewPane/index.d.ts +7 -0
  85. package/dist/types/SplitView/SplitViewSash/index.d.ts +17 -0
  86. package/dist/types/SplitView/index.d.ts +16 -0
  87. package/dist/types/SplitView/types.d.ts +8 -0
  88. package/dist/types/Tooltip/Tooltip/index.d.ts +74 -0
  89. package/dist/types/Tooltip/TooltipContent/index.d.ts +68 -0
  90. package/dist/types/Tooltip/TooltipDelayGroup/index.d.ts +118 -0
  91. package/dist/types/Tooltip/TooltipTrigger/index.d.ts +45 -0
  92. package/dist/types/Tooltip/index.d.ts +8 -0
  93. package/dist/types/Tooltip/utils.d.ts +166 -0
  94. package/dist/types/VerticalSplit/index.d.ts +238 -0
  95. package/dist/types/icons.d.ts +3 -0
  96. package/dist/types/index.d.ts +7 -3
  97. package/package.json +4 -3
  98. package/src/HotKey/index.tsx +95 -0
  99. package/src/HotKey/styles.module.css +22 -0
  100. package/src/HotKey/styles.module.css.json +1 -0
  101. package/src/SplitView/SplitViewPane/index.tsx +19 -0
  102. package/src/SplitView/SplitViewPane/styles.module.css +6 -0
  103. package/src/SplitView/SplitViewPane/styles.module.css.json +1 -0
  104. package/src/SplitView/SplitViewSash/index.tsx +99 -0
  105. package/src/SplitView/SplitViewSash/styles.module.css +68 -0
  106. package/src/SplitView/SplitViewSash/styles.module.css.json +1 -0
  107. package/src/SplitView/index.tsx +256 -0
  108. package/src/SplitView/styles.module.css +22 -0
  109. package/src/SplitView/styles.module.css.json +1 -0
  110. package/src/SplitView/types.ts +9 -0
  111. package/src/Tooltip/Tooltip/index.tsx +85 -0
  112. package/src/Tooltip/TooltipContent/index.tsx +145 -0
  113. package/src/Tooltip/TooltipContent/styles.module.css +10 -0
  114. package/src/Tooltip/TooltipContent/styles.module.css.json +1 -0
  115. package/src/Tooltip/TooltipDelayGroup/index.tsx +128 -0
  116. package/src/Tooltip/TooltipTrigger/index.tsx +71 -0
  117. package/src/Tooltip/index.ts +8 -0
  118. package/src/Tooltip/utils.ts +176 -0
  119. package/src/VerticalSplit/index.tsx +401 -0
  120. package/src/VerticalSplit/styles.module.css +103 -0
  121. package/src/VerticalSplit/styles.module.css.json +1 -0
  122. package/src/global.css +31 -25
  123. package/src/icons.tsx +60 -0
  124. package/src/index.ts +7 -3
  125. package/styles.css +1 -1
  126. package/types.json +6126 -3451
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.TooltipContent = void 0;
41
+ var react_1 = require("@floating-ui/react");
42
+ var React = __importStar(require("react"));
43
+ var Canvas_1 = require("../../Canvas");
44
+ var utils_1 = require("../utils");
45
+ var styles_module_css_json_1 = __importDefault(require("./styles.module.css.json"));
46
+ /**
47
+ * TooltipContent contains the content displayed in the floating tooltip.
48
+ *
49
+ * The content is automatically wrapped in a Canvas component to inherit the DatoCMS
50
+ * theme and styling. The tooltip uses a portal to render outside the normal DOM
51
+ * hierarchy, ensuring proper positioning and z-index stacking.
52
+ *
53
+ * @example Simple text tooltip
54
+ *
55
+ * Display plain text in a tooltip to provide helpful information:
56
+ *
57
+ * ```js
58
+ * <Canvas ctx={ctx}>
59
+ * <Tooltip>
60
+ * <TooltipTrigger>
61
+ * <Button>Delete</Button>
62
+ * </TooltipTrigger>
63
+ * <TooltipContent>
64
+ * This action cannot be undone
65
+ * </TooltipContent>
66
+ * </Tooltip>
67
+ * </Canvas>;
68
+ * ```
69
+ *
70
+ * @example Rich content tooltip
71
+ *
72
+ * Include formatted content with custom styles for more detailed information:
73
+ *
74
+ * ```js
75
+ * <Canvas ctx={ctx}>
76
+ * <Tooltip placement="right">
77
+ * <TooltipTrigger>
78
+ * <Button leftIcon={<HelpIcon />}>Help</Button>
79
+ * </TooltipTrigger>
80
+ * <TooltipContent>
81
+ * <div>
82
+ * <strong>Need assistance?</strong>
83
+ * <p style={{ margin: '5px 0 0 0', fontSize: 'var(--font-size-xs)' }}>
84
+ * Contact support@example.com
85
+ * </p>
86
+ * </div>
87
+ * </TooltipContent>
88
+ * </Tooltip>
89
+ * </Canvas>;
90
+ * ```
91
+ *
92
+ * @example Tooltip with keyboard shortcut
93
+ *
94
+ * Combine tooltips with the HotKey component to show keyboard shortcuts:
95
+ *
96
+ * ```js
97
+ * <Canvas ctx={ctx}>
98
+ * <Tooltip>
99
+ * <TooltipTrigger>
100
+ * <Button leftIcon={<SaveIcon />}>Save</Button>
101
+ * </TooltipTrigger>
102
+ * <TooltipContent>
103
+ * <HotKey hotkey="mod+s" label="Save changes" />
104
+ * </TooltipContent>
105
+ * </Tooltip>
106
+ * </Canvas>;
107
+ * ```
108
+ */
109
+ exports.TooltipContent = React.forwardRef(function TooltipContent(_a, propRef) {
110
+ var children = _a.children;
111
+ var ctx = (0, Canvas_1.useCtx)();
112
+ var state = (0, utils_1.useTooltipState)();
113
+ var _b = (0, react_1.useDelayGroupContext)(), isInstantPhase = _b.isInstantPhase, currentId = _b.currentId;
114
+ var ref = (0, react_1.useMergeRefs)([state.refs.setFloating, propRef]);
115
+ // Use the shared portal root
116
+ var portalRootRef = React.useRef(null);
117
+ React.useEffect(function () {
118
+ // Get the shared portal root and increment ref count
119
+ portalRootRef.current = (0, utils_1.getSharedPortalRoot)();
120
+ // Cleanup function to release the shared portal root
121
+ return function () {
122
+ (0, utils_1.releaseSharedPortalRoot)();
123
+ };
124
+ }, []);
125
+ (0, react_1.useDelayGroup)(state.context, { id: state.context.floatingId });
126
+ var instantDuration = 0;
127
+ var duration = 250;
128
+ var _c = (0, react_1.useTransitionStyles)(state.context, {
129
+ duration: isInstantPhase
130
+ ? {
131
+ open: instantDuration,
132
+ // `id` is this component's `id`
133
+ // `currentId` is the current group's `id`
134
+ close: currentId === state.context.floatingId ? duration : instantDuration,
135
+ }
136
+ : duration,
137
+ initial: {
138
+ opacity: 0,
139
+ },
140
+ }), isMounted = _c.isMounted, styles = _c.styles;
141
+ if (!isMounted)
142
+ return null;
143
+ return (React.createElement(react_1.FloatingPortal, { root: portalRootRef },
144
+ React.createElement(Canvas_1.Canvas, { ctx: ctx, noAutoResizer: true },
145
+ React.createElement("div", __assign({ ref: ref, style: __assign(__assign({}, state.floatingStyles), styles) }, state.getFloatingProps(), { className: styles_module_css_json_1.default.tooltip }), children))));
146
+ });
147
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Tooltip/TooltipContent/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAM4B;AAC5B,2CAA+B;AAC/B,uCAA8C;AAC9C,kCAIkB;AAClB,oFAAyC;AAMzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG;AACU,QAAA,cAAc,GAAG,KAAK,CAAC,UAAU,CAG5C,SAAS,cAAc,CAAC,EAAY,EAAE,OAAO;QAAnB,QAAQ,cAAA;IAClC,IAAM,GAAG,GAAG,IAAA,eAAM,GAAE,CAAC;IACrB,IAAM,KAAK,GAAG,IAAA,uBAAe,GAAE,CAAC;IAC1B,IAAA,KAAgC,IAAA,4BAAoB,GAAE,EAApD,cAAc,oBAAA,EAAE,SAAS,eAA2B,CAAC;IAC7D,IAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE5D,6BAA6B;IAC7B,IAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAwB,IAAI,CAAC,CAAC;IAEhE,KAAK,CAAC,SAAS,CAAC;QACd,qDAAqD;QACrD,aAAa,CAAC,OAAO,GAAG,IAAA,2BAAmB,GAAE,CAAC;QAE9C,qDAAqD;QACrD,OAAO;YACL,IAAA,+BAAuB,GAAE,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAA,qBAAa,EAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAE/D,IAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,IAAM,QAAQ,GAAG,GAAG,CAAC;IAEf,IAAA,KAAwB,IAAA,2BAAmB,EAAC,KAAK,CAAC,OAAO,EAAE;QAC/D,QAAQ,EAAE,cAAc;YACtB,CAAC,CAAC;gBACE,IAAI,EAAE,eAAe;gBACrB,gCAAgC;gBAChC,0CAA0C;gBAC1C,KAAK,EACH,SAAS,KAAK,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe;aACtE;YACH,CAAC,CAAC,QAAQ;QACZ,OAAO,EAAE;YACP,OAAO,EAAE,CAAC;SACX;KACF,CAAC,EAbM,SAAS,eAAA,EAAE,MAAM,YAavB,CAAC;IAEH,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAE5B,OAAO,CACL,oBAAC,sBAAc,IAAC,IAAI,EAAE,aAAa;QACjC,oBAAC,eAAM,IAAC,GAAG,EAAE,GAAG,EAAE,aAAa;YAC7B,sCACE,GAAG,EAAE,GAAG,EACR,KAAK,wBACA,KAAK,CAAC,cAAc,GACpB,MAAM,KAEP,KAAK,CAAC,gBAAgB,EAAE,IAC5B,SAAS,EAAE,gCAAC,CAAC,OAAO,KAEnB,QAAQ,CACL,CACC,CACM,CAClB,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ { "tooltip": "_tooltip_3z5rn_1" }
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.TooltipDelayGroup = void 0;
27
+ var react_1 = require("@floating-ui/react");
28
+ var React = __importStar(require("react"));
29
+ /**
30
+ * TooltipDelayGroup synchronizes hover delays across multiple tooltips.
31
+ *
32
+ * When tooltips are wrapped in a delay group, hovering over the first tooltip
33
+ * will use the configured delay, but subsequent tooltips in the group will
34
+ * open instantly. This creates a smoother UX when users explore multiple
35
+ * interactive elements with tooltips.
36
+ *
37
+ * @example Basic delay group
38
+ *
39
+ * Group multiple tooltips together so they open instantly after the first one:
40
+ *
41
+ * ```js
42
+ * <Canvas ctx={ctx}>
43
+ * <TooltipDelayGroup delay={500}>
44
+ * <div style={{ display: 'flex', gap: 'var(--spacing-m)' }}>
45
+ * <Tooltip>
46
+ * <TooltipTrigger>
47
+ * <Button leftIcon={<SaveIcon />} />
48
+ * </TooltipTrigger>
49
+ * <TooltipContent>Save changes</TooltipContent>
50
+ * </Tooltip>
51
+ *
52
+ * <Tooltip>
53
+ * <TooltipTrigger>
54
+ * <Button leftIcon={<UndoIcon />} />
55
+ * </TooltipTrigger>
56
+ * <TooltipContent>Undo</TooltipContent>
57
+ * </Tooltip>
58
+ *
59
+ * <Tooltip>
60
+ * <TooltipTrigger>
61
+ * <Button leftIcon={<RedoIcon />} />
62
+ * </TooltipTrigger>
63
+ * <TooltipContent>Redo</TooltipContent>
64
+ * </Tooltip>
65
+ * </div>
66
+ * </TooltipDelayGroup>
67
+ * </Canvas>;
68
+ * ```
69
+ *
70
+ * @example Custom delay configuration
71
+ *
72
+ * Configure different delays for opening and closing tooltips in the group:
73
+ *
74
+ * ```js
75
+ * <Canvas ctx={ctx}>
76
+ * <TooltipDelayGroup delay={{ open: 800, close: 200 }} timeoutMs={500}>
77
+ * <div style={{ display: 'flex', gap: 'var(--spacing-s)' }}>
78
+ * <Tooltip>
79
+ * <TooltipTrigger>
80
+ * <Button>Action 1</Button>
81
+ * </TooltipTrigger>
82
+ * <TooltipContent>First action</TooltipContent>
83
+ * </Tooltip>
84
+ *
85
+ * <Tooltip>
86
+ * <TooltipTrigger>
87
+ * <Button>Action 2</Button>
88
+ * </TooltipTrigger>
89
+ * <TooltipContent>Second action</TooltipContent>
90
+ * </Tooltip>
91
+ * </div>
92
+ * </TooltipDelayGroup>
93
+ * </Canvas>;
94
+ * ```
95
+ *
96
+ * @example Toolbar with grouped tooltips
97
+ *
98
+ * Create a toolbar where hovering between tools feels instant and responsive:
99
+ *
100
+ * ```js
101
+ * <Canvas ctx={ctx}>
102
+ * <TooltipDelayGroup delay={600}>
103
+ * <div style={{
104
+ * display: 'flex',
105
+ * gap: 'var(--spacing-xs)',
106
+ * padding: 'var(--spacing-s)',
107
+ * borderRadius: 'var(--border-radius-m)',
108
+ * backgroundColor: 'var(--light-bg-color)'
109
+ * }}>
110
+ * <Tooltip>
111
+ * <TooltipTrigger>
112
+ * <Button buttonSize="s" leftIcon={<BoldIcon />} />
113
+ * </TooltipTrigger>
114
+ * <TooltipContent>Bold</TooltipContent>
115
+ * </Tooltip>
116
+ *
117
+ * <Tooltip>
118
+ * <TooltipTrigger>
119
+ * <Button buttonSize="s" leftIcon={<ItalicIcon />} />
120
+ * </TooltipTrigger>
121
+ * <TooltipContent>Italic</TooltipContent>
122
+ * </Tooltip>
123
+ *
124
+ * <Tooltip>
125
+ * <TooltipTrigger>
126
+ * <Button buttonSize="s" leftIcon={<UnderlineIcon />} />
127
+ * </TooltipTrigger>
128
+ * <TooltipContent>Underline</TooltipContent>
129
+ * </Tooltip>
130
+ * </div>
131
+ * </TooltipDelayGroup>
132
+ * </Canvas>;
133
+ * ```
134
+ */
135
+ function TooltipDelayGroup(_a) {
136
+ var children = _a.children, _b = _a.delay, delay = _b === void 0 ? 1000 : _b, _c = _a.timeoutMs, timeoutMs = _c === void 0 ? 0 : _c;
137
+ return (React.createElement(react_1.FloatingDelayGroup, { delay: delay, timeoutMs: timeoutMs }, children));
138
+ }
139
+ exports.TooltipDelayGroup = TooltipDelayGroup;
140
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Tooltip/TooltipDelayGroup/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAwD;AACxD,2CAA+B;AAU/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyGG;AACH,SAAgB,iBAAiB,CAAC,EAIT;QAHvB,QAAQ,cAAA,EACR,aAAY,EAAZ,KAAK,mBAAG,IAAI,KAAA,EACZ,iBAAa,EAAb,SAAS,mBAAG,CAAC,KAAA;IAEb,OAAO,CACL,oBAAC,0BAAkB,IAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IACnD,QAAQ,CACU,CACtB,CAAC;AACJ,CAAC;AAVD,8CAUC"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ var __rest = (this && this.__rest) || function (s, e) {
37
+ var t = {};
38
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
39
+ t[p] = s[p];
40
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
41
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
43
+ t[p[i]] = s[p[i]];
44
+ }
45
+ return t;
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.TooltipTrigger = void 0;
49
+ var react_1 = require("@floating-ui/react");
50
+ var React = __importStar(require("react"));
51
+ var utils_1 = require("../utils");
52
+ /**
53
+ * TooltipTrigger wraps the element that triggers the tooltip on hover/focus.
54
+ *
55
+ * The child must be a single React element that accepts ref and event handler props.
56
+ * Common triggers include buttons, icons, or other interactive elements.
57
+ *
58
+ * @example With Button component
59
+ *
60
+ * Wrap a button to show a tooltip when the user hovers over it:
61
+ *
62
+ * ```js
63
+ * <Canvas ctx={ctx}>
64
+ * <Tooltip>
65
+ * <TooltipTrigger>
66
+ * <Button>Hover for info</Button>
67
+ * </TooltipTrigger>
68
+ * <TooltipContent>
69
+ * Additional information appears here
70
+ * </TooltipContent>
71
+ * </Tooltip>
72
+ * </Canvas>;
73
+ * ```
74
+ *
75
+ * @example With icon button
76
+ *
77
+ * Use tooltips with icon-only buttons to explain their purpose:
78
+ *
79
+ * ```js
80
+ * <Canvas ctx={ctx}>
81
+ * <Tooltip placement="bottom">
82
+ * <TooltipTrigger>
83
+ * <Button buttonSize="s" leftIcon={<InfoIcon />} />
84
+ * </TooltipTrigger>
85
+ * <TooltipContent>
86
+ * Click for more details
87
+ * </TooltipContent>
88
+ * </Tooltip>
89
+ * </Canvas>;
90
+ * ```
91
+ */
92
+ exports.TooltipTrigger = React.forwardRef(function TooltipTrigger(_a, propRef) {
93
+ var children = _a.children, props = __rest(_a, ["children"]);
94
+ var state = (0, utils_1.useTooltipState)();
95
+ var childrenRef = children.ref;
96
+ var ref = (0, react_1.useMergeRefs)([state.refs.setReference, propRef, childrenRef]);
97
+ if (!React.isValidElement(children)) {
98
+ throw new Error('TooltipTrigger children must be a valid React element');
99
+ }
100
+ return React.cloneElement(children, state.getReferenceProps(__assign(__assign(__assign({ ref: ref }, props), children.props), { 'data-state': state.open ? 'open' : 'closed' })));
101
+ });
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/Tooltip/TooltipTrigger/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAkD;AAClD,2CAA+B;AAC/B,kCAA2C;AAM3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACU,QAAA,cAAc,GAAG,KAAK,CAAC,UAAU,CAG5C,SAAS,cAAc,CAAC,EAAsB,EAAE,OAAO;IAA7B,IAAA,QAAQ,cAAA,EAAK,KAAK,cAApB,YAAsB,CAAF;IAC5C,IAAM,KAAK,GAAG,IAAA,uBAAe,GAAE,CAAC;IAEhC,IAAM,WAAW,GAAI,QAAgB,CAAC,GAAG,CAAC;IAC1C,IAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1E,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACnC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;KAC1E;IAED,OAAO,KAAK,CAAC,YAAY,CACvB,QAAQ,EACR,KAAK,CAAC,iBAAiB,8BACrB,GAAG,KAAA,IACA,KAAK,GACL,QAAQ,CAAC,KAAK,KACjB,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAC5C,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TooltipTrigger = exports.TooltipDelayGroup = exports.TooltipContent = exports.Tooltip = void 0;
4
+ var Tooltip_1 = require("./Tooltip");
5
+ Object.defineProperty(exports, "Tooltip", { enumerable: true, get: function () { return Tooltip_1.Tooltip; } });
6
+ var TooltipContent_1 = require("./TooltipContent");
7
+ Object.defineProperty(exports, "TooltipContent", { enumerable: true, get: function () { return TooltipContent_1.TooltipContent; } });
8
+ var TooltipDelayGroup_1 = require("./TooltipDelayGroup");
9
+ Object.defineProperty(exports, "TooltipDelayGroup", { enumerable: true, get: function () { return TooltipDelayGroup_1.TooltipDelayGroup; } });
10
+ var TooltipTrigger_1 = require("./TooltipTrigger");
11
+ Object.defineProperty(exports, "TooltipTrigger", { enumerable: true, get: function () { return TooltipTrigger_1.TooltipTrigger; } });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Tooltip/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoC;AAA3B,kGAAA,OAAO,OAAA;AAEhB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AAEvB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useTooltipState = exports.TooltipContext = exports.useTooltip = exports.releaseSharedPortalRoot = exports.getSharedPortalRoot = void 0;
38
+ var react_1 = require("@floating-ui/react");
39
+ var React = __importStar(require("react"));
40
+ // Create a single shared portal root for all tooltips
41
+ var sharedPortalRoot = null;
42
+ var portalRefCount = 0;
43
+ function getSharedPortalRoot() {
44
+ if (!sharedPortalRoot) {
45
+ sharedPortalRoot = document.createElement('div');
46
+ sharedPortalRoot.style.position = 'relative';
47
+ sharedPortalRoot.style.zIndex = '100000';
48
+ sharedPortalRoot.style.height = '0px';
49
+ // Insert as the first child of body
50
+ if (document.body.firstChild) {
51
+ document.body.insertBefore(sharedPortalRoot, document.body.firstChild);
52
+ }
53
+ else {
54
+ document.body.appendChild(sharedPortalRoot);
55
+ }
56
+ }
57
+ portalRefCount++;
58
+ return sharedPortalRoot;
59
+ }
60
+ exports.getSharedPortalRoot = getSharedPortalRoot;
61
+ function releaseSharedPortalRoot() {
62
+ portalRefCount--;
63
+ if (portalRefCount === 0 && sharedPortalRoot) {
64
+ if (sharedPortalRoot.parentNode) {
65
+ sharedPortalRoot.parentNode.removeChild(sharedPortalRoot);
66
+ }
67
+ sharedPortalRoot = null;
68
+ }
69
+ }
70
+ exports.releaseSharedPortalRoot = releaseSharedPortalRoot;
71
+ /**
72
+ * Hook that manages tooltip state and positioning logic.
73
+ *
74
+ * This hook provides the core tooltip behavior including hover/focus detection,
75
+ * positioning, and accessibility features. Use this when you need full control
76
+ * over the tooltip structure.
77
+ *
78
+ * @example Basic tooltip hook usage
79
+ *
80
+ * Build a custom tooltip implementation using the hook directly for maximum flexibility:
81
+ *
82
+ * ```js
83
+ * function MyComponent() {
84
+ * const tooltip = useTooltip({ placement: 'top' });
85
+ *
86
+ * return (
87
+ * <>
88
+ * <button
89
+ * ref={tooltip.refs.setReference}
90
+ * {...tooltip.getReferenceProps()}
91
+ * >
92
+ * Hover me
93
+ * </button>
94
+ *
95
+ * {tooltip.open && (
96
+ * <div
97
+ * ref={tooltip.refs.setFloating}
98
+ * style={tooltip.floatingStyles}
99
+ * {...tooltip.getFloatingProps()}
100
+ * >
101
+ * Tooltip content
102
+ * </div>
103
+ * )}
104
+ * </>
105
+ * );
106
+ * }
107
+ * ```
108
+ *
109
+ * @example Controlled tooltip
110
+ *
111
+ * Control the tooltip's open state programmatically for click-to-toggle behavior:
112
+ *
113
+ * ```js
114
+ * function ControlledTooltip() {
115
+ * const [open, setOpen] = React.useState(false);
116
+ * const tooltip = useTooltip({ open, onOpenChange: setOpen });
117
+ *
118
+ * return (
119
+ * <Canvas ctx={ctx}>
120
+ * <button onClick={() => setOpen(!open)}>
121
+ * Toggle tooltip
122
+ * </button>
123
+ * </Canvas>
124
+ * );
125
+ * }
126
+ * ```
127
+ */
128
+ function useTooltip(_a) {
129
+ var _b = _a === void 0 ? {} : _a, _c = _b.initialOpen, initialOpen = _c === void 0 ? false : _c, _d = _b.placement, placement = _d === void 0 ? 'top' : _d, controlledOpen = _b.open, setControlledOpen = _b.onOpenChange;
130
+ var _e = React.useState(initialOpen), uncontrolledOpen = _e[0], setUncontrolledOpen = _e[1];
131
+ var open = controlledOpen !== null && controlledOpen !== void 0 ? controlledOpen : uncontrolledOpen;
132
+ var setOpen = setControlledOpen !== null && setControlledOpen !== void 0 ? setControlledOpen : setUncontrolledOpen;
133
+ var delay = (0, react_1.useDelayGroupContext)().delay;
134
+ var data = (0, react_1.useFloating)({
135
+ placement: placement,
136
+ open: open,
137
+ onOpenChange: setOpen,
138
+ whileElementsMounted: react_1.autoUpdate,
139
+ middleware: [(0, react_1.offset)(5), (0, react_1.flip)(), (0, react_1.shift)()],
140
+ });
141
+ var context = data.context;
142
+ var hover = (0, react_1.useHover)(context, {
143
+ move: false,
144
+ enabled: controlledOpen == null,
145
+ delay: delay,
146
+ });
147
+ var focus = (0, react_1.useFocus)(context, {
148
+ enabled: controlledOpen == null,
149
+ });
150
+ var dismiss = (0, react_1.useDismiss)(context);
151
+ var role = (0, react_1.useRole)(context, { role: 'tooltip' });
152
+ var interactions = (0, react_1.useInteractions)([hover, focus, dismiss, role]);
153
+ return React.useMemo(function () { return (__assign(__assign({ open: open, setOpen: setOpen }, interactions), data)); }, [open, setOpen, interactions, data]);
154
+ }
155
+ exports.useTooltip = useTooltip;
156
+ exports.TooltipContext = React.createContext(null);
157
+ var useTooltipState = function () {
158
+ var context = React.useContext(exports.TooltipContext);
159
+ if (context == null) {
160
+ throw new Error('Tooltip components must be wrapped in <Tooltip />');
161
+ }
162
+ return context;
163
+ };
164
+ exports.useTooltipState = useTooltipState;
165
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/Tooltip/utils.ts"],"names":[],"mappings":"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"}