@blinkdotnew/ui 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ 'use client';
1
2
  'use strict';
2
3
 
3
4
  var React66 = require('react');
@@ -29,7 +30,7 @@ var sonner = require('sonner');
29
30
  var core = require('@dnd-kit/core');
30
31
  var sortable = require('@dnd-kit/sortable');
31
32
  var utilities = require('@dnd-kit/utilities');
32
- var recharts = require('recharts');
33
+ var RechartsPrimitive = require('recharts');
33
34
  var AccordionPrimitive = require('@radix-ui/react-accordion');
34
35
  var AlertDialogPrimitive = require('@radix-ui/react-alert-dialog');
35
36
  var AspectRatioPrimitive = require('@radix-ui/react-aspect-ratio');
@@ -41,6 +42,12 @@ var NavigationMenuPrimitive = require('@radix-ui/react-navigation-menu');
41
42
  var ScrollAreaPrimitive = require('@radix-ui/react-scroll-area');
42
43
  var TogglePrimitive = require('@radix-ui/react-toggle');
43
44
  var ToggleGroupPrimitive = require('@radix-ui/react-toggle-group');
45
+ var reactDayPicker = require('react-day-picker');
46
+ var cmdk = require('cmdk');
47
+ var vaul = require('vaul');
48
+ var inputOtp = require('input-otp');
49
+ var MenubarPrimitive = require('@radix-ui/react-menubar');
50
+ var ResizablePrimitive = require('react-resizable-panels');
44
51
 
45
52
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
46
53
 
@@ -78,6 +85,7 @@ var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrim
78
85
  var ProgressPrimitive__namespace = /*#__PURE__*/_interopNamespace(ProgressPrimitive);
79
86
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
80
87
  var z__namespace = /*#__PURE__*/_interopNamespace(z);
88
+ var RechartsPrimitive__namespace = /*#__PURE__*/_interopNamespace(RechartsPrimitive);
81
89
  var AccordionPrimitive__namespace = /*#__PURE__*/_interopNamespace(AccordionPrimitive);
82
90
  var AlertDialogPrimitive__namespace = /*#__PURE__*/_interopNamespace(AlertDialogPrimitive);
83
91
  var AspectRatioPrimitive__namespace = /*#__PURE__*/_interopNamespace(AspectRatioPrimitive);
@@ -88,13 +96,14 @@ var NavigationMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(Navigati
88
96
  var ScrollAreaPrimitive__namespace = /*#__PURE__*/_interopNamespace(ScrollAreaPrimitive);
89
97
  var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespace(TogglePrimitive);
90
98
  var ToggleGroupPrimitive__namespace = /*#__PURE__*/_interopNamespace(ToggleGroupPrimitive);
99
+ var MenubarPrimitive__namespace = /*#__PURE__*/_interopNamespace(MenubarPrimitive);
100
+ var ResizablePrimitive__namespace = /*#__PURE__*/_interopNamespace(ResizablePrimitive);
91
101
 
92
102
  // src/provider/blink-ui-provider.tsx
93
103
  var BlinkUIContext = React66.createContext(null);
94
104
  function useBlinkUI() {
95
105
  const ctx = React66.useContext(BlinkUIContext);
96
- if (!ctx)
97
- throw new Error("useBlinkUI must be used within <BlinkUIProvider>");
106
+ if (!ctx) throw new Error("useBlinkUI must be used within <BlinkUIProvider>");
98
107
  return ctx;
99
108
  }
100
109
  function BlinkUIProvider({
@@ -932,8 +941,7 @@ var SidebarItem = React66__namespace.default.forwardRef(
932
941
  !collapsed && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 min-w-0 truncate", children: label }),
933
942
  !collapsed && badge !== void 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] px-1.5 py-0.5 rounded-full bg-[hsl(var(--primary))] bg-opacity-10 text-[hsl(var(--primary))] shrink-0 font-medium", children: badge })
934
943
  ] });
935
- if (href)
936
- return /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: cls, onClick, children: inner });
944
+ if (href) return /* @__PURE__ */ jsxRuntime.jsx("a", { href, className: cls, onClick, children: inner });
937
945
  return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, role: "button", tabIndex: 0, className: cls, onClick, ...props, children: inner });
938
946
  }
939
947
  );
@@ -1170,10 +1178,8 @@ FieldError.displayName = "FieldError";
1170
1178
  function getStrength(value) {
1171
1179
  const has = (re) => re.test(value);
1172
1180
  const score = [value.length >= 8, has(/[A-Z]/), has(/[0-9]/), has(/[^A-Za-z0-9]/)].filter(Boolean).length;
1173
- if (score <= 1)
1174
- return { level: "weak", width: "w-1/3", color: "bg-[hsl(var(--destructive))]" };
1175
- if (score <= 3)
1176
- return { level: "medium", width: "w-2/3", color: "bg-yellow-500" };
1181
+ if (score <= 1) return { level: "weak", width: "w-1/3", color: "bg-[hsl(var(--destructive))]" };
1182
+ if (score <= 3) return { level: "medium", width: "w-2/3", color: "bg-yellow-500" };
1177
1183
  return { level: "strong", width: "w-full", color: "bg-green-500" };
1178
1184
  }
1179
1185
  var PasswordInput = React66__namespace.default.forwardRef(
@@ -1217,13 +1223,11 @@ var SearchInput = React66__namespace.default.forwardRef(
1217
1223
  const isControlled = valueProp !== void 0;
1218
1224
  const value = isControlled ? String(valueProp) : String(internalValue);
1219
1225
  function handleChange(e) {
1220
- if (!isControlled)
1221
- setInternalValue(e.target.value);
1226
+ if (!isControlled) setInternalValue(e.target.value);
1222
1227
  onChange?.(e.target.value);
1223
1228
  }
1224
1229
  function handleClear() {
1225
- if (!isControlled)
1226
- setInternalValue("");
1230
+ if (!isControlled) setInternalValue("");
1227
1231
  onChange?.("");
1228
1232
  onClear?.();
1229
1233
  }
@@ -1259,10 +1263,8 @@ var SearchInput = React66__namespace.default.forwardRef(
1259
1263
  );
1260
1264
  SearchInput.displayName = "SearchInput";
1261
1265
  function formatBytes(bytes) {
1262
- if (bytes < 1024)
1263
- return `${bytes} B`;
1264
- if (bytes < 1024 * 1024)
1265
- return `${(bytes / 1024).toFixed(1)} KB`;
1266
+ if (bytes < 1024) return `${bytes} B`;
1267
+ if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
1266
1268
  return `${(bytes / 1024 / 1024).toFixed(1)} MB`;
1267
1269
  }
1268
1270
  function filterBySize(files, maxSize) {
@@ -1272,16 +1274,14 @@ function FileUpload({ accept, multiple, maxSize, onFiles, className, disabled })
1272
1274
  const inputRef = React66.useRef(null);
1273
1275
  const [dragging, setDragging] = React66.useState(false);
1274
1276
  function handleFiles(raw) {
1275
- if (!raw)
1276
- return;
1277
+ if (!raw) return;
1277
1278
  const files = filterBySize(Array.from(raw), maxSize);
1278
1279
  onFiles?.(files);
1279
1280
  }
1280
1281
  function handleDrop(e) {
1281
1282
  e.preventDefault();
1282
1283
  setDragging(false);
1283
- if (!disabled)
1284
- handleFiles(e.dataTransfer.files);
1284
+ if (!disabled) handleFiles(e.dataTransfer.files);
1285
1285
  }
1286
1286
  return /* @__PURE__ */ jsxRuntime.jsxs(
1287
1287
  "div",
@@ -1292,8 +1292,7 @@ function FileUpload({ accept, multiple, maxSize, onFiles, className, disabled })
1292
1292
  onKeyDown: (e) => e.key === "Enter" && !disabled && inputRef.current?.click(),
1293
1293
  onDragOver: (e) => {
1294
1294
  e.preventDefault();
1295
- if (!disabled)
1296
- setDragging(true);
1295
+ if (!disabled) setDragging(true);
1297
1296
  },
1298
1297
  onDragLeave: () => setDragging(false),
1299
1298
  onDrop: handleDrop,
@@ -1329,8 +1328,7 @@ function FileUpload({ accept, multiple, maxSize, onFiles, className, disabled })
1329
1328
  );
1330
1329
  }
1331
1330
  function FileUploadPreview({ files, onRemove, className }) {
1332
- if (!files.length)
1333
- return null;
1331
+ if (!files.length) return null;
1334
1332
  return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: cn("flex flex-col gap-1", className), children: files.map((file, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-center justify-between rounded-md border border-[hsl(var(--border))] px-3 py-2 text-sm", children: [
1335
1333
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-[hsl(var(--foreground))]", children: file.name }),
1336
1334
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-2 flex shrink-0 items-center gap-2", children: [
@@ -1366,8 +1364,7 @@ function CalendarGrid({ year, month, selected, onSelect }) {
1366
1364
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-7 gap-0.5", children: [
1367
1365
  DAYS.map((d) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-1 text-center text-xs font-medium text-[hsl(var(--muted-foreground))]", children: d }, d)),
1368
1366
  cells.map((day, i) => {
1369
- if (!day)
1370
- return /* @__PURE__ */ jsxRuntime.jsx("div", {}, i);
1367
+ if (!day) return /* @__PURE__ */ jsxRuntime.jsx("div", {}, i);
1371
1368
  const date = new Date(year, month, day);
1372
1369
  const isToday = isSameDay(date, today);
1373
1370
  const isSelected = selected && isSameDay(date, selected);
@@ -1465,15 +1462,13 @@ function FormMessage({ className, children, name }) {
1465
1462
  const { formState } = reactHookForm.useFormContext();
1466
1463
  const error = name ? formState.errors[name] : void 0;
1467
1464
  const message = error?.message ? String(error.message) : children;
1468
- if (!message)
1469
- return null;
1465
+ if (!message) return null;
1470
1466
  return /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-xs text-[hsl(var(--destructive))]", className), children: message });
1471
1467
  }
1472
1468
  var StepFormContext = React66.createContext(null);
1473
1469
  function useStepForm() {
1474
1470
  const ctx = React66.useContext(StepFormContext);
1475
- if (!ctx)
1476
- throw new Error("useStepForm must be used within StepForm");
1471
+ if (!ctx) throw new Error("useStepForm must be used within StepForm");
1477
1472
  return ctx;
1478
1473
  }
1479
1474
  function StepForm({ steps, onSubmit, children, className }) {
@@ -1536,8 +1531,7 @@ function ArrayField({
1536
1531
  className
1537
1532
  }) {
1538
1533
  function add() {
1539
- if (maxItems && value.length >= maxItems)
1540
- return;
1534
+ if (maxItems && value.length >= maxItems) return;
1541
1535
  onChange([...value, defaultItem]);
1542
1536
  }
1543
1537
  function remove(index) {
@@ -1607,10 +1601,8 @@ function toLabel(key) {
1607
1601
  return key.replace(/([A-Z])/g, " $1").replace(/^./, (s) => s.toUpperCase());
1608
1602
  }
1609
1603
  function getInputType(field) {
1610
- if (field instanceof z__namespace.ZodEmail)
1611
- return "email";
1612
- if (field instanceof z__namespace.ZodURL)
1613
- return "url";
1604
+ if (field instanceof z__namespace.ZodEmail) return "email";
1605
+ if (field instanceof z__namespace.ZodURL) return "url";
1614
1606
  return "text";
1615
1607
  }
1616
1608
  function unwrapOptional(field) {
@@ -1678,8 +1670,7 @@ function AutoForm({ schema, onSubmit, defaultValues, submitLabel = "Submit" }) {
1678
1670
  ] });
1679
1671
  }
1680
1672
  function DataTableColumnHeader({ column, title }) {
1681
- if (!column.getCanSort())
1682
- return /* @__PURE__ */ jsxRuntime.jsx("span", { children: title });
1673
+ if (!column.getCanSort()) return /* @__PURE__ */ jsxRuntime.jsx("span", { children: title });
1683
1674
  const sorted = column.getIsSorted();
1684
1675
  return /* @__PURE__ */ jsxRuntime.jsxs(
1685
1676
  "button",
@@ -1719,8 +1710,7 @@ function DataTablePagination({ table }) {
1719
1710
  ] });
1720
1711
  }
1721
1712
  function DataTableToolbar({ table, searchColumn }) {
1722
- if (!searchColumn)
1723
- return null;
1713
+ if (!searchColumn) return null;
1724
1714
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "py-3", children: /* @__PURE__ */ jsxRuntime.jsx(
1725
1715
  Input,
1726
1716
  {
@@ -1744,8 +1734,7 @@ function DataTable({ columns, data, pageSize = 10, searchable, searchColumn, loa
1744
1734
  initialState: { pagination: { pageSize } },
1745
1735
  state: { sorting }
1746
1736
  });
1747
- if (loading)
1748
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-10 w-full" }, i)) });
1737
+ if (loading) return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: Array.from({ length: 5 }).map((_, i) => /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "h-10 w-full" }, i)) });
1749
1738
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "w-full", children: [
1750
1739
  searchable && /* @__PURE__ */ jsxRuntime.jsx(DataTableToolbar, { table, searchColumn }),
1751
1740
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "rounded-md border border-[hsl(var(--border))] overflow-hidden", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "w-full text-sm", children: [
@@ -1775,10 +1764,8 @@ function EditableCell({ value: initial, onSave }) {
1775
1764
  onChange: (e) => setVal(e.target.value),
1776
1765
  onBlur: commit,
1777
1766
  onKeyDown: (e) => {
1778
- if (e.key === "Enter")
1779
- commit();
1780
- if (e.key === "Escape")
1781
- setEditing(false);
1767
+ if (e.key === "Enter") commit();
1768
+ if (e.key === "Escape") setEditing(false);
1782
1769
  }
1783
1770
  }
1784
1771
  );
@@ -1797,8 +1784,7 @@ function DataGrid({ columns, data: initialData, onDataChange, editable, classNam
1797
1784
  const [rowSelection, setRowSelection] = React66__namespace.default.useState({});
1798
1785
  const columnResizeMode = "onChange";
1799
1786
  const editableColumns = React66__namespace.default.useMemo(() => {
1800
- if (!editable)
1801
- return columns;
1787
+ if (!editable) return columns;
1802
1788
  return columns.map((col) => ({
1803
1789
  ...col,
1804
1790
  cell: (info) => /* @__PURE__ */ jsxRuntime.jsx(
@@ -2107,8 +2093,7 @@ function Banner({
2107
2093
  onDismiss?.();
2108
2094
  }, 200);
2109
2095
  };
2110
- if (dismissed)
2111
- return null;
2096
+ if (dismissed) return null;
2112
2097
  return /* @__PURE__ */ jsxRuntime.jsxs(
2113
2098
  "div",
2114
2099
  {
@@ -2238,8 +2223,7 @@ function Breadcrumb({ children, className }) {
2238
2223
  const withSeparators = [];
2239
2224
  items.forEach((item, i) => {
2240
2225
  withSeparators.push(item);
2241
- if (i < items.length - 1)
2242
- withSeparators.push(/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}, `sep-${i}`));
2226
+ if (i < items.length - 1) withSeparators.push(/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}, `sep-${i}`));
2243
2227
  });
2244
2228
  return /* @__PURE__ */ jsxRuntime.jsx("nav", { "aria-label": "breadcrumb", children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: cn("flex flex-wrap items-center gap-1", className), children: withSeparators }) });
2245
2229
  }
@@ -2262,8 +2246,7 @@ function AddFilterPopover({ filters, onAdd }) {
2262
2246
  const def = filters.find((f) => f.key === key);
2263
2247
  const ops = def?.type === "number" ? numOps : textOps;
2264
2248
  const handleAdd = () => {
2265
- if (!key || !val)
2266
- return;
2249
+ if (!key || !val) return;
2267
2250
  onAdd({ key, operator: op || ops[0], value: val });
2268
2251
  setKey("");
2269
2252
  setOp("");
@@ -2308,8 +2291,7 @@ function Filters({ filters, value, onChange, className }) {
2308
2291
  ] });
2309
2292
  }
2310
2293
  function BulkActions({ count, actions, onClear, className }) {
2311
- if (count === 0)
2312
- return null;
2294
+ if (count === 0) return null;
2313
2295
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("fixed bottom-6 left-1/2 -translate-x-1/2 z-50 flex items-center gap-2 rounded-full border border-[hsl(var(--border))] bg-[hsl(var(--card))] px-4 py-2 shadow-lg", className), children: [
2314
2296
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm font-medium text-[hsl(var(--foreground))] pr-2 border-r border-[hsl(var(--border))]", children: [
2315
2297
  count,
@@ -2362,8 +2344,7 @@ function ToggleButtonGroup(props) {
2362
2344
  }
2363
2345
  };
2364
2346
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("inline-flex items-center gap-1 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] p-0.5", className), children: React66__namespace.default.Children.map(children, (child) => {
2365
- if (!React66__namespace.default.isValidElement(child))
2366
- return child;
2347
+ if (!React66__namespace.default.isValidElement(child)) return child;
2367
2348
  const tb = child;
2368
2349
  return React66__namespace.default.cloneElement(tb, {
2369
2350
  pressed: isPressed(tb.props.value),
@@ -2425,8 +2406,7 @@ function CommandBar({ open, onOpenChange, children, placeholder = "Search comman
2425
2406
  return;
2426
2407
  }
2427
2408
  const focusable = items.current?.querySelectorAll("button");
2428
- if (!focusable?.length)
2429
- return;
2409
+ if (!focusable?.length) return;
2430
2410
  const arr = Array.from(focusable);
2431
2411
  const idx = arr.indexOf(document.activeElement);
2432
2412
  if (e.key === "ArrowDown") {
@@ -2508,18 +2488,14 @@ function Kanban({ columns: initialColumns, onMoveCard, className }) {
2508
2488
  const onDragEnd = ({ active, over }) => {
2509
2489
  setActiveCard(null);
2510
2490
  setOverColId(null);
2511
- if (!over || active.id === over.id)
2512
- return;
2491
+ if (!over || active.id === over.id) return;
2513
2492
  const fromCol = findColByCard(active.id);
2514
2493
  const toCol = cols.find((c) => c.id === over.id) ?? findColByCard(over.id);
2515
- if (!fromCol || !toCol || fromCol.id === toCol.id)
2516
- return;
2494
+ if (!fromCol || !toCol || fromCol.id === toCol.id) return;
2517
2495
  const card = fromCol.cards.find((c) => c.id === active.id);
2518
2496
  setCols((prev) => prev.map((c) => {
2519
- if (c.id === fromCol.id)
2520
- return { ...c, cards: c.cards.filter((card2) => card2.id !== active.id) };
2521
- if (c.id === toCol.id)
2522
- return { ...c, cards: [...c.cards, card] };
2497
+ if (c.id === fromCol.id) return { ...c, cards: c.cards.filter((card2) => card2.id !== active.id) };
2498
+ if (c.id === toCol.id) return { ...c, cards: [...c.cards, card] };
2523
2499
  return c;
2524
2500
  }));
2525
2501
  onMoveCard?.(active.id, fromCol.id, toCol.id);
@@ -2550,12 +2526,12 @@ function AreaChart({
2550
2526
  }) {
2551
2527
  const keys = Array.isArray(dataKey) ? dataKey : [dataKey];
2552
2528
  const curve = curved ? "monotone" : "linear";
2553
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.AreaChart, { data, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2554
- showGrid && /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2555
- /* @__PURE__ */ jsxRuntime.jsx(recharts.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2556
- /* @__PURE__ */ jsxRuntime.jsx(recharts.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2529
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(RechartsPrimitive.AreaChart, { data, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2530
+ showGrid && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2531
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2532
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2557
2533
  showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
2558
- recharts.Tooltip,
2534
+ RechartsPrimitive.Tooltip,
2559
2535
  {
2560
2536
  contentStyle: {
2561
2537
  background: "hsl(var(--card))",
@@ -2565,9 +2541,9 @@ function AreaChart({
2565
2541
  }
2566
2542
  }
2567
2543
  ),
2568
- showLegend && /* @__PURE__ */ jsxRuntime.jsx(recharts.Legend, { wrapperStyle: { fontSize: 12 } }),
2544
+ showLegend && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.Legend, { wrapperStyle: { fontSize: 12 } }),
2569
2545
  keys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsx(
2570
- recharts.Area,
2546
+ RechartsPrimitive.Area,
2571
2547
  {
2572
2548
  type: curve,
2573
2549
  dataKey: key,
@@ -2602,17 +2578,17 @@ function BarChart({
2602
2578
  }) {
2603
2579
  const keys = Array.isArray(dataKey) ? dataKey : [dataKey];
2604
2580
  const isVertical = layout === "vertical";
2605
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.BarChart, { data, layout, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2606
- showGrid && /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2581
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(RechartsPrimitive.BarChart, { data, layout, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2582
+ showGrid && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2607
2583
  isVertical ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2608
- /* @__PURE__ */ jsxRuntime.jsx(recharts.XAxis, { type: "number", tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2609
- /* @__PURE__ */ jsxRuntime.jsx(recharts.YAxis, { type: "category", dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false })
2584
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.XAxis, { type: "number", tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2585
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.YAxis, { type: "category", dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false })
2610
2586
  ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2611
- /* @__PURE__ */ jsxRuntime.jsx(recharts.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2612
- /* @__PURE__ */ jsxRuntime.jsx(recharts.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false })
2587
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2588
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false })
2613
2589
  ] }),
2614
2590
  showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
2615
- recharts.Tooltip,
2591
+ RechartsPrimitive.Tooltip,
2616
2592
  {
2617
2593
  contentStyle: {
2618
2594
  background: "hsl(var(--card))",
@@ -2622,9 +2598,9 @@ function BarChart({
2622
2598
  }
2623
2599
  }
2624
2600
  ),
2625
- showLegend && /* @__PURE__ */ jsxRuntime.jsx(recharts.Legend, { wrapperStyle: { fontSize: 12 } }),
2601
+ showLegend && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.Legend, { wrapperStyle: { fontSize: 12 } }),
2626
2602
  keys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsx(
2627
- recharts.Bar,
2603
+ RechartsPrimitive.Bar,
2628
2604
  {
2629
2605
  dataKey: key,
2630
2606
  fill: colors[i % colors.length],
@@ -2659,12 +2635,12 @@ function LineChart({
2659
2635
  const keys = Array.isArray(dataKey) ? dataKey : [dataKey];
2660
2636
  const curve = curved ? "monotone" : "linear";
2661
2637
  const dash = dotted ? "4 4" : void 0;
2662
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(recharts.LineChart, { data, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2663
- showGrid && /* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2664
- /* @__PURE__ */ jsxRuntime.jsx(recharts.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2665
- /* @__PURE__ */ jsxRuntime.jsx(recharts.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2638
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("w-full overflow-hidden", className), style: { minWidth: 0 }, children: /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.ResponsiveContainer, { width: "100%", height, children: /* @__PURE__ */ jsxRuntime.jsxs(RechartsPrimitive.LineChart, { data, margin: { top: 4, right: 4, left: -20, bottom: 0 }, children: [
2639
+ showGrid && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.CartesianGrid, { strokeDasharray: "3 3", stroke: "hsl(var(--border))" }),
2640
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.XAxis, { dataKey: xAxisKey, tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2641
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.YAxis, { tick: { fontSize: 12, fill: "hsl(var(--muted-foreground))" }, axisLine: false, tickLine: false }),
2666
2642
  showTooltip && /* @__PURE__ */ jsxRuntime.jsx(
2667
- recharts.Tooltip,
2643
+ RechartsPrimitive.Tooltip,
2668
2644
  {
2669
2645
  contentStyle: {
2670
2646
  background: "hsl(var(--card))",
@@ -2674,9 +2650,9 @@ function LineChart({
2674
2650
  }
2675
2651
  }
2676
2652
  ),
2677
- showLegend && /* @__PURE__ */ jsxRuntime.jsx(recharts.Legend, { wrapperStyle: { fontSize: 12 } }),
2653
+ showLegend && /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive.Legend, { wrapperStyle: { fontSize: 12 } }),
2678
2654
  keys.map((key, i) => /* @__PURE__ */ jsxRuntime.jsx(
2679
- recharts.Line,
2655
+ RechartsPrimitive.Line,
2680
2656
  {
2681
2657
  type: curve,
2682
2658
  dataKey: key,
@@ -2691,8 +2667,7 @@ function LineChart({
2691
2667
  ] }) }) });
2692
2668
  }
2693
2669
  function buildPath(data, w, h) {
2694
- if (data.length < 2)
2695
- return "";
2670
+ if (data.length < 2) return "";
2696
2671
  const min = Math.min(...data);
2697
2672
  const max = Math.max(...data);
2698
2673
  const range = max - min || 1;
@@ -2713,8 +2688,7 @@ function Sparkline({
2713
2688
  className
2714
2689
  }) {
2715
2690
  const path = buildPath(data, width, height);
2716
- if (!path)
2717
- return null;
2691
+ if (!path) return null;
2718
2692
  const min = Math.min(...data);
2719
2693
  const max = Math.max(...data);
2720
2694
  const range = max - min || 1;
@@ -2766,8 +2740,7 @@ function Beacon({ color = "primary", size = "md", children, className }) {
2766
2740
  var TourContext = React66.createContext(null);
2767
2741
  function useTour() {
2768
2742
  const ctx = React66.useContext(TourContext);
2769
- if (!ctx)
2770
- throw new Error("useTour must be used within <Tour>");
2743
+ if (!ctx) throw new Error("useTour must be used within <Tour>");
2771
2744
  return ctx;
2772
2745
  }
2773
2746
  function Tour({ totalSteps, children }) {
@@ -2782,15 +2755,11 @@ function Tour({ totalSteps, children }) {
2782
2755
  const prev = React66.useCallback(() => setCurrentStep((s) => Math.max(s - 1, 0)), []);
2783
2756
  const goTo = React66.useCallback((step) => setCurrentStep(Math.max(0, Math.min(step, totalSteps - 1))), [totalSteps]);
2784
2757
  React66.useEffect(() => {
2785
- if (!isActive)
2786
- return;
2758
+ if (!isActive) return;
2787
2759
  const onKey = (e) => {
2788
- if (e.key === "Escape")
2789
- stop();
2790
- if (e.key === "ArrowRight")
2791
- next();
2792
- if (e.key === "ArrowLeft")
2793
- prev();
2760
+ if (e.key === "Escape") stop();
2761
+ if (e.key === "ArrowRight") next();
2762
+ if (e.key === "ArrowLeft") prev();
2794
2763
  };
2795
2764
  window.addEventListener("keydown", onKey);
2796
2765
  return () => window.removeEventListener("keydown", onKey);
@@ -3329,8 +3298,7 @@ function InviteModal({ className }) {
3329
3298
  const [role, setRole] = React66.useState("Member");
3330
3299
  const [pending, setPending] = React66.useState(PENDING);
3331
3300
  const invite = () => {
3332
- if (!email.trim())
3333
- return;
3301
+ if (!email.trim()) return;
3334
3302
  setPending((p) => [...p, { email: email.trim(), role }]);
3335
3303
  setEmail("");
3336
3304
  };
@@ -3379,8 +3347,7 @@ function ManageTagsModal({ className }) {
3379
3347
  const [newTag, setNewTag] = React66.useState("");
3380
3348
  const [colorIdx, setColorIdx] = React66.useState(0);
3381
3349
  const addTag = () => {
3382
- if (!newTag.trim())
3383
- return;
3350
+ if (!newTag.trim()) return;
3384
3351
  const id = `tag-${Date.now()}`;
3385
3352
  setTags((t) => [...t, { id, name: newTag.trim(), color: COLORS[colorIdx % COLORS.length] }]);
3386
3353
  setNewTag("");
@@ -3643,8 +3610,7 @@ function ChatDetail({ className }) {
3643
3610
  const [messages, setMessages] = React66.useState(INITIAL_MESSAGES);
3644
3611
  const [input, setInput] = React66.useState("");
3645
3612
  const send = () => {
3646
- if (!input.trim())
3647
- return;
3613
+ if (!input.trim()) return;
3648
3614
  const now = (/* @__PURE__ */ new Date()).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
3649
3615
  setMessages((m) => [...m, { id: `${Date.now()}`, author: "You", initials: "JD", text: input.trim(), time: now, self: true }]);
3650
3616
  setInput("");
@@ -4263,7 +4229,7 @@ var Primitive = NODES.reduce((primitive, node) => {
4263
4229
  const { asChild, ...primitiveProps } = props;
4264
4230
  const Comp = asChild ? Slot3 : node;
4265
4231
  if (typeof window !== "undefined") {
4266
- window[Symbol.for("radix-ui")] = true;
4232
+ window[/* @__PURE__ */ Symbol.for("radix-ui")] = true;
4267
4233
  }
4268
4234
  return /* @__PURE__ */ jsxRuntime.jsx(Comp, { ...primitiveProps, ref: forwardedRef });
4269
4235
  });
@@ -4279,11 +4245,9 @@ var Label4 = React66__namespace.forwardRef((props, forwardedRef) => {
4279
4245
  ref: forwardedRef,
4280
4246
  onMouseDown: (event) => {
4281
4247
  const target = event.target;
4282
- if (target.closest("button, input, select, textarea"))
4283
- return;
4248
+ if (target.closest("button, input, select, textarea")) return;
4284
4249
  props.onMouseDown?.(event);
4285
- if (!event.defaultPrevented && event.detail > 1)
4286
- event.preventDefault();
4250
+ if (!event.defaultPrevented && event.detail > 1) event.preventDefault();
4287
4251
  }
4288
4252
  }
4289
4253
  );
@@ -4754,6 +4718,832 @@ var ToggleGroupItem = React66__namespace.forwardRef(({ className, children, vari
4754
4718
  );
4755
4719
  });
4756
4720
  ToggleGroupItem.displayName = ToggleGroupPrimitive__namespace.Item.displayName;
4721
+ function Calendar3({
4722
+ className,
4723
+ classNames,
4724
+ showOutsideDays = true,
4725
+ captionLayout = "label",
4726
+ buttonVariant = "ghost",
4727
+ formatters,
4728
+ components,
4729
+ ...props
4730
+ }) {
4731
+ const defaultClassNames = reactDayPicker.getDefaultClassNames();
4732
+ return /* @__PURE__ */ jsxRuntime.jsx(
4733
+ reactDayPicker.DayPicker,
4734
+ {
4735
+ showOutsideDays,
4736
+ className: cn(
4737
+ "bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
4738
+ String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
4739
+ String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
4740
+ className
4741
+ ),
4742
+ captionLayout,
4743
+ formatters: {
4744
+ formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
4745
+ ...formatters
4746
+ },
4747
+ classNames: {
4748
+ root: cn("w-fit", defaultClassNames.root),
4749
+ months: cn(
4750
+ "relative flex flex-col gap-4 md:flex-row",
4751
+ defaultClassNames.months
4752
+ ),
4753
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
4754
+ nav: cn(
4755
+ "absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",
4756
+ defaultClassNames.nav
4757
+ ),
4758
+ button_previous: cn(
4759
+ buttonVariants({ variant: buttonVariant }),
4760
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
4761
+ defaultClassNames.button_previous
4762
+ ),
4763
+ button_next: cn(
4764
+ buttonVariants({ variant: buttonVariant }),
4765
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
4766
+ defaultClassNames.button_next
4767
+ ),
4768
+ month_caption: cn(
4769
+ "flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",
4770
+ defaultClassNames.month_caption
4771
+ ),
4772
+ dropdowns: cn(
4773
+ "flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",
4774
+ defaultClassNames.dropdowns
4775
+ ),
4776
+ dropdown_root: cn(
4777
+ "has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",
4778
+ defaultClassNames.dropdown_root
4779
+ ),
4780
+ dropdown: cn(
4781
+ "bg-popover absolute inset-0 opacity-0",
4782
+ defaultClassNames.dropdown
4783
+ ),
4784
+ caption_label: cn(
4785
+ "select-none font-medium",
4786
+ captionLayout === "label" ? "text-sm" : "[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",
4787
+ defaultClassNames.caption_label
4788
+ ),
4789
+ table: "w-full border-collapse",
4790
+ weekdays: cn("flex", defaultClassNames.weekdays),
4791
+ weekday: cn(
4792
+ "text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",
4793
+ defaultClassNames.weekday
4794
+ ),
4795
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
4796
+ week_number_header: cn(
4797
+ "w-[--cell-size] select-none",
4798
+ defaultClassNames.week_number_header
4799
+ ),
4800
+ week_number: cn(
4801
+ "text-muted-foreground select-none text-[0.8rem]",
4802
+ defaultClassNames.week_number
4803
+ ),
4804
+ day: cn(
4805
+ "group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",
4806
+ defaultClassNames.day
4807
+ ),
4808
+ range_start: cn(
4809
+ "bg-accent rounded-l-md",
4810
+ defaultClassNames.range_start
4811
+ ),
4812
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
4813
+ range_end: cn("bg-accent rounded-r-md", defaultClassNames.range_end),
4814
+ today: cn(
4815
+ "bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",
4816
+ defaultClassNames.today
4817
+ ),
4818
+ outside: cn(
4819
+ "text-muted-foreground aria-selected:text-muted-foreground",
4820
+ defaultClassNames.outside
4821
+ ),
4822
+ disabled: cn(
4823
+ "text-muted-foreground opacity-50",
4824
+ defaultClassNames.disabled
4825
+ ),
4826
+ hidden: cn("invisible", defaultClassNames.hidden),
4827
+ ...classNames
4828
+ },
4829
+ components: {
4830
+ Root: ({ className: className2, rootRef, ...props2 }) => {
4831
+ return /* @__PURE__ */ jsxRuntime.jsx(
4832
+ "div",
4833
+ {
4834
+ "data-slot": "calendar",
4835
+ ref: rootRef,
4836
+ className: cn(className2),
4837
+ ...props2
4838
+ }
4839
+ );
4840
+ },
4841
+ Chevron: ({ className: className2, orientation, ...props2 }) => {
4842
+ if (orientation === "left") {
4843
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeftIcon, { className: cn("size-4", className2), ...props2 });
4844
+ }
4845
+ if (orientation === "right") {
4846
+ return /* @__PURE__ */ jsxRuntime.jsx(
4847
+ lucideReact.ChevronRightIcon,
4848
+ {
4849
+ className: cn("size-4", className2),
4850
+ ...props2
4851
+ }
4852
+ );
4853
+ }
4854
+ return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDownIcon, { className: cn("size-4", className2), ...props2 });
4855
+ },
4856
+ DayButton: CalendarDayButton,
4857
+ WeekNumber: ({ children, ...props2 }) => {
4858
+ return /* @__PURE__ */ jsxRuntime.jsx("td", { ...props2, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-[--cell-size] items-center justify-center text-center", children }) });
4859
+ },
4860
+ ...components
4861
+ },
4862
+ ...props
4863
+ }
4864
+ );
4865
+ }
4866
+ function CalendarDayButton({
4867
+ className,
4868
+ day,
4869
+ modifiers,
4870
+ ...props
4871
+ }) {
4872
+ const defaultClassNames = reactDayPicker.getDefaultClassNames();
4873
+ const ref = React66__namespace.useRef(null);
4874
+ React66__namespace.useEffect(() => {
4875
+ if (modifiers.focused) ref.current?.focus();
4876
+ }, [modifiers.focused]);
4877
+ return /* @__PURE__ */ jsxRuntime.jsx(
4878
+ Button,
4879
+ {
4880
+ ref,
4881
+ variant: "ghost",
4882
+ size: "icon",
4883
+ "data-day": day.date.toLocaleDateString(),
4884
+ "data-selected-single": modifiers.selected && !modifiers.range_start && !modifiers.range_end && !modifiers.range_middle,
4885
+ "data-range-start": modifiers.range_start,
4886
+ "data-range-end": modifiers.range_end,
4887
+ "data-range-middle": modifiers.range_middle,
4888
+ className: cn(
4889
+ "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",
4890
+ defaultClassNames.day,
4891
+ className
4892
+ ),
4893
+ ...props
4894
+ }
4895
+ );
4896
+ }
4897
+ var THEMES = { light: "", dark: ".dark" };
4898
+ var ChartContext = React66__namespace.createContext(null);
4899
+ function useChart() {
4900
+ const context = React66__namespace.useContext(ChartContext);
4901
+ if (!context) {
4902
+ throw new Error("useChart must be used within a <ChartContainer />");
4903
+ }
4904
+ return context;
4905
+ }
4906
+ var ChartContainer = React66__namespace.forwardRef(({ id, className, children, config, ...props }, ref) => {
4907
+ const uniqueId = React66__namespace.useId();
4908
+ const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
4909
+ return /* @__PURE__ */ jsxRuntime.jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxRuntime.jsxs(
4910
+ "div",
4911
+ {
4912
+ "data-chart": chartId,
4913
+ ref,
4914
+ className: cn(
4915
+ "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-none [&_.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-none [&_.recharts-surface]:outline-none",
4916
+ className
4917
+ ),
4918
+ ...props,
4919
+ children: [
4920
+ /* @__PURE__ */ jsxRuntime.jsx(ChartStyle, { id: chartId, config }),
4921
+ /* @__PURE__ */ jsxRuntime.jsx(RechartsPrimitive__namespace.ResponsiveContainer, { children })
4922
+ ]
4923
+ }
4924
+ ) });
4925
+ });
4926
+ ChartContainer.displayName = "Chart";
4927
+ var ChartStyle = ({ id, config }) => {
4928
+ const colorConfig = Object.entries(config).filter(
4929
+ ([, config2]) => config2.theme || config2.color
4930
+ );
4931
+ if (!colorConfig.length) {
4932
+ return null;
4933
+ }
4934
+ return /* @__PURE__ */ jsxRuntime.jsx(
4935
+ "style",
4936
+ {
4937
+ dangerouslySetInnerHTML: {
4938
+ __html: Object.entries(THEMES).map(
4939
+ ([theme, prefix]) => `
4940
+ ${prefix} [data-chart=${id}] {
4941
+ ${colorConfig.map(([key, itemConfig]) => {
4942
+ const color = itemConfig.theme?.[theme] || itemConfig.color;
4943
+ return color ? ` --color-${key}: ${color};` : null;
4944
+ }).join("\n")}
4945
+ }
4946
+ `
4947
+ ).join("\n")
4948
+ }
4949
+ }
4950
+ );
4951
+ };
4952
+ var ChartTooltip = RechartsPrimitive__namespace.Tooltip;
4953
+ var ChartTooltipContent = React66__namespace.forwardRef(
4954
+ ({
4955
+ active,
4956
+ payload,
4957
+ className,
4958
+ indicator = "dot",
4959
+ hideLabel = false,
4960
+ hideIndicator = false,
4961
+ label,
4962
+ labelFormatter,
4963
+ labelClassName,
4964
+ formatter,
4965
+ color,
4966
+ nameKey,
4967
+ labelKey
4968
+ }, ref) => {
4969
+ const { config } = useChart();
4970
+ const tooltipLabel = React66__namespace.useMemo(() => {
4971
+ if (hideLabel || !payload?.length) {
4972
+ return null;
4973
+ }
4974
+ const [item] = payload;
4975
+ const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
4976
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
4977
+ const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
4978
+ if (labelFormatter) {
4979
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
4980
+ }
4981
+ if (!value) {
4982
+ return null;
4983
+ }
4984
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("font-medium", labelClassName), children: value });
4985
+ }, [
4986
+ label,
4987
+ labelFormatter,
4988
+ payload,
4989
+ hideLabel,
4990
+ labelClassName,
4991
+ config,
4992
+ labelKey
4993
+ ]);
4994
+ if (!active || !payload?.length) {
4995
+ return null;
4996
+ }
4997
+ const nestLabel = payload.length === 1 && indicator !== "dot";
4998
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4999
+ "div",
5000
+ {
5001
+ ref,
5002
+ className: cn(
5003
+ "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",
5004
+ className
5005
+ ),
5006
+ children: [
5007
+ !nestLabel ? tooltipLabel : null,
5008
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid gap-1.5", children: payload.filter((item) => item.type !== "none").map((item, index) => {
5009
+ const key = `${nameKey || item.name || item.dataKey || "value"}`;
5010
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
5011
+ const indicatorColor = color || item.payload.fill || item.color;
5012
+ return /* @__PURE__ */ jsxRuntime.jsx(
5013
+ "div",
5014
+ {
5015
+ className: cn(
5016
+ "flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",
5017
+ indicator === "dot" && "items-center"
5018
+ ),
5019
+ children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
5020
+ itemConfig?.icon ? /* @__PURE__ */ jsxRuntime.jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsxRuntime.jsx(
5021
+ "div",
5022
+ {
5023
+ className: cn(
5024
+ "shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",
5025
+ {
5026
+ "h-2.5 w-2.5": indicator === "dot",
5027
+ "w-1": indicator === "line",
5028
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
5029
+ "my-0.5": nestLabel && indicator === "dashed"
5030
+ }
5031
+ ),
5032
+ style: {
5033
+ "--color-bg": indicatorColor,
5034
+ "--color-border": indicatorColor
5035
+ }
5036
+ }
5037
+ ),
5038
+ /* @__PURE__ */ jsxRuntime.jsxs(
5039
+ "div",
5040
+ {
5041
+ className: cn(
5042
+ "flex flex-1 justify-between leading-none",
5043
+ nestLabel ? "items-end" : "items-center"
5044
+ ),
5045
+ children: [
5046
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-1.5", children: [
5047
+ nestLabel ? tooltipLabel : null,
5048
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
5049
+ ] }),
5050
+ item.value && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-mono font-medium tabular-nums text-foreground", children: item.value.toLocaleString() })
5051
+ ]
5052
+ }
5053
+ )
5054
+ ] })
5055
+ },
5056
+ item.dataKey
5057
+ );
5058
+ }) })
5059
+ ]
5060
+ }
5061
+ );
5062
+ }
5063
+ );
5064
+ ChartTooltipContent.displayName = "ChartTooltip";
5065
+ var ChartLegend = RechartsPrimitive__namespace.Legend;
5066
+ var ChartLegendContent = React66__namespace.forwardRef(
5067
+ ({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
5068
+ const { config } = useChart();
5069
+ if (!payload?.length) {
5070
+ return null;
5071
+ }
5072
+ return /* @__PURE__ */ jsxRuntime.jsx(
5073
+ "div",
5074
+ {
5075
+ ref,
5076
+ className: cn(
5077
+ "flex items-center justify-center gap-4",
5078
+ verticalAlign === "top" ? "pb-3" : "pt-3",
5079
+ className
5080
+ ),
5081
+ children: payload.filter((item) => item.type !== "none").map((item) => {
5082
+ const key = `${nameKey || item.dataKey || "value"}`;
5083
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
5084
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5085
+ "div",
5086
+ {
5087
+ className: cn(
5088
+ "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"
5089
+ ),
5090
+ children: [
5091
+ itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsxRuntime.jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsxRuntime.jsx(
5092
+ "div",
5093
+ {
5094
+ className: "h-2 w-2 shrink-0 rounded-[2px]",
5095
+ style: {
5096
+ backgroundColor: item.color
5097
+ }
5098
+ }
5099
+ ),
5100
+ itemConfig?.label
5101
+ ]
5102
+ },
5103
+ item.value
5104
+ );
5105
+ })
5106
+ }
5107
+ );
5108
+ }
5109
+ );
5110
+ ChartLegendContent.displayName = "ChartLegend";
5111
+ function getPayloadConfigFromPayload(config, payload, key) {
5112
+ if (typeof payload !== "object" || payload === null) {
5113
+ return void 0;
5114
+ }
5115
+ const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
5116
+ let configLabelKey = key;
5117
+ if (key in payload && typeof payload[key] === "string") {
5118
+ configLabelKey = payload[key];
5119
+ } else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
5120
+ configLabelKey = payloadPayload[key];
5121
+ }
5122
+ return configLabelKey in config ? config[configLabelKey] : config[key];
5123
+ }
5124
+ var Command = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5125
+ cmdk.Command,
5126
+ {
5127
+ ref,
5128
+ className: cn(
5129
+ "flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
5130
+ className
5131
+ ),
5132
+ ...props
5133
+ }
5134
+ ));
5135
+ Command.displayName = cmdk.Command.displayName;
5136
+ var CommandDialog = ({ children, ...props }) => {
5137
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxRuntime.jsx(DialogContent, { className: "overflow-hidden p-0", children: /* @__PURE__ */ jsxRuntime.jsx(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 }) }) });
5138
+ };
5139
+ var CommandInput = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
5140
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
5141
+ /* @__PURE__ */ jsxRuntime.jsx(
5142
+ cmdk.Command.Input,
5143
+ {
5144
+ ref,
5145
+ className: cn(
5146
+ "flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
5147
+ className
5148
+ ),
5149
+ ...props
5150
+ }
5151
+ )
5152
+ ] }));
5153
+ CommandInput.displayName = cmdk.Command.Input.displayName;
5154
+ var CommandList = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5155
+ cmdk.Command.List,
5156
+ {
5157
+ ref,
5158
+ className: cn("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
5159
+ ...props
5160
+ }
5161
+ ));
5162
+ CommandList.displayName = cmdk.Command.List.displayName;
5163
+ var CommandEmpty = React66__namespace.forwardRef((props, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5164
+ cmdk.Command.Empty,
5165
+ {
5166
+ ref,
5167
+ className: "py-6 text-center text-sm",
5168
+ ...props
5169
+ }
5170
+ ));
5171
+ CommandEmpty.displayName = cmdk.Command.Empty.displayName;
5172
+ var CommandGroup = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5173
+ cmdk.Command.Group,
5174
+ {
5175
+ ref,
5176
+ className: cn(
5177
+ "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",
5178
+ className
5179
+ ),
5180
+ ...props
5181
+ }
5182
+ ));
5183
+ CommandGroup.displayName = cmdk.Command.Group.displayName;
5184
+ var CommandSeparator = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5185
+ cmdk.Command.Separator,
5186
+ {
5187
+ ref,
5188
+ className: cn("-mx-1 h-px bg-border", className),
5189
+ ...props
5190
+ }
5191
+ ));
5192
+ CommandSeparator.displayName = cmdk.Command.Separator.displayName;
5193
+ var CommandItem2 = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5194
+ cmdk.Command.Item,
5195
+ {
5196
+ ref,
5197
+ className: cn(
5198
+ "relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none 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",
5199
+ className
5200
+ ),
5201
+ ...props
5202
+ }
5203
+ ));
5204
+ CommandItem2.displayName = cmdk.Command.Item.displayName;
5205
+ var Drawer = ({
5206
+ shouldScaleBackground = true,
5207
+ ...props
5208
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
5209
+ vaul.Drawer.Root,
5210
+ {
5211
+ shouldScaleBackground,
5212
+ ...props
5213
+ }
5214
+ );
5215
+ Drawer.displayName = "Drawer";
5216
+ var DrawerTrigger = vaul.Drawer.Trigger;
5217
+ var DrawerPortal = vaul.Drawer.Portal;
5218
+ var DrawerClose = vaul.Drawer.Close;
5219
+ var DrawerOverlay = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5220
+ vaul.Drawer.Overlay,
5221
+ {
5222
+ ref,
5223
+ className: cn("fixed inset-0 z-50 bg-black/80", className),
5224
+ ...props
5225
+ }
5226
+ ));
5227
+ DrawerOverlay.displayName = vaul.Drawer.Overlay.displayName;
5228
+ var DrawerContent = React66__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(DrawerPortal, { children: [
5229
+ /* @__PURE__ */ jsxRuntime.jsx(DrawerOverlay, {}),
5230
+ /* @__PURE__ */ jsxRuntime.jsxs(
5231
+ vaul.Drawer.Content,
5232
+ {
5233
+ ref,
5234
+ className: cn(
5235
+ "fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background",
5236
+ className
5237
+ ),
5238
+ ...props,
5239
+ children: [
5240
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted" }),
5241
+ children
5242
+ ]
5243
+ }
5244
+ )
5245
+ ] }));
5246
+ DrawerContent.displayName = "DrawerContent";
5247
+ var DrawerHeader = ({
5248
+ className,
5249
+ ...props
5250
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
5251
+ "div",
5252
+ {
5253
+ className: cn("grid gap-1.5 p-4 text-center sm:text-left", className),
5254
+ ...props
5255
+ }
5256
+ );
5257
+ DrawerHeader.displayName = "DrawerHeader";
5258
+ var DrawerFooter = ({
5259
+ className,
5260
+ ...props
5261
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
5262
+ "div",
5263
+ {
5264
+ className: cn("mt-auto flex flex-col gap-2 p-4", className),
5265
+ ...props
5266
+ }
5267
+ );
5268
+ DrawerFooter.displayName = "DrawerFooter";
5269
+ var DrawerTitle = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5270
+ vaul.Drawer.Title,
5271
+ {
5272
+ ref,
5273
+ className: cn(
5274
+ "text-lg font-semibold leading-none tracking-tight",
5275
+ className
5276
+ ),
5277
+ ...props
5278
+ }
5279
+ ));
5280
+ DrawerTitle.displayName = vaul.Drawer.Title.displayName;
5281
+ var DrawerDescription = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5282
+ vaul.Drawer.Description,
5283
+ {
5284
+ ref,
5285
+ className: cn("text-sm text-muted-foreground", className),
5286
+ ...props
5287
+ }
5288
+ ));
5289
+ DrawerDescription.displayName = vaul.Drawer.Description.displayName;
5290
+ var InputOTP = React66__namespace.forwardRef(({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5291
+ inputOtp.OTPInput,
5292
+ {
5293
+ ref,
5294
+ containerClassName: cn(
5295
+ "flex items-center gap-2 has-[:disabled]:opacity-50",
5296
+ containerClassName
5297
+ ),
5298
+ className: cn("disabled:cursor-not-allowed", className),
5299
+ ...props
5300
+ }
5301
+ ));
5302
+ InputOTP.displayName = "InputOTP";
5303
+ var InputOTPGroup = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: cn("flex items-center", className), ...props }));
5304
+ InputOTPGroup.displayName = "InputOTPGroup";
5305
+ var InputOTPSlot = React66__namespace.forwardRef(({ index, className, ...props }, ref) => {
5306
+ const inputOTPContext = React66__namespace.useContext(inputOtp.OTPInputContext);
5307
+ const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
5308
+ return /* @__PURE__ */ jsxRuntime.jsxs(
5309
+ "div",
5310
+ {
5311
+ ref,
5312
+ className: cn(
5313
+ "relative flex h-9 w-9 items-center justify-center border-y border-r border-input text-sm shadow-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md",
5314
+ isActive && "z-10 ring-1 ring-ring",
5315
+ className
5316
+ ),
5317
+ ...props,
5318
+ children: [
5319
+ char,
5320
+ hasFakeCaret && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-4 w-px animate-caret-blink bg-foreground duration-1000" }) })
5321
+ ]
5322
+ }
5323
+ );
5324
+ });
5325
+ InputOTPSlot.displayName = "InputOTPSlot";
5326
+ var InputOTPSeparator = React66__namespace.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minus, {}) }));
5327
+ InputOTPSeparator.displayName = "InputOTPSeparator";
5328
+ function MenubarMenu({
5329
+ ...props
5330
+ }) {
5331
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Menu, { ...props });
5332
+ }
5333
+ function MenubarGroup({
5334
+ ...props
5335
+ }) {
5336
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Group, { ...props });
5337
+ }
5338
+ function MenubarPortal({
5339
+ ...props
5340
+ }) {
5341
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { ...props });
5342
+ }
5343
+ function MenubarRadioGroup({
5344
+ ...props
5345
+ }) {
5346
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.RadioGroup, { ...props });
5347
+ }
5348
+ function MenubarSub({
5349
+ ...props
5350
+ }) {
5351
+ return /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Sub, { "data-slot": "menubar-sub", ...props });
5352
+ }
5353
+ var Menubar = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5354
+ MenubarPrimitive__namespace.Root,
5355
+ {
5356
+ ref,
5357
+ className: cn(
5358
+ "flex h-9 items-center space-x-1 rounded-md border bg-background p-1 shadow-sm",
5359
+ className
5360
+ ),
5361
+ ...props
5362
+ }
5363
+ ));
5364
+ Menubar.displayName = MenubarPrimitive__namespace.Root.displayName;
5365
+ var MenubarTrigger = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5366
+ MenubarPrimitive__namespace.Trigger,
5367
+ {
5368
+ ref,
5369
+ className: cn(
5370
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
5371
+ className
5372
+ ),
5373
+ ...props
5374
+ }
5375
+ ));
5376
+ MenubarTrigger.displayName = MenubarPrimitive__namespace.Trigger.displayName;
5377
+ var MenubarSubTrigger = React66__namespace.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5378
+ MenubarPrimitive__namespace.SubTrigger,
5379
+ {
5380
+ ref,
5381
+ className: cn(
5382
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
5383
+ inset && "pl-8",
5384
+ className
5385
+ ),
5386
+ ...props,
5387
+ children: [
5388
+ children,
5389
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "ml-auto h-4 w-4" })
5390
+ ]
5391
+ }
5392
+ ));
5393
+ MenubarSubTrigger.displayName = MenubarPrimitive__namespace.SubTrigger.displayName;
5394
+ var MenubarSubContent = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5395
+ MenubarPrimitive__namespace.SubContent,
5396
+ {
5397
+ ref,
5398
+ className: cn(
5399
+ "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 origin-[--radix-menubar-content-transform-origin]",
5400
+ className
5401
+ ),
5402
+ ...props
5403
+ }
5404
+ ));
5405
+ MenubarSubContent.displayName = MenubarPrimitive__namespace.SubContent.displayName;
5406
+ var MenubarContent = React66__namespace.forwardRef(
5407
+ ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.Portal, { children: /* @__PURE__ */ jsxRuntime.jsx(
5408
+ MenubarPrimitive__namespace.Content,
5409
+ {
5410
+ ref,
5411
+ align,
5412
+ alignOffset,
5413
+ sideOffset,
5414
+ className: cn(
5415
+ "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 origin-[--radix-menubar-content-transform-origin]",
5416
+ className
5417
+ ),
5418
+ ...props
5419
+ }
5420
+ ) })
5421
+ );
5422
+ MenubarContent.displayName = MenubarPrimitive__namespace.Content.displayName;
5423
+ var MenubarItem = React66__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5424
+ MenubarPrimitive__namespace.Item,
5425
+ {
5426
+ ref,
5427
+ className: cn(
5428
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
5429
+ inset && "pl-8",
5430
+ className
5431
+ ),
5432
+ ...props
5433
+ }
5434
+ ));
5435
+ MenubarItem.displayName = MenubarPrimitive__namespace.Item.displayName;
5436
+ var MenubarCheckboxItem = React66__namespace.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5437
+ MenubarPrimitive__namespace.CheckboxItem,
5438
+ {
5439
+ ref,
5440
+ className: cn(
5441
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
5442
+ className
5443
+ ),
5444
+ checked,
5445
+ ...props,
5446
+ children: [
5447
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { className: "h-4 w-4" }) }) }),
5448
+ children
5449
+ ]
5450
+ }
5451
+ ));
5452
+ MenubarCheckboxItem.displayName = MenubarPrimitive__namespace.CheckboxItem.displayName;
5453
+ var MenubarRadioItem = React66__namespace.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
5454
+ MenubarPrimitive__namespace.RadioItem,
5455
+ {
5456
+ ref,
5457
+ className: cn(
5458
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
5459
+ className
5460
+ ),
5461
+ ...props,
5462
+ children: [
5463
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(MenubarPrimitive__namespace.ItemIndicator, { children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Circle, { className: "h-4 w-4 fill-current" }) }) }),
5464
+ children
5465
+ ]
5466
+ }
5467
+ ));
5468
+ MenubarRadioItem.displayName = MenubarPrimitive__namespace.RadioItem.displayName;
5469
+ var MenubarLabel = React66__namespace.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5470
+ MenubarPrimitive__namespace.Label,
5471
+ {
5472
+ ref,
5473
+ className: cn(
5474
+ "px-2 py-1.5 text-sm font-semibold",
5475
+ inset && "pl-8",
5476
+ className
5477
+ ),
5478
+ ...props
5479
+ }
5480
+ ));
5481
+ MenubarLabel.displayName = MenubarPrimitive__namespace.Label.displayName;
5482
+ var MenubarSeparator = React66__namespace.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxRuntime.jsx(
5483
+ MenubarPrimitive__namespace.Separator,
5484
+ {
5485
+ ref,
5486
+ className: cn("-mx-1 my-1 h-px bg-muted", className),
5487
+ ...props
5488
+ }
5489
+ ));
5490
+ MenubarSeparator.displayName = MenubarPrimitive__namespace.Separator.displayName;
5491
+ var MenubarShortcut = ({
5492
+ className,
5493
+ ...props
5494
+ }) => {
5495
+ return /* @__PURE__ */ jsxRuntime.jsx(
5496
+ "span",
5497
+ {
5498
+ className: cn(
5499
+ "ml-auto text-xs tracking-widest text-muted-foreground",
5500
+ className
5501
+ ),
5502
+ ...props
5503
+ }
5504
+ );
5505
+ };
5506
+ MenubarShortcut.displayname = "MenubarShortcut";
5507
+ var ResizablePanelGroup = ({
5508
+ className,
5509
+ ...props
5510
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
5511
+ ResizablePrimitive__namespace.PanelGroup,
5512
+ {
5513
+ className: cn(
5514
+ "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
5515
+ className
5516
+ ),
5517
+ ...props
5518
+ }
5519
+ );
5520
+ var ResizablePanel = ResizablePrimitive__namespace.Panel;
5521
+ var ResizableHandle = ({
5522
+ withHandle,
5523
+ className,
5524
+ ...props
5525
+ }) => /* @__PURE__ */ jsxRuntime.jsx(
5526
+ ResizablePrimitive__namespace.PanelResizeHandle,
5527
+ {
5528
+ className: cn(
5529
+ "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-none 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",
5530
+ className
5531
+ ),
5532
+ ...props,
5533
+ children: withHandle && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.GripVertical, { className: "h-2.5 w-2.5" }) })
5534
+ }
5535
+ );
5536
+ function Spinner({ className, ...props }) {
5537
+ return /* @__PURE__ */ jsxRuntime.jsx(
5538
+ lucideReact.Loader2Icon,
5539
+ {
5540
+ role: "status",
5541
+ "aria-label": "Loading",
5542
+ className: cn("size-4 animate-spin", className),
5543
+ ...props
5544
+ }
5545
+ );
5546
+ }
4757
5547
 
4758
5548
  Object.defineProperty(exports, "Form", {
4759
5549
  enumerable: true,
@@ -4802,6 +5592,7 @@ exports.BreadcrumbPage = BreadcrumbPage;
4802
5592
  exports.BreadcrumbSeparator = BreadcrumbSeparator;
4803
5593
  exports.BulkActions = BulkActions;
4804
5594
  exports.Button = Button;
5595
+ exports.Calendar = Calendar3;
4805
5596
  exports.Card = Card;
4806
5597
  exports.CardContent = CardContent;
4807
5598
  exports.CardDescription = CardDescription;
@@ -4813,6 +5604,11 @@ exports.CarouselContent = CarouselContent;
4813
5604
  exports.CarouselItem = CarouselItem;
4814
5605
  exports.CarouselNext = CarouselNext;
4815
5606
  exports.CarouselPrevious = CarouselPrevious;
5607
+ exports.ChartContainer = ChartContainer;
5608
+ exports.ChartLegend = ChartLegend;
5609
+ exports.ChartLegendContent = ChartLegendContent;
5610
+ exports.ChartTooltip = ChartTooltip;
5611
+ exports.ChartTooltipContent = ChartTooltipContent;
4816
5612
  exports.ChatDetail = ChatDetail;
4817
5613
  exports.Checkbox = Checkbox;
4818
5614
  exports.Collapsible = Collapsible;
@@ -4822,7 +5618,14 @@ exports.CommandBar = CommandBar;
4822
5618
  exports.CommandBarEmpty = CommandBarEmpty;
4823
5619
  exports.CommandBarGroup = CommandBarGroup;
4824
5620
  exports.CommandBarItem = CommandBarItem;
5621
+ exports.CommandDialog = CommandDialog;
5622
+ exports.CommandEmpty = CommandEmpty;
5623
+ exports.CommandGroup = CommandGroup;
5624
+ exports.CommandInput = CommandInput;
4825
5625
  exports.CommandItem = CommandItem;
5626
+ exports.CommandList = CommandList;
5627
+ exports.CommandPrimitive = Command;
5628
+ exports.CommandSeparator = CommandSeparator;
4826
5629
  exports.Container = Container;
4827
5630
  exports.ContextMenu = ContextMenu;
4828
5631
  exports.ContextMenuCheckboxItem = ContextMenuCheckboxItem;
@@ -4855,6 +5658,16 @@ exports.DialogOverlay = DialogOverlay;
4855
5658
  exports.DialogPortal = DialogPortal;
4856
5659
  exports.DialogTitle = DialogTitle;
4857
5660
  exports.DialogTrigger = DialogTrigger;
5661
+ exports.Drawer = Drawer;
5662
+ exports.DrawerClose = DrawerClose;
5663
+ exports.DrawerContent = DrawerContent;
5664
+ exports.DrawerDescription = DrawerDescription;
5665
+ exports.DrawerFooter = DrawerFooter;
5666
+ exports.DrawerHeader = DrawerHeader;
5667
+ exports.DrawerOverlay = DrawerOverlay;
5668
+ exports.DrawerPortal = DrawerPortal;
5669
+ exports.DrawerTitle = DrawerTitle;
5670
+ exports.DrawerTrigger = DrawerTrigger;
4858
5671
  exports.DropdownMenu = DropdownMenu;
4859
5672
  exports.DropdownMenuCheckboxItem = DropdownMenuCheckboxItem;
4860
5673
  exports.DropdownMenuContent = DropdownMenuContent;
@@ -4897,6 +5710,10 @@ exports.HoverCardContent = HoverCardContent;
4897
5710
  exports.HoverCardTrigger = HoverCardTrigger;
4898
5711
  exports.IconBadge = IconBadge;
4899
5712
  exports.Input = Input;
5713
+ exports.InputOTP = InputOTP;
5714
+ exports.InputOTPGroup = InputOTPGroup;
5715
+ exports.InputOTPSeparator = InputOTPSeparator;
5716
+ exports.InputOTPSlot = InputOTPSlot;
4900
5717
  exports.IntegrationCard = IntegrationCard;
4901
5718
  exports.InviteModal = InviteModal;
4902
5719
  exports.Kanban = Kanban;
@@ -4906,6 +5723,22 @@ exports.Label = Label5;
4906
5723
  exports.LineChart = LineChart;
4907
5724
  exports.LoadingOverlay = LoadingOverlay;
4908
5725
  exports.ManageTagsModal = ManageTagsModal;
5726
+ exports.Menubar = Menubar;
5727
+ exports.MenubarCheckboxItem = MenubarCheckboxItem;
5728
+ exports.MenubarContent = MenubarContent;
5729
+ exports.MenubarGroup = MenubarGroup;
5730
+ exports.MenubarItem = MenubarItem;
5731
+ exports.MenubarLabel = MenubarLabel;
5732
+ exports.MenubarMenu = MenubarMenu;
5733
+ exports.MenubarPortal = MenubarPortal;
5734
+ exports.MenubarRadioGroup = MenubarRadioGroup;
5735
+ exports.MenubarRadioItem = MenubarRadioItem;
5736
+ exports.MenubarSeparator = MenubarSeparator;
5737
+ exports.MenubarShortcut = MenubarShortcut;
5738
+ exports.MenubarSub = MenubarSub;
5739
+ exports.MenubarSubContent = MenubarSubContent;
5740
+ exports.MenubarSubTrigger = MenubarSubTrigger;
5741
+ exports.MenubarTrigger = MenubarTrigger;
4909
5742
  exports.MessagesCard = MessagesCard;
4910
5743
  exports.MetricCard = MetricCard;
4911
5744
  exports.MetricCardWithButton = MetricCardWithButton;
@@ -4950,6 +5783,9 @@ exports.PropertyItem = PropertyItem;
4950
5783
  exports.PropertyList = PropertyList;
4951
5784
  exports.RadioGroup = RadioGroup;
4952
5785
  exports.RadioGroupItem = RadioGroupItem;
5786
+ exports.ResizableHandle = ResizableHandle;
5787
+ exports.ResizablePanel = ResizablePanel;
5788
+ exports.ResizablePanelGroup = ResizablePanelGroup;
4953
5789
  exports.ResizeBox = ResizeBox;
4954
5790
  exports.ResizeHandle = ResizeHandle;
4955
5791
  exports.RolesMenu = RolesMenu;
@@ -4995,6 +5831,7 @@ exports.Skeleton = Skeleton;
4995
5831
  exports.Slider = Slider;
4996
5832
  exports.SortableTaskList = SortableTaskList;
4997
5833
  exports.Sparkline = Sparkline;
5834
+ exports.Spinner = Spinner;
4998
5835
  exports.SplitPage = SplitPage;
4999
5836
  exports.SplitPageDetail = SplitPageDetail;
5000
5837
  exports.SplitPageList = SplitPageList;
@@ -5055,5 +5892,5 @@ exports.useBlinkUI = useBlinkUI;
5055
5892
  exports.useCommandBar = useCommandBar;
5056
5893
  exports.useFormField = useFormField;
5057
5894
  exports.useTour = useTour;
5058
- //# sourceMappingURL=out.js.map
5895
+ //# sourceMappingURL=index.js.map
5059
5896
  //# sourceMappingURL=index.js.map