adminium 1.0.2 → 1.0.4
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.cjs +2704 -171
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +322 -2
- package/dist/index.d.ts +322 -2
- package/dist/index.js +2599 -161
- package/dist/index.js.map +1 -1
- package/dist/styles/adminium.css +1194 -3
- package/dist/styles/global.css +65 -0
- package/package.json +2 -1
package/dist/index.js
CHANGED
|
@@ -2,19 +2,28 @@
|
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { twMerge } from 'tailwind-merge';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
|
-
import { Loader2Icon, ChevronDown, X, Check, Minus, ChevronRight, Circle, ChevronUp, ChevronLeftIcon, ChevronRightIcon, MoreHorizontal, ArrowDown, ArrowUp, ChevronsUpDown, ArrowLeftToLine, ArrowRightToLine, ArrowLeft, ArrowRight, Settings2, PinOff } from 'lucide-react';
|
|
5
|
+
import { Loader2Icon, ChevronDown, X, Search, Check, Minus, ChevronRight, Circle, ChevronUp, ChevronLeftIcon, ChevronRightIcon, Plus, MoreHorizontal, ChevronLeft, MinusIcon, ChevronDownIcon, Copy, ArrowDown, ArrowUp, ChevronsUpDown, ArrowLeftToLine, ArrowRightToLine, ArrowLeft, ArrowRight, Settings2, PinOff } from 'lucide-react';
|
|
6
6
|
import * as SlotPrimitive2 from '@radix-ui/react-slot';
|
|
7
|
+
import { Slot } from '@radix-ui/react-slot';
|
|
7
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
|
-
import { AlertDialog as AlertDialog$1, Dialog as Dialog$1, Popover as Popover$1, Avatar as Avatar$1, Select as Select$1, Slot, Tabs as Tabs$1, Label, Switch as Switch$1, ScrollArea as ScrollArea$1, AspectRatio as AspectRatio$1 } from 'radix-ui';
|
|
9
|
+
import { AlertDialog as AlertDialog$1, Dialog as Dialog$1, Popover as Popover$1, Avatar as Avatar$1, Select as Select$1, Accordion as Accordion$1, Slot as Slot$1, Collapsible as Collapsible$1, Tabs as Tabs$1, ContextMenu as ContextMenu$1, Label, RadioGroup, Slider as Slider$1, Switch as Switch$1, ScrollArea as ScrollArea$1, AspectRatio as AspectRatio$1, Progress as Progress$1, NavigationMenu as NavigationMenu$1 } from 'radix-ui';
|
|
9
10
|
import { Drawer as Drawer$1 } from 'vaul';
|
|
10
11
|
import * as HoverCardPrimitive from '@radix-ui/react-hover-card';
|
|
11
|
-
import
|
|
12
|
+
import { Command as Command$1 } from 'cmdk';
|
|
13
|
+
import * as React4 from 'react';
|
|
12
14
|
import { createContext, useContext, Fragment as Fragment$1, isValidElement, useMemo, useRef, useCallback, useEffect } from 'react';
|
|
13
15
|
import { useMotionValue, useSpring, useTransform, AnimatePresence, motion } from 'motion/react';
|
|
16
|
+
import * as RechartsPrimitive from 'recharts';
|
|
14
17
|
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
15
18
|
import { flexRender } from '@tanstack/react-table';
|
|
16
19
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
20
|
+
import { defaultDropAnimationSideEffects, defaultDropAnimation, useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, DragOverlay } from '@dnd-kit/core';
|
|
21
|
+
import { sortableKeyboardCoordinates, arrayMove, SortableContext, rectSortingStrategy, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';
|
|
22
|
+
import { CSS as CSS$1 } from '@dnd-kit/utilities';
|
|
23
|
+
import { DayPicker } from 'react-day-picker';
|
|
24
|
+
import { DateField as DateField$1, composeRenderProps, TimeField as TimeField$1, DateSegment as DateSegment$1, DateInput as DateInput$1 } from 'react-aria-components';
|
|
17
25
|
import * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
26
|
+
import { OTPInput, OTPInputContext } from 'input-otp';
|
|
18
27
|
|
|
19
28
|
// src/lib/utils.ts
|
|
20
29
|
function cn(...inputs) {
|
|
@@ -1197,6 +1206,156 @@ function SheetDescription({ className, ...props }) {
|
|
|
1197
1206
|
}
|
|
1198
1207
|
);
|
|
1199
1208
|
}
|
|
1209
|
+
function Command({
|
|
1210
|
+
className,
|
|
1211
|
+
...props
|
|
1212
|
+
}) {
|
|
1213
|
+
return /* @__PURE__ */ jsx(
|
|
1214
|
+
Command$1,
|
|
1215
|
+
{
|
|
1216
|
+
"data-slot": "command",
|
|
1217
|
+
className: cn(
|
|
1218
|
+
"flex size-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",
|
|
1219
|
+
className
|
|
1220
|
+
),
|
|
1221
|
+
...props
|
|
1222
|
+
}
|
|
1223
|
+
);
|
|
1224
|
+
}
|
|
1225
|
+
function CommandDialog({ children, className, ...props }) {
|
|
1226
|
+
return /* @__PURE__ */ jsx(Dialog, { ...props, children: /* @__PURE__ */ jsxs(DialogContent, { className: cn("overflow-hidden p-0 shadow-lg", className), children: [
|
|
1227
|
+
/* @__PURE__ */ jsx(DialogTitle, { className: "hidden" }),
|
|
1228
|
+
/* @__PURE__ */ 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]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:size-5", children })
|
|
1229
|
+
] }) });
|
|
1230
|
+
}
|
|
1231
|
+
function CommandInput({
|
|
1232
|
+
className,
|
|
1233
|
+
...props
|
|
1234
|
+
}) {
|
|
1235
|
+
return /* @__PURE__ */ jsxs(
|
|
1236
|
+
"div",
|
|
1237
|
+
{
|
|
1238
|
+
className: "flex items-center border-b border-border px-3",
|
|
1239
|
+
"cmdk-input-wrapper": "",
|
|
1240
|
+
"data-slot": "command-input-wrapper",
|
|
1241
|
+
children: [
|
|
1242
|
+
/* @__PURE__ */ jsx(Search, { className: "me-2 size-4 shrink-0 opacity-50" }),
|
|
1243
|
+
/* @__PURE__ */ jsx(
|
|
1244
|
+
Command$1.Input,
|
|
1245
|
+
{
|
|
1246
|
+
"data-slot": "command-input",
|
|
1247
|
+
className: cn(
|
|
1248
|
+
"flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-hidden text-foreground placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
1249
|
+
className
|
|
1250
|
+
),
|
|
1251
|
+
...props
|
|
1252
|
+
}
|
|
1253
|
+
)
|
|
1254
|
+
]
|
|
1255
|
+
}
|
|
1256
|
+
);
|
|
1257
|
+
}
|
|
1258
|
+
function CommandList({
|
|
1259
|
+
className,
|
|
1260
|
+
...props
|
|
1261
|
+
}) {
|
|
1262
|
+
return /* @__PURE__ */ jsx(
|
|
1263
|
+
Command$1.List,
|
|
1264
|
+
{
|
|
1265
|
+
"data-slot": "command-list",
|
|
1266
|
+
className: cn("max-h-75 overflow-y-auto overflow-x-hidden", className),
|
|
1267
|
+
...props
|
|
1268
|
+
}
|
|
1269
|
+
);
|
|
1270
|
+
}
|
|
1271
|
+
function CommandEmpty({
|
|
1272
|
+
...props
|
|
1273
|
+
}) {
|
|
1274
|
+
return /* @__PURE__ */ jsx(
|
|
1275
|
+
Command$1.Empty,
|
|
1276
|
+
{
|
|
1277
|
+
"data-slot": "command-empty",
|
|
1278
|
+
className: "py-6 text-center text-sm",
|
|
1279
|
+
...props
|
|
1280
|
+
}
|
|
1281
|
+
);
|
|
1282
|
+
}
|
|
1283
|
+
function CommandGroup({
|
|
1284
|
+
className,
|
|
1285
|
+
...props
|
|
1286
|
+
}) {
|
|
1287
|
+
return /* @__PURE__ */ jsx(
|
|
1288
|
+
Command$1.Group,
|
|
1289
|
+
{
|
|
1290
|
+
"data-slot": "command-group",
|
|
1291
|
+
className: cn(
|
|
1292
|
+
"overflow-hidden p-1.5 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",
|
|
1293
|
+
className
|
|
1294
|
+
),
|
|
1295
|
+
...props
|
|
1296
|
+
}
|
|
1297
|
+
);
|
|
1298
|
+
}
|
|
1299
|
+
function CommandSeparator({
|
|
1300
|
+
className,
|
|
1301
|
+
...props
|
|
1302
|
+
}) {
|
|
1303
|
+
return /* @__PURE__ */ jsx(
|
|
1304
|
+
Command$1.Separator,
|
|
1305
|
+
{
|
|
1306
|
+
"data-slot": "command-separator",
|
|
1307
|
+
className: cn("-mx-1.5 h-px bg-border", className),
|
|
1308
|
+
...props
|
|
1309
|
+
}
|
|
1310
|
+
);
|
|
1311
|
+
}
|
|
1312
|
+
function CommandItem({
|
|
1313
|
+
className,
|
|
1314
|
+
...props
|
|
1315
|
+
}) {
|
|
1316
|
+
return /* @__PURE__ */ jsx(
|
|
1317
|
+
Command$1.Item,
|
|
1318
|
+
{
|
|
1319
|
+
"data-slot": "command-item",
|
|
1320
|
+
className: cn(
|
|
1321
|
+
"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm text-foreground outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
1322
|
+
className
|
|
1323
|
+
),
|
|
1324
|
+
...props
|
|
1325
|
+
}
|
|
1326
|
+
);
|
|
1327
|
+
}
|
|
1328
|
+
function CommandShortcut({
|
|
1329
|
+
className,
|
|
1330
|
+
...props
|
|
1331
|
+
}) {
|
|
1332
|
+
return /* @__PURE__ */ jsx(
|
|
1333
|
+
"span",
|
|
1334
|
+
{
|
|
1335
|
+
"data-slot": "command-shortcut",
|
|
1336
|
+
className: cn(
|
|
1337
|
+
"ms-auto text-xs tracking-widest text-muted-foreground",
|
|
1338
|
+
className
|
|
1339
|
+
),
|
|
1340
|
+
...props
|
|
1341
|
+
}
|
|
1342
|
+
);
|
|
1343
|
+
}
|
|
1344
|
+
function CommandCheck({
|
|
1345
|
+
icon: Icon = Check,
|
|
1346
|
+
className,
|
|
1347
|
+
...props
|
|
1348
|
+
}) {
|
|
1349
|
+
return /* @__PURE__ */ jsx(
|
|
1350
|
+
Icon,
|
|
1351
|
+
{
|
|
1352
|
+
"data-slot": "command-check",
|
|
1353
|
+
"data-check": "true",
|
|
1354
|
+
className: cn("ms-auto size-4 text-primary", className),
|
|
1355
|
+
...props
|
|
1356
|
+
}
|
|
1357
|
+
);
|
|
1358
|
+
}
|
|
1200
1359
|
var avatarStatusVariants = cva(
|
|
1201
1360
|
"flex items-center rounded-full size-2 border-2 border-background",
|
|
1202
1361
|
{
|
|
@@ -1285,11 +1444,11 @@ function AvatarStatus({
|
|
|
1285
1444
|
}
|
|
1286
1445
|
);
|
|
1287
1446
|
}
|
|
1288
|
-
var AvatarGroupContext =
|
|
1447
|
+
var AvatarGroupContext = React4.createContext(
|
|
1289
1448
|
null
|
|
1290
1449
|
);
|
|
1291
1450
|
var StaggeredContent = ({ content }) => {
|
|
1292
|
-
const children =
|
|
1451
|
+
const children = React4.Children.toArray(content);
|
|
1293
1452
|
return /* @__PURE__ */ jsx(
|
|
1294
1453
|
motion.div,
|
|
1295
1454
|
{
|
|
@@ -1332,7 +1491,14 @@ function AvatarGroup({
|
|
|
1332
1491
|
tooltipClassName,
|
|
1333
1492
|
animation
|
|
1334
1493
|
};
|
|
1335
|
-
return /* @__PURE__ */ jsx(AvatarGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
1494
|
+
return /* @__PURE__ */ jsx(AvatarGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
1495
|
+
"div",
|
|
1496
|
+
{
|
|
1497
|
+
"data-slot": "avatar-group",
|
|
1498
|
+
className: cn("flex -space-x-2.5", className),
|
|
1499
|
+
children
|
|
1500
|
+
}
|
|
1501
|
+
) });
|
|
1336
1502
|
}
|
|
1337
1503
|
function AvatarGroupItem({
|
|
1338
1504
|
children,
|
|
@@ -1340,8 +1506,8 @@ function AvatarGroupItem({
|
|
|
1340
1506
|
tooltipClassName,
|
|
1341
1507
|
animation: itemAnimation
|
|
1342
1508
|
}) {
|
|
1343
|
-
const context =
|
|
1344
|
-
const [hoveredIndex, setHoveredIndex] =
|
|
1509
|
+
const context = React4.useContext(AvatarGroupContext);
|
|
1510
|
+
const [hoveredIndex, setHoveredIndex] = React4.useState(false);
|
|
1345
1511
|
const springConfig = { stiffness: 100, damping: 5 };
|
|
1346
1512
|
const x = useMotionValue(0);
|
|
1347
1513
|
const animation = itemAnimation || context?.animation || "default";
|
|
@@ -1354,13 +1520,13 @@ function AvatarGroupItem({
|
|
|
1354
1520
|
useTransform(x, [-100, 100], [-50, 50]),
|
|
1355
1521
|
springConfig
|
|
1356
1522
|
);
|
|
1357
|
-
const tooltipChild =
|
|
1358
|
-
(child) =>
|
|
1523
|
+
const tooltipChild = React4.Children.toArray(children).find(
|
|
1524
|
+
(child) => React4.isValidElement(child) && child.type === AvatarGroupTooltip
|
|
1359
1525
|
);
|
|
1360
|
-
const otherChildren =
|
|
1361
|
-
(child) => !(
|
|
1526
|
+
const otherChildren = React4.Children.toArray(children).filter(
|
|
1527
|
+
(child) => !(React4.isValidElement(child) && child.type === AvatarGroupTooltip)
|
|
1362
1528
|
);
|
|
1363
|
-
const tooltipContent = tooltipChild &&
|
|
1529
|
+
const tooltipContent = tooltipChild && React4.isValidElement(tooltipChild) ? tooltipChild.props.children : null;
|
|
1364
1530
|
const handleMouseMove = (event) => {
|
|
1365
1531
|
const halfWidth = event.target.offsetWidth / 2;
|
|
1366
1532
|
x.set(event.nativeEvent.offsetX - halfWidth);
|
|
@@ -1506,6 +1672,248 @@ function AvatarGroupTooltip({
|
|
|
1506
1672
|
}
|
|
1507
1673
|
);
|
|
1508
1674
|
}
|
|
1675
|
+
var THEMES = { light: "", dark: ".dark" };
|
|
1676
|
+
var ChartContext = React4.createContext(null);
|
|
1677
|
+
var chartContainerClasses = [
|
|
1678
|
+
"[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground",
|
|
1679
|
+
"[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50",
|
|
1680
|
+
"[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border",
|
|
1681
|
+
"[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border",
|
|
1682
|
+
"[&_.recharts-radial-bar-background-sector]:fill-muted",
|
|
1683
|
+
"[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted",
|
|
1684
|
+
"[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border",
|
|
1685
|
+
"flex aspect-video justify-center text-xs",
|
|
1686
|
+
"[&_.recharts-dot[stroke='#fff']]:stroke-transparent",
|
|
1687
|
+
"[&_.recharts-layer]:outline-hidden",
|
|
1688
|
+
"[&_.recharts-sector]:outline-hidden",
|
|
1689
|
+
"[&_.recharts-sector[stroke='#fff']]:stroke-transparent",
|
|
1690
|
+
"[&_.recharts-surface]:outline-hidden"
|
|
1691
|
+
].join(" ");
|
|
1692
|
+
function useChart() {
|
|
1693
|
+
const context = React4.useContext(ChartContext);
|
|
1694
|
+
if (!context) {
|
|
1695
|
+
throw new Error("useChart must be used within a <ChartContainer />");
|
|
1696
|
+
}
|
|
1697
|
+
return context;
|
|
1698
|
+
}
|
|
1699
|
+
function ChartContainer({
|
|
1700
|
+
id,
|
|
1701
|
+
className,
|
|
1702
|
+
children,
|
|
1703
|
+
config,
|
|
1704
|
+
...props
|
|
1705
|
+
}) {
|
|
1706
|
+
const uniqueId = React4.useId();
|
|
1707
|
+
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
1708
|
+
return /* @__PURE__ */ jsx(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs(
|
|
1709
|
+
"div",
|
|
1710
|
+
{
|
|
1711
|
+
"data-slot": "chart",
|
|
1712
|
+
"data-chart": chartId,
|
|
1713
|
+
className: cn(chartContainerClasses, className),
|
|
1714
|
+
...props,
|
|
1715
|
+
children: [
|
|
1716
|
+
/* @__PURE__ */ jsx(ChartStyle, { id: chartId, config }),
|
|
1717
|
+
/* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })
|
|
1718
|
+
]
|
|
1719
|
+
}
|
|
1720
|
+
) });
|
|
1721
|
+
}
|
|
1722
|
+
function ChartStyle({ id, config }) {
|
|
1723
|
+
const colorConfig = Object.entries(config).filter(
|
|
1724
|
+
([, itemConfig]) => itemConfig.theme || itemConfig.color
|
|
1725
|
+
);
|
|
1726
|
+
if (!colorConfig.length) {
|
|
1727
|
+
return null;
|
|
1728
|
+
}
|
|
1729
|
+
return /* @__PURE__ */ jsx(
|
|
1730
|
+
"style",
|
|
1731
|
+
{
|
|
1732
|
+
dangerouslySetInnerHTML: {
|
|
1733
|
+
__html: Object.entries(THEMES).map(
|
|
1734
|
+
([theme, prefix]) => `
|
|
1735
|
+
${prefix} [data-chart=${id}] {
|
|
1736
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
1737
|
+
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
1738
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
1739
|
+
}).join("\n")}
|
|
1740
|
+
}
|
|
1741
|
+
`
|
|
1742
|
+
).join("\n")
|
|
1743
|
+
}
|
|
1744
|
+
}
|
|
1745
|
+
);
|
|
1746
|
+
}
|
|
1747
|
+
var ChartTooltip = RechartsPrimitive.Tooltip;
|
|
1748
|
+
function ChartTooltipContent({
|
|
1749
|
+
active,
|
|
1750
|
+
payload,
|
|
1751
|
+
className,
|
|
1752
|
+
indicator = "dot",
|
|
1753
|
+
hideLabel = false,
|
|
1754
|
+
hideIndicator = false,
|
|
1755
|
+
label,
|
|
1756
|
+
labelFormatter,
|
|
1757
|
+
labelClassName,
|
|
1758
|
+
formatter,
|
|
1759
|
+
color,
|
|
1760
|
+
nameKey,
|
|
1761
|
+
labelKey
|
|
1762
|
+
}) {
|
|
1763
|
+
const { config } = useChart();
|
|
1764
|
+
const tooltipLabel = React4.useMemo(() => {
|
|
1765
|
+
if (hideLabel || !payload?.length) {
|
|
1766
|
+
return null;
|
|
1767
|
+
}
|
|
1768
|
+
const [item] = payload;
|
|
1769
|
+
const key = `${labelKey || item?.dataKey || item?.name || "value"}`;
|
|
1770
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1771
|
+
const value = !labelKey && typeof label === "string" ? config[label]?.label || label : itemConfig?.label;
|
|
1772
|
+
if (labelFormatter) {
|
|
1773
|
+
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: labelFormatter(value, payload) });
|
|
1774
|
+
}
|
|
1775
|
+
if (!value) {
|
|
1776
|
+
return null;
|
|
1777
|
+
}
|
|
1778
|
+
return /* @__PURE__ */ jsx("div", { className: cn("font-medium", labelClassName), children: value });
|
|
1779
|
+
}, [
|
|
1780
|
+
label,
|
|
1781
|
+
labelFormatter,
|
|
1782
|
+
payload,
|
|
1783
|
+
hideLabel,
|
|
1784
|
+
labelClassName,
|
|
1785
|
+
config,
|
|
1786
|
+
labelKey
|
|
1787
|
+
]);
|
|
1788
|
+
if (!active || !payload?.length) {
|
|
1789
|
+
return null;
|
|
1790
|
+
}
|
|
1791
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
1792
|
+
return /* @__PURE__ */ jsxs(
|
|
1793
|
+
"div",
|
|
1794
|
+
{
|
|
1795
|
+
className: cn(
|
|
1796
|
+
"border-border/50 bg-background grid min-w-32 items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl",
|
|
1797
|
+
className
|
|
1798
|
+
),
|
|
1799
|
+
children: [
|
|
1800
|
+
!nestLabel ? tooltipLabel : null,
|
|
1801
|
+
/* @__PURE__ */ jsx("div", { className: "grid gap-1.5", children: payload.map((item, index) => {
|
|
1802
|
+
const key = `${nameKey || item.name || item.dataKey || "value"}`;
|
|
1803
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1804
|
+
const indicatorColor = color || item.payload.fill || item.color;
|
|
1805
|
+
return /* @__PURE__ */ jsx(
|
|
1806
|
+
"div",
|
|
1807
|
+
{
|
|
1808
|
+
className: cn(
|
|
1809
|
+
"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5",
|
|
1810
|
+
indicator === "dot" && "items-center"
|
|
1811
|
+
),
|
|
1812
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1813
|
+
itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx(
|
|
1814
|
+
"div",
|
|
1815
|
+
{
|
|
1816
|
+
className: cn(
|
|
1817
|
+
"shrink-0 rounded-sm border-(--color-border) bg-(--color-bg)",
|
|
1818
|
+
{
|
|
1819
|
+
"size-2.5": indicator === "dot",
|
|
1820
|
+
"w-1": indicator === "line",
|
|
1821
|
+
"w-0 border-2 border-dashed bg-transparent": indicator === "dashed",
|
|
1822
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
1823
|
+
}
|
|
1824
|
+
),
|
|
1825
|
+
style: {
|
|
1826
|
+
"--color-bg": indicatorColor,
|
|
1827
|
+
"--color-border": indicatorColor
|
|
1828
|
+
}
|
|
1829
|
+
}
|
|
1830
|
+
),
|
|
1831
|
+
/* @__PURE__ */ jsxs(
|
|
1832
|
+
"div",
|
|
1833
|
+
{
|
|
1834
|
+
className: cn(
|
|
1835
|
+
"flex flex-1 justify-between leading-none",
|
|
1836
|
+
nestLabel ? "items-end" : "items-center"
|
|
1837
|
+
),
|
|
1838
|
+
children: [
|
|
1839
|
+
/* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
|
|
1840
|
+
nestLabel ? tooltipLabel : null,
|
|
1841
|
+
/* @__PURE__ */ jsx("span", { className: "text-muted-foreground", children: itemConfig?.label || item.name })
|
|
1842
|
+
] }),
|
|
1843
|
+
item.value != null && /* @__PURE__ */ jsx("span", { className: "text-foreground font-mono font-medium tabular-nums", children: item.value.toLocaleString() })
|
|
1844
|
+
]
|
|
1845
|
+
}
|
|
1846
|
+
)
|
|
1847
|
+
] })
|
|
1848
|
+
},
|
|
1849
|
+
item.dataKey
|
|
1850
|
+
);
|
|
1851
|
+
}) })
|
|
1852
|
+
]
|
|
1853
|
+
}
|
|
1854
|
+
);
|
|
1855
|
+
}
|
|
1856
|
+
var ChartLegend = RechartsPrimitive.Legend;
|
|
1857
|
+
function ChartLegendContent({
|
|
1858
|
+
className,
|
|
1859
|
+
hideIcon = false,
|
|
1860
|
+
payload,
|
|
1861
|
+
verticalAlign = "bottom",
|
|
1862
|
+
nameKey
|
|
1863
|
+
}) {
|
|
1864
|
+
const { config } = useChart();
|
|
1865
|
+
if (!payload?.length) {
|
|
1866
|
+
return null;
|
|
1867
|
+
}
|
|
1868
|
+
return /* @__PURE__ */ jsx(
|
|
1869
|
+
"div",
|
|
1870
|
+
{
|
|
1871
|
+
className: cn(
|
|
1872
|
+
"flex items-center justify-center gap-4",
|
|
1873
|
+
verticalAlign === "top" ? "pb-3" : "pt-3",
|
|
1874
|
+
className
|
|
1875
|
+
),
|
|
1876
|
+
children: payload.map((item) => {
|
|
1877
|
+
const key = `${nameKey || item.dataKey || "value"}`;
|
|
1878
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, key);
|
|
1879
|
+
return /* @__PURE__ */ jsxs(
|
|
1880
|
+
"div",
|
|
1881
|
+
{
|
|
1882
|
+
className: cn(
|
|
1883
|
+
"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:size-3"
|
|
1884
|
+
),
|
|
1885
|
+
children: [
|
|
1886
|
+
itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx(
|
|
1887
|
+
"div",
|
|
1888
|
+
{
|
|
1889
|
+
className: "size-2 shrink-0 rounded-sm",
|
|
1890
|
+
style: {
|
|
1891
|
+
backgroundColor: item.color
|
|
1892
|
+
}
|
|
1893
|
+
}
|
|
1894
|
+
),
|
|
1895
|
+
itemConfig?.label
|
|
1896
|
+
]
|
|
1897
|
+
},
|
|
1898
|
+
item.value
|
|
1899
|
+
);
|
|
1900
|
+
})
|
|
1901
|
+
}
|
|
1902
|
+
);
|
|
1903
|
+
}
|
|
1904
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
1905
|
+
if (typeof payload !== "object" || payload === null) {
|
|
1906
|
+
return void 0;
|
|
1907
|
+
}
|
|
1908
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
1909
|
+
let configLabelKey = key;
|
|
1910
|
+
if (key in payload && typeof payload[key] === "string") {
|
|
1911
|
+
configLabelKey = payload[key];
|
|
1912
|
+
} else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") {
|
|
1913
|
+
configLabelKey = payloadPayload[key];
|
|
1914
|
+
}
|
|
1915
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
1916
|
+
}
|
|
1509
1917
|
var DataGridContext = createContext(void 0);
|
|
1510
1918
|
function useDataGrid() {
|
|
1511
1919
|
const context = useContext(DataGridContext);
|
|
@@ -2494,7 +2902,7 @@ function DataGridColumnHeader({
|
|
|
2494
2902
|
}
|
|
2495
2903
|
return headerLabel();
|
|
2496
2904
|
}
|
|
2497
|
-
var SelectContext =
|
|
2905
|
+
var SelectContext = React4.createContext({ indicatorPosition: "left", indicator: null, indicatorVisibility: true });
|
|
2498
2906
|
var Select = ({
|
|
2499
2907
|
indicatorPosition = "left",
|
|
2500
2908
|
indicatorVisibility = true,
|
|
@@ -2648,7 +3056,7 @@ function SelectItem({
|
|
|
2648
3056
|
children,
|
|
2649
3057
|
...props
|
|
2650
3058
|
}) {
|
|
2651
|
-
const { indicatorPosition, indicatorVisibility, indicator } =
|
|
3059
|
+
const { indicatorPosition, indicatorVisibility, indicator } = React4.useContext(SelectContext);
|
|
2652
3060
|
return /* @__PURE__ */ jsxs(
|
|
2653
3061
|
Select$1.Item,
|
|
2654
3062
|
{
|
|
@@ -2680,7 +3088,7 @@ function SelectIndicator({
|
|
|
2680
3088
|
className,
|
|
2681
3089
|
...props
|
|
2682
3090
|
}) {
|
|
2683
|
-
const { indicatorPosition } =
|
|
3091
|
+
const { indicatorPosition } = React4.useContext(SelectContext);
|
|
2684
3092
|
return /* @__PURE__ */ jsx(
|
|
2685
3093
|
"span",
|
|
2686
3094
|
{
|
|
@@ -2904,61 +3312,492 @@ function DataGridColumnVisibility({
|
|
|
2904
3312
|
] })
|
|
2905
3313
|
] });
|
|
2906
3314
|
}
|
|
2907
|
-
var
|
|
2908
|
-
|
|
2909
|
-
{
|
|
2910
|
-
|
|
2911
|
-
|
|
2912
|
-
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
3315
|
+
var KanbanContext = React4.createContext({
|
|
3316
|
+
columns: {},
|
|
3317
|
+
setColumns: () => {
|
|
3318
|
+
},
|
|
3319
|
+
getItemId: () => "",
|
|
3320
|
+
columnIds: [],
|
|
3321
|
+
activeId: null,
|
|
3322
|
+
setActiveId: () => {
|
|
3323
|
+
},
|
|
3324
|
+
findContainer: () => void 0,
|
|
3325
|
+
isColumn: () => false
|
|
3326
|
+
});
|
|
3327
|
+
var ColumnContext = React4.createContext({
|
|
3328
|
+
attributes: {},
|
|
3329
|
+
listeners: void 0,
|
|
3330
|
+
isDragging: false,
|
|
3331
|
+
disabled: false
|
|
3332
|
+
});
|
|
3333
|
+
var ItemContext = React4.createContext({
|
|
3334
|
+
listeners: void 0,
|
|
3335
|
+
isDragging: false,
|
|
3336
|
+
disabled: false
|
|
3337
|
+
});
|
|
3338
|
+
var dropAnimationConfig = {
|
|
3339
|
+
...defaultDropAnimation,
|
|
3340
|
+
sideEffects: defaultDropAnimationSideEffects({
|
|
3341
|
+
styles: {
|
|
3342
|
+
active: {
|
|
3343
|
+
opacity: "0.4"
|
|
3344
|
+
}
|
|
3345
|
+
}
|
|
3346
|
+
})
|
|
3347
|
+
};
|
|
3348
|
+
function Kanban({
|
|
3349
|
+
value,
|
|
3350
|
+
onValueChange,
|
|
3351
|
+
getItemValue,
|
|
3352
|
+
children,
|
|
3353
|
+
className,
|
|
3354
|
+
onMove
|
|
3355
|
+
}) {
|
|
3356
|
+
const columns = value;
|
|
3357
|
+
const setColumns = onValueChange;
|
|
3358
|
+
const [activeId, setActiveId] = React4.useState(null);
|
|
3359
|
+
const sensors = useSensors(
|
|
3360
|
+
useSensor(PointerSensor, {
|
|
3361
|
+
activationConstraint: {
|
|
3362
|
+
distance: 10
|
|
2938
3363
|
}
|
|
3364
|
+
}),
|
|
3365
|
+
useSensor(KeyboardSensor, {
|
|
3366
|
+
coordinateGetter: sortableKeyboardCoordinates
|
|
3367
|
+
})
|
|
3368
|
+
);
|
|
3369
|
+
const columnIds = React4.useMemo(() => Object.keys(columns), [columns]);
|
|
3370
|
+
const isColumn = React4.useCallback(
|
|
3371
|
+
(id) => columnIds.includes(id),
|
|
3372
|
+
[columnIds]
|
|
3373
|
+
);
|
|
3374
|
+
const findContainer = React4.useCallback(
|
|
3375
|
+
(id) => {
|
|
3376
|
+
if (isColumn(id)) return id;
|
|
3377
|
+
return columnIds.find(
|
|
3378
|
+
(key) => columns[key].some((item) => getItemValue(item) === id)
|
|
3379
|
+
);
|
|
2939
3380
|
},
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2946
|
-
|
|
2947
|
-
{
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
3381
|
+
[columns, columnIds, getItemValue, isColumn]
|
|
3382
|
+
);
|
|
3383
|
+
const handleDragStart = React4.useCallback((event) => {
|
|
3384
|
+
setActiveId(event.active.id);
|
|
3385
|
+
}, []);
|
|
3386
|
+
const handleDragOver = React4.useCallback(
|
|
3387
|
+
(event) => {
|
|
3388
|
+
if (onMove) {
|
|
3389
|
+
return;
|
|
3390
|
+
}
|
|
3391
|
+
const { active, over } = event;
|
|
3392
|
+
if (!over) return;
|
|
3393
|
+
if (isColumn(active.id)) return;
|
|
3394
|
+
const activeContainer = findContainer(active.id);
|
|
3395
|
+
const overContainer = findContainer(over.id);
|
|
3396
|
+
if (!activeContainer || !overContainer || activeContainer === overContainer) {
|
|
3397
|
+
return;
|
|
3398
|
+
}
|
|
3399
|
+
const activeItems = [...columns[activeContainer]];
|
|
3400
|
+
const overItems = [...columns[overContainer]];
|
|
3401
|
+
const activeIndex = activeItems.findIndex(
|
|
3402
|
+
(item) => getItemValue(item) === active.id
|
|
3403
|
+
);
|
|
3404
|
+
const overIndex = isColumn(over.id) ? overItems.length : overItems.findIndex((item) => getItemValue(item) === over.id);
|
|
3405
|
+
const [movedItem] = activeItems.splice(activeIndex, 1);
|
|
3406
|
+
overItems.splice(overIndex, 0, movedItem);
|
|
3407
|
+
setColumns({
|
|
3408
|
+
...columns,
|
|
3409
|
+
[activeContainer]: activeItems,
|
|
3410
|
+
[overContainer]: overItems
|
|
3411
|
+
});
|
|
3412
|
+
},
|
|
3413
|
+
[findContainer, getItemValue, isColumn, setColumns, columns, onMove]
|
|
3414
|
+
);
|
|
3415
|
+
const handleDragEnd = React4.useCallback(
|
|
3416
|
+
(event) => {
|
|
3417
|
+
const { active, over } = event;
|
|
3418
|
+
setActiveId(null);
|
|
3419
|
+
if (!over) return;
|
|
3420
|
+
if (onMove && !isColumn(active.id)) {
|
|
3421
|
+
const activeContainer2 = findContainer(active.id);
|
|
3422
|
+
const overContainer2 = findContainer(over.id);
|
|
3423
|
+
if (activeContainer2 && overContainer2) {
|
|
3424
|
+
const activeIndex = columns[activeContainer2].findIndex(
|
|
3425
|
+
(item) => getItemValue(item) === active.id
|
|
3426
|
+
);
|
|
3427
|
+
const overIndex = isColumn(over.id) ? columns[overContainer2].length : columns[overContainer2].findIndex(
|
|
3428
|
+
(item) => getItemValue(item) === over.id
|
|
3429
|
+
);
|
|
3430
|
+
onMove({
|
|
3431
|
+
event,
|
|
3432
|
+
activeContainer: activeContainer2,
|
|
3433
|
+
activeIndex,
|
|
3434
|
+
overContainer: overContainer2,
|
|
3435
|
+
overIndex
|
|
3436
|
+
});
|
|
3437
|
+
}
|
|
3438
|
+
return;
|
|
3439
|
+
}
|
|
3440
|
+
if (isColumn(active.id) && isColumn(over.id)) {
|
|
3441
|
+
const activeIndex = columnIds.indexOf(active.id);
|
|
3442
|
+
const overIndex = columnIds.indexOf(over.id);
|
|
3443
|
+
if (activeIndex !== overIndex) {
|
|
3444
|
+
const newOrder = arrayMove(
|
|
3445
|
+
Object.keys(columns),
|
|
3446
|
+
activeIndex,
|
|
3447
|
+
overIndex
|
|
3448
|
+
);
|
|
3449
|
+
const newColumns = {};
|
|
3450
|
+
newOrder.forEach((key) => {
|
|
3451
|
+
newColumns[key] = columns[key];
|
|
3452
|
+
});
|
|
3453
|
+
setColumns(newColumns);
|
|
3454
|
+
}
|
|
3455
|
+
return;
|
|
3456
|
+
}
|
|
3457
|
+
const activeContainer = findContainer(active.id);
|
|
3458
|
+
const overContainer = findContainer(over.id);
|
|
3459
|
+
if (activeContainer && overContainer && activeContainer === overContainer) {
|
|
3460
|
+
const container = activeContainer;
|
|
3461
|
+
const activeIndex = columns[container].findIndex(
|
|
3462
|
+
(item) => getItemValue(item) === active.id
|
|
3463
|
+
);
|
|
3464
|
+
const overIndex = columns[container].findIndex(
|
|
3465
|
+
(item) => getItemValue(item) === over.id
|
|
3466
|
+
);
|
|
3467
|
+
if (activeIndex !== overIndex) {
|
|
3468
|
+
setColumns({
|
|
3469
|
+
...columns,
|
|
3470
|
+
[container]: arrayMove(columns[container], activeIndex, overIndex)
|
|
3471
|
+
});
|
|
3472
|
+
}
|
|
3473
|
+
}
|
|
3474
|
+
},
|
|
3475
|
+
[
|
|
3476
|
+
columnIds,
|
|
3477
|
+
columns,
|
|
3478
|
+
findContainer,
|
|
3479
|
+
getItemValue,
|
|
3480
|
+
isColumn,
|
|
3481
|
+
setColumns,
|
|
3482
|
+
onMove
|
|
3483
|
+
]
|
|
3484
|
+
);
|
|
3485
|
+
const contextValue = React4.useMemo(
|
|
3486
|
+
() => ({
|
|
3487
|
+
columns,
|
|
3488
|
+
setColumns,
|
|
3489
|
+
getItemId: getItemValue,
|
|
3490
|
+
columnIds,
|
|
3491
|
+
activeId,
|
|
3492
|
+
setActiveId,
|
|
3493
|
+
findContainer,
|
|
3494
|
+
isColumn
|
|
3495
|
+
}),
|
|
3496
|
+
[
|
|
3497
|
+
columns,
|
|
3498
|
+
setColumns,
|
|
3499
|
+
getItemValue,
|
|
3500
|
+
columnIds,
|
|
3501
|
+
activeId,
|
|
3502
|
+
findContainer,
|
|
3503
|
+
isColumn
|
|
3504
|
+
]
|
|
3505
|
+
);
|
|
3506
|
+
return /* @__PURE__ */ jsx(KanbanContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
|
|
3507
|
+
DndContext,
|
|
3508
|
+
{
|
|
3509
|
+
sensors,
|
|
3510
|
+
onDragStart: handleDragStart,
|
|
3511
|
+
onDragOver: handleDragOver,
|
|
3512
|
+
onDragEnd: handleDragEnd,
|
|
3513
|
+
children: /* @__PURE__ */ jsx(
|
|
3514
|
+
"div",
|
|
3515
|
+
{
|
|
3516
|
+
"data-slot": "kanban",
|
|
3517
|
+
"data-dragging": activeId !== null,
|
|
3518
|
+
className: cn(className),
|
|
3519
|
+
children
|
|
3520
|
+
}
|
|
3521
|
+
)
|
|
3522
|
+
}
|
|
3523
|
+
) });
|
|
3524
|
+
}
|
|
3525
|
+
function KanbanBoard({ children, className }) {
|
|
3526
|
+
const { columnIds } = React4.useContext(KanbanContext);
|
|
3527
|
+
return /* @__PURE__ */ jsx(SortableContext, { items: columnIds, strategy: rectSortingStrategy, children: /* @__PURE__ */ jsx(
|
|
3528
|
+
"div",
|
|
3529
|
+
{
|
|
3530
|
+
"data-slot": "kanban-board",
|
|
3531
|
+
className: cn("grid auto-rows-fr gap-4", className),
|
|
3532
|
+
children
|
|
3533
|
+
}
|
|
3534
|
+
) });
|
|
3535
|
+
}
|
|
3536
|
+
function KanbanColumn({
|
|
3537
|
+
value,
|
|
3538
|
+
className,
|
|
3539
|
+
children,
|
|
3540
|
+
disabled
|
|
3541
|
+
}) {
|
|
3542
|
+
const {
|
|
3543
|
+
setNodeRef,
|
|
3544
|
+
transform,
|
|
3545
|
+
transition,
|
|
3546
|
+
attributes,
|
|
3547
|
+
listeners,
|
|
3548
|
+
isDragging: isSortableDragging
|
|
3549
|
+
} = useSortable({
|
|
3550
|
+
id: value,
|
|
3551
|
+
disabled
|
|
3552
|
+
});
|
|
3553
|
+
const { activeId, isColumn } = React4.useContext(KanbanContext);
|
|
3554
|
+
const isColumnDragging = activeId ? isColumn(activeId) : false;
|
|
3555
|
+
const style = {
|
|
3556
|
+
transition,
|
|
3557
|
+
transform: CSS$1.Translate.toString(transform)
|
|
3558
|
+
};
|
|
3559
|
+
return /* @__PURE__ */ jsx(
|
|
3560
|
+
ColumnContext.Provider,
|
|
3561
|
+
{
|
|
3562
|
+
value: { attributes, listeners, isDragging: isColumnDragging, disabled },
|
|
3563
|
+
children: /* @__PURE__ */ jsx(
|
|
3564
|
+
"div",
|
|
3565
|
+
{
|
|
3566
|
+
"data-slot": "kanban-column",
|
|
3567
|
+
"data-value": value,
|
|
3568
|
+
"data-dragging": isSortableDragging,
|
|
3569
|
+
"data-disabled": disabled,
|
|
3570
|
+
ref: setNodeRef,
|
|
3571
|
+
style,
|
|
3572
|
+
className: cn(
|
|
3573
|
+
"group/kanban-column flex flex-col",
|
|
3574
|
+
isSortableDragging && "opacity-50",
|
|
3575
|
+
disabled && "opacity-50",
|
|
3576
|
+
className
|
|
3577
|
+
),
|
|
3578
|
+
children
|
|
3579
|
+
}
|
|
3580
|
+
)
|
|
3581
|
+
}
|
|
3582
|
+
);
|
|
3583
|
+
}
|
|
3584
|
+
function KanbanColumnHandle({
|
|
3585
|
+
asChild,
|
|
3586
|
+
className,
|
|
3587
|
+
children,
|
|
3588
|
+
cursor = true
|
|
3589
|
+
}) {
|
|
3590
|
+
const { attributes, listeners, isDragging, disabled } = React4.useContext(ColumnContext);
|
|
3591
|
+
const Comp = asChild ? Slot : "div";
|
|
3592
|
+
return /* @__PURE__ */ jsx(
|
|
3593
|
+
Comp,
|
|
3594
|
+
{
|
|
3595
|
+
"data-slot": "kanban-column-handle",
|
|
3596
|
+
"data-dragging": isDragging,
|
|
3597
|
+
"data-disabled": disabled,
|
|
3598
|
+
...attributes,
|
|
3599
|
+
...listeners,
|
|
3600
|
+
className: cn(
|
|
3601
|
+
"opacity-0 transition-opacity group-hover/kanban-column:opacity-100",
|
|
3602
|
+
cursor && (isDragging ? "cursor-grabbing!" : "cursor-grab!"),
|
|
3603
|
+
className
|
|
3604
|
+
),
|
|
3605
|
+
children
|
|
3606
|
+
}
|
|
3607
|
+
);
|
|
3608
|
+
}
|
|
3609
|
+
function KanbanItem({
|
|
3610
|
+
value,
|
|
3611
|
+
asChild = false,
|
|
3612
|
+
className,
|
|
3613
|
+
children,
|
|
3614
|
+
disabled
|
|
3615
|
+
}) {
|
|
3616
|
+
const {
|
|
3617
|
+
setNodeRef,
|
|
3618
|
+
transform,
|
|
3619
|
+
transition,
|
|
3620
|
+
attributes,
|
|
3621
|
+
listeners,
|
|
3622
|
+
isDragging: isSortableDragging
|
|
3623
|
+
} = useSortable({
|
|
3624
|
+
id: value,
|
|
3625
|
+
disabled
|
|
3626
|
+
});
|
|
3627
|
+
const { activeId, isColumn } = React4.useContext(KanbanContext);
|
|
3628
|
+
const isItemDragging = activeId ? !isColumn(activeId) : false;
|
|
3629
|
+
const style = {
|
|
3630
|
+
transition,
|
|
3631
|
+
transform: CSS$1.Translate.toString(transform)
|
|
3632
|
+
};
|
|
3633
|
+
const Comp = asChild ? Slot : "div";
|
|
3634
|
+
return /* @__PURE__ */ jsx(
|
|
3635
|
+
ItemContext.Provider,
|
|
3636
|
+
{
|
|
3637
|
+
value: { listeners, isDragging: isItemDragging, disabled },
|
|
3638
|
+
children: /* @__PURE__ */ jsx(
|
|
3639
|
+
Comp,
|
|
3640
|
+
{
|
|
3641
|
+
"data-slot": "kanban-item",
|
|
3642
|
+
"data-value": value,
|
|
3643
|
+
"data-dragging": isSortableDragging,
|
|
3644
|
+
"data-disabled": disabled,
|
|
3645
|
+
ref: setNodeRef,
|
|
3646
|
+
style,
|
|
3647
|
+
...attributes,
|
|
3648
|
+
className: cn(
|
|
3649
|
+
isSortableDragging && "opacity-50",
|
|
3650
|
+
disabled && "opacity-50",
|
|
3651
|
+
className
|
|
3652
|
+
),
|
|
3653
|
+
children
|
|
3654
|
+
}
|
|
3655
|
+
)
|
|
3656
|
+
}
|
|
3657
|
+
);
|
|
3658
|
+
}
|
|
3659
|
+
function KanbanItemHandle({
|
|
3660
|
+
asChild,
|
|
3661
|
+
className,
|
|
3662
|
+
children,
|
|
3663
|
+
cursor = true
|
|
3664
|
+
}) {
|
|
3665
|
+
const { listeners, isDragging, disabled } = React4.useContext(ItemContext);
|
|
3666
|
+
const Comp = asChild ? Slot : "div";
|
|
3667
|
+
return /* @__PURE__ */ jsx(
|
|
3668
|
+
Comp,
|
|
3669
|
+
{
|
|
3670
|
+
"data-slot": "kanban-item-handle",
|
|
3671
|
+
"data-dragging": isDragging,
|
|
3672
|
+
"data-disabled": disabled,
|
|
3673
|
+
...listeners,
|
|
3674
|
+
className: cn(
|
|
3675
|
+
cursor && (isDragging ? "cursor-grabbing!" : "cursor-grab!"),
|
|
3676
|
+
className
|
|
3677
|
+
),
|
|
3678
|
+
children
|
|
3679
|
+
}
|
|
3680
|
+
);
|
|
3681
|
+
}
|
|
3682
|
+
function KanbanColumnContent({
|
|
3683
|
+
value,
|
|
3684
|
+
className,
|
|
3685
|
+
children
|
|
3686
|
+
}) {
|
|
3687
|
+
const { columns, getItemId } = React4.useContext(KanbanContext);
|
|
3688
|
+
const itemIds = React4.useMemo(
|
|
3689
|
+
() => columns[value].map(getItemId),
|
|
3690
|
+
[columns, getItemId, value]
|
|
3691
|
+
);
|
|
3692
|
+
return /* @__PURE__ */ jsx(SortableContext, { items: itemIds, strategy: verticalListSortingStrategy, children: /* @__PURE__ */ jsx(
|
|
3693
|
+
"div",
|
|
3694
|
+
{
|
|
3695
|
+
"data-slot": "kanban-column-content",
|
|
3696
|
+
className: cn("flex flex-col gap-2", className),
|
|
3697
|
+
children
|
|
3698
|
+
}
|
|
3699
|
+
) });
|
|
3700
|
+
}
|
|
3701
|
+
function KanbanOverlay({ children, className }) {
|
|
3702
|
+
const { activeId, isColumn } = React4.useContext(KanbanContext);
|
|
3703
|
+
const [dimensions, setDimensions] = React4.useState(null);
|
|
3704
|
+
React4.useEffect(() => {
|
|
3705
|
+
if (activeId) {
|
|
3706
|
+
const element = document.querySelector(
|
|
3707
|
+
`[data-slot="kanban-${isColumn(activeId) ? "column" : "item"}"][data-value="${activeId}"]`
|
|
3708
|
+
);
|
|
3709
|
+
if (element) {
|
|
3710
|
+
const rect = element.getBoundingClientRect();
|
|
3711
|
+
setDimensions({ width: rect.width, height: rect.height });
|
|
3712
|
+
}
|
|
3713
|
+
} else {
|
|
3714
|
+
setDimensions(null);
|
|
3715
|
+
}
|
|
3716
|
+
}, [activeId, isColumn]);
|
|
3717
|
+
const style = {
|
|
3718
|
+
width: dimensions?.width,
|
|
3719
|
+
height: dimensions?.height
|
|
3720
|
+
};
|
|
3721
|
+
const content = React4.useMemo(() => {
|
|
3722
|
+
if (!activeId) return null;
|
|
3723
|
+
if (typeof children === "function") {
|
|
3724
|
+
return children({
|
|
3725
|
+
value: activeId,
|
|
3726
|
+
variant: isColumn(activeId) ? "column" : "item"
|
|
3727
|
+
});
|
|
3728
|
+
}
|
|
3729
|
+
return children;
|
|
3730
|
+
}, [activeId, children, isColumn]);
|
|
3731
|
+
return /* @__PURE__ */ jsx(DragOverlay, { dropAnimation: dropAnimationConfig, children: /* @__PURE__ */ jsx(
|
|
3732
|
+
"div",
|
|
3733
|
+
{
|
|
3734
|
+
"data-slot": "kanban-overlay",
|
|
3735
|
+
"data-dragging": true,
|
|
3736
|
+
style,
|
|
3737
|
+
className: cn(
|
|
3738
|
+
"pointer-events-none",
|
|
3739
|
+
className,
|
|
3740
|
+
activeId ? "cursor-grabbing!" : ""
|
|
3741
|
+
),
|
|
3742
|
+
children: content
|
|
3743
|
+
}
|
|
3744
|
+
) });
|
|
3745
|
+
}
|
|
3746
|
+
var badgeVariants = cva(
|
|
3747
|
+
"inline-flex items-center justify-center border border-transparent font-medium focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 [&_svg]:-ms-px [&_svg]:shrink-0",
|
|
3748
|
+
{
|
|
3749
|
+
variants: {
|
|
3750
|
+
variant: {
|
|
3751
|
+
primary: "bg-primary text-primary-foreground",
|
|
3752
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
3753
|
+
success: "bg-[var(--color-success-accent,var(--color-green-500))] text-[var(--color-success-foreground,var(--color-white))]",
|
|
3754
|
+
warning: "bg-[var(--color-warning-accent,var(--color-yellow-500))] text-[var(--color-warning-foreground,var(--color-white))]",
|
|
3755
|
+
info: "bg-[var(--color-info-accent,var(--color-violet-500))] text-[var(--color-info-foreground,var(--color-white))]",
|
|
3756
|
+
outline: "bg-transparent border border-border text-secondary-foreground",
|
|
3757
|
+
destructive: "bg-destructive text-destructive-foreground"
|
|
3758
|
+
},
|
|
3759
|
+
appearance: {
|
|
3760
|
+
default: "",
|
|
3761
|
+
light: "",
|
|
3762
|
+
outline: "",
|
|
3763
|
+
ghost: "border-transparent bg-transparent"
|
|
3764
|
+
},
|
|
3765
|
+
disabled: {
|
|
3766
|
+
true: "opacity-50 pointer-events-none"
|
|
3767
|
+
},
|
|
3768
|
+
size: {
|
|
3769
|
+
lg: "rounded-md px-[0.5rem] h-7 min-w-7 gap-1.5 text-xs [&_svg]:size-3.5",
|
|
3770
|
+
md: "rounded-md px-[0.45rem] h-6 min-w-6 gap-1.5 text-xs [&_svg]:size-3.5 ",
|
|
3771
|
+
sm: "rounded-sm px-[0.325rem] h-5 min-w-5 gap-1 text-[0.6875rem] leading-[0.75rem] [&_svg]:size-3",
|
|
3772
|
+
xs: "rounded-sm px-[0.25rem] h-4 min-w-4 gap-1 text-[0.625rem] leading-[0.5rem] [&_svg]:size-3"
|
|
3773
|
+
},
|
|
3774
|
+
shape: {
|
|
3775
|
+
default: "",
|
|
3776
|
+
circle: "rounded-full"
|
|
3777
|
+
}
|
|
3778
|
+
},
|
|
3779
|
+
compoundVariants: [
|
|
3780
|
+
/* Light */
|
|
3781
|
+
{
|
|
3782
|
+
variant: "primary",
|
|
3783
|
+
appearance: "light",
|
|
3784
|
+
className: "text-[var(--color-primary-accent,var(--color-blue-700))] bg-[var(--color-primary-soft,var(--color-blue-50))] dark:bg-[var(--color-primary-soft,var(--color-blue-950))] dark:text-[var(--color-primary-soft,var(--color-blue-600))]"
|
|
3785
|
+
},
|
|
3786
|
+
{
|
|
3787
|
+
variant: "secondary",
|
|
3788
|
+
appearance: "light",
|
|
3789
|
+
className: "bg-secondary dark:bg-secondary/50 text-secondary-foreground"
|
|
3790
|
+
},
|
|
3791
|
+
{
|
|
3792
|
+
variant: "success",
|
|
3793
|
+
appearance: "light",
|
|
3794
|
+
className: "text-[var(--color-success-accent,var(--color-green-800))] bg-[var(--color-success-soft,var(--color-green-100))] dark:bg-[var(--color-success-soft,var(--color-green-950))] dark:text-[var(--color-success-soft,var(--color-green-600))]"
|
|
3795
|
+
},
|
|
3796
|
+
{
|
|
3797
|
+
variant: "warning",
|
|
3798
|
+
appearance: "light",
|
|
3799
|
+
className: "text-[var(--color-warning-accent,var(--color-yellow-700))] bg-[var(--color-warning-soft,var(--color-yellow-100))] dark:bg-[var(--color-warning-soft,var(--color-yellow-950))] dark:text-[var(--color-warning-soft,var(--color-yellow-600))]"
|
|
3800
|
+
},
|
|
2962
3801
|
{
|
|
2963
3802
|
variant: "info",
|
|
2964
3803
|
appearance: "light",
|
|
@@ -3104,50 +3943,536 @@ function BadgeDot({ className, ...props }) {
|
|
|
3104
3943
|
}
|
|
3105
3944
|
);
|
|
3106
3945
|
}
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
return /* @__PURE__ */ jsx(
|
|
3114
|
-
"ol",
|
|
3115
|
-
{
|
|
3116
|
-
"data-slot": "breadcrumb-list",
|
|
3117
|
-
className: cn(
|
|
3118
|
-
"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground",
|
|
3119
|
-
className
|
|
3120
|
-
),
|
|
3121
|
-
...props
|
|
3946
|
+
var accordionRootVariants = cva("", {
|
|
3947
|
+
variants: {
|
|
3948
|
+
variant: {
|
|
3949
|
+
default: "",
|
|
3950
|
+
outline: "space-y-2",
|
|
3951
|
+
solid: "space-y-2"
|
|
3122
3952
|
}
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3953
|
+
},
|
|
3954
|
+
defaultVariants: {
|
|
3955
|
+
variant: "default"
|
|
3956
|
+
}
|
|
3957
|
+
});
|
|
3958
|
+
var accordionItemVariants = cva("", {
|
|
3959
|
+
variants: {
|
|
3960
|
+
variant: {
|
|
3961
|
+
default: "border-b border-border",
|
|
3962
|
+
outline: "border border-border rounded-lg px-4",
|
|
3963
|
+
solid: "rounded-lg bg-accent/70 px-4"
|
|
3964
|
+
}
|
|
3965
|
+
},
|
|
3966
|
+
defaultVariants: {
|
|
3967
|
+
variant: "default"
|
|
3968
|
+
}
|
|
3969
|
+
});
|
|
3970
|
+
var accordionTriggerVariants = cva(
|
|
3971
|
+
"flex flex-1 items-center justify-between py-4 gap-2.5 text-foreground font-medium transition-all [&[data-state=open]>svg]:rotate-180 cursor-pointer",
|
|
3972
|
+
{
|
|
3973
|
+
variants: {
|
|
3974
|
+
variant: {
|
|
3975
|
+
default: "",
|
|
3976
|
+
outline: "",
|
|
3977
|
+
solid: ""
|
|
3978
|
+
},
|
|
3979
|
+
indicator: {
|
|
3980
|
+
arrow: "",
|
|
3981
|
+
plus: "[&>svg>path:last-child]:origin-center [&>svg>path:last-child]:transition-all [&>svg>path:last-child]:duration-200 [&[data-state=open]>svg>path:last-child]:rotate-90 [&[data-state=open]>svg>path:last-child]:opacity-0 [&[data-state=open]>svg]:rotate-180",
|
|
3982
|
+
none: ""
|
|
3983
|
+
}
|
|
3984
|
+
},
|
|
3985
|
+
defaultVariants: {
|
|
3986
|
+
variant: "default",
|
|
3987
|
+
indicator: "arrow"
|
|
3988
|
+
}
|
|
3989
|
+
}
|
|
3990
|
+
);
|
|
3991
|
+
var accordionContentVariants = cva(
|
|
3992
|
+
"overflow-hidden text-sm text-accent-foreground transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
3993
|
+
{
|
|
3994
|
+
variants: {
|
|
3995
|
+
variant: {
|
|
3996
|
+
default: "",
|
|
3997
|
+
outline: "",
|
|
3998
|
+
solid: ""
|
|
3999
|
+
}
|
|
4000
|
+
},
|
|
4001
|
+
defaultVariants: {
|
|
4002
|
+
variant: "default"
|
|
4003
|
+
}
|
|
4004
|
+
}
|
|
4005
|
+
);
|
|
4006
|
+
var AccordionContext = React4.createContext({
|
|
4007
|
+
variant: "default",
|
|
4008
|
+
indicator: "arrow"
|
|
4009
|
+
});
|
|
4010
|
+
function Accordion(props) {
|
|
4011
|
+
const {
|
|
4012
|
+
className,
|
|
4013
|
+
variant = "default",
|
|
4014
|
+
indicator = "arrow",
|
|
4015
|
+
children,
|
|
4016
|
+
...rest
|
|
4017
|
+
} = props;
|
|
3126
4018
|
return /* @__PURE__ */ jsx(
|
|
3127
|
-
|
|
4019
|
+
AccordionContext.Provider,
|
|
3128
4020
|
{
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
4021
|
+
value: { variant: variant || "default", indicator },
|
|
4022
|
+
children: /* @__PURE__ */ jsx(
|
|
4023
|
+
Accordion$1.Root,
|
|
4024
|
+
{
|
|
4025
|
+
"data-slot": "accordion",
|
|
4026
|
+
className: cn(accordionRootVariants({ variant }), className),
|
|
4027
|
+
...rest,
|
|
4028
|
+
children
|
|
4029
|
+
}
|
|
4030
|
+
)
|
|
3132
4031
|
}
|
|
3133
4032
|
);
|
|
3134
4033
|
}
|
|
3135
|
-
function
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
...props
|
|
3139
|
-
}) {
|
|
3140
|
-
const Comp = asChild ? Slot.Slot : "a";
|
|
4034
|
+
function AccordionItem(props) {
|
|
4035
|
+
const { className, children, ...rest } = props;
|
|
4036
|
+
const { variant } = React4.useContext(AccordionContext);
|
|
3141
4037
|
return /* @__PURE__ */ jsx(
|
|
3142
|
-
|
|
4038
|
+
Accordion$1.Item,
|
|
3143
4039
|
{
|
|
3144
|
-
"data-slot": "
|
|
3145
|
-
className: cn(
|
|
3146
|
-
...
|
|
4040
|
+
"data-slot": "accordion-item",
|
|
4041
|
+
className: cn(accordionItemVariants({ variant }), className),
|
|
4042
|
+
...rest,
|
|
4043
|
+
children
|
|
3147
4044
|
}
|
|
3148
4045
|
);
|
|
3149
4046
|
}
|
|
3150
|
-
function
|
|
4047
|
+
function AccordionTrigger(props) {
|
|
4048
|
+
const { className, children, ...rest } = props;
|
|
4049
|
+
const { variant, indicator } = React4.useContext(AccordionContext);
|
|
4050
|
+
return /* @__PURE__ */ jsx(Accordion$1.Header, { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
4051
|
+
Accordion$1.Trigger,
|
|
4052
|
+
{
|
|
4053
|
+
"data-slot": "accordion-trigger",
|
|
4054
|
+
className: cn(
|
|
4055
|
+
accordionTriggerVariants({ variant, indicator }),
|
|
4056
|
+
className
|
|
4057
|
+
),
|
|
4058
|
+
...rest,
|
|
4059
|
+
children: [
|
|
4060
|
+
children,
|
|
4061
|
+
indicator === "plus" && /* @__PURE__ */ jsx(
|
|
4062
|
+
Plus,
|
|
4063
|
+
{
|
|
4064
|
+
className: "size-4 shrink-0 transition-transform duration-200",
|
|
4065
|
+
strokeWidth: 1
|
|
4066
|
+
}
|
|
4067
|
+
),
|
|
4068
|
+
indicator === "arrow" && /* @__PURE__ */ jsx(
|
|
4069
|
+
ChevronDown,
|
|
4070
|
+
{
|
|
4071
|
+
className: "size-4 shrink-0 transition-transform duration-200",
|
|
4072
|
+
strokeWidth: 1
|
|
4073
|
+
}
|
|
4074
|
+
)
|
|
4075
|
+
]
|
|
4076
|
+
}
|
|
4077
|
+
) });
|
|
4078
|
+
}
|
|
4079
|
+
function AccordionContent(props) {
|
|
4080
|
+
const { className, children, ...rest } = props;
|
|
4081
|
+
const { variant } = React4.useContext(AccordionContext);
|
|
4082
|
+
return /* @__PURE__ */ jsx(
|
|
4083
|
+
Accordion$1.Content,
|
|
4084
|
+
{
|
|
4085
|
+
"data-slot": "accordion-content",
|
|
4086
|
+
className: cn(accordionContentVariants({ variant }), className),
|
|
4087
|
+
...rest,
|
|
4088
|
+
children: /* @__PURE__ */ jsx("div", { className: "pb-5 pt-0", children })
|
|
4089
|
+
}
|
|
4090
|
+
);
|
|
4091
|
+
}
|
|
4092
|
+
var AccordionMenuContext = React4.createContext({
|
|
4093
|
+
matchPath: () => false,
|
|
4094
|
+
selectedValue: "",
|
|
4095
|
+
setSelectedValue: () => {
|
|
4096
|
+
},
|
|
4097
|
+
nestedStates: {},
|
|
4098
|
+
setNestedStates: () => {
|
|
4099
|
+
}
|
|
4100
|
+
});
|
|
4101
|
+
function AccordionMenu({
|
|
4102
|
+
className,
|
|
4103
|
+
matchPath = () => false,
|
|
4104
|
+
classNames,
|
|
4105
|
+
children,
|
|
4106
|
+
selectedValue,
|
|
4107
|
+
onItemClick,
|
|
4108
|
+
...props
|
|
4109
|
+
}) {
|
|
4110
|
+
const [internalSelectedValue, setInternalSelectedValue] = React4.useState(selectedValue);
|
|
4111
|
+
React4.useEffect(() => {
|
|
4112
|
+
setInternalSelectedValue(selectedValue);
|
|
4113
|
+
}, [selectedValue]);
|
|
4114
|
+
const [nestedStates, setNestedStates] = React4.useState({});
|
|
4115
|
+
React4.useEffect(() => {
|
|
4116
|
+
const getActiveChain = (nodes, chain2 = []) => {
|
|
4117
|
+
let result = [];
|
|
4118
|
+
React4.Children.forEach(nodes, (node) => {
|
|
4119
|
+
if (React4.isValidElement(node)) {
|
|
4120
|
+
const { value, children: nodeChildren } = node.props;
|
|
4121
|
+
const newChain = value ? [...chain2, value] : chain2;
|
|
4122
|
+
if (value && (value === selectedValue || matchPath(value))) {
|
|
4123
|
+
result = newChain;
|
|
4124
|
+
} else if (nodeChildren) {
|
|
4125
|
+
const childChain = getActiveChain(nodeChildren, newChain);
|
|
4126
|
+
if (childChain.length > 0) {
|
|
4127
|
+
result = childChain;
|
|
4128
|
+
}
|
|
4129
|
+
}
|
|
4130
|
+
}
|
|
4131
|
+
});
|
|
4132
|
+
return result;
|
|
4133
|
+
};
|
|
4134
|
+
const chain = getActiveChain(children);
|
|
4135
|
+
const trimmedChain = chain.length > 1 ? chain.slice(0, chain.length - 1) : chain;
|
|
4136
|
+
const mapping = {};
|
|
4137
|
+
if (trimmedChain.length > 0) {
|
|
4138
|
+
if (props.type === "multiple") {
|
|
4139
|
+
mapping["root"] = trimmedChain;
|
|
4140
|
+
} else {
|
|
4141
|
+
mapping["root"] = trimmedChain[0];
|
|
4142
|
+
for (let i = 0; i < trimmedChain.length - 1; i++) {
|
|
4143
|
+
mapping[trimmedChain[i]] = trimmedChain[i + 1];
|
|
4144
|
+
}
|
|
4145
|
+
}
|
|
4146
|
+
}
|
|
4147
|
+
setNestedStates(mapping);
|
|
4148
|
+
}, [selectedValue]);
|
|
4149
|
+
const multipleValue = Array.isArray(nestedStates["root"]) ? nestedStates["root"] : typeof nestedStates["root"] === "string" ? [nestedStates["root"]] : [];
|
|
4150
|
+
const singleValue = nestedStates["root"] ?? "";
|
|
4151
|
+
return /* @__PURE__ */ jsx(
|
|
4152
|
+
AccordionMenuContext.Provider,
|
|
4153
|
+
{
|
|
4154
|
+
value: {
|
|
4155
|
+
matchPath,
|
|
4156
|
+
selectedValue: internalSelectedValue,
|
|
4157
|
+
setSelectedValue: setInternalSelectedValue,
|
|
4158
|
+
classNames,
|
|
4159
|
+
onItemClick,
|
|
4160
|
+
nestedStates,
|
|
4161
|
+
setNestedStates
|
|
4162
|
+
},
|
|
4163
|
+
children: props.type === "single" ? /* @__PURE__ */ jsx(
|
|
4164
|
+
Accordion$1.Root,
|
|
4165
|
+
{
|
|
4166
|
+
"data-slot": "accordion-menu",
|
|
4167
|
+
value: singleValue,
|
|
4168
|
+
className: cn("w-full", classNames?.root, className),
|
|
4169
|
+
onValueChange: (value) => setNestedStates((prev) => ({ ...prev, root: value })),
|
|
4170
|
+
...props,
|
|
4171
|
+
role: "menu",
|
|
4172
|
+
children
|
|
4173
|
+
}
|
|
4174
|
+
) : /* @__PURE__ */ jsx(
|
|
4175
|
+
Accordion$1.Root,
|
|
4176
|
+
{
|
|
4177
|
+
"data-slot": "accordion-menu",
|
|
4178
|
+
value: multipleValue,
|
|
4179
|
+
className: cn("w-full", classNames?.root, className),
|
|
4180
|
+
onValueChange: (value) => setNestedStates((prev) => ({ ...prev, root: value })),
|
|
4181
|
+
...props,
|
|
4182
|
+
role: "menu",
|
|
4183
|
+
children
|
|
4184
|
+
}
|
|
4185
|
+
)
|
|
4186
|
+
}
|
|
4187
|
+
);
|
|
4188
|
+
}
|
|
4189
|
+
function AccordionMenuGroup({
|
|
4190
|
+
children,
|
|
4191
|
+
className,
|
|
4192
|
+
...props
|
|
4193
|
+
}) {
|
|
4194
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4195
|
+
return /* @__PURE__ */ jsx(
|
|
4196
|
+
"div",
|
|
4197
|
+
{
|
|
4198
|
+
"data-slot": "accordion-menu-group",
|
|
4199
|
+
role: "group",
|
|
4200
|
+
className: cn("space-y-0.5", classNames?.group, className),
|
|
4201
|
+
...props,
|
|
4202
|
+
children
|
|
4203
|
+
}
|
|
4204
|
+
);
|
|
4205
|
+
}
|
|
4206
|
+
function AccordionMenuLabel({
|
|
4207
|
+
children,
|
|
4208
|
+
className,
|
|
4209
|
+
...props
|
|
4210
|
+
}) {
|
|
4211
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4212
|
+
return /* @__PURE__ */ jsx(
|
|
4213
|
+
"div",
|
|
4214
|
+
{
|
|
4215
|
+
"data-slot": "accordion-menu-label",
|
|
4216
|
+
role: "presentation",
|
|
4217
|
+
className: cn(
|
|
4218
|
+
"px-2 py-1.5 text-xs font-medium text-muted-foreground",
|
|
4219
|
+
classNames?.label,
|
|
4220
|
+
className
|
|
4221
|
+
),
|
|
4222
|
+
...props,
|
|
4223
|
+
children
|
|
4224
|
+
}
|
|
4225
|
+
);
|
|
4226
|
+
}
|
|
4227
|
+
function AccordionMenuSeparator({
|
|
4228
|
+
className,
|
|
4229
|
+
...props
|
|
4230
|
+
}) {
|
|
4231
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4232
|
+
return /* @__PURE__ */ jsx(
|
|
4233
|
+
"div",
|
|
4234
|
+
{
|
|
4235
|
+
"data-slot": "accordion-menu-separator",
|
|
4236
|
+
role: "separator",
|
|
4237
|
+
className: cn("my-1 h-px bg-border", classNames?.separator, className),
|
|
4238
|
+
...props
|
|
4239
|
+
}
|
|
4240
|
+
);
|
|
4241
|
+
}
|
|
4242
|
+
var itemVariants = cva(
|
|
4243
|
+
"relative cursor-pointer select-none flex w-full text-start items-center text-foreground rounded-lg gap-2 px-2 py-1.5 text-sm outline-hidden transition-colors hover:bg-accent hover:text-accent-foreground data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground disabled:opacity-50 disabled:bg-transparent focus-visible:bg-accent focus-visible:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:opacity-60 [&_svg:not([class*=size-])]:size-4 [&_svg]:shrink-0 [&_a]:flex [&>a]:w-full [&>a]:items-center [&>a]:gap-2",
|
|
4244
|
+
{
|
|
4245
|
+
variants: {
|
|
4246
|
+
variant: {
|
|
4247
|
+
default: "",
|
|
4248
|
+
destructive: "text-destructive hover:text-destructive focus:text-destructive hover:bg-destructive/5 focus:bg-destructive/5 data-[active=true]:bg-destructive/5"
|
|
4249
|
+
}
|
|
4250
|
+
},
|
|
4251
|
+
defaultVariants: {
|
|
4252
|
+
variant: "default"
|
|
4253
|
+
}
|
|
4254
|
+
}
|
|
4255
|
+
);
|
|
4256
|
+
function AccordionMenuItem({
|
|
4257
|
+
className,
|
|
4258
|
+
children,
|
|
4259
|
+
variant,
|
|
4260
|
+
asChild,
|
|
4261
|
+
onClick,
|
|
4262
|
+
...props
|
|
4263
|
+
}) {
|
|
4264
|
+
const { classNames, selectedValue, matchPath, onItemClick } = React4.useContext(AccordionMenuContext);
|
|
4265
|
+
return /* @__PURE__ */ jsx(Accordion$1.Item, { className: "flex", ...props, children: /* @__PURE__ */ jsx(Accordion$1.Header, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "flex w-full", children: /* @__PURE__ */ jsx(
|
|
4266
|
+
Accordion$1.Trigger,
|
|
4267
|
+
{
|
|
4268
|
+
role: "menuitem",
|
|
4269
|
+
asChild,
|
|
4270
|
+
"data-slot": "accordion-menu-item",
|
|
4271
|
+
className: cn(
|
|
4272
|
+
itemVariants({ variant }),
|
|
4273
|
+
classNames?.item,
|
|
4274
|
+
className
|
|
4275
|
+
),
|
|
4276
|
+
onClick: (e) => {
|
|
4277
|
+
if (onItemClick) {
|
|
4278
|
+
onItemClick(props.value, e);
|
|
4279
|
+
}
|
|
4280
|
+
if (onClick) {
|
|
4281
|
+
onClick(e);
|
|
4282
|
+
}
|
|
4283
|
+
e.preventDefault();
|
|
4284
|
+
},
|
|
4285
|
+
onKeyDown: (e) => {
|
|
4286
|
+
if (e.key === "Enter") {
|
|
4287
|
+
e.preventDefault();
|
|
4288
|
+
const target = e.currentTarget;
|
|
4289
|
+
const firstChild = target.firstElementChild;
|
|
4290
|
+
if (firstChild) {
|
|
4291
|
+
firstChild.click();
|
|
4292
|
+
}
|
|
4293
|
+
}
|
|
4294
|
+
},
|
|
4295
|
+
"data-selected": matchPath(props.value) || selectedValue === props.value ? "true" : void 0,
|
|
4296
|
+
children
|
|
4297
|
+
}
|
|
4298
|
+
) }) }) });
|
|
4299
|
+
}
|
|
4300
|
+
function AccordionMenuSub({
|
|
4301
|
+
className,
|
|
4302
|
+
children,
|
|
4303
|
+
...props
|
|
4304
|
+
}) {
|
|
4305
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4306
|
+
return /* @__PURE__ */ jsx(
|
|
4307
|
+
Accordion$1.Item,
|
|
4308
|
+
{
|
|
4309
|
+
"data-slot": "accordion-menu-sub",
|
|
4310
|
+
className: cn(classNames?.sub, className),
|
|
4311
|
+
...props,
|
|
4312
|
+
children
|
|
4313
|
+
}
|
|
4314
|
+
);
|
|
4315
|
+
}
|
|
4316
|
+
function AccordionMenuSubTrigger({
|
|
4317
|
+
className,
|
|
4318
|
+
children
|
|
4319
|
+
}) {
|
|
4320
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4321
|
+
return /* @__PURE__ */ jsx(Accordion$1.Header, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "flex", children: /* @__PURE__ */ jsxs(
|
|
4322
|
+
Accordion$1.Trigger,
|
|
4323
|
+
{
|
|
4324
|
+
role: "menuitem",
|
|
4325
|
+
"aria-haspopup": "true",
|
|
4326
|
+
"data-slot": "accordion-menu-sub-trigger",
|
|
4327
|
+
className: cn(
|
|
4328
|
+
itemVariants({ variant: "default" }),
|
|
4329
|
+
classNames?.subTrigger,
|
|
4330
|
+
className
|
|
4331
|
+
),
|
|
4332
|
+
children: [
|
|
4333
|
+
children,
|
|
4334
|
+
/* @__PURE__ */ jsx(
|
|
4335
|
+
ChevronDown,
|
|
4336
|
+
{
|
|
4337
|
+
"data-slot": "accordion-menu-sub-indicator",
|
|
4338
|
+
className: cn(
|
|
4339
|
+
"ms-auto size-3.5! shrink-0 text-muted-foreground transition-transform duration-200 [[data-state=open]>&]:-rotate-180"
|
|
4340
|
+
)
|
|
4341
|
+
}
|
|
4342
|
+
)
|
|
4343
|
+
]
|
|
4344
|
+
}
|
|
4345
|
+
) }) });
|
|
4346
|
+
}
|
|
4347
|
+
function AccordionMenuSubContent({
|
|
4348
|
+
className,
|
|
4349
|
+
children,
|
|
4350
|
+
type,
|
|
4351
|
+
collapsible,
|
|
4352
|
+
defaultValue,
|
|
4353
|
+
parentValue,
|
|
4354
|
+
...props
|
|
4355
|
+
}) {
|
|
4356
|
+
const { nestedStates, setNestedStates, classNames } = React4.useContext(AccordionMenuContext);
|
|
4357
|
+
let currentValue;
|
|
4358
|
+
if (type === "multiple") {
|
|
4359
|
+
const stateValue = nestedStates[parentValue];
|
|
4360
|
+
if (Array.isArray(stateValue)) {
|
|
4361
|
+
currentValue = stateValue;
|
|
4362
|
+
} else if (typeof stateValue === "string") {
|
|
4363
|
+
currentValue = [stateValue];
|
|
4364
|
+
} else if (defaultValue) {
|
|
4365
|
+
currentValue = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
|
|
4366
|
+
} else {
|
|
4367
|
+
currentValue = [];
|
|
4368
|
+
}
|
|
4369
|
+
} else {
|
|
4370
|
+
currentValue = nestedStates[parentValue] ?? defaultValue ?? "";
|
|
4371
|
+
}
|
|
4372
|
+
return /* @__PURE__ */ jsx(
|
|
4373
|
+
Accordion$1.Content,
|
|
4374
|
+
{
|
|
4375
|
+
"data-slot": "accordion-menu-sub-content",
|
|
4376
|
+
className: cn(
|
|
4377
|
+
"ps-5",
|
|
4378
|
+
"overflow-hidden transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
|
|
4379
|
+
classNames?.subContent,
|
|
4380
|
+
className
|
|
4381
|
+
),
|
|
4382
|
+
...props,
|
|
4383
|
+
children: type === "multiple" ? /* @__PURE__ */ jsx(
|
|
4384
|
+
Accordion$1.Root,
|
|
4385
|
+
{
|
|
4386
|
+
className: cn("w-full py-0.5", classNames?.subWrapper),
|
|
4387
|
+
type: "multiple",
|
|
4388
|
+
value: currentValue,
|
|
4389
|
+
role: "menu",
|
|
4390
|
+
"data-slot": "accordion-menu-sub-wrapper",
|
|
4391
|
+
onValueChange: (value) => {
|
|
4392
|
+
const newValue = Array.isArray(value) ? value : [value];
|
|
4393
|
+
setNestedStates((prev) => ({ ...prev, [parentValue]: newValue }));
|
|
4394
|
+
},
|
|
4395
|
+
children
|
|
4396
|
+
}
|
|
4397
|
+
) : /* @__PURE__ */ jsx(
|
|
4398
|
+
Accordion$1.Root,
|
|
4399
|
+
{
|
|
4400
|
+
className: cn("w-full py-0.5", classNames?.subWrapper),
|
|
4401
|
+
type: "single",
|
|
4402
|
+
collapsible,
|
|
4403
|
+
value: currentValue,
|
|
4404
|
+
role: "menu",
|
|
4405
|
+
"data-slot": "accordion-menu-sub-wrapper",
|
|
4406
|
+
onValueChange: (value) => setNestedStates((prev) => ({ ...prev, [parentValue]: value })),
|
|
4407
|
+
children
|
|
4408
|
+
}
|
|
4409
|
+
)
|
|
4410
|
+
}
|
|
4411
|
+
);
|
|
4412
|
+
}
|
|
4413
|
+
function AccordionMenuIndicator({
|
|
4414
|
+
className,
|
|
4415
|
+
...props
|
|
4416
|
+
}) {
|
|
4417
|
+
const { classNames } = React4.useContext(AccordionMenuContext);
|
|
4418
|
+
return /* @__PURE__ */ jsx(
|
|
4419
|
+
"span",
|
|
4420
|
+
{
|
|
4421
|
+
"aria-hidden": "true",
|
|
4422
|
+
"data-slot": "accordion-menu-indicator",
|
|
4423
|
+
className: cn(
|
|
4424
|
+
"ms-auto flex items-center font-medium",
|
|
4425
|
+
classNames?.indicator,
|
|
4426
|
+
className
|
|
4427
|
+
),
|
|
4428
|
+
...props
|
|
4429
|
+
}
|
|
4430
|
+
);
|
|
4431
|
+
}
|
|
4432
|
+
function Breadcrumb({
|
|
4433
|
+
...props
|
|
4434
|
+
}) {
|
|
4435
|
+
return /* @__PURE__ */ jsx("nav", { "data-slot": "breadcrumb", "aria-label": "breadcrumb", ...props });
|
|
4436
|
+
}
|
|
4437
|
+
function BreadcrumbList({ className, ...props }) {
|
|
4438
|
+
return /* @__PURE__ */ jsx(
|
|
4439
|
+
"ol",
|
|
4440
|
+
{
|
|
4441
|
+
"data-slot": "breadcrumb-list",
|
|
4442
|
+
className: cn(
|
|
4443
|
+
"flex flex-wrap items-center gap-1.5 wrap-break-word text-sm text-muted-foreground",
|
|
4444
|
+
className
|
|
4445
|
+
),
|
|
4446
|
+
...props
|
|
4447
|
+
}
|
|
4448
|
+
);
|
|
4449
|
+
}
|
|
4450
|
+
function BreadcrumbItem({ className, ...props }) {
|
|
4451
|
+
return /* @__PURE__ */ jsx(
|
|
4452
|
+
"li",
|
|
4453
|
+
{
|
|
4454
|
+
"data-slot": "breadcrumb-item",
|
|
4455
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
4456
|
+
...props
|
|
4457
|
+
}
|
|
4458
|
+
);
|
|
4459
|
+
}
|
|
4460
|
+
function BreadcrumbLink({
|
|
4461
|
+
asChild,
|
|
4462
|
+
className,
|
|
4463
|
+
...props
|
|
4464
|
+
}) {
|
|
4465
|
+
const Comp = asChild ? Slot$1.Slot : "a";
|
|
4466
|
+
return /* @__PURE__ */ jsx(
|
|
4467
|
+
Comp,
|
|
4468
|
+
{
|
|
4469
|
+
"data-slot": "breadcrumb-link",
|
|
4470
|
+
className: cn("transition-colors hover:text-foreground", className),
|
|
4471
|
+
...props
|
|
4472
|
+
}
|
|
4473
|
+
);
|
|
4474
|
+
}
|
|
4475
|
+
function BreadcrumbPage({ className, ...props }) {
|
|
3151
4476
|
return /* @__PURE__ */ jsx(
|
|
3152
4477
|
"span",
|
|
3153
4478
|
{
|
|
@@ -3192,6 +4517,40 @@ var BreadcrumbEllipsis = ({
|
|
|
3192
4517
|
]
|
|
3193
4518
|
}
|
|
3194
4519
|
);
|
|
4520
|
+
function Collapsible({
|
|
4521
|
+
...props
|
|
4522
|
+
}) {
|
|
4523
|
+
return /* @__PURE__ */ jsx(Collapsible$1.Root, { "data-slot": "collapsible", ...props });
|
|
4524
|
+
}
|
|
4525
|
+
function CollapsibleTrigger({
|
|
4526
|
+
...props
|
|
4527
|
+
}) {
|
|
4528
|
+
return /* @__PURE__ */ jsx(
|
|
4529
|
+
Collapsible$1.CollapsibleTrigger,
|
|
4530
|
+
{
|
|
4531
|
+
"data-slot": "collapsible-trigger",
|
|
4532
|
+
...props
|
|
4533
|
+
}
|
|
4534
|
+
);
|
|
4535
|
+
}
|
|
4536
|
+
function CollapsibleContent({
|
|
4537
|
+
className,
|
|
4538
|
+
children,
|
|
4539
|
+
...props
|
|
4540
|
+
}) {
|
|
4541
|
+
return /* @__PURE__ */ jsx(
|
|
4542
|
+
Collapsible$1.CollapsibleContent,
|
|
4543
|
+
{
|
|
4544
|
+
"data-slot": "collapsible-content",
|
|
4545
|
+
className: cn(
|
|
4546
|
+
"overflow-hidden transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down",
|
|
4547
|
+
className
|
|
4548
|
+
),
|
|
4549
|
+
...props,
|
|
4550
|
+
children
|
|
4551
|
+
}
|
|
4552
|
+
);
|
|
4553
|
+
}
|
|
3195
4554
|
var tabsListVariantConfig = {
|
|
3196
4555
|
variant: {
|
|
3197
4556
|
default: "bg-accent p-1",
|
|
@@ -3309,7 +4668,7 @@ var tabsContentVariants = cva(
|
|
|
3309
4668
|
}
|
|
3310
4669
|
}
|
|
3311
4670
|
);
|
|
3312
|
-
var TabsContext =
|
|
4671
|
+
var TabsContext = React4.createContext({
|
|
3313
4672
|
variant: "default",
|
|
3314
4673
|
size: "md"
|
|
3315
4674
|
});
|
|
@@ -3345,7 +4704,7 @@ function TabsTrigger({
|
|
|
3345
4704
|
className,
|
|
3346
4705
|
...props
|
|
3347
4706
|
}) {
|
|
3348
|
-
const { variant, size } =
|
|
4707
|
+
const { variant, size } = React4.useContext(TabsContext);
|
|
3349
4708
|
return /* @__PURE__ */ jsx(
|
|
3350
4709
|
Tabs$1.Trigger,
|
|
3351
4710
|
{
|
|
@@ -3369,12 +4728,12 @@ function TabsContent({
|
|
|
3369
4728
|
}
|
|
3370
4729
|
);
|
|
3371
4730
|
}
|
|
3372
|
-
var CardContext =
|
|
4731
|
+
var CardContext = React4.createContext({
|
|
3373
4732
|
variant: "default"
|
|
3374
4733
|
// Default value
|
|
3375
4734
|
});
|
|
3376
4735
|
var useCardContext = () => {
|
|
3377
|
-
const context =
|
|
4736
|
+
const context = React4.useContext(CardContext);
|
|
3378
4737
|
return context;
|
|
3379
4738
|
};
|
|
3380
4739
|
var cardVariants = cva(
|
|
@@ -3982,10 +5341,356 @@ function InputWrapper({
|
|
|
3982
5341
|
}
|
|
3983
5342
|
);
|
|
3984
5343
|
}
|
|
3985
|
-
|
|
3986
|
-
|
|
3987
|
-
|
|
3988
|
-
|
|
5344
|
+
function ContextMenu({
|
|
5345
|
+
...props
|
|
5346
|
+
}) {
|
|
5347
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Root, { "data-slot": "context-menu", ...props });
|
|
5348
|
+
}
|
|
5349
|
+
function ContextMenuTrigger({
|
|
5350
|
+
...props
|
|
5351
|
+
}) {
|
|
5352
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Trigger, { "data-slot": "context-menu-trigger", ...props });
|
|
5353
|
+
}
|
|
5354
|
+
function ContextMenuGroup({
|
|
5355
|
+
...props
|
|
5356
|
+
}) {
|
|
5357
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Group, { "data-slot": "context-menu-group", ...props });
|
|
5358
|
+
}
|
|
5359
|
+
function ContextMenuPortal({
|
|
5360
|
+
...props
|
|
5361
|
+
}) {
|
|
5362
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { "data-slot": "context-menu-portal", ...props });
|
|
5363
|
+
}
|
|
5364
|
+
function ContextMenuSub({
|
|
5365
|
+
...props
|
|
5366
|
+
}) {
|
|
5367
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Sub, { "data-slot": "context-menu-sub", ...props });
|
|
5368
|
+
}
|
|
5369
|
+
function ContextMenuRadioGroup({
|
|
5370
|
+
...props
|
|
5371
|
+
}) {
|
|
5372
|
+
return /* @__PURE__ */ jsx(
|
|
5373
|
+
ContextMenu$1.RadioGroup,
|
|
5374
|
+
{
|
|
5375
|
+
"data-slot": "context-menu-radio-group",
|
|
5376
|
+
...props
|
|
5377
|
+
}
|
|
5378
|
+
);
|
|
5379
|
+
}
|
|
5380
|
+
function ContextMenuSubTrigger({
|
|
5381
|
+
className,
|
|
5382
|
+
inset,
|
|
5383
|
+
children,
|
|
5384
|
+
...props
|
|
5385
|
+
}) {
|
|
5386
|
+
return /* @__PURE__ */ jsxs(
|
|
5387
|
+
ContextMenu$1.SubTrigger,
|
|
5388
|
+
{
|
|
5389
|
+
"data-slot": "context-menu-sub-trigger",
|
|
5390
|
+
className: cn(
|
|
5391
|
+
"flex cursor-default gap-2 select-none items-center rounded-md px-2 py-1.5 text-sm outline-hidden",
|
|
5392
|
+
"focus:bg-accent focus:text-foreground",
|
|
5393
|
+
"data-[state=open]:bg-accent data-[state=open]:text-foreground",
|
|
5394
|
+
"[&>svg]:pointer-events-none [&_svg:not([role=img]):not([class*=text-])]:opacity-60 [&>svg]:size-4 [&>svg]:shrink-0",
|
|
5395
|
+
inset && "ps-8",
|
|
5396
|
+
className
|
|
5397
|
+
),
|
|
5398
|
+
...props,
|
|
5399
|
+
children: [
|
|
5400
|
+
children,
|
|
5401
|
+
/* @__PURE__ */ jsx(
|
|
5402
|
+
ChevronRight,
|
|
5403
|
+
{
|
|
5404
|
+
"data-slot": "context-menu-sub-trigger-indicator",
|
|
5405
|
+
className: "ms-auto size-3.5! rtl:rotate-180"
|
|
5406
|
+
}
|
|
5407
|
+
)
|
|
5408
|
+
]
|
|
5409
|
+
}
|
|
5410
|
+
);
|
|
5411
|
+
}
|
|
5412
|
+
function ContextMenuSubContent({
|
|
5413
|
+
className,
|
|
5414
|
+
...props
|
|
5415
|
+
}) {
|
|
5416
|
+
return /* @__PURE__ */ jsx(
|
|
5417
|
+
ContextMenu$1.SubContent,
|
|
5418
|
+
{
|
|
5419
|
+
"data-slot": "context-menu-sub-content",
|
|
5420
|
+
className: cn(
|
|
5421
|
+
"space-y-0.5 z-50 min-w-32 overflow-hidden shadow-md shadow-black/5 rounded-md border border-border bg-popover text-popover-foreground p-2 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",
|
|
5422
|
+
className
|
|
5423
|
+
),
|
|
5424
|
+
...props
|
|
5425
|
+
}
|
|
5426
|
+
);
|
|
5427
|
+
}
|
|
5428
|
+
function ContextMenuContent({
|
|
5429
|
+
className,
|
|
5430
|
+
...props
|
|
5431
|
+
}) {
|
|
5432
|
+
return /* @__PURE__ */ jsx(ContextMenu$1.Portal, { children: /* @__PURE__ */ jsx(
|
|
5433
|
+
ContextMenu$1.Content,
|
|
5434
|
+
{
|
|
5435
|
+
"data-slot": "context-menu-content",
|
|
5436
|
+
className: cn(
|
|
5437
|
+
"space-y-0.5 z-50 min-w-32 overflow-hidden rounded-md border border-border bg-popover p-2 text-popover-foreground shadow-md shadow-black/5 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",
|
|
5438
|
+
className
|
|
5439
|
+
),
|
|
5440
|
+
...props
|
|
5441
|
+
}
|
|
5442
|
+
) });
|
|
5443
|
+
}
|
|
5444
|
+
function ContextMenuItem({
|
|
5445
|
+
className,
|
|
5446
|
+
inset,
|
|
5447
|
+
variant,
|
|
5448
|
+
...props
|
|
5449
|
+
}) {
|
|
5450
|
+
return /* @__PURE__ */ jsx(
|
|
5451
|
+
ContextMenu$1.Item,
|
|
5452
|
+
{
|
|
5453
|
+
"data-slot": "context-menu-item",
|
|
5454
|
+
className: cn(
|
|
5455
|
+
"text-foreground relative flex cursor-default select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm outline-hidden transition-colors data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([role=img]):not([class*=text-])]:opacity-60 [&_svg:not([class*=size-])]:size-4 [&_svg]:shrink-0",
|
|
5456
|
+
"focus:bg-accent focus:text-foreground",
|
|
5457
|
+
"data-[active=true]:bg-accent data-[active=true]:text-accent-foreground",
|
|
5458
|
+
inset && "ps-8",
|
|
5459
|
+
variant === "destructive" && "text-destructive hover:text-destructive focus:text-destructive hover:bg-destructive/5 focus:bg-destructive/5 data-[active=true]:bg-destructive/5",
|
|
5460
|
+
className
|
|
5461
|
+
),
|
|
5462
|
+
...props
|
|
5463
|
+
}
|
|
5464
|
+
);
|
|
5465
|
+
}
|
|
5466
|
+
function ContextMenuCheckboxItem({
|
|
5467
|
+
className,
|
|
5468
|
+
children,
|
|
5469
|
+
checked,
|
|
5470
|
+
...props
|
|
5471
|
+
}) {
|
|
5472
|
+
return /* @__PURE__ */ jsxs(
|
|
5473
|
+
ContextMenu$1.CheckboxItem,
|
|
5474
|
+
{
|
|
5475
|
+
"data-slot": "context-menu-checkbox-item",
|
|
5476
|
+
className: cn(
|
|
5477
|
+
"relative flex cursor-default select-none items-center rounded-md py-1.5 ps-8 pe-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
5478
|
+
className
|
|
5479
|
+
),
|
|
5480
|
+
checked,
|
|
5481
|
+
...props,
|
|
5482
|
+
children: [
|
|
5483
|
+
/* @__PURE__ */ jsx("span", { className: "absolute start-2 flex size-3.5 items-center text-muted-foreground justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Check, { className: "size-4 text-primary" }) }) }),
|
|
5484
|
+
children
|
|
5485
|
+
]
|
|
5486
|
+
}
|
|
5487
|
+
);
|
|
5488
|
+
}
|
|
5489
|
+
function ContextMenuRadioItem({
|
|
5490
|
+
className,
|
|
5491
|
+
children,
|
|
5492
|
+
...props
|
|
5493
|
+
}) {
|
|
5494
|
+
return /* @__PURE__ */ jsxs(
|
|
5495
|
+
ContextMenu$1.RadioItem,
|
|
5496
|
+
{
|
|
5497
|
+
"data-slot": "context-menu-radio-item",
|
|
5498
|
+
className: cn(
|
|
5499
|
+
"relative flex cursor-default select-none items-center rounded-md py-1.5 ps-6 pe-2 text-sm outline-hidden transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50",
|
|
5500
|
+
className
|
|
5501
|
+
),
|
|
5502
|
+
...props,
|
|
5503
|
+
children: [
|
|
5504
|
+
/* @__PURE__ */ jsx("span", { className: "absolute start-1.5 flex size-3.5 items-center justify-center", children: /* @__PURE__ */ jsx(ContextMenu$1.ItemIndicator, { children: /* @__PURE__ */ jsx(Circle, { className: "size-1.5 fill-primary stroke-primary" }) }) }),
|
|
5505
|
+
children
|
|
5506
|
+
]
|
|
5507
|
+
}
|
|
5508
|
+
);
|
|
5509
|
+
}
|
|
5510
|
+
function ContextMenuLabel({
|
|
5511
|
+
className,
|
|
5512
|
+
inset,
|
|
5513
|
+
...props
|
|
5514
|
+
}) {
|
|
5515
|
+
return /* @__PURE__ */ jsx(
|
|
5516
|
+
ContextMenu$1.Label,
|
|
5517
|
+
{
|
|
5518
|
+
"data-slot": "context-menu-label",
|
|
5519
|
+
className: cn(
|
|
5520
|
+
"px-2 py-1.5 text-xs text-muted-foreground font-medium",
|
|
5521
|
+
inset && "ps-8",
|
|
5522
|
+
className
|
|
5523
|
+
),
|
|
5524
|
+
...props
|
|
5525
|
+
}
|
|
5526
|
+
);
|
|
5527
|
+
}
|
|
5528
|
+
function ContextMenuSeparator({
|
|
5529
|
+
className,
|
|
5530
|
+
...props
|
|
5531
|
+
}) {
|
|
5532
|
+
return /* @__PURE__ */ jsx(
|
|
5533
|
+
ContextMenu$1.Separator,
|
|
5534
|
+
{
|
|
5535
|
+
"data-slot": "context-menu-separator",
|
|
5536
|
+
className: cn("-mx-2 my-1.5 h-px bg-muted", className),
|
|
5537
|
+
...props
|
|
5538
|
+
}
|
|
5539
|
+
);
|
|
5540
|
+
}
|
|
5541
|
+
function ContextMenuShortcut({
|
|
5542
|
+
className,
|
|
5543
|
+
...props
|
|
5544
|
+
}) {
|
|
5545
|
+
return /* @__PURE__ */ jsx(
|
|
5546
|
+
"span",
|
|
5547
|
+
{
|
|
5548
|
+
"data-slot": "context-menu-shortcut",
|
|
5549
|
+
className: cn("ms-auto text-xs tracking-widest opacity-60", className),
|
|
5550
|
+
...props
|
|
5551
|
+
}
|
|
5552
|
+
);
|
|
5553
|
+
}
|
|
5554
|
+
var dayButtonClasses = [
|
|
5555
|
+
"cursor-pointer relative flex size-8 items-center justify-center",
|
|
5556
|
+
"whitespace-nowrap rounded-md p-0 text-foreground",
|
|
5557
|
+
"transition-colors duration-200",
|
|
5558
|
+
"group-[[data-selected]:not(.range-middle)]:[transition-property:color,background-color,border-radius,box-shadow]",
|
|
5559
|
+
"group-[[data-selected]:not(.range-middle)]:duration-150",
|
|
5560
|
+
"group-data-disabled:pointer-events-none",
|
|
5561
|
+
"focus-visible:z-10",
|
|
5562
|
+
"hover:not-in-data-selected:bg-accent",
|
|
5563
|
+
"group-data-selected:bg-primary",
|
|
5564
|
+
"hover:not-in-data-selected:text-foreground",
|
|
5565
|
+
"group-data-selected:text-primary-foreground",
|
|
5566
|
+
"group-data-disabled:text-foreground/30 group-data-disabled:line-through",
|
|
5567
|
+
"group-data-outside:text-foreground/30",
|
|
5568
|
+
"group-data-selected:group-data-outside:text-primary-foreground",
|
|
5569
|
+
"outline-none focus-visible:ring-ring/50 focus-visible:ring",
|
|
5570
|
+
"group-[.range-start:not(.range-end)]:rounded-e-none",
|
|
5571
|
+
"group-[.range-end:not(.range-start)]:rounded-s-none",
|
|
5572
|
+
"group-[.range-middle]:rounded-none",
|
|
5573
|
+
"group-[.range-middle]:group-data-selected:bg-accent",
|
|
5574
|
+
"group-[.range-middle]:group-data-selected:text-foreground"
|
|
5575
|
+
].join(" ");
|
|
5576
|
+
function Calendar({
|
|
5577
|
+
className,
|
|
5578
|
+
classNames,
|
|
5579
|
+
showOutsideDays = true,
|
|
5580
|
+
...props
|
|
5581
|
+
}) {
|
|
5582
|
+
return /* @__PURE__ */ jsx(
|
|
5583
|
+
DayPicker,
|
|
5584
|
+
{
|
|
5585
|
+
"data-slot": "calendar",
|
|
5586
|
+
showOutsideDays,
|
|
5587
|
+
className: cn("p-3", className),
|
|
5588
|
+
classNames: {
|
|
5589
|
+
months: "relative flex flex-col sm:flex-row gap-4",
|
|
5590
|
+
month: "w-full",
|
|
5591
|
+
month_caption: "relative mx-10 mb-1 flex h-8 items-center justify-center z-20",
|
|
5592
|
+
caption_label: "text-sm font-medium",
|
|
5593
|
+
nav: "absolute top-0 flex w-full justify-between z-10",
|
|
5594
|
+
button_previous: cn(
|
|
5595
|
+
buttonVariants({ variant: "ghost" }),
|
|
5596
|
+
"size-8 text-muted-foreground/80 hover:text-foreground p-0"
|
|
5597
|
+
),
|
|
5598
|
+
button_next: cn(
|
|
5599
|
+
buttonVariants({ variant: "ghost" }),
|
|
5600
|
+
"size-8 text-muted-foreground/80 hover:text-foreground p-0"
|
|
5601
|
+
),
|
|
5602
|
+
weekday: "size-8 p-0 text-xs font-medium text-muted-foreground/80",
|
|
5603
|
+
day_button: dayButtonClasses,
|
|
5604
|
+
day: "group size-8 px-0 py-px text-sm",
|
|
5605
|
+
range_start: "range-start",
|
|
5606
|
+
range_end: "range-end",
|
|
5607
|
+
range_middle: "range-middle",
|
|
5608
|
+
today: "*:after:pointer-events-none *:after:absolute *:after:bottom-1 *:after:start-1/2 *:after:z-10 *:after:size-0.75 *:after:-translate-x-1/2 rtl:*:after:translate-x-1/2 *:after:rounded-full *:after:bg-primary [&[data-selected]:not(.range-middle)>*]:after:bg-background [&[data-disabled]>*]:after:bg-foreground/30 *:after:transition-colors",
|
|
5609
|
+
outside: "text-muted-foreground data-selected:bg-accent/50 data-selected:text-muted-foreground",
|
|
5610
|
+
hidden: "invisible",
|
|
5611
|
+
week_number: "size-8 p-0 text-xs font-medium text-muted-foreground/80",
|
|
5612
|
+
...classNames
|
|
5613
|
+
},
|
|
5614
|
+
components: {
|
|
5615
|
+
Chevron: (chevronProps) => {
|
|
5616
|
+
if (chevronProps.orientation === "left") {
|
|
5617
|
+
return /* @__PURE__ */ jsx(ChevronLeft, { className: "size-4 rtl:rotate-180" });
|
|
5618
|
+
}
|
|
5619
|
+
return /* @__PURE__ */ jsx(ChevronRight, { className: "size-4 rtl:rotate-180" });
|
|
5620
|
+
}
|
|
5621
|
+
},
|
|
5622
|
+
...props
|
|
5623
|
+
}
|
|
5624
|
+
);
|
|
5625
|
+
}
|
|
5626
|
+
function DateField({
|
|
5627
|
+
className,
|
|
5628
|
+
children,
|
|
5629
|
+
...props
|
|
5630
|
+
}) {
|
|
5631
|
+
return /* @__PURE__ */ jsx(
|
|
5632
|
+
DateField$1,
|
|
5633
|
+
{
|
|
5634
|
+
className: composeRenderProps(className, (className2) => cn(className2)),
|
|
5635
|
+
"data-slot": "datefield",
|
|
5636
|
+
...props,
|
|
5637
|
+
children
|
|
5638
|
+
}
|
|
5639
|
+
);
|
|
5640
|
+
}
|
|
5641
|
+
function TimeField({
|
|
5642
|
+
className,
|
|
5643
|
+
children,
|
|
5644
|
+
...props
|
|
5645
|
+
}) {
|
|
5646
|
+
return /* @__PURE__ */ jsx(
|
|
5647
|
+
TimeField$1,
|
|
5648
|
+
{
|
|
5649
|
+
className: composeRenderProps(className, (className2) => cn(className2)),
|
|
5650
|
+
"data-slot": "datefield",
|
|
5651
|
+
...props,
|
|
5652
|
+
children
|
|
5653
|
+
}
|
|
5654
|
+
);
|
|
5655
|
+
}
|
|
5656
|
+
function DateSegment({ className, ...props }) {
|
|
5657
|
+
return /* @__PURE__ */ jsx(
|
|
5658
|
+
DateSegment$1,
|
|
5659
|
+
{
|
|
5660
|
+
className: composeRenderProps(
|
|
5661
|
+
className,
|
|
5662
|
+
(className2) => cn(
|
|
5663
|
+
"text-foreground inline-flex rounded px-0.5 caret-transparent outline-hidden data-[type=literal]:text-muted-foreground/70 data-[type=literal]:px-0 data-placeholder:text-muted-foreground/70 data-invalid:data-focused:bg-destructive data-invalid:data-placeholder:text-destructive data-invalid:text-destructive data-invalid:data-focused:data-placeholder:text-destructive-foreground data-invalid:data-focused:text-destructive-foreground data-focused:bg-accent data-focused:data-placeholder:text-foreground data-focused:text-foreground data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
5664
|
+
className2
|
|
5665
|
+
)
|
|
5666
|
+
),
|
|
5667
|
+
...props
|
|
5668
|
+
}
|
|
5669
|
+
);
|
|
5670
|
+
}
|
|
5671
|
+
var dateInputStyles = "relative inline-flex items-center overflow-hidden whitespace-nowrap data-focus-within:ring-ring/30 data-focus-within:border-ring data-focus-within:outline-none data-focus-within:ring-[3px] data-focus-within:has-aria-invalid:ring-destructive/20 dark:data-focus-within:has-aria-invalid:ring-destructive/40 data-focus-within:has-aria-invalid:border-destructive";
|
|
5672
|
+
function DateInput({
|
|
5673
|
+
className,
|
|
5674
|
+
variant = "md",
|
|
5675
|
+
...props
|
|
5676
|
+
}) {
|
|
5677
|
+
return /* @__PURE__ */ jsx(
|
|
5678
|
+
DateInput$1,
|
|
5679
|
+
{
|
|
5680
|
+
"data-slot": "input",
|
|
5681
|
+
className: composeRenderProps(
|
|
5682
|
+
className,
|
|
5683
|
+
(className2) => cn(inputVariants({ variant }), dateInputStyles, className2)
|
|
5684
|
+
),
|
|
5685
|
+
...props,
|
|
5686
|
+
children: (segment) => /* @__PURE__ */ jsx(DateSegment, { segment })
|
|
5687
|
+
}
|
|
5688
|
+
);
|
|
5689
|
+
}
|
|
5690
|
+
var labelVariants = cva(
|
|
5691
|
+
"text-sm leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
5692
|
+
{
|
|
5693
|
+
variants: {
|
|
3989
5694
|
variant: {
|
|
3990
5695
|
primary: "font-medium",
|
|
3991
5696
|
secondary: "font-normal"
|
|
@@ -4010,11 +5715,12 @@ function Label2({
|
|
|
4010
5715
|
}
|
|
4011
5716
|
);
|
|
4012
5717
|
}
|
|
4013
|
-
var Separator2 =
|
|
5718
|
+
var Separator2 = React4.forwardRef(
|
|
4014
5719
|
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx(
|
|
4015
5720
|
SeparatorPrimitive.Root,
|
|
4016
5721
|
{
|
|
4017
5722
|
ref,
|
|
5723
|
+
"data-slot": "separator",
|
|
4018
5724
|
decorative,
|
|
4019
5725
|
orientation,
|
|
4020
5726
|
className: cn(
|
|
@@ -4241,38 +5947,208 @@ function FieldError({
|
|
|
4241
5947
|
}
|
|
4242
5948
|
);
|
|
4243
5949
|
}
|
|
4244
|
-
|
|
4245
|
-
|
|
4246
|
-
|
|
4247
|
-
|
|
4248
|
-
|
|
4249
|
-
|
|
4250
|
-
|
|
4251
|
-
|
|
4252
|
-
|
|
4253
|
-
|
|
4254
|
-
|
|
4255
|
-
|
|
4256
|
-
|
|
4257
|
-
|
|
4258
|
-
|
|
4259
|
-
|
|
4260
|
-
|
|
4261
|
-
|
|
4262
|
-
|
|
4263
|
-
|
|
4264
|
-
|
|
4265
|
-
|
|
4266
|
-
|
|
4267
|
-
|
|
4268
|
-
|
|
4269
|
-
|
|
4270
|
-
|
|
4271
|
-
|
|
4272
|
-
|
|
4273
|
-
|
|
4274
|
-
|
|
4275
|
-
|
|
5950
|
+
function InputOTP({
|
|
5951
|
+
className,
|
|
5952
|
+
containerClassName,
|
|
5953
|
+
...props
|
|
5954
|
+
}) {
|
|
5955
|
+
return /* @__PURE__ */ jsx(
|
|
5956
|
+
OTPInput,
|
|
5957
|
+
{
|
|
5958
|
+
"data-slot": "input-otp",
|
|
5959
|
+
containerClassName: cn(
|
|
5960
|
+
"flex items-center gap-2 has-disabled:opacity-50",
|
|
5961
|
+
containerClassName
|
|
5962
|
+
),
|
|
5963
|
+
className: cn("disabled:cursor-not-allowed", className),
|
|
5964
|
+
...props
|
|
5965
|
+
}
|
|
5966
|
+
);
|
|
5967
|
+
}
|
|
5968
|
+
function InputOTPGroup({ className, ...props }) {
|
|
5969
|
+
return /* @__PURE__ */ jsx(
|
|
5970
|
+
"div",
|
|
5971
|
+
{
|
|
5972
|
+
"data-slot": "input-otp-group",
|
|
5973
|
+
className: cn("flex items-center", className),
|
|
5974
|
+
...props
|
|
5975
|
+
}
|
|
5976
|
+
);
|
|
5977
|
+
}
|
|
5978
|
+
function InputOTPSlot({
|
|
5979
|
+
index,
|
|
5980
|
+
className,
|
|
5981
|
+
...props
|
|
5982
|
+
}) {
|
|
5983
|
+
const inputOTPContext = React4.useContext(OTPInputContext);
|
|
5984
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {};
|
|
5985
|
+
return /* @__PURE__ */ jsxs(
|
|
5986
|
+
"div",
|
|
5987
|
+
{
|
|
5988
|
+
"data-slot": "input-otp-slot",
|
|
5989
|
+
"data-active": isActive,
|
|
5990
|
+
className: cn(
|
|
5991
|
+
"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex size-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]",
|
|
5992
|
+
className
|
|
5993
|
+
),
|
|
5994
|
+
...props,
|
|
5995
|
+
children: [
|
|
5996
|
+
char,
|
|
5997
|
+
hasFakeCaret && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ jsx("div", { className: "animate-caret-blink bg-foreground h-4 w-px duration-1000" }) })
|
|
5998
|
+
]
|
|
5999
|
+
}
|
|
6000
|
+
);
|
|
6001
|
+
}
|
|
6002
|
+
function InputOTPSeparator({ ...props }) {
|
|
6003
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "input-otp-separator", role: "separator", ...props, children: /* @__PURE__ */ jsx(MinusIcon, {}) });
|
|
6004
|
+
}
|
|
6005
|
+
var radioGroupVariants = cva("grid gap-2.5", {
|
|
6006
|
+
variants: {
|
|
6007
|
+
variant: {
|
|
6008
|
+
primary: "",
|
|
6009
|
+
mono: ""
|
|
6010
|
+
},
|
|
6011
|
+
size: {
|
|
6012
|
+
sm: "",
|
|
6013
|
+
md: "",
|
|
6014
|
+
lg: ""
|
|
6015
|
+
}
|
|
6016
|
+
},
|
|
6017
|
+
defaultVariants: {
|
|
6018
|
+
variant: "primary",
|
|
6019
|
+
size: "md"
|
|
6020
|
+
}
|
|
6021
|
+
});
|
|
6022
|
+
var RadioGroupContext = React4.createContext({ variant: "primary", size: "md" });
|
|
6023
|
+
function RadioGroup2({
|
|
6024
|
+
className,
|
|
6025
|
+
variant,
|
|
6026
|
+
size,
|
|
6027
|
+
...props
|
|
6028
|
+
}) {
|
|
6029
|
+
return /* @__PURE__ */ jsx(
|
|
6030
|
+
RadioGroupContext.Provider,
|
|
6031
|
+
{
|
|
6032
|
+
value: { variant: variant ?? "primary", size: size ?? "md" },
|
|
6033
|
+
children: /* @__PURE__ */ jsx(
|
|
6034
|
+
RadioGroup.Root,
|
|
6035
|
+
{
|
|
6036
|
+
"data-slot": "radio-group",
|
|
6037
|
+
className: cn(radioGroupVariants({ variant, size }), className),
|
|
6038
|
+
...props
|
|
6039
|
+
}
|
|
6040
|
+
)
|
|
6041
|
+
}
|
|
6042
|
+
);
|
|
6043
|
+
}
|
|
6044
|
+
var radioItemVariants = cva(
|
|
6045
|
+
"peer aspect-square rounded-full border outline-hidden ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20 [[data-invalid=true]_&]:border-destructive/60 [[data-invalid=true]_&]:ring-destructive/10 dark:[[data-invalid=true]_&]:border-destructive dark:[[data-invalid=true]_&]:ring-destructive/20 border-input text-primary data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground",
|
|
6046
|
+
{
|
|
6047
|
+
variants: {
|
|
6048
|
+
size: {
|
|
6049
|
+
sm: "size-4.5 [&_svg]:size-2",
|
|
6050
|
+
md: "size-5 [&_svg]:size-2.5",
|
|
6051
|
+
lg: "size-5.5 [&_svg]:size-3"
|
|
6052
|
+
}
|
|
6053
|
+
},
|
|
6054
|
+
defaultVariants: {
|
|
6055
|
+
size: "md"
|
|
6056
|
+
}
|
|
6057
|
+
}
|
|
6058
|
+
);
|
|
6059
|
+
function RadioGroupItem({
|
|
6060
|
+
className,
|
|
6061
|
+
size,
|
|
6062
|
+
...props
|
|
6063
|
+
}) {
|
|
6064
|
+
const { size: contextSize } = React4.useContext(RadioGroupContext);
|
|
6065
|
+
const effectiveSize = size ?? contextSize;
|
|
6066
|
+
return /* @__PURE__ */ jsx(
|
|
6067
|
+
RadioGroup.Item,
|
|
6068
|
+
{
|
|
6069
|
+
"data-slot": "radio-group-item",
|
|
6070
|
+
className: cn(radioItemVariants({ size: effectiveSize }), className),
|
|
6071
|
+
...props,
|
|
6072
|
+
children: /* @__PURE__ */ jsx(
|
|
6073
|
+
RadioGroup.Indicator,
|
|
6074
|
+
{
|
|
6075
|
+
"data-slot": "radio-group-indicator",
|
|
6076
|
+
className: "flex items-center justify-center",
|
|
6077
|
+
children: /* @__PURE__ */ jsx(Circle, { className: "fill-current text-current" })
|
|
6078
|
+
}
|
|
6079
|
+
)
|
|
6080
|
+
}
|
|
6081
|
+
);
|
|
6082
|
+
}
|
|
6083
|
+
function Slider({
|
|
6084
|
+
className,
|
|
6085
|
+
children,
|
|
6086
|
+
...props
|
|
6087
|
+
}) {
|
|
6088
|
+
return /* @__PURE__ */ jsxs(
|
|
6089
|
+
Slider$1.Root,
|
|
6090
|
+
{
|
|
6091
|
+
"data-slot": "slider",
|
|
6092
|
+
className: cn(
|
|
6093
|
+
"relative flex h-4 w-full touch-none select-none items-center data-disabled:cursor-not-allowed data-disabled:opacity-50",
|
|
6094
|
+
className
|
|
6095
|
+
),
|
|
6096
|
+
...props,
|
|
6097
|
+
children: [
|
|
6098
|
+
/* @__PURE__ */ jsx(Slider$1.Track, { className: "relative h-1.5 w-full overflow-hidden rounded-full bg-accent", children: /* @__PURE__ */ jsx(Slider$1.Range, { className: "absolute h-full bg-primary" }) }),
|
|
6099
|
+
children
|
|
6100
|
+
]
|
|
6101
|
+
}
|
|
6102
|
+
);
|
|
6103
|
+
}
|
|
6104
|
+
function SliderThumb({
|
|
6105
|
+
className,
|
|
6106
|
+
...props
|
|
6107
|
+
}) {
|
|
6108
|
+
return /* @__PURE__ */ jsx(
|
|
6109
|
+
Slider$1.Thumb,
|
|
6110
|
+
{
|
|
6111
|
+
"data-slot": "slider-thumb",
|
|
6112
|
+
className: cn(
|
|
6113
|
+
"box-content block size-4 shrink-0 cursor-pointer rounded-full border-2 border-primary bg-primary-foreground shadow-xs shadow-black/5 outline-hidden",
|
|
6114
|
+
className
|
|
6115
|
+
),
|
|
6116
|
+
...props
|
|
6117
|
+
}
|
|
6118
|
+
);
|
|
6119
|
+
}
|
|
6120
|
+
var SwitchContext = React4.createContext({
|
|
6121
|
+
permanent: false
|
|
6122
|
+
});
|
|
6123
|
+
var useSwitchContext = () => {
|
|
6124
|
+
const context = React4.useContext(SwitchContext);
|
|
6125
|
+
if (!context) {
|
|
6126
|
+
throw new Error("SwitchIndicator must be used within a Switch component");
|
|
6127
|
+
}
|
|
6128
|
+
return context;
|
|
6129
|
+
};
|
|
6130
|
+
var switchShapes = {
|
|
6131
|
+
pill: "rounded-full",
|
|
6132
|
+
square: "rounded-md"
|
|
6133
|
+
};
|
|
6134
|
+
var switchSizes = {
|
|
6135
|
+
xs: "h-4 w-7",
|
|
6136
|
+
sm: "h-5 w-8",
|
|
6137
|
+
md: "h-6 w-10",
|
|
6138
|
+
lg: "h-8 w-14",
|
|
6139
|
+
xl: "h-9 w-16"
|
|
6140
|
+
};
|
|
6141
|
+
var switchVariants = cva(
|
|
6142
|
+
`
|
|
6143
|
+
relative peer inline-flex shrink-0 cursor-pointer items-center rounded-full transition-colors
|
|
6144
|
+
focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background
|
|
6145
|
+
disabled:cursor-not-allowed disabled:opacity-50 data-[state=unchecked]:bg-input
|
|
6146
|
+
aria-invalid:border aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10 dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
|
|
6147
|
+
[[data-invalid=true]_&]:border [[data-invalid=true]_&]:border-destructive/60 [[data-invalid=true]_&]:ring-destructive/10 dark:[[data-invalid=true]_&]:border-destructive dark:[[data-invalid=true]_&]:ring-destructive/20
|
|
6148
|
+
`,
|
|
6149
|
+
{
|
|
6150
|
+
variants: {
|
|
6151
|
+
shape: switchShapes,
|
|
4276
6152
|
size: switchSizes,
|
|
4277
6153
|
permanent: {
|
|
4278
6154
|
true: "bg-input",
|
|
@@ -4412,6 +6288,43 @@ function SwitchIndicator({
|
|
|
4412
6288
|
}
|
|
4413
6289
|
);
|
|
4414
6290
|
}
|
|
6291
|
+
var textareaVariants = cva(
|
|
6292
|
+
`
|
|
6293
|
+
w-full bg-background border border-input shadow-xs shadow-black/5 transition-[color,box-shadow]
|
|
6294
|
+
text-foreground placeholder:text-muted-foreground/80
|
|
6295
|
+
focus-visible:border-ring focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/30
|
|
6296
|
+
disabled:cursor-not-allowed disabled:opacity-50
|
|
6297
|
+
[&[readonly]]:bg-muted/80 [&[readonly]]:cursor-not-allowed
|
|
6298
|
+
aria-invalid:border-destructive/60 aria-invalid:ring-destructive/10
|
|
6299
|
+
dark:aria-invalid:border-destructive dark:aria-invalid:ring-destructive/20
|
|
6300
|
+
`,
|
|
6301
|
+
{
|
|
6302
|
+
variants: {
|
|
6303
|
+
variant: {
|
|
6304
|
+
sm: "px-2.5 py-2.5 text-xs rounded-md",
|
|
6305
|
+
md: "px-3 py-3 text-[0.8125rem] leading-[var(--text-sm--line-height)] rounded-md",
|
|
6306
|
+
lg: "px-4 py-4 text-sm rounded-md"
|
|
6307
|
+
}
|
|
6308
|
+
},
|
|
6309
|
+
defaultVariants: {
|
|
6310
|
+
variant: "md"
|
|
6311
|
+
}
|
|
6312
|
+
}
|
|
6313
|
+
);
|
|
6314
|
+
function Textarea({
|
|
6315
|
+
className,
|
|
6316
|
+
variant,
|
|
6317
|
+
...props
|
|
6318
|
+
}) {
|
|
6319
|
+
return /* @__PURE__ */ jsx(
|
|
6320
|
+
"textarea",
|
|
6321
|
+
{
|
|
6322
|
+
"data-slot": "textarea",
|
|
6323
|
+
className: cn(textareaVariants({ variant }), className),
|
|
6324
|
+
...props
|
|
6325
|
+
}
|
|
6326
|
+
);
|
|
6327
|
+
}
|
|
4415
6328
|
function ScrollArea({
|
|
4416
6329
|
className,
|
|
4417
6330
|
viewportClassName,
|
|
@@ -4688,27 +6601,474 @@ function ToolbarActions({
|
|
|
4688
6601
|
}
|
|
4689
6602
|
);
|
|
4690
6603
|
}
|
|
4691
|
-
|
|
4692
|
-
|
|
4693
|
-
|
|
4694
|
-
|
|
6604
|
+
function Progress({
|
|
6605
|
+
className,
|
|
6606
|
+
indicatorClassName,
|
|
6607
|
+
value,
|
|
6608
|
+
...props
|
|
6609
|
+
}) {
|
|
6610
|
+
return /* @__PURE__ */ jsx(
|
|
6611
|
+
Progress$1.Root,
|
|
6612
|
+
{
|
|
6613
|
+
"data-slot": "progress",
|
|
6614
|
+
className: cn(
|
|
6615
|
+
"relative h-1.5 w-full overflow-hidden rounded-full bg-secondary",
|
|
6616
|
+
className
|
|
6617
|
+
),
|
|
6618
|
+
...props,
|
|
6619
|
+
children: /* @__PURE__ */ jsx(
|
|
6620
|
+
Progress$1.Indicator,
|
|
6621
|
+
{
|
|
6622
|
+
"data-slot": "progress-indicator",
|
|
6623
|
+
className: cn(
|
|
6624
|
+
"h-full w-full flex-1 bg-primary transition-all",
|
|
6625
|
+
indicatorClassName
|
|
6626
|
+
),
|
|
6627
|
+
style: { transform: `translateX(-${100 - (value || 0)}%)` }
|
|
6628
|
+
}
|
|
6629
|
+
)
|
|
6630
|
+
}
|
|
6631
|
+
);
|
|
6632
|
+
}
|
|
6633
|
+
function ProgressCircle({
|
|
6634
|
+
className,
|
|
6635
|
+
indicatorClassName,
|
|
6636
|
+
trackClassName,
|
|
6637
|
+
value = 0,
|
|
6638
|
+
size = 48,
|
|
6639
|
+
strokeWidth = 4,
|
|
6640
|
+
children,
|
|
6641
|
+
...props
|
|
6642
|
+
}) {
|
|
6643
|
+
const radius = (size - strokeWidth) / 2;
|
|
6644
|
+
const circumference = radius * 2 * Math.PI;
|
|
6645
|
+
const offset = circumference - value / 100 * circumference;
|
|
6646
|
+
return /* @__PURE__ */ jsxs(
|
|
6647
|
+
"div",
|
|
6648
|
+
{
|
|
6649
|
+
"data-slot": "progress-circle",
|
|
6650
|
+
role: "progressbar",
|
|
6651
|
+
"aria-valuenow": value,
|
|
6652
|
+
"aria-valuemin": 0,
|
|
6653
|
+
"aria-valuemax": 100,
|
|
6654
|
+
className: cn(
|
|
6655
|
+
"relative inline-flex items-center justify-center",
|
|
6656
|
+
className
|
|
6657
|
+
),
|
|
6658
|
+
style: { width: size, height: size },
|
|
6659
|
+
...props,
|
|
6660
|
+
children: [
|
|
6661
|
+
/* @__PURE__ */ jsxs(
|
|
6662
|
+
"svg",
|
|
6663
|
+
{
|
|
6664
|
+
className: "absolute inset-0 -rotate-90",
|
|
6665
|
+
width: size,
|
|
6666
|
+
height: size,
|
|
6667
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
6668
|
+
children: [
|
|
6669
|
+
/* @__PURE__ */ jsx(
|
|
6670
|
+
"circle",
|
|
6671
|
+
{
|
|
6672
|
+
"data-slot": "progress-circle-track",
|
|
6673
|
+
cx: size / 2,
|
|
6674
|
+
cy: size / 2,
|
|
6675
|
+
r: radius,
|
|
6676
|
+
stroke: "currentColor",
|
|
6677
|
+
strokeWidth,
|
|
6678
|
+
fill: "none",
|
|
6679
|
+
className: cn("text-secondary", trackClassName)
|
|
6680
|
+
}
|
|
6681
|
+
),
|
|
6682
|
+
/* @__PURE__ */ jsx(
|
|
6683
|
+
"circle",
|
|
6684
|
+
{
|
|
6685
|
+
"data-slot": "progress-circle-indicator",
|
|
6686
|
+
cx: size / 2,
|
|
6687
|
+
cy: size / 2,
|
|
6688
|
+
r: radius,
|
|
6689
|
+
stroke: "currentColor",
|
|
6690
|
+
strokeWidth,
|
|
6691
|
+
fill: "none",
|
|
6692
|
+
strokeDasharray: circumference,
|
|
6693
|
+
strokeDashoffset: offset,
|
|
6694
|
+
strokeLinecap: "round",
|
|
6695
|
+
className: cn(
|
|
6696
|
+
"text-primary transition-all duration-300 ease-in-out",
|
|
6697
|
+
indicatorClassName
|
|
6698
|
+
)
|
|
6699
|
+
}
|
|
6700
|
+
)
|
|
6701
|
+
]
|
|
6702
|
+
}
|
|
6703
|
+
),
|
|
6704
|
+
children && /* @__PURE__ */ jsx(
|
|
6705
|
+
"div",
|
|
6706
|
+
{
|
|
6707
|
+
"data-slot": "progress-circle-content",
|
|
6708
|
+
className: "relative z-10 flex items-center justify-center text-sm font-medium",
|
|
6709
|
+
children
|
|
6710
|
+
}
|
|
6711
|
+
)
|
|
6712
|
+
]
|
|
6713
|
+
}
|
|
6714
|
+
);
|
|
6715
|
+
}
|
|
6716
|
+
function ProgressRadial({
|
|
6717
|
+
className,
|
|
6718
|
+
value = 0,
|
|
6719
|
+
size = 120,
|
|
6720
|
+
strokeWidth = 8,
|
|
6721
|
+
startAngle = -90,
|
|
6722
|
+
endAngle = 90,
|
|
6723
|
+
showLabel = false,
|
|
6724
|
+
trackClassName,
|
|
6725
|
+
indicatorClassName,
|
|
6726
|
+
children,
|
|
6727
|
+
...props
|
|
6728
|
+
}) {
|
|
6729
|
+
const radius = (size - strokeWidth) / 2;
|
|
6730
|
+
const angleRange = endAngle - startAngle;
|
|
6731
|
+
const progressAngle = value / 100 * angleRange;
|
|
6732
|
+
const toRadians = (degrees) => degrees * Math.PI / 180;
|
|
6733
|
+
const startX = size / 2 + radius * Math.cos(toRadians(startAngle));
|
|
6734
|
+
const startY = size / 2 + radius * Math.sin(toRadians(startAngle));
|
|
6735
|
+
const endX = size / 2 + radius * Math.cos(toRadians(startAngle + progressAngle));
|
|
6736
|
+
const endY = size / 2 + radius * Math.sin(toRadians(startAngle + progressAngle));
|
|
6737
|
+
const largeArc = progressAngle > 180 ? 1 : 0;
|
|
6738
|
+
const pathData = [
|
|
6739
|
+
"M",
|
|
6740
|
+
startX,
|
|
6741
|
+
startY,
|
|
6742
|
+
"A",
|
|
6743
|
+
radius,
|
|
6744
|
+
radius,
|
|
6745
|
+
0,
|
|
6746
|
+
largeArc,
|
|
6747
|
+
1,
|
|
6748
|
+
endX,
|
|
6749
|
+
endY
|
|
6750
|
+
].join(" ");
|
|
6751
|
+
return /* @__PURE__ */ jsxs(
|
|
6752
|
+
"div",
|
|
6753
|
+
{
|
|
6754
|
+
"data-slot": "progress-radial",
|
|
6755
|
+
role: "progressbar",
|
|
6756
|
+
"aria-valuenow": value,
|
|
6757
|
+
"aria-valuemin": 0,
|
|
6758
|
+
"aria-valuemax": 100,
|
|
6759
|
+
className: cn(
|
|
6760
|
+
"relative inline-flex items-center justify-center",
|
|
6761
|
+
className
|
|
6762
|
+
),
|
|
6763
|
+
style: { width: size, height: size },
|
|
6764
|
+
...props,
|
|
6765
|
+
children: [
|
|
6766
|
+
/* @__PURE__ */ jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, children: [
|
|
6767
|
+
/* @__PURE__ */ jsx(
|
|
6768
|
+
"path",
|
|
6769
|
+
{
|
|
6770
|
+
d: [
|
|
6771
|
+
"M",
|
|
6772
|
+
size / 2 + radius * Math.cos(toRadians(startAngle)),
|
|
6773
|
+
size / 2 + radius * Math.sin(toRadians(startAngle)),
|
|
6774
|
+
"A",
|
|
6775
|
+
radius,
|
|
6776
|
+
radius,
|
|
6777
|
+
0,
|
|
6778
|
+
angleRange > 180 ? 1 : 0,
|
|
6779
|
+
1,
|
|
6780
|
+
size / 2 + radius * Math.cos(toRadians(endAngle)),
|
|
6781
|
+
size / 2 + radius * Math.sin(toRadians(endAngle))
|
|
6782
|
+
].join(" "),
|
|
6783
|
+
stroke: "currentColor",
|
|
6784
|
+
strokeWidth,
|
|
6785
|
+
fill: "none",
|
|
6786
|
+
strokeLinecap: "round",
|
|
6787
|
+
className: cn("text-secondary", trackClassName)
|
|
6788
|
+
}
|
|
6789
|
+
),
|
|
6790
|
+
/* @__PURE__ */ jsx(
|
|
6791
|
+
"path",
|
|
6792
|
+
{
|
|
6793
|
+
d: pathData,
|
|
6794
|
+
stroke: "currentColor",
|
|
6795
|
+
strokeWidth,
|
|
6796
|
+
fill: "none",
|
|
6797
|
+
strokeLinecap: "round",
|
|
6798
|
+
className: cn(
|
|
6799
|
+
"text-primary transition-all duration-300 ease-in-out",
|
|
6800
|
+
indicatorClassName
|
|
6801
|
+
)
|
|
6802
|
+
}
|
|
6803
|
+
)
|
|
6804
|
+
] }),
|
|
6805
|
+
(showLabel || children) && /* @__PURE__ */ jsx("div", { className: "absolute inset-0 flex items-center justify-center", children: children || /* @__PURE__ */ jsxs("span", { className: "text-lg font-bold", children: [
|
|
6806
|
+
value,
|
|
6807
|
+
"%"
|
|
6808
|
+
] }) })
|
|
6809
|
+
]
|
|
6810
|
+
}
|
|
6811
|
+
);
|
|
6812
|
+
}
|
|
6813
|
+
function NavigationMenu({
|
|
6814
|
+
className,
|
|
6815
|
+
children,
|
|
6816
|
+
viewport = true,
|
|
6817
|
+
...props
|
|
6818
|
+
}) {
|
|
6819
|
+
return /* @__PURE__ */ jsxs(
|
|
6820
|
+
NavigationMenu$1.Root,
|
|
6821
|
+
{
|
|
6822
|
+
"data-slot": "navigation-menu",
|
|
6823
|
+
"data-viewport": viewport,
|
|
6824
|
+
className: cn(
|
|
6825
|
+
"group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
|
|
6826
|
+
className
|
|
6827
|
+
),
|
|
6828
|
+
...props,
|
|
6829
|
+
children: [
|
|
6830
|
+
children,
|
|
6831
|
+
viewport && /* @__PURE__ */ jsx(NavigationMenuViewport, {})
|
|
6832
|
+
]
|
|
6833
|
+
}
|
|
6834
|
+
);
|
|
6835
|
+
}
|
|
6836
|
+
function NavigationMenuList({
|
|
6837
|
+
className,
|
|
6838
|
+
...props
|
|
6839
|
+
}) {
|
|
6840
|
+
return /* @__PURE__ */ jsx(
|
|
6841
|
+
NavigationMenu$1.List,
|
|
6842
|
+
{
|
|
6843
|
+
"data-slot": "navigation-menu-list",
|
|
6844
|
+
className: cn(
|
|
6845
|
+
"group flex flex-1 list-none items-center justify-center gap-1",
|
|
6846
|
+
className
|
|
6847
|
+
),
|
|
6848
|
+
...props
|
|
6849
|
+
}
|
|
6850
|
+
);
|
|
6851
|
+
}
|
|
6852
|
+
function NavigationMenuItem({
|
|
6853
|
+
className,
|
|
6854
|
+
...props
|
|
6855
|
+
}) {
|
|
6856
|
+
return /* @__PURE__ */ jsx(
|
|
6857
|
+
NavigationMenu$1.Item,
|
|
6858
|
+
{
|
|
6859
|
+
"data-slot": "navigation-menu-item",
|
|
6860
|
+
className: cn("relative", className),
|
|
6861
|
+
...props
|
|
6862
|
+
}
|
|
6863
|
+
);
|
|
6864
|
+
}
|
|
6865
|
+
var navigationMenuTriggerStyle = cva(
|
|
6866
|
+
"cursor-pointer group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-accent/50 data-[state=open]:bg-accent/50 data-[active=true]:text-accent-foreground ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1"
|
|
6867
|
+
);
|
|
6868
|
+
function NavigationMenuTrigger({
|
|
6869
|
+
className,
|
|
6870
|
+
children,
|
|
6871
|
+
...props
|
|
6872
|
+
}) {
|
|
6873
|
+
return /* @__PURE__ */ jsxs(
|
|
6874
|
+
NavigationMenu$1.Trigger,
|
|
6875
|
+
{
|
|
6876
|
+
"data-slot": "navigation-menu-trigger",
|
|
6877
|
+
className: cn(navigationMenuTriggerStyle(), className),
|
|
6878
|
+
...props,
|
|
6879
|
+
children: [
|
|
6880
|
+
children,
|
|
6881
|
+
" ",
|
|
6882
|
+
/* @__PURE__ */ jsx(
|
|
6883
|
+
ChevronDownIcon,
|
|
6884
|
+
{
|
|
6885
|
+
className: "relative top-px ms-1 size-3.5 opacity-60 transition duration-300 group-data-[state=open]:rotate-180",
|
|
6886
|
+
"aria-hidden": "true"
|
|
6887
|
+
}
|
|
6888
|
+
)
|
|
6889
|
+
]
|
|
6890
|
+
}
|
|
6891
|
+
);
|
|
6892
|
+
}
|
|
6893
|
+
function NavigationMenuContent({
|
|
6894
|
+
className,
|
|
6895
|
+
...props
|
|
6896
|
+
}) {
|
|
6897
|
+
return /* @__PURE__ */ jsx(
|
|
6898
|
+
NavigationMenu$1.Content,
|
|
6899
|
+
{
|
|
6900
|
+
"data-slot": "navigation-menu-content",
|
|
6901
|
+
className: cn(
|
|
6902
|
+
"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! top-0 left-0 w-full p-2 pr-2.5 md:absolute md:w-auto",
|
|
6903
|
+
"group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:rounded-md group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none",
|
|
6904
|
+
className
|
|
6905
|
+
),
|
|
6906
|
+
...props
|
|
6907
|
+
}
|
|
6908
|
+
);
|
|
6909
|
+
}
|
|
6910
|
+
function NavigationMenuViewport({
|
|
6911
|
+
className,
|
|
6912
|
+
...props
|
|
6913
|
+
}) {
|
|
6914
|
+
return /* @__PURE__ */ jsx(
|
|
6915
|
+
"div",
|
|
6916
|
+
{
|
|
6917
|
+
className: cn(
|
|
6918
|
+
"absolute top-full right-0 isolate z-50 flex items-center justify-center"
|
|
6919
|
+
),
|
|
6920
|
+
children: /* @__PURE__ */ jsx(
|
|
6921
|
+
NavigationMenu$1.Viewport,
|
|
6922
|
+
{
|
|
6923
|
+
"data-slot": "navigation-menu-viewport",
|
|
6924
|
+
className: cn(
|
|
6925
|
+
"shadow-md shadow-black/5 rounded-md border border-border bg-popover text-popover-foreground p-1.5 origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-(--radix-navigation-menu-viewport-height) w-full overflow-hidden md:w-(--radix-navigation-menu-viewport-width)",
|
|
6926
|
+
className
|
|
6927
|
+
),
|
|
6928
|
+
...props
|
|
6929
|
+
}
|
|
6930
|
+
)
|
|
6931
|
+
}
|
|
6932
|
+
);
|
|
6933
|
+
}
|
|
6934
|
+
function NavigationMenuLink({
|
|
6935
|
+
className,
|
|
6936
|
+
...props
|
|
6937
|
+
}) {
|
|
6938
|
+
return /* @__PURE__ */ jsx(
|
|
6939
|
+
NavigationMenu$1.Link,
|
|
6940
|
+
{
|
|
6941
|
+
"data-slot": "navigation-menu-link",
|
|
6942
|
+
className: cn(
|
|
6943
|
+
"hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground ring-ring/10 dark:ring-ring/20 dark:outline-ring/40 outline-ring/50 flex flex-col gap-1 rounded-md p-2 text-sm transition-[color,box-shadow] focus-visible:ring-4 focus-visible:outline-1",
|
|
6944
|
+
className
|
|
6945
|
+
),
|
|
6946
|
+
...props
|
|
6947
|
+
}
|
|
6948
|
+
);
|
|
6949
|
+
}
|
|
6950
|
+
function NavigationMenuIndicator({
|
|
6951
|
+
className,
|
|
6952
|
+
...props
|
|
6953
|
+
}) {
|
|
6954
|
+
return /* @__PURE__ */ jsx(
|
|
6955
|
+
NavigationMenu$1.Indicator,
|
|
6956
|
+
{
|
|
6957
|
+
"data-slot": "navigation-menu-indicator",
|
|
6958
|
+
className: cn(
|
|
6959
|
+
"data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-10 flex h-1.5 items-end justify-center overflow-hidden",
|
|
6960
|
+
className
|
|
6961
|
+
),
|
|
6962
|
+
...props,
|
|
6963
|
+
children: /* @__PURE__ */ jsx("div", { className: "bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-ts-md shadow-md" })
|
|
6964
|
+
}
|
|
6965
|
+
);
|
|
6966
|
+
}
|
|
6967
|
+
function Pagination({ className, ...props }) {
|
|
6968
|
+
return /* @__PURE__ */ jsx(
|
|
6969
|
+
"nav",
|
|
6970
|
+
{
|
|
6971
|
+
"data-slot": "pagination",
|
|
6972
|
+
role: "navigation",
|
|
6973
|
+
"aria-label": "pagination",
|
|
6974
|
+
className: cn("mx-auto flex w-full justify-center", className),
|
|
6975
|
+
...props
|
|
6976
|
+
}
|
|
6977
|
+
);
|
|
6978
|
+
}
|
|
6979
|
+
function PaginationContent({
|
|
6980
|
+
className,
|
|
6981
|
+
...props
|
|
6982
|
+
}) {
|
|
6983
|
+
return /* @__PURE__ */ jsx(
|
|
6984
|
+
"ul",
|
|
6985
|
+
{
|
|
6986
|
+
"data-slot": "pagination-content",
|
|
6987
|
+
className: cn("flex flex-row items-center gap-1", className),
|
|
6988
|
+
...props
|
|
6989
|
+
}
|
|
6990
|
+
);
|
|
6991
|
+
}
|
|
6992
|
+
function PaginationItem({ className, ...props }) {
|
|
6993
|
+
return /* @__PURE__ */ jsx("li", { "data-slot": "pagination-item", className, ...props });
|
|
6994
|
+
}
|
|
6995
|
+
function PaginationEllipsis({
|
|
6996
|
+
className,
|
|
6997
|
+
...props
|
|
6998
|
+
}) {
|
|
6999
|
+
return /* @__PURE__ */ jsxs(
|
|
7000
|
+
"span",
|
|
7001
|
+
{
|
|
7002
|
+
"data-slot": "pagination-ellipsis",
|
|
7003
|
+
"aria-hidden": true,
|
|
7004
|
+
className: cn("flex size-9 items-center justify-center", className),
|
|
7005
|
+
...props,
|
|
7006
|
+
children: [
|
|
7007
|
+
/* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }),
|
|
7008
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
|
|
7009
|
+
]
|
|
7010
|
+
}
|
|
7011
|
+
);
|
|
7012
|
+
}
|
|
7013
|
+
var TimelineItem = React4.forwardRef(
|
|
7014
|
+
({ line, icon: Icon, children, removeSpace, className }, ref) => {
|
|
7015
|
+
return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex items-start relative", className), children: [
|
|
7016
|
+
line && /* @__PURE__ */ jsx(
|
|
7017
|
+
"div",
|
|
7018
|
+
{
|
|
7019
|
+
className: cn(
|
|
7020
|
+
"w-9 start-0 top-9 absolute bottom-0",
|
|
7021
|
+
"translate-x-1/2 rtl:-translate-x-1/2",
|
|
7022
|
+
"border-s border-s-input"
|
|
7023
|
+
)
|
|
7024
|
+
}
|
|
7025
|
+
),
|
|
7026
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-center shrink-0 rounded-full bg-accent/60 border border-input size-9 text-secondary-foreground", children: /* @__PURE__ */ jsx(Icon, { size: 16, className: "text-base" }) }),
|
|
7027
|
+
/* @__PURE__ */ jsx("div", { className: cn("ps-2.5 text-base grow", !removeSpace && "mb-7"), children })
|
|
7028
|
+
] });
|
|
7029
|
+
}
|
|
7030
|
+
);
|
|
7031
|
+
TimelineItem.displayName = "TimelineItem";
|
|
7032
|
+
var kbdVariants = cva(
|
|
7033
|
+
"inline-flex items-center justify-center font-mono rounded-md",
|
|
7034
|
+
{
|
|
7035
|
+
variants: {
|
|
7036
|
+
variant: {
|
|
7037
|
+
default: "bg-accent border border-border text-accent-foreground",
|
|
7038
|
+
outline: "text-accent-foreground border border-input"
|
|
7039
|
+
},
|
|
7040
|
+
size: {
|
|
7041
|
+
md: "h-7 min-w-7 px-1.5 text-xs [&_svg]:size-3.5",
|
|
7042
|
+
sm: "h-6 min-w-6 px-1 text-xs leading-3 [&_svg]:size-3",
|
|
7043
|
+
xs: "h-5 min-w-5 px-1 text-xs leading-3 [&_svg]:size-3"
|
|
7044
|
+
}
|
|
7045
|
+
},
|
|
7046
|
+
defaultVariants: {
|
|
7047
|
+
variant: "default",
|
|
7048
|
+
size: "md"
|
|
7049
|
+
}
|
|
7050
|
+
}
|
|
7051
|
+
);
|
|
7052
|
+
function Kbd({
|
|
7053
|
+
className,
|
|
7054
|
+
variant,
|
|
7055
|
+
size,
|
|
7056
|
+
...props
|
|
7057
|
+
}) {
|
|
7058
|
+
return /* @__PURE__ */ jsx(
|
|
7059
|
+
"kbd",
|
|
7060
|
+
{
|
|
7061
|
+
"data-slot": "kbd",
|
|
7062
|
+
className: cn(kbdVariants({ variant, size }), className),
|
|
7063
|
+
...props
|
|
7064
|
+
}
|
|
4695
7065
|
);
|
|
4696
|
-
React.useEffect(() => {
|
|
4697
|
-
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
4698
|
-
const onChange = () => {
|
|
4699
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
4700
|
-
};
|
|
4701
|
-
mql.addEventListener("change", onChange);
|
|
4702
|
-
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
4703
|
-
return () => mql.removeEventListener("change", onChange);
|
|
4704
|
-
}, []);
|
|
4705
|
-
return !!isMobile;
|
|
4706
7066
|
}
|
|
4707
7067
|
function useCopyToClipboard({
|
|
4708
7068
|
timeout = 2e3,
|
|
4709
7069
|
onCopy
|
|
4710
7070
|
} = {}) {
|
|
4711
|
-
const [isCopied, setIsCopied] =
|
|
7071
|
+
const [isCopied, setIsCopied] = React4.useState(false);
|
|
4712
7072
|
const copyToClipboard = (value) => {
|
|
4713
7073
|
if (typeof window === "undefined" || !navigator.clipboard.writeText) {
|
|
4714
7074
|
return;
|
|
@@ -4726,14 +7086,92 @@ function useCopyToClipboard({
|
|
|
4726
7086
|
};
|
|
4727
7087
|
return { isCopied, copyToClipboard };
|
|
4728
7088
|
}
|
|
7089
|
+
var codeVariants = cva("relative rounded-md font-mono font-medium", {
|
|
7090
|
+
variants: {
|
|
7091
|
+
variant: {
|
|
7092
|
+
default: "bg-muted text-muted-foreground",
|
|
7093
|
+
destructive: "bg-destructive/10 text-destructive",
|
|
7094
|
+
outline: "border border-border bg-background text-foreground"
|
|
7095
|
+
},
|
|
7096
|
+
size: {
|
|
7097
|
+
default: "text-sm px-2.5 py-1.5",
|
|
7098
|
+
sm: "text-xs px-2 py-1.5",
|
|
7099
|
+
lg: "text-base px-3 py-1.5"
|
|
7100
|
+
}
|
|
7101
|
+
},
|
|
7102
|
+
defaultVariants: {
|
|
7103
|
+
variant: "default",
|
|
7104
|
+
size: "default"
|
|
7105
|
+
}
|
|
7106
|
+
});
|
|
7107
|
+
function Code({
|
|
7108
|
+
className,
|
|
7109
|
+
variant,
|
|
7110
|
+
size,
|
|
7111
|
+
asChild = false,
|
|
7112
|
+
showCopyButton = false,
|
|
7113
|
+
copyText,
|
|
7114
|
+
children,
|
|
7115
|
+
...props
|
|
7116
|
+
}) {
|
|
7117
|
+
const { isCopied, copyToClipboard } = useCopyToClipboard();
|
|
7118
|
+
const Comp = asChild ? Slot : "code";
|
|
7119
|
+
const textToCopy = copyText || (typeof children === "string" ? children : "");
|
|
7120
|
+
return /* @__PURE__ */ jsxs(
|
|
7121
|
+
"span",
|
|
7122
|
+
{
|
|
7123
|
+
className: cn("inline-flex items-center gap-2", className),
|
|
7124
|
+
"data-slot": "code",
|
|
7125
|
+
children: [
|
|
7126
|
+
/* @__PURE__ */ jsx(
|
|
7127
|
+
Comp,
|
|
7128
|
+
{
|
|
7129
|
+
"data-slot": "code-panel",
|
|
7130
|
+
className: cn(codeVariants({ variant, size })),
|
|
7131
|
+
...props,
|
|
7132
|
+
children
|
|
7133
|
+
}
|
|
7134
|
+
),
|
|
7135
|
+
showCopyButton && textToCopy && /* @__PURE__ */ jsx(
|
|
7136
|
+
Button,
|
|
7137
|
+
{
|
|
7138
|
+
mode: "icon",
|
|
7139
|
+
size: "sm",
|
|
7140
|
+
variant: "ghost",
|
|
7141
|
+
"aria-label": isCopied ? "Copied" : "Copy to clipboard",
|
|
7142
|
+
className: "size-4 p-0 opacity-60 hover:opacity-100",
|
|
7143
|
+
onClick: () => copyToClipboard(textToCopy),
|
|
7144
|
+
children: isCopied ? /* @__PURE__ */ jsx(Check, { className: "size-3" }) : /* @__PURE__ */ jsx(Copy, { className: "size-3" })
|
|
7145
|
+
}
|
|
7146
|
+
)
|
|
7147
|
+
]
|
|
7148
|
+
}
|
|
7149
|
+
);
|
|
7150
|
+
}
|
|
7151
|
+
var MOBILE_BREAKPOINT = 992;
|
|
7152
|
+
function useIsMobile() {
|
|
7153
|
+
const [isMobile, setIsMobile] = React4.useState(
|
|
7154
|
+
void 0
|
|
7155
|
+
);
|
|
7156
|
+
React4.useEffect(() => {
|
|
7157
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
7158
|
+
const onChange = () => {
|
|
7159
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
7160
|
+
};
|
|
7161
|
+
mql.addEventListener("change", onChange);
|
|
7162
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
7163
|
+
return () => mql.removeEventListener("change", onChange);
|
|
7164
|
+
}, []);
|
|
7165
|
+
return !!isMobile;
|
|
7166
|
+
}
|
|
4729
7167
|
function useMounted() {
|
|
4730
|
-
const [mounted, setMounted] =
|
|
4731
|
-
|
|
7168
|
+
const [mounted, setMounted] = React4.useState(false);
|
|
7169
|
+
React4.useEffect(() => {
|
|
4732
7170
|
setMounted(true);
|
|
4733
7171
|
}, []);
|
|
4734
7172
|
return mounted;
|
|
4735
7173
|
}
|
|
4736
7174
|
|
|
4737
|
-
export { Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarGroupItem, AvatarGroupTooltip, AvatarImage, AvatarIndicator, AvatarStatus, Badge, BadgeButton, BadgeDot, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, Card, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardTable, CardTitle, CardToolbar, Checkbox, DataGrid, DataGridColumnHeader, DataGridColumnVisibility, DataGridContainer, DataGridPagination, DataGridProvider, DataGridTable, DataGridTableBase, DataGridTableBody, DataGridTableBodyRow, DataGridTableBodyRowCell, DataGridTableBodyRowExpanded, DataGridTableBodyRowSkeleton, DataGridTableBodyRowSkeletonCell, DataGridTableEmpty, DataGridTableHead, DataGridTableHeadRow, DataGridTableHeadRowCell, DataGridTableHeadRowCellResize, DataGridTableLoader, DataGridTableRowSelect, DataGridTableRowSelectAll, DataGridTableRowSpacer, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputAddon, InputGroup, InputWrapper, Label2 as Label, Popover, PopoverContent, PopoverTrigger, ScrollArea, ScrollBar, Scrollspy, Select, SelectContent, SelectGroup, SelectIndicator, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Spinner, Switch, SwitchIndicator, SwitchWrapper, Tabs, TabsContent, TabsList, TabsTrigger, Toolbar, ToolbarActions, ToolbarDescription, ToolbarHeading, ToolbarTitle, avatarStatusVariants, badgeVariants, buttonVariantConfig, buttonVariants, cn, headings, inputAddonVariants, inputVariants, labelVariants, selectTriggerVariants, switchShapes, switchSizes, tabsListVariantConfig, useCopyToClipboard, useDataGrid, useIsMobile, useMounted };
|
|
7175
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionMenu, AccordionMenuGroup, AccordionMenuIndicator, AccordionMenuItem, AccordionMenuLabel, AccordionMenuSeparator, AccordionMenuSub, AccordionMenuSubContent, AccordionMenuSubTrigger, AccordionTrigger, Alert, AlertContent, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertIcon, AlertTitle, AlertToolbar, AspectRatio, Avatar, AvatarFallback, AvatarGroup, AvatarGroupItem, AvatarGroupTooltip, AvatarImage, AvatarIndicator, AvatarStatus, Badge, BadgeButton, BadgeDot, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, ButtonArrow, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardHeading, CardTable, CardTitle, CardToolbar, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Code, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandCheck, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DataGrid, DataGridColumnHeader, DataGridColumnVisibility, DataGridContainer, DataGridPagination, DataGridProvider, DataGridTable, DataGridTableBase, DataGridTableBody, DataGridTableBodyRow, DataGridTableBodyRowCell, DataGridTableBodyRowExpanded, DataGridTableBodyRowSkeleton, DataGridTableBodyRowSkeletonCell, DataGridTableEmpty, DataGridTableHead, DataGridTableHeadRow, DataGridTableHeadRowCell, DataGridTableHeadRowCellResize, DataGridTableLoader, DataGridTableRowSelect, DataGridTableRowSelectAll, DataGridTableRowSpacer, DateField, DateInput, DateSegment, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, HoverCard, HoverCardContent, HoverCardTrigger, Icons, Input, InputAddon, InputGroup, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputWrapper, Kanban, KanbanBoard, KanbanColumn, KanbanColumnContent, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Kbd, Label2 as Label, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, Popover, PopoverContent, PopoverTrigger, Progress, ProgressCircle, ProgressRadial, RadioGroup2 as RadioGroup, RadioGroupItem, ScrollArea, ScrollBar, Scrollspy, Select, SelectContent, SelectGroup, SelectIndicator, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator2 as Separator, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Slider, SliderThumb, Spinner, Switch, SwitchIndicator, SwitchWrapper, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TimeField, TimelineItem, Toolbar, ToolbarActions, ToolbarDescription, ToolbarHeading, ToolbarTitle, avatarStatusVariants, badgeVariants, buttonVariantConfig, buttonVariants, cn, codeVariants, dateInputStyles, headings, inputAddonVariants, inputVariants, kbdVariants, labelVariants, navigationMenuTriggerStyle, radioGroupVariants, radioItemVariants, selectTriggerVariants, switchShapes, switchSizes, tabsListVariantConfig, textareaVariants, useChart, useCopyToClipboard, useDataGrid, useIsMobile, useMounted };
|
|
4738
7176
|
//# sourceMappingURL=index.js.map
|
|
4739
7177
|
//# sourceMappingURL=index.js.map
|