@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.
- package/README.md +35 -0
- package/dist/chunk-27KIIUAR.js +59 -0
- package/dist/chunk-2G2E2JMA.js +123 -0
- package/dist/chunk-4C66DLIJ.js +51 -0
- package/dist/chunk-4RD5ZF2V.js +55 -0
- package/dist/chunk-4RJKB7LC.js +14 -0
- package/dist/chunk-4T7F5BZZ.js +26 -0
- package/dist/chunk-5GOBP2JS.js +53 -0
- package/dist/chunk-6ZY524ID.js +42 -0
- package/dist/chunk-AWQSSKCK.js +32 -0
- package/dist/chunk-BNHSAFMP.js +93 -0
- package/dist/chunk-BWRHL2AG.js +439 -0
- package/dist/chunk-DKKYR6DS.js +132 -0
- package/dist/chunk-E5ALT5W7.js +182 -0
- package/dist/chunk-FY7PTP6E.js +322 -0
- package/dist/chunk-GTCSRHPF.js +119 -0
- package/dist/chunk-I2UVVKQI.js +12 -0
- package/dist/chunk-IGQVA7SC.js +41 -0
- package/dist/chunk-K3IKUSZW.js +59 -0
- package/dist/chunk-KENSVWOY.js +151 -0
- package/dist/chunk-KX3O6GJ6.js +138 -0
- package/dist/chunk-L4UM372R.js +253 -0
- package/dist/chunk-ORMEWXMH.js +37 -0
- package/dist/chunk-Q3FKEKIN.js +23 -0
- package/dist/chunk-SEKKGFM6.js +28 -0
- package/dist/chunk-SY3HT54E.js +91 -0
- package/dist/chunk-TAW5ZZ4Z.js +346 -0
- package/dist/chunk-TRUPPHBQ.js +109 -0
- package/dist/chunk-TU55CHXU.js +30 -0
- package/dist/chunk-TWZZB4WO.js +114 -0
- package/dist/chunk-TYI74BSP.js +62 -0
- package/dist/chunk-U42SKNR6.js +104 -0
- package/dist/chunk-UU3FA6LV.js +72 -0
- package/dist/chunk-WVUIIBRR.js +51 -0
- package/dist/chunk-XUIPGYP5.js +39 -0
- package/dist/chunk-Z4UCFUF7.js +299 -0
- package/dist/components/Breadcrumbs.cjs +376 -0
- package/dist/components/Breadcrumbs.js +90 -0
- package/dist/components/Button.cjs +319 -0
- package/dist/components/Button.js +8 -0
- package/dist/components/CalendarRange.cjs +520 -0
- package/dist/components/CalendarRange.js +13 -0
- package/dist/components/Caption.cjs +283 -0
- package/dist/components/Caption.js +80 -0
- package/dist/components/Checkbox.cjs +378 -0
- package/dist/components/Checkbox.js +11 -0
- package/dist/components/ContentTab.cjs +382 -0
- package/dist/components/ContentTab.js +10 -0
- package/dist/components/ContentTabs.cjs +472 -0
- package/dist/components/ContentTabs.js +98 -0
- package/dist/components/DMSiLogo.cjs +79 -0
- package/dist/components/DMSiLogo.js +56 -0
- package/dist/components/DataGrid.cjs +3113 -0
- package/dist/components/DataGrid.js +758 -0
- package/dist/components/DataGridCell.cjs +1907 -0
- package/dist/components/DataGridCell.js +24 -0
- package/dist/components/DataTable.cjs +791 -0
- package/dist/components/DataTable.js +720 -0
- package/dist/components/DateInput.cjs +1130 -0
- package/dist/components/DateInput.js +170 -0
- package/dist/components/DateRangeInput.cjs +1131 -0
- package/dist/components/DateRangeInput.js +171 -0
- package/dist/components/DebugJson.cjs +50 -0
- package/dist/components/DebugJson.js +27 -0
- package/dist/components/Display.cjs +234 -0
- package/dist/components/Display.js +12 -0
- package/dist/components/EditingContext.cjs +73 -0
- package/dist/components/EditingContext.js +35 -0
- package/dist/components/FilterGroup.cjs +1431 -0
- package/dist/components/FilterGroup.js +231 -0
- package/dist/components/FullViewportBox.cjs +35 -0
- package/dist/components/FullViewportBox.js +12 -0
- package/dist/components/Grid.cjs +69 -0
- package/dist/components/Grid.js +36 -0
- package/dist/components/GridContainer.cjs +125 -0
- package/dist/components/GridContainer.js +92 -0
- package/dist/components/Heading.cjs +238 -0
- package/dist/components/Heading.js +14 -0
- package/dist/components/HorizontalDivider.cjs +33 -0
- package/dist/components/HorizontalDivider.js +10 -0
- package/dist/components/Icon.cjs +98 -0
- package/dist/components/Icon.js +7 -0
- package/dist/components/Input.cjs +672 -0
- package/dist/components/Input.js +21 -0
- package/dist/components/InputGroup.cjs +270 -0
- package/dist/components/InputGroup.js +60 -0
- package/dist/components/Label.cjs +223 -0
- package/dist/components/Label.js +8 -0
- package/dist/components/Link.cjs +262 -0
- package/dist/components/Link.js +8 -0
- package/dist/components/List.cjs +37 -0
- package/dist/components/List.js +14 -0
- package/dist/components/LiveChatComponent.cjs +63 -0
- package/dist/components/LiveChatComponent.js +40 -0
- package/dist/components/LogoAgilityTopBar.cjs +115 -0
- package/dist/components/LogoAgilityTopBar.js +92 -0
- package/dist/components/LogoDMSiTopBar.cjs +79 -0
- package/dist/components/LogoDMSiTopBar.js +7 -0
- package/dist/components/LogoMillworkTopBar.cjs +221 -0
- package/dist/components/LogoMillworkTopBar.js +198 -0
- package/dist/components/MainBar.cjs +211 -0
- package/dist/components/MainBar.js +65 -0
- package/dist/components/Menu.cjs +437 -0
- package/dist/components/Menu.js +11 -0
- package/dist/components/MenuOption.cjs +483 -0
- package/dist/components/MenuOption.js +13 -0
- package/dist/components/MobileDataGrid.cjs +658 -0
- package/dist/components/MobileDataGrid.js +125 -0
- package/dist/components/Modal.cjs +783 -0
- package/dist/components/Modal.js +245 -0
- package/dist/components/ModalButtons.cjs +385 -0
- package/dist/components/ModalButtons.js +10 -0
- package/dist/components/ModalContent.cjs +57 -0
- package/dist/components/ModalContent.js +7 -0
- package/dist/components/ModalHeader.cjs +426 -0
- package/dist/components/ModalHeader.js +11 -0
- package/dist/components/ModalScrim.cjs +64 -0
- package/dist/components/ModalScrim.js +7 -0
- package/dist/components/NavigationTab.cjs +431 -0
- package/dist/components/NavigationTab.js +10 -0
- package/dist/components/NavigationTabs.cjs +477 -0
- package/dist/components/NavigationTabs.js +56 -0
- package/dist/components/Notification.cjs +640 -0
- package/dist/components/Notification.js +117 -0
- package/dist/components/OptionPill.cjs +478 -0
- package/dist/components/OptionPill.js +11 -0
- package/dist/components/Paragraph.cjs +231 -0
- package/dist/components/Paragraph.js +8 -0
- package/dist/components/Password.cjs +700 -0
- package/dist/components/Password.js +53 -0
- package/dist/components/ProjectBar.cjs +242 -0
- package/dist/components/ProjectBar.js +63 -0
- package/dist/components/Radio.cjs +349 -0
- package/dist/components/Radio.js +131 -0
- package/dist/components/Search.cjs +767 -0
- package/dist/components/Search.js +12 -0
- package/dist/components/Select.cjs +758 -0
- package/dist/components/Select.js +12 -0
- package/dist/components/SideMenu.cjs +54 -0
- package/dist/components/SideMenu.js +21 -0
- package/dist/components/SideMenuGroup.cjs +422 -0
- package/dist/components/SideMenuGroup.js +83 -0
- package/dist/components/SideMenuItem.cjs +388 -0
- package/dist/components/SideMenuItem.js +70 -0
- package/dist/components/Stack.cjs +138 -0
- package/dist/components/Stack.js +7 -0
- package/dist/components/StatusPill.cjs +265 -0
- package/dist/components/StatusPill.js +52 -0
- package/dist/components/Stepper.cjs +885 -0
- package/dist/components/Stepper.js +105 -0
- package/dist/components/Subheader.cjs +226 -0
- package/dist/components/Subheader.js +8 -0
- package/dist/components/Surface.cjs +98 -0
- package/dist/components/Surface.js +40 -0
- package/dist/components/Swatch.cjs +1728 -0
- package/dist/components/Swatch.js +1319 -0
- package/dist/components/Textarea.cjs +269 -0
- package/dist/components/Textarea.js +96 -0
- package/dist/components/Theme.cjs +36 -0
- package/dist/components/Theme.js +7 -0
- package/dist/components/Time.cjs +1118 -0
- package/dist/components/Time.js +353 -0
- package/dist/components/Toast.cjs +644 -0
- package/dist/components/Toast.js +218 -0
- package/dist/components/Tooltip.cjs +273 -0
- package/dist/components/Tooltip.js +9 -0
- package/dist/components/TopBar.cjs +352 -0
- package/dist/components/TopBar.js +132 -0
- package/dist/components/useInfiniteScroll.cjs +57 -0
- package/dist/components/useInfiniteScroll.js +8 -0
- package/dist/components/useMatchesMedia.cjs +53 -0
- package/dist/components/useMatchesMedia.js +9 -0
- package/dist/components/useMenuSystem.cjs +358 -0
- package/dist/components/useMenuSystem.js +11 -0
- package/dist/components/useMounted.cjs +39 -0
- package/dist/components/useMounted.js +8 -0
- package/dist/fonts.css +21 -0
- package/dist/icons-light[FILL]-PPZXOLWS.woff2 +0 -0
- package/dist/icons-normal[FILL]-PPZXOLWS.woff2 +0 -0
- package/dist/index.css +4401 -0
- package/dist/open-sans-55T6A4JE.woff2 +0 -0
- package/dist/types.cjs +18 -0
- package/dist/types.js +0 -0
- package/package.json +66 -0
- package/src/brand.css +125 -0
- package/src/classNames.ts +144 -0
- package/src/components/Breadcrumbs.tsx +116 -0
- package/src/components/Button.tsx +210 -0
- package/src/components/CalendarRange.tsx +429 -0
- package/src/components/Caption.tsx +101 -0
- package/src/components/Checkbox.tsx +196 -0
- package/src/components/ContentTab.tsx +66 -0
- package/src/components/ContentTabs.tsx +103 -0
- package/src/components/DMSiLogo.tsx +32 -0
- package/src/components/DataGrid.tsx +948 -0
- package/src/components/DataGridCell.tsx +384 -0
- package/src/components/DataTable.tsx +835 -0
- package/src/components/DateInput.tsx +188 -0
- package/src/components/DateRangeInput.tsx +179 -0
- package/src/components/DebugJson.tsx +24 -0
- package/src/components/Display.tsx +60 -0
- package/src/components/EditingContext.tsx +40 -0
- package/src/components/FilterGroup.tsx +234 -0
- package/src/components/FullViewportBox.tsx +11 -0
- package/src/components/Grid.tsx +75 -0
- package/src/components/GridContainer.tsx +124 -0
- package/src/components/Heading.tsx +66 -0
- package/src/components/HorizontalDivider.tsx +3 -0
- package/src/components/Icon.tsx +36 -0
- package/src/components/Input.tsx +511 -0
- package/src/components/InputGroup.tsx +51 -0
- package/src/components/Label.tsx +40 -0
- package/src/components/Link.tsx +106 -0
- package/src/components/List.tsx +10 -0
- package/src/components/LiveChatComponent.tsx +56 -0
- package/src/components/LogoAgilityTopBar.tsx +53 -0
- package/src/components/LogoDMSiTopBar.tsx +32 -0
- package/src/components/LogoMillworkTopBar.tsx +118 -0
- package/src/components/MainBar.tsx +83 -0
- package/src/components/Menu.tsx +286 -0
- package/src/components/MenuOption.tsx +275 -0
- package/src/components/MobileDataGrid.tsx +135 -0
- package/src/components/Modal.tsx +271 -0
- package/src/components/ModalButtons.tsx +44 -0
- package/src/components/ModalContent.tsx +23 -0
- package/src/components/ModalHeader.tsx +41 -0
- package/src/components/ModalScrim.tsx +35 -0
- package/src/components/NavigationTab.tsx +89 -0
- package/src/components/NavigationTabs.tsx +63 -0
- package/src/components/Notification.tsx +120 -0
- package/src/components/OptionPill.tsx +114 -0
- package/src/components/Paragraph.tsx +49 -0
- package/src/components/Password.tsx +46 -0
- package/src/components/ProjectBar.tsx +76 -0
- package/src/components/Radio.tsx +140 -0
- package/src/components/Search.tsx +129 -0
- package/src/components/Select.tsx +104 -0
- package/src/components/SideMenu.tsx +21 -0
- package/src/components/SideMenuGroup.tsx +81 -0
- package/src/components/SideMenuItem.tsx +90 -0
- package/src/components/Stack.tsx +179 -0
- package/src/components/StatusPill.tsx +51 -0
- package/src/components/Stepper.tsx +91 -0
- package/src/components/Subheader.tsx +44 -0
- package/src/components/Surface.tsx +34 -0
- package/src/components/Swatch.tsx +1066 -0
- package/src/components/Textarea.tsx +101 -0
- package/src/components/Theme.tsx +13 -0
- package/src/components/Time.tsx +438 -0
- package/src/components/Toast.tsx +244 -0
- package/src/components/Tooltip.tsx +137 -0
- package/src/components/TopBar.tsx +124 -0
- package/src/components/useInfiniteScroll.tsx +40 -0
- package/src/components/useMatchesMedia.tsx +28 -0
- package/src/components/useMenuSystem.tsx +367 -0
- package/src/components/useMounted.tsx +14 -0
- package/src/darkmode.css +140 -0
- package/src/fonts.css +23 -0
- package/src/index.css +509 -0
- package/src/index.tsx +2 -0
- package/src/types.ts +149 -0
- package/src/utils/formatting.tsx +81 -0
- 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
|
+
});
|