@windrun-huaiin/base-ui 3.2.4 → 3.4.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.
Files changed (81) hide show
  1. package/dist/components/client/index.d.mts +46 -0
  2. package/dist/components/client/index.d.ts +46 -0
  3. package/dist/components/client/index.js +1822 -0
  4. package/dist/components/client/index.js.map +1 -0
  5. package/dist/components/client/index.mjs +1866 -0
  6. package/dist/components/client/index.mjs.map +1 -0
  7. package/dist/components/index.d.mts +1 -44
  8. package/dist/components/index.d.ts +1 -44
  9. package/dist/components/index.js +4 -571
  10. package/dist/components/index.js.map +1 -1
  11. package/dist/components/index.mjs +3 -564
  12. package/dist/components/index.mjs.map +1 -1
  13. package/dist/index.d.mts +3 -39
  14. package/dist/index.d.ts +3 -39
  15. package/dist/index.js +189 -4581
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +191 -4354
  18. package/dist/index.mjs.map +1 -1
  19. package/dist/lib/index.js +0 -1
  20. package/dist/lib/index.js.map +1 -1
  21. package/dist/lib/index.mjs +0 -1
  22. package/dist/lib/index.mjs.map +1 -1
  23. package/dist/ui/index.d.mts +37 -711
  24. package/dist/ui/index.d.ts +37 -711
  25. package/dist/ui/index.js +172 -4249
  26. package/dist/ui/index.js.map +1 -1
  27. package/dist/ui/index.mjs +171 -4025
  28. package/dist/ui/index.mjs.map +1 -1
  29. package/package.json +11 -37
  30. package/src/components/404-page.tsx +1 -1
  31. package/src/components/client/index.ts +15 -0
  32. package/src/components/global-icon.tsx +1 -1
  33. package/src/components/index.ts +15 -8
  34. package/src/index.ts +4 -1
  35. package/src/ui/index.ts +2 -48
  36. package/src/ui/accordion.tsx +0 -58
  37. package/src/ui/alert.tsx +0 -59
  38. package/src/ui/aspect-ratio.tsx +0 -7
  39. package/src/ui/avatar.tsx +0 -50
  40. package/src/ui/badge.tsx +0 -36
  41. package/src/ui/breadcrumb.tsx +0 -115
  42. package/src/ui/calendar.tsx +0 -66
  43. package/src/ui/card.tsx +0 -79
  44. package/src/ui/carousel.tsx +0 -262
  45. package/src/ui/chart.tsx +0 -365
  46. package/src/ui/checkbox.tsx +0 -30
  47. package/src/ui/collapsible.tsx +0 -11
  48. package/src/ui/command.tsx +0 -153
  49. package/src/ui/context-menu.tsx +0 -200
  50. package/src/ui/dialog.tsx +0 -122
  51. package/src/ui/drawer.tsx +0 -118
  52. package/src/ui/form.tsx +0 -178
  53. package/src/ui/hover-card.tsx +0 -29
  54. package/src/ui/input-otp.tsx +0 -71
  55. package/src/ui/input.tsx +0 -22
  56. package/src/ui/menubar.tsx +0 -236
  57. package/src/ui/navigation-menu.tsx +0 -128
  58. package/src/ui/pagination.tsx +0 -117
  59. package/src/ui/popover.tsx +0 -31
  60. package/src/ui/progress.tsx +0 -28
  61. package/src/ui/radio-group.tsx +0 -44
  62. package/src/ui/resizable.tsx +0 -45
  63. package/src/ui/scroll-area.tsx +0 -48
  64. package/src/ui/select.tsx +0 -160
  65. package/src/ui/separator.tsx +0 -31
  66. package/src/ui/sheet.tsx +0 -140
  67. package/src/ui/sidebar.tsx +0 -763
  68. package/src/ui/skeleton.tsx +0 -15
  69. package/src/ui/slider.tsx +0 -28
  70. package/src/ui/sonner.tsx +0 -31
  71. package/src/ui/switch.tsx +0 -29
  72. package/src/ui/table.tsx +0 -117
  73. package/src/ui/tabs.tsx +0 -55
  74. package/src/ui/textarea.tsx +0 -22
  75. package/src/ui/toast.tsx +0 -129
  76. package/src/ui/toaster.tsx +0 -35
  77. package/src/ui/toggle-group.tsx +0 -61
  78. package/src/ui/toggle.tsx +0 -45
  79. package/src/ui/tooltip.tsx +0 -30
  80. package/src/ui/use-mobile.tsx +0 -19
  81. package/src/ui/use-toast.ts +0 -194
package/dist/ui/index.mjs CHANGED
@@ -1,4 +1,3 @@
1
- "use client";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __defProps = Object.defineProperties;
4
3
  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
@@ -35,9 +34,21 @@ var __export = (target, all) => {
35
34
  __defProp(target, name, { get: all[name], enumerable: true });
36
35
  };
37
36
 
38
- // src/ui/accordion.tsx
37
+ // src/ui/alert-dialog.tsx
38
+ import * as React31 from "react";
39
+ import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
40
+
41
+ // ../lib/src/utils.ts
42
+ import { clsx } from "clsx";
43
+ import { twMerge } from "tailwind-merge";
44
+ function cn(...inputs) {
45
+ return twMerge(clsx(inputs));
46
+ }
47
+
48
+ // src/ui/button.tsx
39
49
  import * as React30 from "react";
40
- import * as AccordionPrimitive from "@radix-ui/react-accordion";
50
+ import { Slot } from "@radix-ui/react-slot";
51
+ import { cva } from "class-variance-authority";
41
52
 
42
53
  // src/assets/github.tsx
43
54
  import React from "react";
@@ -1304,69 +1315,8 @@ for (const [iconName, IconComponent] of Object.entries(BUILTIN_ICON_COMPONENTS))
1304
1315
  var wrappedBuiltinIconsPart = tempWrappedBuiltinIcons;
1305
1316
  var globalLucideIcons = __spreadValues(__spreadValues({}, styledLimitedIconsPart), wrappedBuiltinIconsPart);
1306
1317
 
1307
- // ../lib/src/utils.ts
1308
- import { clsx } from "clsx";
1309
- import { twMerge } from "tailwind-merge";
1310
- function cn(...inputs) {
1311
- return twMerge(clsx(inputs));
1312
- }
1313
-
1314
- // src/ui/accordion.tsx
1315
- import { jsx as jsx30, jsxs as jsxs7 } from "react/jsx-runtime";
1316
- var Accordion = AccordionPrimitive.Root;
1317
- var AccordionItem = React30.forwardRef((_a, ref) => {
1318
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1319
- return /* @__PURE__ */ jsx30(
1320
- AccordionPrimitive.Item,
1321
- __spreadValues({
1322
- ref,
1323
- className: cn("border-b", className)
1324
- }, props)
1325
- );
1326
- });
1327
- AccordionItem.displayName = "AccordionItem";
1328
- var AccordionTrigger = React30.forwardRef((_a, ref) => {
1329
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
1330
- return /* @__PURE__ */ jsx30(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ jsxs7(
1331
- AccordionPrimitive.Trigger,
1332
- __spreadProps(__spreadValues({
1333
- ref,
1334
- className: cn(
1335
- "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180",
1336
- className
1337
- )
1338
- }, props), {
1339
- children: [
1340
- children,
1341
- /* @__PURE__ */ jsx30(globalLucideIcons.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" })
1342
- ]
1343
- })
1344
- ) });
1345
- });
1346
- AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
1347
- var AccordionContent = React30.forwardRef((_a, ref) => {
1348
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
1349
- return /* @__PURE__ */ jsx30(
1350
- AccordionPrimitive.Content,
1351
- __spreadProps(__spreadValues({
1352
- ref,
1353
- className: "overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
1354
- }, props), {
1355
- children: /* @__PURE__ */ jsx30("div", { className: cn("pb-4 pt-0", className), children })
1356
- })
1357
- );
1358
- });
1359
- AccordionContent.displayName = AccordionPrimitive.Content.displayName;
1360
-
1361
- // src/ui/alert-dialog.tsx
1362
- import * as React32 from "react";
1363
- import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
1364
-
1365
1318
  // src/ui/button.tsx
1366
- import * as React31 from "react";
1367
- import { Slot } from "@radix-ui/react-slot";
1368
- import { cva } from "class-variance-authority";
1369
- import { jsx as jsx31, jsxs as jsxs8 } from "react/jsx-runtime";
1319
+ import { jsx as jsx30, jsxs as jsxs7 } from "react/jsx-runtime";
1370
1320
  var buttonVariants = cva(
1371
1321
  "inline-flex items-center gap-2 whitespace-nowrap rounded-md text-sm ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1372
1322
  {
@@ -1392,12 +1342,12 @@ var buttonVariants = cva(
1392
1342
  }
1393
1343
  }
1394
1344
  );
1395
- var Button = React31.forwardRef(
1345
+ var Button = React30.forwardRef(
1396
1346
  (_a, ref) => {
1397
1347
  var _b = _a, { className, variant, size, asChild = false, loading = false, children } = _b, props = __objRest(_b, ["className", "variant", "size", "asChild", "loading", "children"]);
1398
1348
  const Comp = asChild ? Slot : "button";
1399
1349
  if (asChild) {
1400
- return /* @__PURE__ */ jsx31(
1350
+ return /* @__PURE__ */ jsx30(
1401
1351
  Comp,
1402
1352
  __spreadProps(__spreadValues({
1403
1353
  className: cn(buttonVariants({ variant, size, className })),
@@ -1408,7 +1358,7 @@ var Button = React31.forwardRef(
1408
1358
  })
1409
1359
  );
1410
1360
  }
1411
- return /* @__PURE__ */ jsxs8(
1361
+ return /* @__PURE__ */ jsxs7(
1412
1362
  Comp,
1413
1363
  __spreadProps(__spreadValues({
1414
1364
  className: cn(buttonVariants({ variant, size, className })),
@@ -1417,7 +1367,7 @@ var Button = React31.forwardRef(
1417
1367
  }, props), {
1418
1368
  children: [
1419
1369
  children,
1420
- loading && /* @__PURE__ */ jsx31(globalLucideIcons.Loader2, { className: "ml-2 h-4 w-4 animate-spin" })
1370
+ loading && /* @__PURE__ */ jsx30(globalLucideIcons.Loader2, { className: "ml-2 h-4 w-4 animate-spin" })
1421
1371
  ]
1422
1372
  })
1423
1373
  );
@@ -1426,13 +1376,13 @@ var Button = React31.forwardRef(
1426
1376
  Button.displayName = "Button";
1427
1377
 
1428
1378
  // src/ui/alert-dialog.tsx
1429
- import { jsx as jsx32, jsxs as jsxs9 } from "react/jsx-runtime";
1379
+ import { jsx as jsx31, jsxs as jsxs8 } from "react/jsx-runtime";
1430
1380
  var AlertDialog = AlertDialogPrimitive.Root;
1431
1381
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
1432
1382
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
1433
- var AlertDialogOverlay = React32.forwardRef((_a, ref) => {
1383
+ var AlertDialogOverlay = React31.forwardRef((_a, ref) => {
1434
1384
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1435
- return /* @__PURE__ */ jsx32(
1385
+ return /* @__PURE__ */ jsx31(
1436
1386
  AlertDialogPrimitive.Overlay,
1437
1387
  __spreadProps(__spreadValues({
1438
1388
  className: cn(
@@ -1445,11 +1395,11 @@ var AlertDialogOverlay = React32.forwardRef((_a, ref) => {
1445
1395
  );
1446
1396
  });
1447
1397
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
1448
- var AlertDialogContent = React32.forwardRef((_a, ref) => {
1398
+ var AlertDialogContent = React31.forwardRef((_a, ref) => {
1449
1399
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1450
- return /* @__PURE__ */ jsxs9(AlertDialogPortal, { children: [
1451
- /* @__PURE__ */ jsx32(AlertDialogOverlay, {}),
1452
- /* @__PURE__ */ jsx32(
1400
+ return /* @__PURE__ */ jsxs8(AlertDialogPortal, { children: [
1401
+ /* @__PURE__ */ jsx31(AlertDialogOverlay, {}),
1402
+ /* @__PURE__ */ jsx31(
1453
1403
  AlertDialogPrimitive.Content,
1454
1404
  __spreadValues({
1455
1405
  ref,
@@ -1468,7 +1418,7 @@ var AlertDialogHeader = (_a) => {
1468
1418
  } = _b, props = __objRest(_b, [
1469
1419
  "className"
1470
1420
  ]);
1471
- return /* @__PURE__ */ jsx32(
1421
+ return /* @__PURE__ */ jsx31(
1472
1422
  "div",
1473
1423
  __spreadValues({
1474
1424
  className: cn(
@@ -1485,7 +1435,7 @@ var AlertDialogFooter = (_a) => {
1485
1435
  } = _b, props = __objRest(_b, [
1486
1436
  "className"
1487
1437
  ]);
1488
- return /* @__PURE__ */ jsx32(
1438
+ return /* @__PURE__ */ jsx31(
1489
1439
  "div",
1490
1440
  __spreadValues({
1491
1441
  className: cn(
@@ -1496,9 +1446,9 @@ var AlertDialogFooter = (_a) => {
1496
1446
  );
1497
1447
  };
1498
1448
  AlertDialogFooter.displayName = "AlertDialogFooter";
1499
- var AlertDialogTitle = React32.forwardRef((_a, ref) => {
1449
+ var AlertDialogTitle = React31.forwardRef((_a, ref) => {
1500
1450
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1501
- return /* @__PURE__ */ jsx32(
1451
+ return /* @__PURE__ */ jsx31(
1502
1452
  AlertDialogPrimitive.Title,
1503
1453
  __spreadValues({
1504
1454
  ref,
@@ -1507,9 +1457,9 @@ var AlertDialogTitle = React32.forwardRef((_a, ref) => {
1507
1457
  );
1508
1458
  });
1509
1459
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
1510
- var AlertDialogDescription = React32.forwardRef((_a, ref) => {
1460
+ var AlertDialogDescription = React31.forwardRef((_a, ref) => {
1511
1461
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1512
- return /* @__PURE__ */ jsx32(
1462
+ return /* @__PURE__ */ jsx31(
1513
1463
  AlertDialogPrimitive.Description,
1514
1464
  __spreadValues({
1515
1465
  ref,
@@ -1518,9 +1468,9 @@ var AlertDialogDescription = React32.forwardRef((_a, ref) => {
1518
1468
  );
1519
1469
  });
1520
1470
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
1521
- var AlertDialogAction = React32.forwardRef((_a, ref) => {
1471
+ var AlertDialogAction = React31.forwardRef((_a, ref) => {
1522
1472
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1523
- return /* @__PURE__ */ jsx32(
1473
+ return /* @__PURE__ */ jsx31(
1524
1474
  AlertDialogPrimitive.Action,
1525
1475
  __spreadValues({
1526
1476
  ref,
@@ -1529,9 +1479,9 @@ var AlertDialogAction = React32.forwardRef((_a, ref) => {
1529
1479
  );
1530
1480
  });
1531
1481
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
1532
- var AlertDialogCancel = React32.forwardRef((_a, ref) => {
1482
+ var AlertDialogCancel = React31.forwardRef((_a, ref) => {
1533
1483
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1534
- return /* @__PURE__ */ jsx32(
1484
+ return /* @__PURE__ */ jsx31(
1535
1485
  AlertDialogPrimitive.Cancel,
1536
1486
  __spreadValues({
1537
1487
  ref,
@@ -1545,3791 +1495,208 @@ var AlertDialogCancel = React32.forwardRef((_a, ref) => {
1545
1495
  });
1546
1496
  AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
1547
1497
 
1548
- // src/ui/alert.tsx
1549
- import * as React33 from "react";
1550
- import { cva as cva2 } from "class-variance-authority";
1551
- import { jsx as jsx33 } from "react/jsx-runtime";
1552
- var alertVariants = cva2(
1553
- "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
1554
- {
1555
- variants: {
1556
- variant: {
1557
- default: "bg-background text-foreground",
1558
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
1559
- }
1560
- },
1561
- defaultVariants: {
1562
- variant: "default"
1563
- }
1564
- }
1565
- );
1566
- var Alert = React33.forwardRef((_a, ref) => {
1567
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
1568
- return /* @__PURE__ */ jsx33(
1569
- "div",
1570
- __spreadValues({
1498
+ // src/ui/dropdown-menu.tsx
1499
+ import * as React32 from "react";
1500
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
1501
+ import { jsx as jsx32, jsxs as jsxs9 } from "react/jsx-runtime";
1502
+ var DropdownMenu = DropdownMenuPrimitive.Root;
1503
+ var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
1504
+ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
1505
+ var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
1506
+ var DropdownMenuSub = DropdownMenuPrimitive.Sub;
1507
+ var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
1508
+ var DropdownMenuSubTrigger = React32.forwardRef((_a, ref) => {
1509
+ var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
1510
+ return /* @__PURE__ */ jsxs9(
1511
+ DropdownMenuPrimitive.SubTrigger,
1512
+ __spreadProps(__spreadValues({
1571
1513
  ref,
1572
- role: "alert",
1573
- className: cn(alertVariants({ variant }), className)
1574
- }, props)
1514
+ className: cn(
1515
+ "flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1516
+ inset && "pl-8",
1517
+ className
1518
+ )
1519
+ }, props), {
1520
+ children: [
1521
+ children,
1522
+ /* @__PURE__ */ jsx32(globalLucideIcons.ChevronRight, { className: "ml-auto" })
1523
+ ]
1524
+ })
1575
1525
  );
1576
1526
  });
1577
- Alert.displayName = "Alert";
1578
- var AlertTitle = React33.forwardRef((_a, ref) => {
1527
+ DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
1528
+ var DropdownMenuSubContent = React32.forwardRef((_a, ref) => {
1579
1529
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1580
- return /* @__PURE__ */ jsx33(
1581
- "h5",
1530
+ return /* @__PURE__ */ jsx32(
1531
+ DropdownMenuPrimitive.SubContent,
1582
1532
  __spreadValues({
1583
1533
  ref,
1584
- className: cn("mb-1 font-medium leading-none tracking-tight", className)
1534
+ className: cn(
1535
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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",
1536
+ className
1537
+ )
1585
1538
  }, props)
1586
1539
  );
1587
1540
  });
1588
- AlertTitle.displayName = "AlertTitle";
1589
- var AlertDescription = React33.forwardRef((_a, ref) => {
1590
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1591
- return /* @__PURE__ */ jsx33(
1592
- "div",
1541
+ DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
1542
+ var DropdownMenuContent = React32.forwardRef((_a, ref) => {
1543
+ var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
1544
+ return /* @__PURE__ */ jsx32(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx32(
1545
+ DropdownMenuPrimitive.Content,
1593
1546
  __spreadValues({
1594
1547
  ref,
1595
- className: cn("text-sm [&_p]:leading-relaxed", className)
1548
+ sideOffset,
1549
+ className: cn(
1550
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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",
1551
+ className
1552
+ )
1596
1553
  }, props)
1597
- );
1554
+ ) });
1598
1555
  });
1599
- AlertDescription.displayName = "AlertDescription";
1600
-
1601
- // src/ui/aspect-ratio.tsx
1602
- import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
1603
- var AspectRatio = AspectRatioPrimitive.Root;
1604
-
1605
- // src/ui/avatar.tsx
1606
- import * as React34 from "react";
1607
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
1608
- import { jsx as jsx34 } from "react/jsx-runtime";
1609
- var Avatar = React34.forwardRef((_a, ref) => {
1610
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1611
- return /* @__PURE__ */ jsx34(
1612
- AvatarPrimitive.Root,
1556
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
1557
+ var DropdownMenuItem = React32.forwardRef((_a, ref) => {
1558
+ var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
1559
+ return /* @__PURE__ */ jsx32(
1560
+ DropdownMenuPrimitive.Item,
1613
1561
  __spreadValues({
1614
1562
  ref,
1615
1563
  className: cn(
1616
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
1564
+ "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1565
+ inset && "pl-8",
1617
1566
  className
1618
1567
  )
1619
1568
  }, props)
1620
1569
  );
1621
1570
  });
1622
- Avatar.displayName = AvatarPrimitive.Root.displayName;
1623
- var AvatarImage = React34.forwardRef((_a, ref) => {
1624
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1625
- return /* @__PURE__ */ jsx34(
1626
- AvatarPrimitive.Image,
1627
- __spreadValues({
1571
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
1572
+ var DropdownMenuCheckboxItem = React32.forwardRef((_a, ref) => {
1573
+ var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
1574
+ return /* @__PURE__ */ jsxs9(
1575
+ DropdownMenuPrimitive.CheckboxItem,
1576
+ __spreadProps(__spreadValues({
1628
1577
  ref,
1629
- className: cn("aspect-square h-full w-full", className)
1630
- }, props)
1578
+ className: cn(
1579
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1580
+ className
1581
+ ),
1582
+ checked
1583
+ }, props), {
1584
+ children: [
1585
+ /* @__PURE__ */ jsx32("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx32(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
1586
+ children
1587
+ ]
1588
+ })
1631
1589
  );
1632
1590
  });
1633
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1634
- var AvatarFallback = React34.forwardRef((_a, ref) => {
1635
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1636
- return /* @__PURE__ */ jsx34(
1637
- AvatarPrimitive.Fallback,
1638
- __spreadValues({
1591
+ DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
1592
+ var DropdownMenuRadioItem = React32.forwardRef((_a, ref) => {
1593
+ var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
1594
+ return /* @__PURE__ */ jsxs9(
1595
+ DropdownMenuPrimitive.RadioItem,
1596
+ __spreadProps(__spreadValues({
1639
1597
  ref,
1640
1598
  className: cn(
1641
- "flex h-full w-full items-center justify-center rounded-full bg-muted",
1599
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
1642
1600
  className
1643
1601
  )
1644
- }, props)
1602
+ }, props), {
1603
+ children: [
1604
+ /* @__PURE__ */ jsx32("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx32(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx32(globalLucideIcons.Circle, { className: "h-2 w-2 fill-current" }) }) }),
1605
+ children
1606
+ ]
1607
+ })
1645
1608
  );
1646
1609
  });
1647
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1648
-
1649
- // src/ui/badge.tsx
1650
- import { cva as cva3 } from "class-variance-authority";
1651
- import { jsx as jsx35 } from "react/jsx-runtime";
1652
- var badgeVariants = cva3(
1653
- "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2",
1654
- {
1655
- variants: {
1656
- variant: {
1657
- default: "border-transparent bg-primary text-primary-foreground hover:bg-primary/80",
1658
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
1659
- destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
1660
- outline: "text-foreground"
1661
- }
1662
- },
1663
- defaultVariants: {
1664
- variant: "default"
1665
- }
1666
- }
1667
- );
1668
- function Badge(_a) {
1669
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
1670
- return /* @__PURE__ */ jsx35("div", __spreadValues({ className: cn(badgeVariants({ variant }), className) }, props));
1671
- }
1672
-
1673
- // src/ui/breadcrumb.tsx
1674
- import * as React35 from "react";
1675
- import { Slot as Slot2 } from "@radix-ui/react-slot";
1676
- import { jsx as jsx36, jsxs as jsxs10 } from "react/jsx-runtime";
1677
- var Breadcrumb = React35.forwardRef((_a, ref) => {
1678
- var props = __objRest(_a, []);
1679
- return /* @__PURE__ */ jsx36("nav", __spreadValues({ ref, "aria-label": "breadcrumb" }, props));
1680
- });
1681
- Breadcrumb.displayName = "Breadcrumb";
1682
- var BreadcrumbList = React35.forwardRef((_a, ref) => {
1683
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1684
- return /* @__PURE__ */ jsx36(
1685
- "ol",
1610
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
1611
+ var DropdownMenuLabel = React32.forwardRef((_a, ref) => {
1612
+ var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
1613
+ return /* @__PURE__ */ jsx32(
1614
+ DropdownMenuPrimitive.Label,
1686
1615
  __spreadValues({
1687
1616
  ref,
1688
1617
  className: cn(
1689
- "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5",
1618
+ "px-2 py-1.5 text-sm font-semibold",
1619
+ inset && "pl-8",
1690
1620
  className
1691
1621
  )
1692
1622
  }, props)
1693
1623
  );
1694
1624
  });
1695
- BreadcrumbList.displayName = "BreadcrumbList";
1696
- var BreadcrumbItem = React35.forwardRef((_a, ref) => {
1697
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1698
- return /* @__PURE__ */ jsx36(
1699
- "li",
1700
- __spreadValues({
1701
- ref,
1702
- className: cn("inline-flex items-center gap-1.5", className)
1703
- }, props)
1704
- );
1705
- });
1706
- BreadcrumbItem.displayName = "BreadcrumbItem";
1707
- var BreadcrumbLink = React35.forwardRef((_a, ref) => {
1708
- var _b = _a, { asChild, className } = _b, props = __objRest(_b, ["asChild", "className"]);
1709
- const Comp = asChild ? Slot2 : "a";
1710
- return /* @__PURE__ */ jsx36(
1711
- Comp,
1712
- __spreadValues({
1713
- ref,
1714
- className: cn("transition-colors hover:text-foreground", className)
1715
- }, props)
1716
- );
1717
- });
1718
- BreadcrumbLink.displayName = "BreadcrumbLink";
1719
- var BreadcrumbPage = React35.forwardRef((_a, ref) => {
1625
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
1626
+ var DropdownMenuSeparator = React32.forwardRef((_a, ref) => {
1720
1627
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1721
- return /* @__PURE__ */ jsx36(
1722
- "span",
1628
+ return /* @__PURE__ */ jsx32(
1629
+ DropdownMenuPrimitive.Separator,
1723
1630
  __spreadValues({
1724
1631
  ref,
1725
- role: "link",
1726
- "aria-disabled": "true",
1727
- "aria-current": "page",
1728
- className: cn("font-normal text-foreground", className)
1632
+ className: cn("-mx-1 my-1 h-px bg-muted", className)
1729
1633
  }, props)
1730
1634
  );
1731
1635
  });
1732
- BreadcrumbPage.displayName = "BreadcrumbPage";
1733
- var BreadcrumbSeparator = (_a) => {
1734
- var _b = _a, {
1735
- children,
1736
- className
1737
- } = _b, props = __objRest(_b, [
1738
- "children",
1739
- "className"
1740
- ]);
1741
- return /* @__PURE__ */ jsx36(
1742
- "li",
1743
- __spreadProps(__spreadValues({
1744
- role: "presentation",
1745
- "aria-hidden": "true",
1746
- className: cn("[&>svg]:w-3.5 [&>svg]:h-3.5", className)
1747
- }, props), {
1748
- children: children != null ? children : /* @__PURE__ */ jsx36(globalLucideIcons.ChevronRight, {})
1749
- })
1750
- );
1751
- };
1752
- BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
1753
- var BreadcrumbEllipsis = (_a) => {
1636
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
1637
+ var DropdownMenuShortcut = (_a) => {
1754
1638
  var _b = _a, {
1755
1639
  className
1756
1640
  } = _b, props = __objRest(_b, [
1757
1641
  "className"
1758
1642
  ]);
1759
- return /* @__PURE__ */ jsxs10(
1643
+ return /* @__PURE__ */ jsx32(
1760
1644
  "span",
1761
- __spreadProps(__spreadValues({
1762
- role: "presentation",
1763
- "aria-hidden": "true",
1764
- className: cn("flex h-9 w-9 items-center justify-center", className)
1765
- }, props), {
1766
- children: [
1767
- /* @__PURE__ */ jsx36(globalLucideIcons.MoreHorizontal, { className: "h-4 w-4" }),
1768
- /* @__PURE__ */ jsx36("span", { className: "sr-only", children: "More" })
1769
- ]
1770
- })
1771
- );
1772
- };
1773
- BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
1774
-
1775
- // src/ui/calendar.tsx
1776
- import { DayPicker } from "react-day-picker";
1777
- import { jsx as jsx37 } from "react/jsx-runtime";
1778
- function Calendar(_a) {
1779
- var _b = _a, {
1780
- className,
1781
- classNames,
1782
- showOutsideDays = true
1783
- } = _b, props = __objRest(_b, [
1784
- "className",
1785
- "classNames",
1786
- "showOutsideDays"
1787
- ]);
1788
- return /* @__PURE__ */ jsx37(
1789
- DayPicker,
1790
1645
  __spreadValues({
1791
- showOutsideDays,
1792
- className: cn("p-3", className),
1793
- classNames: __spreadValues({
1794
- months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
1795
- month: "space-y-4",
1796
- caption: "flex justify-center pt-1 relative items-center",
1797
- caption_label: "text-sm font-medium",
1798
- nav: "space-x-1 flex items-center",
1799
- nav_button: cn(
1800
- buttonVariants({ variant: "outline" }),
1801
- "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
1802
- ),
1803
- nav_button_previous: "absolute left-1",
1804
- nav_button_next: "absolute right-1",
1805
- table: "w-full border-collapse space-y-1",
1806
- head_row: "flex",
1807
- head_cell: "text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
1808
- row: "flex w-full mt-2",
1809
- cell: "h-9 w-9 text-center text-sm p-0 relative [&:has([aria-selected].day-range-end)]:rounded-r-md [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
1810
- day: cn(
1811
- buttonVariants({ variant: "ghost" }),
1812
- "h-9 w-9 p-0 font-normal aria-selected:opacity-100"
1813
- ),
1814
- day_range_end: "day-range-end",
1815
- day_selected: "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
1816
- day_today: "bg-accent text-accent-foreground",
1817
- day_outside: "day-outside text-muted-foreground aria-selected:bg-accent/50 aria-selected:text-muted-foreground",
1818
- day_disabled: "text-muted-foreground opacity-50",
1819
- day_range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
1820
- day_hidden: "invisible"
1821
- }, classNames),
1822
- components: {
1823
- IconLeft: (_a2) => {
1824
- var _props = __objRest(_a2, []);
1825
- return /* @__PURE__ */ jsx37(globalLucideIcons.ChevronLeft, { className: "h-4 w-4" });
1826
- },
1827
- IconRight: (_b2) => {
1828
- var _props = __objRest(_b2, []);
1829
- return /* @__PURE__ */ jsx37(globalLucideIcons.ChevronRight, { className: "h-4 w-4" });
1830
- }
1831
- }
1646
+ className: cn("ml-auto text-xs tracking-widest opacity-60", className)
1832
1647
  }, props)
1833
1648
  );
1834
- }
1835
- Calendar.displayName = "Calendar";
1649
+ };
1650
+ DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
1836
1651
 
1837
- // src/ui/card.tsx
1838
- import * as React36 from "react";
1839
- import { jsx as jsx38 } from "react/jsx-runtime";
1840
- var Card = React36.forwardRef((_a, ref) => {
1841
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1842
- return /* @__PURE__ */ jsx38(
1843
- "div",
1844
- __spreadValues({
1845
- ref,
1846
- className: cn(
1847
- "rounded-lg border bg-card text-card-foreground shadow-xs",
1848
- className
1849
- )
1850
- }, props)
1851
- );
1852
- });
1853
- Card.displayName = "Card";
1854
- var CardHeader = React36.forwardRef((_a, ref) => {
1652
+ // src/ui/label.tsx
1653
+ import * as React33 from "react";
1654
+ import * as LabelPrimitive from "@radix-ui/react-label";
1655
+ import { cva as cva2 } from "class-variance-authority";
1656
+ import { jsx as jsx33 } from "react/jsx-runtime";
1657
+ var labelVariants = cva2(
1658
+ "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
1659
+ );
1660
+ var Label2 = React33.forwardRef((_a, ref) => {
1855
1661
  var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1856
- return /* @__PURE__ */ jsx38(
1857
- "div",
1662
+ return /* @__PURE__ */ jsx33(
1663
+ LabelPrimitive.Root,
1858
1664
  __spreadValues({
1859
1665
  ref,
1860
- className: cn("flex flex-col space-y-1.5 p-6", className)
1666
+ className: cn(labelVariants(), className)
1861
1667
  }, props)
1862
1668
  );
1863
1669
  });
1864
- CardHeader.displayName = "CardHeader";
1865
- var CardTitle = React36.forwardRef((_a, ref) => {
1866
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1867
- return /* @__PURE__ */ jsx38(
1868
- "div",
1869
- __spreadValues({
1870
- ref,
1871
- className: cn(
1872
- "text-2xl font-semibold leading-none tracking-tight",
1873
- className
1874
- )
1875
- }, props)
1876
- );
1877
- });
1878
- CardTitle.displayName = "CardTitle";
1879
- var CardDescription = React36.forwardRef((_a, ref) => {
1880
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1881
- return /* @__PURE__ */ jsx38(
1882
- "div",
1883
- __spreadValues({
1884
- ref,
1885
- className: cn("text-sm text-muted-foreground", className)
1886
- }, props)
1887
- );
1888
- });
1889
- CardDescription.displayName = "CardDescription";
1890
- var CardContent = React36.forwardRef((_a, ref) => {
1891
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1892
- return /* @__PURE__ */ jsx38("div", __spreadValues({ ref, className: cn("p-6 pt-0", className) }, props));
1893
- });
1894
- CardContent.displayName = "CardContent";
1895
- var CardFooter = React36.forwardRef((_a, ref) => {
1896
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
1897
- return /* @__PURE__ */ jsx38(
1898
- "div",
1899
- __spreadValues({
1900
- ref,
1901
- className: cn("flex items-center p-6 pt-0", className)
1902
- }, props)
1903
- );
1904
- });
1905
- CardFooter.displayName = "CardFooter";
1670
+ Label2.displayName = LabelPrimitive.Root.displayName;
1906
1671
 
1907
- // src/ui/carousel.tsx
1908
- import * as React37 from "react";
1909
- import useEmblaCarousel from "embla-carousel-react";
1910
- import { jsx as jsx39, jsxs as jsxs11 } from "react/jsx-runtime";
1911
- var CarouselContext = React37.createContext(null);
1912
- function useCarousel() {
1913
- const context = React37.useContext(CarouselContext);
1914
- if (!context) {
1915
- throw new Error("useCarousel must be used within a <Carousel />");
1916
- }
1917
- return context;
1918
- }
1919
- var Carousel = React37.forwardRef(
1672
+ // src/ui/language-button.tsx
1673
+ import * as React34 from "react";
1674
+ import { jsx as jsx34 } from "react/jsx-runtime";
1675
+ var LanguageButton = React34.forwardRef(
1920
1676
  (_a, ref) => {
1921
- var _b = _a, {
1922
- orientation = "horizontal",
1923
- opts,
1924
- setApi,
1925
- plugins,
1926
- className,
1927
- children
1928
- } = _b, props = __objRest(_b, [
1929
- "orientation",
1930
- "opts",
1931
- "setApi",
1932
- "plugins",
1933
- "className",
1934
- "children"
1935
- ]);
1936
- const [carouselRef, api] = useEmblaCarousel(
1937
- __spreadProps(__spreadValues({}, opts), {
1938
- axis: orientation === "horizontal" ? "x" : "y"
1939
- }),
1940
- plugins
1941
- );
1942
- const [canScrollPrev, setCanScrollPrev] = React37.useState(false);
1943
- const [canScrollNext, setCanScrollNext] = React37.useState(false);
1944
- const onSelect = React37.useCallback((api2) => {
1945
- if (!api2) {
1946
- return;
1947
- }
1948
- setCanScrollPrev(api2.canScrollPrev());
1949
- setCanScrollNext(api2.canScrollNext());
1950
- }, []);
1951
- const scrollPrev = React37.useCallback(() => {
1952
- api == null ? void 0 : api.scrollPrev();
1953
- }, [api]);
1954
- const scrollNext = React37.useCallback(() => {
1955
- api == null ? void 0 : api.scrollNext();
1956
- }, [api]);
1957
- const handleKeyDown = React37.useCallback(
1958
- (event) => {
1959
- if (event.key === "ArrowLeft") {
1960
- event.preventDefault();
1961
- scrollPrev();
1962
- } else if (event.key === "ArrowRight") {
1963
- event.preventDefault();
1964
- scrollNext();
1965
- }
1966
- },
1967
- [scrollPrev, scrollNext]
1968
- );
1969
- React37.useEffect(() => {
1970
- if (!api || !setApi) {
1971
- return;
1972
- }
1973
- setApi(api);
1974
- }, [api, setApi]);
1975
- React37.useEffect(() => {
1976
- if (!api) {
1977
- return;
1978
- }
1979
- onSelect(api);
1980
- api.on("reInit", onSelect);
1981
- api.on("select", onSelect);
1982
- return () => {
1983
- api == null ? void 0 : api.off("select", onSelect);
1984
- };
1985
- }, [api, onSelect]);
1986
- return /* @__PURE__ */ jsx39(
1987
- CarouselContext.Provider,
1988
- {
1989
- value: {
1990
- carouselRef,
1991
- api,
1992
- opts,
1993
- orientation: orientation || ((opts == null ? void 0 : opts.axis) === "y" ? "vertical" : "horizontal"),
1994
- scrollPrev,
1995
- scrollNext,
1996
- canScrollPrev,
1997
- canScrollNext
1998
- },
1999
- children: /* @__PURE__ */ jsx39(
2000
- "div",
2001
- __spreadProps(__spreadValues({
2002
- ref,
2003
- onKeyDownCapture: handleKeyDown,
2004
- className: cn("relative", className),
2005
- role: "region",
2006
- "aria-roledescription": "carousel"
2007
- }, props), {
2008
- children
2009
- })
2010
- )
2011
- }
2012
- );
2013
- }
2014
- );
2015
- Carousel.displayName = "Carousel";
2016
- var CarouselContent = React37.forwardRef((_a, ref) => {
2017
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2018
- const { carouselRef, orientation } = useCarousel();
2019
- return /* @__PURE__ */ jsx39("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx39(
2020
- "div",
2021
- __spreadValues({
2022
- ref,
2023
- className: cn(
2024
- "flex",
2025
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
2026
- className
2027
- )
2028
- }, props)
2029
- ) });
2030
- });
2031
- CarouselContent.displayName = "CarouselContent";
2032
- var CarouselItem = React37.forwardRef((_a, ref) => {
2033
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2034
- const { orientation } = useCarousel();
2035
- return /* @__PURE__ */ jsx39(
2036
- "div",
2037
- __spreadValues({
2038
- ref,
2039
- role: "group",
2040
- "aria-roledescription": "slide",
2041
- className: cn(
2042
- "min-w-0 shrink-0 grow-0 basis-full",
2043
- orientation === "horizontal" ? "pl-4" : "pt-4",
2044
- className
2045
- )
2046
- }, props)
2047
- );
2048
- });
2049
- CarouselItem.displayName = "CarouselItem";
2050
- var CarouselPrevious = React37.forwardRef((_a, ref) => {
2051
- var _b = _a, { className, variant = "outline", size = "icon" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
2052
- const { orientation, scrollPrev, canScrollPrev } = useCarousel();
2053
- return /* @__PURE__ */ jsxs11(
2054
- Button,
2055
- __spreadProps(__spreadValues({
2056
- ref,
2057
- variant,
2058
- size,
2059
- className: cn(
2060
- "absolute h-8 w-8 rounded-full",
2061
- orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90",
2062
- className
2063
- ),
2064
- disabled: !canScrollPrev,
2065
- onClick: scrollPrev
2066
- }, props), {
2067
- children: [
2068
- /* @__PURE__ */ jsx39(globalLucideIcons.ArrowLeft, { className: "h-4 w-4" }),
2069
- /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Previous slide" })
2070
- ]
2071
- })
2072
- );
2073
- });
2074
- CarouselPrevious.displayName = "CarouselPrevious";
2075
- var CarouselNext = React37.forwardRef((_a, ref) => {
2076
- var _b = _a, { className, variant = "outline", size = "icon" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
2077
- const { orientation, scrollNext, canScrollNext } = useCarousel();
2078
- return /* @__PURE__ */ jsxs11(
2079
- Button,
2080
- __spreadProps(__spreadValues({
2081
- ref,
2082
- variant,
2083
- size,
2084
- className: cn(
2085
- "absolute h-8 w-8 rounded-full",
2086
- orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
2087
- className
2088
- ),
2089
- disabled: !canScrollNext,
2090
- onClick: scrollNext
2091
- }, props), {
2092
- children: [
2093
- /* @__PURE__ */ jsx39(globalLucideIcons.ArrowRight, { className: "h-4 w-4" }),
2094
- /* @__PURE__ */ jsx39("span", { className: "sr-only", children: "Next slide" })
2095
- ]
2096
- })
2097
- );
2098
- });
2099
- CarouselNext.displayName = "CarouselNext";
2100
-
2101
- // src/ui/chart.tsx
2102
- import * as React38 from "react";
2103
- import * as RechartsPrimitive from "recharts";
2104
- import { Fragment, jsx as jsx40, jsxs as jsxs12 } from "react/jsx-runtime";
2105
- var THEMES = { light: "", dark: ".dark" };
2106
- var ChartContext = React38.createContext(null);
2107
- function useChart() {
2108
- const context = React38.useContext(ChartContext);
2109
- if (!context) {
2110
- throw new Error("useChart must be used within a <ChartContainer />");
2111
- }
2112
- return context;
2113
- }
2114
- var ChartContainer = React38.forwardRef((_a, ref) => {
2115
- var _b = _a, { id, className, children, config } = _b, props = __objRest(_b, ["id", "className", "children", "config"]);
2116
- const uniqueId = React38.useId();
2117
- const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
2118
- return /* @__PURE__ */ jsx40(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs12(
2119
- "div",
2120
- __spreadProps(__spreadValues({
2121
- "data-chart": chartId,
2122
- ref,
2123
- className: cn(
2124
- "flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-hidden [&_.recharts-surface]:outline-hidden",
2125
- className
2126
- )
2127
- }, props), {
2128
- children: [
2129
- /* @__PURE__ */ jsx40(ChartStyle, { id: chartId, config }),
2130
- /* @__PURE__ */ jsx40(RechartsPrimitive.ResponsiveContainer, { children })
2131
- ]
2132
- })
2133
- ) });
2134
- });
2135
- ChartContainer.displayName = "Chart";
2136
- var ChartStyle = ({ id, config }) => {
2137
- const colorConfig = Object.entries(config).filter(
2138
- ([_, config2]) => config2.theme || config2.color
2139
- );
2140
- if (!colorConfig.length) {
2141
- return null;
2142
- }
2143
- return /* @__PURE__ */ jsx40(
2144
- "style",
2145
- {
2146
- dangerouslySetInnerHTML: {
2147
- __html: Object.entries(THEMES).map(
2148
- ([theme, prefix]) => `
2149
- ${prefix} [data-chart=${id}] {
2150
- ${colorConfig.map(([key, itemConfig]) => {
2151
- var _a;
2152
- const color = ((_a = itemConfig.theme) == null ? void 0 : _a[theme]) || itemConfig.color;
2153
- return color ? ` --color-${key}: ${color};` : null;
2154
- }).join("\n")}
2155
- }
2156
- `
2157
- ).join("\n")
2158
- }
2159
- }
2160
- );
2161
- };
2162
- var ChartTooltip = RechartsPrimitive.Tooltip;
2163
- var ChartTooltipContent = React38.forwardRef(
2164
- ({
2165
- active,
2166
- payload,
2167
- className,
2168
- indicator = "dot",
2169
- hideLabel = false,
2170
- hideIndicator = false,
2171
- label,
2172
- labelFormatter,
2173
- labelClassName,
2174
- formatter,
2175
- color,
2176
- nameKey,
2177
- labelKey
2178
- }, ref) => {
2179
- const { config } = useChart();
2180
- const tooltipLabel = React38.useMemo(() => {
2181
- var _a;
2182
- if (hideLabel || !(payload == null ? void 0 : payload.length)) {
2183
- return null;
2184
- }
2185
- const [item] = payload;
2186
- const key = `${labelKey || item.dataKey || item.name || "value"}`;
2187
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
2188
- const value = !labelKey && typeof label === "string" ? ((_a = config[label]) == null ? void 0 : _a.label) || label : itemConfig == null ? void 0 : itemConfig.label;
2189
- if (labelFormatter) {
2190
- return /* @__PURE__ */ jsx40("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
2191
- }
2192
- if (!value) {
2193
- return null;
2194
- }
2195
- return /* @__PURE__ */ jsx40("div", { className: cn("font-medium", labelClassName), children: value });
2196
- }, [
2197
- label,
2198
- labelFormatter,
2199
- payload,
2200
- hideLabel,
2201
- labelClassName,
2202
- config,
2203
- labelKey
2204
- ]);
2205
- if (!active || !(payload == null ? void 0 : payload.length)) {
2206
- return null;
2207
- }
2208
- const nestLabel = payload.length === 1 && indicator !== "dot";
2209
- return /* @__PURE__ */ jsxs12(
2210
- "div",
2211
- {
2212
- ref,
2213
- className: cn(
2214
- "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",
2215
- className
2216
- ),
2217
- children: [
2218
- !nestLabel ? tooltipLabel : null,
2219
- /* @__PURE__ */ jsx40("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
2220
- const key = `${nameKey || item.name || item.dataKey || "value"}`;
2221
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
2222
- const indicatorColor = color || item.payload.fill || item.color;
2223
- return /* @__PURE__ */ jsx40(
2224
- "div",
2225
- {
2226
- className: cn(
2227
- "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
2228
- indicator === "dot" && "items-center"
2229
- ),
2230
- children: formatter && (item == null ? void 0 : item.value) !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs12(Fragment, { children: [
2231
- (itemConfig == null ? void 0 : itemConfig.icon) ? /* @__PURE__ */ jsx40(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx40(
2232
- "div",
2233
- {
2234
- className: cn(
2235
- "shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)",
2236
- {
2237
- "h-2.5 w-2.5": indicator === "dot",
2238
- "w-1": indicator === "line",
2239
- "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
2240
- "my-0.5": nestLabel && indicator === "dashed"
2241
- }
2242
- ),
2243
- style: {
2244
- "--color-bg": indicatorColor,
2245
- "--color-border": indicatorColor
2246
- }
2247
- }
2248
- ),
2249
- /* @__PURE__ */ jsxs12(
2250
- "div",
2251
- {
2252
- className: cn(
2253
- "flex flex-1 justify-between leading-none",
2254
- nestLabel ? "items-end" : "items-center"
2255
- ),
2256
- children: [
2257
- /* @__PURE__ */ jsxs12("div", { className: "grid gap-1.5", children: [
2258
- nestLabel ? tooltipLabel : null,
2259
- /* @__PURE__ */ jsx40("span", { className: "text-muted-foreground", children: (itemConfig == null ? void 0 : itemConfig.label) || item.name })
2260
- ] }),
2261
- item.value && /* @__PURE__ */ jsx40("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
2262
- ]
2263
- }
2264
- )
2265
- ] })
2266
- },
2267
- item.dataKey
2268
- );
2269
- }) })
2270
- ]
2271
- }
2272
- );
2273
- }
2274
- );
2275
- ChartTooltipContent.displayName = "ChartTooltip";
2276
- var ChartLegend = RechartsPrimitive.Legend;
2277
- var ChartLegendContent = React38.forwardRef(
2278
- ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
2279
- const { config } = useChart();
2280
- if (!(payload == null ? void 0 : payload.length)) {
2281
- return null;
2282
- }
2283
- return /* @__PURE__ */ jsx40(
2284
- "div",
2285
- {
2286
- ref,
1677
+ var _b = _a, { className, variant = "default", size = "default" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
1678
+ return /* @__PURE__ */ jsx34(
1679
+ "button",
1680
+ __spreadValues({
2287
1681
  className: cn(
2288
- "flex items-center justify-center gap-4",
2289
- verticalAlign === "top" ? "pb-3" : "pt-3",
1682
+ "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background",
1683
+ {
1684
+ "bg-primary text-primary-foreground hover:bg-primary/90": variant === "default",
1685
+ "hover:bg-accent hover:text-accent-foreground": variant === "ghost",
1686
+ "h-10 px-4 py-2": size === "default",
1687
+ "h-9 px-3": size === "sm",
1688
+ "h-11 px-8": size === "lg",
1689
+ "h-10 w-10": size === "icon"
1690
+ },
2290
1691
  className
2291
1692
  ),
2292
- children: payload.map((item) => {
2293
- const key = `${nameKey || item.dataKey || "value"}`;
2294
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
2295
- return /* @__PURE__ */ jsxs12(
2296
- "div",
2297
- {
2298
- className: cn(
2299
- "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
2300
- ),
2301
- children: [
2302
- (itemConfig == null ? void 0 : itemConfig.icon) && !hideIcon ? /* @__PURE__ */ jsx40(itemConfig.icon, {}) : /* @__PURE__ */ jsx40(
2303
- "div",
2304
- {
2305
- className: "h-2 w-2 shrink-0 rounded-[2px]",
2306
- style: {
2307
- backgroundColor: item.color
2308
- }
2309
- }
2310
- ),
2311
- itemConfig == null ? void 0 : itemConfig.label
2312
- ]
2313
- },
2314
- item.value
2315
- );
2316
- })
2317
- }
1693
+ ref
1694
+ }, props)
2318
1695
  );
2319
1696
  }
2320
1697
  );
2321
- ChartLegendContent.displayName = "ChartLegend";
2322
- function getPayloadConfigFromPayload(config, payload, key) {
2323
- if (typeof payload !== "object" || payload === null) {
2324
- return void 0;
2325
- }
2326
- const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
2327
- let configLabelKey = key;
2328
- if (key in payload && typeof payload[key] === "string") {
2329
- configLabelKey = payload[key];
2330
- } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
2331
- configLabelKey = payloadPayload[key];
2332
- }
2333
- return configLabelKey in config ? config[configLabelKey] : config[key];
2334
- }
2335
-
2336
- // src/ui/checkbox.tsx
2337
- import * as React39 from "react";
2338
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
2339
- import { jsx as jsx41 } from "react/jsx-runtime";
2340
- var Checkbox = React39.forwardRef((_a, ref) => {
2341
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2342
- return /* @__PURE__ */ jsx41(
2343
- CheckboxPrimitive.Root,
2344
- __spreadProps(__spreadValues({
2345
- ref,
2346
- className: cn(
2347
- "peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
2348
- className
2349
- )
2350
- }, props), {
2351
- children: /* @__PURE__ */ jsx41(
2352
- CheckboxPrimitive.Indicator,
2353
- {
2354
- className: cn("flex items-center justify-center text-current"),
2355
- children: /* @__PURE__ */ jsx41(globalLucideIcons.Check, { className: "h-4 w-4" })
2356
- }
2357
- )
2358
- })
2359
- );
2360
- });
2361
- Checkbox.displayName = CheckboxPrimitive.Root.displayName;
2362
-
2363
- // src/ui/collapsible.tsx
2364
- import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
2365
- var Collapsible = CollapsiblePrimitive.Root;
2366
- var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
2367
- var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
2368
-
2369
- // src/ui/command.tsx
2370
- import * as React41 from "react";
2371
- import { Command as CommandPrimitive } from "cmdk";
2372
-
2373
- // src/ui/dialog.tsx
2374
- import * as React40 from "react";
2375
- import * as DialogPrimitive from "@radix-ui/react-dialog";
2376
- import { jsx as jsx42, jsxs as jsxs13 } from "react/jsx-runtime";
2377
- var Dialog = DialogPrimitive.Root;
2378
- var DialogTrigger = DialogPrimitive.Trigger;
2379
- var DialogPortal = DialogPrimitive.Portal;
2380
- var DialogClose = DialogPrimitive.Close;
2381
- var DialogOverlay = React40.forwardRef((_a, ref) => {
2382
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2383
- return /* @__PURE__ */ jsx42(
2384
- DialogPrimitive.Overlay,
2385
- __spreadValues({
2386
- ref,
2387
- className: cn(
2388
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
2389
- className
2390
- )
2391
- }, props)
2392
- );
2393
- });
2394
- DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
2395
- var DialogContent = React40.forwardRef((_a, ref) => {
2396
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2397
- return /* @__PURE__ */ jsxs13(DialogPortal, { children: [
2398
- /* @__PURE__ */ jsx42(DialogOverlay, {}),
2399
- /* @__PURE__ */ jsxs13(
2400
- DialogPrimitive.Content,
2401
- __spreadProps(__spreadValues({
2402
- ref,
2403
- className: cn(
2404
- "fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 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-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
2405
- className
2406
- )
2407
- }, props), {
2408
- children: [
2409
- children,
2410
- /* @__PURE__ */ jsxs13(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground", children: [
2411
- /* @__PURE__ */ jsx42(globalLucideIcons.X, { className: "h-4 w-4" }),
2412
- /* @__PURE__ */ jsx42("span", { className: "sr-only", children: "Close" })
2413
- ] })
2414
- ]
2415
- })
2416
- )
2417
- ] });
2418
- });
2419
- DialogContent.displayName = DialogPrimitive.Content.displayName;
2420
- var DialogHeader = (_a) => {
2421
- var _b = _a, {
2422
- className
2423
- } = _b, props = __objRest(_b, [
2424
- "className"
2425
- ]);
2426
- return /* @__PURE__ */ jsx42(
2427
- "div",
2428
- __spreadValues({
2429
- className: cn(
2430
- "flex flex-col space-y-1.5 text-center sm:text-left",
2431
- className
2432
- )
2433
- }, props)
2434
- );
2435
- };
2436
- DialogHeader.displayName = "DialogHeader";
2437
- var DialogFooter = (_a) => {
2438
- var _b = _a, {
2439
- className
2440
- } = _b, props = __objRest(_b, [
2441
- "className"
2442
- ]);
2443
- return /* @__PURE__ */ jsx42(
2444
- "div",
2445
- __spreadValues({
2446
- className: cn(
2447
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
2448
- className
2449
- )
2450
- }, props)
2451
- );
2452
- };
2453
- DialogFooter.displayName = "DialogFooter";
2454
- var DialogTitle = React40.forwardRef((_a, ref) => {
2455
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2456
- return /* @__PURE__ */ jsx42(
2457
- DialogPrimitive.Title,
2458
- __spreadValues({
2459
- ref,
2460
- className: cn(
2461
- "text-lg font-semibold leading-none tracking-tight",
2462
- className
2463
- )
2464
- }, props)
2465
- );
2466
- });
2467
- DialogTitle.displayName = DialogPrimitive.Title.displayName;
2468
- var DialogDescription = React40.forwardRef((_a, ref) => {
2469
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2470
- return /* @__PURE__ */ jsx42(
2471
- DialogPrimitive.Description,
2472
- __spreadValues({
2473
- ref,
2474
- className: cn("text-sm text-muted-foreground", className)
2475
- }, props)
2476
- );
2477
- });
2478
- DialogDescription.displayName = DialogPrimitive.Description.displayName;
2479
-
2480
- // src/ui/command.tsx
2481
- import { jsx as jsx43, jsxs as jsxs14 } from "react/jsx-runtime";
2482
- var Command = React41.forwardRef((_a, ref) => {
2483
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2484
- return /* @__PURE__ */ jsx43(
2485
- CommandPrimitive,
2486
- __spreadValues({
2487
- ref,
2488
- className: cn(
2489
- "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
2490
- className
2491
- )
2492
- }, props)
2493
- );
2494
- });
2495
- Command.displayName = CommandPrimitive.displayName;
2496
- var CommandDialog = (_a) => {
2497
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
2498
- return /* @__PURE__ */ jsx43(Dialog, __spreadProps(__spreadValues({}, props), { children: /* @__PURE__ */ jsx43(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsx43(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) }));
2499
- };
2500
- var CommandInput = React41.forwardRef((_a, ref) => {
2501
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2502
- return /* @__PURE__ */ jsxs14("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
2503
- /* @__PURE__ */ jsx43(globalLucideIcons.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
2504
- /* @__PURE__ */ jsx43(
2505
- CommandPrimitive.Input,
2506
- __spreadValues({
2507
- ref,
2508
- className: cn(
2509
- "flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
2510
- className
2511
- )
2512
- }, props)
2513
- )
2514
- ] });
2515
- });
2516
- CommandInput.displayName = CommandPrimitive.Input.displayName;
2517
- var CommandList = React41.forwardRef((_a, ref) => {
2518
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2519
- return /* @__PURE__ */ jsx43(
2520
- CommandPrimitive.List,
2521
- __spreadValues({
2522
- ref,
2523
- className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className)
2524
- }, props)
2525
- );
2526
- });
2527
- CommandList.displayName = CommandPrimitive.List.displayName;
2528
- var CommandEmpty = React41.forwardRef((props, ref) => /* @__PURE__ */ jsx43(
2529
- CommandPrimitive.Empty,
2530
- __spreadValues({
2531
- ref,
2532
- className: "py-6 text-center text-sm"
2533
- }, props)
2534
- ));
2535
- CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
2536
- var CommandGroup = React41.forwardRef((_a, ref) => {
2537
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2538
- return /* @__PURE__ */ jsx43(
2539
- CommandPrimitive.Group,
2540
- __spreadValues({
2541
- ref,
2542
- className: cn(
2543
- "overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",
2544
- className
2545
- )
2546
- }, props)
2547
- );
2548
- });
2549
- CommandGroup.displayName = CommandPrimitive.Group.displayName;
2550
- var CommandSeparator = React41.forwardRef((_a, ref) => {
2551
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2552
- return /* @__PURE__ */ jsx43(
2553
- CommandPrimitive.Separator,
2554
- __spreadValues({
2555
- ref,
2556
- className: cn("-mx-1 h-px bg-border", className)
2557
- }, props)
2558
- );
2559
- });
2560
- CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
2561
- var CommandItem = React41.forwardRef((_a, ref) => {
2562
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2563
- return /* @__PURE__ */ jsx43(
2564
- CommandPrimitive.Item,
2565
- __spreadValues({
2566
- ref,
2567
- className: cn(
2568
- "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected='true']:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2569
- className
2570
- )
2571
- }, props)
2572
- );
2573
- });
2574
- CommandItem.displayName = CommandPrimitive.Item.displayName;
2575
- var CommandShortcut = (_a) => {
2576
- var _b = _a, {
2577
- className
2578
- } = _b, props = __objRest(_b, [
2579
- "className"
2580
- ]);
2581
- return /* @__PURE__ */ jsx43(
2582
- "span",
2583
- __spreadValues({
2584
- className: cn(
2585
- "ml-auto text-xs tracking-widest text-muted-foreground",
2586
- className
2587
- )
2588
- }, props)
2589
- );
2590
- };
2591
- CommandShortcut.displayName = "CommandShortcut";
2592
-
2593
- // src/ui/context-menu.tsx
2594
- import * as React42 from "react";
2595
- import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
2596
- import { jsx as jsx44, jsxs as jsxs15 } from "react/jsx-runtime";
2597
- var ContextMenu = ContextMenuPrimitive.Root;
2598
- var ContextMenuTrigger = ContextMenuPrimitive.Trigger;
2599
- var ContextMenuGroup = ContextMenuPrimitive.Group;
2600
- var ContextMenuPortal = ContextMenuPrimitive.Portal;
2601
- var ContextMenuSub = ContextMenuPrimitive.Sub;
2602
- var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
2603
- var ContextMenuSubTrigger = React42.forwardRef((_a, ref) => {
2604
- var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
2605
- return /* @__PURE__ */ jsxs15(
2606
- ContextMenuPrimitive.SubTrigger,
2607
- __spreadProps(__spreadValues({
2608
- ref,
2609
- className: cn(
2610
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
2611
- inset && "pl-8",
2612
- className
2613
- )
2614
- }, props), {
2615
- children: [
2616
- children,
2617
- /* @__PURE__ */ jsx44(globalLucideIcons.ChevronRight, { className: "ml-auto h-4 w-4" })
2618
- ]
2619
- })
2620
- );
2621
- });
2622
- ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
2623
- var ContextMenuSubContent = React42.forwardRef((_a, ref) => {
2624
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2625
- return /* @__PURE__ */ jsx44(
2626
- ContextMenuPrimitive.SubContent,
2627
- __spreadValues({
2628
- ref,
2629
- className: cn(
2630
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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",
2631
- className
2632
- )
2633
- }, props)
2634
- );
2635
- });
2636
- ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
2637
- var ContextMenuContent = React42.forwardRef((_a, ref) => {
2638
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2639
- return /* @__PURE__ */ jsx44(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx44(
2640
- ContextMenuPrimitive.Content,
2641
- __spreadValues({
2642
- ref,
2643
- className: cn(
2644
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in-80 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",
2645
- className
2646
- )
2647
- }, props)
2648
- ) });
2649
- });
2650
- ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
2651
- var ContextMenuItem = React42.forwardRef((_a, ref) => {
2652
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
2653
- return /* @__PURE__ */ jsx44(
2654
- ContextMenuPrimitive.Item,
2655
- __spreadValues({
2656
- ref,
2657
- className: cn(
2658
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2659
- inset && "pl-8",
2660
- className
2661
- )
2662
- }, props)
2663
- );
2664
- });
2665
- ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
2666
- var ContextMenuCheckboxItem = React42.forwardRef((_a, ref) => {
2667
- var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
2668
- return /* @__PURE__ */ jsxs15(
2669
- ContextMenuPrimitive.CheckboxItem,
2670
- __spreadProps(__spreadValues({
2671
- ref,
2672
- className: cn(
2673
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2674
- className
2675
- ),
2676
- checked
2677
- }, props), {
2678
- children: [
2679
- /* @__PURE__ */ jsx44("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx44(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx44(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
2680
- children
2681
- ]
2682
- })
2683
- );
2684
- });
2685
- ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
2686
- var ContextMenuRadioItem = React42.forwardRef((_a, ref) => {
2687
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2688
- return /* @__PURE__ */ jsxs15(
2689
- ContextMenuPrimitive.RadioItem,
2690
- __spreadProps(__spreadValues({
2691
- ref,
2692
- className: cn(
2693
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2694
- className
2695
- )
2696
- }, props), {
2697
- children: [
2698
- /* @__PURE__ */ jsx44("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx44(ContextMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx44(globalLucideIcons.Circle, { className: "h-2 w-2 fill-current" }) }) }),
2699
- children
2700
- ]
2701
- })
2702
- );
2703
- });
2704
- ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
2705
- var ContextMenuLabel = React42.forwardRef((_a, ref) => {
2706
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
2707
- return /* @__PURE__ */ jsx44(
2708
- ContextMenuPrimitive.Label,
2709
- __spreadValues({
2710
- ref,
2711
- className: cn(
2712
- "px-2 py-1.5 text-sm font-semibold text-foreground",
2713
- inset && "pl-8",
2714
- className
2715
- )
2716
- }, props)
2717
- );
2718
- });
2719
- ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
2720
- var ContextMenuSeparator = React42.forwardRef((_a, ref) => {
2721
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2722
- return /* @__PURE__ */ jsx44(
2723
- ContextMenuPrimitive.Separator,
2724
- __spreadValues({
2725
- ref,
2726
- className: cn("-mx-1 my-1 h-px bg-border", className)
2727
- }, props)
2728
- );
2729
- });
2730
- ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
2731
- var ContextMenuShortcut = (_a) => {
2732
- var _b = _a, {
2733
- className
2734
- } = _b, props = __objRest(_b, [
2735
- "className"
2736
- ]);
2737
- return /* @__PURE__ */ jsx44(
2738
- "span",
2739
- __spreadValues({
2740
- className: cn(
2741
- "ml-auto text-xs tracking-widest text-muted-foreground",
2742
- className
2743
- )
2744
- }, props)
2745
- );
2746
- };
2747
- ContextMenuShortcut.displayName = "ContextMenuShortcut";
2748
-
2749
- // src/ui/drawer.tsx
2750
- import * as React43 from "react";
2751
- import { Drawer as DrawerPrimitive } from "vaul";
2752
- import { jsx as jsx45, jsxs as jsxs16 } from "react/jsx-runtime";
2753
- var Drawer = (_a) => {
2754
- var _b = _a, {
2755
- shouldScaleBackground = true
2756
- } = _b, props = __objRest(_b, [
2757
- "shouldScaleBackground"
2758
- ]);
2759
- return /* @__PURE__ */ jsx45(
2760
- DrawerPrimitive.Root,
2761
- __spreadValues({
2762
- shouldScaleBackground
2763
- }, props)
2764
- );
2765
- };
2766
- Drawer.displayName = "Drawer";
2767
- var DrawerTrigger = DrawerPrimitive.Trigger;
2768
- var DrawerPortal = DrawerPrimitive.Portal;
2769
- var DrawerClose = DrawerPrimitive.Close;
2770
- var DrawerOverlay = React43.forwardRef((_a, ref) => {
2771
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2772
- return /* @__PURE__ */ jsx45(
2773
- DrawerPrimitive.Overlay,
2774
- __spreadValues({
2775
- ref,
2776
- className: cn("fixed inset-0 z-50 bg-black/80", className)
2777
- }, props)
2778
- );
2779
- });
2780
- DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
2781
- var DrawerContent = React43.forwardRef((_a, ref) => {
2782
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2783
- return /* @__PURE__ */ jsxs16(DrawerPortal, { children: [
2784
- /* @__PURE__ */ jsx45(DrawerOverlay, {}),
2785
- /* @__PURE__ */ jsxs16(
2786
- DrawerPrimitive.Content,
2787
- __spreadProps(__spreadValues({
2788
- ref,
2789
- className: cn(
2790
- "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
2791
- className
2792
- )
2793
- }, props), {
2794
- children: [
2795
- /* @__PURE__ */ jsx45("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
2796
- children
2797
- ]
2798
- })
2799
- )
2800
- ] });
2801
- });
2802
- DrawerContent.displayName = "DrawerContent";
2803
- var DrawerHeader = (_a) => {
2804
- var _b = _a, {
2805
- className
2806
- } = _b, props = __objRest(_b, [
2807
- "className"
2808
- ]);
2809
- return /* @__PURE__ */ jsx45(
2810
- "div",
2811
- __spreadValues({
2812
- className: cn("grid gap-1.5 p-4 text-center sm:text-left", className)
2813
- }, props)
2814
- );
2815
- };
2816
- DrawerHeader.displayName = "DrawerHeader";
2817
- var DrawerFooter = (_a) => {
2818
- var _b = _a, {
2819
- className
2820
- } = _b, props = __objRest(_b, [
2821
- "className"
2822
- ]);
2823
- return /* @__PURE__ */ jsx45(
2824
- "div",
2825
- __spreadValues({
2826
- className: cn("mt-auto flex flex-col gap-2 p-4", className)
2827
- }, props)
2828
- );
2829
- };
2830
- DrawerFooter.displayName = "DrawerFooter";
2831
- var DrawerTitle = React43.forwardRef((_a, ref) => {
2832
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2833
- return /* @__PURE__ */ jsx45(
2834
- DrawerPrimitive.Title,
2835
- __spreadValues({
2836
- ref,
2837
- className: cn(
2838
- "text-lg font-semibold leading-none tracking-tight",
2839
- className
2840
- )
2841
- }, props)
2842
- );
2843
- });
2844
- DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
2845
- var DrawerDescription = React43.forwardRef((_a, ref) => {
2846
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2847
- return /* @__PURE__ */ jsx45(
2848
- DrawerPrimitive.Description,
2849
- __spreadValues({
2850
- ref,
2851
- className: cn("text-sm text-muted-foreground", className)
2852
- }, props)
2853
- );
2854
- });
2855
- DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
2856
-
2857
- // src/ui/dropdown-menu.tsx
2858
- import * as React44 from "react";
2859
- import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2860
- import { jsx as jsx46, jsxs as jsxs17 } from "react/jsx-runtime";
2861
- var DropdownMenu = DropdownMenuPrimitive.Root;
2862
- var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
2863
- var DropdownMenuGroup = DropdownMenuPrimitive.Group;
2864
- var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
2865
- var DropdownMenuSub = DropdownMenuPrimitive.Sub;
2866
- var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
2867
- var DropdownMenuSubTrigger = React44.forwardRef((_a, ref) => {
2868
- var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
2869
- return /* @__PURE__ */ jsxs17(
2870
- DropdownMenuPrimitive.SubTrigger,
2871
- __spreadProps(__spreadValues({
2872
- ref,
2873
- className: cn(
2874
- "flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2875
- inset && "pl-8",
2876
- className
2877
- )
2878
- }, props), {
2879
- children: [
2880
- children,
2881
- /* @__PURE__ */ jsx46(globalLucideIcons.ChevronRight, { className: "ml-auto" })
2882
- ]
2883
- })
2884
- );
2885
- });
2886
- DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
2887
- var DropdownMenuSubContent = React44.forwardRef((_a, ref) => {
2888
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2889
- return /* @__PURE__ */ jsx46(
2890
- DropdownMenuPrimitive.SubContent,
2891
- __spreadValues({
2892
- ref,
2893
- className: cn(
2894
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg 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",
2895
- className
2896
- )
2897
- }, props)
2898
- );
2899
- });
2900
- DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
2901
- var DropdownMenuContent = React44.forwardRef((_a, ref) => {
2902
- var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
2903
- return /* @__PURE__ */ jsx46(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx46(
2904
- DropdownMenuPrimitive.Content,
2905
- __spreadValues({
2906
- ref,
2907
- sideOffset,
2908
- className: cn(
2909
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md 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",
2910
- className
2911
- )
2912
- }, props)
2913
- ) });
2914
- });
2915
- DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
2916
- var DropdownMenuItem = React44.forwardRef((_a, ref) => {
2917
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
2918
- return /* @__PURE__ */ jsx46(
2919
- DropdownMenuPrimitive.Item,
2920
- __spreadValues({
2921
- ref,
2922
- className: cn(
2923
- "relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
2924
- inset && "pl-8",
2925
- className
2926
- )
2927
- }, props)
2928
- );
2929
- });
2930
- DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
2931
- var DropdownMenuCheckboxItem = React44.forwardRef((_a, ref) => {
2932
- var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
2933
- return /* @__PURE__ */ jsxs17(
2934
- DropdownMenuPrimitive.CheckboxItem,
2935
- __spreadProps(__spreadValues({
2936
- ref,
2937
- className: cn(
2938
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2939
- className
2940
- ),
2941
- checked
2942
- }, props), {
2943
- children: [
2944
- /* @__PURE__ */ jsx46("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx46(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx46(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
2945
- children
2946
- ]
2947
- })
2948
- );
2949
- });
2950
- DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
2951
- var DropdownMenuRadioItem = React44.forwardRef((_a, ref) => {
2952
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
2953
- return /* @__PURE__ */ jsxs17(
2954
- DropdownMenuPrimitive.RadioItem,
2955
- __spreadProps(__spreadValues({
2956
- ref,
2957
- className: cn(
2958
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
2959
- className
2960
- )
2961
- }, props), {
2962
- children: [
2963
- /* @__PURE__ */ jsx46("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx46(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx46(globalLucideIcons.Circle, { className: "h-2 w-2 fill-current" }) }) }),
2964
- children
2965
- ]
2966
- })
2967
- );
2968
- });
2969
- DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
2970
- var DropdownMenuLabel = React44.forwardRef((_a, ref) => {
2971
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
2972
- return /* @__PURE__ */ jsx46(
2973
- DropdownMenuPrimitive.Label,
2974
- __spreadValues({
2975
- ref,
2976
- className: cn(
2977
- "px-2 py-1.5 text-sm font-semibold",
2978
- inset && "pl-8",
2979
- className
2980
- )
2981
- }, props)
2982
- );
2983
- });
2984
- DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
2985
- var DropdownMenuSeparator = React44.forwardRef((_a, ref) => {
2986
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
2987
- return /* @__PURE__ */ jsx46(
2988
- DropdownMenuPrimitive.Separator,
2989
- __spreadValues({
2990
- ref,
2991
- className: cn("-mx-1 my-1 h-px bg-muted", className)
2992
- }, props)
2993
- );
2994
- });
2995
- DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
2996
- var DropdownMenuShortcut = (_a) => {
2997
- var _b = _a, {
2998
- className
2999
- } = _b, props = __objRest(_b, [
3000
- "className"
3001
- ]);
3002
- return /* @__PURE__ */ jsx46(
3003
- "span",
3004
- __spreadValues({
3005
- className: cn("ml-auto text-xs tracking-widest opacity-60", className)
3006
- }, props)
3007
- );
3008
- };
3009
- DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
3010
-
3011
- // src/ui/form.tsx
3012
- import * as React46 from "react";
3013
- import { Slot as Slot3 } from "@radix-ui/react-slot";
3014
- import {
3015
- Controller,
3016
- FormProvider,
3017
- useFormContext
3018
- } from "react-hook-form";
3019
-
3020
- // src/ui/label.tsx
3021
- import * as React45 from "react";
3022
- import * as LabelPrimitive from "@radix-ui/react-label";
3023
- import { cva as cva4 } from "class-variance-authority";
3024
- import { jsx as jsx47 } from "react/jsx-runtime";
3025
- var labelVariants = cva4(
3026
- "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
3027
- );
3028
- var Label3 = React45.forwardRef((_a, ref) => {
3029
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3030
- return /* @__PURE__ */ jsx47(
3031
- LabelPrimitive.Root,
3032
- __spreadValues({
3033
- ref,
3034
- className: cn(labelVariants(), className)
3035
- }, props)
3036
- );
3037
- });
3038
- Label3.displayName = LabelPrimitive.Root.displayName;
3039
-
3040
- // src/ui/form.tsx
3041
- import { jsx as jsx48 } from "react/jsx-runtime";
3042
- var Form = FormProvider;
3043
- var FormFieldContext = React46.createContext(
3044
- {}
3045
- );
3046
- var FormField = (_a) => {
3047
- var props = __objRest(_a, []);
3048
- return /* @__PURE__ */ jsx48(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx48(Controller, __spreadValues({}, props)) });
3049
- };
3050
- var useFormField = () => {
3051
- const fieldContext = React46.useContext(FormFieldContext);
3052
- const itemContext = React46.useContext(FormItemContext);
3053
- const { getFieldState, formState } = useFormContext();
3054
- const fieldState = getFieldState(fieldContext.name, formState);
3055
- if (!fieldContext) {
3056
- throw new Error("useFormField should be used within <FormField>");
3057
- }
3058
- const { id } = itemContext;
3059
- return __spreadValues({
3060
- id,
3061
- name: fieldContext.name,
3062
- formItemId: `${id}-form-item`,
3063
- formDescriptionId: `${id}-form-item-description`,
3064
- formMessageId: `${id}-form-item-message`
3065
- }, fieldState);
3066
- };
3067
- var FormItemContext = React46.createContext(
3068
- {}
3069
- );
3070
- var FormItem = React46.forwardRef((_a, ref) => {
3071
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3072
- const id = React46.useId();
3073
- return /* @__PURE__ */ jsx48(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx48("div", __spreadValues({ ref, className: cn("space-y-2", className) }, props)) });
3074
- });
3075
- FormItem.displayName = "FormItem";
3076
- var FormLabel = React46.forwardRef((_a, ref) => {
3077
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3078
- const { error, formItemId } = useFormField();
3079
- return /* @__PURE__ */ jsx48(
3080
- Label3,
3081
- __spreadValues({
3082
- ref,
3083
- className: cn(error && "text-destructive", className),
3084
- htmlFor: formItemId
3085
- }, props)
3086
- );
3087
- });
3088
- FormLabel.displayName = "FormLabel";
3089
- var FormControl = React46.forwardRef((_a, ref) => {
3090
- var props = __objRest(_a, []);
3091
- const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
3092
- return /* @__PURE__ */ jsx48(
3093
- Slot3,
3094
- __spreadValues({
3095
- ref,
3096
- id: formItemId,
3097
- "aria-describedby": !error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`,
3098
- "aria-invalid": !!error
3099
- }, props)
3100
- );
3101
- });
3102
- FormControl.displayName = "FormControl";
3103
- var FormDescription = React46.forwardRef((_a, ref) => {
3104
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3105
- const { formDescriptionId } = useFormField();
3106
- return /* @__PURE__ */ jsx48(
3107
- "p",
3108
- __spreadValues({
3109
- ref,
3110
- id: formDescriptionId,
3111
- className: cn("text-sm text-muted-foreground", className)
3112
- }, props)
3113
- );
3114
- });
3115
- FormDescription.displayName = "FormDescription";
3116
- var FormMessage = React46.forwardRef((_a, ref) => {
3117
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3118
- const { error, formMessageId } = useFormField();
3119
- const body = error ? String(error == null ? void 0 : error.message) : children;
3120
- if (!body) {
3121
- return null;
3122
- }
3123
- return /* @__PURE__ */ jsx48(
3124
- "p",
3125
- __spreadProps(__spreadValues({
3126
- ref,
3127
- id: formMessageId,
3128
- className: cn("text-sm font-medium text-destructive", className)
3129
- }, props), {
3130
- children: body
3131
- })
3132
- );
3133
- });
3134
- FormMessage.displayName = "FormMessage";
3135
-
3136
- // src/ui/hover-card.tsx
3137
- import * as React47 from "react";
3138
- import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
3139
- import { jsx as jsx49 } from "react/jsx-runtime";
3140
- var HoverCard = HoverCardPrimitive.Root;
3141
- var HoverCardTrigger = HoverCardPrimitive.Trigger;
3142
- var HoverCardContent = React47.forwardRef((_a, ref) => {
3143
- var _b = _a, { className, align = "center", sideOffset = 4 } = _b, props = __objRest(_b, ["className", "align", "sideOffset"]);
3144
- return /* @__PURE__ */ jsx49(
3145
- HoverCardPrimitive.Content,
3146
- __spreadValues({
3147
- ref,
3148
- align,
3149
- sideOffset,
3150
- className: cn(
3151
- "z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden 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",
3152
- className
3153
- )
3154
- }, props)
3155
- );
3156
- });
3157
- HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
3158
-
3159
- // src/ui/input-otp.tsx
3160
- import * as React48 from "react";
3161
- import { OTPInput, OTPInputContext } from "input-otp";
3162
- import { jsx as jsx50, jsxs as jsxs18 } from "react/jsx-runtime";
3163
- var InputOTP = React48.forwardRef((_a, ref) => {
3164
- var _b = _a, { className, containerClassName } = _b, props = __objRest(_b, ["className", "containerClassName"]);
3165
- return /* @__PURE__ */ jsx50(
3166
- OTPInput,
3167
- __spreadValues({
3168
- ref,
3169
- containerClassName: cn(
3170
- "flex items-center gap-2 has-disabled:opacity-50",
3171
- containerClassName
3172
- ),
3173
- className: cn("disabled:cursor-not-allowed", className)
3174
- }, props)
3175
- );
3176
- });
3177
- InputOTP.displayName = "InputOTP";
3178
- var InputOTPGroup = React48.forwardRef((_a, ref) => {
3179
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3180
- return /* @__PURE__ */ jsx50("div", __spreadValues({ ref, className: cn("flex items-center", className) }, props));
3181
- });
3182
- InputOTPGroup.displayName = "InputOTPGroup";
3183
- var InputOTPSlot = React48.forwardRef((_a, ref) => {
3184
- var _b = _a, { index, className } = _b, props = __objRest(_b, ["index", "className"]);
3185
- const inputOTPContext = React48.useContext(OTPInputContext);
3186
- const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
3187
- return /* @__PURE__ */ jsxs18(
3188
- "div",
3189
- __spreadProps(__spreadValues({
3190
- ref,
3191
- className: cn(
3192
- "relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
3193
- isActive && "z-10 ring-2 ring-ring ring-offset-background",
3194
- className
3195
- )
3196
- }, props), {
3197
- children: [
3198
- char,
3199
- hasFakeCaret && /* @__PURE__ */ jsx50("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx50("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
3200
- ]
3201
- })
3202
- );
3203
- });
3204
- InputOTPSlot.displayName = "InputOTPSlot";
3205
- var InputOTPSeparator = React48.forwardRef((_a, ref) => {
3206
- var props = __objRest(_a, []);
3207
- return /* @__PURE__ */ jsx50("div", __spreadProps(__spreadValues({ ref, role: "separator" }, props), { children: /* @__PURE__ */ jsx50(globalLucideIcons.Dot, {}) }));
3208
- });
3209
- InputOTPSeparator.displayName = "InputOTPSeparator";
3210
-
3211
- // src/ui/input.tsx
3212
- import * as React49 from "react";
3213
- import { jsx as jsx51 } from "react/jsx-runtime";
3214
- var Input = React49.forwardRef(
3215
- (_a, ref) => {
3216
- var _b = _a, { className, type } = _b, props = __objRest(_b, ["className", "type"]);
3217
- return /* @__PURE__ */ jsx51(
3218
- "input",
3219
- __spreadValues({
3220
- type,
3221
- className: cn(
3222
- "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
3223
- className
3224
- ),
3225
- ref
3226
- }, props)
3227
- );
3228
- }
3229
- );
3230
- Input.displayName = "Input";
3231
-
3232
- // src/ui/language-button.tsx
3233
- import * as React50 from "react";
3234
- import { jsx as jsx52 } from "react/jsx-runtime";
3235
- var LanguageButton = React50.forwardRef(
3236
- (_a, ref) => {
3237
- var _b = _a, { className, variant = "default", size = "default" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
3238
- return /* @__PURE__ */ jsx52(
3239
- "button",
3240
- __spreadValues({
3241
- className: cn(
3242
- "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background",
3243
- {
3244
- "bg-primary text-primary-foreground hover:bg-primary/90": variant === "default",
3245
- "hover:bg-accent hover:text-accent-foreground": variant === "ghost",
3246
- "h-10 px-4 py-2": size === "default",
3247
- "h-9 px-3": size === "sm",
3248
- "h-11 px-8": size === "lg",
3249
- "h-10 w-10": size === "icon"
3250
- },
3251
- className
3252
- ),
3253
- ref
3254
- }, props)
3255
- );
3256
- }
3257
- );
3258
- LanguageButton.displayName = "Button";
3259
-
3260
- // src/ui/menubar.tsx
3261
- import * as React51 from "react";
3262
- import * as MenubarPrimitive from "@radix-ui/react-menubar";
3263
- import { jsx as jsx53, jsxs as jsxs19 } from "react/jsx-runtime";
3264
- var MenubarMenu = MenubarPrimitive.Menu;
3265
- var MenubarGroup = MenubarPrimitive.Group;
3266
- var MenubarPortal = MenubarPrimitive.Portal;
3267
- var MenubarSub = MenubarPrimitive.Sub;
3268
- var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
3269
- var Menubar = React51.forwardRef((_a, ref) => {
3270
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3271
- return /* @__PURE__ */ jsx53(
3272
- MenubarPrimitive.Root,
3273
- __spreadValues({
3274
- ref,
3275
- className: cn(
3276
- "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
3277
- className
3278
- )
3279
- }, props)
3280
- );
3281
- });
3282
- Menubar.displayName = MenubarPrimitive.Root.displayName;
3283
- var MenubarTrigger = React51.forwardRef((_a, ref) => {
3284
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3285
- return /* @__PURE__ */ jsx53(
3286
- MenubarPrimitive.Trigger,
3287
- __spreadValues({
3288
- ref,
3289
- className: cn(
3290
- "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
3291
- className
3292
- )
3293
- }, props)
3294
- );
3295
- });
3296
- MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
3297
- var MenubarSubTrigger = React51.forwardRef((_a, ref) => {
3298
- var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
3299
- return /* @__PURE__ */ jsxs19(
3300
- MenubarPrimitive.SubTrigger,
3301
- __spreadProps(__spreadValues({
3302
- ref,
3303
- className: cn(
3304
- "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
3305
- inset && "pl-8",
3306
- className
3307
- )
3308
- }, props), {
3309
- children: [
3310
- children,
3311
- /* @__PURE__ */ jsx53(globalLucideIcons.ChevronRight, { className: "ml-auto h-4 w-4" })
3312
- ]
3313
- })
3314
- );
3315
- });
3316
- MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
3317
- var MenubarSubContent = React51.forwardRef((_a, ref) => {
3318
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3319
- return /* @__PURE__ */ jsx53(
3320
- MenubarPrimitive.SubContent,
3321
- __spreadValues({
3322
- ref,
3323
- className: cn(
3324
- "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground 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",
3325
- className
3326
- )
3327
- }, props)
3328
- );
3329
- });
3330
- MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
3331
- var MenubarContent = React51.forwardRef(
3332
- (_a, ref) => {
3333
- var _b = _a, { className, align = "start", alignOffset = -4, sideOffset = 8 } = _b, props = __objRest(_b, ["className", "align", "alignOffset", "sideOffset"]);
3334
- return /* @__PURE__ */ jsx53(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx53(
3335
- MenubarPrimitive.Content,
3336
- __spreadValues({
3337
- ref,
3338
- align,
3339
- alignOffset,
3340
- sideOffset,
3341
- className: cn(
3342
- "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in 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",
3343
- className
3344
- )
3345
- }, props)
3346
- ) });
3347
- }
3348
- );
3349
- MenubarContent.displayName = MenubarPrimitive.Content.displayName;
3350
- var MenubarItem = React51.forwardRef((_a, ref) => {
3351
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
3352
- return /* @__PURE__ */ jsx53(
3353
- MenubarPrimitive.Item,
3354
- __spreadValues({
3355
- ref,
3356
- className: cn(
3357
- "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
3358
- inset && "pl-8",
3359
- className
3360
- )
3361
- }, props)
3362
- );
3363
- });
3364
- MenubarItem.displayName = MenubarPrimitive.Item.displayName;
3365
- var MenubarCheckboxItem = React51.forwardRef((_a, ref) => {
3366
- var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
3367
- return /* @__PURE__ */ jsxs19(
3368
- MenubarPrimitive.CheckboxItem,
3369
- __spreadProps(__spreadValues({
3370
- ref,
3371
- className: cn(
3372
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
3373
- className
3374
- ),
3375
- checked
3376
- }, props), {
3377
- children: [
3378
- /* @__PURE__ */ jsx53("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx53(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx53(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
3379
- children
3380
- ]
3381
- })
3382
- );
3383
- });
3384
- MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
3385
- var MenubarRadioItem = React51.forwardRef((_a, ref) => {
3386
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3387
- return /* @__PURE__ */ jsxs19(
3388
- MenubarPrimitive.RadioItem,
3389
- __spreadProps(__spreadValues({
3390
- ref,
3391
- className: cn(
3392
- "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
3393
- className
3394
- )
3395
- }, props), {
3396
- children: [
3397
- /* @__PURE__ */ jsx53("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx53(MenubarPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx53(globalLucideIcons.Circle, { className: "h-2 w-2 fill-current" }) }) }),
3398
- children
3399
- ]
3400
- })
3401
- );
3402
- });
3403
- MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
3404
- var MenubarLabel = React51.forwardRef((_a, ref) => {
3405
- var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
3406
- return /* @__PURE__ */ jsx53(
3407
- MenubarPrimitive.Label,
3408
- __spreadValues({
3409
- ref,
3410
- className: cn(
3411
- "px-2 py-1.5 text-sm font-semibold",
3412
- inset && "pl-8",
3413
- className
3414
- )
3415
- }, props)
3416
- );
3417
- });
3418
- MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
3419
- var MenubarSeparator = React51.forwardRef((_a, ref) => {
3420
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3421
- return /* @__PURE__ */ jsx53(
3422
- MenubarPrimitive.Separator,
3423
- __spreadValues({
3424
- ref,
3425
- className: cn("-mx-1 my-1 h-px bg-muted", className)
3426
- }, props)
3427
- );
3428
- });
3429
- MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
3430
- var MenubarShortcut = (_a) => {
3431
- var _b = _a, {
3432
- className
3433
- } = _b, props = __objRest(_b, [
3434
- "className"
3435
- ]);
3436
- return /* @__PURE__ */ jsx53(
3437
- "span",
3438
- __spreadValues({
3439
- className: cn(
3440
- "ml-auto text-xs tracking-widest text-muted-foreground",
3441
- className
3442
- )
3443
- }, props)
3444
- );
3445
- };
3446
- MenubarShortcut.displayName = "MenubarShortcut";
3447
-
3448
- // src/ui/navigation-menu.tsx
3449
- import * as React52 from "react";
3450
- import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
3451
- import { cva as cva5 } from "class-variance-authority";
3452
- import { jsx as jsx54, jsxs as jsxs20 } from "react/jsx-runtime";
3453
- var NavigationMenu = React52.forwardRef((_a, ref) => {
3454
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3455
- return /* @__PURE__ */ jsxs20(
3456
- NavigationMenuPrimitive.Root,
3457
- __spreadProps(__spreadValues({
3458
- ref,
3459
- className: cn(
3460
- "relative z-10 flex max-w-max flex-1 items-center justify-center",
3461
- className
3462
- )
3463
- }, props), {
3464
- children: [
3465
- children,
3466
- /* @__PURE__ */ jsx54(NavigationMenuViewport, {})
3467
- ]
3468
- })
3469
- );
3470
- });
3471
- NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
3472
- var NavigationMenuList = React52.forwardRef((_a, ref) => {
3473
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3474
- return /* @__PURE__ */ jsx54(
3475
- NavigationMenuPrimitive.List,
3476
- __spreadValues({
3477
- ref,
3478
- className: cn(
3479
- "group flex flex-1 list-none items-center justify-center space-x-1",
3480
- className
3481
- )
3482
- }, props)
3483
- );
3484
- });
3485
- NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
3486
- var NavigationMenuItem = NavigationMenuPrimitive.Item;
3487
- var navigationMenuTriggerStyle = cva5(
3488
- "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-hidden disabled:pointer-events-none disabled:opacity-50 data-active:bg-accent/50 data-[state=open]:bg-accent/50"
3489
- );
3490
- var NavigationMenuTrigger = React52.forwardRef((_a, ref) => {
3491
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3492
- return /* @__PURE__ */ jsxs20(
3493
- NavigationMenuPrimitive.Trigger,
3494
- __spreadProps(__spreadValues({
3495
- ref,
3496
- className: cn(navigationMenuTriggerStyle(), "group", className)
3497
- }, props), {
3498
- children: [
3499
- children,
3500
- " ",
3501
- /* @__PURE__ */ jsx54(
3502
- globalLucideIcons.ChevronDown,
3503
- {
3504
- className: "relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180",
3505
- "aria-hidden": "true"
3506
- }
3507
- )
3508
- ]
3509
- })
3510
- );
3511
- });
3512
- NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
3513
- var NavigationMenuContent = React52.forwardRef((_a, ref) => {
3514
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3515
- return /* @__PURE__ */ jsx54(
3516
- NavigationMenuPrimitive.Content,
3517
- __spreadValues({
3518
- ref,
3519
- className: cn(
3520
- "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
3521
- className
3522
- )
3523
- }, props)
3524
- );
3525
- });
3526
- NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
3527
- var NavigationMenuLink = NavigationMenuPrimitive.Link;
3528
- var NavigationMenuViewport = React52.forwardRef((_a, ref) => {
3529
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3530
- return /* @__PURE__ */ jsx54("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx54(
3531
- NavigationMenuPrimitive.Viewport,
3532
- __spreadValues({
3533
- className: cn(
3534
- "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
3535
- className
3536
- ),
3537
- ref
3538
- }, props)
3539
- ) });
3540
- });
3541
- NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
3542
- var NavigationMenuIndicator = React52.forwardRef((_a, ref) => {
3543
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3544
- return /* @__PURE__ */ jsx54(
3545
- NavigationMenuPrimitive.Indicator,
3546
- __spreadProps(__spreadValues({
3547
- ref,
3548
- className: cn(
3549
- "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
3550
- className
3551
- )
3552
- }, props), {
3553
- children: /* @__PURE__ */ jsx54("div", { className: "relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" })
3554
- })
3555
- );
3556
- });
3557
- NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
3558
-
3559
- // src/ui/pagination.tsx
3560
- import * as React53 from "react";
3561
- import { jsx as jsx55, jsxs as jsxs21 } from "react/jsx-runtime";
3562
- var Pagination = (_a) => {
3563
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3564
- return /* @__PURE__ */ jsx55(
3565
- "nav",
3566
- __spreadValues({
3567
- role: "navigation",
3568
- "aria-label": "pagination",
3569
- className: cn("mx-auto flex w-full justify-center", className)
3570
- }, props)
3571
- );
3572
- };
3573
- Pagination.displayName = "Pagination";
3574
- var PaginationContent = React53.forwardRef((_a, ref) => {
3575
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3576
- return /* @__PURE__ */ jsx55(
3577
- "ul",
3578
- __spreadValues({
3579
- ref,
3580
- className: cn("flex flex-row items-center gap-1", className)
3581
- }, props)
3582
- );
3583
- });
3584
- PaginationContent.displayName = "PaginationContent";
3585
- var PaginationItem = React53.forwardRef((_a, ref) => {
3586
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3587
- return /* @__PURE__ */ jsx55("li", __spreadValues({ ref, className: cn("", className) }, props));
3588
- });
3589
- PaginationItem.displayName = "PaginationItem";
3590
- var PaginationLink = (_a) => {
3591
- var _b = _a, {
3592
- className,
3593
- isActive,
3594
- size = "icon"
3595
- } = _b, props = __objRest(_b, [
3596
- "className",
3597
- "isActive",
3598
- "size"
3599
- ]);
3600
- return /* @__PURE__ */ jsx55(
3601
- "a",
3602
- __spreadValues({
3603
- "aria-current": isActive ? "page" : void 0,
3604
- className: cn(
3605
- buttonVariants({
3606
- variant: isActive ? "outline" : "ghost",
3607
- size
3608
- }),
3609
- className
3610
- )
3611
- }, props)
3612
- );
3613
- };
3614
- PaginationLink.displayName = "PaginationLink";
3615
- var PaginationPrevious = (_a) => {
3616
- var _b = _a, {
3617
- className
3618
- } = _b, props = __objRest(_b, [
3619
- "className"
3620
- ]);
3621
- return /* @__PURE__ */ jsxs21(
3622
- PaginationLink,
3623
- __spreadProps(__spreadValues({
3624
- "aria-label": "Go to previous page",
3625
- size: "default",
3626
- className: cn("gap-1 pl-2.5", className)
3627
- }, props), {
3628
- children: [
3629
- /* @__PURE__ */ jsx55(globalLucideIcons.ChevronLeft, { className: "h-4 w-4" }),
3630
- /* @__PURE__ */ jsx55("span", { children: "Previous" })
3631
- ]
3632
- })
3633
- );
3634
- };
3635
- PaginationPrevious.displayName = "PaginationPrevious";
3636
- var PaginationNext = (_a) => {
3637
- var _b = _a, {
3638
- className
3639
- } = _b, props = __objRest(_b, [
3640
- "className"
3641
- ]);
3642
- return /* @__PURE__ */ jsxs21(
3643
- PaginationLink,
3644
- __spreadProps(__spreadValues({
3645
- "aria-label": "Go to next page",
3646
- size: "default",
3647
- className: cn("gap-1 pr-2.5", className)
3648
- }, props), {
3649
- children: [
3650
- /* @__PURE__ */ jsx55("span", { children: "Next" }),
3651
- /* @__PURE__ */ jsx55(globalLucideIcons.ChevronRight, { className: "h-4 w-4" })
3652
- ]
3653
- })
3654
- );
3655
- };
3656
- PaginationNext.displayName = "PaginationNext";
3657
- var PaginationEllipsis = (_a) => {
3658
- var _b = _a, {
3659
- className
3660
- } = _b, props = __objRest(_b, [
3661
- "className"
3662
- ]);
3663
- return /* @__PURE__ */ jsxs21(
3664
- "span",
3665
- __spreadProps(__spreadValues({
3666
- "aria-hidden": true,
3667
- className: cn("flex h-9 w-9 items-center justify-center", className)
3668
- }, props), {
3669
- children: [
3670
- /* @__PURE__ */ jsx55(globalLucideIcons.MoreHorizontal, { className: "h-4 w-4" }),
3671
- /* @__PURE__ */ jsx55("span", { className: "sr-only", children: "More pages" })
3672
- ]
3673
- })
3674
- );
3675
- };
3676
- PaginationEllipsis.displayName = "PaginationEllipsis";
3677
-
3678
- // src/ui/popover.tsx
3679
- import * as React54 from "react";
3680
- import * as PopoverPrimitive from "@radix-ui/react-popover";
3681
- import { jsx as jsx56 } from "react/jsx-runtime";
3682
- var Popover = PopoverPrimitive.Root;
3683
- var PopoverTrigger = PopoverPrimitive.Trigger;
3684
- var PopoverContent = React54.forwardRef((_a, ref) => {
3685
- var _b = _a, { className, align = "center", sideOffset = 4 } = _b, props = __objRest(_b, ["className", "align", "sideOffset"]);
3686
- return /* @__PURE__ */ jsx56(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx56(
3687
- PopoverPrimitive.Content,
3688
- __spreadValues({
3689
- ref,
3690
- align,
3691
- sideOffset,
3692
- className: cn(
3693
- "z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-hidden 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",
3694
- className
3695
- )
3696
- }, props)
3697
- ) });
3698
- });
3699
- PopoverContent.displayName = PopoverPrimitive.Content.displayName;
3700
-
3701
- // src/ui/progress.tsx
3702
- import * as React55 from "react";
3703
- import * as ProgressPrimitive from "@radix-ui/react-progress";
3704
- import { jsx as jsx57 } from "react/jsx-runtime";
3705
- var Progress = React55.forwardRef((_a, ref) => {
3706
- var _b = _a, { className, value } = _b, props = __objRest(_b, ["className", "value"]);
3707
- return /* @__PURE__ */ jsx57(
3708
- ProgressPrimitive.Root,
3709
- __spreadProps(__spreadValues({
3710
- ref,
3711
- className: cn(
3712
- "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
3713
- className
3714
- )
3715
- }, props), {
3716
- children: /* @__PURE__ */ jsx57(
3717
- ProgressPrimitive.Indicator,
3718
- {
3719
- className: "h-full w-full flex-1 bg-primary transition-all",
3720
- style: { transform: `translateX(-${100 - (value || 0)}%)` }
3721
- }
3722
- )
3723
- })
3724
- );
3725
- });
3726
- Progress.displayName = ProgressPrimitive.Root.displayName;
3727
-
3728
- // src/ui/radio-group.tsx
3729
- import * as React56 from "react";
3730
- import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
3731
- import { jsx as jsx58 } from "react/jsx-runtime";
3732
- var RadioGroup4 = React56.forwardRef((_a, ref) => {
3733
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3734
- return /* @__PURE__ */ jsx58(
3735
- RadioGroupPrimitive.Root,
3736
- __spreadProps(__spreadValues({
3737
- className: cn("grid gap-2", className)
3738
- }, props), {
3739
- ref
3740
- })
3741
- );
3742
- });
3743
- RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
3744
- var RadioGroupItem = React56.forwardRef((_a, ref) => {
3745
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3746
- return /* @__PURE__ */ jsx58(
3747
- RadioGroupPrimitive.Item,
3748
- __spreadProps(__spreadValues({
3749
- ref,
3750
- className: cn(
3751
- "aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
3752
- className
3753
- )
3754
- }, props), {
3755
- children: /* @__PURE__ */ jsx58(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: /* @__PURE__ */ jsx58(globalLucideIcons.Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) })
3756
- })
3757
- );
3758
- });
3759
- RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
3760
-
3761
- // src/ui/resizable.tsx
3762
- import * as ResizablePrimitive from "react-resizable-panels";
3763
- import { jsx as jsx59 } from "react/jsx-runtime";
3764
- var ResizablePanelGroup = (_a) => {
3765
- var _b = _a, {
3766
- className
3767
- } = _b, props = __objRest(_b, [
3768
- "className"
3769
- ]);
3770
- return /* @__PURE__ */ jsx59(
3771
- ResizablePrimitive.PanelGroup,
3772
- __spreadValues({
3773
- className: cn(
3774
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
3775
- className
3776
- )
3777
- }, props)
3778
- );
3779
- };
3780
- var ResizablePanel = ResizablePrimitive.Panel;
3781
- var ResizableHandle = (_a) => {
3782
- var _b = _a, {
3783
- withHandle,
3784
- className
3785
- } = _b, props = __objRest(_b, [
3786
- "withHandle",
3787
- "className"
3788
- ]);
3789
- return /* @__PURE__ */ jsx59(
3790
- ResizablePrimitive.PanelResizeHandle,
3791
- __spreadProps(__spreadValues({
3792
- className: cn(
3793
- "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
3794
- className
3795
- )
3796
- }, props), {
3797
- children: withHandle && /* @__PURE__ */ jsx59("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsx59(globalLucideIcons.GripVertical, { className: "h-2.5 w-2.5" }) })
3798
- })
3799
- );
3800
- };
3801
-
3802
- // src/ui/scroll-area.tsx
3803
- import * as React57 from "react";
3804
- import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
3805
- import { jsx as jsx60, jsxs as jsxs22 } from "react/jsx-runtime";
3806
- var ScrollArea = React57.forwardRef((_a, ref) => {
3807
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3808
- return /* @__PURE__ */ jsxs22(
3809
- ScrollAreaPrimitive.Root,
3810
- __spreadProps(__spreadValues({
3811
- ref,
3812
- className: cn("relative overflow-hidden", className)
3813
- }, props), {
3814
- children: [
3815
- /* @__PURE__ */ jsx60(ScrollAreaPrimitive.Viewport, { className: "h-full w-full rounded-[inherit]", children }),
3816
- /* @__PURE__ */ jsx60(ScrollBar, {}),
3817
- /* @__PURE__ */ jsx60(ScrollAreaPrimitive.Corner, {})
3818
- ]
3819
- })
3820
- );
3821
- });
3822
- ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
3823
- var ScrollBar = React57.forwardRef((_a, ref) => {
3824
- var _b = _a, { className, orientation = "vertical" } = _b, props = __objRest(_b, ["className", "orientation"]);
3825
- return /* @__PURE__ */ jsx60(
3826
- ScrollAreaPrimitive.ScrollAreaScrollbar,
3827
- __spreadProps(__spreadValues({
3828
- ref,
3829
- orientation,
3830
- className: cn(
3831
- "flex touch-none select-none transition-colors",
3832
- orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
3833
- orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
3834
- className
3835
- )
3836
- }, props), {
3837
- children: /* @__PURE__ */ jsx60(ScrollAreaPrimitive.ScrollAreaThumb, { className: "relative flex-1 rounded-full bg-border" })
3838
- })
3839
- );
3840
- });
3841
- ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
3842
-
3843
- // src/ui/select.tsx
3844
- import * as React58 from "react";
3845
- import * as SelectPrimitive from "@radix-ui/react-select";
3846
- import { jsx as jsx61, jsxs as jsxs23 } from "react/jsx-runtime";
3847
- var Select = SelectPrimitive.Root;
3848
- var SelectGroup = SelectPrimitive.Group;
3849
- var SelectValue = SelectPrimitive.Value;
3850
- var SelectTrigger = React58.forwardRef((_a, ref) => {
3851
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3852
- return /* @__PURE__ */ jsxs23(
3853
- SelectPrimitive.Trigger,
3854
- __spreadProps(__spreadValues({
3855
- ref,
3856
- className: cn(
3857
- "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
3858
- className
3859
- )
3860
- }, props), {
3861
- children: [
3862
- children,
3863
- /* @__PURE__ */ jsx61(SelectPrimitive.Icon, { asChild: true, children: /* @__PURE__ */ jsx61(globalLucideIcons.ChevronDown, { className: "h-4 w-4 opacity-50" }) })
3864
- ]
3865
- })
3866
- );
3867
- });
3868
- SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
3869
- var SelectScrollUpButton = React58.forwardRef((_a, ref) => {
3870
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3871
- return /* @__PURE__ */ jsx61(
3872
- SelectPrimitive.ScrollUpButton,
3873
- __spreadProps(__spreadValues({
3874
- ref,
3875
- className: cn(
3876
- "flex cursor-default items-center justify-center py-1",
3877
- className
3878
- )
3879
- }, props), {
3880
- children: /* @__PURE__ */ jsx61(globalLucideIcons.ChevronUp, { className: "h-4 w-4" })
3881
- })
3882
- );
3883
- });
3884
- SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
3885
- var SelectScrollDownButton = React58.forwardRef((_a, ref) => {
3886
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3887
- return /* @__PURE__ */ jsx61(
3888
- SelectPrimitive.ScrollDownButton,
3889
- __spreadProps(__spreadValues({
3890
- ref,
3891
- className: cn(
3892
- "flex cursor-default items-center justify-center py-1",
3893
- className
3894
- )
3895
- }, props), {
3896
- children: /* @__PURE__ */ jsx61(globalLucideIcons.ChevronDown, { className: "h-4 w-4" })
3897
- })
3898
- );
3899
- });
3900
- SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
3901
- var SelectContent = React58.forwardRef((_a, ref) => {
3902
- var _b = _a, { className, children, position = "popper" } = _b, props = __objRest(_b, ["className", "children", "position"]);
3903
- return /* @__PURE__ */ jsx61(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs23(
3904
- SelectPrimitive.Content,
3905
- __spreadProps(__spreadValues({
3906
- ref,
3907
- className: cn(
3908
- "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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",
3909
- position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
3910
- className
3911
- ),
3912
- position
3913
- }, props), {
3914
- children: [
3915
- /* @__PURE__ */ jsx61(SelectScrollUpButton, {}),
3916
- /* @__PURE__ */ jsx61(
3917
- SelectPrimitive.Viewport,
3918
- {
3919
- className: cn(
3920
- "p-1",
3921
- position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
3922
- ),
3923
- children
3924
- }
3925
- ),
3926
- /* @__PURE__ */ jsx61(SelectScrollDownButton, {})
3927
- ]
3928
- })
3929
- ) });
3930
- });
3931
- SelectContent.displayName = SelectPrimitive.Content.displayName;
3932
- var SelectLabel = React58.forwardRef((_a, ref) => {
3933
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3934
- return /* @__PURE__ */ jsx61(
3935
- SelectPrimitive.Label,
3936
- __spreadValues({
3937
- ref,
3938
- className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)
3939
- }, props)
3940
- );
3941
- });
3942
- SelectLabel.displayName = SelectPrimitive.Label.displayName;
3943
- var SelectItem = React58.forwardRef((_a, ref) => {
3944
- var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
3945
- return /* @__PURE__ */ jsxs23(
3946
- SelectPrimitive.Item,
3947
- __spreadProps(__spreadValues({
3948
- ref,
3949
- className: cn(
3950
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-hidden focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
3951
- className
3952
- )
3953
- }, props), {
3954
- children: [
3955
- /* @__PURE__ */ jsx61("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx61(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx61(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
3956
- /* @__PURE__ */ jsx61(SelectPrimitive.ItemText, { children })
3957
- ]
3958
- })
3959
- );
3960
- });
3961
- SelectItem.displayName = SelectPrimitive.Item.displayName;
3962
- var SelectSeparator = React58.forwardRef((_a, ref) => {
3963
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
3964
- return /* @__PURE__ */ jsx61(
3965
- SelectPrimitive.Separator,
3966
- __spreadValues({
3967
- ref,
3968
- className: cn("-mx-1 my-1 h-px bg-muted", className)
3969
- }, props)
3970
- );
3971
- });
3972
- SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
3973
-
3974
- // src/ui/separator.tsx
3975
- import * as React59 from "react";
3976
- import * as SeparatorPrimitive from "@radix-ui/react-separator";
3977
- import { jsx as jsx62 } from "react/jsx-runtime";
3978
- var Separator5 = React59.forwardRef(
3979
- (_a, ref) => {
3980
- var _b = _a, { className, orientation = "horizontal", decorative = true } = _b, props = __objRest(_b, ["className", "orientation", "decorative"]);
3981
- return /* @__PURE__ */ jsx62(
3982
- SeparatorPrimitive.Root,
3983
- __spreadValues({
3984
- ref,
3985
- decorative,
3986
- orientation,
3987
- className: cn(
3988
- "shrink-0 bg-border",
3989
- orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
3990
- className
3991
- )
3992
- }, props)
3993
- );
3994
- }
3995
- );
3996
- Separator5.displayName = SeparatorPrimitive.Root.displayName;
3997
-
3998
- // src/ui/sheet.tsx
3999
- import * as React60 from "react";
4000
- import * as SheetPrimitive from "@radix-ui/react-dialog";
4001
- import { cva as cva6 } from "class-variance-authority";
4002
- import { jsx as jsx63, jsxs as jsxs24 } from "react/jsx-runtime";
4003
- var Sheet = SheetPrimitive.Root;
4004
- var SheetTrigger = SheetPrimitive.Trigger;
4005
- var SheetClose = SheetPrimitive.Close;
4006
- var SheetPortal = SheetPrimitive.Portal;
4007
- var SheetOverlay = React60.forwardRef((_a, ref) => {
4008
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4009
- return /* @__PURE__ */ jsx63(
4010
- SheetPrimitive.Overlay,
4011
- __spreadProps(__spreadValues({
4012
- className: cn(
4013
- "fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
4014
- className
4015
- )
4016
- }, props), {
4017
- ref
4018
- })
4019
- );
4020
- });
4021
- SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
4022
- var sheetVariants = cva6(
4023
- "fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",
4024
- {
4025
- variants: {
4026
- side: {
4027
- top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",
4028
- bottom: "inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",
4029
- left: "inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",
4030
- right: "inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"
4031
- }
4032
- },
4033
- defaultVariants: {
4034
- side: "right"
4035
- }
4036
- }
4037
- );
4038
- var SheetContent = React60.forwardRef((_a, ref) => {
4039
- var _b = _a, { side = "right", className, children } = _b, props = __objRest(_b, ["side", "className", "children"]);
4040
- return /* @__PURE__ */ jsxs24(SheetPortal, { children: [
4041
- /* @__PURE__ */ jsx63(SheetOverlay, {}),
4042
- /* @__PURE__ */ jsxs24(
4043
- SheetPrimitive.Content,
4044
- __spreadProps(__spreadValues({
4045
- ref,
4046
- className: cn(sheetVariants({ side }), className)
4047
- }, props), {
4048
- children: [
4049
- children,
4050
- /* @__PURE__ */ jsxs24(SheetPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
4051
- /* @__PURE__ */ jsx63(globalLucideIcons.X, { className: "h-4 w-4" }),
4052
- /* @__PURE__ */ jsx63("span", { className: "sr-only", children: "Close" })
4053
- ] })
4054
- ]
4055
- })
4056
- )
4057
- ] });
4058
- });
4059
- SheetContent.displayName = SheetPrimitive.Content.displayName;
4060
- var SheetHeader = (_a) => {
4061
- var _b = _a, {
4062
- className
4063
- } = _b, props = __objRest(_b, [
4064
- "className"
4065
- ]);
4066
- return /* @__PURE__ */ jsx63(
4067
- "div",
4068
- __spreadValues({
4069
- className: cn(
4070
- "flex flex-col space-y-2 text-center sm:text-left",
4071
- className
4072
- )
4073
- }, props)
4074
- );
4075
- };
4076
- SheetHeader.displayName = "SheetHeader";
4077
- var SheetFooter = (_a) => {
4078
- var _b = _a, {
4079
- className
4080
- } = _b, props = __objRest(_b, [
4081
- "className"
4082
- ]);
4083
- return /* @__PURE__ */ jsx63(
4084
- "div",
4085
- __spreadValues({
4086
- className: cn(
4087
- "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
4088
- className
4089
- )
4090
- }, props)
4091
- );
4092
- };
4093
- SheetFooter.displayName = "SheetFooter";
4094
- var SheetTitle = React60.forwardRef((_a, ref) => {
4095
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4096
- return /* @__PURE__ */ jsx63(
4097
- SheetPrimitive.Title,
4098
- __spreadValues({
4099
- ref,
4100
- className: cn("text-lg font-semibold text-foreground", className)
4101
- }, props)
4102
- );
4103
- });
4104
- SheetTitle.displayName = SheetPrimitive.Title.displayName;
4105
- var SheetDescription = React60.forwardRef((_a, ref) => {
4106
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4107
- return /* @__PURE__ */ jsx63(
4108
- SheetPrimitive.Description,
4109
- __spreadValues({
4110
- ref,
4111
- className: cn("text-sm text-muted-foreground", className)
4112
- }, props)
4113
- );
4114
- });
4115
- SheetDescription.displayName = SheetPrimitive.Description.displayName;
4116
-
4117
- // src/ui/sidebar.tsx
4118
- import * as React63 from "react";
4119
- import { Slot as Slot4 } from "@radix-ui/react-slot";
4120
- import { cva as cva7 } from "class-variance-authority";
4121
-
4122
- // src/ui/use-mobile.tsx
4123
- import * as React61 from "react";
4124
- var MOBILE_BREAKPOINT = 768;
4125
- function useIsMobile() {
4126
- const [isMobile, setIsMobile] = React61.useState(void 0);
4127
- React61.useEffect(() => {
4128
- const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
4129
- const onChange = () => {
4130
- setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
4131
- };
4132
- mql.addEventListener("change", onChange);
4133
- setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
4134
- return () => mql.removeEventListener("change", onChange);
4135
- }, []);
4136
- return !!isMobile;
4137
- }
4138
-
4139
- // src/ui/skeleton.tsx
4140
- import { jsx as jsx64 } from "react/jsx-runtime";
4141
- function Skeleton(_a) {
4142
- var _b = _a, {
4143
- className
4144
- } = _b, props = __objRest(_b, [
4145
- "className"
4146
- ]);
4147
- return /* @__PURE__ */ jsx64(
4148
- "div",
4149
- __spreadValues({
4150
- className: cn("animate-pulse rounded-md bg-muted", className)
4151
- }, props)
4152
- );
4153
- }
4154
-
4155
- // src/ui/tooltip.tsx
4156
- import * as React62 from "react";
4157
- import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4158
- import { jsx as jsx65 } from "react/jsx-runtime";
4159
- var TooltipProvider = TooltipPrimitive.Provider;
4160
- var Tooltip2 = TooltipPrimitive.Root;
4161
- var TooltipTrigger = TooltipPrimitive.Trigger;
4162
- var TooltipContent = React62.forwardRef((_a, ref) => {
4163
- var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
4164
- return /* @__PURE__ */ jsx65(
4165
- TooltipPrimitive.Content,
4166
- __spreadValues({
4167
- ref,
4168
- sideOffset,
4169
- className: cn(
4170
- "z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md 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",
4171
- className
4172
- )
4173
- }, props)
4174
- );
4175
- });
4176
- TooltipContent.displayName = TooltipPrimitive.Content.displayName;
4177
-
4178
- // src/ui/sidebar.tsx
4179
- import { jsx as jsx66, jsxs as jsxs25 } from "react/jsx-runtime";
4180
- var SIDEBAR_COOKIE_NAME = "sidebar:state";
4181
- var SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
4182
- var SIDEBAR_WIDTH = "16rem";
4183
- var SIDEBAR_WIDTH_MOBILE = "18rem";
4184
- var SIDEBAR_WIDTH_ICON = "3rem";
4185
- var SIDEBAR_KEYBOARD_SHORTCUT = "b";
4186
- var SidebarContext = React63.createContext(null);
4187
- function useSidebar() {
4188
- const context = React63.useContext(SidebarContext);
4189
- if (!context) {
4190
- throw new Error("useSidebar must be used within a SidebarProvider.");
4191
- }
4192
- return context;
4193
- }
4194
- var SidebarProvider = React63.forwardRef(
4195
- (_a, ref) => {
4196
- var _b = _a, {
4197
- defaultOpen = true,
4198
- open: openProp,
4199
- onOpenChange: setOpenProp,
4200
- className,
4201
- style,
4202
- children
4203
- } = _b, props = __objRest(_b, [
4204
- "defaultOpen",
4205
- "open",
4206
- "onOpenChange",
4207
- "className",
4208
- "style",
4209
- "children"
4210
- ]);
4211
- const isMobile = useIsMobile();
4212
- const [openMobile, setOpenMobile] = React63.useState(false);
4213
- const [_open, _setOpen] = React63.useState(defaultOpen);
4214
- const open = openProp != null ? openProp : _open;
4215
- const setOpen = React63.useCallback(
4216
- (value) => {
4217
- const openState = typeof value === "function" ? value(open) : value;
4218
- if (setOpenProp) {
4219
- setOpenProp(openState);
4220
- } else {
4221
- _setOpen(openState);
4222
- }
4223
- document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;
4224
- },
4225
- [setOpenProp, open]
4226
- );
4227
- const toggleSidebar = React63.useCallback(() => {
4228
- return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
4229
- }, [isMobile, setOpen, setOpenMobile]);
4230
- React63.useEffect(() => {
4231
- const handleKeyDown = (event) => {
4232
- if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
4233
- event.preventDefault();
4234
- toggleSidebar();
4235
- }
4236
- };
4237
- window.addEventListener("keydown", handleKeyDown);
4238
- return () => window.removeEventListener("keydown", handleKeyDown);
4239
- }, [toggleSidebar]);
4240
- const state = open ? "expanded" : "collapsed";
4241
- const contextValue = React63.useMemo(
4242
- () => ({
4243
- state,
4244
- open,
4245
- setOpen,
4246
- isMobile,
4247
- openMobile,
4248
- setOpenMobile,
4249
- toggleSidebar
4250
- }),
4251
- [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]
4252
- );
4253
- return /* @__PURE__ */ jsx66(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx66(TooltipProvider, { delayDuration: 0, children: /* @__PURE__ */ jsx66(
4254
- "div",
4255
- __spreadProps(__spreadValues({
4256
- style: __spreadValues({
4257
- "--sidebar-width": SIDEBAR_WIDTH,
4258
- "--sidebar-width-icon": SIDEBAR_WIDTH_ICON
4259
- }, style),
4260
- className: cn(
4261
- "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",
4262
- className
4263
- ),
4264
- ref
4265
- }, props), {
4266
- children
4267
- })
4268
- ) }) });
4269
- }
4270
- );
4271
- SidebarProvider.displayName = "SidebarProvider";
4272
- var Sidebar = React63.forwardRef(
4273
- (_a, ref) => {
4274
- var _b = _a, {
4275
- side = "left",
4276
- variant = "sidebar",
4277
- collapsible = "offcanvas",
4278
- className,
4279
- children
4280
- } = _b, props = __objRest(_b, [
4281
- "side",
4282
- "variant",
4283
- "collapsible",
4284
- "className",
4285
- "children"
4286
- ]);
4287
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
4288
- if (collapsible === "none") {
4289
- return /* @__PURE__ */ jsx66(
4290
- "div",
4291
- __spreadProps(__spreadValues({
4292
- className: cn(
4293
- "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",
4294
- className
4295
- ),
4296
- ref
4297
- }, props), {
4298
- children
4299
- })
4300
- );
4301
- }
4302
- if (isMobile) {
4303
- return /* @__PURE__ */ jsx66(Sheet, __spreadProps(__spreadValues({ open: openMobile, onOpenChange: setOpenMobile }, props), { children: /* @__PURE__ */ jsx66(
4304
- SheetContent,
4305
- {
4306
- "data-sidebar": "sidebar",
4307
- "data-mobile": "true",
4308
- className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
4309
- style: {
4310
- "--sidebar-width": SIDEBAR_WIDTH_MOBILE
4311
- },
4312
- side,
4313
- children: /* @__PURE__ */ jsx66("div", { className: "flex h-full w-full flex-col", children })
4314
- }
4315
- ) }));
4316
- }
4317
- return /* @__PURE__ */ jsxs25(
4318
- "div",
4319
- {
4320
- ref,
4321
- className: "group peer hidden md:block text-sidebar-foreground",
4322
- "data-state": state,
4323
- "data-collapsible": state === "collapsed" ? collapsible : "",
4324
- "data-variant": variant,
4325
- "data-side": side,
4326
- children: [
4327
- /* @__PURE__ */ jsx66(
4328
- "div",
4329
- {
4330
- className: cn(
4331
- "duration-200 relative h-svh w-(--sidebar-width) bg-transparent transition-[width] ease-linear",
4332
- "group-data-[collapsible=offcanvas]:w-0",
4333
- "group-data-[side=right]:rotate-180",
4334
- variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
4335
- )
4336
- }
4337
- ),
4338
- /* @__PURE__ */ jsx66(
4339
- "div",
4340
- __spreadProps(__spreadValues({
4341
- className: cn(
4342
- "duration-200 fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] ease-linear md:flex",
4343
- side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
4344
- // Adjust the padding for floating and inset variants.
4345
- variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
4346
- className
4347
- )
4348
- }, props), {
4349
- children: /* @__PURE__ */ jsx66(
4350
- "div",
4351
- {
4352
- "data-sidebar": "sidebar",
4353
- className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
4354
- children
4355
- }
4356
- )
4357
- })
4358
- )
4359
- ]
4360
- }
4361
- );
4362
- }
4363
- );
4364
- Sidebar.displayName = "Sidebar";
4365
- var SidebarTrigger = React63.forwardRef((_a, ref) => {
4366
- var _b = _a, { className, onClick } = _b, props = __objRest(_b, ["className", "onClick"]);
4367
- const { toggleSidebar } = useSidebar();
4368
- return /* @__PURE__ */ jsxs25(
4369
- Button,
4370
- __spreadProps(__spreadValues({
4371
- ref,
4372
- "data-sidebar": "trigger",
4373
- variant: "ghost",
4374
- size: "icon",
4375
- className: cn("h-7 w-7", className),
4376
- onClick: (event) => {
4377
- onClick == null ? void 0 : onClick(event);
4378
- toggleSidebar();
4379
- }
4380
- }, props), {
4381
- children: [
4382
- /* @__PURE__ */ jsx66(globalLucideIcons.PanelLeft, {}),
4383
- /* @__PURE__ */ jsx66("span", { className: "sr-only", children: "Toggle Sidebar" })
4384
- ]
4385
- })
4386
- );
4387
- });
4388
- SidebarTrigger.displayName = "SidebarTrigger";
4389
- var SidebarRail = React63.forwardRef((_a, ref) => {
4390
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4391
- const { toggleSidebar } = useSidebar();
4392
- return /* @__PURE__ */ jsx66(
4393
- "button",
4394
- __spreadValues({
4395
- ref,
4396
- "data-sidebar": "rail",
4397
- "aria-label": "Toggle Sidebar",
4398
- tabIndex: -1,
4399
- onClick: toggleSidebar,
4400
- title: "Toggle Sidebar",
4401
- className: cn(
4402
- "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
4403
- "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
4404
- "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
4405
- "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar",
4406
- "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
4407
- "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
4408
- className
4409
- )
4410
- }, props)
4411
- );
4412
- });
4413
- SidebarRail.displayName = "SidebarRail";
4414
- var SidebarInset = React63.forwardRef((_a, ref) => {
4415
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4416
- return /* @__PURE__ */ jsx66(
4417
- "main",
4418
- __spreadValues({
4419
- ref,
4420
- className: cn(
4421
- "relative flex min-h-svh flex-1 flex-col bg-background",
4422
- "peer-data-[variant=inset]:min-h-[calc(100svh-(--spacing(4)))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",
4423
- className
4424
- )
4425
- }, props)
4426
- );
4427
- });
4428
- SidebarInset.displayName = "SidebarInset";
4429
- var SidebarInput = React63.forwardRef((_a, ref) => {
4430
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4431
- return /* @__PURE__ */ jsx66(
4432
- Input,
4433
- __spreadValues({
4434
- ref,
4435
- "data-sidebar": "input",
4436
- className: cn(
4437
- "h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
4438
- className
4439
- )
4440
- }, props)
4441
- );
4442
- });
4443
- SidebarInput.displayName = "SidebarInput";
4444
- var SidebarHeader = React63.forwardRef((_a, ref) => {
4445
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4446
- return /* @__PURE__ */ jsx66(
4447
- "div",
4448
- __spreadValues({
4449
- ref,
4450
- "data-sidebar": "header",
4451
- className: cn("flex flex-col gap-2 p-2", className)
4452
- }, props)
4453
- );
4454
- });
4455
- SidebarHeader.displayName = "SidebarHeader";
4456
- var SidebarFooter = React63.forwardRef((_a, ref) => {
4457
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4458
- return /* @__PURE__ */ jsx66(
4459
- "div",
4460
- __spreadValues({
4461
- ref,
4462
- "data-sidebar": "footer",
4463
- className: cn("flex flex-col gap-2 p-2", className)
4464
- }, props)
4465
- );
4466
- });
4467
- SidebarFooter.displayName = "SidebarFooter";
4468
- var SidebarSeparator = React63.forwardRef((_a, ref) => {
4469
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4470
- return /* @__PURE__ */ jsx66(
4471
- Separator5,
4472
- __spreadValues({
4473
- ref,
4474
- "data-sidebar": "separator",
4475
- className: cn("mx-2 w-auto bg-sidebar-border", className)
4476
- }, props)
4477
- );
4478
- });
4479
- SidebarSeparator.displayName = "SidebarSeparator";
4480
- var SidebarContent = React63.forwardRef((_a, ref) => {
4481
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4482
- return /* @__PURE__ */ jsx66(
4483
- "div",
4484
- __spreadValues({
4485
- ref,
4486
- "data-sidebar": "content",
4487
- className: cn(
4488
- "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
4489
- className
4490
- )
4491
- }, props)
4492
- );
4493
- });
4494
- SidebarContent.displayName = "SidebarContent";
4495
- var SidebarGroup = React63.forwardRef((_a, ref) => {
4496
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4497
- return /* @__PURE__ */ jsx66(
4498
- "div",
4499
- __spreadValues({
4500
- ref,
4501
- "data-sidebar": "group",
4502
- className: cn("relative flex w-full min-w-0 flex-col p-2", className)
4503
- }, props)
4504
- );
4505
- });
4506
- SidebarGroup.displayName = "SidebarGroup";
4507
- var SidebarGroupLabel = React63.forwardRef((_a, ref) => {
4508
- var _b = _a, { className, asChild = false } = _b, props = __objRest(_b, ["className", "asChild"]);
4509
- const Comp = asChild ? Slot4 : "div";
4510
- return /* @__PURE__ */ jsx66(
4511
- Comp,
4512
- __spreadValues({
4513
- ref,
4514
- "data-sidebar": "group-label",
4515
- className: cn(
4516
- "duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-hidden ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
4517
- "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
4518
- className
4519
- )
4520
- }, props)
4521
- );
4522
- });
4523
- SidebarGroupLabel.displayName = "SidebarGroupLabel";
4524
- var SidebarGroupAction = React63.forwardRef((_a, ref) => {
4525
- var _b = _a, { className, asChild = false } = _b, props = __objRest(_b, ["className", "asChild"]);
4526
- const Comp = asChild ? Slot4 : "button";
4527
- return /* @__PURE__ */ jsx66(
4528
- Comp,
4529
- __spreadValues({
4530
- ref,
4531
- "data-sidebar": "group-action",
4532
- className: cn(
4533
- "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
4534
- // Increases the hit area of the button on mobile.
4535
- "after:absolute after:-inset-2 md:after:hidden",
4536
- "group-data-[collapsible=icon]:hidden",
4537
- className
4538
- )
4539
- }, props)
4540
- );
4541
- });
4542
- SidebarGroupAction.displayName = "SidebarGroupAction";
4543
- var SidebarGroupContent = React63.forwardRef((_a, ref) => {
4544
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4545
- return /* @__PURE__ */ jsx66(
4546
- "div",
4547
- __spreadValues({
4548
- ref,
4549
- "data-sidebar": "group-content",
4550
- className: cn("w-full text-sm", className)
4551
- }, props)
4552
- );
4553
- });
4554
- SidebarGroupContent.displayName = "SidebarGroupContent";
4555
- var SidebarMenu = React63.forwardRef((_a, ref) => {
4556
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4557
- return /* @__PURE__ */ jsx66(
4558
- "ul",
4559
- __spreadValues({
4560
- ref,
4561
- "data-sidebar": "menu",
4562
- className: cn("flex w-full min-w-0 flex-col gap-1", className)
4563
- }, props)
4564
- );
4565
- });
4566
- SidebarMenu.displayName = "SidebarMenu";
4567
- var SidebarMenuItem = React63.forwardRef((_a, ref) => {
4568
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4569
- return /* @__PURE__ */ jsx66(
4570
- "li",
4571
- __spreadValues({
4572
- ref,
4573
- "data-sidebar": "menu-item",
4574
- className: cn("group/menu-item relative", className)
4575
- }, props)
4576
- );
4577
- });
4578
- SidebarMenuItem.displayName = "SidebarMenuItem";
4579
- var sidebarMenuButtonVariants = cva7(
4580
- "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
4581
- {
4582
- variants: {
4583
- variant: {
4584
- default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
4585
- outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
4586
- },
4587
- size: {
4588
- default: "h-8 text-sm",
4589
- sm: "h-7 text-xs",
4590
- lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
4591
- }
4592
- },
4593
- defaultVariants: {
4594
- variant: "default",
4595
- size: "default"
4596
- }
4597
- }
4598
- );
4599
- var SidebarMenuButton = React63.forwardRef(
4600
- (_a, ref) => {
4601
- var _b = _a, {
4602
- asChild = false,
4603
- isActive = false,
4604
- variant = "default",
4605
- size = "default",
4606
- tooltip,
4607
- className
4608
- } = _b, props = __objRest(_b, [
4609
- "asChild",
4610
- "isActive",
4611
- "variant",
4612
- "size",
4613
- "tooltip",
4614
- "className"
4615
- ]);
4616
- const Comp = asChild ? Slot4 : "button";
4617
- const { isMobile, state } = useSidebar();
4618
- const button = /* @__PURE__ */ jsx66(
4619
- Comp,
4620
- __spreadValues({
4621
- ref,
4622
- "data-sidebar": "menu-button",
4623
- "data-size": size,
4624
- "data-active": isActive,
4625
- className: cn(sidebarMenuButtonVariants({ variant, size }), className)
4626
- }, props)
4627
- );
4628
- if (!tooltip) {
4629
- return button;
4630
- }
4631
- if (typeof tooltip === "string") {
4632
- tooltip = {
4633
- children: tooltip
4634
- };
4635
- }
4636
- return /* @__PURE__ */ jsxs25(Tooltip2, { children: [
4637
- /* @__PURE__ */ jsx66(TooltipTrigger, { asChild: true, children: button }),
4638
- /* @__PURE__ */ jsx66(
4639
- TooltipContent,
4640
- __spreadValues({
4641
- side: "right",
4642
- align: "center",
4643
- hidden: state !== "collapsed" || isMobile
4644
- }, tooltip)
4645
- )
4646
- ] });
4647
- }
4648
- );
4649
- SidebarMenuButton.displayName = "SidebarMenuButton";
4650
- var SidebarMenuAction = React63.forwardRef((_a, ref) => {
4651
- var _b = _a, { className, asChild = false, showOnHover = false } = _b, props = __objRest(_b, ["className", "asChild", "showOnHover"]);
4652
- const Comp = asChild ? Slot4 : "button";
4653
- return /* @__PURE__ */ jsx66(
4654
- Comp,
4655
- __spreadValues({
4656
- ref,
4657
- "data-sidebar": "menu-action",
4658
- className: cn(
4659
- "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-hidden ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
4660
- // Increases the hit area of the button on mobile.
4661
- "after:absolute after:-inset-2 md:after:hidden",
4662
- "peer-data-[size=sm]/menu-button:top-1",
4663
- "peer-data-[size=default]/menu-button:top-1.5",
4664
- "peer-data-[size=lg]/menu-button:top-2.5",
4665
- "group-data-[collapsible=icon]:hidden",
4666
- showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0",
4667
- className
4668
- )
4669
- }, props)
4670
- );
4671
- });
4672
- SidebarMenuAction.displayName = "SidebarMenuAction";
4673
- var SidebarMenuBadge = React63.forwardRef((_a, ref) => {
4674
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4675
- return /* @__PURE__ */ jsx66(
4676
- "div",
4677
- __spreadValues({
4678
- ref,
4679
- "data-sidebar": "menu-badge",
4680
- className: cn(
4681
- "absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none",
4682
- "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground",
4683
- "peer-data-[size=sm]/menu-button:top-1",
4684
- "peer-data-[size=default]/menu-button:top-1.5",
4685
- "peer-data-[size=lg]/menu-button:top-2.5",
4686
- "group-data-[collapsible=icon]:hidden",
4687
- className
4688
- )
4689
- }, props)
4690
- );
4691
- });
4692
- SidebarMenuBadge.displayName = "SidebarMenuBadge";
4693
- var SidebarMenuSkeleton = React63.forwardRef((_a, ref) => {
4694
- var _b = _a, { className, showIcon = false } = _b, props = __objRest(_b, ["className", "showIcon"]);
4695
- const width = React63.useMemo(() => {
4696
- return `${Math.floor(Math.random() * 40) + 50}%`;
4697
- }, []);
4698
- return /* @__PURE__ */ jsxs25(
4699
- "div",
4700
- __spreadProps(__spreadValues({
4701
- ref,
4702
- "data-sidebar": "menu-skeleton",
4703
- className: cn("rounded-md h-8 flex gap-2 px-2 items-center", className)
4704
- }, props), {
4705
- children: [
4706
- showIcon && /* @__PURE__ */ jsx66(
4707
- Skeleton,
4708
- {
4709
- className: "size-4 rounded-md",
4710
- "data-sidebar": "menu-skeleton-icon"
4711
- }
4712
- ),
4713
- /* @__PURE__ */ jsx66(
4714
- Skeleton,
4715
- {
4716
- className: "h-4 flex-1 max-w-(--skeleton-width)",
4717
- "data-sidebar": "menu-skeleton-text",
4718
- style: {
4719
- "--skeleton-width": width
4720
- }
4721
- }
4722
- )
4723
- ]
4724
- })
4725
- );
4726
- });
4727
- SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
4728
- var SidebarMenuSub = React63.forwardRef((_a, ref) => {
4729
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4730
- return /* @__PURE__ */ jsx66(
4731
- "ul",
4732
- __spreadValues({
4733
- ref,
4734
- "data-sidebar": "menu-sub",
4735
- className: cn(
4736
- "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5",
4737
- "group-data-[collapsible=icon]:hidden",
4738
- className
4739
- )
4740
- }, props)
4741
- );
4742
- });
4743
- SidebarMenuSub.displayName = "SidebarMenuSub";
4744
- var SidebarMenuSubItem = React63.forwardRef((_a, ref) => {
4745
- var props = __objRest(_a, []);
4746
- return /* @__PURE__ */ jsx66("li", __spreadValues({ ref }, props));
4747
- });
4748
- SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
4749
- var SidebarMenuSubButton = React63.forwardRef((_a, ref) => {
4750
- var _b = _a, { asChild = false, size = "md", isActive, className } = _b, props = __objRest(_b, ["asChild", "size", "isActive", "className"]);
4751
- const Comp = asChild ? Slot4 : "a";
4752
- return /* @__PURE__ */ jsx66(
4753
- Comp,
4754
- __spreadValues({
4755
- ref,
4756
- "data-sidebar": "menu-sub-button",
4757
- "data-size": size,
4758
- "data-active": isActive,
4759
- className: cn(
4760
- "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-hidden ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground",
4761
- "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",
4762
- size === "sm" && "text-xs",
4763
- size === "md" && "text-sm",
4764
- "group-data-[collapsible=icon]:hidden",
4765
- className
4766
- )
4767
- }, props)
4768
- );
4769
- });
4770
- SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
4771
-
4772
- // src/ui/slider.tsx
4773
- import * as React64 from "react";
4774
- import * as SliderPrimitive from "@radix-ui/react-slider";
4775
- import { jsx as jsx67, jsxs as jsxs26 } from "react/jsx-runtime";
4776
- var Slider = React64.forwardRef((_a, ref) => {
4777
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4778
- return /* @__PURE__ */ jsxs26(
4779
- SliderPrimitive.Root,
4780
- __spreadProps(__spreadValues({
4781
- ref,
4782
- className: cn(
4783
- "relative flex w-full touch-none select-none items-center",
4784
- className
4785
- )
4786
- }, props), {
4787
- children: [
4788
- /* @__PURE__ */ jsx67(SliderPrimitive.Track, { className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary", children: /* @__PURE__ */ jsx67(SliderPrimitive.Range, { className: "absolute h-full bg-primary" }) }),
4789
- /* @__PURE__ */ jsx67(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })
4790
- ]
4791
- })
4792
- );
4793
- });
4794
- Slider.displayName = SliderPrimitive.Root.displayName;
4795
-
4796
- // src/ui/sonner.tsx
4797
- import { useTheme } from "next-themes";
4798
- import { Toaster as Sonner } from "sonner";
4799
- import { jsx as jsx68 } from "react/jsx-runtime";
4800
- var Toaster = (_a) => {
4801
- var props = __objRest(_a, []);
4802
- const { theme = "system" } = useTheme();
4803
- return /* @__PURE__ */ jsx68(
4804
- Sonner,
4805
- __spreadValues({
4806
- theme,
4807
- className: "toaster group",
4808
- toastOptions: {
4809
- classNames: {
4810
- toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
4811
- description: "group-[.toast]:text-muted-foreground",
4812
- actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
4813
- cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
4814
- }
4815
- }
4816
- }, props)
4817
- );
4818
- };
4819
-
4820
- // src/ui/switch.tsx
4821
- import * as React65 from "react";
4822
- import * as SwitchPrimitives from "@radix-ui/react-switch";
4823
- import { jsx as jsx69 } from "react/jsx-runtime";
4824
- var Switch = React65.forwardRef((_a, ref) => {
4825
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4826
- return /* @__PURE__ */ jsx69(
4827
- SwitchPrimitives.Root,
4828
- __spreadProps(__spreadValues({
4829
- className: cn(
4830
- "peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",
4831
- className
4832
- )
4833
- }, props), {
4834
- ref,
4835
- children: /* @__PURE__ */ jsx69(
4836
- SwitchPrimitives.Thumb,
4837
- {
4838
- className: cn(
4839
- "pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0"
4840
- )
4841
- }
4842
- )
4843
- })
4844
- );
4845
- });
4846
- Switch.displayName = SwitchPrimitives.Root.displayName;
4847
-
4848
- // src/ui/table.tsx
4849
- import * as React66 from "react";
4850
- import { jsx as jsx70 } from "react/jsx-runtime";
4851
- var Table = React66.forwardRef((_a, ref) => {
4852
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4853
- return /* @__PURE__ */ jsx70("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx70(
4854
- "table",
4855
- __spreadValues({
4856
- ref,
4857
- className: cn("w-full caption-bottom text-sm", className)
4858
- }, props)
4859
- ) });
4860
- });
4861
- Table.displayName = "Table";
4862
- var TableHeader = React66.forwardRef((_a, ref) => {
4863
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4864
- return /* @__PURE__ */ jsx70("thead", __spreadValues({ ref, className: cn("[&_tr]:border-b", className) }, props));
4865
- });
4866
- TableHeader.displayName = "TableHeader";
4867
- var TableBody = React66.forwardRef((_a, ref) => {
4868
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4869
- return /* @__PURE__ */ jsx70(
4870
- "tbody",
4871
- __spreadValues({
4872
- ref,
4873
- className: cn("[&_tr:last-child]:border-0", className)
4874
- }, props)
4875
- );
4876
- });
4877
- TableBody.displayName = "TableBody";
4878
- var TableFooter = React66.forwardRef((_a, ref) => {
4879
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4880
- return /* @__PURE__ */ jsx70(
4881
- "tfoot",
4882
- __spreadValues({
4883
- ref,
4884
- className: cn(
4885
- "border-t bg-muted/50 font-medium last:[&>tr]:border-b-0",
4886
- className
4887
- )
4888
- }, props)
4889
- );
4890
- });
4891
- TableFooter.displayName = "TableFooter";
4892
- var TableRow = React66.forwardRef((_a, ref) => {
4893
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4894
- return /* @__PURE__ */ jsx70(
4895
- "tr",
4896
- __spreadValues({
4897
- ref,
4898
- className: cn(
4899
- "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
4900
- className
4901
- )
4902
- }, props)
4903
- );
4904
- });
4905
- TableRow.displayName = "TableRow";
4906
- var TableHead = React66.forwardRef((_a, ref) => {
4907
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4908
- return /* @__PURE__ */ jsx70(
4909
- "th",
4910
- __spreadValues({
4911
- ref,
4912
- className: cn(
4913
- "h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
4914
- className
4915
- )
4916
- }, props)
4917
- );
4918
- });
4919
- TableHead.displayName = "TableHead";
4920
- var TableCell = React66.forwardRef((_a, ref) => {
4921
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4922
- return /* @__PURE__ */ jsx70(
4923
- "td",
4924
- __spreadValues({
4925
- ref,
4926
- className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className)
4927
- }, props)
4928
- );
4929
- });
4930
- TableCell.displayName = "TableCell";
4931
- var TableCaption = React66.forwardRef((_a, ref) => {
4932
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4933
- return /* @__PURE__ */ jsx70(
4934
- "caption",
4935
- __spreadValues({
4936
- ref,
4937
- className: cn("mt-4 text-sm text-muted-foreground", className)
4938
- }, props)
4939
- );
4940
- });
4941
- TableCaption.displayName = "TableCaption";
4942
-
4943
- // src/ui/tabs.tsx
4944
- import * as React67 from "react";
4945
- import * as TabsPrimitive from "@radix-ui/react-tabs";
4946
- import { jsx as jsx71 } from "react/jsx-runtime";
4947
- var Tabs = TabsPrimitive.Root;
4948
- var TabsList = React67.forwardRef((_a, ref) => {
4949
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4950
- return /* @__PURE__ */ jsx71(
4951
- TabsPrimitive.List,
4952
- __spreadValues({
4953
- ref,
4954
- className: cn(
4955
- "inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground",
4956
- className
4957
- )
4958
- }, props)
4959
- );
4960
- });
4961
- TabsList.displayName = TabsPrimitive.List.displayName;
4962
- var TabsTrigger = React67.forwardRef((_a, ref) => {
4963
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4964
- return /* @__PURE__ */ jsx71(
4965
- TabsPrimitive.Trigger,
4966
- __spreadValues({
4967
- ref,
4968
- className: cn(
4969
- "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs",
4970
- className
4971
- )
4972
- }, props)
4973
- );
4974
- });
4975
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
4976
- var TabsContent = React67.forwardRef((_a, ref) => {
4977
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4978
- return /* @__PURE__ */ jsx71(
4979
- TabsPrimitive.Content,
4980
- __spreadValues({
4981
- ref,
4982
- className: cn(
4983
- "mt-2 ring-offset-background focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
4984
- className
4985
- )
4986
- }, props)
4987
- );
4988
- });
4989
- TabsContent.displayName = TabsPrimitive.Content.displayName;
4990
-
4991
- // src/ui/textarea.tsx
4992
- import * as React68 from "react";
4993
- import { jsx as jsx72 } from "react/jsx-runtime";
4994
- var Textarea = React68.forwardRef((_a, ref) => {
4995
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
4996
- return /* @__PURE__ */ jsx72(
4997
- "textarea",
4998
- __spreadValues({
4999
- className: cn(
5000
- "flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
5001
- className
5002
- ),
5003
- ref
5004
- }, props)
5005
- );
5006
- });
5007
- Textarea.displayName = "Textarea";
5008
-
5009
- // src/ui/toast.tsx
5010
- import * as React69 from "react";
5011
- import * as ToastPrimitives from "@radix-ui/react-toast";
5012
- import { cva as cva8 } from "class-variance-authority";
5013
- import { jsx as jsx73 } from "react/jsx-runtime";
5014
- var ToastProvider = ToastPrimitives.Provider;
5015
- var ToastViewport = React69.forwardRef((_a, ref) => {
5016
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5017
- return /* @__PURE__ */ jsx73(
5018
- ToastPrimitives.Viewport,
5019
- __spreadValues({
5020
- ref,
5021
- className: cn(
5022
- "fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
5023
- className
5024
- )
5025
- }, props)
5026
- );
5027
- });
5028
- ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
5029
- var toastVariants = cva8(
5030
- "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full sm:data-[state=open]:slide-in-from-bottom-full",
5031
- {
5032
- variants: {
5033
- variant: {
5034
- default: "border bg-background text-foreground",
5035
- destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
5036
- }
5037
- },
5038
- defaultVariants: {
5039
- variant: "default"
5040
- }
5041
- }
5042
- );
5043
- var Toast = React69.forwardRef((_a, ref) => {
5044
- var _b = _a, { className, variant } = _b, props = __objRest(_b, ["className", "variant"]);
5045
- return /* @__PURE__ */ jsx73(
5046
- ToastPrimitives.Root,
5047
- __spreadValues({
5048
- ref,
5049
- className: cn(toastVariants({ variant }), className)
5050
- }, props)
5051
- );
5052
- });
5053
- Toast.displayName = ToastPrimitives.Root.displayName;
5054
- var ToastAction = React69.forwardRef((_a, ref) => {
5055
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5056
- return /* @__PURE__ */ jsx73(
5057
- ToastPrimitives.Action,
5058
- __spreadValues({
5059
- ref,
5060
- className: cn(
5061
- "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 hover:group-[.destructive]:border-destructive/30 hover:group-[.destructive]:bg-destructive hover:group-[.destructive]:text-destructive-foreground focus:group-[.destructive]:ring-destructive",
5062
- className
5063
- )
5064
- }, props)
5065
- );
5066
- });
5067
- ToastAction.displayName = ToastPrimitives.Action.displayName;
5068
- var ToastClose = React69.forwardRef((_a, ref) => {
5069
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5070
- return /* @__PURE__ */ jsx73(
5071
- ToastPrimitives.Close,
5072
- __spreadProps(__spreadValues({
5073
- ref,
5074
- className: cn(
5075
- "absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-hidden focus:ring-2 group-hover:opacity-100 group-[.destructive]:text-red-300 hover:group-[.destructive]:text-red-50 focus:group-[.destructive]:ring-red-400 focus:group-[.destructive]:ring-offset-red-600",
5076
- className
5077
- ),
5078
- "toast-close": ""
5079
- }, props), {
5080
- children: /* @__PURE__ */ jsx73(globalLucideIcons.X, { className: "h-4 w-4" })
5081
- })
5082
- );
5083
- });
5084
- ToastClose.displayName = ToastPrimitives.Close.displayName;
5085
- var ToastTitle = React69.forwardRef((_a, ref) => {
5086
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5087
- return /* @__PURE__ */ jsx73(
5088
- ToastPrimitives.Title,
5089
- __spreadValues({
5090
- ref,
5091
- className: cn("text-sm font-semibold", className)
5092
- }, props)
5093
- );
5094
- });
5095
- ToastTitle.displayName = ToastPrimitives.Title.displayName;
5096
- var ToastDescription = React69.forwardRef((_a, ref) => {
5097
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
5098
- return /* @__PURE__ */ jsx73(
5099
- ToastPrimitives.Description,
5100
- __spreadValues({
5101
- ref,
5102
- className: cn("text-sm opacity-90", className)
5103
- }, props)
5104
- );
5105
- });
5106
- ToastDescription.displayName = ToastPrimitives.Description.displayName;
5107
-
5108
- // src/ui/use-toast.ts
5109
- import * as React70 from "react";
5110
- var TOAST_LIMIT = 1;
5111
- var TOAST_REMOVE_DELAY = 1e6;
5112
- var ACTIONS = {
5113
- ADD_TOAST: "ADD_TOAST",
5114
- UPDATE_TOAST: "UPDATE_TOAST",
5115
- DISMISS_TOAST: "DISMISS_TOAST",
5116
- REMOVE_TOAST: "REMOVE_TOAST"
5117
- };
5118
- var count = 0;
5119
- function genId() {
5120
- count = (count + 1) % Number.MAX_SAFE_INTEGER;
5121
- return count.toString();
5122
- }
5123
- var toastTimeouts = /* @__PURE__ */ new Map();
5124
- var addToRemoveQueue = (toastId) => {
5125
- if (toastTimeouts.has(toastId)) {
5126
- return;
5127
- }
5128
- const timeout = setTimeout(() => {
5129
- toastTimeouts.delete(toastId);
5130
- dispatch({
5131
- type: ACTIONS.REMOVE_TOAST,
5132
- toastId
5133
- });
5134
- }, TOAST_REMOVE_DELAY);
5135
- toastTimeouts.set(toastId, timeout);
5136
- };
5137
- var reducer = (state, action) => {
5138
- switch (action.type) {
5139
- case "ADD_TOAST":
5140
- return __spreadProps(__spreadValues({}, state), {
5141
- toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)
5142
- });
5143
- case "UPDATE_TOAST":
5144
- return __spreadProps(__spreadValues({}, state), {
5145
- toasts: state.toasts.map(
5146
- (t) => t.id === action.toast.id ? __spreadValues(__spreadValues({}, t), action.toast) : t
5147
- )
5148
- });
5149
- case "DISMISS_TOAST": {
5150
- const { toastId } = action;
5151
- if (toastId) {
5152
- addToRemoveQueue(toastId);
5153
- } else {
5154
- state.toasts.forEach((toast2) => {
5155
- addToRemoveQueue(toast2.id);
5156
- });
5157
- }
5158
- return __spreadProps(__spreadValues({}, state), {
5159
- toasts: state.toasts.map(
5160
- (t) => t.id === toastId || toastId === void 0 ? __spreadProps(__spreadValues({}, t), {
5161
- open: false
5162
- }) : t
5163
- )
5164
- });
5165
- }
5166
- case "REMOVE_TOAST":
5167
- if (action.toastId === void 0) {
5168
- return __spreadProps(__spreadValues({}, state), {
5169
- toasts: []
5170
- });
5171
- }
5172
- return __spreadProps(__spreadValues({}, state), {
5173
- toasts: state.toasts.filter((t) => t.id !== action.toastId)
5174
- });
5175
- }
5176
- };
5177
- var listeners = [];
5178
- var memoryState = { toasts: [] };
5179
- function dispatch(action) {
5180
- memoryState = reducer(memoryState, action);
5181
- listeners.forEach((listener) => {
5182
- listener(memoryState);
5183
- });
5184
- }
5185
- function toast(_a) {
5186
- var props = __objRest(_a, []);
5187
- const id = genId();
5188
- const update = (props2) => dispatch({
5189
- type: "UPDATE_TOAST",
5190
- toast: __spreadProps(__spreadValues({}, props2), { id })
5191
- });
5192
- const dismiss = () => dispatch({ type: "DISMISS_TOAST", toastId: id });
5193
- dispatch({
5194
- type: "ADD_TOAST",
5195
- toast: __spreadProps(__spreadValues({}, props), {
5196
- id,
5197
- open: true,
5198
- onOpenChange: (open) => {
5199
- if (!open) dismiss();
5200
- }
5201
- })
5202
- });
5203
- return {
5204
- id,
5205
- dismiss,
5206
- update
5207
- };
5208
- }
5209
- function useToast() {
5210
- const [state, setState] = React70.useState(memoryState);
5211
- React70.useEffect(() => {
5212
- listeners.push(setState);
5213
- return () => {
5214
- const index = listeners.indexOf(setState);
5215
- if (index > -1) {
5216
- listeners.splice(index, 1);
5217
- }
5218
- };
5219
- }, [state]);
5220
- return __spreadProps(__spreadValues({}, state), {
5221
- toast,
5222
- dismiss: (toastId) => dispatch({ type: "DISMISS_TOAST", toastId })
5223
- });
5224
- }
5225
-
5226
- // src/ui/toaster.tsx
5227
- import { jsx as jsx74, jsxs as jsxs27 } from "react/jsx-runtime";
5228
- function Toaster2() {
5229
- const { toasts } = useToast();
5230
- return /* @__PURE__ */ jsxs27(ToastProvider, { children: [
5231
- toasts.map(function(_a) {
5232
- var _b = _a, { id, title, description, action } = _b, props = __objRest(_b, ["id", "title", "description", "action"]);
5233
- return /* @__PURE__ */ jsxs27(Toast, __spreadProps(__spreadValues({}, props), { children: [
5234
- /* @__PURE__ */ jsxs27("div", { className: "grid gap-1", children: [
5235
- title && /* @__PURE__ */ jsx74(ToastTitle, { children: title }),
5236
- description && /* @__PURE__ */ jsx74(ToastDescription, { children: description })
5237
- ] }),
5238
- action,
5239
- /* @__PURE__ */ jsx74(ToastClose, {})
5240
- ] }), id);
5241
- }),
5242
- /* @__PURE__ */ jsx74(ToastViewport, {})
5243
- ] });
5244
- }
5245
-
5246
- // src/ui/toggle-group.tsx
5247
- import * as React72 from "react";
5248
- import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5249
-
5250
- // src/ui/toggle.tsx
5251
- import * as React71 from "react";
5252
- import * as TogglePrimitive from "@radix-ui/react-toggle";
5253
- import { cva as cva9 } from "class-variance-authority";
5254
- import { jsx as jsx75 } from "react/jsx-runtime";
5255
- var toggleVariants = cva9(
5256
- "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 gap-2",
5257
- {
5258
- variants: {
5259
- variant: {
5260
- default: "bg-transparent",
5261
- outline: "border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"
5262
- },
5263
- size: {
5264
- default: "h-10 px-3 min-w-10",
5265
- sm: "h-9 px-2.5 min-w-9",
5266
- lg: "h-11 px-5 min-w-11"
5267
- }
5268
- },
5269
- defaultVariants: {
5270
- variant: "default",
5271
- size: "default"
5272
- }
5273
- }
5274
- );
5275
- var Toggle = React71.forwardRef((_a, ref) => {
5276
- var _b = _a, { className, variant, size } = _b, props = __objRest(_b, ["className", "variant", "size"]);
5277
- return /* @__PURE__ */ jsx75(
5278
- TogglePrimitive.Root,
5279
- __spreadValues({
5280
- ref,
5281
- className: cn(toggleVariants({ variant, size, className }))
5282
- }, props)
5283
- );
5284
- });
5285
- Toggle.displayName = TogglePrimitive.Root.displayName;
5286
-
5287
- // src/ui/toggle-group.tsx
5288
- import { jsx as jsx76 } from "react/jsx-runtime";
5289
- var ToggleGroupContext = React72.createContext({
5290
- size: "default",
5291
- variant: "default"
5292
- });
5293
- var ToggleGroup = React72.forwardRef((_a, ref) => {
5294
- var _b = _a, { className, variant, size, children } = _b, props = __objRest(_b, ["className", "variant", "size", "children"]);
5295
- return /* @__PURE__ */ jsx76(
5296
- ToggleGroupPrimitive.Root,
5297
- __spreadProps(__spreadValues({
5298
- ref,
5299
- className: cn("flex items-center justify-center gap-1", className)
5300
- }, props), {
5301
- children: /* @__PURE__ */ jsx76(ToggleGroupContext.Provider, { value: { variant, size }, children })
5302
- })
5303
- );
5304
- });
5305
- ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
5306
- var ToggleGroupItem = React72.forwardRef((_a, ref) => {
5307
- var _b = _a, { className, children, variant, size } = _b, props = __objRest(_b, ["className", "children", "variant", "size"]);
5308
- const context = React72.useContext(ToggleGroupContext);
5309
- return /* @__PURE__ */ jsx76(
5310
- ToggleGroupPrimitive.Item,
5311
- __spreadProps(__spreadValues({
5312
- ref,
5313
- className: cn(
5314
- toggleVariants({
5315
- variant: context.variant || variant,
5316
- size: context.size || size
5317
- }),
5318
- className
5319
- )
5320
- }, props), {
5321
- children
5322
- })
5323
- );
5324
- });
5325
- ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName;
1698
+ LanguageButton.displayName = "Button";
5326
1699
  export {
5327
- Accordion,
5328
- AccordionContent,
5329
- AccordionItem,
5330
- AccordionTrigger,
5331
- Alert,
5332
- AlertDescription,
5333
1700
  AlertDialog,
5334
1701
  AlertDialogAction,
5335
1702
  AlertDialogCancel,
@@ -5341,86 +1708,7 @@ export {
5341
1708
  AlertDialogPortal,
5342
1709
  AlertDialogTitle,
5343
1710
  AlertDialogTrigger,
5344
- AlertTitle,
5345
- AspectRatio,
5346
- Avatar,
5347
- AvatarFallback,
5348
- AvatarImage,
5349
- Badge,
5350
- Breadcrumb,
5351
- BreadcrumbEllipsis,
5352
- BreadcrumbItem,
5353
- BreadcrumbLink,
5354
- BreadcrumbList,
5355
- BreadcrumbPage,
5356
- BreadcrumbSeparator,
5357
1711
  Button,
5358
- Calendar,
5359
- Card,
5360
- CardContent,
5361
- CardDescription,
5362
- CardFooter,
5363
- CardHeader,
5364
- CardTitle,
5365
- Carousel,
5366
- CarouselContent,
5367
- CarouselItem,
5368
- CarouselNext,
5369
- CarouselPrevious,
5370
- ChartContainer,
5371
- ChartLegend,
5372
- ChartLegendContent,
5373
- ChartStyle,
5374
- ChartTooltip,
5375
- ChartTooltipContent,
5376
- Checkbox,
5377
- Collapsible,
5378
- CollapsibleContent2 as CollapsibleContent,
5379
- CollapsibleTrigger2 as CollapsibleTrigger,
5380
- Command,
5381
- CommandDialog,
5382
- CommandEmpty,
5383
- CommandGroup,
5384
- CommandInput,
5385
- CommandItem,
5386
- CommandList,
5387
- CommandSeparator,
5388
- CommandShortcut,
5389
- ContextMenu,
5390
- ContextMenuCheckboxItem,
5391
- ContextMenuContent,
5392
- ContextMenuGroup,
5393
- ContextMenuItem,
5394
- ContextMenuLabel,
5395
- ContextMenuPortal,
5396
- ContextMenuRadioGroup,
5397
- ContextMenuRadioItem,
5398
- ContextMenuSeparator,
5399
- ContextMenuShortcut,
5400
- ContextMenuSub,
5401
- ContextMenuSubContent,
5402
- ContextMenuSubTrigger,
5403
- ContextMenuTrigger,
5404
- Dialog,
5405
- DialogClose,
5406
- DialogContent,
5407
- DialogDescription,
5408
- DialogFooter,
5409
- DialogHeader,
5410
- DialogOverlay,
5411
- DialogPortal,
5412
- DialogTitle,
5413
- DialogTrigger,
5414
- Drawer,
5415
- DrawerClose,
5416
- DrawerContent,
5417
- DrawerDescription,
5418
- DrawerFooter,
5419
- DrawerHeader,
5420
- DrawerOverlay,
5421
- DrawerPortal,
5422
- DrawerTitle,
5423
- DrawerTrigger,
5424
1712
  DropdownMenu,
5425
1713
  DropdownMenuCheckboxItem,
5426
1714
  DropdownMenuContent,
@@ -5436,151 +1724,9 @@ export {
5436
1724
  DropdownMenuSubContent,
5437
1725
  DropdownMenuSubTrigger,
5438
1726
  DropdownMenuTrigger,
5439
- Form,
5440
- FormControl,
5441
- FormDescription,
5442
- FormField,
5443
- FormItem,
5444
- FormLabel,
5445
- FormMessage,
5446
- HoverCard,
5447
- HoverCardContent,
5448
- HoverCardTrigger,
5449
- Input,
5450
- InputOTP,
5451
- InputOTPGroup,
5452
- InputOTPSeparator,
5453
- InputOTPSlot,
5454
- Label3 as Label,
1727
+ Label2 as Label,
5455
1728
  LanguageButton,
5456
- Menubar,
5457
- MenubarCheckboxItem,
5458
- MenubarContent,
5459
- MenubarGroup,
5460
- MenubarItem,
5461
- MenubarLabel,
5462
- MenubarMenu,
5463
- MenubarPortal,
5464
- MenubarRadioGroup,
5465
- MenubarRadioItem,
5466
- MenubarSeparator,
5467
- MenubarShortcut,
5468
- MenubarSub,
5469
- MenubarSubContent,
5470
- MenubarSubTrigger,
5471
- MenubarTrigger,
5472
- NavigationMenu,
5473
- NavigationMenuContent,
5474
- NavigationMenuIndicator,
5475
- NavigationMenuItem,
5476
- NavigationMenuLink,
5477
- NavigationMenuList,
5478
- NavigationMenuTrigger,
5479
- NavigationMenuViewport,
5480
- Pagination,
5481
- PaginationContent,
5482
- PaginationEllipsis,
5483
- PaginationItem,
5484
- PaginationLink,
5485
- PaginationNext,
5486
- PaginationPrevious,
5487
- Popover,
5488
- PopoverContent,
5489
- PopoverTrigger,
5490
- Progress,
5491
- RadioGroup4 as RadioGroup,
5492
- RadioGroupItem,
5493
- ResizableHandle,
5494
- ResizablePanel,
5495
- ResizablePanelGroup,
5496
- ScrollArea,
5497
- ScrollBar,
5498
- Select,
5499
- SelectContent,
5500
- SelectGroup,
5501
- SelectItem,
5502
- SelectLabel,
5503
- SelectScrollDownButton,
5504
- SelectScrollUpButton,
5505
- SelectSeparator,
5506
- SelectTrigger,
5507
- SelectValue,
5508
- Separator5 as Separator,
5509
- Sheet,
5510
- SheetClose,
5511
- SheetContent,
5512
- SheetDescription,
5513
- SheetFooter,
5514
- SheetHeader,
5515
- SheetOverlay,
5516
- SheetPortal,
5517
- SheetTitle,
5518
- SheetTrigger,
5519
- Sidebar,
5520
- SidebarContent,
5521
- SidebarFooter,
5522
- SidebarGroup,
5523
- SidebarGroupAction,
5524
- SidebarGroupContent,
5525
- SidebarGroupLabel,
5526
- SidebarHeader,
5527
- SidebarInput,
5528
- SidebarInset,
5529
- SidebarMenu,
5530
- SidebarMenuAction,
5531
- SidebarMenuBadge,
5532
- SidebarMenuButton,
5533
- SidebarMenuItem,
5534
- SidebarMenuSkeleton,
5535
- SidebarMenuSub,
5536
- SidebarMenuSubButton,
5537
- SidebarMenuSubItem,
5538
- SidebarProvider,
5539
- SidebarRail,
5540
- SidebarSeparator,
5541
- SidebarTrigger,
5542
- Skeleton,
5543
- Slider,
5544
- Toaster as SonnerToaster,
5545
- Switch,
5546
- Table,
5547
- TableBody,
5548
- TableCaption,
5549
- TableCell,
5550
- TableFooter,
5551
- TableHead,
5552
- TableHeader,
5553
- TableRow,
5554
- Tabs,
5555
- TabsContent,
5556
- TabsList,
5557
- TabsTrigger,
5558
- Textarea,
5559
- Toast,
5560
- ToastAction,
5561
- ToastClose,
5562
- ToastDescription,
5563
- ToastProvider,
5564
- ToastTitle,
5565
- Toaster2 as ToastToaster,
5566
- ToastViewport,
5567
- Toggle,
5568
- ToggleGroup,
5569
- ToggleGroupItem,
5570
- Tooltip2 as Tooltip,
5571
- TooltipContent,
5572
- TooltipProvider,
5573
- TooltipTrigger,
5574
- badgeVariants,
5575
- buttonVariants,
5576
- navigationMenuTriggerStyle,
5577
- reducer,
5578
- toast,
5579
- toggleVariants,
5580
- useFormField,
5581
- useIsMobile,
5582
- useSidebar,
5583
- useToast
1729
+ buttonVariants
5584
1730
  };
5585
1731
  /**
5586
1732
  * @license