@dmsi/wedgekit-react 0.0.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 (263) hide show
  1. package/README.md +35 -0
  2. package/dist/chunk-27KIIUAR.js +59 -0
  3. package/dist/chunk-2G2E2JMA.js +123 -0
  4. package/dist/chunk-4C66DLIJ.js +51 -0
  5. package/dist/chunk-4RD5ZF2V.js +55 -0
  6. package/dist/chunk-4RJKB7LC.js +14 -0
  7. package/dist/chunk-4T7F5BZZ.js +26 -0
  8. package/dist/chunk-5GOBP2JS.js +53 -0
  9. package/dist/chunk-6ZY524ID.js +42 -0
  10. package/dist/chunk-AWQSSKCK.js +32 -0
  11. package/dist/chunk-BNHSAFMP.js +93 -0
  12. package/dist/chunk-BWRHL2AG.js +439 -0
  13. package/dist/chunk-DKKYR6DS.js +132 -0
  14. package/dist/chunk-E5ALT5W7.js +182 -0
  15. package/dist/chunk-FY7PTP6E.js +322 -0
  16. package/dist/chunk-GTCSRHPF.js +119 -0
  17. package/dist/chunk-I2UVVKQI.js +12 -0
  18. package/dist/chunk-IGQVA7SC.js +41 -0
  19. package/dist/chunk-K3IKUSZW.js +59 -0
  20. package/dist/chunk-KENSVWOY.js +151 -0
  21. package/dist/chunk-KX3O6GJ6.js +138 -0
  22. package/dist/chunk-L4UM372R.js +253 -0
  23. package/dist/chunk-ORMEWXMH.js +37 -0
  24. package/dist/chunk-Q3FKEKIN.js +23 -0
  25. package/dist/chunk-SEKKGFM6.js +28 -0
  26. package/dist/chunk-SY3HT54E.js +91 -0
  27. package/dist/chunk-TAW5ZZ4Z.js +346 -0
  28. package/dist/chunk-TRUPPHBQ.js +109 -0
  29. package/dist/chunk-TU55CHXU.js +30 -0
  30. package/dist/chunk-TWZZB4WO.js +114 -0
  31. package/dist/chunk-TYI74BSP.js +62 -0
  32. package/dist/chunk-U42SKNR6.js +104 -0
  33. package/dist/chunk-UU3FA6LV.js +72 -0
  34. package/dist/chunk-WVUIIBRR.js +51 -0
  35. package/dist/chunk-XUIPGYP5.js +39 -0
  36. package/dist/chunk-Z4UCFUF7.js +299 -0
  37. package/dist/components/Breadcrumbs.cjs +376 -0
  38. package/dist/components/Breadcrumbs.js +90 -0
  39. package/dist/components/Button.cjs +319 -0
  40. package/dist/components/Button.js +8 -0
  41. package/dist/components/CalendarRange.cjs +520 -0
  42. package/dist/components/CalendarRange.js +13 -0
  43. package/dist/components/Caption.cjs +283 -0
  44. package/dist/components/Caption.js +80 -0
  45. package/dist/components/Checkbox.cjs +378 -0
  46. package/dist/components/Checkbox.js +11 -0
  47. package/dist/components/ContentTab.cjs +382 -0
  48. package/dist/components/ContentTab.js +10 -0
  49. package/dist/components/ContentTabs.cjs +472 -0
  50. package/dist/components/ContentTabs.js +98 -0
  51. package/dist/components/DMSiLogo.cjs +79 -0
  52. package/dist/components/DMSiLogo.js +56 -0
  53. package/dist/components/DataGrid.cjs +3113 -0
  54. package/dist/components/DataGrid.js +758 -0
  55. package/dist/components/DataGridCell.cjs +1907 -0
  56. package/dist/components/DataGridCell.js +24 -0
  57. package/dist/components/DataTable.cjs +791 -0
  58. package/dist/components/DataTable.js +720 -0
  59. package/dist/components/DateInput.cjs +1130 -0
  60. package/dist/components/DateInput.js +170 -0
  61. package/dist/components/DateRangeInput.cjs +1131 -0
  62. package/dist/components/DateRangeInput.js +171 -0
  63. package/dist/components/DebugJson.cjs +50 -0
  64. package/dist/components/DebugJson.js +27 -0
  65. package/dist/components/Display.cjs +234 -0
  66. package/dist/components/Display.js +12 -0
  67. package/dist/components/EditingContext.cjs +73 -0
  68. package/dist/components/EditingContext.js +35 -0
  69. package/dist/components/FilterGroup.cjs +1431 -0
  70. package/dist/components/FilterGroup.js +231 -0
  71. package/dist/components/FullViewportBox.cjs +35 -0
  72. package/dist/components/FullViewportBox.js +12 -0
  73. package/dist/components/Grid.cjs +69 -0
  74. package/dist/components/Grid.js +36 -0
  75. package/dist/components/GridContainer.cjs +125 -0
  76. package/dist/components/GridContainer.js +92 -0
  77. package/dist/components/Heading.cjs +238 -0
  78. package/dist/components/Heading.js +14 -0
  79. package/dist/components/HorizontalDivider.cjs +33 -0
  80. package/dist/components/HorizontalDivider.js +10 -0
  81. package/dist/components/Icon.cjs +98 -0
  82. package/dist/components/Icon.js +7 -0
  83. package/dist/components/Input.cjs +672 -0
  84. package/dist/components/Input.js +21 -0
  85. package/dist/components/InputGroup.cjs +270 -0
  86. package/dist/components/InputGroup.js +60 -0
  87. package/dist/components/Label.cjs +223 -0
  88. package/dist/components/Label.js +8 -0
  89. package/dist/components/Link.cjs +262 -0
  90. package/dist/components/Link.js +8 -0
  91. package/dist/components/List.cjs +37 -0
  92. package/dist/components/List.js +14 -0
  93. package/dist/components/LiveChatComponent.cjs +63 -0
  94. package/dist/components/LiveChatComponent.js +40 -0
  95. package/dist/components/LogoAgilityTopBar.cjs +115 -0
  96. package/dist/components/LogoAgilityTopBar.js +92 -0
  97. package/dist/components/LogoDMSiTopBar.cjs +79 -0
  98. package/dist/components/LogoDMSiTopBar.js +7 -0
  99. package/dist/components/LogoMillworkTopBar.cjs +221 -0
  100. package/dist/components/LogoMillworkTopBar.js +198 -0
  101. package/dist/components/MainBar.cjs +211 -0
  102. package/dist/components/MainBar.js +65 -0
  103. package/dist/components/Menu.cjs +437 -0
  104. package/dist/components/Menu.js +11 -0
  105. package/dist/components/MenuOption.cjs +483 -0
  106. package/dist/components/MenuOption.js +13 -0
  107. package/dist/components/MobileDataGrid.cjs +658 -0
  108. package/dist/components/MobileDataGrid.js +125 -0
  109. package/dist/components/Modal.cjs +783 -0
  110. package/dist/components/Modal.js +245 -0
  111. package/dist/components/ModalButtons.cjs +385 -0
  112. package/dist/components/ModalButtons.js +10 -0
  113. package/dist/components/ModalContent.cjs +57 -0
  114. package/dist/components/ModalContent.js +7 -0
  115. package/dist/components/ModalHeader.cjs +426 -0
  116. package/dist/components/ModalHeader.js +11 -0
  117. package/dist/components/ModalScrim.cjs +64 -0
  118. package/dist/components/ModalScrim.js +7 -0
  119. package/dist/components/NavigationTab.cjs +431 -0
  120. package/dist/components/NavigationTab.js +10 -0
  121. package/dist/components/NavigationTabs.cjs +477 -0
  122. package/dist/components/NavigationTabs.js +56 -0
  123. package/dist/components/Notification.cjs +640 -0
  124. package/dist/components/Notification.js +117 -0
  125. package/dist/components/OptionPill.cjs +478 -0
  126. package/dist/components/OptionPill.js +11 -0
  127. package/dist/components/Paragraph.cjs +231 -0
  128. package/dist/components/Paragraph.js +8 -0
  129. package/dist/components/Password.cjs +700 -0
  130. package/dist/components/Password.js +53 -0
  131. package/dist/components/ProjectBar.cjs +242 -0
  132. package/dist/components/ProjectBar.js +63 -0
  133. package/dist/components/Radio.cjs +349 -0
  134. package/dist/components/Radio.js +131 -0
  135. package/dist/components/Search.cjs +767 -0
  136. package/dist/components/Search.js +12 -0
  137. package/dist/components/Select.cjs +758 -0
  138. package/dist/components/Select.js +12 -0
  139. package/dist/components/SideMenu.cjs +54 -0
  140. package/dist/components/SideMenu.js +21 -0
  141. package/dist/components/SideMenuGroup.cjs +422 -0
  142. package/dist/components/SideMenuGroup.js +83 -0
  143. package/dist/components/SideMenuItem.cjs +388 -0
  144. package/dist/components/SideMenuItem.js +70 -0
  145. package/dist/components/Stack.cjs +138 -0
  146. package/dist/components/Stack.js +7 -0
  147. package/dist/components/StatusPill.cjs +265 -0
  148. package/dist/components/StatusPill.js +52 -0
  149. package/dist/components/Stepper.cjs +885 -0
  150. package/dist/components/Stepper.js +105 -0
  151. package/dist/components/Subheader.cjs +226 -0
  152. package/dist/components/Subheader.js +8 -0
  153. package/dist/components/Surface.cjs +98 -0
  154. package/dist/components/Surface.js +40 -0
  155. package/dist/components/Swatch.cjs +1728 -0
  156. package/dist/components/Swatch.js +1319 -0
  157. package/dist/components/Textarea.cjs +269 -0
  158. package/dist/components/Textarea.js +96 -0
  159. package/dist/components/Theme.cjs +36 -0
  160. package/dist/components/Theme.js +7 -0
  161. package/dist/components/Time.cjs +1118 -0
  162. package/dist/components/Time.js +353 -0
  163. package/dist/components/Toast.cjs +644 -0
  164. package/dist/components/Toast.js +218 -0
  165. package/dist/components/Tooltip.cjs +273 -0
  166. package/dist/components/Tooltip.js +9 -0
  167. package/dist/components/TopBar.cjs +352 -0
  168. package/dist/components/TopBar.js +132 -0
  169. package/dist/components/useInfiniteScroll.cjs +57 -0
  170. package/dist/components/useInfiniteScroll.js +8 -0
  171. package/dist/components/useMatchesMedia.cjs +53 -0
  172. package/dist/components/useMatchesMedia.js +9 -0
  173. package/dist/components/useMenuSystem.cjs +358 -0
  174. package/dist/components/useMenuSystem.js +11 -0
  175. package/dist/components/useMounted.cjs +39 -0
  176. package/dist/components/useMounted.js +8 -0
  177. package/dist/fonts.css +21 -0
  178. package/dist/icons-light[FILL]-PPZXOLWS.woff2 +0 -0
  179. package/dist/icons-normal[FILL]-PPZXOLWS.woff2 +0 -0
  180. package/dist/index.css +4401 -0
  181. package/dist/open-sans-55T6A4JE.woff2 +0 -0
  182. package/dist/types.cjs +18 -0
  183. package/dist/types.js +0 -0
  184. package/package.json +66 -0
  185. package/src/brand.css +125 -0
  186. package/src/classNames.ts +144 -0
  187. package/src/components/Breadcrumbs.tsx +116 -0
  188. package/src/components/Button.tsx +210 -0
  189. package/src/components/CalendarRange.tsx +429 -0
  190. package/src/components/Caption.tsx +101 -0
  191. package/src/components/Checkbox.tsx +196 -0
  192. package/src/components/ContentTab.tsx +66 -0
  193. package/src/components/ContentTabs.tsx +103 -0
  194. package/src/components/DMSiLogo.tsx +32 -0
  195. package/src/components/DataGrid.tsx +948 -0
  196. package/src/components/DataGridCell.tsx +384 -0
  197. package/src/components/DataTable.tsx +835 -0
  198. package/src/components/DateInput.tsx +188 -0
  199. package/src/components/DateRangeInput.tsx +179 -0
  200. package/src/components/DebugJson.tsx +24 -0
  201. package/src/components/Display.tsx +60 -0
  202. package/src/components/EditingContext.tsx +40 -0
  203. package/src/components/FilterGroup.tsx +234 -0
  204. package/src/components/FullViewportBox.tsx +11 -0
  205. package/src/components/Grid.tsx +75 -0
  206. package/src/components/GridContainer.tsx +124 -0
  207. package/src/components/Heading.tsx +66 -0
  208. package/src/components/HorizontalDivider.tsx +3 -0
  209. package/src/components/Icon.tsx +36 -0
  210. package/src/components/Input.tsx +511 -0
  211. package/src/components/InputGroup.tsx +51 -0
  212. package/src/components/Label.tsx +40 -0
  213. package/src/components/Link.tsx +106 -0
  214. package/src/components/List.tsx +10 -0
  215. package/src/components/LiveChatComponent.tsx +56 -0
  216. package/src/components/LogoAgilityTopBar.tsx +53 -0
  217. package/src/components/LogoDMSiTopBar.tsx +32 -0
  218. package/src/components/LogoMillworkTopBar.tsx +118 -0
  219. package/src/components/MainBar.tsx +83 -0
  220. package/src/components/Menu.tsx +286 -0
  221. package/src/components/MenuOption.tsx +275 -0
  222. package/src/components/MobileDataGrid.tsx +135 -0
  223. package/src/components/Modal.tsx +271 -0
  224. package/src/components/ModalButtons.tsx +44 -0
  225. package/src/components/ModalContent.tsx +23 -0
  226. package/src/components/ModalHeader.tsx +41 -0
  227. package/src/components/ModalScrim.tsx +35 -0
  228. package/src/components/NavigationTab.tsx +89 -0
  229. package/src/components/NavigationTabs.tsx +63 -0
  230. package/src/components/Notification.tsx +120 -0
  231. package/src/components/OptionPill.tsx +114 -0
  232. package/src/components/Paragraph.tsx +49 -0
  233. package/src/components/Password.tsx +46 -0
  234. package/src/components/ProjectBar.tsx +76 -0
  235. package/src/components/Radio.tsx +140 -0
  236. package/src/components/Search.tsx +129 -0
  237. package/src/components/Select.tsx +104 -0
  238. package/src/components/SideMenu.tsx +21 -0
  239. package/src/components/SideMenuGroup.tsx +81 -0
  240. package/src/components/SideMenuItem.tsx +90 -0
  241. package/src/components/Stack.tsx +179 -0
  242. package/src/components/StatusPill.tsx +51 -0
  243. package/src/components/Stepper.tsx +91 -0
  244. package/src/components/Subheader.tsx +44 -0
  245. package/src/components/Surface.tsx +34 -0
  246. package/src/components/Swatch.tsx +1066 -0
  247. package/src/components/Textarea.tsx +101 -0
  248. package/src/components/Theme.tsx +13 -0
  249. package/src/components/Time.tsx +438 -0
  250. package/src/components/Toast.tsx +244 -0
  251. package/src/components/Tooltip.tsx +137 -0
  252. package/src/components/TopBar.tsx +124 -0
  253. package/src/components/useInfiniteScroll.tsx +40 -0
  254. package/src/components/useMatchesMedia.tsx +28 -0
  255. package/src/components/useMenuSystem.tsx +367 -0
  256. package/src/components/useMounted.tsx +14 -0
  257. package/src/darkmode.css +140 -0
  258. package/src/fonts.css +23 -0
  259. package/src/index.css +509 -0
  260. package/src/index.tsx +2 -0
  261. package/src/types.ts +149 -0
  262. package/src/utils/formatting.tsx +81 -0
  263. package/src/utils.ts +23 -0
@@ -0,0 +1,218 @@
1
+ "use client";
2
+ import {
3
+ Heading3
4
+ } from "../chunk-TYI74BSP.js";
5
+ import {
6
+ Button
7
+ } from "../chunk-KENSVWOY.js";
8
+ import {
9
+ Paragraph
10
+ } from "../chunk-K3IKUSZW.js";
11
+ import {
12
+ Icon
13
+ } from "../chunk-IGQVA7SC.js";
14
+ import "../chunk-KX3O6GJ6.js";
15
+ import {
16
+ __objRest,
17
+ __spreadProps,
18
+ __spreadValues
19
+ } from "../chunk-ORMEWXMH.js";
20
+
21
+ // src/components/Toast.tsx
22
+ import clsx from "clsx";
23
+ import { useEffect, useRef, useState } from "react";
24
+ import { createRoot } from "react-dom/client";
25
+ import { jsx, jsxs } from "react/jsx-runtime";
26
+ var variants = {
27
+ success: {
28
+ className: "border-success-400",
29
+ icon: /* @__PURE__ */ jsx("span", { className: "text-icon-success-normal contents", children: /* @__PURE__ */ jsx(Icon, { name: "check_circle", size: 24 }) })
30
+ },
31
+ warning: {
32
+ className: "border-warning-400",
33
+ icon: /* @__PURE__ */ jsx("span", { className: "text-icon-warning-normal contents", children: /* @__PURE__ */ jsx(Icon, { name: "warning", size: 24 }) })
34
+ },
35
+ error: {
36
+ className: "border-critical-400",
37
+ icon: /* @__PURE__ */ jsx("span", { className: "text-icon-critical-normal contents", children: /* @__PURE__ */ jsx(Icon, { name: "error", size: 24 }) })
38
+ },
39
+ info: {
40
+ className: "border-action-400",
41
+ icon: /* @__PURE__ */ jsx("span", { className: "text-icon-on-action-secondary-normal contents", children: /* @__PURE__ */ jsx(Icon, { name: "info", size: 24 }) })
42
+ }
43
+ };
44
+ var slideInFromBottomAnimation = (element, displayDuration = 8e3, inDuration = 50, outDuration = 50) => {
45
+ const totalDuration = inDuration + displayDuration + outDuration;
46
+ const rect = element.getBoundingClientRect();
47
+ const slideDistance = window.innerHeight - rect.bottom + 16;
48
+ return element.animate(
49
+ [
50
+ {
51
+ opacity: 0,
52
+ transform: `translateY(${slideDistance}px)`,
53
+ offset: 0
54
+ },
55
+ {
56
+ opacity: 1,
57
+ transform: "translateY(0)",
58
+ offset: inDuration / totalDuration
59
+ },
60
+ {
61
+ opacity: 1,
62
+ transform: "translateY(0)",
63
+ offset: (inDuration + displayDuration) / totalDuration
64
+ },
65
+ {
66
+ opacity: 0,
67
+ transform: `translateY(${slideDistance}px)`,
68
+ offset: 1
69
+ }
70
+ ],
71
+ {
72
+ duration: totalDuration,
73
+ easing: "cubic-bezier(0.4, 0, 0.2, 1)",
74
+ fill: "both"
75
+ }
76
+ );
77
+ };
78
+ var TOAST_ROOT_ID = "toast-root";
79
+ function getToastRoot() {
80
+ let root = document.getElementById(TOAST_ROOT_ID);
81
+ if (!root) {
82
+ root = document.createElement("div");
83
+ root.id = TOAST_ROOT_ID;
84
+ root.className = "fixed bottom-6 right-6 z-50 flex flex-col items-end gap-4 pointer-events-none";
85
+ document.body.appendChild(root);
86
+ }
87
+ return root;
88
+ }
89
+ var Toast = (_a) => {
90
+ var _b = _a, {
91
+ variant = "success",
92
+ title,
93
+ message,
94
+ show = false,
95
+ showToast = false,
96
+ onClose: onClose,
97
+ viewButtonLink,
98
+ showViewButton = false
99
+ } = _b, props = __objRest(_b, [
100
+ "variant",
101
+ "title",
102
+ "message",
103
+ "show",
104
+ "showToast",
105
+ // deprecated
106
+ "onClose",
107
+ "viewButtonLink",
108
+ "showViewButton"
109
+ ]);
110
+ var _a2;
111
+ const toastElementRef = useRef(null);
112
+ const animationRef = useRef(null);
113
+ const [isHovered, setIsHovered] = useState(false);
114
+ useEffect(() => {
115
+ if (show && !showToast) {
116
+ if (toastElementRef.current) {
117
+ const animation = slideInFromBottomAnimation(
118
+ toastElementRef.current
119
+ );
120
+ animationRef.current = animation;
121
+ animation.onfinish = () => {
122
+ onClose == null ? void 0 : onClose();
123
+ };
124
+ }
125
+ return () => {
126
+ if (animationRef.current) {
127
+ animationRef.current.cancel();
128
+ }
129
+ };
130
+ }
131
+ }, [show, showToast, onClose]);
132
+ useEffect(() => {
133
+ if (animationRef.current) {
134
+ if (isHovered) {
135
+ animationRef.current.pause();
136
+ } else {
137
+ animationRef.current.play();
138
+ }
139
+ }
140
+ }, [isHovered]);
141
+ useEffect(() => {
142
+ const handleAnimationEnd = () => {
143
+ if (!isHovered) {
144
+ onClose == null ? void 0 : onClose();
145
+ }
146
+ };
147
+ if (animationRef.current) {
148
+ animationRef.current.addEventListener("finish", handleAnimationEnd);
149
+ return () => {
150
+ if (animationRef.current) {
151
+ animationRef.current.removeEventListener("finish", handleAnimationEnd);
152
+ }
153
+ };
154
+ }
155
+ }, [isHovered, onClose]);
156
+ const handleMouseEnter = () => setIsHovered(true);
157
+ const handleMouseLeave = () => {
158
+ setIsHovered(false);
159
+ if (animationRef.current && animationRef.current.playState === "paused") {
160
+ animationRef.current.play();
161
+ }
162
+ };
163
+ const { className, icon: iconElement } = (_a2 = variants[variant]) != null ? _a2 : variants.success;
164
+ if (!show) return null;
165
+ return /* @__PURE__ */ jsxs(
166
+ "div",
167
+ __spreadProps(__spreadValues({
168
+ ref: toastElementRef,
169
+ onMouseEnter: handleMouseEnter,
170
+ onMouseLeave: handleMouseLeave,
171
+ className: clsx(
172
+ "flex items-start gap-desktop-component-gap p-desktop-component-padding border-2 rounded-sm bg-white shadow-md cursor-pointer pointer-events-auto transition-all duration-300 ease-in-out w-fit",
173
+ className
174
+ )
175
+ }, props), {
176
+ style: props.style,
177
+ children: [
178
+ iconElement,
179
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-desktop-layout-group-gap items-center", children: [
180
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-desktop-component-gap w-68", children: [
181
+ title && /* @__PURE__ */ jsx(Heading3, { children: title }),
182
+ message && /* @__PURE__ */ jsx(Paragraph, { children: message })
183
+ ] }),
184
+ showViewButton && /* @__PURE__ */ jsx(Button, { variant: "tertiary", href: viewButtonLink, children: "View" })
185
+ ] })
186
+ ]
187
+ })
188
+ );
189
+ };
190
+ Toast.displayName = "Toast";
191
+ function createToast(config) {
192
+ const toastRoot = getToastRoot();
193
+ const toastContainer = document.createElement("div");
194
+ toastRoot.appendChild(toastContainer);
195
+ const root = createRoot(toastContainer);
196
+ const handleClose = () => {
197
+ root.unmount();
198
+ toastContainer.remove();
199
+ };
200
+ root.render(
201
+ /* @__PURE__ */ jsx(
202
+ Toast,
203
+ {
204
+ show: true,
205
+ onClose: handleClose,
206
+ variant: config.variant,
207
+ title: config.title,
208
+ message: config.message,
209
+ showViewButton: config.showViewButton,
210
+ viewButtonLink: config.viewButtonLink
211
+ }
212
+ )
213
+ );
214
+ }
215
+ export {
216
+ Toast,
217
+ createToast
218
+ };
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ "use client";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ // If the importer is in node compatibility mode or this is not an ESM
23
+ // file that has been converted to a CommonJS file using a Babel-
24
+ // compatible transform (i.e. "__esModule" has not been set), then set
25
+ // "default" to the CommonJS "module.exports" for node compatibility.
26
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
27
+ mod
28
+ ));
29
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+
31
+ // src/components/Tooltip.tsx
32
+ var Tooltip_exports = {};
33
+ __export(Tooltip_exports, {
34
+ Tooltip: () => Tooltip
35
+ });
36
+ module.exports = __toCommonJS(Tooltip_exports);
37
+ var import_clsx2 = __toESM(require("clsx"), 1);
38
+ var import_react = require("react");
39
+ var import_react_dom = require("react-dom");
40
+
41
+ // src/classNames.ts
42
+ var import_clsx = __toESM(require("clsx"), 1);
43
+ var typography = {
44
+ display1: (0, import_clsx.default)(
45
+ "font-sans font-semibold",
46
+ "text-display-1-mobile desktop:text-display-1-desktop compact:text-display-1-desktop-compact",
47
+ "leading-display-1-mobile desktop:leading-display-1-desktop"
48
+ ),
49
+ display2: (0, import_clsx.default)(
50
+ "font-sans font-bold",
51
+ "text-display-2-mobile desktop:text-display-2-desktop compact:text-display-2-desktop-compact",
52
+ "leading-display-2-mobile desktop:leading-display-2-desktop"
53
+ ),
54
+ heading1: (0, import_clsx.default)(
55
+ "font-sans font-semibold",
56
+ "text-heading-1-mobile desktop:text-heading-1-desktop compact:text-heading-1-desktop-compact",
57
+ "leading-heading-1-mobile desktop:leading-heading-1-desktop"
58
+ ),
59
+ heading2: (0, import_clsx.default)(
60
+ "font-sans font-normal",
61
+ "text-heading-2-mobile desktop:text-heading-2-desktop compact:text-heading-2-desktop-compact",
62
+ "leading-heading-2-mobile desktop:leading-heading-2-desktop"
63
+ ),
64
+ heading3: (0, import_clsx.default)(
65
+ "font-sans font-semibold",
66
+ "text-heading-3-mobile desktop:text-heading-3-desktop compact:text-heading-3-desktop-compact",
67
+ "leading-heading-3-mobile desktop:leading-heading-3-desktop"
68
+ ),
69
+ subheader: (0, import_clsx.default)(
70
+ "font-sans font-semibold",
71
+ "text-subheader-mobile desktop:text-subheader-desktop compact:text-subheader-desktop-compact",
72
+ "leading-subheader-mobile desktop:leading-subheader-desktop"
73
+ ),
74
+ link: (0, import_clsx.default)(
75
+ "font-sans font-normal",
76
+ "text-link-mobile desktop:text-link-desktop compact:text-link-desktop-compact",
77
+ "leading-link-mobile desktop:leading-link-desktop"
78
+ ),
79
+ buttonLabel: (0, import_clsx.default)(
80
+ "font-sans font-semibold",
81
+ "text-label-mobile desktop:text-label-desktop compact:text-label-desktop-compact",
82
+ "leading-label-mobile desktop:leading-label-desktop"
83
+ ),
84
+ label: (0, import_clsx.default)(
85
+ "font-sans font-semibold",
86
+ "text-label-mobile desktop:text-label-desktop compact:text-label-desktop-compact",
87
+ "leading-label-mobile desktop:leading-label-desktop"
88
+ ),
89
+ paragraph: (0, import_clsx.default)(
90
+ "font-sans font-normal",
91
+ "text-paragraph-mobile desktop:text-paragraph-desktop compact:text-paragraph-desktop-compact",
92
+ "leading-paragraph-mobile desktop:leading-paragraph-desktop"
93
+ ),
94
+ caption: (0, import_clsx.default)(
95
+ "font-sans font-normal",
96
+ "text-caption-mobile desktop:text-caption-desktop compact:text-caption-desktop-compact",
97
+ "leading-caption-mobile desktop:leading-caption-desktop"
98
+ )
99
+ };
100
+ var baseTransition = (0, import_clsx.default)(
101
+ "transition-colors duration-100 ease-in-out"
102
+ );
103
+ var componentGap = (0, import_clsx.default)(
104
+ "gap-mobile-component-gap desktop:gap-desktop-component-gap compact:gap-desktop-compact-component-gap"
105
+ );
106
+ var paddingUsingComponentGap = (0, import_clsx.default)(
107
+ "p-mobile-component-gap desktop:p-desktop-component-gap compact:p-desktop-compact-component-gap"
108
+ );
109
+ var paddingYUsingLayoutGroupGap = (0, import_clsx.default)(
110
+ "py-mobile-layout-group-gap desktop:py-desktop-layout-group-gap compact:py-desktop-compact-layout-group-gap"
111
+ );
112
+ var componentPadding = (0, import_clsx.default)(
113
+ "p-mobile-component-padding desktop:p-desktop-component-padding compact:p-desktop-compact-component-padding"
114
+ );
115
+ var componentPaddingBottom = (0, import_clsx.default)(
116
+ "pb-mobile-component-padding desktop:pb-desktop-component-padding compact:pb-desktop-compact-component-padding"
117
+ );
118
+ var componentPaddingY = (0, import_clsx.default)(
119
+ "py-mobile-component-padding desktop:py-desktop-component-padding compact:py-desktop-compact-component-padding"
120
+ );
121
+ var componentPaddingXUsingComponentGap = (0, import_clsx.default)(
122
+ "px-mobile-component-gap desktop:px-desktop-component-gap compact:px-desktop-compact-component-gap"
123
+ );
124
+ var componentPaddingYUsingComponentGap = (0, import_clsx.default)(
125
+ "py-mobile-component-gap desktop:py-desktop-component-gap compact:py-desktop-compact-component-gap"
126
+ );
127
+ var componentPaddingMinusBorder = (0, import_clsx.default)(
128
+ "p-[calc(var(--spacing-mobile-component-padding)_-_1px)] desktop:p-[calc(var(--spacing-desktop-component-padding)_-_1px)] compact:p-[calc(var(--spacing-desktop-compact-component-padding)_-_1px)]"
129
+ );
130
+ var componentPaddingMinus2pxBorder = (0, import_clsx.default)(
131
+ "p-[calc(var(--spacing-mobile-component-padding)_-_2px)] desktop:p-[calc(var(--spacing-desktop-component-padding)_-_2px)] compact:p-[calc(var(--spacing-desktop-compact-component-padding)_-_2px)]"
132
+ );
133
+ var layoutPaddingBottom = (0, import_clsx.default)(
134
+ "pb-mobile-layout-padding desktop:pb-desktop-layout-padding compact:pb-desktop-compact-layout-padding"
135
+ );
136
+ var layoutPaddingY = (0, import_clsx.default)(
137
+ "py-mobile-layout-padding desktop:py-desktop-layout-padding compact:py-desktop-compact-layout-padding"
138
+ );
139
+ var containerPaddingX = (0, import_clsx.default)(
140
+ "px-mobile-container-padding desktop:px-desktop-container-padding compact:px-desktop-compact-container-padding"
141
+ );
142
+ var containerPaddingY = (0, import_clsx.default)(
143
+ "py-mobile-container-padding desktop:py-desktop-container-padding compact:py-desktop-compact-container-padding"
144
+ );
145
+ var layoutGroupGapPaddingY = (0, import_clsx.default)(
146
+ "py-mobile-layout-group-gap desktop:py-desktop-layout-group-gap compact:py-desktop-compact-layout-group-gap"
147
+ );
148
+ var layoutGroupGap = (0, import_clsx.default)(
149
+ "gap-mobile-layout-group-gap desktop:gap-desktop-layout-group-gap compact:gap-desktop-compact-layout-group-gap"
150
+ );
151
+ var layoutGap = (0, import_clsx.default)(
152
+ "gap-mobile-layout-gap desktop:gap-desktop-layout-gap compact:gap-desktop-compact-layout-gap"
153
+ );
154
+ var gapUsingContainerPadding = (0, import_clsx.default)(
155
+ "gap-mobile-container-padding desktop:gap-desktop-container-padding compact:gap-desktop-compact-container-padding"
156
+ );
157
+
158
+ // src/components/Tooltip.tsx
159
+ var import_jsx_runtime = require("react/jsx-runtime");
160
+ var Tooltip = ({
161
+ message,
162
+ position = "top",
163
+ children,
164
+ showOnTruncation = false,
165
+ offset = 8
166
+ }) => {
167
+ const ref = (0, import_react.useRef)(null);
168
+ const tooltipRef = (0, import_react.useRef)(null);
169
+ const [isTruncated, setIsTruncated] = (0, import_react.useState)(false);
170
+ const [tooltipPosition, setTooltipPosition] = (0, import_react.useState)({ top: 0, left: 0 });
171
+ const [isVisible, setIsVisible] = (0, import_react.useState)(false);
172
+ const [removeOpacity, setRemoveOpacity] = (0, import_react.useState)(false);
173
+ const updatePosition = () => {
174
+ if (!ref.current || !tooltipRef.current) return;
175
+ const rect = ref.current.getBoundingClientRect();
176
+ const tooltipRect = tooltipRef.current.getBoundingClientRect();
177
+ let top = 0;
178
+ let left = 0;
179
+ switch (position) {
180
+ case "top":
181
+ top = rect.top - tooltipRect.height - offset;
182
+ left = rect.left + rect.width / 2 - tooltipRect.width / 2;
183
+ break;
184
+ case "bottom":
185
+ top = rect.bottom + offset;
186
+ left = rect.left + rect.width / 2 - tooltipRect.width / 2;
187
+ break;
188
+ case "left":
189
+ top = rect.top + rect.height / 2 - tooltipRect.height / 2;
190
+ left = rect.left - tooltipRect.width - offset;
191
+ break;
192
+ case "right":
193
+ top = rect.top + rect.height / 2 - tooltipRect.height / 2;
194
+ left = rect.right + offset;
195
+ break;
196
+ }
197
+ setTooltipPosition({ top, left });
198
+ requestAnimationFrame(() => {
199
+ setRemoveOpacity(true);
200
+ });
201
+ };
202
+ const handleMouseEnter = () => {
203
+ if (!showOnTruncation || checkForTextTruncation()) {
204
+ setIsVisible(true);
205
+ }
206
+ };
207
+ const handleMouseLeave = () => {
208
+ setIsVisible(false);
209
+ setRemoveOpacity(false);
210
+ };
211
+ (0, import_react.useEffect)(() => {
212
+ if (isVisible && tooltipRef.current) {
213
+ requestAnimationFrame(() => {
214
+ updatePosition();
215
+ });
216
+ }
217
+ }, [isVisible]);
218
+ (0, import_react.useEffect)(() => {
219
+ if (isVisible) {
220
+ window.addEventListener("resize", updatePosition);
221
+ return () => window.removeEventListener("resize", updatePosition);
222
+ }
223
+ }, [isVisible]);
224
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
225
+ "div",
226
+ {
227
+ ref,
228
+ className: "relative inline-grid grid-cols-[auto_1fr] items-center",
229
+ onMouseEnter: handleMouseEnter,
230
+ onMouseLeave: handleMouseLeave,
231
+ children: [
232
+ children,
233
+ isVisible && typeof document !== "undefined" && (0, import_react_dom.createPortal)(
234
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
235
+ "div",
236
+ {
237
+ ref: tooltipRef,
238
+ style: {
239
+ position: "fixed",
240
+ top: `${tooltipPosition.top}px`,
241
+ left: `${tooltipPosition.left}px`,
242
+ zIndex: 9999
243
+ },
244
+ className: (0, import_clsx2.default)(
245
+ typography.caption,
246
+ "p-2 bg-neutral-500 text-neutral-100 rounded whitespace-nowrap shadow-2 pointer-events-none transition-opacity duration-100 ease-in-out",
247
+ !removeOpacity && "opacity-0"
248
+ ),
249
+ children: message
250
+ }
251
+ ),
252
+ document.body
253
+ )
254
+ ]
255
+ }
256
+ );
257
+ function checkForTextTruncation() {
258
+ if (showOnTruncation && ref.current) {
259
+ const paragraph = ref.current.querySelector("p");
260
+ if (paragraph) {
261
+ const isTruncated2 = paragraph.scrollWidth > paragraph.clientWidth;
262
+ setIsTruncated(isTruncated2);
263
+ return isTruncated2;
264
+ }
265
+ }
266
+ return false;
267
+ }
268
+ };
269
+ Tooltip.displayName = "Tooltip";
270
+ // Annotate the CommonJS export names for ESM import in node:
271
+ 0 && (module.exports = {
272
+ Tooltip
273
+ });
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ Tooltip
4
+ } from "../chunk-2G2E2JMA.js";
5
+ import "../chunk-KX3O6GJ6.js";
6
+ import "../chunk-ORMEWXMH.js";
7
+ export {
8
+ Tooltip
9
+ };