@cupcodev/ui 6.1.1 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -0
- package/dist/index.cjs +2319 -1721
- package/dist/index.d.cts +23 -2
- package/dist/index.d.ts +23 -2
- package/dist/index.js +1586 -1012
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/styles/dock.css +14 -7
- package/styles/global.css +0 -1
package/dist/index.js
CHANGED
|
@@ -1,282 +1,157 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
// src/components/cupcode/AccordionCupcode.tsx
|
|
6
|
-
import * as React from "react";
|
|
7
|
-
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
8
|
-
import { ChevronDown } from "lucide-react";
|
|
9
|
-
|
|
10
|
-
// src/lib/utils.ts
|
|
11
|
-
import { clsx } from "clsx";
|
|
12
|
-
import { twMerge } from "tailwind-merge";
|
|
13
|
-
function cn(...inputs) {
|
|
14
|
-
return twMerge(clsx(inputs));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// src/components/cupcode/AccordionCupcode.tsx
|
|
18
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
19
|
-
var AccordionCupcode = AccordionPrimitive.Root;
|
|
20
|
-
var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
21
|
-
AccordionPrimitive.Item,
|
|
22
|
-
{
|
|
23
|
-
ref,
|
|
24
|
-
className: cn("glass rounded-xl mb-3 overflow-hidden", className),
|
|
25
|
-
...props
|
|
26
|
-
}
|
|
27
|
-
));
|
|
28
|
-
AccordionItem.displayName = "AccordionItem";
|
|
29
|
-
var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
30
|
-
AccordionPrimitive.Trigger,
|
|
31
|
-
{
|
|
32
|
-
ref,
|
|
33
|
-
className: cn(
|
|
34
|
-
"flex flex-1 items-center justify-between p-4 font-semibold text-foreground",
|
|
35
|
-
"transition-all hover:bg-cupcode-purple/5",
|
|
36
|
-
"[&[data-state=open]>svg]:rotate-180",
|
|
37
|
-
className
|
|
38
|
-
),
|
|
39
|
-
...props,
|
|
40
|
-
children: [
|
|
41
|
-
children,
|
|
42
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: "h-5 w-5 shrink-0 text-cupcode-purple transition-transform duration-300" })
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
) }));
|
|
46
|
-
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
47
|
-
var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
48
|
-
AccordionPrimitive.Content,
|
|
49
|
-
{
|
|
50
|
-
ref,
|
|
51
|
-
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
52
|
-
...props,
|
|
53
|
-
children: /* @__PURE__ */ jsx("div", { className: cn("px-4 pb-4 pt-0 text-muted-foreground", className), children })
|
|
54
|
-
}
|
|
55
|
-
));
|
|
56
|
-
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
57
|
-
|
|
58
|
-
// src/components/cupcode/AvatarCupcode.tsx
|
|
59
|
-
import * as React2 from "react";
|
|
60
|
-
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
61
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
62
|
-
var Avatar = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
63
|
-
AvatarPrimitive.Root,
|
|
64
|
-
{
|
|
65
|
-
ref,
|
|
66
|
-
className: cn(
|
|
67
|
-
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
68
|
-
"ring-2 ring-border ring-offset-2 ring-offset-background",
|
|
69
|
-
className
|
|
70
|
-
),
|
|
71
|
-
...props
|
|
72
|
-
}
|
|
73
|
-
));
|
|
74
|
-
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
75
|
-
var AvatarImage = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
76
|
-
AvatarPrimitive.Image,
|
|
77
|
-
{
|
|
78
|
-
ref,
|
|
79
|
-
className: cn("aspect-square h-full w-full object-cover", className),
|
|
80
|
-
...props
|
|
81
|
-
}
|
|
82
|
-
));
|
|
83
|
-
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
84
|
-
var AvatarFallback = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
85
|
-
AvatarPrimitive.Fallback,
|
|
86
|
-
{
|
|
87
|
-
ref,
|
|
88
|
-
className: cn(
|
|
89
|
-
"flex h-full w-full items-center justify-center rounded-full",
|
|
90
|
-
"bg-gradient-to-br from-cupcode-hover to-cupcode-purple",
|
|
91
|
-
"text-white font-semibold",
|
|
92
|
-
className
|
|
93
|
-
),
|
|
94
|
-
...props
|
|
95
|
-
}
|
|
96
|
-
));
|
|
97
|
-
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
98
|
-
var statusStyles = {
|
|
99
|
-
online: "bg-success",
|
|
100
|
-
offline: "bg-muted-foreground",
|
|
101
|
-
away: "bg-warning",
|
|
102
|
-
busy: "bg-destructive"
|
|
103
|
-
};
|
|
104
|
-
var sizeClasses = {
|
|
105
|
-
sm: "h-8 w-8",
|
|
106
|
-
md: "h-10 w-10",
|
|
107
|
-
lg: "h-14 w-14",
|
|
108
|
-
xl: "h-20 w-20"
|
|
4
|
+
var __esm = (fn, res) => function __init() {
|
|
5
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
109
6
|
};
|
|
110
|
-
var
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
lg: "h-3 w-3",
|
|
114
|
-
xl: "h-4 w-4"
|
|
115
|
-
};
|
|
116
|
-
var AvatarWithStatus = ({
|
|
117
|
-
src,
|
|
118
|
-
alt,
|
|
119
|
-
fallback,
|
|
120
|
-
status,
|
|
121
|
-
size = "md",
|
|
122
|
-
className
|
|
123
|
-
}) => {
|
|
124
|
-
return /* @__PURE__ */ jsxs2("div", { className: "relative inline-block", children: [
|
|
125
|
-
/* @__PURE__ */ jsxs2(Avatar, { className: cn(sizeClasses[size], className), children: [
|
|
126
|
-
/* @__PURE__ */ jsx2(AvatarImage, { src, alt }),
|
|
127
|
-
/* @__PURE__ */ jsx2(AvatarFallback, { children: fallback })
|
|
128
|
-
] }),
|
|
129
|
-
status && /* @__PURE__ */ jsx2(
|
|
130
|
-
"span",
|
|
131
|
-
{
|
|
132
|
-
className: cn(
|
|
133
|
-
"absolute bottom-0 right-0 block rounded-full ring-2 ring-background",
|
|
134
|
-
statusStyles[status],
|
|
135
|
-
statusSizes[size],
|
|
136
|
-
status === "online" && "animate-pulse"
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
)
|
|
140
|
-
] });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
141
10
|
};
|
|
11
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
142
12
|
|
|
143
13
|
// src/components/cupcode/BackgroundRainbow.tsx
|
|
14
|
+
var BackgroundRainbow_exports = {};
|
|
15
|
+
__export(BackgroundRainbow_exports, {
|
|
16
|
+
BackgroundRainbow: () => BackgroundRainbow
|
|
17
|
+
});
|
|
144
18
|
import { useEffect, useId, useMemo, useRef } from "react";
|
|
145
19
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
146
|
-
var BackgroundRainbow
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
window.removeEventListener("pointermove", onPointer);
|
|
240
|
-
document.removeEventListener("visibilitychange", onStateChange);
|
|
241
|
-
if (typeof prefersReducedMotion.removeEventListener === "function") {
|
|
242
|
-
prefersReducedMotion.removeEventListener("change", onStateChange);
|
|
243
|
-
} else {
|
|
244
|
-
prefersReducedMotion.removeListener(onStateChange);
|
|
245
|
-
}
|
|
246
|
-
observer.disconnect();
|
|
247
|
-
stop();
|
|
248
|
-
};
|
|
249
|
-
}, [config.easeFactor, config.snapDistance]);
|
|
250
|
-
return /* @__PURE__ */ jsxs3("div", { ref: rootRef, className: "fixed inset-0 z-0 overflow-hidden bg-white pointer-events-none dark:hidden", children: [
|
|
251
|
-
/* @__PURE__ */ jsx3("svg", { className: "hidden", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, focusable: "false", children: /* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsxs3("filter", { id: filterId, children: [
|
|
252
|
-
/* @__PURE__ */ jsx3("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "10", result: "blur" }),
|
|
253
|
-
/* @__PURE__ */ jsx3(
|
|
254
|
-
"feColorMatrix",
|
|
255
|
-
{
|
|
256
|
-
in: "blur",
|
|
257
|
-
mode: "matrix",
|
|
258
|
-
values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -8",
|
|
259
|
-
result: "goo"
|
|
20
|
+
var BackgroundRainbow;
|
|
21
|
+
var init_BackgroundRainbow = __esm({
|
|
22
|
+
"src/components/cupcode/BackgroundRainbow.tsx"() {
|
|
23
|
+
"use strict";
|
|
24
|
+
BackgroundRainbow = () => {
|
|
25
|
+
const rootRef = useRef(null);
|
|
26
|
+
const interactiveRef = useRef(null);
|
|
27
|
+
const currentRef = useRef({ x: 0, y: 0 });
|
|
28
|
+
const targetRef = useRef({ x: 0, y: 0 });
|
|
29
|
+
const filterId = useId().replace(/:/g, "");
|
|
30
|
+
const config = useMemo(() => {
|
|
31
|
+
const nav = typeof navigator !== "undefined" ? navigator : null;
|
|
32
|
+
const lowMemory = !!nav && typeof nav.deviceMemory === "number" && nav.deviceMemory <= 4;
|
|
33
|
+
const lowCpu = !!nav && typeof nav.hardwareConcurrency === "number" && nav.hardwareConcurrency <= 4;
|
|
34
|
+
const lowPowerDevice = lowMemory || lowCpu;
|
|
35
|
+
return {
|
|
36
|
+
blur: lowPowerDevice ? 20 : 30,
|
|
37
|
+
interactiveOpacity: lowPowerDevice ? 0.54 : 0.7,
|
|
38
|
+
useGoo: !lowPowerDevice,
|
|
39
|
+
snapDistance: lowPowerDevice ? 2.5 : 1.5,
|
|
40
|
+
easeFactor: lowPowerDevice ? 7.5 : 10,
|
|
41
|
+
renderThirdBubble: !lowPowerDevice,
|
|
42
|
+
blendMode: lowPowerDevice ? "screen" : "hard-light"
|
|
43
|
+
};
|
|
44
|
+
}, []);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
const interactive = interactiveRef.current;
|
|
47
|
+
const root = rootRef.current;
|
|
48
|
+
if (!interactive || !root) return;
|
|
49
|
+
const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
50
|
+
let raf = 0;
|
|
51
|
+
let running = false;
|
|
52
|
+
const stop = () => {
|
|
53
|
+
running = false;
|
|
54
|
+
if (raf) {
|
|
55
|
+
cancelAnimationFrame(raf);
|
|
56
|
+
raf = 0;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const updatePlayState = () => {
|
|
60
|
+
const enabled = !prefersReducedMotion.matches && !document.hidden;
|
|
61
|
+
root.style.setProperty("--cc-rainbow-play", enabled ? "running" : "paused");
|
|
62
|
+
if (!enabled) stop();
|
|
63
|
+
return enabled;
|
|
64
|
+
};
|
|
65
|
+
const applyTransform = () => {
|
|
66
|
+
const x = Math.round(currentRef.current.x);
|
|
67
|
+
const y = Math.round(currentRef.current.y);
|
|
68
|
+
interactive.style.transform = `translate3d(${x}px, ${y}px, 0)`;
|
|
69
|
+
};
|
|
70
|
+
const animate = () => {
|
|
71
|
+
if (!updatePlayState()) return;
|
|
72
|
+
currentRef.current.x += (targetRef.current.x - currentRef.current.x) / config.easeFactor;
|
|
73
|
+
currentRef.current.y += (targetRef.current.y - currentRef.current.y) / config.easeFactor;
|
|
74
|
+
applyTransform();
|
|
75
|
+
const dx = Math.abs(targetRef.current.x - currentRef.current.x);
|
|
76
|
+
const dy = Math.abs(targetRef.current.y - currentRef.current.y);
|
|
77
|
+
if (dx < config.snapDistance && dy < config.snapDistance) {
|
|
78
|
+
running = false;
|
|
79
|
+
raf = 0;
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
raf = requestAnimationFrame(animate);
|
|
83
|
+
};
|
|
84
|
+
const start = () => {
|
|
85
|
+
if (running) return;
|
|
86
|
+
if (!updatePlayState()) return;
|
|
87
|
+
running = true;
|
|
88
|
+
raf = requestAnimationFrame(animate);
|
|
89
|
+
};
|
|
90
|
+
const onPointer = (e) => {
|
|
91
|
+
if (!updatePlayState()) return;
|
|
92
|
+
targetRef.current.x = e.clientX;
|
|
93
|
+
targetRef.current.y = e.clientY;
|
|
94
|
+
start();
|
|
95
|
+
};
|
|
96
|
+
const onStateChange = () => {
|
|
97
|
+
updatePlayState();
|
|
98
|
+
};
|
|
99
|
+
const centerX = window.innerWidth / 2;
|
|
100
|
+
const centerY = window.innerHeight / 2;
|
|
101
|
+
currentRef.current.x = centerX;
|
|
102
|
+
currentRef.current.y = centerY;
|
|
103
|
+
targetRef.current.x = centerX;
|
|
104
|
+
targetRef.current.y = centerY;
|
|
105
|
+
applyTransform();
|
|
106
|
+
updatePlayState();
|
|
107
|
+
window.addEventListener("pointermove", onPointer, { passive: true });
|
|
108
|
+
document.addEventListener("visibilitychange", onStateChange);
|
|
109
|
+
if (typeof prefersReducedMotion.addEventListener === "function") {
|
|
110
|
+
prefersReducedMotion.addEventListener("change", onStateChange);
|
|
111
|
+
} else {
|
|
112
|
+
prefersReducedMotion.addListener(onStateChange);
|
|
260
113
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
/* @__PURE__ */ jsx3(
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
114
|
+
return () => {
|
|
115
|
+
window.removeEventListener("pointermove", onPointer);
|
|
116
|
+
document.removeEventListener("visibilitychange", onStateChange);
|
|
117
|
+
if (typeof prefersReducedMotion.removeEventListener === "function") {
|
|
118
|
+
prefersReducedMotion.removeEventListener("change", onStateChange);
|
|
119
|
+
} else {
|
|
120
|
+
prefersReducedMotion.removeListener(onStateChange);
|
|
121
|
+
}
|
|
122
|
+
stop();
|
|
123
|
+
};
|
|
124
|
+
}, [config.easeFactor, config.snapDistance]);
|
|
125
|
+
return /* @__PURE__ */ jsxs3("div", { ref: rootRef, className: "fixed inset-0 z-0 overflow-hidden bg-white pointer-events-none dark:hidden", children: [
|
|
126
|
+
/* @__PURE__ */ jsx3("svg", { className: "hidden", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, focusable: "false", children: /* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsxs3("filter", { id: filterId, children: [
|
|
127
|
+
/* @__PURE__ */ jsx3("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "10", result: "blur" }),
|
|
128
|
+
/* @__PURE__ */ jsx3(
|
|
129
|
+
"feColorMatrix",
|
|
130
|
+
{
|
|
131
|
+
in: "blur",
|
|
132
|
+
mode: "matrix",
|
|
133
|
+
values: "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 18 -8",
|
|
134
|
+
result: "goo"
|
|
135
|
+
}
|
|
136
|
+
),
|
|
137
|
+
/* @__PURE__ */ jsx3("feBlend", { in: "SourceGraphic", in2: "goo" })
|
|
138
|
+
] }) }) }),
|
|
139
|
+
/* @__PURE__ */ jsxs3(
|
|
140
|
+
"div",
|
|
141
|
+
{
|
|
142
|
+
className: "absolute inset-0 cc-rainbow-layer",
|
|
143
|
+
style: {
|
|
144
|
+
filter: config.useGoo ? `url(#${filterId}) blur(${config.blur}px)` : `blur(${config.blur}px)`
|
|
145
|
+
},
|
|
146
|
+
children: [
|
|
147
|
+
/* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-a cc-rainbow-g1" }),
|
|
148
|
+
/* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-b cc-rainbow-g2" }),
|
|
149
|
+
config.renderThirdBubble ? /* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-a cc-rainbow-g3" }) : null,
|
|
150
|
+
/* @__PURE__ */ jsx3("div", { ref: interactiveRef, className: "cc-rainbow-bubble cc-rainbow-b cc-rainbow-interactive" })
|
|
151
|
+
]
|
|
152
|
+
}
|
|
153
|
+
),
|
|
154
|
+
/* @__PURE__ */ jsx3("style", { children: `
|
|
280
155
|
.cc-rainbow-layer {
|
|
281
156
|
contain: paint;
|
|
282
157
|
}
|
|
@@ -361,21 +236,35 @@ var BackgroundRainbow = () => {
|
|
|
361
236
|
}
|
|
362
237
|
}
|
|
363
238
|
` })
|
|
364
|
-
|
|
365
|
-
};
|
|
239
|
+
] });
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
});
|
|
366
243
|
|
|
367
244
|
// src/components/cupcode/BackgroundStars.tsx
|
|
245
|
+
var BackgroundStars_exports = {};
|
|
246
|
+
__export(BackgroundStars_exports, {
|
|
247
|
+
BackgroundStars: () => BackgroundStars,
|
|
248
|
+
default: () => BackgroundStars_default
|
|
249
|
+
});
|
|
368
250
|
import { useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
369
251
|
import { Fragment, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
370
|
-
var TWO_PI = Math.PI * 2;
|
|
371
|
-
var rand = (a, b) => a + Math.random() * (b - a);
|
|
372
|
-
var choice = (arr) => arr[Math.random() * arr.length | 0];
|
|
373
252
|
function createCanvas(width, height) {
|
|
374
253
|
const canvas = document.createElement("canvas");
|
|
375
254
|
canvas.width = Math.max(1, Math.floor(width));
|
|
376
255
|
canvas.height = Math.max(1, Math.floor(height));
|
|
377
256
|
return canvas;
|
|
378
257
|
}
|
|
258
|
+
function dprFromPixelBudget(width, height, pixelBudget, minDpr, maxDpr) {
|
|
259
|
+
const area = Math.max(1, width * height);
|
|
260
|
+
const dpr = Math.sqrt(pixelBudget / area);
|
|
261
|
+
return clamp(dpr, minDpr, maxDpr);
|
|
262
|
+
}
|
|
263
|
+
function scaleFromPixelBudget(width, height, pixelBudget, minScale, maxScale) {
|
|
264
|
+
const area = Math.max(1, width * height);
|
|
265
|
+
const scale = Math.sqrt(pixelBudget / area);
|
|
266
|
+
return clamp(scale, minScale, maxScale);
|
|
267
|
+
}
|
|
379
268
|
function createStarBaseSprite(size) {
|
|
380
269
|
const canvas = createCanvas(size, size);
|
|
381
270
|
const ctx = canvas.getContext("2d");
|
|
@@ -424,8 +313,8 @@ function createFlareSprite(size) {
|
|
|
424
313
|
const centerY = size / 2;
|
|
425
314
|
const gradient = ctx.createLinearGradient(0, centerY, canvas.width, centerY);
|
|
426
315
|
gradient.addColorStop(0, "rgba(0,0,0,0)");
|
|
427
|
-
gradient.addColorStop(0.44, "rgba(41,5,40,0.
|
|
428
|
-
gradient.addColorStop(0.56, "rgba(41,5,40,0.
|
|
316
|
+
gradient.addColorStop(0.44, "rgba(41,5,40,0.84)");
|
|
317
|
+
gradient.addColorStop(0.56, "rgba(41,5,40,0.84)");
|
|
429
318
|
gradient.addColorStop(1, "rgba(0,0,0,0)");
|
|
430
319
|
ctx.fillStyle = gradient;
|
|
431
320
|
ctx.fillRect(0, (size - 4) / 2, canvas.width, 4);
|
|
@@ -457,21 +346,14 @@ function createCometHeadSprite(size) {
|
|
|
457
346
|
const ctx = canvas.getContext("2d");
|
|
458
347
|
if (!ctx) return canvas;
|
|
459
348
|
const half = size / 2;
|
|
460
|
-
const
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
ctx.fillStyle =
|
|
349
|
+
const outer = ctx.createRadialGradient(half, half, 0, half, half, half);
|
|
350
|
+
outer.addColorStop(0, "rgba(255,255,255,0.96)");
|
|
351
|
+
outer.addColorStop(0.35, "rgba(151,90,182,0.72)");
|
|
352
|
+
outer.addColorStop(1, "rgba(0,0,0,0)");
|
|
353
|
+
ctx.fillStyle = outer;
|
|
465
354
|
ctx.beginPath();
|
|
466
355
|
ctx.arc(half, half, half, 0, TWO_PI);
|
|
467
356
|
ctx.fill();
|
|
468
|
-
const glowB = ctx.createRadialGradient(half, half, 0, half, half, half * 0.56);
|
|
469
|
-
glowB.addColorStop(0, "rgba(255,255,255,0.95)");
|
|
470
|
-
glowB.addColorStop(1, "rgba(0,0,0,0)");
|
|
471
|
-
ctx.fillStyle = glowB;
|
|
472
|
-
ctx.beginPath();
|
|
473
|
-
ctx.arc(half, half, half * 0.56, 0, TWO_PI);
|
|
474
|
-
ctx.fill();
|
|
475
357
|
return canvas;
|
|
476
358
|
}
|
|
477
359
|
function createCometTailSprite(width, height) {
|
|
@@ -481,59 +363,37 @@ function createCometTailSprite(width, height) {
|
|
|
481
363
|
const center = height / 2;
|
|
482
364
|
const gradient = ctx.createLinearGradient(0, center, width, center);
|
|
483
365
|
gradient.addColorStop(0, "rgba(0,0,0,0)");
|
|
484
|
-
gradient.addColorStop(0.
|
|
485
|
-
gradient.addColorStop(
|
|
486
|
-
gradient.addColorStop(1, "rgba(255,255,255,0.96)");
|
|
366
|
+
gradient.addColorStop(0.5, "rgba(124,91,187,0.52)");
|
|
367
|
+
gradient.addColorStop(1, "rgba(255,255,255,0.94)");
|
|
487
368
|
ctx.fillStyle = gradient;
|
|
488
369
|
ctx.fillRect(0, center - 1, width, 2);
|
|
489
370
|
return canvas;
|
|
490
371
|
}
|
|
491
|
-
function
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
372
|
+
function setCanvasDisplaySize(canvas, width, height, dpr) {
|
|
373
|
+
canvas.width = Math.max(1, Math.floor(width * dpr));
|
|
374
|
+
canvas.height = Math.max(1, Math.floor(height * dpr));
|
|
375
|
+
canvas.style.width = `${width}px`;
|
|
376
|
+
canvas.style.height = `${height}px`;
|
|
495
377
|
}
|
|
496
378
|
function BackgroundStars() {
|
|
497
379
|
const nebulaRef = useRef2(null);
|
|
498
|
-
const
|
|
380
|
+
const staticStarsRef = useRef2(null);
|
|
381
|
+
const fxStarsRef = useRef2(null);
|
|
499
382
|
useEffect2(() => {
|
|
500
383
|
const nebulaCanvas = nebulaRef.current;
|
|
501
|
-
const
|
|
502
|
-
|
|
384
|
+
const staticCanvas = staticStarsRef.current;
|
|
385
|
+
const fxCanvas = fxStarsRef.current;
|
|
386
|
+
if (!nebulaCanvas || !staticCanvas || !fxCanvas) return;
|
|
503
387
|
const nebulaCtx = nebulaCanvas.getContext("2d", { alpha: true, desynchronized: true });
|
|
504
|
-
const
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
const height = window.innerHeight;
|
|
388
|
+
const staticCtx = staticCanvas.getContext("2d", { alpha: true, desynchronized: true });
|
|
389
|
+
const fxCtx = fxCanvas.getContext("2d", { alpha: true, desynchronized: true });
|
|
390
|
+
if (!nebulaCtx || !staticCtx || !fxCtx) return;
|
|
508
391
|
const nav = navigator;
|
|
509
392
|
const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
510
393
|
const lowMemory = typeof nav.deviceMemory === "number" && nav.deviceMemory <= 4;
|
|
511
394
|
const lowCpu = typeof nav.hardwareConcurrency === "number" && nav.hardwareConcurrency <= 4;
|
|
512
395
|
const lowPowerDevice = lowMemory || lowCpu;
|
|
513
|
-
const nebulaScale = lowPowerDevice ? 0.48 : 0.62;
|
|
514
|
-
const nebulaWidth = Math.max(1, Math.floor(width * nebulaScale));
|
|
515
|
-
const nebulaHeight = Math.max(1, Math.floor(height * nebulaScale));
|
|
516
|
-
nebulaCanvas.width = nebulaWidth;
|
|
517
|
-
nebulaCanvas.height = nebulaHeight;
|
|
518
|
-
nebulaCanvas.style.width = `${width}px`;
|
|
519
|
-
nebulaCanvas.style.height = `${height}px`;
|
|
520
|
-
starsCanvas.width = width;
|
|
521
|
-
starsCanvas.height = height;
|
|
522
|
-
starsCanvas.style.width = `${width}px`;
|
|
523
|
-
starsCanvas.style.height = `${height}px`;
|
|
524
396
|
const palette = ["#ffffff", "#d7c8ff", "#7c5bbb", "#b146ea", "#975ab6", "#ff8ad1"];
|
|
525
|
-
const starSpriteSize = 96;
|
|
526
|
-
const halfStarSprite = starSpriteSize / 2;
|
|
527
|
-
const starBaseSprite = createStarBaseSprite(starSpriteSize);
|
|
528
|
-
const starSprites = /* @__PURE__ */ new Map();
|
|
529
|
-
for (const color of palette) {
|
|
530
|
-
starSprites.set(color, tintSprite(starBaseSprite, color));
|
|
531
|
-
}
|
|
532
|
-
const flareSprite = createFlareSprite(starSpriteSize);
|
|
533
|
-
const haloPink = createHaloSprite(160, "rgba(251,88,235,0.68)");
|
|
534
|
-
const haloPurple = createHaloSprite(160, "rgba(151,90,182,0.6)");
|
|
535
|
-
const haloIndigo = createHaloSprite(160, "rgba(124,91,187,0.54)");
|
|
536
|
-
const haloGlow = createHaloSprite(140, "rgba(151,90,182,0.32)");
|
|
537
397
|
const cloudColors = [
|
|
538
398
|
"rgba(65,105,225,0.18)",
|
|
539
399
|
"rgba(138,43,226,0.17)",
|
|
@@ -542,96 +402,81 @@ function BackgroundStars() {
|
|
|
542
402
|
"rgba(147,112,219,0.17)",
|
|
543
403
|
"rgba(218,112,214,0.16)"
|
|
544
404
|
];
|
|
405
|
+
const starSpriteSize = 96;
|
|
406
|
+
const starBaseSprite = createStarBaseSprite(starSpriteSize);
|
|
407
|
+
const starSprites = /* @__PURE__ */ new Map();
|
|
408
|
+
for (const color of palette) {
|
|
409
|
+
starSprites.set(color, tintSprite(starBaseSprite, color));
|
|
410
|
+
}
|
|
411
|
+
const haloSoft = createHaloSprite(160, "rgba(151,90,182,0.52)");
|
|
412
|
+
const haloPulse = createHaloSprite(192, "rgba(251,88,235,0.56)");
|
|
413
|
+
const flareSprite = createFlareSprite(starSpriteSize);
|
|
545
414
|
const cloudSprites = /* @__PURE__ */ new Map();
|
|
546
415
|
for (const color of cloudColors) {
|
|
547
416
|
cloudSprites.set(color, createCloudSprite(256, color));
|
|
548
417
|
}
|
|
549
|
-
const
|
|
550
|
-
const
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
driftDx: rand(-6e-3, 6e-3) * width,
|
|
603
|
-
driftDy: rand(-6e-3, 6e-3) * height,
|
|
604
|
-
driftInvDur: 1 / rand(5e4, 9e4),
|
|
605
|
-
scaleTo: rand(0.9, 1.12),
|
|
606
|
-
baseOpacity: rand(0.82, 1),
|
|
607
|
-
intensity: rand(0.95, 1.5),
|
|
608
|
-
twinkleFreq: TWO_PI / twinkleDur,
|
|
609
|
-
twinkleDelay: rand(0, 24e3),
|
|
610
|
-
sparkInvDur: 1 / sparkDur,
|
|
611
|
-
sparkDelay: rand(0, 1200),
|
|
612
|
-
phase: Math.random() * TWO_PI
|
|
613
|
-
};
|
|
614
|
-
});
|
|
615
|
-
const cometHeadSprite = createCometHeadSprite(90);
|
|
616
|
-
const cometTailSprite = createCometTailSprite(256, 8);
|
|
617
|
-
const comets = [];
|
|
618
|
-
const spawnComet = (now) => {
|
|
619
|
-
comets.push({
|
|
620
|
-
x: Math.random() * width,
|
|
621
|
-
y: Math.random() * height,
|
|
622
|
-
angle: Math.random() * TWO_PI,
|
|
623
|
-
len: rand(80, 160),
|
|
624
|
-
t0: now,
|
|
625
|
-
dur: rand(1400, 2200)
|
|
626
|
-
});
|
|
418
|
+
const cometHeadSprite = createCometHeadSprite(84);
|
|
419
|
+
const cometTailSprite = createCometTailSprite(228, 8);
|
|
420
|
+
const maxQualityLevel = lowPowerDevice ? 1 : QUALITY_PROFILES.length - 1;
|
|
421
|
+
let qualityLevel = maxQualityLevel;
|
|
422
|
+
let profile = QUALITY_PROFILES[qualityLevel];
|
|
423
|
+
let width = 0;
|
|
424
|
+
let height = 0;
|
|
425
|
+
let staticDpr = 1;
|
|
426
|
+
let fxDpr = 1;
|
|
427
|
+
let nebulaScale = lowPowerDevice ? 0.46 : 0.58;
|
|
428
|
+
let nebulaWidth = 1;
|
|
429
|
+
let nebulaHeight = 1;
|
|
430
|
+
let staticStars = [];
|
|
431
|
+
let dynamicStars = [];
|
|
432
|
+
let clouds = [];
|
|
433
|
+
let comets = [];
|
|
434
|
+
let nebulaBackdrop = createCanvas(1, 1);
|
|
435
|
+
let nextCometAt = 0;
|
|
436
|
+
const nextCometDelay = () => rand(profile.cometMinMs, profile.cometMaxMs);
|
|
437
|
+
const clearFx = () => {
|
|
438
|
+
fxCtx.setTransform(fxDpr, 0, 0, fxDpr, 0, 0);
|
|
439
|
+
fxCtx.clearRect(0, 0, width, height);
|
|
440
|
+
};
|
|
441
|
+
const clearNebula = () => {
|
|
442
|
+
nebulaCtx.setTransform(1, 0, 0, 1, 0, 0);
|
|
443
|
+
nebulaCtx.clearRect(0, 0, nebulaWidth, nebulaHeight);
|
|
444
|
+
};
|
|
445
|
+
const drawStaticStars = () => {
|
|
446
|
+
staticCtx.setTransform(staticDpr, 0, 0, staticDpr, 0, 0);
|
|
447
|
+
staticCtx.clearRect(0, 0, width, height);
|
|
448
|
+
staticCtx.globalCompositeOperation = "screen";
|
|
449
|
+
for (const star of staticStars) {
|
|
450
|
+
const size = star.size;
|
|
451
|
+
const half = size / 2;
|
|
452
|
+
staticCtx.globalAlpha = star.alpha;
|
|
453
|
+
staticCtx.drawImage(star.sprite, star.x - half, star.y - half, size, size);
|
|
454
|
+
const haloRadius = size * star.haloScale;
|
|
455
|
+
staticCtx.globalAlpha = star.alpha * 0.48;
|
|
456
|
+
staticCtx.drawImage(haloSoft, star.x - haloRadius, star.y - haloRadius, haloRadius * 2, haloRadius * 2);
|
|
457
|
+
if (star.isHighlight) {
|
|
458
|
+
const flareWidth = size * 5.2;
|
|
459
|
+
const flareHeight = size * 1.25;
|
|
460
|
+
staticCtx.globalAlpha = star.alpha * 0.22;
|
|
461
|
+
staticCtx.drawImage(flareSprite, star.x - flareWidth / 2, star.y - flareHeight / 2, flareWidth, flareHeight);
|
|
462
|
+
staticCtx.save();
|
|
463
|
+
staticCtx.translate(star.x, star.y);
|
|
464
|
+
staticCtx.rotate(Math.PI / 2);
|
|
465
|
+
staticCtx.drawImage(flareSprite, -flareWidth / 2, -flareHeight / 2, flareWidth, flareHeight);
|
|
466
|
+
staticCtx.restore();
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
staticCtx.globalAlpha = 1;
|
|
470
|
+
staticCtx.globalCompositeOperation = "source-over";
|
|
627
471
|
};
|
|
628
472
|
const drawNebula = (now) => {
|
|
473
|
+
nebulaCtx.setTransform(1, 0, 0, 1, 0, 0);
|
|
629
474
|
nebulaCtx.clearRect(0, 0, nebulaWidth, nebulaHeight);
|
|
630
475
|
nebulaCtx.drawImage(nebulaBackdrop, 0, 0);
|
|
631
476
|
nebulaCtx.globalCompositeOperation = "screen";
|
|
632
477
|
for (const cloud of clouds) {
|
|
633
478
|
cloud.angle += cloud.speed;
|
|
634
|
-
const pulse = 1 + cloud.pulseAmp * Math.sin(now *
|
|
479
|
+
const pulse = 1 + cloud.pulseAmp * Math.sin(now * 18e-5 + cloud.pulsePhase);
|
|
635
480
|
const radius = cloud.size * pulse;
|
|
636
481
|
nebulaCtx.save();
|
|
637
482
|
nebulaCtx.translate(cloud.x, cloud.y);
|
|
@@ -643,79 +488,208 @@ function BackgroundStars() {
|
|
|
643
488
|
nebulaCtx.globalCompositeOperation = "source-over";
|
|
644
489
|
nebulaCtx.globalAlpha = 1;
|
|
645
490
|
};
|
|
491
|
+
const drawDynamicStars = (now) => {
|
|
492
|
+
fxCtx.setTransform(fxDpr, 0, 0, fxDpr, 0, 0);
|
|
493
|
+
fxCtx.clearRect(0, 0, width, height);
|
|
494
|
+
fxCtx.globalCompositeOperation = "screen";
|
|
495
|
+
for (const star of dynamicStars) {
|
|
496
|
+
const drift = now * star.driftInvDur % 1;
|
|
497
|
+
const x = star.x + star.driftDx * drift;
|
|
498
|
+
const y = star.y + star.driftDy * drift;
|
|
499
|
+
const twinkle = (Math.sin((now + star.twinkleDelay) * star.twinkleFreq + star.phase) + 1) * 0.5;
|
|
500
|
+
const sparkCycle = (now + star.sparkDelay) * star.sparkInvDur % 1;
|
|
501
|
+
const sparkBoost = sparkCycle < 0.15 ? sparkCycle / 0.15 : sparkCycle < 0.4 ? 1 - (sparkCycle - 0.15) / 0.25 : 0;
|
|
502
|
+
const size = star.size * (0.92 + twinkle * profile.twinkleBoost + sparkBoost * 0.12);
|
|
503
|
+
const alpha = star.baseOpacity * (0.58 + twinkle * 0.42);
|
|
504
|
+
const half = size / 2;
|
|
505
|
+
fxCtx.globalAlpha = alpha;
|
|
506
|
+
fxCtx.drawImage(star.sprite, x - half, y - half, size, size);
|
|
507
|
+
const haloRadius = size * (star.haloScale + sparkBoost * 1.8) * profile.haloBoost;
|
|
508
|
+
fxCtx.globalAlpha = alpha * 0.42;
|
|
509
|
+
fxCtx.drawImage(haloPulse, x - haloRadius, y - haloRadius, haloRadius * 2, haloRadius * 2);
|
|
510
|
+
if (profile.dynamicFlares && star.isHighlight) {
|
|
511
|
+
const flareWidth = size * 5.8;
|
|
512
|
+
const flareHeight = size * 1.25;
|
|
513
|
+
fxCtx.globalAlpha = alpha * (0.18 + sparkBoost * 0.35);
|
|
514
|
+
fxCtx.drawImage(flareSprite, x - flareWidth / 2, y - flareHeight / 2, flareWidth, flareHeight);
|
|
515
|
+
fxCtx.save();
|
|
516
|
+
fxCtx.translate(x, y);
|
|
517
|
+
fxCtx.rotate(Math.PI / 2);
|
|
518
|
+
fxCtx.drawImage(flareSprite, -flareWidth / 2, -flareHeight / 2, flareWidth, flareHeight);
|
|
519
|
+
fxCtx.restore();
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
fxCtx.globalAlpha = 1;
|
|
523
|
+
fxCtx.globalCompositeOperation = "source-over";
|
|
524
|
+
};
|
|
646
525
|
const drawComets = (now) => {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
526
|
+
if (!comets.length) return;
|
|
527
|
+
fxCtx.globalCompositeOperation = "screen";
|
|
528
|
+
for (let index = comets.length - 1; index >= 0; index -= 1) {
|
|
529
|
+
const comet = comets[index];
|
|
530
|
+
const progress = (now - comet.t0) / comet.dur;
|
|
531
|
+
if (progress >= 1) {
|
|
532
|
+
comets.splice(index, 1);
|
|
652
533
|
continue;
|
|
653
534
|
}
|
|
654
|
-
const ease =
|
|
655
|
-
const dx = Math.cos(comet.angle) * comet.len * 6.
|
|
656
|
-
const dy = Math.sin(comet.angle) * comet.len * 6.
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
535
|
+
const ease = progress < 0.5 ? progress * 2 : 1 - (progress - 0.5) * 2;
|
|
536
|
+
const dx = Math.cos(comet.angle) * comet.len * 6.2 * progress;
|
|
537
|
+
const dy = Math.sin(comet.angle) * comet.len * 6.2 * progress;
|
|
538
|
+
fxCtx.save();
|
|
539
|
+
fxCtx.translate(comet.x + dx, comet.y + dy);
|
|
540
|
+
fxCtx.rotate(comet.angle);
|
|
541
|
+
fxCtx.globalAlpha = 0.24 + 0.7 * ease;
|
|
542
|
+
fxCtx.drawImage(cometHeadSprite, -12, -12, 24, 24);
|
|
543
|
+
fxCtx.globalAlpha = 0.2 + 0.58 * ease;
|
|
544
|
+
fxCtx.drawImage(cometTailSprite, -comet.len, -3, comet.len, 6);
|
|
545
|
+
fxCtx.restore();
|
|
546
|
+
}
|
|
547
|
+
fxCtx.globalAlpha = 1;
|
|
548
|
+
fxCtx.globalCompositeOperation = "source-over";
|
|
668
549
|
};
|
|
669
|
-
const
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
550
|
+
const spawnComet = (now) => {
|
|
551
|
+
if (profile.maxComets <= 0) return;
|
|
552
|
+
if (comets.length >= profile.maxComets) return;
|
|
553
|
+
comets.push({
|
|
554
|
+
x: Math.random() * width,
|
|
555
|
+
y: Math.random() * height,
|
|
556
|
+
angle: Math.random() * TWO_PI,
|
|
557
|
+
len: rand(72, 150),
|
|
558
|
+
t0: now,
|
|
559
|
+
dur: rand(1300, 2100)
|
|
560
|
+
});
|
|
561
|
+
};
|
|
562
|
+
const buildScene = () => {
|
|
563
|
+
width = Math.max(1, window.innerWidth);
|
|
564
|
+
height = Math.max(1, window.innerHeight);
|
|
565
|
+
const deviceDpr = window.devicePixelRatio || 1;
|
|
566
|
+
staticDpr = dprFromPixelBudget(
|
|
567
|
+
width,
|
|
568
|
+
height,
|
|
569
|
+
profile.staticPixelBudget,
|
|
570
|
+
lowPowerDevice ? 0.36 : 0.44,
|
|
571
|
+
Math.min(deviceDpr, 0.85)
|
|
572
|
+
);
|
|
573
|
+
fxDpr = dprFromPixelBudget(
|
|
574
|
+
width,
|
|
575
|
+
height,
|
|
576
|
+
profile.fxPixelBudget,
|
|
577
|
+
lowPowerDevice ? 0.44 : 0.52,
|
|
578
|
+
Math.min(deviceDpr, 0.95)
|
|
579
|
+
);
|
|
580
|
+
setCanvasDisplaySize(staticCanvas, width, height, staticDpr);
|
|
581
|
+
setCanvasDisplaySize(fxCanvas, width, height, fxDpr);
|
|
582
|
+
nebulaScale = scaleFromPixelBudget(
|
|
583
|
+
width,
|
|
584
|
+
height,
|
|
585
|
+
profile.nebulaPixelBudget,
|
|
586
|
+
lowPowerDevice ? 0.32 : 0.38,
|
|
587
|
+
0.62
|
|
588
|
+
);
|
|
589
|
+
nebulaWidth = Math.max(1, Math.floor(width * nebulaScale));
|
|
590
|
+
nebulaHeight = Math.max(1, Math.floor(height * nebulaScale));
|
|
591
|
+
nebulaCanvas.width = nebulaWidth;
|
|
592
|
+
nebulaCanvas.height = nebulaHeight;
|
|
593
|
+
nebulaCanvas.style.width = `${width}px`;
|
|
594
|
+
nebulaCanvas.style.height = `${height}px`;
|
|
595
|
+
staticCtx.setTransform(staticDpr, 0, 0, staticDpr, 0, 0);
|
|
596
|
+
fxCtx.setTransform(fxDpr, 0, 0, fxDpr, 0, 0);
|
|
597
|
+
nebulaCtx.setTransform(1, 0, 0, 1, 0, 0);
|
|
598
|
+
const areaFactor = Math.min(1.25, width * height / (1920 * 1080));
|
|
599
|
+
const totalStarsBase = lowPowerDevice ? 100 : 166;
|
|
600
|
+
const totalStars = Math.max(72, Math.min(210, Math.round(totalStarsBase * areaFactor)));
|
|
601
|
+
const dynamicCount = Math.max(10, Math.round(totalStars * profile.dynamicRatio));
|
|
602
|
+
staticStars = [];
|
|
603
|
+
dynamicStars = [];
|
|
604
|
+
comets = [];
|
|
605
|
+
for (let i = 0; i < totalStars; i += 1) {
|
|
606
|
+
const bucket = Math.random();
|
|
607
|
+
const isHighlight = bucket > 0.965;
|
|
608
|
+
const size = Math.max(
|
|
609
|
+
0.8,
|
|
610
|
+
(bucket < 0.24 ? rand(0.35, 0.95) : bucket < 0.95 ? rand(0.6, 1.75) : rand(1.8, 3)) * (width * 1e-3)
|
|
611
|
+
);
|
|
612
|
+
const color = choice(palette);
|
|
613
|
+
const alpha = rand(0.76, 0.98);
|
|
614
|
+
const base = {
|
|
615
|
+
x: Math.random() * width,
|
|
616
|
+
y: Math.random() * height,
|
|
617
|
+
size,
|
|
618
|
+
sprite: starSprites.get(color),
|
|
619
|
+
isHighlight
|
|
620
|
+
};
|
|
621
|
+
if (dynamicStars.length < dynamicCount && Math.random() > 0.32) {
|
|
622
|
+
const twinkleDur = rand(5500, 26e3);
|
|
623
|
+
const sparkDur = rand(760, 1300);
|
|
624
|
+
dynamicStars.push({
|
|
625
|
+
...base,
|
|
626
|
+
baseOpacity: alpha,
|
|
627
|
+
driftDx: rand(-5e-3, 5e-3) * width,
|
|
628
|
+
driftDy: rand(-5e-3, 5e-3) * height,
|
|
629
|
+
driftInvDur: 1 / rand(52e3, 96e3),
|
|
630
|
+
twinkleFreq: TWO_PI / twinkleDur,
|
|
631
|
+
twinkleDelay: rand(0, 2e4),
|
|
632
|
+
sparkInvDur: 1 / sparkDur,
|
|
633
|
+
sparkDelay: rand(0, 1100),
|
|
634
|
+
phase: Math.random() * TWO_PI,
|
|
635
|
+
haloScale: rand(2.2, 3.8)
|
|
636
|
+
});
|
|
637
|
+
} else {
|
|
638
|
+
staticStars.push({
|
|
639
|
+
...base,
|
|
640
|
+
alpha,
|
|
641
|
+
haloScale: rand(2.1, 3.6)
|
|
642
|
+
});
|
|
700
643
|
}
|
|
701
|
-
starsCtx.restore();
|
|
702
644
|
}
|
|
703
|
-
|
|
645
|
+
const cloudCount = lowPowerDevice ? Math.min(profile.cloudCount, 4) : profile.cloudCount;
|
|
646
|
+
clouds = Array.from({ length: cloudCount }).map(() => {
|
|
647
|
+
const color = choice(cloudColors);
|
|
648
|
+
return {
|
|
649
|
+
x: Math.random() * nebulaWidth,
|
|
650
|
+
y: Math.random() * nebulaHeight,
|
|
651
|
+
size: rand(90, 220),
|
|
652
|
+
alpha: rand(0.64, 0.95),
|
|
653
|
+
sprite: cloudSprites.get(color),
|
|
654
|
+
angle: Math.random() * TWO_PI,
|
|
655
|
+
speed: rand(-36e-5, 36e-5),
|
|
656
|
+
pulseAmp: rand(0.02, 0.07),
|
|
657
|
+
pulsePhase: Math.random() * TWO_PI
|
|
658
|
+
};
|
|
659
|
+
});
|
|
660
|
+
nebulaBackdrop = createCanvas(nebulaWidth, nebulaHeight);
|
|
661
|
+
const backdropCtx = nebulaBackdrop.getContext("2d");
|
|
662
|
+
if (backdropCtx) {
|
|
663
|
+
const bg = backdropCtx.createRadialGradient(
|
|
664
|
+
nebulaWidth / 2,
|
|
665
|
+
nebulaHeight / 2,
|
|
666
|
+
0,
|
|
667
|
+
nebulaWidth / 2,
|
|
668
|
+
nebulaHeight / 2,
|
|
669
|
+
Math.max(nebulaWidth, nebulaHeight) / 1.5
|
|
670
|
+
);
|
|
671
|
+
bg.addColorStop(0, "#0c0d1d");
|
|
672
|
+
bg.addColorStop(1, "#000000");
|
|
673
|
+
backdropCtx.fillStyle = bg;
|
|
674
|
+
backdropCtx.fillRect(0, 0, nebulaWidth, nebulaHeight);
|
|
675
|
+
}
|
|
676
|
+
nextCometAt = performance.now() + nextCometDelay();
|
|
677
|
+
drawNebula(performance.now());
|
|
678
|
+
drawStaticStars();
|
|
679
|
+
clearFx();
|
|
704
680
|
};
|
|
681
|
+
buildScene();
|
|
705
682
|
let raf = 0;
|
|
683
|
+
let resizeRaf = 0;
|
|
706
684
|
let running = false;
|
|
707
685
|
let disposed = false;
|
|
708
686
|
let lastFrame = 0;
|
|
709
687
|
let lastNebulaFrame = 0;
|
|
710
|
-
let
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
const
|
|
715
|
-
starsCtx.clearRect(0, 0, width, height);
|
|
716
|
-
nebulaCtx.clearRect(0, 0, nebulaWidth, nebulaHeight);
|
|
717
|
-
};
|
|
718
|
-
const shouldRun = () => !reducedMotion && !document.hidden && isDarkMode();
|
|
688
|
+
let avgFrameMs = profile.minFrameMs;
|
|
689
|
+
let slowFrameScore = 0;
|
|
690
|
+
let fastFrameScore = 0;
|
|
691
|
+
let qualityCooldownUntil = performance.now() + 2400;
|
|
692
|
+
const shouldRun = () => !reducedMotion && !document.hidden;
|
|
719
693
|
const stop = () => {
|
|
720
694
|
running = false;
|
|
721
695
|
if (raf) {
|
|
@@ -723,21 +697,67 @@ function BackgroundStars() {
|
|
|
723
697
|
raf = 0;
|
|
724
698
|
}
|
|
725
699
|
};
|
|
700
|
+
const scheduleRebuild = () => {
|
|
701
|
+
if (resizeRaf) cancelAnimationFrame(resizeRaf);
|
|
702
|
+
resizeRaf = requestAnimationFrame(() => {
|
|
703
|
+
resizeRaf = 0;
|
|
704
|
+
buildScene();
|
|
705
|
+
if (shouldRun() && !running) {
|
|
706
|
+
running = true;
|
|
707
|
+
lastFrame = 0;
|
|
708
|
+
lastNebulaFrame = 0;
|
|
709
|
+
raf = requestAnimationFrame(frame);
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
};
|
|
713
|
+
const setQualityLevel = (nextLevel, now) => {
|
|
714
|
+
const boundedLevel = clamp(nextLevel, 0, maxQualityLevel);
|
|
715
|
+
if (boundedLevel === qualityLevel) return;
|
|
716
|
+
qualityLevel = boundedLevel;
|
|
717
|
+
profile = QUALITY_PROFILES[qualityLevel];
|
|
718
|
+
avgFrameMs = profile.minFrameMs;
|
|
719
|
+
slowFrameScore = 0;
|
|
720
|
+
fastFrameScore = 0;
|
|
721
|
+
qualityCooldownUntil = now + 4200;
|
|
722
|
+
scheduleRebuild();
|
|
723
|
+
};
|
|
724
|
+
const adaptQuality = (deltaMs, now) => {
|
|
725
|
+
const clampedDelta = clamp(deltaMs, 1, 250);
|
|
726
|
+
avgFrameMs = avgFrameMs * 0.9 + clampedDelta * 0.1;
|
|
727
|
+
if (now < qualityCooldownUntil) return;
|
|
728
|
+
const slowThreshold = profile.minFrameMs * 1.45;
|
|
729
|
+
const fastThreshold = profile.minFrameMs * 0.9;
|
|
730
|
+
if (avgFrameMs > slowThreshold) slowFrameScore += 1;
|
|
731
|
+
else slowFrameScore = Math.max(0, slowFrameScore - 0.5);
|
|
732
|
+
if (avgFrameMs < fastThreshold) fastFrameScore += 1;
|
|
733
|
+
else fastFrameScore = Math.max(0, fastFrameScore - 1);
|
|
734
|
+
if (slowFrameScore >= 48 && qualityLevel > 0) {
|
|
735
|
+
setQualityLevel(qualityLevel - 1, now);
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
if (fastFrameScore >= 220 && qualityLevel < maxQualityLevel) {
|
|
739
|
+
setQualityLevel(qualityLevel + 1, now);
|
|
740
|
+
}
|
|
741
|
+
};
|
|
726
742
|
const frame = (now) => {
|
|
727
743
|
if (!running || disposed) return;
|
|
728
|
-
if (
|
|
729
|
-
|
|
730
|
-
|
|
744
|
+
if (lastFrame !== 0) {
|
|
745
|
+
const delta = now - lastFrame;
|
|
746
|
+
if (delta < profile.minFrameMs) {
|
|
747
|
+
raf = requestAnimationFrame(frame);
|
|
748
|
+
return;
|
|
749
|
+
}
|
|
750
|
+
adaptQuality(delta, now);
|
|
731
751
|
}
|
|
732
752
|
lastFrame = now;
|
|
733
|
-
if (now - lastNebulaFrame >= nebulaFrameMs) {
|
|
753
|
+
if (now - lastNebulaFrame >= profile.nebulaFrameMs) {
|
|
734
754
|
drawNebula(now);
|
|
735
755
|
lastNebulaFrame = now;
|
|
736
756
|
}
|
|
737
|
-
|
|
738
|
-
if (now >= nextCometAt) {
|
|
757
|
+
drawDynamicStars(now);
|
|
758
|
+
if (profile.maxComets > 0 && now >= nextCometAt) {
|
|
739
759
|
spawnComet(now);
|
|
740
|
-
nextCometAt = now +
|
|
760
|
+
nextCometAt = now + nextCometDelay();
|
|
741
761
|
}
|
|
742
762
|
drawComets(now);
|
|
743
763
|
raf = requestAnimationFrame(frame);
|
|
@@ -747,35 +767,41 @@ function BackgroundStars() {
|
|
|
747
767
|
running = true;
|
|
748
768
|
lastFrame = 0;
|
|
749
769
|
lastNebulaFrame = 0;
|
|
770
|
+
nextCometAt = performance.now() + nextCometDelay();
|
|
750
771
|
raf = requestAnimationFrame(frame);
|
|
751
772
|
};
|
|
752
|
-
const
|
|
753
|
-
if (shouldRun())
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
clearCanvases();
|
|
773
|
+
const onVisibilityChange = () => {
|
|
774
|
+
if (shouldRun()) {
|
|
775
|
+
start();
|
|
776
|
+
return;
|
|
757
777
|
}
|
|
778
|
+
stop();
|
|
779
|
+
clearFx();
|
|
780
|
+
if (document.hidden) clearNebula();
|
|
781
|
+
else drawNebula(0);
|
|
782
|
+
};
|
|
783
|
+
const onResize = () => {
|
|
784
|
+
scheduleRebuild();
|
|
758
785
|
};
|
|
759
786
|
if (reducedMotion) {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
} else {
|
|
764
|
-
clearCanvases();
|
|
765
|
-
}
|
|
787
|
+
drawNebula(0);
|
|
788
|
+
drawStaticStars();
|
|
789
|
+
clearFx();
|
|
766
790
|
return () => {
|
|
767
791
|
stop();
|
|
768
792
|
};
|
|
769
793
|
}
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
onVisibilityOrTheme();
|
|
794
|
+
document.addEventListener("visibilitychange", onVisibilityChange);
|
|
795
|
+
window.addEventListener("resize", onResize, { passive: true });
|
|
796
|
+
start();
|
|
774
797
|
return () => {
|
|
775
798
|
disposed = true;
|
|
776
799
|
stop();
|
|
777
|
-
|
|
778
|
-
|
|
800
|
+
clearFx();
|
|
801
|
+
clearNebula();
|
|
802
|
+
document.removeEventListener("visibilitychange", onVisibilityChange);
|
|
803
|
+
window.removeEventListener("resize", onResize);
|
|
804
|
+
if (resizeRaf) cancelAnimationFrame(resizeRaf);
|
|
779
805
|
};
|
|
780
806
|
}, []);
|
|
781
807
|
return /* @__PURE__ */ jsxs4(Fragment, { children: [
|
|
@@ -784,26 +810,234 @@ function BackgroundStars() {
|
|
|
784
810
|
{
|
|
785
811
|
ref: nebulaRef,
|
|
786
812
|
"aria-hidden": "true",
|
|
787
|
-
className: "cc-background-stars-canvas fixed inset-0 z-0 pointer-events-none
|
|
813
|
+
className: "cc-background-stars-canvas fixed inset-0 z-0 pointer-events-none"
|
|
814
|
+
}
|
|
815
|
+
),
|
|
816
|
+
/* @__PURE__ */ jsx4(
|
|
817
|
+
"canvas",
|
|
818
|
+
{
|
|
819
|
+
ref: staticStarsRef,
|
|
820
|
+
"aria-hidden": "true",
|
|
821
|
+
className: "cc-background-stars-canvas fixed inset-0 z-10 pointer-events-none"
|
|
788
822
|
}
|
|
789
823
|
),
|
|
790
824
|
/* @__PURE__ */ jsx4(
|
|
791
825
|
"canvas",
|
|
792
826
|
{
|
|
793
|
-
ref:
|
|
827
|
+
ref: fxStarsRef,
|
|
794
828
|
"aria-hidden": "true",
|
|
795
|
-
className: "cc-background-stars-canvas fixed inset-0 z-
|
|
829
|
+
className: "cc-background-stars-canvas fixed inset-0 z-20 pointer-events-none"
|
|
796
830
|
}
|
|
797
831
|
),
|
|
798
832
|
/* @__PURE__ */ jsx4("style", { children: `
|
|
799
833
|
@media (prefers-reduced-motion: reduce) {
|
|
800
834
|
.cc-background-stars-canvas {
|
|
801
|
-
|
|
835
|
+
animation: none !important;
|
|
802
836
|
}
|
|
803
837
|
}
|
|
804
838
|
` })
|
|
805
839
|
] });
|
|
806
840
|
}
|
|
841
|
+
var TWO_PI, rand, choice, clamp, QUALITY_PROFILES, BackgroundStars_default;
|
|
842
|
+
var init_BackgroundStars = __esm({
|
|
843
|
+
"src/components/cupcode/BackgroundStars.tsx"() {
|
|
844
|
+
"use strict";
|
|
845
|
+
TWO_PI = Math.PI * 2;
|
|
846
|
+
rand = (a, b) => a + Math.random() * (b - a);
|
|
847
|
+
choice = (arr) => arr[Math.random() * arr.length | 0];
|
|
848
|
+
clamp = (value, min, max) => Math.min(max, Math.max(min, value));
|
|
849
|
+
QUALITY_PROFILES = [
|
|
850
|
+
{
|
|
851
|
+
staticPixelBudget: 42e4,
|
|
852
|
+
fxPixelBudget: 62e4,
|
|
853
|
+
nebulaPixelBudget: 3e5,
|
|
854
|
+
dynamicRatio: 0.12,
|
|
855
|
+
cloudCount: 3,
|
|
856
|
+
maxComets: 0,
|
|
857
|
+
minFrameMs: 36,
|
|
858
|
+
nebulaFrameMs: 180,
|
|
859
|
+
cometMinMs: 9e3,
|
|
860
|
+
cometMaxMs: 14e3,
|
|
861
|
+
haloBoost: 0.72,
|
|
862
|
+
twinkleBoost: 0.2,
|
|
863
|
+
dynamicFlares: false
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
staticPixelBudget: 62e4,
|
|
867
|
+
fxPixelBudget: 95e4,
|
|
868
|
+
nebulaPixelBudget: 42e4,
|
|
869
|
+
dynamicRatio: 0.18,
|
|
870
|
+
cloudCount: 4,
|
|
871
|
+
maxComets: 1,
|
|
872
|
+
minFrameMs: 26,
|
|
873
|
+
nebulaFrameMs: 130,
|
|
874
|
+
cometMinMs: 5600,
|
|
875
|
+
cometMaxMs: 9e3,
|
|
876
|
+
haloBoost: 0.88,
|
|
877
|
+
twinkleBoost: 0.26,
|
|
878
|
+
dynamicFlares: true
|
|
879
|
+
},
|
|
880
|
+
{
|
|
881
|
+
staticPixelBudget: 78e4,
|
|
882
|
+
fxPixelBudget: 125e4,
|
|
883
|
+
nebulaPixelBudget: 56e4,
|
|
884
|
+
dynamicRatio: 0.24,
|
|
885
|
+
cloudCount: 6,
|
|
886
|
+
maxComets: 2,
|
|
887
|
+
minFrameMs: 16,
|
|
888
|
+
nebulaFrameMs: 90,
|
|
889
|
+
cometMinMs: 3600,
|
|
890
|
+
cometMaxMs: 7e3,
|
|
891
|
+
haloBoost: 1,
|
|
892
|
+
twinkleBoost: 0.3,
|
|
893
|
+
dynamicFlares: true
|
|
894
|
+
}
|
|
895
|
+
];
|
|
896
|
+
BackgroundStars_default = BackgroundStars;
|
|
897
|
+
}
|
|
898
|
+
});
|
|
899
|
+
|
|
900
|
+
// src/components/cupcode/AccordionCupcode.tsx
|
|
901
|
+
import * as React from "react";
|
|
902
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
903
|
+
import { ChevronDown } from "lucide-react";
|
|
904
|
+
|
|
905
|
+
// src/lib/utils.ts
|
|
906
|
+
import { clsx } from "clsx";
|
|
907
|
+
import { twMerge } from "tailwind-merge";
|
|
908
|
+
function cn(...inputs) {
|
|
909
|
+
return twMerge(clsx(inputs));
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
// src/components/cupcode/AccordionCupcode.tsx
|
|
913
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
914
|
+
var AccordionCupcode = AccordionPrimitive.Root;
|
|
915
|
+
var AccordionItem = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
916
|
+
AccordionPrimitive.Item,
|
|
917
|
+
{
|
|
918
|
+
ref,
|
|
919
|
+
className: cn("glass rounded-xl mb-3 overflow-hidden", className),
|
|
920
|
+
...props
|
|
921
|
+
}
|
|
922
|
+
));
|
|
923
|
+
AccordionItem.displayName = "AccordionItem";
|
|
924
|
+
var AccordionTrigger = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
925
|
+
AccordionPrimitive.Trigger,
|
|
926
|
+
{
|
|
927
|
+
ref,
|
|
928
|
+
className: cn(
|
|
929
|
+
"flex flex-1 items-center justify-between p-4 font-semibold text-foreground",
|
|
930
|
+
"transition-all hover:bg-cupcode-purple/5",
|
|
931
|
+
"[&[data-state=open]>svg]:rotate-180",
|
|
932
|
+
className
|
|
933
|
+
),
|
|
934
|
+
...props,
|
|
935
|
+
children: [
|
|
936
|
+
children,
|
|
937
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "h-5 w-5 shrink-0 text-cupcode-purple transition-transform duration-300" })
|
|
938
|
+
]
|
|
939
|
+
}
|
|
940
|
+
) }));
|
|
941
|
+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
|
|
942
|
+
var AccordionContent = React.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
943
|
+
AccordionPrimitive.Content,
|
|
944
|
+
{
|
|
945
|
+
ref,
|
|
946
|
+
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
947
|
+
...props,
|
|
948
|
+
children: /* @__PURE__ */ jsx("div", { className: cn("px-4 pb-4 pt-0 text-muted-foreground", className), children })
|
|
949
|
+
}
|
|
950
|
+
));
|
|
951
|
+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
|
|
952
|
+
|
|
953
|
+
// src/components/cupcode/AvatarCupcode.tsx
|
|
954
|
+
import * as React2 from "react";
|
|
955
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
956
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
957
|
+
var Avatar = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
958
|
+
AvatarPrimitive.Root,
|
|
959
|
+
{
|
|
960
|
+
ref,
|
|
961
|
+
className: cn(
|
|
962
|
+
"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
|
|
963
|
+
"ring-2 ring-border ring-offset-2 ring-offset-background",
|
|
964
|
+
className
|
|
965
|
+
),
|
|
966
|
+
...props
|
|
967
|
+
}
|
|
968
|
+
));
|
|
969
|
+
Avatar.displayName = AvatarPrimitive.Root.displayName;
|
|
970
|
+
var AvatarImage = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
971
|
+
AvatarPrimitive.Image,
|
|
972
|
+
{
|
|
973
|
+
ref,
|
|
974
|
+
className: cn("aspect-square h-full w-full object-cover", className),
|
|
975
|
+
...props
|
|
976
|
+
}
|
|
977
|
+
));
|
|
978
|
+
AvatarImage.displayName = AvatarPrimitive.Image.displayName;
|
|
979
|
+
var AvatarFallback = React2.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx2(
|
|
980
|
+
AvatarPrimitive.Fallback,
|
|
981
|
+
{
|
|
982
|
+
ref,
|
|
983
|
+
className: cn(
|
|
984
|
+
"flex h-full w-full items-center justify-center rounded-full",
|
|
985
|
+
"bg-gradient-to-br from-cupcode-hover to-cupcode-purple",
|
|
986
|
+
"text-white font-semibold",
|
|
987
|
+
className
|
|
988
|
+
),
|
|
989
|
+
...props
|
|
990
|
+
}
|
|
991
|
+
));
|
|
992
|
+
AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
|
|
993
|
+
var statusStyles = {
|
|
994
|
+
online: "bg-success",
|
|
995
|
+
offline: "bg-muted-foreground",
|
|
996
|
+
away: "bg-warning",
|
|
997
|
+
busy: "bg-destructive"
|
|
998
|
+
};
|
|
999
|
+
var sizeClasses = {
|
|
1000
|
+
sm: "h-8 w-8",
|
|
1001
|
+
md: "h-10 w-10",
|
|
1002
|
+
lg: "h-14 w-14",
|
|
1003
|
+
xl: "h-20 w-20"
|
|
1004
|
+
};
|
|
1005
|
+
var statusSizes = {
|
|
1006
|
+
sm: "h-2 w-2",
|
|
1007
|
+
md: "h-2.5 w-2.5",
|
|
1008
|
+
lg: "h-3 w-3",
|
|
1009
|
+
xl: "h-4 w-4"
|
|
1010
|
+
};
|
|
1011
|
+
var AvatarWithStatus = ({
|
|
1012
|
+
src,
|
|
1013
|
+
alt,
|
|
1014
|
+
fallback,
|
|
1015
|
+
status,
|
|
1016
|
+
size = "md",
|
|
1017
|
+
className
|
|
1018
|
+
}) => {
|
|
1019
|
+
return /* @__PURE__ */ jsxs2("div", { className: "relative inline-block", children: [
|
|
1020
|
+
/* @__PURE__ */ jsxs2(Avatar, { className: cn(sizeClasses[size], className), children: [
|
|
1021
|
+
/* @__PURE__ */ jsx2(AvatarImage, { src, alt }),
|
|
1022
|
+
/* @__PURE__ */ jsx2(AvatarFallback, { children: fallback })
|
|
1023
|
+
] }),
|
|
1024
|
+
status && /* @__PURE__ */ jsx2(
|
|
1025
|
+
"span",
|
|
1026
|
+
{
|
|
1027
|
+
className: cn(
|
|
1028
|
+
"absolute bottom-0 right-0 block rounded-full ring-2 ring-background",
|
|
1029
|
+
statusStyles[status],
|
|
1030
|
+
statusSizes[size],
|
|
1031
|
+
status === "online" && "animate-pulse"
|
|
1032
|
+
)
|
|
1033
|
+
}
|
|
1034
|
+
)
|
|
1035
|
+
] });
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
// src/index.ts
|
|
1039
|
+
init_BackgroundRainbow();
|
|
1040
|
+
init_BackgroundStars();
|
|
807
1041
|
|
|
808
1042
|
// src/components/cupcode/BadgeCupcode.tsx
|
|
809
1043
|
import { forwardRef as forwardRef3 } from "react";
|
|
@@ -6045,34 +6279,132 @@ var TelescupUpload = ({
|
|
|
6045
6279
|
) }) : null
|
|
6046
6280
|
]
|
|
6047
6281
|
}
|
|
6048
|
-
)
|
|
6049
|
-
] });
|
|
6050
|
-
if (!isControlled && renderTrigger) {
|
|
6051
|
-
return /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
6052
|
-
renderTrigger({ open: () => setInternalOpen(true) }),
|
|
6053
|
-
mode === "drawer" ? /* @__PURE__ */ jsx34(Drawer, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsx34(DrawerContent, { className: "h-[90vh] p-6", children: content }) }) : /* @__PURE__ */ jsx34(Dialog, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsxs21(DialogContent, { className: "max-w-5xl z-[4600]", children: [
|
|
6054
|
-
/* @__PURE__ */ jsx34(DialogTitle, { className: "sr-only", children: labels.title }),
|
|
6055
|
-
/* @__PURE__ */ jsx34(DialogDescription, { className: "sr-only", children: "Sele\xE7\xE3o e upload de assets com metadados do Telescup." }),
|
|
6056
|
-
content
|
|
6057
|
-
] }) })
|
|
6058
|
-
] });
|
|
6282
|
+
)
|
|
6283
|
+
] });
|
|
6284
|
+
if (!isControlled && renderTrigger) {
|
|
6285
|
+
return /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
6286
|
+
renderTrigger({ open: () => setInternalOpen(true) }),
|
|
6287
|
+
mode === "drawer" ? /* @__PURE__ */ jsx34(Drawer, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsx34(DrawerContent, { className: "h-[90vh] p-6", children: content }) }) : /* @__PURE__ */ jsx34(Dialog, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsxs21(DialogContent, { className: "max-w-5xl z-[4600]", children: [
|
|
6288
|
+
/* @__PURE__ */ jsx34(DialogTitle, { className: "sr-only", children: labels.title }),
|
|
6289
|
+
/* @__PURE__ */ jsx34(DialogDescription, { className: "sr-only", children: "Sele\xE7\xE3o e upload de assets com metadados do Telescup." }),
|
|
6290
|
+
content
|
|
6291
|
+
] }) })
|
|
6292
|
+
] });
|
|
6293
|
+
}
|
|
6294
|
+
if (!isControlled && !renderTrigger) {
|
|
6295
|
+
return /* @__PURE__ */ jsxs21(Fragment3, { children: [
|
|
6296
|
+
/* @__PURE__ */ jsx34(Button, { onClick: () => setInternalOpen(true), children: labels.actions.select }),
|
|
6297
|
+
mode === "drawer" ? /* @__PURE__ */ jsx34(Drawer, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsx34(DrawerContent, { className: "h-[90vh] p-6", children: content }) }) : /* @__PURE__ */ jsx34(Dialog, { open: isOpen, onOpenChange: (next) => !next ? handleClose() : setInternalOpen(next), children: /* @__PURE__ */ jsxs21(DialogContent, { className: "max-w-5xl z-[4600]", children: [
|
|
6298
|
+
/* @__PURE__ */ jsx34(DialogTitle, { className: "sr-only", children: labels.title }),
|
|
6299
|
+
/* @__PURE__ */ jsx34(DialogDescription, { className: "sr-only", children: "Sele\xE7\xE3o e upload de assets com metadados do Telescup." }),
|
|
6300
|
+
content
|
|
6301
|
+
] }) })
|
|
6302
|
+
] });
|
|
6303
|
+
}
|
|
6304
|
+
return mode === "drawer" ? /* @__PURE__ */ jsx34(Drawer, { open: Boolean(open), onOpenChange: (next) => !next ? handleClose() : void 0, children: /* @__PURE__ */ jsx34(DrawerContent, { className: "h-[90vh] p-6", children: content }) }) : /* @__PURE__ */ jsx34(Dialog, { open: Boolean(open), onOpenChange: (next) => !next ? handleClose() : void 0, children: /* @__PURE__ */ jsxs21(DialogContent, { className: "max-w-5xl z-[4600]", children: [
|
|
6305
|
+
/* @__PURE__ */ jsx34(DialogTitle, { className: "sr-only", children: labels.title }),
|
|
6306
|
+
/* @__PURE__ */ jsx34(DialogDescription, { className: "sr-only", children: "Sele\xE7\xE3o e upload de assets com metadados do Telescup." }),
|
|
6307
|
+
content
|
|
6308
|
+
] }) });
|
|
6309
|
+
};
|
|
6310
|
+
|
|
6311
|
+
// src/lib/themePreference.ts
|
|
6312
|
+
var THEME_STORAGE_KEY = "cupcode-theme";
|
|
6313
|
+
var LEGACY_THEME_STORAGE_KEY = "theme";
|
|
6314
|
+
var THEME_PREFERENCE_STORAGE_KEY = "cupcode-theme-preference";
|
|
6315
|
+
var EXPERIENCE_SETTINGS_STORAGE_KEY = "cc_user_menu_experience_settings";
|
|
6316
|
+
var THEME_PREFERENCE_CHANGE_EVENT = "cupcode:theme-preference-change";
|
|
6317
|
+
function isStoredThemeMode(value) {
|
|
6318
|
+
return value === "light" || value === "dark";
|
|
6319
|
+
}
|
|
6320
|
+
function parseStoredThemePreference(value) {
|
|
6321
|
+
return value === "light" || value === "dark" || value === "system" ? value : null;
|
|
6322
|
+
}
|
|
6323
|
+
function normalizeStoredThemePreference(value) {
|
|
6324
|
+
var _a78;
|
|
6325
|
+
return (_a78 = parseStoredThemePreference(value)) != null ? _a78 : "system";
|
|
6326
|
+
}
|
|
6327
|
+
function readStoredThemeMode() {
|
|
6328
|
+
var _a78;
|
|
6329
|
+
if (typeof window === "undefined") return null;
|
|
6330
|
+
try {
|
|
6331
|
+
const storedTheme = (_a78 = window.localStorage.getItem(THEME_STORAGE_KEY)) != null ? _a78 : window.localStorage.getItem(LEGACY_THEME_STORAGE_KEY);
|
|
6332
|
+
return isStoredThemeMode(storedTheme) ? storedTheme : null;
|
|
6333
|
+
} catch (e) {
|
|
6334
|
+
return null;
|
|
6335
|
+
}
|
|
6336
|
+
}
|
|
6337
|
+
function resolveSystemThemeMode() {
|
|
6338
|
+
if (typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
|
6339
|
+
return "dark";
|
|
6340
|
+
}
|
|
6341
|
+
return "light";
|
|
6342
|
+
}
|
|
6343
|
+
function resolveAppliedThemeMode(preference) {
|
|
6344
|
+
return preference === "system" ? resolveSystemThemeMode() : preference;
|
|
6345
|
+
}
|
|
6346
|
+
function readStoredExperienceSettingsRecord() {
|
|
6347
|
+
if (typeof window === "undefined") return null;
|
|
6348
|
+
try {
|
|
6349
|
+
const raw = window.localStorage.getItem(EXPERIENCE_SETTINGS_STORAGE_KEY);
|
|
6350
|
+
if (!raw) return null;
|
|
6351
|
+
const parsed = JSON.parse(raw);
|
|
6352
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
6353
|
+
return null;
|
|
6354
|
+
}
|
|
6355
|
+
return parsed;
|
|
6356
|
+
} catch (e) {
|
|
6357
|
+
return null;
|
|
6358
|
+
}
|
|
6359
|
+
}
|
|
6360
|
+
function persistThemePreferenceSelection(preference) {
|
|
6361
|
+
if (typeof window === "undefined") return;
|
|
6362
|
+
const appliedMode = resolveAppliedThemeMode(preference);
|
|
6363
|
+
try {
|
|
6364
|
+
window.localStorage.setItem(THEME_PREFERENCE_STORAGE_KEY, preference);
|
|
6365
|
+
window.localStorage.setItem(THEME_STORAGE_KEY, appliedMode);
|
|
6366
|
+
window.localStorage.setItem(LEGACY_THEME_STORAGE_KEY, appliedMode);
|
|
6367
|
+
const currentExperienceSettings = readStoredExperienceSettingsRecord();
|
|
6368
|
+
window.localStorage.setItem(
|
|
6369
|
+
EXPERIENCE_SETTINGS_STORAGE_KEY,
|
|
6370
|
+
JSON.stringify({
|
|
6371
|
+
...currentExperienceSettings != null ? currentExperienceSettings : {},
|
|
6372
|
+
theme: preference
|
|
6373
|
+
})
|
|
6374
|
+
);
|
|
6375
|
+
} catch (e) {
|
|
6376
|
+
}
|
|
6377
|
+
window.dispatchEvent(
|
|
6378
|
+
new CustomEvent(THEME_PREFERENCE_CHANGE_EVENT, {
|
|
6379
|
+
detail: {
|
|
6380
|
+
appliedMode,
|
|
6381
|
+
preference
|
|
6382
|
+
}
|
|
6383
|
+
})
|
|
6384
|
+
);
|
|
6385
|
+
}
|
|
6386
|
+
function resolveStoredThemePreference(experienceSettingsTheme) {
|
|
6387
|
+
var _a78;
|
|
6388
|
+
if (typeof window === "undefined") {
|
|
6389
|
+
return normalizeStoredThemePreference(experienceSettingsTheme);
|
|
6059
6390
|
}
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
|
|
6063
|
-
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6391
|
+
try {
|
|
6392
|
+
const storedThemePreference = parseStoredThemePreference(
|
|
6393
|
+
window.localStorage.getItem(THEME_PREFERENCE_STORAGE_KEY)
|
|
6394
|
+
);
|
|
6395
|
+
if (storedThemePreference) {
|
|
6396
|
+
return storedThemePreference;
|
|
6397
|
+
}
|
|
6398
|
+
const parsedExperienceTheme = parseStoredThemePreference(experienceSettingsTheme);
|
|
6399
|
+
const storedThemeMode = readStoredThemeMode();
|
|
6400
|
+
if (parsedExperienceTheme === "system" && storedThemeMode) {
|
|
6401
|
+
return storedThemeMode;
|
|
6402
|
+
}
|
|
6403
|
+
return (_a78 = parsedExperienceTheme != null ? parsedExperienceTheme : storedThemeMode) != null ? _a78 : "system";
|
|
6404
|
+
} catch (e) {
|
|
6405
|
+
return normalizeStoredThemePreference(experienceSettingsTheme);
|
|
6069
6406
|
}
|
|
6070
|
-
|
|
6071
|
-
/* @__PURE__ */ jsx34(DialogTitle, { className: "sr-only", children: labels.title }),
|
|
6072
|
-
/* @__PURE__ */ jsx34(DialogDescription, { className: "sr-only", children: "Sele\xE7\xE3o e upload de assets com metadados do Telescup." }),
|
|
6073
|
-
content
|
|
6074
|
-
] }) });
|
|
6075
|
-
};
|
|
6407
|
+
}
|
|
6076
6408
|
|
|
6077
6409
|
// src/components/cupcode/UserMenuCupcode.tsx
|
|
6078
6410
|
import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
@@ -6163,12 +6495,9 @@ var CHAT_DELETED_PLACEHOLDER_TEXT = "Mensagem deletada";
|
|
|
6163
6495
|
var CHAT_GROUP_PREFIX = "local-group";
|
|
6164
6496
|
var NOTIFICATIONS_VISIBLE_LIMIT = 8;
|
|
6165
6497
|
var CHAT_SETTINGS_STORAGE_KEY = "cc_user_menu_chat_settings";
|
|
6166
|
-
var
|
|
6498
|
+
var EXPERIENCE_SETTINGS_STORAGE_KEY2 = "cc_user_menu_experience_settings";
|
|
6167
6499
|
var NOTIFICATION_PREFERENCES_STORAGE_KEY = "cc_user_menu_notification_preferences";
|
|
6168
6500
|
var INTEGRATION_SETTINGS_STORAGE_KEY = "cc_user_menu_integration_connections";
|
|
6169
|
-
var THEME_PREFERENCE_STORAGE_KEY = "cupcode-theme-preference";
|
|
6170
|
-
var THEME_STORAGE_KEY = "cupcode-theme";
|
|
6171
|
-
var LEGACY_THEME_STORAGE_KEY = "theme";
|
|
6172
6501
|
var SHARED_FILE_URL_REGEX = /https?:\/\/[^\s]+/gi;
|
|
6173
6502
|
var SHARED_FILE_EXTENSIONS = [
|
|
6174
6503
|
".pdf",
|
|
@@ -6345,12 +6674,6 @@ var defaultExperienceSettings = () => ({
|
|
|
6345
6674
|
contrast: "normal",
|
|
6346
6675
|
showEmailPublicly: true
|
|
6347
6676
|
});
|
|
6348
|
-
var normalizeThemePreference = (value) => {
|
|
6349
|
-
const normalized = value == null ? void 0 : value.trim().toLowerCase();
|
|
6350
|
-
if (normalized === "light") return "light";
|
|
6351
|
-
if (normalized === "dark") return "dark";
|
|
6352
|
-
return "system";
|
|
6353
|
-
};
|
|
6354
6677
|
var normalizeDensityMode = (value) => {
|
|
6355
6678
|
return (value == null ? void 0 : value.trim().toLowerCase()) === "comfortable" ? "comfortable" : "compact";
|
|
6356
6679
|
};
|
|
@@ -6358,16 +6681,13 @@ var normalizeContrastMode = (value) => {
|
|
|
6358
6681
|
return (value == null ? void 0 : value.trim().toLowerCase()) === "high" ? "high" : "normal";
|
|
6359
6682
|
};
|
|
6360
6683
|
var readStoredExperienceSettings = () => {
|
|
6361
|
-
var _a78, _b7, _c;
|
|
6362
6684
|
const fallback = defaultExperienceSettings();
|
|
6363
6685
|
if (typeof window === "undefined") return fallback;
|
|
6364
6686
|
try {
|
|
6365
|
-
const raw = window.localStorage.getItem(
|
|
6687
|
+
const raw = window.localStorage.getItem(EXPERIENCE_SETTINGS_STORAGE_KEY2);
|
|
6366
6688
|
const parsed = raw ? JSON.parse(raw) : null;
|
|
6367
|
-
const storedThemePreference = window.localStorage.getItem(THEME_PREFERENCE_STORAGE_KEY);
|
|
6368
|
-
const legacyTheme = (_a78 = window.localStorage.getItem(THEME_STORAGE_KEY)) != null ? _a78 : window.localStorage.getItem(LEGACY_THEME_STORAGE_KEY);
|
|
6369
6689
|
return {
|
|
6370
|
-
theme:
|
|
6690
|
+
theme: resolveStoredThemePreference(parsed == null ? void 0 : parsed.theme),
|
|
6371
6691
|
density: normalizeDensityMode(parsed == null ? void 0 : parsed.density),
|
|
6372
6692
|
contrast: normalizeContrastMode(parsed == null ? void 0 : parsed.contrast),
|
|
6373
6693
|
showEmailPublicly: typeof (parsed == null ? void 0 : parsed.showEmailPublicly) === "boolean" ? parsed.showEmailPublicly : fallback.showEmailPublicly
|
|
@@ -6379,7 +6699,7 @@ var readStoredExperienceSettings = () => {
|
|
|
6379
6699
|
var persistExperienceSettings = (settings) => {
|
|
6380
6700
|
if (typeof window === "undefined") return;
|
|
6381
6701
|
try {
|
|
6382
|
-
window.localStorage.setItem(
|
|
6702
|
+
window.localStorage.setItem(EXPERIENCE_SETTINGS_STORAGE_KEY2, JSON.stringify(settings));
|
|
6383
6703
|
} catch (e) {
|
|
6384
6704
|
}
|
|
6385
6705
|
};
|
|
@@ -6411,15 +6731,6 @@ var persistIntegrationConnections = (connections) => {
|
|
|
6411
6731
|
} catch (e) {
|
|
6412
6732
|
}
|
|
6413
6733
|
};
|
|
6414
|
-
var resolveSystemThemeMode = () => {
|
|
6415
|
-
if (typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches) {
|
|
6416
|
-
return "dark";
|
|
6417
|
-
}
|
|
6418
|
-
return "light";
|
|
6419
|
-
};
|
|
6420
|
-
var resolveAppliedThemeMode = (preference) => {
|
|
6421
|
-
return preference === "system" ? resolveSystemThemeMode() : preference;
|
|
6422
|
-
};
|
|
6423
6734
|
var applyThemePreference = (preference) => {
|
|
6424
6735
|
if (typeof document === "undefined") return;
|
|
6425
6736
|
const root = document.documentElement;
|
|
@@ -6429,13 +6740,7 @@ var applyThemePreference = (preference) => {
|
|
|
6429
6740
|
root.dataset.theme = appliedMode;
|
|
6430
6741
|
root.dataset.cupcodeTheme = preference;
|
|
6431
6742
|
root.style.colorScheme = appliedMode;
|
|
6432
|
-
|
|
6433
|
-
try {
|
|
6434
|
-
window.localStorage.setItem(THEME_PREFERENCE_STORAGE_KEY, preference);
|
|
6435
|
-
window.localStorage.setItem(THEME_STORAGE_KEY, appliedMode);
|
|
6436
|
-
window.localStorage.setItem(LEGACY_THEME_STORAGE_KEY, appliedMode);
|
|
6437
|
-
} catch (e) {
|
|
6438
|
-
}
|
|
6743
|
+
persistThemePreferenceSelection(preference);
|
|
6439
6744
|
};
|
|
6440
6745
|
var applyAccessibilityAttributes = (settings) => {
|
|
6441
6746
|
if (typeof document === "undefined") return;
|
|
@@ -7240,6 +7545,17 @@ var UserMenuCupcode = ({
|
|
|
7240
7545
|
useEffect12(() => {
|
|
7241
7546
|
applyThemePreference(experienceSettings.theme);
|
|
7242
7547
|
}, [experienceSettings.theme]);
|
|
7548
|
+
useEffect12(() => {
|
|
7549
|
+
if (typeof window === "undefined") return;
|
|
7550
|
+
const syncThemePreference = () => {
|
|
7551
|
+
const nextThemePreference = resolveStoredThemePreference();
|
|
7552
|
+
setExperienceSettings(
|
|
7553
|
+
(current) => current.theme === nextThemePreference ? current : { ...current, theme: nextThemePreference }
|
|
7554
|
+
);
|
|
7555
|
+
};
|
|
7556
|
+
window.addEventListener(THEME_PREFERENCE_CHANGE_EVENT, syncThemePreference);
|
|
7557
|
+
return () => window.removeEventListener(THEME_PREFERENCE_CHANGE_EVENT, syncThemePreference);
|
|
7558
|
+
}, []);
|
|
7243
7559
|
useEffect12(() => {
|
|
7244
7560
|
applyAccessibilityAttributes(experienceSettings);
|
|
7245
7561
|
}, [experienceSettings]);
|
|
@@ -21946,13 +22262,15 @@ function ThemeToggle({ className }) {
|
|
|
21946
22262
|
/* @__PURE__ */ jsx38("style", { children: `
|
|
21947
22263
|
:root {
|
|
21948
22264
|
--toggle-width: 76px;
|
|
21949
|
-
--toggle-height:
|
|
22265
|
+
--toggle-height: 38px;
|
|
21950
22266
|
--thumb-size: 30px;
|
|
21951
22267
|
--toggle-thumb-offset: 34px;
|
|
21952
22268
|
--duration: 560ms;
|
|
21953
22269
|
--ease: cubic-bezier(0.22, 1, 0.36, 1);
|
|
21954
22270
|
--dark-top: #7c5bbb;
|
|
21955
22271
|
--dark-bottom: #3a2a58;
|
|
22272
|
+
--toggle-track-alpha-light: 0.88;
|
|
22273
|
+
--toggle-track-alpha-dark: 0.82;
|
|
21956
22274
|
}
|
|
21957
22275
|
|
|
21958
22276
|
.cc-theme-toggle {
|
|
@@ -21972,7 +22290,12 @@ function ThemeToggle({ className }) {
|
|
|
21972
22290
|
height: var(--toggle-height);
|
|
21973
22291
|
border-radius: 999px;
|
|
21974
22292
|
overflow: hidden;
|
|
21975
|
-
background: linear-gradient(
|
|
22293
|
+
background: linear-gradient(
|
|
22294
|
+
180deg,
|
|
22295
|
+
rgba(247, 246, 251, var(--toggle-track-alpha-light)) 0%,
|
|
22296
|
+
rgba(241, 237, 249, var(--toggle-track-alpha-light)) 55%,
|
|
22297
|
+
rgba(230, 222, 245, var(--toggle-track-alpha-light)) 100%
|
|
22298
|
+
);
|
|
21976
22299
|
box-shadow:
|
|
21977
22300
|
inset 0 1px 0 rgba(255, 255, 255, 0.92),
|
|
21978
22301
|
inset 0 0 0 1px rgba(232, 219, 255, 0.85),
|
|
@@ -22086,7 +22409,11 @@ function ThemeToggle({ className }) {
|
|
|
22086
22409
|
}
|
|
22087
22410
|
|
|
22088
22411
|
.cc-theme-toggle.is-dark .track {
|
|
22089
|
-
background: linear-gradient(
|
|
22412
|
+
background: linear-gradient(
|
|
22413
|
+
180deg,
|
|
22414
|
+
rgba(124, 91, 187, var(--toggle-track-alpha-dark)) 0%,
|
|
22415
|
+
rgba(58, 42, 88, var(--toggle-track-alpha-dark)) 100%
|
|
22416
|
+
);
|
|
22090
22417
|
box-shadow:
|
|
22091
22418
|
inset 0 2px 8px rgba(255, 255, 255, 0.06),
|
|
22092
22419
|
inset 0 -4px 12px rgba(0, 0, 0, 0.28),
|
|
@@ -22101,7 +22428,7 @@ function ThemeToggle({ className }) {
|
|
|
22101
22428
|
|
|
22102
22429
|
.cc-theme-toggle .thumb {
|
|
22103
22430
|
position: absolute;
|
|
22104
|
-
top:
|
|
22431
|
+
top: 4px;
|
|
22105
22432
|
left: 6px;
|
|
22106
22433
|
width: var(--thumb-size);
|
|
22107
22434
|
height: var(--thumb-size);
|
|
@@ -25456,7 +25783,6 @@ function ParticleSystem({
|
|
|
25456
25783
|
canvas.height = canvas.offsetHeight;
|
|
25457
25784
|
};
|
|
25458
25785
|
resizeCanvas();
|
|
25459
|
-
window.addEventListener("resize", resizeCanvas);
|
|
25460
25786
|
const particles = [];
|
|
25461
25787
|
for (let i = 0; i < count2; i++) {
|
|
25462
25788
|
particles.push({
|
|
@@ -25468,16 +25794,17 @@ function ParticleSystem({
|
|
|
25468
25794
|
opacity: Math.random() * 0.5 + 0.5
|
|
25469
25795
|
});
|
|
25470
25796
|
}
|
|
25471
|
-
|
|
25472
|
-
|
|
25797
|
+
const drawFrame = () => {
|
|
25798
|
+
const width = canvas.width;
|
|
25799
|
+
const height = canvas.height;
|
|
25473
25800
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
25474
25801
|
particles.forEach((particle) => {
|
|
25475
25802
|
particle.x += particle.speedX;
|
|
25476
25803
|
particle.y += particle.speedY;
|
|
25477
|
-
if (particle.x < 0) particle.x =
|
|
25478
|
-
if (particle.x >
|
|
25479
|
-
if (particle.y < 0) particle.y =
|
|
25480
|
-
if (particle.y >
|
|
25804
|
+
if (particle.x < 0) particle.x = width;
|
|
25805
|
+
if (particle.x > width) particle.x = 0;
|
|
25806
|
+
if (particle.y < 0) particle.y = height;
|
|
25807
|
+
if (particle.y > height) particle.y = 0;
|
|
25481
25808
|
if (variant === "stars") {
|
|
25482
25809
|
ctx.fillStyle = `rgba(151, 90, 182, ${particle.opacity})`;
|
|
25483
25810
|
ctx.beginPath();
|
|
@@ -25503,12 +25830,98 @@ function ParticleSystem({
|
|
|
25503
25830
|
ctx.stroke();
|
|
25504
25831
|
}
|
|
25505
25832
|
});
|
|
25833
|
+
};
|
|
25834
|
+
let animationId = 0;
|
|
25835
|
+
let running = false;
|
|
25836
|
+
let isVisible = false;
|
|
25837
|
+
let lastFrameTime = 0;
|
|
25838
|
+
const minFrameMs = variant === "comets" ? 32 : 24;
|
|
25839
|
+
const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
25840
|
+
const canAnimate = () => isVisible && !document.hidden && !prefersReducedMotion.matches;
|
|
25841
|
+
const animate = (timestamp) => {
|
|
25842
|
+
if (!running) return;
|
|
25843
|
+
if (timestamp - lastFrameTime >= minFrameMs) {
|
|
25844
|
+
lastFrameTime = timestamp;
|
|
25845
|
+
drawFrame();
|
|
25846
|
+
}
|
|
25506
25847
|
animationId = requestAnimationFrame(animate);
|
|
25507
25848
|
};
|
|
25508
|
-
|
|
25849
|
+
const stop = () => {
|
|
25850
|
+
running = false;
|
|
25851
|
+
if (animationId) {
|
|
25852
|
+
cancelAnimationFrame(animationId);
|
|
25853
|
+
animationId = 0;
|
|
25854
|
+
}
|
|
25855
|
+
};
|
|
25856
|
+
const start = () => {
|
|
25857
|
+
if (running || !canAnimate()) return;
|
|
25858
|
+
running = true;
|
|
25859
|
+
lastFrameTime = 0;
|
|
25860
|
+
animationId = requestAnimationFrame(animate);
|
|
25861
|
+
};
|
|
25862
|
+
const onDocumentVisibilityChange = () => {
|
|
25863
|
+
if (canAnimate()) {
|
|
25864
|
+
start();
|
|
25865
|
+
} else {
|
|
25866
|
+
stop();
|
|
25867
|
+
}
|
|
25868
|
+
};
|
|
25869
|
+
const onReducedMotionChange = () => {
|
|
25870
|
+
if (canAnimate()) {
|
|
25871
|
+
start();
|
|
25872
|
+
} else {
|
|
25873
|
+
stop();
|
|
25874
|
+
}
|
|
25875
|
+
};
|
|
25876
|
+
const onResize = () => {
|
|
25877
|
+
resizeCanvas();
|
|
25878
|
+
if (!running) {
|
|
25879
|
+
drawFrame();
|
|
25880
|
+
}
|
|
25881
|
+
};
|
|
25882
|
+
const observer = typeof IntersectionObserver === "undefined" ? null : new IntersectionObserver(
|
|
25883
|
+
(entries) => {
|
|
25884
|
+
const entry = entries[0];
|
|
25885
|
+
isVisible = Boolean(entry == null ? void 0 : entry.isIntersecting);
|
|
25886
|
+
if (canAnimate()) {
|
|
25887
|
+
start();
|
|
25888
|
+
} else {
|
|
25889
|
+
stop();
|
|
25890
|
+
}
|
|
25891
|
+
},
|
|
25892
|
+
{
|
|
25893
|
+
root: null,
|
|
25894
|
+
threshold: 0.01,
|
|
25895
|
+
rootMargin: "200px 0px"
|
|
25896
|
+
}
|
|
25897
|
+
);
|
|
25898
|
+
const rect = canvas.getBoundingClientRect();
|
|
25899
|
+
isVisible = rect.bottom >= -200 && rect.top <= window.innerHeight + 200;
|
|
25900
|
+
if (observer) {
|
|
25901
|
+
observer.observe(canvas);
|
|
25902
|
+
}
|
|
25903
|
+
window.addEventListener("resize", onResize);
|
|
25904
|
+
document.addEventListener("visibilitychange", onDocumentVisibilityChange);
|
|
25905
|
+
if (typeof prefersReducedMotion.addEventListener === "function") {
|
|
25906
|
+
prefersReducedMotion.addEventListener("change", onReducedMotionChange);
|
|
25907
|
+
} else {
|
|
25908
|
+
prefersReducedMotion.addListener(onReducedMotionChange);
|
|
25909
|
+
}
|
|
25910
|
+
if (canAnimate()) {
|
|
25911
|
+
start();
|
|
25912
|
+
} else {
|
|
25913
|
+
drawFrame();
|
|
25914
|
+
}
|
|
25509
25915
|
return () => {
|
|
25510
|
-
window.removeEventListener("resize",
|
|
25511
|
-
|
|
25916
|
+
window.removeEventListener("resize", onResize);
|
|
25917
|
+
document.removeEventListener("visibilitychange", onDocumentVisibilityChange);
|
|
25918
|
+
if (typeof prefersReducedMotion.removeEventListener === "function") {
|
|
25919
|
+
prefersReducedMotion.removeEventListener("change", onReducedMotionChange);
|
|
25920
|
+
} else {
|
|
25921
|
+
prefersReducedMotion.removeListener(onReducedMotionChange);
|
|
25922
|
+
}
|
|
25923
|
+
observer == null ? void 0 : observer.disconnect();
|
|
25924
|
+
stop();
|
|
25512
25925
|
};
|
|
25513
25926
|
}, [count2, variant]);
|
|
25514
25927
|
return /* @__PURE__ */ jsx49(
|
|
@@ -25928,10 +26341,25 @@ var TextareaField = React32.forwardRef(
|
|
|
25928
26341
|
);
|
|
25929
26342
|
TextareaField.displayName = "TextareaField";
|
|
25930
26343
|
|
|
26344
|
+
// src/components/cupcode/ThemeBackground.tsx
|
|
26345
|
+
import { Suspense, lazy } from "react";
|
|
26346
|
+
import { jsx as jsx57 } from "react/jsx-runtime";
|
|
26347
|
+
var BackgroundRainbow2 = lazy(
|
|
26348
|
+
() => Promise.resolve().then(() => (init_BackgroundRainbow(), BackgroundRainbow_exports)).then((module) => ({ default: module.BackgroundRainbow }))
|
|
26349
|
+
);
|
|
26350
|
+
var BackgroundStars2 = lazy(
|
|
26351
|
+
() => Promise.resolve().then(() => (init_BackgroundStars(), BackgroundStars_exports)).then((module) => ({ default: module.BackgroundStars }))
|
|
26352
|
+
);
|
|
26353
|
+
var ThemeBackground = ({ enableStars = true }) => {
|
|
26354
|
+
const { theme } = useAppTheme();
|
|
26355
|
+
const isDark = theme === "dark";
|
|
26356
|
+
return /* @__PURE__ */ jsx57(Suspense, { fallback: null, children: isDark ? enableStars ? /* @__PURE__ */ jsx57(BackgroundStars2, {}) : null : /* @__PURE__ */ jsx57(BackgroundRainbow2, {}) });
|
|
26357
|
+
};
|
|
26358
|
+
|
|
25931
26359
|
// src/components/cupcode/ThemeToggle.tsx
|
|
25932
26360
|
import * as React33 from "react";
|
|
25933
26361
|
import { Moon as Moon2, Sun as Sun2 } from "lucide-react";
|
|
25934
|
-
import { jsx as
|
|
26362
|
+
import { jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
25935
26363
|
var THEME_STORAGE_KEY2 = "cupcode-theme";
|
|
25936
26364
|
function isThemeMode(value) {
|
|
25937
26365
|
return value === "light" || value === "dark";
|
|
@@ -25990,35 +26418,48 @@ var ThemeToggle2 = ({
|
|
|
25990
26418
|
onThemeChange
|
|
25991
26419
|
}) => {
|
|
25992
26420
|
var _a78;
|
|
26421
|
+
const themeContext = React33.useContext(ThemeContext);
|
|
25993
26422
|
const [mounted, setMounted] = React33.useState(false);
|
|
25994
26423
|
const [internalTheme, setInternalTheme] = React33.useState(defaultTheme);
|
|
25995
26424
|
const isControlled = typeof theme !== "undefined";
|
|
25996
|
-
const
|
|
26425
|
+
const usesProviderTheme = !isControlled && themeContext !== null;
|
|
26426
|
+
const activeTheme = (_a78 = isControlled ? theme : usesProviderTheme ? themeContext.theme : internalTheme) != null ? _a78 : defaultTheme;
|
|
25997
26427
|
React33.useEffect(() => {
|
|
25998
|
-
if (!isControlled) {
|
|
26428
|
+
if (!isControlled && !usesProviderTheme) {
|
|
25999
26429
|
setInternalTheme(resolveTheme(defaultTheme));
|
|
26000
26430
|
}
|
|
26001
26431
|
setMounted(true);
|
|
26002
|
-
}, [defaultTheme, isControlled]);
|
|
26432
|
+
}, [defaultTheme, isControlled, usesProviderTheme]);
|
|
26003
26433
|
React33.useEffect(() => {
|
|
26004
|
-
if (!mounted) return;
|
|
26434
|
+
if (!mounted || usesProviderTheme) return;
|
|
26005
26435
|
applyThemeClass(activeTheme);
|
|
26006
26436
|
writeStoredTheme(activeTheme);
|
|
26007
|
-
}, [activeTheme, mounted]);
|
|
26437
|
+
}, [activeTheme, mounted, usesProviderTheme]);
|
|
26008
26438
|
React33.useEffect(() => {
|
|
26009
|
-
if (isControlled || typeof document === "undefined") return;
|
|
26439
|
+
if (isControlled || usesProviderTheme || typeof document === "undefined") return;
|
|
26010
26440
|
const observer = new MutationObserver(() => {
|
|
26011
26441
|
const resolvedTheme = resolveTheme(defaultTheme);
|
|
26012
26442
|
setInternalTheme((currentTheme) => currentTheme === resolvedTheme ? currentTheme : resolvedTheme);
|
|
26013
26443
|
});
|
|
26014
26444
|
observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class", "data-theme"] });
|
|
26015
26445
|
return () => observer.disconnect();
|
|
26016
|
-
}, [defaultTheme, isControlled]);
|
|
26446
|
+
}, [defaultTheme, isControlled, usesProviderTheme]);
|
|
26017
26447
|
if (!mounted) {
|
|
26018
|
-
return /* @__PURE__ */
|
|
26448
|
+
return /* @__PURE__ */ jsx58("div", { className: cn("w-10 h-10 rounded-lg bg-muted", className) });
|
|
26019
26449
|
}
|
|
26020
|
-
const handleToggle = () => {
|
|
26021
|
-
|
|
26450
|
+
const handleToggle = (event) => {
|
|
26451
|
+
var _a79;
|
|
26452
|
+
const currentTheme = (_a79 = readThemeFromRoot()) != null ? _a79 : activeTheme;
|
|
26453
|
+
const nextTheme = currentTheme === "dark" ? "light" : "dark";
|
|
26454
|
+
if (usesProviderTheme) {
|
|
26455
|
+
themeContext.toggleTheme({
|
|
26456
|
+
x: event.clientX,
|
|
26457
|
+
y: event.clientY
|
|
26458
|
+
});
|
|
26459
|
+
onThemeChange == null ? void 0 : onThemeChange(nextTheme);
|
|
26460
|
+
return;
|
|
26461
|
+
}
|
|
26462
|
+
persistThemePreferenceSelection(nextTheme);
|
|
26022
26463
|
if (!isControlled) {
|
|
26023
26464
|
setInternalTheme(nextTheme);
|
|
26024
26465
|
}
|
|
@@ -26038,8 +26479,8 @@ var ThemeToggle2 = ({
|
|
|
26038
26479
|
),
|
|
26039
26480
|
"aria-label": "Toggle theme",
|
|
26040
26481
|
children: [
|
|
26041
|
-
/* @__PURE__ */
|
|
26042
|
-
/* @__PURE__ */
|
|
26482
|
+
/* @__PURE__ */ jsx58(Sun2, { className: "h-5 w-5 text-cupcode-purple rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" }),
|
|
26483
|
+
/* @__PURE__ */ jsx58(Moon2, { className: "absolute h-5 w-5 text-cupcode-hover rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" }),
|
|
26043
26484
|
/* @__PURE__ */ jsxs37("span", { className: "sr-only", children: [
|
|
26044
26485
|
"Current theme: ",
|
|
26045
26486
|
activeTheme
|
|
@@ -26050,14 +26491,9 @@ var ThemeToggle2 = ({
|
|
|
26050
26491
|
};
|
|
26051
26492
|
|
|
26052
26493
|
// src/components/theme-provider.tsx
|
|
26053
|
-
import {
|
|
26054
|
-
useCallback as useCallback8,
|
|
26055
|
-
useEffect as useEffect20,
|
|
26056
|
-
useMemo as useMemo12,
|
|
26057
|
-
useState as useState17
|
|
26058
|
-
} from "react";
|
|
26494
|
+
import { useCallback as useCallback8, useEffect as useEffect20, useMemo as useMemo12, useState as useState17 } from "react";
|
|
26059
26495
|
import { flushSync } from "react-dom";
|
|
26060
|
-
import { jsx as
|
|
26496
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
26061
26497
|
var STORAGE_KEY2 = "cupcode-theme";
|
|
26062
26498
|
var LEGACY_STORAGE_KEY = "theme";
|
|
26063
26499
|
function getPreferredTheme() {
|
|
@@ -26119,8 +26555,14 @@ function ThemeProvider({ children }) {
|
|
|
26119
26555
|
if (!mounted) {
|
|
26120
26556
|
return;
|
|
26121
26557
|
}
|
|
26122
|
-
|
|
26123
|
-
|
|
26558
|
+
const rootTheme = getThemeFromRoot();
|
|
26559
|
+
if (rootTheme !== theme) {
|
|
26560
|
+
applyThemeToRoot(theme);
|
|
26561
|
+
}
|
|
26562
|
+
const storedTheme = getStoredTheme();
|
|
26563
|
+
if (storedTheme !== theme) {
|
|
26564
|
+
persistTheme(theme);
|
|
26565
|
+
}
|
|
26124
26566
|
}, [mounted, theme]);
|
|
26125
26567
|
useEffect20(() => {
|
|
26126
26568
|
if (typeof window === "undefined") {
|
|
@@ -26156,35 +26598,47 @@ function ThemeProvider({ children }) {
|
|
|
26156
26598
|
});
|
|
26157
26599
|
return () => observer.disconnect();
|
|
26158
26600
|
}, []);
|
|
26159
|
-
const
|
|
26160
|
-
setThemeState(nextTheme);
|
|
26161
|
-
}, []);
|
|
26162
|
-
const toggleTheme = useCallback8((coords) => {
|
|
26601
|
+
const applyThemeSelection = useCallback8((nextTheme, coords) => {
|
|
26163
26602
|
var _a78;
|
|
26164
26603
|
const documentWithTransition = document;
|
|
26604
|
+
const root = document.documentElement;
|
|
26165
26605
|
const prefersReducedMotion = window.matchMedia(
|
|
26166
26606
|
"(prefers-reduced-motion: reduce)"
|
|
26167
26607
|
).matches;
|
|
26168
26608
|
const supportsTransition = typeof documentWithTransition.startViewTransition === "function";
|
|
26169
|
-
const
|
|
26609
|
+
const commitTheme = () => {
|
|
26610
|
+
applyThemeToRoot(nextTheme);
|
|
26611
|
+
persistThemePreferenceSelection(nextTheme);
|
|
26170
26612
|
setThemeState(
|
|
26171
|
-
(currentTheme) => currentTheme ===
|
|
26613
|
+
(currentTheme) => currentTheme === nextTheme ? currentTheme : nextTheme
|
|
26172
26614
|
);
|
|
26173
26615
|
};
|
|
26174
|
-
if (coords) {
|
|
26175
|
-
document.documentElement.style.setProperty("--theme-x", `${coords.x}px`);
|
|
26176
|
-
document.documentElement.style.setProperty("--theme-y", `${coords.y}px`);
|
|
26177
|
-
}
|
|
26178
26616
|
if (!supportsTransition || prefersReducedMotion) {
|
|
26179
|
-
|
|
26617
|
+
commitTheme();
|
|
26180
26618
|
return;
|
|
26181
26619
|
}
|
|
26620
|
+
if (coords) {
|
|
26621
|
+
root.style.setProperty("--theme-x", `${coords.x}px`);
|
|
26622
|
+
root.style.setProperty("--theme-y", `${coords.y}px`);
|
|
26623
|
+
} else {
|
|
26624
|
+
root.style.setProperty("--theme-x", "50%");
|
|
26625
|
+
root.style.setProperty("--theme-y", "50%");
|
|
26626
|
+
}
|
|
26182
26627
|
(_a78 = documentWithTransition.startViewTransition) == null ? void 0 : _a78.call(documentWithTransition, () => {
|
|
26183
26628
|
flushSync(() => {
|
|
26184
|
-
|
|
26629
|
+
commitTheme();
|
|
26185
26630
|
});
|
|
26186
26631
|
});
|
|
26187
26632
|
}, []);
|
|
26633
|
+
const setTheme = useCallback8((nextTheme) => {
|
|
26634
|
+
applyThemeSelection(nextTheme);
|
|
26635
|
+
}, [applyThemeSelection]);
|
|
26636
|
+
const toggleTheme = useCallback8((coords) => {
|
|
26637
|
+
var _a78;
|
|
26638
|
+
const currentTheme = (_a78 = getThemeFromRoot()) != null ? _a78 : theme;
|
|
26639
|
+
const nextTheme = currentTheme === "light" ? "dark" : "light";
|
|
26640
|
+
applyThemeSelection(nextTheme, coords);
|
|
26641
|
+
}, [applyThemeSelection, theme]);
|
|
26188
26642
|
const value = useMemo12(
|
|
26189
26643
|
() => ({
|
|
26190
26644
|
theme,
|
|
@@ -26193,7 +26647,7 @@ function ThemeProvider({ children }) {
|
|
|
26193
26647
|
}),
|
|
26194
26648
|
[theme, setTheme, toggleTheme]
|
|
26195
26649
|
);
|
|
26196
|
-
return /* @__PURE__ */
|
|
26650
|
+
return /* @__PURE__ */ jsx59(ThemeContext.Provider, { value, children });
|
|
26197
26651
|
}
|
|
26198
26652
|
function ThemeScript() {
|
|
26199
26653
|
const script = `
|
|
@@ -26214,15 +26668,15 @@ function ThemeScript() {
|
|
|
26214
26668
|
root.style.colorScheme = theme;
|
|
26215
26669
|
})();
|
|
26216
26670
|
`;
|
|
26217
|
-
return /* @__PURE__ */
|
|
26671
|
+
return /* @__PURE__ */ jsx59("script", { dangerouslySetInnerHTML: { __html: script } });
|
|
26218
26672
|
}
|
|
26219
26673
|
|
|
26220
26674
|
// src/components/cupcode/TimelineCupcode.tsx
|
|
26221
|
-
import { jsx as
|
|
26675
|
+
import { jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
26222
26676
|
function Timeline({ items, variant = "vertical", className }) {
|
|
26223
26677
|
if (variant === "horizontal") {
|
|
26224
|
-
return /* @__PURE__ */
|
|
26225
|
-
/* @__PURE__ */
|
|
26678
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("flex items-start gap-4 overflow-x-auto pb-4", className), children: items.map((item, index) => /* @__PURE__ */ jsxs38("div", { className: "flex flex-col items-center min-w-[200px]", children: [
|
|
26679
|
+
/* @__PURE__ */ jsx60(
|
|
26226
26680
|
"div",
|
|
26227
26681
|
{
|
|
26228
26682
|
className: cn(
|
|
@@ -26230,27 +26684,27 @@ function Timeline({ items, variant = "vertical", className }) {
|
|
|
26230
26684
|
"transition-all duration-300",
|
|
26231
26685
|
item.active ? "cc-gradient-galaxy text-white elevation-3 scale-110" : "bg-muted text-muted-foreground"
|
|
26232
26686
|
),
|
|
26233
|
-
children: item.icon || /* @__PURE__ */
|
|
26687
|
+
children: item.icon || /* @__PURE__ */ jsx60("span", { className: "text-sm font-bold", children: index + 1 })
|
|
26234
26688
|
}
|
|
26235
26689
|
),
|
|
26236
|
-
index < items.length - 1 && /* @__PURE__ */
|
|
26690
|
+
index < items.length - 1 && /* @__PURE__ */ jsx60("div", { className: cn(
|
|
26237
26691
|
"h-1 w-full mb-3",
|
|
26238
26692
|
item.active ? "bg-cupcode-purple" : "bg-muted"
|
|
26239
26693
|
) }),
|
|
26240
26694
|
/* @__PURE__ */ jsxs38("div", { className: "text-center", children: [
|
|
26241
|
-
/* @__PURE__ */
|
|
26695
|
+
/* @__PURE__ */ jsx60("h4", { className: cn(
|
|
26242
26696
|
"font-display font-semibold mb-1",
|
|
26243
26697
|
item.active ? "text-cupcode-purple" : "text-foreground"
|
|
26244
26698
|
), children: item.title }),
|
|
26245
|
-
item.description && /* @__PURE__ */
|
|
26246
|
-
item.date && /* @__PURE__ */
|
|
26699
|
+
item.description && /* @__PURE__ */ jsx60("p", { className: "text-sm text-muted-foreground", children: item.description }),
|
|
26700
|
+
item.date && /* @__PURE__ */ jsx60("p", { className: "text-xs text-muted-foreground mt-1", children: item.date })
|
|
26247
26701
|
] })
|
|
26248
26702
|
] }, item.id)) });
|
|
26249
26703
|
}
|
|
26250
26704
|
return /* @__PURE__ */ jsxs38("div", { className: cn("relative space-6", className), children: [
|
|
26251
|
-
/* @__PURE__ */
|
|
26705
|
+
/* @__PURE__ */ jsx60("div", { className: "absolute left-6 top-0 bottom-0 w-0.5 bg-muted" }),
|
|
26252
26706
|
items.map((item, index) => /* @__PURE__ */ jsxs38("div", { className: "relative flex gap-6 pb-8 last:pb-0", children: [
|
|
26253
|
-
/* @__PURE__ */
|
|
26707
|
+
/* @__PURE__ */ jsx60(
|
|
26254
26708
|
"div",
|
|
26255
26709
|
{
|
|
26256
26710
|
className: cn(
|
|
@@ -26258,16 +26712,16 @@ function Timeline({ items, variant = "vertical", className }) {
|
|
|
26258
26712
|
"transition-all duration-300",
|
|
26259
26713
|
item.active ? "cc-gradient-galaxy text-white elevation-3" : "bg-muted text-muted-foreground"
|
|
26260
26714
|
),
|
|
26261
|
-
children: item.icon || /* @__PURE__ */
|
|
26715
|
+
children: item.icon || /* @__PURE__ */ jsx60("span", { className: "text-sm font-bold", children: index + 1 })
|
|
26262
26716
|
}
|
|
26263
26717
|
),
|
|
26264
26718
|
/* @__PURE__ */ jsxs38("div", { className: "flex-1 pt-1", children: [
|
|
26265
|
-
/* @__PURE__ */
|
|
26719
|
+
/* @__PURE__ */ jsx60("h4", { className: cn(
|
|
26266
26720
|
"font-display font-semibold mb-1",
|
|
26267
26721
|
item.active ? "text-cupcode-purple" : "text-foreground"
|
|
26268
26722
|
), children: item.title }),
|
|
26269
|
-
item.description && /* @__PURE__ */
|
|
26270
|
-
item.date && /* @__PURE__ */
|
|
26723
|
+
item.description && /* @__PURE__ */ jsx60("p", { className: "text-sm text-muted-foreground mb-2", children: item.description }),
|
|
26724
|
+
item.date && /* @__PURE__ */ jsx60("p", { className: "text-xs text-muted-foreground", children: item.date })
|
|
26271
26725
|
] })
|
|
26272
26726
|
] }, item.id))
|
|
26273
26727
|
] });
|
|
@@ -26275,7 +26729,7 @@ function Timeline({ items, variant = "vertical", className }) {
|
|
|
26275
26729
|
|
|
26276
26730
|
// src/components/cupcode/ToastCupcode.tsx
|
|
26277
26731
|
import { X as X6, CheckCircle, AlertCircle, Info as Info2, AlertTriangle as AlertTriangle2 } from "lucide-react";
|
|
26278
|
-
import { jsx as
|
|
26732
|
+
import { jsx as jsx61, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
26279
26733
|
var variantStyles2 = {
|
|
26280
26734
|
success: {
|
|
26281
26735
|
gradient: "from-success/20 to-success/5",
|
|
@@ -26310,7 +26764,7 @@ var ToastCupcode = ({
|
|
|
26310
26764
|
}) => {
|
|
26311
26765
|
const style = variantStyles2[variant];
|
|
26312
26766
|
const Icon3 = style.icon;
|
|
26313
|
-
return /* @__PURE__ */
|
|
26767
|
+
return /* @__PURE__ */ jsx61(
|
|
26314
26768
|
"div",
|
|
26315
26769
|
{
|
|
26316
26770
|
className: cn(
|
|
@@ -26323,17 +26777,17 @@ var ToastCupcode = ({
|
|
|
26323
26777
|
"animate-slide-up"
|
|
26324
26778
|
),
|
|
26325
26779
|
children: /* @__PURE__ */ jsxs39("div", { className: "flex items-start gap-3", children: [
|
|
26326
|
-
/* @__PURE__ */
|
|
26780
|
+
/* @__PURE__ */ jsx61(Icon3, { className: cn("h-5 w-5 shrink-0 mt-0.5", style.iconColor) }),
|
|
26327
26781
|
/* @__PURE__ */ jsxs39("div", { className: "flex-1 space-y-1", children: [
|
|
26328
|
-
/* @__PURE__ */
|
|
26329
|
-
description && /* @__PURE__ */
|
|
26782
|
+
/* @__PURE__ */ jsx61("p", { className: "text-sm font-semibold text-foreground", children: title }),
|
|
26783
|
+
description && /* @__PURE__ */ jsx61("p", { className: "text-xs text-foreground/80", children: description })
|
|
26330
26784
|
] }),
|
|
26331
|
-
onClose && /* @__PURE__ */
|
|
26785
|
+
onClose && /* @__PURE__ */ jsx61(
|
|
26332
26786
|
"button",
|
|
26333
26787
|
{
|
|
26334
26788
|
onClick: onClose,
|
|
26335
|
-
className: "shrink-0 rounded-md p-1 hover:bg-
|
|
26336
|
-
children: /* @__PURE__ */
|
|
26789
|
+
className: "shrink-0 rounded-md p-1 transition-colors hover:bg-foreground/10",
|
|
26790
|
+
children: /* @__PURE__ */ jsx61(X6, { className: "h-4 w-4 text-foreground/60" })
|
|
26337
26791
|
}
|
|
26338
26792
|
)
|
|
26339
26793
|
] })
|
|
@@ -26342,10 +26796,10 @@ var ToastCupcode = ({
|
|
|
26342
26796
|
};
|
|
26343
26797
|
|
|
26344
26798
|
// src/components/cupcode/VideoWatchButton.tsx
|
|
26345
|
-
import
|
|
26346
|
-
import { jsx as
|
|
26347
|
-
var PlayGlyph = () => /* @__PURE__ */
|
|
26348
|
-
var VideoWatchButton =
|
|
26799
|
+
import React34 from "react";
|
|
26800
|
+
import { jsx as jsx62, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
26801
|
+
var PlayGlyph = () => /* @__PURE__ */ jsx62("svg", { viewBox: "0 0 18 18", "aria-hidden": "true", className: "h-[18px] w-[18px]", children: /* @__PURE__ */ jsx62("path", { d: "M6 4.5L13.5 9L6 13.5V4.5Z", fill: "currentColor" }) });
|
|
26802
|
+
var VideoWatchButton = React34.forwardRef(
|
|
26349
26803
|
({ className, label = "Assistir", type = "button", "aria-label": ariaLabel, ...props }, ref) => {
|
|
26350
26804
|
return /* @__PURE__ */ jsxs40(
|
|
26351
26805
|
"button",
|
|
@@ -26357,17 +26811,17 @@ var VideoWatchButton = React35.forwardRef(
|
|
|
26357
26811
|
...props,
|
|
26358
26812
|
children: [
|
|
26359
26813
|
/* @__PURE__ */ jsxs40("span", { className: "cc-video-watch-btn__bg", children: [
|
|
26360
|
-
/* @__PURE__ */
|
|
26361
|
-
/* @__PURE__ */
|
|
26814
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__icon", children: /* @__PURE__ */ jsx62(PlayGlyph, {}) }),
|
|
26815
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__label", children: label }),
|
|
26362
26816
|
/* @__PURE__ */ jsxs40("span", { className: "cc-video-watch-btn__mask", "aria-hidden": "true", children: [
|
|
26363
|
-
/* @__PURE__ */
|
|
26364
|
-
/* @__PURE__ */
|
|
26365
|
-
/* @__PURE__ */
|
|
26366
|
-
/* @__PURE__ */
|
|
26367
|
-
/* @__PURE__ */
|
|
26817
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__blob cc-video-watch-btn__blob--1" }),
|
|
26818
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__blob cc-video-watch-btn__blob--2" }),
|
|
26819
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__blob cc-video-watch-btn__blob--3" }),
|
|
26820
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__blob cc-video-watch-btn__blob--4" }),
|
|
26821
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__blob cc-video-watch-btn__blob--5" })
|
|
26368
26822
|
] })
|
|
26369
26823
|
] }),
|
|
26370
|
-
/* @__PURE__ */
|
|
26824
|
+
/* @__PURE__ */ jsx62("span", { className: "cc-video-watch-btn__glow", "aria-hidden": "true" })
|
|
26371
26825
|
]
|
|
26372
26826
|
}
|
|
26373
26827
|
);
|
|
@@ -26376,13 +26830,13 @@ var VideoWatchButton = React35.forwardRef(
|
|
|
26376
26830
|
VideoWatchButton.displayName = "VideoWatchButton";
|
|
26377
26831
|
|
|
26378
26832
|
// src/components/cupcode/TooltipCupcode.tsx
|
|
26379
|
-
import * as
|
|
26833
|
+
import * as React35 from "react";
|
|
26380
26834
|
import * as TooltipPrimitive2 from "@radix-ui/react-tooltip";
|
|
26381
|
-
import { jsx as
|
|
26835
|
+
import { jsx as jsx63 } from "react/jsx-runtime";
|
|
26382
26836
|
var TooltipProvider2 = TooltipPrimitive2.Provider;
|
|
26383
26837
|
var TooltipCupcode = TooltipPrimitive2.Root;
|
|
26384
26838
|
var TooltipTrigger2 = TooltipPrimitive2.Trigger;
|
|
26385
|
-
var TooltipContent2 =
|
|
26839
|
+
var TooltipContent2 = React35.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx63(
|
|
26386
26840
|
TooltipPrimitive2.Content,
|
|
26387
26841
|
{
|
|
26388
26842
|
ref,
|
|
@@ -26403,14 +26857,14 @@ var TooltipContent2 = React36.forwardRef(({ className, sideOffset = 4, ...props
|
|
|
26403
26857
|
TooltipContent2.displayName = TooltipPrimitive2.Content.displayName;
|
|
26404
26858
|
|
|
26405
26859
|
// src/components/ui/accordion.tsx
|
|
26406
|
-
import * as
|
|
26860
|
+
import * as React36 from "react";
|
|
26407
26861
|
import * as AccordionPrimitive2 from "@radix-ui/react-accordion";
|
|
26408
26862
|
import { ChevronDown as ChevronDown6 } from "lucide-react";
|
|
26409
|
-
import { jsx as
|
|
26863
|
+
import { jsx as jsx64, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
26410
26864
|
var Accordion = AccordionPrimitive2.Root;
|
|
26411
|
-
var AccordionItem2 =
|
|
26865
|
+
var AccordionItem2 = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx64(AccordionPrimitive2.Item, { ref, className: cn("border-b", className), ...props }));
|
|
26412
26866
|
AccordionItem2.displayName = "AccordionItem";
|
|
26413
|
-
var AccordionTrigger2 =
|
|
26867
|
+
var AccordionTrigger2 = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx64(AccordionPrimitive2.Header, { className: "flex", children: /* @__PURE__ */ jsxs41(
|
|
26414
26868
|
AccordionPrimitive2.Trigger,
|
|
26415
26869
|
{
|
|
26416
26870
|
ref,
|
|
@@ -26421,33 +26875,33 @@ var AccordionTrigger2 = React37.forwardRef(({ className, children, ...props }, r
|
|
|
26421
26875
|
...props,
|
|
26422
26876
|
children: [
|
|
26423
26877
|
children,
|
|
26424
|
-
/* @__PURE__ */
|
|
26878
|
+
/* @__PURE__ */ jsx64(ChevronDown6, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
|
|
26425
26879
|
]
|
|
26426
26880
|
}
|
|
26427
26881
|
) }));
|
|
26428
26882
|
AccordionTrigger2.displayName = AccordionPrimitive2.Trigger.displayName;
|
|
26429
|
-
var AccordionContent2 =
|
|
26883
|
+
var AccordionContent2 = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx64(
|
|
26430
26884
|
AccordionPrimitive2.Content,
|
|
26431
26885
|
{
|
|
26432
26886
|
ref,
|
|
26433
26887
|
className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
26434
26888
|
...props,
|
|
26435
|
-
children: /* @__PURE__ */
|
|
26889
|
+
children: /* @__PURE__ */ jsx64("div", { className: cn("pb-4 pt-0", className), children })
|
|
26436
26890
|
}
|
|
26437
26891
|
));
|
|
26438
26892
|
AccordionContent2.displayName = AccordionPrimitive2.Content.displayName;
|
|
26439
26893
|
|
|
26440
26894
|
// src/components/ui/alert.tsx
|
|
26441
|
-
import * as
|
|
26895
|
+
import * as React37 from "react";
|
|
26442
26896
|
import { cva as cva3 } from "class-variance-authority";
|
|
26443
|
-
import { jsx as
|
|
26897
|
+
import { jsx as jsx65 } from "react/jsx-runtime";
|
|
26444
26898
|
var alertVariants = cva3(
|
|
26445
26899
|
"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
|
|
26446
26900
|
{
|
|
26447
26901
|
variants: {
|
|
26448
26902
|
variant: {
|
|
26449
26903
|
default: "bg-background text-foreground",
|
|
26450
|
-
destructive: "border-destructive/50
|
|
26904
|
+
destructive: "border-destructive/50 bg-destructive/10 text-foreground dark:border-destructive/70 dark:bg-destructive/20 [&>svg]:text-destructive"
|
|
26451
26905
|
}
|
|
26452
26906
|
},
|
|
26453
26907
|
defaultVariants: {
|
|
@@ -26455,14 +26909,14 @@ var alertVariants = cva3(
|
|
|
26455
26909
|
}
|
|
26456
26910
|
}
|
|
26457
26911
|
);
|
|
26458
|
-
var Alert =
|
|
26912
|
+
var Alert = React37.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx65("div", { ref, role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
|
|
26459
26913
|
Alert.displayName = "Alert";
|
|
26460
|
-
var AlertTitle =
|
|
26461
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
26914
|
+
var AlertTitle = React37.forwardRef(
|
|
26915
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx65("h5", { ref, className: cn("mb-1 font-medium leading-none tracking-tight", className), ...props })
|
|
26462
26916
|
);
|
|
26463
26917
|
AlertTitle.displayName = "AlertTitle";
|
|
26464
|
-
var AlertDescription =
|
|
26465
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
26918
|
+
var AlertDescription = React37.forwardRef(
|
|
26919
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx65("div", { ref, className: cn("text-sm [&_p]:leading-relaxed", className), ...props })
|
|
26466
26920
|
);
|
|
26467
26921
|
AlertDescription.displayName = "AlertDescription";
|
|
26468
26922
|
|
|
@@ -26471,14 +26925,14 @@ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
|
|
|
26471
26925
|
var AspectRatio = AspectRatioPrimitive.Root;
|
|
26472
26926
|
|
|
26473
26927
|
// src/components/ui/breadcrumb.tsx
|
|
26474
|
-
import * as
|
|
26928
|
+
import * as React38 from "react";
|
|
26475
26929
|
import { Slot as Slot2 } from "@radix-ui/react-slot";
|
|
26476
26930
|
import { ChevronRight as ChevronRight3, MoreHorizontal } from "lucide-react";
|
|
26477
|
-
import { jsx as
|
|
26478
|
-
var Breadcrumb =
|
|
26931
|
+
import { jsx as jsx66, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
26932
|
+
var Breadcrumb = React38.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx66("nav", { ref, "aria-label": "breadcrumb", ...props }));
|
|
26479
26933
|
Breadcrumb.displayName = "Breadcrumb";
|
|
26480
|
-
var BreadcrumbList =
|
|
26481
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
26934
|
+
var BreadcrumbList = React38.forwardRef(
|
|
26935
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
26482
26936
|
"ol",
|
|
26483
26937
|
{
|
|
26484
26938
|
ref,
|
|
@@ -26491,17 +26945,17 @@ var BreadcrumbList = React39.forwardRef(
|
|
|
26491
26945
|
)
|
|
26492
26946
|
);
|
|
26493
26947
|
BreadcrumbList.displayName = "BreadcrumbList";
|
|
26494
|
-
var BreadcrumbItem =
|
|
26495
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
26948
|
+
var BreadcrumbItem = React38.forwardRef(
|
|
26949
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx66("li", { ref, className: cn("inline-flex items-center gap-1.5", className), ...props })
|
|
26496
26950
|
);
|
|
26497
26951
|
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
26498
|
-
var BreadcrumbLink =
|
|
26952
|
+
var BreadcrumbLink = React38.forwardRef(({ asChild, className, ...props }, ref) => {
|
|
26499
26953
|
const Comp = asChild ? Slot2 : "a";
|
|
26500
|
-
return /* @__PURE__ */
|
|
26954
|
+
return /* @__PURE__ */ jsx66(Comp, { ref, className: cn("transition-colors hover:text-foreground", className), ...props });
|
|
26501
26955
|
});
|
|
26502
26956
|
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
26503
|
-
var BreadcrumbPage =
|
|
26504
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
26957
|
+
var BreadcrumbPage = React38.forwardRef(
|
|
26958
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
|
|
26505
26959
|
"span",
|
|
26506
26960
|
{
|
|
26507
26961
|
ref,
|
|
@@ -26514,7 +26968,7 @@ var BreadcrumbPage = React39.forwardRef(
|
|
|
26514
26968
|
)
|
|
26515
26969
|
);
|
|
26516
26970
|
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
26517
|
-
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */
|
|
26971
|
+
var BreadcrumbSeparator = ({ children, className, ...props }) => /* @__PURE__ */ jsx66("li", { role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:size-3.5", className), ...props, children: children != null ? children : /* @__PURE__ */ jsx66(ChevronRight3, {}) });
|
|
26518
26972
|
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
26519
26973
|
var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs42(
|
|
26520
26974
|
"span",
|
|
@@ -26524,8 +26978,8 @@ var BreadcrumbEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs42(
|
|
|
26524
26978
|
className: cn("flex h-9 w-9 items-center justify-center", className),
|
|
26525
26979
|
...props,
|
|
26526
26980
|
children: [
|
|
26527
|
-
/* @__PURE__ */
|
|
26528
|
-
/* @__PURE__ */
|
|
26981
|
+
/* @__PURE__ */ jsx66(MoreHorizontal, { className: "h-4 w-4" }),
|
|
26982
|
+
/* @__PURE__ */ jsx66("span", { className: "sr-only", children: "More" })
|
|
26529
26983
|
]
|
|
26530
26984
|
}
|
|
26531
26985
|
);
|
|
@@ -26534,9 +26988,9 @@ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
|
|
|
26534
26988
|
// src/components/ui/calendar.tsx
|
|
26535
26989
|
import { ChevronLeft, ChevronRight as ChevronRight4 } from "lucide-react";
|
|
26536
26990
|
import { DayPicker } from "react-day-picker";
|
|
26537
|
-
import { jsx as
|
|
26991
|
+
import { jsx as jsx67 } from "react/jsx-runtime";
|
|
26538
26992
|
function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
26539
|
-
return /* @__PURE__ */
|
|
26993
|
+
return /* @__PURE__ */ jsx67(
|
|
26540
26994
|
DayPicker,
|
|
26541
26995
|
{
|
|
26542
26996
|
showOutsideDays,
|
|
@@ -26571,9 +27025,9 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
26571
27025
|
components: {
|
|
26572
27026
|
Chevron: ({ orientation, className: className2, ...chevronProps }) => {
|
|
26573
27027
|
if (orientation === "left") {
|
|
26574
|
-
return /* @__PURE__ */
|
|
27028
|
+
return /* @__PURE__ */ jsx67(ChevronLeft, { className: cn("h-4 w-4", className2), ...chevronProps });
|
|
26575
27029
|
}
|
|
26576
|
-
return /* @__PURE__ */
|
|
27030
|
+
return /* @__PURE__ */ jsx67(ChevronRight4, { className: cn("h-4 w-4", className2), ...chevronProps });
|
|
26577
27031
|
}
|
|
26578
27032
|
},
|
|
26579
27033
|
...props
|
|
@@ -26583,45 +27037,45 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
|
|
|
26583
27037
|
Calendar.displayName = "Calendar";
|
|
26584
27038
|
|
|
26585
27039
|
// src/components/ui/card.tsx
|
|
26586
|
-
import * as
|
|
26587
|
-
import { jsx as
|
|
26588
|
-
var Card =
|
|
27040
|
+
import * as React39 from "react";
|
|
27041
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
27042
|
+
var Card = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx68("div", { ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props }));
|
|
26589
27043
|
Card.displayName = "Card";
|
|
26590
|
-
var CardHeader =
|
|
26591
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27044
|
+
var CardHeader = React39.forwardRef(
|
|
27045
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx68("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
|
|
26592
27046
|
);
|
|
26593
27047
|
CardHeader.displayName = "CardHeader";
|
|
26594
|
-
var CardTitle =
|
|
26595
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27048
|
+
var CardTitle = React39.forwardRef(
|
|
27049
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx68("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
|
|
26596
27050
|
);
|
|
26597
27051
|
CardTitle.displayName = "CardTitle";
|
|
26598
|
-
var CardDescription =
|
|
26599
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27052
|
+
var CardDescription = React39.forwardRef(
|
|
27053
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx68("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
|
|
26600
27054
|
);
|
|
26601
27055
|
CardDescription.displayName = "CardDescription";
|
|
26602
|
-
var CardContent =
|
|
26603
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27056
|
+
var CardContent = React39.forwardRef(
|
|
27057
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx68("div", { ref, className: cn("p-6 pt-0", className), ...props })
|
|
26604
27058
|
);
|
|
26605
27059
|
CardContent.displayName = "CardContent";
|
|
26606
|
-
var CardFooter =
|
|
26607
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27060
|
+
var CardFooter = React39.forwardRef(
|
|
27061
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx68("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
|
|
26608
27062
|
);
|
|
26609
27063
|
CardFooter.displayName = "CardFooter";
|
|
26610
27064
|
|
|
26611
27065
|
// src/components/ui/carousel.tsx
|
|
26612
|
-
import * as
|
|
27066
|
+
import * as React40 from "react";
|
|
26613
27067
|
import useEmblaCarousel from "embla-carousel-react";
|
|
26614
27068
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
|
26615
|
-
import { jsx as
|
|
26616
|
-
var CarouselContext =
|
|
27069
|
+
import { jsx as jsx69, jsxs as jsxs43 } from "react/jsx-runtime";
|
|
27070
|
+
var CarouselContext = React40.createContext(null);
|
|
26617
27071
|
function useCarousel() {
|
|
26618
|
-
const context =
|
|
27072
|
+
const context = React40.useContext(CarouselContext);
|
|
26619
27073
|
if (!context) {
|
|
26620
27074
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
26621
27075
|
}
|
|
26622
27076
|
return context;
|
|
26623
27077
|
}
|
|
26624
|
-
var Carousel =
|
|
27078
|
+
var Carousel = React40.forwardRef(
|
|
26625
27079
|
({ orientation = "horizontal", opts, setApi, plugins, className, children, ...props }, ref) => {
|
|
26626
27080
|
const [carouselRef, api] = useEmblaCarousel(
|
|
26627
27081
|
{
|
|
@@ -26630,22 +27084,22 @@ var Carousel = React41.forwardRef(
|
|
|
26630
27084
|
},
|
|
26631
27085
|
plugins
|
|
26632
27086
|
);
|
|
26633
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
26634
|
-
const [canScrollNext, setCanScrollNext] =
|
|
26635
|
-
const onSelect =
|
|
27087
|
+
const [canScrollPrev, setCanScrollPrev] = React40.useState(false);
|
|
27088
|
+
const [canScrollNext, setCanScrollNext] = React40.useState(false);
|
|
27089
|
+
const onSelect = React40.useCallback((api2) => {
|
|
26636
27090
|
if (!api2) {
|
|
26637
27091
|
return;
|
|
26638
27092
|
}
|
|
26639
27093
|
setCanScrollPrev(api2.canScrollPrev());
|
|
26640
27094
|
setCanScrollNext(api2.canScrollNext());
|
|
26641
27095
|
}, []);
|
|
26642
|
-
const scrollPrev =
|
|
27096
|
+
const scrollPrev = React40.useCallback(() => {
|
|
26643
27097
|
api == null ? void 0 : api.scrollPrev();
|
|
26644
27098
|
}, [api]);
|
|
26645
|
-
const scrollNext =
|
|
27099
|
+
const scrollNext = React40.useCallback(() => {
|
|
26646
27100
|
api == null ? void 0 : api.scrollNext();
|
|
26647
27101
|
}, [api]);
|
|
26648
|
-
const handleKeyDown =
|
|
27102
|
+
const handleKeyDown = React40.useCallback(
|
|
26649
27103
|
(event) => {
|
|
26650
27104
|
if (event.key === "ArrowLeft") {
|
|
26651
27105
|
event.preventDefault();
|
|
@@ -26657,13 +27111,13 @@ var Carousel = React41.forwardRef(
|
|
|
26657
27111
|
},
|
|
26658
27112
|
[scrollPrev, scrollNext]
|
|
26659
27113
|
);
|
|
26660
|
-
|
|
27114
|
+
React40.useEffect(() => {
|
|
26661
27115
|
if (!api || !setApi) {
|
|
26662
27116
|
return;
|
|
26663
27117
|
}
|
|
26664
27118
|
setApi(api);
|
|
26665
27119
|
}, [api, setApi]);
|
|
26666
|
-
|
|
27120
|
+
React40.useEffect(() => {
|
|
26667
27121
|
if (!api) {
|
|
26668
27122
|
return;
|
|
26669
27123
|
}
|
|
@@ -26674,7 +27128,7 @@ var Carousel = React41.forwardRef(
|
|
|
26674
27128
|
api == null ? void 0 : api.off("select", onSelect);
|
|
26675
27129
|
};
|
|
26676
27130
|
}, [api, onSelect]);
|
|
26677
|
-
return /* @__PURE__ */
|
|
27131
|
+
return /* @__PURE__ */ jsx69(
|
|
26678
27132
|
CarouselContext.Provider,
|
|
26679
27133
|
{
|
|
26680
27134
|
value: {
|
|
@@ -26687,7 +27141,7 @@ var Carousel = React41.forwardRef(
|
|
|
26687
27141
|
canScrollPrev,
|
|
26688
27142
|
canScrollNext
|
|
26689
27143
|
},
|
|
26690
|
-
children: /* @__PURE__ */
|
|
27144
|
+
children: /* @__PURE__ */ jsx69(
|
|
26691
27145
|
"div",
|
|
26692
27146
|
{
|
|
26693
27147
|
ref,
|
|
@@ -26704,10 +27158,10 @@ var Carousel = React41.forwardRef(
|
|
|
26704
27158
|
}
|
|
26705
27159
|
);
|
|
26706
27160
|
Carousel.displayName = "Carousel";
|
|
26707
|
-
var CarouselContent =
|
|
27161
|
+
var CarouselContent = React40.forwardRef(
|
|
26708
27162
|
({ className, ...props }, ref) => {
|
|
26709
27163
|
const { carouselRef, orientation } = useCarousel();
|
|
26710
|
-
return /* @__PURE__ */
|
|
27164
|
+
return /* @__PURE__ */ jsx69("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx69(
|
|
26711
27165
|
"div",
|
|
26712
27166
|
{
|
|
26713
27167
|
ref,
|
|
@@ -26718,10 +27172,10 @@ var CarouselContent = React41.forwardRef(
|
|
|
26718
27172
|
}
|
|
26719
27173
|
);
|
|
26720
27174
|
CarouselContent.displayName = "CarouselContent";
|
|
26721
|
-
var CarouselItem =
|
|
27175
|
+
var CarouselItem = React40.forwardRef(
|
|
26722
27176
|
({ className, ...props }, ref) => {
|
|
26723
27177
|
const { orientation } = useCarousel();
|
|
26724
|
-
return /* @__PURE__ */
|
|
27178
|
+
return /* @__PURE__ */ jsx69(
|
|
26725
27179
|
"div",
|
|
26726
27180
|
{
|
|
26727
27181
|
ref,
|
|
@@ -26734,7 +27188,7 @@ var CarouselItem = React41.forwardRef(
|
|
|
26734
27188
|
}
|
|
26735
27189
|
);
|
|
26736
27190
|
CarouselItem.displayName = "CarouselItem";
|
|
26737
|
-
var CarouselPrevious =
|
|
27191
|
+
var CarouselPrevious = React40.forwardRef(
|
|
26738
27192
|
({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
26739
27193
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
26740
27194
|
return /* @__PURE__ */ jsxs43(
|
|
@@ -26752,15 +27206,15 @@ var CarouselPrevious = React41.forwardRef(
|
|
|
26752
27206
|
onClick: scrollPrev,
|
|
26753
27207
|
...props,
|
|
26754
27208
|
children: [
|
|
26755
|
-
/* @__PURE__ */
|
|
26756
|
-
/* @__PURE__ */
|
|
27209
|
+
/* @__PURE__ */ jsx69(ArrowLeft, { className: "h-4 w-4" }),
|
|
27210
|
+
/* @__PURE__ */ jsx69("span", { className: "sr-only", children: "Previous slide" })
|
|
26757
27211
|
]
|
|
26758
27212
|
}
|
|
26759
27213
|
);
|
|
26760
27214
|
}
|
|
26761
27215
|
);
|
|
26762
27216
|
CarouselPrevious.displayName = "CarouselPrevious";
|
|
26763
|
-
var CarouselNext =
|
|
27217
|
+
var CarouselNext = React40.forwardRef(
|
|
26764
27218
|
({ className, variant = "outline", size = "icon", ...props }, ref) => {
|
|
26765
27219
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
26766
27220
|
return /* @__PURE__ */ jsxs43(
|
|
@@ -26778,8 +27232,8 @@ var CarouselNext = React41.forwardRef(
|
|
|
26778
27232
|
onClick: scrollNext,
|
|
26779
27233
|
...props,
|
|
26780
27234
|
children: [
|
|
26781
|
-
/* @__PURE__ */
|
|
26782
|
-
/* @__PURE__ */
|
|
27235
|
+
/* @__PURE__ */ jsx69(ArrowRight, { className: "h-4 w-4" }),
|
|
27236
|
+
/* @__PURE__ */ jsx69("span", { className: "sr-only", children: "Next slide" })
|
|
26783
27237
|
]
|
|
26784
27238
|
}
|
|
26785
27239
|
);
|
|
@@ -26788,22 +27242,22 @@ var CarouselNext = React41.forwardRef(
|
|
|
26788
27242
|
CarouselNext.displayName = "CarouselNext";
|
|
26789
27243
|
|
|
26790
27244
|
// src/components/ui/chart.tsx
|
|
26791
|
-
import * as
|
|
27245
|
+
import * as React41 from "react";
|
|
26792
27246
|
import * as RechartsPrimitive from "recharts";
|
|
26793
|
-
import { Fragment as Fragment6, jsx as
|
|
27247
|
+
import { Fragment as Fragment6, jsx as jsx70, jsxs as jsxs44 } from "react/jsx-runtime";
|
|
26794
27248
|
var THEMES = { light: "", dark: ".dark" };
|
|
26795
|
-
var ChartContext =
|
|
27249
|
+
var ChartContext = React41.createContext(null);
|
|
26796
27250
|
function useChart() {
|
|
26797
|
-
const context =
|
|
27251
|
+
const context = React41.useContext(ChartContext);
|
|
26798
27252
|
if (!context) {
|
|
26799
27253
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
26800
27254
|
}
|
|
26801
27255
|
return context;
|
|
26802
27256
|
}
|
|
26803
|
-
var ChartContainer =
|
|
26804
|
-
const uniqueId =
|
|
27257
|
+
var ChartContainer = React41.forwardRef(({ id, className, children, config, ...props }, ref) => {
|
|
27258
|
+
const uniqueId = React41.useId();
|
|
26805
27259
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
26806
|
-
return /* @__PURE__ */
|
|
27260
|
+
return /* @__PURE__ */ jsx70(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs44(
|
|
26807
27261
|
"div",
|
|
26808
27262
|
{
|
|
26809
27263
|
"data-chart": chartId,
|
|
@@ -26814,8 +27268,8 @@ var ChartContainer = React42.forwardRef(({ id, className, children, config, ...p
|
|
|
26814
27268
|
),
|
|
26815
27269
|
...props,
|
|
26816
27270
|
children: [
|
|
26817
|
-
/* @__PURE__ */
|
|
26818
|
-
/* @__PURE__ */
|
|
27271
|
+
/* @__PURE__ */ jsx70(ChartStyle, { id: chartId, config }),
|
|
27272
|
+
/* @__PURE__ */ jsx70(RechartsPrimitive.ResponsiveContainer, { children })
|
|
26819
27273
|
]
|
|
26820
27274
|
}
|
|
26821
27275
|
) });
|
|
@@ -26826,7 +27280,7 @@ var ChartStyle = ({ id, config }) => {
|
|
|
26826
27280
|
if (!colorConfig.length) {
|
|
26827
27281
|
return null;
|
|
26828
27282
|
}
|
|
26829
|
-
return /* @__PURE__ */
|
|
27283
|
+
return /* @__PURE__ */ jsx70(
|
|
26830
27284
|
"style",
|
|
26831
27285
|
{
|
|
26832
27286
|
dangerouslySetInnerHTML: {
|
|
@@ -26846,7 +27300,7 @@ ${colorConfig.map(([key, itemConfig]) => {
|
|
|
26846
27300
|
);
|
|
26847
27301
|
};
|
|
26848
27302
|
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
26849
|
-
var ChartTooltipContent =
|
|
27303
|
+
var ChartTooltipContent = React41.forwardRef(
|
|
26850
27304
|
({
|
|
26851
27305
|
active,
|
|
26852
27306
|
payload,
|
|
@@ -26863,7 +27317,7 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26863
27317
|
labelKey
|
|
26864
27318
|
}, ref) => {
|
|
26865
27319
|
const { config } = useChart();
|
|
26866
|
-
const tooltipLabel =
|
|
27320
|
+
const tooltipLabel = React41.useMemo(() => {
|
|
26867
27321
|
var _a78;
|
|
26868
27322
|
if (hideLabel || !(payload == null ? void 0 : payload.length)) {
|
|
26869
27323
|
return null;
|
|
@@ -26873,12 +27327,12 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26873
27327
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
26874
27328
|
const value = !labelKey && typeof label === "string" ? ((_a78 = config[label]) == null ? void 0 : _a78.label) || label : itemConfig == null ? void 0 : itemConfig.label;
|
|
26875
27329
|
if (labelFormatter) {
|
|
26876
|
-
return /* @__PURE__ */
|
|
27330
|
+
return /* @__PURE__ */ jsx70("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
26877
27331
|
}
|
|
26878
27332
|
if (!value) {
|
|
26879
27333
|
return null;
|
|
26880
27334
|
}
|
|
26881
|
-
return /* @__PURE__ */
|
|
27335
|
+
return /* @__PURE__ */ jsx70("div", { className: cn("font-medium", labelClassName), children: value });
|
|
26882
27336
|
}, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
|
|
26883
27337
|
if (!active || !(payload == null ? void 0 : payload.length)) {
|
|
26884
27338
|
return null;
|
|
@@ -26894,11 +27348,11 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26894
27348
|
),
|
|
26895
27349
|
children: [
|
|
26896
27350
|
!nestLabel ? tooltipLabel : null,
|
|
26897
|
-
/* @__PURE__ */
|
|
27351
|
+
/* @__PURE__ */ jsx70("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
|
|
26898
27352
|
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
26899
27353
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
26900
27354
|
const indicatorColor = color || item.payload.fill || item.color;
|
|
26901
|
-
return /* @__PURE__ */
|
|
27355
|
+
return /* @__PURE__ */ jsx70(
|
|
26902
27356
|
"div",
|
|
26903
27357
|
{
|
|
26904
27358
|
className: cn(
|
|
@@ -26906,7 +27360,7 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26906
27360
|
indicator === "dot" && "items-center"
|
|
26907
27361
|
),
|
|
26908
27362
|
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs44(Fragment6, { children: [
|
|
26909
|
-
(itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */
|
|
27363
|
+
(itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */ jsx70(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx70(
|
|
26910
27364
|
"div",
|
|
26911
27365
|
{
|
|
26912
27366
|
className: cn("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]", {
|
|
@@ -26931,9 +27385,9 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26931
27385
|
children: [
|
|
26932
27386
|
/* @__PURE__ */ jsxs44("div", { className: "grid gap-1.5", children: [
|
|
26933
27387
|
nestLabel ? tooltipLabel : null,
|
|
26934
|
-
/* @__PURE__ */
|
|
27388
|
+
/* @__PURE__ */ jsx70("span", { className: "text-muted-foreground", children: (itemConfig == null ? void 0 : itemConfig.label) || item.name })
|
|
26935
27389
|
] }),
|
|
26936
|
-
item.value && /* @__PURE__ */
|
|
27390
|
+
item.value && /* @__PURE__ */ jsx70("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
|
|
26937
27391
|
]
|
|
26938
27392
|
}
|
|
26939
27393
|
)
|
|
@@ -26949,12 +27403,12 @@ var ChartTooltipContent = React42.forwardRef(
|
|
|
26949
27403
|
);
|
|
26950
27404
|
ChartTooltipContent.displayName = "ChartTooltip";
|
|
26951
27405
|
var ChartLegend = RechartsPrimitive.Legend;
|
|
26952
|
-
var ChartLegendContent =
|
|
27406
|
+
var ChartLegendContent = React41.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
|
|
26953
27407
|
const { config } = useChart();
|
|
26954
27408
|
if (!(payload == null ? void 0 : payload.length)) {
|
|
26955
27409
|
return null;
|
|
26956
27410
|
}
|
|
26957
|
-
return /* @__PURE__ */
|
|
27411
|
+
return /* @__PURE__ */ jsx70(
|
|
26958
27412
|
"div",
|
|
26959
27413
|
{
|
|
26960
27414
|
ref,
|
|
@@ -26967,7 +27421,7 @@ var ChartLegendContent = React42.forwardRef(({ className, hideIcon = false, payl
|
|
|
26967
27421
|
{
|
|
26968
27422
|
className: cn("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),
|
|
26969
27423
|
children: [
|
|
26970
|
-
(itemConfig == null ? void 0 : itemConfig.icon) && !hideIcon ? /* @__PURE__ */
|
|
27424
|
+
(itemConfig == null ? void 0 : itemConfig.icon) && !hideIcon ? /* @__PURE__ */ jsx70(itemConfig.icon, {}) : /* @__PURE__ */ jsx70(
|
|
26971
27425
|
"div",
|
|
26972
27426
|
{
|
|
26973
27427
|
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
@@ -27001,11 +27455,11 @@ function getPayloadConfigFromPayload(config, payload, key) {
|
|
|
27001
27455
|
}
|
|
27002
27456
|
|
|
27003
27457
|
// src/components/ui/checkbox.tsx
|
|
27004
|
-
import * as
|
|
27458
|
+
import * as React42 from "react";
|
|
27005
27459
|
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
27006
27460
|
import { Check as Check6 } from "lucide-react";
|
|
27007
|
-
import { jsx as
|
|
27008
|
-
var Checkbox =
|
|
27461
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
27462
|
+
var Checkbox = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx71(
|
|
27009
27463
|
CheckboxPrimitive.Root,
|
|
27010
27464
|
{
|
|
27011
27465
|
ref,
|
|
@@ -27014,7 +27468,7 @@ var Checkbox = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
27014
27468
|
className
|
|
27015
27469
|
),
|
|
27016
27470
|
...props,
|
|
27017
|
-
children: /* @__PURE__ */
|
|
27471
|
+
children: /* @__PURE__ */ jsx71(CheckboxPrimitive.Indicator, { className: cn("flex items-center justify-center text-current"), children: /* @__PURE__ */ jsx71(Check6, { className: "h-4 w-4" }) })
|
|
27018
27472
|
}
|
|
27019
27473
|
));
|
|
27020
27474
|
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
|
|
@@ -27026,11 +27480,11 @@ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
|
|
|
27026
27480
|
var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
|
|
27027
27481
|
|
|
27028
27482
|
// src/components/ui/command.tsx
|
|
27029
|
-
import * as
|
|
27483
|
+
import * as React43 from "react";
|
|
27030
27484
|
import { Command as CommandPrimitive } from "cmdk";
|
|
27031
27485
|
import { Search as Search3 } from "lucide-react";
|
|
27032
|
-
import { jsx as
|
|
27033
|
-
var Command =
|
|
27486
|
+
import { jsx as jsx72, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
27487
|
+
var Command = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
|
|
27034
27488
|
CommandPrimitive,
|
|
27035
27489
|
{
|
|
27036
27490
|
ref,
|
|
@@ -27043,11 +27497,11 @@ var Command = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
27043
27497
|
));
|
|
27044
27498
|
Command.displayName = CommandPrimitive.displayName;
|
|
27045
27499
|
var CommandDialog = ({ children, ...props }) => {
|
|
27046
|
-
return /* @__PURE__ */
|
|
27500
|
+
return /* @__PURE__ */ jsx72(Dialog, { ...props, children: /* @__PURE__ */ jsx72(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsx72(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
|
|
27047
27501
|
};
|
|
27048
|
-
var CommandInput =
|
|
27049
|
-
/* @__PURE__ */
|
|
27050
|
-
/* @__PURE__ */
|
|
27502
|
+
var CommandInput = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs45("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
|
|
27503
|
+
/* @__PURE__ */ jsx72(Search3, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
|
|
27504
|
+
/* @__PURE__ */ jsx72(
|
|
27051
27505
|
CommandPrimitive.Input,
|
|
27052
27506
|
{
|
|
27053
27507
|
ref,
|
|
@@ -27060,7 +27514,7 @@ var CommandInput = React44.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
27060
27514
|
)
|
|
27061
27515
|
] }));
|
|
27062
27516
|
CommandInput.displayName = CommandPrimitive.Input.displayName;
|
|
27063
|
-
var CommandList =
|
|
27517
|
+
var CommandList = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
|
|
27064
27518
|
CommandPrimitive.List,
|
|
27065
27519
|
{
|
|
27066
27520
|
ref,
|
|
@@ -27069,9 +27523,9 @@ var CommandList = React44.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
27069
27523
|
}
|
|
27070
27524
|
));
|
|
27071
27525
|
CommandList.displayName = CommandPrimitive.List.displayName;
|
|
27072
|
-
var CommandEmpty =
|
|
27526
|
+
var CommandEmpty = React43.forwardRef((props, ref) => /* @__PURE__ */ jsx72(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
|
|
27073
27527
|
CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
|
|
27074
|
-
var CommandGroup =
|
|
27528
|
+
var CommandGroup = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
|
|
27075
27529
|
CommandPrimitive.Group,
|
|
27076
27530
|
{
|
|
27077
27531
|
ref,
|
|
@@ -27083,9 +27537,9 @@ var CommandGroup = React44.forwardRef(({ className, ...props }, ref) => /* @__PU
|
|
|
27083
27537
|
}
|
|
27084
27538
|
));
|
|
27085
27539
|
CommandGroup.displayName = CommandPrimitive.Group.displayName;
|
|
27086
|
-
var CommandSeparator =
|
|
27540
|
+
var CommandSeparator = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(CommandPrimitive.Separator, { ref, className: cn("-mx-1 h-px bg-border", className), ...props }));
|
|
27087
27541
|
CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
|
|
27088
|
-
var CommandItem =
|
|
27542
|
+
var CommandItem = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
|
|
27089
27543
|
CommandPrimitive.Item,
|
|
27090
27544
|
{
|
|
27091
27545
|
ref,
|
|
@@ -27098,22 +27552,22 @@ var CommandItem = React44.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
27098
27552
|
));
|
|
27099
27553
|
CommandItem.displayName = CommandPrimitive.Item.displayName;
|
|
27100
27554
|
var CommandShortcut = ({ className, ...props }) => {
|
|
27101
|
-
return /* @__PURE__ */
|
|
27555
|
+
return /* @__PURE__ */ jsx72("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
|
|
27102
27556
|
};
|
|
27103
27557
|
CommandShortcut.displayName = "CommandShortcut";
|
|
27104
27558
|
|
|
27105
27559
|
// src/components/ui/context-menu.tsx
|
|
27106
|
-
import * as
|
|
27560
|
+
import * as React44 from "react";
|
|
27107
27561
|
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
|
|
27108
27562
|
import { Check as Check7, ChevronRight as ChevronRight5, Circle as Circle3 } from "lucide-react";
|
|
27109
|
-
import { jsx as
|
|
27563
|
+
import { jsx as jsx73, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
27110
27564
|
var ContextMenu = ContextMenuPrimitive.Root;
|
|
27111
27565
|
var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
|
|
27112
27566
|
var ContextMenuGroup = ContextMenuPrimitive.Group;
|
|
27113
27567
|
var ContextMenuPortal = ContextMenuPrimitive.Portal;
|
|
27114
27568
|
var ContextMenuSub = ContextMenuPrimitive.Sub;
|
|
27115
27569
|
var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
|
|
27116
|
-
var ContextMenuSubTrigger =
|
|
27570
|
+
var ContextMenuSubTrigger = React44.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
27117
27571
|
ContextMenuPrimitive.SubTrigger,
|
|
27118
27572
|
{
|
|
27119
27573
|
ref,
|
|
@@ -27125,12 +27579,12 @@ var ContextMenuSubTrigger = React45.forwardRef(({ className, inset, children, ..
|
|
|
27125
27579
|
...props,
|
|
27126
27580
|
children: [
|
|
27127
27581
|
children,
|
|
27128
|
-
/* @__PURE__ */
|
|
27582
|
+
/* @__PURE__ */ jsx73(ChevronRight5, { className: "ml-auto h-4 w-4" })
|
|
27129
27583
|
]
|
|
27130
27584
|
}
|
|
27131
27585
|
));
|
|
27132
27586
|
ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
|
|
27133
|
-
var ContextMenuSubContent =
|
|
27587
|
+
var ContextMenuSubContent = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
|
|
27134
27588
|
ContextMenuPrimitive.SubContent,
|
|
27135
27589
|
{
|
|
27136
27590
|
ref,
|
|
@@ -27142,7 +27596,7 @@ var ContextMenuSubContent = React45.forwardRef(({ className, ...props }, ref) =>
|
|
|
27142
27596
|
}
|
|
27143
27597
|
));
|
|
27144
27598
|
ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
|
|
27145
|
-
var ContextMenuContent =
|
|
27599
|
+
var ContextMenuContent = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx73(
|
|
27146
27600
|
ContextMenuPrimitive.Content,
|
|
27147
27601
|
{
|
|
27148
27602
|
ref,
|
|
@@ -27154,7 +27608,7 @@ var ContextMenuContent = React45.forwardRef(({ className, ...props }, ref) => /*
|
|
|
27154
27608
|
}
|
|
27155
27609
|
) }));
|
|
27156
27610
|
ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
|
|
27157
|
-
var ContextMenuItem =
|
|
27611
|
+
var ContextMenuItem = React44.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx73(
|
|
27158
27612
|
ContextMenuPrimitive.Item,
|
|
27159
27613
|
{
|
|
27160
27614
|
ref,
|
|
@@ -27167,7 +27621,7 @@ var ContextMenuItem = React45.forwardRef(({ className, inset, ...props }, ref) =
|
|
|
27167
27621
|
}
|
|
27168
27622
|
));
|
|
27169
27623
|
ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
|
|
27170
|
-
var ContextMenuCheckboxItem =
|
|
27624
|
+
var ContextMenuCheckboxItem = React44.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
27171
27625
|
ContextMenuPrimitive.CheckboxItem,
|
|
27172
27626
|
{
|
|
27173
27627
|
ref,
|
|
@@ -27178,13 +27632,13 @@ var ContextMenuCheckboxItem = React45.forwardRef(({ className, children, checked
|
|
|
27178
27632
|
checked,
|
|
27179
27633
|
...props,
|
|
27180
27634
|
children: [
|
|
27181
|
-
/* @__PURE__ */
|
|
27635
|
+
/* @__PURE__ */ jsx73("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx73(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx73(Check7, { className: "h-4 w-4" }) }) }),
|
|
27182
27636
|
children
|
|
27183
27637
|
]
|
|
27184
27638
|
}
|
|
27185
27639
|
));
|
|
27186
27640
|
ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
|
|
27187
|
-
var ContextMenuRadioItem =
|
|
27641
|
+
var ContextMenuRadioItem = React44.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs46(
|
|
27188
27642
|
ContextMenuPrimitive.RadioItem,
|
|
27189
27643
|
{
|
|
27190
27644
|
ref,
|
|
@@ -27194,13 +27648,13 @@ var ContextMenuRadioItem = React45.forwardRef(({ className, children, ...props }
|
|
|
27194
27648
|
),
|
|
27195
27649
|
...props,
|
|
27196
27650
|
children: [
|
|
27197
|
-
/* @__PURE__ */
|
|
27651
|
+
/* @__PURE__ */ jsx73("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx73(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx73(Circle3, { className: "h-2 w-2 fill-current" }) }) }),
|
|
27198
27652
|
children
|
|
27199
27653
|
]
|
|
27200
27654
|
}
|
|
27201
27655
|
));
|
|
27202
27656
|
ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
|
|
27203
|
-
var ContextMenuLabel =
|
|
27657
|
+
var ContextMenuLabel = React44.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx73(
|
|
27204
27658
|
ContextMenuPrimitive.Label,
|
|
27205
27659
|
{
|
|
27206
27660
|
ref,
|
|
@@ -27209,39 +27663,39 @@ var ContextMenuLabel = React45.forwardRef(({ className, inset, ...props }, ref)
|
|
|
27209
27663
|
}
|
|
27210
27664
|
));
|
|
27211
27665
|
ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
|
|
27212
|
-
var ContextMenuSeparator =
|
|
27666
|
+
var ContextMenuSeparator = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props }));
|
|
27213
27667
|
ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
|
|
27214
27668
|
var ContextMenuShortcut = ({ className, ...props }) => {
|
|
27215
|
-
return /* @__PURE__ */
|
|
27669
|
+
return /* @__PURE__ */ jsx73("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
|
|
27216
27670
|
};
|
|
27217
27671
|
ContextMenuShortcut.displayName = "ContextMenuShortcut";
|
|
27218
27672
|
|
|
27219
27673
|
// src/components/ui/form.tsx
|
|
27220
|
-
import * as
|
|
27674
|
+
import * as React46 from "react";
|
|
27221
27675
|
import { Slot as Slot3 } from "@radix-ui/react-slot";
|
|
27222
27676
|
import { Controller, FormProvider, useFormContext } from "react-hook-form";
|
|
27223
27677
|
|
|
27224
27678
|
// src/components/ui/label.tsx
|
|
27225
|
-
import * as
|
|
27679
|
+
import * as React45 from "react";
|
|
27226
27680
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
27227
27681
|
import { cva as cva4 } from "class-variance-authority";
|
|
27228
|
-
import { jsx as
|
|
27682
|
+
import { jsx as jsx74 } from "react/jsx-runtime";
|
|
27229
27683
|
var labelVariants = cva4("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
|
|
27230
|
-
var Label4 =
|
|
27684
|
+
var Label4 = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx74(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props }));
|
|
27231
27685
|
Label4.displayName = LabelPrimitive.Root.displayName;
|
|
27232
27686
|
|
|
27233
27687
|
// src/components/ui/form.tsx
|
|
27234
|
-
import { jsx as
|
|
27688
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
27235
27689
|
var Form = FormProvider;
|
|
27236
|
-
var FormFieldContext =
|
|
27690
|
+
var FormFieldContext = React46.createContext({});
|
|
27237
27691
|
var FormField = ({
|
|
27238
27692
|
...props
|
|
27239
27693
|
}) => {
|
|
27240
|
-
return /* @__PURE__ */
|
|
27694
|
+
return /* @__PURE__ */ jsx75(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx75(Controller, { ...props }) });
|
|
27241
27695
|
};
|
|
27242
27696
|
var useFormField = () => {
|
|
27243
|
-
const fieldContext =
|
|
27244
|
-
const itemContext =
|
|
27697
|
+
const fieldContext = React46.useContext(FormFieldContext);
|
|
27698
|
+
const itemContext = React46.useContext(FormItemContext);
|
|
27245
27699
|
const { getFieldState, formState } = useFormContext();
|
|
27246
27700
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
27247
27701
|
if (!fieldContext) {
|
|
@@ -27257,23 +27711,23 @@ var useFormField = () => {
|
|
|
27257
27711
|
...fieldState
|
|
27258
27712
|
};
|
|
27259
27713
|
};
|
|
27260
|
-
var FormItemContext =
|
|
27261
|
-
var FormItem =
|
|
27714
|
+
var FormItemContext = React46.createContext({});
|
|
27715
|
+
var FormItem = React46.forwardRef(
|
|
27262
27716
|
({ className, ...props }, ref) => {
|
|
27263
|
-
const id =
|
|
27264
|
-
return /* @__PURE__ */
|
|
27717
|
+
const id = React46.useId();
|
|
27718
|
+
return /* @__PURE__ */ jsx75(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx75("div", { ref, className: cn("space-y-2", className), ...props }) });
|
|
27265
27719
|
}
|
|
27266
27720
|
);
|
|
27267
27721
|
FormItem.displayName = "FormItem";
|
|
27268
|
-
var FormLabel =
|
|
27722
|
+
var FormLabel = React46.forwardRef(({ className, ...props }, ref) => {
|
|
27269
27723
|
const { error, formItemId } = useFormField();
|
|
27270
|
-
return /* @__PURE__ */
|
|
27724
|
+
return /* @__PURE__ */ jsx75(Label4, { ref, className: cn(error && "text-destructive", className), htmlFor: formItemId, ...props });
|
|
27271
27725
|
});
|
|
27272
27726
|
FormLabel.displayName = "FormLabel";
|
|
27273
|
-
var FormControl =
|
|
27727
|
+
var FormControl = React46.forwardRef(
|
|
27274
27728
|
({ ...props }, ref) => {
|
|
27275
27729
|
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
27276
|
-
return /* @__PURE__ */
|
|
27730
|
+
return /* @__PURE__ */ jsx75(
|
|
27277
27731
|
Slot3,
|
|
27278
27732
|
{
|
|
27279
27733
|
ref,
|
|
@@ -27286,42 +27740,42 @@ var FormControl = React47.forwardRef(
|
|
|
27286
27740
|
}
|
|
27287
27741
|
);
|
|
27288
27742
|
FormControl.displayName = "FormControl";
|
|
27289
|
-
var FormDescription =
|
|
27743
|
+
var FormDescription = React46.forwardRef(
|
|
27290
27744
|
({ className, ...props }, ref) => {
|
|
27291
27745
|
const { formDescriptionId } = useFormField();
|
|
27292
|
-
return /* @__PURE__ */
|
|
27746
|
+
return /* @__PURE__ */ jsx75("p", { ref, id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props });
|
|
27293
27747
|
}
|
|
27294
27748
|
);
|
|
27295
27749
|
FormDescription.displayName = "FormDescription";
|
|
27296
|
-
var FormMessage =
|
|
27750
|
+
var FormMessage = React46.forwardRef(
|
|
27297
27751
|
({ className, children, ...props }, ref) => {
|
|
27298
27752
|
const { error, formMessageId } = useFormField();
|
|
27299
27753
|
const body = error ? String(error == null ? void 0 : error.message) : children;
|
|
27300
27754
|
if (!body) {
|
|
27301
27755
|
return null;
|
|
27302
27756
|
}
|
|
27303
|
-
return /* @__PURE__ */
|
|
27757
|
+
return /* @__PURE__ */ jsx75("p", { ref, id: formMessageId, className: cn("text-sm font-medium text-destructive", className), ...props, children: body });
|
|
27304
27758
|
}
|
|
27305
27759
|
);
|
|
27306
27760
|
FormMessage.displayName = "FormMessage";
|
|
27307
27761
|
|
|
27308
27762
|
// src/components/ui/glass-card.tsx
|
|
27309
|
-
import * as
|
|
27310
|
-
import { jsx as
|
|
27311
|
-
var GlassCard =
|
|
27763
|
+
import * as React47 from "react";
|
|
27764
|
+
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
27765
|
+
var GlassCard = React47.forwardRef(
|
|
27312
27766
|
({ className, ...props }, ref) => {
|
|
27313
|
-
return /* @__PURE__ */
|
|
27767
|
+
return /* @__PURE__ */ jsx76("div", { ref, className: cn("glass-card", className), ...props });
|
|
27314
27768
|
}
|
|
27315
27769
|
);
|
|
27316
27770
|
GlassCard.displayName = "GlassCard";
|
|
27317
27771
|
|
|
27318
27772
|
// src/components/ui/hover-card.tsx
|
|
27319
|
-
import * as
|
|
27773
|
+
import * as React48 from "react";
|
|
27320
27774
|
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
27321
|
-
import { jsx as
|
|
27775
|
+
import { jsx as jsx77 } from "react/jsx-runtime";
|
|
27322
27776
|
var HoverCard = HoverCardPrimitive.Root;
|
|
27323
27777
|
var HoverCardTrigger = HoverCardPrimitive.Trigger;
|
|
27324
|
-
var HoverCardContent =
|
|
27778
|
+
var HoverCardContent = React48.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx77(
|
|
27325
27779
|
HoverCardPrimitive.Content,
|
|
27326
27780
|
{
|
|
27327
27781
|
ref,
|
|
@@ -27337,12 +27791,12 @@ var HoverCardContent = React49.forwardRef(({ className, align = "center", sideOf
|
|
|
27337
27791
|
HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
|
|
27338
27792
|
|
|
27339
27793
|
// src/components/ui/input-otp.tsx
|
|
27340
|
-
import * as
|
|
27794
|
+
import * as React49 from "react";
|
|
27341
27795
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
27342
27796
|
import { Dot } from "lucide-react";
|
|
27343
|
-
import { jsx as
|
|
27344
|
-
var InputOTP =
|
|
27345
|
-
({ className, containerClassName, ...props }, ref) => /* @__PURE__ */
|
|
27797
|
+
import { jsx as jsx78, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
27798
|
+
var InputOTP = React49.forwardRef(
|
|
27799
|
+
({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx78(
|
|
27346
27800
|
OTPInput,
|
|
27347
27801
|
{
|
|
27348
27802
|
ref,
|
|
@@ -27353,12 +27807,12 @@ var InputOTP = React50.forwardRef(
|
|
|
27353
27807
|
)
|
|
27354
27808
|
);
|
|
27355
27809
|
InputOTP.displayName = "InputOTP";
|
|
27356
|
-
var InputOTPGroup =
|
|
27357
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
27810
|
+
var InputOTPGroup = React49.forwardRef(
|
|
27811
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx78("div", { ref, className: cn("flex items-center", className), ...props })
|
|
27358
27812
|
);
|
|
27359
27813
|
InputOTPGroup.displayName = "InputOTPGroup";
|
|
27360
|
-
var InputOTPSlot =
|
|
27361
|
-
const inputOTPContext =
|
|
27814
|
+
var InputOTPSlot = React49.forwardRef(({ index, className, ...props }, ref) => {
|
|
27815
|
+
const inputOTPContext = React49.useContext(OTPInputContext);
|
|
27362
27816
|
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
27363
27817
|
return /* @__PURE__ */ jsxs47(
|
|
27364
27818
|
"div",
|
|
@@ -27372,28 +27826,28 @@ var InputOTPSlot = React50.forwardRef(({ index, className, ...props }, ref) => {
|
|
|
27372
27826
|
...props,
|
|
27373
27827
|
children: [
|
|
27374
27828
|
char,
|
|
27375
|
-
hasFakeCaret && /* @__PURE__ */
|
|
27829
|
+
hasFakeCaret && /* @__PURE__ */ jsx78("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx78("div", { className: "animate-caret-blink h-4 w-px bg-foreground duration-1000" }) })
|
|
27376
27830
|
]
|
|
27377
27831
|
}
|
|
27378
27832
|
);
|
|
27379
27833
|
});
|
|
27380
27834
|
InputOTPSlot.displayName = "InputOTPSlot";
|
|
27381
|
-
var InputOTPSeparator =
|
|
27382
|
-
({ ...props }, ref) => /* @__PURE__ */
|
|
27835
|
+
var InputOTPSeparator = React49.forwardRef(
|
|
27836
|
+
({ ...props }, ref) => /* @__PURE__ */ jsx78("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx78(Dot, {}) })
|
|
27383
27837
|
);
|
|
27384
27838
|
InputOTPSeparator.displayName = "InputOTPSeparator";
|
|
27385
27839
|
|
|
27386
27840
|
// src/components/ui/menubar.tsx
|
|
27387
|
-
import * as
|
|
27841
|
+
import * as React50 from "react";
|
|
27388
27842
|
import * as MenubarPrimitive from "@radix-ui/react-menubar";
|
|
27389
27843
|
import { Check as Check8, ChevronRight as ChevronRight6, Circle as Circle4 } from "lucide-react";
|
|
27390
|
-
import { jsx as
|
|
27844
|
+
import { jsx as jsx79, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
27391
27845
|
var MenubarMenu = MenubarPrimitive.Menu;
|
|
27392
27846
|
var MenubarGroup = MenubarPrimitive.Group;
|
|
27393
27847
|
var MenubarPortal = MenubarPrimitive.Portal;
|
|
27394
27848
|
var MenubarSub = MenubarPrimitive.Sub;
|
|
27395
27849
|
var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
|
|
27396
|
-
var Menubar =
|
|
27850
|
+
var Menubar = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(
|
|
27397
27851
|
MenubarPrimitive.Root,
|
|
27398
27852
|
{
|
|
27399
27853
|
ref,
|
|
@@ -27402,7 +27856,7 @@ var Menubar = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__
|
|
|
27402
27856
|
}
|
|
27403
27857
|
));
|
|
27404
27858
|
Menubar.displayName = MenubarPrimitive.Root.displayName;
|
|
27405
|
-
var MenubarTrigger =
|
|
27859
|
+
var MenubarTrigger = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(
|
|
27406
27860
|
MenubarPrimitive.Trigger,
|
|
27407
27861
|
{
|
|
27408
27862
|
ref,
|
|
@@ -27414,7 +27868,7 @@ var MenubarTrigger = React51.forwardRef(({ className, ...props }, ref) => /* @__
|
|
|
27414
27868
|
}
|
|
27415
27869
|
));
|
|
27416
27870
|
MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
|
|
27417
|
-
var MenubarSubTrigger =
|
|
27871
|
+
var MenubarSubTrigger = React50.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs48(
|
|
27418
27872
|
MenubarPrimitive.SubTrigger,
|
|
27419
27873
|
{
|
|
27420
27874
|
ref,
|
|
@@ -27426,12 +27880,12 @@ var MenubarSubTrigger = React51.forwardRef(({ className, inset, children, ...pro
|
|
|
27426
27880
|
...props,
|
|
27427
27881
|
children: [
|
|
27428
27882
|
children,
|
|
27429
|
-
/* @__PURE__ */
|
|
27883
|
+
/* @__PURE__ */ jsx79(ChevronRight6, { className: "ml-auto h-4 w-4" })
|
|
27430
27884
|
]
|
|
27431
27885
|
}
|
|
27432
27886
|
));
|
|
27433
27887
|
MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
|
|
27434
|
-
var MenubarSubContent =
|
|
27888
|
+
var MenubarSubContent = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(
|
|
27435
27889
|
MenubarPrimitive.SubContent,
|
|
27436
27890
|
{
|
|
27437
27891
|
ref,
|
|
@@ -27443,7 +27897,7 @@ var MenubarSubContent = React51.forwardRef(({ className, ...props }, ref) => /*
|
|
|
27443
27897
|
}
|
|
27444
27898
|
));
|
|
27445
27899
|
MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
|
|
27446
|
-
var MenubarContent =
|
|
27900
|
+
var MenubarContent = React50.forwardRef(({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx79(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx79(
|
|
27447
27901
|
MenubarPrimitive.Content,
|
|
27448
27902
|
{
|
|
27449
27903
|
ref,
|
|
@@ -27458,7 +27912,7 @@ var MenubarContent = React51.forwardRef(({ className, align = "start", alignOffs
|
|
|
27458
27912
|
}
|
|
27459
27913
|
) }));
|
|
27460
27914
|
MenubarContent.displayName = MenubarPrimitive.Content.displayName;
|
|
27461
|
-
var MenubarItem =
|
|
27915
|
+
var MenubarItem = React50.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx79(
|
|
27462
27916
|
MenubarPrimitive.Item,
|
|
27463
27917
|
{
|
|
27464
27918
|
ref,
|
|
@@ -27471,7 +27925,7 @@ var MenubarItem = React51.forwardRef(({ className, inset, ...props }, ref) => /*
|
|
|
27471
27925
|
}
|
|
27472
27926
|
));
|
|
27473
27927
|
MenubarItem.displayName = MenubarPrimitive.Item.displayName;
|
|
27474
|
-
var MenubarCheckboxItem =
|
|
27928
|
+
var MenubarCheckboxItem = React50.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs48(
|
|
27475
27929
|
MenubarPrimitive.CheckboxItem,
|
|
27476
27930
|
{
|
|
27477
27931
|
ref,
|
|
@@ -27482,13 +27936,13 @@ var MenubarCheckboxItem = React51.forwardRef(({ className, children, checked, ..
|
|
|
27482
27936
|
checked,
|
|
27483
27937
|
...props,
|
|
27484
27938
|
children: [
|
|
27485
|
-
/* @__PURE__ */
|
|
27939
|
+
/* @__PURE__ */ jsx79("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx79(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx79(Check8, { className: "h-4 w-4" }) }) }),
|
|
27486
27940
|
children
|
|
27487
27941
|
]
|
|
27488
27942
|
}
|
|
27489
27943
|
));
|
|
27490
27944
|
MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
|
|
27491
|
-
var MenubarRadioItem =
|
|
27945
|
+
var MenubarRadioItem = React50.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs48(
|
|
27492
27946
|
MenubarPrimitive.RadioItem,
|
|
27493
27947
|
{
|
|
27494
27948
|
ref,
|
|
@@ -27498,13 +27952,13 @@ var MenubarRadioItem = React51.forwardRef(({ className, children, ...props }, re
|
|
|
27498
27952
|
),
|
|
27499
27953
|
...props,
|
|
27500
27954
|
children: [
|
|
27501
|
-
/* @__PURE__ */
|
|
27955
|
+
/* @__PURE__ */ jsx79("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx79(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx79(Circle4, { className: "h-2 w-2 fill-current" }) }) }),
|
|
27502
27956
|
children
|
|
27503
27957
|
]
|
|
27504
27958
|
}
|
|
27505
27959
|
));
|
|
27506
27960
|
MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
|
|
27507
|
-
var MenubarLabel =
|
|
27961
|
+
var MenubarLabel = React50.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx79(
|
|
27508
27962
|
MenubarPrimitive.Label,
|
|
27509
27963
|
{
|
|
27510
27964
|
ref,
|
|
@@ -27513,20 +27967,20 @@ var MenubarLabel = React51.forwardRef(({ className, inset, ...props }, ref) => /
|
|
|
27513
27967
|
}
|
|
27514
27968
|
));
|
|
27515
27969
|
MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
|
|
27516
|
-
var MenubarSeparator =
|
|
27970
|
+
var MenubarSeparator = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(MenubarPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
|
|
27517
27971
|
MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
|
|
27518
27972
|
var MenubarShortcut = ({ className, ...props }) => {
|
|
27519
|
-
return /* @__PURE__ */
|
|
27973
|
+
return /* @__PURE__ */ jsx79("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
|
|
27520
27974
|
};
|
|
27521
27975
|
MenubarShortcut.displayname = "MenubarShortcut";
|
|
27522
27976
|
|
|
27523
27977
|
// src/components/ui/navigation-menu.tsx
|
|
27524
|
-
import * as
|
|
27978
|
+
import * as React51 from "react";
|
|
27525
27979
|
import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
|
|
27526
27980
|
import { cva as cva5 } from "class-variance-authority";
|
|
27527
27981
|
import { ChevronDown as ChevronDown7 } from "lucide-react";
|
|
27528
|
-
import { jsx as
|
|
27529
|
-
var NavigationMenu =
|
|
27982
|
+
import { jsx as jsx80, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
27983
|
+
var NavigationMenu = React51.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs49(
|
|
27530
27984
|
NavigationMenuPrimitive.Root,
|
|
27531
27985
|
{
|
|
27532
27986
|
ref,
|
|
@@ -27534,12 +27988,12 @@ var NavigationMenu = React52.forwardRef(({ className, children, ...props }, ref)
|
|
|
27534
27988
|
...props,
|
|
27535
27989
|
children: [
|
|
27536
27990
|
children,
|
|
27537
|
-
/* @__PURE__ */
|
|
27991
|
+
/* @__PURE__ */ jsx80(NavigationMenuViewport, {})
|
|
27538
27992
|
]
|
|
27539
27993
|
}
|
|
27540
27994
|
));
|
|
27541
27995
|
NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
|
|
27542
|
-
var NavigationMenuList =
|
|
27996
|
+
var NavigationMenuList = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80(
|
|
27543
27997
|
NavigationMenuPrimitive.List,
|
|
27544
27998
|
{
|
|
27545
27999
|
ref,
|
|
@@ -27552,7 +28006,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
|
|
|
27552
28006
|
var navigationMenuTriggerStyle = cva5(
|
|
27553
28007
|
"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
|
|
27554
28008
|
);
|
|
27555
|
-
var NavigationMenuTrigger =
|
|
28009
|
+
var NavigationMenuTrigger = React51.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs49(
|
|
27556
28010
|
NavigationMenuPrimitive.Trigger,
|
|
27557
28011
|
{
|
|
27558
28012
|
ref,
|
|
@@ -27561,7 +28015,7 @@ var NavigationMenuTrigger = React52.forwardRef(({ className, children, ...props
|
|
|
27561
28015
|
children: [
|
|
27562
28016
|
children,
|
|
27563
28017
|
" ",
|
|
27564
|
-
/* @__PURE__ */
|
|
28018
|
+
/* @__PURE__ */ jsx80(
|
|
27565
28019
|
ChevronDown7,
|
|
27566
28020
|
{
|
|
27567
28021
|
className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
|
|
@@ -27572,7 +28026,7 @@ var NavigationMenuTrigger = React52.forwardRef(({ className, children, ...props
|
|
|
27572
28026
|
}
|
|
27573
28027
|
));
|
|
27574
28028
|
NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
|
|
27575
|
-
var NavigationMenuContent =
|
|
28029
|
+
var NavigationMenuContent = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80(
|
|
27576
28030
|
NavigationMenuPrimitive.Content,
|
|
27577
28031
|
{
|
|
27578
28032
|
ref,
|
|
@@ -27585,7 +28039,7 @@ var NavigationMenuContent = React52.forwardRef(({ className, ...props }, ref) =>
|
|
|
27585
28039
|
));
|
|
27586
28040
|
NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
|
|
27587
28041
|
var NavigationMenuLink = NavigationMenuPrimitive.Link;
|
|
27588
|
-
var NavigationMenuViewport =
|
|
28042
|
+
var NavigationMenuViewport = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx80(
|
|
27589
28043
|
NavigationMenuPrimitive.Viewport,
|
|
27590
28044
|
{
|
|
27591
28045
|
className: cn(
|
|
@@ -27597,7 +28051,7 @@ var NavigationMenuViewport = React52.forwardRef(({ className, ...props }, ref) =
|
|
|
27597
28051
|
}
|
|
27598
28052
|
) }));
|
|
27599
28053
|
NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
|
|
27600
|
-
var NavigationMenuIndicator =
|
|
28054
|
+
var NavigationMenuIndicator = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80(
|
|
27601
28055
|
NavigationMenuPrimitive.Indicator,
|
|
27602
28056
|
{
|
|
27603
28057
|
ref,
|
|
@@ -27606,16 +28060,16 @@ var NavigationMenuIndicator = React52.forwardRef(({ className, ...props }, ref)
|
|
|
27606
28060
|
className
|
|
27607
28061
|
),
|
|
27608
28062
|
...props,
|
|
27609
|
-
children: /* @__PURE__ */
|
|
28063
|
+
children: /* @__PURE__ */ jsx80("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
|
|
27610
28064
|
}
|
|
27611
28065
|
));
|
|
27612
28066
|
NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
|
|
27613
28067
|
|
|
27614
28068
|
// src/components/ui/pagination.tsx
|
|
27615
|
-
import * as
|
|
28069
|
+
import * as React52 from "react";
|
|
27616
28070
|
import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight7, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
|
|
27617
|
-
import { jsx as
|
|
27618
|
-
var Pagination = ({ className, ...props }) => /* @__PURE__ */
|
|
28071
|
+
import { jsx as jsx81, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
28072
|
+
var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx81(
|
|
27619
28073
|
"nav",
|
|
27620
28074
|
{
|
|
27621
28075
|
role: "navigation",
|
|
@@ -27625,13 +28079,13 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx80(
|
|
|
27625
28079
|
}
|
|
27626
28080
|
);
|
|
27627
28081
|
Pagination.displayName = "Pagination";
|
|
27628
|
-
var PaginationContent =
|
|
27629
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28082
|
+
var PaginationContent = React52.forwardRef(
|
|
28083
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx81("ul", { ref, className: cn("flex flex-row items-center gap-1", className), ...props })
|
|
27630
28084
|
);
|
|
27631
28085
|
PaginationContent.displayName = "PaginationContent";
|
|
27632
|
-
var PaginationItem =
|
|
28086
|
+
var PaginationItem = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx81("li", { ref, className: cn("", className), ...props }));
|
|
27633
28087
|
PaginationItem.displayName = "PaginationItem";
|
|
27634
|
-
var PaginationLink = ({ className, isActive, size = "icon", ...props }) => /* @__PURE__ */
|
|
28088
|
+
var PaginationLink = ({ className, isActive, size = "icon", ...props }) => /* @__PURE__ */ jsx81(
|
|
27635
28089
|
"a",
|
|
27636
28090
|
{
|
|
27637
28091
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -27647,28 +28101,28 @@ var PaginationLink = ({ className, isActive, size = "icon", ...props }) => /* @_
|
|
|
27647
28101
|
);
|
|
27648
28102
|
PaginationLink.displayName = "PaginationLink";
|
|
27649
28103
|
var PaginationPrevious = ({ className, ...props }) => /* @__PURE__ */ jsxs50(PaginationLink, { "aria-label": "Go to previous page", size: "default", className: cn("gap-1 pl-2.5", className), ...props, children: [
|
|
27650
|
-
/* @__PURE__ */
|
|
27651
|
-
/* @__PURE__ */
|
|
28104
|
+
/* @__PURE__ */ jsx81(ChevronLeft2, { className: "h-4 w-4" }),
|
|
28105
|
+
/* @__PURE__ */ jsx81("span", { children: "Previous" })
|
|
27652
28106
|
] });
|
|
27653
28107
|
PaginationPrevious.displayName = "PaginationPrevious";
|
|
27654
28108
|
var PaginationNext = ({ className, ...props }) => /* @__PURE__ */ jsxs50(PaginationLink, { "aria-label": "Go to next page", size: "default", className: cn("gap-1 pr-2.5", className), ...props, children: [
|
|
27655
|
-
/* @__PURE__ */
|
|
27656
|
-
/* @__PURE__ */
|
|
28109
|
+
/* @__PURE__ */ jsx81("span", { children: "Next" }),
|
|
28110
|
+
/* @__PURE__ */ jsx81(ChevronRight7, { className: "h-4 w-4" })
|
|
27657
28111
|
] });
|
|
27658
28112
|
PaginationNext.displayName = "PaginationNext";
|
|
27659
28113
|
var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs50("span", { "aria-hidden": true, className: cn("flex h-9 w-9 items-center justify-center", className), ...props, children: [
|
|
27660
|
-
/* @__PURE__ */
|
|
27661
|
-
/* @__PURE__ */
|
|
28114
|
+
/* @__PURE__ */ jsx81(MoreHorizontal2, { className: "h-4 w-4" }),
|
|
28115
|
+
/* @__PURE__ */ jsx81("span", { className: "sr-only", children: "More pages" })
|
|
27662
28116
|
] });
|
|
27663
28117
|
PaginationEllipsis.displayName = "PaginationEllipsis";
|
|
27664
28118
|
|
|
27665
28119
|
// src/components/ui/popover.tsx
|
|
27666
|
-
import * as
|
|
28120
|
+
import * as React53 from "react";
|
|
27667
28121
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
27668
|
-
import { jsx as
|
|
28122
|
+
import { jsx as jsx82 } from "react/jsx-runtime";
|
|
27669
28123
|
var Popover = PopoverPrimitive.Root;
|
|
27670
28124
|
var PopoverTrigger = PopoverPrimitive.Trigger;
|
|
27671
|
-
var PopoverContent =
|
|
28125
|
+
var PopoverContent = React53.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx82(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx82(
|
|
27672
28126
|
PopoverPrimitive.Content,
|
|
27673
28127
|
{
|
|
27674
28128
|
ref,
|
|
@@ -27684,16 +28138,16 @@ var PopoverContent = React54.forwardRef(({ className, align = "center", sideOffs
|
|
|
27684
28138
|
PopoverContent.displayName = PopoverPrimitive.Content.displayName;
|
|
27685
28139
|
|
|
27686
28140
|
// src/components/ui/radio-group.tsx
|
|
27687
|
-
import * as
|
|
28141
|
+
import * as React54 from "react";
|
|
27688
28142
|
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
27689
28143
|
import { Circle as Circle5 } from "lucide-react";
|
|
27690
|
-
import { jsx as
|
|
27691
|
-
var RadioGroup4 =
|
|
27692
|
-
return /* @__PURE__ */
|
|
28144
|
+
import { jsx as jsx83 } from "react/jsx-runtime";
|
|
28145
|
+
var RadioGroup4 = React54.forwardRef(({ className, ...props }, ref) => {
|
|
28146
|
+
return /* @__PURE__ */ jsx83(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ...props, ref });
|
|
27693
28147
|
});
|
|
27694
28148
|
RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
|
|
27695
|
-
var RadioGroupItem =
|
|
27696
|
-
return /* @__PURE__ */
|
|
28149
|
+
var RadioGroupItem = React54.forwardRef(({ className, ...props }, ref) => {
|
|
28150
|
+
return /* @__PURE__ */ jsx83(
|
|
27697
28151
|
RadioGroupPrimitive.Item,
|
|
27698
28152
|
{
|
|
27699
28153
|
ref,
|
|
@@ -27702,7 +28156,7 @@ var RadioGroupItem = React55.forwardRef(({ className, ...props }, ref) => {
|
|
|
27702
28156
|
className
|
|
27703
28157
|
),
|
|
27704
28158
|
...props,
|
|
27705
|
-
children: /* @__PURE__ */
|
|
28159
|
+
children: /* @__PURE__ */ jsx83(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx83(Circle5, { className: "h-2.5 w-2.5 fill-current text-current" }) })
|
|
27706
28160
|
}
|
|
27707
28161
|
);
|
|
27708
28162
|
});
|
|
@@ -27711,8 +28165,8 @@ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
|
27711
28165
|
// src/components/ui/resizable.tsx
|
|
27712
28166
|
import { GripVertical } from "lucide-react";
|
|
27713
28167
|
import * as ResizablePrimitive from "react-resizable-panels";
|
|
27714
|
-
import { jsx as
|
|
27715
|
-
var ResizablePanelGroup = ({ className, ...props }) => /* @__PURE__ */
|
|
28168
|
+
import { jsx as jsx84 } from "react/jsx-runtime";
|
|
28169
|
+
var ResizablePanelGroup = ({ className, ...props }) => /* @__PURE__ */ jsx84(
|
|
27716
28170
|
ResizablePrimitive.PanelGroup,
|
|
27717
28171
|
{
|
|
27718
28172
|
className: cn("flex h-full w-full data-[panel-group-direction=vertical]:flex-col", className),
|
|
@@ -27724,7 +28178,7 @@ var ResizableHandle = ({
|
|
|
27724
28178
|
withHandle,
|
|
27725
28179
|
className,
|
|
27726
28180
|
...props
|
|
27727
|
-
}) => /* @__PURE__ */
|
|
28181
|
+
}) => /* @__PURE__ */ jsx84(
|
|
27728
28182
|
ResizablePrimitive.PanelResizeHandle,
|
|
27729
28183
|
{
|
|
27730
28184
|
className: cn(
|
|
@@ -27732,15 +28186,15 @@ var ResizableHandle = ({
|
|
|
27732
28186
|
className
|
|
27733
28187
|
),
|
|
27734
28188
|
...props,
|
|
27735
|
-
children: withHandle && /* @__PURE__ */
|
|
28189
|
+
children: withHandle && /* @__PURE__ */ jsx84("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx84(GripVertical, { className: "h-2.5 w-2.5" }) })
|
|
27736
28190
|
}
|
|
27737
28191
|
);
|
|
27738
28192
|
|
|
27739
28193
|
// src/components/ui/separator.tsx
|
|
27740
|
-
import * as
|
|
28194
|
+
import * as React55 from "react";
|
|
27741
28195
|
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
27742
|
-
import { jsx as
|
|
27743
|
-
var Separator5 =
|
|
28196
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
28197
|
+
var Separator5 = React55.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx85(
|
|
27744
28198
|
SeparatorPrimitive.Root,
|
|
27745
28199
|
{
|
|
27746
28200
|
ref,
|
|
@@ -27756,13 +28210,13 @@ Separator5.displayName = SeparatorPrimitive.Root.displayName;
|
|
|
27756
28210
|
import * as SheetPrimitive from "@radix-ui/react-dialog";
|
|
27757
28211
|
import { cva as cva6 } from "class-variance-authority";
|
|
27758
28212
|
import { X as X7 } from "lucide-react";
|
|
27759
|
-
import * as
|
|
27760
|
-
import { jsx as
|
|
28213
|
+
import * as React56 from "react";
|
|
28214
|
+
import { jsx as jsx86, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
27761
28215
|
var Sheet = SheetPrimitive.Root;
|
|
27762
28216
|
var SheetTrigger = SheetPrimitive.Trigger;
|
|
27763
28217
|
var SheetClose = SheetPrimitive.Close;
|
|
27764
28218
|
var SheetPortal = SheetPrimitive.Portal;
|
|
27765
|
-
var SheetOverlay =
|
|
28219
|
+
var SheetOverlay = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx86(
|
|
27766
28220
|
SheetPrimitive.Overlay,
|
|
27767
28221
|
{
|
|
27768
28222
|
className: cn(
|
|
@@ -27790,7 +28244,7 @@ var sheetVariants = cva6(
|
|
|
27790
28244
|
}
|
|
27791
28245
|
}
|
|
27792
28246
|
);
|
|
27793
|
-
var SheetContent =
|
|
28247
|
+
var SheetContent = React56.forwardRef(
|
|
27794
28248
|
({
|
|
27795
28249
|
side = "right",
|
|
27796
28250
|
className,
|
|
@@ -27800,7 +28254,7 @@ var SheetContent = React57.forwardRef(
|
|
|
27800
28254
|
closeButtonLabel = "Close",
|
|
27801
28255
|
...props
|
|
27802
28256
|
}, ref) => /* @__PURE__ */ jsxs51(SheetPortal, { children: [
|
|
27803
|
-
/* @__PURE__ */
|
|
28257
|
+
/* @__PURE__ */ jsx86(SheetOverlay, {}),
|
|
27804
28258
|
/* @__PURE__ */ jsxs51(SheetPrimitive.Content, { ref, className: cn(sheetVariants({ side }), className), ...props, children: [
|
|
27805
28259
|
children,
|
|
27806
28260
|
showCloseButton ? /* @__PURE__ */ jsxs51(
|
|
@@ -27811,8 +28265,8 @@ var SheetContent = React57.forwardRef(
|
|
|
27811
28265
|
closeButtonClassName
|
|
27812
28266
|
),
|
|
27813
28267
|
children: [
|
|
27814
|
-
/* @__PURE__ */
|
|
27815
|
-
/* @__PURE__ */
|
|
28268
|
+
/* @__PURE__ */ jsx86(X7, { className: "h-4 w-4" }),
|
|
28269
|
+
/* @__PURE__ */ jsx86("span", { className: "sr-only", children: closeButtonLabel })
|
|
27816
28270
|
]
|
|
27817
28271
|
}
|
|
27818
28272
|
) : null
|
|
@@ -27820,27 +28274,27 @@ var SheetContent = React57.forwardRef(
|
|
|
27820
28274
|
] })
|
|
27821
28275
|
);
|
|
27822
28276
|
SheetContent.displayName = SheetPrimitive.Content.displayName;
|
|
27823
|
-
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */
|
|
28277
|
+
var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx86("div", { className: cn("flex flex-col space-y-2 text-center sm:text-left", className), ...props });
|
|
27824
28278
|
SheetHeader.displayName = "SheetHeader";
|
|
27825
|
-
var SheetFooter = ({ className, ...props }) => /* @__PURE__ */
|
|
28279
|
+
var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx86("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
|
|
27826
28280
|
SheetFooter.displayName = "SheetFooter";
|
|
27827
|
-
var SheetTitle =
|
|
28281
|
+
var SheetTitle = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx86(SheetPrimitive.Title, { ref, className: cn("text-lg font-semibold text-foreground", className), ...props }));
|
|
27828
28282
|
SheetTitle.displayName = SheetPrimitive.Title.displayName;
|
|
27829
|
-
var SheetDescription =
|
|
28283
|
+
var SheetDescription = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx86(SheetPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
|
|
27830
28284
|
SheetDescription.displayName = SheetPrimitive.Description.displayName;
|
|
27831
28285
|
|
|
27832
28286
|
// src/components/ui/sidebar.tsx
|
|
27833
|
-
import * as
|
|
28287
|
+
import * as React58 from "react";
|
|
27834
28288
|
import { Slot as Slot4 } from "@radix-ui/react-slot";
|
|
27835
28289
|
import { cva as cva7 } from "class-variance-authority";
|
|
27836
28290
|
import { PanelLeft as PanelLeft2 } from "lucide-react";
|
|
27837
28291
|
|
|
27838
28292
|
// src/hooks/use-mobile.tsx
|
|
27839
|
-
import * as
|
|
28293
|
+
import * as React57 from "react";
|
|
27840
28294
|
var MOBILE_BREAKPOINT = 768;
|
|
27841
28295
|
function useIsMobile() {
|
|
27842
|
-
const [isMobile, setIsMobile] =
|
|
27843
|
-
|
|
28296
|
+
const [isMobile, setIsMobile] = React57.useState(void 0);
|
|
28297
|
+
React57.useEffect(() => {
|
|
27844
28298
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
27845
28299
|
const onChange = () => {
|
|
27846
28300
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -27853,27 +28307,27 @@ function useIsMobile() {
|
|
|
27853
28307
|
}
|
|
27854
28308
|
|
|
27855
28309
|
// src/components/ui/sidebar.tsx
|
|
27856
|
-
import { jsx as
|
|
28310
|
+
import { jsx as jsx87, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
27857
28311
|
var SIDEBAR_COOKIE_NAME = "sidebar:state";
|
|
27858
28312
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
27859
28313
|
var SIDEBAR_WIDTH = "16rem";
|
|
27860
28314
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
27861
28315
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
27862
28316
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
27863
|
-
var SidebarContext =
|
|
28317
|
+
var SidebarContext = React58.createContext(null);
|
|
27864
28318
|
function useSidebar() {
|
|
27865
|
-
const context =
|
|
28319
|
+
const context = React58.useContext(SidebarContext);
|
|
27866
28320
|
if (!context) {
|
|
27867
28321
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
27868
28322
|
}
|
|
27869
28323
|
return context;
|
|
27870
28324
|
}
|
|
27871
|
-
var SidebarProvider =
|
|
28325
|
+
var SidebarProvider = React58.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {
|
|
27872
28326
|
const isMobile = useIsMobile();
|
|
27873
|
-
const [openMobile, setOpenMobile] =
|
|
27874
|
-
const [_open, _setOpen] =
|
|
28327
|
+
const [openMobile, setOpenMobile] = React58.useState(false);
|
|
28328
|
+
const [_open, _setOpen] = React58.useState(defaultOpen);
|
|
27875
28329
|
const open = openProp != null ? openProp : _open;
|
|
27876
|
-
const setOpen =
|
|
28330
|
+
const setOpen = React58.useCallback(
|
|
27877
28331
|
(value) => {
|
|
27878
28332
|
const openState = typeof value === "function" ? value(open) : value;
|
|
27879
28333
|
if (setOpenProp) {
|
|
@@ -27885,10 +28339,10 @@ var SidebarProvider = React59.forwardRef(({ defaultOpen = true, open: openProp,
|
|
|
27885
28339
|
},
|
|
27886
28340
|
[setOpenProp, open]
|
|
27887
28341
|
);
|
|
27888
|
-
const toggleSidebar =
|
|
28342
|
+
const toggleSidebar = React58.useCallback(() => {
|
|
27889
28343
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
27890
28344
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
27891
|
-
|
|
28345
|
+
React58.useEffect(() => {
|
|
27892
28346
|
const handleKeyDown = (event) => {
|
|
27893
28347
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
27894
28348
|
event.preventDefault();
|
|
@@ -27899,7 +28353,7 @@ var SidebarProvider = React59.forwardRef(({ defaultOpen = true, open: openProp,
|
|
|
27899
28353
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
27900
28354
|
}, [toggleSidebar]);
|
|
27901
28355
|
const state = open ? "expanded" : "collapsed";
|
|
27902
|
-
const contextValue =
|
|
28356
|
+
const contextValue = React58.useMemo(
|
|
27903
28357
|
() => ({
|
|
27904
28358
|
state,
|
|
27905
28359
|
open,
|
|
@@ -27911,7 +28365,7 @@ var SidebarProvider = React59.forwardRef(({ defaultOpen = true, open: openProp,
|
|
|
27911
28365
|
}),
|
|
27912
28366
|
[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
|
|
27913
28367
|
);
|
|
27914
|
-
return /* @__PURE__ */
|
|
28368
|
+
return /* @__PURE__ */ jsx87(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx87(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx87(
|
|
27915
28369
|
"div",
|
|
27916
28370
|
{
|
|
27917
28371
|
style: {
|
|
@@ -27927,10 +28381,10 @@ var SidebarProvider = React59.forwardRef(({ defaultOpen = true, open: openProp,
|
|
|
27927
28381
|
) }) });
|
|
27928
28382
|
});
|
|
27929
28383
|
SidebarProvider.displayName = "SidebarProvider";
|
|
27930
|
-
var Sidebar =
|
|
28384
|
+
var Sidebar = React58.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref) => {
|
|
27931
28385
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
27932
28386
|
if (collapsible === "none") {
|
|
27933
|
-
return /* @__PURE__ */
|
|
28387
|
+
return /* @__PURE__ */ jsx87(
|
|
27934
28388
|
"div",
|
|
27935
28389
|
{
|
|
27936
28390
|
className: cn("flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground", className),
|
|
@@ -27941,7 +28395,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
27941
28395
|
);
|
|
27942
28396
|
}
|
|
27943
28397
|
if (isMobile) {
|
|
27944
|
-
return /* @__PURE__ */
|
|
28398
|
+
return /* @__PURE__ */ jsx87(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: /* @__PURE__ */ jsx87(
|
|
27945
28399
|
SheetContent,
|
|
27946
28400
|
{
|
|
27947
28401
|
"data-sidebar": "sidebar",
|
|
@@ -27951,7 +28405,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
27951
28405
|
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
27952
28406
|
},
|
|
27953
28407
|
side,
|
|
27954
|
-
children: /* @__PURE__ */
|
|
28408
|
+
children: /* @__PURE__ */ jsx87("div", { className: "flex h-full w-full flex-col", children })
|
|
27955
28409
|
}
|
|
27956
28410
|
) });
|
|
27957
28411
|
}
|
|
@@ -27965,7 +28419,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
27965
28419
|
"data-variant": variant,
|
|
27966
28420
|
"data-side": side,
|
|
27967
28421
|
children: [
|
|
27968
|
-
/* @__PURE__ */
|
|
28422
|
+
/* @__PURE__ */ jsx87(
|
|
27969
28423
|
"div",
|
|
27970
28424
|
{
|
|
27971
28425
|
className: cn(
|
|
@@ -27976,7 +28430,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
27976
28430
|
)
|
|
27977
28431
|
}
|
|
27978
28432
|
),
|
|
27979
|
-
/* @__PURE__ */
|
|
28433
|
+
/* @__PURE__ */ jsx87(
|
|
27980
28434
|
"div",
|
|
27981
28435
|
{
|
|
27982
28436
|
className: cn(
|
|
@@ -27987,7 +28441,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
27987
28441
|
className
|
|
27988
28442
|
),
|
|
27989
28443
|
...props,
|
|
27990
|
-
children: /* @__PURE__ */
|
|
28444
|
+
children: /* @__PURE__ */ jsx87(
|
|
27991
28445
|
"div",
|
|
27992
28446
|
{
|
|
27993
28447
|
"data-sidebar": "sidebar",
|
|
@@ -28002,7 +28456,7 @@ var Sidebar = React59.forwardRef(({ side = "left", variant = "sidebar", collapsi
|
|
|
28002
28456
|
);
|
|
28003
28457
|
});
|
|
28004
28458
|
Sidebar.displayName = "Sidebar";
|
|
28005
|
-
var SidebarTrigger =
|
|
28459
|
+
var SidebarTrigger = React58.forwardRef(
|
|
28006
28460
|
({ className, onClick, ...props }, ref) => {
|
|
28007
28461
|
const { toggleSidebar } = useSidebar();
|
|
28008
28462
|
return /* @__PURE__ */ jsxs52(
|
|
@@ -28019,18 +28473,18 @@ var SidebarTrigger = React59.forwardRef(
|
|
|
28019
28473
|
},
|
|
28020
28474
|
...props,
|
|
28021
28475
|
children: [
|
|
28022
|
-
/* @__PURE__ */
|
|
28023
|
-
/* @__PURE__ */
|
|
28476
|
+
/* @__PURE__ */ jsx87(PanelLeft2, {}),
|
|
28477
|
+
/* @__PURE__ */ jsx87("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
28024
28478
|
]
|
|
28025
28479
|
}
|
|
28026
28480
|
);
|
|
28027
28481
|
}
|
|
28028
28482
|
);
|
|
28029
28483
|
SidebarTrigger.displayName = "SidebarTrigger";
|
|
28030
|
-
var SidebarRail =
|
|
28484
|
+
var SidebarRail = React58.forwardRef(
|
|
28031
28485
|
({ className, ...props }, ref) => {
|
|
28032
28486
|
const { toggleSidebar } = useSidebar();
|
|
28033
|
-
return /* @__PURE__ */
|
|
28487
|
+
return /* @__PURE__ */ jsx87(
|
|
28034
28488
|
"button",
|
|
28035
28489
|
{
|
|
28036
28490
|
ref,
|
|
@@ -28054,8 +28508,8 @@ var SidebarRail = React59.forwardRef(
|
|
|
28054
28508
|
}
|
|
28055
28509
|
);
|
|
28056
28510
|
SidebarRail.displayName = "SidebarRail";
|
|
28057
|
-
var SidebarInset =
|
|
28058
|
-
return /* @__PURE__ */
|
|
28511
|
+
var SidebarInset = React58.forwardRef(({ className, ...props }, ref) => {
|
|
28512
|
+
return /* @__PURE__ */ jsx87(
|
|
28059
28513
|
"main",
|
|
28060
28514
|
{
|
|
28061
28515
|
ref,
|
|
@@ -28069,9 +28523,9 @@ var SidebarInset = React59.forwardRef(({ className, ...props }, ref) => {
|
|
|
28069
28523
|
);
|
|
28070
28524
|
});
|
|
28071
28525
|
SidebarInset.displayName = "SidebarInset";
|
|
28072
|
-
var SidebarInput =
|
|
28526
|
+
var SidebarInput = React58.forwardRef(
|
|
28073
28527
|
({ className, ...props }, ref) => {
|
|
28074
|
-
return /* @__PURE__ */
|
|
28528
|
+
return /* @__PURE__ */ jsx87(
|
|
28075
28529
|
Input,
|
|
28076
28530
|
{
|
|
28077
28531
|
ref,
|
|
@@ -28086,17 +28540,17 @@ var SidebarInput = React59.forwardRef(
|
|
|
28086
28540
|
}
|
|
28087
28541
|
);
|
|
28088
28542
|
SidebarInput.displayName = "SidebarInput";
|
|
28089
|
-
var SidebarHeader =
|
|
28090
|
-
return /* @__PURE__ */
|
|
28543
|
+
var SidebarHeader = React58.forwardRef(({ className, ...props }, ref) => {
|
|
28544
|
+
return /* @__PURE__ */ jsx87("div", { ref, "data-sidebar": "header", className: cn("flex flex-col gap-2 p-2", className), ...props });
|
|
28091
28545
|
});
|
|
28092
28546
|
SidebarHeader.displayName = "SidebarHeader";
|
|
28093
|
-
var SidebarFooter =
|
|
28094
|
-
return /* @__PURE__ */
|
|
28547
|
+
var SidebarFooter = React58.forwardRef(({ className, ...props }, ref) => {
|
|
28548
|
+
return /* @__PURE__ */ jsx87("div", { ref, "data-sidebar": "footer", className: cn("flex flex-col gap-2 p-2", className), ...props });
|
|
28095
28549
|
});
|
|
28096
28550
|
SidebarFooter.displayName = "SidebarFooter";
|
|
28097
|
-
var SidebarSeparator =
|
|
28551
|
+
var SidebarSeparator = React58.forwardRef(
|
|
28098
28552
|
({ className, ...props }, ref) => {
|
|
28099
|
-
return /* @__PURE__ */
|
|
28553
|
+
return /* @__PURE__ */ jsx87(
|
|
28100
28554
|
Separator5,
|
|
28101
28555
|
{
|
|
28102
28556
|
ref,
|
|
@@ -28108,8 +28562,8 @@ var SidebarSeparator = React59.forwardRef(
|
|
|
28108
28562
|
}
|
|
28109
28563
|
);
|
|
28110
28564
|
SidebarSeparator.displayName = "SidebarSeparator";
|
|
28111
|
-
var SidebarContent =
|
|
28112
|
-
return /* @__PURE__ */
|
|
28565
|
+
var SidebarContent = React58.forwardRef(({ className, ...props }, ref) => {
|
|
28566
|
+
return /* @__PURE__ */ jsx87(
|
|
28113
28567
|
"div",
|
|
28114
28568
|
{
|
|
28115
28569
|
ref,
|
|
@@ -28123,8 +28577,8 @@ var SidebarContent = React59.forwardRef(({ className, ...props }, ref) => {
|
|
|
28123
28577
|
);
|
|
28124
28578
|
});
|
|
28125
28579
|
SidebarContent.displayName = "SidebarContent";
|
|
28126
|
-
var SidebarGroup =
|
|
28127
|
-
return /* @__PURE__ */
|
|
28580
|
+
var SidebarGroup = React58.forwardRef(({ className, ...props }, ref) => {
|
|
28581
|
+
return /* @__PURE__ */ jsx87(
|
|
28128
28582
|
"div",
|
|
28129
28583
|
{
|
|
28130
28584
|
ref,
|
|
@@ -28135,10 +28589,10 @@ var SidebarGroup = React59.forwardRef(({ className, ...props }, ref) => {
|
|
|
28135
28589
|
);
|
|
28136
28590
|
});
|
|
28137
28591
|
SidebarGroup.displayName = "SidebarGroup";
|
|
28138
|
-
var SidebarGroupLabel =
|
|
28592
|
+
var SidebarGroupLabel = React58.forwardRef(
|
|
28139
28593
|
({ className, asChild = false, ...props }, ref) => {
|
|
28140
28594
|
const Comp = asChild ? Slot4 : "div";
|
|
28141
|
-
return /* @__PURE__ */
|
|
28595
|
+
return /* @__PURE__ */ jsx87(
|
|
28142
28596
|
Comp,
|
|
28143
28597
|
{
|
|
28144
28598
|
ref,
|
|
@@ -28154,10 +28608,10 @@ var SidebarGroupLabel = React59.forwardRef(
|
|
|
28154
28608
|
}
|
|
28155
28609
|
);
|
|
28156
28610
|
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
28157
|
-
var SidebarGroupAction =
|
|
28611
|
+
var SidebarGroupAction = React58.forwardRef(
|
|
28158
28612
|
({ className, asChild = false, ...props }, ref) => {
|
|
28159
28613
|
const Comp = asChild ? Slot4 : "button";
|
|
28160
|
-
return /* @__PURE__ */
|
|
28614
|
+
return /* @__PURE__ */ jsx87(
|
|
28161
28615
|
Comp,
|
|
28162
28616
|
{
|
|
28163
28617
|
ref,
|
|
@@ -28175,13 +28629,13 @@ var SidebarGroupAction = React59.forwardRef(
|
|
|
28175
28629
|
}
|
|
28176
28630
|
);
|
|
28177
28631
|
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
28178
|
-
var SidebarGroupContent =
|
|
28179
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28632
|
+
var SidebarGroupContent = React58.forwardRef(
|
|
28633
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx87("div", { ref, "data-sidebar": "group-content", className: cn("w-full text-sm", className), ...props })
|
|
28180
28634
|
);
|
|
28181
28635
|
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
28182
|
-
var SidebarMenu =
|
|
28636
|
+
var SidebarMenu = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx87("ul", { ref, "data-sidebar": "menu", className: cn("flex w-full min-w-0 flex-col gap-1", className), ...props }));
|
|
28183
28637
|
SidebarMenu.displayName = "SidebarMenu";
|
|
28184
|
-
var SidebarMenuItem =
|
|
28638
|
+
var SidebarMenuItem = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx87("li", { ref, "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props }));
|
|
28185
28639
|
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
28186
28640
|
var sidebarMenuButtonVariants = cva7(
|
|
28187
28641
|
"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
@@ -28203,10 +28657,10 @@ var sidebarMenuButtonVariants = cva7(
|
|
|
28203
28657
|
}
|
|
28204
28658
|
}
|
|
28205
28659
|
);
|
|
28206
|
-
var SidebarMenuButton =
|
|
28660
|
+
var SidebarMenuButton = React58.forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }, ref) => {
|
|
28207
28661
|
const Comp = asChild ? Slot4 : "button";
|
|
28208
28662
|
const { isMobile, state } = useSidebar();
|
|
28209
|
-
const button = /* @__PURE__ */
|
|
28663
|
+
const button = /* @__PURE__ */ jsx87(
|
|
28210
28664
|
Comp,
|
|
28211
28665
|
{
|
|
28212
28666
|
ref,
|
|
@@ -28226,14 +28680,14 @@ var SidebarMenuButton = React59.forwardRef(({ asChild = false, isActive = false,
|
|
|
28226
28680
|
};
|
|
28227
28681
|
}
|
|
28228
28682
|
return /* @__PURE__ */ jsxs52(Tooltip, { children: [
|
|
28229
|
-
/* @__PURE__ */
|
|
28230
|
-
/* @__PURE__ */
|
|
28683
|
+
/* @__PURE__ */ jsx87(TooltipTrigger, { asChild: true, children: button }),
|
|
28684
|
+
/* @__PURE__ */ jsx87(TooltipContent, { side: "right", align: "center", hidden: state !== "collapsed" || isMobile, ...tooltip })
|
|
28231
28685
|
] });
|
|
28232
28686
|
});
|
|
28233
28687
|
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
28234
|
-
var SidebarMenuAction =
|
|
28688
|
+
var SidebarMenuAction = React58.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
|
|
28235
28689
|
const Comp = asChild ? Slot4 : "button";
|
|
28236
|
-
return /* @__PURE__ */
|
|
28690
|
+
return /* @__PURE__ */ jsx87(
|
|
28237
28691
|
Comp,
|
|
28238
28692
|
{
|
|
28239
28693
|
ref,
|
|
@@ -28254,8 +28708,8 @@ var SidebarMenuAction = React59.forwardRef(({ className, asChild = false, showOn
|
|
|
28254
28708
|
);
|
|
28255
28709
|
});
|
|
28256
28710
|
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
28257
|
-
var SidebarMenuBadge =
|
|
28258
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28711
|
+
var SidebarMenuBadge = React58.forwardRef(
|
|
28712
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx87(
|
|
28259
28713
|
"div",
|
|
28260
28714
|
{
|
|
28261
28715
|
ref,
|
|
@@ -28274,8 +28728,8 @@ var SidebarMenuBadge = React59.forwardRef(
|
|
|
28274
28728
|
)
|
|
28275
28729
|
);
|
|
28276
28730
|
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
28277
|
-
var SidebarMenuSkeleton =
|
|
28278
|
-
const width =
|
|
28731
|
+
var SidebarMenuSkeleton = React58.forwardRef(({ className, showIcon = false, ...props }, ref) => {
|
|
28732
|
+
const width = React58.useMemo(() => {
|
|
28279
28733
|
return `${Math.floor(Math.random() * 40) + 50}%`;
|
|
28280
28734
|
}, []);
|
|
28281
28735
|
return /* @__PURE__ */ jsxs52(
|
|
@@ -28286,8 +28740,8 @@ var SidebarMenuSkeleton = React59.forwardRef(({ className, showIcon = false, ...
|
|
|
28286
28740
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
28287
28741
|
...props,
|
|
28288
28742
|
children: [
|
|
28289
|
-
showIcon && /* @__PURE__ */
|
|
28290
|
-
/* @__PURE__ */
|
|
28743
|
+
showIcon && /* @__PURE__ */ jsx87(Skeleton, { className: "size-4 rounded-md", "data-sidebar": "menu-skeleton-icon" }),
|
|
28744
|
+
/* @__PURE__ */ jsx87(
|
|
28291
28745
|
Skeleton,
|
|
28292
28746
|
{
|
|
28293
28747
|
className: "h-4 max-w-[--skeleton-width] flex-1",
|
|
@@ -28302,8 +28756,8 @@ var SidebarMenuSkeleton = React59.forwardRef(({ className, showIcon = false, ...
|
|
|
28302
28756
|
);
|
|
28303
28757
|
});
|
|
28304
28758
|
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
28305
|
-
var SidebarMenuSub =
|
|
28306
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28759
|
+
var SidebarMenuSub = React58.forwardRef(
|
|
28760
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx87(
|
|
28307
28761
|
"ul",
|
|
28308
28762
|
{
|
|
28309
28763
|
ref,
|
|
@@ -28318,11 +28772,11 @@ var SidebarMenuSub = React59.forwardRef(
|
|
|
28318
28772
|
)
|
|
28319
28773
|
);
|
|
28320
28774
|
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
28321
|
-
var SidebarMenuSubItem =
|
|
28775
|
+
var SidebarMenuSubItem = React58.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx87("li", { ref, ...props }));
|
|
28322
28776
|
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
28323
|
-
var SidebarMenuSubButton =
|
|
28777
|
+
var SidebarMenuSubButton = React58.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
|
|
28324
28778
|
const Comp = asChild ? Slot4 : "a";
|
|
28325
|
-
return /* @__PURE__ */
|
|
28779
|
+
return /* @__PURE__ */ jsx87(
|
|
28326
28780
|
Comp,
|
|
28327
28781
|
{
|
|
28328
28782
|
ref,
|
|
@@ -28344,44 +28798,44 @@ var SidebarMenuSubButton = React59.forwardRef(({ asChild = false, size = "md", i
|
|
|
28344
28798
|
SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
|
|
28345
28799
|
|
|
28346
28800
|
// src/components/ui/slider.tsx
|
|
28347
|
-
import * as
|
|
28801
|
+
import * as React59 from "react";
|
|
28348
28802
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
28349
|
-
import { jsx as
|
|
28350
|
-
var Slider =
|
|
28803
|
+
import { jsx as jsx88, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
28804
|
+
var Slider = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs53(
|
|
28351
28805
|
SliderPrimitive.Root,
|
|
28352
28806
|
{
|
|
28353
28807
|
ref,
|
|
28354
28808
|
className: cn("relative flex w-full touch-none select-none items-center", className),
|
|
28355
28809
|
...props,
|
|
28356
28810
|
children: [
|
|
28357
|
-
/* @__PURE__ */
|
|
28358
|
-
/* @__PURE__ */
|
|
28811
|
+
/* @__PURE__ */ jsx88(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ jsx88(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
|
|
28812
|
+
/* @__PURE__ */ jsx88(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })
|
|
28359
28813
|
]
|
|
28360
28814
|
}
|
|
28361
28815
|
));
|
|
28362
28816
|
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
28363
28817
|
|
|
28364
28818
|
// src/components/ui/table.tsx
|
|
28365
|
-
import * as
|
|
28366
|
-
import { jsx as
|
|
28367
|
-
var Table =
|
|
28368
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28819
|
+
import * as React60 from "react";
|
|
28820
|
+
import { jsx as jsx89 } from "react/jsx-runtime";
|
|
28821
|
+
var Table = React60.forwardRef(
|
|
28822
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx89("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) })
|
|
28369
28823
|
);
|
|
28370
28824
|
Table.displayName = "Table";
|
|
28371
|
-
var TableHeader =
|
|
28372
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28825
|
+
var TableHeader = React60.forwardRef(
|
|
28826
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("thead", { ref, className: cn("[&_tr]:border-b", className), ...props })
|
|
28373
28827
|
);
|
|
28374
28828
|
TableHeader.displayName = "TableHeader";
|
|
28375
|
-
var TableBody =
|
|
28376
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28829
|
+
var TableBody = React60.forwardRef(
|
|
28830
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props })
|
|
28377
28831
|
);
|
|
28378
28832
|
TableBody.displayName = "TableBody";
|
|
28379
|
-
var TableFooter =
|
|
28380
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28833
|
+
var TableFooter = React60.forwardRef(
|
|
28834
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("tfoot", { ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })
|
|
28381
28835
|
);
|
|
28382
28836
|
TableFooter.displayName = "TableFooter";
|
|
28383
|
-
var TableRow =
|
|
28384
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28837
|
+
var TableRow = React60.forwardRef(
|
|
28838
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89(
|
|
28385
28839
|
"tr",
|
|
28386
28840
|
{
|
|
28387
28841
|
ref,
|
|
@@ -28391,8 +28845,8 @@ var TableRow = React61.forwardRef(
|
|
|
28391
28845
|
)
|
|
28392
28846
|
);
|
|
28393
28847
|
TableRow.displayName = "TableRow";
|
|
28394
|
-
var TableHead =
|
|
28395
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28848
|
+
var TableHead = React60.forwardRef(
|
|
28849
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89(
|
|
28396
28850
|
"th",
|
|
28397
28851
|
{
|
|
28398
28852
|
ref,
|
|
@@ -28405,23 +28859,23 @@ var TableHead = React61.forwardRef(
|
|
|
28405
28859
|
)
|
|
28406
28860
|
);
|
|
28407
28861
|
TableHead.displayName = "TableHead";
|
|
28408
|
-
var TableCell =
|
|
28409
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28862
|
+
var TableCell = React60.forwardRef(
|
|
28863
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("td", { ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className), ...props })
|
|
28410
28864
|
);
|
|
28411
28865
|
TableCell.displayName = "TableCell";
|
|
28412
|
-
var TableCaption =
|
|
28413
|
-
({ className, ...props }, ref) => /* @__PURE__ */
|
|
28866
|
+
var TableCaption = React60.forwardRef(
|
|
28867
|
+
({ className, ...props }, ref) => /* @__PURE__ */ jsx89("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })
|
|
28414
28868
|
);
|
|
28415
28869
|
TableCaption.displayName = "TableCaption";
|
|
28416
28870
|
|
|
28417
28871
|
// src/components/ui/toast.tsx
|
|
28418
|
-
import * as
|
|
28872
|
+
import * as React61 from "react";
|
|
28419
28873
|
import * as ToastPrimitives from "@radix-ui/react-toast";
|
|
28420
28874
|
import { cva as cva8 } from "class-variance-authority";
|
|
28421
28875
|
import { X as X8 } from "lucide-react";
|
|
28422
|
-
import { jsx as
|
|
28876
|
+
import { jsx as jsx90 } from "react/jsx-runtime";
|
|
28423
28877
|
var ToastProvider = ToastPrimitives.Provider;
|
|
28424
|
-
var ToastViewport =
|
|
28878
|
+
var ToastViewport = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx90(
|
|
28425
28879
|
ToastPrimitives.Viewport,
|
|
28426
28880
|
{
|
|
28427
28881
|
ref,
|
|
@@ -28447,11 +28901,11 @@ var toastVariants = cva8(
|
|
|
28447
28901
|
}
|
|
28448
28902
|
}
|
|
28449
28903
|
);
|
|
28450
|
-
var Toast =
|
|
28451
|
-
return /* @__PURE__ */
|
|
28904
|
+
var Toast = React61.forwardRef(({ className, variant, ...props }, ref) => {
|
|
28905
|
+
return /* @__PURE__ */ jsx90(ToastPrimitives.Root, { ref, className: cn(toastVariants({ variant }), className), ...props });
|
|
28452
28906
|
});
|
|
28453
28907
|
Toast.displayName = ToastPrimitives.Root.displayName;
|
|
28454
|
-
var ToastAction =
|
|
28908
|
+
var ToastAction = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx90(
|
|
28455
28909
|
ToastPrimitives.Action,
|
|
28456
28910
|
{
|
|
28457
28911
|
ref,
|
|
@@ -28463,7 +28917,7 @@ var ToastAction = React62.forwardRef(({ className, ...props }, ref) => /* @__PUR
|
|
|
28463
28917
|
}
|
|
28464
28918
|
));
|
|
28465
28919
|
ToastAction.displayName = ToastPrimitives.Action.displayName;
|
|
28466
|
-
var ToastClose =
|
|
28920
|
+
var ToastClose = React61.forwardRef(({ className, onClick, ...props }, ref) => /* @__PURE__ */ jsx90(
|
|
28467
28921
|
ToastPrimitives.Close,
|
|
28468
28922
|
{
|
|
28469
28923
|
ref,
|
|
@@ -28477,39 +28931,39 @@ var ToastClose = React62.forwardRef(({ className, onClick, ...props }, ref) => /
|
|
|
28477
28931
|
},
|
|
28478
28932
|
"toast-close": "",
|
|
28479
28933
|
...props,
|
|
28480
|
-
children: /* @__PURE__ */
|
|
28934
|
+
children: /* @__PURE__ */ jsx90(X8, { className: "h-4 w-4" })
|
|
28481
28935
|
}
|
|
28482
28936
|
));
|
|
28483
28937
|
ToastClose.displayName = ToastPrimitives.Close.displayName;
|
|
28484
|
-
var ToastTitle =
|
|
28938
|
+
var ToastTitle = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx90(ToastPrimitives.Title, { ref, className: cn("text-sm font-semibold", className), ...props }));
|
|
28485
28939
|
ToastTitle.displayName = ToastPrimitives.Title.displayName;
|
|
28486
|
-
var ToastDescription =
|
|
28940
|
+
var ToastDescription = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx90(ToastPrimitives.Description, { ref, className: cn("text-sm opacity-90", className), ...props }));
|
|
28487
28941
|
ToastDescription.displayName = ToastPrimitives.Description.displayName;
|
|
28488
28942
|
|
|
28489
28943
|
// src/components/ui/toaster.tsx
|
|
28490
|
-
import { jsx as
|
|
28944
|
+
import { jsx as jsx91, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
28491
28945
|
function Toaster2() {
|
|
28492
28946
|
const { toasts } = useToast();
|
|
28493
28947
|
return /* @__PURE__ */ jsxs54(ToastProvider, { children: [
|
|
28494
28948
|
toasts.map(function({ id, title, description, action, ...props }) {
|
|
28495
28949
|
return /* @__PURE__ */ jsxs54(Toast, { ...props, children: [
|
|
28496
28950
|
/* @__PURE__ */ jsxs54("div", { className: "grid gap-1", children: [
|
|
28497
|
-
title && /* @__PURE__ */
|
|
28498
|
-
description && /* @__PURE__ */
|
|
28951
|
+
title && /* @__PURE__ */ jsx91(ToastTitle, { children: title }),
|
|
28952
|
+
description && /* @__PURE__ */ jsx91(ToastDescription, { children: description })
|
|
28499
28953
|
] }),
|
|
28500
28954
|
action,
|
|
28501
|
-
/* @__PURE__ */
|
|
28955
|
+
/* @__PURE__ */ jsx91(ToastClose, {})
|
|
28502
28956
|
] }, id);
|
|
28503
28957
|
}),
|
|
28504
|
-
/* @__PURE__ */
|
|
28958
|
+
/* @__PURE__ */ jsx91(ToastViewport, {})
|
|
28505
28959
|
] });
|
|
28506
28960
|
}
|
|
28507
28961
|
|
|
28508
28962
|
// src/components/ui/toggle.tsx
|
|
28509
|
-
import * as
|
|
28963
|
+
import * as React62 from "react";
|
|
28510
28964
|
import * as TogglePrimitive from "@radix-ui/react-toggle";
|
|
28511
28965
|
import { cva as cva9 } from "class-variance-authority";
|
|
28512
|
-
import { jsx as
|
|
28966
|
+
import { jsx as jsx92 } from "react/jsx-runtime";
|
|
28513
28967
|
var toggleVariants = cva9(
|
|
28514
28968
|
"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",
|
|
28515
28969
|
{
|
|
@@ -28530,22 +28984,22 @@ var toggleVariants = cva9(
|
|
|
28530
28984
|
}
|
|
28531
28985
|
}
|
|
28532
28986
|
);
|
|
28533
|
-
var Toggle =
|
|
28987
|
+
var Toggle = React62.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx92(TogglePrimitive.Root, { ref, className: cn(toggleVariants({ variant, size, className })), ...props }));
|
|
28534
28988
|
Toggle.displayName = TogglePrimitive.Root.displayName;
|
|
28535
28989
|
|
|
28536
28990
|
// src/components/ui/toggle-group.tsx
|
|
28537
|
-
import * as
|
|
28991
|
+
import * as React63 from "react";
|
|
28538
28992
|
import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
|
|
28539
|
-
import { jsx as
|
|
28540
|
-
var ToggleGroupContext =
|
|
28993
|
+
import { jsx as jsx93 } from "react/jsx-runtime";
|
|
28994
|
+
var ToggleGroupContext = React63.createContext({
|
|
28541
28995
|
size: "default",
|
|
28542
28996
|
variant: "default"
|
|
28543
28997
|
});
|
|
28544
|
-
var ToggleGroup =
|
|
28998
|
+
var ToggleGroup = React63.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx93(ToggleGroupPrimitive.Root, { ref, className: cn("flex items-center justify-center gap-1", className), ...props, children: /* @__PURE__ */ jsx93(ToggleGroupContext.Provider, { value: { variant, size }, children }) }));
|
|
28545
28999
|
ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
|
|
28546
|
-
var ToggleGroupItem =
|
|
28547
|
-
const context =
|
|
28548
|
-
return /* @__PURE__ */
|
|
29000
|
+
var ToggleGroupItem = React63.forwardRef(({ className, children, variant, size, ...props }, ref) => {
|
|
29001
|
+
const context = React63.useContext(ToggleGroupContext);
|
|
29002
|
+
return /* @__PURE__ */ jsx93(
|
|
28549
29003
|
ToggleGroupPrimitive.Item,
|
|
28550
29004
|
{
|
|
28551
29005
|
ref,
|
|
@@ -28565,30 +29019,126 @@ ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
|
|
|
28565
29019
|
|
|
28566
29020
|
// src/hooks/useActiveSection.ts
|
|
28567
29021
|
import { useEffect as useEffect24, useState as useState21 } from "react";
|
|
29022
|
+
var resolveActiveFromOffsets = (sectionIds, topById, offset, scrollY) => {
|
|
29023
|
+
var _a78;
|
|
29024
|
+
const line = scrollY + offset;
|
|
29025
|
+
let nextActive = (_a78 = sectionIds[0]) != null ? _a78 : "";
|
|
29026
|
+
for (const id of sectionIds) {
|
|
29027
|
+
const top = topById.get(id);
|
|
29028
|
+
if (typeof top !== "number") continue;
|
|
29029
|
+
if (top <= line) {
|
|
29030
|
+
nextActive = id;
|
|
29031
|
+
continue;
|
|
29032
|
+
}
|
|
29033
|
+
break;
|
|
29034
|
+
}
|
|
29035
|
+
return nextActive;
|
|
29036
|
+
};
|
|
28568
29037
|
var useActiveSection = (sectionIds, offset = 180) => {
|
|
28569
29038
|
var _a78;
|
|
28570
29039
|
const [activeId, setActiveId] = useState21((_a78 = sectionIds[0]) != null ? _a78 : "");
|
|
28571
29040
|
useEffect24(() => {
|
|
29041
|
+
var _a79;
|
|
28572
29042
|
if (!sectionIds.length || typeof window === "undefined") return;
|
|
28573
|
-
const
|
|
28574
|
-
|
|
28575
|
-
|
|
28576
|
-
|
|
28577
|
-
|
|
28578
|
-
|
|
28579
|
-
|
|
28580
|
-
|
|
29043
|
+
const sections = sectionIds.map((id) => {
|
|
29044
|
+
const element = document.getElementById(id);
|
|
29045
|
+
if (!element) return null;
|
|
29046
|
+
return { id, element };
|
|
29047
|
+
}).filter((section) => section !== null);
|
|
29048
|
+
if (!sections.length) {
|
|
29049
|
+
setActiveId((_a79 = sectionIds[0]) != null ? _a79 : "");
|
|
29050
|
+
return;
|
|
29051
|
+
}
|
|
29052
|
+
const topById = /* @__PURE__ */ new Map();
|
|
29053
|
+
const visibleIds = /* @__PURE__ */ new Set();
|
|
29054
|
+
const sectionIndexes = new Map(sectionIds.map((id, index) => [id, index]));
|
|
29055
|
+
const normalizedOffset = Math.max(0, offset);
|
|
29056
|
+
const measure = () => {
|
|
29057
|
+
const scrollY = window.scrollY || window.pageYOffset;
|
|
29058
|
+
for (const section of sections) {
|
|
29059
|
+
topById.set(section.id, section.element.getBoundingClientRect().top + scrollY);
|
|
29060
|
+
}
|
|
29061
|
+
};
|
|
29062
|
+
const commit = (nextId) => {
|
|
29063
|
+
setActiveId((current) => current === nextId ? current : nextId);
|
|
29064
|
+
};
|
|
29065
|
+
const resolveVisibleActive = () => {
|
|
29066
|
+
let nextId = null;
|
|
29067
|
+
let maxIndex = -1;
|
|
29068
|
+
for (const id of visibleIds) {
|
|
29069
|
+
const index = sectionIndexes.get(id);
|
|
29070
|
+
if (typeof index !== "number" || index < maxIndex) continue;
|
|
29071
|
+
maxIndex = index;
|
|
29072
|
+
nextId = id;
|
|
29073
|
+
}
|
|
29074
|
+
return nextId;
|
|
29075
|
+
};
|
|
29076
|
+
const resolveByScroll = () => resolveActiveFromOffsets(sectionIds, topById, normalizedOffset, window.scrollY || window.pageYOffset);
|
|
29077
|
+
const syncActive = () => {
|
|
29078
|
+
const visibleActive = resolveVisibleActive();
|
|
29079
|
+
commit(visibleActive != null ? visibleActive : resolveByScroll());
|
|
29080
|
+
};
|
|
29081
|
+
measure();
|
|
29082
|
+
syncActive();
|
|
29083
|
+
if (typeof IntersectionObserver === "undefined") {
|
|
29084
|
+
let raf = 0;
|
|
29085
|
+
const onScroll = () => {
|
|
29086
|
+
if (raf) return;
|
|
29087
|
+
raf = window.requestAnimationFrame(() => {
|
|
29088
|
+
raf = 0;
|
|
29089
|
+
commit(resolveByScroll());
|
|
29090
|
+
});
|
|
29091
|
+
};
|
|
29092
|
+
const onResize2 = () => {
|
|
29093
|
+
measure();
|
|
29094
|
+
commit(resolveByScroll());
|
|
29095
|
+
};
|
|
29096
|
+
window.addEventListener("scroll", onScroll, { passive: true });
|
|
29097
|
+
window.addEventListener("resize", onResize2);
|
|
29098
|
+
return () => {
|
|
29099
|
+
if (raf) window.cancelAnimationFrame(raf);
|
|
29100
|
+
window.removeEventListener("scroll", onScroll);
|
|
29101
|
+
window.removeEventListener("resize", onResize2);
|
|
29102
|
+
};
|
|
29103
|
+
}
|
|
29104
|
+
const observer = new IntersectionObserver(
|
|
29105
|
+
(entries) => {
|
|
29106
|
+
let changed = false;
|
|
29107
|
+
for (const entry of entries) {
|
|
29108
|
+
const target = entry.target;
|
|
29109
|
+
if (!target.id) continue;
|
|
29110
|
+
if (entry.isIntersecting) {
|
|
29111
|
+
if (!visibleIds.has(target.id)) {
|
|
29112
|
+
visibleIds.add(target.id);
|
|
29113
|
+
changed = true;
|
|
29114
|
+
}
|
|
29115
|
+
continue;
|
|
29116
|
+
}
|
|
29117
|
+
if (visibleIds.delete(target.id)) {
|
|
29118
|
+
changed = true;
|
|
29119
|
+
}
|
|
28581
29120
|
}
|
|
28582
|
-
|
|
29121
|
+
if (changed) {
|
|
29122
|
+
syncActive();
|
|
29123
|
+
}
|
|
29124
|
+
},
|
|
29125
|
+
{
|
|
29126
|
+
root: null,
|
|
29127
|
+
threshold: [0, 0.01],
|
|
29128
|
+
rootMargin: `-${normalizedOffset}px 0px -55% 0px`
|
|
28583
29129
|
}
|
|
28584
|
-
|
|
29130
|
+
);
|
|
29131
|
+
for (const section of sections) {
|
|
29132
|
+
observer.observe(section.element);
|
|
29133
|
+
}
|
|
29134
|
+
const onResize = () => {
|
|
29135
|
+
measure();
|
|
29136
|
+
syncActive();
|
|
28585
29137
|
};
|
|
28586
|
-
|
|
28587
|
-
window.addEventListener("scroll", update, { passive: true });
|
|
28588
|
-
window.addEventListener("resize", update);
|
|
29138
|
+
window.addEventListener("resize", onResize);
|
|
28589
29139
|
return () => {
|
|
28590
|
-
|
|
28591
|
-
window.removeEventListener("resize",
|
|
29140
|
+
observer.disconnect();
|
|
29141
|
+
window.removeEventListener("resize", onResize);
|
|
28592
29142
|
};
|
|
28593
29143
|
}, [offset, sectionIds]);
|
|
28594
29144
|
return activeId;
|
|
@@ -28653,8 +29203,8 @@ var useLayoutModeControl = () => {
|
|
|
28653
29203
|
};
|
|
28654
29204
|
|
|
28655
29205
|
// src/lib/auth.tsx
|
|
28656
|
-
import { createContext as createContext7, useCallback as useCallback12, useContext as
|
|
28657
|
-
import { jsx as
|
|
29206
|
+
import { createContext as createContext7, useCallback as useCallback12, useContext as useContext9, useEffect as useEffect26, useMemo as useMemo15, useRef as useRef13, useState as useState23 } from "react";
|
|
29207
|
+
import { jsx as jsx94 } from "react/jsx-runtime";
|
|
28658
29208
|
var STORAGE_KEYS = {
|
|
28659
29209
|
accessToken: "cc_access_token",
|
|
28660
29210
|
idToken: "cc_id_token",
|
|
@@ -29542,10 +30092,10 @@ var AuthProvider = ({ children }) => {
|
|
|
29542
30092
|
}),
|
|
29543
30093
|
[status, user, accessToken, login, logout, completeLogin, getAccessToken, presenceStatus, setPresenceStatus]
|
|
29544
30094
|
);
|
|
29545
|
-
return /* @__PURE__ */
|
|
30095
|
+
return /* @__PURE__ */ jsx94(AuthContext.Provider, { value, children });
|
|
29546
30096
|
};
|
|
29547
30097
|
var useAuth = () => {
|
|
29548
|
-
const ctx =
|
|
30098
|
+
const ctx = useContext9(AuthContext);
|
|
29549
30099
|
if (!ctx) {
|
|
29550
30100
|
throw new Error("useAuth deve ser usado dentro de AuthProvider.");
|
|
29551
30101
|
}
|
|
@@ -29700,6 +30250,7 @@ export {
|
|
|
29700
30250
|
DropdownMenuSubContent,
|
|
29701
30251
|
DropdownMenuSubTrigger,
|
|
29702
30252
|
DropdownMenuTrigger,
|
|
30253
|
+
EXPERIENCE_SETTINGS_STORAGE_KEY,
|
|
29703
30254
|
EmptyState,
|
|
29704
30255
|
ErrorBoundary,
|
|
29705
30256
|
Eyebrow,
|
|
@@ -29723,6 +30274,7 @@ export {
|
|
|
29723
30274
|
InputOTPSlot,
|
|
29724
30275
|
JellyButton,
|
|
29725
30276
|
JellyButtonOriginal,
|
|
30277
|
+
LEGACY_THEME_STORAGE_KEY,
|
|
29726
30278
|
Label4 as Label,
|
|
29727
30279
|
LoadingScreen,
|
|
29728
30280
|
LoadingSpinner,
|
|
@@ -29778,6 +30330,15 @@ export {
|
|
|
29778
30330
|
PopoverContent,
|
|
29779
30331
|
PopoverTrigger,
|
|
29780
30332
|
PricingCard,
|
|
30333
|
+
Skeleton as PrimitiveSkeleton,
|
|
30334
|
+
Tabs as PrimitiveTabs,
|
|
30335
|
+
TabsContent as PrimitiveTabsContent,
|
|
30336
|
+
TabsList as PrimitiveTabsList,
|
|
30337
|
+
TabsTrigger as PrimitiveTabsTrigger,
|
|
30338
|
+
Tooltip as PrimitiveTooltip,
|
|
30339
|
+
TooltipContent as PrimitiveTooltipContent,
|
|
30340
|
+
TooltipProvider as PrimitiveTooltipProvider,
|
|
30341
|
+
TooltipTrigger as PrimitiveTooltipTrigger,
|
|
29781
30342
|
Progress,
|
|
29782
30343
|
ProgressCupcode,
|
|
29783
30344
|
RadioGroup4 as RadioGroup,
|
|
@@ -29834,11 +30395,15 @@ export {
|
|
|
29834
30395
|
SidebarRail,
|
|
29835
30396
|
SidebarSeparator,
|
|
29836
30397
|
SidebarTrigger,
|
|
29837
|
-
Skeleton,
|
|
30398
|
+
Skeleton2 as Skeleton,
|
|
30399
|
+
SkeletonText,
|
|
29838
30400
|
Slider,
|
|
29839
30401
|
Toaster as SonnerToaster,
|
|
29840
30402
|
Switch,
|
|
29841
30403
|
SwitchField,
|
|
30404
|
+
THEME_PREFERENCE_CHANGE_EVENT,
|
|
30405
|
+
THEME_PREFERENCE_STORAGE_KEY,
|
|
30406
|
+
THEME_STORAGE_KEY,
|
|
29842
30407
|
Table,
|
|
29843
30408
|
TableBody,
|
|
29844
30409
|
TableCaption,
|
|
@@ -29847,10 +30412,10 @@ export {
|
|
|
29847
30412
|
TableHead,
|
|
29848
30413
|
TableHeader,
|
|
29849
30414
|
TableRow,
|
|
29850
|
-
Tabs,
|
|
29851
|
-
TabsContent,
|
|
29852
|
-
TabsList,
|
|
29853
|
-
TabsTrigger,
|
|
30415
|
+
Tabs2 as Tabs,
|
|
30416
|
+
TabsContent2 as TabsContent,
|
|
30417
|
+
TabsList2 as TabsList,
|
|
30418
|
+
TabsTrigger2 as TabsTrigger,
|
|
29854
30419
|
TagGroup,
|
|
29855
30420
|
TelescupAssetPicker,
|
|
29856
30421
|
TelescupClientError,
|
|
@@ -29860,6 +30425,7 @@ export {
|
|
|
29860
30425
|
TelescupVideo,
|
|
29861
30426
|
Textarea,
|
|
29862
30427
|
TextareaField,
|
|
30428
|
+
ThemeBackground,
|
|
29863
30429
|
ThemeProvider,
|
|
29864
30430
|
ThemeScript,
|
|
29865
30431
|
ThemeToggle2 as ThemeToggle,
|
|
@@ -29876,11 +30442,11 @@ export {
|
|
|
29876
30442
|
Toggle,
|
|
29877
30443
|
ToggleGroup,
|
|
29878
30444
|
ToggleGroupItem,
|
|
29879
|
-
Tooltip,
|
|
29880
|
-
TooltipContent,
|
|
30445
|
+
TooltipCupcode as Tooltip,
|
|
30446
|
+
TooltipContent2 as TooltipContent,
|
|
29881
30447
|
TooltipCupcode,
|
|
29882
|
-
TooltipProvider,
|
|
29883
|
-
TooltipTrigger,
|
|
30448
|
+
TooltipProvider2 as TooltipProvider,
|
|
30449
|
+
TooltipTrigger2 as TooltipTrigger,
|
|
29884
30450
|
USER_PRESENCE_LAST_ACTIVE_COLUMN_ENV_KEY,
|
|
29885
30451
|
USER_PRESENCE_SOURCE_COLUMN_ENV_KEY,
|
|
29886
30452
|
UserMenuCupcode_default as UserMenuCupcode,
|
|
@@ -29908,12 +30474,20 @@ export {
|
|
|
29908
30474
|
getSupabase,
|
|
29909
30475
|
getSupabasePublic,
|
|
29910
30476
|
isRuntimeDev,
|
|
30477
|
+
isStoredThemeMode,
|
|
29911
30478
|
navigationMenuTriggerStyle,
|
|
30479
|
+
normalizeStoredThemePreference,
|
|
29912
30480
|
parseAssetId,
|
|
30481
|
+
parseStoredThemePreference,
|
|
30482
|
+
persistThemePreferenceSelection,
|
|
29913
30483
|
readStoredLayoutMode,
|
|
30484
|
+
readStoredThemeMode,
|
|
29914
30485
|
reducer,
|
|
30486
|
+
resolveAppliedThemeMode,
|
|
29915
30487
|
resolveCupcodeAppVersion,
|
|
29916
30488
|
resolveOidcEndpoints,
|
|
30489
|
+
resolveStoredThemePreference,
|
|
30490
|
+
resolveSystemThemeMode,
|
|
29917
30491
|
resolveTelescupImageURL,
|
|
29918
30492
|
responsiveSizeClasses,
|
|
29919
30493
|
setCupcodeRuntimeEnv,
|