@trading-game/design-intelligence-layer 0.15.4 → 0.16.1
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 +89 -5
- package/dist/index.cjs +390 -227
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +38 -6
- package/dist/index.d.ts +38 -6
- package/dist/index.js +486 -316
- package/dist/index.js.map +1 -1
- package/guides/design-system-guide/trading-game-ds-guide.md +6 -3
- package/package.json +1 -1
- package/src/styles.css +18 -5
package/dist/index.js
CHANGED
|
@@ -106,79 +106,22 @@ function AccordionContent(_a) {
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
// components/ui/alert.tsx
|
|
109
|
-
import
|
|
110
|
-
import {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
defaultVariants: {
|
|
121
|
-
variant: "info"
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
);
|
|
125
|
-
function Alert(_a) {
|
|
126
|
-
var _b = _a, {
|
|
127
|
-
className,
|
|
128
|
-
variant
|
|
129
|
-
} = _b, props = __objRest(_b, [
|
|
130
|
-
"className",
|
|
131
|
-
"variant"
|
|
132
|
-
]);
|
|
133
|
-
return /* @__PURE__ */ jsx2(
|
|
134
|
-
"div",
|
|
135
|
-
__spreadValues({
|
|
136
|
-
"data-slot": "alert",
|
|
137
|
-
role: "alert",
|
|
138
|
-
className: cn(alertVariants({ variant }), className)
|
|
139
|
-
}, props)
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
function AlertTitle(_a) {
|
|
143
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
144
|
-
return /* @__PURE__ */ jsx2(
|
|
145
|
-
"div",
|
|
146
|
-
__spreadValues({
|
|
147
|
-
"data-slot": "alert-title",
|
|
148
|
-
className: cn(
|
|
149
|
-
"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight",
|
|
150
|
-
className
|
|
151
|
-
)
|
|
152
|
-
}, props)
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
function AlertDescription(_a) {
|
|
156
|
-
var _b = _a, {
|
|
157
|
-
className
|
|
158
|
-
} = _b, props = __objRest(_b, [
|
|
159
|
-
"className"
|
|
160
|
-
]);
|
|
161
|
-
return /* @__PURE__ */ jsx2(
|
|
162
|
-
"div",
|
|
163
|
-
__spreadValues({
|
|
164
|
-
"data-slot": "alert-description",
|
|
165
|
-
className: cn(
|
|
166
|
-
"col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",
|
|
167
|
-
className
|
|
168
|
-
)
|
|
169
|
-
}, props)
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// components/ui/alert-dialog.tsx
|
|
174
|
-
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
109
|
+
import * as React from "react";
|
|
110
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
111
|
+
import {
|
|
112
|
+
AlertTriangle,
|
|
113
|
+
CheckCircle2,
|
|
114
|
+
Info,
|
|
115
|
+
X,
|
|
116
|
+
XCircle
|
|
117
|
+
} from "lucide-react";
|
|
175
118
|
|
|
176
119
|
// components/ui/button.tsx
|
|
177
|
-
import { cva
|
|
120
|
+
import { cva } from "class-variance-authority";
|
|
178
121
|
import { Slot } from "radix-ui";
|
|
179
122
|
|
|
180
123
|
// components/ui/spinner.tsx
|
|
181
|
-
import { jsx as
|
|
124
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
182
125
|
var PILL_COUNT = 8;
|
|
183
126
|
function Spinner(_a) {
|
|
184
127
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
@@ -190,13 +133,13 @@ function Spinner(_a) {
|
|
|
190
133
|
className: cn("relative inline-block size-4 text-current", className)
|
|
191
134
|
}, props), {
|
|
192
135
|
children: [
|
|
193
|
-
/* @__PURE__ */
|
|
136
|
+
/* @__PURE__ */ jsx2("style", { children: `
|
|
194
137
|
@keyframes spinner-fade {
|
|
195
138
|
0% { opacity: 1; }
|
|
196
139
|
100% { opacity: 0.15; }
|
|
197
140
|
}
|
|
198
141
|
` }),
|
|
199
|
-
Array.from({ length: PILL_COUNT }, (_, i) => /* @__PURE__ */
|
|
142
|
+
Array.from({ length: PILL_COUNT }, (_, i) => /* @__PURE__ */ jsx2(
|
|
200
143
|
"span",
|
|
201
144
|
{
|
|
202
145
|
style: {
|
|
@@ -220,8 +163,8 @@ function Spinner(_a) {
|
|
|
220
163
|
}
|
|
221
164
|
|
|
222
165
|
// components/ui/button.tsx
|
|
223
|
-
import { Fragment, jsx as
|
|
224
|
-
var buttonVariants =
|
|
166
|
+
import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
167
|
+
var buttonVariants = cva(
|
|
225
168
|
"inline-flex shrink-0 items-center justify-center whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 active:opacity-60 disabled:pointer-events-none disabled:opacity-24 aria-invalid:border-destructive aria-invalid:ring-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 font-display font-bold",
|
|
226
169
|
{
|
|
227
170
|
variants: {
|
|
@@ -281,7 +224,7 @@ function Button(_a) {
|
|
|
281
224
|
"children"
|
|
282
225
|
]);
|
|
283
226
|
const Comp = asChild ? Slot.Root : "button";
|
|
284
|
-
return /* @__PURE__ */
|
|
227
|
+
return /* @__PURE__ */ jsx3(
|
|
285
228
|
Comp,
|
|
286
229
|
__spreadProps(__spreadValues({
|
|
287
230
|
"data-slot": "button",
|
|
@@ -295,15 +238,239 @@ function Button(_a) {
|
|
|
295
238
|
"aria-busy": loading || void 0
|
|
296
239
|
}, props), {
|
|
297
240
|
children: loading ? /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
/* @__PURE__ */
|
|
241
|
+
/* @__PURE__ */ jsx3("span", { className: "invisible inline-flex items-center gap-[inherit]", "aria-hidden": true, children }),
|
|
242
|
+
/* @__PURE__ */ jsx3("span", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx3(Spinner, { className: spinnerSizeMap[size != null ? size : "lg"] }) })
|
|
300
243
|
] }) : children
|
|
301
244
|
})
|
|
302
245
|
);
|
|
303
246
|
}
|
|
304
247
|
|
|
248
|
+
// components/ui/alert.tsx
|
|
249
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
250
|
+
var alertVariants = cva2(
|
|
251
|
+
"grid w-full rounded-sm",
|
|
252
|
+
{
|
|
253
|
+
variants: {
|
|
254
|
+
variant: {
|
|
255
|
+
info: "bg-semantic-info/10",
|
|
256
|
+
warning: "bg-semantic-warning/10",
|
|
257
|
+
danger: "bg-semantic-error/10",
|
|
258
|
+
success: "bg-semantic-win/10"
|
|
259
|
+
},
|
|
260
|
+
layout: {
|
|
261
|
+
// Inline is mobile-first: 3 columns × 2 rows so a long title can wrap and the
|
|
262
|
+
// action button drops below the body. At sm+ (640px) it collapses to a single
|
|
263
|
+
// row of 4 columns (icon · body · action · close).
|
|
264
|
+
inline: "grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start gap-x-3 gap-y-3 px-4 py-4 sm:grid-cols-[auto_1fr_auto_auto] sm:grid-rows-1",
|
|
265
|
+
card: "grid-cols-[auto_1fr_auto] grid-rows-[auto_auto] items-start gap-x-3 gap-y-2 px-4 py-4"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
defaultVariants: {
|
|
269
|
+
variant: "info",
|
|
270
|
+
layout: "inline"
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
);
|
|
274
|
+
var SINGLE_LINE_CLASSES = "items-center min-h-12 py-2 gap-y-0";
|
|
275
|
+
var TITLE_CLASSES = {
|
|
276
|
+
info: "text-on-prominent",
|
|
277
|
+
warning: "text-on-prominent",
|
|
278
|
+
danger: "text-on-prominent",
|
|
279
|
+
success: "text-on-prominent"
|
|
280
|
+
};
|
|
281
|
+
var ICON_CLASSES = {
|
|
282
|
+
info: "text-semantic-info",
|
|
283
|
+
warning: "text-semantic-warning",
|
|
284
|
+
danger: "text-semantic-error",
|
|
285
|
+
success: "text-semantic-win"
|
|
286
|
+
};
|
|
287
|
+
var DESC_CLASSES = {
|
|
288
|
+
info: "text-on-subtle",
|
|
289
|
+
warning: "text-on-subtle",
|
|
290
|
+
danger: "text-on-subtle",
|
|
291
|
+
success: "text-on-subtle"
|
|
292
|
+
};
|
|
293
|
+
var CLOSE_CLASSES = {
|
|
294
|
+
info: "text-on-subtle opacity-70",
|
|
295
|
+
warning: "text-on-subtle opacity-70",
|
|
296
|
+
danger: "text-on-subtle opacity-70",
|
|
297
|
+
success: "text-on-subtle opacity-70"
|
|
298
|
+
};
|
|
299
|
+
function defaultIconForVariant(variant) {
|
|
300
|
+
switch (variant) {
|
|
301
|
+
case "info":
|
|
302
|
+
return /* @__PURE__ */ jsx4(Info, {});
|
|
303
|
+
case "warning":
|
|
304
|
+
return /* @__PURE__ */ jsx4(AlertTriangle, {});
|
|
305
|
+
case "danger":
|
|
306
|
+
return /* @__PURE__ */ jsx4(XCircle, {});
|
|
307
|
+
case "success":
|
|
308
|
+
return /* @__PURE__ */ jsx4(CheckCircle2, {});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
function Alert(_a) {
|
|
312
|
+
var _b = _a, {
|
|
313
|
+
variant = "info",
|
|
314
|
+
layout = "inline",
|
|
315
|
+
title,
|
|
316
|
+
description,
|
|
317
|
+
icon,
|
|
318
|
+
action,
|
|
319
|
+
actions,
|
|
320
|
+
onDismiss,
|
|
321
|
+
dismissLabel = "Dismiss",
|
|
322
|
+
className
|
|
323
|
+
} = _b, props = __objRest(_b, [
|
|
324
|
+
"variant",
|
|
325
|
+
"layout",
|
|
326
|
+
"title",
|
|
327
|
+
"description",
|
|
328
|
+
"icon",
|
|
329
|
+
"action",
|
|
330
|
+
"actions",
|
|
331
|
+
"onDismiss",
|
|
332
|
+
"dismissLabel",
|
|
333
|
+
"className"
|
|
334
|
+
]);
|
|
335
|
+
if (!title && !description) {
|
|
336
|
+
if (process.env.NODE_ENV !== "production") {
|
|
337
|
+
console.warn(
|
|
338
|
+
"Alert: requires at least one of `title` or `description`. Rendering null."
|
|
339
|
+
);
|
|
340
|
+
}
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
343
|
+
const isInline = layout === "inline";
|
|
344
|
+
const isSingleLine = isInline && !(title && description);
|
|
345
|
+
const showIcon = icon !== null;
|
|
346
|
+
const resolvedIcon = icon === void 0 ? defaultIconForVariant(variant) : icon;
|
|
347
|
+
const showCloseButton = typeof onDismiss === "function";
|
|
348
|
+
const buttonVariant = "secondary";
|
|
349
|
+
const isAssertive = variant === "danger" || variant === "warning";
|
|
350
|
+
const role = isAssertive ? "alert" : "status";
|
|
351
|
+
const ariaLive = isAssertive ? "assertive" : "polite";
|
|
352
|
+
if (process.env.NODE_ENV !== "production") {
|
|
353
|
+
if (isInline && actions && actions.length > 0) {
|
|
354
|
+
console.warn(
|
|
355
|
+
'Alert: `actions` is ignored when layout="inline". Use `action` instead.'
|
|
356
|
+
);
|
|
357
|
+
}
|
|
358
|
+
if (!isInline && action) {
|
|
359
|
+
console.warn(
|
|
360
|
+
'Alert: `action` is ignored when layout="card". Use `actions` instead.'
|
|
361
|
+
);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
const body = /* @__PURE__ */ jsxs4("div", { className: "min-w-0", children: [
|
|
365
|
+
title ? /* @__PURE__ */ jsx4(
|
|
366
|
+
"p",
|
|
367
|
+
{
|
|
368
|
+
className: cn(
|
|
369
|
+
// Mobile-first: 13/11px scale so narrow viewports breathe. sm+ bumps to
|
|
370
|
+
// 14/12px which lines up with the rest of the design system's body sizes.
|
|
371
|
+
"text-[13px] font-semibold leading-snug sm:text-sm",
|
|
372
|
+
TITLE_CLASSES[variant],
|
|
373
|
+
description ? "mb-2" : "mb-0"
|
|
374
|
+
),
|
|
375
|
+
children: title
|
|
376
|
+
}
|
|
377
|
+
) : null,
|
|
378
|
+
description ? /* @__PURE__ */ jsx4(
|
|
379
|
+
"p",
|
|
380
|
+
{
|
|
381
|
+
className: cn(
|
|
382
|
+
"text-[11px] leading-snug m-0 sm:text-xs",
|
|
383
|
+
DESC_CLASSES[variant]
|
|
384
|
+
),
|
|
385
|
+
children: description
|
|
386
|
+
}
|
|
387
|
+
) : null
|
|
388
|
+
] });
|
|
389
|
+
const closeButton = showCloseButton ? /* @__PURE__ */ jsx4(
|
|
390
|
+
"button",
|
|
391
|
+
{
|
|
392
|
+
type: "button",
|
|
393
|
+
onClick: onDismiss,
|
|
394
|
+
"aria-label": dismissLabel,
|
|
395
|
+
className: cn(
|
|
396
|
+
"inline-flex shrink-0 items-center justify-center rounded-xs size-6 cursor-pointer outline-none transition-opacity hover:opacity-100 focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [&_svg]:size-4 [&_svg]:pointer-events-none",
|
|
397
|
+
// tuck the close into the top-right corner for the multi-line cases
|
|
398
|
+
isSingleLine ? "" : "-mt-1 -mr-1",
|
|
399
|
+
CLOSE_CLASSES[variant]
|
|
400
|
+
),
|
|
401
|
+
children: /* @__PURE__ */ jsx4(X, {})
|
|
402
|
+
}
|
|
403
|
+
) : null;
|
|
404
|
+
const iconColumn = showIcon ? /* @__PURE__ */ jsx4(
|
|
405
|
+
"div",
|
|
406
|
+
{
|
|
407
|
+
"aria-hidden": true,
|
|
408
|
+
className: cn(
|
|
409
|
+
"inline-flex shrink-0 size-4 [&_svg]:size-full",
|
|
410
|
+
// Single-line: grid is items-center so the icon centers automatically.
|
|
411
|
+
// Multi-line / card: top-aligned with the title cap-height via a 2px
|
|
412
|
+
// (mt-0.5) optical nudge so the icon reads as introducing the message
|
|
413
|
+
// header, not floating between title and description.
|
|
414
|
+
isSingleLine ? "" : "mt-0.5",
|
|
415
|
+
ICON_CLASSES[variant]
|
|
416
|
+
),
|
|
417
|
+
children: resolvedIcon
|
|
418
|
+
}
|
|
419
|
+
) : null;
|
|
420
|
+
if (isInline) {
|
|
421
|
+
return /* @__PURE__ */ jsxs4(
|
|
422
|
+
"div",
|
|
423
|
+
__spreadProps(__spreadValues({
|
|
424
|
+
role,
|
|
425
|
+
"aria-live": ariaLive,
|
|
426
|
+
"data-slot": "alert",
|
|
427
|
+
"data-variant": variant,
|
|
428
|
+
"data-layout": "inline",
|
|
429
|
+
className: cn(
|
|
430
|
+
alertVariants({ variant, layout }),
|
|
431
|
+
isSingleLine ? SINGLE_LINE_CLASSES : "",
|
|
432
|
+
className
|
|
433
|
+
)
|
|
434
|
+
}, props), {
|
|
435
|
+
children: [
|
|
436
|
+
iconColumn,
|
|
437
|
+
/* @__PURE__ */ jsx4("div", { className: "col-start-2 row-start-1 min-w-0", children: body }),
|
|
438
|
+
/* @__PURE__ */ jsx4("div", { className: "col-start-3 row-start-1 sm:col-start-4 sm:row-start-1", children: closeButton }),
|
|
439
|
+
action ? /* @__PURE__ */ jsx4("div", { className: "col-start-2 row-start-2 justify-self-start sm:col-start-3 sm:row-start-1 sm:self-center sm:justify-self-end", children: wrapAction(action, buttonVariant) }) : null
|
|
440
|
+
]
|
|
441
|
+
})
|
|
442
|
+
);
|
|
443
|
+
}
|
|
444
|
+
return /* @__PURE__ */ jsxs4(
|
|
445
|
+
"div",
|
|
446
|
+
__spreadProps(__spreadValues({
|
|
447
|
+
role,
|
|
448
|
+
"aria-live": ariaLive,
|
|
449
|
+
"data-slot": "alert",
|
|
450
|
+
"data-variant": variant,
|
|
451
|
+
"data-layout": "card",
|
|
452
|
+
className: cn(
|
|
453
|
+
alertVariants({ variant, layout }),
|
|
454
|
+
className
|
|
455
|
+
)
|
|
456
|
+
}, props), {
|
|
457
|
+
children: [
|
|
458
|
+
iconColumn,
|
|
459
|
+
/* @__PURE__ */ jsx4("div", { className: "col-span-2 col-start-2 row-start-1", children: body }),
|
|
460
|
+
/* @__PURE__ */ jsx4("div", { className: "col-start-3 row-start-1", children: closeButton }),
|
|
461
|
+
actions && actions.length > 0 ? /* @__PURE__ */ jsx4("div", { className: "col-span-3 col-start-2 row-start-2 mt-2 flex flex-wrap items-center justify-start gap-2", children: actions.slice(0, 2).map((node, i) => /* @__PURE__ */ jsx4(React.Fragment, { children: wrapAction(node, buttonVariant) }, i)) }) : null
|
|
462
|
+
]
|
|
463
|
+
})
|
|
464
|
+
);
|
|
465
|
+
}
|
|
466
|
+
function wrapAction(node, variant) {
|
|
467
|
+
if (React.isValidElement(node)) return node;
|
|
468
|
+
return /* @__PURE__ */ jsx4(Button, { variant, size: "sm", children: node });
|
|
469
|
+
}
|
|
470
|
+
|
|
305
471
|
// components/ui/alert-dialog.tsx
|
|
306
|
-
import {
|
|
472
|
+
import { AlertDialog as AlertDialogPrimitive } from "radix-ui";
|
|
473
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
307
474
|
function AlertDialog(_a) {
|
|
308
475
|
var props = __objRest(_a, []);
|
|
309
476
|
return /* @__PURE__ */ jsx5(AlertDialogPrimitive.Root, __spreadValues({ "data-slot": "alert-dialog" }, props));
|
|
@@ -341,7 +508,7 @@ function AlertDialogContent(_a) {
|
|
|
341
508
|
"className",
|
|
342
509
|
"size"
|
|
343
510
|
]);
|
|
344
|
-
return /* @__PURE__ */
|
|
511
|
+
return /* @__PURE__ */ jsxs5(AlertDialogPortal, { children: [
|
|
345
512
|
/* @__PURE__ */ jsx5(AlertDialogOverlay, {}),
|
|
346
513
|
/* @__PURE__ */ jsx5(
|
|
347
514
|
AlertDialogPrimitive.Content,
|
|
@@ -605,6 +772,10 @@ var badgeVariants = cva3(
|
|
|
605
772
|
"fill-fail": "bg-semantic-loss/10 border-transparent text-semantic-loss",
|
|
606
773
|
"fill-warning": "bg-semantic-warning/10 border-transparent text-semantic-warning",
|
|
607
774
|
"fill-credit": "bg-semantic-boost-surface border-transparent text-on-semantic-boost !text-xs !font-semibold",
|
|
775
|
+
// Demo / test-mode flag — opaque light-peach surface + red-orange text.
|
|
776
|
+
// Uses --semantic-demo-surface (a solid color-mix of demo @ 10% with white)
|
|
777
|
+
// so the badge looks identical on any background.
|
|
778
|
+
"fill-demo": "bg-semantic-demo-surface border-transparent text-semantic-demo",
|
|
608
779
|
// Ghost (transparent)
|
|
609
780
|
ghost: "bg-transparent border-transparent text-primary [a&]:hover:bg-secondary-hover [a&]:hover:text-primary",
|
|
610
781
|
"ghost-success": "bg-transparent border-transparent text-semantic-win [a&]:hover:bg-semantic-win/10 [a&]:hover:text-semantic-win",
|
|
@@ -649,7 +820,7 @@ function Badge(_a) {
|
|
|
649
820
|
// components/ui/breadcrumb.tsx
|
|
650
821
|
import { ChevronRight, MoreHorizontal } from "lucide-react";
|
|
651
822
|
import { Slot as Slot3 } from "radix-ui";
|
|
652
|
-
import { jsx as jsx9, jsxs as
|
|
823
|
+
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
653
824
|
function Breadcrumb(_a) {
|
|
654
825
|
var props = __objRest(_a, []);
|
|
655
826
|
return /* @__PURE__ */ jsx9("nav", __spreadValues({ "aria-label": "breadcrumb", "data-slot": "breadcrumb" }, props));
|
|
@@ -733,7 +904,7 @@ function BreadcrumbEllipsis(_a) {
|
|
|
733
904
|
} = _b, props = __objRest(_b, [
|
|
734
905
|
"className"
|
|
735
906
|
]);
|
|
736
|
-
return /* @__PURE__ */
|
|
907
|
+
return /* @__PURE__ */ jsxs6(
|
|
737
908
|
"span",
|
|
738
909
|
__spreadProps(__spreadValues({
|
|
739
910
|
"data-slot": "breadcrumb-ellipsis",
|
|
@@ -750,7 +921,7 @@ function BreadcrumbEllipsis(_a) {
|
|
|
750
921
|
}
|
|
751
922
|
|
|
752
923
|
// components/ui/calendar.tsx
|
|
753
|
-
import * as
|
|
924
|
+
import * as React2 from "react";
|
|
754
925
|
import {
|
|
755
926
|
ChevronDownIcon as ChevronDownIcon2,
|
|
756
927
|
ChevronLeftIcon,
|
|
@@ -923,8 +1094,8 @@ function CalendarDayButton(_a) {
|
|
|
923
1094
|
"modifiers"
|
|
924
1095
|
]);
|
|
925
1096
|
const defaultClassNames = getDefaultClassNames();
|
|
926
|
-
const ref =
|
|
927
|
-
|
|
1097
|
+
const ref = React2.useRef(null);
|
|
1098
|
+
React2.useEffect(() => {
|
|
928
1099
|
var _a2;
|
|
929
1100
|
if (modifiers.focused) (_a2 = ref.current) == null ? void 0 : _a2.focus();
|
|
930
1101
|
}, [modifiers.focused]);
|
|
@@ -1032,13 +1203,13 @@ function CardFooter(_a) {
|
|
|
1032
1203
|
}
|
|
1033
1204
|
|
|
1034
1205
|
// components/ui/carousel.tsx
|
|
1035
|
-
import * as
|
|
1206
|
+
import * as React3 from "react";
|
|
1036
1207
|
import useEmblaCarousel from "embla-carousel-react";
|
|
1037
1208
|
import { ArrowLeft, ArrowRight } from "lucide-react";
|
|
1038
|
-
import { jsx as jsx12, jsxs as
|
|
1039
|
-
var CarouselContext =
|
|
1209
|
+
import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1210
|
+
var CarouselContext = React3.createContext(null);
|
|
1040
1211
|
function useCarousel() {
|
|
1041
|
-
const context =
|
|
1212
|
+
const context = React3.useContext(CarouselContext);
|
|
1042
1213
|
if (!context) {
|
|
1043
1214
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
1044
1215
|
}
|
|
@@ -1066,20 +1237,20 @@ function Carousel(_a) {
|
|
|
1066
1237
|
}),
|
|
1067
1238
|
plugins
|
|
1068
1239
|
);
|
|
1069
|
-
const [canScrollPrev, setCanScrollPrev] =
|
|
1070
|
-
const [canScrollNext, setCanScrollNext] =
|
|
1071
|
-
const onSelect =
|
|
1240
|
+
const [canScrollPrev, setCanScrollPrev] = React3.useState(false);
|
|
1241
|
+
const [canScrollNext, setCanScrollNext] = React3.useState(false);
|
|
1242
|
+
const onSelect = React3.useCallback((api2) => {
|
|
1072
1243
|
if (!api2) return;
|
|
1073
1244
|
setCanScrollPrev(api2.canScrollPrev());
|
|
1074
1245
|
setCanScrollNext(api2.canScrollNext());
|
|
1075
1246
|
}, []);
|
|
1076
|
-
const scrollPrev =
|
|
1247
|
+
const scrollPrev = React3.useCallback(() => {
|
|
1077
1248
|
api == null ? void 0 : api.scrollPrev();
|
|
1078
1249
|
}, [api]);
|
|
1079
|
-
const scrollNext =
|
|
1250
|
+
const scrollNext = React3.useCallback(() => {
|
|
1080
1251
|
api == null ? void 0 : api.scrollNext();
|
|
1081
1252
|
}, [api]);
|
|
1082
|
-
const handleKeyDown =
|
|
1253
|
+
const handleKeyDown = React3.useCallback(
|
|
1083
1254
|
(event) => {
|
|
1084
1255
|
if (event.key === "ArrowLeft") {
|
|
1085
1256
|
event.preventDefault();
|
|
@@ -1091,11 +1262,11 @@ function Carousel(_a) {
|
|
|
1091
1262
|
},
|
|
1092
1263
|
[scrollPrev, scrollNext]
|
|
1093
1264
|
);
|
|
1094
|
-
|
|
1265
|
+
React3.useEffect(() => {
|
|
1095
1266
|
if (!api || !setApi) return;
|
|
1096
1267
|
setApi(api);
|
|
1097
1268
|
}, [api, setApi]);
|
|
1098
|
-
|
|
1269
|
+
React3.useEffect(() => {
|
|
1099
1270
|
if (!api) return;
|
|
1100
1271
|
onSelect(api);
|
|
1101
1272
|
api.on("reInit", onSelect);
|
|
@@ -1182,7 +1353,7 @@ function CarouselPrevious(_a) {
|
|
|
1182
1353
|
"size"
|
|
1183
1354
|
]);
|
|
1184
1355
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
1185
|
-
return /* @__PURE__ */
|
|
1356
|
+
return /* @__PURE__ */ jsxs7(
|
|
1186
1357
|
Button,
|
|
1187
1358
|
__spreadProps(__spreadValues({
|
|
1188
1359
|
"data-slot": "carousel-previous",
|
|
@@ -1214,7 +1385,7 @@ function CarouselNext(_a) {
|
|
|
1214
1385
|
"size"
|
|
1215
1386
|
]);
|
|
1216
1387
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
1217
|
-
return /* @__PURE__ */
|
|
1388
|
+
return /* @__PURE__ */ jsxs7(
|
|
1218
1389
|
Button,
|
|
1219
1390
|
__spreadProps(__spreadValues({
|
|
1220
1391
|
"data-slot": "carousel-next",
|
|
@@ -1237,13 +1408,13 @@ function CarouselNext(_a) {
|
|
|
1237
1408
|
}
|
|
1238
1409
|
|
|
1239
1410
|
// components/ui/chart.tsx
|
|
1240
|
-
import * as
|
|
1411
|
+
import * as React4 from "react";
|
|
1241
1412
|
import * as RechartsPrimitive from "recharts";
|
|
1242
|
-
import { Fragment as
|
|
1413
|
+
import { Fragment as Fragment3, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1243
1414
|
var THEMES = { light: "" };
|
|
1244
|
-
var ChartContext =
|
|
1415
|
+
var ChartContext = React4.createContext(null);
|
|
1245
1416
|
function useChart() {
|
|
1246
|
-
const context =
|
|
1417
|
+
const context = React4.useContext(ChartContext);
|
|
1247
1418
|
if (!context) {
|
|
1248
1419
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
1249
1420
|
}
|
|
@@ -1261,9 +1432,9 @@ function ChartContainer(_a) {
|
|
|
1261
1432
|
"children",
|
|
1262
1433
|
"config"
|
|
1263
1434
|
]);
|
|
1264
|
-
const uniqueId =
|
|
1435
|
+
const uniqueId = React4.useId();
|
|
1265
1436
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
1266
|
-
return /* @__PURE__ */ jsx13(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */
|
|
1437
|
+
return /* @__PURE__ */ jsx13(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs8(
|
|
1267
1438
|
"div",
|
|
1268
1439
|
__spreadProps(__spreadValues({
|
|
1269
1440
|
"data-slot": "chart",
|
|
@@ -1323,7 +1494,7 @@ function ChartTooltipContent({
|
|
|
1323
1494
|
labelKey
|
|
1324
1495
|
}) {
|
|
1325
1496
|
const { config } = useChart();
|
|
1326
|
-
const tooltipLabel =
|
|
1497
|
+
const tooltipLabel = React4.useMemo(() => {
|
|
1327
1498
|
var _a;
|
|
1328
1499
|
if (hideLabel || !(payload == null ? void 0 : payload.length)) {
|
|
1329
1500
|
return null;
|
|
@@ -1352,7 +1523,7 @@ function ChartTooltipContent({
|
|
|
1352
1523
|
return null;
|
|
1353
1524
|
}
|
|
1354
1525
|
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
1355
|
-
return /* @__PURE__ */
|
|
1526
|
+
return /* @__PURE__ */ jsxs8(
|
|
1356
1527
|
"div",
|
|
1357
1528
|
{
|
|
1358
1529
|
className: cn(
|
|
@@ -1372,7 +1543,7 @@ function ChartTooltipContent({
|
|
|
1372
1543
|
"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-on-subtle",
|
|
1373
1544
|
indicator === "dot" && "items-center"
|
|
1374
1545
|
),
|
|
1375
|
-
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */
|
|
1546
|
+
children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
1376
1547
|
(itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */ jsx13(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx13(
|
|
1377
1548
|
"div",
|
|
1378
1549
|
{
|
|
@@ -1391,7 +1562,7 @@ function ChartTooltipContent({
|
|
|
1391
1562
|
}
|
|
1392
1563
|
}
|
|
1393
1564
|
),
|
|
1394
|
-
/* @__PURE__ */
|
|
1565
|
+
/* @__PURE__ */ jsxs8(
|
|
1395
1566
|
"div",
|
|
1396
1567
|
{
|
|
1397
1568
|
className: cn(
|
|
@@ -1399,7 +1570,7 @@ function ChartTooltipContent({
|
|
|
1399
1570
|
nestLabel ? "items-end" : "items-center"
|
|
1400
1571
|
),
|
|
1401
1572
|
children: [
|
|
1402
|
-
/* @__PURE__ */
|
|
1573
|
+
/* @__PURE__ */ jsxs8("div", { className: "grid gap-1.5", children: [
|
|
1403
1574
|
nestLabel ? tooltipLabel : null,
|
|
1404
1575
|
/* @__PURE__ */ jsx13("span", { className: "text-on-subtle", children: (itemConfig == null ? void 0 : itemConfig.label) || item.name })
|
|
1405
1576
|
] }),
|
|
@@ -1439,7 +1610,7 @@ function ChartLegendContent({
|
|
|
1439
1610
|
children: payload.filter((item) => item.type !== "none").map((item) => {
|
|
1440
1611
|
const key = `${nameKey || item.dataKey || "value"}`;
|
|
1441
1612
|
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1442
|
-
return /* @__PURE__ */
|
|
1613
|
+
return /* @__PURE__ */ jsxs8(
|
|
1443
1614
|
"div",
|
|
1444
1615
|
{
|
|
1445
1616
|
className: cn(
|
|
@@ -1536,12 +1707,12 @@ function CollapsibleContent(_a) {
|
|
|
1536
1707
|
}
|
|
1537
1708
|
|
|
1538
1709
|
// components/ui/combobox.tsx
|
|
1539
|
-
import * as
|
|
1710
|
+
import * as React6 from "react";
|
|
1540
1711
|
import { Combobox as ComboboxPrimitive } from "@base-ui/react";
|
|
1541
1712
|
import { CheckIcon as CheckIcon2, ChevronDownIcon as ChevronDownIcon3, XIcon } from "lucide-react";
|
|
1542
1713
|
|
|
1543
1714
|
// components/ui/input-group.tsx
|
|
1544
|
-
import * as
|
|
1715
|
+
import * as React5 from "react";
|
|
1545
1716
|
import { cva as cva5 } from "class-variance-authority";
|
|
1546
1717
|
|
|
1547
1718
|
// components/ui/input.tsx
|
|
@@ -1609,7 +1780,7 @@ function Textarea(_a) {
|
|
|
1609
1780
|
|
|
1610
1781
|
// components/ui/input-group.tsx
|
|
1611
1782
|
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1612
|
-
var InputGroupSizeContext =
|
|
1783
|
+
var InputGroupSizeContext = React5.createContext("md");
|
|
1613
1784
|
var inputGroupVariants = cva5(
|
|
1614
1785
|
[
|
|
1615
1786
|
"group/input-group relative flex w-full items-center rounded-sm border border-border-subtle bg-white/5",
|
|
@@ -1771,7 +1942,7 @@ function InputGroupInput(_a) {
|
|
|
1771
1942
|
"className",
|
|
1772
1943
|
"size"
|
|
1773
1944
|
]);
|
|
1774
|
-
const groupSize =
|
|
1945
|
+
const groupSize = React5.useContext(InputGroupSizeContext);
|
|
1775
1946
|
const size = sizeProp != null ? sizeProp : groupSize;
|
|
1776
1947
|
return /* @__PURE__ */ jsx18(
|
|
1777
1948
|
Input,
|
|
@@ -1804,7 +1975,7 @@ function InputGroupTextarea(_a) {
|
|
|
1804
1975
|
}
|
|
1805
1976
|
|
|
1806
1977
|
// components/ui/combobox.tsx
|
|
1807
|
-
import { jsx as jsx19, jsxs as
|
|
1978
|
+
import { jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
1808
1979
|
var Combobox = ComboboxPrimitive.Root;
|
|
1809
1980
|
function ComboboxValue(_a) {
|
|
1810
1981
|
var props = __objRest(_a, []);
|
|
@@ -1818,7 +1989,7 @@ function ComboboxTrigger(_a) {
|
|
|
1818
1989
|
"className",
|
|
1819
1990
|
"children"
|
|
1820
1991
|
]);
|
|
1821
|
-
return /* @__PURE__ */
|
|
1992
|
+
return /* @__PURE__ */ jsxs9(
|
|
1822
1993
|
ComboboxPrimitive.Trigger,
|
|
1823
1994
|
__spreadProps(__spreadValues({
|
|
1824
1995
|
"data-slot": "combobox-trigger",
|
|
@@ -1864,14 +2035,14 @@ function ComboboxInput(_a) {
|
|
|
1864
2035
|
"showTrigger",
|
|
1865
2036
|
"showClear"
|
|
1866
2037
|
]);
|
|
1867
|
-
return /* @__PURE__ */
|
|
2038
|
+
return /* @__PURE__ */ jsxs9(InputGroup, { className: cn("w-auto", className), children: [
|
|
1868
2039
|
/* @__PURE__ */ jsx19(
|
|
1869
2040
|
ComboboxPrimitive.Input,
|
|
1870
2041
|
__spreadValues({
|
|
1871
2042
|
render: /* @__PURE__ */ jsx19(InputGroupInput, { disabled })
|
|
1872
2043
|
}, props)
|
|
1873
2044
|
),
|
|
1874
|
-
/* @__PURE__ */
|
|
2045
|
+
/* @__PURE__ */ jsxs9(InputGroupAddon, { align: "inline-end", children: [
|
|
1875
2046
|
showTrigger && /* @__PURE__ */ jsx19(
|
|
1876
2047
|
InputGroupButton,
|
|
1877
2048
|
{
|
|
@@ -1949,7 +2120,7 @@ function ComboboxItem(_a) {
|
|
|
1949
2120
|
"className",
|
|
1950
2121
|
"children"
|
|
1951
2122
|
]);
|
|
1952
|
-
return /* @__PURE__ */
|
|
2123
|
+
return /* @__PURE__ */ jsxs9(
|
|
1953
2124
|
ComboboxPrimitive.Item,
|
|
1954
2125
|
__spreadProps(__spreadValues({
|
|
1955
2126
|
"data-slot": "combobox-item",
|
|
@@ -2057,7 +2228,7 @@ function ComboboxChip(_a) {
|
|
|
2057
2228
|
"children",
|
|
2058
2229
|
"showRemove"
|
|
2059
2230
|
]);
|
|
2060
|
-
return /* @__PURE__ */
|
|
2231
|
+
return /* @__PURE__ */ jsxs9(
|
|
2061
2232
|
ComboboxPrimitive.Chip,
|
|
2062
2233
|
__spreadProps(__spreadValues({
|
|
2063
2234
|
"data-slot": "combobox-chip",
|
|
@@ -2098,7 +2269,7 @@ function ComboboxChipsInput(_a) {
|
|
|
2098
2269
|
);
|
|
2099
2270
|
}
|
|
2100
2271
|
function useComboboxAnchor() {
|
|
2101
|
-
return
|
|
2272
|
+
return React6.useRef(null);
|
|
2102
2273
|
}
|
|
2103
2274
|
|
|
2104
2275
|
// components/ui/command.tsx
|
|
@@ -2108,7 +2279,7 @@ import { SearchIcon } from "lucide-react";
|
|
|
2108
2279
|
// components/ui/dialog.tsx
|
|
2109
2280
|
import { XIcon as XIcon2 } from "lucide-react";
|
|
2110
2281
|
import { Dialog as DialogPrimitive } from "radix-ui";
|
|
2111
|
-
import { jsx as jsx20, jsxs as
|
|
2282
|
+
import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2112
2283
|
function Dialog(_a) {
|
|
2113
2284
|
var props = __objRest(_a, []);
|
|
2114
2285
|
return /* @__PURE__ */ jsx20(DialogPrimitive.Root, __spreadValues({ "data-slot": "dialog" }, props));
|
|
@@ -2152,9 +2323,9 @@ function DialogContent(_a) {
|
|
|
2152
2323
|
"children",
|
|
2153
2324
|
"showCloseButton"
|
|
2154
2325
|
]);
|
|
2155
|
-
return /* @__PURE__ */
|
|
2326
|
+
return /* @__PURE__ */ jsxs10(DialogPortal, { "data-slot": "dialog-portal", children: [
|
|
2156
2327
|
/* @__PURE__ */ jsx20(DialogOverlay, {}),
|
|
2157
|
-
/* @__PURE__ */
|
|
2328
|
+
/* @__PURE__ */ jsxs10(
|
|
2158
2329
|
DialogPrimitive.Content,
|
|
2159
2330
|
__spreadProps(__spreadValues({
|
|
2160
2331
|
"data-slot": "dialog-content",
|
|
@@ -2165,7 +2336,7 @@ function DialogContent(_a) {
|
|
|
2165
2336
|
}, props), {
|
|
2166
2337
|
children: [
|
|
2167
2338
|
children,
|
|
2168
|
-
showCloseButton && /* @__PURE__ */
|
|
2339
|
+
showCloseButton && /* @__PURE__ */ jsxs10(
|
|
2169
2340
|
DialogPrimitive.Close,
|
|
2170
2341
|
{
|
|
2171
2342
|
"data-slot": "dialog-close",
|
|
@@ -2201,7 +2372,7 @@ function DialogFooter(_a) {
|
|
|
2201
2372
|
"showCloseButton",
|
|
2202
2373
|
"children"
|
|
2203
2374
|
]);
|
|
2204
|
-
return /* @__PURE__ */
|
|
2375
|
+
return /* @__PURE__ */ jsxs10(
|
|
2205
2376
|
"div",
|
|
2206
2377
|
__spreadProps(__spreadValues({
|
|
2207
2378
|
"data-slot": "dialog-footer",
|
|
@@ -2247,7 +2418,7 @@ function DialogDescription(_a) {
|
|
|
2247
2418
|
}
|
|
2248
2419
|
|
|
2249
2420
|
// components/ui/command.tsx
|
|
2250
|
-
import { jsx as jsx21, jsxs as
|
|
2421
|
+
import { jsx as jsx21, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
2251
2422
|
function Command(_a) {
|
|
2252
2423
|
var _b = _a, {
|
|
2253
2424
|
className
|
|
@@ -2279,8 +2450,8 @@ function CommandDialog(_a) {
|
|
|
2279
2450
|
"className",
|
|
2280
2451
|
"showCloseButton"
|
|
2281
2452
|
]);
|
|
2282
|
-
return /* @__PURE__ */
|
|
2283
|
-
/* @__PURE__ */
|
|
2453
|
+
return /* @__PURE__ */ jsxs11(Dialog, __spreadProps(__spreadValues({}, props), { children: [
|
|
2454
|
+
/* @__PURE__ */ jsxs11(DialogHeader, { className: "sr-only", children: [
|
|
2284
2455
|
/* @__PURE__ */ jsx21(DialogTitle, { children: title }),
|
|
2285
2456
|
/* @__PURE__ */ jsx21(DialogDescription, { children: description })
|
|
2286
2457
|
] }),
|
|
@@ -2300,7 +2471,7 @@ function CommandInput(_a) {
|
|
|
2300
2471
|
} = _b, props = __objRest(_b, [
|
|
2301
2472
|
"className"
|
|
2302
2473
|
]);
|
|
2303
|
-
return /* @__PURE__ */
|
|
2474
|
+
return /* @__PURE__ */ jsxs11(
|
|
2304
2475
|
"div",
|
|
2305
2476
|
{
|
|
2306
2477
|
"data-slot": "command-input-wrapper",
|
|
@@ -2417,7 +2588,7 @@ function CommandShortcut(_a) {
|
|
|
2417
2588
|
// components/ui/context-menu.tsx
|
|
2418
2589
|
import { CheckIcon as CheckIcon3, ChevronRightIcon as ChevronRightIcon2, CircleIcon } from "lucide-react";
|
|
2419
2590
|
import { ContextMenu as ContextMenuPrimitive } from "radix-ui";
|
|
2420
|
-
import { jsx as jsx22, jsxs as
|
|
2591
|
+
import { jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
2421
2592
|
function ContextMenu(_a) {
|
|
2422
2593
|
var props = __objRest(_a, []);
|
|
2423
2594
|
return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Root, __spreadValues({ "data-slot": "context-menu" }, props));
|
|
@@ -2457,7 +2628,7 @@ function ContextMenuSubTrigger(_a) {
|
|
|
2457
2628
|
"inset",
|
|
2458
2629
|
"children"
|
|
2459
2630
|
]);
|
|
2460
|
-
return /* @__PURE__ */
|
|
2631
|
+
return /* @__PURE__ */ jsxs12(
|
|
2461
2632
|
ContextMenuPrimitive.SubTrigger,
|
|
2462
2633
|
__spreadProps(__spreadValues({
|
|
2463
2634
|
"data-slot": "context-menu-sub-trigger",
|
|
@@ -2541,7 +2712,7 @@ function ContextMenuCheckboxItem(_a) {
|
|
|
2541
2712
|
"children",
|
|
2542
2713
|
"checked"
|
|
2543
2714
|
]);
|
|
2544
|
-
return /* @__PURE__ */
|
|
2715
|
+
return /* @__PURE__ */ jsxs12(
|
|
2545
2716
|
ContextMenuPrimitive.CheckboxItem,
|
|
2546
2717
|
__spreadProps(__spreadValues({
|
|
2547
2718
|
"data-slot": "context-menu-checkbox-item",
|
|
@@ -2566,7 +2737,7 @@ function ContextMenuRadioItem(_a) {
|
|
|
2566
2737
|
"className",
|
|
2567
2738
|
"children"
|
|
2568
2739
|
]);
|
|
2569
|
-
return /* @__PURE__ */
|
|
2740
|
+
return /* @__PURE__ */ jsxs12(
|
|
2570
2741
|
ContextMenuPrimitive.RadioItem,
|
|
2571
2742
|
__spreadProps(__spreadValues({
|
|
2572
2743
|
"data-slot": "context-menu-radio-item",
|
|
@@ -2648,7 +2819,7 @@ var useDirection = Direction.useDirection;
|
|
|
2648
2819
|
|
|
2649
2820
|
// components/ui/drawer.tsx
|
|
2650
2821
|
import { Drawer as DrawerPrimitive } from "vaul";
|
|
2651
|
-
import { jsx as jsx24, jsxs as
|
|
2822
|
+
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
2652
2823
|
function Drawer(_a) {
|
|
2653
2824
|
var props = __objRest(_a, []);
|
|
2654
2825
|
return /* @__PURE__ */ jsx24(DrawerPrimitive.Root, __spreadValues({ "data-slot": "drawer" }, props));
|
|
@@ -2690,9 +2861,9 @@ function DrawerContent(_a) {
|
|
|
2690
2861
|
"className",
|
|
2691
2862
|
"children"
|
|
2692
2863
|
]);
|
|
2693
|
-
return /* @__PURE__ */
|
|
2864
|
+
return /* @__PURE__ */ jsxs13(DrawerPortal, { "data-slot": "drawer-portal", children: [
|
|
2694
2865
|
/* @__PURE__ */ jsx24(DrawerOverlay, {}),
|
|
2695
|
-
/* @__PURE__ */
|
|
2866
|
+
/* @__PURE__ */ jsxs13(
|
|
2696
2867
|
DrawerPrimitive.Content,
|
|
2697
2868
|
__spreadProps(__spreadValues({
|
|
2698
2869
|
"data-slot": "drawer-content",
|
|
@@ -2768,7 +2939,7 @@ function DrawerDescription(_a) {
|
|
|
2768
2939
|
// components/ui/dropdown-menu.tsx
|
|
2769
2940
|
import { CheckIcon as CheckIcon4, ChevronRightIcon as ChevronRightIcon3, CircleIcon as CircleIcon2 } from "lucide-react";
|
|
2770
2941
|
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
2771
|
-
import { jsx as jsx25, jsxs as
|
|
2942
|
+
import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
2772
2943
|
function DropdownMenu(_a) {
|
|
2773
2944
|
var props = __objRest(_a, []);
|
|
2774
2945
|
return /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Root, __spreadValues({ "data-slot": "dropdown-menu" }, props));
|
|
@@ -2843,7 +3014,7 @@ function DropdownMenuCheckboxItem(_a) {
|
|
|
2843
3014
|
"children",
|
|
2844
3015
|
"checked"
|
|
2845
3016
|
]);
|
|
2846
|
-
return /* @__PURE__ */
|
|
3017
|
+
return /* @__PURE__ */ jsxs14(
|
|
2847
3018
|
DropdownMenuPrimitive.CheckboxItem,
|
|
2848
3019
|
__spreadProps(__spreadValues({
|
|
2849
3020
|
"data-slot": "dropdown-menu-checkbox-item",
|
|
@@ -2877,7 +3048,7 @@ function DropdownMenuRadioItem(_a) {
|
|
|
2877
3048
|
"className",
|
|
2878
3049
|
"children"
|
|
2879
3050
|
]);
|
|
2880
|
-
return /* @__PURE__ */
|
|
3051
|
+
return /* @__PURE__ */ jsxs14(
|
|
2881
3052
|
DropdownMenuPrimitive.RadioItem,
|
|
2882
3053
|
__spreadProps(__spreadValues({
|
|
2883
3054
|
"data-slot": "dropdown-menu-radio-item",
|
|
@@ -2958,7 +3129,7 @@ function DropdownMenuSubTrigger(_a) {
|
|
|
2958
3129
|
"inset",
|
|
2959
3130
|
"children"
|
|
2960
3131
|
]);
|
|
2961
|
-
return /* @__PURE__ */
|
|
3132
|
+
return /* @__PURE__ */ jsxs14(
|
|
2962
3133
|
DropdownMenuPrimitive.SubTrigger,
|
|
2963
3134
|
__spreadProps(__spreadValues({
|
|
2964
3135
|
"data-slot": "dropdown-menu-sub-trigger",
|
|
@@ -3143,7 +3314,7 @@ function Separator(_a) {
|
|
|
3143
3314
|
}
|
|
3144
3315
|
|
|
3145
3316
|
// components/ui/field.tsx
|
|
3146
|
-
import { jsx as jsx29, jsxs as
|
|
3317
|
+
import { jsx as jsx29, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3147
3318
|
function FieldSet(_a) {
|
|
3148
3319
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3149
3320
|
return /* @__PURE__ */ jsx29(
|
|
@@ -3302,7 +3473,7 @@ function FieldSeparator(_a) {
|
|
|
3302
3473
|
"children",
|
|
3303
3474
|
"className"
|
|
3304
3475
|
]);
|
|
3305
|
-
return /* @__PURE__ */
|
|
3476
|
+
return /* @__PURE__ */ jsxs15(
|
|
3306
3477
|
"div",
|
|
3307
3478
|
__spreadProps(__spreadValues({
|
|
3308
3479
|
"data-slot": "field-separator",
|
|
@@ -3370,7 +3541,7 @@ function FieldError(_a) {
|
|
|
3370
3541
|
}
|
|
3371
3542
|
|
|
3372
3543
|
// components/ui/form.tsx
|
|
3373
|
-
import * as
|
|
3544
|
+
import * as React7 from "react";
|
|
3374
3545
|
import { Slot as Slot4 } from "radix-ui";
|
|
3375
3546
|
import {
|
|
3376
3547
|
Controller,
|
|
@@ -3380,7 +3551,7 @@ import {
|
|
|
3380
3551
|
} from "react-hook-form";
|
|
3381
3552
|
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
3382
3553
|
var Form = FormProvider;
|
|
3383
|
-
var FormFieldContext =
|
|
3554
|
+
var FormFieldContext = React7.createContext(
|
|
3384
3555
|
{}
|
|
3385
3556
|
);
|
|
3386
3557
|
var FormField = (_a) => {
|
|
@@ -3388,8 +3559,8 @@ var FormField = (_a) => {
|
|
|
3388
3559
|
return /* @__PURE__ */ jsx30(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx30(Controller, __spreadValues({}, props)) });
|
|
3389
3560
|
};
|
|
3390
3561
|
var useFormField = () => {
|
|
3391
|
-
const fieldContext =
|
|
3392
|
-
const itemContext =
|
|
3562
|
+
const fieldContext = React7.useContext(FormFieldContext);
|
|
3563
|
+
const itemContext = React7.useContext(FormItemContext);
|
|
3393
3564
|
const { getFieldState } = useFormContext();
|
|
3394
3565
|
const formState = useFormState({ name: fieldContext.name });
|
|
3395
3566
|
const fieldState = getFieldState(fieldContext.name, formState);
|
|
@@ -3405,12 +3576,12 @@ var useFormField = () => {
|
|
|
3405
3576
|
formMessageId: `${id}-form-item-message`
|
|
3406
3577
|
}, fieldState);
|
|
3407
3578
|
};
|
|
3408
|
-
var FormItemContext =
|
|
3579
|
+
var FormItemContext = React7.createContext(
|
|
3409
3580
|
{}
|
|
3410
3581
|
);
|
|
3411
3582
|
function FormItem(_a) {
|
|
3412
3583
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
3413
|
-
const id =
|
|
3584
|
+
const id = React7.useId();
|
|
3414
3585
|
return /* @__PURE__ */ jsx30(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx30(
|
|
3415
3586
|
"div",
|
|
3416
3587
|
__spreadValues({
|
|
@@ -3517,10 +3688,10 @@ function HoverCardContent(_a) {
|
|
|
3517
3688
|
}
|
|
3518
3689
|
|
|
3519
3690
|
// components/ui/input-otp.tsx
|
|
3520
|
-
import * as
|
|
3691
|
+
import * as React8 from "react";
|
|
3521
3692
|
import { OTPInput, OTPInputContext } from "input-otp";
|
|
3522
3693
|
import { MinusIcon } from "lucide-react";
|
|
3523
|
-
import { jsx as jsx32, jsxs as
|
|
3694
|
+
import { jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
3524
3695
|
function InputOTP(_a) {
|
|
3525
3696
|
var _b = _a, {
|
|
3526
3697
|
className,
|
|
@@ -3560,9 +3731,9 @@ function InputOTPSlot(_a) {
|
|
|
3560
3731
|
"className"
|
|
3561
3732
|
]);
|
|
3562
3733
|
var _a2;
|
|
3563
|
-
const inputOTPContext =
|
|
3734
|
+
const inputOTPContext = React8.useContext(OTPInputContext);
|
|
3564
3735
|
const { char, hasFakeCaret, isActive } = (_a2 = inputOTPContext == null ? void 0 : inputOTPContext.slots[index]) != null ? _a2 : {};
|
|
3565
|
-
return /* @__PURE__ */
|
|
3736
|
+
return /* @__PURE__ */ jsxs16(
|
|
3566
3737
|
"div",
|
|
3567
3738
|
__spreadProps(__spreadValues({
|
|
3568
3739
|
"data-slot": "input-otp-slot",
|
|
@@ -3837,7 +4008,7 @@ function Link(_a) {
|
|
|
3837
4008
|
// components/ui/menubar.tsx
|
|
3838
4009
|
import { CheckIcon as CheckIcon5, ChevronRightIcon as ChevronRightIcon4, CircleIcon as CircleIcon3 } from "lucide-react";
|
|
3839
4010
|
import { Menubar as MenubarPrimitive } from "radix-ui";
|
|
3840
|
-
import { jsx as jsx36, jsxs as
|
|
4011
|
+
import { jsx as jsx36, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
3841
4012
|
function Menubar(_a) {
|
|
3842
4013
|
var _b = _a, {
|
|
3843
4014
|
className
|
|
@@ -3947,7 +4118,7 @@ function MenubarCheckboxItem(_a) {
|
|
|
3947
4118
|
"children",
|
|
3948
4119
|
"checked"
|
|
3949
4120
|
]);
|
|
3950
|
-
return /* @__PURE__ */
|
|
4121
|
+
return /* @__PURE__ */ jsxs17(
|
|
3951
4122
|
MenubarPrimitive.CheckboxItem,
|
|
3952
4123
|
__spreadProps(__spreadValues({
|
|
3953
4124
|
"data-slot": "menubar-checkbox-item",
|
|
@@ -3972,7 +4143,7 @@ function MenubarRadioItem(_a) {
|
|
|
3972
4143
|
"className",
|
|
3973
4144
|
"children"
|
|
3974
4145
|
]);
|
|
3975
|
-
return /* @__PURE__ */
|
|
4146
|
+
return /* @__PURE__ */ jsxs17(
|
|
3976
4147
|
MenubarPrimitive.RadioItem,
|
|
3977
4148
|
__spreadProps(__spreadValues({
|
|
3978
4149
|
"data-slot": "menubar-radio-item",
|
|
@@ -4053,7 +4224,7 @@ function MenubarSubTrigger(_a) {
|
|
|
4053
4224
|
"inset",
|
|
4054
4225
|
"children"
|
|
4055
4226
|
]);
|
|
4056
|
-
return /* @__PURE__ */
|
|
4227
|
+
return /* @__PURE__ */ jsxs17(
|
|
4057
4228
|
MenubarPrimitive.SubTrigger,
|
|
4058
4229
|
__spreadProps(__spreadValues({
|
|
4059
4230
|
"data-slot": "menubar-sub-trigger",
|
|
@@ -4090,7 +4261,7 @@ function MenubarSubContent(_a) {
|
|
|
4090
4261
|
|
|
4091
4262
|
// components/ui/native-select.tsx
|
|
4092
4263
|
import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
|
|
4093
|
-
import { jsx as jsx37, jsxs as
|
|
4264
|
+
import { jsx as jsx37, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4094
4265
|
function NativeSelect(_a) {
|
|
4095
4266
|
var _b = _a, {
|
|
4096
4267
|
className,
|
|
@@ -4099,7 +4270,7 @@ function NativeSelect(_a) {
|
|
|
4099
4270
|
"className",
|
|
4100
4271
|
"size"
|
|
4101
4272
|
]);
|
|
4102
|
-
return /* @__PURE__ */
|
|
4273
|
+
return /* @__PURE__ */ jsxs18(
|
|
4103
4274
|
"div",
|
|
4104
4275
|
{
|
|
4105
4276
|
className: "group/native-select relative w-fit has-[select:disabled]:opacity-50",
|
|
@@ -4197,7 +4368,7 @@ function NavigationButton(_a) {
|
|
|
4197
4368
|
import { cva as cva11 } from "class-variance-authority";
|
|
4198
4369
|
import { ChevronDownIcon as ChevronDownIcon5 } from "lucide-react";
|
|
4199
4370
|
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
|
|
4200
|
-
import { jsx as jsx39, jsxs as
|
|
4371
|
+
import { jsx as jsx39, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
4201
4372
|
function NavigationMenu(_a) {
|
|
4202
4373
|
var _b = _a, {
|
|
4203
4374
|
className,
|
|
@@ -4208,7 +4379,7 @@ function NavigationMenu(_a) {
|
|
|
4208
4379
|
"children",
|
|
4209
4380
|
"viewport"
|
|
4210
4381
|
]);
|
|
4211
|
-
return /* @__PURE__ */
|
|
4382
|
+
return /* @__PURE__ */ jsxs19(
|
|
4212
4383
|
NavigationMenuPrimitive.Root,
|
|
4213
4384
|
__spreadProps(__spreadValues({
|
|
4214
4385
|
"data-slot": "navigation-menu",
|
|
@@ -4267,7 +4438,7 @@ function NavigationMenuTrigger(_a) {
|
|
|
4267
4438
|
"className",
|
|
4268
4439
|
"children"
|
|
4269
4440
|
]);
|
|
4270
|
-
return /* @__PURE__ */
|
|
4441
|
+
return /* @__PURE__ */ jsxs19(
|
|
4271
4442
|
NavigationMenuPrimitive.Trigger,
|
|
4272
4443
|
__spreadProps(__spreadValues({
|
|
4273
4444
|
"data-slot": "navigation-menu-trigger",
|
|
@@ -4373,7 +4544,7 @@ import {
|
|
|
4373
4544
|
ChevronRightIcon as ChevronRightIcon5,
|
|
4374
4545
|
MoreHorizontalIcon
|
|
4375
4546
|
} from "lucide-react";
|
|
4376
|
-
import { jsx as jsx40, jsxs as
|
|
4547
|
+
import { jsx as jsx40, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
4377
4548
|
function Pagination(_a) {
|
|
4378
4549
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
4379
4550
|
return /* @__PURE__ */ jsx40(
|
|
@@ -4450,7 +4621,7 @@ function PaginationEllipsis(_a) {
|
|
|
4450
4621
|
} = _b, props = __objRest(_b, [
|
|
4451
4622
|
"className"
|
|
4452
4623
|
]);
|
|
4453
|
-
return /* @__PURE__ */
|
|
4624
|
+
return /* @__PURE__ */ jsxs20(
|
|
4454
4625
|
"span",
|
|
4455
4626
|
__spreadProps(__spreadValues({
|
|
4456
4627
|
"aria-hidden": true,
|
|
@@ -4664,7 +4835,7 @@ function ResizableHandle(_a) {
|
|
|
4664
4835
|
|
|
4665
4836
|
// components/ui/scroll-area.tsx
|
|
4666
4837
|
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
4667
|
-
import { jsx as jsx45, jsxs as
|
|
4838
|
+
import { jsx as jsx45, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
4668
4839
|
function ScrollArea(_a) {
|
|
4669
4840
|
var _b = _a, {
|
|
4670
4841
|
className,
|
|
@@ -4673,7 +4844,7 @@ function ScrollArea(_a) {
|
|
|
4673
4844
|
"className",
|
|
4674
4845
|
"children"
|
|
4675
4846
|
]);
|
|
4676
|
-
return /* @__PURE__ */
|
|
4847
|
+
return /* @__PURE__ */ jsxs21(
|
|
4677
4848
|
ScrollAreaPrimitive.Root,
|
|
4678
4849
|
__spreadProps(__spreadValues({
|
|
4679
4850
|
"data-slot": "scroll-area",
|
|
@@ -4728,7 +4899,7 @@ function ScrollBar(_a) {
|
|
|
4728
4899
|
// components/ui/select.tsx
|
|
4729
4900
|
import { CheckIcon as CheckIcon6, ChevronDownIcon as ChevronDownIcon6, ChevronUpIcon } from "lucide-react";
|
|
4730
4901
|
import { Select as SelectPrimitive } from "radix-ui";
|
|
4731
|
-
import { jsx as jsx46, jsxs as
|
|
4902
|
+
import { jsx as jsx46, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
4732
4903
|
function Select(_a) {
|
|
4733
4904
|
var props = __objRest(_a, []);
|
|
4734
4905
|
return /* @__PURE__ */ jsx46(SelectPrimitive.Root, __spreadValues({ "data-slot": "select" }, props));
|
|
@@ -4753,7 +4924,7 @@ function SelectTrigger(_a) {
|
|
|
4753
4924
|
"readOnly",
|
|
4754
4925
|
"children"
|
|
4755
4926
|
]);
|
|
4756
|
-
return /* @__PURE__ */
|
|
4927
|
+
return /* @__PURE__ */ jsxs22(
|
|
4757
4928
|
SelectPrimitive.Trigger,
|
|
4758
4929
|
__spreadProps(__spreadValues({
|
|
4759
4930
|
"data-slot": "select-trigger",
|
|
@@ -4784,7 +4955,7 @@ function SelectContent(_a) {
|
|
|
4784
4955
|
"position",
|
|
4785
4956
|
"align"
|
|
4786
4957
|
]);
|
|
4787
|
-
return /* @__PURE__ */ jsx46(SelectPrimitive.Portal, { children: /* @__PURE__ */
|
|
4958
|
+
return /* @__PURE__ */ jsx46(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs22(
|
|
4788
4959
|
SelectPrimitive.Content,
|
|
4789
4960
|
__spreadProps(__spreadValues({
|
|
4790
4961
|
"data-slot": "select-content",
|
|
@@ -4835,7 +5006,7 @@ function SelectItem(_a) {
|
|
|
4835
5006
|
"className",
|
|
4836
5007
|
"children"
|
|
4837
5008
|
]);
|
|
4838
|
-
return /* @__PURE__ */
|
|
5009
|
+
return /* @__PURE__ */ jsxs22(
|
|
4839
5010
|
SelectPrimitive.Item,
|
|
4840
5011
|
__spreadProps(__spreadValues({
|
|
4841
5012
|
"data-slot": "select-item",
|
|
@@ -4914,7 +5085,7 @@ function SelectScrollDownButton(_a) {
|
|
|
4914
5085
|
// components/ui/sheet.tsx
|
|
4915
5086
|
import { XIcon as XIcon3 } from "lucide-react";
|
|
4916
5087
|
import { Dialog as SheetPrimitive } from "radix-ui";
|
|
4917
|
-
import { jsx as jsx47, jsxs as
|
|
5088
|
+
import { jsx as jsx47, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
4918
5089
|
function Sheet(_a) {
|
|
4919
5090
|
var props = __objRest(_a, []);
|
|
4920
5091
|
return /* @__PURE__ */ jsx47(SheetPrimitive.Root, __spreadValues({ "data-slot": "sheet" }, props));
|
|
@@ -4960,9 +5131,9 @@ function SheetContent(_a) {
|
|
|
4960
5131
|
"side",
|
|
4961
5132
|
"showCloseButton"
|
|
4962
5133
|
]);
|
|
4963
|
-
return /* @__PURE__ */
|
|
5134
|
+
return /* @__PURE__ */ jsxs23(SheetPortal, { children: [
|
|
4964
5135
|
/* @__PURE__ */ jsx47(SheetOverlay, {}),
|
|
4965
|
-
/* @__PURE__ */
|
|
5136
|
+
/* @__PURE__ */ jsxs23(
|
|
4966
5137
|
SheetPrimitive.Content,
|
|
4967
5138
|
__spreadProps(__spreadValues({
|
|
4968
5139
|
"data-slot": "sheet-content",
|
|
@@ -4977,7 +5148,7 @@ function SheetContent(_a) {
|
|
|
4977
5148
|
}, props), {
|
|
4978
5149
|
children: [
|
|
4979
5150
|
children,
|
|
4980
|
-
showCloseButton && /* @__PURE__ */
|
|
5151
|
+
showCloseButton && /* @__PURE__ */ jsxs23(SheetPrimitive.Close, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-prominent transition-opacity hover:opacity-100 focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
|
|
4981
5152
|
/* @__PURE__ */ jsx47(XIcon3, { className: "size-4" }),
|
|
4982
5153
|
/* @__PURE__ */ jsx47("span", { className: "sr-only", children: "Close" })
|
|
4983
5154
|
] })
|
|
@@ -5036,17 +5207,17 @@ function SheetDescription(_a) {
|
|
|
5036
5207
|
}
|
|
5037
5208
|
|
|
5038
5209
|
// components/ui/sidebar.tsx
|
|
5039
|
-
import * as
|
|
5210
|
+
import * as React11 from "react";
|
|
5040
5211
|
import { cva as cva12 } from "class-variance-authority";
|
|
5041
5212
|
import { PanelLeftIcon } from "lucide-react";
|
|
5042
5213
|
import { Slot as Slot8 } from "radix-ui";
|
|
5043
5214
|
|
|
5044
5215
|
// hooks/use-mobile.ts
|
|
5045
|
-
import * as
|
|
5216
|
+
import * as React9 from "react";
|
|
5046
5217
|
var MOBILE_BREAKPOINT = 768;
|
|
5047
5218
|
function useIsMobile() {
|
|
5048
|
-
const [isMobile, setIsMobile] =
|
|
5049
|
-
|
|
5219
|
+
const [isMobile, setIsMobile] = React9.useState(void 0);
|
|
5220
|
+
React9.useEffect(() => {
|
|
5050
5221
|
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
5051
5222
|
const onChange = () => {
|
|
5052
5223
|
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
@@ -5072,10 +5243,10 @@ function Skeleton(_a) {
|
|
|
5072
5243
|
}
|
|
5073
5244
|
|
|
5074
5245
|
// components/ui/tooltip.tsx
|
|
5075
|
-
import * as
|
|
5246
|
+
import * as React10 from "react";
|
|
5076
5247
|
import { Tooltip as TooltipPrimitive } from "radix-ui";
|
|
5077
|
-
import { jsx as jsx49, jsxs as
|
|
5078
|
-
var TooltipModeContext =
|
|
5248
|
+
import { jsx as jsx49, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
5249
|
+
var TooltipModeContext = React10.createContext("tooltip");
|
|
5079
5250
|
function TooltipProvider(_a) {
|
|
5080
5251
|
var _b = _a, {
|
|
5081
5252
|
delayDuration = 0
|
|
@@ -5109,7 +5280,7 @@ function TooltipTrigger(_a) {
|
|
|
5109
5280
|
} = _b, props = __objRest(_b, [
|
|
5110
5281
|
"children"
|
|
5111
5282
|
]);
|
|
5112
|
-
const mode =
|
|
5283
|
+
const mode = React10.useContext(TooltipModeContext);
|
|
5113
5284
|
if (mode === "drawer") {
|
|
5114
5285
|
return /* @__PURE__ */ jsx49(DrawerTrigger, __spreadProps(__spreadValues({ "data-slot": "tooltip-trigger" }, props), { children }));
|
|
5115
5286
|
}
|
|
@@ -5131,9 +5302,9 @@ function TooltipContent(_a) {
|
|
|
5131
5302
|
"closeLabel",
|
|
5132
5303
|
"children"
|
|
5133
5304
|
]);
|
|
5134
|
-
const mode =
|
|
5305
|
+
const mode = React10.useContext(TooltipModeContext);
|
|
5135
5306
|
if (mode === "drawer") {
|
|
5136
|
-
return /* @__PURE__ */
|
|
5307
|
+
return /* @__PURE__ */ jsxs24(DrawerContent, { "data-slot": "tooltip-content", "data-variant": variant, children: [
|
|
5137
5308
|
/* @__PURE__ */ jsx49(DrawerHeader, { children: /* @__PURE__ */ jsx49(DrawerTitle, { children: title }) }),
|
|
5138
5309
|
/* @__PURE__ */ jsx49("div", { className: cn("p-4 text-sm text-on-subtle", className), children }),
|
|
5139
5310
|
/* @__PURE__ */ jsx49(DrawerFooter, { children: /* @__PURE__ */ jsx49(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx49(Button, { variant: "primary", size: "md", children: closeLabel }) }) })
|
|
@@ -5141,7 +5312,7 @@ function TooltipContent(_a) {
|
|
|
5141
5312
|
}
|
|
5142
5313
|
const surfaceClasses = variant === "inverse" ? "bg-prominent text-on-prominent shadow-sm" : "bg-primary text-on-primary";
|
|
5143
5314
|
const arrowClasses = variant === "inverse" ? "fill-prominent" : "fill-primary";
|
|
5144
|
-
return /* @__PURE__ */ jsx49(TooltipPrimitive.Portal, { children: /* @__PURE__ */
|
|
5315
|
+
return /* @__PURE__ */ jsx49(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs24(
|
|
5145
5316
|
TooltipPrimitive.Content,
|
|
5146
5317
|
__spreadProps(__spreadValues({
|
|
5147
5318
|
"data-slot": "tooltip-content",
|
|
@@ -5162,16 +5333,16 @@ function TooltipContent(_a) {
|
|
|
5162
5333
|
}
|
|
5163
5334
|
|
|
5164
5335
|
// components/ui/sidebar.tsx
|
|
5165
|
-
import { jsx as jsx50, jsxs as
|
|
5336
|
+
import { jsx as jsx50, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
5166
5337
|
var SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
5167
5338
|
var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
5168
5339
|
var SIDEBAR_WIDTH = "16rem";
|
|
5169
5340
|
var SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
5170
5341
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
5171
5342
|
var SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
5172
|
-
var SidebarContext =
|
|
5343
|
+
var SidebarContext = React11.createContext(null);
|
|
5173
5344
|
function useSidebar() {
|
|
5174
|
-
const context =
|
|
5345
|
+
const context = React11.useContext(SidebarContext);
|
|
5175
5346
|
if (!context) {
|
|
5176
5347
|
throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
5177
5348
|
}
|
|
@@ -5194,10 +5365,10 @@ function SidebarProvider(_a) {
|
|
|
5194
5365
|
"children"
|
|
5195
5366
|
]);
|
|
5196
5367
|
const isMobile = useIsMobile();
|
|
5197
|
-
const [openMobile, setOpenMobile] =
|
|
5198
|
-
const [_open, _setOpen] =
|
|
5368
|
+
const [openMobile, setOpenMobile] = React11.useState(false);
|
|
5369
|
+
const [_open, _setOpen] = React11.useState(defaultOpen);
|
|
5199
5370
|
const open = openProp != null ? openProp : _open;
|
|
5200
|
-
const setOpen =
|
|
5371
|
+
const setOpen = React11.useCallback(
|
|
5201
5372
|
(value) => {
|
|
5202
5373
|
const openState = typeof value === "function" ? value(open) : value;
|
|
5203
5374
|
if (setOpenProp) {
|
|
@@ -5209,10 +5380,10 @@ function SidebarProvider(_a) {
|
|
|
5209
5380
|
},
|
|
5210
5381
|
[setOpenProp, open]
|
|
5211
5382
|
);
|
|
5212
|
-
const toggleSidebar =
|
|
5383
|
+
const toggleSidebar = React11.useCallback(() => {
|
|
5213
5384
|
return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
|
|
5214
5385
|
}, [isMobile, setOpen, setOpenMobile]);
|
|
5215
|
-
|
|
5386
|
+
React11.useEffect(() => {
|
|
5216
5387
|
const handleKeyDown = (event) => {
|
|
5217
5388
|
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
5218
5389
|
event.preventDefault();
|
|
@@ -5223,7 +5394,7 @@ function SidebarProvider(_a) {
|
|
|
5223
5394
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
5224
5395
|
}, [toggleSidebar]);
|
|
5225
5396
|
const state = open ? "expanded" : "collapsed";
|
|
5226
|
-
const contextValue =
|
|
5397
|
+
const contextValue = React11.useMemo(
|
|
5227
5398
|
() => ({
|
|
5228
5399
|
state,
|
|
5229
5400
|
open,
|
|
@@ -5282,7 +5453,7 @@ function Sidebar(_a) {
|
|
|
5282
5453
|
);
|
|
5283
5454
|
}
|
|
5284
5455
|
if (isMobile) {
|
|
5285
|
-
return /* @__PURE__ */ jsx50(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */
|
|
5456
|
+
return /* @__PURE__ */ jsx50(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ jsxs25(
|
|
5286
5457
|
SheetContent,
|
|
5287
5458
|
{
|
|
5288
5459
|
"data-sidebar": "sidebar",
|
|
@@ -5294,7 +5465,7 @@ function Sidebar(_a) {
|
|
|
5294
5465
|
},
|
|
5295
5466
|
side,
|
|
5296
5467
|
children: [
|
|
5297
|
-
/* @__PURE__ */
|
|
5468
|
+
/* @__PURE__ */ jsxs25(SheetHeader, { className: "sr-only", children: [
|
|
5298
5469
|
/* @__PURE__ */ jsx50(SheetTitle, { children: "Sidebar" }),
|
|
5299
5470
|
/* @__PURE__ */ jsx50(SheetDescription, { children: "Displays the mobile sidebar." })
|
|
5300
5471
|
] }),
|
|
@@ -5303,7 +5474,7 @@ function Sidebar(_a) {
|
|
|
5303
5474
|
}
|
|
5304
5475
|
) }));
|
|
5305
5476
|
}
|
|
5306
|
-
return /* @__PURE__ */
|
|
5477
|
+
return /* @__PURE__ */ jsxs25(
|
|
5307
5478
|
"div",
|
|
5308
5479
|
{
|
|
5309
5480
|
className: "group peer hidden text-sidebar-foreground md:block",
|
|
@@ -5361,7 +5532,7 @@ function SidebarTrigger(_a) {
|
|
|
5361
5532
|
"onClick"
|
|
5362
5533
|
]);
|
|
5363
5534
|
const { toggleSidebar } = useSidebar();
|
|
5364
|
-
return /* @__PURE__ */
|
|
5535
|
+
return /* @__PURE__ */ jsxs25(
|
|
5365
5536
|
Button,
|
|
5366
5537
|
__spreadProps(__spreadValues({
|
|
5367
5538
|
"data-sidebar": "trigger",
|
|
@@ -5635,7 +5806,7 @@ function SidebarMenuButton(_a) {
|
|
|
5635
5806
|
children: tooltip
|
|
5636
5807
|
};
|
|
5637
5808
|
}
|
|
5638
|
-
return /* @__PURE__ */
|
|
5809
|
+
return /* @__PURE__ */ jsxs25(Tooltip2, { children: [
|
|
5639
5810
|
/* @__PURE__ */ jsx50(TooltipTrigger, { asChild: true, children: button }),
|
|
5640
5811
|
/* @__PURE__ */ jsx50(
|
|
5641
5812
|
TooltipContent,
|
|
@@ -5709,7 +5880,7 @@ function SidebarMenuSkeleton(_a) {
|
|
|
5709
5880
|
"showIcon"
|
|
5710
5881
|
]);
|
|
5711
5882
|
const width = "70%";
|
|
5712
|
-
return /* @__PURE__ */
|
|
5883
|
+
return /* @__PURE__ */ jsxs25(
|
|
5713
5884
|
"div",
|
|
5714
5885
|
__spreadProps(__spreadValues({
|
|
5715
5886
|
"data-slot": "sidebar-menu-skeleton",
|
|
@@ -5801,9 +5972,9 @@ function SidebarMenuSubButton(_a) {
|
|
|
5801
5972
|
}
|
|
5802
5973
|
|
|
5803
5974
|
// components/ui/slider.tsx
|
|
5804
|
-
import * as
|
|
5975
|
+
import * as React12 from "react";
|
|
5805
5976
|
import { Slider as SliderPrimitive } from "radix-ui";
|
|
5806
|
-
import { jsx as jsx51, jsxs as
|
|
5977
|
+
import { jsx as jsx51, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
5807
5978
|
function Slider(_a) {
|
|
5808
5979
|
var _b = _a, {
|
|
5809
5980
|
className,
|
|
@@ -5818,11 +5989,11 @@ function Slider(_a) {
|
|
|
5818
5989
|
"min",
|
|
5819
5990
|
"max"
|
|
5820
5991
|
]);
|
|
5821
|
-
const _values =
|
|
5992
|
+
const _values = React12.useMemo(
|
|
5822
5993
|
() => Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max],
|
|
5823
5994
|
[value, defaultValue, min, max]
|
|
5824
5995
|
);
|
|
5825
|
-
return /* @__PURE__ */
|
|
5996
|
+
return /* @__PURE__ */ jsxs26(
|
|
5826
5997
|
SliderPrimitive.Root,
|
|
5827
5998
|
__spreadProps(__spreadValues({
|
|
5828
5999
|
"data-slot": "slider",
|
|
@@ -5916,9 +6087,9 @@ var Toaster = (_a) => {
|
|
|
5916
6087
|
};
|
|
5917
6088
|
|
|
5918
6089
|
// components/ui/stepper.tsx
|
|
5919
|
-
import * as
|
|
6090
|
+
import * as React13 from "react";
|
|
5920
6091
|
import { Minus, Plus } from "lucide-react";
|
|
5921
|
-
import { jsx as jsx53, jsxs as
|
|
6092
|
+
import { jsx as jsx53, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
5922
6093
|
function clamp(value, min, max) {
|
|
5923
6094
|
return Math.min(Math.max(value, min), max);
|
|
5924
6095
|
}
|
|
@@ -5952,16 +6123,16 @@ function Stepper({
|
|
|
5952
6123
|
}) {
|
|
5953
6124
|
const { container, buttonSize, iconClass } = stepperSizeConfig[size];
|
|
5954
6125
|
const isControlled = controlledValue !== void 0;
|
|
5955
|
-
const [internalValue, setInternalValue] =
|
|
6126
|
+
const [internalValue, setInternalValue] = React13.useState(
|
|
5956
6127
|
clamp(defaultValue, min, max)
|
|
5957
6128
|
);
|
|
5958
6129
|
const currentValue = isControlled ? controlledValue : internalValue;
|
|
5959
6130
|
const decimalPlaces = getDecimalPlaces(step);
|
|
5960
|
-
const [displayString, setDisplayString] =
|
|
6131
|
+
const [displayString, setDisplayString] = React13.useState(
|
|
5961
6132
|
formatValue(currentValue, decimalPlaces)
|
|
5962
6133
|
);
|
|
5963
|
-
const [isFocused, setIsFocused] =
|
|
5964
|
-
|
|
6134
|
+
const [isFocused, setIsFocused] = React13.useState(false);
|
|
6135
|
+
React13.useEffect(() => {
|
|
5965
6136
|
if (!isFocused) {
|
|
5966
6137
|
setDisplayString(formatValue(currentValue, decimalPlaces));
|
|
5967
6138
|
}
|
|
@@ -6011,7 +6182,7 @@ function Stepper({
|
|
|
6011
6182
|
}
|
|
6012
6183
|
}
|
|
6013
6184
|
}
|
|
6014
|
-
return /* @__PURE__ */
|
|
6185
|
+
return /* @__PURE__ */ jsxs27(
|
|
6015
6186
|
InputGroup,
|
|
6016
6187
|
{
|
|
6017
6188
|
"data-slot": "stepper",
|
|
@@ -6051,7 +6222,7 @@ function Stepper({
|
|
|
6051
6222
|
className: "text-center [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
|
|
6052
6223
|
}
|
|
6053
6224
|
),
|
|
6054
|
-
/* @__PURE__ */
|
|
6225
|
+
/* @__PURE__ */ jsxs27(InputGroupAddon, { align: "inline-end", children: [
|
|
6055
6226
|
/* @__PURE__ */ jsx53(InputGroupText, { className: "font-normal text-on-subtle", children: "USDT" }),
|
|
6056
6227
|
/* @__PURE__ */ jsx53(
|
|
6057
6228
|
InputGroupButton,
|
|
@@ -6319,8 +6490,8 @@ function TabsContent(_a) {
|
|
|
6319
6490
|
}
|
|
6320
6491
|
|
|
6321
6492
|
// components/ui/ticket-card.tsx
|
|
6322
|
-
import { ArrowRight as ArrowRight2, Info } from "lucide-react";
|
|
6323
|
-
import { Fragment as
|
|
6493
|
+
import { ArrowRight as ArrowRight2, Info as Info2 } from "lucide-react";
|
|
6494
|
+
import { Fragment as Fragment4, jsx as jsx57, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6324
6495
|
function formatBalanceValue(raw) {
|
|
6325
6496
|
const match = raw.match(/^(\D*)([\d,]+(?:\.\d+)?)(\D*)$/);
|
|
6326
6497
|
if (!match) return raw;
|
|
@@ -6344,14 +6515,14 @@ function TicketCard({
|
|
|
6344
6515
|
stubDisabled = false,
|
|
6345
6516
|
compact = false
|
|
6346
6517
|
}) {
|
|
6347
|
-
return /* @__PURE__ */ jsx57("div", { className: cn("flex w-full flex-col gap-2", className), children: /* @__PURE__ */
|
|
6348
|
-
/* @__PURE__ */
|
|
6518
|
+
return /* @__PURE__ */ jsx57("div", { className: cn("flex w-full flex-col gap-2", className), children: /* @__PURE__ */ jsxs28("div", { className: "relative flex h-20 w-full items-stretch justify-between rounded-sm bg-subtle", children: [
|
|
6519
|
+
/* @__PURE__ */ jsxs28("div", { className: cn("flex flex-1 items-center overflow-hidden", compact ? "gap-2 px-2" : "gap-4 px-4"), children: [
|
|
6349
6520
|
icon && /* @__PURE__ */ jsx57("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary", children: icon }),
|
|
6350
|
-
/* @__PURE__ */
|
|
6521
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex h-11 flex-col justify-center gap-1 whitespace-nowrap", children: [
|
|
6351
6522
|
/* @__PURE__ */ jsx57("p", { className: "text-xs text-on-subtle", children: label }),
|
|
6352
|
-
/* @__PURE__ */
|
|
6523
|
+
/* @__PURE__ */ jsxs28("p", { className: "leading-none", children: [
|
|
6353
6524
|
/* @__PURE__ */ jsx57("span", { className: "text-[20px] font-bold text-on-prominent", children: formatBalanceValue(value) }),
|
|
6354
|
-
currency && /* @__PURE__ */
|
|
6525
|
+
currency && /* @__PURE__ */ jsxs28(Fragment4, { children: [
|
|
6355
6526
|
" ",
|
|
6356
6527
|
/* @__PURE__ */ jsx57("span", { className: "text-sm text-on-subtle", children: currency })
|
|
6357
6528
|
] })
|
|
@@ -6371,7 +6542,7 @@ function TicketCard({
|
|
|
6371
6542
|
}
|
|
6372
6543
|
}
|
|
6373
6544
|
),
|
|
6374
|
-
/* @__PURE__ */
|
|
6545
|
+
/* @__PURE__ */ jsxs28(
|
|
6375
6546
|
"button",
|
|
6376
6547
|
{
|
|
6377
6548
|
type: "button",
|
|
@@ -6422,30 +6593,30 @@ function CreditTicketCard({
|
|
|
6422
6593
|
badgeInfoCloseLabel,
|
|
6423
6594
|
compact = false
|
|
6424
6595
|
}) {
|
|
6425
|
-
return /* @__PURE__ */ jsx57("div", { className: cn("flex w-full flex-col gap-2", className), children: /* @__PURE__ */
|
|
6596
|
+
return /* @__PURE__ */ jsx57("div", { className: cn("flex w-full flex-col gap-2", className), children: /* @__PURE__ */ jsxs28("div", { className: "relative flex w-full items-stretch justify-between rounded-sm bg-subtle", children: [
|
|
6426
6597
|
(() => {
|
|
6427
6598
|
const badgeText = badgeValue || badgeCurrency ? `${badgeLabel}: ${badgeValue}${badgeCurrency ? ` ${badgeCurrency}` : ""}` : badgeLabel;
|
|
6428
|
-
const creditBadge = /* @__PURE__ */
|
|
6599
|
+
const creditBadge = /* @__PURE__ */ jsxs28(Badge, { variant: "fill-credit", size: "sm", className: "!gap-1 !font-medium !tracking-normal", children: [
|
|
6429
6600
|
badgeIcon,
|
|
6430
6601
|
badgeText,
|
|
6431
|
-
badgeInfo && /* @__PURE__ */ jsx57(TooltipProvider, { children: /* @__PURE__ */
|
|
6602
|
+
badgeInfo && /* @__PURE__ */ jsx57(TooltipProvider, { children: /* @__PURE__ */ jsxs28(Tooltip2, { children: [
|
|
6432
6603
|
/* @__PURE__ */ jsx57(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx57(
|
|
6433
6604
|
"button",
|
|
6434
6605
|
{
|
|
6435
6606
|
type: "button",
|
|
6436
6607
|
"aria-label": `More info about ${badgeLabel.toLowerCase()}`,
|
|
6437
6608
|
className: "inline-flex shrink-0 items-center justify-center rounded-full text-on-semantic-boost outline-none transition-opacity hover:opacity-70 focus-visible:opacity-70 focus-visible:ring-2 focus-visible:ring-on-semantic-boost/40 cursor-pointer",
|
|
6438
|
-
children: /* @__PURE__ */ jsx57(
|
|
6609
|
+
children: /* @__PURE__ */ jsx57(Info2, { className: "!size-3.5", strokeWidth: 2 })
|
|
6439
6610
|
}
|
|
6440
6611
|
) }),
|
|
6441
6612
|
/* @__PURE__ */ jsx57(TooltipContent, { side: badgeInfoSide, align: badgeInfoAlign, title: badgeInfoTitle, closeLabel: badgeInfoCloseLabel, variant: "inverse", className: "max-w-xs whitespace-normal", children: badgeInfo })
|
|
6442
6613
|
] }) })
|
|
6443
6614
|
] });
|
|
6444
|
-
const labelValue = /* @__PURE__ */
|
|
6615
|
+
const labelValue = /* @__PURE__ */ jsxs28("div", { className: "flex h-11 flex-col justify-center gap-1 whitespace-nowrap", children: [
|
|
6445
6616
|
/* @__PURE__ */ jsx57("p", { className: "text-xs text-on-subtle", children: label }),
|
|
6446
|
-
/* @__PURE__ */
|
|
6617
|
+
/* @__PURE__ */ jsxs28("p", { className: "leading-none", children: [
|
|
6447
6618
|
/* @__PURE__ */ jsx57("span", { className: "text-[20px] font-bold text-on-prominent", children: formatBalanceValue(value) }),
|
|
6448
|
-
currency && /* @__PURE__ */
|
|
6619
|
+
currency && /* @__PURE__ */ jsxs28(Fragment4, { children: [
|
|
6449
6620
|
" ",
|
|
6450
6621
|
/* @__PURE__ */ jsx57("span", { className: "text-sm text-on-subtle", children: currency })
|
|
6451
6622
|
] })
|
|
@@ -6458,20 +6629,20 @@ function CreditTicketCard({
|
|
|
6458
6629
|
"flex flex-1 overflow-hidden",
|
|
6459
6630
|
compact ? "flex-col gap-2 px-2 py-4" : "items-center gap-4 px-4 py-4"
|
|
6460
6631
|
),
|
|
6461
|
-
children: compact ? /* @__PURE__ */
|
|
6462
|
-
/* @__PURE__ */
|
|
6632
|
+
children: compact ? /* @__PURE__ */ jsxs28("div", { className: "flex flex-1 flex-col gap-2", children: [
|
|
6633
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-2", children: [
|
|
6463
6634
|
icon && /* @__PURE__ */ jsx57("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary", children: icon }),
|
|
6464
6635
|
labelValue
|
|
6465
6636
|
] }),
|
|
6466
6637
|
/* @__PURE__ */ jsx57("div", { className: "flex", children: icon ? /* @__PURE__ */ jsx57("div", { className: "flex w-10 shrink-0 justify-start", children: /* @__PURE__ */ jsx57("div", { className: "w-max", children: creditBadge }) }) : creditBadge })
|
|
6467
|
-
] }) : /* @__PURE__ */
|
|
6638
|
+
] }) : /* @__PURE__ */ jsxs28(Fragment4, { children: [
|
|
6468
6639
|
icon && /* @__PURE__ */ jsx57("div", { className: "flex size-10 shrink-0 items-center justify-center rounded-full border-2 border-primary text-primary", children: icon }),
|
|
6469
|
-
/* @__PURE__ */
|
|
6640
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex flex-col gap-1 whitespace-nowrap", children: [
|
|
6470
6641
|
/* @__PURE__ */ jsx57("p", { className: "text-xs text-on-subtle", children: label }),
|
|
6471
|
-
/* @__PURE__ */
|
|
6472
|
-
/* @__PURE__ */
|
|
6642
|
+
/* @__PURE__ */ jsxs28("div", { className: "flex items-center gap-4", children: [
|
|
6643
|
+
/* @__PURE__ */ jsxs28("p", { className: "leading-none", children: [
|
|
6473
6644
|
/* @__PURE__ */ jsx57("span", { className: "text-[20px] font-bold text-on-prominent", children: formatBalanceValue(value) }),
|
|
6474
|
-
currency && /* @__PURE__ */
|
|
6645
|
+
currency && /* @__PURE__ */ jsxs28(Fragment4, { children: [
|
|
6475
6646
|
" ",
|
|
6476
6647
|
/* @__PURE__ */ jsx57("span", { className: "text-sm text-on-subtle", children: currency })
|
|
6477
6648
|
] })
|
|
@@ -6496,7 +6667,7 @@ function CreditTicketCard({
|
|
|
6496
6667
|
}
|
|
6497
6668
|
}
|
|
6498
6669
|
),
|
|
6499
|
-
/* @__PURE__ */
|
|
6670
|
+
/* @__PURE__ */ jsxs28(
|
|
6500
6671
|
"button",
|
|
6501
6672
|
{
|
|
6502
6673
|
type: "button",
|
|
@@ -6573,10 +6744,10 @@ function Toggle(_a) {
|
|
|
6573
6744
|
}
|
|
6574
6745
|
|
|
6575
6746
|
// components/ui/toggle-group.tsx
|
|
6576
|
-
import * as
|
|
6747
|
+
import * as React14 from "react";
|
|
6577
6748
|
import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui";
|
|
6578
6749
|
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
6579
|
-
var ToggleGroupContext =
|
|
6750
|
+
var ToggleGroupContext = React14.createContext({
|
|
6580
6751
|
size: "default",
|
|
6581
6752
|
variant: "default",
|
|
6582
6753
|
spacing: 0
|
|
@@ -6624,7 +6795,7 @@ function ToggleGroupItem(_a) {
|
|
|
6624
6795
|
"variant",
|
|
6625
6796
|
"size"
|
|
6626
6797
|
]);
|
|
6627
|
-
const context =
|
|
6798
|
+
const context = React14.useContext(ToggleGroupContext);
|
|
6628
6799
|
return /* @__PURE__ */ jsx59(
|
|
6629
6800
|
ToggleGroupPrimitive.Item,
|
|
6630
6801
|
__spreadProps(__spreadValues({
|
|
@@ -6648,7 +6819,7 @@ function ToggleGroupItem(_a) {
|
|
|
6648
6819
|
}
|
|
6649
6820
|
|
|
6650
6821
|
// components/blocks/result-block.tsx
|
|
6651
|
-
import { Fragment as
|
|
6822
|
+
import { Fragment as Fragment5, jsx as jsx60, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
6652
6823
|
var THUMBS_UP_DATA_URL = "data:image/webp;base64,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";
|
|
6653
6824
|
var THUMBS_DOWN_DATA_URL = "data:image/webp;base64,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";
|
|
6654
6825
|
function ResultBlock({
|
|
@@ -6665,8 +6836,8 @@ function ResultBlock({
|
|
|
6665
6836
|
const signedAmount = isWin ? `+${amount}` : `\u2212${amount}`;
|
|
6666
6837
|
const amountColorClass = isWin ? "text-semantic-win" : "text-semantic-loss";
|
|
6667
6838
|
const haloBgClass = isWin ? "bg-semantic-win" : "bg-semantic-loss";
|
|
6668
|
-
return /* @__PURE__ */
|
|
6669
|
-
/* @__PURE__ */
|
|
6839
|
+
return /* @__PURE__ */ jsxs29(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-5 items-center gap-3", children: [
|
|
6840
|
+
/* @__PURE__ */ jsxs29("div", { className: "relative flex items-center justify-center py-2", children: [
|
|
6670
6841
|
/* @__PURE__ */ jsx60(
|
|
6671
6842
|
"span",
|
|
6672
6843
|
{
|
|
@@ -6686,24 +6857,24 @@ function ResultBlock({
|
|
|
6686
6857
|
)
|
|
6687
6858
|
] }),
|
|
6688
6859
|
/* @__PURE__ */ jsx60("p", { className: "text-lg font-semibold text-on-prominent", children: titleText }),
|
|
6689
|
-
/* @__PURE__ */
|
|
6860
|
+
/* @__PURE__ */ jsxs29("p", { className: `flex items-baseline gap-1.5 ${amountColorClass}`, children: [
|
|
6690
6861
|
/* @__PURE__ */ jsx60("span", { className: "font-display text-4xl font-bold tabular-nums tracking-tight", children: signedAmount }),
|
|
6691
6862
|
/* @__PURE__ */ jsx60("span", { className: "text-lg font-semibold", children: currency })
|
|
6692
6863
|
] }),
|
|
6693
|
-
/* @__PURE__ */
|
|
6694
|
-
/* @__PURE__ */
|
|
6864
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex items-center gap-2", children: [
|
|
6865
|
+
/* @__PURE__ */ jsxs29(Badge, { variant: "standard", size: "sm", children: [
|
|
6695
6866
|
contractLabel,
|
|
6696
|
-
pickedDigit !== void 0 && /* @__PURE__ */
|
|
6867
|
+
pickedDigit !== void 0 && /* @__PURE__ */ jsxs29(Fragment5, { children: [
|
|
6697
6868
|
/* @__PURE__ */ jsx60("span", { "aria-hidden": true, className: "h-3 w-px bg-border-prominent/40 mx-1" }),
|
|
6698
6869
|
/* @__PURE__ */ jsx60("span", { className: "tabular-nums", children: pickedDigit })
|
|
6699
6870
|
] })
|
|
6700
6871
|
] }),
|
|
6701
6872
|
/* @__PURE__ */ jsx60(Badge, { variant: "standard", size: "sm", children: duration })
|
|
6702
6873
|
] }),
|
|
6703
|
-
/* @__PURE__ */
|
|
6874
|
+
/* @__PURE__ */ jsxs29("div", { className: "w-full pt-2", children: [
|
|
6704
6875
|
ctaMode === "next-round" && /* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Next round" }),
|
|
6705
6876
|
ctaMode === "go-again" && /* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Go again" }),
|
|
6706
|
-
ctaMode === "conversion" && /* @__PURE__ */
|
|
6877
|
+
ctaMode === "conversion" && /* @__PURE__ */ jsxs29("div", { className: "w-full flex flex-col gap-3", children: [
|
|
6707
6878
|
/* @__PURE__ */ jsx60("p", { className: "text-center text-base font-semibold text-on-prominent", children: "Ready to play for real?" }),
|
|
6708
6879
|
/* @__PURE__ */ jsx60(Button, { className: "w-full", children: "Deposit now" }),
|
|
6709
6880
|
/* @__PURE__ */ jsx60(Button, { variant: "secondary", className: "w-full", children: "Stay in demo" })
|
|
@@ -6717,12 +6888,12 @@ function ResultDialog({
|
|
|
6717
6888
|
primaryLabel,
|
|
6718
6889
|
secondaryLabel
|
|
6719
6890
|
}) {
|
|
6720
|
-
return /* @__PURE__ */
|
|
6721
|
-
/* @__PURE__ */
|
|
6891
|
+
return /* @__PURE__ */ jsxs29(Card, { className: "w-80 shrink-0 overflow-hidden rounded-md shadow-sm px-5 py-6 items-center gap-4", children: [
|
|
6892
|
+
/* @__PURE__ */ jsxs29("div", { className: "flex flex-col items-center gap-2 text-center", children: [
|
|
6722
6893
|
/* @__PURE__ */ jsx60("p", { className: "text-lg font-semibold text-on-prominent", children: title }),
|
|
6723
6894
|
/* @__PURE__ */ jsx60("p", { className: "text-sm text-on-subtle", children: body })
|
|
6724
6895
|
] }),
|
|
6725
|
-
/* @__PURE__ */
|
|
6896
|
+
/* @__PURE__ */ jsxs29("div", { className: "w-full flex flex-col gap-2", children: [
|
|
6726
6897
|
/* @__PURE__ */ jsx60(Button, { className: "w-full", children: primaryLabel }),
|
|
6727
6898
|
/* @__PURE__ */ jsx60(Button, { variant: "secondary", className: "w-full", children: secondaryLabel })
|
|
6728
6899
|
] })
|
|
@@ -6731,7 +6902,7 @@ function ResultDialog({
|
|
|
6731
6902
|
|
|
6732
6903
|
// components/blocks/header-navigation-block.tsx
|
|
6733
6904
|
import { ArrowLeft as ArrowLeft2, History } from "lucide-react";
|
|
6734
|
-
import { jsx as jsx61, jsxs as
|
|
6905
|
+
import { jsx as jsx61, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6735
6906
|
function HeaderNavigationBlock({
|
|
6736
6907
|
onBack,
|
|
6737
6908
|
badge,
|
|
@@ -6740,14 +6911,14 @@ function HeaderNavigationBlock({
|
|
|
6740
6911
|
actions
|
|
6741
6912
|
}) {
|
|
6742
6913
|
var _a;
|
|
6743
|
-
return /* @__PURE__ */ jsx61("div", { className: "w-full min-w-80 max-w-layout-diagram-small
|
|
6914
|
+
return /* @__PURE__ */ jsx61("div", { className: "w-full min-w-80 max-w-layout-diagram-small rounded-md overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs30("header", { className: "flex items-center gap-2 border-b border-border-subtle bg-prominent px-layout-margin-inline py-3", children: [
|
|
6744
6915
|
onBack && /* @__PURE__ */ jsx61(NavigationButton, { type: "button", size: "md", "aria-label": "Back", onClick: onBack, children: /* @__PURE__ */ jsx61(ArrowLeft2, { className: "size-5" }) }),
|
|
6745
|
-
/* @__PURE__ */
|
|
6916
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex min-w-0 flex-1 items-center justify-center gap-2", children: [
|
|
6746
6917
|
badge && /* @__PURE__ */ jsx61(Badge, { variant: (_a = badge.variant) != null ? _a : "fill-warning", size: "sm", children: badge.label }),
|
|
6747
6918
|
/* @__PURE__ */ jsx61("span", { className: "font-display font-semibold tabular-nums text-on-prominent", children: balance.amount }),
|
|
6748
6919
|
/* @__PURE__ */ jsx61("span", { className: "text-sm text-on-subtle", children: balance.currency })
|
|
6749
6920
|
] }),
|
|
6750
|
-
/* @__PURE__ */
|
|
6921
|
+
/* @__PURE__ */ jsxs30("div", { className: "flex shrink-0 items-center gap-1", children: [
|
|
6751
6922
|
history && /* @__PURE__ */ jsx61(HistoryButton, __spreadValues({}, history)),
|
|
6752
6923
|
actions
|
|
6753
6924
|
] })
|
|
@@ -6761,7 +6932,7 @@ function HistoryButton({
|
|
|
6761
6932
|
const show = typeof count === "number" && count > 0;
|
|
6762
6933
|
const label = show ? count > 99 ? "99+" : String(count) : null;
|
|
6763
6934
|
const ariaLabel = ariaLabelOverride != null ? ariaLabelOverride : show ? `Open history, ${count} new` : "Open history";
|
|
6764
|
-
return /* @__PURE__ */
|
|
6935
|
+
return /* @__PURE__ */ jsxs30("div", { className: "relative inline-flex", children: [
|
|
6765
6936
|
/* @__PURE__ */ jsx61(NavigationButton, { type: "button", size: "md", "aria-label": ariaLabel, onClick, children: /* @__PURE__ */ jsx61(History, { className: "size-5" }) }),
|
|
6766
6937
|
show && /* @__PURE__ */ jsx61(
|
|
6767
6938
|
"span",
|
|
@@ -6775,7 +6946,7 @@ function HistoryButton({
|
|
|
6775
6946
|
}
|
|
6776
6947
|
|
|
6777
6948
|
// components/blocks/faq-block.tsx
|
|
6778
|
-
import { jsx as jsx62, jsxs as
|
|
6949
|
+
import { jsx as jsx62, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
6779
6950
|
function FAQBlock({
|
|
6780
6951
|
eyebrow = "FAQ Section",
|
|
6781
6952
|
title = "Frequently asked questions",
|
|
@@ -6791,8 +6962,8 @@ function FAQBlock({
|
|
|
6791
6962
|
const helpCardPaddingClass = layout === "desktop" ? "p-8" : "p-6";
|
|
6792
6963
|
const gapClass = layout === "desktop" ? "gap-12" : "gap-10";
|
|
6793
6964
|
const headerGapClass = layout === "desktop" ? "gap-5" : "gap-4";
|
|
6794
|
-
return /* @__PURE__ */
|
|
6795
|
-
/* @__PURE__ */
|
|
6965
|
+
return /* @__PURE__ */ jsxs31("div", { className: `w-full flex flex-col ${gapClass}`, children: [
|
|
6966
|
+
/* @__PURE__ */ jsxs31("div", { className: `flex flex-col ${headerGapClass} items-center w-full`, children: [
|
|
6796
6967
|
/* @__PURE__ */ jsx62("span", { className: "text-sm text-on-subtle font-body", children: eyebrow }),
|
|
6797
6968
|
/* @__PURE__ */ jsx62("h2", { className: headingClass, children: title }),
|
|
6798
6969
|
intro && /* @__PURE__ */ jsx62("p", { className: "text-lg text-on-subtle font-body text-center", children: intro })
|
|
@@ -6804,14 +6975,14 @@ function FAQBlock({
|
|
|
6804
6975
|
collapsible: true,
|
|
6805
6976
|
defaultValue: defaultValue != null ? defaultValue : (_a = items[0]) == null ? void 0 : _a.value,
|
|
6806
6977
|
className: "w-full",
|
|
6807
|
-
children: items.map(({ value, question, answer }) => /* @__PURE__ */
|
|
6978
|
+
children: items.map(({ value, question, answer }) => /* @__PURE__ */ jsxs31(AccordionItem, { value, children: [
|
|
6808
6979
|
/* @__PURE__ */ jsx62(AccordionTrigger, { className: "text-base font-medium font-body text-on-prominent hover:no-underline", children: question }),
|
|
6809
6980
|
/* @__PURE__ */ jsx62(AccordionContent, { children: /* @__PURE__ */ jsx62("p", { className: "text-sm text-on-subtle font-body pb-4", children: answer }) })
|
|
6810
6981
|
] }, value))
|
|
6811
6982
|
}
|
|
6812
6983
|
),
|
|
6813
|
-
helpCard && /* @__PURE__ */
|
|
6814
|
-
/* @__PURE__ */
|
|
6984
|
+
helpCard && /* @__PURE__ */ jsxs31("div", { className: `flex flex-col gap-6 items-center w-full bg-subtle rounded-xl ${helpCardPaddingClass}`, children: [
|
|
6985
|
+
/* @__PURE__ */ jsxs31("div", { className: "flex flex-col gap-2 w-full", children: [
|
|
6815
6986
|
/* @__PURE__ */ jsx62("h3", { className: helpTitleClass, children: helpCard.title }),
|
|
6816
6987
|
/* @__PURE__ */ jsx62("p", { className: "text-base text-on-subtle font-body", children: helpCard.body })
|
|
6817
6988
|
] }),
|
|
@@ -6822,7 +6993,7 @@ function FAQBlock({
|
|
|
6822
6993
|
|
|
6823
6994
|
// components/blocks/hero-block.tsx
|
|
6824
6995
|
import { ArrowRight as ArrowRight3, ArrowUpRight } from "lucide-react";
|
|
6825
|
-
import { jsx as jsx63, jsxs as
|
|
6996
|
+
import { jsx as jsx63, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
6826
6997
|
function HeroBlock({
|
|
6827
6998
|
layout = "centered",
|
|
6828
6999
|
tagline,
|
|
@@ -6833,26 +7004,26 @@ function HeroBlock({
|
|
|
6833
7004
|
image
|
|
6834
7005
|
}) {
|
|
6835
7006
|
if (layout === "centered") {
|
|
6836
|
-
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */
|
|
6837
|
-
/* @__PURE__ */
|
|
7007
|
+
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center justify-center gap-8 px-layout-margin-inline py-24 max-w-2xl mx-auto text-center", children: [
|
|
7008
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
6838
7009
|
tagline && /* @__PURE__ */ jsx63(TaglinePill, __spreadValues({}, tagline)),
|
|
6839
7010
|
/* @__PURE__ */ jsx63("h1", { className: "text-5xl font-semibold font-display tracking-tight text-on-prominent text-center", children: heading }),
|
|
6840
7011
|
/* @__PURE__ */ jsx63("p", { className: "text-lg font-body text-on-subtle text-center", children: body })
|
|
6841
7012
|
] }),
|
|
6842
|
-
/* @__PURE__ */
|
|
7013
|
+
/* @__PURE__ */ jsxs32(Button, { size: "sm", onClick: primaryCta.onClick, children: [
|
|
6843
7014
|
primaryCta.label,
|
|
6844
7015
|
primaryCta.trailingArrow !== false && /* @__PURE__ */ jsx63(ArrowRight3, { className: "size-4" })
|
|
6845
7016
|
] })
|
|
6846
7017
|
] }) });
|
|
6847
7018
|
}
|
|
6848
|
-
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */
|
|
6849
|
-
/* @__PURE__ */
|
|
6850
|
-
/* @__PURE__ */
|
|
7019
|
+
return /* @__PURE__ */ jsx63("div", { className: "w-full border border-border-subtle rounded-xl overflow-hidden bg-prominent", children: /* @__PURE__ */ jsxs32("div", { className: "flex flex-col min-[600px]:flex-row items-center gap-layout-gutter px-layout-margin-inline py-16 min-[600px]:py-24 max-w-5xl mx-auto", children: [
|
|
7020
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-6 min-[600px]:gap-8 flex-1 min-w-0 items-center min-[600px]:items-start text-center min-[600px]:text-left w-full", children: [
|
|
7021
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex flex-col gap-5 min-[600px]:gap-6 items-center min-[600px]:items-start w-full", children: [
|
|
6851
7022
|
tagline && /* @__PURE__ */ jsx63(TaglinePill, __spreadProps(__spreadValues({}, tagline), { responsive: true })),
|
|
6852
7023
|
/* @__PURE__ */ jsx63("h1", { className: "text-4xl min-[600px]:text-5xl font-semibold font-display tracking-tight text-on-prominent", children: heading }),
|
|
6853
7024
|
/* @__PURE__ */ jsx63("p", { className: "text-lg font-body text-on-subtle", children: body })
|
|
6854
7025
|
] }),
|
|
6855
|
-
/* @__PURE__ */
|
|
7026
|
+
/* @__PURE__ */ jsxs32("div", { className: "flex items-center justify-center min-[600px]:justify-start gap-2", children: [
|
|
6856
7027
|
/* @__PURE__ */ jsx63(Button, { size: "sm", onClick: primaryCta.onClick, children: primaryCta.label }),
|
|
6857
7028
|
secondaryCta && /* @__PURE__ */ jsx63(Button, { variant: "secondary", size: "sm", onClick: secondaryCta.onClick, children: secondaryCta.label })
|
|
6858
7029
|
] })
|
|
@@ -6865,15 +7036,15 @@ function TaglinePill({
|
|
|
6865
7036
|
suffix,
|
|
6866
7037
|
responsive
|
|
6867
7038
|
}) {
|
|
6868
|
-
return /* @__PURE__ */
|
|
7039
|
+
return /* @__PURE__ */ jsxs32("div", { className: "inline-flex items-center gap-1.5 h-7 px-3 rounded-full border border-border-subtle bg-prominent shadow-sm shrink-0", children: [
|
|
6869
7040
|
/* @__PURE__ */ jsx63("span", { className: "size-1.5 rounded-full bg-semantic-win shrink-0", "aria-hidden": "true" }),
|
|
6870
|
-
responsive && suffix ? /* @__PURE__ */
|
|
6871
|
-
/* @__PURE__ */
|
|
7041
|
+
responsive && suffix ? /* @__PURE__ */ jsxs32("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
7042
|
+
/* @__PURE__ */ jsxs32("span", { className: "hidden min-[600px]:inline", children: [
|
|
6872
7043
|
label,
|
|
6873
7044
|
/* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: " \xB7 " })
|
|
6874
7045
|
] }),
|
|
6875
7046
|
/* @__PURE__ */ jsx63("span", { className: "text-on-subtle min-[600px]:text-on-prominent", children: suffix })
|
|
6876
|
-
] }) : /* @__PURE__ */
|
|
7047
|
+
] }) : /* @__PURE__ */ jsxs32("span", { className: "text-sm font-body text-on-prominent whitespace-nowrap", children: [
|
|
6877
7048
|
label,
|
|
6878
7049
|
suffix && /* @__PURE__ */ jsx63("span", { className: "text-on-subtle", children: ` \xB7 ${suffix}` })
|
|
6879
7050
|
] }),
|
|
@@ -6882,8 +7053,8 @@ function TaglinePill({
|
|
|
6882
7053
|
}
|
|
6883
7054
|
|
|
6884
7055
|
// components/blocks/auth-block.tsx
|
|
6885
|
-
import * as
|
|
6886
|
-
import { jsx as jsx64, jsxs as
|
|
7056
|
+
import * as React15 from "react";
|
|
7057
|
+
import { jsx as jsx64, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
6887
7058
|
function AuthBlock({
|
|
6888
7059
|
mode,
|
|
6889
7060
|
logoSrc,
|
|
@@ -6898,15 +7069,15 @@ function AuthBlock({
|
|
|
6898
7069
|
const ctaText = mode === "sign-in" ? "Sign in" : "Sign up";
|
|
6899
7070
|
const footerPrompt = mode === "sign-in" ? "Don't have an account?" : "Already have an account?";
|
|
6900
7071
|
const footerLinkLabel = mode === "sign-in" ? "Sign up" : "Log in";
|
|
6901
|
-
const [email, setEmail] =
|
|
6902
|
-
return /* @__PURE__ */
|
|
6903
|
-
/* @__PURE__ */
|
|
7072
|
+
const [email, setEmail] = React15.useState("");
|
|
7073
|
+
return /* @__PURE__ */ jsxs33("div", { className: "flex flex-col items-center gap-6 w-full", children: [
|
|
7074
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-2", children: [
|
|
6904
7075
|
/* @__PURE__ */ jsx64("img", { src: logoSrc, alt: wordmark, className: "size-8 object-contain" }),
|
|
6905
7076
|
/* @__PURE__ */ jsx64("span", { className: "font-display font-semibold text-base text-on-prominent tracking-tight", children: wordmark })
|
|
6906
7077
|
] }),
|
|
6907
7078
|
/* @__PURE__ */ jsx64("h2", { className: "text-3xl font-bold font-display text-on-prominent text-center", children: headingText }),
|
|
6908
7079
|
/* @__PURE__ */ jsx64("div", { className: "flex flex-col gap-3 w-full", children: providers.map((p) => /* @__PURE__ */ jsx64(ProviderButton, { provider: p }, p)) }),
|
|
6909
|
-
/* @__PURE__ */
|
|
7080
|
+
/* @__PURE__ */ jsxs33("div", { className: "flex items-center gap-3 w-full", children: [
|
|
6910
7081
|
/* @__PURE__ */ jsx64("div", { className: "flex-1 h-px bg-border-subtle" }),
|
|
6911
7082
|
/* @__PURE__ */ jsx64("span", { className: "text-sm text-on-subtle font-body", children: "or" }),
|
|
6912
7083
|
/* @__PURE__ */ jsx64("div", { className: "flex-1 h-px bg-border-subtle" })
|
|
@@ -6922,14 +7093,14 @@ function AuthBlock({
|
|
|
6922
7093
|
onChange: (e) => setEmail(e.target.value)
|
|
6923
7094
|
}
|
|
6924
7095
|
) }),
|
|
6925
|
-
/* @__PURE__ */
|
|
7096
|
+
/* @__PURE__ */ jsxs33("p", { className: "text-sm text-on-subtle font-body text-left w-full", children: [
|
|
6926
7097
|
termsText,
|
|
6927
7098
|
", you agree to our",
|
|
6928
7099
|
" ",
|
|
6929
7100
|
/* @__PURE__ */ jsx64(Link, { size: "sm", href: "#", children: "Terms & Conditions" })
|
|
6930
7101
|
] }),
|
|
6931
7102
|
/* @__PURE__ */ jsx64(Button, { size: "md", className: "w-full", onClick: () => onSubmit == null ? void 0 : onSubmit({ email }), children: ctaText }),
|
|
6932
|
-
/* @__PURE__ */
|
|
7103
|
+
/* @__PURE__ */ jsxs33("p", { className: "text-sm text-on-subtle font-body text-center", children: [
|
|
6933
7104
|
footerPrompt,
|
|
6934
7105
|
" ",
|
|
6935
7106
|
/* @__PURE__ */ jsx64(Link, { size: "sm", href: crossLinkHref, children: footerLinkLabel })
|
|
@@ -6939,8 +7110,8 @@ function AuthBlock({
|
|
|
6939
7110
|
function ProviderButton({ provider }) {
|
|
6940
7111
|
switch (provider) {
|
|
6941
7112
|
case "google":
|
|
6942
|
-
return /* @__PURE__ */
|
|
6943
|
-
/* @__PURE__ */
|
|
7113
|
+
return /* @__PURE__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7114
|
+
/* @__PURE__ */ jsxs33("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
|
|
6944
7115
|
/* @__PURE__ */ jsx64("path", { d: "M17.64 9.205c0-.639-.057-1.252-.164-1.841H9v3.481h4.844a4.14 4.14 0 0 1-1.796 2.716v2.259h2.908c1.702-1.567 2.684-3.875 2.684-6.615Z", fill: "#4285F4" }),
|
|
6945
7116
|
/* @__PURE__ */ jsx64("path", { d: "M9 18c2.43 0 4.467-.806 5.956-2.18l-2.908-2.259c-.806.54-1.837.86-3.048.86-2.344 0-4.328-1.584-5.036-3.711H.957v2.332A8.997 8.997 0 0 0 9 18Z", fill: "#34A853" }),
|
|
6946
7117
|
/* @__PURE__ */ jsx64("path", { d: "M3.964 10.71A5.41 5.41 0 0 1 3.682 9c0-.593.102-1.17.282-1.71V4.958H.957A8.996 8.996 0 0 0 0 9c0 1.452.348 2.827.957 4.042l3.007-2.332Z", fill: "#FBBC05" }),
|
|
@@ -6949,8 +7120,8 @@ function ProviderButton({ provider }) {
|
|
|
6949
7120
|
"Continue with Google"
|
|
6950
7121
|
] });
|
|
6951
7122
|
case "telegram":
|
|
6952
|
-
return /* @__PURE__ */
|
|
6953
|
-
/* @__PURE__ */
|
|
7123
|
+
return /* @__PURE__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
7124
|
+
/* @__PURE__ */ jsxs33("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "none", className: "shrink-0", children: [
|
|
6954
7125
|
/* @__PURE__ */ jsx64("circle", { cx: "9", cy: "9", r: "9", fill: "#29B6F6" }),
|
|
6955
7126
|
/* @__PURE__ */ jsx64("path", { d: "M13.5 5.25 11.25 13.5l-2.25-3-3 1.5 1.5-5.25 6-1.5Z", fill: "white", opacity: "0.3" }),
|
|
6956
7127
|
/* @__PURE__ */ jsx64("path", { d: "m4.5 8.625 7.5-3-1.125 7.125-2.625-2.25-1.5 1.5.375-3.375Z", fill: "white" })
|
|
@@ -6958,7 +7129,7 @@ function ProviderButton({ provider }) {
|
|
|
6958
7129
|
"Continue with Telegram"
|
|
6959
7130
|
] });
|
|
6960
7131
|
case "x":
|
|
6961
|
-
return /* @__PURE__ */
|
|
7132
|
+
return /* @__PURE__ */ jsxs33(Button, { variant: "secondary", size: "lg", className: "w-full", children: [
|
|
6962
7133
|
/* @__PURE__ */ jsx64("svg", { width: "18", height: "18", viewBox: "0 0 18 18", "aria-hidden": "true", fill: "currentColor", className: "shrink-0", children: /* @__PURE__ */ jsx64("path", { d: "M13.955 2.25h2.423L10.977 8.28 17.25 15.75h-4.812l-3.913-5.116-4.477 5.116H1.645l5.703-6.52L1.125 2.25h4.934l3.538 4.678 4.358-4.678Zm-.85 12.105h1.343L5.025 3.627H3.579l9.526 10.728Z" }) }),
|
|
6963
7134
|
"Continue with X (Twitter)"
|
|
6964
7135
|
] });
|
|
@@ -6966,15 +7137,15 @@ function ProviderButton({ provider }) {
|
|
|
6966
7137
|
}
|
|
6967
7138
|
|
|
6968
7139
|
// components/blocks/navbar-block.tsx
|
|
6969
|
-
import * as
|
|
6970
|
-
import { Menu, X } from "lucide-react";
|
|
6971
|
-
import { jsx as jsx65, jsxs as
|
|
7140
|
+
import * as React16 from "react";
|
|
7141
|
+
import { Menu, X as X2 } from "lucide-react";
|
|
7142
|
+
import { jsx as jsx65, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
6972
7143
|
function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
6973
7144
|
var _a, _b, _c, _d;
|
|
6974
|
-
const [mobileMenuOpen, setMobileMenuOpen] =
|
|
6975
|
-
return /* @__PURE__ */ jsx65("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */
|
|
6976
|
-
/* @__PURE__ */
|
|
6977
|
-
/* @__PURE__ */
|
|
7145
|
+
const [mobileMenuOpen, setMobileMenuOpen] = React16.useState(false);
|
|
7146
|
+
return /* @__PURE__ */ jsx65("div", { className: "w-full border border-border-subtle rounded-md overflow-hidden", children: /* @__PURE__ */ jsxs34("nav", { className: "bg-prominent", children: [
|
|
7147
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex items-center justify-between px-layout-margin-inline py-3", children: [
|
|
7148
|
+
/* @__PURE__ */ jsxs34("div", { className: "flex items-center gap-6", children: [
|
|
6978
7149
|
/* @__PURE__ */ jsx65(
|
|
6979
7150
|
"img",
|
|
6980
7151
|
{
|
|
@@ -6993,7 +7164,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
6993
7164
|
),
|
|
6994
7165
|
/* @__PURE__ */ jsx65("div", { className: "hidden min-[600px]:flex items-center gap-1", children: links.map((l) => /* @__PURE__ */ jsx65(Button, { variant: "tertiary", size: "sm", onClick: l.onClick, children: l.label }, l.label)) })
|
|
6995
7166
|
] }),
|
|
6996
|
-
/* @__PURE__ */
|
|
7167
|
+
/* @__PURE__ */ jsxs34("div", { className: "hidden min-[600px]:flex items-center gap-2", children: [
|
|
6997
7168
|
signIn && /* @__PURE__ */ jsx65(Button, { variant: "tertiary", size: "sm", onClick: signIn.onClick, children: (_a = signIn.label) != null ? _a : "Sign in" }),
|
|
6998
7169
|
signUp && /* @__PURE__ */ jsx65(Button, { size: "sm", onClick: signUp.onClick, children: (_b = signUp.label) != null ? _b : "Sign up" })
|
|
6999
7170
|
] }),
|
|
@@ -7006,11 +7177,11 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7006
7177
|
"aria-expanded": mobileMenuOpen,
|
|
7007
7178
|
className: "min-[600px]:hidden",
|
|
7008
7179
|
onClick: () => setMobileMenuOpen((prev) => !prev),
|
|
7009
|
-
children: mobileMenuOpen ? /* @__PURE__ */ jsx65(
|
|
7180
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx65(X2, { className: "size-4" }) : /* @__PURE__ */ jsx65(Menu, { className: "size-4" })
|
|
7010
7181
|
}
|
|
7011
7182
|
)
|
|
7012
7183
|
] }),
|
|
7013
|
-
mobileMenuOpen && /* @__PURE__ */
|
|
7184
|
+
mobileMenuOpen && /* @__PURE__ */ jsxs34("div", { className: "min-[600px]:hidden flex flex-col border-t border-border-subtle px-layout-margin-inline py-3 gap-1", children: [
|
|
7014
7185
|
links.map((l) => /* @__PURE__ */ jsx65(
|
|
7015
7186
|
Button,
|
|
7016
7187
|
{
|
|
@@ -7022,7 +7193,7 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7022
7193
|
},
|
|
7023
7194
|
l.label
|
|
7024
7195
|
)),
|
|
7025
|
-
(signIn || signUp) && /* @__PURE__ */
|
|
7196
|
+
(signIn || signUp) && /* @__PURE__ */ jsxs34("div", { className: "flex flex-col gap-2 pt-3 mt-2 border-t border-border-subtle", children: [
|
|
7026
7197
|
signIn && /* @__PURE__ */ jsx65(Button, { variant: "secondary", size: "sm", className: "w-full", onClick: signIn.onClick, children: (_c = signIn.label) != null ? _c : "Sign in" }),
|
|
7027
7198
|
signUp && /* @__PURE__ */ jsx65(Button, { size: "sm", className: "w-full", onClick: signUp.onClick, children: (_d = signUp.label) != null ? _d : "Sign up" })
|
|
7028
7199
|
] })
|
|
@@ -7031,9 +7202,9 @@ function NavBarBlock({ brand, links, signIn, signUp }) {
|
|
|
7031
7202
|
}
|
|
7032
7203
|
|
|
7033
7204
|
// components/blocks/open-positions-block.tsx
|
|
7034
|
-
import * as
|
|
7035
|
-
import { History as History2, X as
|
|
7036
|
-
import { jsx as jsx66, jsxs as
|
|
7205
|
+
import * as React17 from "react";
|
|
7206
|
+
import { History as History2, X as X3 } from "lucide-react";
|
|
7207
|
+
import { jsx as jsx66, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
7037
7208
|
function OpenPositionsBlock({
|
|
7038
7209
|
trigger,
|
|
7039
7210
|
sheetTitle = "Positions",
|
|
@@ -7044,24 +7215,24 @@ function OpenPositionsBlock({
|
|
|
7044
7215
|
const isMobile = useIsMobile();
|
|
7045
7216
|
const body = positions.length === 0 ? emptyState != null ? emptyState : /* @__PURE__ */ jsx66(DefaultEmptyState, { onViewHistory }) : /* @__PURE__ */ jsx66(PositionsList, { positions, onViewHistory });
|
|
7046
7217
|
if (isMobile) {
|
|
7047
|
-
return /* @__PURE__ */
|
|
7218
|
+
return /* @__PURE__ */ jsxs35(Drawer, { children: [
|
|
7048
7219
|
/* @__PURE__ */ jsx66(DrawerTrigger, { asChild: true, children: trigger }),
|
|
7049
|
-
/* @__PURE__ */
|
|
7050
|
-
/* @__PURE__ */
|
|
7220
|
+
/* @__PURE__ */ jsxs35(DrawerContent, { className: "p-0 flex flex-col", children: [
|
|
7221
|
+
/* @__PURE__ */ jsxs35(DrawerHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0 text-left", children: [
|
|
7051
7222
|
/* @__PURE__ */ jsx66(DrawerTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7052
|
-
/* @__PURE__ */ jsx66(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(
|
|
7223
|
+
/* @__PURE__ */ jsx66(DrawerClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(X3, {}) }) })
|
|
7053
7224
|
] }),
|
|
7054
7225
|
/* @__PURE__ */ jsx66(Separator, {}),
|
|
7055
7226
|
body
|
|
7056
7227
|
] })
|
|
7057
7228
|
] });
|
|
7058
7229
|
}
|
|
7059
|
-
return /* @__PURE__ */
|
|
7230
|
+
return /* @__PURE__ */ jsxs35(Sheet, { children: [
|
|
7060
7231
|
/* @__PURE__ */ jsx66(SheetTrigger, { asChild: true, children: trigger }),
|
|
7061
|
-
/* @__PURE__ */
|
|
7062
|
-
/* @__PURE__ */
|
|
7232
|
+
/* @__PURE__ */ jsxs35(SheetContent, { side: "right", showCloseButton: false, className: "p-0 flex flex-col w-80 sm:max-w-xs", children: [
|
|
7233
|
+
/* @__PURE__ */ jsxs35(SheetHeader, { className: "flex-row items-center justify-between px-4 py-3 shrink-0", children: [
|
|
7063
7234
|
/* @__PURE__ */ jsx66(SheetTitle, { className: "text-base font-semibold font-display text-on-prominent", children: sheetTitle }),
|
|
7064
|
-
/* @__PURE__ */ jsx66(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(
|
|
7235
|
+
/* @__PURE__ */ jsx66(SheetClose, { asChild: true, children: /* @__PURE__ */ jsx66(NavigationButton, { size: "sm", "aria-label": "Close", children: /* @__PURE__ */ jsx66(X3, {}) }) })
|
|
7065
7236
|
] }),
|
|
7066
7237
|
/* @__PURE__ */ jsx66(Separator, {}),
|
|
7067
7238
|
body
|
|
@@ -7072,8 +7243,8 @@ function PositionsList({
|
|
|
7072
7243
|
positions,
|
|
7073
7244
|
onViewHistory
|
|
7074
7245
|
}) {
|
|
7075
|
-
return /* @__PURE__ */
|
|
7076
|
-
/* @__PURE__ */ jsx66(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */
|
|
7246
|
+
return /* @__PURE__ */ jsxs35("div", { className: "flex flex-col flex-1 min-h-0", children: [
|
|
7247
|
+
/* @__PURE__ */ jsx66(ItemGroup, { className: "min-h-0 overflow-y-auto", children: positions.map((pos, i) => /* @__PURE__ */ jsxs35(React17.Fragment, { children: [
|
|
7077
7248
|
/* @__PURE__ */ jsx66(PositionRow, { position: pos }),
|
|
7078
7249
|
i < positions.length - 1 && /* @__PURE__ */ jsx66("div", { className: "h-px mx-4 bg-border-subtle" })
|
|
7079
7250
|
] }, i)) }),
|
|
@@ -7083,9 +7254,9 @@ function PositionsList({
|
|
|
7083
7254
|
}
|
|
7084
7255
|
function PositionRow({ position }) {
|
|
7085
7256
|
const { label, suffix } = positionTitleParts(position);
|
|
7086
|
-
return /* @__PURE__ */
|
|
7087
|
-
/* @__PURE__ */
|
|
7088
|
-
/* @__PURE__ */
|
|
7257
|
+
return /* @__PURE__ */ jsxs35(Item, { size: "sm", children: [
|
|
7258
|
+
/* @__PURE__ */ jsxs35(ItemContent, { children: [
|
|
7259
|
+
/* @__PURE__ */ jsxs35(ItemTitle, { children: [
|
|
7089
7260
|
/* @__PURE__ */ jsx66("span", { className: "text-on-prominent", children: label }),
|
|
7090
7261
|
suffix && /* @__PURE__ */ jsx66("span", { className: "text-on-subtle", children: ` ${suffix}` })
|
|
7091
7262
|
] }),
|
|
@@ -7117,20 +7288,20 @@ function positionTitleParts(p) {
|
|
|
7117
7288
|
}
|
|
7118
7289
|
}
|
|
7119
7290
|
function MetaNote({ market, duration }) {
|
|
7120
|
-
return /* @__PURE__ */
|
|
7291
|
+
return /* @__PURE__ */ jsxs35("span", { className: "text-xs text-on-subtle whitespace-nowrap", children: [
|
|
7121
7292
|
market,
|
|
7122
7293
|
" \xB7 ",
|
|
7123
7294
|
duration
|
|
7124
7295
|
] });
|
|
7125
7296
|
}
|
|
7126
7297
|
function PnlMeta({ pnl, win, stake }) {
|
|
7127
|
-
return /* @__PURE__ */
|
|
7298
|
+
return /* @__PURE__ */ jsxs35("div", { className: "flex flex-col items-end gap-0.5", children: [
|
|
7128
7299
|
/* @__PURE__ */ jsx66("span", { className: `font-display font-bold tabular-nums text-base ${win ? "text-semantic-win" : "text-semantic-loss"}`, children: pnl }),
|
|
7129
7300
|
/* @__PURE__ */ jsx66("span", { className: "tabular-nums text-xs text-on-subtle", children: stake })
|
|
7130
7301
|
] });
|
|
7131
7302
|
}
|
|
7132
7303
|
function DefaultEmptyState({ onViewHistory }) {
|
|
7133
|
-
return /* @__PURE__ */ jsx66(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */
|
|
7304
|
+
return /* @__PURE__ */ jsx66(Empty, { className: "flex min-h-0 flex-1 flex-col justify-center border-none rounded-none p-6 text-center", children: /* @__PURE__ */ jsxs35(EmptyHeader, { className: "gap-4", children: [
|
|
7134
7305
|
/* @__PURE__ */ jsx66(EmptyMedia, { children: /* @__PURE__ */ jsx66(History2, { className: "size-8 text-on-subtle" }) }),
|
|
7135
7306
|
/* @__PURE__ */ jsx66(EmptyTitle, { className: "text-base leading-6 font-semibold tracking-normal body-md text-on-subtle", children: "No trades yet." }),
|
|
7136
7307
|
/* @__PURE__ */ jsx66(Button, { variant: "tertiary", size: "md", onClick: onViewHistory, children: "View transaction history" })
|
|
@@ -7142,7 +7313,6 @@ export {
|
|
|
7142
7313
|
AccordionItem,
|
|
7143
7314
|
AccordionTrigger,
|
|
7144
7315
|
Alert,
|
|
7145
|
-
AlertDescription,
|
|
7146
7316
|
AlertDialog,
|
|
7147
7317
|
AlertDialogAction,
|
|
7148
7318
|
AlertDialogCancel,
|
|
@@ -7155,7 +7325,6 @@ export {
|
|
|
7155
7325
|
AlertDialogPortal,
|
|
7156
7326
|
AlertDialogTitle,
|
|
7157
7327
|
AlertDialogTrigger,
|
|
7158
|
-
AlertTitle,
|
|
7159
7328
|
AspectRatio,
|
|
7160
7329
|
AuthBlock,
|
|
7161
7330
|
Avatar,
|
|
@@ -7451,6 +7620,7 @@ export {
|
|
|
7451
7620
|
TooltipContent,
|
|
7452
7621
|
TooltipProvider,
|
|
7453
7622
|
TooltipTrigger,
|
|
7623
|
+
alertVariants,
|
|
7454
7624
|
badgeVariants,
|
|
7455
7625
|
buttonVariants,
|
|
7456
7626
|
cn,
|