@evinvest/uikit 0.13.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -10
- package/dist/index.d.ts +138 -29
- package/dist/index.js +1011 -669
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/styles/tokens.css +12 -0
- package/styles/tokens-legacy.css +0 -446
package/dist/index.js
CHANGED
|
@@ -334,7 +334,9 @@ import "react";
|
|
|
334
334
|
var ALERT_BASE = "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current";
|
|
335
335
|
var alertVariants = {
|
|
336
336
|
"neutral": "bg-card text-ink",
|
|
337
|
-
"destructive": "text-accent-error bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-accent-error/90"
|
|
337
|
+
"destructive": "text-accent-error bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-accent-error/90",
|
|
338
|
+
"success": "text-positive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-positive/90",
|
|
339
|
+
"info": "text-accent-info bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-accent-info/90"
|
|
338
340
|
};
|
|
339
341
|
var ALERT_TITLE = "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight";
|
|
340
342
|
var ALERT_DESCRIPTION = "text-ink-soft col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed";
|
|
@@ -589,6 +591,29 @@ function BreadcrumbEllipsis({
|
|
|
589
591
|
// src/components/button.tsx
|
|
590
592
|
import "react";
|
|
591
593
|
|
|
594
|
+
// src/generated/accent.ts
|
|
595
|
+
var accentTextClasses = {
|
|
596
|
+
"trace": "text-accent-trace",
|
|
597
|
+
"debug": "text-accent-debug",
|
|
598
|
+
"info": "text-accent-info",
|
|
599
|
+
"warn": "text-accent-warn",
|
|
600
|
+
"error": "text-accent-error"
|
|
601
|
+
};
|
|
602
|
+
var accentFillClasses = {
|
|
603
|
+
"trace": "bg-accent-trace text-on-accent-trace hover:bg-accent-trace/90",
|
|
604
|
+
"debug": "bg-accent-debug text-background hover:bg-accent-debug/90",
|
|
605
|
+
"info": "bg-accent-info text-on-accent-info hover:bg-accent-info/90",
|
|
606
|
+
"warn": "bg-accent-warn text-background hover:bg-accent-warn/90",
|
|
607
|
+
"error": "bg-accent-error text-on-accent-error hover:bg-accent-error/90"
|
|
608
|
+
};
|
|
609
|
+
var accentOutlineClasses = {
|
|
610
|
+
"trace": "border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/10",
|
|
611
|
+
"debug": "border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/10",
|
|
612
|
+
"info": "border border-accent-info/40 text-accent-info hover:bg-accent-info/10",
|
|
613
|
+
"warn": "border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/10",
|
|
614
|
+
"error": "border border-accent-error/40 text-accent-error hover:bg-accent-error/10"
|
|
615
|
+
};
|
|
616
|
+
|
|
592
617
|
// src/generated/button.ts
|
|
593
618
|
var BUTTON_BASE = "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-[var(--control-radius)] text-sm font-medium transition-all cursor-pointer disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error";
|
|
594
619
|
var buttonVariantClasses = {
|
|
@@ -600,16 +625,18 @@ var buttonVariantClasses = {
|
|
|
600
625
|
"link": "text-primary underline-offset-4 hover:underline"
|
|
601
626
|
};
|
|
602
627
|
var buttonSizeClasses = {
|
|
603
|
-
"md": "h-9 px-4 py-[var(--control-py)] has-[>svg]:px-3",
|
|
604
628
|
"xs": "h-7 gap-1 px-2 text-xs has-[>svg]:px-1.5",
|
|
605
629
|
"sm": "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
630
|
+
"md": "h-9 px-4 py-[var(--control-py)] has-[>svg]:px-3",
|
|
606
631
|
"lg": "h-10 px-6 has-[>svg]:px-4",
|
|
607
|
-
"xl": "px-[var(--control-px)] py-[var(--control-py)] text-[length:var(--control-text)]"
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
"
|
|
611
|
-
"
|
|
612
|
-
"
|
|
632
|
+
"xl": "px-[var(--control-px)] py-[var(--control-py)] text-[length:var(--control-text)]"
|
|
633
|
+
};
|
|
634
|
+
var buttonIconSizeClasses = {
|
|
635
|
+
"xs": "h-7 aspect-square px-0",
|
|
636
|
+
"sm": "h-8 aspect-square px-0",
|
|
637
|
+
"md": "h-9 aspect-square px-0",
|
|
638
|
+
"lg": "h-10 aspect-square px-0",
|
|
639
|
+
"xl": "aspect-square p-[var(--control-py)]"
|
|
613
640
|
};
|
|
614
641
|
|
|
615
642
|
// src/components/button.tsx
|
|
@@ -617,14 +644,27 @@ import { jsx as jsx5 } from "react/jsx-runtime";
|
|
|
617
644
|
function buttonVariants({
|
|
618
645
|
variant = "primary",
|
|
619
646
|
size = "md",
|
|
647
|
+
icon = false,
|
|
648
|
+
accent,
|
|
620
649
|
className
|
|
621
650
|
} = {}) {
|
|
622
|
-
return cn(
|
|
651
|
+
return cn(
|
|
652
|
+
BUTTON_BASE,
|
|
653
|
+
buttonVariantClasses[variant],
|
|
654
|
+
icon ? buttonIconSizeClasses[size] : buttonSizeClasses[size],
|
|
655
|
+
accent === void 0 ? void 0 : accentClass(accent, variant),
|
|
656
|
+
className
|
|
657
|
+
);
|
|
658
|
+
}
|
|
659
|
+
function accentClass(accent, variant) {
|
|
660
|
+
return variant === "outline" ? accentOutlineClasses[accent] : accentFillClasses[accent];
|
|
623
661
|
}
|
|
624
662
|
function Button({
|
|
625
663
|
className,
|
|
626
664
|
variant = "primary",
|
|
627
665
|
size = "md",
|
|
666
|
+
icon = false,
|
|
667
|
+
accent,
|
|
628
668
|
asChild = false,
|
|
629
669
|
href,
|
|
630
670
|
...props
|
|
@@ -635,7 +675,7 @@ function Button({
|
|
|
635
675
|
{
|
|
636
676
|
"data-slot": "button",
|
|
637
677
|
href,
|
|
638
|
-
className: cn(buttonVariants({ variant, size }), className),
|
|
678
|
+
className: cn(buttonVariants({ variant, size, icon, accent }), className),
|
|
639
679
|
...props
|
|
640
680
|
}
|
|
641
681
|
);
|
|
@@ -1264,24 +1304,27 @@ function Footer({
|
|
|
1264
1304
|
}
|
|
1265
1305
|
|
|
1266
1306
|
// src/components/input.tsx
|
|
1267
|
-
import "react";
|
|
1307
|
+
import * as React24 from "react";
|
|
1268
1308
|
|
|
1269
1309
|
// src/generated/input.ts
|
|
1270
1310
|
var INPUT_BASE = "file:text-ink placeholder:text-ink-soft selection:bg-primary selection:text-on-primary border-input h-9 w-full min-w-0 rounded-[var(--control-radius)] border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error";
|
|
1271
1311
|
|
|
1272
1312
|
// src/components/input.tsx
|
|
1273
1313
|
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
}
|
|
1314
|
+
var Input = React24.forwardRef(
|
|
1315
|
+
function Input2({ className, type, ...props }, ref) {
|
|
1316
|
+
return /* @__PURE__ */ jsx14(
|
|
1317
|
+
"input",
|
|
1318
|
+
{
|
|
1319
|
+
ref,
|
|
1320
|
+
type,
|
|
1321
|
+
"data-slot": "input",
|
|
1322
|
+
className: cn(INPUT_BASE, className),
|
|
1323
|
+
...props
|
|
1324
|
+
}
|
|
1325
|
+
);
|
|
1326
|
+
}
|
|
1327
|
+
);
|
|
1285
1328
|
|
|
1286
1329
|
// src/components/textarea.tsx
|
|
1287
1330
|
import "react";
|
|
@@ -1295,6 +1338,44 @@ function Textarea({ className, ...props }) {
|
|
|
1295
1338
|
return /* @__PURE__ */ jsx15("textarea", { "data-slot": "textarea", className: cn(TEXTAREA_BASE, className), ...props });
|
|
1296
1339
|
}
|
|
1297
1340
|
|
|
1341
|
+
// src/components/logo.tsx
|
|
1342
|
+
import "react";
|
|
1343
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
1344
|
+
var maskStyle = {
|
|
1345
|
+
backgroundColor: "currentColor",
|
|
1346
|
+
maskImage: "var(--brand-mark)",
|
|
1347
|
+
WebkitMaskImage: "var(--brand-mark)",
|
|
1348
|
+
maskRepeat: "no-repeat",
|
|
1349
|
+
WebkitMaskRepeat: "no-repeat",
|
|
1350
|
+
maskPosition: "center",
|
|
1351
|
+
WebkitMaskPosition: "center",
|
|
1352
|
+
maskSize: "contain",
|
|
1353
|
+
WebkitMaskSize: "contain",
|
|
1354
|
+
// the ratio's fallback is what makes a missing mark *visible*: a masked span
|
|
1355
|
+
// has no intrinsic size, so `h-N w-auto` without it is zero-width
|
|
1356
|
+
aspectRatio: "var(--brand-aspect, 1)"
|
|
1357
|
+
};
|
|
1358
|
+
function Logo({ className, withBackground = false }) {
|
|
1359
|
+
const mark = /* @__PURE__ */ jsx16(
|
|
1360
|
+
"span",
|
|
1361
|
+
{
|
|
1362
|
+
"data-slot": "logo",
|
|
1363
|
+
"aria-hidden": true,
|
|
1364
|
+
style: maskStyle,
|
|
1365
|
+
className: cn("inline-block", withBackground ? "w-3/5 h-3/5" : className)
|
|
1366
|
+
}
|
|
1367
|
+
);
|
|
1368
|
+
if (!withBackground) return mark;
|
|
1369
|
+
return /* @__PURE__ */ jsx16(
|
|
1370
|
+
"span",
|
|
1371
|
+
{
|
|
1372
|
+
"data-slot": "logo-background",
|
|
1373
|
+
className: cn("inline-flex items-center justify-center bg-brand", className),
|
|
1374
|
+
children: mark
|
|
1375
|
+
}
|
|
1376
|
+
);
|
|
1377
|
+
}
|
|
1378
|
+
|
|
1298
1379
|
// src/components/input-group.tsx
|
|
1299
1380
|
import "react";
|
|
1300
1381
|
|
|
@@ -1319,12 +1400,12 @@ var INPUT_GROUP_INPUT_CONTROL = "flex-1 rounded-none border-0 bg-transparent sha
|
|
|
1319
1400
|
var INPUT_GROUP_TEXTAREA_CONTROL = "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0";
|
|
1320
1401
|
|
|
1321
1402
|
// src/components/input-group.tsx
|
|
1322
|
-
import { jsx as
|
|
1403
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
1323
1404
|
function InputGroup({
|
|
1324
1405
|
className,
|
|
1325
1406
|
...props
|
|
1326
1407
|
}) {
|
|
1327
|
-
return /* @__PURE__ */
|
|
1408
|
+
return /* @__PURE__ */ jsx17(
|
|
1328
1409
|
"div",
|
|
1329
1410
|
{
|
|
1330
1411
|
"data-slot": "input-group",
|
|
@@ -1339,7 +1420,7 @@ function InputGroupAddon({
|
|
|
1339
1420
|
align = "inline-start",
|
|
1340
1421
|
...props
|
|
1341
1422
|
}) {
|
|
1342
|
-
return /* @__PURE__ */
|
|
1423
|
+
return /* @__PURE__ */ jsx17(
|
|
1343
1424
|
"div",
|
|
1344
1425
|
{
|
|
1345
1426
|
role: "group",
|
|
@@ -1365,7 +1446,7 @@ function InputGroupButton({
|
|
|
1365
1446
|
size = "xs",
|
|
1366
1447
|
...props
|
|
1367
1448
|
}) {
|
|
1368
|
-
return /* @__PURE__ */
|
|
1449
|
+
return /* @__PURE__ */ jsx17(
|
|
1369
1450
|
Button,
|
|
1370
1451
|
{
|
|
1371
1452
|
type,
|
|
@@ -1384,7 +1465,7 @@ function InputGroupText({
|
|
|
1384
1465
|
className,
|
|
1385
1466
|
...props
|
|
1386
1467
|
}) {
|
|
1387
|
-
return /* @__PURE__ */
|
|
1468
|
+
return /* @__PURE__ */ jsx17(
|
|
1388
1469
|
"span",
|
|
1389
1470
|
{
|
|
1390
1471
|
className: cn(INPUT_GROUP_TEXT, className),
|
|
@@ -1396,7 +1477,7 @@ function InputGroupInput({
|
|
|
1396
1477
|
className,
|
|
1397
1478
|
...props
|
|
1398
1479
|
}) {
|
|
1399
|
-
return /* @__PURE__ */
|
|
1480
|
+
return /* @__PURE__ */ jsx17(
|
|
1400
1481
|
Input,
|
|
1401
1482
|
{
|
|
1402
1483
|
"data-slot": "input-group-control",
|
|
@@ -1409,7 +1490,7 @@ function InputGroupTextarea({
|
|
|
1409
1490
|
className,
|
|
1410
1491
|
...props
|
|
1411
1492
|
}) {
|
|
1412
|
-
return /* @__PURE__ */
|
|
1493
|
+
return /* @__PURE__ */ jsx17(
|
|
1413
1494
|
Textarea,
|
|
1414
1495
|
{
|
|
1415
1496
|
"data-slot": "input-group-control",
|
|
@@ -1433,13 +1514,13 @@ var separatorOrientations = {
|
|
|
1433
1514
|
};
|
|
1434
1515
|
|
|
1435
1516
|
// src/components/separator.tsx
|
|
1436
|
-
import { jsx as
|
|
1517
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1437
1518
|
function Separator({
|
|
1438
1519
|
className,
|
|
1439
1520
|
orientation = "horizontal",
|
|
1440
1521
|
...props
|
|
1441
1522
|
}) {
|
|
1442
|
-
return /* @__PURE__ */
|
|
1523
|
+
return /* @__PURE__ */ jsx18(
|
|
1443
1524
|
"div",
|
|
1444
1525
|
{
|
|
1445
1526
|
role: "separator",
|
|
@@ -1482,9 +1563,9 @@ var ITEM_HEADER = "flex basis-full items-center justify-between gap-2";
|
|
|
1482
1563
|
var ITEM_FOOTER = "flex basis-full items-center justify-between gap-2";
|
|
1483
1564
|
|
|
1484
1565
|
// src/components/item.tsx
|
|
1485
|
-
import { jsx as
|
|
1566
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1486
1567
|
function ItemGroup({ className, ...props }) {
|
|
1487
|
-
return /* @__PURE__ */
|
|
1568
|
+
return /* @__PURE__ */ jsx19(
|
|
1488
1569
|
"div",
|
|
1489
1570
|
{
|
|
1490
1571
|
role: "list",
|
|
@@ -1498,7 +1579,7 @@ function ItemSeparator({
|
|
|
1498
1579
|
className,
|
|
1499
1580
|
...props
|
|
1500
1581
|
}) {
|
|
1501
|
-
return /* @__PURE__ */
|
|
1582
|
+
return /* @__PURE__ */ jsx19(
|
|
1502
1583
|
Separator,
|
|
1503
1584
|
{
|
|
1504
1585
|
"data-slot": "item-separator",
|
|
@@ -1516,7 +1597,7 @@ function Item({
|
|
|
1516
1597
|
...props
|
|
1517
1598
|
}) {
|
|
1518
1599
|
const Comp = asChild ? Slot : "div";
|
|
1519
|
-
return /* @__PURE__ */
|
|
1600
|
+
return /* @__PURE__ */ jsx19(
|
|
1520
1601
|
Comp,
|
|
1521
1602
|
{
|
|
1522
1603
|
"data-slot": "item",
|
|
@@ -1532,7 +1613,7 @@ function ItemMedia({
|
|
|
1532
1613
|
variant = "bare",
|
|
1533
1614
|
...props
|
|
1534
1615
|
}) {
|
|
1535
|
-
return /* @__PURE__ */
|
|
1616
|
+
return /* @__PURE__ */ jsx19(
|
|
1536
1617
|
"div",
|
|
1537
1618
|
{
|
|
1538
1619
|
"data-slot": "item-media",
|
|
@@ -1546,7 +1627,7 @@ function ItemContent({
|
|
|
1546
1627
|
className,
|
|
1547
1628
|
...props
|
|
1548
1629
|
}) {
|
|
1549
|
-
return /* @__PURE__ */
|
|
1630
|
+
return /* @__PURE__ */ jsx19(
|
|
1550
1631
|
"div",
|
|
1551
1632
|
{
|
|
1552
1633
|
"data-slot": "item-content",
|
|
@@ -1556,7 +1637,7 @@ function ItemContent({
|
|
|
1556
1637
|
);
|
|
1557
1638
|
}
|
|
1558
1639
|
function ItemTitle({ className, ...props }) {
|
|
1559
|
-
return /* @__PURE__ */
|
|
1640
|
+
return /* @__PURE__ */ jsx19(
|
|
1560
1641
|
"div",
|
|
1561
1642
|
{
|
|
1562
1643
|
"data-slot": "item-title",
|
|
@@ -1569,7 +1650,7 @@ function ItemDescription({
|
|
|
1569
1650
|
className,
|
|
1570
1651
|
...props
|
|
1571
1652
|
}) {
|
|
1572
|
-
return /* @__PURE__ */
|
|
1653
|
+
return /* @__PURE__ */ jsx19(
|
|
1573
1654
|
"p",
|
|
1574
1655
|
{
|
|
1575
1656
|
"data-slot": "item-description",
|
|
@@ -1582,7 +1663,7 @@ function ItemActions({
|
|
|
1582
1663
|
className,
|
|
1583
1664
|
...props
|
|
1584
1665
|
}) {
|
|
1585
|
-
return /* @__PURE__ */
|
|
1666
|
+
return /* @__PURE__ */ jsx19(
|
|
1586
1667
|
"div",
|
|
1587
1668
|
{
|
|
1588
1669
|
"data-slot": "item-actions",
|
|
@@ -1595,7 +1676,7 @@ function ItemHeader({
|
|
|
1595
1676
|
className,
|
|
1596
1677
|
...props
|
|
1597
1678
|
}) {
|
|
1598
|
-
return /* @__PURE__ */
|
|
1679
|
+
return /* @__PURE__ */ jsx19(
|
|
1599
1680
|
"div",
|
|
1600
1681
|
{
|
|
1601
1682
|
"data-slot": "item-header",
|
|
@@ -1608,7 +1689,7 @@ function ItemFooter({
|
|
|
1608
1689
|
className,
|
|
1609
1690
|
...props
|
|
1610
1691
|
}) {
|
|
1611
|
-
return /* @__PURE__ */
|
|
1692
|
+
return /* @__PURE__ */ jsx19(
|
|
1612
1693
|
"div",
|
|
1613
1694
|
{
|
|
1614
1695
|
"data-slot": "item-footer",
|
|
@@ -1626,9 +1707,9 @@ var KBD_BASE = "bg-muted text-ink-soft pointer-events-none inline-flex h-5 w-fit
|
|
|
1626
1707
|
var KBD_GROUP_BASE = "inline-flex items-center gap-1";
|
|
1627
1708
|
|
|
1628
1709
|
// src/components/kbd.tsx
|
|
1629
|
-
import { jsx as
|
|
1710
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1630
1711
|
function Kbd({ className, ...props }) {
|
|
1631
|
-
return /* @__PURE__ */
|
|
1712
|
+
return /* @__PURE__ */ jsx20(
|
|
1632
1713
|
"kbd",
|
|
1633
1714
|
{
|
|
1634
1715
|
"data-slot": "kbd",
|
|
@@ -1638,7 +1719,7 @@ function Kbd({ className, ...props }) {
|
|
|
1638
1719
|
);
|
|
1639
1720
|
}
|
|
1640
1721
|
function KbdGroup({ className, ...props }) {
|
|
1641
|
-
return /* @__PURE__ */
|
|
1722
|
+
return /* @__PURE__ */ jsx20(
|
|
1642
1723
|
"kbd",
|
|
1643
1724
|
{
|
|
1644
1725
|
"data-slot": "kbd-group",
|
|
@@ -1650,9 +1731,9 @@ function KbdGroup({ className, ...props }) {
|
|
|
1650
1731
|
|
|
1651
1732
|
// src/components/pagination.tsx
|
|
1652
1733
|
import "react";
|
|
1653
|
-
import { jsx as
|
|
1734
|
+
import { jsx as jsx21, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1654
1735
|
function Pagination({ className, ...props }) {
|
|
1655
|
-
return /* @__PURE__ */
|
|
1736
|
+
return /* @__PURE__ */ jsx21(
|
|
1656
1737
|
"nav",
|
|
1657
1738
|
{
|
|
1658
1739
|
role: "navigation",
|
|
@@ -1667,7 +1748,7 @@ function PaginationContent({
|
|
|
1667
1748
|
className,
|
|
1668
1749
|
...props
|
|
1669
1750
|
}) {
|
|
1670
|
-
return /* @__PURE__ */
|
|
1751
|
+
return /* @__PURE__ */ jsx21(
|
|
1671
1752
|
"ul",
|
|
1672
1753
|
{
|
|
1673
1754
|
"data-slot": "pagination-content",
|
|
@@ -1677,15 +1758,16 @@ function PaginationContent({
|
|
|
1677
1758
|
);
|
|
1678
1759
|
}
|
|
1679
1760
|
function PaginationItem(props) {
|
|
1680
|
-
return /* @__PURE__ */
|
|
1761
|
+
return /* @__PURE__ */ jsx21("li", { "data-slot": "pagination-item", ...props });
|
|
1681
1762
|
}
|
|
1682
1763
|
function PaginationLink({
|
|
1683
1764
|
className,
|
|
1684
1765
|
isActive,
|
|
1685
|
-
size = "
|
|
1766
|
+
size = "md",
|
|
1767
|
+
icon = true,
|
|
1686
1768
|
...props
|
|
1687
1769
|
}) {
|
|
1688
|
-
return /* @__PURE__ */
|
|
1770
|
+
return /* @__PURE__ */ jsx21(
|
|
1689
1771
|
"a",
|
|
1690
1772
|
{
|
|
1691
1773
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -1694,7 +1776,8 @@ function PaginationLink({
|
|
|
1694
1776
|
className: cn(
|
|
1695
1777
|
buttonVariants({
|
|
1696
1778
|
variant: isActive ? "outline" : "ghost",
|
|
1697
|
-
size
|
|
1779
|
+
size,
|
|
1780
|
+
icon
|
|
1698
1781
|
}),
|
|
1699
1782
|
className
|
|
1700
1783
|
),
|
|
@@ -1702,8 +1785,8 @@ function PaginationLink({
|
|
|
1702
1785
|
}
|
|
1703
1786
|
);
|
|
1704
1787
|
}
|
|
1705
|
-
var ChevronLeft = () => /* @__PURE__ */
|
|
1706
|
-
var ChevronRight = () => /* @__PURE__ */
|
|
1788
|
+
var ChevronLeft = () => /* @__PURE__ */ jsx21("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx21("path", { d: "m15 18-6-6 6-6" }) });
|
|
1789
|
+
var ChevronRight = () => /* @__PURE__ */ jsx21("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, children: /* @__PURE__ */ jsx21("path", { d: "m9 18 6-6-6-6" }) });
|
|
1707
1790
|
var MoreHorizontal = () => /* @__PURE__ */ jsxs5(
|
|
1708
1791
|
"svg",
|
|
1709
1792
|
{
|
|
@@ -1713,9 +1796,9 @@ var MoreHorizontal = () => /* @__PURE__ */ jsxs5(
|
|
|
1713
1796
|
stroke: "currentColor",
|
|
1714
1797
|
strokeWidth: 2,
|
|
1715
1798
|
children: [
|
|
1716
|
-
/* @__PURE__ */
|
|
1717
|
-
/* @__PURE__ */
|
|
1718
|
-
/* @__PURE__ */
|
|
1799
|
+
/* @__PURE__ */ jsx21("circle", { cx: "12", cy: "12", r: "1" }),
|
|
1800
|
+
/* @__PURE__ */ jsx21("circle", { cx: "19", cy: "12", r: "1" }),
|
|
1801
|
+
/* @__PURE__ */ jsx21("circle", { cx: "5", cy: "12", r: "1" })
|
|
1719
1802
|
]
|
|
1720
1803
|
}
|
|
1721
1804
|
);
|
|
@@ -1731,8 +1814,8 @@ function PaginationPrevious({
|
|
|
1731
1814
|
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
1732
1815
|
...props,
|
|
1733
1816
|
children: [
|
|
1734
|
-
/* @__PURE__ */
|
|
1735
|
-
/* @__PURE__ */
|
|
1817
|
+
/* @__PURE__ */ jsx21(ChevronLeft, {}),
|
|
1818
|
+
/* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Previous" })
|
|
1736
1819
|
]
|
|
1737
1820
|
}
|
|
1738
1821
|
);
|
|
@@ -1749,8 +1832,8 @@ function PaginationNext({
|
|
|
1749
1832
|
className: cn("gap-1 px-2.5 sm:pr-2.5", className),
|
|
1750
1833
|
...props,
|
|
1751
1834
|
children: [
|
|
1752
|
-
/* @__PURE__ */
|
|
1753
|
-
/* @__PURE__ */
|
|
1835
|
+
/* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Next" }),
|
|
1836
|
+
/* @__PURE__ */ jsx21(ChevronRight, {})
|
|
1754
1837
|
]
|
|
1755
1838
|
}
|
|
1756
1839
|
);
|
|
@@ -1767,8 +1850,8 @@ function PaginationEllipsis({
|
|
|
1767
1850
|
className: cn("flex size-9 items-center justify-center", className),
|
|
1768
1851
|
...props,
|
|
1769
1852
|
children: [
|
|
1770
|
-
/* @__PURE__ */
|
|
1771
|
-
/* @__PURE__ */
|
|
1853
|
+
/* @__PURE__ */ jsx21(MoreHorizontal, {}),
|
|
1854
|
+
/* @__PURE__ */ jsx21("span", { className: "sr-only", children: "More pages" })
|
|
1772
1855
|
]
|
|
1773
1856
|
}
|
|
1774
1857
|
);
|
|
@@ -1782,9 +1865,9 @@ var PROGRESS_TRACK = "bg-primary/20 relative h-2 w-full overflow-hidden rounded-
|
|
|
1782
1865
|
var PROGRESS_INDICATOR = "bg-primary h-full w-full flex-1 transition-all";
|
|
1783
1866
|
|
|
1784
1867
|
// src/components/progress.tsx
|
|
1785
|
-
import { jsx as
|
|
1868
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1786
1869
|
function Progress({ className, value = 0, ...props }) {
|
|
1787
|
-
return /* @__PURE__ */
|
|
1870
|
+
return /* @__PURE__ */ jsx22(
|
|
1788
1871
|
"div",
|
|
1789
1872
|
{
|
|
1790
1873
|
"data-slot": "progress",
|
|
@@ -1794,7 +1877,7 @@ function Progress({ className, value = 0, ...props }) {
|
|
|
1794
1877
|
"aria-valuemax": 100,
|
|
1795
1878
|
className: cn(PROGRESS_TRACK, className),
|
|
1796
1879
|
...props,
|
|
1797
|
-
children: /* @__PURE__ */
|
|
1880
|
+
children: /* @__PURE__ */ jsx22(
|
|
1798
1881
|
"div",
|
|
1799
1882
|
{
|
|
1800
1883
|
"data-slot": "progress-indicator",
|
|
@@ -1813,9 +1896,9 @@ import "react";
|
|
|
1813
1896
|
var SKELETON_BASE = "bg-hover animate-pulse rounded-md";
|
|
1814
1897
|
|
|
1815
1898
|
// src/components/skeleton.tsx
|
|
1816
|
-
import { jsx as
|
|
1899
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1817
1900
|
function Skeleton({ className, ...props }) {
|
|
1818
|
-
return /* @__PURE__ */
|
|
1901
|
+
return /* @__PURE__ */ jsx23(
|
|
1819
1902
|
"div",
|
|
1820
1903
|
{
|
|
1821
1904
|
"data-slot": "skeleton",
|
|
@@ -1827,9 +1910,9 @@ function Skeleton({ className, ...props }) {
|
|
|
1827
1910
|
|
|
1828
1911
|
// src/components/spinner.tsx
|
|
1829
1912
|
import "react";
|
|
1830
|
-
import { jsx as
|
|
1913
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1831
1914
|
function Spinner({ className, ...props }) {
|
|
1832
|
-
return /* @__PURE__ */
|
|
1915
|
+
return /* @__PURE__ */ jsx24(
|
|
1833
1916
|
"svg",
|
|
1834
1917
|
{
|
|
1835
1918
|
role: "status",
|
|
@@ -1840,50 +1923,20 @@ function Spinner({ className, ...props }) {
|
|
|
1840
1923
|
stroke: "currentColor",
|
|
1841
1924
|
strokeWidth: 2,
|
|
1842
1925
|
...props,
|
|
1843
|
-
children: /* @__PURE__ */
|
|
1926
|
+
children: /* @__PURE__ */ jsx24("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
|
|
1844
1927
|
}
|
|
1845
1928
|
);
|
|
1846
1929
|
}
|
|
1847
1930
|
|
|
1848
1931
|
// src/components/status-screen.tsx
|
|
1849
1932
|
import "react";
|
|
1850
|
-
import { jsx as
|
|
1851
|
-
var ACCENT_TEXT = {
|
|
1852
|
-
trace: "text-accent-trace",
|
|
1853
|
-
debug: "text-accent-debug",
|
|
1854
|
-
info: "text-accent-info",
|
|
1855
|
-
warn: "text-accent-warn",
|
|
1856
|
-
error: "text-accent-error"
|
|
1857
|
-
};
|
|
1858
|
-
var BTN_FILLED = {
|
|
1859
|
-
trace: "bg-accent-trace text-on-accent-trace hover:bg-accent-trace/90",
|
|
1860
|
-
debug: "bg-accent-debug text-background hover:bg-accent-debug/90",
|
|
1861
|
-
info: "bg-accent-info text-on-accent-info hover:bg-accent-info/90",
|
|
1862
|
-
warn: "bg-accent-warn text-background hover:bg-accent-warn/90",
|
|
1863
|
-
error: "bg-accent-error text-on-accent-error hover:bg-accent-error/90"
|
|
1864
|
-
};
|
|
1865
|
-
var BTN_OUTLINE = {
|
|
1866
|
-
trace: "border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/10",
|
|
1867
|
-
debug: "border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/10",
|
|
1868
|
-
info: "border border-accent-info/40 text-accent-info hover:bg-accent-info/10",
|
|
1869
|
-
warn: "border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/10",
|
|
1870
|
-
error: "border border-accent-error/40 text-accent-error hover:bg-accent-error/10"
|
|
1871
|
-
};
|
|
1933
|
+
import { jsx as jsx25, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1872
1934
|
function statusCtaClass(accent, variant) {
|
|
1873
1935
|
return cn(
|
|
1874
|
-
buttonVariants({ variant, size: "lg" }),
|
|
1875
|
-
"font-mono text-xs uppercase tracking-widest"
|
|
1876
|
-
variant === "outline" ? BTN_OUTLINE[accent] : BTN_FILLED[accent]
|
|
1936
|
+
buttonVariants({ variant, size: "lg", accent }),
|
|
1937
|
+
"font-mono text-xs uppercase tracking-widest"
|
|
1877
1938
|
);
|
|
1878
1939
|
}
|
|
1879
|
-
function LogoMark({ className }) {
|
|
1880
|
-
return /* @__PURE__ */ jsx24("svg", { viewBox: "0 0 140 48", className, "aria-hidden": true, children: /* @__PURE__ */ jsxs6("g", { fill: "currentColor", children: [
|
|
1881
|
-
/* @__PURE__ */ jsx24("path", { d: "M0.0437012 47.3326L50.9499 40.5805V22.3378L56.4881 23.6408V37.9071L59.1984 37.5005V24.1147L64.6189 25.1808V37.0269L67.2113 36.553V22.1009L56.606 17.481L43.408 21.864V36.553L0.0437012 47.3326Z" }),
|
|
1882
|
-
/* @__PURE__ */ jsx24("path", { d: "M77.2277 40.5804L85.9478 41.4099L85.8299 0.304321L73.1033 7.17499V26.3654L77.2277 28.2608V40.5804Z" }),
|
|
1883
|
-
/* @__PURE__ */ jsx24("path", { d: "M87.126 0.304321L99.9705 7.29343V42.5943L94.3141 41.8835V9.54417L87.126 5.75347V0.304321Z" }),
|
|
1884
|
-
/* @__PURE__ */ jsx24("path", { d: "M103.034 42.9496L139.682 46.0296L110.104 39.7513V26.8393L103.034 23.0486V42.9496Z" })
|
|
1885
|
-
] }) });
|
|
1886
|
-
}
|
|
1887
1940
|
function ArrowLeftIcon({ className }) {
|
|
1888
1941
|
return /* @__PURE__ */ jsxs6(
|
|
1889
1942
|
"svg",
|
|
@@ -1897,8 +1950,8 @@ function ArrowLeftIcon({ className }) {
|
|
|
1897
1950
|
strokeLinejoin: "round",
|
|
1898
1951
|
"aria-hidden": true,
|
|
1899
1952
|
children: [
|
|
1900
|
-
/* @__PURE__ */
|
|
1901
|
-
/* @__PURE__ */
|
|
1953
|
+
/* @__PURE__ */ jsx25("path", { d: "m12 19-7-7 7-7" }),
|
|
1954
|
+
/* @__PURE__ */ jsx25("path", { d: "M19 12H5" })
|
|
1902
1955
|
]
|
|
1903
1956
|
}
|
|
1904
1957
|
);
|
|
@@ -1916,9 +1969,9 @@ function StatusScreen({
|
|
|
1916
1969
|
linkComponent
|
|
1917
1970
|
}) {
|
|
1918
1971
|
const L = linkComponent ?? "a";
|
|
1919
|
-
const accentText =
|
|
1972
|
+
const accentText = accentTextClasses[accent];
|
|
1920
1973
|
return /* @__PURE__ */ jsxs6("section", { className: "relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-background px-6 py-32 text-center", children: [
|
|
1921
|
-
/* @__PURE__ */
|
|
1974
|
+
/* @__PURE__ */ jsx25(
|
|
1922
1975
|
"div",
|
|
1923
1976
|
{
|
|
1924
1977
|
"aria-hidden": true,
|
|
@@ -1929,19 +1982,19 @@ function StatusScreen({
|
|
|
1929
1982
|
}
|
|
1930
1983
|
),
|
|
1931
1984
|
/* @__PURE__ */ jsxs6("div", { className: "relative z-10 flex w-full max-w-2xl flex-col items-center", children: [
|
|
1932
|
-
/* @__PURE__ */
|
|
1933
|
-
/* @__PURE__ */
|
|
1934
|
-
/* @__PURE__ */
|
|
1985
|
+
/* @__PURE__ */ jsx25(Logo, { className: cn("mb-7 h-10 w-auto", accentText) }),
|
|
1986
|
+
/* @__PURE__ */ jsx25("p", { className: cn("mb-6 font-mono text-[11px] uppercase tracking-[0.34em]", accentText), children: eyebrow }),
|
|
1987
|
+
/* @__PURE__ */ jsx25("p", { className: cn("font-serif text-[110px] font-medium leading-[0.9] sm:text-[180px]", accentText), children: code }),
|
|
1935
1988
|
/* @__PURE__ */ jsxs6("h1", { className: "mt-4 font-serif text-3xl font-light leading-tight text-ink sm:text-5xl", children: [
|
|
1936
1989
|
headlineLead,
|
|
1937
|
-
/* @__PURE__ */
|
|
1990
|
+
/* @__PURE__ */ jsx25("span", { className: cn("font-serif italic", accentText), children: headlineAccent }),
|
|
1938
1991
|
headlineTail
|
|
1939
1992
|
] }),
|
|
1940
|
-
/* @__PURE__ */
|
|
1993
|
+
/* @__PURE__ */ jsx25("p", { className: "mx-auto mt-5 max-w-md text-sm leading-relaxed text-ink/60 sm:text-base", children: subtext }),
|
|
1941
1994
|
/* @__PURE__ */ jsxs6("div", { className: "mt-9 flex flex-col items-center gap-3 sm:flex-row", children: [
|
|
1942
1995
|
children,
|
|
1943
1996
|
links?.map((link) => /* @__PURE__ */ jsxs6(L, { href: link.href, className: statusCtaClass(accent, link.variant ?? "primary"), children: [
|
|
1944
|
-
link.leadingArrow ? /* @__PURE__ */
|
|
1997
|
+
link.leadingArrow ? /* @__PURE__ */ jsx25(ArrowLeftIcon, { className: "mr-2 h-4 w-4" }) : null,
|
|
1945
1998
|
link.label
|
|
1946
1999
|
] }, link.label))
|
|
1947
2000
|
] })
|
|
@@ -1949,7 +2002,7 @@ function StatusScreen({
|
|
|
1949
2002
|
] });
|
|
1950
2003
|
}
|
|
1951
2004
|
function NotFound({ linkComponent = "a", homeHref = "/", contactHref = "/contact" }) {
|
|
1952
|
-
return /* @__PURE__ */
|
|
2005
|
+
return /* @__PURE__ */ jsx25(
|
|
1953
2006
|
StatusScreen,
|
|
1954
2007
|
{
|
|
1955
2008
|
accent: "debug",
|
|
@@ -1967,7 +2020,7 @@ function NotFound({ linkComponent = "a", homeHref = "/", contactHref = "/contact
|
|
|
1967
2020
|
);
|
|
1968
2021
|
}
|
|
1969
2022
|
function Forbidden({ linkComponent = "a", homeHref = "/", contactHref = "/contact" }) {
|
|
1970
|
-
return /* @__PURE__ */
|
|
2023
|
+
return /* @__PURE__ */ jsx25(
|
|
1971
2024
|
StatusScreen,
|
|
1972
2025
|
{
|
|
1973
2026
|
accent: "warn",
|
|
@@ -1985,7 +2038,7 @@ function Forbidden({ linkComponent = "a", homeHref = "/", contactHref = "/contac
|
|
|
1985
2038
|
);
|
|
1986
2039
|
}
|
|
1987
2040
|
function ServerError({ linkComponent = "a", homeHref = "/", reset }) {
|
|
1988
|
-
return /* @__PURE__ */
|
|
2041
|
+
return /* @__PURE__ */ jsx25(
|
|
1989
2042
|
StatusScreen,
|
|
1990
2043
|
{
|
|
1991
2044
|
accent: "error",
|
|
@@ -1996,7 +2049,7 @@ function ServerError({ linkComponent = "a", homeHref = "/", reset }) {
|
|
|
1996
2049
|
subtext: "Something broke on our end \u2014 not yours. We've been alerted and are restoring service. Please try again in a moment.",
|
|
1997
2050
|
linkComponent,
|
|
1998
2051
|
links: [{ label: "Back to home", href: homeHref, variant: "outline", leadingArrow: true }],
|
|
1999
|
-
children: /* @__PURE__ */
|
|
2052
|
+
children: /* @__PURE__ */ jsx25(
|
|
2000
2053
|
"button",
|
|
2001
2054
|
{
|
|
2002
2055
|
type: "button",
|
|
@@ -2024,14 +2077,14 @@ var TABLE_CELL = "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr
|
|
|
2024
2077
|
var TABLE_CAPTION = "text-ink-soft mt-4 text-sm";
|
|
2025
2078
|
|
|
2026
2079
|
// src/components/table.tsx
|
|
2027
|
-
import { jsx as
|
|
2080
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
2028
2081
|
function Table({ className, ...props }) {
|
|
2029
|
-
return /* @__PURE__ */
|
|
2082
|
+
return /* @__PURE__ */ jsx26(
|
|
2030
2083
|
"div",
|
|
2031
2084
|
{
|
|
2032
2085
|
"data-slot": "table-container",
|
|
2033
2086
|
className: TABLE_CONTAINER,
|
|
2034
|
-
children: /* @__PURE__ */
|
|
2087
|
+
children: /* @__PURE__ */ jsx26(
|
|
2035
2088
|
"table",
|
|
2036
2089
|
{
|
|
2037
2090
|
"data-slot": "table",
|
|
@@ -2046,7 +2099,7 @@ function TableHeader({
|
|
|
2046
2099
|
className,
|
|
2047
2100
|
...props
|
|
2048
2101
|
}) {
|
|
2049
|
-
return /* @__PURE__ */
|
|
2102
|
+
return /* @__PURE__ */ jsx26(
|
|
2050
2103
|
"thead",
|
|
2051
2104
|
{
|
|
2052
2105
|
"data-slot": "table-header",
|
|
@@ -2059,7 +2112,7 @@ function TableBody({
|
|
|
2059
2112
|
className,
|
|
2060
2113
|
...props
|
|
2061
2114
|
}) {
|
|
2062
|
-
return /* @__PURE__ */
|
|
2115
|
+
return /* @__PURE__ */ jsx26(
|
|
2063
2116
|
"tbody",
|
|
2064
2117
|
{
|
|
2065
2118
|
"data-slot": "table-body",
|
|
@@ -2072,7 +2125,7 @@ function TableFooter({
|
|
|
2072
2125
|
className,
|
|
2073
2126
|
...props
|
|
2074
2127
|
}) {
|
|
2075
|
-
return /* @__PURE__ */
|
|
2128
|
+
return /* @__PURE__ */ jsx26(
|
|
2076
2129
|
"tfoot",
|
|
2077
2130
|
{
|
|
2078
2131
|
"data-slot": "table-footer",
|
|
@@ -2082,7 +2135,7 @@ function TableFooter({
|
|
|
2082
2135
|
);
|
|
2083
2136
|
}
|
|
2084
2137
|
function TableRow({ className, ...props }) {
|
|
2085
|
-
return /* @__PURE__ */
|
|
2138
|
+
return /* @__PURE__ */ jsx26(
|
|
2086
2139
|
"tr",
|
|
2087
2140
|
{
|
|
2088
2141
|
"data-slot": "table-row",
|
|
@@ -2092,7 +2145,7 @@ function TableRow({ className, ...props }) {
|
|
|
2092
2145
|
);
|
|
2093
2146
|
}
|
|
2094
2147
|
function TableHead({ className, ...props }) {
|
|
2095
|
-
return /* @__PURE__ */
|
|
2148
|
+
return /* @__PURE__ */ jsx26(
|
|
2096
2149
|
"th",
|
|
2097
2150
|
{
|
|
2098
2151
|
"data-slot": "table-head",
|
|
@@ -2102,7 +2155,7 @@ function TableHead({ className, ...props }) {
|
|
|
2102
2155
|
);
|
|
2103
2156
|
}
|
|
2104
2157
|
function TableCell({ className, ...props }) {
|
|
2105
|
-
return /* @__PURE__ */
|
|
2158
|
+
return /* @__PURE__ */ jsx26(
|
|
2106
2159
|
"td",
|
|
2107
2160
|
{
|
|
2108
2161
|
"data-slot": "table-cell",
|
|
@@ -2115,7 +2168,7 @@ function TableCaption({
|
|
|
2115
2168
|
className,
|
|
2116
2169
|
...props
|
|
2117
2170
|
}) {
|
|
2118
|
-
return /* @__PURE__ */
|
|
2171
|
+
return /* @__PURE__ */ jsx26(
|
|
2119
2172
|
"caption",
|
|
2120
2173
|
{
|
|
2121
2174
|
"data-slot": "table-caption",
|
|
@@ -2126,7 +2179,7 @@ function TableCaption({
|
|
|
2126
2179
|
}
|
|
2127
2180
|
|
|
2128
2181
|
// src/components/accordion.tsx
|
|
2129
|
-
import * as
|
|
2182
|
+
import * as React37 from "react";
|
|
2130
2183
|
|
|
2131
2184
|
// src/generated/accordion.ts
|
|
2132
2185
|
var ACCORDION_ITEM = "border-b last:border-b-0";
|
|
@@ -2136,16 +2189,16 @@ var ACCORDION_CONTENT = "data-[state=closed]:animate-accordion-up data-[state=op
|
|
|
2136
2189
|
var ACCORDION_CONTENT_INNER = "pt-0 pb-4";
|
|
2137
2190
|
|
|
2138
2191
|
// src/components/accordion.tsx
|
|
2139
|
-
import { jsx as
|
|
2140
|
-
var AccordionContext =
|
|
2192
|
+
import { jsx as jsx27, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2193
|
+
var AccordionContext = React37.createContext(null);
|
|
2141
2194
|
function useAccordion() {
|
|
2142
|
-
const ctx =
|
|
2195
|
+
const ctx = React37.useContext(AccordionContext);
|
|
2143
2196
|
if (!ctx) throw new Error("Accordion parts must be used within <Accordion>");
|
|
2144
2197
|
return ctx;
|
|
2145
2198
|
}
|
|
2146
|
-
var ItemContext =
|
|
2199
|
+
var ItemContext = React37.createContext(null);
|
|
2147
2200
|
function useItemValue() {
|
|
2148
|
-
const value =
|
|
2201
|
+
const value = React37.useContext(ItemContext);
|
|
2149
2202
|
if (value === null)
|
|
2150
2203
|
throw new Error("AccordionTrigger/Content must be used within <AccordionItem>");
|
|
2151
2204
|
return value;
|
|
@@ -2173,7 +2226,7 @@ function Accordion({
|
|
|
2173
2226
|
if (open.includes(v)) setOpen(collapsible ? [] : open);
|
|
2174
2227
|
else setOpen([v]);
|
|
2175
2228
|
};
|
|
2176
|
-
return /* @__PURE__ */
|
|
2229
|
+
return /* @__PURE__ */ jsx27(AccordionContext.Provider, { value: { isOpen, toggle }, children: /* @__PURE__ */ jsx27("div", { "data-slot": "accordion", ...props, children }) });
|
|
2177
2230
|
}
|
|
2178
2231
|
function AccordionItem({
|
|
2179
2232
|
className,
|
|
@@ -2181,7 +2234,7 @@ function AccordionItem({
|
|
|
2181
2234
|
children,
|
|
2182
2235
|
...props
|
|
2183
2236
|
}) {
|
|
2184
|
-
return /* @__PURE__ */
|
|
2237
|
+
return /* @__PURE__ */ jsx27(ItemContext.Provider, { value, children: /* @__PURE__ */ jsx27(
|
|
2185
2238
|
"div",
|
|
2186
2239
|
{
|
|
2187
2240
|
"data-slot": "accordion-item",
|
|
@@ -2200,7 +2253,7 @@ function AccordionTrigger({
|
|
|
2200
2253
|
const { isOpen, toggle } = useAccordion();
|
|
2201
2254
|
const value = useItemValue();
|
|
2202
2255
|
const open = isOpen(value);
|
|
2203
|
-
return /* @__PURE__ */
|
|
2256
|
+
return /* @__PURE__ */ jsx27("h3", { className: ACCORDION_HEADER, "data-slot": "accordion-header", children: /* @__PURE__ */ jsxs7(
|
|
2204
2257
|
"button",
|
|
2205
2258
|
{
|
|
2206
2259
|
type: "button",
|
|
@@ -2215,7 +2268,7 @@ function AccordionTrigger({
|
|
|
2215
2268
|
...props,
|
|
2216
2269
|
children: [
|
|
2217
2270
|
children,
|
|
2218
|
-
/* @__PURE__ */
|
|
2271
|
+
/* @__PURE__ */ jsx27(
|
|
2219
2272
|
"svg",
|
|
2220
2273
|
{
|
|
2221
2274
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2228,7 +2281,7 @@ function AccordionTrigger({
|
|
|
2228
2281
|
strokeLinecap: "round",
|
|
2229
2282
|
strokeLinejoin: "round",
|
|
2230
2283
|
className: "text-ink-soft pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200",
|
|
2231
|
-
children: /* @__PURE__ */
|
|
2284
|
+
children: /* @__PURE__ */ jsx27("path", { d: "m6 9 6 6 6-6" })
|
|
2232
2285
|
}
|
|
2233
2286
|
)
|
|
2234
2287
|
]
|
|
@@ -2243,26 +2296,26 @@ function AccordionContent({
|
|
|
2243
2296
|
const { isOpen } = useAccordion();
|
|
2244
2297
|
const value = useItemValue();
|
|
2245
2298
|
if (!isOpen(value)) return null;
|
|
2246
|
-
return /* @__PURE__ */
|
|
2299
|
+
return /* @__PURE__ */ jsx27(
|
|
2247
2300
|
"div",
|
|
2248
2301
|
{
|
|
2249
2302
|
"data-slot": "accordion-content",
|
|
2250
2303
|
"data-state": "open",
|
|
2251
2304
|
className: ACCORDION_CONTENT,
|
|
2252
2305
|
...props,
|
|
2253
|
-
children: /* @__PURE__ */
|
|
2306
|
+
children: /* @__PURE__ */ jsx27("div", { className: cn(ACCORDION_CONTENT_INNER, className), children })
|
|
2254
2307
|
}
|
|
2255
2308
|
);
|
|
2256
2309
|
}
|
|
2257
2310
|
|
|
2258
2311
|
// src/components/collapsible.tsx
|
|
2259
|
-
import * as
|
|
2260
|
-
import { jsx as
|
|
2261
|
-
var CollapsibleContext =
|
|
2312
|
+
import * as React38 from "react";
|
|
2313
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2314
|
+
var CollapsibleContext = React38.createContext(
|
|
2262
2315
|
null
|
|
2263
2316
|
);
|
|
2264
2317
|
function useCollapsible() {
|
|
2265
|
-
const ctx =
|
|
2318
|
+
const ctx = React38.useContext(CollapsibleContext);
|
|
2266
2319
|
if (!ctx) throw new Error("Collapsible parts must be used within <Collapsible>");
|
|
2267
2320
|
return ctx;
|
|
2268
2321
|
}
|
|
@@ -2278,14 +2331,14 @@ function Collapsible({
|
|
|
2278
2331
|
defaultValue: defaultOpen,
|
|
2279
2332
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
2280
2333
|
});
|
|
2281
|
-
return /* @__PURE__ */
|
|
2334
|
+
return /* @__PURE__ */ jsx28(CollapsibleContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx28("div", { "data-slot": "collapsible", "data-state": isOpen ? "open" : "closed", ...props, children }) });
|
|
2282
2335
|
}
|
|
2283
2336
|
function CollapsibleTrigger({
|
|
2284
2337
|
onClick,
|
|
2285
2338
|
...props
|
|
2286
2339
|
}) {
|
|
2287
2340
|
const { open, setOpen } = useCollapsible();
|
|
2288
|
-
return /* @__PURE__ */
|
|
2341
|
+
return /* @__PURE__ */ jsx28(
|
|
2289
2342
|
"button",
|
|
2290
2343
|
{
|
|
2291
2344
|
type: "button",
|
|
@@ -2306,7 +2359,7 @@ function CollapsibleContent({
|
|
|
2306
2359
|
}) {
|
|
2307
2360
|
const { open } = useCollapsible();
|
|
2308
2361
|
if (!open) return null;
|
|
2309
|
-
return /* @__PURE__ */
|
|
2362
|
+
return /* @__PURE__ */ jsx28("div", { "data-slot": "collapsible-content", "data-state": "open", ...props, children });
|
|
2310
2363
|
}
|
|
2311
2364
|
|
|
2312
2365
|
// src/components/band.tsx
|
|
@@ -2337,7 +2390,7 @@ var STAT_LABEL = "text-ink-soft";
|
|
|
2337
2390
|
var CHECK = "font-semibold text-positive";
|
|
2338
2391
|
|
|
2339
2392
|
// src/components/band.tsx
|
|
2340
|
-
import { jsx as
|
|
2393
|
+
import { jsx as jsx29, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2341
2394
|
function Section({
|
|
2342
2395
|
polarity = "light",
|
|
2343
2396
|
surface = "background",
|
|
@@ -2345,7 +2398,7 @@ function Section({
|
|
|
2345
2398
|
className,
|
|
2346
2399
|
...props
|
|
2347
2400
|
}) {
|
|
2348
|
-
return /* @__PURE__ */
|
|
2401
|
+
return /* @__PURE__ */ jsx29(
|
|
2349
2402
|
"section",
|
|
2350
2403
|
{
|
|
2351
2404
|
"data-slot": "section",
|
|
@@ -2360,33 +2413,33 @@ function Section({
|
|
|
2360
2413
|
);
|
|
2361
2414
|
}
|
|
2362
2415
|
function Eyebrow({ className, ...props }) {
|
|
2363
|
-
return /* @__PURE__ */
|
|
2416
|
+
return /* @__PURE__ */ jsx29("p", { "data-slot": "eyebrow", className: cn(EYEBROW, className), ...props });
|
|
2364
2417
|
}
|
|
2365
2418
|
function Display({ className, ...props }) {
|
|
2366
|
-
return /* @__PURE__ */
|
|
2419
|
+
return /* @__PURE__ */ jsx29("h2", { "data-slot": "display", className: cn(DISPLAY_BASE, className), ...props });
|
|
2367
2420
|
}
|
|
2368
2421
|
function SectionHead({ eyebrow, title, lede, className, ...props }) {
|
|
2369
2422
|
return /* @__PURE__ */ jsxs8("div", { "data-slot": "section-head", className: cn(SECTION_HEAD, className), ...props, children: [
|
|
2370
|
-
/* @__PURE__ */
|
|
2371
|
-
/* @__PURE__ */
|
|
2372
|
-
lede && /* @__PURE__ */
|
|
2423
|
+
/* @__PURE__ */ jsx29(Eyebrow, { children: eyebrow }),
|
|
2424
|
+
/* @__PURE__ */ jsx29(Display, { children: title }),
|
|
2425
|
+
lede && /* @__PURE__ */ jsx29("p", { className: LEDE, children: lede })
|
|
2373
2426
|
] });
|
|
2374
2427
|
}
|
|
2375
2428
|
function Prose({ className, ...props }) {
|
|
2376
|
-
return /* @__PURE__ */
|
|
2429
|
+
return /* @__PURE__ */ jsx29("p", { "data-slot": "prose", className: cn(PROSE, className), ...props });
|
|
2377
2430
|
}
|
|
2378
2431
|
function Stat({ figure, label, className, ...props }) {
|
|
2379
2432
|
return /* @__PURE__ */ jsxs8("span", { "data-slot": "stat", className: cn(STAT, className), ...props, children: [
|
|
2380
|
-
/* @__PURE__ */
|
|
2381
|
-
/* @__PURE__ */
|
|
2433
|
+
/* @__PURE__ */ jsx29("span", { className: STAT_FIGURE, children: figure }),
|
|
2434
|
+
/* @__PURE__ */ jsx29("span", { className: STAT_LABEL, children: label })
|
|
2382
2435
|
] });
|
|
2383
2436
|
}
|
|
2384
2437
|
function Check({ className, ...props }) {
|
|
2385
|
-
return /* @__PURE__ */
|
|
2438
|
+
return /* @__PURE__ */ jsx29("span", { "data-slot": "check", "aria-hidden": true, className: cn(CHECK, className), ...props, children: "\u2713" });
|
|
2386
2439
|
}
|
|
2387
2440
|
|
|
2388
2441
|
// src/components/tabs.tsx
|
|
2389
|
-
import * as
|
|
2442
|
+
import * as React40 from "react";
|
|
2390
2443
|
|
|
2391
2444
|
// src/generated/tabs.ts
|
|
2392
2445
|
var TABS_ROOT = "flex flex-col gap-2";
|
|
@@ -2395,10 +2448,10 @@ var TABS_TRIGGER = "data-[state=active]:bg-background focus-visible:border-ring
|
|
|
2395
2448
|
var TABS_CONTENT = "flex-1 outline-none";
|
|
2396
2449
|
|
|
2397
2450
|
// src/components/tabs.tsx
|
|
2398
|
-
import { jsx as
|
|
2399
|
-
var TabsContext =
|
|
2451
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2452
|
+
var TabsContext = React40.createContext(null);
|
|
2400
2453
|
function useTabs() {
|
|
2401
|
-
const ctx =
|
|
2454
|
+
const ctx = React40.useContext(TabsContext);
|
|
2402
2455
|
if (!ctx) throw new Error("Tabs parts must be used within <Tabs>");
|
|
2403
2456
|
return ctx;
|
|
2404
2457
|
}
|
|
@@ -2416,7 +2469,7 @@ function Tabs({
|
|
|
2416
2469
|
defaultValue,
|
|
2417
2470
|
...onValueChange ? { onChange: onValueChange } : {}
|
|
2418
2471
|
});
|
|
2419
|
-
return /* @__PURE__ */
|
|
2472
|
+
return /* @__PURE__ */ jsx30(TabsContext.Provider, { value: { value: active, setValue, orientation }, children: /* @__PURE__ */ jsx30(
|
|
2420
2473
|
"div",
|
|
2421
2474
|
{
|
|
2422
2475
|
"data-slot": "tabs",
|
|
@@ -2434,12 +2487,12 @@ function TabsList({
|
|
|
2434
2487
|
...props
|
|
2435
2488
|
}) {
|
|
2436
2489
|
const { orientation } = useTabs();
|
|
2437
|
-
const items =
|
|
2490
|
+
const items = React40.Children.toArray(children);
|
|
2438
2491
|
const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({
|
|
2439
2492
|
count: items.length,
|
|
2440
2493
|
orientation: orientation === "vertical" ? "vertical" : "horizontal"
|
|
2441
2494
|
});
|
|
2442
|
-
return /* @__PURE__ */
|
|
2495
|
+
return /* @__PURE__ */ jsx30(
|
|
2443
2496
|
"div",
|
|
2444
2497
|
{
|
|
2445
2498
|
role: "tablist",
|
|
@@ -2452,7 +2505,7 @@ function TabsList({
|
|
|
2452
2505
|
},
|
|
2453
2506
|
...props,
|
|
2454
2507
|
children: items.map(
|
|
2455
|
-
(child, index) =>
|
|
2508
|
+
(child, index) => React40.isValidElement(child) ? React40.cloneElement(child, {
|
|
2456
2509
|
__index: index,
|
|
2457
2510
|
__isFocusItem: index === activeIndex,
|
|
2458
2511
|
__onFocusItem: () => setActiveIndex(index)
|
|
@@ -2472,7 +2525,7 @@ function TabsTrigger({
|
|
|
2472
2525
|
}) {
|
|
2473
2526
|
const { value: active, setValue } = useTabs();
|
|
2474
2527
|
const selected = active === value;
|
|
2475
|
-
return /* @__PURE__ */
|
|
2528
|
+
return /* @__PURE__ */ jsx30(
|
|
2476
2529
|
"button",
|
|
2477
2530
|
{
|
|
2478
2531
|
type: "button",
|
|
@@ -2503,7 +2556,7 @@ function TabsContent({
|
|
|
2503
2556
|
}) {
|
|
2504
2557
|
const { value: active } = useTabs();
|
|
2505
2558
|
if (active !== value) return null;
|
|
2506
|
-
return /* @__PURE__ */
|
|
2559
|
+
return /* @__PURE__ */ jsx30(
|
|
2507
2560
|
"div",
|
|
2508
2561
|
{
|
|
2509
2562
|
role: "tabpanel",
|
|
@@ -2534,7 +2587,7 @@ var toggleSizeClasses = {
|
|
|
2534
2587
|
};
|
|
2535
2588
|
|
|
2536
2589
|
// src/components/toggle.tsx
|
|
2537
|
-
import { jsx as
|
|
2590
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2538
2591
|
function toggleVariants({
|
|
2539
2592
|
variant = "bare",
|
|
2540
2593
|
size = "md",
|
|
@@ -2557,7 +2610,7 @@ function Toggle({
|
|
|
2557
2610
|
defaultValue: defaultPressed,
|
|
2558
2611
|
...onPressedChange ? { onChange: onPressedChange } : {}
|
|
2559
2612
|
});
|
|
2560
|
-
return /* @__PURE__ */
|
|
2613
|
+
return /* @__PURE__ */ jsx31(
|
|
2561
2614
|
"button",
|
|
2562
2615
|
{
|
|
2563
2616
|
type: "button",
|
|
@@ -2575,9 +2628,9 @@ function Toggle({
|
|
|
2575
2628
|
}
|
|
2576
2629
|
|
|
2577
2630
|
// src/components/toggle-group.tsx
|
|
2578
|
-
import * as
|
|
2579
|
-
import { jsx as
|
|
2580
|
-
var ToggleGroupContext =
|
|
2631
|
+
import * as React42 from "react";
|
|
2632
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
2633
|
+
var ToggleGroupContext = React42.createContext({
|
|
2581
2634
|
variant: "bare",
|
|
2582
2635
|
size: "md",
|
|
2583
2636
|
value: [],
|
|
@@ -2604,7 +2657,7 @@ function ToggleGroup({
|
|
|
2604
2657
|
defaultValue: toArray(defaultValue),
|
|
2605
2658
|
onChange: (next) => onValueChange?.(type === "single" ? next[0] ?? "" : next)
|
|
2606
2659
|
});
|
|
2607
|
-
const toggle =
|
|
2660
|
+
const toggle = React42.useCallback(
|
|
2608
2661
|
(itemValue) => {
|
|
2609
2662
|
if (type === "single") {
|
|
2610
2663
|
setSelected(selected.includes(itemValue) ? [] : [itemValue]);
|
|
@@ -2616,7 +2669,7 @@ function ToggleGroup({
|
|
|
2616
2669
|
},
|
|
2617
2670
|
[type, selected, setSelected]
|
|
2618
2671
|
);
|
|
2619
|
-
return /* @__PURE__ */
|
|
2672
|
+
return /* @__PURE__ */ jsx32(
|
|
2620
2673
|
"div",
|
|
2621
2674
|
{
|
|
2622
2675
|
"data-slot": "toggle-group",
|
|
@@ -2627,7 +2680,7 @@ function ToggleGroup({
|
|
|
2627
2680
|
className
|
|
2628
2681
|
),
|
|
2629
2682
|
...props,
|
|
2630
|
-
children: /* @__PURE__ */
|
|
2683
|
+
children: /* @__PURE__ */ jsx32(ToggleGroupContext.Provider, { value: { variant, size, value: selected, toggle }, children })
|
|
2631
2684
|
}
|
|
2632
2685
|
);
|
|
2633
2686
|
}
|
|
@@ -2640,11 +2693,11 @@ function ToggleGroupItem({
|
|
|
2640
2693
|
onClick,
|
|
2641
2694
|
...props
|
|
2642
2695
|
}) {
|
|
2643
|
-
const context =
|
|
2696
|
+
const context = React42.useContext(ToggleGroupContext);
|
|
2644
2697
|
const resolvedVariant = context.variant || variant || "bare";
|
|
2645
2698
|
const resolvedSize = context.size || size || "md";
|
|
2646
2699
|
const on = context.value.includes(value);
|
|
2647
|
-
return /* @__PURE__ */
|
|
2700
|
+
return /* @__PURE__ */ jsx32(
|
|
2648
2701
|
"button",
|
|
2649
2702
|
{
|
|
2650
2703
|
type: "button",
|
|
@@ -2670,7 +2723,7 @@ function ToggleGroupItem({
|
|
|
2670
2723
|
|
|
2671
2724
|
// src/components/switch.tsx
|
|
2672
2725
|
import "react";
|
|
2673
|
-
import { jsx as
|
|
2726
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
2674
2727
|
function Switch({
|
|
2675
2728
|
className,
|
|
2676
2729
|
checked,
|
|
@@ -2686,7 +2739,7 @@ function Switch({
|
|
|
2686
2739
|
...onCheckedChange ? { onChange: onCheckedChange } : {}
|
|
2687
2740
|
});
|
|
2688
2741
|
const state = on ? "checked" : "unchecked";
|
|
2689
|
-
return /* @__PURE__ */
|
|
2742
|
+
return /* @__PURE__ */ jsx33(
|
|
2690
2743
|
"button",
|
|
2691
2744
|
{
|
|
2692
2745
|
type: "button",
|
|
@@ -2704,7 +2757,7 @@ function Switch({
|
|
|
2704
2757
|
setOn(!on);
|
|
2705
2758
|
},
|
|
2706
2759
|
...props,
|
|
2707
|
-
children: /* @__PURE__ */
|
|
2760
|
+
children: /* @__PURE__ */ jsx33(
|
|
2708
2761
|
"span",
|
|
2709
2762
|
{
|
|
2710
2763
|
"data-slot": "switch-thumb",
|
|
@@ -2718,7 +2771,7 @@ function Switch({
|
|
|
2718
2771
|
|
|
2719
2772
|
// src/components/checkbox.tsx
|
|
2720
2773
|
import "react";
|
|
2721
|
-
import { jsx as
|
|
2774
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
2722
2775
|
function Checkbox({
|
|
2723
2776
|
className,
|
|
2724
2777
|
checked,
|
|
@@ -2734,7 +2787,7 @@ function Checkbox({
|
|
|
2734
2787
|
...onCheckedChange ? { onChange: onCheckedChange } : {}
|
|
2735
2788
|
});
|
|
2736
2789
|
const state = on ? "checked" : "unchecked";
|
|
2737
|
-
return /* @__PURE__ */
|
|
2790
|
+
return /* @__PURE__ */ jsx34(
|
|
2738
2791
|
"button",
|
|
2739
2792
|
{
|
|
2740
2793
|
type: "button",
|
|
@@ -2752,12 +2805,12 @@ function Checkbox({
|
|
|
2752
2805
|
setOn(!on);
|
|
2753
2806
|
},
|
|
2754
2807
|
...props,
|
|
2755
|
-
children: on && /* @__PURE__ */
|
|
2808
|
+
children: on && /* @__PURE__ */ jsx34(
|
|
2756
2809
|
"span",
|
|
2757
2810
|
{
|
|
2758
2811
|
"data-slot": "checkbox-indicator",
|
|
2759
2812
|
className: "flex items-center justify-center text-current transition-none",
|
|
2760
|
-
children: /* @__PURE__ */
|
|
2813
|
+
children: /* @__PURE__ */ jsx34(
|
|
2761
2814
|
"svg",
|
|
2762
2815
|
{
|
|
2763
2816
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2769,7 +2822,7 @@ function Checkbox({
|
|
|
2769
2822
|
strokeLinejoin: "round",
|
|
2770
2823
|
className: "size-3.5",
|
|
2771
2824
|
"aria-hidden": "true",
|
|
2772
|
-
children: /* @__PURE__ */
|
|
2825
|
+
children: /* @__PURE__ */ jsx34("path", { d: "M20 6 9 17l-5-5" })
|
|
2773
2826
|
}
|
|
2774
2827
|
)
|
|
2775
2828
|
}
|
|
@@ -2779,15 +2832,15 @@ function Checkbox({
|
|
|
2779
2832
|
}
|
|
2780
2833
|
|
|
2781
2834
|
// src/components/radio-group.tsx
|
|
2782
|
-
import * as
|
|
2835
|
+
import * as React45 from "react";
|
|
2783
2836
|
|
|
2784
2837
|
// src/generated/radio-group.ts
|
|
2785
2838
|
var RADIO_GROUP_ROOT = "grid gap-3";
|
|
2786
2839
|
var RADIO_GROUP_ITEM = "border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-accent-error/20 aria-invalid:border-accent-error aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50";
|
|
2787
2840
|
|
|
2788
2841
|
// src/components/radio-group.tsx
|
|
2789
|
-
import { jsx as
|
|
2790
|
-
var RadioGroupContext =
|
|
2842
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2843
|
+
var RadioGroupContext = React45.createContext(
|
|
2791
2844
|
null
|
|
2792
2845
|
);
|
|
2793
2846
|
function RadioGroup({
|
|
@@ -2804,10 +2857,10 @@ function RadioGroup({
|
|
|
2804
2857
|
defaultValue,
|
|
2805
2858
|
...onValueChange ? { onChange: onValueChange } : {}
|
|
2806
2859
|
});
|
|
2807
|
-
const itemsRef =
|
|
2808
|
-
const [count, setCount] =
|
|
2860
|
+
const itemsRef = React45.useRef([]);
|
|
2861
|
+
const [count, setCount] = React45.useState(0);
|
|
2809
2862
|
const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({ count, orientation: "vertical", loop: true });
|
|
2810
|
-
const register =
|
|
2863
|
+
const register = React45.useCallback((el) => {
|
|
2811
2864
|
const list = itemsRef.current;
|
|
2812
2865
|
let index = list.indexOf(el);
|
|
2813
2866
|
if (index === -1) {
|
|
@@ -2817,11 +2870,11 @@ function RadioGroup({
|
|
|
2817
2870
|
}
|
|
2818
2871
|
return index;
|
|
2819
2872
|
}, []);
|
|
2820
|
-
const ctx =
|
|
2873
|
+
const ctx = React45.useMemo(
|
|
2821
2874
|
() => ({ value: current, setValue: setCurrent, register, activeIndex, setActiveIndex }),
|
|
2822
2875
|
[current, setCurrent, register, activeIndex, setActiveIndex]
|
|
2823
2876
|
);
|
|
2824
|
-
return /* @__PURE__ */
|
|
2877
|
+
return /* @__PURE__ */ jsx35(RadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx35(
|
|
2825
2878
|
"div",
|
|
2826
2879
|
{
|
|
2827
2880
|
"data-slot": "radio-group",
|
|
@@ -2843,14 +2896,14 @@ function RadioGroupItem({
|
|
|
2843
2896
|
onClick,
|
|
2844
2897
|
...props
|
|
2845
2898
|
}) {
|
|
2846
|
-
const ctx =
|
|
2899
|
+
const ctx = React45.useContext(RadioGroupContext);
|
|
2847
2900
|
if (!ctx) throw new Error("RadioGroupItem must be used within a RadioGroup");
|
|
2848
|
-
const indexRef =
|
|
2901
|
+
const indexRef = React45.useRef(-1);
|
|
2849
2902
|
const checked = ctx.value === value;
|
|
2850
|
-
|
|
2903
|
+
React45.useEffect(() => {
|
|
2851
2904
|
if (checked) ctx.setActiveIndex(indexRef.current);
|
|
2852
2905
|
}, [checked]);
|
|
2853
|
-
return /* @__PURE__ */
|
|
2906
|
+
return /* @__PURE__ */ jsx35(
|
|
2854
2907
|
"button",
|
|
2855
2908
|
{
|
|
2856
2909
|
ref: (el) => {
|
|
@@ -2869,18 +2922,18 @@ function RadioGroupItem({
|
|
|
2869
2922
|
ctx.setValue(value);
|
|
2870
2923
|
},
|
|
2871
2924
|
...props,
|
|
2872
|
-
children: checked ? /* @__PURE__ */
|
|
2925
|
+
children: checked ? /* @__PURE__ */ jsx35(
|
|
2873
2926
|
"span",
|
|
2874
2927
|
{
|
|
2875
2928
|
"data-slot": "radio-group-indicator",
|
|
2876
2929
|
className: "relative flex items-center justify-center",
|
|
2877
|
-
children: /* @__PURE__ */
|
|
2930
|
+
children: /* @__PURE__ */ jsx35(
|
|
2878
2931
|
"svg",
|
|
2879
2932
|
{
|
|
2880
2933
|
className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2",
|
|
2881
2934
|
viewBox: "0 0 24 24",
|
|
2882
2935
|
"aria-hidden": "true",
|
|
2883
|
-
children: /* @__PURE__ */
|
|
2936
|
+
children: /* @__PURE__ */ jsx35("circle", { cx: "12", cy: "12", r: "10" })
|
|
2884
2937
|
}
|
|
2885
2938
|
)
|
|
2886
2939
|
}
|
|
@@ -2890,7 +2943,7 @@ function RadioGroupItem({
|
|
|
2890
2943
|
}
|
|
2891
2944
|
|
|
2892
2945
|
// src/components/slider.tsx
|
|
2893
|
-
import * as
|
|
2946
|
+
import * as React46 from "react";
|
|
2894
2947
|
|
|
2895
2948
|
// src/generated/slider.ts
|
|
2896
2949
|
var SLIDER_ROOT = "relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col";
|
|
@@ -2899,7 +2952,7 @@ var SLIDER_RANGE = "bg-primary absolute data-[orientation=horizontal]:h-full dat
|
|
|
2899
2952
|
var SLIDER_THUMB = "border-primary ring-ring/50 block size-4 shrink-0 rounded-full border bg-ink shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50";
|
|
2900
2953
|
|
|
2901
2954
|
// src/components/slider.tsx
|
|
2902
|
-
import { jsx as
|
|
2955
|
+
import { jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2903
2956
|
function clampStep(value, min, max, step) {
|
|
2904
2957
|
const clamped = Math.min(max, Math.max(min, value));
|
|
2905
2958
|
if (step <= 0) return clamped;
|
|
@@ -2926,9 +2979,9 @@ function Slider({
|
|
|
2926
2979
|
const current = clampStep(raw, min, max, step);
|
|
2927
2980
|
const span = Math.max(max - min, Number.EPSILON);
|
|
2928
2981
|
const percent = Math.min(100, Math.max(0, (current - min) / span * 100));
|
|
2929
|
-
const trackRef =
|
|
2930
|
-
const draggingRef =
|
|
2931
|
-
const valueFromPointer =
|
|
2982
|
+
const trackRef = React46.useRef(null);
|
|
2983
|
+
const draggingRef = React46.useRef(false);
|
|
2984
|
+
const valueFromPointer = React46.useCallback(
|
|
2932
2985
|
(clientX, clientY) => {
|
|
2933
2986
|
const rect = trackRef.current?.getBoundingClientRect();
|
|
2934
2987
|
if (!rect) return current;
|
|
@@ -2989,14 +3042,14 @@ function Slider({
|
|
|
2989
3042
|
onPointerMove,
|
|
2990
3043
|
onPointerUp,
|
|
2991
3044
|
children: [
|
|
2992
|
-
/* @__PURE__ */
|
|
3045
|
+
/* @__PURE__ */ jsx36(
|
|
2993
3046
|
"span",
|
|
2994
3047
|
{
|
|
2995
3048
|
ref: trackRef,
|
|
2996
3049
|
"data-slot": "slider-track",
|
|
2997
3050
|
"data-orientation": orientation,
|
|
2998
3051
|
className: SLIDER_TRACK,
|
|
2999
|
-
children: /* @__PURE__ */
|
|
3052
|
+
children: /* @__PURE__ */ jsx36(
|
|
3000
3053
|
"span",
|
|
3001
3054
|
{
|
|
3002
3055
|
"data-slot": "slider-range",
|
|
@@ -3007,7 +3060,7 @@ function Slider({
|
|
|
3007
3060
|
)
|
|
3008
3061
|
}
|
|
3009
3062
|
),
|
|
3010
|
-
/* @__PURE__ */
|
|
3063
|
+
/* @__PURE__ */ jsx36(
|
|
3011
3064
|
"span",
|
|
3012
3065
|
{
|
|
3013
3066
|
"data-slot": "slider-thumb",
|
|
@@ -3042,15 +3095,15 @@ var scrollBarOrientations = {
|
|
|
3042
3095
|
};
|
|
3043
3096
|
|
|
3044
3097
|
// src/components/scroll-area.tsx
|
|
3045
|
-
import { jsx as
|
|
3098
|
+
import { jsx as jsx37, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3046
3099
|
function ScrollArea({
|
|
3047
3100
|
className,
|
|
3048
3101
|
children,
|
|
3049
3102
|
...props
|
|
3050
3103
|
}) {
|
|
3051
3104
|
return /* @__PURE__ */ jsxs10("div", { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [
|
|
3052
|
-
/* @__PURE__ */
|
|
3053
|
-
/* @__PURE__ */
|
|
3105
|
+
/* @__PURE__ */ jsx37("div", { "data-slot": "scroll-area-viewport", className: SCROLL_AREA_VIEWPORT, children }),
|
|
3106
|
+
/* @__PURE__ */ jsx37(ScrollBar, {})
|
|
3054
3107
|
] });
|
|
3055
3108
|
}
|
|
3056
3109
|
function ScrollBar({
|
|
@@ -3058,20 +3111,20 @@ function ScrollBar({
|
|
|
3058
3111
|
orientation = "vertical",
|
|
3059
3112
|
...props
|
|
3060
3113
|
}) {
|
|
3061
|
-
return /* @__PURE__ */
|
|
3114
|
+
return /* @__PURE__ */ jsx37(
|
|
3062
3115
|
"div",
|
|
3063
3116
|
{
|
|
3064
3117
|
"data-slot": "scroll-area-scrollbar",
|
|
3065
3118
|
"data-orientation": orientation,
|
|
3066
3119
|
className: cn(SCROLLBAR_BASE, scrollBarOrientations[orientation], className),
|
|
3067
3120
|
...props,
|
|
3068
|
-
children: /* @__PURE__ */
|
|
3121
|
+
children: /* @__PURE__ */ jsx37("div", { "data-slot": "scroll-area-thumb", className: SCROLL_AREA_THUMB })
|
|
3069
3122
|
}
|
|
3070
3123
|
);
|
|
3071
3124
|
}
|
|
3072
3125
|
|
|
3073
3126
|
// src/components/sidebar.tsx
|
|
3074
|
-
import * as
|
|
3127
|
+
import * as React48 from "react";
|
|
3075
3128
|
|
|
3076
3129
|
// src/generated/sidebar.ts
|
|
3077
3130
|
var SIDEBAR_MENU_BUTTON_BASE = "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-ring transition-[width,height,padding] hover:bg-hover hover:text-ink focus-visible:ring-2 active:bg-hover active:text-ink disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-hover data-[active=true]:font-medium data-[active=true]:text-ink data-[state=open]:hover:bg-hover data-[state=open]:hover:text-ink group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0";
|
|
@@ -3097,12 +3150,12 @@ var SIDEBAR_MENU = "flex w-full min-w-0 flex-col gap-1";
|
|
|
3097
3150
|
var SIDEBAR_MENU_ITEM = "group/menu-item relative";
|
|
3098
3151
|
|
|
3099
3152
|
// src/components/sidebar.tsx
|
|
3100
|
-
import { jsx as
|
|
3153
|
+
import { jsx as jsx38, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3101
3154
|
var SIDEBAR_WIDTH = "16rem";
|
|
3102
3155
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
3103
|
-
var SidebarContext =
|
|
3156
|
+
var SidebarContext = React48.createContext(null);
|
|
3104
3157
|
function useSidebar() {
|
|
3105
|
-
const ctx =
|
|
3158
|
+
const ctx = React48.useContext(SidebarContext);
|
|
3106
3159
|
if (!ctx) throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
3107
3160
|
return ctx;
|
|
3108
3161
|
}
|
|
@@ -3120,16 +3173,16 @@ function SidebarProvider({
|
|
|
3120
3173
|
defaultValue: defaultOpen,
|
|
3121
3174
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3122
3175
|
});
|
|
3123
|
-
const toggleSidebar =
|
|
3176
|
+
const toggleSidebar = React48.useCallback(
|
|
3124
3177
|
() => setOpen(!open),
|
|
3125
3178
|
[open, setOpen]
|
|
3126
3179
|
);
|
|
3127
3180
|
const state = open ? "expanded" : "collapsed";
|
|
3128
|
-
const contextValue =
|
|
3181
|
+
const contextValue = React48.useMemo(
|
|
3129
3182
|
() => ({ state, open, setOpen, toggleSidebar }),
|
|
3130
3183
|
[state, open, setOpen, toggleSidebar]
|
|
3131
3184
|
);
|
|
3132
|
-
return /* @__PURE__ */
|
|
3185
|
+
return /* @__PURE__ */ jsx38(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx38(
|
|
3133
3186
|
"div",
|
|
3134
3187
|
{
|
|
3135
3188
|
"data-slot": "sidebar-wrapper",
|
|
@@ -3154,7 +3207,7 @@ function Sidebar({
|
|
|
3154
3207
|
}) {
|
|
3155
3208
|
const { state } = useSidebar();
|
|
3156
3209
|
if (collapsible === "none") {
|
|
3157
|
-
return /* @__PURE__ */
|
|
3210
|
+
return /* @__PURE__ */ jsx38(
|
|
3158
3211
|
"div",
|
|
3159
3212
|
{
|
|
3160
3213
|
"data-slot": "sidebar",
|
|
@@ -3164,7 +3217,7 @@ function Sidebar({
|
|
|
3164
3217
|
}
|
|
3165
3218
|
);
|
|
3166
3219
|
}
|
|
3167
|
-
return /* @__PURE__ */
|
|
3220
|
+
return /* @__PURE__ */ jsx38(
|
|
3168
3221
|
"div",
|
|
3169
3222
|
{
|
|
3170
3223
|
className: "group peer text-ink hidden md:block",
|
|
@@ -3173,7 +3226,7 @@ function Sidebar({
|
|
|
3173
3226
|
"data-variant": variant,
|
|
3174
3227
|
"data-side": side,
|
|
3175
3228
|
"data-slot": "sidebar",
|
|
3176
|
-
children: /* @__PURE__ */
|
|
3229
|
+
children: /* @__PURE__ */ jsx38(
|
|
3177
3230
|
"div",
|
|
3178
3231
|
{
|
|
3179
3232
|
"data-slot": "sidebar-inner",
|
|
@@ -3207,7 +3260,7 @@ function SidebarTrigger({
|
|
|
3207
3260
|
...props,
|
|
3208
3261
|
children: [
|
|
3209
3262
|
children,
|
|
3210
|
-
/* @__PURE__ */
|
|
3263
|
+
/* @__PURE__ */ jsx38("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
3211
3264
|
]
|
|
3212
3265
|
}
|
|
3213
3266
|
);
|
|
@@ -3217,7 +3270,7 @@ function SidebarRail({
|
|
|
3217
3270
|
...props
|
|
3218
3271
|
}) {
|
|
3219
3272
|
const { toggleSidebar } = useSidebar();
|
|
3220
|
-
return /* @__PURE__ */
|
|
3273
|
+
return /* @__PURE__ */ jsx38(
|
|
3221
3274
|
"button",
|
|
3222
3275
|
{
|
|
3223
3276
|
type: "button",
|
|
@@ -3233,7 +3286,7 @@ function SidebarRail({
|
|
|
3233
3286
|
);
|
|
3234
3287
|
}
|
|
3235
3288
|
function SidebarInset({ className, ...props }) {
|
|
3236
|
-
return /* @__PURE__ */
|
|
3289
|
+
return /* @__PURE__ */ jsx38(
|
|
3237
3290
|
"main",
|
|
3238
3291
|
{
|
|
3239
3292
|
"data-slot": "sidebar-inset",
|
|
@@ -3243,7 +3296,7 @@ function SidebarInset({ className, ...props }) {
|
|
|
3243
3296
|
);
|
|
3244
3297
|
}
|
|
3245
3298
|
function SidebarHeader({ className, ...props }) {
|
|
3246
|
-
return /* @__PURE__ */
|
|
3299
|
+
return /* @__PURE__ */ jsx38(
|
|
3247
3300
|
"div",
|
|
3248
3301
|
{
|
|
3249
3302
|
"data-slot": "sidebar-header",
|
|
@@ -3254,7 +3307,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
3254
3307
|
);
|
|
3255
3308
|
}
|
|
3256
3309
|
function SidebarFooter({ className, ...props }) {
|
|
3257
|
-
return /* @__PURE__ */
|
|
3310
|
+
return /* @__PURE__ */ jsx38(
|
|
3258
3311
|
"div",
|
|
3259
3312
|
{
|
|
3260
3313
|
"data-slot": "sidebar-footer",
|
|
@@ -3268,7 +3321,7 @@ function SidebarSeparator({
|
|
|
3268
3321
|
className,
|
|
3269
3322
|
...props
|
|
3270
3323
|
}) {
|
|
3271
|
-
return /* @__PURE__ */
|
|
3324
|
+
return /* @__PURE__ */ jsx38(
|
|
3272
3325
|
"div",
|
|
3273
3326
|
{
|
|
3274
3327
|
"data-slot": "sidebar-separator",
|
|
@@ -3280,7 +3333,7 @@ function SidebarSeparator({
|
|
|
3280
3333
|
);
|
|
3281
3334
|
}
|
|
3282
3335
|
function SidebarContent({ className, ...props }) {
|
|
3283
|
-
return /* @__PURE__ */
|
|
3336
|
+
return /* @__PURE__ */ jsx38(
|
|
3284
3337
|
"div",
|
|
3285
3338
|
{
|
|
3286
3339
|
"data-slot": "sidebar-content",
|
|
@@ -3291,7 +3344,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
3291
3344
|
);
|
|
3292
3345
|
}
|
|
3293
3346
|
function SidebarGroup({ className, ...props }) {
|
|
3294
|
-
return /* @__PURE__ */
|
|
3347
|
+
return /* @__PURE__ */ jsx38(
|
|
3295
3348
|
"div",
|
|
3296
3349
|
{
|
|
3297
3350
|
"data-slot": "sidebar-group",
|
|
@@ -3307,7 +3360,7 @@ function SidebarGroupLabel({
|
|
|
3307
3360
|
...props
|
|
3308
3361
|
}) {
|
|
3309
3362
|
const Comp = asChild ? Slot : "div";
|
|
3310
|
-
return /* @__PURE__ */
|
|
3363
|
+
return /* @__PURE__ */ jsx38(
|
|
3311
3364
|
Comp,
|
|
3312
3365
|
{
|
|
3313
3366
|
"data-slot": "sidebar-group-label",
|
|
@@ -3321,7 +3374,7 @@ function SidebarGroupContent({
|
|
|
3321
3374
|
className,
|
|
3322
3375
|
...props
|
|
3323
3376
|
}) {
|
|
3324
|
-
return /* @__PURE__ */
|
|
3377
|
+
return /* @__PURE__ */ jsx38(
|
|
3325
3378
|
"div",
|
|
3326
3379
|
{
|
|
3327
3380
|
"data-slot": "sidebar-group-content",
|
|
@@ -3332,7 +3385,7 @@ function SidebarGroupContent({
|
|
|
3332
3385
|
);
|
|
3333
3386
|
}
|
|
3334
3387
|
function SidebarMenu({ className, ...props }) {
|
|
3335
|
-
return /* @__PURE__ */
|
|
3388
|
+
return /* @__PURE__ */ jsx38(
|
|
3336
3389
|
"ul",
|
|
3337
3390
|
{
|
|
3338
3391
|
"data-slot": "sidebar-menu",
|
|
@@ -3343,7 +3396,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
3343
3396
|
);
|
|
3344
3397
|
}
|
|
3345
3398
|
function SidebarMenuItem({ className, ...props }) {
|
|
3346
|
-
return /* @__PURE__ */
|
|
3399
|
+
return /* @__PURE__ */ jsx38(
|
|
3347
3400
|
"li",
|
|
3348
3401
|
{
|
|
3349
3402
|
"data-slot": "sidebar-menu-item",
|
|
@@ -3362,7 +3415,7 @@ function SidebarMenuButton({
|
|
|
3362
3415
|
...props
|
|
3363
3416
|
}) {
|
|
3364
3417
|
const Comp = asChild ? Slot : "button";
|
|
3365
|
-
return /* @__PURE__ */
|
|
3418
|
+
return /* @__PURE__ */ jsx38(
|
|
3366
3419
|
Comp,
|
|
3367
3420
|
{
|
|
3368
3421
|
"data-slot": "sidebar-menu-button",
|
|
@@ -3381,7 +3434,7 @@ function SidebarMenuButton({
|
|
|
3381
3434
|
}
|
|
3382
3435
|
|
|
3383
3436
|
// src/components/carousel.tsx
|
|
3384
|
-
import * as
|
|
3437
|
+
import * as React49 from "react";
|
|
3385
3438
|
|
|
3386
3439
|
// src/generated/carousel.ts
|
|
3387
3440
|
var CAROUSEL_CONTENT_VIEWPORT = "overflow-hidden";
|
|
@@ -3400,10 +3453,10 @@ var CAROUSEL_EDGE_FADE_PREV = "pointer-events-none absolute inset-y-0 left-0 w-2
|
|
|
3400
3453
|
var CAROUSEL_EDGE_FADE_NEXT = "pointer-events-none absolute inset-y-0 right-0 w-24 bg-gradient-to-l from-background/45 via-background/20 to-transparent";
|
|
3401
3454
|
|
|
3402
3455
|
// src/components/carousel.tsx
|
|
3403
|
-
import { Fragment as Fragment4, jsx as
|
|
3404
|
-
var CarouselContext =
|
|
3456
|
+
import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3457
|
+
var CarouselContext = React49.createContext(null);
|
|
3405
3458
|
function useCarousel() {
|
|
3406
|
-
const context =
|
|
3459
|
+
const context = React49.useContext(CarouselContext);
|
|
3407
3460
|
if (!context) {
|
|
3408
3461
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
3409
3462
|
}
|
|
@@ -3424,13 +3477,13 @@ function Carousel({
|
|
|
3424
3477
|
defaultValue: defaultIndex,
|
|
3425
3478
|
onChange: onIndexChange
|
|
3426
3479
|
});
|
|
3427
|
-
const [count, setCount] =
|
|
3480
|
+
const [count, setCount] = React49.useState(0);
|
|
3428
3481
|
const canScrollPrev = index > 0;
|
|
3429
3482
|
const canScrollNext = index < count - 1;
|
|
3430
|
-
const scrollPrev =
|
|
3483
|
+
const scrollPrev = React49.useCallback(() => {
|
|
3431
3484
|
if (index > 0) setIndex(index - 1);
|
|
3432
3485
|
}, [index, setIndex]);
|
|
3433
|
-
const scrollNext =
|
|
3486
|
+
const scrollNext = React49.useCallback(() => {
|
|
3434
3487
|
if (index < count - 1) setIndex(index + 1);
|
|
3435
3488
|
}, [index, count, setIndex]);
|
|
3436
3489
|
const handleKeyDown = (event) => {
|
|
@@ -3443,7 +3496,7 @@ function Carousel({
|
|
|
3443
3496
|
}
|
|
3444
3497
|
onKeyDown?.(event);
|
|
3445
3498
|
};
|
|
3446
|
-
return /* @__PURE__ */
|
|
3499
|
+
return /* @__PURE__ */ jsx39(
|
|
3447
3500
|
CarouselContext.Provider,
|
|
3448
3501
|
{
|
|
3449
3502
|
value: {
|
|
@@ -3456,7 +3509,7 @@ function Carousel({
|
|
|
3456
3509
|
canScrollPrev,
|
|
3457
3510
|
canScrollNext
|
|
3458
3511
|
},
|
|
3459
|
-
children: /* @__PURE__ */
|
|
3512
|
+
children: /* @__PURE__ */ jsx39(
|
|
3460
3513
|
"div",
|
|
3461
3514
|
{
|
|
3462
3515
|
onKeyDownCapture: handleKeyDown,
|
|
@@ -3478,12 +3531,12 @@ function CarouselContent({
|
|
|
3478
3531
|
...props
|
|
3479
3532
|
}) {
|
|
3480
3533
|
const { orientation, index, setCount } = useCarousel();
|
|
3481
|
-
const childCount =
|
|
3482
|
-
|
|
3534
|
+
const childCount = React49.Children.count(children);
|
|
3535
|
+
React49.useEffect(() => {
|
|
3483
3536
|
setCount(childCount);
|
|
3484
3537
|
}, [childCount, setCount]);
|
|
3485
3538
|
const transform = orientation === "horizontal" ? `translate3d(-${index * 100}%, 0, 0)` : `translate3d(0, -${index * 100}%, 0)`;
|
|
3486
|
-
return /* @__PURE__ */
|
|
3539
|
+
return /* @__PURE__ */ jsx39("div", { className: CAROUSEL_CONTENT_VIEWPORT, "data-slot": "carousel-content", children: /* @__PURE__ */ jsx39(
|
|
3487
3540
|
"div",
|
|
3488
3541
|
{
|
|
3489
3542
|
className: cn(
|
|
@@ -3502,7 +3555,7 @@ function CarouselItem({
|
|
|
3502
3555
|
...props
|
|
3503
3556
|
}) {
|
|
3504
3557
|
const { orientation } = useCarousel();
|
|
3505
|
-
return /* @__PURE__ */
|
|
3558
|
+
return /* @__PURE__ */ jsx39(
|
|
3506
3559
|
"div",
|
|
3507
3560
|
{
|
|
3508
3561
|
role: "group",
|
|
@@ -3522,7 +3575,7 @@ function CarouselEdgeFade({
|
|
|
3522
3575
|
}) {
|
|
3523
3576
|
const { canScrollPrev, canScrollNext } = useCarousel();
|
|
3524
3577
|
return /* @__PURE__ */ jsxs12(Fragment4, { children: [
|
|
3525
|
-
/* @__PURE__ */
|
|
3578
|
+
/* @__PURE__ */ jsx39(
|
|
3526
3579
|
"div",
|
|
3527
3580
|
{
|
|
3528
3581
|
"aria-hidden": true,
|
|
@@ -3533,7 +3586,7 @@ function CarouselEdgeFade({
|
|
|
3533
3586
|
)
|
|
3534
3587
|
}
|
|
3535
3588
|
),
|
|
3536
|
-
/* @__PURE__ */
|
|
3589
|
+
/* @__PURE__ */ jsx39(
|
|
3537
3590
|
"div",
|
|
3538
3591
|
{
|
|
3539
3592
|
"aria-hidden": true,
|
|
@@ -3549,7 +3602,8 @@ function CarouselEdgeFade({
|
|
|
3549
3602
|
function CarouselPrevious({
|
|
3550
3603
|
className,
|
|
3551
3604
|
variant = "outline",
|
|
3552
|
-
size = "
|
|
3605
|
+
size = "md",
|
|
3606
|
+
icon = true,
|
|
3553
3607
|
...props
|
|
3554
3608
|
}) {
|
|
3555
3609
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
@@ -3559,6 +3613,7 @@ function CarouselPrevious({
|
|
|
3559
3613
|
"data-slot": "carousel-previous",
|
|
3560
3614
|
variant,
|
|
3561
3615
|
size,
|
|
3616
|
+
icon,
|
|
3562
3617
|
className: cn(
|
|
3563
3618
|
CAROUSEL_NAV,
|
|
3564
3619
|
orientation === "horizontal" ? CAROUSEL_PREVIOUS_HORIZONTAL : CAROUSEL_PREVIOUS_VERTICAL,
|
|
@@ -3568,7 +3623,7 @@ function CarouselPrevious({
|
|
|
3568
3623
|
onClick: scrollPrev,
|
|
3569
3624
|
...props,
|
|
3570
3625
|
children: [
|
|
3571
|
-
/* @__PURE__ */
|
|
3626
|
+
/* @__PURE__ */ jsx39(
|
|
3572
3627
|
"svg",
|
|
3573
3628
|
{
|
|
3574
3629
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3579,10 +3634,10 @@ function CarouselPrevious({
|
|
|
3579
3634
|
strokeLinecap: "round",
|
|
3580
3635
|
strokeLinejoin: "round",
|
|
3581
3636
|
"aria-hidden": "true",
|
|
3582
|
-
children: /* @__PURE__ */
|
|
3637
|
+
children: /* @__PURE__ */ jsx39("path", { d: "m15 18-6-6 6-6" })
|
|
3583
3638
|
}
|
|
3584
3639
|
),
|
|
3585
|
-
/* @__PURE__ */
|
|
3640
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Previous slide" })
|
|
3586
3641
|
]
|
|
3587
3642
|
}
|
|
3588
3643
|
);
|
|
@@ -3590,7 +3645,8 @@ function CarouselPrevious({
|
|
|
3590
3645
|
function CarouselNext({
|
|
3591
3646
|
className,
|
|
3592
3647
|
variant = "outline",
|
|
3593
|
-
size = "
|
|
3648
|
+
size = "md",
|
|
3649
|
+
icon = true,
|
|
3594
3650
|
...props
|
|
3595
3651
|
}) {
|
|
3596
3652
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
@@ -3600,6 +3656,7 @@ function CarouselNext({
|
|
|
3600
3656
|
"data-slot": "carousel-next",
|
|
3601
3657
|
variant,
|
|
3602
3658
|
size,
|
|
3659
|
+
icon,
|
|
3603
3660
|
className: cn(
|
|
3604
3661
|
CAROUSEL_NAV,
|
|
3605
3662
|
orientation === "horizontal" ? CAROUSEL_NEXT_HORIZONTAL : CAROUSEL_NEXT_VERTICAL,
|
|
@@ -3609,7 +3666,7 @@ function CarouselNext({
|
|
|
3609
3666
|
onClick: scrollNext,
|
|
3610
3667
|
...props,
|
|
3611
3668
|
children: [
|
|
3612
|
-
/* @__PURE__ */
|
|
3669
|
+
/* @__PURE__ */ jsx39(
|
|
3613
3670
|
"svg",
|
|
3614
3671
|
{
|
|
3615
3672
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3620,17 +3677,17 @@ function CarouselNext({
|
|
|
3620
3677
|
strokeLinecap: "round",
|
|
3621
3678
|
strokeLinejoin: "round",
|
|
3622
3679
|
"aria-hidden": "true",
|
|
3623
|
-
children: /* @__PURE__ */
|
|
3680
|
+
children: /* @__PURE__ */ jsx39("path", { d: "m9 18 6-6-6-6" })
|
|
3624
3681
|
}
|
|
3625
3682
|
),
|
|
3626
|
-
/* @__PURE__ */
|
|
3683
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Next slide" })
|
|
3627
3684
|
]
|
|
3628
3685
|
}
|
|
3629
3686
|
);
|
|
3630
3687
|
}
|
|
3631
3688
|
|
|
3632
3689
|
// src/components/input-otp.tsx
|
|
3633
|
-
import * as
|
|
3690
|
+
import * as React50 from "react";
|
|
3634
3691
|
|
|
3635
3692
|
// src/generated/input-otp.ts
|
|
3636
3693
|
var INPUT_OTP_CONTAINER = "relative flex items-center gap-2 has-disabled:opacity-50";
|
|
@@ -3641,10 +3698,10 @@ var INPUT_OTP_SLOT_CARET_WRAPPER = "pointer-events-none absolute inset-0 flex it
|
|
|
3641
3698
|
var INPUT_OTP_SLOT_CARET = "animate-caret-blink bg-ink h-4 w-px duration-1000";
|
|
3642
3699
|
|
|
3643
3700
|
// src/components/input-otp.tsx
|
|
3644
|
-
import { jsx as
|
|
3645
|
-
var InputOTPContext =
|
|
3701
|
+
import { jsx as jsx40, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3702
|
+
var InputOTPContext = React50.createContext(null);
|
|
3646
3703
|
function useInputOTP() {
|
|
3647
|
-
const context =
|
|
3704
|
+
const context = React50.useContext(InputOTPContext);
|
|
3648
3705
|
if (!context) {
|
|
3649
3706
|
throw new Error("InputOTP slots must be used within an <InputOTP />");
|
|
3650
3707
|
}
|
|
@@ -3666,16 +3723,16 @@ function InputOTP({
|
|
|
3666
3723
|
defaultValue,
|
|
3667
3724
|
onChange
|
|
3668
3725
|
});
|
|
3669
|
-
const [focused, setFocused] =
|
|
3726
|
+
const [focused, setFocused] = React50.useState(false);
|
|
3670
3727
|
const activeIndex = focused ? Math.min(value.length, maxLength - 1) : -1;
|
|
3671
|
-
return /* @__PURE__ */
|
|
3728
|
+
return /* @__PURE__ */ jsx40(InputOTPContext.Provider, { value: { value, maxLength, activeIndex }, children: /* @__PURE__ */ jsxs13(
|
|
3672
3729
|
"div",
|
|
3673
3730
|
{
|
|
3674
3731
|
"data-slot": "input-otp",
|
|
3675
3732
|
className: cn(INPUT_OTP_CONTAINER, containerClassName),
|
|
3676
3733
|
children: [
|
|
3677
3734
|
children,
|
|
3678
|
-
/* @__PURE__ */
|
|
3735
|
+
/* @__PURE__ */ jsx40(
|
|
3679
3736
|
"input",
|
|
3680
3737
|
{
|
|
3681
3738
|
inputMode: "numeric",
|
|
@@ -3698,7 +3755,7 @@ function InputOTPGroup({
|
|
|
3698
3755
|
className,
|
|
3699
3756
|
...props
|
|
3700
3757
|
}) {
|
|
3701
|
-
return /* @__PURE__ */
|
|
3758
|
+
return /* @__PURE__ */ jsx40(
|
|
3702
3759
|
"div",
|
|
3703
3760
|
{
|
|
3704
3761
|
"data-slot": "input-otp-group",
|
|
@@ -3721,13 +3778,13 @@ function InputOTPSlot({ index, className, ...props }) {
|
|
|
3721
3778
|
...props,
|
|
3722
3779
|
children: [
|
|
3723
3780
|
char,
|
|
3724
|
-
hasFakeCaret && /* @__PURE__ */
|
|
3781
|
+
hasFakeCaret && /* @__PURE__ */ jsx40("div", { className: INPUT_OTP_SLOT_CARET_WRAPPER, children: /* @__PURE__ */ jsx40("div", { className: INPUT_OTP_SLOT_CARET }) })
|
|
3725
3782
|
]
|
|
3726
3783
|
}
|
|
3727
3784
|
);
|
|
3728
3785
|
}
|
|
3729
3786
|
function InputOTPSeparator({ ...props }) {
|
|
3730
|
-
return /* @__PURE__ */
|
|
3787
|
+
return /* @__PURE__ */ jsx40("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx40(
|
|
3731
3788
|
"svg",
|
|
3732
3789
|
{
|
|
3733
3790
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3738,27 +3795,27 @@ function InputOTPSeparator({ ...props }) {
|
|
|
3738
3795
|
strokeLinecap: "round",
|
|
3739
3796
|
strokeLinejoin: "round",
|
|
3740
3797
|
"aria-hidden": "true",
|
|
3741
|
-
children: /* @__PURE__ */
|
|
3798
|
+
children: /* @__PURE__ */ jsx40("path", { d: "M5 12h14" })
|
|
3742
3799
|
}
|
|
3743
3800
|
) });
|
|
3744
3801
|
}
|
|
3745
3802
|
|
|
3746
3803
|
// src/components/tooltip.tsx
|
|
3747
|
-
import * as
|
|
3804
|
+
import * as React51 from "react";
|
|
3748
3805
|
|
|
3749
3806
|
// src/generated/tooltip.ts
|
|
3750
3807
|
var TOOLTIP_CONTENT = "bg-ink text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance";
|
|
3751
3808
|
|
|
3752
3809
|
// src/components/tooltip.tsx
|
|
3753
|
-
import { Fragment as Fragment5, jsx as
|
|
3754
|
-
var TooltipContext =
|
|
3810
|
+
import { Fragment as Fragment5, jsx as jsx41 } from "react/jsx-runtime";
|
|
3811
|
+
var TooltipContext = React51.createContext(null);
|
|
3755
3812
|
function useTooltip() {
|
|
3756
|
-
const ctx =
|
|
3813
|
+
const ctx = React51.useContext(TooltipContext);
|
|
3757
3814
|
if (!ctx) throw new Error("Tooltip parts must be used within <Tooltip>");
|
|
3758
3815
|
return ctx;
|
|
3759
3816
|
}
|
|
3760
3817
|
function TooltipProvider({ children }) {
|
|
3761
|
-
return /* @__PURE__ */
|
|
3818
|
+
return /* @__PURE__ */ jsx41(Fragment5, { children });
|
|
3762
3819
|
}
|
|
3763
3820
|
function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
|
|
3764
3821
|
const [isOpen, setOpen] = useControllableState({
|
|
@@ -3766,8 +3823,8 @@ function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
3766
3823
|
defaultValue: defaultOpen,
|
|
3767
3824
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3768
3825
|
});
|
|
3769
|
-
const anchorRef =
|
|
3770
|
-
return /* @__PURE__ */
|
|
3826
|
+
const anchorRef = React51.useRef(null);
|
|
3827
|
+
return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41(TooltipContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children }) });
|
|
3771
3828
|
}
|
|
3772
3829
|
function TooltipTrigger({
|
|
3773
3830
|
asChild = false,
|
|
@@ -3779,7 +3836,7 @@ function TooltipTrigger({
|
|
|
3779
3836
|
}) {
|
|
3780
3837
|
const { setOpen, anchorRef } = useTooltip();
|
|
3781
3838
|
const Comp = asChild ? Slot : "button";
|
|
3782
|
-
return /* @__PURE__ */
|
|
3839
|
+
return /* @__PURE__ */ jsx41(
|
|
3783
3840
|
Comp,
|
|
3784
3841
|
{
|
|
3785
3842
|
"data-slot": "tooltip-trigger",
|
|
@@ -3820,7 +3877,7 @@ function TooltipContent({
|
|
|
3820
3877
|
offset: sideOffset
|
|
3821
3878
|
});
|
|
3822
3879
|
if (!isPresent) return null;
|
|
3823
|
-
return /* @__PURE__ */
|
|
3880
|
+
return /* @__PURE__ */ jsx41(Portal, { children: /* @__PURE__ */ jsx41(
|
|
3824
3881
|
"div",
|
|
3825
3882
|
{
|
|
3826
3883
|
"data-slot": "tooltip-content",
|
|
@@ -3837,16 +3894,16 @@ function TooltipContent({
|
|
|
3837
3894
|
}
|
|
3838
3895
|
|
|
3839
3896
|
// src/components/popover.tsx
|
|
3840
|
-
import * as
|
|
3897
|
+
import * as React52 from "react";
|
|
3841
3898
|
|
|
3842
3899
|
// src/generated/popover.ts
|
|
3843
3900
|
var POPOVER_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-hidden";
|
|
3844
3901
|
|
|
3845
3902
|
// src/components/popover.tsx
|
|
3846
|
-
import { jsx as
|
|
3847
|
-
var PopoverContext =
|
|
3903
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
3904
|
+
var PopoverContext = React52.createContext(null);
|
|
3848
3905
|
function usePopover() {
|
|
3849
|
-
const ctx =
|
|
3906
|
+
const ctx = React52.useContext(PopoverContext);
|
|
3850
3907
|
if (!ctx) throw new Error("Popover parts must be used within <Popover>");
|
|
3851
3908
|
return ctx;
|
|
3852
3909
|
}
|
|
@@ -3856,13 +3913,13 @@ function Popover({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
3856
3913
|
defaultValue: defaultOpen,
|
|
3857
3914
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3858
3915
|
});
|
|
3859
|
-
const anchorRef =
|
|
3860
|
-
return /* @__PURE__ */
|
|
3916
|
+
const anchorRef = React52.useRef(null);
|
|
3917
|
+
return /* @__PURE__ */ jsx42(PopoverContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
|
|
3861
3918
|
}
|
|
3862
3919
|
function PopoverTrigger({ asChild = false, onClick, ...props }) {
|
|
3863
3920
|
const { open, setOpen, anchorRef } = usePopover();
|
|
3864
3921
|
const Comp = asChild ? Slot : "button";
|
|
3865
|
-
return /* @__PURE__ */
|
|
3922
|
+
return /* @__PURE__ */ jsx42(
|
|
3866
3923
|
Comp,
|
|
3867
3924
|
{
|
|
3868
3925
|
"data-slot": "popover-trigger",
|
|
@@ -3879,7 +3936,7 @@ function PopoverTrigger({ asChild = false, onClick, ...props }) {
|
|
|
3879
3936
|
function PopoverAnchor({ asChild = false, ...props }) {
|
|
3880
3937
|
const { anchorRef } = usePopover();
|
|
3881
3938
|
const Comp = asChild ? Slot : "div";
|
|
3882
|
-
return /* @__PURE__ */
|
|
3939
|
+
return /* @__PURE__ */ jsx42(
|
|
3883
3940
|
Comp,
|
|
3884
3941
|
{
|
|
3885
3942
|
"data-slot": "popover-anchor",
|
|
@@ -3911,7 +3968,7 @@ function PopoverContent({
|
|
|
3911
3968
|
exclude: [anchorRef]
|
|
3912
3969
|
});
|
|
3913
3970
|
if (!isPresent) return null;
|
|
3914
|
-
return /* @__PURE__ */
|
|
3971
|
+
return /* @__PURE__ */ jsx42(Portal, { children: /* @__PURE__ */ jsx42(
|
|
3915
3972
|
"div",
|
|
3916
3973
|
{
|
|
3917
3974
|
"data-slot": "popover-content",
|
|
@@ -3931,11 +3988,11 @@ function PopoverContent({
|
|
|
3931
3988
|
}
|
|
3932
3989
|
|
|
3933
3990
|
// src/components/info-tip.tsx
|
|
3934
|
-
import * as
|
|
3935
|
-
import { jsx as
|
|
3936
|
-
var InfoTipContext =
|
|
3991
|
+
import * as React53 from "react";
|
|
3992
|
+
import { jsx as jsx43, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3993
|
+
var InfoTipContext = React53.createContext(null);
|
|
3937
3994
|
function useInfoTip() {
|
|
3938
|
-
const ctx =
|
|
3995
|
+
const ctx = React53.useContext(InfoTipContext);
|
|
3939
3996
|
if (!ctx) throw new Error("InfoTip parts must be used within <InfoTip>");
|
|
3940
3997
|
return ctx;
|
|
3941
3998
|
}
|
|
@@ -3950,9 +4007,9 @@ function InfoTip({
|
|
|
3950
4007
|
defaultValue: defaultOpen,
|
|
3951
4008
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3952
4009
|
});
|
|
3953
|
-
const anchorRef =
|
|
3954
|
-
const contentId =
|
|
3955
|
-
return /* @__PURE__ */
|
|
4010
|
+
const anchorRef = React53.useRef(null);
|
|
4011
|
+
const contentId = React53.useId();
|
|
4012
|
+
return /* @__PURE__ */ jsx43(
|
|
3956
4013
|
InfoTipContext.Provider,
|
|
3957
4014
|
{
|
|
3958
4015
|
value: { open: isOpen, setOpen, anchorRef, contentId },
|
|
@@ -3973,9 +4030,9 @@ function InfoGlyph2({ className }) {
|
|
|
3973
4030
|
"aria-hidden": true,
|
|
3974
4031
|
className: cn("size-4", className),
|
|
3975
4032
|
children: [
|
|
3976
|
-
/* @__PURE__ */
|
|
3977
|
-
/* @__PURE__ */
|
|
3978
|
-
/* @__PURE__ */
|
|
4033
|
+
/* @__PURE__ */ jsx43("circle", { cx: "12", cy: "12", r: "10" }),
|
|
4034
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 16v-4" }),
|
|
4035
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 8h.01" })
|
|
3979
4036
|
]
|
|
3980
4037
|
}
|
|
3981
4038
|
);
|
|
@@ -3999,7 +4056,7 @@ function InfoTipTrigger({
|
|
|
3999
4056
|
openDelay: hoverDelay
|
|
4000
4057
|
});
|
|
4001
4058
|
const Comp = asChild ? Slot : "button";
|
|
4002
|
-
return /* @__PURE__ */
|
|
4059
|
+
return /* @__PURE__ */ jsx43(
|
|
4003
4060
|
Comp,
|
|
4004
4061
|
{
|
|
4005
4062
|
"data-slot": "info-tip-trigger",
|
|
@@ -4030,7 +4087,7 @@ function InfoTipTrigger({
|
|
|
4030
4087
|
hover.onPointerLeave(e);
|
|
4031
4088
|
},
|
|
4032
4089
|
...props,
|
|
4033
|
-
children: children ?? /* @__PURE__ */
|
|
4090
|
+
children: children ?? /* @__PURE__ */ jsx43(InfoGlyph2, {})
|
|
4034
4091
|
}
|
|
4035
4092
|
);
|
|
4036
4093
|
}
|
|
@@ -4057,7 +4114,7 @@ function InfoTipContent({
|
|
|
4057
4114
|
exclude: [anchorRef]
|
|
4058
4115
|
});
|
|
4059
4116
|
if (!isPresent) return null;
|
|
4060
|
-
return /* @__PURE__ */
|
|
4117
|
+
return /* @__PURE__ */ jsx43(Portal, { children: /* @__PURE__ */ jsx43(
|
|
4061
4118
|
"div",
|
|
4062
4119
|
{
|
|
4063
4120
|
id: contentId,
|
|
@@ -4077,16 +4134,16 @@ function InfoTipContent({
|
|
|
4077
4134
|
}
|
|
4078
4135
|
|
|
4079
4136
|
// src/components/hover-card.tsx
|
|
4080
|
-
import * as
|
|
4137
|
+
import * as React54 from "react";
|
|
4081
4138
|
|
|
4082
4139
|
// src/generated/hover-card.ts
|
|
4083
4140
|
var HOVER_CARD_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 rounded-md border p-4 shadow-md outline-hidden";
|
|
4084
4141
|
|
|
4085
4142
|
// src/components/hover-card.tsx
|
|
4086
|
-
import { jsx as
|
|
4087
|
-
var HoverCardContext =
|
|
4143
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
4144
|
+
var HoverCardContext = React54.createContext(null);
|
|
4088
4145
|
function useHoverCard() {
|
|
4089
|
-
const ctx =
|
|
4146
|
+
const ctx = React54.useContext(HoverCardContext);
|
|
4090
4147
|
if (!ctx) throw new Error("HoverCard parts must be used within <HoverCard>");
|
|
4091
4148
|
return ctx;
|
|
4092
4149
|
}
|
|
@@ -4096,8 +4153,8 @@ function HoverCard({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4096
4153
|
defaultValue: defaultOpen,
|
|
4097
4154
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4098
4155
|
});
|
|
4099
|
-
const anchorRef =
|
|
4100
|
-
return /* @__PURE__ */
|
|
4156
|
+
const anchorRef = React54.useRef(null);
|
|
4157
|
+
return /* @__PURE__ */ jsx44(HoverCardContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
|
|
4101
4158
|
}
|
|
4102
4159
|
function HoverCardTrigger({
|
|
4103
4160
|
asChild = false,
|
|
@@ -4107,7 +4164,7 @@ function HoverCardTrigger({
|
|
|
4107
4164
|
}) {
|
|
4108
4165
|
const { setOpen, anchorRef } = useHoverCard();
|
|
4109
4166
|
const Comp = asChild ? Slot : "a";
|
|
4110
|
-
return /* @__PURE__ */
|
|
4167
|
+
return /* @__PURE__ */ jsx44(
|
|
4111
4168
|
Comp,
|
|
4112
4169
|
{
|
|
4113
4170
|
"data-slot": "hover-card-trigger",
|
|
@@ -4142,7 +4199,7 @@ function HoverCardContent({
|
|
|
4142
4199
|
offset: sideOffset
|
|
4143
4200
|
});
|
|
4144
4201
|
if (!isPresent) return null;
|
|
4145
|
-
return /* @__PURE__ */
|
|
4202
|
+
return /* @__PURE__ */ jsx44(Portal, { children: /* @__PURE__ */ jsx44(
|
|
4146
4203
|
"div",
|
|
4147
4204
|
{
|
|
4148
4205
|
"data-slot": "hover-card-content",
|
|
@@ -4159,7 +4216,7 @@ function HoverCardContent({
|
|
|
4159
4216
|
}
|
|
4160
4217
|
|
|
4161
4218
|
// src/components/dropdown-menu.tsx
|
|
4162
|
-
import * as
|
|
4219
|
+
import * as React55 from "react";
|
|
4163
4220
|
|
|
4164
4221
|
// src/generated/dropdown-menu.ts
|
|
4165
4222
|
var DROPDOWN_MENU_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md";
|
|
@@ -4173,12 +4230,12 @@ var DROPDOWN_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
|
|
|
4173
4230
|
var DROPDOWN_MENU_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
4174
4231
|
|
|
4175
4232
|
// src/components/dropdown-menu.tsx
|
|
4176
|
-
import { jsx as
|
|
4177
|
-
var DropdownMenuContext =
|
|
4233
|
+
import { jsx as jsx45, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4234
|
+
var DropdownMenuContext = React55.createContext(
|
|
4178
4235
|
null
|
|
4179
4236
|
);
|
|
4180
4237
|
function useDropdownMenu() {
|
|
4181
|
-
const ctx =
|
|
4238
|
+
const ctx = React55.useContext(DropdownMenuContext);
|
|
4182
4239
|
if (!ctx) throw new Error("DropdownMenu parts must be used within <DropdownMenu>");
|
|
4183
4240
|
return ctx;
|
|
4184
4241
|
}
|
|
@@ -4188,16 +4245,16 @@ function DropdownMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4188
4245
|
defaultValue: defaultOpen,
|
|
4189
4246
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4190
4247
|
});
|
|
4191
|
-
const anchorRef =
|
|
4192
|
-
return /* @__PURE__ */
|
|
4248
|
+
const anchorRef = React55.useRef(null);
|
|
4249
|
+
return /* @__PURE__ */ jsx45(DropdownMenuContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu", children }) });
|
|
4193
4250
|
}
|
|
4194
4251
|
function DropdownMenuPortal({ children }) {
|
|
4195
|
-
return /* @__PURE__ */
|
|
4252
|
+
return /* @__PURE__ */ jsx45(Portal, { children });
|
|
4196
4253
|
}
|
|
4197
4254
|
function DropdownMenuTrigger({ asChild = false, onClick, ...props }) {
|
|
4198
4255
|
const { open, setOpen, anchorRef } = useDropdownMenu();
|
|
4199
4256
|
const Comp = asChild ? Slot : "button";
|
|
4200
|
-
return /* @__PURE__ */
|
|
4257
|
+
return /* @__PURE__ */ jsx45(
|
|
4201
4258
|
Comp,
|
|
4202
4259
|
{
|
|
4203
4260
|
"data-slot": "dropdown-menu-trigger",
|
|
@@ -4233,7 +4290,7 @@ function DropdownMenuContent({
|
|
|
4233
4290
|
onDismiss: () => setOpen(false),
|
|
4234
4291
|
exclude: [anchorRef]
|
|
4235
4292
|
});
|
|
4236
|
-
const contentRef =
|
|
4293
|
+
const contentRef = React55.useRef(null);
|
|
4237
4294
|
const items = () => Array.from(
|
|
4238
4295
|
contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
|
|
4239
4296
|
).filter((el) => el.getAttribute("data-disabled") === null);
|
|
@@ -4242,13 +4299,13 @@ function DropdownMenuContent({
|
|
|
4242
4299
|
orientation: "vertical",
|
|
4243
4300
|
loop: true
|
|
4244
4301
|
});
|
|
4245
|
-
|
|
4302
|
+
React55.useEffect(() => {
|
|
4246
4303
|
if (!open) return;
|
|
4247
4304
|
items()[activeIndex]?.focus();
|
|
4248
4305
|
}, [open, activeIndex]);
|
|
4249
|
-
const close =
|
|
4306
|
+
const close = React55.useCallback(() => setOpen(false), [setOpen]);
|
|
4250
4307
|
if (!isPresent) return null;
|
|
4251
|
-
return /* @__PURE__ */
|
|
4308
|
+
return /* @__PURE__ */ jsx45(Portal, { children: /* @__PURE__ */ jsx45(DropdownMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx45(
|
|
4252
4309
|
"div",
|
|
4253
4310
|
{
|
|
4254
4311
|
"data-slot": "dropdown-menu-content",
|
|
@@ -4271,10 +4328,10 @@ function DropdownMenuContent({
|
|
|
4271
4328
|
}
|
|
4272
4329
|
) }) });
|
|
4273
4330
|
}
|
|
4274
|
-
var DropdownMenuCloseContext =
|
|
4331
|
+
var DropdownMenuCloseContext = React55.createContext(() => {
|
|
4275
4332
|
});
|
|
4276
4333
|
function DropdownMenuGroup({ className, ...props }) {
|
|
4277
|
-
return /* @__PURE__ */
|
|
4334
|
+
return /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-group", role: "group", className, ...props });
|
|
4278
4335
|
}
|
|
4279
4336
|
function DropdownMenuItem({
|
|
4280
4337
|
className,
|
|
@@ -4285,8 +4342,8 @@ function DropdownMenuItem({
|
|
|
4285
4342
|
onKeyDown,
|
|
4286
4343
|
...props
|
|
4287
4344
|
}) {
|
|
4288
|
-
const close =
|
|
4289
|
-
return /* @__PURE__ */
|
|
4345
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4346
|
+
return /* @__PURE__ */ jsx45(
|
|
4290
4347
|
"div",
|
|
4291
4348
|
{
|
|
4292
4349
|
"data-slot": "dropdown-menu-item",
|
|
@@ -4323,7 +4380,7 @@ function DropdownMenuCheckboxItem({
|
|
|
4323
4380
|
onClick,
|
|
4324
4381
|
...props
|
|
4325
4382
|
}) {
|
|
4326
|
-
const close =
|
|
4383
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4327
4384
|
return /* @__PURE__ */ jsxs15(
|
|
4328
4385
|
"div",
|
|
4329
4386
|
{
|
|
@@ -4344,13 +4401,13 @@ function DropdownMenuCheckboxItem({
|
|
|
4344
4401
|
},
|
|
4345
4402
|
...props,
|
|
4346
4403
|
children: [
|
|
4347
|
-
/* @__PURE__ */
|
|
4404
|
+
/* @__PURE__ */ jsx45("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx45("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx45("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
|
|
4348
4405
|
children
|
|
4349
4406
|
]
|
|
4350
4407
|
}
|
|
4351
4408
|
);
|
|
4352
4409
|
}
|
|
4353
|
-
var DropdownMenuRadioGroupContext =
|
|
4410
|
+
var DropdownMenuRadioGroupContext = React55.createContext(null);
|
|
4354
4411
|
function DropdownMenuRadioGroup({
|
|
4355
4412
|
className,
|
|
4356
4413
|
value,
|
|
@@ -4358,11 +4415,11 @@ function DropdownMenuRadioGroup({
|
|
|
4358
4415
|
children,
|
|
4359
4416
|
...props
|
|
4360
4417
|
}) {
|
|
4361
|
-
const ctx =
|
|
4418
|
+
const ctx = React55.useMemo(
|
|
4362
4419
|
() => ({ value, setValue: (next) => onValueChange?.(next) }),
|
|
4363
4420
|
[value, onValueChange]
|
|
4364
4421
|
);
|
|
4365
|
-
return /* @__PURE__ */
|
|
4422
|
+
return /* @__PURE__ */ jsx45(DropdownMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-radio-group", role: "group", className, ...props, children }) });
|
|
4366
4423
|
}
|
|
4367
4424
|
function DropdownMenuRadioItem({
|
|
4368
4425
|
className,
|
|
@@ -4372,8 +4429,8 @@ function DropdownMenuRadioItem({
|
|
|
4372
4429
|
onClick,
|
|
4373
4430
|
...props
|
|
4374
4431
|
}) {
|
|
4375
|
-
const close =
|
|
4376
|
-
const group =
|
|
4432
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4433
|
+
const group = React55.useContext(DropdownMenuRadioGroupContext);
|
|
4377
4434
|
const checked = group?.value === value;
|
|
4378
4435
|
return /* @__PURE__ */ jsxs15(
|
|
4379
4436
|
"div",
|
|
@@ -4396,14 +4453,14 @@ function DropdownMenuRadioItem({
|
|
|
4396
4453
|
},
|
|
4397
4454
|
...props,
|
|
4398
4455
|
children: [
|
|
4399
|
-
/* @__PURE__ */
|
|
4456
|
+
/* @__PURE__ */ jsx45("span", { className: DROPDOWN_MENU_ITEM_INDICATOR, children: checked ? /* @__PURE__ */ jsx45("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx45("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
|
|
4400
4457
|
children
|
|
4401
4458
|
]
|
|
4402
4459
|
}
|
|
4403
4460
|
);
|
|
4404
4461
|
}
|
|
4405
4462
|
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
4406
|
-
return /* @__PURE__ */
|
|
4463
|
+
return /* @__PURE__ */ jsx45(
|
|
4407
4464
|
"div",
|
|
4408
4465
|
{
|
|
4409
4466
|
"data-slot": "dropdown-menu-label",
|
|
@@ -4414,7 +4471,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
|
|
|
4414
4471
|
);
|
|
4415
4472
|
}
|
|
4416
4473
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
4417
|
-
return /* @__PURE__ */
|
|
4474
|
+
return /* @__PURE__ */ jsx45(
|
|
4418
4475
|
"div",
|
|
4419
4476
|
{
|
|
4420
4477
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -4425,7 +4482,7 @@ function DropdownMenuSeparator({ className, ...props }) {
|
|
|
4425
4482
|
);
|
|
4426
4483
|
}
|
|
4427
4484
|
function DropdownMenuShortcut({ className, ...props }) {
|
|
4428
|
-
return /* @__PURE__ */
|
|
4485
|
+
return /* @__PURE__ */ jsx45(
|
|
4429
4486
|
"span",
|
|
4430
4487
|
{
|
|
4431
4488
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -4434,17 +4491,17 @@ function DropdownMenuShortcut({ className, ...props }) {
|
|
|
4434
4491
|
}
|
|
4435
4492
|
);
|
|
4436
4493
|
}
|
|
4437
|
-
var DropdownMenuSubContext =
|
|
4494
|
+
var DropdownMenuSubContext = React55.createContext(null);
|
|
4438
4495
|
function DropdownMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
4439
4496
|
const [isOpen, setOpen] = useControllableState({
|
|
4440
4497
|
...open !== void 0 ? { value: open } : {},
|
|
4441
4498
|
defaultValue: defaultOpen,
|
|
4442
4499
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4443
4500
|
});
|
|
4444
|
-
return /* @__PURE__ */
|
|
4501
|
+
return /* @__PURE__ */ jsx45(DropdownMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-sub", children }) });
|
|
4445
4502
|
}
|
|
4446
4503
|
function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props }) {
|
|
4447
|
-
const ctx =
|
|
4504
|
+
const ctx = React55.useContext(DropdownMenuSubContext);
|
|
4448
4505
|
return /* @__PURE__ */ jsxs15(
|
|
4449
4506
|
"div",
|
|
4450
4507
|
{
|
|
@@ -4466,15 +4523,15 @@ function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props
|
|
|
4466
4523
|
...props,
|
|
4467
4524
|
children: [
|
|
4468
4525
|
children,
|
|
4469
|
-
/* @__PURE__ */
|
|
4526
|
+
/* @__PURE__ */ jsx45("svg", { className: "ml-auto size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx45("path", { d: "m9 18 6-6-6-6" }) })
|
|
4470
4527
|
]
|
|
4471
4528
|
}
|
|
4472
4529
|
);
|
|
4473
4530
|
}
|
|
4474
4531
|
function DropdownMenuSubContent({ className, children, ...props }) {
|
|
4475
|
-
const ctx =
|
|
4532
|
+
const ctx = React55.useContext(DropdownMenuSubContext);
|
|
4476
4533
|
if (!ctx?.open) return null;
|
|
4477
|
-
return /* @__PURE__ */
|
|
4534
|
+
return /* @__PURE__ */ jsx45(
|
|
4478
4535
|
"div",
|
|
4479
4536
|
{
|
|
4480
4537
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -4491,7 +4548,7 @@ function DropdownMenuSubContent({ className, children, ...props }) {
|
|
|
4491
4548
|
}
|
|
4492
4549
|
|
|
4493
4550
|
// src/components/context-menu.tsx
|
|
4494
|
-
import * as
|
|
4551
|
+
import * as React56 from "react";
|
|
4495
4552
|
|
|
4496
4553
|
// src/generated/context-menu.ts
|
|
4497
4554
|
var CONTEXT_MENU_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md";
|
|
@@ -4504,10 +4561,10 @@ var CONTEXT_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
|
|
|
4504
4561
|
var CONTEXT_MENU_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
4505
4562
|
|
|
4506
4563
|
// src/components/context-menu.tsx
|
|
4507
|
-
import { jsx as
|
|
4508
|
-
var ContextMenuContext =
|
|
4564
|
+
import { jsx as jsx46, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4565
|
+
var ContextMenuContext = React56.createContext(null);
|
|
4509
4566
|
function useContextMenu() {
|
|
4510
|
-
const ctx =
|
|
4567
|
+
const ctx = React56.useContext(ContextMenuContext);
|
|
4511
4568
|
if (!ctx) throw new Error("ContextMenu parts must be used within <ContextMenu>");
|
|
4512
4569
|
return ctx;
|
|
4513
4570
|
}
|
|
@@ -4517,16 +4574,16 @@ function ContextMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4517
4574
|
defaultValue: defaultOpen,
|
|
4518
4575
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4519
4576
|
});
|
|
4520
|
-
const [point, setPoint] =
|
|
4521
|
-
return /* @__PURE__ */
|
|
4577
|
+
const [point, setPoint] = React56.useState({ x: 0, y: 0 });
|
|
4578
|
+
return /* @__PURE__ */ jsx46(ContextMenuContext.Provider, { value: { open: isOpen, setOpen, point, setPoint }, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu", children }) });
|
|
4522
4579
|
}
|
|
4523
4580
|
function ContextMenuPortal({ children }) {
|
|
4524
|
-
return /* @__PURE__ */
|
|
4581
|
+
return /* @__PURE__ */ jsx46(Portal, { children });
|
|
4525
4582
|
}
|
|
4526
4583
|
function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
|
|
4527
4584
|
const { setOpen, setPoint } = useContextMenu();
|
|
4528
4585
|
const Comp = asChild ? Slot : "div";
|
|
4529
|
-
return /* @__PURE__ */
|
|
4586
|
+
return /* @__PURE__ */ jsx46(
|
|
4530
4587
|
Comp,
|
|
4531
4588
|
{
|
|
4532
4589
|
"data-slot": "context-menu-trigger",
|
|
@@ -4541,9 +4598,9 @@ function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
|
|
|
4541
4598
|
);
|
|
4542
4599
|
}
|
|
4543
4600
|
function ContextMenuGroup({ className, ...props }) {
|
|
4544
|
-
return /* @__PURE__ */
|
|
4601
|
+
return /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-group", role: "group", className, ...props });
|
|
4545
4602
|
}
|
|
4546
|
-
var ContextMenuCloseContext =
|
|
4603
|
+
var ContextMenuCloseContext = React56.createContext(() => {
|
|
4547
4604
|
});
|
|
4548
4605
|
function ContextMenuContent({ className, children, ...props }) {
|
|
4549
4606
|
const { open, setOpen, point } = useContextMenu();
|
|
@@ -4552,7 +4609,7 @@ function ContextMenuContent({ className, children, ...props }) {
|
|
|
4552
4609
|
enabled: open,
|
|
4553
4610
|
onDismiss: () => setOpen(false)
|
|
4554
4611
|
});
|
|
4555
|
-
const contentRef =
|
|
4612
|
+
const contentRef = React56.useRef(null);
|
|
4556
4613
|
const items = () => Array.from(
|
|
4557
4614
|
contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
|
|
4558
4615
|
).filter((el) => el.getAttribute("data-disabled") === null);
|
|
@@ -4561,13 +4618,13 @@ function ContextMenuContent({ className, children, ...props }) {
|
|
|
4561
4618
|
orientation: "vertical",
|
|
4562
4619
|
loop: true
|
|
4563
4620
|
});
|
|
4564
|
-
|
|
4621
|
+
React56.useEffect(() => {
|
|
4565
4622
|
if (!open) return;
|
|
4566
4623
|
items()[activeIndex]?.focus();
|
|
4567
4624
|
}, [open, activeIndex]);
|
|
4568
|
-
const close =
|
|
4625
|
+
const close = React56.useCallback(() => setOpen(false), [setOpen]);
|
|
4569
4626
|
if (!isPresent) return null;
|
|
4570
|
-
return /* @__PURE__ */
|
|
4627
|
+
return /* @__PURE__ */ jsx46(Portal, { children: /* @__PURE__ */ jsx46(ContextMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx46(
|
|
4571
4628
|
"div",
|
|
4572
4629
|
{
|
|
4573
4630
|
"data-slot": "context-menu-content",
|
|
@@ -4599,8 +4656,8 @@ function ContextMenuItem({
|
|
|
4599
4656
|
onKeyDown,
|
|
4600
4657
|
...props
|
|
4601
4658
|
}) {
|
|
4602
|
-
const close =
|
|
4603
|
-
return /* @__PURE__ */
|
|
4659
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4660
|
+
return /* @__PURE__ */ jsx46(
|
|
4604
4661
|
"div",
|
|
4605
4662
|
{
|
|
4606
4663
|
"data-slot": "context-menu-item",
|
|
@@ -4637,7 +4694,7 @@ function ContextMenuCheckboxItem({
|
|
|
4637
4694
|
onClick,
|
|
4638
4695
|
...props
|
|
4639
4696
|
}) {
|
|
4640
|
-
const close =
|
|
4697
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4641
4698
|
return /* @__PURE__ */ jsxs16(
|
|
4642
4699
|
"div",
|
|
4643
4700
|
{
|
|
@@ -4658,13 +4715,13 @@ function ContextMenuCheckboxItem({
|
|
|
4658
4715
|
},
|
|
4659
4716
|
...props,
|
|
4660
4717
|
children: [
|
|
4661
|
-
/* @__PURE__ */
|
|
4718
|
+
/* @__PURE__ */ jsx46("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx46("svg", { className: "size-4", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx46("path", { d: "M20 6 9 17l-5-5" }) }) : null }),
|
|
4662
4719
|
children
|
|
4663
4720
|
]
|
|
4664
4721
|
}
|
|
4665
4722
|
);
|
|
4666
4723
|
}
|
|
4667
|
-
var ContextMenuRadioGroupContext =
|
|
4724
|
+
var ContextMenuRadioGroupContext = React56.createContext(null);
|
|
4668
4725
|
function ContextMenuRadioGroup({
|
|
4669
4726
|
className,
|
|
4670
4727
|
value,
|
|
@@ -4672,11 +4729,11 @@ function ContextMenuRadioGroup({
|
|
|
4672
4729
|
children,
|
|
4673
4730
|
...props
|
|
4674
4731
|
}) {
|
|
4675
|
-
const ctx =
|
|
4732
|
+
const ctx = React56.useMemo(
|
|
4676
4733
|
() => ({ value, setValue: (next) => onValueChange?.(next) }),
|
|
4677
4734
|
[value, onValueChange]
|
|
4678
4735
|
);
|
|
4679
|
-
return /* @__PURE__ */
|
|
4736
|
+
return /* @__PURE__ */ jsx46(ContextMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-radio-group", role: "group", className, ...props, children }) });
|
|
4680
4737
|
}
|
|
4681
4738
|
function ContextMenuRadioItem({
|
|
4682
4739
|
className,
|
|
@@ -4686,8 +4743,8 @@ function ContextMenuRadioItem({
|
|
|
4686
4743
|
onClick,
|
|
4687
4744
|
...props
|
|
4688
4745
|
}) {
|
|
4689
|
-
const close =
|
|
4690
|
-
const group =
|
|
4746
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4747
|
+
const group = React56.useContext(ContextMenuRadioGroupContext);
|
|
4691
4748
|
const checked = group?.value === value;
|
|
4692
4749
|
return /* @__PURE__ */ jsxs16(
|
|
4693
4750
|
"div",
|
|
@@ -4710,14 +4767,14 @@ function ContextMenuRadioItem({
|
|
|
4710
4767
|
},
|
|
4711
4768
|
...props,
|
|
4712
4769
|
children: [
|
|
4713
|
-
/* @__PURE__ */
|
|
4770
|
+
/* @__PURE__ */ jsx46("span", { className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center", children: checked ? /* @__PURE__ */ jsx46("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ jsx46("circle", { cx: "12", cy: "12", r: "10" }) }) : null }),
|
|
4714
4771
|
children
|
|
4715
4772
|
]
|
|
4716
4773
|
}
|
|
4717
4774
|
);
|
|
4718
4775
|
}
|
|
4719
4776
|
function ContextMenuLabel({ className, inset, ...props }) {
|
|
4720
|
-
return /* @__PURE__ */
|
|
4777
|
+
return /* @__PURE__ */ jsx46(
|
|
4721
4778
|
"div",
|
|
4722
4779
|
{
|
|
4723
4780
|
"data-slot": "context-menu-label",
|
|
@@ -4728,7 +4785,7 @@ function ContextMenuLabel({ className, inset, ...props }) {
|
|
|
4728
4785
|
);
|
|
4729
4786
|
}
|
|
4730
4787
|
function ContextMenuSeparator({ className, ...props }) {
|
|
4731
|
-
return /* @__PURE__ */
|
|
4788
|
+
return /* @__PURE__ */ jsx46(
|
|
4732
4789
|
"div",
|
|
4733
4790
|
{
|
|
4734
4791
|
"data-slot": "context-menu-separator",
|
|
@@ -4739,7 +4796,7 @@ function ContextMenuSeparator({ className, ...props }) {
|
|
|
4739
4796
|
);
|
|
4740
4797
|
}
|
|
4741
4798
|
function ContextMenuShortcut({ className, ...props }) {
|
|
4742
|
-
return /* @__PURE__ */
|
|
4799
|
+
return /* @__PURE__ */ jsx46(
|
|
4743
4800
|
"span",
|
|
4744
4801
|
{
|
|
4745
4802
|
"data-slot": "context-menu-shortcut",
|
|
@@ -4748,17 +4805,17 @@ function ContextMenuShortcut({ className, ...props }) {
|
|
|
4748
4805
|
}
|
|
4749
4806
|
);
|
|
4750
4807
|
}
|
|
4751
|
-
var ContextMenuSubContext =
|
|
4808
|
+
var ContextMenuSubContext = React56.createContext(null);
|
|
4752
4809
|
function ContextMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
4753
4810
|
const [isOpen, setOpen] = useControllableState({
|
|
4754
4811
|
...open !== void 0 ? { value: open } : {},
|
|
4755
4812
|
defaultValue: defaultOpen,
|
|
4756
4813
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4757
4814
|
});
|
|
4758
|
-
return /* @__PURE__ */
|
|
4815
|
+
return /* @__PURE__ */ jsx46(ContextMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-sub", children }) });
|
|
4759
4816
|
}
|
|
4760
4817
|
function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }) {
|
|
4761
|
-
const ctx =
|
|
4818
|
+
const ctx = React56.useContext(ContextMenuSubContext);
|
|
4762
4819
|
return /* @__PURE__ */ jsxs16(
|
|
4763
4820
|
"div",
|
|
4764
4821
|
{
|
|
@@ -4780,15 +4837,15 @@ function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }
|
|
|
4780
4837
|
...props,
|
|
4781
4838
|
children: [
|
|
4782
4839
|
children,
|
|
4783
|
-
/* @__PURE__ */
|
|
4840
|
+
/* @__PURE__ */ jsx46("svg", { className: "ml-auto", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx46("path", { d: "m9 18 6-6-6-6" }) })
|
|
4784
4841
|
]
|
|
4785
4842
|
}
|
|
4786
4843
|
);
|
|
4787
4844
|
}
|
|
4788
4845
|
function ContextMenuSubContent({ className, children, ...props }) {
|
|
4789
|
-
const ctx =
|
|
4846
|
+
const ctx = React56.useContext(ContextMenuSubContext);
|
|
4790
4847
|
if (!ctx?.open) return null;
|
|
4791
|
-
return /* @__PURE__ */
|
|
4848
|
+
return /* @__PURE__ */ jsx46(
|
|
4792
4849
|
"div",
|
|
4793
4850
|
{
|
|
4794
4851
|
"data-slot": "context-menu-sub-content",
|
|
@@ -4805,7 +4862,7 @@ function ContextMenuSubContent({ className, children, ...props }) {
|
|
|
4805
4862
|
}
|
|
4806
4863
|
|
|
4807
4864
|
// src/components/menubar.tsx
|
|
4808
|
-
import * as
|
|
4865
|
+
import * as React57 from "react";
|
|
4809
4866
|
|
|
4810
4867
|
// src/generated/menubar.ts
|
|
4811
4868
|
var MENUBAR_ROOT = "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs";
|
|
@@ -4822,16 +4879,16 @@ var MENUBAR_SUB_TRIGGER = "focus:bg-hover focus:text-ink data-[state=open]:bg-ho
|
|
|
4822
4879
|
var MENUBAR_SUB_CONTENT = "bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 absolute z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg";
|
|
4823
4880
|
|
|
4824
4881
|
// src/components/menubar.tsx
|
|
4825
|
-
import { jsx as
|
|
4826
|
-
var MenubarMenuContext =
|
|
4882
|
+
import { jsx as jsx47, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4883
|
+
var MenubarMenuContext = React57.createContext(null);
|
|
4827
4884
|
function useMenu() {
|
|
4828
|
-
const ctx =
|
|
4885
|
+
const ctx = React57.useContext(MenubarMenuContext);
|
|
4829
4886
|
if (!ctx) throw new Error("Menubar parts must be used within <MenubarMenu>");
|
|
4830
4887
|
return ctx;
|
|
4831
4888
|
}
|
|
4832
|
-
var MenubarRadioGroupContext =
|
|
4889
|
+
var MenubarRadioGroupContext = React57.createContext(null);
|
|
4833
4890
|
function Menubar({ className, ...props }) {
|
|
4834
|
-
return /* @__PURE__ */
|
|
4891
|
+
return /* @__PURE__ */ jsx47(
|
|
4835
4892
|
"div",
|
|
4836
4893
|
{
|
|
4837
4894
|
"data-slot": "menubar",
|
|
@@ -4847,12 +4904,12 @@ function MenubarMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4847
4904
|
defaultValue: defaultOpen,
|
|
4848
4905
|
onChange: onOpenChange
|
|
4849
4906
|
});
|
|
4850
|
-
const triggerRef =
|
|
4851
|
-
return /* @__PURE__ */
|
|
4907
|
+
const triggerRef = React57.useRef(null);
|
|
4908
|
+
return /* @__PURE__ */ jsx47(MenubarMenuContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-menu", className: "relative", children }) });
|
|
4852
4909
|
}
|
|
4853
4910
|
function MenubarTrigger({ className, onClick, ...props }) {
|
|
4854
4911
|
const { open, setOpen, triggerRef } = useMenu();
|
|
4855
|
-
return /* @__PURE__ */
|
|
4912
|
+
return /* @__PURE__ */ jsx47(
|
|
4856
4913
|
"button",
|
|
4857
4914
|
{
|
|
4858
4915
|
ref: triggerRef,
|
|
@@ -4888,10 +4945,10 @@ function MenubarContent({
|
|
|
4888
4945
|
onDismiss: () => setOpen(false),
|
|
4889
4946
|
exclude: [triggerRef]
|
|
4890
4947
|
});
|
|
4891
|
-
const items =
|
|
4948
|
+
const items = React57.Children.toArray(children);
|
|
4892
4949
|
const { onKeyDown } = useRovingFocus({ count: items.length, orientation: "vertical" });
|
|
4893
4950
|
if (!isPresent) return null;
|
|
4894
|
-
return /* @__PURE__ */
|
|
4951
|
+
return /* @__PURE__ */ jsx47(Portal, { children: /* @__PURE__ */ jsx47(
|
|
4895
4952
|
"div",
|
|
4896
4953
|
{
|
|
4897
4954
|
ref: mergeRefs(presenceRef, floatingRef, dismissRef),
|
|
@@ -4908,7 +4965,7 @@ function MenubarContent({
|
|
|
4908
4965
|
) });
|
|
4909
4966
|
}
|
|
4910
4967
|
function MenubarGroup({ className, ...props }) {
|
|
4911
|
-
return /* @__PURE__ */
|
|
4968
|
+
return /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-group", role: "group", className, ...props });
|
|
4912
4969
|
}
|
|
4913
4970
|
function MenubarItem({
|
|
4914
4971
|
className,
|
|
@@ -4916,7 +4973,7 @@ function MenubarItem({
|
|
|
4916
4973
|
variant = "neutral",
|
|
4917
4974
|
...props
|
|
4918
4975
|
}) {
|
|
4919
|
-
return /* @__PURE__ */
|
|
4976
|
+
return /* @__PURE__ */ jsx47(
|
|
4920
4977
|
"div",
|
|
4921
4978
|
{
|
|
4922
4979
|
"data-slot": "menubar-item",
|
|
@@ -4945,7 +5002,7 @@ function MenubarCheckboxItem({
|
|
|
4945
5002
|
className: cn(MENUBAR_CHECKBOX_ITEM, className),
|
|
4946
5003
|
...props,
|
|
4947
5004
|
children: [
|
|
4948
|
-
/* @__PURE__ */
|
|
5005
|
+
/* @__PURE__ */ jsx47("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx47(
|
|
4949
5006
|
"svg",
|
|
4950
5007
|
{
|
|
4951
5008
|
className: "size-4",
|
|
@@ -4955,7 +5012,7 @@ function MenubarCheckboxItem({
|
|
|
4955
5012
|
strokeWidth: "2",
|
|
4956
5013
|
strokeLinecap: "round",
|
|
4957
5014
|
strokeLinejoin: "round",
|
|
4958
|
-
children: /* @__PURE__ */
|
|
5015
|
+
children: /* @__PURE__ */ jsx47("path", { d: "M20 6 9 17l-5-5" })
|
|
4959
5016
|
}
|
|
4960
5017
|
) }),
|
|
4961
5018
|
children
|
|
@@ -4975,7 +5032,7 @@ function MenubarRadioGroup({
|
|
|
4975
5032
|
defaultValue,
|
|
4976
5033
|
onChange: onValueChange
|
|
4977
5034
|
});
|
|
4978
|
-
return /* @__PURE__ */
|
|
5035
|
+
return /* @__PURE__ */ jsx47(MenubarRadioGroupContext.Provider, { value: { value: current, onValueChange: setValue }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-radio-group", role: "group", className, children }) });
|
|
4979
5036
|
}
|
|
4980
5037
|
function MenubarRadioItem({
|
|
4981
5038
|
className,
|
|
@@ -4983,7 +5040,7 @@ function MenubarRadioItem({
|
|
|
4983
5040
|
value,
|
|
4984
5041
|
...props
|
|
4985
5042
|
}) {
|
|
4986
|
-
const ctx =
|
|
5043
|
+
const ctx = React57.useContext(MenubarRadioGroupContext);
|
|
4987
5044
|
const checked = ctx?.value === value;
|
|
4988
5045
|
return /* @__PURE__ */ jsxs17(
|
|
4989
5046
|
"div",
|
|
@@ -4996,7 +5053,7 @@ function MenubarRadioItem({
|
|
|
4996
5053
|
onClick: () => ctx?.onValueChange(value),
|
|
4997
5054
|
...props,
|
|
4998
5055
|
children: [
|
|
4999
|
-
/* @__PURE__ */
|
|
5056
|
+
/* @__PURE__ */ jsx47("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx47("svg", { className: "size-2 fill-current", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx47("circle", { cx: "12", cy: "12", r: "10" }) }) }),
|
|
5000
5057
|
children
|
|
5001
5058
|
]
|
|
5002
5059
|
}
|
|
@@ -5007,7 +5064,7 @@ function MenubarLabel({
|
|
|
5007
5064
|
inset,
|
|
5008
5065
|
...props
|
|
5009
5066
|
}) {
|
|
5010
|
-
return /* @__PURE__ */
|
|
5067
|
+
return /* @__PURE__ */ jsx47(
|
|
5011
5068
|
"div",
|
|
5012
5069
|
{
|
|
5013
5070
|
"data-slot": "menubar-label",
|
|
@@ -5018,7 +5075,7 @@ function MenubarLabel({
|
|
|
5018
5075
|
);
|
|
5019
5076
|
}
|
|
5020
5077
|
function MenubarSeparator({ className, ...props }) {
|
|
5021
|
-
return /* @__PURE__ */
|
|
5078
|
+
return /* @__PURE__ */ jsx47(
|
|
5022
5079
|
"div",
|
|
5023
5080
|
{
|
|
5024
5081
|
"data-slot": "menubar-separator",
|
|
@@ -5029,7 +5086,7 @@ function MenubarSeparator({ className, ...props }) {
|
|
|
5029
5086
|
);
|
|
5030
5087
|
}
|
|
5031
5088
|
function MenubarShortcut({ className, ...props }) {
|
|
5032
|
-
return /* @__PURE__ */
|
|
5089
|
+
return /* @__PURE__ */ jsx47(
|
|
5033
5090
|
"span",
|
|
5034
5091
|
{
|
|
5035
5092
|
"data-slot": "menubar-shortcut",
|
|
@@ -5038,9 +5095,9 @@ function MenubarShortcut({ className, ...props }) {
|
|
|
5038
5095
|
}
|
|
5039
5096
|
);
|
|
5040
5097
|
}
|
|
5041
|
-
var MenubarSubContext =
|
|
5098
|
+
var MenubarSubContext = React57.createContext(null);
|
|
5042
5099
|
function useSub() {
|
|
5043
|
-
const ctx =
|
|
5100
|
+
const ctx = React57.useContext(MenubarSubContext);
|
|
5044
5101
|
if (!ctx) throw new Error("MenubarSub parts must be used within <MenubarSub>");
|
|
5045
5102
|
return ctx;
|
|
5046
5103
|
}
|
|
@@ -5050,7 +5107,7 @@ function MenubarSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5050
5107
|
defaultValue: defaultOpen,
|
|
5051
5108
|
onChange: onOpenChange
|
|
5052
5109
|
});
|
|
5053
|
-
return /* @__PURE__ */
|
|
5110
|
+
return /* @__PURE__ */ jsx47(MenubarSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-sub", className: "relative", children }) });
|
|
5054
5111
|
}
|
|
5055
5112
|
function MenubarSubTrigger({
|
|
5056
5113
|
className,
|
|
@@ -5076,7 +5133,7 @@ function MenubarSubTrigger({
|
|
|
5076
5133
|
...props,
|
|
5077
5134
|
children: [
|
|
5078
5135
|
children,
|
|
5079
|
-
/* @__PURE__ */
|
|
5136
|
+
/* @__PURE__ */ jsx47(
|
|
5080
5137
|
"svg",
|
|
5081
5138
|
{
|
|
5082
5139
|
className: "ml-auto h-4 w-4",
|
|
@@ -5086,7 +5143,7 @@ function MenubarSubTrigger({
|
|
|
5086
5143
|
strokeWidth: "2",
|
|
5087
5144
|
strokeLinecap: "round",
|
|
5088
5145
|
strokeLinejoin: "round",
|
|
5089
|
-
children: /* @__PURE__ */
|
|
5146
|
+
children: /* @__PURE__ */ jsx47("path", { d: "m9 18 6-6-6-6" })
|
|
5090
5147
|
}
|
|
5091
5148
|
)
|
|
5092
5149
|
]
|
|
@@ -5097,7 +5154,7 @@ function MenubarSubContent({ className, children, ...props }) {
|
|
|
5097
5154
|
const { open } = useSub();
|
|
5098
5155
|
const { isPresent, ref } = usePresence(open);
|
|
5099
5156
|
if (!isPresent) return null;
|
|
5100
|
-
return /* @__PURE__ */
|
|
5157
|
+
return /* @__PURE__ */ jsx47(
|
|
5101
5158
|
"div",
|
|
5102
5159
|
{
|
|
5103
5160
|
ref,
|
|
@@ -5112,7 +5169,7 @@ function MenubarSubContent({ className, children, ...props }) {
|
|
|
5112
5169
|
}
|
|
5113
5170
|
|
|
5114
5171
|
// src/components/navigation-menu.tsx
|
|
5115
|
-
import * as
|
|
5172
|
+
import * as React58 from "react";
|
|
5116
5173
|
|
|
5117
5174
|
// src/generated/navigation-menu.ts
|
|
5118
5175
|
var NAVIGATION_MENU = "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center";
|
|
@@ -5125,13 +5182,13 @@ var NAVIGATION_MENU_INDICATOR = "data-[state=visible]:animate-in data-[state=hid
|
|
|
5125
5182
|
var NAVIGATION_MENU_VIEWPORT = "origin-top-center bg-popover text-ink data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]";
|
|
5126
5183
|
|
|
5127
5184
|
// src/components/navigation-menu.tsx
|
|
5128
|
-
import { jsx as
|
|
5185
|
+
import { jsx as jsx48, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5129
5186
|
function navigationMenuTriggerStyle() {
|
|
5130
5187
|
return NAVIGATION_MENU_TRIGGER_STYLE;
|
|
5131
5188
|
}
|
|
5132
|
-
var NavigationMenuItemContext =
|
|
5189
|
+
var NavigationMenuItemContext = React58.createContext(null);
|
|
5133
5190
|
function useItem() {
|
|
5134
|
-
const ctx =
|
|
5191
|
+
const ctx = React58.useContext(NavigationMenuItemContext);
|
|
5135
5192
|
if (!ctx) throw new Error("NavigationMenu parts must be used within <NavigationMenuItem>");
|
|
5136
5193
|
return ctx;
|
|
5137
5194
|
}
|
|
@@ -5154,13 +5211,13 @@ function NavigationMenu({
|
|
|
5154
5211
|
...props,
|
|
5155
5212
|
children: [
|
|
5156
5213
|
children,
|
|
5157
|
-
viewport && /* @__PURE__ */
|
|
5214
|
+
viewport && /* @__PURE__ */ jsx48(NavigationMenuViewport, {})
|
|
5158
5215
|
]
|
|
5159
5216
|
}
|
|
5160
5217
|
);
|
|
5161
5218
|
}
|
|
5162
5219
|
function NavigationMenuList({ className, ...props }) {
|
|
5163
|
-
return /* @__PURE__ */
|
|
5220
|
+
return /* @__PURE__ */ jsx48(
|
|
5164
5221
|
"ul",
|
|
5165
5222
|
{
|
|
5166
5223
|
"data-slot": "navigation-menu-list",
|
|
@@ -5186,8 +5243,8 @@ function NavigationMenuItem({
|
|
|
5186
5243
|
defaultValue: defaultOpen,
|
|
5187
5244
|
onChange: onOpenChange
|
|
5188
5245
|
});
|
|
5189
|
-
const triggerRef =
|
|
5190
|
-
return /* @__PURE__ */
|
|
5246
|
+
const triggerRef = React58.useRef(null);
|
|
5247
|
+
return /* @__PURE__ */ jsx48(NavigationMenuItemContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx48("li", { "data-slot": "navigation-menu-item", className: cn(NAVIGATION_MENU_ITEM, className), ...props, children }) });
|
|
5191
5248
|
}
|
|
5192
5249
|
function NavigationMenuTrigger({
|
|
5193
5250
|
className,
|
|
@@ -5212,7 +5269,7 @@ function NavigationMenuTrigger({
|
|
|
5212
5269
|
children: [
|
|
5213
5270
|
children,
|
|
5214
5271
|
" ",
|
|
5215
|
-
/* @__PURE__ */
|
|
5272
|
+
/* @__PURE__ */ jsx48(
|
|
5216
5273
|
"svg",
|
|
5217
5274
|
{
|
|
5218
5275
|
className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
@@ -5223,7 +5280,7 @@ function NavigationMenuTrigger({
|
|
|
5223
5280
|
strokeLinecap: "round",
|
|
5224
5281
|
strokeLinejoin: "round",
|
|
5225
5282
|
"aria-hidden": "true",
|
|
5226
|
-
children: /* @__PURE__ */
|
|
5283
|
+
children: /* @__PURE__ */ jsx48("path", { d: "m6 9 6 6 6-6" })
|
|
5227
5284
|
}
|
|
5228
5285
|
)
|
|
5229
5286
|
]
|
|
@@ -5239,7 +5296,7 @@ function NavigationMenuContent({ className, children, ...props }) {
|
|
|
5239
5296
|
exclude: [triggerRef]
|
|
5240
5297
|
});
|
|
5241
5298
|
if (!isPresent) return null;
|
|
5242
|
-
return /* @__PURE__ */
|
|
5299
|
+
return /* @__PURE__ */ jsx48(
|
|
5243
5300
|
"div",
|
|
5244
5301
|
{
|
|
5245
5302
|
ref: mergeRefs(presenceRef, dismissRef),
|
|
@@ -5255,7 +5312,7 @@ function NavigationMenuContent({ className, children, ...props }) {
|
|
|
5255
5312
|
);
|
|
5256
5313
|
}
|
|
5257
5314
|
function NavigationMenuViewport({ className, ...props }) {
|
|
5258
|
-
return /* @__PURE__ */
|
|
5315
|
+
return /* @__PURE__ */ jsx48("div", { className: "absolute top-full left-0 isolate z-50 flex justify-center", children: /* @__PURE__ */ jsx48(
|
|
5259
5316
|
"div",
|
|
5260
5317
|
{
|
|
5261
5318
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -5273,7 +5330,7 @@ function NavigationMenuLink({
|
|
|
5273
5330
|
...props
|
|
5274
5331
|
}) {
|
|
5275
5332
|
const Comp = asChild ? Slot : "a";
|
|
5276
|
-
return /* @__PURE__ */
|
|
5333
|
+
return /* @__PURE__ */ jsx48(
|
|
5277
5334
|
Comp,
|
|
5278
5335
|
{
|
|
5279
5336
|
"data-slot": "navigation-menu-link",
|
|
@@ -5286,7 +5343,7 @@ function NavigationMenuLink({
|
|
|
5286
5343
|
);
|
|
5287
5344
|
}
|
|
5288
5345
|
function NavigationMenuIndicator({ className, ...props }) {
|
|
5289
|
-
return /* @__PURE__ */
|
|
5346
|
+
return /* @__PURE__ */ jsx48(
|
|
5290
5347
|
"div",
|
|
5291
5348
|
{
|
|
5292
5349
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -5295,13 +5352,13 @@ function NavigationMenuIndicator({ className, ...props }) {
|
|
|
5295
5352
|
className
|
|
5296
5353
|
),
|
|
5297
5354
|
...props,
|
|
5298
|
-
children: /* @__PURE__ */
|
|
5355
|
+
children: /* @__PURE__ */ jsx48("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
5299
5356
|
}
|
|
5300
5357
|
);
|
|
5301
5358
|
}
|
|
5302
5359
|
|
|
5303
5360
|
// src/components/dialog.tsx
|
|
5304
|
-
import * as
|
|
5361
|
+
import * as React59 from "react";
|
|
5305
5362
|
|
|
5306
5363
|
// src/generated/dialog.ts
|
|
5307
5364
|
var DIALOG_OVERLAY = "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50";
|
|
@@ -5313,10 +5370,10 @@ var DIALOG_TITLE = "text-lg leading-none font-semibold";
|
|
|
5313
5370
|
var DIALOG_DESCRIPTION = "text-ink-soft text-sm";
|
|
5314
5371
|
|
|
5315
5372
|
// src/components/dialog.tsx
|
|
5316
|
-
import { Fragment as Fragment6, jsx as
|
|
5317
|
-
var DialogContext =
|
|
5373
|
+
import { Fragment as Fragment6, jsx as jsx49, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5374
|
+
var DialogContext = React59.createContext(null);
|
|
5318
5375
|
function useDialog() {
|
|
5319
|
-
const ctx =
|
|
5376
|
+
const ctx = React59.useContext(DialogContext);
|
|
5320
5377
|
if (!ctx) throw new Error("Dialog parts must be used within <Dialog>");
|
|
5321
5378
|
return ctx;
|
|
5322
5379
|
}
|
|
@@ -5326,13 +5383,13 @@ function Dialog({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5326
5383
|
defaultValue: defaultOpen,
|
|
5327
5384
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5328
5385
|
});
|
|
5329
|
-
const triggerRef =
|
|
5330
|
-
return /* @__PURE__ */
|
|
5386
|
+
const triggerRef = React59.useRef(null);
|
|
5387
|
+
return /* @__PURE__ */ jsx49(DialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5331
5388
|
}
|
|
5332
5389
|
function DialogTrigger({ asChild = false, onClick, ...props }) {
|
|
5333
5390
|
const { open, setOpen, triggerRef } = useDialog();
|
|
5334
5391
|
const Comp = asChild ? Slot : "button";
|
|
5335
|
-
return /* @__PURE__ */
|
|
5392
|
+
return /* @__PURE__ */ jsx49(
|
|
5336
5393
|
Comp,
|
|
5337
5394
|
{
|
|
5338
5395
|
"data-slot": "dialog-trigger",
|
|
@@ -5347,11 +5404,11 @@ function DialogTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5347
5404
|
);
|
|
5348
5405
|
}
|
|
5349
5406
|
function DialogPortal({ children }) {
|
|
5350
|
-
return /* @__PURE__ */
|
|
5407
|
+
return /* @__PURE__ */ jsx49(Fragment6, { children });
|
|
5351
5408
|
}
|
|
5352
5409
|
function DialogOverlay({ className, ...props }) {
|
|
5353
5410
|
const { open, setOpen } = useDialog();
|
|
5354
|
-
return /* @__PURE__ */
|
|
5411
|
+
return /* @__PURE__ */ jsx49(
|
|
5355
5412
|
"div",
|
|
5356
5413
|
{
|
|
5357
5414
|
"data-slot": "dialog-overlay",
|
|
@@ -5362,7 +5419,7 @@ function DialogOverlay({ className, ...props }) {
|
|
|
5362
5419
|
}
|
|
5363
5420
|
);
|
|
5364
5421
|
}
|
|
5365
|
-
var XIcon = (props) => /* @__PURE__ */
|
|
5422
|
+
var XIcon = (props) => /* @__PURE__ */ jsx49(
|
|
5366
5423
|
"svg",
|
|
5367
5424
|
{
|
|
5368
5425
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5375,7 +5432,7 @@ var XIcon = (props) => /* @__PURE__ */ jsx48(
|
|
|
5375
5432
|
strokeLinecap: "round",
|
|
5376
5433
|
strokeLinejoin: "round",
|
|
5377
5434
|
...props,
|
|
5378
|
-
children: /* @__PURE__ */
|
|
5435
|
+
children: /* @__PURE__ */ jsx49("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
5379
5436
|
}
|
|
5380
5437
|
);
|
|
5381
5438
|
function DialogContent({
|
|
@@ -5392,7 +5449,7 @@ function DialogContent({
|
|
|
5392
5449
|
onDismiss: () => setOpen(false),
|
|
5393
5450
|
exclude: [triggerRef]
|
|
5394
5451
|
});
|
|
5395
|
-
|
|
5452
|
+
React59.useEffect(() => {
|
|
5396
5453
|
if (!open) return;
|
|
5397
5454
|
const prev = document.body.style.overflow;
|
|
5398
5455
|
document.body.style.overflow = "hidden";
|
|
@@ -5402,7 +5459,7 @@ function DialogContent({
|
|
|
5402
5459
|
}, [open]);
|
|
5403
5460
|
if (!isPresent) return null;
|
|
5404
5461
|
return /* @__PURE__ */ jsxs19(Portal, { children: [
|
|
5405
|
-
/* @__PURE__ */
|
|
5462
|
+
/* @__PURE__ */ jsx49(DialogOverlay, {}),
|
|
5406
5463
|
/* @__PURE__ */ jsxs19(
|
|
5407
5464
|
"div",
|
|
5408
5465
|
{
|
|
@@ -5423,8 +5480,8 @@ function DialogContent({
|
|
|
5423
5480
|
onClick: () => setOpen(false),
|
|
5424
5481
|
className: DIALOG_CLOSE,
|
|
5425
5482
|
children: [
|
|
5426
|
-
/* @__PURE__ */
|
|
5427
|
-
/* @__PURE__ */
|
|
5483
|
+
/* @__PURE__ */ jsx49(XIcon, {}),
|
|
5484
|
+
/* @__PURE__ */ jsx49("span", { className: "sr-only", children: "Close" })
|
|
5428
5485
|
]
|
|
5429
5486
|
}
|
|
5430
5487
|
)
|
|
@@ -5436,7 +5493,7 @@ function DialogContent({
|
|
|
5436
5493
|
function DialogClose({ asChild = false, onClick, ...props }) {
|
|
5437
5494
|
const { setOpen } = useDialog();
|
|
5438
5495
|
const Comp = asChild ? Slot : "button";
|
|
5439
|
-
return /* @__PURE__ */
|
|
5496
|
+
return /* @__PURE__ */ jsx49(
|
|
5440
5497
|
Comp,
|
|
5441
5498
|
{
|
|
5442
5499
|
"data-slot": "dialog-close",
|
|
@@ -5449,7 +5506,7 @@ function DialogClose({ asChild = false, onClick, ...props }) {
|
|
|
5449
5506
|
);
|
|
5450
5507
|
}
|
|
5451
5508
|
function DialogHeader({ className, ...props }) {
|
|
5452
|
-
return /* @__PURE__ */
|
|
5509
|
+
return /* @__PURE__ */ jsx49(
|
|
5453
5510
|
"div",
|
|
5454
5511
|
{
|
|
5455
5512
|
"data-slot": "dialog-header",
|
|
@@ -5459,7 +5516,7 @@ function DialogHeader({ className, ...props }) {
|
|
|
5459
5516
|
);
|
|
5460
5517
|
}
|
|
5461
5518
|
function DialogFooter({ className, ...props }) {
|
|
5462
|
-
return /* @__PURE__ */
|
|
5519
|
+
return /* @__PURE__ */ jsx49(
|
|
5463
5520
|
"div",
|
|
5464
5521
|
{
|
|
5465
5522
|
"data-slot": "dialog-footer",
|
|
@@ -5469,7 +5526,7 @@ function DialogFooter({ className, ...props }) {
|
|
|
5469
5526
|
);
|
|
5470
5527
|
}
|
|
5471
5528
|
function DialogTitle({ className, ...props }) {
|
|
5472
|
-
return /* @__PURE__ */
|
|
5529
|
+
return /* @__PURE__ */ jsx49(
|
|
5473
5530
|
"h2",
|
|
5474
5531
|
{
|
|
5475
5532
|
"data-slot": "dialog-title",
|
|
@@ -5479,7 +5536,7 @@ function DialogTitle({ className, ...props }) {
|
|
|
5479
5536
|
);
|
|
5480
5537
|
}
|
|
5481
5538
|
function DialogDescription({ className, ...props }) {
|
|
5482
|
-
return /* @__PURE__ */
|
|
5539
|
+
return /* @__PURE__ */ jsx49(
|
|
5483
5540
|
"p",
|
|
5484
5541
|
{
|
|
5485
5542
|
"data-slot": "dialog-description",
|
|
@@ -5490,7 +5547,7 @@ function DialogDescription({ className, ...props }) {
|
|
|
5490
5547
|
}
|
|
5491
5548
|
|
|
5492
5549
|
// src/components/alert-dialog.tsx
|
|
5493
|
-
import * as
|
|
5550
|
+
import * as React60 from "react";
|
|
5494
5551
|
|
|
5495
5552
|
// src/generated/alert-dialog.ts
|
|
5496
5553
|
var ALERT_DIALOG_OVERLAY = "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50";
|
|
@@ -5501,10 +5558,10 @@ var ALERT_DIALOG_TITLE = "text-lg font-semibold";
|
|
|
5501
5558
|
var ALERT_DIALOG_DESCRIPTION = "text-ink-soft text-sm";
|
|
5502
5559
|
|
|
5503
5560
|
// src/components/alert-dialog.tsx
|
|
5504
|
-
import { jsx as
|
|
5505
|
-
var AlertDialogContext =
|
|
5561
|
+
import { jsx as jsx50, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5562
|
+
var AlertDialogContext = React60.createContext(null);
|
|
5506
5563
|
function useAlertDialog() {
|
|
5507
|
-
const ctx =
|
|
5564
|
+
const ctx = React60.useContext(AlertDialogContext);
|
|
5508
5565
|
if (!ctx) throw new Error("AlertDialog parts must be used within <AlertDialog>");
|
|
5509
5566
|
return ctx;
|
|
5510
5567
|
}
|
|
@@ -5514,13 +5571,13 @@ function AlertDialog({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5514
5571
|
defaultValue: defaultOpen,
|
|
5515
5572
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5516
5573
|
});
|
|
5517
|
-
const triggerRef =
|
|
5518
|
-
return /* @__PURE__ */
|
|
5574
|
+
const triggerRef = React60.useRef(null);
|
|
5575
|
+
return /* @__PURE__ */ jsx50(AlertDialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5519
5576
|
}
|
|
5520
5577
|
function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
|
|
5521
5578
|
const { open, setOpen, triggerRef } = useAlertDialog();
|
|
5522
5579
|
const Comp = asChild ? Slot : "button";
|
|
5523
|
-
return /* @__PURE__ */
|
|
5580
|
+
return /* @__PURE__ */ jsx50(
|
|
5524
5581
|
Comp,
|
|
5525
5582
|
{
|
|
5526
5583
|
"data-slot": "alert-dialog-trigger",
|
|
@@ -5536,7 +5593,7 @@ function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5536
5593
|
}
|
|
5537
5594
|
function AlertDialogOverlay({ className, ...props }) {
|
|
5538
5595
|
const { open, setOpen } = useAlertDialog();
|
|
5539
|
-
return /* @__PURE__ */
|
|
5596
|
+
return /* @__PURE__ */ jsx50(
|
|
5540
5597
|
"div",
|
|
5541
5598
|
{
|
|
5542
5599
|
"data-slot": "alert-dialog-overlay",
|
|
@@ -5558,8 +5615,8 @@ function AlertDialogContent({ className, children, ...props }) {
|
|
|
5558
5615
|
});
|
|
5559
5616
|
if (!isPresent) return null;
|
|
5560
5617
|
return /* @__PURE__ */ jsxs20(Portal, { children: [
|
|
5561
|
-
/* @__PURE__ */
|
|
5562
|
-
/* @__PURE__ */
|
|
5618
|
+
/* @__PURE__ */ jsx50(AlertDialogOverlay, {}),
|
|
5619
|
+
/* @__PURE__ */ jsx50(
|
|
5563
5620
|
"div",
|
|
5564
5621
|
{
|
|
5565
5622
|
"data-slot": "alert-dialog-content",
|
|
@@ -5575,7 +5632,7 @@ function AlertDialogContent({ className, children, ...props }) {
|
|
|
5575
5632
|
] });
|
|
5576
5633
|
}
|
|
5577
5634
|
function AlertDialogHeader({ className, ...props }) {
|
|
5578
|
-
return /* @__PURE__ */
|
|
5635
|
+
return /* @__PURE__ */ jsx50(
|
|
5579
5636
|
"div",
|
|
5580
5637
|
{
|
|
5581
5638
|
"data-slot": "alert-dialog-header",
|
|
@@ -5585,7 +5642,7 @@ function AlertDialogHeader({ className, ...props }) {
|
|
|
5585
5642
|
);
|
|
5586
5643
|
}
|
|
5587
5644
|
function AlertDialogFooter({ className, ...props }) {
|
|
5588
|
-
return /* @__PURE__ */
|
|
5645
|
+
return /* @__PURE__ */ jsx50(
|
|
5589
5646
|
"div",
|
|
5590
5647
|
{
|
|
5591
5648
|
"data-slot": "alert-dialog-footer",
|
|
@@ -5595,7 +5652,7 @@ function AlertDialogFooter({ className, ...props }) {
|
|
|
5595
5652
|
);
|
|
5596
5653
|
}
|
|
5597
5654
|
function AlertDialogTitle({ className, ...props }) {
|
|
5598
|
-
return /* @__PURE__ */
|
|
5655
|
+
return /* @__PURE__ */ jsx50(
|
|
5599
5656
|
"h2",
|
|
5600
5657
|
{
|
|
5601
5658
|
"data-slot": "alert-dialog-title",
|
|
@@ -5605,7 +5662,7 @@ function AlertDialogTitle({ className, ...props }) {
|
|
|
5605
5662
|
);
|
|
5606
5663
|
}
|
|
5607
5664
|
function AlertDialogDescription({ className, ...props }) {
|
|
5608
|
-
return /* @__PURE__ */
|
|
5665
|
+
return /* @__PURE__ */ jsx50(
|
|
5609
5666
|
"p",
|
|
5610
5667
|
{
|
|
5611
5668
|
"data-slot": "alert-dialog-description",
|
|
@@ -5616,7 +5673,7 @@ function AlertDialogDescription({ className, ...props }) {
|
|
|
5616
5673
|
}
|
|
5617
5674
|
function AlertDialogAction({ className, onClick, ...props }) {
|
|
5618
5675
|
const { setOpen } = useAlertDialog();
|
|
5619
|
-
return /* @__PURE__ */
|
|
5676
|
+
return /* @__PURE__ */ jsx50(
|
|
5620
5677
|
"button",
|
|
5621
5678
|
{
|
|
5622
5679
|
"data-slot": "alert-dialog-action",
|
|
@@ -5631,7 +5688,7 @@ function AlertDialogAction({ className, onClick, ...props }) {
|
|
|
5631
5688
|
}
|
|
5632
5689
|
function AlertDialogCancel({ className, onClick, ...props }) {
|
|
5633
5690
|
const { setOpen } = useAlertDialog();
|
|
5634
|
-
return /* @__PURE__ */
|
|
5691
|
+
return /* @__PURE__ */ jsx50(
|
|
5635
5692
|
"button",
|
|
5636
5693
|
{
|
|
5637
5694
|
"data-slot": "alert-dialog-cancel",
|
|
@@ -5646,7 +5703,7 @@ function AlertDialogCancel({ className, onClick, ...props }) {
|
|
|
5646
5703
|
}
|
|
5647
5704
|
|
|
5648
5705
|
// src/components/sheet.tsx
|
|
5649
|
-
import * as
|
|
5706
|
+
import * as React61 from "react";
|
|
5650
5707
|
|
|
5651
5708
|
// src/generated/sheet.ts
|
|
5652
5709
|
var SHEET_OVERLAY = "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50";
|
|
@@ -5662,10 +5719,10 @@ var SHEET_TITLE = "text-ink font-semibold";
|
|
|
5662
5719
|
var SHEET_DESCRIPTION = "text-ink-soft text-sm";
|
|
5663
5720
|
|
|
5664
5721
|
// src/components/sheet.tsx
|
|
5665
|
-
import { jsx as
|
|
5666
|
-
var SheetContext =
|
|
5722
|
+
import { jsx as jsx51, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5723
|
+
var SheetContext = React61.createContext(null);
|
|
5667
5724
|
function useSheet() {
|
|
5668
|
-
const ctx =
|
|
5725
|
+
const ctx = React61.useContext(SheetContext);
|
|
5669
5726
|
if (!ctx) throw new Error("Sheet parts must be used within <Sheet>");
|
|
5670
5727
|
return ctx;
|
|
5671
5728
|
}
|
|
@@ -5675,13 +5732,13 @@ function Sheet({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5675
5732
|
defaultValue: defaultOpen,
|
|
5676
5733
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5677
5734
|
});
|
|
5678
|
-
const triggerRef =
|
|
5679
|
-
return /* @__PURE__ */
|
|
5735
|
+
const triggerRef = React61.useRef(null);
|
|
5736
|
+
return /* @__PURE__ */ jsx51(SheetContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5680
5737
|
}
|
|
5681
5738
|
function SheetTrigger({ asChild = false, onClick, ...props }) {
|
|
5682
5739
|
const { open, setOpen, triggerRef } = useSheet();
|
|
5683
5740
|
const Comp = asChild ? Slot : "button";
|
|
5684
|
-
return /* @__PURE__ */
|
|
5741
|
+
return /* @__PURE__ */ jsx51(
|
|
5685
5742
|
Comp,
|
|
5686
5743
|
{
|
|
5687
5744
|
"data-slot": "sheet-trigger",
|
|
@@ -5697,7 +5754,7 @@ function SheetTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5697
5754
|
}
|
|
5698
5755
|
function SheetOverlay({ className, ...props }) {
|
|
5699
5756
|
const { open, setOpen } = useSheet();
|
|
5700
|
-
return /* @__PURE__ */
|
|
5757
|
+
return /* @__PURE__ */ jsx51(
|
|
5701
5758
|
"div",
|
|
5702
5759
|
{
|
|
5703
5760
|
"data-slot": "sheet-overlay",
|
|
@@ -5714,7 +5771,7 @@ var sheetSideClasses = {
|
|
|
5714
5771
|
top: SHEET_SIDE_TOP,
|
|
5715
5772
|
bottom: SHEET_SIDE_BOTTOM
|
|
5716
5773
|
};
|
|
5717
|
-
var XIcon2 = (props) => /* @__PURE__ */
|
|
5774
|
+
var XIcon2 = (props) => /* @__PURE__ */ jsx51(
|
|
5718
5775
|
"svg",
|
|
5719
5776
|
{
|
|
5720
5777
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5727,7 +5784,7 @@ var XIcon2 = (props) => /* @__PURE__ */ jsx50(
|
|
|
5727
5784
|
strokeLinecap: "round",
|
|
5728
5785
|
strokeLinejoin: "round",
|
|
5729
5786
|
...props,
|
|
5730
|
-
children: /* @__PURE__ */
|
|
5787
|
+
children: /* @__PURE__ */ jsx51("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
5731
5788
|
}
|
|
5732
5789
|
);
|
|
5733
5790
|
function SheetContent({ className, children, side = "right", ...props }) {
|
|
@@ -5741,7 +5798,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5741
5798
|
});
|
|
5742
5799
|
if (!isPresent) return null;
|
|
5743
5800
|
return /* @__PURE__ */ jsxs21(Portal, { children: [
|
|
5744
|
-
/* @__PURE__ */
|
|
5801
|
+
/* @__PURE__ */ jsx51(SheetOverlay, {}),
|
|
5745
5802
|
/* @__PURE__ */ jsxs21(
|
|
5746
5803
|
"div",
|
|
5747
5804
|
{
|
|
@@ -5762,8 +5819,8 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5762
5819
|
onClick: () => setOpen(false),
|
|
5763
5820
|
className: SHEET_CLOSE,
|
|
5764
5821
|
children: [
|
|
5765
|
-
/* @__PURE__ */
|
|
5766
|
-
/* @__PURE__ */
|
|
5822
|
+
/* @__PURE__ */ jsx51(XIcon2, { className: "size-4" }),
|
|
5823
|
+
/* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Close" })
|
|
5767
5824
|
]
|
|
5768
5825
|
}
|
|
5769
5826
|
)
|
|
@@ -5775,7 +5832,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5775
5832
|
function SheetClose({ asChild = false, onClick, ...props }) {
|
|
5776
5833
|
const { setOpen } = useSheet();
|
|
5777
5834
|
const Comp = asChild ? Slot : "button";
|
|
5778
|
-
return /* @__PURE__ */
|
|
5835
|
+
return /* @__PURE__ */ jsx51(
|
|
5779
5836
|
Comp,
|
|
5780
5837
|
{
|
|
5781
5838
|
"data-slot": "sheet-close",
|
|
@@ -5788,7 +5845,7 @@ function SheetClose({ asChild = false, onClick, ...props }) {
|
|
|
5788
5845
|
);
|
|
5789
5846
|
}
|
|
5790
5847
|
function SheetHeader({ className, ...props }) {
|
|
5791
|
-
return /* @__PURE__ */
|
|
5848
|
+
return /* @__PURE__ */ jsx51(
|
|
5792
5849
|
"div",
|
|
5793
5850
|
{
|
|
5794
5851
|
"data-slot": "sheet-header",
|
|
@@ -5798,7 +5855,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
5798
5855
|
);
|
|
5799
5856
|
}
|
|
5800
5857
|
function SheetFooter({ className, ...props }) {
|
|
5801
|
-
return /* @__PURE__ */
|
|
5858
|
+
return /* @__PURE__ */ jsx51(
|
|
5802
5859
|
"div",
|
|
5803
5860
|
{
|
|
5804
5861
|
"data-slot": "sheet-footer",
|
|
@@ -5808,7 +5865,7 @@ function SheetFooter({ className, ...props }) {
|
|
|
5808
5865
|
);
|
|
5809
5866
|
}
|
|
5810
5867
|
function SheetTitle({ className, ...props }) {
|
|
5811
|
-
return /* @__PURE__ */
|
|
5868
|
+
return /* @__PURE__ */ jsx51(
|
|
5812
5869
|
"h2",
|
|
5813
5870
|
{
|
|
5814
5871
|
"data-slot": "sheet-title",
|
|
@@ -5818,7 +5875,7 @@ function SheetTitle({ className, ...props }) {
|
|
|
5818
5875
|
);
|
|
5819
5876
|
}
|
|
5820
5877
|
function SheetDescription({ className, ...props }) {
|
|
5821
|
-
return /* @__PURE__ */
|
|
5878
|
+
return /* @__PURE__ */ jsx51(
|
|
5822
5879
|
"p",
|
|
5823
5880
|
{
|
|
5824
5881
|
"data-slot": "sheet-description",
|
|
@@ -5829,7 +5886,7 @@ function SheetDescription({ className, ...props }) {
|
|
|
5829
5886
|
}
|
|
5830
5887
|
|
|
5831
5888
|
// src/components/drawer.tsx
|
|
5832
|
-
import * as
|
|
5889
|
+
import * as React62 from "react";
|
|
5833
5890
|
|
|
5834
5891
|
// src/generated/drawer.ts
|
|
5835
5892
|
var DRAWER_CONTENT_BASE = "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex h-auto border transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500";
|
|
@@ -5847,10 +5904,10 @@ var DRAWER_TITLE = "text-ink font-semibold";
|
|
|
5847
5904
|
var DRAWER_DESCRIPTION = "text-ink-soft text-sm";
|
|
5848
5905
|
|
|
5849
5906
|
// src/components/drawer.tsx
|
|
5850
|
-
import { jsx as
|
|
5851
|
-
var DrawerContext =
|
|
5907
|
+
import { jsx as jsx52, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5908
|
+
var DrawerContext = React62.createContext(null);
|
|
5852
5909
|
function useDrawer() {
|
|
5853
|
-
const ctx =
|
|
5910
|
+
const ctx = React62.useContext(DrawerContext);
|
|
5854
5911
|
if (!ctx) throw new Error("Drawer parts must be used within <Drawer>");
|
|
5855
5912
|
return ctx;
|
|
5856
5913
|
}
|
|
@@ -5866,12 +5923,12 @@ function Drawer({
|
|
|
5866
5923
|
defaultValue: defaultOpen,
|
|
5867
5924
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5868
5925
|
});
|
|
5869
|
-
return /* @__PURE__ */
|
|
5926
|
+
return /* @__PURE__ */ jsx52(DrawerContext.Provider, { value: { open: isOpen, setOpen, direction }, children: /* @__PURE__ */ jsx52("div", { "data-slot": "drawer", children }) });
|
|
5870
5927
|
}
|
|
5871
5928
|
function DrawerTrigger({ asChild = false, onClick, ...props }) {
|
|
5872
5929
|
const { setOpen } = useDrawer();
|
|
5873
5930
|
const Comp = asChild ? Slot : "button";
|
|
5874
|
-
return /* @__PURE__ */
|
|
5931
|
+
return /* @__PURE__ */ jsx52(
|
|
5875
5932
|
Comp,
|
|
5876
5933
|
{
|
|
5877
5934
|
"data-slot": "drawer-trigger",
|
|
@@ -5886,7 +5943,7 @@ function DrawerTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5886
5943
|
function DrawerClose({ asChild = false, onClick, ...props }) {
|
|
5887
5944
|
const { setOpen } = useDrawer();
|
|
5888
5945
|
const Comp = asChild ? Slot : "button";
|
|
5889
|
-
return /* @__PURE__ */
|
|
5946
|
+
return /* @__PURE__ */ jsx52(
|
|
5890
5947
|
Comp,
|
|
5891
5948
|
{
|
|
5892
5949
|
"data-slot": "drawer-close",
|
|
@@ -5901,7 +5958,7 @@ function DrawerClose({ asChild = false, onClick, ...props }) {
|
|
|
5901
5958
|
function DrawerOverlay({ className, ...props }) {
|
|
5902
5959
|
const { open, setOpen } = useDrawer();
|
|
5903
5960
|
if (!open) return null;
|
|
5904
|
-
return /* @__PURE__ */
|
|
5961
|
+
return /* @__PURE__ */ jsx52(
|
|
5905
5962
|
"div",
|
|
5906
5963
|
{
|
|
5907
5964
|
"data-slot": "drawer-overlay",
|
|
@@ -5917,7 +5974,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5917
5974
|
const scopeRef = useFocusScope(open);
|
|
5918
5975
|
if (!open) return null;
|
|
5919
5976
|
return /* @__PURE__ */ jsxs22(Portal, { children: [
|
|
5920
|
-
/* @__PURE__ */
|
|
5977
|
+
/* @__PURE__ */ jsx52(
|
|
5921
5978
|
"div",
|
|
5922
5979
|
{
|
|
5923
5980
|
"data-slot": "drawer-overlay",
|
|
@@ -5941,7 +5998,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5941
5998
|
className: cn(DRAWER_CONTENT_BASE, drawerDirectionClasses[direction], className),
|
|
5942
5999
|
...props,
|
|
5943
6000
|
children: [
|
|
5944
|
-
direction === "bottom" ? /* @__PURE__ */
|
|
6001
|
+
direction === "bottom" ? /* @__PURE__ */ jsx52(
|
|
5945
6002
|
"div",
|
|
5946
6003
|
{
|
|
5947
6004
|
"data-slot": "drawer-handle",
|
|
@@ -5955,7 +6012,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5955
6012
|
] });
|
|
5956
6013
|
}
|
|
5957
6014
|
function DrawerHeader({ className, ...props }) {
|
|
5958
|
-
return /* @__PURE__ */
|
|
6015
|
+
return /* @__PURE__ */ jsx52(
|
|
5959
6016
|
"div",
|
|
5960
6017
|
{
|
|
5961
6018
|
"data-slot": "drawer-header",
|
|
@@ -5965,7 +6022,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
5965
6022
|
);
|
|
5966
6023
|
}
|
|
5967
6024
|
function DrawerFooter({ className, ...props }) {
|
|
5968
|
-
return /* @__PURE__ */
|
|
6025
|
+
return /* @__PURE__ */ jsx52(
|
|
5969
6026
|
"div",
|
|
5970
6027
|
{
|
|
5971
6028
|
"data-slot": "drawer-footer",
|
|
@@ -5975,7 +6032,7 @@ function DrawerFooter({ className, ...props }) {
|
|
|
5975
6032
|
);
|
|
5976
6033
|
}
|
|
5977
6034
|
function DrawerTitle({ className, ...props }) {
|
|
5978
|
-
return /* @__PURE__ */
|
|
6035
|
+
return /* @__PURE__ */ jsx52(
|
|
5979
6036
|
"div",
|
|
5980
6037
|
{
|
|
5981
6038
|
"data-slot": "drawer-title",
|
|
@@ -5985,7 +6042,7 @@ function DrawerTitle({ className, ...props }) {
|
|
|
5985
6042
|
);
|
|
5986
6043
|
}
|
|
5987
6044
|
function DrawerDescription({ className, ...props }) {
|
|
5988
|
-
return /* @__PURE__ */
|
|
6045
|
+
return /* @__PURE__ */ jsx52(
|
|
5989
6046
|
"div",
|
|
5990
6047
|
{
|
|
5991
6048
|
"data-slot": "drawer-description",
|
|
@@ -5996,11 +6053,11 @@ function DrawerDescription({ className, ...props }) {
|
|
|
5996
6053
|
}
|
|
5997
6054
|
|
|
5998
6055
|
// src/components/select.tsx
|
|
5999
|
-
import * as
|
|
6000
|
-
import { jsx as
|
|
6001
|
-
var SelectContext =
|
|
6056
|
+
import * as React63 from "react";
|
|
6057
|
+
import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
6058
|
+
var SelectContext = React63.createContext(null);
|
|
6002
6059
|
function useSelect() {
|
|
6003
|
-
const ctx =
|
|
6060
|
+
const ctx = React63.useContext(SelectContext);
|
|
6004
6061
|
if (!ctx) throw new Error("Select parts must be used within <Select>");
|
|
6005
6062
|
return ctx;
|
|
6006
6063
|
}
|
|
@@ -6023,8 +6080,8 @@ function Select({
|
|
|
6023
6080
|
defaultValue: defaultOpen,
|
|
6024
6081
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
6025
6082
|
});
|
|
6026
|
-
const anchorRef =
|
|
6027
|
-
return /* @__PURE__ */
|
|
6083
|
+
const anchorRef = React63.useRef(null);
|
|
6084
|
+
return /* @__PURE__ */ jsx53(
|
|
6028
6085
|
SelectContext.Provider,
|
|
6029
6086
|
{
|
|
6030
6087
|
value: { value: currentValue, setValue, open: isOpen, setOpen, anchorRef },
|
|
@@ -6061,7 +6118,7 @@ function SelectTrigger({
|
|
|
6061
6118
|
...props,
|
|
6062
6119
|
children: [
|
|
6063
6120
|
children,
|
|
6064
|
-
/* @__PURE__ */
|
|
6121
|
+
/* @__PURE__ */ jsx53(
|
|
6065
6122
|
"svg",
|
|
6066
6123
|
{
|
|
6067
6124
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6075,7 +6132,7 @@ function SelectTrigger({
|
|
|
6075
6132
|
strokeLinejoin: "round",
|
|
6076
6133
|
className: "size-4 opacity-50",
|
|
6077
6134
|
"aria-hidden": "true",
|
|
6078
|
-
children: /* @__PURE__ */
|
|
6135
|
+
children: /* @__PURE__ */ jsx53("path", { d: "m6 9 6 6 6-6" })
|
|
6079
6136
|
}
|
|
6080
6137
|
)
|
|
6081
6138
|
]
|
|
@@ -6085,7 +6142,7 @@ function SelectTrigger({
|
|
|
6085
6142
|
function SelectValue({ className, placeholder, ...props }) {
|
|
6086
6143
|
const { value } = useSelect();
|
|
6087
6144
|
const isEmpty = value === "";
|
|
6088
|
-
return /* @__PURE__ */
|
|
6145
|
+
return /* @__PURE__ */ jsx53(
|
|
6089
6146
|
"span",
|
|
6090
6147
|
{
|
|
6091
6148
|
"data-slot": "select-value",
|
|
@@ -6118,13 +6175,13 @@ function SelectContent({
|
|
|
6118
6175
|
onDismiss: () => setOpen(false),
|
|
6119
6176
|
exclude: [anchorRef]
|
|
6120
6177
|
});
|
|
6121
|
-
const items =
|
|
6178
|
+
const items = React63.Children.toArray(children).filter(React63.isValidElement);
|
|
6122
6179
|
const { activeIndex, setActiveIndex, onKeyDown } = useRovingFocus({
|
|
6123
6180
|
count: items.length,
|
|
6124
6181
|
orientation: "vertical"
|
|
6125
6182
|
});
|
|
6126
6183
|
if (!isPresent) return null;
|
|
6127
|
-
return /* @__PURE__ */
|
|
6184
|
+
return /* @__PURE__ */ jsx53(Portal, { children: /* @__PURE__ */ jsx53(
|
|
6128
6185
|
"div",
|
|
6129
6186
|
{
|
|
6130
6187
|
role: "listbox",
|
|
@@ -6140,8 +6197,8 @@ function SelectContent({
|
|
|
6140
6197
|
className
|
|
6141
6198
|
),
|
|
6142
6199
|
...props,
|
|
6143
|
-
children: /* @__PURE__ */
|
|
6144
|
-
(child, index) =>
|
|
6200
|
+
children: /* @__PURE__ */ jsx53("div", { className: "p-1", children: items.map(
|
|
6201
|
+
(child, index) => React63.cloneElement(child, {
|
|
6145
6202
|
__index: index,
|
|
6146
6203
|
__active: index === activeIndex,
|
|
6147
6204
|
__setActive: setActiveIndex
|
|
@@ -6186,7 +6243,7 @@ function SelectItem({
|
|
|
6186
6243
|
),
|
|
6187
6244
|
...props,
|
|
6188
6245
|
children: [
|
|
6189
|
-
selected ? /* @__PURE__ */
|
|
6246
|
+
selected ? /* @__PURE__ */ jsx53("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx53(
|
|
6190
6247
|
"svg",
|
|
6191
6248
|
{
|
|
6192
6249
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6200,19 +6257,19 @@ function SelectItem({
|
|
|
6200
6257
|
strokeLinejoin: "round",
|
|
6201
6258
|
className: "size-4",
|
|
6202
6259
|
"aria-hidden": "true",
|
|
6203
|
-
children: /* @__PURE__ */
|
|
6260
|
+
children: /* @__PURE__ */ jsx53("path", { d: "M20 6 9 17l-5-5" })
|
|
6204
6261
|
}
|
|
6205
6262
|
) }) : null,
|
|
6206
|
-
/* @__PURE__ */
|
|
6263
|
+
/* @__PURE__ */ jsx53("span", { children })
|
|
6207
6264
|
]
|
|
6208
6265
|
}
|
|
6209
6266
|
);
|
|
6210
6267
|
}
|
|
6211
6268
|
function SelectGroup({ className, ...props }) {
|
|
6212
|
-
return /* @__PURE__ */
|
|
6269
|
+
return /* @__PURE__ */ jsx53("div", { role: "group", "data-slot": "select-group", className, ...props });
|
|
6213
6270
|
}
|
|
6214
6271
|
function SelectLabel({ className, ...props }) {
|
|
6215
|
-
return /* @__PURE__ */
|
|
6272
|
+
return /* @__PURE__ */ jsx53(
|
|
6216
6273
|
"div",
|
|
6217
6274
|
{
|
|
6218
6275
|
"data-slot": "select-label",
|
|
@@ -6222,7 +6279,7 @@ function SelectLabel({ className, ...props }) {
|
|
|
6222
6279
|
);
|
|
6223
6280
|
}
|
|
6224
6281
|
function SelectSeparator({ className, ...props }) {
|
|
6225
|
-
return /* @__PURE__ */
|
|
6282
|
+
return /* @__PURE__ */ jsx53(
|
|
6226
6283
|
"div",
|
|
6227
6284
|
{
|
|
6228
6285
|
"data-slot": "select-separator",
|
|
@@ -6233,7 +6290,7 @@ function SelectSeparator({ className, ...props }) {
|
|
|
6233
6290
|
}
|
|
6234
6291
|
|
|
6235
6292
|
// src/components/command.tsx
|
|
6236
|
-
import * as
|
|
6293
|
+
import * as React64 from "react";
|
|
6237
6294
|
|
|
6238
6295
|
// src/generated/command.ts
|
|
6239
6296
|
var COMMAND_ROOT = "bg-popover text-ink flex h-full w-full flex-col overflow-hidden rounded-md";
|
|
@@ -6250,10 +6307,10 @@ var COMMAND_SEPARATOR = "bg-border -mx-1 h-px";
|
|
|
6250
6307
|
var COMMAND_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
6251
6308
|
|
|
6252
6309
|
// src/components/command.tsx
|
|
6253
|
-
import { jsx as
|
|
6254
|
-
var CommandContext =
|
|
6310
|
+
import { jsx as jsx54, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
6311
|
+
var CommandContext = React64.createContext(null);
|
|
6255
6312
|
function useCommand() {
|
|
6256
|
-
const ctx =
|
|
6313
|
+
const ctx = React64.useContext(CommandContext);
|
|
6257
6314
|
if (!ctx) throw new Error("Command parts must be used within <Command>");
|
|
6258
6315
|
return ctx;
|
|
6259
6316
|
}
|
|
@@ -6270,10 +6327,10 @@ function Command({
|
|
|
6270
6327
|
defaultValue: defaultSearch,
|
|
6271
6328
|
...onSearchChange ? { onChange: onSearchChange } : {}
|
|
6272
6329
|
});
|
|
6273
|
-
const [items, setItems] =
|
|
6330
|
+
const [items, setItems] = React64.useState(
|
|
6274
6331
|
() => /* @__PURE__ */ new Map()
|
|
6275
6332
|
);
|
|
6276
|
-
const registerItem =
|
|
6333
|
+
const registerItem = React64.useCallback((id, value) => {
|
|
6277
6334
|
setItems((prev) => {
|
|
6278
6335
|
if (prev.get(id) === value) return prev;
|
|
6279
6336
|
const next = new Map(prev);
|
|
@@ -6281,7 +6338,7 @@ function Command({
|
|
|
6281
6338
|
return next;
|
|
6282
6339
|
});
|
|
6283
6340
|
}, []);
|
|
6284
|
-
const unregisterItem =
|
|
6341
|
+
const unregisterItem = React64.useCallback((id) => {
|
|
6285
6342
|
setItems((prev) => {
|
|
6286
6343
|
if (!prev.has(id)) return prev;
|
|
6287
6344
|
const next = new Map(prev);
|
|
@@ -6290,15 +6347,15 @@ function Command({
|
|
|
6290
6347
|
});
|
|
6291
6348
|
}, []);
|
|
6292
6349
|
const query = currentSearch.trim().toLowerCase();
|
|
6293
|
-
const matches =
|
|
6350
|
+
const matches = React64.useCallback(
|
|
6294
6351
|
(value) => query === "" || value.toLowerCase().includes(query),
|
|
6295
6352
|
[query]
|
|
6296
6353
|
);
|
|
6297
|
-
const hasMatches =
|
|
6354
|
+
const hasMatches = React64.useMemo(
|
|
6298
6355
|
() => [...items.values()].some(matches),
|
|
6299
6356
|
[items, matches]
|
|
6300
6357
|
);
|
|
6301
|
-
return /* @__PURE__ */
|
|
6358
|
+
return /* @__PURE__ */ jsx54(
|
|
6302
6359
|
CommandContext.Provider,
|
|
6303
6360
|
{
|
|
6304
6361
|
value: {
|
|
@@ -6310,7 +6367,7 @@ function Command({
|
|
|
6310
6367
|
matches,
|
|
6311
6368
|
hasMatches
|
|
6312
6369
|
},
|
|
6313
|
-
children: /* @__PURE__ */
|
|
6370
|
+
children: /* @__PURE__ */ jsx54(
|
|
6314
6371
|
"div",
|
|
6315
6372
|
{
|
|
6316
6373
|
"data-slot": "command",
|
|
@@ -6337,7 +6394,7 @@ function CommandDialog({
|
|
|
6337
6394
|
const scopeRef = useFocusScope(isOpen);
|
|
6338
6395
|
if (!isOpen) return null;
|
|
6339
6396
|
return /* @__PURE__ */ jsxs24(Portal, { children: [
|
|
6340
|
-
/* @__PURE__ */
|
|
6397
|
+
/* @__PURE__ */ jsx54(
|
|
6341
6398
|
"div",
|
|
6342
6399
|
{
|
|
6343
6400
|
"data-slot": "command-overlay",
|
|
@@ -6345,7 +6402,7 @@ function CommandDialog({
|
|
|
6345
6402
|
onClick: () => setOpen(false)
|
|
6346
6403
|
}
|
|
6347
6404
|
),
|
|
6348
|
-
/* @__PURE__ */
|
|
6405
|
+
/* @__PURE__ */ jsx54(
|
|
6349
6406
|
"div",
|
|
6350
6407
|
{
|
|
6351
6408
|
role: "dialog",
|
|
@@ -6356,7 +6413,7 @@ function CommandDialog({
|
|
|
6356
6413
|
if (e.key === "Escape") setOpen(false);
|
|
6357
6414
|
},
|
|
6358
6415
|
className: cn(COMMAND_DIALOG_CONTENT, className),
|
|
6359
|
-
children: /* @__PURE__ */
|
|
6416
|
+
children: /* @__PURE__ */ jsx54(Command, { className: COMMAND_DIALOG_COMMAND, children })
|
|
6360
6417
|
}
|
|
6361
6418
|
)
|
|
6362
6419
|
] });
|
|
@@ -6382,12 +6439,12 @@ function CommandInput({
|
|
|
6382
6439
|
className: "size-4 shrink-0 opacity-50",
|
|
6383
6440
|
"aria-hidden": "true",
|
|
6384
6441
|
children: [
|
|
6385
|
-
/* @__PURE__ */
|
|
6386
|
-
/* @__PURE__ */
|
|
6442
|
+
/* @__PURE__ */ jsx54("circle", { cx: "11", cy: "11", r: "8" }),
|
|
6443
|
+
/* @__PURE__ */ jsx54("path", { d: "m21 21-4.3-4.3" })
|
|
6387
6444
|
]
|
|
6388
6445
|
}
|
|
6389
6446
|
),
|
|
6390
|
-
/* @__PURE__ */
|
|
6447
|
+
/* @__PURE__ */ jsx54(
|
|
6391
6448
|
"input",
|
|
6392
6449
|
{
|
|
6393
6450
|
type: "text",
|
|
@@ -6402,7 +6459,7 @@ function CommandInput({
|
|
|
6402
6459
|
] });
|
|
6403
6460
|
}
|
|
6404
6461
|
function CommandList({ className, ...props }) {
|
|
6405
|
-
return /* @__PURE__ */
|
|
6462
|
+
return /* @__PURE__ */ jsx54(
|
|
6406
6463
|
"div",
|
|
6407
6464
|
{
|
|
6408
6465
|
role: "listbox",
|
|
@@ -6415,7 +6472,7 @@ function CommandList({ className, ...props }) {
|
|
|
6415
6472
|
function CommandEmpty({ className, children, ...props }) {
|
|
6416
6473
|
const { query, hasMatches } = useCommand();
|
|
6417
6474
|
if (query === "" || hasMatches) return null;
|
|
6418
|
-
return /* @__PURE__ */
|
|
6475
|
+
return /* @__PURE__ */ jsx54(
|
|
6419
6476
|
"div",
|
|
6420
6477
|
{
|
|
6421
6478
|
"data-slot": "command-empty",
|
|
@@ -6434,7 +6491,7 @@ function CommandGroup({ className, heading, children, ...props }) {
|
|
|
6434
6491
|
className: cn(COMMAND_GROUP, className),
|
|
6435
6492
|
...props,
|
|
6436
6493
|
children: [
|
|
6437
|
-
heading ? /* @__PURE__ */
|
|
6494
|
+
heading ? /* @__PURE__ */ jsx54("div", { "data-slot": "command-group-heading", children: heading }) : null,
|
|
6438
6495
|
children
|
|
6439
6496
|
]
|
|
6440
6497
|
}
|
|
@@ -6449,13 +6506,13 @@ function CommandItem({
|
|
|
6449
6506
|
...props
|
|
6450
6507
|
}) {
|
|
6451
6508
|
const { registerItem, unregisterItem, matches } = useCommand();
|
|
6452
|
-
const id =
|
|
6453
|
-
|
|
6509
|
+
const id = React64.useId();
|
|
6510
|
+
React64.useEffect(() => {
|
|
6454
6511
|
registerItem(id, value);
|
|
6455
6512
|
return () => unregisterItem(id);
|
|
6456
6513
|
}, [id, value, registerItem, unregisterItem]);
|
|
6457
6514
|
if (!matches(value)) return null;
|
|
6458
|
-
return /* @__PURE__ */
|
|
6515
|
+
return /* @__PURE__ */ jsx54(
|
|
6459
6516
|
"div",
|
|
6460
6517
|
{
|
|
6461
6518
|
role: "option",
|
|
@@ -6473,7 +6530,7 @@ function CommandItem({
|
|
|
6473
6530
|
);
|
|
6474
6531
|
}
|
|
6475
6532
|
function CommandSeparator({ className, ...props }) {
|
|
6476
|
-
return /* @__PURE__ */
|
|
6533
|
+
return /* @__PURE__ */ jsx54(
|
|
6477
6534
|
"div",
|
|
6478
6535
|
{
|
|
6479
6536
|
"data-slot": "command-separator",
|
|
@@ -6483,7 +6540,7 @@ function CommandSeparator({ className, ...props }) {
|
|
|
6483
6540
|
);
|
|
6484
6541
|
}
|
|
6485
6542
|
function CommandShortcut({ className, ...props }) {
|
|
6486
|
-
return /* @__PURE__ */
|
|
6543
|
+
return /* @__PURE__ */ jsx54(
|
|
6487
6544
|
"span",
|
|
6488
6545
|
{
|
|
6489
6546
|
"data-slot": "command-shortcut",
|
|
@@ -6494,7 +6551,7 @@ function CommandShortcut({ className, ...props }) {
|
|
|
6494
6551
|
}
|
|
6495
6552
|
|
|
6496
6553
|
// src/components/chart.tsx
|
|
6497
|
-
import * as
|
|
6554
|
+
import * as React65 from "react";
|
|
6498
6555
|
|
|
6499
6556
|
// src/generated/chart.ts
|
|
6500
6557
|
var CHART_CONTAINER = "flex aspect-video justify-center text-xs [&_.recharts-layer]:outline-hidden [&_.recharts-surface]:outline-hidden [&_svg]:outline-hidden";
|
|
@@ -6502,10 +6559,10 @@ var CHART_TOOLTIP = "border-border/50 bg-background grid min-w-[8rem] items-star
|
|
|
6502
6559
|
var CHART_LEGEND = "flex items-center justify-center gap-4";
|
|
6503
6560
|
|
|
6504
6561
|
// src/components/chart.tsx
|
|
6505
|
-
import { Fragment as Fragment7, jsx as
|
|
6506
|
-
var ChartContext =
|
|
6562
|
+
import { Fragment as Fragment7, jsx as jsx55, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
6563
|
+
var ChartContext = React65.createContext(null);
|
|
6507
6564
|
function useChart() {
|
|
6508
|
-
const context =
|
|
6565
|
+
const context = React65.useContext(ChartContext);
|
|
6509
6566
|
if (!context) {
|
|
6510
6567
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
6511
6568
|
}
|
|
@@ -6518,9 +6575,9 @@ function ChartContainer({
|
|
|
6518
6575
|
config,
|
|
6519
6576
|
...props
|
|
6520
6577
|
}) {
|
|
6521
|
-
const uniqueId =
|
|
6578
|
+
const uniqueId = React65.useId();
|
|
6522
6579
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
6523
|
-
return /* @__PURE__ */
|
|
6580
|
+
return /* @__PURE__ */ jsx55(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs25(
|
|
6524
6581
|
"div",
|
|
6525
6582
|
{
|
|
6526
6583
|
"data-slot": "chart",
|
|
@@ -6528,7 +6585,7 @@ function ChartContainer({
|
|
|
6528
6585
|
className: cn(CHART_CONTAINER, className),
|
|
6529
6586
|
...props,
|
|
6530
6587
|
children: [
|
|
6531
|
-
/* @__PURE__ */
|
|
6588
|
+
/* @__PURE__ */ jsx55(ChartStyle, { id: chartId, config }),
|
|
6532
6589
|
children
|
|
6533
6590
|
]
|
|
6534
6591
|
}
|
|
@@ -6539,7 +6596,7 @@ var ChartStyle = ({ id, config }) => {
|
|
|
6539
6596
|
if (!colorConfig.length) {
|
|
6540
6597
|
return null;
|
|
6541
6598
|
}
|
|
6542
|
-
return /* @__PURE__ */
|
|
6599
|
+
return /* @__PURE__ */ jsx55(
|
|
6543
6600
|
"style",
|
|
6544
6601
|
{
|
|
6545
6602
|
dangerouslySetInnerHTML: {
|
|
@@ -6550,7 +6607,7 @@ ${colorConfig.map(([key, itemConfig]) => ` --color-${key}: ${itemConfig.color};
|
|
|
6550
6607
|
}
|
|
6551
6608
|
);
|
|
6552
6609
|
};
|
|
6553
|
-
var ChartTooltip = ({ children }) => /* @__PURE__ */
|
|
6610
|
+
var ChartTooltip = ({ children }) => /* @__PURE__ */ jsx55(Fragment7, { children });
|
|
6554
6611
|
function ChartTooltipContent({
|
|
6555
6612
|
className,
|
|
6556
6613
|
items = [],
|
|
@@ -6569,15 +6626,15 @@ function ChartTooltipContent({
|
|
|
6569
6626
|
"data-slot": "chart-tooltip",
|
|
6570
6627
|
className: cn(CHART_TOOLTIP, className),
|
|
6571
6628
|
children: [
|
|
6572
|
-
!hideLabel && label ? /* @__PURE__ */
|
|
6573
|
-
/* @__PURE__ */
|
|
6629
|
+
!hideLabel && label ? /* @__PURE__ */ jsx55("div", { className: cn("font-medium", labelClassName), children: label }) : null,
|
|
6630
|
+
/* @__PURE__ */ jsx55("div", { className: "grid gap-1.5", children: items.map((item, index) => /* @__PURE__ */ jsxs25(
|
|
6574
6631
|
"div",
|
|
6575
6632
|
{
|
|
6576
6633
|
className: cn(
|
|
6577
6634
|
"[&>svg]:text-ink-soft flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 items-center"
|
|
6578
6635
|
),
|
|
6579
6636
|
children: [
|
|
6580
|
-
!hideIndicator && /* @__PURE__ */
|
|
6637
|
+
!hideIndicator && /* @__PURE__ */ jsx55(
|
|
6581
6638
|
"div",
|
|
6582
6639
|
{
|
|
6583
6640
|
className: "shrink-0 rounded-[2px] h-2.5 w-2.5",
|
|
@@ -6588,8 +6645,8 @@ function ChartTooltipContent({
|
|
|
6588
6645
|
}
|
|
6589
6646
|
),
|
|
6590
6647
|
/* @__PURE__ */ jsxs25("div", { className: "flex flex-1 justify-between leading-none items-center", children: [
|
|
6591
|
-
/* @__PURE__ */
|
|
6592
|
-
item.value !== void 0 && /* @__PURE__ */
|
|
6648
|
+
/* @__PURE__ */ jsx55("span", { className: "text-ink-soft", children: item.label }),
|
|
6649
|
+
item.value !== void 0 && /* @__PURE__ */ jsx55("span", { className: "text-ink font-mono font-medium tabular-nums", children: item.value })
|
|
6593
6650
|
] })
|
|
6594
6651
|
]
|
|
6595
6652
|
},
|
|
@@ -6599,7 +6656,7 @@ function ChartTooltipContent({
|
|
|
6599
6656
|
}
|
|
6600
6657
|
);
|
|
6601
6658
|
}
|
|
6602
|
-
var ChartLegend = ({ children }) => /* @__PURE__ */
|
|
6659
|
+
var ChartLegend = ({ children }) => /* @__PURE__ */ jsx55(Fragment7, { children });
|
|
6603
6660
|
function ChartLegendContent({
|
|
6604
6661
|
className,
|
|
6605
6662
|
hideIcon = false,
|
|
@@ -6613,7 +6670,7 @@ function ChartLegendContent({
|
|
|
6613
6670
|
if (!rows.length) {
|
|
6614
6671
|
return null;
|
|
6615
6672
|
}
|
|
6616
|
-
return /* @__PURE__ */
|
|
6673
|
+
return /* @__PURE__ */ jsx55(
|
|
6617
6674
|
"div",
|
|
6618
6675
|
{
|
|
6619
6676
|
"data-slot": "chart-legend",
|
|
@@ -6625,7 +6682,7 @@ function ChartLegendContent({
|
|
|
6625
6682
|
"[&>svg]:text-ink-soft flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
|
|
6626
6683
|
),
|
|
6627
6684
|
children: [
|
|
6628
|
-
!hideIcon && /* @__PURE__ */
|
|
6685
|
+
!hideIcon && /* @__PURE__ */ jsx55(
|
|
6629
6686
|
"div",
|
|
6630
6687
|
{
|
|
6631
6688
|
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
@@ -6642,7 +6699,7 @@ function ChartLegendContent({
|
|
|
6642
6699
|
}
|
|
6643
6700
|
|
|
6644
6701
|
// src/components/calendar.tsx
|
|
6645
|
-
import * as
|
|
6702
|
+
import * as React66 from "react";
|
|
6646
6703
|
|
|
6647
6704
|
// src/generated/calendar.ts
|
|
6648
6705
|
var CALENDAR_ROOT = "bg-background p-3 w-fit";
|
|
@@ -6660,7 +6717,7 @@ var CALENDAR_DAY_SELECTED = "bg-primary text-on-primary";
|
|
|
6660
6717
|
var CALENDAR_DAY_TODAY = "bg-hover text-ink rounded-md";
|
|
6661
6718
|
|
|
6662
6719
|
// src/components/calendar.tsx
|
|
6663
|
-
import { jsx as
|
|
6720
|
+
import { jsx as jsx56, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
6664
6721
|
var MONTHS = [
|
|
6665
6722
|
"January",
|
|
6666
6723
|
"February",
|
|
@@ -6679,7 +6736,7 @@ var WEEKDAYS = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
|
|
|
6679
6736
|
var CHEVRON_LEFT = "m15 18-6-6 6-6";
|
|
6680
6737
|
var CHEVRON_RIGHT = "m9 18 6-6-6-6";
|
|
6681
6738
|
function Chevron({ d }) {
|
|
6682
|
-
return /* @__PURE__ */
|
|
6739
|
+
return /* @__PURE__ */ jsx56(
|
|
6683
6740
|
"svg",
|
|
6684
6741
|
{
|
|
6685
6742
|
className: "size-4",
|
|
@@ -6693,7 +6750,7 @@ function Chevron({ d }) {
|
|
|
6693
6750
|
strokeLinecap: "round",
|
|
6694
6751
|
strokeLinejoin: "round",
|
|
6695
6752
|
"aria-hidden": true,
|
|
6696
|
-
children: /* @__PURE__ */
|
|
6753
|
+
children: /* @__PURE__ */ jsx56("path", { d })
|
|
6697
6754
|
}
|
|
6698
6755
|
);
|
|
6699
6756
|
}
|
|
@@ -6706,6 +6763,21 @@ function mondayIndex(d) {
|
|
|
6706
6763
|
function sameDay(a, b) {
|
|
6707
6764
|
return !!a && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
|
|
6708
6765
|
}
|
|
6766
|
+
function startOfDay(d) {
|
|
6767
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
6768
|
+
}
|
|
6769
|
+
function outOfRange(day, min, max) {
|
|
6770
|
+
const t = day.getTime();
|
|
6771
|
+
return !!min && t < startOfDay(min).getTime() || !!max && t > startOfDay(max).getTime();
|
|
6772
|
+
}
|
|
6773
|
+
var MONDAY = new Date(2024, 0, 1);
|
|
6774
|
+
function localisedWeekdays(locale) {
|
|
6775
|
+
const fmt = new Intl.DateTimeFormat(locale, { weekday: "short" });
|
|
6776
|
+
return Array.from(
|
|
6777
|
+
{ length: 7 },
|
|
6778
|
+
(_, i) => fmt.format(new Date(MONDAY.getFullYear(), MONDAY.getMonth(), MONDAY.getDate() + i))
|
|
6779
|
+
);
|
|
6780
|
+
}
|
|
6709
6781
|
function Calendar({
|
|
6710
6782
|
selected,
|
|
6711
6783
|
onSelect,
|
|
@@ -6713,9 +6785,15 @@ function Calendar({
|
|
|
6713
6785
|
defaultMonth,
|
|
6714
6786
|
onMonthChange,
|
|
6715
6787
|
today = /* @__PURE__ */ new Date(),
|
|
6788
|
+
min,
|
|
6789
|
+
max,
|
|
6790
|
+
disabled = false,
|
|
6791
|
+
previousMonthLabel = "Previous month",
|
|
6792
|
+
nextMonthLabel = "Next month",
|
|
6793
|
+
locale,
|
|
6716
6794
|
className
|
|
6717
6795
|
}) {
|
|
6718
|
-
const [internal, setInternal] =
|
|
6796
|
+
const [internal, setInternal] = React66.useState(
|
|
6719
6797
|
() => startOfMonth(defaultMonth ?? /* @__PURE__ */ new Date())
|
|
6720
6798
|
);
|
|
6721
6799
|
const view = month ? startOfMonth(month) : internal;
|
|
@@ -6726,7 +6804,8 @@ function Calendar({
|
|
|
6726
6804
|
};
|
|
6727
6805
|
const year = view.getFullYear();
|
|
6728
6806
|
const monthIndex = view.getMonth();
|
|
6729
|
-
const caption = `${MONTHS[monthIndex]} ${year}`;
|
|
6807
|
+
const caption = locale ? new Intl.DateTimeFormat(locale, { month: "long", year: "numeric" }).format(view) : `${MONTHS[monthIndex]} ${year}`;
|
|
6808
|
+
const weekdays = locale ? localisedWeekdays(locale) : WEEKDAYS;
|
|
6730
6809
|
const lead = mondayIndex(view);
|
|
6731
6810
|
const total = new Date(year, monthIndex + 1, 0).getDate();
|
|
6732
6811
|
const cells = [];
|
|
@@ -6737,7 +6816,8 @@ function Calendar({
|
|
|
6737
6816
|
for (let i = 0; i < cells.length; i += 7) weeks.push(cells.slice(i, i + 7));
|
|
6738
6817
|
const navClass = buttonVariants({
|
|
6739
6818
|
variant: "ghost",
|
|
6740
|
-
size: "
|
|
6819
|
+
size: "md",
|
|
6820
|
+
icon: true,
|
|
6741
6821
|
className: CALENDAR_NAV_BUTTON
|
|
6742
6822
|
});
|
|
6743
6823
|
return /* @__PURE__ */ jsxs26(
|
|
@@ -6748,41 +6828,43 @@ function Calendar({
|
|
|
6748
6828
|
className: cn(CALENDAR_ROOT, className),
|
|
6749
6829
|
children: [
|
|
6750
6830
|
/* @__PURE__ */ jsxs26("div", { className: CALENDAR_NAV, children: [
|
|
6751
|
-
/* @__PURE__ */
|
|
6831
|
+
/* @__PURE__ */ jsx56(
|
|
6752
6832
|
"button",
|
|
6753
6833
|
{
|
|
6754
6834
|
type: "button",
|
|
6755
6835
|
className: navClass,
|
|
6756
|
-
"aria-label":
|
|
6836
|
+
"aria-label": previousMonthLabel,
|
|
6837
|
+
disabled,
|
|
6757
6838
|
onClick: () => go(-1),
|
|
6758
|
-
children: /* @__PURE__ */
|
|
6839
|
+
children: /* @__PURE__ */ jsx56(Chevron, { d: CHEVRON_LEFT })
|
|
6759
6840
|
}
|
|
6760
6841
|
),
|
|
6761
|
-
/* @__PURE__ */
|
|
6762
|
-
/* @__PURE__ */
|
|
6842
|
+
/* @__PURE__ */ jsx56("div", { "data-slot": "calendar-caption", className: CALENDAR_CAPTION, children: caption }),
|
|
6843
|
+
/* @__PURE__ */ jsx56(
|
|
6763
6844
|
"button",
|
|
6764
6845
|
{
|
|
6765
6846
|
type: "button",
|
|
6766
6847
|
className: navClass,
|
|
6767
|
-
"aria-label":
|
|
6848
|
+
"aria-label": nextMonthLabel,
|
|
6849
|
+
disabled,
|
|
6768
6850
|
onClick: () => go(1),
|
|
6769
|
-
children: /* @__PURE__ */
|
|
6851
|
+
children: /* @__PURE__ */ jsx56(Chevron, { d: CHEVRON_RIGHT })
|
|
6770
6852
|
}
|
|
6771
6853
|
)
|
|
6772
6854
|
] }),
|
|
6773
6855
|
/* @__PURE__ */ jsxs26("table", { className: CALENDAR_GRID, role: "grid", children: [
|
|
6774
|
-
/* @__PURE__ */
|
|
6856
|
+
/* @__PURE__ */ jsx56("thead", { children: /* @__PURE__ */ jsx56("tr", { className: CALENDAR_WEEKDAY_ROW, children: weekdays.map((wd, i) => /* @__PURE__ */ jsx56(
|
|
6775
6857
|
"th",
|
|
6776
6858
|
{
|
|
6777
6859
|
scope: "col",
|
|
6778
6860
|
className: CALENDAR_WEEKDAY,
|
|
6779
6861
|
children: wd
|
|
6780
6862
|
},
|
|
6781
|
-
|
|
6863
|
+
i
|
|
6782
6864
|
)) }) }),
|
|
6783
|
-
/* @__PURE__ */
|
|
6865
|
+
/* @__PURE__ */ jsx56("tbody", { children: weeks.map((week, wi) => /* @__PURE__ */ jsx56("tr", { className: CALENDAR_WEEK, children: week.map((cell, ci) => {
|
|
6784
6866
|
if (cell === null) {
|
|
6785
|
-
return /* @__PURE__ */
|
|
6867
|
+
return /* @__PURE__ */ jsx56(
|
|
6786
6868
|
"td",
|
|
6787
6869
|
{
|
|
6788
6870
|
className: CALENDAR_DAY_EMPTY
|
|
@@ -6793,24 +6875,29 @@ function Calendar({
|
|
|
6793
6875
|
const date = new Date(year, monthIndex, cell);
|
|
6794
6876
|
const isSelected = sameDay(selected, date);
|
|
6795
6877
|
const isToday = sameDay(today, date);
|
|
6796
|
-
|
|
6878
|
+
const isDisabled = disabled || outOfRange(date, min, max);
|
|
6879
|
+
return /* @__PURE__ */ jsx56(
|
|
6797
6880
|
"td",
|
|
6798
6881
|
{
|
|
6799
6882
|
role: "gridcell",
|
|
6800
6883
|
"aria-selected": isSelected,
|
|
6801
6884
|
className: CALENDAR_DAY_CELL,
|
|
6802
|
-
children: /* @__PURE__ */
|
|
6885
|
+
children: /* @__PURE__ */ jsx56(
|
|
6803
6886
|
"button",
|
|
6804
6887
|
{
|
|
6805
6888
|
type: "button",
|
|
6806
6889
|
"data-slot": "calendar-day",
|
|
6807
6890
|
"data-selected": isSelected,
|
|
6808
6891
|
"data-today": isToday,
|
|
6809
|
-
|
|
6892
|
+
...isDisabled ? { "data-disabled": "true", disabled: true } : {},
|
|
6893
|
+
onClick: () => {
|
|
6894
|
+
if (!isDisabled) onSelect?.(date);
|
|
6895
|
+
},
|
|
6810
6896
|
className: cn(
|
|
6811
6897
|
buttonVariants({
|
|
6812
6898
|
variant: "ghost",
|
|
6813
|
-
size: "
|
|
6899
|
+
size: "md",
|
|
6900
|
+
icon: true,
|
|
6814
6901
|
className: CALENDAR_DAY
|
|
6815
6902
|
}),
|
|
6816
6903
|
isSelected ? CALENDAR_DAY_SELECTED : isToday ? CALENDAR_DAY_TODAY : void 0
|
|
@@ -6828,8 +6915,261 @@ function Calendar({
|
|
|
6828
6915
|
);
|
|
6829
6916
|
}
|
|
6830
6917
|
|
|
6918
|
+
// src/components/date-time-picker.tsx
|
|
6919
|
+
import * as React67 from "react";
|
|
6920
|
+
|
|
6921
|
+
// src/generated/date-time-picker.ts
|
|
6922
|
+
var DATE_TIME_PICKER_TRIGGER = "w-full justify-start gap-2 text-left font-normal data-[placeholder]:text-ink-soft [&>svg]:text-ink-soft";
|
|
6923
|
+
var DATE_TIME_PICKER_CONTENT = "w-auto p-0";
|
|
6924
|
+
var DATE_TIME_PICKER_TIME = "flex items-center gap-2 border-t border-border px-3 py-2";
|
|
6925
|
+
var DATE_TIME_PICKER_TIME_INPUT = "w-14 text-center tabular-nums";
|
|
6926
|
+
var DATE_TIME_PICKER_TIME_SEPARATOR = "text-ink-soft select-none";
|
|
6927
|
+
var DATE_TIME_PICKER_CLEAR = "ml-auto";
|
|
6928
|
+
|
|
6929
|
+
// src/components/date-time-picker.tsx
|
|
6930
|
+
import { jsx as jsx57, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
6931
|
+
var CALENDAR_ICON = [
|
|
6932
|
+
"M8 2v4",
|
|
6933
|
+
"M16 2v4",
|
|
6934
|
+
"M3 10h18",
|
|
6935
|
+
"M5 4h14a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"
|
|
6936
|
+
];
|
|
6937
|
+
function CalendarIcon() {
|
|
6938
|
+
return /* @__PURE__ */ jsx57(
|
|
6939
|
+
"svg",
|
|
6940
|
+
{
|
|
6941
|
+
className: "size-4",
|
|
6942
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
6943
|
+
width: "24",
|
|
6944
|
+
height: "24",
|
|
6945
|
+
viewBox: "0 0 24 24",
|
|
6946
|
+
fill: "none",
|
|
6947
|
+
stroke: "currentColor",
|
|
6948
|
+
strokeWidth: "2",
|
|
6949
|
+
strokeLinecap: "round",
|
|
6950
|
+
strokeLinejoin: "round",
|
|
6951
|
+
"aria-hidden": true,
|
|
6952
|
+
children: CALENDAR_ICON.map((d) => /* @__PURE__ */ jsx57("path", { d }, d))
|
|
6953
|
+
}
|
|
6954
|
+
);
|
|
6955
|
+
}
|
|
6956
|
+
var pad = (n) => String(n).padStart(2, "0");
|
|
6957
|
+
function atMinute(d) {
|
|
6958
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes());
|
|
6959
|
+
}
|
|
6960
|
+
function clampMoment(d, min, max) {
|
|
6961
|
+
const lo = min && atMinute(min);
|
|
6962
|
+
const hi = max && atMinute(max);
|
|
6963
|
+
if (lo && d.getTime() < lo.getTime()) return lo;
|
|
6964
|
+
if (hi && d.getTime() > hi.getTime()) return hi;
|
|
6965
|
+
return d;
|
|
6966
|
+
}
|
|
6967
|
+
function parseField(raw, max) {
|
|
6968
|
+
const digits = raw.replace(/\D/g, "").slice(-2);
|
|
6969
|
+
if (digits === "") return null;
|
|
6970
|
+
return Math.min(Number(digits), max);
|
|
6971
|
+
}
|
|
6972
|
+
var selectAll = (e) => e.currentTarget.select();
|
|
6973
|
+
function isoLabel(d) {
|
|
6974
|
+
return `${d.getFullYear().toString().padStart(4, "0")}-${pad(d.getMonth() + 1)}-${pad(
|
|
6975
|
+
d.getDate()
|
|
6976
|
+
)} ${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
6977
|
+
}
|
|
6978
|
+
function DateTimePicker({
|
|
6979
|
+
value: valueProp,
|
|
6980
|
+
defaultValue = null,
|
|
6981
|
+
onChange,
|
|
6982
|
+
min,
|
|
6983
|
+
max,
|
|
6984
|
+
locale,
|
|
6985
|
+
format,
|
|
6986
|
+
placeholder = "",
|
|
6987
|
+
labels = {},
|
|
6988
|
+
disabled = false,
|
|
6989
|
+
name,
|
|
6990
|
+
today = /* @__PURE__ */ new Date(),
|
|
6991
|
+
open,
|
|
6992
|
+
defaultOpen = false,
|
|
6993
|
+
onOpenChange,
|
|
6994
|
+
align = "start",
|
|
6995
|
+
className,
|
|
6996
|
+
id,
|
|
6997
|
+
...rest
|
|
6998
|
+
}) {
|
|
6999
|
+
const [value, setValue] = useControllableState({
|
|
7000
|
+
...valueProp !== void 0 ? { value: valueProp } : {},
|
|
7001
|
+
defaultValue,
|
|
7002
|
+
...onChange ? { onChange } : {}
|
|
7003
|
+
});
|
|
7004
|
+
const [isOpen, setOpen] = useControllableState({
|
|
7005
|
+
...open !== void 0 ? { value: open } : {},
|
|
7006
|
+
defaultValue: defaultOpen,
|
|
7007
|
+
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
7008
|
+
});
|
|
7009
|
+
const rootRef = React67.useRef(null);
|
|
7010
|
+
const hoursRef = React67.useRef(null);
|
|
7011
|
+
React67.useEffect(() => {
|
|
7012
|
+
if (!isOpen) return;
|
|
7013
|
+
hoursRef.current?.focus();
|
|
7014
|
+
return () => {
|
|
7015
|
+
const active = document.activeElement;
|
|
7016
|
+
const content = hoursRef.current?.closest("[data-slot=date-time-picker-content]");
|
|
7017
|
+
const lost = !active || active === document.body || !!content?.contains(active);
|
|
7018
|
+
if (lost) {
|
|
7019
|
+
rootRef.current?.querySelector("[data-slot=date-time-picker-trigger]")?.focus();
|
|
7020
|
+
}
|
|
7021
|
+
};
|
|
7022
|
+
}, [isOpen]);
|
|
7023
|
+
const emit = (next) => setValue(clampMoment(atMinute(next), min, max));
|
|
7024
|
+
const base = () => value ? new Date(value.getTime()) : new Date(today.getFullYear(), today.getMonth(), today.getDate());
|
|
7025
|
+
const onSelect = (day) => emit(
|
|
7026
|
+
new Date(
|
|
7027
|
+
day.getFullYear(),
|
|
7028
|
+
day.getMonth(),
|
|
7029
|
+
day.getDate(),
|
|
7030
|
+
value?.getHours() ?? 0,
|
|
7031
|
+
value?.getMinutes() ?? 0
|
|
7032
|
+
)
|
|
7033
|
+
);
|
|
7034
|
+
const onHours = (e) => {
|
|
7035
|
+
const hour = parseField(e.target.value, 23);
|
|
7036
|
+
if (hour === null) return;
|
|
7037
|
+
const next = base();
|
|
7038
|
+
next.setHours(hour);
|
|
7039
|
+
emit(next);
|
|
7040
|
+
};
|
|
7041
|
+
const onMinutes = (e) => {
|
|
7042
|
+
const minute = parseField(e.target.value, 59);
|
|
7043
|
+
if (minute === null) return;
|
|
7044
|
+
const next = base();
|
|
7045
|
+
next.setMinutes(minute);
|
|
7046
|
+
emit(next);
|
|
7047
|
+
};
|
|
7048
|
+
const onClear = () => {
|
|
7049
|
+
setValue(null);
|
|
7050
|
+
setOpen(false);
|
|
7051
|
+
};
|
|
7052
|
+
const onContentBlur = (e) => {
|
|
7053
|
+
const next = e.relatedTarget;
|
|
7054
|
+
if (!(next instanceof Node)) return;
|
|
7055
|
+
if (e.currentTarget.contains(next) || rootRef.current?.contains(next)) return;
|
|
7056
|
+
setOpen(false);
|
|
7057
|
+
};
|
|
7058
|
+
const label = value ? format ? format(value) : locale ? (
|
|
7059
|
+
// The fields are 24-hour, so the label is too — even where the locale
|
|
7060
|
+
// would default to 12-hour ("2:05 PM" over a "14" hours field).
|
|
7061
|
+
new Intl.DateTimeFormat(locale, {
|
|
7062
|
+
dateStyle: "medium",
|
|
7063
|
+
timeStyle: "short",
|
|
7064
|
+
hourCycle: "h23"
|
|
7065
|
+
}).format(value)
|
|
7066
|
+
) : isoLabel(value) : placeholder;
|
|
7067
|
+
return /* @__PURE__ */ jsx57("div", { "data-slot": "date-time-picker", ref: rootRef, children: /* @__PURE__ */ jsxs27(Popover, { open: isOpen, onOpenChange: setOpen, children: [
|
|
7068
|
+
/* @__PURE__ */ jsxs27(
|
|
7069
|
+
PopoverTrigger,
|
|
7070
|
+
{
|
|
7071
|
+
type: "button",
|
|
7072
|
+
"data-slot": "date-time-picker-trigger",
|
|
7073
|
+
"data-placeholder": value ? void 0 : "true",
|
|
7074
|
+
"aria-haspopup": "dialog",
|
|
7075
|
+
className: cn(
|
|
7076
|
+
buttonVariants({ variant: "outline", size: "md" }),
|
|
7077
|
+
DATE_TIME_PICKER_TRIGGER,
|
|
7078
|
+
className
|
|
7079
|
+
),
|
|
7080
|
+
disabled,
|
|
7081
|
+
...id !== void 0 ? { id } : {},
|
|
7082
|
+
...rest,
|
|
7083
|
+
children: [
|
|
7084
|
+
/* @__PURE__ */ jsx57(CalendarIcon, {}),
|
|
7085
|
+
/* @__PURE__ */ jsx57("span", { children: label })
|
|
7086
|
+
]
|
|
7087
|
+
}
|
|
7088
|
+
),
|
|
7089
|
+
name !== void 0 && /* @__PURE__ */ jsx57(
|
|
7090
|
+
"input",
|
|
7091
|
+
{
|
|
7092
|
+
type: "hidden",
|
|
7093
|
+
name,
|
|
7094
|
+
value: value ? String(Math.floor(value.getTime() / 1e3)) : ""
|
|
7095
|
+
}
|
|
7096
|
+
),
|
|
7097
|
+
/* @__PURE__ */ jsxs27(
|
|
7098
|
+
PopoverContent,
|
|
7099
|
+
{
|
|
7100
|
+
"data-slot": "date-time-picker-content",
|
|
7101
|
+
role: "dialog",
|
|
7102
|
+
"aria-label": labels.dialog ?? "Choose date and time",
|
|
7103
|
+
align,
|
|
7104
|
+
onBlur: onContentBlur,
|
|
7105
|
+
className: DATE_TIME_PICKER_CONTENT,
|
|
7106
|
+
children: [
|
|
7107
|
+
/* @__PURE__ */ jsx57(
|
|
7108
|
+
Calendar,
|
|
7109
|
+
{
|
|
7110
|
+
...value ? { selected: value } : {},
|
|
7111
|
+
onSelect,
|
|
7112
|
+
defaultMonth: value ?? min ?? today,
|
|
7113
|
+
today,
|
|
7114
|
+
disabled,
|
|
7115
|
+
...min ? { min } : {},
|
|
7116
|
+
...max ? { max } : {},
|
|
7117
|
+
...locale !== void 0 ? { locale } : {},
|
|
7118
|
+
...labels.previousMonth !== void 0 ? { previousMonthLabel: labels.previousMonth } : {},
|
|
7119
|
+
...labels.nextMonth !== void 0 ? { nextMonthLabel: labels.nextMonth } : {}
|
|
7120
|
+
}
|
|
7121
|
+
),
|
|
7122
|
+
/* @__PURE__ */ jsxs27("div", { className: DATE_TIME_PICKER_TIME, "data-slot": "date-time-picker-time", children: [
|
|
7123
|
+
/* @__PURE__ */ jsx57(
|
|
7124
|
+
Input,
|
|
7125
|
+
{
|
|
7126
|
+
type: "text",
|
|
7127
|
+
inputMode: "numeric",
|
|
7128
|
+
onFocus: selectAll,
|
|
7129
|
+
className: DATE_TIME_PICKER_TIME_INPUT,
|
|
7130
|
+
ref: hoursRef,
|
|
7131
|
+
"data-slot": "date-time-picker-hours",
|
|
7132
|
+
"aria-label": labels.hours ?? "Hours",
|
|
7133
|
+
value: pad(value?.getHours() ?? 0),
|
|
7134
|
+
disabled,
|
|
7135
|
+
onChange: onHours
|
|
7136
|
+
}
|
|
7137
|
+
),
|
|
7138
|
+
/* @__PURE__ */ jsx57("span", { className: DATE_TIME_PICKER_TIME_SEPARATOR, "aria-hidden": true, children: ":" }),
|
|
7139
|
+
/* @__PURE__ */ jsx57(
|
|
7140
|
+
Input,
|
|
7141
|
+
{
|
|
7142
|
+
type: "text",
|
|
7143
|
+
inputMode: "numeric",
|
|
7144
|
+
onFocus: selectAll,
|
|
7145
|
+
className: DATE_TIME_PICKER_TIME_INPUT,
|
|
7146
|
+
"data-slot": "date-time-picker-minutes",
|
|
7147
|
+
"aria-label": labels.minutes ?? "Minutes",
|
|
7148
|
+
value: pad(value?.getMinutes() ?? 0),
|
|
7149
|
+
disabled,
|
|
7150
|
+
onChange: onMinutes
|
|
7151
|
+
}
|
|
7152
|
+
),
|
|
7153
|
+
/* @__PURE__ */ jsx57(
|
|
7154
|
+
"button",
|
|
7155
|
+
{
|
|
7156
|
+
type: "button",
|
|
7157
|
+
className: buttonVariants({ variant: "ghost", size: "sm", className: DATE_TIME_PICKER_CLEAR }),
|
|
7158
|
+
"data-slot": "date-time-picker-clear",
|
|
7159
|
+
disabled,
|
|
7160
|
+
onClick: onClear,
|
|
7161
|
+
children: labels.clear ?? "Clear"
|
|
7162
|
+
}
|
|
7163
|
+
)
|
|
7164
|
+
] })
|
|
7165
|
+
]
|
|
7166
|
+
}
|
|
7167
|
+
)
|
|
7168
|
+
] }) });
|
|
7169
|
+
}
|
|
7170
|
+
|
|
6831
7171
|
// src/components/sonner.tsx
|
|
6832
|
-
import * as
|
|
7172
|
+
import * as React68 from "react";
|
|
6833
7173
|
|
|
6834
7174
|
// src/generated/sonner.ts
|
|
6835
7175
|
var TOAST_BASE = "pointer-events-auto flex w-full items-start gap-3 rounded-md border p-4 text-sm shadow-lg";
|
|
@@ -6854,7 +7194,7 @@ var TOAST_CONTENT = "flex-1 space-y-1";
|
|
|
6854
7194
|
var TOAST_TITLE = "font-medium";
|
|
6855
7195
|
|
|
6856
7196
|
// src/components/sonner.tsx
|
|
6857
|
-
import { jsx as
|
|
7197
|
+
import { jsx as jsx58, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
6858
7198
|
var DEFAULT_DURATION = 4e3;
|
|
6859
7199
|
var SWIPE_THRESHOLD = 45;
|
|
6860
7200
|
var SWIPE_VELOCITY = 0.11;
|
|
@@ -6919,17 +7259,17 @@ function ToastItem({
|
|
|
6919
7259
|
reportHeight,
|
|
6920
7260
|
removeHeight
|
|
6921
7261
|
}) {
|
|
6922
|
-
const ref =
|
|
6923
|
-
const [height, setHeight] =
|
|
6924
|
-
const remainingRef =
|
|
6925
|
-
const startedRef =
|
|
6926
|
-
const flingRef =
|
|
7262
|
+
const ref = React68.useRef(null);
|
|
7263
|
+
const [height, setHeight] = React68.useState(0);
|
|
7264
|
+
const remainingRef = React68.useRef(t.duration);
|
|
7265
|
+
const startedRef = React68.useRef(0);
|
|
7266
|
+
const flingRef = React68.useRef(
|
|
6927
7267
|
void 0
|
|
6928
7268
|
);
|
|
6929
|
-
const dragRef =
|
|
7269
|
+
const dragRef = React68.useRef(
|
|
6930
7270
|
null
|
|
6931
7271
|
);
|
|
6932
|
-
|
|
7272
|
+
React68.useLayoutEffect(() => {
|
|
6933
7273
|
const el = ref.current;
|
|
6934
7274
|
if (!el) return;
|
|
6935
7275
|
el.style.height = "auto";
|
|
@@ -6940,12 +7280,12 @@ function ToastItem({
|
|
|
6940
7280
|
reportHeight(t.id, h);
|
|
6941
7281
|
}
|
|
6942
7282
|
}, [t.id, t.message, t.description, reportHeight]);
|
|
6943
|
-
|
|
6944
|
-
const mountedClosing =
|
|
6945
|
-
|
|
7283
|
+
React68.useEffect(() => () => removeHeight(t.id), [t.id, removeHeight]);
|
|
7284
|
+
const mountedClosing = React68.useRef(t.state === "closing");
|
|
7285
|
+
React68.useEffect(() => {
|
|
6946
7286
|
if (mountedClosing.current) store.remove(t.id);
|
|
6947
7287
|
}, [t.id]);
|
|
6948
|
-
|
|
7288
|
+
React68.useEffect(() => {
|
|
6949
7289
|
if (t.duration === Infinity || t.state === "closing" || paused) return;
|
|
6950
7290
|
startedRef.current = Date.now();
|
|
6951
7291
|
const id = setTimeout(() => store.dismiss(t.id), remainingRef.current);
|
|
@@ -6957,7 +7297,7 @@ function ToastItem({
|
|
|
6957
7297
|
);
|
|
6958
7298
|
};
|
|
6959
7299
|
}, [paused, t.id, t.duration, t.state]);
|
|
6960
|
-
|
|
7300
|
+
React68.useEffect(
|
|
6961
7301
|
() => () => {
|
|
6962
7302
|
if (flingRef.current) clearTimeout(flingRef.current);
|
|
6963
7303
|
},
|
|
@@ -7016,7 +7356,7 @@ function ToastItem({
|
|
|
7016
7356
|
);
|
|
7017
7357
|
}
|
|
7018
7358
|
};
|
|
7019
|
-
return /* @__PURE__ */
|
|
7359
|
+
return /* @__PURE__ */ jsxs28(
|
|
7020
7360
|
"li",
|
|
7021
7361
|
{
|
|
7022
7362
|
ref,
|
|
@@ -7044,11 +7384,11 @@ function ToastItem({
|
|
|
7044
7384
|
toastVariantClasses[t.variant]
|
|
7045
7385
|
),
|
|
7046
7386
|
children: [
|
|
7047
|
-
/* @__PURE__ */
|
|
7048
|
-
/* @__PURE__ */
|
|
7049
|
-
t.description ? /* @__PURE__ */
|
|
7387
|
+
/* @__PURE__ */ jsxs28("div", { className: TOAST_CONTENT, children: [
|
|
7388
|
+
/* @__PURE__ */ jsx58("div", { className: TOAST_TITLE, children: t.message }),
|
|
7389
|
+
t.description ? /* @__PURE__ */ jsx58("div", { className: "text-ink-soft text-sm", children: t.description }) : null
|
|
7050
7390
|
] }),
|
|
7051
|
-
/* @__PURE__ */
|
|
7391
|
+
/* @__PURE__ */ jsx58(
|
|
7052
7392
|
"button",
|
|
7053
7393
|
{
|
|
7054
7394
|
type: "button",
|
|
@@ -7056,7 +7396,7 @@ function ToastItem({
|
|
|
7056
7396
|
"data-slot": "toast-close",
|
|
7057
7397
|
onClick: () => store.dismiss(t.id),
|
|
7058
7398
|
className: TOAST_CLOSE,
|
|
7059
|
-
children: /* @__PURE__ */
|
|
7399
|
+
children: /* @__PURE__ */ jsx58(
|
|
7060
7400
|
"svg",
|
|
7061
7401
|
{
|
|
7062
7402
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -7069,7 +7409,7 @@ function ToastItem({
|
|
|
7069
7409
|
strokeLinecap: "round",
|
|
7070
7410
|
strokeLinejoin: "round",
|
|
7071
7411
|
"aria-hidden": "true",
|
|
7072
|
-
children: /* @__PURE__ */
|
|
7412
|
+
children: /* @__PURE__ */ jsx58("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
7073
7413
|
}
|
|
7074
7414
|
)
|
|
7075
7415
|
}
|
|
@@ -7083,17 +7423,17 @@ function Toaster({
|
|
|
7083
7423
|
className,
|
|
7084
7424
|
...props
|
|
7085
7425
|
}) {
|
|
7086
|
-
const [toasts, setToasts] =
|
|
7087
|
-
const [heights, setHeights] =
|
|
7088
|
-
const [paused, setPaused] =
|
|
7089
|
-
|
|
7426
|
+
const [toasts, setToasts] = React68.useState([]);
|
|
7427
|
+
const [heights, setHeights] = React68.useState(/* @__PURE__ */ new Map());
|
|
7428
|
+
const [paused, setPaused] = React68.useState(false);
|
|
7429
|
+
React68.useEffect(() => store.subscribe(setToasts), []);
|
|
7090
7430
|
const onEnter = () => setPaused(true);
|
|
7091
7431
|
const onLeave = (e) => {
|
|
7092
7432
|
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
7093
7433
|
setPaused(false);
|
|
7094
7434
|
}
|
|
7095
7435
|
};
|
|
7096
|
-
const reportHeight =
|
|
7436
|
+
const reportHeight = React68.useCallback((id, h) => {
|
|
7097
7437
|
setHeights((prev) => {
|
|
7098
7438
|
if (prev.get(id) === h) return prev;
|
|
7099
7439
|
const next = new Map(prev);
|
|
@@ -7101,7 +7441,7 @@ function Toaster({
|
|
|
7101
7441
|
return next;
|
|
7102
7442
|
});
|
|
7103
7443
|
}, []);
|
|
7104
|
-
const removeHeight =
|
|
7444
|
+
const removeHeight = React68.useCallback((id) => {
|
|
7105
7445
|
setHeights((prev) => {
|
|
7106
7446
|
if (!prev.has(id)) return prev;
|
|
7107
7447
|
const next = new Map(prev);
|
|
@@ -7119,7 +7459,7 @@ function Toaster({
|
|
|
7119
7459
|
sum += heights.get(t.id) ?? 0;
|
|
7120
7460
|
return o;
|
|
7121
7461
|
});
|
|
7122
|
-
return /* @__PURE__ */
|
|
7462
|
+
return /* @__PURE__ */ jsx58(
|
|
7123
7463
|
"ol",
|
|
7124
7464
|
{
|
|
7125
7465
|
"data-slot": "toaster",
|
|
@@ -7140,7 +7480,7 @@ function Toaster({
|
|
|
7140
7480
|
onPointerOut: onLeave,
|
|
7141
7481
|
onFocus: onEnter,
|
|
7142
7482
|
onBlur: onLeave,
|
|
7143
|
-
children: ordered.map((t, i) => /* @__PURE__ */
|
|
7483
|
+
children: ordered.map((t, i) => /* @__PURE__ */ jsx58(
|
|
7144
7484
|
ToastItem,
|
|
7145
7485
|
{
|
|
7146
7486
|
toast: t,
|
|
@@ -7158,7 +7498,7 @@ function Toaster({
|
|
|
7158
7498
|
}
|
|
7159
7499
|
|
|
7160
7500
|
// src/components/form.tsx
|
|
7161
|
-
import * as
|
|
7501
|
+
import * as React69 from "react";
|
|
7162
7502
|
|
|
7163
7503
|
// src/generated/form.ts
|
|
7164
7504
|
var FORM_ITEM = "grid gap-2";
|
|
@@ -7166,21 +7506,21 @@ var FORM_DESCRIPTION = "text-ink-soft text-sm";
|
|
|
7166
7506
|
var FORM_MESSAGE = "text-accent-error text-sm";
|
|
7167
7507
|
|
|
7168
7508
|
// src/components/form.tsx
|
|
7169
|
-
import { jsx as
|
|
7170
|
-
var FormItemContext =
|
|
7509
|
+
import { jsx as jsx59 } from "react/jsx-runtime";
|
|
7510
|
+
var FormItemContext = React69.createContext(null);
|
|
7171
7511
|
function useFormItem() {
|
|
7172
|
-
const ctx =
|
|
7512
|
+
const ctx = React69.useContext(FormItemContext);
|
|
7173
7513
|
if (!ctx) {
|
|
7174
7514
|
throw new Error("Form parts must be used within <FormItem>");
|
|
7175
7515
|
}
|
|
7176
7516
|
return ctx;
|
|
7177
7517
|
}
|
|
7178
7518
|
function Form({ ...props }) {
|
|
7179
|
-
return /* @__PURE__ */
|
|
7519
|
+
return /* @__PURE__ */ jsx59("form", { "data-slot": "form", ...props });
|
|
7180
7520
|
}
|
|
7181
7521
|
function FormItem({ className, ...props }) {
|
|
7182
|
-
const id =
|
|
7183
|
-
const value =
|
|
7522
|
+
const id = React69.useId();
|
|
7523
|
+
const value = React69.useMemo(
|
|
7184
7524
|
() => ({
|
|
7185
7525
|
id,
|
|
7186
7526
|
formItemId: `${id}-form-item`,
|
|
@@ -7189,7 +7529,7 @@ function FormItem({ className, ...props }) {
|
|
|
7189
7529
|
}),
|
|
7190
7530
|
[id]
|
|
7191
7531
|
);
|
|
7192
|
-
return /* @__PURE__ */
|
|
7532
|
+
return /* @__PURE__ */ jsx59(FormItemContext.Provider, { value, children: /* @__PURE__ */ jsx59("div", { "data-slot": "form-item", className: cn(FORM_ITEM, className), ...props }) });
|
|
7193
7533
|
}
|
|
7194
7534
|
function FormLabel({
|
|
7195
7535
|
className,
|
|
@@ -7197,7 +7537,7 @@ function FormLabel({
|
|
|
7197
7537
|
...props
|
|
7198
7538
|
}) {
|
|
7199
7539
|
const { formItemId } = useFormItem();
|
|
7200
|
-
return /* @__PURE__ */
|
|
7540
|
+
return /* @__PURE__ */ jsx59(
|
|
7201
7541
|
Label,
|
|
7202
7542
|
{
|
|
7203
7543
|
"data-slot": "form-label",
|
|
@@ -7213,7 +7553,7 @@ function FormControl({
|
|
|
7213
7553
|
...props
|
|
7214
7554
|
}) {
|
|
7215
7555
|
const { formItemId, formDescriptionId, formMessageId } = useFormItem();
|
|
7216
|
-
return /* @__PURE__ */
|
|
7556
|
+
return /* @__PURE__ */ jsx59(
|
|
7217
7557
|
Slot,
|
|
7218
7558
|
{
|
|
7219
7559
|
"data-slot": "form-control",
|
|
@@ -7226,7 +7566,7 @@ function FormControl({
|
|
|
7226
7566
|
}
|
|
7227
7567
|
function FormDescription({ className, ...props }) {
|
|
7228
7568
|
const { formDescriptionId } = useFormItem();
|
|
7229
|
-
return /* @__PURE__ */
|
|
7569
|
+
return /* @__PURE__ */ jsx59(
|
|
7230
7570
|
"p",
|
|
7231
7571
|
{
|
|
7232
7572
|
"data-slot": "form-description",
|
|
@@ -7241,7 +7581,7 @@ function FormMessage({ className, children, ...props }) {
|
|
|
7241
7581
|
if (!children) {
|
|
7242
7582
|
return null;
|
|
7243
7583
|
}
|
|
7244
|
-
return /* @__PURE__ */
|
|
7584
|
+
return /* @__PURE__ */ jsx59(
|
|
7245
7585
|
"p",
|
|
7246
7586
|
{
|
|
7247
7587
|
"data-slot": "form-message",
|
|
@@ -7254,7 +7594,7 @@ function FormMessage({ className, children, ...props }) {
|
|
|
7254
7594
|
}
|
|
7255
7595
|
|
|
7256
7596
|
// src/components/resizable.tsx
|
|
7257
|
-
import * as
|
|
7597
|
+
import * as React70 from "react";
|
|
7258
7598
|
|
|
7259
7599
|
// src/generated/resizable.ts
|
|
7260
7600
|
var RESIZABLE_GROUP = "flex h-full w-full data-[panel-group-direction=vertical]:flex-col";
|
|
@@ -7263,10 +7603,10 @@ var RESIZABLE_HANDLE = "bg-border focus-visible:ring-ring relative flex w-px ite
|
|
|
7263
7603
|
var RESIZABLE_HANDLE_GRIP = "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border";
|
|
7264
7604
|
|
|
7265
7605
|
// src/components/resizable.tsx
|
|
7266
|
-
import { jsx as
|
|
7267
|
-
var ResizableContext =
|
|
7606
|
+
import { jsx as jsx60, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
7607
|
+
var ResizableContext = React70.createContext(null);
|
|
7268
7608
|
function useResizable() {
|
|
7269
|
-
const ctx =
|
|
7609
|
+
const ctx = React70.useContext(ResizableContext);
|
|
7270
7610
|
if (!ctx)
|
|
7271
7611
|
throw new Error("Resizable parts must be used within a ResizablePanelGroup");
|
|
7272
7612
|
return ctx;
|
|
@@ -7289,9 +7629,9 @@ function ResizablePanelGroup({
|
|
|
7289
7629
|
children,
|
|
7290
7630
|
...props
|
|
7291
7631
|
}) {
|
|
7292
|
-
const [sizes, setSizes] =
|
|
7293
|
-
const groupRef =
|
|
7294
|
-
const register =
|
|
7632
|
+
const [sizes, setSizes] = React70.useState([]);
|
|
7633
|
+
const groupRef = React70.useRef(null);
|
|
7634
|
+
const register = React70.useCallback((index, defaultSize) => {
|
|
7295
7635
|
setSizes((prev) => {
|
|
7296
7636
|
if (prev[index] !== void 0) return prev;
|
|
7297
7637
|
const next = prev.slice();
|
|
@@ -7300,14 +7640,14 @@ function ResizablePanelGroup({
|
|
|
7300
7640
|
return next;
|
|
7301
7641
|
});
|
|
7302
7642
|
}, []);
|
|
7303
|
-
|
|
7643
|
+
React70.useEffect(() => {
|
|
7304
7644
|
if (sizes.length) onLayout?.(sizes);
|
|
7305
7645
|
}, [sizes, onLayout]);
|
|
7306
|
-
const value =
|
|
7646
|
+
const value = React70.useMemo(
|
|
7307
7647
|
() => ({ sizes, setSizes, register, direction, keyboardStep, groupRef }),
|
|
7308
7648
|
[sizes, register, direction, keyboardStep]
|
|
7309
7649
|
);
|
|
7310
|
-
return /* @__PURE__ */
|
|
7650
|
+
return /* @__PURE__ */ jsx60(ResizableContext.Provider, { value, children: /* @__PURE__ */ jsx60(
|
|
7311
7651
|
"div",
|
|
7312
7652
|
{
|
|
7313
7653
|
ref: groupRef,
|
|
@@ -7328,11 +7668,11 @@ function ResizablePanel({
|
|
|
7328
7668
|
...props
|
|
7329
7669
|
}) {
|
|
7330
7670
|
const { sizes, register } = useResizable();
|
|
7331
|
-
|
|
7671
|
+
React70.useEffect(() => {
|
|
7332
7672
|
register(index, defaultSize);
|
|
7333
7673
|
}, [register, index, defaultSize]);
|
|
7334
7674
|
const basis = sizes[index] ?? defaultSize;
|
|
7335
|
-
return /* @__PURE__ */
|
|
7675
|
+
return /* @__PURE__ */ jsx60(
|
|
7336
7676
|
"div",
|
|
7337
7677
|
{
|
|
7338
7678
|
"data-slot": "resizable-panel",
|
|
@@ -7351,12 +7691,12 @@ function ResizableHandle({
|
|
|
7351
7691
|
...props
|
|
7352
7692
|
}) {
|
|
7353
7693
|
const { setSizes, direction, keyboardStep, groupRef } = useResizable();
|
|
7354
|
-
const draggingRef =
|
|
7355
|
-
const resize =
|
|
7694
|
+
const draggingRef = React70.useRef(false);
|
|
7695
|
+
const resize = React70.useCallback(
|
|
7356
7696
|
(delta) => setSizes((prev) => redistribute(prev, index, delta)),
|
|
7357
7697
|
[setSizes, index]
|
|
7358
7698
|
);
|
|
7359
|
-
const onPointerMove =
|
|
7699
|
+
const onPointerMove = React70.useCallback(
|
|
7360
7700
|
(event) => {
|
|
7361
7701
|
if (!draggingRef.current) return;
|
|
7362
7702
|
const rect = groupRef.current?.getBoundingClientRect();
|
|
@@ -7368,7 +7708,7 @@ function ResizableHandle({
|
|
|
7368
7708
|
},
|
|
7369
7709
|
[direction, resize, groupRef]
|
|
7370
7710
|
);
|
|
7371
|
-
const onPointerUp =
|
|
7711
|
+
const onPointerUp = React70.useCallback(() => {
|
|
7372
7712
|
draggingRef.current = false;
|
|
7373
7713
|
window.removeEventListener("pointermove", onPointerMove);
|
|
7374
7714
|
window.removeEventListener("pointerup", onPointerUp);
|
|
@@ -7379,7 +7719,7 @@ function ResizableHandle({
|
|
|
7379
7719
|
window.addEventListener("pointermove", onPointerMove);
|
|
7380
7720
|
window.addEventListener("pointerup", onPointerUp);
|
|
7381
7721
|
};
|
|
7382
|
-
|
|
7722
|
+
React70.useEffect(() => () => onPointerUp(), [onPointerUp]);
|
|
7383
7723
|
const onKeyDown = (event) => {
|
|
7384
7724
|
let delta;
|
|
7385
7725
|
switch (event.key) {
|
|
@@ -7399,7 +7739,7 @@ function ResizableHandle({
|
|
|
7399
7739
|
event.preventDefault();
|
|
7400
7740
|
resize(delta);
|
|
7401
7741
|
};
|
|
7402
|
-
return /* @__PURE__ */
|
|
7742
|
+
return /* @__PURE__ */ jsxs29(
|
|
7403
7743
|
"div",
|
|
7404
7744
|
{
|
|
7405
7745
|
"data-slot": "resizable-handle",
|
|
@@ -7412,7 +7752,7 @@ function ResizableHandle({
|
|
|
7412
7752
|
onKeyDown,
|
|
7413
7753
|
...props,
|
|
7414
7754
|
children: [
|
|
7415
|
-
withHandle && /* @__PURE__ */
|
|
7755
|
+
withHandle && /* @__PURE__ */ jsx60("div", { className: RESIZABLE_HANDLE_GRIP, children: /* @__PURE__ */ jsxs29(
|
|
7416
7756
|
"svg",
|
|
7417
7757
|
{
|
|
7418
7758
|
className: "size-2.5",
|
|
@@ -7427,12 +7767,12 @@ function ResizableHandle({
|
|
|
7427
7767
|
strokeLinejoin: "round",
|
|
7428
7768
|
"aria-hidden": "true",
|
|
7429
7769
|
children: [
|
|
7430
|
-
/* @__PURE__ */
|
|
7431
|
-
/* @__PURE__ */
|
|
7432
|
-
/* @__PURE__ */
|
|
7433
|
-
/* @__PURE__ */
|
|
7434
|
-
/* @__PURE__ */
|
|
7435
|
-
/* @__PURE__ */
|
|
7770
|
+
/* @__PURE__ */ jsx60("circle", { cx: "9", cy: "12", r: "1" }),
|
|
7771
|
+
/* @__PURE__ */ jsx60("circle", { cx: "9", cy: "5", r: "1" }),
|
|
7772
|
+
/* @__PURE__ */ jsx60("circle", { cx: "9", cy: "19", r: "1" }),
|
|
7773
|
+
/* @__PURE__ */ jsx60("circle", { cx: "15", cy: "12", r: "1" }),
|
|
7774
|
+
/* @__PURE__ */ jsx60("circle", { cx: "15", cy: "5", r: "1" }),
|
|
7775
|
+
/* @__PURE__ */ jsx60("circle", { cx: "15", cy: "19", r: "1" })
|
|
7436
7776
|
]
|
|
7437
7777
|
}
|
|
7438
7778
|
) }),
|
|
@@ -7443,7 +7783,7 @@ function ResizableHandle({
|
|
|
7443
7783
|
}
|
|
7444
7784
|
|
|
7445
7785
|
// src/components/terminal.tsx
|
|
7446
|
-
import * as
|
|
7786
|
+
import * as React71 from "react";
|
|
7447
7787
|
|
|
7448
7788
|
// src/generated/terminal.ts
|
|
7449
7789
|
var TERMINAL_ROOT = "grid w-full grid-cols-1 gap-px bg-border text-ink text-sm lg:h-[calc(100dvh-var(--ev-shell-offset,0px))] lg:grid-cols-[minmax(0,1fr)_18rem_20rem] lg:grid-rows-[auto_minmax(0,1fr)_14rem]";
|
|
@@ -7489,12 +7829,12 @@ var orderSideClasses = {
|
|
|
7489
7829
|
var OPEN_ORDERS_EMPTY = "flex flex-1 items-center justify-center p-6 text-sm text-ink-soft";
|
|
7490
7830
|
|
|
7491
7831
|
// src/components/terminal.tsx
|
|
7492
|
-
import { jsx as
|
|
7832
|
+
import { jsx as jsx61, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
7493
7833
|
function Terminal({ className, ...props }) {
|
|
7494
|
-
return /* @__PURE__ */
|
|
7834
|
+
return /* @__PURE__ */ jsx61("div", { "data-slot": "terminal", className: cn(TERMINAL_ROOT, className), ...props });
|
|
7495
7835
|
}
|
|
7496
7836
|
function TerminalPane({ area, className, ...props }) {
|
|
7497
|
-
return /* @__PURE__ */
|
|
7837
|
+
return /* @__PURE__ */ jsx61(
|
|
7498
7838
|
"section",
|
|
7499
7839
|
{
|
|
7500
7840
|
"data-slot": "terminal-pane",
|
|
@@ -7505,7 +7845,7 @@ function TerminalPane({ area, className, ...props }) {
|
|
|
7505
7845
|
);
|
|
7506
7846
|
}
|
|
7507
7847
|
function TerminalPaneHeader({ className, ...props }) {
|
|
7508
|
-
return /* @__PURE__ */
|
|
7848
|
+
return /* @__PURE__ */ jsx61(
|
|
7509
7849
|
"header",
|
|
7510
7850
|
{
|
|
7511
7851
|
"data-slot": "terminal-pane-header",
|
|
@@ -7515,10 +7855,10 @@ function TerminalPaneHeader({ className, ...props }) {
|
|
|
7515
7855
|
);
|
|
7516
7856
|
}
|
|
7517
7857
|
function TerminalPaneBody({ className, ...props }) {
|
|
7518
|
-
return /* @__PURE__ */
|
|
7858
|
+
return /* @__PURE__ */ jsx61("div", { "data-slot": "terminal-pane-body", className: cn(TERMINAL_PANE_BODY, className), ...props });
|
|
7519
7859
|
}
|
|
7520
|
-
var TerminalChart =
|
|
7521
|
-
return /* @__PURE__ */
|
|
7860
|
+
var TerminalChart = React71.forwardRef(function TerminalChart2({ className, ...props }, ref) {
|
|
7861
|
+
return /* @__PURE__ */ jsx61(
|
|
7522
7862
|
"div",
|
|
7523
7863
|
{
|
|
7524
7864
|
ref,
|
|
@@ -7529,7 +7869,7 @@ var TerminalChart = React69.forwardRef(function TerminalChart2({ className, ...p
|
|
|
7529
7869
|
);
|
|
7530
7870
|
});
|
|
7531
7871
|
function TerminalTicker({ className, ...props }) {
|
|
7532
|
-
return /* @__PURE__ */
|
|
7872
|
+
return /* @__PURE__ */ jsx61(
|
|
7533
7873
|
"div",
|
|
7534
7874
|
{
|
|
7535
7875
|
"data-slot": "terminal-ticker",
|
|
@@ -7540,19 +7880,19 @@ function TerminalTicker({ className, ...props }) {
|
|
|
7540
7880
|
);
|
|
7541
7881
|
}
|
|
7542
7882
|
function TickerStat({ label, value, className, ...props }) {
|
|
7543
|
-
return /* @__PURE__ */
|
|
7544
|
-
/* @__PURE__ */
|
|
7545
|
-
/* @__PURE__ */
|
|
7883
|
+
return /* @__PURE__ */ jsxs30("div", { "data-slot": "ticker-stat", className: TERMINAL_TICKER_STAT, ...props, children: [
|
|
7884
|
+
/* @__PURE__ */ jsx61("span", { className: TERMINAL_TICKER_LABEL, children: label }),
|
|
7885
|
+
/* @__PURE__ */ jsx61("span", { className: cn(TERMINAL_TICKER_VALUE, className), children: value })
|
|
7546
7886
|
] });
|
|
7547
7887
|
}
|
|
7548
7888
|
function OrderBook({ className, ...props }) {
|
|
7549
|
-
return /* @__PURE__ */
|
|
7889
|
+
return /* @__PURE__ */ jsx61("div", { "data-slot": "order-book", className: cn(ORDER_BOOK, className), ...props });
|
|
7550
7890
|
}
|
|
7551
7891
|
function OrderBookHead({ price, size, total, className, ...props }) {
|
|
7552
|
-
return /* @__PURE__ */
|
|
7553
|
-
/* @__PURE__ */
|
|
7554
|
-
/* @__PURE__ */
|
|
7555
|
-
/* @__PURE__ */
|
|
7892
|
+
return /* @__PURE__ */ jsxs30("div", { "data-slot": "order-book-head", className: cn(ORDER_BOOK_HEAD, className), ...props, children: [
|
|
7893
|
+
/* @__PURE__ */ jsx61("span", { children: price }),
|
|
7894
|
+
/* @__PURE__ */ jsx61("span", { children: size }),
|
|
7895
|
+
/* @__PURE__ */ jsx61("span", { children: total })
|
|
7556
7896
|
] });
|
|
7557
7897
|
}
|
|
7558
7898
|
function OrderBookRow({
|
|
@@ -7564,7 +7904,7 @@ function OrderBookRow({
|
|
|
7564
7904
|
className,
|
|
7565
7905
|
...props
|
|
7566
7906
|
}) {
|
|
7567
|
-
return /* @__PURE__ */
|
|
7907
|
+
return /* @__PURE__ */ jsxs30(
|
|
7568
7908
|
"div",
|
|
7569
7909
|
{
|
|
7570
7910
|
"data-slot": "order-book-row",
|
|
@@ -7572,7 +7912,7 @@ function OrderBookRow({
|
|
|
7572
7912
|
className: cn(ORDER_BOOK_ROW, className),
|
|
7573
7913
|
...props,
|
|
7574
7914
|
children: [
|
|
7575
|
-
/* @__PURE__ */
|
|
7915
|
+
/* @__PURE__ */ jsx61(
|
|
7576
7916
|
"span",
|
|
7577
7917
|
{
|
|
7578
7918
|
"aria-hidden": "true",
|
|
@@ -7580,9 +7920,9 @@ function OrderBookRow({
|
|
|
7580
7920
|
style: { width: `${depthPercent(depth)}%` }
|
|
7581
7921
|
}
|
|
7582
7922
|
),
|
|
7583
|
-
/* @__PURE__ */
|
|
7584
|
-
/* @__PURE__ */
|
|
7585
|
-
/* @__PURE__ */
|
|
7923
|
+
/* @__PURE__ */ jsx61("span", { className: cn(ORDER_BOOK_PRICE, bookSideClasses[side]), children: price }),
|
|
7924
|
+
/* @__PURE__ */ jsx61("span", { children: size }),
|
|
7925
|
+
/* @__PURE__ */ jsx61("span", { children: total })
|
|
7586
7926
|
]
|
|
7587
7927
|
}
|
|
7588
7928
|
);
|
|
@@ -7592,10 +7932,10 @@ function depthPercent(depth) {
|
|
|
7592
7932
|
return Math.round(Math.min(1, Math.max(0, depth)) * 100);
|
|
7593
7933
|
}
|
|
7594
7934
|
function OrderBookSpread({ className, ...props }) {
|
|
7595
|
-
return /* @__PURE__ */
|
|
7935
|
+
return /* @__PURE__ */ jsx61("div", { "data-slot": "order-book-spread", className: cn(ORDER_BOOK_SPREAD, className), ...props });
|
|
7596
7936
|
}
|
|
7597
7937
|
function TradesTapeRow({ side, price, size, time, className, ...props }) {
|
|
7598
|
-
return /* @__PURE__ */
|
|
7938
|
+
return /* @__PURE__ */ jsxs30(
|
|
7599
7939
|
"div",
|
|
7600
7940
|
{
|
|
7601
7941
|
"data-slot": "trades-tape-row",
|
|
@@ -7603,15 +7943,15 @@ function TradesTapeRow({ side, price, size, time, className, ...props }) {
|
|
|
7603
7943
|
className: cn(TRADES_TAPE_ROW, className),
|
|
7604
7944
|
...props,
|
|
7605
7945
|
children: [
|
|
7606
|
-
/* @__PURE__ */
|
|
7607
|
-
/* @__PURE__ */
|
|
7608
|
-
/* @__PURE__ */
|
|
7946
|
+
/* @__PURE__ */ jsx61("span", { className: cn(ORDER_BOOK_PRICE, bookSideClasses[side]), children: price }),
|
|
7947
|
+
/* @__PURE__ */ jsx61("span", { children: size }),
|
|
7948
|
+
/* @__PURE__ */ jsx61("span", { children: time })
|
|
7609
7949
|
]
|
|
7610
7950
|
}
|
|
7611
7951
|
);
|
|
7612
7952
|
}
|
|
7613
7953
|
function OrderForm({ className, onSubmit, ...props }) {
|
|
7614
|
-
return /* @__PURE__ */
|
|
7954
|
+
return /* @__PURE__ */ jsx61(
|
|
7615
7955
|
"form",
|
|
7616
7956
|
{
|
|
7617
7957
|
"data-slot": "order-form",
|
|
@@ -7625,13 +7965,13 @@ function OrderForm({ className, onSubmit, ...props }) {
|
|
|
7625
7965
|
);
|
|
7626
7966
|
}
|
|
7627
7967
|
function OrderFormRow({ label, value, className, ...props }) {
|
|
7628
|
-
return /* @__PURE__ */
|
|
7629
|
-
/* @__PURE__ */
|
|
7630
|
-
/* @__PURE__ */
|
|
7968
|
+
return /* @__PURE__ */ jsxs30("div", { "data-slot": "order-form-row", className: cn(ORDER_FORM_ROW, className), ...props, children: [
|
|
7969
|
+
/* @__PURE__ */ jsx61("span", { className: ORDER_FORM_LABEL, children: label }),
|
|
7970
|
+
/* @__PURE__ */ jsx61("span", { className: ORDER_FORM_VALUE, children: value })
|
|
7631
7971
|
] });
|
|
7632
7972
|
}
|
|
7633
7973
|
function OrderFormSubmit({ side = "buy", className, ...props }) {
|
|
7634
|
-
return /* @__PURE__ */
|
|
7974
|
+
return /* @__PURE__ */ jsx61(
|
|
7635
7975
|
"button",
|
|
7636
7976
|
{
|
|
7637
7977
|
type: "submit",
|
|
@@ -7643,7 +7983,7 @@ function OrderFormSubmit({ side = "buy", className, ...props }) {
|
|
|
7643
7983
|
);
|
|
7644
7984
|
}
|
|
7645
7985
|
function OpenOrdersEmpty({ className, ...props }) {
|
|
7646
|
-
return /* @__PURE__ */
|
|
7986
|
+
return /* @__PURE__ */ jsx61("div", { "data-slot": "open-orders-empty", className: cn(OPEN_ORDERS_EMPTY, className), ...props });
|
|
7647
7987
|
}
|
|
7648
7988
|
export {
|
|
7649
7989
|
Accordion,
|
|
@@ -7728,6 +8068,7 @@ export {
|
|
|
7728
8068
|
ContextMenuSubContent,
|
|
7729
8069
|
ContextMenuSubTrigger,
|
|
7730
8070
|
ContextMenuTrigger,
|
|
8071
|
+
DateTimePicker,
|
|
7731
8072
|
Dialog,
|
|
7732
8073
|
DialogClose,
|
|
7733
8074
|
DialogContent,
|
|
@@ -7818,6 +8159,7 @@ export {
|
|
|
7818
8159
|
Kbd,
|
|
7819
8160
|
KbdGroup,
|
|
7820
8161
|
Label,
|
|
8162
|
+
Logo,
|
|
7821
8163
|
Menubar,
|
|
7822
8164
|
MenubarCheckboxItem,
|
|
7823
8165
|
MenubarContent,
|