@evinvest/uikit 0.12.1 → 0.14.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 +21 -7
- package/dist/index.d.ts +168 -25
- package/dist/index.js +890 -615
- 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
|
@@ -589,6 +589,29 @@ function BreadcrumbEllipsis({
|
|
|
589
589
|
// src/components/button.tsx
|
|
590
590
|
import "react";
|
|
591
591
|
|
|
592
|
+
// src/generated/accent.ts
|
|
593
|
+
var accentTextClasses = {
|
|
594
|
+
"trace": "text-accent-trace",
|
|
595
|
+
"debug": "text-accent-debug",
|
|
596
|
+
"info": "text-accent-info",
|
|
597
|
+
"warn": "text-accent-warn",
|
|
598
|
+
"error": "text-accent-error"
|
|
599
|
+
};
|
|
600
|
+
var accentFillClasses = {
|
|
601
|
+
"trace": "bg-accent-trace text-on-accent-trace hover:bg-accent-trace/90",
|
|
602
|
+
"debug": "bg-accent-debug text-background hover:bg-accent-debug/90",
|
|
603
|
+
"info": "bg-accent-info text-on-accent-info hover:bg-accent-info/90",
|
|
604
|
+
"warn": "bg-accent-warn text-background hover:bg-accent-warn/90",
|
|
605
|
+
"error": "bg-accent-error text-on-accent-error hover:bg-accent-error/90"
|
|
606
|
+
};
|
|
607
|
+
var accentOutlineClasses = {
|
|
608
|
+
"trace": "border border-accent-trace/40 text-accent-trace hover:bg-accent-trace/10",
|
|
609
|
+
"debug": "border border-accent-debug/40 text-accent-debug hover:bg-accent-debug/10",
|
|
610
|
+
"info": "border border-accent-info/40 text-accent-info hover:bg-accent-info/10",
|
|
611
|
+
"warn": "border border-accent-warn/40 text-accent-warn hover:bg-accent-warn/10",
|
|
612
|
+
"error": "border border-accent-error/40 text-accent-error hover:bg-accent-error/10"
|
|
613
|
+
};
|
|
614
|
+
|
|
592
615
|
// src/generated/button.ts
|
|
593
616
|
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
617
|
var buttonVariantClasses = {
|
|
@@ -600,16 +623,18 @@ var buttonVariantClasses = {
|
|
|
600
623
|
"link": "text-primary underline-offset-4 hover:underline"
|
|
601
624
|
};
|
|
602
625
|
var buttonSizeClasses = {
|
|
603
|
-
"md": "h-9 px-4 py-[var(--control-py)] has-[>svg]:px-3",
|
|
604
626
|
"xs": "h-7 gap-1 px-2 text-xs has-[>svg]:px-1.5",
|
|
605
627
|
"sm": "h-8 gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
628
|
+
"md": "h-9 px-4 py-[var(--control-py)] has-[>svg]:px-3",
|
|
606
629
|
"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
|
-
"
|
|
630
|
+
"xl": "px-[var(--control-px)] py-[var(--control-py)] text-[length:var(--control-text)]"
|
|
631
|
+
};
|
|
632
|
+
var buttonIconSizeClasses = {
|
|
633
|
+
"xs": "h-7 aspect-square px-0",
|
|
634
|
+
"sm": "h-8 aspect-square px-0",
|
|
635
|
+
"md": "h-9 aspect-square px-0",
|
|
636
|
+
"lg": "h-10 aspect-square px-0",
|
|
637
|
+
"xl": "aspect-square p-[var(--control-py)]"
|
|
613
638
|
};
|
|
614
639
|
|
|
615
640
|
// src/components/button.tsx
|
|
@@ -617,14 +642,27 @@ import { jsx as jsx5 } from "react/jsx-runtime";
|
|
|
617
642
|
function buttonVariants({
|
|
618
643
|
variant = "primary",
|
|
619
644
|
size = "md",
|
|
645
|
+
icon = false,
|
|
646
|
+
accent,
|
|
620
647
|
className
|
|
621
648
|
} = {}) {
|
|
622
|
-
return cn(
|
|
649
|
+
return cn(
|
|
650
|
+
BUTTON_BASE,
|
|
651
|
+
buttonVariantClasses[variant],
|
|
652
|
+
icon ? buttonIconSizeClasses[size] : buttonSizeClasses[size],
|
|
653
|
+
accent === void 0 ? void 0 : accentClass(accent, variant),
|
|
654
|
+
className
|
|
655
|
+
);
|
|
656
|
+
}
|
|
657
|
+
function accentClass(accent, variant) {
|
|
658
|
+
return variant === "outline" ? accentOutlineClasses[accent] : accentFillClasses[accent];
|
|
623
659
|
}
|
|
624
660
|
function Button({
|
|
625
661
|
className,
|
|
626
662
|
variant = "primary",
|
|
627
663
|
size = "md",
|
|
664
|
+
icon = false,
|
|
665
|
+
accent,
|
|
628
666
|
asChild = false,
|
|
629
667
|
href,
|
|
630
668
|
...props
|
|
@@ -635,7 +673,7 @@ function Button({
|
|
|
635
673
|
{
|
|
636
674
|
"data-slot": "button",
|
|
637
675
|
href,
|
|
638
|
-
className: cn(buttonVariants({ variant, size }), className),
|
|
676
|
+
className: cn(buttonVariants({ variant, size, icon, accent }), className),
|
|
639
677
|
...props
|
|
640
678
|
}
|
|
641
679
|
);
|
|
@@ -1295,6 +1333,44 @@ function Textarea({ className, ...props }) {
|
|
|
1295
1333
|
return /* @__PURE__ */ jsx15("textarea", { "data-slot": "textarea", className: cn(TEXTAREA_BASE, className), ...props });
|
|
1296
1334
|
}
|
|
1297
1335
|
|
|
1336
|
+
// src/components/logo.tsx
|
|
1337
|
+
import "react";
|
|
1338
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
1339
|
+
var maskStyle = {
|
|
1340
|
+
backgroundColor: "currentColor",
|
|
1341
|
+
maskImage: "var(--brand-mark)",
|
|
1342
|
+
WebkitMaskImage: "var(--brand-mark)",
|
|
1343
|
+
maskRepeat: "no-repeat",
|
|
1344
|
+
WebkitMaskRepeat: "no-repeat",
|
|
1345
|
+
maskPosition: "center",
|
|
1346
|
+
WebkitMaskPosition: "center",
|
|
1347
|
+
maskSize: "contain",
|
|
1348
|
+
WebkitMaskSize: "contain",
|
|
1349
|
+
// the ratio's fallback is what makes a missing mark *visible*: a masked span
|
|
1350
|
+
// has no intrinsic size, so `h-N w-auto` without it is zero-width
|
|
1351
|
+
aspectRatio: "var(--brand-aspect, 1)"
|
|
1352
|
+
};
|
|
1353
|
+
function Logo({ className, withBackground = false }) {
|
|
1354
|
+
const mark = /* @__PURE__ */ jsx16(
|
|
1355
|
+
"span",
|
|
1356
|
+
{
|
|
1357
|
+
"data-slot": "logo",
|
|
1358
|
+
"aria-hidden": true,
|
|
1359
|
+
style: maskStyle,
|
|
1360
|
+
className: cn("inline-block", withBackground ? "w-3/5 h-3/5" : className)
|
|
1361
|
+
}
|
|
1362
|
+
);
|
|
1363
|
+
if (!withBackground) return mark;
|
|
1364
|
+
return /* @__PURE__ */ jsx16(
|
|
1365
|
+
"span",
|
|
1366
|
+
{
|
|
1367
|
+
"data-slot": "logo-background",
|
|
1368
|
+
className: cn("inline-flex items-center justify-center bg-brand", className),
|
|
1369
|
+
children: mark
|
|
1370
|
+
}
|
|
1371
|
+
);
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1298
1374
|
// src/components/input-group.tsx
|
|
1299
1375
|
import "react";
|
|
1300
1376
|
|
|
@@ -1319,12 +1395,12 @@ var INPUT_GROUP_INPUT_CONTROL = "flex-1 rounded-none border-0 bg-transparent sha
|
|
|
1319
1395
|
var INPUT_GROUP_TEXTAREA_CONTROL = "flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0";
|
|
1320
1396
|
|
|
1321
1397
|
// src/components/input-group.tsx
|
|
1322
|
-
import { jsx as
|
|
1398
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
1323
1399
|
function InputGroup({
|
|
1324
1400
|
className,
|
|
1325
1401
|
...props
|
|
1326
1402
|
}) {
|
|
1327
|
-
return /* @__PURE__ */
|
|
1403
|
+
return /* @__PURE__ */ jsx17(
|
|
1328
1404
|
"div",
|
|
1329
1405
|
{
|
|
1330
1406
|
"data-slot": "input-group",
|
|
@@ -1339,7 +1415,7 @@ function InputGroupAddon({
|
|
|
1339
1415
|
align = "inline-start",
|
|
1340
1416
|
...props
|
|
1341
1417
|
}) {
|
|
1342
|
-
return /* @__PURE__ */
|
|
1418
|
+
return /* @__PURE__ */ jsx17(
|
|
1343
1419
|
"div",
|
|
1344
1420
|
{
|
|
1345
1421
|
role: "group",
|
|
@@ -1365,7 +1441,7 @@ function InputGroupButton({
|
|
|
1365
1441
|
size = "xs",
|
|
1366
1442
|
...props
|
|
1367
1443
|
}) {
|
|
1368
|
-
return /* @__PURE__ */
|
|
1444
|
+
return /* @__PURE__ */ jsx17(
|
|
1369
1445
|
Button,
|
|
1370
1446
|
{
|
|
1371
1447
|
type,
|
|
@@ -1384,7 +1460,7 @@ function InputGroupText({
|
|
|
1384
1460
|
className,
|
|
1385
1461
|
...props
|
|
1386
1462
|
}) {
|
|
1387
|
-
return /* @__PURE__ */
|
|
1463
|
+
return /* @__PURE__ */ jsx17(
|
|
1388
1464
|
"span",
|
|
1389
1465
|
{
|
|
1390
1466
|
className: cn(INPUT_GROUP_TEXT, className),
|
|
@@ -1396,7 +1472,7 @@ function InputGroupInput({
|
|
|
1396
1472
|
className,
|
|
1397
1473
|
...props
|
|
1398
1474
|
}) {
|
|
1399
|
-
return /* @__PURE__ */
|
|
1475
|
+
return /* @__PURE__ */ jsx17(
|
|
1400
1476
|
Input,
|
|
1401
1477
|
{
|
|
1402
1478
|
"data-slot": "input-group-control",
|
|
@@ -1409,7 +1485,7 @@ function InputGroupTextarea({
|
|
|
1409
1485
|
className,
|
|
1410
1486
|
...props
|
|
1411
1487
|
}) {
|
|
1412
|
-
return /* @__PURE__ */
|
|
1488
|
+
return /* @__PURE__ */ jsx17(
|
|
1413
1489
|
Textarea,
|
|
1414
1490
|
{
|
|
1415
1491
|
"data-slot": "input-group-control",
|
|
@@ -1433,13 +1509,13 @@ var separatorOrientations = {
|
|
|
1433
1509
|
};
|
|
1434
1510
|
|
|
1435
1511
|
// src/components/separator.tsx
|
|
1436
|
-
import { jsx as
|
|
1512
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
1437
1513
|
function Separator({
|
|
1438
1514
|
className,
|
|
1439
1515
|
orientation = "horizontal",
|
|
1440
1516
|
...props
|
|
1441
1517
|
}) {
|
|
1442
|
-
return /* @__PURE__ */
|
|
1518
|
+
return /* @__PURE__ */ jsx18(
|
|
1443
1519
|
"div",
|
|
1444
1520
|
{
|
|
1445
1521
|
role: "separator",
|
|
@@ -1482,9 +1558,9 @@ var ITEM_HEADER = "flex basis-full items-center justify-between gap-2";
|
|
|
1482
1558
|
var ITEM_FOOTER = "flex basis-full items-center justify-between gap-2";
|
|
1483
1559
|
|
|
1484
1560
|
// src/components/item.tsx
|
|
1485
|
-
import { jsx as
|
|
1561
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
1486
1562
|
function ItemGroup({ className, ...props }) {
|
|
1487
|
-
return /* @__PURE__ */
|
|
1563
|
+
return /* @__PURE__ */ jsx19(
|
|
1488
1564
|
"div",
|
|
1489
1565
|
{
|
|
1490
1566
|
role: "list",
|
|
@@ -1498,7 +1574,7 @@ function ItemSeparator({
|
|
|
1498
1574
|
className,
|
|
1499
1575
|
...props
|
|
1500
1576
|
}) {
|
|
1501
|
-
return /* @__PURE__ */
|
|
1577
|
+
return /* @__PURE__ */ jsx19(
|
|
1502
1578
|
Separator,
|
|
1503
1579
|
{
|
|
1504
1580
|
"data-slot": "item-separator",
|
|
@@ -1516,7 +1592,7 @@ function Item({
|
|
|
1516
1592
|
...props
|
|
1517
1593
|
}) {
|
|
1518
1594
|
const Comp = asChild ? Slot : "div";
|
|
1519
|
-
return /* @__PURE__ */
|
|
1595
|
+
return /* @__PURE__ */ jsx19(
|
|
1520
1596
|
Comp,
|
|
1521
1597
|
{
|
|
1522
1598
|
"data-slot": "item",
|
|
@@ -1532,7 +1608,7 @@ function ItemMedia({
|
|
|
1532
1608
|
variant = "bare",
|
|
1533
1609
|
...props
|
|
1534
1610
|
}) {
|
|
1535
|
-
return /* @__PURE__ */
|
|
1611
|
+
return /* @__PURE__ */ jsx19(
|
|
1536
1612
|
"div",
|
|
1537
1613
|
{
|
|
1538
1614
|
"data-slot": "item-media",
|
|
@@ -1546,7 +1622,7 @@ function ItemContent({
|
|
|
1546
1622
|
className,
|
|
1547
1623
|
...props
|
|
1548
1624
|
}) {
|
|
1549
|
-
return /* @__PURE__ */
|
|
1625
|
+
return /* @__PURE__ */ jsx19(
|
|
1550
1626
|
"div",
|
|
1551
1627
|
{
|
|
1552
1628
|
"data-slot": "item-content",
|
|
@@ -1556,7 +1632,7 @@ function ItemContent({
|
|
|
1556
1632
|
);
|
|
1557
1633
|
}
|
|
1558
1634
|
function ItemTitle({ className, ...props }) {
|
|
1559
|
-
return /* @__PURE__ */
|
|
1635
|
+
return /* @__PURE__ */ jsx19(
|
|
1560
1636
|
"div",
|
|
1561
1637
|
{
|
|
1562
1638
|
"data-slot": "item-title",
|
|
@@ -1569,7 +1645,7 @@ function ItemDescription({
|
|
|
1569
1645
|
className,
|
|
1570
1646
|
...props
|
|
1571
1647
|
}) {
|
|
1572
|
-
return /* @__PURE__ */
|
|
1648
|
+
return /* @__PURE__ */ jsx19(
|
|
1573
1649
|
"p",
|
|
1574
1650
|
{
|
|
1575
1651
|
"data-slot": "item-description",
|
|
@@ -1582,7 +1658,7 @@ function ItemActions({
|
|
|
1582
1658
|
className,
|
|
1583
1659
|
...props
|
|
1584
1660
|
}) {
|
|
1585
|
-
return /* @__PURE__ */
|
|
1661
|
+
return /* @__PURE__ */ jsx19(
|
|
1586
1662
|
"div",
|
|
1587
1663
|
{
|
|
1588
1664
|
"data-slot": "item-actions",
|
|
@@ -1595,7 +1671,7 @@ function ItemHeader({
|
|
|
1595
1671
|
className,
|
|
1596
1672
|
...props
|
|
1597
1673
|
}) {
|
|
1598
|
-
return /* @__PURE__ */
|
|
1674
|
+
return /* @__PURE__ */ jsx19(
|
|
1599
1675
|
"div",
|
|
1600
1676
|
{
|
|
1601
1677
|
"data-slot": "item-header",
|
|
@@ -1608,7 +1684,7 @@ function ItemFooter({
|
|
|
1608
1684
|
className,
|
|
1609
1685
|
...props
|
|
1610
1686
|
}) {
|
|
1611
|
-
return /* @__PURE__ */
|
|
1687
|
+
return /* @__PURE__ */ jsx19(
|
|
1612
1688
|
"div",
|
|
1613
1689
|
{
|
|
1614
1690
|
"data-slot": "item-footer",
|
|
@@ -1626,9 +1702,9 @@ var KBD_BASE = "bg-muted text-ink-soft pointer-events-none inline-flex h-5 w-fit
|
|
|
1626
1702
|
var KBD_GROUP_BASE = "inline-flex items-center gap-1";
|
|
1627
1703
|
|
|
1628
1704
|
// src/components/kbd.tsx
|
|
1629
|
-
import { jsx as
|
|
1705
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
1630
1706
|
function Kbd({ className, ...props }) {
|
|
1631
|
-
return /* @__PURE__ */
|
|
1707
|
+
return /* @__PURE__ */ jsx20(
|
|
1632
1708
|
"kbd",
|
|
1633
1709
|
{
|
|
1634
1710
|
"data-slot": "kbd",
|
|
@@ -1638,7 +1714,7 @@ function Kbd({ className, ...props }) {
|
|
|
1638
1714
|
);
|
|
1639
1715
|
}
|
|
1640
1716
|
function KbdGroup({ className, ...props }) {
|
|
1641
|
-
return /* @__PURE__ */
|
|
1717
|
+
return /* @__PURE__ */ jsx20(
|
|
1642
1718
|
"kbd",
|
|
1643
1719
|
{
|
|
1644
1720
|
"data-slot": "kbd-group",
|
|
@@ -1650,9 +1726,9 @@ function KbdGroup({ className, ...props }) {
|
|
|
1650
1726
|
|
|
1651
1727
|
// src/components/pagination.tsx
|
|
1652
1728
|
import "react";
|
|
1653
|
-
import { jsx as
|
|
1729
|
+
import { jsx as jsx21, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1654
1730
|
function Pagination({ className, ...props }) {
|
|
1655
|
-
return /* @__PURE__ */
|
|
1731
|
+
return /* @__PURE__ */ jsx21(
|
|
1656
1732
|
"nav",
|
|
1657
1733
|
{
|
|
1658
1734
|
role: "navigation",
|
|
@@ -1667,7 +1743,7 @@ function PaginationContent({
|
|
|
1667
1743
|
className,
|
|
1668
1744
|
...props
|
|
1669
1745
|
}) {
|
|
1670
|
-
return /* @__PURE__ */
|
|
1746
|
+
return /* @__PURE__ */ jsx21(
|
|
1671
1747
|
"ul",
|
|
1672
1748
|
{
|
|
1673
1749
|
"data-slot": "pagination-content",
|
|
@@ -1677,15 +1753,16 @@ function PaginationContent({
|
|
|
1677
1753
|
);
|
|
1678
1754
|
}
|
|
1679
1755
|
function PaginationItem(props) {
|
|
1680
|
-
return /* @__PURE__ */
|
|
1756
|
+
return /* @__PURE__ */ jsx21("li", { "data-slot": "pagination-item", ...props });
|
|
1681
1757
|
}
|
|
1682
1758
|
function PaginationLink({
|
|
1683
1759
|
className,
|
|
1684
1760
|
isActive,
|
|
1685
|
-
size = "
|
|
1761
|
+
size = "md",
|
|
1762
|
+
icon = true,
|
|
1686
1763
|
...props
|
|
1687
1764
|
}) {
|
|
1688
|
-
return /* @__PURE__ */
|
|
1765
|
+
return /* @__PURE__ */ jsx21(
|
|
1689
1766
|
"a",
|
|
1690
1767
|
{
|
|
1691
1768
|
"aria-current": isActive ? "page" : void 0,
|
|
@@ -1694,7 +1771,8 @@ function PaginationLink({
|
|
|
1694
1771
|
className: cn(
|
|
1695
1772
|
buttonVariants({
|
|
1696
1773
|
variant: isActive ? "outline" : "ghost",
|
|
1697
|
-
size
|
|
1774
|
+
size,
|
|
1775
|
+
icon
|
|
1698
1776
|
}),
|
|
1699
1777
|
className
|
|
1700
1778
|
),
|
|
@@ -1702,8 +1780,8 @@ function PaginationLink({
|
|
|
1702
1780
|
}
|
|
1703
1781
|
);
|
|
1704
1782
|
}
|
|
1705
|
-
var ChevronLeft = () => /* @__PURE__ */
|
|
1706
|
-
var ChevronRight = () => /* @__PURE__ */
|
|
1783
|
+
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" }) });
|
|
1784
|
+
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
1785
|
var MoreHorizontal = () => /* @__PURE__ */ jsxs5(
|
|
1708
1786
|
"svg",
|
|
1709
1787
|
{
|
|
@@ -1713,9 +1791,9 @@ var MoreHorizontal = () => /* @__PURE__ */ jsxs5(
|
|
|
1713
1791
|
stroke: "currentColor",
|
|
1714
1792
|
strokeWidth: 2,
|
|
1715
1793
|
children: [
|
|
1716
|
-
/* @__PURE__ */
|
|
1717
|
-
/* @__PURE__ */
|
|
1718
|
-
/* @__PURE__ */
|
|
1794
|
+
/* @__PURE__ */ jsx21("circle", { cx: "12", cy: "12", r: "1" }),
|
|
1795
|
+
/* @__PURE__ */ jsx21("circle", { cx: "19", cy: "12", r: "1" }),
|
|
1796
|
+
/* @__PURE__ */ jsx21("circle", { cx: "5", cy: "12", r: "1" })
|
|
1719
1797
|
]
|
|
1720
1798
|
}
|
|
1721
1799
|
);
|
|
@@ -1731,8 +1809,8 @@ function PaginationPrevious({
|
|
|
1731
1809
|
className: cn("gap-1 px-2.5 sm:pl-2.5", className),
|
|
1732
1810
|
...props,
|
|
1733
1811
|
children: [
|
|
1734
|
-
/* @__PURE__ */
|
|
1735
|
-
/* @__PURE__ */
|
|
1812
|
+
/* @__PURE__ */ jsx21(ChevronLeft, {}),
|
|
1813
|
+
/* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Previous" })
|
|
1736
1814
|
]
|
|
1737
1815
|
}
|
|
1738
1816
|
);
|
|
@@ -1749,8 +1827,8 @@ function PaginationNext({
|
|
|
1749
1827
|
className: cn("gap-1 px-2.5 sm:pr-2.5", className),
|
|
1750
1828
|
...props,
|
|
1751
1829
|
children: [
|
|
1752
|
-
/* @__PURE__ */
|
|
1753
|
-
/* @__PURE__ */
|
|
1830
|
+
/* @__PURE__ */ jsx21("span", { className: "hidden sm:block", children: "Next" }),
|
|
1831
|
+
/* @__PURE__ */ jsx21(ChevronRight, {})
|
|
1754
1832
|
]
|
|
1755
1833
|
}
|
|
1756
1834
|
);
|
|
@@ -1767,8 +1845,8 @@ function PaginationEllipsis({
|
|
|
1767
1845
|
className: cn("flex size-9 items-center justify-center", className),
|
|
1768
1846
|
...props,
|
|
1769
1847
|
children: [
|
|
1770
|
-
/* @__PURE__ */
|
|
1771
|
-
/* @__PURE__ */
|
|
1848
|
+
/* @__PURE__ */ jsx21(MoreHorizontal, {}),
|
|
1849
|
+
/* @__PURE__ */ jsx21("span", { className: "sr-only", children: "More pages" })
|
|
1772
1850
|
]
|
|
1773
1851
|
}
|
|
1774
1852
|
);
|
|
@@ -1782,9 +1860,9 @@ var PROGRESS_TRACK = "bg-primary/20 relative h-2 w-full overflow-hidden rounded-
|
|
|
1782
1860
|
var PROGRESS_INDICATOR = "bg-primary h-full w-full flex-1 transition-all";
|
|
1783
1861
|
|
|
1784
1862
|
// src/components/progress.tsx
|
|
1785
|
-
import { jsx as
|
|
1863
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1786
1864
|
function Progress({ className, value = 0, ...props }) {
|
|
1787
|
-
return /* @__PURE__ */
|
|
1865
|
+
return /* @__PURE__ */ jsx22(
|
|
1788
1866
|
"div",
|
|
1789
1867
|
{
|
|
1790
1868
|
"data-slot": "progress",
|
|
@@ -1794,7 +1872,7 @@ function Progress({ className, value = 0, ...props }) {
|
|
|
1794
1872
|
"aria-valuemax": 100,
|
|
1795
1873
|
className: cn(PROGRESS_TRACK, className),
|
|
1796
1874
|
...props,
|
|
1797
|
-
children: /* @__PURE__ */
|
|
1875
|
+
children: /* @__PURE__ */ jsx22(
|
|
1798
1876
|
"div",
|
|
1799
1877
|
{
|
|
1800
1878
|
"data-slot": "progress-indicator",
|
|
@@ -1813,9 +1891,9 @@ import "react";
|
|
|
1813
1891
|
var SKELETON_BASE = "bg-hover animate-pulse rounded-md";
|
|
1814
1892
|
|
|
1815
1893
|
// src/components/skeleton.tsx
|
|
1816
|
-
import { jsx as
|
|
1894
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1817
1895
|
function Skeleton({ className, ...props }) {
|
|
1818
|
-
return /* @__PURE__ */
|
|
1896
|
+
return /* @__PURE__ */ jsx23(
|
|
1819
1897
|
"div",
|
|
1820
1898
|
{
|
|
1821
1899
|
"data-slot": "skeleton",
|
|
@@ -1827,9 +1905,9 @@ function Skeleton({ className, ...props }) {
|
|
|
1827
1905
|
|
|
1828
1906
|
// src/components/spinner.tsx
|
|
1829
1907
|
import "react";
|
|
1830
|
-
import { jsx as
|
|
1908
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
1831
1909
|
function Spinner({ className, ...props }) {
|
|
1832
|
-
return /* @__PURE__ */
|
|
1910
|
+
return /* @__PURE__ */ jsx24(
|
|
1833
1911
|
"svg",
|
|
1834
1912
|
{
|
|
1835
1913
|
role: "status",
|
|
@@ -1840,50 +1918,20 @@ function Spinner({ className, ...props }) {
|
|
|
1840
1918
|
stroke: "currentColor",
|
|
1841
1919
|
strokeWidth: 2,
|
|
1842
1920
|
...props,
|
|
1843
|
-
children: /* @__PURE__ */
|
|
1921
|
+
children: /* @__PURE__ */ jsx24("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" })
|
|
1844
1922
|
}
|
|
1845
1923
|
);
|
|
1846
1924
|
}
|
|
1847
1925
|
|
|
1848
1926
|
// src/components/status-screen.tsx
|
|
1849
1927
|
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
|
-
};
|
|
1928
|
+
import { jsx as jsx25, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1872
1929
|
function statusCtaClass(accent, variant) {
|
|
1873
1930
|
return cn(
|
|
1874
|
-
buttonVariants({ variant, size: "lg" }),
|
|
1875
|
-
"font-mono text-xs uppercase tracking-widest"
|
|
1876
|
-
variant === "outline" ? BTN_OUTLINE[accent] : BTN_FILLED[accent]
|
|
1931
|
+
buttonVariants({ variant, size: "lg", accent }),
|
|
1932
|
+
"font-mono text-xs uppercase tracking-widest"
|
|
1877
1933
|
);
|
|
1878
1934
|
}
|
|
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
1935
|
function ArrowLeftIcon({ className }) {
|
|
1888
1936
|
return /* @__PURE__ */ jsxs6(
|
|
1889
1937
|
"svg",
|
|
@@ -1897,8 +1945,8 @@ function ArrowLeftIcon({ className }) {
|
|
|
1897
1945
|
strokeLinejoin: "round",
|
|
1898
1946
|
"aria-hidden": true,
|
|
1899
1947
|
children: [
|
|
1900
|
-
/* @__PURE__ */
|
|
1901
|
-
/* @__PURE__ */
|
|
1948
|
+
/* @__PURE__ */ jsx25("path", { d: "m12 19-7-7 7-7" }),
|
|
1949
|
+
/* @__PURE__ */ jsx25("path", { d: "M19 12H5" })
|
|
1902
1950
|
]
|
|
1903
1951
|
}
|
|
1904
1952
|
);
|
|
@@ -1916,9 +1964,9 @@ function StatusScreen({
|
|
|
1916
1964
|
linkComponent
|
|
1917
1965
|
}) {
|
|
1918
1966
|
const L = linkComponent ?? "a";
|
|
1919
|
-
const accentText =
|
|
1967
|
+
const accentText = accentTextClasses[accent];
|
|
1920
1968
|
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__ */
|
|
1969
|
+
/* @__PURE__ */ jsx25(
|
|
1922
1970
|
"div",
|
|
1923
1971
|
{
|
|
1924
1972
|
"aria-hidden": true,
|
|
@@ -1929,19 +1977,19 @@ function StatusScreen({
|
|
|
1929
1977
|
}
|
|
1930
1978
|
),
|
|
1931
1979
|
/* @__PURE__ */ jsxs6("div", { className: "relative z-10 flex w-full max-w-2xl flex-col items-center", children: [
|
|
1932
|
-
/* @__PURE__ */
|
|
1933
|
-
/* @__PURE__ */
|
|
1934
|
-
/* @__PURE__ */
|
|
1980
|
+
/* @__PURE__ */ jsx25(Logo, { className: cn("mb-7 h-10 w-auto", accentText) }),
|
|
1981
|
+
/* @__PURE__ */ jsx25("p", { className: cn("mb-6 font-mono text-[11px] uppercase tracking-[0.34em]", accentText), children: eyebrow }),
|
|
1982
|
+
/* @__PURE__ */ jsx25("p", { className: cn("font-serif text-[110px] font-medium leading-[0.9] sm:text-[180px]", accentText), children: code }),
|
|
1935
1983
|
/* @__PURE__ */ jsxs6("h1", { className: "mt-4 font-serif text-3xl font-light leading-tight text-ink sm:text-5xl", children: [
|
|
1936
1984
|
headlineLead,
|
|
1937
|
-
/* @__PURE__ */
|
|
1985
|
+
/* @__PURE__ */ jsx25("span", { className: cn("font-serif italic", accentText), children: headlineAccent }),
|
|
1938
1986
|
headlineTail
|
|
1939
1987
|
] }),
|
|
1940
|
-
/* @__PURE__ */
|
|
1988
|
+
/* @__PURE__ */ jsx25("p", { className: "mx-auto mt-5 max-w-md text-sm leading-relaxed text-ink/60 sm:text-base", children: subtext }),
|
|
1941
1989
|
/* @__PURE__ */ jsxs6("div", { className: "mt-9 flex flex-col items-center gap-3 sm:flex-row", children: [
|
|
1942
1990
|
children,
|
|
1943
1991
|
links?.map((link) => /* @__PURE__ */ jsxs6(L, { href: link.href, className: statusCtaClass(accent, link.variant ?? "primary"), children: [
|
|
1944
|
-
link.leadingArrow ? /* @__PURE__ */
|
|
1992
|
+
link.leadingArrow ? /* @__PURE__ */ jsx25(ArrowLeftIcon, { className: "mr-2 h-4 w-4" }) : null,
|
|
1945
1993
|
link.label
|
|
1946
1994
|
] }, link.label))
|
|
1947
1995
|
] })
|
|
@@ -1949,7 +1997,7 @@ function StatusScreen({
|
|
|
1949
1997
|
] });
|
|
1950
1998
|
}
|
|
1951
1999
|
function NotFound({ linkComponent = "a", homeHref = "/", contactHref = "/contact" }) {
|
|
1952
|
-
return /* @__PURE__ */
|
|
2000
|
+
return /* @__PURE__ */ jsx25(
|
|
1953
2001
|
StatusScreen,
|
|
1954
2002
|
{
|
|
1955
2003
|
accent: "debug",
|
|
@@ -1967,7 +2015,7 @@ function NotFound({ linkComponent = "a", homeHref = "/", contactHref = "/contact
|
|
|
1967
2015
|
);
|
|
1968
2016
|
}
|
|
1969
2017
|
function Forbidden({ linkComponent = "a", homeHref = "/", contactHref = "/contact" }) {
|
|
1970
|
-
return /* @__PURE__ */
|
|
2018
|
+
return /* @__PURE__ */ jsx25(
|
|
1971
2019
|
StatusScreen,
|
|
1972
2020
|
{
|
|
1973
2021
|
accent: "warn",
|
|
@@ -1985,7 +2033,7 @@ function Forbidden({ linkComponent = "a", homeHref = "/", contactHref = "/contac
|
|
|
1985
2033
|
);
|
|
1986
2034
|
}
|
|
1987
2035
|
function ServerError({ linkComponent = "a", homeHref = "/", reset }) {
|
|
1988
|
-
return /* @__PURE__ */
|
|
2036
|
+
return /* @__PURE__ */ jsx25(
|
|
1989
2037
|
StatusScreen,
|
|
1990
2038
|
{
|
|
1991
2039
|
accent: "error",
|
|
@@ -1996,7 +2044,7 @@ function ServerError({ linkComponent = "a", homeHref = "/", reset }) {
|
|
|
1996
2044
|
subtext: "Something broke on our end \u2014 not yours. We've been alerted and are restoring service. Please try again in a moment.",
|
|
1997
2045
|
linkComponent,
|
|
1998
2046
|
links: [{ label: "Back to home", href: homeHref, variant: "outline", leadingArrow: true }],
|
|
1999
|
-
children: /* @__PURE__ */
|
|
2047
|
+
children: /* @__PURE__ */ jsx25(
|
|
2000
2048
|
"button",
|
|
2001
2049
|
{
|
|
2002
2050
|
type: "button",
|
|
@@ -2024,14 +2072,14 @@ var TABLE_CELL = "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr
|
|
|
2024
2072
|
var TABLE_CAPTION = "text-ink-soft mt-4 text-sm";
|
|
2025
2073
|
|
|
2026
2074
|
// src/components/table.tsx
|
|
2027
|
-
import { jsx as
|
|
2075
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
2028
2076
|
function Table({ className, ...props }) {
|
|
2029
|
-
return /* @__PURE__ */
|
|
2077
|
+
return /* @__PURE__ */ jsx26(
|
|
2030
2078
|
"div",
|
|
2031
2079
|
{
|
|
2032
2080
|
"data-slot": "table-container",
|
|
2033
2081
|
className: TABLE_CONTAINER,
|
|
2034
|
-
children: /* @__PURE__ */
|
|
2082
|
+
children: /* @__PURE__ */ jsx26(
|
|
2035
2083
|
"table",
|
|
2036
2084
|
{
|
|
2037
2085
|
"data-slot": "table",
|
|
@@ -2046,7 +2094,7 @@ function TableHeader({
|
|
|
2046
2094
|
className,
|
|
2047
2095
|
...props
|
|
2048
2096
|
}) {
|
|
2049
|
-
return /* @__PURE__ */
|
|
2097
|
+
return /* @__PURE__ */ jsx26(
|
|
2050
2098
|
"thead",
|
|
2051
2099
|
{
|
|
2052
2100
|
"data-slot": "table-header",
|
|
@@ -2059,7 +2107,7 @@ function TableBody({
|
|
|
2059
2107
|
className,
|
|
2060
2108
|
...props
|
|
2061
2109
|
}) {
|
|
2062
|
-
return /* @__PURE__ */
|
|
2110
|
+
return /* @__PURE__ */ jsx26(
|
|
2063
2111
|
"tbody",
|
|
2064
2112
|
{
|
|
2065
2113
|
"data-slot": "table-body",
|
|
@@ -2072,7 +2120,7 @@ function TableFooter({
|
|
|
2072
2120
|
className,
|
|
2073
2121
|
...props
|
|
2074
2122
|
}) {
|
|
2075
|
-
return /* @__PURE__ */
|
|
2123
|
+
return /* @__PURE__ */ jsx26(
|
|
2076
2124
|
"tfoot",
|
|
2077
2125
|
{
|
|
2078
2126
|
"data-slot": "table-footer",
|
|
@@ -2082,7 +2130,7 @@ function TableFooter({
|
|
|
2082
2130
|
);
|
|
2083
2131
|
}
|
|
2084
2132
|
function TableRow({ className, ...props }) {
|
|
2085
|
-
return /* @__PURE__ */
|
|
2133
|
+
return /* @__PURE__ */ jsx26(
|
|
2086
2134
|
"tr",
|
|
2087
2135
|
{
|
|
2088
2136
|
"data-slot": "table-row",
|
|
@@ -2092,7 +2140,7 @@ function TableRow({ className, ...props }) {
|
|
|
2092
2140
|
);
|
|
2093
2141
|
}
|
|
2094
2142
|
function TableHead({ className, ...props }) {
|
|
2095
|
-
return /* @__PURE__ */
|
|
2143
|
+
return /* @__PURE__ */ jsx26(
|
|
2096
2144
|
"th",
|
|
2097
2145
|
{
|
|
2098
2146
|
"data-slot": "table-head",
|
|
@@ -2102,7 +2150,7 @@ function TableHead({ className, ...props }) {
|
|
|
2102
2150
|
);
|
|
2103
2151
|
}
|
|
2104
2152
|
function TableCell({ className, ...props }) {
|
|
2105
|
-
return /* @__PURE__ */
|
|
2153
|
+
return /* @__PURE__ */ jsx26(
|
|
2106
2154
|
"td",
|
|
2107
2155
|
{
|
|
2108
2156
|
"data-slot": "table-cell",
|
|
@@ -2115,7 +2163,7 @@ function TableCaption({
|
|
|
2115
2163
|
className,
|
|
2116
2164
|
...props
|
|
2117
2165
|
}) {
|
|
2118
|
-
return /* @__PURE__ */
|
|
2166
|
+
return /* @__PURE__ */ jsx26(
|
|
2119
2167
|
"caption",
|
|
2120
2168
|
{
|
|
2121
2169
|
"data-slot": "table-caption",
|
|
@@ -2126,7 +2174,7 @@ function TableCaption({
|
|
|
2126
2174
|
}
|
|
2127
2175
|
|
|
2128
2176
|
// src/components/accordion.tsx
|
|
2129
|
-
import * as
|
|
2177
|
+
import * as React37 from "react";
|
|
2130
2178
|
|
|
2131
2179
|
// src/generated/accordion.ts
|
|
2132
2180
|
var ACCORDION_ITEM = "border-b last:border-b-0";
|
|
@@ -2136,16 +2184,16 @@ var ACCORDION_CONTENT = "data-[state=closed]:animate-accordion-up data-[state=op
|
|
|
2136
2184
|
var ACCORDION_CONTENT_INNER = "pt-0 pb-4";
|
|
2137
2185
|
|
|
2138
2186
|
// src/components/accordion.tsx
|
|
2139
|
-
import { jsx as
|
|
2140
|
-
var AccordionContext =
|
|
2187
|
+
import { jsx as jsx27, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2188
|
+
var AccordionContext = React37.createContext(null);
|
|
2141
2189
|
function useAccordion() {
|
|
2142
|
-
const ctx =
|
|
2190
|
+
const ctx = React37.useContext(AccordionContext);
|
|
2143
2191
|
if (!ctx) throw new Error("Accordion parts must be used within <Accordion>");
|
|
2144
2192
|
return ctx;
|
|
2145
2193
|
}
|
|
2146
|
-
var ItemContext =
|
|
2194
|
+
var ItemContext = React37.createContext(null);
|
|
2147
2195
|
function useItemValue() {
|
|
2148
|
-
const value =
|
|
2196
|
+
const value = React37.useContext(ItemContext);
|
|
2149
2197
|
if (value === null)
|
|
2150
2198
|
throw new Error("AccordionTrigger/Content must be used within <AccordionItem>");
|
|
2151
2199
|
return value;
|
|
@@ -2173,7 +2221,7 @@ function Accordion({
|
|
|
2173
2221
|
if (open.includes(v)) setOpen(collapsible ? [] : open);
|
|
2174
2222
|
else setOpen([v]);
|
|
2175
2223
|
};
|
|
2176
|
-
return /* @__PURE__ */
|
|
2224
|
+
return /* @__PURE__ */ jsx27(AccordionContext.Provider, { value: { isOpen, toggle }, children: /* @__PURE__ */ jsx27("div", { "data-slot": "accordion", ...props, children }) });
|
|
2177
2225
|
}
|
|
2178
2226
|
function AccordionItem({
|
|
2179
2227
|
className,
|
|
@@ -2181,7 +2229,7 @@ function AccordionItem({
|
|
|
2181
2229
|
children,
|
|
2182
2230
|
...props
|
|
2183
2231
|
}) {
|
|
2184
|
-
return /* @__PURE__ */
|
|
2232
|
+
return /* @__PURE__ */ jsx27(ItemContext.Provider, { value, children: /* @__PURE__ */ jsx27(
|
|
2185
2233
|
"div",
|
|
2186
2234
|
{
|
|
2187
2235
|
"data-slot": "accordion-item",
|
|
@@ -2200,7 +2248,7 @@ function AccordionTrigger({
|
|
|
2200
2248
|
const { isOpen, toggle } = useAccordion();
|
|
2201
2249
|
const value = useItemValue();
|
|
2202
2250
|
const open = isOpen(value);
|
|
2203
|
-
return /* @__PURE__ */
|
|
2251
|
+
return /* @__PURE__ */ jsx27("h3", { className: ACCORDION_HEADER, "data-slot": "accordion-header", children: /* @__PURE__ */ jsxs7(
|
|
2204
2252
|
"button",
|
|
2205
2253
|
{
|
|
2206
2254
|
type: "button",
|
|
@@ -2215,7 +2263,7 @@ function AccordionTrigger({
|
|
|
2215
2263
|
...props,
|
|
2216
2264
|
children: [
|
|
2217
2265
|
children,
|
|
2218
|
-
/* @__PURE__ */
|
|
2266
|
+
/* @__PURE__ */ jsx27(
|
|
2219
2267
|
"svg",
|
|
2220
2268
|
{
|
|
2221
2269
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2228,7 +2276,7 @@ function AccordionTrigger({
|
|
|
2228
2276
|
strokeLinecap: "round",
|
|
2229
2277
|
strokeLinejoin: "round",
|
|
2230
2278
|
className: "text-ink-soft pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200",
|
|
2231
|
-
children: /* @__PURE__ */
|
|
2279
|
+
children: /* @__PURE__ */ jsx27("path", { d: "m6 9 6 6 6-6" })
|
|
2232
2280
|
}
|
|
2233
2281
|
)
|
|
2234
2282
|
]
|
|
@@ -2243,26 +2291,26 @@ function AccordionContent({
|
|
|
2243
2291
|
const { isOpen } = useAccordion();
|
|
2244
2292
|
const value = useItemValue();
|
|
2245
2293
|
if (!isOpen(value)) return null;
|
|
2246
|
-
return /* @__PURE__ */
|
|
2294
|
+
return /* @__PURE__ */ jsx27(
|
|
2247
2295
|
"div",
|
|
2248
2296
|
{
|
|
2249
2297
|
"data-slot": "accordion-content",
|
|
2250
2298
|
"data-state": "open",
|
|
2251
2299
|
className: ACCORDION_CONTENT,
|
|
2252
2300
|
...props,
|
|
2253
|
-
children: /* @__PURE__ */
|
|
2301
|
+
children: /* @__PURE__ */ jsx27("div", { className: cn(ACCORDION_CONTENT_INNER, className), children })
|
|
2254
2302
|
}
|
|
2255
2303
|
);
|
|
2256
2304
|
}
|
|
2257
2305
|
|
|
2258
2306
|
// src/components/collapsible.tsx
|
|
2259
|
-
import * as
|
|
2260
|
-
import { jsx as
|
|
2261
|
-
var CollapsibleContext =
|
|
2307
|
+
import * as React38 from "react";
|
|
2308
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
2309
|
+
var CollapsibleContext = React38.createContext(
|
|
2262
2310
|
null
|
|
2263
2311
|
);
|
|
2264
2312
|
function useCollapsible() {
|
|
2265
|
-
const ctx =
|
|
2313
|
+
const ctx = React38.useContext(CollapsibleContext);
|
|
2266
2314
|
if (!ctx) throw new Error("Collapsible parts must be used within <Collapsible>");
|
|
2267
2315
|
return ctx;
|
|
2268
2316
|
}
|
|
@@ -2278,14 +2326,14 @@ function Collapsible({
|
|
|
2278
2326
|
defaultValue: defaultOpen,
|
|
2279
2327
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
2280
2328
|
});
|
|
2281
|
-
return /* @__PURE__ */
|
|
2329
|
+
return /* @__PURE__ */ jsx28(CollapsibleContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx28("div", { "data-slot": "collapsible", "data-state": isOpen ? "open" : "closed", ...props, children }) });
|
|
2282
2330
|
}
|
|
2283
2331
|
function CollapsibleTrigger({
|
|
2284
2332
|
onClick,
|
|
2285
2333
|
...props
|
|
2286
2334
|
}) {
|
|
2287
2335
|
const { open, setOpen } = useCollapsible();
|
|
2288
|
-
return /* @__PURE__ */
|
|
2336
|
+
return /* @__PURE__ */ jsx28(
|
|
2289
2337
|
"button",
|
|
2290
2338
|
{
|
|
2291
2339
|
type: "button",
|
|
@@ -2306,7 +2354,7 @@ function CollapsibleContent({
|
|
|
2306
2354
|
}) {
|
|
2307
2355
|
const { open } = useCollapsible();
|
|
2308
2356
|
if (!open) return null;
|
|
2309
|
-
return /* @__PURE__ */
|
|
2357
|
+
return /* @__PURE__ */ jsx28("div", { "data-slot": "collapsible-content", "data-state": "open", ...props, children });
|
|
2310
2358
|
}
|
|
2311
2359
|
|
|
2312
2360
|
// src/components/band.tsx
|
|
@@ -2337,7 +2385,7 @@ var STAT_LABEL = "text-ink-soft";
|
|
|
2337
2385
|
var CHECK = "font-semibold text-positive";
|
|
2338
2386
|
|
|
2339
2387
|
// src/components/band.tsx
|
|
2340
|
-
import { jsx as
|
|
2388
|
+
import { jsx as jsx29, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2341
2389
|
function Section({
|
|
2342
2390
|
polarity = "light",
|
|
2343
2391
|
surface = "background",
|
|
@@ -2345,7 +2393,7 @@ function Section({
|
|
|
2345
2393
|
className,
|
|
2346
2394
|
...props
|
|
2347
2395
|
}) {
|
|
2348
|
-
return /* @__PURE__ */
|
|
2396
|
+
return /* @__PURE__ */ jsx29(
|
|
2349
2397
|
"section",
|
|
2350
2398
|
{
|
|
2351
2399
|
"data-slot": "section",
|
|
@@ -2360,33 +2408,33 @@ function Section({
|
|
|
2360
2408
|
);
|
|
2361
2409
|
}
|
|
2362
2410
|
function Eyebrow({ className, ...props }) {
|
|
2363
|
-
return /* @__PURE__ */
|
|
2411
|
+
return /* @__PURE__ */ jsx29("p", { "data-slot": "eyebrow", className: cn(EYEBROW, className), ...props });
|
|
2364
2412
|
}
|
|
2365
2413
|
function Display({ className, ...props }) {
|
|
2366
|
-
return /* @__PURE__ */
|
|
2414
|
+
return /* @__PURE__ */ jsx29("h2", { "data-slot": "display", className: cn(DISPLAY_BASE, className), ...props });
|
|
2367
2415
|
}
|
|
2368
2416
|
function SectionHead({ eyebrow, title, lede, className, ...props }) {
|
|
2369
2417
|
return /* @__PURE__ */ jsxs8("div", { "data-slot": "section-head", className: cn(SECTION_HEAD, className), ...props, children: [
|
|
2370
|
-
/* @__PURE__ */
|
|
2371
|
-
/* @__PURE__ */
|
|
2372
|
-
lede && /* @__PURE__ */
|
|
2418
|
+
/* @__PURE__ */ jsx29(Eyebrow, { children: eyebrow }),
|
|
2419
|
+
/* @__PURE__ */ jsx29(Display, { children: title }),
|
|
2420
|
+
lede && /* @__PURE__ */ jsx29("p", { className: LEDE, children: lede })
|
|
2373
2421
|
] });
|
|
2374
2422
|
}
|
|
2375
2423
|
function Prose({ className, ...props }) {
|
|
2376
|
-
return /* @__PURE__ */
|
|
2424
|
+
return /* @__PURE__ */ jsx29("p", { "data-slot": "prose", className: cn(PROSE, className), ...props });
|
|
2377
2425
|
}
|
|
2378
2426
|
function Stat({ figure, label, className, ...props }) {
|
|
2379
2427
|
return /* @__PURE__ */ jsxs8("span", { "data-slot": "stat", className: cn(STAT, className), ...props, children: [
|
|
2380
|
-
/* @__PURE__ */
|
|
2381
|
-
/* @__PURE__ */
|
|
2428
|
+
/* @__PURE__ */ jsx29("span", { className: STAT_FIGURE, children: figure }),
|
|
2429
|
+
/* @__PURE__ */ jsx29("span", { className: STAT_LABEL, children: label })
|
|
2382
2430
|
] });
|
|
2383
2431
|
}
|
|
2384
2432
|
function Check({ className, ...props }) {
|
|
2385
|
-
return /* @__PURE__ */
|
|
2433
|
+
return /* @__PURE__ */ jsx29("span", { "data-slot": "check", "aria-hidden": true, className: cn(CHECK, className), ...props, children: "\u2713" });
|
|
2386
2434
|
}
|
|
2387
2435
|
|
|
2388
2436
|
// src/components/tabs.tsx
|
|
2389
|
-
import * as
|
|
2437
|
+
import * as React40 from "react";
|
|
2390
2438
|
|
|
2391
2439
|
// src/generated/tabs.ts
|
|
2392
2440
|
var TABS_ROOT = "flex flex-col gap-2";
|
|
@@ -2395,10 +2443,10 @@ var TABS_TRIGGER = "data-[state=active]:bg-background focus-visible:border-ring
|
|
|
2395
2443
|
var TABS_CONTENT = "flex-1 outline-none";
|
|
2396
2444
|
|
|
2397
2445
|
// src/components/tabs.tsx
|
|
2398
|
-
import { jsx as
|
|
2399
|
-
var TabsContext =
|
|
2446
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
2447
|
+
var TabsContext = React40.createContext(null);
|
|
2400
2448
|
function useTabs() {
|
|
2401
|
-
const ctx =
|
|
2449
|
+
const ctx = React40.useContext(TabsContext);
|
|
2402
2450
|
if (!ctx) throw new Error("Tabs parts must be used within <Tabs>");
|
|
2403
2451
|
return ctx;
|
|
2404
2452
|
}
|
|
@@ -2416,7 +2464,7 @@ function Tabs({
|
|
|
2416
2464
|
defaultValue,
|
|
2417
2465
|
...onValueChange ? { onChange: onValueChange } : {}
|
|
2418
2466
|
});
|
|
2419
|
-
return /* @__PURE__ */
|
|
2467
|
+
return /* @__PURE__ */ jsx30(TabsContext.Provider, { value: { value: active, setValue, orientation }, children: /* @__PURE__ */ jsx30(
|
|
2420
2468
|
"div",
|
|
2421
2469
|
{
|
|
2422
2470
|
"data-slot": "tabs",
|
|
@@ -2434,12 +2482,12 @@ function TabsList({
|
|
|
2434
2482
|
...props
|
|
2435
2483
|
}) {
|
|
2436
2484
|
const { orientation } = useTabs();
|
|
2437
|
-
const items =
|
|
2485
|
+
const items = React40.Children.toArray(children);
|
|
2438
2486
|
const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({
|
|
2439
2487
|
count: items.length,
|
|
2440
2488
|
orientation: orientation === "vertical" ? "vertical" : "horizontal"
|
|
2441
2489
|
});
|
|
2442
|
-
return /* @__PURE__ */
|
|
2490
|
+
return /* @__PURE__ */ jsx30(
|
|
2443
2491
|
"div",
|
|
2444
2492
|
{
|
|
2445
2493
|
role: "tablist",
|
|
@@ -2452,7 +2500,7 @@ function TabsList({
|
|
|
2452
2500
|
},
|
|
2453
2501
|
...props,
|
|
2454
2502
|
children: items.map(
|
|
2455
|
-
(child, index) =>
|
|
2503
|
+
(child, index) => React40.isValidElement(child) ? React40.cloneElement(child, {
|
|
2456
2504
|
__index: index,
|
|
2457
2505
|
__isFocusItem: index === activeIndex,
|
|
2458
2506
|
__onFocusItem: () => setActiveIndex(index)
|
|
@@ -2472,7 +2520,7 @@ function TabsTrigger({
|
|
|
2472
2520
|
}) {
|
|
2473
2521
|
const { value: active, setValue } = useTabs();
|
|
2474
2522
|
const selected = active === value;
|
|
2475
|
-
return /* @__PURE__ */
|
|
2523
|
+
return /* @__PURE__ */ jsx30(
|
|
2476
2524
|
"button",
|
|
2477
2525
|
{
|
|
2478
2526
|
type: "button",
|
|
@@ -2503,7 +2551,7 @@ function TabsContent({
|
|
|
2503
2551
|
}) {
|
|
2504
2552
|
const { value: active } = useTabs();
|
|
2505
2553
|
if (active !== value) return null;
|
|
2506
|
-
return /* @__PURE__ */
|
|
2554
|
+
return /* @__PURE__ */ jsx30(
|
|
2507
2555
|
"div",
|
|
2508
2556
|
{
|
|
2509
2557
|
role: "tabpanel",
|
|
@@ -2534,7 +2582,7 @@ var toggleSizeClasses = {
|
|
|
2534
2582
|
};
|
|
2535
2583
|
|
|
2536
2584
|
// src/components/toggle.tsx
|
|
2537
|
-
import { jsx as
|
|
2585
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
2538
2586
|
function toggleVariants({
|
|
2539
2587
|
variant = "bare",
|
|
2540
2588
|
size = "md",
|
|
@@ -2557,7 +2605,7 @@ function Toggle({
|
|
|
2557
2605
|
defaultValue: defaultPressed,
|
|
2558
2606
|
...onPressedChange ? { onChange: onPressedChange } : {}
|
|
2559
2607
|
});
|
|
2560
|
-
return /* @__PURE__ */
|
|
2608
|
+
return /* @__PURE__ */ jsx31(
|
|
2561
2609
|
"button",
|
|
2562
2610
|
{
|
|
2563
2611
|
type: "button",
|
|
@@ -2575,9 +2623,9 @@ function Toggle({
|
|
|
2575
2623
|
}
|
|
2576
2624
|
|
|
2577
2625
|
// src/components/toggle-group.tsx
|
|
2578
|
-
import * as
|
|
2579
|
-
import { jsx as
|
|
2580
|
-
var ToggleGroupContext =
|
|
2626
|
+
import * as React42 from "react";
|
|
2627
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
2628
|
+
var ToggleGroupContext = React42.createContext({
|
|
2581
2629
|
variant: "bare",
|
|
2582
2630
|
size: "md",
|
|
2583
2631
|
value: [],
|
|
@@ -2604,7 +2652,7 @@ function ToggleGroup({
|
|
|
2604
2652
|
defaultValue: toArray(defaultValue),
|
|
2605
2653
|
onChange: (next) => onValueChange?.(type === "single" ? next[0] ?? "" : next)
|
|
2606
2654
|
});
|
|
2607
|
-
const toggle =
|
|
2655
|
+
const toggle = React42.useCallback(
|
|
2608
2656
|
(itemValue) => {
|
|
2609
2657
|
if (type === "single") {
|
|
2610
2658
|
setSelected(selected.includes(itemValue) ? [] : [itemValue]);
|
|
@@ -2616,7 +2664,7 @@ function ToggleGroup({
|
|
|
2616
2664
|
},
|
|
2617
2665
|
[type, selected, setSelected]
|
|
2618
2666
|
);
|
|
2619
|
-
return /* @__PURE__ */
|
|
2667
|
+
return /* @__PURE__ */ jsx32(
|
|
2620
2668
|
"div",
|
|
2621
2669
|
{
|
|
2622
2670
|
"data-slot": "toggle-group",
|
|
@@ -2627,7 +2675,7 @@ function ToggleGroup({
|
|
|
2627
2675
|
className
|
|
2628
2676
|
),
|
|
2629
2677
|
...props,
|
|
2630
|
-
children: /* @__PURE__ */
|
|
2678
|
+
children: /* @__PURE__ */ jsx32(ToggleGroupContext.Provider, { value: { variant, size, value: selected, toggle }, children })
|
|
2631
2679
|
}
|
|
2632
2680
|
);
|
|
2633
2681
|
}
|
|
@@ -2640,11 +2688,11 @@ function ToggleGroupItem({
|
|
|
2640
2688
|
onClick,
|
|
2641
2689
|
...props
|
|
2642
2690
|
}) {
|
|
2643
|
-
const context =
|
|
2691
|
+
const context = React42.useContext(ToggleGroupContext);
|
|
2644
2692
|
const resolvedVariant = context.variant || variant || "bare";
|
|
2645
2693
|
const resolvedSize = context.size || size || "md";
|
|
2646
2694
|
const on = context.value.includes(value);
|
|
2647
|
-
return /* @__PURE__ */
|
|
2695
|
+
return /* @__PURE__ */ jsx32(
|
|
2648
2696
|
"button",
|
|
2649
2697
|
{
|
|
2650
2698
|
type: "button",
|
|
@@ -2670,7 +2718,7 @@ function ToggleGroupItem({
|
|
|
2670
2718
|
|
|
2671
2719
|
// src/components/switch.tsx
|
|
2672
2720
|
import "react";
|
|
2673
|
-
import { jsx as
|
|
2721
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
2674
2722
|
function Switch({
|
|
2675
2723
|
className,
|
|
2676
2724
|
checked,
|
|
@@ -2686,7 +2734,7 @@ function Switch({
|
|
|
2686
2734
|
...onCheckedChange ? { onChange: onCheckedChange } : {}
|
|
2687
2735
|
});
|
|
2688
2736
|
const state = on ? "checked" : "unchecked";
|
|
2689
|
-
return /* @__PURE__ */
|
|
2737
|
+
return /* @__PURE__ */ jsx33(
|
|
2690
2738
|
"button",
|
|
2691
2739
|
{
|
|
2692
2740
|
type: "button",
|
|
@@ -2704,7 +2752,7 @@ function Switch({
|
|
|
2704
2752
|
setOn(!on);
|
|
2705
2753
|
},
|
|
2706
2754
|
...props,
|
|
2707
|
-
children: /* @__PURE__ */
|
|
2755
|
+
children: /* @__PURE__ */ jsx33(
|
|
2708
2756
|
"span",
|
|
2709
2757
|
{
|
|
2710
2758
|
"data-slot": "switch-thumb",
|
|
@@ -2718,7 +2766,7 @@ function Switch({
|
|
|
2718
2766
|
|
|
2719
2767
|
// src/components/checkbox.tsx
|
|
2720
2768
|
import "react";
|
|
2721
|
-
import { jsx as
|
|
2769
|
+
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
2722
2770
|
function Checkbox({
|
|
2723
2771
|
className,
|
|
2724
2772
|
checked,
|
|
@@ -2734,7 +2782,7 @@ function Checkbox({
|
|
|
2734
2782
|
...onCheckedChange ? { onChange: onCheckedChange } : {}
|
|
2735
2783
|
});
|
|
2736
2784
|
const state = on ? "checked" : "unchecked";
|
|
2737
|
-
return /* @__PURE__ */
|
|
2785
|
+
return /* @__PURE__ */ jsx34(
|
|
2738
2786
|
"button",
|
|
2739
2787
|
{
|
|
2740
2788
|
type: "button",
|
|
@@ -2752,12 +2800,12 @@ function Checkbox({
|
|
|
2752
2800
|
setOn(!on);
|
|
2753
2801
|
},
|
|
2754
2802
|
...props,
|
|
2755
|
-
children: on && /* @__PURE__ */
|
|
2803
|
+
children: on && /* @__PURE__ */ jsx34(
|
|
2756
2804
|
"span",
|
|
2757
2805
|
{
|
|
2758
2806
|
"data-slot": "checkbox-indicator",
|
|
2759
2807
|
className: "flex items-center justify-center text-current transition-none",
|
|
2760
|
-
children: /* @__PURE__ */
|
|
2808
|
+
children: /* @__PURE__ */ jsx34(
|
|
2761
2809
|
"svg",
|
|
2762
2810
|
{
|
|
2763
2811
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2769,7 +2817,7 @@ function Checkbox({
|
|
|
2769
2817
|
strokeLinejoin: "round",
|
|
2770
2818
|
className: "size-3.5",
|
|
2771
2819
|
"aria-hidden": "true",
|
|
2772
|
-
children: /* @__PURE__ */
|
|
2820
|
+
children: /* @__PURE__ */ jsx34("path", { d: "M20 6 9 17l-5-5" })
|
|
2773
2821
|
}
|
|
2774
2822
|
)
|
|
2775
2823
|
}
|
|
@@ -2779,15 +2827,15 @@ function Checkbox({
|
|
|
2779
2827
|
}
|
|
2780
2828
|
|
|
2781
2829
|
// src/components/radio-group.tsx
|
|
2782
|
-
import * as
|
|
2830
|
+
import * as React45 from "react";
|
|
2783
2831
|
|
|
2784
2832
|
// src/generated/radio-group.ts
|
|
2785
2833
|
var RADIO_GROUP_ROOT = "grid gap-3";
|
|
2786
2834
|
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
2835
|
|
|
2788
2836
|
// src/components/radio-group.tsx
|
|
2789
|
-
import { jsx as
|
|
2790
|
-
var RadioGroupContext =
|
|
2837
|
+
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
2838
|
+
var RadioGroupContext = React45.createContext(
|
|
2791
2839
|
null
|
|
2792
2840
|
);
|
|
2793
2841
|
function RadioGroup({
|
|
@@ -2804,10 +2852,10 @@ function RadioGroup({
|
|
|
2804
2852
|
defaultValue,
|
|
2805
2853
|
...onValueChange ? { onChange: onValueChange } : {}
|
|
2806
2854
|
});
|
|
2807
|
-
const itemsRef =
|
|
2808
|
-
const [count, setCount] =
|
|
2855
|
+
const itemsRef = React45.useRef([]);
|
|
2856
|
+
const [count, setCount] = React45.useState(0);
|
|
2809
2857
|
const { activeIndex, setActiveIndex, onKeyDown: rovingKeyDown } = useRovingFocus({ count, orientation: "vertical", loop: true });
|
|
2810
|
-
const register =
|
|
2858
|
+
const register = React45.useCallback((el) => {
|
|
2811
2859
|
const list = itemsRef.current;
|
|
2812
2860
|
let index = list.indexOf(el);
|
|
2813
2861
|
if (index === -1) {
|
|
@@ -2817,11 +2865,11 @@ function RadioGroup({
|
|
|
2817
2865
|
}
|
|
2818
2866
|
return index;
|
|
2819
2867
|
}, []);
|
|
2820
|
-
const ctx =
|
|
2868
|
+
const ctx = React45.useMemo(
|
|
2821
2869
|
() => ({ value: current, setValue: setCurrent, register, activeIndex, setActiveIndex }),
|
|
2822
2870
|
[current, setCurrent, register, activeIndex, setActiveIndex]
|
|
2823
2871
|
);
|
|
2824
|
-
return /* @__PURE__ */
|
|
2872
|
+
return /* @__PURE__ */ jsx35(RadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx35(
|
|
2825
2873
|
"div",
|
|
2826
2874
|
{
|
|
2827
2875
|
"data-slot": "radio-group",
|
|
@@ -2843,14 +2891,14 @@ function RadioGroupItem({
|
|
|
2843
2891
|
onClick,
|
|
2844
2892
|
...props
|
|
2845
2893
|
}) {
|
|
2846
|
-
const ctx =
|
|
2894
|
+
const ctx = React45.useContext(RadioGroupContext);
|
|
2847
2895
|
if (!ctx) throw new Error("RadioGroupItem must be used within a RadioGroup");
|
|
2848
|
-
const indexRef =
|
|
2896
|
+
const indexRef = React45.useRef(-1);
|
|
2849
2897
|
const checked = ctx.value === value;
|
|
2850
|
-
|
|
2898
|
+
React45.useEffect(() => {
|
|
2851
2899
|
if (checked) ctx.setActiveIndex(indexRef.current);
|
|
2852
2900
|
}, [checked]);
|
|
2853
|
-
return /* @__PURE__ */
|
|
2901
|
+
return /* @__PURE__ */ jsx35(
|
|
2854
2902
|
"button",
|
|
2855
2903
|
{
|
|
2856
2904
|
ref: (el) => {
|
|
@@ -2869,18 +2917,18 @@ function RadioGroupItem({
|
|
|
2869
2917
|
ctx.setValue(value);
|
|
2870
2918
|
},
|
|
2871
2919
|
...props,
|
|
2872
|
-
children: checked ? /* @__PURE__ */
|
|
2920
|
+
children: checked ? /* @__PURE__ */ jsx35(
|
|
2873
2921
|
"span",
|
|
2874
2922
|
{
|
|
2875
2923
|
"data-slot": "radio-group-indicator",
|
|
2876
2924
|
className: "relative flex items-center justify-center",
|
|
2877
|
-
children: /* @__PURE__ */
|
|
2925
|
+
children: /* @__PURE__ */ jsx35(
|
|
2878
2926
|
"svg",
|
|
2879
2927
|
{
|
|
2880
2928
|
className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2",
|
|
2881
2929
|
viewBox: "0 0 24 24",
|
|
2882
2930
|
"aria-hidden": "true",
|
|
2883
|
-
children: /* @__PURE__ */
|
|
2931
|
+
children: /* @__PURE__ */ jsx35("circle", { cx: "12", cy: "12", r: "10" })
|
|
2884
2932
|
}
|
|
2885
2933
|
)
|
|
2886
2934
|
}
|
|
@@ -2890,7 +2938,7 @@ function RadioGroupItem({
|
|
|
2890
2938
|
}
|
|
2891
2939
|
|
|
2892
2940
|
// src/components/slider.tsx
|
|
2893
|
-
import * as
|
|
2941
|
+
import * as React46 from "react";
|
|
2894
2942
|
|
|
2895
2943
|
// src/generated/slider.ts
|
|
2896
2944
|
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 +2947,7 @@ var SLIDER_RANGE = "bg-primary absolute data-[orientation=horizontal]:h-full dat
|
|
|
2899
2947
|
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
2948
|
|
|
2901
2949
|
// src/components/slider.tsx
|
|
2902
|
-
import { jsx as
|
|
2950
|
+
import { jsx as jsx36, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2903
2951
|
function clampStep(value, min, max, step) {
|
|
2904
2952
|
const clamped = Math.min(max, Math.max(min, value));
|
|
2905
2953
|
if (step <= 0) return clamped;
|
|
@@ -2926,9 +2974,9 @@ function Slider({
|
|
|
2926
2974
|
const current = clampStep(raw, min, max, step);
|
|
2927
2975
|
const span = Math.max(max - min, Number.EPSILON);
|
|
2928
2976
|
const percent = Math.min(100, Math.max(0, (current - min) / span * 100));
|
|
2929
|
-
const trackRef =
|
|
2930
|
-
const draggingRef =
|
|
2931
|
-
const valueFromPointer =
|
|
2977
|
+
const trackRef = React46.useRef(null);
|
|
2978
|
+
const draggingRef = React46.useRef(false);
|
|
2979
|
+
const valueFromPointer = React46.useCallback(
|
|
2932
2980
|
(clientX, clientY) => {
|
|
2933
2981
|
const rect = trackRef.current?.getBoundingClientRect();
|
|
2934
2982
|
if (!rect) return current;
|
|
@@ -2989,14 +3037,14 @@ function Slider({
|
|
|
2989
3037
|
onPointerMove,
|
|
2990
3038
|
onPointerUp,
|
|
2991
3039
|
children: [
|
|
2992
|
-
/* @__PURE__ */
|
|
3040
|
+
/* @__PURE__ */ jsx36(
|
|
2993
3041
|
"span",
|
|
2994
3042
|
{
|
|
2995
3043
|
ref: trackRef,
|
|
2996
3044
|
"data-slot": "slider-track",
|
|
2997
3045
|
"data-orientation": orientation,
|
|
2998
3046
|
className: SLIDER_TRACK,
|
|
2999
|
-
children: /* @__PURE__ */
|
|
3047
|
+
children: /* @__PURE__ */ jsx36(
|
|
3000
3048
|
"span",
|
|
3001
3049
|
{
|
|
3002
3050
|
"data-slot": "slider-range",
|
|
@@ -3007,7 +3055,7 @@ function Slider({
|
|
|
3007
3055
|
)
|
|
3008
3056
|
}
|
|
3009
3057
|
),
|
|
3010
|
-
/* @__PURE__ */
|
|
3058
|
+
/* @__PURE__ */ jsx36(
|
|
3011
3059
|
"span",
|
|
3012
3060
|
{
|
|
3013
3061
|
"data-slot": "slider-thumb",
|
|
@@ -3042,15 +3090,15 @@ var scrollBarOrientations = {
|
|
|
3042
3090
|
};
|
|
3043
3091
|
|
|
3044
3092
|
// src/components/scroll-area.tsx
|
|
3045
|
-
import { jsx as
|
|
3093
|
+
import { jsx as jsx37, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3046
3094
|
function ScrollArea({
|
|
3047
3095
|
className,
|
|
3048
3096
|
children,
|
|
3049
3097
|
...props
|
|
3050
3098
|
}) {
|
|
3051
3099
|
return /* @__PURE__ */ jsxs10("div", { "data-slot": "scroll-area", className: cn("relative", className), ...props, children: [
|
|
3052
|
-
/* @__PURE__ */
|
|
3053
|
-
/* @__PURE__ */
|
|
3100
|
+
/* @__PURE__ */ jsx37("div", { "data-slot": "scroll-area-viewport", className: SCROLL_AREA_VIEWPORT, children }),
|
|
3101
|
+
/* @__PURE__ */ jsx37(ScrollBar, {})
|
|
3054
3102
|
] });
|
|
3055
3103
|
}
|
|
3056
3104
|
function ScrollBar({
|
|
@@ -3058,20 +3106,20 @@ function ScrollBar({
|
|
|
3058
3106
|
orientation = "vertical",
|
|
3059
3107
|
...props
|
|
3060
3108
|
}) {
|
|
3061
|
-
return /* @__PURE__ */
|
|
3109
|
+
return /* @__PURE__ */ jsx37(
|
|
3062
3110
|
"div",
|
|
3063
3111
|
{
|
|
3064
3112
|
"data-slot": "scroll-area-scrollbar",
|
|
3065
3113
|
"data-orientation": orientation,
|
|
3066
3114
|
className: cn(SCROLLBAR_BASE, scrollBarOrientations[orientation], className),
|
|
3067
3115
|
...props,
|
|
3068
|
-
children: /* @__PURE__ */
|
|
3116
|
+
children: /* @__PURE__ */ jsx37("div", { "data-slot": "scroll-area-thumb", className: SCROLL_AREA_THUMB })
|
|
3069
3117
|
}
|
|
3070
3118
|
);
|
|
3071
3119
|
}
|
|
3072
3120
|
|
|
3073
3121
|
// src/components/sidebar.tsx
|
|
3074
|
-
import * as
|
|
3122
|
+
import * as React48 from "react";
|
|
3075
3123
|
|
|
3076
3124
|
// src/generated/sidebar.ts
|
|
3077
3125
|
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 +3145,12 @@ var SIDEBAR_MENU = "flex w-full min-w-0 flex-col gap-1";
|
|
|
3097
3145
|
var SIDEBAR_MENU_ITEM = "group/menu-item relative";
|
|
3098
3146
|
|
|
3099
3147
|
// src/components/sidebar.tsx
|
|
3100
|
-
import { jsx as
|
|
3148
|
+
import { jsx as jsx38, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3101
3149
|
var SIDEBAR_WIDTH = "16rem";
|
|
3102
3150
|
var SIDEBAR_WIDTH_ICON = "3rem";
|
|
3103
|
-
var SidebarContext =
|
|
3151
|
+
var SidebarContext = React48.createContext(null);
|
|
3104
3152
|
function useSidebar() {
|
|
3105
|
-
const ctx =
|
|
3153
|
+
const ctx = React48.useContext(SidebarContext);
|
|
3106
3154
|
if (!ctx) throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
3107
3155
|
return ctx;
|
|
3108
3156
|
}
|
|
@@ -3120,16 +3168,16 @@ function SidebarProvider({
|
|
|
3120
3168
|
defaultValue: defaultOpen,
|
|
3121
3169
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3122
3170
|
});
|
|
3123
|
-
const toggleSidebar =
|
|
3171
|
+
const toggleSidebar = React48.useCallback(
|
|
3124
3172
|
() => setOpen(!open),
|
|
3125
3173
|
[open, setOpen]
|
|
3126
3174
|
);
|
|
3127
3175
|
const state = open ? "expanded" : "collapsed";
|
|
3128
|
-
const contextValue =
|
|
3176
|
+
const contextValue = React48.useMemo(
|
|
3129
3177
|
() => ({ state, open, setOpen, toggleSidebar }),
|
|
3130
3178
|
[state, open, setOpen, toggleSidebar]
|
|
3131
3179
|
);
|
|
3132
|
-
return /* @__PURE__ */
|
|
3180
|
+
return /* @__PURE__ */ jsx38(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx38(
|
|
3133
3181
|
"div",
|
|
3134
3182
|
{
|
|
3135
3183
|
"data-slot": "sidebar-wrapper",
|
|
@@ -3154,7 +3202,7 @@ function Sidebar({
|
|
|
3154
3202
|
}) {
|
|
3155
3203
|
const { state } = useSidebar();
|
|
3156
3204
|
if (collapsible === "none") {
|
|
3157
|
-
return /* @__PURE__ */
|
|
3205
|
+
return /* @__PURE__ */ jsx38(
|
|
3158
3206
|
"div",
|
|
3159
3207
|
{
|
|
3160
3208
|
"data-slot": "sidebar",
|
|
@@ -3164,7 +3212,7 @@ function Sidebar({
|
|
|
3164
3212
|
}
|
|
3165
3213
|
);
|
|
3166
3214
|
}
|
|
3167
|
-
return /* @__PURE__ */
|
|
3215
|
+
return /* @__PURE__ */ jsx38(
|
|
3168
3216
|
"div",
|
|
3169
3217
|
{
|
|
3170
3218
|
className: "group peer text-ink hidden md:block",
|
|
@@ -3173,7 +3221,7 @@ function Sidebar({
|
|
|
3173
3221
|
"data-variant": variant,
|
|
3174
3222
|
"data-side": side,
|
|
3175
3223
|
"data-slot": "sidebar",
|
|
3176
|
-
children: /* @__PURE__ */
|
|
3224
|
+
children: /* @__PURE__ */ jsx38(
|
|
3177
3225
|
"div",
|
|
3178
3226
|
{
|
|
3179
3227
|
"data-slot": "sidebar-inner",
|
|
@@ -3207,7 +3255,7 @@ function SidebarTrigger({
|
|
|
3207
3255
|
...props,
|
|
3208
3256
|
children: [
|
|
3209
3257
|
children,
|
|
3210
|
-
/* @__PURE__ */
|
|
3258
|
+
/* @__PURE__ */ jsx38("span", { className: "sr-only", children: "Toggle Sidebar" })
|
|
3211
3259
|
]
|
|
3212
3260
|
}
|
|
3213
3261
|
);
|
|
@@ -3217,7 +3265,7 @@ function SidebarRail({
|
|
|
3217
3265
|
...props
|
|
3218
3266
|
}) {
|
|
3219
3267
|
const { toggleSidebar } = useSidebar();
|
|
3220
|
-
return /* @__PURE__ */
|
|
3268
|
+
return /* @__PURE__ */ jsx38(
|
|
3221
3269
|
"button",
|
|
3222
3270
|
{
|
|
3223
3271
|
type: "button",
|
|
@@ -3233,7 +3281,7 @@ function SidebarRail({
|
|
|
3233
3281
|
);
|
|
3234
3282
|
}
|
|
3235
3283
|
function SidebarInset({ className, ...props }) {
|
|
3236
|
-
return /* @__PURE__ */
|
|
3284
|
+
return /* @__PURE__ */ jsx38(
|
|
3237
3285
|
"main",
|
|
3238
3286
|
{
|
|
3239
3287
|
"data-slot": "sidebar-inset",
|
|
@@ -3243,7 +3291,7 @@ function SidebarInset({ className, ...props }) {
|
|
|
3243
3291
|
);
|
|
3244
3292
|
}
|
|
3245
3293
|
function SidebarHeader({ className, ...props }) {
|
|
3246
|
-
return /* @__PURE__ */
|
|
3294
|
+
return /* @__PURE__ */ jsx38(
|
|
3247
3295
|
"div",
|
|
3248
3296
|
{
|
|
3249
3297
|
"data-slot": "sidebar-header",
|
|
@@ -3254,7 +3302,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
3254
3302
|
);
|
|
3255
3303
|
}
|
|
3256
3304
|
function SidebarFooter({ className, ...props }) {
|
|
3257
|
-
return /* @__PURE__ */
|
|
3305
|
+
return /* @__PURE__ */ jsx38(
|
|
3258
3306
|
"div",
|
|
3259
3307
|
{
|
|
3260
3308
|
"data-slot": "sidebar-footer",
|
|
@@ -3268,7 +3316,7 @@ function SidebarSeparator({
|
|
|
3268
3316
|
className,
|
|
3269
3317
|
...props
|
|
3270
3318
|
}) {
|
|
3271
|
-
return /* @__PURE__ */
|
|
3319
|
+
return /* @__PURE__ */ jsx38(
|
|
3272
3320
|
"div",
|
|
3273
3321
|
{
|
|
3274
3322
|
"data-slot": "sidebar-separator",
|
|
@@ -3280,7 +3328,7 @@ function SidebarSeparator({
|
|
|
3280
3328
|
);
|
|
3281
3329
|
}
|
|
3282
3330
|
function SidebarContent({ className, ...props }) {
|
|
3283
|
-
return /* @__PURE__ */
|
|
3331
|
+
return /* @__PURE__ */ jsx38(
|
|
3284
3332
|
"div",
|
|
3285
3333
|
{
|
|
3286
3334
|
"data-slot": "sidebar-content",
|
|
@@ -3291,7 +3339,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
3291
3339
|
);
|
|
3292
3340
|
}
|
|
3293
3341
|
function SidebarGroup({ className, ...props }) {
|
|
3294
|
-
return /* @__PURE__ */
|
|
3342
|
+
return /* @__PURE__ */ jsx38(
|
|
3295
3343
|
"div",
|
|
3296
3344
|
{
|
|
3297
3345
|
"data-slot": "sidebar-group",
|
|
@@ -3307,7 +3355,7 @@ function SidebarGroupLabel({
|
|
|
3307
3355
|
...props
|
|
3308
3356
|
}) {
|
|
3309
3357
|
const Comp = asChild ? Slot : "div";
|
|
3310
|
-
return /* @__PURE__ */
|
|
3358
|
+
return /* @__PURE__ */ jsx38(
|
|
3311
3359
|
Comp,
|
|
3312
3360
|
{
|
|
3313
3361
|
"data-slot": "sidebar-group-label",
|
|
@@ -3321,7 +3369,7 @@ function SidebarGroupContent({
|
|
|
3321
3369
|
className,
|
|
3322
3370
|
...props
|
|
3323
3371
|
}) {
|
|
3324
|
-
return /* @__PURE__ */
|
|
3372
|
+
return /* @__PURE__ */ jsx38(
|
|
3325
3373
|
"div",
|
|
3326
3374
|
{
|
|
3327
3375
|
"data-slot": "sidebar-group-content",
|
|
@@ -3332,7 +3380,7 @@ function SidebarGroupContent({
|
|
|
3332
3380
|
);
|
|
3333
3381
|
}
|
|
3334
3382
|
function SidebarMenu({ className, ...props }) {
|
|
3335
|
-
return /* @__PURE__ */
|
|
3383
|
+
return /* @__PURE__ */ jsx38(
|
|
3336
3384
|
"ul",
|
|
3337
3385
|
{
|
|
3338
3386
|
"data-slot": "sidebar-menu",
|
|
@@ -3343,7 +3391,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
3343
3391
|
);
|
|
3344
3392
|
}
|
|
3345
3393
|
function SidebarMenuItem({ className, ...props }) {
|
|
3346
|
-
return /* @__PURE__ */
|
|
3394
|
+
return /* @__PURE__ */ jsx38(
|
|
3347
3395
|
"li",
|
|
3348
3396
|
{
|
|
3349
3397
|
"data-slot": "sidebar-menu-item",
|
|
@@ -3362,7 +3410,7 @@ function SidebarMenuButton({
|
|
|
3362
3410
|
...props
|
|
3363
3411
|
}) {
|
|
3364
3412
|
const Comp = asChild ? Slot : "button";
|
|
3365
|
-
return /* @__PURE__ */
|
|
3413
|
+
return /* @__PURE__ */ jsx38(
|
|
3366
3414
|
Comp,
|
|
3367
3415
|
{
|
|
3368
3416
|
"data-slot": "sidebar-menu-button",
|
|
@@ -3381,7 +3429,7 @@ function SidebarMenuButton({
|
|
|
3381
3429
|
}
|
|
3382
3430
|
|
|
3383
3431
|
// src/components/carousel.tsx
|
|
3384
|
-
import * as
|
|
3432
|
+
import * as React49 from "react";
|
|
3385
3433
|
|
|
3386
3434
|
// src/generated/carousel.ts
|
|
3387
3435
|
var CAROUSEL_CONTENT_VIEWPORT = "overflow-hidden";
|
|
@@ -3400,10 +3448,10 @@ var CAROUSEL_EDGE_FADE_PREV = "pointer-events-none absolute inset-y-0 left-0 w-2
|
|
|
3400
3448
|
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
3449
|
|
|
3402
3450
|
// src/components/carousel.tsx
|
|
3403
|
-
import { Fragment as Fragment4, jsx as
|
|
3404
|
-
var CarouselContext =
|
|
3451
|
+
import { Fragment as Fragment4, jsx as jsx39, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3452
|
+
var CarouselContext = React49.createContext(null);
|
|
3405
3453
|
function useCarousel() {
|
|
3406
|
-
const context =
|
|
3454
|
+
const context = React49.useContext(CarouselContext);
|
|
3407
3455
|
if (!context) {
|
|
3408
3456
|
throw new Error("useCarousel must be used within a <Carousel />");
|
|
3409
3457
|
}
|
|
@@ -3424,13 +3472,13 @@ function Carousel({
|
|
|
3424
3472
|
defaultValue: defaultIndex,
|
|
3425
3473
|
onChange: onIndexChange
|
|
3426
3474
|
});
|
|
3427
|
-
const [count, setCount] =
|
|
3475
|
+
const [count, setCount] = React49.useState(0);
|
|
3428
3476
|
const canScrollPrev = index > 0;
|
|
3429
3477
|
const canScrollNext = index < count - 1;
|
|
3430
|
-
const scrollPrev =
|
|
3478
|
+
const scrollPrev = React49.useCallback(() => {
|
|
3431
3479
|
if (index > 0) setIndex(index - 1);
|
|
3432
3480
|
}, [index, setIndex]);
|
|
3433
|
-
const scrollNext =
|
|
3481
|
+
const scrollNext = React49.useCallback(() => {
|
|
3434
3482
|
if (index < count - 1) setIndex(index + 1);
|
|
3435
3483
|
}, [index, count, setIndex]);
|
|
3436
3484
|
const handleKeyDown = (event) => {
|
|
@@ -3443,7 +3491,7 @@ function Carousel({
|
|
|
3443
3491
|
}
|
|
3444
3492
|
onKeyDown?.(event);
|
|
3445
3493
|
};
|
|
3446
|
-
return /* @__PURE__ */
|
|
3494
|
+
return /* @__PURE__ */ jsx39(
|
|
3447
3495
|
CarouselContext.Provider,
|
|
3448
3496
|
{
|
|
3449
3497
|
value: {
|
|
@@ -3456,7 +3504,7 @@ function Carousel({
|
|
|
3456
3504
|
canScrollPrev,
|
|
3457
3505
|
canScrollNext
|
|
3458
3506
|
},
|
|
3459
|
-
children: /* @__PURE__ */
|
|
3507
|
+
children: /* @__PURE__ */ jsx39(
|
|
3460
3508
|
"div",
|
|
3461
3509
|
{
|
|
3462
3510
|
onKeyDownCapture: handleKeyDown,
|
|
@@ -3478,12 +3526,12 @@ function CarouselContent({
|
|
|
3478
3526
|
...props
|
|
3479
3527
|
}) {
|
|
3480
3528
|
const { orientation, index, setCount } = useCarousel();
|
|
3481
|
-
const childCount =
|
|
3482
|
-
|
|
3529
|
+
const childCount = React49.Children.count(children);
|
|
3530
|
+
React49.useEffect(() => {
|
|
3483
3531
|
setCount(childCount);
|
|
3484
3532
|
}, [childCount, setCount]);
|
|
3485
3533
|
const transform = orientation === "horizontal" ? `translate3d(-${index * 100}%, 0, 0)` : `translate3d(0, -${index * 100}%, 0)`;
|
|
3486
|
-
return /* @__PURE__ */
|
|
3534
|
+
return /* @__PURE__ */ jsx39("div", { className: CAROUSEL_CONTENT_VIEWPORT, "data-slot": "carousel-content", children: /* @__PURE__ */ jsx39(
|
|
3487
3535
|
"div",
|
|
3488
3536
|
{
|
|
3489
3537
|
className: cn(
|
|
@@ -3502,7 +3550,7 @@ function CarouselItem({
|
|
|
3502
3550
|
...props
|
|
3503
3551
|
}) {
|
|
3504
3552
|
const { orientation } = useCarousel();
|
|
3505
|
-
return /* @__PURE__ */
|
|
3553
|
+
return /* @__PURE__ */ jsx39(
|
|
3506
3554
|
"div",
|
|
3507
3555
|
{
|
|
3508
3556
|
role: "group",
|
|
@@ -3522,7 +3570,7 @@ function CarouselEdgeFade({
|
|
|
3522
3570
|
}) {
|
|
3523
3571
|
const { canScrollPrev, canScrollNext } = useCarousel();
|
|
3524
3572
|
return /* @__PURE__ */ jsxs12(Fragment4, { children: [
|
|
3525
|
-
/* @__PURE__ */
|
|
3573
|
+
/* @__PURE__ */ jsx39(
|
|
3526
3574
|
"div",
|
|
3527
3575
|
{
|
|
3528
3576
|
"aria-hidden": true,
|
|
@@ -3533,7 +3581,7 @@ function CarouselEdgeFade({
|
|
|
3533
3581
|
)
|
|
3534
3582
|
}
|
|
3535
3583
|
),
|
|
3536
|
-
/* @__PURE__ */
|
|
3584
|
+
/* @__PURE__ */ jsx39(
|
|
3537
3585
|
"div",
|
|
3538
3586
|
{
|
|
3539
3587
|
"aria-hidden": true,
|
|
@@ -3549,7 +3597,8 @@ function CarouselEdgeFade({
|
|
|
3549
3597
|
function CarouselPrevious({
|
|
3550
3598
|
className,
|
|
3551
3599
|
variant = "outline",
|
|
3552
|
-
size = "
|
|
3600
|
+
size = "md",
|
|
3601
|
+
icon = true,
|
|
3553
3602
|
...props
|
|
3554
3603
|
}) {
|
|
3555
3604
|
const { orientation, scrollPrev, canScrollPrev } = useCarousel();
|
|
@@ -3559,6 +3608,7 @@ function CarouselPrevious({
|
|
|
3559
3608
|
"data-slot": "carousel-previous",
|
|
3560
3609
|
variant,
|
|
3561
3610
|
size,
|
|
3611
|
+
icon,
|
|
3562
3612
|
className: cn(
|
|
3563
3613
|
CAROUSEL_NAV,
|
|
3564
3614
|
orientation === "horizontal" ? CAROUSEL_PREVIOUS_HORIZONTAL : CAROUSEL_PREVIOUS_VERTICAL,
|
|
@@ -3568,7 +3618,7 @@ function CarouselPrevious({
|
|
|
3568
3618
|
onClick: scrollPrev,
|
|
3569
3619
|
...props,
|
|
3570
3620
|
children: [
|
|
3571
|
-
/* @__PURE__ */
|
|
3621
|
+
/* @__PURE__ */ jsx39(
|
|
3572
3622
|
"svg",
|
|
3573
3623
|
{
|
|
3574
3624
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3579,10 +3629,10 @@ function CarouselPrevious({
|
|
|
3579
3629
|
strokeLinecap: "round",
|
|
3580
3630
|
strokeLinejoin: "round",
|
|
3581
3631
|
"aria-hidden": "true",
|
|
3582
|
-
children: /* @__PURE__ */
|
|
3632
|
+
children: /* @__PURE__ */ jsx39("path", { d: "m15 18-6-6 6-6" })
|
|
3583
3633
|
}
|
|
3584
3634
|
),
|
|
3585
|
-
/* @__PURE__ */
|
|
3635
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Previous slide" })
|
|
3586
3636
|
]
|
|
3587
3637
|
}
|
|
3588
3638
|
);
|
|
@@ -3590,7 +3640,8 @@ function CarouselPrevious({
|
|
|
3590
3640
|
function CarouselNext({
|
|
3591
3641
|
className,
|
|
3592
3642
|
variant = "outline",
|
|
3593
|
-
size = "
|
|
3643
|
+
size = "md",
|
|
3644
|
+
icon = true,
|
|
3594
3645
|
...props
|
|
3595
3646
|
}) {
|
|
3596
3647
|
const { orientation, scrollNext, canScrollNext } = useCarousel();
|
|
@@ -3600,6 +3651,7 @@ function CarouselNext({
|
|
|
3600
3651
|
"data-slot": "carousel-next",
|
|
3601
3652
|
variant,
|
|
3602
3653
|
size,
|
|
3654
|
+
icon,
|
|
3603
3655
|
className: cn(
|
|
3604
3656
|
CAROUSEL_NAV,
|
|
3605
3657
|
orientation === "horizontal" ? CAROUSEL_NEXT_HORIZONTAL : CAROUSEL_NEXT_VERTICAL,
|
|
@@ -3609,7 +3661,7 @@ function CarouselNext({
|
|
|
3609
3661
|
onClick: scrollNext,
|
|
3610
3662
|
...props,
|
|
3611
3663
|
children: [
|
|
3612
|
-
/* @__PURE__ */
|
|
3664
|
+
/* @__PURE__ */ jsx39(
|
|
3613
3665
|
"svg",
|
|
3614
3666
|
{
|
|
3615
3667
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3620,17 +3672,17 @@ function CarouselNext({
|
|
|
3620
3672
|
strokeLinecap: "round",
|
|
3621
3673
|
strokeLinejoin: "round",
|
|
3622
3674
|
"aria-hidden": "true",
|
|
3623
|
-
children: /* @__PURE__ */
|
|
3675
|
+
children: /* @__PURE__ */ jsx39("path", { d: "m9 18 6-6-6-6" })
|
|
3624
3676
|
}
|
|
3625
3677
|
),
|
|
3626
|
-
/* @__PURE__ */
|
|
3678
|
+
/* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Next slide" })
|
|
3627
3679
|
]
|
|
3628
3680
|
}
|
|
3629
3681
|
);
|
|
3630
3682
|
}
|
|
3631
3683
|
|
|
3632
3684
|
// src/components/input-otp.tsx
|
|
3633
|
-
import * as
|
|
3685
|
+
import * as React50 from "react";
|
|
3634
3686
|
|
|
3635
3687
|
// src/generated/input-otp.ts
|
|
3636
3688
|
var INPUT_OTP_CONTAINER = "relative flex items-center gap-2 has-disabled:opacity-50";
|
|
@@ -3641,10 +3693,10 @@ var INPUT_OTP_SLOT_CARET_WRAPPER = "pointer-events-none absolute inset-0 flex it
|
|
|
3641
3693
|
var INPUT_OTP_SLOT_CARET = "animate-caret-blink bg-ink h-4 w-px duration-1000";
|
|
3642
3694
|
|
|
3643
3695
|
// src/components/input-otp.tsx
|
|
3644
|
-
import { jsx as
|
|
3645
|
-
var InputOTPContext =
|
|
3696
|
+
import { jsx as jsx40, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3697
|
+
var InputOTPContext = React50.createContext(null);
|
|
3646
3698
|
function useInputOTP() {
|
|
3647
|
-
const context =
|
|
3699
|
+
const context = React50.useContext(InputOTPContext);
|
|
3648
3700
|
if (!context) {
|
|
3649
3701
|
throw new Error("InputOTP slots must be used within an <InputOTP />");
|
|
3650
3702
|
}
|
|
@@ -3666,16 +3718,16 @@ function InputOTP({
|
|
|
3666
3718
|
defaultValue,
|
|
3667
3719
|
onChange
|
|
3668
3720
|
});
|
|
3669
|
-
const [focused, setFocused] =
|
|
3721
|
+
const [focused, setFocused] = React50.useState(false);
|
|
3670
3722
|
const activeIndex = focused ? Math.min(value.length, maxLength - 1) : -1;
|
|
3671
|
-
return /* @__PURE__ */
|
|
3723
|
+
return /* @__PURE__ */ jsx40(InputOTPContext.Provider, { value: { value, maxLength, activeIndex }, children: /* @__PURE__ */ jsxs13(
|
|
3672
3724
|
"div",
|
|
3673
3725
|
{
|
|
3674
3726
|
"data-slot": "input-otp",
|
|
3675
3727
|
className: cn(INPUT_OTP_CONTAINER, containerClassName),
|
|
3676
3728
|
children: [
|
|
3677
3729
|
children,
|
|
3678
|
-
/* @__PURE__ */
|
|
3730
|
+
/* @__PURE__ */ jsx40(
|
|
3679
3731
|
"input",
|
|
3680
3732
|
{
|
|
3681
3733
|
inputMode: "numeric",
|
|
@@ -3698,7 +3750,7 @@ function InputOTPGroup({
|
|
|
3698
3750
|
className,
|
|
3699
3751
|
...props
|
|
3700
3752
|
}) {
|
|
3701
|
-
return /* @__PURE__ */
|
|
3753
|
+
return /* @__PURE__ */ jsx40(
|
|
3702
3754
|
"div",
|
|
3703
3755
|
{
|
|
3704
3756
|
"data-slot": "input-otp-group",
|
|
@@ -3721,13 +3773,13 @@ function InputOTPSlot({ index, className, ...props }) {
|
|
|
3721
3773
|
...props,
|
|
3722
3774
|
children: [
|
|
3723
3775
|
char,
|
|
3724
|
-
hasFakeCaret && /* @__PURE__ */
|
|
3776
|
+
hasFakeCaret && /* @__PURE__ */ jsx40("div", { className: INPUT_OTP_SLOT_CARET_WRAPPER, children: /* @__PURE__ */ jsx40("div", { className: INPUT_OTP_SLOT_CARET }) })
|
|
3725
3777
|
]
|
|
3726
3778
|
}
|
|
3727
3779
|
);
|
|
3728
3780
|
}
|
|
3729
3781
|
function InputOTPSeparator({ ...props }) {
|
|
3730
|
-
return /* @__PURE__ */
|
|
3782
|
+
return /* @__PURE__ */ jsx40("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx40(
|
|
3731
3783
|
"svg",
|
|
3732
3784
|
{
|
|
3733
3785
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -3738,27 +3790,27 @@ function InputOTPSeparator({ ...props }) {
|
|
|
3738
3790
|
strokeLinecap: "round",
|
|
3739
3791
|
strokeLinejoin: "round",
|
|
3740
3792
|
"aria-hidden": "true",
|
|
3741
|
-
children: /* @__PURE__ */
|
|
3793
|
+
children: /* @__PURE__ */ jsx40("path", { d: "M5 12h14" })
|
|
3742
3794
|
}
|
|
3743
3795
|
) });
|
|
3744
3796
|
}
|
|
3745
3797
|
|
|
3746
3798
|
// src/components/tooltip.tsx
|
|
3747
|
-
import * as
|
|
3799
|
+
import * as React51 from "react";
|
|
3748
3800
|
|
|
3749
3801
|
// src/generated/tooltip.ts
|
|
3750
3802
|
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
3803
|
|
|
3752
3804
|
// src/components/tooltip.tsx
|
|
3753
|
-
import { Fragment as Fragment5, jsx as
|
|
3754
|
-
var TooltipContext =
|
|
3805
|
+
import { Fragment as Fragment5, jsx as jsx41 } from "react/jsx-runtime";
|
|
3806
|
+
var TooltipContext = React51.createContext(null);
|
|
3755
3807
|
function useTooltip() {
|
|
3756
|
-
const ctx =
|
|
3808
|
+
const ctx = React51.useContext(TooltipContext);
|
|
3757
3809
|
if (!ctx) throw new Error("Tooltip parts must be used within <Tooltip>");
|
|
3758
3810
|
return ctx;
|
|
3759
3811
|
}
|
|
3760
3812
|
function TooltipProvider({ children }) {
|
|
3761
|
-
return /* @__PURE__ */
|
|
3813
|
+
return /* @__PURE__ */ jsx41(Fragment5, { children });
|
|
3762
3814
|
}
|
|
3763
3815
|
function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
|
|
3764
3816
|
const [isOpen, setOpen] = useControllableState({
|
|
@@ -3766,8 +3818,8 @@ function Tooltip({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
3766
3818
|
defaultValue: defaultOpen,
|
|
3767
3819
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3768
3820
|
});
|
|
3769
|
-
const anchorRef =
|
|
3770
|
-
return /* @__PURE__ */
|
|
3821
|
+
const anchorRef = React51.useRef(null);
|
|
3822
|
+
return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsx41(TooltipContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children }) });
|
|
3771
3823
|
}
|
|
3772
3824
|
function TooltipTrigger({
|
|
3773
3825
|
asChild = false,
|
|
@@ -3779,7 +3831,7 @@ function TooltipTrigger({
|
|
|
3779
3831
|
}) {
|
|
3780
3832
|
const { setOpen, anchorRef } = useTooltip();
|
|
3781
3833
|
const Comp = asChild ? Slot : "button";
|
|
3782
|
-
return /* @__PURE__ */
|
|
3834
|
+
return /* @__PURE__ */ jsx41(
|
|
3783
3835
|
Comp,
|
|
3784
3836
|
{
|
|
3785
3837
|
"data-slot": "tooltip-trigger",
|
|
@@ -3820,7 +3872,7 @@ function TooltipContent({
|
|
|
3820
3872
|
offset: sideOffset
|
|
3821
3873
|
});
|
|
3822
3874
|
if (!isPresent) return null;
|
|
3823
|
-
return /* @__PURE__ */
|
|
3875
|
+
return /* @__PURE__ */ jsx41(Portal, { children: /* @__PURE__ */ jsx41(
|
|
3824
3876
|
"div",
|
|
3825
3877
|
{
|
|
3826
3878
|
"data-slot": "tooltip-content",
|
|
@@ -3837,16 +3889,16 @@ function TooltipContent({
|
|
|
3837
3889
|
}
|
|
3838
3890
|
|
|
3839
3891
|
// src/components/popover.tsx
|
|
3840
|
-
import * as
|
|
3892
|
+
import * as React52 from "react";
|
|
3841
3893
|
|
|
3842
3894
|
// src/generated/popover.ts
|
|
3843
3895
|
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
3896
|
|
|
3845
3897
|
// src/components/popover.tsx
|
|
3846
|
-
import { jsx as
|
|
3847
|
-
var PopoverContext =
|
|
3898
|
+
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
3899
|
+
var PopoverContext = React52.createContext(null);
|
|
3848
3900
|
function usePopover() {
|
|
3849
|
-
const ctx =
|
|
3901
|
+
const ctx = React52.useContext(PopoverContext);
|
|
3850
3902
|
if (!ctx) throw new Error("Popover parts must be used within <Popover>");
|
|
3851
3903
|
return ctx;
|
|
3852
3904
|
}
|
|
@@ -3856,13 +3908,13 @@ function Popover({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
3856
3908
|
defaultValue: defaultOpen,
|
|
3857
3909
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3858
3910
|
});
|
|
3859
|
-
const anchorRef =
|
|
3860
|
-
return /* @__PURE__ */
|
|
3911
|
+
const anchorRef = React52.useRef(null);
|
|
3912
|
+
return /* @__PURE__ */ jsx42(PopoverContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
|
|
3861
3913
|
}
|
|
3862
3914
|
function PopoverTrigger({ asChild = false, onClick, ...props }) {
|
|
3863
3915
|
const { open, setOpen, anchorRef } = usePopover();
|
|
3864
3916
|
const Comp = asChild ? Slot : "button";
|
|
3865
|
-
return /* @__PURE__ */
|
|
3917
|
+
return /* @__PURE__ */ jsx42(
|
|
3866
3918
|
Comp,
|
|
3867
3919
|
{
|
|
3868
3920
|
"data-slot": "popover-trigger",
|
|
@@ -3879,7 +3931,7 @@ function PopoverTrigger({ asChild = false, onClick, ...props }) {
|
|
|
3879
3931
|
function PopoverAnchor({ asChild = false, ...props }) {
|
|
3880
3932
|
const { anchorRef } = usePopover();
|
|
3881
3933
|
const Comp = asChild ? Slot : "div";
|
|
3882
|
-
return /* @__PURE__ */
|
|
3934
|
+
return /* @__PURE__ */ jsx42(
|
|
3883
3935
|
Comp,
|
|
3884
3936
|
{
|
|
3885
3937
|
"data-slot": "popover-anchor",
|
|
@@ -3911,7 +3963,7 @@ function PopoverContent({
|
|
|
3911
3963
|
exclude: [anchorRef]
|
|
3912
3964
|
});
|
|
3913
3965
|
if (!isPresent) return null;
|
|
3914
|
-
return /* @__PURE__ */
|
|
3966
|
+
return /* @__PURE__ */ jsx42(Portal, { children: /* @__PURE__ */ jsx42(
|
|
3915
3967
|
"div",
|
|
3916
3968
|
{
|
|
3917
3969
|
"data-slot": "popover-content",
|
|
@@ -3931,11 +3983,11 @@ function PopoverContent({
|
|
|
3931
3983
|
}
|
|
3932
3984
|
|
|
3933
3985
|
// src/components/info-tip.tsx
|
|
3934
|
-
import * as
|
|
3935
|
-
import { jsx as
|
|
3936
|
-
var InfoTipContext =
|
|
3986
|
+
import * as React53 from "react";
|
|
3987
|
+
import { jsx as jsx43, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3988
|
+
var InfoTipContext = React53.createContext(null);
|
|
3937
3989
|
function useInfoTip() {
|
|
3938
|
-
const ctx =
|
|
3990
|
+
const ctx = React53.useContext(InfoTipContext);
|
|
3939
3991
|
if (!ctx) throw new Error("InfoTip parts must be used within <InfoTip>");
|
|
3940
3992
|
return ctx;
|
|
3941
3993
|
}
|
|
@@ -3950,9 +4002,9 @@ function InfoTip({
|
|
|
3950
4002
|
defaultValue: defaultOpen,
|
|
3951
4003
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
3952
4004
|
});
|
|
3953
|
-
const anchorRef =
|
|
3954
|
-
const contentId =
|
|
3955
|
-
return /* @__PURE__ */
|
|
4005
|
+
const anchorRef = React53.useRef(null);
|
|
4006
|
+
const contentId = React53.useId();
|
|
4007
|
+
return /* @__PURE__ */ jsx43(
|
|
3956
4008
|
InfoTipContext.Provider,
|
|
3957
4009
|
{
|
|
3958
4010
|
value: { open: isOpen, setOpen, anchorRef, contentId },
|
|
@@ -3973,9 +4025,9 @@ function InfoGlyph2({ className }) {
|
|
|
3973
4025
|
"aria-hidden": true,
|
|
3974
4026
|
className: cn("size-4", className),
|
|
3975
4027
|
children: [
|
|
3976
|
-
/* @__PURE__ */
|
|
3977
|
-
/* @__PURE__ */
|
|
3978
|
-
/* @__PURE__ */
|
|
4028
|
+
/* @__PURE__ */ jsx43("circle", { cx: "12", cy: "12", r: "10" }),
|
|
4029
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 16v-4" }),
|
|
4030
|
+
/* @__PURE__ */ jsx43("path", { d: "M12 8h.01" })
|
|
3979
4031
|
]
|
|
3980
4032
|
}
|
|
3981
4033
|
);
|
|
@@ -3999,7 +4051,7 @@ function InfoTipTrigger({
|
|
|
3999
4051
|
openDelay: hoverDelay
|
|
4000
4052
|
});
|
|
4001
4053
|
const Comp = asChild ? Slot : "button";
|
|
4002
|
-
return /* @__PURE__ */
|
|
4054
|
+
return /* @__PURE__ */ jsx43(
|
|
4003
4055
|
Comp,
|
|
4004
4056
|
{
|
|
4005
4057
|
"data-slot": "info-tip-trigger",
|
|
@@ -4030,7 +4082,7 @@ function InfoTipTrigger({
|
|
|
4030
4082
|
hover.onPointerLeave(e);
|
|
4031
4083
|
},
|
|
4032
4084
|
...props,
|
|
4033
|
-
children: children ?? /* @__PURE__ */
|
|
4085
|
+
children: children ?? /* @__PURE__ */ jsx43(InfoGlyph2, {})
|
|
4034
4086
|
}
|
|
4035
4087
|
);
|
|
4036
4088
|
}
|
|
@@ -4057,7 +4109,7 @@ function InfoTipContent({
|
|
|
4057
4109
|
exclude: [anchorRef]
|
|
4058
4110
|
});
|
|
4059
4111
|
if (!isPresent) return null;
|
|
4060
|
-
return /* @__PURE__ */
|
|
4112
|
+
return /* @__PURE__ */ jsx43(Portal, { children: /* @__PURE__ */ jsx43(
|
|
4061
4113
|
"div",
|
|
4062
4114
|
{
|
|
4063
4115
|
id: contentId,
|
|
@@ -4077,16 +4129,16 @@ function InfoTipContent({
|
|
|
4077
4129
|
}
|
|
4078
4130
|
|
|
4079
4131
|
// src/components/hover-card.tsx
|
|
4080
|
-
import * as
|
|
4132
|
+
import * as React54 from "react";
|
|
4081
4133
|
|
|
4082
4134
|
// src/generated/hover-card.ts
|
|
4083
4135
|
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
4136
|
|
|
4085
4137
|
// src/components/hover-card.tsx
|
|
4086
|
-
import { jsx as
|
|
4087
|
-
var HoverCardContext =
|
|
4138
|
+
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
4139
|
+
var HoverCardContext = React54.createContext(null);
|
|
4088
4140
|
function useHoverCard() {
|
|
4089
|
-
const ctx =
|
|
4141
|
+
const ctx = React54.useContext(HoverCardContext);
|
|
4090
4142
|
if (!ctx) throw new Error("HoverCard parts must be used within <HoverCard>");
|
|
4091
4143
|
return ctx;
|
|
4092
4144
|
}
|
|
@@ -4096,8 +4148,8 @@ function HoverCard({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4096
4148
|
defaultValue: defaultOpen,
|
|
4097
4149
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4098
4150
|
});
|
|
4099
|
-
const anchorRef =
|
|
4100
|
-
return /* @__PURE__ */
|
|
4151
|
+
const anchorRef = React54.useRef(null);
|
|
4152
|
+
return /* @__PURE__ */ jsx44(HoverCardContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children });
|
|
4101
4153
|
}
|
|
4102
4154
|
function HoverCardTrigger({
|
|
4103
4155
|
asChild = false,
|
|
@@ -4107,7 +4159,7 @@ function HoverCardTrigger({
|
|
|
4107
4159
|
}) {
|
|
4108
4160
|
const { setOpen, anchorRef } = useHoverCard();
|
|
4109
4161
|
const Comp = asChild ? Slot : "a";
|
|
4110
|
-
return /* @__PURE__ */
|
|
4162
|
+
return /* @__PURE__ */ jsx44(
|
|
4111
4163
|
Comp,
|
|
4112
4164
|
{
|
|
4113
4165
|
"data-slot": "hover-card-trigger",
|
|
@@ -4142,7 +4194,7 @@ function HoverCardContent({
|
|
|
4142
4194
|
offset: sideOffset
|
|
4143
4195
|
});
|
|
4144
4196
|
if (!isPresent) return null;
|
|
4145
|
-
return /* @__PURE__ */
|
|
4197
|
+
return /* @__PURE__ */ jsx44(Portal, { children: /* @__PURE__ */ jsx44(
|
|
4146
4198
|
"div",
|
|
4147
4199
|
{
|
|
4148
4200
|
"data-slot": "hover-card-content",
|
|
@@ -4159,7 +4211,7 @@ function HoverCardContent({
|
|
|
4159
4211
|
}
|
|
4160
4212
|
|
|
4161
4213
|
// src/components/dropdown-menu.tsx
|
|
4162
|
-
import * as
|
|
4214
|
+
import * as React55 from "react";
|
|
4163
4215
|
|
|
4164
4216
|
// src/generated/dropdown-menu.ts
|
|
4165
4217
|
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 +4225,12 @@ var DROPDOWN_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
|
|
|
4173
4225
|
var DROPDOWN_MENU_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
4174
4226
|
|
|
4175
4227
|
// src/components/dropdown-menu.tsx
|
|
4176
|
-
import { jsx as
|
|
4177
|
-
var DropdownMenuContext =
|
|
4228
|
+
import { jsx as jsx45, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
4229
|
+
var DropdownMenuContext = React55.createContext(
|
|
4178
4230
|
null
|
|
4179
4231
|
);
|
|
4180
4232
|
function useDropdownMenu() {
|
|
4181
|
-
const ctx =
|
|
4233
|
+
const ctx = React55.useContext(DropdownMenuContext);
|
|
4182
4234
|
if (!ctx) throw new Error("DropdownMenu parts must be used within <DropdownMenu>");
|
|
4183
4235
|
return ctx;
|
|
4184
4236
|
}
|
|
@@ -4188,16 +4240,16 @@ function DropdownMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4188
4240
|
defaultValue: defaultOpen,
|
|
4189
4241
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4190
4242
|
});
|
|
4191
|
-
const anchorRef =
|
|
4192
|
-
return /* @__PURE__ */
|
|
4243
|
+
const anchorRef = React55.useRef(null);
|
|
4244
|
+
return /* @__PURE__ */ jsx45(DropdownMenuContext.Provider, { value: { open: isOpen, setOpen, anchorRef }, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu", children }) });
|
|
4193
4245
|
}
|
|
4194
4246
|
function DropdownMenuPortal({ children }) {
|
|
4195
|
-
return /* @__PURE__ */
|
|
4247
|
+
return /* @__PURE__ */ jsx45(Portal, { children });
|
|
4196
4248
|
}
|
|
4197
4249
|
function DropdownMenuTrigger({ asChild = false, onClick, ...props }) {
|
|
4198
4250
|
const { open, setOpen, anchorRef } = useDropdownMenu();
|
|
4199
4251
|
const Comp = asChild ? Slot : "button";
|
|
4200
|
-
return /* @__PURE__ */
|
|
4252
|
+
return /* @__PURE__ */ jsx45(
|
|
4201
4253
|
Comp,
|
|
4202
4254
|
{
|
|
4203
4255
|
"data-slot": "dropdown-menu-trigger",
|
|
@@ -4233,7 +4285,7 @@ function DropdownMenuContent({
|
|
|
4233
4285
|
onDismiss: () => setOpen(false),
|
|
4234
4286
|
exclude: [anchorRef]
|
|
4235
4287
|
});
|
|
4236
|
-
const contentRef =
|
|
4288
|
+
const contentRef = React55.useRef(null);
|
|
4237
4289
|
const items = () => Array.from(
|
|
4238
4290
|
contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
|
|
4239
4291
|
).filter((el) => el.getAttribute("data-disabled") === null);
|
|
@@ -4242,13 +4294,13 @@ function DropdownMenuContent({
|
|
|
4242
4294
|
orientation: "vertical",
|
|
4243
4295
|
loop: true
|
|
4244
4296
|
});
|
|
4245
|
-
|
|
4297
|
+
React55.useEffect(() => {
|
|
4246
4298
|
if (!open) return;
|
|
4247
4299
|
items()[activeIndex]?.focus();
|
|
4248
4300
|
}, [open, activeIndex]);
|
|
4249
|
-
const close =
|
|
4301
|
+
const close = React55.useCallback(() => setOpen(false), [setOpen]);
|
|
4250
4302
|
if (!isPresent) return null;
|
|
4251
|
-
return /* @__PURE__ */
|
|
4303
|
+
return /* @__PURE__ */ jsx45(Portal, { children: /* @__PURE__ */ jsx45(DropdownMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx45(
|
|
4252
4304
|
"div",
|
|
4253
4305
|
{
|
|
4254
4306
|
"data-slot": "dropdown-menu-content",
|
|
@@ -4271,10 +4323,10 @@ function DropdownMenuContent({
|
|
|
4271
4323
|
}
|
|
4272
4324
|
) }) });
|
|
4273
4325
|
}
|
|
4274
|
-
var DropdownMenuCloseContext =
|
|
4326
|
+
var DropdownMenuCloseContext = React55.createContext(() => {
|
|
4275
4327
|
});
|
|
4276
4328
|
function DropdownMenuGroup({ className, ...props }) {
|
|
4277
|
-
return /* @__PURE__ */
|
|
4329
|
+
return /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-group", role: "group", className, ...props });
|
|
4278
4330
|
}
|
|
4279
4331
|
function DropdownMenuItem({
|
|
4280
4332
|
className,
|
|
@@ -4285,8 +4337,8 @@ function DropdownMenuItem({
|
|
|
4285
4337
|
onKeyDown,
|
|
4286
4338
|
...props
|
|
4287
4339
|
}) {
|
|
4288
|
-
const close =
|
|
4289
|
-
return /* @__PURE__ */
|
|
4340
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4341
|
+
return /* @__PURE__ */ jsx45(
|
|
4290
4342
|
"div",
|
|
4291
4343
|
{
|
|
4292
4344
|
"data-slot": "dropdown-menu-item",
|
|
@@ -4323,7 +4375,7 @@ function DropdownMenuCheckboxItem({
|
|
|
4323
4375
|
onClick,
|
|
4324
4376
|
...props
|
|
4325
4377
|
}) {
|
|
4326
|
-
const close =
|
|
4378
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4327
4379
|
return /* @__PURE__ */ jsxs15(
|
|
4328
4380
|
"div",
|
|
4329
4381
|
{
|
|
@@ -4344,13 +4396,13 @@ function DropdownMenuCheckboxItem({
|
|
|
4344
4396
|
},
|
|
4345
4397
|
...props,
|
|
4346
4398
|
children: [
|
|
4347
|
-
/* @__PURE__ */
|
|
4399
|
+
/* @__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
4400
|
children
|
|
4349
4401
|
]
|
|
4350
4402
|
}
|
|
4351
4403
|
);
|
|
4352
4404
|
}
|
|
4353
|
-
var DropdownMenuRadioGroupContext =
|
|
4405
|
+
var DropdownMenuRadioGroupContext = React55.createContext(null);
|
|
4354
4406
|
function DropdownMenuRadioGroup({
|
|
4355
4407
|
className,
|
|
4356
4408
|
value,
|
|
@@ -4358,11 +4410,11 @@ function DropdownMenuRadioGroup({
|
|
|
4358
4410
|
children,
|
|
4359
4411
|
...props
|
|
4360
4412
|
}) {
|
|
4361
|
-
const ctx =
|
|
4413
|
+
const ctx = React55.useMemo(
|
|
4362
4414
|
() => ({ value, setValue: (next) => onValueChange?.(next) }),
|
|
4363
4415
|
[value, onValueChange]
|
|
4364
4416
|
);
|
|
4365
|
-
return /* @__PURE__ */
|
|
4417
|
+
return /* @__PURE__ */ jsx45(DropdownMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-radio-group", role: "group", className, ...props, children }) });
|
|
4366
4418
|
}
|
|
4367
4419
|
function DropdownMenuRadioItem({
|
|
4368
4420
|
className,
|
|
@@ -4372,8 +4424,8 @@ function DropdownMenuRadioItem({
|
|
|
4372
4424
|
onClick,
|
|
4373
4425
|
...props
|
|
4374
4426
|
}) {
|
|
4375
|
-
const close =
|
|
4376
|
-
const group =
|
|
4427
|
+
const close = React55.useContext(DropdownMenuCloseContext);
|
|
4428
|
+
const group = React55.useContext(DropdownMenuRadioGroupContext);
|
|
4377
4429
|
const checked = group?.value === value;
|
|
4378
4430
|
return /* @__PURE__ */ jsxs15(
|
|
4379
4431
|
"div",
|
|
@@ -4396,14 +4448,14 @@ function DropdownMenuRadioItem({
|
|
|
4396
4448
|
},
|
|
4397
4449
|
...props,
|
|
4398
4450
|
children: [
|
|
4399
|
-
/* @__PURE__ */
|
|
4451
|
+
/* @__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
4452
|
children
|
|
4401
4453
|
]
|
|
4402
4454
|
}
|
|
4403
4455
|
);
|
|
4404
4456
|
}
|
|
4405
4457
|
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
4406
|
-
return /* @__PURE__ */
|
|
4458
|
+
return /* @__PURE__ */ jsx45(
|
|
4407
4459
|
"div",
|
|
4408
4460
|
{
|
|
4409
4461
|
"data-slot": "dropdown-menu-label",
|
|
@@ -4414,7 +4466,7 @@ function DropdownMenuLabel({ className, inset, ...props }) {
|
|
|
4414
4466
|
);
|
|
4415
4467
|
}
|
|
4416
4468
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
4417
|
-
return /* @__PURE__ */
|
|
4469
|
+
return /* @__PURE__ */ jsx45(
|
|
4418
4470
|
"div",
|
|
4419
4471
|
{
|
|
4420
4472
|
"data-slot": "dropdown-menu-separator",
|
|
@@ -4425,7 +4477,7 @@ function DropdownMenuSeparator({ className, ...props }) {
|
|
|
4425
4477
|
);
|
|
4426
4478
|
}
|
|
4427
4479
|
function DropdownMenuShortcut({ className, ...props }) {
|
|
4428
|
-
return /* @__PURE__ */
|
|
4480
|
+
return /* @__PURE__ */ jsx45(
|
|
4429
4481
|
"span",
|
|
4430
4482
|
{
|
|
4431
4483
|
"data-slot": "dropdown-menu-shortcut",
|
|
@@ -4434,17 +4486,17 @@ function DropdownMenuShortcut({ className, ...props }) {
|
|
|
4434
4486
|
}
|
|
4435
4487
|
);
|
|
4436
4488
|
}
|
|
4437
|
-
var DropdownMenuSubContext =
|
|
4489
|
+
var DropdownMenuSubContext = React55.createContext(null);
|
|
4438
4490
|
function DropdownMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
4439
4491
|
const [isOpen, setOpen] = useControllableState({
|
|
4440
4492
|
...open !== void 0 ? { value: open } : {},
|
|
4441
4493
|
defaultValue: defaultOpen,
|
|
4442
4494
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4443
4495
|
});
|
|
4444
|
-
return /* @__PURE__ */
|
|
4496
|
+
return /* @__PURE__ */ jsx45(DropdownMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx45("div", { "data-slot": "dropdown-menu-sub", children }) });
|
|
4445
4497
|
}
|
|
4446
4498
|
function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props }) {
|
|
4447
|
-
const ctx =
|
|
4499
|
+
const ctx = React55.useContext(DropdownMenuSubContext);
|
|
4448
4500
|
return /* @__PURE__ */ jsxs15(
|
|
4449
4501
|
"div",
|
|
4450
4502
|
{
|
|
@@ -4466,15 +4518,15 @@ function DropdownMenuSubTrigger({ className, inset, children, onClick, ...props
|
|
|
4466
4518
|
...props,
|
|
4467
4519
|
children: [
|
|
4468
4520
|
children,
|
|
4469
|
-
/* @__PURE__ */
|
|
4521
|
+
/* @__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
4522
|
]
|
|
4471
4523
|
}
|
|
4472
4524
|
);
|
|
4473
4525
|
}
|
|
4474
4526
|
function DropdownMenuSubContent({ className, children, ...props }) {
|
|
4475
|
-
const ctx =
|
|
4527
|
+
const ctx = React55.useContext(DropdownMenuSubContext);
|
|
4476
4528
|
if (!ctx?.open) return null;
|
|
4477
|
-
return /* @__PURE__ */
|
|
4529
|
+
return /* @__PURE__ */ jsx45(
|
|
4478
4530
|
"div",
|
|
4479
4531
|
{
|
|
4480
4532
|
"data-slot": "dropdown-menu-sub-content",
|
|
@@ -4491,7 +4543,7 @@ function DropdownMenuSubContent({ className, children, ...props }) {
|
|
|
4491
4543
|
}
|
|
4492
4544
|
|
|
4493
4545
|
// src/components/context-menu.tsx
|
|
4494
|
-
import * as
|
|
4546
|
+
import * as React56 from "react";
|
|
4495
4547
|
|
|
4496
4548
|
// src/generated/context-menu.ts
|
|
4497
4549
|
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 +4556,10 @@ var CONTEXT_MENU_SEPARATOR = "bg-border -mx-1 my-1 h-px";
|
|
|
4504
4556
|
var CONTEXT_MENU_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
4505
4557
|
|
|
4506
4558
|
// src/components/context-menu.tsx
|
|
4507
|
-
import { jsx as
|
|
4508
|
-
var ContextMenuContext =
|
|
4559
|
+
import { jsx as jsx46, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4560
|
+
var ContextMenuContext = React56.createContext(null);
|
|
4509
4561
|
function useContextMenu() {
|
|
4510
|
-
const ctx =
|
|
4562
|
+
const ctx = React56.useContext(ContextMenuContext);
|
|
4511
4563
|
if (!ctx) throw new Error("ContextMenu parts must be used within <ContextMenu>");
|
|
4512
4564
|
return ctx;
|
|
4513
4565
|
}
|
|
@@ -4517,16 +4569,16 @@ function ContextMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4517
4569
|
defaultValue: defaultOpen,
|
|
4518
4570
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4519
4571
|
});
|
|
4520
|
-
const [point, setPoint] =
|
|
4521
|
-
return /* @__PURE__ */
|
|
4572
|
+
const [point, setPoint] = React56.useState({ x: 0, y: 0 });
|
|
4573
|
+
return /* @__PURE__ */ jsx46(ContextMenuContext.Provider, { value: { open: isOpen, setOpen, point, setPoint }, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu", children }) });
|
|
4522
4574
|
}
|
|
4523
4575
|
function ContextMenuPortal({ children }) {
|
|
4524
|
-
return /* @__PURE__ */
|
|
4576
|
+
return /* @__PURE__ */ jsx46(Portal, { children });
|
|
4525
4577
|
}
|
|
4526
4578
|
function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
|
|
4527
4579
|
const { setOpen, setPoint } = useContextMenu();
|
|
4528
4580
|
const Comp = asChild ? Slot : "div";
|
|
4529
|
-
return /* @__PURE__ */
|
|
4581
|
+
return /* @__PURE__ */ jsx46(
|
|
4530
4582
|
Comp,
|
|
4531
4583
|
{
|
|
4532
4584
|
"data-slot": "context-menu-trigger",
|
|
@@ -4541,9 +4593,9 @@ function ContextMenuTrigger({ asChild = false, onContextMenu, ...props }) {
|
|
|
4541
4593
|
);
|
|
4542
4594
|
}
|
|
4543
4595
|
function ContextMenuGroup({ className, ...props }) {
|
|
4544
|
-
return /* @__PURE__ */
|
|
4596
|
+
return /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-group", role: "group", className, ...props });
|
|
4545
4597
|
}
|
|
4546
|
-
var ContextMenuCloseContext =
|
|
4598
|
+
var ContextMenuCloseContext = React56.createContext(() => {
|
|
4547
4599
|
});
|
|
4548
4600
|
function ContextMenuContent({ className, children, ...props }) {
|
|
4549
4601
|
const { open, setOpen, point } = useContextMenu();
|
|
@@ -4552,7 +4604,7 @@ function ContextMenuContent({ className, children, ...props }) {
|
|
|
4552
4604
|
enabled: open,
|
|
4553
4605
|
onDismiss: () => setOpen(false)
|
|
4554
4606
|
});
|
|
4555
|
-
const contentRef =
|
|
4607
|
+
const contentRef = React56.useRef(null);
|
|
4556
4608
|
const items = () => Array.from(
|
|
4557
4609
|
contentRef.current?.querySelectorAll("[role^='menuitem']") ?? []
|
|
4558
4610
|
).filter((el) => el.getAttribute("data-disabled") === null);
|
|
@@ -4561,13 +4613,13 @@ function ContextMenuContent({ className, children, ...props }) {
|
|
|
4561
4613
|
orientation: "vertical",
|
|
4562
4614
|
loop: true
|
|
4563
4615
|
});
|
|
4564
|
-
|
|
4616
|
+
React56.useEffect(() => {
|
|
4565
4617
|
if (!open) return;
|
|
4566
4618
|
items()[activeIndex]?.focus();
|
|
4567
4619
|
}, [open, activeIndex]);
|
|
4568
|
-
const close =
|
|
4620
|
+
const close = React56.useCallback(() => setOpen(false), [setOpen]);
|
|
4569
4621
|
if (!isPresent) return null;
|
|
4570
|
-
return /* @__PURE__ */
|
|
4622
|
+
return /* @__PURE__ */ jsx46(Portal, { children: /* @__PURE__ */ jsx46(ContextMenuCloseContext.Provider, { value: close, children: /* @__PURE__ */ jsx46(
|
|
4571
4623
|
"div",
|
|
4572
4624
|
{
|
|
4573
4625
|
"data-slot": "context-menu-content",
|
|
@@ -4599,8 +4651,8 @@ function ContextMenuItem({
|
|
|
4599
4651
|
onKeyDown,
|
|
4600
4652
|
...props
|
|
4601
4653
|
}) {
|
|
4602
|
-
const close =
|
|
4603
|
-
return /* @__PURE__ */
|
|
4654
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4655
|
+
return /* @__PURE__ */ jsx46(
|
|
4604
4656
|
"div",
|
|
4605
4657
|
{
|
|
4606
4658
|
"data-slot": "context-menu-item",
|
|
@@ -4637,7 +4689,7 @@ function ContextMenuCheckboxItem({
|
|
|
4637
4689
|
onClick,
|
|
4638
4690
|
...props
|
|
4639
4691
|
}) {
|
|
4640
|
-
const close =
|
|
4692
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4641
4693
|
return /* @__PURE__ */ jsxs16(
|
|
4642
4694
|
"div",
|
|
4643
4695
|
{
|
|
@@ -4658,13 +4710,13 @@ function ContextMenuCheckboxItem({
|
|
|
4658
4710
|
},
|
|
4659
4711
|
...props,
|
|
4660
4712
|
children: [
|
|
4661
|
-
/* @__PURE__ */
|
|
4713
|
+
/* @__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
4714
|
children
|
|
4663
4715
|
]
|
|
4664
4716
|
}
|
|
4665
4717
|
);
|
|
4666
4718
|
}
|
|
4667
|
-
var ContextMenuRadioGroupContext =
|
|
4719
|
+
var ContextMenuRadioGroupContext = React56.createContext(null);
|
|
4668
4720
|
function ContextMenuRadioGroup({
|
|
4669
4721
|
className,
|
|
4670
4722
|
value,
|
|
@@ -4672,11 +4724,11 @@ function ContextMenuRadioGroup({
|
|
|
4672
4724
|
children,
|
|
4673
4725
|
...props
|
|
4674
4726
|
}) {
|
|
4675
|
-
const ctx =
|
|
4727
|
+
const ctx = React56.useMemo(
|
|
4676
4728
|
() => ({ value, setValue: (next) => onValueChange?.(next) }),
|
|
4677
4729
|
[value, onValueChange]
|
|
4678
4730
|
);
|
|
4679
|
-
return /* @__PURE__ */
|
|
4731
|
+
return /* @__PURE__ */ jsx46(ContextMenuRadioGroupContext.Provider, { value: ctx, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-radio-group", role: "group", className, ...props, children }) });
|
|
4680
4732
|
}
|
|
4681
4733
|
function ContextMenuRadioItem({
|
|
4682
4734
|
className,
|
|
@@ -4686,8 +4738,8 @@ function ContextMenuRadioItem({
|
|
|
4686
4738
|
onClick,
|
|
4687
4739
|
...props
|
|
4688
4740
|
}) {
|
|
4689
|
-
const close =
|
|
4690
|
-
const group =
|
|
4741
|
+
const close = React56.useContext(ContextMenuCloseContext);
|
|
4742
|
+
const group = React56.useContext(ContextMenuRadioGroupContext);
|
|
4691
4743
|
const checked = group?.value === value;
|
|
4692
4744
|
return /* @__PURE__ */ jsxs16(
|
|
4693
4745
|
"div",
|
|
@@ -4710,14 +4762,14 @@ function ContextMenuRadioItem({
|
|
|
4710
4762
|
},
|
|
4711
4763
|
...props,
|
|
4712
4764
|
children: [
|
|
4713
|
-
/* @__PURE__ */
|
|
4765
|
+
/* @__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
4766
|
children
|
|
4715
4767
|
]
|
|
4716
4768
|
}
|
|
4717
4769
|
);
|
|
4718
4770
|
}
|
|
4719
4771
|
function ContextMenuLabel({ className, inset, ...props }) {
|
|
4720
|
-
return /* @__PURE__ */
|
|
4772
|
+
return /* @__PURE__ */ jsx46(
|
|
4721
4773
|
"div",
|
|
4722
4774
|
{
|
|
4723
4775
|
"data-slot": "context-menu-label",
|
|
@@ -4728,7 +4780,7 @@ function ContextMenuLabel({ className, inset, ...props }) {
|
|
|
4728
4780
|
);
|
|
4729
4781
|
}
|
|
4730
4782
|
function ContextMenuSeparator({ className, ...props }) {
|
|
4731
|
-
return /* @__PURE__ */
|
|
4783
|
+
return /* @__PURE__ */ jsx46(
|
|
4732
4784
|
"div",
|
|
4733
4785
|
{
|
|
4734
4786
|
"data-slot": "context-menu-separator",
|
|
@@ -4739,7 +4791,7 @@ function ContextMenuSeparator({ className, ...props }) {
|
|
|
4739
4791
|
);
|
|
4740
4792
|
}
|
|
4741
4793
|
function ContextMenuShortcut({ className, ...props }) {
|
|
4742
|
-
return /* @__PURE__ */
|
|
4794
|
+
return /* @__PURE__ */ jsx46(
|
|
4743
4795
|
"span",
|
|
4744
4796
|
{
|
|
4745
4797
|
"data-slot": "context-menu-shortcut",
|
|
@@ -4748,17 +4800,17 @@ function ContextMenuShortcut({ className, ...props }) {
|
|
|
4748
4800
|
}
|
|
4749
4801
|
);
|
|
4750
4802
|
}
|
|
4751
|
-
var ContextMenuSubContext =
|
|
4803
|
+
var ContextMenuSubContext = React56.createContext(null);
|
|
4752
4804
|
function ContextMenuSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
4753
4805
|
const [isOpen, setOpen] = useControllableState({
|
|
4754
4806
|
...open !== void 0 ? { value: open } : {},
|
|
4755
4807
|
defaultValue: defaultOpen,
|
|
4756
4808
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
4757
4809
|
});
|
|
4758
|
-
return /* @__PURE__ */
|
|
4810
|
+
return /* @__PURE__ */ jsx46(ContextMenuSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx46("div", { "data-slot": "context-menu-sub", children }) });
|
|
4759
4811
|
}
|
|
4760
4812
|
function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }) {
|
|
4761
|
-
const ctx =
|
|
4813
|
+
const ctx = React56.useContext(ContextMenuSubContext);
|
|
4762
4814
|
return /* @__PURE__ */ jsxs16(
|
|
4763
4815
|
"div",
|
|
4764
4816
|
{
|
|
@@ -4780,15 +4832,15 @@ function ContextMenuSubTrigger({ className, inset, children, onClick, ...props }
|
|
|
4780
4832
|
...props,
|
|
4781
4833
|
children: [
|
|
4782
4834
|
children,
|
|
4783
|
-
/* @__PURE__ */
|
|
4835
|
+
/* @__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
4836
|
]
|
|
4785
4837
|
}
|
|
4786
4838
|
);
|
|
4787
4839
|
}
|
|
4788
4840
|
function ContextMenuSubContent({ className, children, ...props }) {
|
|
4789
|
-
const ctx =
|
|
4841
|
+
const ctx = React56.useContext(ContextMenuSubContext);
|
|
4790
4842
|
if (!ctx?.open) return null;
|
|
4791
|
-
return /* @__PURE__ */
|
|
4843
|
+
return /* @__PURE__ */ jsx46(
|
|
4792
4844
|
"div",
|
|
4793
4845
|
{
|
|
4794
4846
|
"data-slot": "context-menu-sub-content",
|
|
@@ -4805,7 +4857,7 @@ function ContextMenuSubContent({ className, children, ...props }) {
|
|
|
4805
4857
|
}
|
|
4806
4858
|
|
|
4807
4859
|
// src/components/menubar.tsx
|
|
4808
|
-
import * as
|
|
4860
|
+
import * as React57 from "react";
|
|
4809
4861
|
|
|
4810
4862
|
// src/generated/menubar.ts
|
|
4811
4863
|
var MENUBAR_ROOT = "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs";
|
|
@@ -4822,16 +4874,16 @@ var MENUBAR_SUB_TRIGGER = "focus:bg-hover focus:text-ink data-[state=open]:bg-ho
|
|
|
4822
4874
|
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
4875
|
|
|
4824
4876
|
// src/components/menubar.tsx
|
|
4825
|
-
import { jsx as
|
|
4826
|
-
var MenubarMenuContext =
|
|
4877
|
+
import { jsx as jsx47, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4878
|
+
var MenubarMenuContext = React57.createContext(null);
|
|
4827
4879
|
function useMenu() {
|
|
4828
|
-
const ctx =
|
|
4880
|
+
const ctx = React57.useContext(MenubarMenuContext);
|
|
4829
4881
|
if (!ctx) throw new Error("Menubar parts must be used within <MenubarMenu>");
|
|
4830
4882
|
return ctx;
|
|
4831
4883
|
}
|
|
4832
|
-
var MenubarRadioGroupContext =
|
|
4884
|
+
var MenubarRadioGroupContext = React57.createContext(null);
|
|
4833
4885
|
function Menubar({ className, ...props }) {
|
|
4834
|
-
return /* @__PURE__ */
|
|
4886
|
+
return /* @__PURE__ */ jsx47(
|
|
4835
4887
|
"div",
|
|
4836
4888
|
{
|
|
4837
4889
|
"data-slot": "menubar",
|
|
@@ -4847,12 +4899,12 @@ function MenubarMenu({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
4847
4899
|
defaultValue: defaultOpen,
|
|
4848
4900
|
onChange: onOpenChange
|
|
4849
4901
|
});
|
|
4850
|
-
const triggerRef =
|
|
4851
|
-
return /* @__PURE__ */
|
|
4902
|
+
const triggerRef = React57.useRef(null);
|
|
4903
|
+
return /* @__PURE__ */ jsx47(MenubarMenuContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-menu", className: "relative", children }) });
|
|
4852
4904
|
}
|
|
4853
4905
|
function MenubarTrigger({ className, onClick, ...props }) {
|
|
4854
4906
|
const { open, setOpen, triggerRef } = useMenu();
|
|
4855
|
-
return /* @__PURE__ */
|
|
4907
|
+
return /* @__PURE__ */ jsx47(
|
|
4856
4908
|
"button",
|
|
4857
4909
|
{
|
|
4858
4910
|
ref: triggerRef,
|
|
@@ -4888,10 +4940,10 @@ function MenubarContent({
|
|
|
4888
4940
|
onDismiss: () => setOpen(false),
|
|
4889
4941
|
exclude: [triggerRef]
|
|
4890
4942
|
});
|
|
4891
|
-
const items =
|
|
4943
|
+
const items = React57.Children.toArray(children);
|
|
4892
4944
|
const { onKeyDown } = useRovingFocus({ count: items.length, orientation: "vertical" });
|
|
4893
4945
|
if (!isPresent) return null;
|
|
4894
|
-
return /* @__PURE__ */
|
|
4946
|
+
return /* @__PURE__ */ jsx47(Portal, { children: /* @__PURE__ */ jsx47(
|
|
4895
4947
|
"div",
|
|
4896
4948
|
{
|
|
4897
4949
|
ref: mergeRefs(presenceRef, floatingRef, dismissRef),
|
|
@@ -4908,7 +4960,7 @@ function MenubarContent({
|
|
|
4908
4960
|
) });
|
|
4909
4961
|
}
|
|
4910
4962
|
function MenubarGroup({ className, ...props }) {
|
|
4911
|
-
return /* @__PURE__ */
|
|
4963
|
+
return /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-group", role: "group", className, ...props });
|
|
4912
4964
|
}
|
|
4913
4965
|
function MenubarItem({
|
|
4914
4966
|
className,
|
|
@@ -4916,7 +4968,7 @@ function MenubarItem({
|
|
|
4916
4968
|
variant = "neutral",
|
|
4917
4969
|
...props
|
|
4918
4970
|
}) {
|
|
4919
|
-
return /* @__PURE__ */
|
|
4971
|
+
return /* @__PURE__ */ jsx47(
|
|
4920
4972
|
"div",
|
|
4921
4973
|
{
|
|
4922
4974
|
"data-slot": "menubar-item",
|
|
@@ -4945,7 +4997,7 @@ function MenubarCheckboxItem({
|
|
|
4945
4997
|
className: cn(MENUBAR_CHECKBOX_ITEM, className),
|
|
4946
4998
|
...props,
|
|
4947
4999
|
children: [
|
|
4948
|
-
/* @__PURE__ */
|
|
5000
|
+
/* @__PURE__ */ jsx47("span", { className: MENUBAR_ITEM_INDICATOR, children: checked && /* @__PURE__ */ jsx47(
|
|
4949
5001
|
"svg",
|
|
4950
5002
|
{
|
|
4951
5003
|
className: "size-4",
|
|
@@ -4955,7 +5007,7 @@ function MenubarCheckboxItem({
|
|
|
4955
5007
|
strokeWidth: "2",
|
|
4956
5008
|
strokeLinecap: "round",
|
|
4957
5009
|
strokeLinejoin: "round",
|
|
4958
|
-
children: /* @__PURE__ */
|
|
5010
|
+
children: /* @__PURE__ */ jsx47("path", { d: "M20 6 9 17l-5-5" })
|
|
4959
5011
|
}
|
|
4960
5012
|
) }),
|
|
4961
5013
|
children
|
|
@@ -4975,7 +5027,7 @@ function MenubarRadioGroup({
|
|
|
4975
5027
|
defaultValue,
|
|
4976
5028
|
onChange: onValueChange
|
|
4977
5029
|
});
|
|
4978
|
-
return /* @__PURE__ */
|
|
5030
|
+
return /* @__PURE__ */ jsx47(MenubarRadioGroupContext.Provider, { value: { value: current, onValueChange: setValue }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-radio-group", role: "group", className, children }) });
|
|
4979
5031
|
}
|
|
4980
5032
|
function MenubarRadioItem({
|
|
4981
5033
|
className,
|
|
@@ -4983,7 +5035,7 @@ function MenubarRadioItem({
|
|
|
4983
5035
|
value,
|
|
4984
5036
|
...props
|
|
4985
5037
|
}) {
|
|
4986
|
-
const ctx =
|
|
5038
|
+
const ctx = React57.useContext(MenubarRadioGroupContext);
|
|
4987
5039
|
const checked = ctx?.value === value;
|
|
4988
5040
|
return /* @__PURE__ */ jsxs17(
|
|
4989
5041
|
"div",
|
|
@@ -4996,7 +5048,7 @@ function MenubarRadioItem({
|
|
|
4996
5048
|
onClick: () => ctx?.onValueChange(value),
|
|
4997
5049
|
...props,
|
|
4998
5050
|
children: [
|
|
4999
|
-
/* @__PURE__ */
|
|
5051
|
+
/* @__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
5052
|
children
|
|
5001
5053
|
]
|
|
5002
5054
|
}
|
|
@@ -5007,7 +5059,7 @@ function MenubarLabel({
|
|
|
5007
5059
|
inset,
|
|
5008
5060
|
...props
|
|
5009
5061
|
}) {
|
|
5010
|
-
return /* @__PURE__ */
|
|
5062
|
+
return /* @__PURE__ */ jsx47(
|
|
5011
5063
|
"div",
|
|
5012
5064
|
{
|
|
5013
5065
|
"data-slot": "menubar-label",
|
|
@@ -5018,7 +5070,7 @@ function MenubarLabel({
|
|
|
5018
5070
|
);
|
|
5019
5071
|
}
|
|
5020
5072
|
function MenubarSeparator({ className, ...props }) {
|
|
5021
|
-
return /* @__PURE__ */
|
|
5073
|
+
return /* @__PURE__ */ jsx47(
|
|
5022
5074
|
"div",
|
|
5023
5075
|
{
|
|
5024
5076
|
"data-slot": "menubar-separator",
|
|
@@ -5029,7 +5081,7 @@ function MenubarSeparator({ className, ...props }) {
|
|
|
5029
5081
|
);
|
|
5030
5082
|
}
|
|
5031
5083
|
function MenubarShortcut({ className, ...props }) {
|
|
5032
|
-
return /* @__PURE__ */
|
|
5084
|
+
return /* @__PURE__ */ jsx47(
|
|
5033
5085
|
"span",
|
|
5034
5086
|
{
|
|
5035
5087
|
"data-slot": "menubar-shortcut",
|
|
@@ -5038,9 +5090,9 @@ function MenubarShortcut({ className, ...props }) {
|
|
|
5038
5090
|
}
|
|
5039
5091
|
);
|
|
5040
5092
|
}
|
|
5041
|
-
var MenubarSubContext =
|
|
5093
|
+
var MenubarSubContext = React57.createContext(null);
|
|
5042
5094
|
function useSub() {
|
|
5043
|
-
const ctx =
|
|
5095
|
+
const ctx = React57.useContext(MenubarSubContext);
|
|
5044
5096
|
if (!ctx) throw new Error("MenubarSub parts must be used within <MenubarSub>");
|
|
5045
5097
|
return ctx;
|
|
5046
5098
|
}
|
|
@@ -5050,7 +5102,7 @@ function MenubarSub({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5050
5102
|
defaultValue: defaultOpen,
|
|
5051
5103
|
onChange: onOpenChange
|
|
5052
5104
|
});
|
|
5053
|
-
return /* @__PURE__ */
|
|
5105
|
+
return /* @__PURE__ */ jsx47(MenubarSubContext.Provider, { value: { open: isOpen, setOpen }, children: /* @__PURE__ */ jsx47("div", { "data-slot": "menubar-sub", className: "relative", children }) });
|
|
5054
5106
|
}
|
|
5055
5107
|
function MenubarSubTrigger({
|
|
5056
5108
|
className,
|
|
@@ -5076,7 +5128,7 @@ function MenubarSubTrigger({
|
|
|
5076
5128
|
...props,
|
|
5077
5129
|
children: [
|
|
5078
5130
|
children,
|
|
5079
|
-
/* @__PURE__ */
|
|
5131
|
+
/* @__PURE__ */ jsx47(
|
|
5080
5132
|
"svg",
|
|
5081
5133
|
{
|
|
5082
5134
|
className: "ml-auto h-4 w-4",
|
|
@@ -5086,7 +5138,7 @@ function MenubarSubTrigger({
|
|
|
5086
5138
|
strokeWidth: "2",
|
|
5087
5139
|
strokeLinecap: "round",
|
|
5088
5140
|
strokeLinejoin: "round",
|
|
5089
|
-
children: /* @__PURE__ */
|
|
5141
|
+
children: /* @__PURE__ */ jsx47("path", { d: "m9 18 6-6-6-6" })
|
|
5090
5142
|
}
|
|
5091
5143
|
)
|
|
5092
5144
|
]
|
|
@@ -5097,7 +5149,7 @@ function MenubarSubContent({ className, children, ...props }) {
|
|
|
5097
5149
|
const { open } = useSub();
|
|
5098
5150
|
const { isPresent, ref } = usePresence(open);
|
|
5099
5151
|
if (!isPresent) return null;
|
|
5100
|
-
return /* @__PURE__ */
|
|
5152
|
+
return /* @__PURE__ */ jsx47(
|
|
5101
5153
|
"div",
|
|
5102
5154
|
{
|
|
5103
5155
|
ref,
|
|
@@ -5112,7 +5164,7 @@ function MenubarSubContent({ className, children, ...props }) {
|
|
|
5112
5164
|
}
|
|
5113
5165
|
|
|
5114
5166
|
// src/components/navigation-menu.tsx
|
|
5115
|
-
import * as
|
|
5167
|
+
import * as React58 from "react";
|
|
5116
5168
|
|
|
5117
5169
|
// src/generated/navigation-menu.ts
|
|
5118
5170
|
var NAVIGATION_MENU = "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center";
|
|
@@ -5125,13 +5177,13 @@ var NAVIGATION_MENU_INDICATOR = "data-[state=visible]:animate-in data-[state=hid
|
|
|
5125
5177
|
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
5178
|
|
|
5127
5179
|
// src/components/navigation-menu.tsx
|
|
5128
|
-
import { jsx as
|
|
5180
|
+
import { jsx as jsx48, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
5129
5181
|
function navigationMenuTriggerStyle() {
|
|
5130
5182
|
return NAVIGATION_MENU_TRIGGER_STYLE;
|
|
5131
5183
|
}
|
|
5132
|
-
var NavigationMenuItemContext =
|
|
5184
|
+
var NavigationMenuItemContext = React58.createContext(null);
|
|
5133
5185
|
function useItem() {
|
|
5134
|
-
const ctx =
|
|
5186
|
+
const ctx = React58.useContext(NavigationMenuItemContext);
|
|
5135
5187
|
if (!ctx) throw new Error("NavigationMenu parts must be used within <NavigationMenuItem>");
|
|
5136
5188
|
return ctx;
|
|
5137
5189
|
}
|
|
@@ -5154,13 +5206,13 @@ function NavigationMenu({
|
|
|
5154
5206
|
...props,
|
|
5155
5207
|
children: [
|
|
5156
5208
|
children,
|
|
5157
|
-
viewport && /* @__PURE__ */
|
|
5209
|
+
viewport && /* @__PURE__ */ jsx48(NavigationMenuViewport, {})
|
|
5158
5210
|
]
|
|
5159
5211
|
}
|
|
5160
5212
|
);
|
|
5161
5213
|
}
|
|
5162
5214
|
function NavigationMenuList({ className, ...props }) {
|
|
5163
|
-
return /* @__PURE__ */
|
|
5215
|
+
return /* @__PURE__ */ jsx48(
|
|
5164
5216
|
"ul",
|
|
5165
5217
|
{
|
|
5166
5218
|
"data-slot": "navigation-menu-list",
|
|
@@ -5186,8 +5238,8 @@ function NavigationMenuItem({
|
|
|
5186
5238
|
defaultValue: defaultOpen,
|
|
5187
5239
|
onChange: onOpenChange
|
|
5188
5240
|
});
|
|
5189
|
-
const triggerRef =
|
|
5190
|
-
return /* @__PURE__ */
|
|
5241
|
+
const triggerRef = React58.useRef(null);
|
|
5242
|
+
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
5243
|
}
|
|
5192
5244
|
function NavigationMenuTrigger({
|
|
5193
5245
|
className,
|
|
@@ -5212,7 +5264,7 @@ function NavigationMenuTrigger({
|
|
|
5212
5264
|
children: [
|
|
5213
5265
|
children,
|
|
5214
5266
|
" ",
|
|
5215
|
-
/* @__PURE__ */
|
|
5267
|
+
/* @__PURE__ */ jsx48(
|
|
5216
5268
|
"svg",
|
|
5217
5269
|
{
|
|
5218
5270
|
className: "relative top-[1px] ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180",
|
|
@@ -5223,7 +5275,7 @@ function NavigationMenuTrigger({
|
|
|
5223
5275
|
strokeLinecap: "round",
|
|
5224
5276
|
strokeLinejoin: "round",
|
|
5225
5277
|
"aria-hidden": "true",
|
|
5226
|
-
children: /* @__PURE__ */
|
|
5278
|
+
children: /* @__PURE__ */ jsx48("path", { d: "m6 9 6 6 6-6" })
|
|
5227
5279
|
}
|
|
5228
5280
|
)
|
|
5229
5281
|
]
|
|
@@ -5239,7 +5291,7 @@ function NavigationMenuContent({ className, children, ...props }) {
|
|
|
5239
5291
|
exclude: [triggerRef]
|
|
5240
5292
|
});
|
|
5241
5293
|
if (!isPresent) return null;
|
|
5242
|
-
return /* @__PURE__ */
|
|
5294
|
+
return /* @__PURE__ */ jsx48(
|
|
5243
5295
|
"div",
|
|
5244
5296
|
{
|
|
5245
5297
|
ref: mergeRefs(presenceRef, dismissRef),
|
|
@@ -5255,7 +5307,7 @@ function NavigationMenuContent({ className, children, ...props }) {
|
|
|
5255
5307
|
);
|
|
5256
5308
|
}
|
|
5257
5309
|
function NavigationMenuViewport({ className, ...props }) {
|
|
5258
|
-
return /* @__PURE__ */
|
|
5310
|
+
return /* @__PURE__ */ jsx48("div", { className: "absolute top-full left-0 isolate z-50 flex justify-center", children: /* @__PURE__ */ jsx48(
|
|
5259
5311
|
"div",
|
|
5260
5312
|
{
|
|
5261
5313
|
"data-slot": "navigation-menu-viewport",
|
|
@@ -5273,7 +5325,7 @@ function NavigationMenuLink({
|
|
|
5273
5325
|
...props
|
|
5274
5326
|
}) {
|
|
5275
5327
|
const Comp = asChild ? Slot : "a";
|
|
5276
|
-
return /* @__PURE__ */
|
|
5328
|
+
return /* @__PURE__ */ jsx48(
|
|
5277
5329
|
Comp,
|
|
5278
5330
|
{
|
|
5279
5331
|
"data-slot": "navigation-menu-link",
|
|
@@ -5286,7 +5338,7 @@ function NavigationMenuLink({
|
|
|
5286
5338
|
);
|
|
5287
5339
|
}
|
|
5288
5340
|
function NavigationMenuIndicator({ className, ...props }) {
|
|
5289
|
-
return /* @__PURE__ */
|
|
5341
|
+
return /* @__PURE__ */ jsx48(
|
|
5290
5342
|
"div",
|
|
5291
5343
|
{
|
|
5292
5344
|
"data-slot": "navigation-menu-indicator",
|
|
@@ -5295,13 +5347,13 @@ function NavigationMenuIndicator({ className, ...props }) {
|
|
|
5295
5347
|
className
|
|
5296
5348
|
),
|
|
5297
5349
|
...props,
|
|
5298
|
-
children: /* @__PURE__ */
|
|
5350
|
+
children: /* @__PURE__ */ jsx48("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" })
|
|
5299
5351
|
}
|
|
5300
5352
|
);
|
|
5301
5353
|
}
|
|
5302
5354
|
|
|
5303
5355
|
// src/components/dialog.tsx
|
|
5304
|
-
import * as
|
|
5356
|
+
import * as React59 from "react";
|
|
5305
5357
|
|
|
5306
5358
|
// src/generated/dialog.ts
|
|
5307
5359
|
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 +5365,10 @@ var DIALOG_TITLE = "text-lg leading-none font-semibold";
|
|
|
5313
5365
|
var DIALOG_DESCRIPTION = "text-ink-soft text-sm";
|
|
5314
5366
|
|
|
5315
5367
|
// src/components/dialog.tsx
|
|
5316
|
-
import { Fragment as Fragment6, jsx as
|
|
5317
|
-
var DialogContext =
|
|
5368
|
+
import { Fragment as Fragment6, jsx as jsx49, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
5369
|
+
var DialogContext = React59.createContext(null);
|
|
5318
5370
|
function useDialog() {
|
|
5319
|
-
const ctx =
|
|
5371
|
+
const ctx = React59.useContext(DialogContext);
|
|
5320
5372
|
if (!ctx) throw new Error("Dialog parts must be used within <Dialog>");
|
|
5321
5373
|
return ctx;
|
|
5322
5374
|
}
|
|
@@ -5326,13 +5378,13 @@ function Dialog({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5326
5378
|
defaultValue: defaultOpen,
|
|
5327
5379
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5328
5380
|
});
|
|
5329
|
-
const triggerRef =
|
|
5330
|
-
return /* @__PURE__ */
|
|
5381
|
+
const triggerRef = React59.useRef(null);
|
|
5382
|
+
return /* @__PURE__ */ jsx49(DialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5331
5383
|
}
|
|
5332
5384
|
function DialogTrigger({ asChild = false, onClick, ...props }) {
|
|
5333
5385
|
const { open, setOpen, triggerRef } = useDialog();
|
|
5334
5386
|
const Comp = asChild ? Slot : "button";
|
|
5335
|
-
return /* @__PURE__ */
|
|
5387
|
+
return /* @__PURE__ */ jsx49(
|
|
5336
5388
|
Comp,
|
|
5337
5389
|
{
|
|
5338
5390
|
"data-slot": "dialog-trigger",
|
|
@@ -5347,11 +5399,11 @@ function DialogTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5347
5399
|
);
|
|
5348
5400
|
}
|
|
5349
5401
|
function DialogPortal({ children }) {
|
|
5350
|
-
return /* @__PURE__ */
|
|
5402
|
+
return /* @__PURE__ */ jsx49(Fragment6, { children });
|
|
5351
5403
|
}
|
|
5352
5404
|
function DialogOverlay({ className, ...props }) {
|
|
5353
5405
|
const { open, setOpen } = useDialog();
|
|
5354
|
-
return /* @__PURE__ */
|
|
5406
|
+
return /* @__PURE__ */ jsx49(
|
|
5355
5407
|
"div",
|
|
5356
5408
|
{
|
|
5357
5409
|
"data-slot": "dialog-overlay",
|
|
@@ -5362,7 +5414,7 @@ function DialogOverlay({ className, ...props }) {
|
|
|
5362
5414
|
}
|
|
5363
5415
|
);
|
|
5364
5416
|
}
|
|
5365
|
-
var XIcon = (props) => /* @__PURE__ */
|
|
5417
|
+
var XIcon = (props) => /* @__PURE__ */ jsx49(
|
|
5366
5418
|
"svg",
|
|
5367
5419
|
{
|
|
5368
5420
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5375,7 +5427,7 @@ var XIcon = (props) => /* @__PURE__ */ jsx48(
|
|
|
5375
5427
|
strokeLinecap: "round",
|
|
5376
5428
|
strokeLinejoin: "round",
|
|
5377
5429
|
...props,
|
|
5378
|
-
children: /* @__PURE__ */
|
|
5430
|
+
children: /* @__PURE__ */ jsx49("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
5379
5431
|
}
|
|
5380
5432
|
);
|
|
5381
5433
|
function DialogContent({
|
|
@@ -5392,7 +5444,7 @@ function DialogContent({
|
|
|
5392
5444
|
onDismiss: () => setOpen(false),
|
|
5393
5445
|
exclude: [triggerRef]
|
|
5394
5446
|
});
|
|
5395
|
-
|
|
5447
|
+
React59.useEffect(() => {
|
|
5396
5448
|
if (!open) return;
|
|
5397
5449
|
const prev = document.body.style.overflow;
|
|
5398
5450
|
document.body.style.overflow = "hidden";
|
|
@@ -5402,7 +5454,7 @@ function DialogContent({
|
|
|
5402
5454
|
}, [open]);
|
|
5403
5455
|
if (!isPresent) return null;
|
|
5404
5456
|
return /* @__PURE__ */ jsxs19(Portal, { children: [
|
|
5405
|
-
/* @__PURE__ */
|
|
5457
|
+
/* @__PURE__ */ jsx49(DialogOverlay, {}),
|
|
5406
5458
|
/* @__PURE__ */ jsxs19(
|
|
5407
5459
|
"div",
|
|
5408
5460
|
{
|
|
@@ -5423,8 +5475,8 @@ function DialogContent({
|
|
|
5423
5475
|
onClick: () => setOpen(false),
|
|
5424
5476
|
className: DIALOG_CLOSE,
|
|
5425
5477
|
children: [
|
|
5426
|
-
/* @__PURE__ */
|
|
5427
|
-
/* @__PURE__ */
|
|
5478
|
+
/* @__PURE__ */ jsx49(XIcon, {}),
|
|
5479
|
+
/* @__PURE__ */ jsx49("span", { className: "sr-only", children: "Close" })
|
|
5428
5480
|
]
|
|
5429
5481
|
}
|
|
5430
5482
|
)
|
|
@@ -5436,7 +5488,7 @@ function DialogContent({
|
|
|
5436
5488
|
function DialogClose({ asChild = false, onClick, ...props }) {
|
|
5437
5489
|
const { setOpen } = useDialog();
|
|
5438
5490
|
const Comp = asChild ? Slot : "button";
|
|
5439
|
-
return /* @__PURE__ */
|
|
5491
|
+
return /* @__PURE__ */ jsx49(
|
|
5440
5492
|
Comp,
|
|
5441
5493
|
{
|
|
5442
5494
|
"data-slot": "dialog-close",
|
|
@@ -5449,7 +5501,7 @@ function DialogClose({ asChild = false, onClick, ...props }) {
|
|
|
5449
5501
|
);
|
|
5450
5502
|
}
|
|
5451
5503
|
function DialogHeader({ className, ...props }) {
|
|
5452
|
-
return /* @__PURE__ */
|
|
5504
|
+
return /* @__PURE__ */ jsx49(
|
|
5453
5505
|
"div",
|
|
5454
5506
|
{
|
|
5455
5507
|
"data-slot": "dialog-header",
|
|
@@ -5459,7 +5511,7 @@ function DialogHeader({ className, ...props }) {
|
|
|
5459
5511
|
);
|
|
5460
5512
|
}
|
|
5461
5513
|
function DialogFooter({ className, ...props }) {
|
|
5462
|
-
return /* @__PURE__ */
|
|
5514
|
+
return /* @__PURE__ */ jsx49(
|
|
5463
5515
|
"div",
|
|
5464
5516
|
{
|
|
5465
5517
|
"data-slot": "dialog-footer",
|
|
@@ -5469,7 +5521,7 @@ function DialogFooter({ className, ...props }) {
|
|
|
5469
5521
|
);
|
|
5470
5522
|
}
|
|
5471
5523
|
function DialogTitle({ className, ...props }) {
|
|
5472
|
-
return /* @__PURE__ */
|
|
5524
|
+
return /* @__PURE__ */ jsx49(
|
|
5473
5525
|
"h2",
|
|
5474
5526
|
{
|
|
5475
5527
|
"data-slot": "dialog-title",
|
|
@@ -5479,7 +5531,7 @@ function DialogTitle({ className, ...props }) {
|
|
|
5479
5531
|
);
|
|
5480
5532
|
}
|
|
5481
5533
|
function DialogDescription({ className, ...props }) {
|
|
5482
|
-
return /* @__PURE__ */
|
|
5534
|
+
return /* @__PURE__ */ jsx49(
|
|
5483
5535
|
"p",
|
|
5484
5536
|
{
|
|
5485
5537
|
"data-slot": "dialog-description",
|
|
@@ -5490,7 +5542,7 @@ function DialogDescription({ className, ...props }) {
|
|
|
5490
5542
|
}
|
|
5491
5543
|
|
|
5492
5544
|
// src/components/alert-dialog.tsx
|
|
5493
|
-
import * as
|
|
5545
|
+
import * as React60 from "react";
|
|
5494
5546
|
|
|
5495
5547
|
// src/generated/alert-dialog.ts
|
|
5496
5548
|
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 +5553,10 @@ var ALERT_DIALOG_TITLE = "text-lg font-semibold";
|
|
|
5501
5553
|
var ALERT_DIALOG_DESCRIPTION = "text-ink-soft text-sm";
|
|
5502
5554
|
|
|
5503
5555
|
// src/components/alert-dialog.tsx
|
|
5504
|
-
import { jsx as
|
|
5505
|
-
var AlertDialogContext =
|
|
5556
|
+
import { jsx as jsx50, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5557
|
+
var AlertDialogContext = React60.createContext(null);
|
|
5506
5558
|
function useAlertDialog() {
|
|
5507
|
-
const ctx =
|
|
5559
|
+
const ctx = React60.useContext(AlertDialogContext);
|
|
5508
5560
|
if (!ctx) throw new Error("AlertDialog parts must be used within <AlertDialog>");
|
|
5509
5561
|
return ctx;
|
|
5510
5562
|
}
|
|
@@ -5514,13 +5566,13 @@ function AlertDialog({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5514
5566
|
defaultValue: defaultOpen,
|
|
5515
5567
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5516
5568
|
});
|
|
5517
|
-
const triggerRef =
|
|
5518
|
-
return /* @__PURE__ */
|
|
5569
|
+
const triggerRef = React60.useRef(null);
|
|
5570
|
+
return /* @__PURE__ */ jsx50(AlertDialogContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5519
5571
|
}
|
|
5520
5572
|
function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
|
|
5521
5573
|
const { open, setOpen, triggerRef } = useAlertDialog();
|
|
5522
5574
|
const Comp = asChild ? Slot : "button";
|
|
5523
|
-
return /* @__PURE__ */
|
|
5575
|
+
return /* @__PURE__ */ jsx50(
|
|
5524
5576
|
Comp,
|
|
5525
5577
|
{
|
|
5526
5578
|
"data-slot": "alert-dialog-trigger",
|
|
@@ -5536,7 +5588,7 @@ function AlertDialogTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5536
5588
|
}
|
|
5537
5589
|
function AlertDialogOverlay({ className, ...props }) {
|
|
5538
5590
|
const { open, setOpen } = useAlertDialog();
|
|
5539
|
-
return /* @__PURE__ */
|
|
5591
|
+
return /* @__PURE__ */ jsx50(
|
|
5540
5592
|
"div",
|
|
5541
5593
|
{
|
|
5542
5594
|
"data-slot": "alert-dialog-overlay",
|
|
@@ -5558,8 +5610,8 @@ function AlertDialogContent({ className, children, ...props }) {
|
|
|
5558
5610
|
});
|
|
5559
5611
|
if (!isPresent) return null;
|
|
5560
5612
|
return /* @__PURE__ */ jsxs20(Portal, { children: [
|
|
5561
|
-
/* @__PURE__ */
|
|
5562
|
-
/* @__PURE__ */
|
|
5613
|
+
/* @__PURE__ */ jsx50(AlertDialogOverlay, {}),
|
|
5614
|
+
/* @__PURE__ */ jsx50(
|
|
5563
5615
|
"div",
|
|
5564
5616
|
{
|
|
5565
5617
|
"data-slot": "alert-dialog-content",
|
|
@@ -5575,7 +5627,7 @@ function AlertDialogContent({ className, children, ...props }) {
|
|
|
5575
5627
|
] });
|
|
5576
5628
|
}
|
|
5577
5629
|
function AlertDialogHeader({ className, ...props }) {
|
|
5578
|
-
return /* @__PURE__ */
|
|
5630
|
+
return /* @__PURE__ */ jsx50(
|
|
5579
5631
|
"div",
|
|
5580
5632
|
{
|
|
5581
5633
|
"data-slot": "alert-dialog-header",
|
|
@@ -5585,7 +5637,7 @@ function AlertDialogHeader({ className, ...props }) {
|
|
|
5585
5637
|
);
|
|
5586
5638
|
}
|
|
5587
5639
|
function AlertDialogFooter({ className, ...props }) {
|
|
5588
|
-
return /* @__PURE__ */
|
|
5640
|
+
return /* @__PURE__ */ jsx50(
|
|
5589
5641
|
"div",
|
|
5590
5642
|
{
|
|
5591
5643
|
"data-slot": "alert-dialog-footer",
|
|
@@ -5595,7 +5647,7 @@ function AlertDialogFooter({ className, ...props }) {
|
|
|
5595
5647
|
);
|
|
5596
5648
|
}
|
|
5597
5649
|
function AlertDialogTitle({ className, ...props }) {
|
|
5598
|
-
return /* @__PURE__ */
|
|
5650
|
+
return /* @__PURE__ */ jsx50(
|
|
5599
5651
|
"h2",
|
|
5600
5652
|
{
|
|
5601
5653
|
"data-slot": "alert-dialog-title",
|
|
@@ -5605,7 +5657,7 @@ function AlertDialogTitle({ className, ...props }) {
|
|
|
5605
5657
|
);
|
|
5606
5658
|
}
|
|
5607
5659
|
function AlertDialogDescription({ className, ...props }) {
|
|
5608
|
-
return /* @__PURE__ */
|
|
5660
|
+
return /* @__PURE__ */ jsx50(
|
|
5609
5661
|
"p",
|
|
5610
5662
|
{
|
|
5611
5663
|
"data-slot": "alert-dialog-description",
|
|
@@ -5616,7 +5668,7 @@ function AlertDialogDescription({ className, ...props }) {
|
|
|
5616
5668
|
}
|
|
5617
5669
|
function AlertDialogAction({ className, onClick, ...props }) {
|
|
5618
5670
|
const { setOpen } = useAlertDialog();
|
|
5619
|
-
return /* @__PURE__ */
|
|
5671
|
+
return /* @__PURE__ */ jsx50(
|
|
5620
5672
|
"button",
|
|
5621
5673
|
{
|
|
5622
5674
|
"data-slot": "alert-dialog-action",
|
|
@@ -5631,7 +5683,7 @@ function AlertDialogAction({ className, onClick, ...props }) {
|
|
|
5631
5683
|
}
|
|
5632
5684
|
function AlertDialogCancel({ className, onClick, ...props }) {
|
|
5633
5685
|
const { setOpen } = useAlertDialog();
|
|
5634
|
-
return /* @__PURE__ */
|
|
5686
|
+
return /* @__PURE__ */ jsx50(
|
|
5635
5687
|
"button",
|
|
5636
5688
|
{
|
|
5637
5689
|
"data-slot": "alert-dialog-cancel",
|
|
@@ -5646,7 +5698,7 @@ function AlertDialogCancel({ className, onClick, ...props }) {
|
|
|
5646
5698
|
}
|
|
5647
5699
|
|
|
5648
5700
|
// src/components/sheet.tsx
|
|
5649
|
-
import * as
|
|
5701
|
+
import * as React61 from "react";
|
|
5650
5702
|
|
|
5651
5703
|
// src/generated/sheet.ts
|
|
5652
5704
|
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 +5714,10 @@ var SHEET_TITLE = "text-ink font-semibold";
|
|
|
5662
5714
|
var SHEET_DESCRIPTION = "text-ink-soft text-sm";
|
|
5663
5715
|
|
|
5664
5716
|
// src/components/sheet.tsx
|
|
5665
|
-
import { jsx as
|
|
5666
|
-
var SheetContext =
|
|
5717
|
+
import { jsx as jsx51, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5718
|
+
var SheetContext = React61.createContext(null);
|
|
5667
5719
|
function useSheet() {
|
|
5668
|
-
const ctx =
|
|
5720
|
+
const ctx = React61.useContext(SheetContext);
|
|
5669
5721
|
if (!ctx) throw new Error("Sheet parts must be used within <Sheet>");
|
|
5670
5722
|
return ctx;
|
|
5671
5723
|
}
|
|
@@ -5675,13 +5727,13 @@ function Sheet({ open, defaultOpen = false, onOpenChange, children }) {
|
|
|
5675
5727
|
defaultValue: defaultOpen,
|
|
5676
5728
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5677
5729
|
});
|
|
5678
|
-
const triggerRef =
|
|
5679
|
-
return /* @__PURE__ */
|
|
5730
|
+
const triggerRef = React61.useRef(null);
|
|
5731
|
+
return /* @__PURE__ */ jsx51(SheetContext.Provider, { value: { open: isOpen, setOpen, triggerRef }, children });
|
|
5680
5732
|
}
|
|
5681
5733
|
function SheetTrigger({ asChild = false, onClick, ...props }) {
|
|
5682
5734
|
const { open, setOpen, triggerRef } = useSheet();
|
|
5683
5735
|
const Comp = asChild ? Slot : "button";
|
|
5684
|
-
return /* @__PURE__ */
|
|
5736
|
+
return /* @__PURE__ */ jsx51(
|
|
5685
5737
|
Comp,
|
|
5686
5738
|
{
|
|
5687
5739
|
"data-slot": "sheet-trigger",
|
|
@@ -5697,7 +5749,7 @@ function SheetTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5697
5749
|
}
|
|
5698
5750
|
function SheetOverlay({ className, ...props }) {
|
|
5699
5751
|
const { open, setOpen } = useSheet();
|
|
5700
|
-
return /* @__PURE__ */
|
|
5752
|
+
return /* @__PURE__ */ jsx51(
|
|
5701
5753
|
"div",
|
|
5702
5754
|
{
|
|
5703
5755
|
"data-slot": "sheet-overlay",
|
|
@@ -5714,7 +5766,7 @@ var sheetSideClasses = {
|
|
|
5714
5766
|
top: SHEET_SIDE_TOP,
|
|
5715
5767
|
bottom: SHEET_SIDE_BOTTOM
|
|
5716
5768
|
};
|
|
5717
|
-
var XIcon2 = (props) => /* @__PURE__ */
|
|
5769
|
+
var XIcon2 = (props) => /* @__PURE__ */ jsx51(
|
|
5718
5770
|
"svg",
|
|
5719
5771
|
{
|
|
5720
5772
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -5727,7 +5779,7 @@ var XIcon2 = (props) => /* @__PURE__ */ jsx50(
|
|
|
5727
5779
|
strokeLinecap: "round",
|
|
5728
5780
|
strokeLinejoin: "round",
|
|
5729
5781
|
...props,
|
|
5730
|
-
children: /* @__PURE__ */
|
|
5782
|
+
children: /* @__PURE__ */ jsx51("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
5731
5783
|
}
|
|
5732
5784
|
);
|
|
5733
5785
|
function SheetContent({ className, children, side = "right", ...props }) {
|
|
@@ -5741,7 +5793,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5741
5793
|
});
|
|
5742
5794
|
if (!isPresent) return null;
|
|
5743
5795
|
return /* @__PURE__ */ jsxs21(Portal, { children: [
|
|
5744
|
-
/* @__PURE__ */
|
|
5796
|
+
/* @__PURE__ */ jsx51(SheetOverlay, {}),
|
|
5745
5797
|
/* @__PURE__ */ jsxs21(
|
|
5746
5798
|
"div",
|
|
5747
5799
|
{
|
|
@@ -5762,8 +5814,8 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5762
5814
|
onClick: () => setOpen(false),
|
|
5763
5815
|
className: SHEET_CLOSE,
|
|
5764
5816
|
children: [
|
|
5765
|
-
/* @__PURE__ */
|
|
5766
|
-
/* @__PURE__ */
|
|
5817
|
+
/* @__PURE__ */ jsx51(XIcon2, { className: "size-4" }),
|
|
5818
|
+
/* @__PURE__ */ jsx51("span", { className: "sr-only", children: "Close" })
|
|
5767
5819
|
]
|
|
5768
5820
|
}
|
|
5769
5821
|
)
|
|
@@ -5775,7 +5827,7 @@ function SheetContent({ className, children, side = "right", ...props }) {
|
|
|
5775
5827
|
function SheetClose({ asChild = false, onClick, ...props }) {
|
|
5776
5828
|
const { setOpen } = useSheet();
|
|
5777
5829
|
const Comp = asChild ? Slot : "button";
|
|
5778
|
-
return /* @__PURE__ */
|
|
5830
|
+
return /* @__PURE__ */ jsx51(
|
|
5779
5831
|
Comp,
|
|
5780
5832
|
{
|
|
5781
5833
|
"data-slot": "sheet-close",
|
|
@@ -5788,7 +5840,7 @@ function SheetClose({ asChild = false, onClick, ...props }) {
|
|
|
5788
5840
|
);
|
|
5789
5841
|
}
|
|
5790
5842
|
function SheetHeader({ className, ...props }) {
|
|
5791
|
-
return /* @__PURE__ */
|
|
5843
|
+
return /* @__PURE__ */ jsx51(
|
|
5792
5844
|
"div",
|
|
5793
5845
|
{
|
|
5794
5846
|
"data-slot": "sheet-header",
|
|
@@ -5798,7 +5850,7 @@ function SheetHeader({ className, ...props }) {
|
|
|
5798
5850
|
);
|
|
5799
5851
|
}
|
|
5800
5852
|
function SheetFooter({ className, ...props }) {
|
|
5801
|
-
return /* @__PURE__ */
|
|
5853
|
+
return /* @__PURE__ */ jsx51(
|
|
5802
5854
|
"div",
|
|
5803
5855
|
{
|
|
5804
5856
|
"data-slot": "sheet-footer",
|
|
@@ -5808,7 +5860,7 @@ function SheetFooter({ className, ...props }) {
|
|
|
5808
5860
|
);
|
|
5809
5861
|
}
|
|
5810
5862
|
function SheetTitle({ className, ...props }) {
|
|
5811
|
-
return /* @__PURE__ */
|
|
5863
|
+
return /* @__PURE__ */ jsx51(
|
|
5812
5864
|
"h2",
|
|
5813
5865
|
{
|
|
5814
5866
|
"data-slot": "sheet-title",
|
|
@@ -5818,7 +5870,7 @@ function SheetTitle({ className, ...props }) {
|
|
|
5818
5870
|
);
|
|
5819
5871
|
}
|
|
5820
5872
|
function SheetDescription({ className, ...props }) {
|
|
5821
|
-
return /* @__PURE__ */
|
|
5873
|
+
return /* @__PURE__ */ jsx51(
|
|
5822
5874
|
"p",
|
|
5823
5875
|
{
|
|
5824
5876
|
"data-slot": "sheet-description",
|
|
@@ -5829,7 +5881,7 @@ function SheetDescription({ className, ...props }) {
|
|
|
5829
5881
|
}
|
|
5830
5882
|
|
|
5831
5883
|
// src/components/drawer.tsx
|
|
5832
|
-
import * as
|
|
5884
|
+
import * as React62 from "react";
|
|
5833
5885
|
|
|
5834
5886
|
// src/generated/drawer.ts
|
|
5835
5887
|
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 +5899,10 @@ var DRAWER_TITLE = "text-ink font-semibold";
|
|
|
5847
5899
|
var DRAWER_DESCRIPTION = "text-ink-soft text-sm";
|
|
5848
5900
|
|
|
5849
5901
|
// src/components/drawer.tsx
|
|
5850
|
-
import { jsx as
|
|
5851
|
-
var DrawerContext =
|
|
5902
|
+
import { jsx as jsx52, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5903
|
+
var DrawerContext = React62.createContext(null);
|
|
5852
5904
|
function useDrawer() {
|
|
5853
|
-
const ctx =
|
|
5905
|
+
const ctx = React62.useContext(DrawerContext);
|
|
5854
5906
|
if (!ctx) throw new Error("Drawer parts must be used within <Drawer>");
|
|
5855
5907
|
return ctx;
|
|
5856
5908
|
}
|
|
@@ -5866,12 +5918,12 @@ function Drawer({
|
|
|
5866
5918
|
defaultValue: defaultOpen,
|
|
5867
5919
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
5868
5920
|
});
|
|
5869
|
-
return /* @__PURE__ */
|
|
5921
|
+
return /* @__PURE__ */ jsx52(DrawerContext.Provider, { value: { open: isOpen, setOpen, direction }, children: /* @__PURE__ */ jsx52("div", { "data-slot": "drawer", children }) });
|
|
5870
5922
|
}
|
|
5871
5923
|
function DrawerTrigger({ asChild = false, onClick, ...props }) {
|
|
5872
5924
|
const { setOpen } = useDrawer();
|
|
5873
5925
|
const Comp = asChild ? Slot : "button";
|
|
5874
|
-
return /* @__PURE__ */
|
|
5926
|
+
return /* @__PURE__ */ jsx52(
|
|
5875
5927
|
Comp,
|
|
5876
5928
|
{
|
|
5877
5929
|
"data-slot": "drawer-trigger",
|
|
@@ -5886,7 +5938,7 @@ function DrawerTrigger({ asChild = false, onClick, ...props }) {
|
|
|
5886
5938
|
function DrawerClose({ asChild = false, onClick, ...props }) {
|
|
5887
5939
|
const { setOpen } = useDrawer();
|
|
5888
5940
|
const Comp = asChild ? Slot : "button";
|
|
5889
|
-
return /* @__PURE__ */
|
|
5941
|
+
return /* @__PURE__ */ jsx52(
|
|
5890
5942
|
Comp,
|
|
5891
5943
|
{
|
|
5892
5944
|
"data-slot": "drawer-close",
|
|
@@ -5901,7 +5953,7 @@ function DrawerClose({ asChild = false, onClick, ...props }) {
|
|
|
5901
5953
|
function DrawerOverlay({ className, ...props }) {
|
|
5902
5954
|
const { open, setOpen } = useDrawer();
|
|
5903
5955
|
if (!open) return null;
|
|
5904
|
-
return /* @__PURE__ */
|
|
5956
|
+
return /* @__PURE__ */ jsx52(
|
|
5905
5957
|
"div",
|
|
5906
5958
|
{
|
|
5907
5959
|
"data-slot": "drawer-overlay",
|
|
@@ -5917,7 +5969,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5917
5969
|
const scopeRef = useFocusScope(open);
|
|
5918
5970
|
if (!open) return null;
|
|
5919
5971
|
return /* @__PURE__ */ jsxs22(Portal, { children: [
|
|
5920
|
-
/* @__PURE__ */
|
|
5972
|
+
/* @__PURE__ */ jsx52(
|
|
5921
5973
|
"div",
|
|
5922
5974
|
{
|
|
5923
5975
|
"data-slot": "drawer-overlay",
|
|
@@ -5941,7 +5993,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5941
5993
|
className: cn(DRAWER_CONTENT_BASE, drawerDirectionClasses[direction], className),
|
|
5942
5994
|
...props,
|
|
5943
5995
|
children: [
|
|
5944
|
-
direction === "bottom" ? /* @__PURE__ */
|
|
5996
|
+
direction === "bottom" ? /* @__PURE__ */ jsx52(
|
|
5945
5997
|
"div",
|
|
5946
5998
|
{
|
|
5947
5999
|
"data-slot": "drawer-handle",
|
|
@@ -5955,7 +6007,7 @@ function DrawerContent({ className, children, ...props }) {
|
|
|
5955
6007
|
] });
|
|
5956
6008
|
}
|
|
5957
6009
|
function DrawerHeader({ className, ...props }) {
|
|
5958
|
-
return /* @__PURE__ */
|
|
6010
|
+
return /* @__PURE__ */ jsx52(
|
|
5959
6011
|
"div",
|
|
5960
6012
|
{
|
|
5961
6013
|
"data-slot": "drawer-header",
|
|
@@ -5965,7 +6017,7 @@ function DrawerHeader({ className, ...props }) {
|
|
|
5965
6017
|
);
|
|
5966
6018
|
}
|
|
5967
6019
|
function DrawerFooter({ className, ...props }) {
|
|
5968
|
-
return /* @__PURE__ */
|
|
6020
|
+
return /* @__PURE__ */ jsx52(
|
|
5969
6021
|
"div",
|
|
5970
6022
|
{
|
|
5971
6023
|
"data-slot": "drawer-footer",
|
|
@@ -5975,7 +6027,7 @@ function DrawerFooter({ className, ...props }) {
|
|
|
5975
6027
|
);
|
|
5976
6028
|
}
|
|
5977
6029
|
function DrawerTitle({ className, ...props }) {
|
|
5978
|
-
return /* @__PURE__ */
|
|
6030
|
+
return /* @__PURE__ */ jsx52(
|
|
5979
6031
|
"div",
|
|
5980
6032
|
{
|
|
5981
6033
|
"data-slot": "drawer-title",
|
|
@@ -5985,7 +6037,7 @@ function DrawerTitle({ className, ...props }) {
|
|
|
5985
6037
|
);
|
|
5986
6038
|
}
|
|
5987
6039
|
function DrawerDescription({ className, ...props }) {
|
|
5988
|
-
return /* @__PURE__ */
|
|
6040
|
+
return /* @__PURE__ */ jsx52(
|
|
5989
6041
|
"div",
|
|
5990
6042
|
{
|
|
5991
6043
|
"data-slot": "drawer-description",
|
|
@@ -5996,11 +6048,11 @@ function DrawerDescription({ className, ...props }) {
|
|
|
5996
6048
|
}
|
|
5997
6049
|
|
|
5998
6050
|
// src/components/select.tsx
|
|
5999
|
-
import * as
|
|
6000
|
-
import { jsx as
|
|
6001
|
-
var SelectContext =
|
|
6051
|
+
import * as React63 from "react";
|
|
6052
|
+
import { jsx as jsx53, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
6053
|
+
var SelectContext = React63.createContext(null);
|
|
6002
6054
|
function useSelect() {
|
|
6003
|
-
const ctx =
|
|
6055
|
+
const ctx = React63.useContext(SelectContext);
|
|
6004
6056
|
if (!ctx) throw new Error("Select parts must be used within <Select>");
|
|
6005
6057
|
return ctx;
|
|
6006
6058
|
}
|
|
@@ -6023,8 +6075,8 @@ function Select({
|
|
|
6023
6075
|
defaultValue: defaultOpen,
|
|
6024
6076
|
...onOpenChange ? { onChange: onOpenChange } : {}
|
|
6025
6077
|
});
|
|
6026
|
-
const anchorRef =
|
|
6027
|
-
return /* @__PURE__ */
|
|
6078
|
+
const anchorRef = React63.useRef(null);
|
|
6079
|
+
return /* @__PURE__ */ jsx53(
|
|
6028
6080
|
SelectContext.Provider,
|
|
6029
6081
|
{
|
|
6030
6082
|
value: { value: currentValue, setValue, open: isOpen, setOpen, anchorRef },
|
|
@@ -6061,7 +6113,7 @@ function SelectTrigger({
|
|
|
6061
6113
|
...props,
|
|
6062
6114
|
children: [
|
|
6063
6115
|
children,
|
|
6064
|
-
/* @__PURE__ */
|
|
6116
|
+
/* @__PURE__ */ jsx53(
|
|
6065
6117
|
"svg",
|
|
6066
6118
|
{
|
|
6067
6119
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6075,7 +6127,7 @@ function SelectTrigger({
|
|
|
6075
6127
|
strokeLinejoin: "round",
|
|
6076
6128
|
className: "size-4 opacity-50",
|
|
6077
6129
|
"aria-hidden": "true",
|
|
6078
|
-
children: /* @__PURE__ */
|
|
6130
|
+
children: /* @__PURE__ */ jsx53("path", { d: "m6 9 6 6 6-6" })
|
|
6079
6131
|
}
|
|
6080
6132
|
)
|
|
6081
6133
|
]
|
|
@@ -6085,7 +6137,7 @@ function SelectTrigger({
|
|
|
6085
6137
|
function SelectValue({ className, placeholder, ...props }) {
|
|
6086
6138
|
const { value } = useSelect();
|
|
6087
6139
|
const isEmpty = value === "";
|
|
6088
|
-
return /* @__PURE__ */
|
|
6140
|
+
return /* @__PURE__ */ jsx53(
|
|
6089
6141
|
"span",
|
|
6090
6142
|
{
|
|
6091
6143
|
"data-slot": "select-value",
|
|
@@ -6118,13 +6170,13 @@ function SelectContent({
|
|
|
6118
6170
|
onDismiss: () => setOpen(false),
|
|
6119
6171
|
exclude: [anchorRef]
|
|
6120
6172
|
});
|
|
6121
|
-
const items =
|
|
6173
|
+
const items = React63.Children.toArray(children).filter(React63.isValidElement);
|
|
6122
6174
|
const { activeIndex, setActiveIndex, onKeyDown } = useRovingFocus({
|
|
6123
6175
|
count: items.length,
|
|
6124
6176
|
orientation: "vertical"
|
|
6125
6177
|
});
|
|
6126
6178
|
if (!isPresent) return null;
|
|
6127
|
-
return /* @__PURE__ */
|
|
6179
|
+
return /* @__PURE__ */ jsx53(Portal, { children: /* @__PURE__ */ jsx53(
|
|
6128
6180
|
"div",
|
|
6129
6181
|
{
|
|
6130
6182
|
role: "listbox",
|
|
@@ -6140,8 +6192,8 @@ function SelectContent({
|
|
|
6140
6192
|
className
|
|
6141
6193
|
),
|
|
6142
6194
|
...props,
|
|
6143
|
-
children: /* @__PURE__ */
|
|
6144
|
-
(child, index) =>
|
|
6195
|
+
children: /* @__PURE__ */ jsx53("div", { className: "p-1", children: items.map(
|
|
6196
|
+
(child, index) => React63.cloneElement(child, {
|
|
6145
6197
|
__index: index,
|
|
6146
6198
|
__active: index === activeIndex,
|
|
6147
6199
|
__setActive: setActiveIndex
|
|
@@ -6186,7 +6238,7 @@ function SelectItem({
|
|
|
6186
6238
|
),
|
|
6187
6239
|
...props,
|
|
6188
6240
|
children: [
|
|
6189
|
-
selected ? /* @__PURE__ */
|
|
6241
|
+
selected ? /* @__PURE__ */ jsx53("span", { className: "absolute right-2 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx53(
|
|
6190
6242
|
"svg",
|
|
6191
6243
|
{
|
|
6192
6244
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -6200,19 +6252,19 @@ function SelectItem({
|
|
|
6200
6252
|
strokeLinejoin: "round",
|
|
6201
6253
|
className: "size-4",
|
|
6202
6254
|
"aria-hidden": "true",
|
|
6203
|
-
children: /* @__PURE__ */
|
|
6255
|
+
children: /* @__PURE__ */ jsx53("path", { d: "M20 6 9 17l-5-5" })
|
|
6204
6256
|
}
|
|
6205
6257
|
) }) : null,
|
|
6206
|
-
/* @__PURE__ */
|
|
6258
|
+
/* @__PURE__ */ jsx53("span", { children })
|
|
6207
6259
|
]
|
|
6208
6260
|
}
|
|
6209
6261
|
);
|
|
6210
6262
|
}
|
|
6211
6263
|
function SelectGroup({ className, ...props }) {
|
|
6212
|
-
return /* @__PURE__ */
|
|
6264
|
+
return /* @__PURE__ */ jsx53("div", { role: "group", "data-slot": "select-group", className, ...props });
|
|
6213
6265
|
}
|
|
6214
6266
|
function SelectLabel({ className, ...props }) {
|
|
6215
|
-
return /* @__PURE__ */
|
|
6267
|
+
return /* @__PURE__ */ jsx53(
|
|
6216
6268
|
"div",
|
|
6217
6269
|
{
|
|
6218
6270
|
"data-slot": "select-label",
|
|
@@ -6222,7 +6274,7 @@ function SelectLabel({ className, ...props }) {
|
|
|
6222
6274
|
);
|
|
6223
6275
|
}
|
|
6224
6276
|
function SelectSeparator({ className, ...props }) {
|
|
6225
|
-
return /* @__PURE__ */
|
|
6277
|
+
return /* @__PURE__ */ jsx53(
|
|
6226
6278
|
"div",
|
|
6227
6279
|
{
|
|
6228
6280
|
"data-slot": "select-separator",
|
|
@@ -6233,7 +6285,7 @@ function SelectSeparator({ className, ...props }) {
|
|
|
6233
6285
|
}
|
|
6234
6286
|
|
|
6235
6287
|
// src/components/command.tsx
|
|
6236
|
-
import * as
|
|
6288
|
+
import * as React64 from "react";
|
|
6237
6289
|
|
|
6238
6290
|
// src/generated/command.ts
|
|
6239
6291
|
var COMMAND_ROOT = "bg-popover text-ink flex h-full w-full flex-col overflow-hidden rounded-md";
|
|
@@ -6250,10 +6302,10 @@ var COMMAND_SEPARATOR = "bg-border -mx-1 h-px";
|
|
|
6250
6302
|
var COMMAND_SHORTCUT = "text-ink-soft ml-auto text-xs tracking-widest";
|
|
6251
6303
|
|
|
6252
6304
|
// src/components/command.tsx
|
|
6253
|
-
import { jsx as
|
|
6254
|
-
var CommandContext =
|
|
6305
|
+
import { jsx as jsx54, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
6306
|
+
var CommandContext = React64.createContext(null);
|
|
6255
6307
|
function useCommand() {
|
|
6256
|
-
const ctx =
|
|
6308
|
+
const ctx = React64.useContext(CommandContext);
|
|
6257
6309
|
if (!ctx) throw new Error("Command parts must be used within <Command>");
|
|
6258
6310
|
return ctx;
|
|
6259
6311
|
}
|
|
@@ -6270,10 +6322,10 @@ function Command({
|
|
|
6270
6322
|
defaultValue: defaultSearch,
|
|
6271
6323
|
...onSearchChange ? { onChange: onSearchChange } : {}
|
|
6272
6324
|
});
|
|
6273
|
-
const [items, setItems] =
|
|
6325
|
+
const [items, setItems] = React64.useState(
|
|
6274
6326
|
() => /* @__PURE__ */ new Map()
|
|
6275
6327
|
);
|
|
6276
|
-
const registerItem =
|
|
6328
|
+
const registerItem = React64.useCallback((id, value) => {
|
|
6277
6329
|
setItems((prev) => {
|
|
6278
6330
|
if (prev.get(id) === value) return prev;
|
|
6279
6331
|
const next = new Map(prev);
|
|
@@ -6281,7 +6333,7 @@ function Command({
|
|
|
6281
6333
|
return next;
|
|
6282
6334
|
});
|
|
6283
6335
|
}, []);
|
|
6284
|
-
const unregisterItem =
|
|
6336
|
+
const unregisterItem = React64.useCallback((id) => {
|
|
6285
6337
|
setItems((prev) => {
|
|
6286
6338
|
if (!prev.has(id)) return prev;
|
|
6287
6339
|
const next = new Map(prev);
|
|
@@ -6290,15 +6342,15 @@ function Command({
|
|
|
6290
6342
|
});
|
|
6291
6343
|
}, []);
|
|
6292
6344
|
const query = currentSearch.trim().toLowerCase();
|
|
6293
|
-
const matches =
|
|
6345
|
+
const matches = React64.useCallback(
|
|
6294
6346
|
(value) => query === "" || value.toLowerCase().includes(query),
|
|
6295
6347
|
[query]
|
|
6296
6348
|
);
|
|
6297
|
-
const hasMatches =
|
|
6349
|
+
const hasMatches = React64.useMemo(
|
|
6298
6350
|
() => [...items.values()].some(matches),
|
|
6299
6351
|
[items, matches]
|
|
6300
6352
|
);
|
|
6301
|
-
return /* @__PURE__ */
|
|
6353
|
+
return /* @__PURE__ */ jsx54(
|
|
6302
6354
|
CommandContext.Provider,
|
|
6303
6355
|
{
|
|
6304
6356
|
value: {
|
|
@@ -6310,7 +6362,7 @@ function Command({
|
|
|
6310
6362
|
matches,
|
|
6311
6363
|
hasMatches
|
|
6312
6364
|
},
|
|
6313
|
-
children: /* @__PURE__ */
|
|
6365
|
+
children: /* @__PURE__ */ jsx54(
|
|
6314
6366
|
"div",
|
|
6315
6367
|
{
|
|
6316
6368
|
"data-slot": "command",
|
|
@@ -6337,7 +6389,7 @@ function CommandDialog({
|
|
|
6337
6389
|
const scopeRef = useFocusScope(isOpen);
|
|
6338
6390
|
if (!isOpen) return null;
|
|
6339
6391
|
return /* @__PURE__ */ jsxs24(Portal, { children: [
|
|
6340
|
-
/* @__PURE__ */
|
|
6392
|
+
/* @__PURE__ */ jsx54(
|
|
6341
6393
|
"div",
|
|
6342
6394
|
{
|
|
6343
6395
|
"data-slot": "command-overlay",
|
|
@@ -6345,7 +6397,7 @@ function CommandDialog({
|
|
|
6345
6397
|
onClick: () => setOpen(false)
|
|
6346
6398
|
}
|
|
6347
6399
|
),
|
|
6348
|
-
/* @__PURE__ */
|
|
6400
|
+
/* @__PURE__ */ jsx54(
|
|
6349
6401
|
"div",
|
|
6350
6402
|
{
|
|
6351
6403
|
role: "dialog",
|
|
@@ -6356,7 +6408,7 @@ function CommandDialog({
|
|
|
6356
6408
|
if (e.key === "Escape") setOpen(false);
|
|
6357
6409
|
},
|
|
6358
6410
|
className: cn(COMMAND_DIALOG_CONTENT, className),
|
|
6359
|
-
children: /* @__PURE__ */
|
|
6411
|
+
children: /* @__PURE__ */ jsx54(Command, { className: COMMAND_DIALOG_COMMAND, children })
|
|
6360
6412
|
}
|
|
6361
6413
|
)
|
|
6362
6414
|
] });
|
|
@@ -6382,12 +6434,12 @@ function CommandInput({
|
|
|
6382
6434
|
className: "size-4 shrink-0 opacity-50",
|
|
6383
6435
|
"aria-hidden": "true",
|
|
6384
6436
|
children: [
|
|
6385
|
-
/* @__PURE__ */
|
|
6386
|
-
/* @__PURE__ */
|
|
6437
|
+
/* @__PURE__ */ jsx54("circle", { cx: "11", cy: "11", r: "8" }),
|
|
6438
|
+
/* @__PURE__ */ jsx54("path", { d: "m21 21-4.3-4.3" })
|
|
6387
6439
|
]
|
|
6388
6440
|
}
|
|
6389
6441
|
),
|
|
6390
|
-
/* @__PURE__ */
|
|
6442
|
+
/* @__PURE__ */ jsx54(
|
|
6391
6443
|
"input",
|
|
6392
6444
|
{
|
|
6393
6445
|
type: "text",
|
|
@@ -6402,7 +6454,7 @@ function CommandInput({
|
|
|
6402
6454
|
] });
|
|
6403
6455
|
}
|
|
6404
6456
|
function CommandList({ className, ...props }) {
|
|
6405
|
-
return /* @__PURE__ */
|
|
6457
|
+
return /* @__PURE__ */ jsx54(
|
|
6406
6458
|
"div",
|
|
6407
6459
|
{
|
|
6408
6460
|
role: "listbox",
|
|
@@ -6415,7 +6467,7 @@ function CommandList({ className, ...props }) {
|
|
|
6415
6467
|
function CommandEmpty({ className, children, ...props }) {
|
|
6416
6468
|
const { query, hasMatches } = useCommand();
|
|
6417
6469
|
if (query === "" || hasMatches) return null;
|
|
6418
|
-
return /* @__PURE__ */
|
|
6470
|
+
return /* @__PURE__ */ jsx54(
|
|
6419
6471
|
"div",
|
|
6420
6472
|
{
|
|
6421
6473
|
"data-slot": "command-empty",
|
|
@@ -6434,7 +6486,7 @@ function CommandGroup({ className, heading, children, ...props }) {
|
|
|
6434
6486
|
className: cn(COMMAND_GROUP, className),
|
|
6435
6487
|
...props,
|
|
6436
6488
|
children: [
|
|
6437
|
-
heading ? /* @__PURE__ */
|
|
6489
|
+
heading ? /* @__PURE__ */ jsx54("div", { "data-slot": "command-group-heading", children: heading }) : null,
|
|
6438
6490
|
children
|
|
6439
6491
|
]
|
|
6440
6492
|
}
|
|
@@ -6449,13 +6501,13 @@ function CommandItem({
|
|
|
6449
6501
|
...props
|
|
6450
6502
|
}) {
|
|
6451
6503
|
const { registerItem, unregisterItem, matches } = useCommand();
|
|
6452
|
-
const id =
|
|
6453
|
-
|
|
6504
|
+
const id = React64.useId();
|
|
6505
|
+
React64.useEffect(() => {
|
|
6454
6506
|
registerItem(id, value);
|
|
6455
6507
|
return () => unregisterItem(id);
|
|
6456
6508
|
}, [id, value, registerItem, unregisterItem]);
|
|
6457
6509
|
if (!matches(value)) return null;
|
|
6458
|
-
return /* @__PURE__ */
|
|
6510
|
+
return /* @__PURE__ */ jsx54(
|
|
6459
6511
|
"div",
|
|
6460
6512
|
{
|
|
6461
6513
|
role: "option",
|
|
@@ -6473,7 +6525,7 @@ function CommandItem({
|
|
|
6473
6525
|
);
|
|
6474
6526
|
}
|
|
6475
6527
|
function CommandSeparator({ className, ...props }) {
|
|
6476
|
-
return /* @__PURE__ */
|
|
6528
|
+
return /* @__PURE__ */ jsx54(
|
|
6477
6529
|
"div",
|
|
6478
6530
|
{
|
|
6479
6531
|
"data-slot": "command-separator",
|
|
@@ -6483,7 +6535,7 @@ function CommandSeparator({ className, ...props }) {
|
|
|
6483
6535
|
);
|
|
6484
6536
|
}
|
|
6485
6537
|
function CommandShortcut({ className, ...props }) {
|
|
6486
|
-
return /* @__PURE__ */
|
|
6538
|
+
return /* @__PURE__ */ jsx54(
|
|
6487
6539
|
"span",
|
|
6488
6540
|
{
|
|
6489
6541
|
"data-slot": "command-shortcut",
|
|
@@ -6494,7 +6546,7 @@ function CommandShortcut({ className, ...props }) {
|
|
|
6494
6546
|
}
|
|
6495
6547
|
|
|
6496
6548
|
// src/components/chart.tsx
|
|
6497
|
-
import * as
|
|
6549
|
+
import * as React65 from "react";
|
|
6498
6550
|
|
|
6499
6551
|
// src/generated/chart.ts
|
|
6500
6552
|
var CHART_CONTAINER = "flex aspect-video justify-center text-xs [&_.recharts-layer]:outline-hidden [&_.recharts-surface]:outline-hidden [&_svg]:outline-hidden";
|
|
@@ -6502,10 +6554,10 @@ var CHART_TOOLTIP = "border-border/50 bg-background grid min-w-[8rem] items-star
|
|
|
6502
6554
|
var CHART_LEGEND = "flex items-center justify-center gap-4";
|
|
6503
6555
|
|
|
6504
6556
|
// src/components/chart.tsx
|
|
6505
|
-
import { Fragment as Fragment7, jsx as
|
|
6506
|
-
var ChartContext =
|
|
6557
|
+
import { Fragment as Fragment7, jsx as jsx55, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
6558
|
+
var ChartContext = React65.createContext(null);
|
|
6507
6559
|
function useChart() {
|
|
6508
|
-
const context =
|
|
6560
|
+
const context = React65.useContext(ChartContext);
|
|
6509
6561
|
if (!context) {
|
|
6510
6562
|
throw new Error("useChart must be used within a <ChartContainer />");
|
|
6511
6563
|
}
|
|
@@ -6518,9 +6570,9 @@ function ChartContainer({
|
|
|
6518
6570
|
config,
|
|
6519
6571
|
...props
|
|
6520
6572
|
}) {
|
|
6521
|
-
const uniqueId =
|
|
6573
|
+
const uniqueId = React65.useId();
|
|
6522
6574
|
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
6523
|
-
return /* @__PURE__ */
|
|
6575
|
+
return /* @__PURE__ */ jsx55(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs25(
|
|
6524
6576
|
"div",
|
|
6525
6577
|
{
|
|
6526
6578
|
"data-slot": "chart",
|
|
@@ -6528,7 +6580,7 @@ function ChartContainer({
|
|
|
6528
6580
|
className: cn(CHART_CONTAINER, className),
|
|
6529
6581
|
...props,
|
|
6530
6582
|
children: [
|
|
6531
|
-
/* @__PURE__ */
|
|
6583
|
+
/* @__PURE__ */ jsx55(ChartStyle, { id: chartId, config }),
|
|
6532
6584
|
children
|
|
6533
6585
|
]
|
|
6534
6586
|
}
|
|
@@ -6539,7 +6591,7 @@ var ChartStyle = ({ id, config }) => {
|
|
|
6539
6591
|
if (!colorConfig.length) {
|
|
6540
6592
|
return null;
|
|
6541
6593
|
}
|
|
6542
|
-
return /* @__PURE__ */
|
|
6594
|
+
return /* @__PURE__ */ jsx55(
|
|
6543
6595
|
"style",
|
|
6544
6596
|
{
|
|
6545
6597
|
dangerouslySetInnerHTML: {
|
|
@@ -6550,7 +6602,7 @@ ${colorConfig.map(([key, itemConfig]) => ` --color-${key}: ${itemConfig.color};
|
|
|
6550
6602
|
}
|
|
6551
6603
|
);
|
|
6552
6604
|
};
|
|
6553
|
-
var ChartTooltip = ({ children }) => /* @__PURE__ */
|
|
6605
|
+
var ChartTooltip = ({ children }) => /* @__PURE__ */ jsx55(Fragment7, { children });
|
|
6554
6606
|
function ChartTooltipContent({
|
|
6555
6607
|
className,
|
|
6556
6608
|
items = [],
|
|
@@ -6569,15 +6621,15 @@ function ChartTooltipContent({
|
|
|
6569
6621
|
"data-slot": "chart-tooltip",
|
|
6570
6622
|
className: cn(CHART_TOOLTIP, className),
|
|
6571
6623
|
children: [
|
|
6572
|
-
!hideLabel && label ? /* @__PURE__ */
|
|
6573
|
-
/* @__PURE__ */
|
|
6624
|
+
!hideLabel && label ? /* @__PURE__ */ jsx55("div", { className: cn("font-medium", labelClassName), children: label }) : null,
|
|
6625
|
+
/* @__PURE__ */ jsx55("div", { className: "grid gap-1.5", children: items.map((item, index) => /* @__PURE__ */ jsxs25(
|
|
6574
6626
|
"div",
|
|
6575
6627
|
{
|
|
6576
6628
|
className: cn(
|
|
6577
6629
|
"[&>svg]:text-ink-soft flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 items-center"
|
|
6578
6630
|
),
|
|
6579
6631
|
children: [
|
|
6580
|
-
!hideIndicator && /* @__PURE__ */
|
|
6632
|
+
!hideIndicator && /* @__PURE__ */ jsx55(
|
|
6581
6633
|
"div",
|
|
6582
6634
|
{
|
|
6583
6635
|
className: "shrink-0 rounded-[2px] h-2.5 w-2.5",
|
|
@@ -6588,8 +6640,8 @@ function ChartTooltipContent({
|
|
|
6588
6640
|
}
|
|
6589
6641
|
),
|
|
6590
6642
|
/* @__PURE__ */ jsxs25("div", { className: "flex flex-1 justify-between leading-none items-center", children: [
|
|
6591
|
-
/* @__PURE__ */
|
|
6592
|
-
item.value !== void 0 && /* @__PURE__ */
|
|
6643
|
+
/* @__PURE__ */ jsx55("span", { className: "text-ink-soft", children: item.label }),
|
|
6644
|
+
item.value !== void 0 && /* @__PURE__ */ jsx55("span", { className: "text-ink font-mono font-medium tabular-nums", children: item.value })
|
|
6593
6645
|
] })
|
|
6594
6646
|
]
|
|
6595
6647
|
},
|
|
@@ -6599,7 +6651,7 @@ function ChartTooltipContent({
|
|
|
6599
6651
|
}
|
|
6600
6652
|
);
|
|
6601
6653
|
}
|
|
6602
|
-
var ChartLegend = ({ children }) => /* @__PURE__ */
|
|
6654
|
+
var ChartLegend = ({ children }) => /* @__PURE__ */ jsx55(Fragment7, { children });
|
|
6603
6655
|
function ChartLegendContent({
|
|
6604
6656
|
className,
|
|
6605
6657
|
hideIcon = false,
|
|
@@ -6613,7 +6665,7 @@ function ChartLegendContent({
|
|
|
6613
6665
|
if (!rows.length) {
|
|
6614
6666
|
return null;
|
|
6615
6667
|
}
|
|
6616
|
-
return /* @__PURE__ */
|
|
6668
|
+
return /* @__PURE__ */ jsx55(
|
|
6617
6669
|
"div",
|
|
6618
6670
|
{
|
|
6619
6671
|
"data-slot": "chart-legend",
|
|
@@ -6625,7 +6677,7 @@ function ChartLegendContent({
|
|
|
6625
6677
|
"[&>svg]:text-ink-soft flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"
|
|
6626
6678
|
),
|
|
6627
6679
|
children: [
|
|
6628
|
-
!hideIcon && /* @__PURE__ */
|
|
6680
|
+
!hideIcon && /* @__PURE__ */ jsx55(
|
|
6629
6681
|
"div",
|
|
6630
6682
|
{
|
|
6631
6683
|
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
@@ -6642,7 +6694,7 @@ function ChartLegendContent({
|
|
|
6642
6694
|
}
|
|
6643
6695
|
|
|
6644
6696
|
// src/components/calendar.tsx
|
|
6645
|
-
import * as
|
|
6697
|
+
import * as React66 from "react";
|
|
6646
6698
|
|
|
6647
6699
|
// src/generated/calendar.ts
|
|
6648
6700
|
var CALENDAR_ROOT = "bg-background p-3 w-fit";
|
|
@@ -6660,7 +6712,7 @@ var CALENDAR_DAY_SELECTED = "bg-primary text-on-primary";
|
|
|
6660
6712
|
var CALENDAR_DAY_TODAY = "bg-hover text-ink rounded-md";
|
|
6661
6713
|
|
|
6662
6714
|
// src/components/calendar.tsx
|
|
6663
|
-
import { jsx as
|
|
6715
|
+
import { jsx as jsx56, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
6664
6716
|
var MONTHS = [
|
|
6665
6717
|
"January",
|
|
6666
6718
|
"February",
|
|
@@ -6679,7 +6731,7 @@ var WEEKDAYS = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
|
|
|
6679
6731
|
var CHEVRON_LEFT = "m15 18-6-6 6-6";
|
|
6680
6732
|
var CHEVRON_RIGHT = "m9 18 6-6-6-6";
|
|
6681
6733
|
function Chevron({ d }) {
|
|
6682
|
-
return /* @__PURE__ */
|
|
6734
|
+
return /* @__PURE__ */ jsx56(
|
|
6683
6735
|
"svg",
|
|
6684
6736
|
{
|
|
6685
6737
|
className: "size-4",
|
|
@@ -6693,7 +6745,7 @@ function Chevron({ d }) {
|
|
|
6693
6745
|
strokeLinecap: "round",
|
|
6694
6746
|
strokeLinejoin: "round",
|
|
6695
6747
|
"aria-hidden": true,
|
|
6696
|
-
children: /* @__PURE__ */
|
|
6748
|
+
children: /* @__PURE__ */ jsx56("path", { d })
|
|
6697
6749
|
}
|
|
6698
6750
|
);
|
|
6699
6751
|
}
|
|
@@ -6715,7 +6767,7 @@ function Calendar({
|
|
|
6715
6767
|
today = /* @__PURE__ */ new Date(),
|
|
6716
6768
|
className
|
|
6717
6769
|
}) {
|
|
6718
|
-
const [internal, setInternal] =
|
|
6770
|
+
const [internal, setInternal] = React66.useState(
|
|
6719
6771
|
() => startOfMonth(defaultMonth ?? /* @__PURE__ */ new Date())
|
|
6720
6772
|
);
|
|
6721
6773
|
const view = month ? startOfMonth(month) : internal;
|
|
@@ -6737,7 +6789,8 @@ function Calendar({
|
|
|
6737
6789
|
for (let i = 0; i < cells.length; i += 7) weeks.push(cells.slice(i, i + 7));
|
|
6738
6790
|
const navClass = buttonVariants({
|
|
6739
6791
|
variant: "ghost",
|
|
6740
|
-
size: "
|
|
6792
|
+
size: "md",
|
|
6793
|
+
icon: true,
|
|
6741
6794
|
className: CALENDAR_NAV_BUTTON
|
|
6742
6795
|
});
|
|
6743
6796
|
return /* @__PURE__ */ jsxs26(
|
|
@@ -6748,30 +6801,30 @@ function Calendar({
|
|
|
6748
6801
|
className: cn(CALENDAR_ROOT, className),
|
|
6749
6802
|
children: [
|
|
6750
6803
|
/* @__PURE__ */ jsxs26("div", { className: CALENDAR_NAV, children: [
|
|
6751
|
-
/* @__PURE__ */
|
|
6804
|
+
/* @__PURE__ */ jsx56(
|
|
6752
6805
|
"button",
|
|
6753
6806
|
{
|
|
6754
6807
|
type: "button",
|
|
6755
6808
|
className: navClass,
|
|
6756
6809
|
"aria-label": "Previous month",
|
|
6757
6810
|
onClick: () => go(-1),
|
|
6758
|
-
children: /* @__PURE__ */
|
|
6811
|
+
children: /* @__PURE__ */ jsx56(Chevron, { d: CHEVRON_LEFT })
|
|
6759
6812
|
}
|
|
6760
6813
|
),
|
|
6761
|
-
/* @__PURE__ */
|
|
6762
|
-
/* @__PURE__ */
|
|
6814
|
+
/* @__PURE__ */ jsx56("div", { className: CALENDAR_CAPTION, children: caption }),
|
|
6815
|
+
/* @__PURE__ */ jsx56(
|
|
6763
6816
|
"button",
|
|
6764
6817
|
{
|
|
6765
6818
|
type: "button",
|
|
6766
6819
|
className: navClass,
|
|
6767
6820
|
"aria-label": "Next month",
|
|
6768
6821
|
onClick: () => go(1),
|
|
6769
|
-
children: /* @__PURE__ */
|
|
6822
|
+
children: /* @__PURE__ */ jsx56(Chevron, { d: CHEVRON_RIGHT })
|
|
6770
6823
|
}
|
|
6771
6824
|
)
|
|
6772
6825
|
] }),
|
|
6773
6826
|
/* @__PURE__ */ jsxs26("table", { className: CALENDAR_GRID, role: "grid", children: [
|
|
6774
|
-
/* @__PURE__ */
|
|
6827
|
+
/* @__PURE__ */ jsx56("thead", { children: /* @__PURE__ */ jsx56("tr", { className: CALENDAR_WEEKDAY_ROW, children: WEEKDAYS.map((wd) => /* @__PURE__ */ jsx56(
|
|
6775
6828
|
"th",
|
|
6776
6829
|
{
|
|
6777
6830
|
scope: "col",
|
|
@@ -6780,9 +6833,9 @@ function Calendar({
|
|
|
6780
6833
|
},
|
|
6781
6834
|
wd
|
|
6782
6835
|
)) }) }),
|
|
6783
|
-
/* @__PURE__ */
|
|
6836
|
+
/* @__PURE__ */ jsx56("tbody", { children: weeks.map((week, wi) => /* @__PURE__ */ jsx56("tr", { className: CALENDAR_WEEK, children: week.map((cell, ci) => {
|
|
6784
6837
|
if (cell === null) {
|
|
6785
|
-
return /* @__PURE__ */
|
|
6838
|
+
return /* @__PURE__ */ jsx56(
|
|
6786
6839
|
"td",
|
|
6787
6840
|
{
|
|
6788
6841
|
className: CALENDAR_DAY_EMPTY
|
|
@@ -6793,13 +6846,13 @@ function Calendar({
|
|
|
6793
6846
|
const date = new Date(year, monthIndex, cell);
|
|
6794
6847
|
const isSelected = sameDay(selected, date);
|
|
6795
6848
|
const isToday = sameDay(today, date);
|
|
6796
|
-
return /* @__PURE__ */
|
|
6849
|
+
return /* @__PURE__ */ jsx56(
|
|
6797
6850
|
"td",
|
|
6798
6851
|
{
|
|
6799
6852
|
role: "gridcell",
|
|
6800
6853
|
"aria-selected": isSelected,
|
|
6801
6854
|
className: CALENDAR_DAY_CELL,
|
|
6802
|
-
children: /* @__PURE__ */
|
|
6855
|
+
children: /* @__PURE__ */ jsx56(
|
|
6803
6856
|
"button",
|
|
6804
6857
|
{
|
|
6805
6858
|
type: "button",
|
|
@@ -6810,7 +6863,8 @@ function Calendar({
|
|
|
6810
6863
|
className: cn(
|
|
6811
6864
|
buttonVariants({
|
|
6812
6865
|
variant: "ghost",
|
|
6813
|
-
size: "
|
|
6866
|
+
size: "md",
|
|
6867
|
+
icon: true,
|
|
6814
6868
|
className: CALENDAR_DAY
|
|
6815
6869
|
}),
|
|
6816
6870
|
isSelected ? CALENDAR_DAY_SELECTED : isToday ? CALENDAR_DAY_TODAY : void 0
|
|
@@ -6829,7 +6883,7 @@ function Calendar({
|
|
|
6829
6883
|
}
|
|
6830
6884
|
|
|
6831
6885
|
// src/components/sonner.tsx
|
|
6832
|
-
import * as
|
|
6886
|
+
import * as React67 from "react";
|
|
6833
6887
|
|
|
6834
6888
|
// src/generated/sonner.ts
|
|
6835
6889
|
var TOAST_BASE = "pointer-events-auto flex w-full items-start gap-3 rounded-md border p-4 text-sm shadow-lg";
|
|
@@ -6854,7 +6908,7 @@ var TOAST_CONTENT = "flex-1 space-y-1";
|
|
|
6854
6908
|
var TOAST_TITLE = "font-medium";
|
|
6855
6909
|
|
|
6856
6910
|
// src/components/sonner.tsx
|
|
6857
|
-
import { jsx as
|
|
6911
|
+
import { jsx as jsx57, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
6858
6912
|
var DEFAULT_DURATION = 4e3;
|
|
6859
6913
|
var SWIPE_THRESHOLD = 45;
|
|
6860
6914
|
var SWIPE_VELOCITY = 0.11;
|
|
@@ -6919,17 +6973,17 @@ function ToastItem({
|
|
|
6919
6973
|
reportHeight,
|
|
6920
6974
|
removeHeight
|
|
6921
6975
|
}) {
|
|
6922
|
-
const ref =
|
|
6923
|
-
const [height, setHeight] =
|
|
6924
|
-
const remainingRef =
|
|
6925
|
-
const startedRef =
|
|
6926
|
-
const flingRef =
|
|
6976
|
+
const ref = React67.useRef(null);
|
|
6977
|
+
const [height, setHeight] = React67.useState(0);
|
|
6978
|
+
const remainingRef = React67.useRef(t.duration);
|
|
6979
|
+
const startedRef = React67.useRef(0);
|
|
6980
|
+
const flingRef = React67.useRef(
|
|
6927
6981
|
void 0
|
|
6928
6982
|
);
|
|
6929
|
-
const dragRef =
|
|
6983
|
+
const dragRef = React67.useRef(
|
|
6930
6984
|
null
|
|
6931
6985
|
);
|
|
6932
|
-
|
|
6986
|
+
React67.useLayoutEffect(() => {
|
|
6933
6987
|
const el = ref.current;
|
|
6934
6988
|
if (!el) return;
|
|
6935
6989
|
el.style.height = "auto";
|
|
@@ -6940,12 +6994,12 @@ function ToastItem({
|
|
|
6940
6994
|
reportHeight(t.id, h);
|
|
6941
6995
|
}
|
|
6942
6996
|
}, [t.id, t.message, t.description, reportHeight]);
|
|
6943
|
-
|
|
6944
|
-
const mountedClosing =
|
|
6945
|
-
|
|
6997
|
+
React67.useEffect(() => () => removeHeight(t.id), [t.id, removeHeight]);
|
|
6998
|
+
const mountedClosing = React67.useRef(t.state === "closing");
|
|
6999
|
+
React67.useEffect(() => {
|
|
6946
7000
|
if (mountedClosing.current) store.remove(t.id);
|
|
6947
7001
|
}, [t.id]);
|
|
6948
|
-
|
|
7002
|
+
React67.useEffect(() => {
|
|
6949
7003
|
if (t.duration === Infinity || t.state === "closing" || paused) return;
|
|
6950
7004
|
startedRef.current = Date.now();
|
|
6951
7005
|
const id = setTimeout(() => store.dismiss(t.id), remainingRef.current);
|
|
@@ -6957,7 +7011,7 @@ function ToastItem({
|
|
|
6957
7011
|
);
|
|
6958
7012
|
};
|
|
6959
7013
|
}, [paused, t.id, t.duration, t.state]);
|
|
6960
|
-
|
|
7014
|
+
React67.useEffect(
|
|
6961
7015
|
() => () => {
|
|
6962
7016
|
if (flingRef.current) clearTimeout(flingRef.current);
|
|
6963
7017
|
},
|
|
@@ -7045,10 +7099,10 @@ function ToastItem({
|
|
|
7045
7099
|
),
|
|
7046
7100
|
children: [
|
|
7047
7101
|
/* @__PURE__ */ jsxs27("div", { className: TOAST_CONTENT, children: [
|
|
7048
|
-
/* @__PURE__ */
|
|
7049
|
-
t.description ? /* @__PURE__ */
|
|
7102
|
+
/* @__PURE__ */ jsx57("div", { className: TOAST_TITLE, children: t.message }),
|
|
7103
|
+
t.description ? /* @__PURE__ */ jsx57("div", { className: "text-ink-soft text-sm", children: t.description }) : null
|
|
7050
7104
|
] }),
|
|
7051
|
-
/* @__PURE__ */
|
|
7105
|
+
/* @__PURE__ */ jsx57(
|
|
7052
7106
|
"button",
|
|
7053
7107
|
{
|
|
7054
7108
|
type: "button",
|
|
@@ -7056,7 +7110,7 @@ function ToastItem({
|
|
|
7056
7110
|
"data-slot": "toast-close",
|
|
7057
7111
|
onClick: () => store.dismiss(t.id),
|
|
7058
7112
|
className: TOAST_CLOSE,
|
|
7059
|
-
children: /* @__PURE__ */
|
|
7113
|
+
children: /* @__PURE__ */ jsx57(
|
|
7060
7114
|
"svg",
|
|
7061
7115
|
{
|
|
7062
7116
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -7069,7 +7123,7 @@ function ToastItem({
|
|
|
7069
7123
|
strokeLinecap: "round",
|
|
7070
7124
|
strokeLinejoin: "round",
|
|
7071
7125
|
"aria-hidden": "true",
|
|
7072
|
-
children: /* @__PURE__ */
|
|
7126
|
+
children: /* @__PURE__ */ jsx57("path", { d: "M18 6 6 18M6 6l12 12" })
|
|
7073
7127
|
}
|
|
7074
7128
|
)
|
|
7075
7129
|
}
|
|
@@ -7083,17 +7137,17 @@ function Toaster({
|
|
|
7083
7137
|
className,
|
|
7084
7138
|
...props
|
|
7085
7139
|
}) {
|
|
7086
|
-
const [toasts, setToasts] =
|
|
7087
|
-
const [heights, setHeights] =
|
|
7088
|
-
const [paused, setPaused] =
|
|
7089
|
-
|
|
7140
|
+
const [toasts, setToasts] = React67.useState([]);
|
|
7141
|
+
const [heights, setHeights] = React67.useState(/* @__PURE__ */ new Map());
|
|
7142
|
+
const [paused, setPaused] = React67.useState(false);
|
|
7143
|
+
React67.useEffect(() => store.subscribe(setToasts), []);
|
|
7090
7144
|
const onEnter = () => setPaused(true);
|
|
7091
7145
|
const onLeave = (e) => {
|
|
7092
7146
|
if (!e.currentTarget.contains(e.relatedTarget)) {
|
|
7093
7147
|
setPaused(false);
|
|
7094
7148
|
}
|
|
7095
7149
|
};
|
|
7096
|
-
const reportHeight =
|
|
7150
|
+
const reportHeight = React67.useCallback((id, h) => {
|
|
7097
7151
|
setHeights((prev) => {
|
|
7098
7152
|
if (prev.get(id) === h) return prev;
|
|
7099
7153
|
const next = new Map(prev);
|
|
@@ -7101,7 +7155,7 @@ function Toaster({
|
|
|
7101
7155
|
return next;
|
|
7102
7156
|
});
|
|
7103
7157
|
}, []);
|
|
7104
|
-
const removeHeight =
|
|
7158
|
+
const removeHeight = React67.useCallback((id) => {
|
|
7105
7159
|
setHeights((prev) => {
|
|
7106
7160
|
if (!prev.has(id)) return prev;
|
|
7107
7161
|
const next = new Map(prev);
|
|
@@ -7119,7 +7173,7 @@ function Toaster({
|
|
|
7119
7173
|
sum += heights.get(t.id) ?? 0;
|
|
7120
7174
|
return o;
|
|
7121
7175
|
});
|
|
7122
|
-
return /* @__PURE__ */
|
|
7176
|
+
return /* @__PURE__ */ jsx57(
|
|
7123
7177
|
"ol",
|
|
7124
7178
|
{
|
|
7125
7179
|
"data-slot": "toaster",
|
|
@@ -7140,7 +7194,7 @@ function Toaster({
|
|
|
7140
7194
|
onPointerOut: onLeave,
|
|
7141
7195
|
onFocus: onEnter,
|
|
7142
7196
|
onBlur: onLeave,
|
|
7143
|
-
children: ordered.map((t, i) => /* @__PURE__ */
|
|
7197
|
+
children: ordered.map((t, i) => /* @__PURE__ */ jsx57(
|
|
7144
7198
|
ToastItem,
|
|
7145
7199
|
{
|
|
7146
7200
|
toast: t,
|
|
@@ -7158,7 +7212,7 @@ function Toaster({
|
|
|
7158
7212
|
}
|
|
7159
7213
|
|
|
7160
7214
|
// src/components/form.tsx
|
|
7161
|
-
import * as
|
|
7215
|
+
import * as React68 from "react";
|
|
7162
7216
|
|
|
7163
7217
|
// src/generated/form.ts
|
|
7164
7218
|
var FORM_ITEM = "grid gap-2";
|
|
@@ -7166,21 +7220,21 @@ var FORM_DESCRIPTION = "text-ink-soft text-sm";
|
|
|
7166
7220
|
var FORM_MESSAGE = "text-accent-error text-sm";
|
|
7167
7221
|
|
|
7168
7222
|
// src/components/form.tsx
|
|
7169
|
-
import { jsx as
|
|
7170
|
-
var FormItemContext =
|
|
7223
|
+
import { jsx as jsx58 } from "react/jsx-runtime";
|
|
7224
|
+
var FormItemContext = React68.createContext(null);
|
|
7171
7225
|
function useFormItem() {
|
|
7172
|
-
const ctx =
|
|
7226
|
+
const ctx = React68.useContext(FormItemContext);
|
|
7173
7227
|
if (!ctx) {
|
|
7174
7228
|
throw new Error("Form parts must be used within <FormItem>");
|
|
7175
7229
|
}
|
|
7176
7230
|
return ctx;
|
|
7177
7231
|
}
|
|
7178
7232
|
function Form({ ...props }) {
|
|
7179
|
-
return /* @__PURE__ */
|
|
7233
|
+
return /* @__PURE__ */ jsx58("form", { "data-slot": "form", ...props });
|
|
7180
7234
|
}
|
|
7181
7235
|
function FormItem({ className, ...props }) {
|
|
7182
|
-
const id =
|
|
7183
|
-
const value =
|
|
7236
|
+
const id = React68.useId();
|
|
7237
|
+
const value = React68.useMemo(
|
|
7184
7238
|
() => ({
|
|
7185
7239
|
id,
|
|
7186
7240
|
formItemId: `${id}-form-item`,
|
|
@@ -7189,7 +7243,7 @@ function FormItem({ className, ...props }) {
|
|
|
7189
7243
|
}),
|
|
7190
7244
|
[id]
|
|
7191
7245
|
);
|
|
7192
|
-
return /* @__PURE__ */
|
|
7246
|
+
return /* @__PURE__ */ jsx58(FormItemContext.Provider, { value, children: /* @__PURE__ */ jsx58("div", { "data-slot": "form-item", className: cn(FORM_ITEM, className), ...props }) });
|
|
7193
7247
|
}
|
|
7194
7248
|
function FormLabel({
|
|
7195
7249
|
className,
|
|
@@ -7197,7 +7251,7 @@ function FormLabel({
|
|
|
7197
7251
|
...props
|
|
7198
7252
|
}) {
|
|
7199
7253
|
const { formItemId } = useFormItem();
|
|
7200
|
-
return /* @__PURE__ */
|
|
7254
|
+
return /* @__PURE__ */ jsx58(
|
|
7201
7255
|
Label,
|
|
7202
7256
|
{
|
|
7203
7257
|
"data-slot": "form-label",
|
|
@@ -7213,7 +7267,7 @@ function FormControl({
|
|
|
7213
7267
|
...props
|
|
7214
7268
|
}) {
|
|
7215
7269
|
const { formItemId, formDescriptionId, formMessageId } = useFormItem();
|
|
7216
|
-
return /* @__PURE__ */
|
|
7270
|
+
return /* @__PURE__ */ jsx58(
|
|
7217
7271
|
Slot,
|
|
7218
7272
|
{
|
|
7219
7273
|
"data-slot": "form-control",
|
|
@@ -7226,7 +7280,7 @@ function FormControl({
|
|
|
7226
7280
|
}
|
|
7227
7281
|
function FormDescription({ className, ...props }) {
|
|
7228
7282
|
const { formDescriptionId } = useFormItem();
|
|
7229
|
-
return /* @__PURE__ */
|
|
7283
|
+
return /* @__PURE__ */ jsx58(
|
|
7230
7284
|
"p",
|
|
7231
7285
|
{
|
|
7232
7286
|
"data-slot": "form-description",
|
|
@@ -7241,7 +7295,7 @@ function FormMessage({ className, children, ...props }) {
|
|
|
7241
7295
|
if (!children) {
|
|
7242
7296
|
return null;
|
|
7243
7297
|
}
|
|
7244
|
-
return /* @__PURE__ */
|
|
7298
|
+
return /* @__PURE__ */ jsx58(
|
|
7245
7299
|
"p",
|
|
7246
7300
|
{
|
|
7247
7301
|
"data-slot": "form-message",
|
|
@@ -7254,7 +7308,7 @@ function FormMessage({ className, children, ...props }) {
|
|
|
7254
7308
|
}
|
|
7255
7309
|
|
|
7256
7310
|
// src/components/resizable.tsx
|
|
7257
|
-
import * as
|
|
7311
|
+
import * as React69 from "react";
|
|
7258
7312
|
|
|
7259
7313
|
// src/generated/resizable.ts
|
|
7260
7314
|
var RESIZABLE_GROUP = "flex h-full w-full data-[panel-group-direction=vertical]:flex-col";
|
|
@@ -7263,10 +7317,10 @@ var RESIZABLE_HANDLE = "bg-border focus-visible:ring-ring relative flex w-px ite
|
|
|
7263
7317
|
var RESIZABLE_HANDLE_GRIP = "bg-border z-10 flex h-4 w-3 items-center justify-center rounded-xs border";
|
|
7264
7318
|
|
|
7265
7319
|
// src/components/resizable.tsx
|
|
7266
|
-
import { jsx as
|
|
7267
|
-
var ResizableContext =
|
|
7320
|
+
import { jsx as jsx59, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
7321
|
+
var ResizableContext = React69.createContext(null);
|
|
7268
7322
|
function useResizable() {
|
|
7269
|
-
const ctx =
|
|
7323
|
+
const ctx = React69.useContext(ResizableContext);
|
|
7270
7324
|
if (!ctx)
|
|
7271
7325
|
throw new Error("Resizable parts must be used within a ResizablePanelGroup");
|
|
7272
7326
|
return ctx;
|
|
@@ -7289,9 +7343,9 @@ function ResizablePanelGroup({
|
|
|
7289
7343
|
children,
|
|
7290
7344
|
...props
|
|
7291
7345
|
}) {
|
|
7292
|
-
const [sizes, setSizes] =
|
|
7293
|
-
const groupRef =
|
|
7294
|
-
const register =
|
|
7346
|
+
const [sizes, setSizes] = React69.useState([]);
|
|
7347
|
+
const groupRef = React69.useRef(null);
|
|
7348
|
+
const register = React69.useCallback((index, defaultSize) => {
|
|
7295
7349
|
setSizes((prev) => {
|
|
7296
7350
|
if (prev[index] !== void 0) return prev;
|
|
7297
7351
|
const next = prev.slice();
|
|
@@ -7300,14 +7354,14 @@ function ResizablePanelGroup({
|
|
|
7300
7354
|
return next;
|
|
7301
7355
|
});
|
|
7302
7356
|
}, []);
|
|
7303
|
-
|
|
7357
|
+
React69.useEffect(() => {
|
|
7304
7358
|
if (sizes.length) onLayout?.(sizes);
|
|
7305
7359
|
}, [sizes, onLayout]);
|
|
7306
|
-
const value =
|
|
7360
|
+
const value = React69.useMemo(
|
|
7307
7361
|
() => ({ sizes, setSizes, register, direction, keyboardStep, groupRef }),
|
|
7308
7362
|
[sizes, register, direction, keyboardStep]
|
|
7309
7363
|
);
|
|
7310
|
-
return /* @__PURE__ */
|
|
7364
|
+
return /* @__PURE__ */ jsx59(ResizableContext.Provider, { value, children: /* @__PURE__ */ jsx59(
|
|
7311
7365
|
"div",
|
|
7312
7366
|
{
|
|
7313
7367
|
ref: groupRef,
|
|
@@ -7328,11 +7382,11 @@ function ResizablePanel({
|
|
|
7328
7382
|
...props
|
|
7329
7383
|
}) {
|
|
7330
7384
|
const { sizes, register } = useResizable();
|
|
7331
|
-
|
|
7385
|
+
React69.useEffect(() => {
|
|
7332
7386
|
register(index, defaultSize);
|
|
7333
7387
|
}, [register, index, defaultSize]);
|
|
7334
7388
|
const basis = sizes[index] ?? defaultSize;
|
|
7335
|
-
return /* @__PURE__ */
|
|
7389
|
+
return /* @__PURE__ */ jsx59(
|
|
7336
7390
|
"div",
|
|
7337
7391
|
{
|
|
7338
7392
|
"data-slot": "resizable-panel",
|
|
@@ -7351,12 +7405,12 @@ function ResizableHandle({
|
|
|
7351
7405
|
...props
|
|
7352
7406
|
}) {
|
|
7353
7407
|
const { setSizes, direction, keyboardStep, groupRef } = useResizable();
|
|
7354
|
-
const draggingRef =
|
|
7355
|
-
const resize =
|
|
7408
|
+
const draggingRef = React69.useRef(false);
|
|
7409
|
+
const resize = React69.useCallback(
|
|
7356
7410
|
(delta) => setSizes((prev) => redistribute(prev, index, delta)),
|
|
7357
7411
|
[setSizes, index]
|
|
7358
7412
|
);
|
|
7359
|
-
const onPointerMove =
|
|
7413
|
+
const onPointerMove = React69.useCallback(
|
|
7360
7414
|
(event) => {
|
|
7361
7415
|
if (!draggingRef.current) return;
|
|
7362
7416
|
const rect = groupRef.current?.getBoundingClientRect();
|
|
@@ -7368,7 +7422,7 @@ function ResizableHandle({
|
|
|
7368
7422
|
},
|
|
7369
7423
|
[direction, resize, groupRef]
|
|
7370
7424
|
);
|
|
7371
|
-
const onPointerUp =
|
|
7425
|
+
const onPointerUp = React69.useCallback(() => {
|
|
7372
7426
|
draggingRef.current = false;
|
|
7373
7427
|
window.removeEventListener("pointermove", onPointerMove);
|
|
7374
7428
|
window.removeEventListener("pointerup", onPointerUp);
|
|
@@ -7379,7 +7433,7 @@ function ResizableHandle({
|
|
|
7379
7433
|
window.addEventListener("pointermove", onPointerMove);
|
|
7380
7434
|
window.addEventListener("pointerup", onPointerUp);
|
|
7381
7435
|
};
|
|
7382
|
-
|
|
7436
|
+
React69.useEffect(() => () => onPointerUp(), [onPointerUp]);
|
|
7383
7437
|
const onKeyDown = (event) => {
|
|
7384
7438
|
let delta;
|
|
7385
7439
|
switch (event.key) {
|
|
@@ -7412,7 +7466,7 @@ function ResizableHandle({
|
|
|
7412
7466
|
onKeyDown,
|
|
7413
7467
|
...props,
|
|
7414
7468
|
children: [
|
|
7415
|
-
withHandle && /* @__PURE__ */
|
|
7469
|
+
withHandle && /* @__PURE__ */ jsx59("div", { className: RESIZABLE_HANDLE_GRIP, children: /* @__PURE__ */ jsxs28(
|
|
7416
7470
|
"svg",
|
|
7417
7471
|
{
|
|
7418
7472
|
className: "size-2.5",
|
|
@@ -7427,12 +7481,12 @@ function ResizableHandle({
|
|
|
7427
7481
|
strokeLinejoin: "round",
|
|
7428
7482
|
"aria-hidden": "true",
|
|
7429
7483
|
children: [
|
|
7430
|
-
/* @__PURE__ */
|
|
7431
|
-
/* @__PURE__ */
|
|
7432
|
-
/* @__PURE__ */
|
|
7433
|
-
/* @__PURE__ */
|
|
7434
|
-
/* @__PURE__ */
|
|
7435
|
-
/* @__PURE__ */
|
|
7484
|
+
/* @__PURE__ */ jsx59("circle", { cx: "9", cy: "12", r: "1" }),
|
|
7485
|
+
/* @__PURE__ */ jsx59("circle", { cx: "9", cy: "5", r: "1" }),
|
|
7486
|
+
/* @__PURE__ */ jsx59("circle", { cx: "9", cy: "19", r: "1" }),
|
|
7487
|
+
/* @__PURE__ */ jsx59("circle", { cx: "15", cy: "12", r: "1" }),
|
|
7488
|
+
/* @__PURE__ */ jsx59("circle", { cx: "15", cy: "5", r: "1" }),
|
|
7489
|
+
/* @__PURE__ */ jsx59("circle", { cx: "15", cy: "19", r: "1" })
|
|
7436
7490
|
]
|
|
7437
7491
|
}
|
|
7438
7492
|
) }),
|
|
@@ -7441,6 +7495,210 @@ function ResizableHandle({
|
|
|
7441
7495
|
}
|
|
7442
7496
|
);
|
|
7443
7497
|
}
|
|
7498
|
+
|
|
7499
|
+
// src/components/terminal.tsx
|
|
7500
|
+
import * as React70 from "react";
|
|
7501
|
+
|
|
7502
|
+
// src/generated/terminal.ts
|
|
7503
|
+
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]";
|
|
7504
|
+
var terminalAreaClasses = {
|
|
7505
|
+
"ticker": "lg:col-span-3 lg:row-start-1",
|
|
7506
|
+
"chart": "lg:col-start-1 lg:row-start-2",
|
|
7507
|
+
"book": "lg:col-start-2 lg:row-start-2",
|
|
7508
|
+
"form": "lg:col-start-3 lg:row-start-2",
|
|
7509
|
+
"orders": "lg:col-span-3 lg:row-start-3"
|
|
7510
|
+
};
|
|
7511
|
+
var TERMINAL_PANE = "flex min-h-0 min-w-0 flex-col overflow-hidden bg-card";
|
|
7512
|
+
var TERMINAL_PANE_HEADER = "flex h-9 shrink-0 items-center gap-2 border-b border-border px-3 text-xs font-medium text-ink-mid";
|
|
7513
|
+
var TERMINAL_PANE_BODY = "flex min-h-0 flex-1 flex-col overflow-auto";
|
|
7514
|
+
var TERMINAL_CHART = "relative min-h-[18rem] flex-1 overflow-hidden";
|
|
7515
|
+
var TERMINAL_TICKER = "flex min-w-0 items-center gap-6 overflow-x-auto bg-card px-4 py-2 whitespace-nowrap";
|
|
7516
|
+
var TERMINAL_TICKER_STAT = "flex shrink-0 flex-col gap-0.5";
|
|
7517
|
+
var TERMINAL_TICKER_LABEL = "text-[11px] uppercase tracking-wide text-ink-soft";
|
|
7518
|
+
var TERMINAL_TICKER_VALUE = "font-mono text-sm tabular-nums text-ink";
|
|
7519
|
+
var bookSideClasses = {
|
|
7520
|
+
"bid": "text-positive",
|
|
7521
|
+
"ask": "text-accent-error"
|
|
7522
|
+
};
|
|
7523
|
+
var bookDepthClasses = {
|
|
7524
|
+
"bid": "bg-positive/15",
|
|
7525
|
+
"ask": "bg-accent-error/15"
|
|
7526
|
+
};
|
|
7527
|
+
var ORDER_BOOK = "flex min-h-0 flex-1 flex-col font-mono text-xs tabular-nums";
|
|
7528
|
+
var ORDER_BOOK_HEAD = "grid shrink-0 grid-cols-3 gap-2 px-3 py-1.5 text-right text-[11px] text-ink-soft [&>*:first-child]:text-left";
|
|
7529
|
+
var ORDER_BOOK_ROW = "relative isolate grid cursor-pointer grid-cols-3 gap-2 px-3 py-0.5 text-right leading-5 hover:bg-hover";
|
|
7530
|
+
var ORDER_BOOK_PRICE = "text-left";
|
|
7531
|
+
var ORDER_BOOK_DEPTH = "pointer-events-none absolute inset-y-0 right-0 -z-10";
|
|
7532
|
+
var ORDER_BOOK_SPREAD = "flex shrink-0 items-center justify-between gap-2 border-y border-border bg-muted/50 px-3 py-1 text-ink-mid";
|
|
7533
|
+
var TRADES_TAPE_ROW = "grid grid-cols-3 gap-2 px-3 py-0.5 text-right font-mono text-xs leading-5 tabular-nums hover:bg-hover";
|
|
7534
|
+
var ORDER_FORM = "flex flex-col gap-3 p-3 text-sm";
|
|
7535
|
+
var ORDER_FORM_ROW = "flex items-center justify-between gap-2 text-xs";
|
|
7536
|
+
var ORDER_FORM_LABEL = "text-ink-soft";
|
|
7537
|
+
var ORDER_FORM_VALUE = "font-mono tabular-nums text-ink";
|
|
7538
|
+
var ORDER_FORM_SUBMIT_BASE = "inline-flex h-10 w-full shrink-0 cursor-pointer items-center justify-center rounded-[var(--control-radius)] text-sm font-semibold transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50";
|
|
7539
|
+
var orderSideClasses = {
|
|
7540
|
+
"buy": "bg-positive text-on-positive hover:bg-positive/90",
|
|
7541
|
+
"sell": "bg-accent-error text-on-accent-error hover:bg-accent-error/90"
|
|
7542
|
+
};
|
|
7543
|
+
var OPEN_ORDERS_EMPTY = "flex flex-1 items-center justify-center p-6 text-sm text-ink-soft";
|
|
7544
|
+
|
|
7545
|
+
// src/components/terminal.tsx
|
|
7546
|
+
import { jsx as jsx60, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
7547
|
+
function Terminal({ className, ...props }) {
|
|
7548
|
+
return /* @__PURE__ */ jsx60("div", { "data-slot": "terminal", className: cn(TERMINAL_ROOT, className), ...props });
|
|
7549
|
+
}
|
|
7550
|
+
function TerminalPane({ area, className, ...props }) {
|
|
7551
|
+
return /* @__PURE__ */ jsx60(
|
|
7552
|
+
"section",
|
|
7553
|
+
{
|
|
7554
|
+
"data-slot": "terminal-pane",
|
|
7555
|
+
"data-area": area,
|
|
7556
|
+
className: cn(TERMINAL_PANE, terminalAreaClasses[area], className),
|
|
7557
|
+
...props
|
|
7558
|
+
}
|
|
7559
|
+
);
|
|
7560
|
+
}
|
|
7561
|
+
function TerminalPaneHeader({ className, ...props }) {
|
|
7562
|
+
return /* @__PURE__ */ jsx60(
|
|
7563
|
+
"header",
|
|
7564
|
+
{
|
|
7565
|
+
"data-slot": "terminal-pane-header",
|
|
7566
|
+
className: cn(TERMINAL_PANE_HEADER, className),
|
|
7567
|
+
...props
|
|
7568
|
+
}
|
|
7569
|
+
);
|
|
7570
|
+
}
|
|
7571
|
+
function TerminalPaneBody({ className, ...props }) {
|
|
7572
|
+
return /* @__PURE__ */ jsx60("div", { "data-slot": "terminal-pane-body", className: cn(TERMINAL_PANE_BODY, className), ...props });
|
|
7573
|
+
}
|
|
7574
|
+
var TerminalChart = React70.forwardRef(function TerminalChart2({ className, ...props }, ref) {
|
|
7575
|
+
return /* @__PURE__ */ jsx60(
|
|
7576
|
+
"div",
|
|
7577
|
+
{
|
|
7578
|
+
ref,
|
|
7579
|
+
"data-slot": "terminal-chart",
|
|
7580
|
+
className: cn(TERMINAL_CHART, className),
|
|
7581
|
+
...props
|
|
7582
|
+
}
|
|
7583
|
+
);
|
|
7584
|
+
});
|
|
7585
|
+
function TerminalTicker({ className, ...props }) {
|
|
7586
|
+
return /* @__PURE__ */ jsx60(
|
|
7587
|
+
"div",
|
|
7588
|
+
{
|
|
7589
|
+
"data-slot": "terminal-ticker",
|
|
7590
|
+
"data-area": "ticker",
|
|
7591
|
+
className: cn(TERMINAL_TICKER, terminalAreaClasses.ticker, className),
|
|
7592
|
+
...props
|
|
7593
|
+
}
|
|
7594
|
+
);
|
|
7595
|
+
}
|
|
7596
|
+
function TickerStat({ label, value, className, ...props }) {
|
|
7597
|
+
return /* @__PURE__ */ jsxs29("div", { "data-slot": "ticker-stat", className: TERMINAL_TICKER_STAT, ...props, children: [
|
|
7598
|
+
/* @__PURE__ */ jsx60("span", { className: TERMINAL_TICKER_LABEL, children: label }),
|
|
7599
|
+
/* @__PURE__ */ jsx60("span", { className: cn(TERMINAL_TICKER_VALUE, className), children: value })
|
|
7600
|
+
] });
|
|
7601
|
+
}
|
|
7602
|
+
function OrderBook({ className, ...props }) {
|
|
7603
|
+
return /* @__PURE__ */ jsx60("div", { "data-slot": "order-book", className: cn(ORDER_BOOK, className), ...props });
|
|
7604
|
+
}
|
|
7605
|
+
function OrderBookHead({ price, size, total, className, ...props }) {
|
|
7606
|
+
return /* @__PURE__ */ jsxs29("div", { "data-slot": "order-book-head", className: cn(ORDER_BOOK_HEAD, className), ...props, children: [
|
|
7607
|
+
/* @__PURE__ */ jsx60("span", { children: price }),
|
|
7608
|
+
/* @__PURE__ */ jsx60("span", { children: size }),
|
|
7609
|
+
/* @__PURE__ */ jsx60("span", { children: total })
|
|
7610
|
+
] });
|
|
7611
|
+
}
|
|
7612
|
+
function OrderBookRow({
|
|
7613
|
+
side,
|
|
7614
|
+
price,
|
|
7615
|
+
size,
|
|
7616
|
+
total,
|
|
7617
|
+
depth = 0,
|
|
7618
|
+
className,
|
|
7619
|
+
...props
|
|
7620
|
+
}) {
|
|
7621
|
+
return /* @__PURE__ */ jsxs29(
|
|
7622
|
+
"div",
|
|
7623
|
+
{
|
|
7624
|
+
"data-slot": "order-book-row",
|
|
7625
|
+
"data-side": side,
|
|
7626
|
+
className: cn(ORDER_BOOK_ROW, className),
|
|
7627
|
+
...props,
|
|
7628
|
+
children: [
|
|
7629
|
+
/* @__PURE__ */ jsx60(
|
|
7630
|
+
"span",
|
|
7631
|
+
{
|
|
7632
|
+
"aria-hidden": "true",
|
|
7633
|
+
className: cn(ORDER_BOOK_DEPTH, bookDepthClasses[side]),
|
|
7634
|
+
style: { width: `${depthPercent(depth)}%` }
|
|
7635
|
+
}
|
|
7636
|
+
),
|
|
7637
|
+
/* @__PURE__ */ jsx60("span", { className: cn(ORDER_BOOK_PRICE, bookSideClasses[side]), children: price }),
|
|
7638
|
+
/* @__PURE__ */ jsx60("span", { children: size }),
|
|
7639
|
+
/* @__PURE__ */ jsx60("span", { children: total })
|
|
7640
|
+
]
|
|
7641
|
+
}
|
|
7642
|
+
);
|
|
7643
|
+
}
|
|
7644
|
+
function depthPercent(depth) {
|
|
7645
|
+
if (Number.isNaN(depth)) return 0;
|
|
7646
|
+
return Math.round(Math.min(1, Math.max(0, depth)) * 100);
|
|
7647
|
+
}
|
|
7648
|
+
function OrderBookSpread({ className, ...props }) {
|
|
7649
|
+
return /* @__PURE__ */ jsx60("div", { "data-slot": "order-book-spread", className: cn(ORDER_BOOK_SPREAD, className), ...props });
|
|
7650
|
+
}
|
|
7651
|
+
function TradesTapeRow({ side, price, size, time, className, ...props }) {
|
|
7652
|
+
return /* @__PURE__ */ jsxs29(
|
|
7653
|
+
"div",
|
|
7654
|
+
{
|
|
7655
|
+
"data-slot": "trades-tape-row",
|
|
7656
|
+
"data-side": side,
|
|
7657
|
+
className: cn(TRADES_TAPE_ROW, className),
|
|
7658
|
+
...props,
|
|
7659
|
+
children: [
|
|
7660
|
+
/* @__PURE__ */ jsx60("span", { className: cn(ORDER_BOOK_PRICE, bookSideClasses[side]), children: price }),
|
|
7661
|
+
/* @__PURE__ */ jsx60("span", { children: size }),
|
|
7662
|
+
/* @__PURE__ */ jsx60("span", { children: time })
|
|
7663
|
+
]
|
|
7664
|
+
}
|
|
7665
|
+
);
|
|
7666
|
+
}
|
|
7667
|
+
function OrderForm({ className, onSubmit, ...props }) {
|
|
7668
|
+
return /* @__PURE__ */ jsx60(
|
|
7669
|
+
"form",
|
|
7670
|
+
{
|
|
7671
|
+
"data-slot": "order-form",
|
|
7672
|
+
className: cn(ORDER_FORM, className),
|
|
7673
|
+
onSubmit: (e) => {
|
|
7674
|
+
e.preventDefault();
|
|
7675
|
+
onSubmit?.(e);
|
|
7676
|
+
},
|
|
7677
|
+
...props
|
|
7678
|
+
}
|
|
7679
|
+
);
|
|
7680
|
+
}
|
|
7681
|
+
function OrderFormRow({ label, value, className, ...props }) {
|
|
7682
|
+
return /* @__PURE__ */ jsxs29("div", { "data-slot": "order-form-row", className: cn(ORDER_FORM_ROW, className), ...props, children: [
|
|
7683
|
+
/* @__PURE__ */ jsx60("span", { className: ORDER_FORM_LABEL, children: label }),
|
|
7684
|
+
/* @__PURE__ */ jsx60("span", { className: ORDER_FORM_VALUE, children: value })
|
|
7685
|
+
] });
|
|
7686
|
+
}
|
|
7687
|
+
function OrderFormSubmit({ side = "buy", className, ...props }) {
|
|
7688
|
+
return /* @__PURE__ */ jsx60(
|
|
7689
|
+
"button",
|
|
7690
|
+
{
|
|
7691
|
+
type: "submit",
|
|
7692
|
+
"data-slot": "order-form-submit",
|
|
7693
|
+
"data-side": side,
|
|
7694
|
+
className: cn(ORDER_FORM_SUBMIT_BASE, orderSideClasses[side], className),
|
|
7695
|
+
...props
|
|
7696
|
+
}
|
|
7697
|
+
);
|
|
7698
|
+
}
|
|
7699
|
+
function OpenOrdersEmpty({ className, ...props }) {
|
|
7700
|
+
return /* @__PURE__ */ jsx60("div", { "data-slot": "open-orders-empty", className: cn(OPEN_ORDERS_EMPTY, className), ...props });
|
|
7701
|
+
}
|
|
7444
7702
|
export {
|
|
7445
7703
|
Accordion,
|
|
7446
7704
|
AccordionContent,
|
|
@@ -7614,6 +7872,7 @@ export {
|
|
|
7614
7872
|
Kbd,
|
|
7615
7873
|
KbdGroup,
|
|
7616
7874
|
Label,
|
|
7875
|
+
Logo,
|
|
7617
7876
|
Menubar,
|
|
7618
7877
|
MenubarCheckboxItem,
|
|
7619
7878
|
MenubarContent,
|
|
@@ -7638,6 +7897,14 @@ export {
|
|
|
7638
7897
|
NavigationMenuTrigger,
|
|
7639
7898
|
NavigationMenuViewport,
|
|
7640
7899
|
NotFound,
|
|
7900
|
+
OpenOrdersEmpty,
|
|
7901
|
+
OrderBook,
|
|
7902
|
+
OrderBookHead,
|
|
7903
|
+
OrderBookRow,
|
|
7904
|
+
OrderBookSpread,
|
|
7905
|
+
OrderForm,
|
|
7906
|
+
OrderFormRow,
|
|
7907
|
+
OrderFormSubmit,
|
|
7641
7908
|
Pagination,
|
|
7642
7909
|
PaginationContent,
|
|
7643
7910
|
PaginationEllipsis,
|
|
@@ -7715,7 +7982,14 @@ export {
|
|
|
7715
7982
|
TabsContent,
|
|
7716
7983
|
TabsList,
|
|
7717
7984
|
TabsTrigger,
|
|
7985
|
+
Terminal,
|
|
7986
|
+
TerminalChart,
|
|
7987
|
+
TerminalPane,
|
|
7988
|
+
TerminalPaneBody,
|
|
7989
|
+
TerminalPaneHeader,
|
|
7990
|
+
TerminalTicker,
|
|
7718
7991
|
Textarea,
|
|
7992
|
+
TickerStat,
|
|
7719
7993
|
Toaster,
|
|
7720
7994
|
Toggle,
|
|
7721
7995
|
ToggleGroup,
|
|
@@ -7724,6 +7998,7 @@ export {
|
|
|
7724
7998
|
TooltipContent,
|
|
7725
7999
|
TooltipProvider,
|
|
7726
8000
|
TooltipTrigger,
|
|
8001
|
+
TradesTapeRow,
|
|
7727
8002
|
buttonVariants,
|
|
7728
8003
|
cn,
|
|
7729
8004
|
mergeRefs,
|