@100mslive/hms-ai-ui
Version:
100ms AI UI components
1,250 lines (1,228 loc) • 138 kB
JavaScript
"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __defProps = Object.defineProperties;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __propIsEnum = Object.prototype.propertyIsEnumerable;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __spreadValues = (a, b) => {
for (var prop in b || (b = {}))
if (__hasOwnProp.call(b, prop))
__defNormalProp(a, prop, b[prop]);
if (__getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(b)) {
if (__propIsEnum.call(b, prop))
__defNormalProp(a, prop, b[prop]);
}
return a;
};
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
var __objRest = (source, exclude) => {
var target = {};
for (var prop in source)
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
target[prop] = source[prop];
if (source != null && __getOwnPropSymbols)
for (var prop of __getOwnPropSymbols(source)) {
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
target[prop] = source[prop];
}
return target;
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.tsx
var src_exports = {};
__export(src_exports, {
Accordion: () => Accordion,
AccordionContent: () => AccordionContent,
AccordionItem: () => AccordionItem,
AccordionTrigger: () => AccordionTrigger,
Box: () => Box,
Button: () => Button,
Calendar: () => Calendar,
Card: () => Card,
CardContent: () => CardContent,
CardDescription: () => CardDescription,
CardFooter: () => CardFooter,
CardHeader: () => CardHeader,
CardTitle: () => CardTitle,
Checkbox: () => Checkbox,
ComposableInput: () => ComposableInput,
DatePicker: () => DatePicker,
DestructiveButton: () => DestructiveButton,
Dialog: () => Dialog,
DialogClose: () => DialogClose,
DialogContent: () => DialogContent,
DialogDescription: () => DialogDescription,
DialogFooter: () => DialogFooter,
DialogHeader: () => DialogHeader,
DialogOverlay: () => DialogOverlay,
DialogPortal: () => DialogPortal,
DialogTitle: () => DialogTitle,
DialogTrigger: () => DialogTrigger,
DropdownMenu: () => DropdownMenu,
DropdownMenuCheckboxItem: () => DropdownMenuCheckboxItem,
DropdownMenuContent: () => DropdownMenuContent,
DropdownMenuGroup: () => DropdownMenuGroup,
DropdownMenuItem: () => DropdownMenuItem,
DropdownMenuLabel: () => DropdownMenuLabel,
DropdownMenuPortal: () => DropdownMenuPortal,
DropdownMenuRadioGroup: () => DropdownMenuRadioGroup,
DropdownMenuRadioItem: () => DropdownMenuRadioItem,
DropdownMenuSeparator: () => DropdownMenuSeparator,
DropdownMenuShortcut: () => DropdownMenuShortcut,
DropdownMenuSub: () => DropdownMenuSub,
DropdownMenuSubContent: () => DropdownMenuSubContent,
DropdownMenuSubTrigger: () => DropdownMenuSubTrigger,
DropdownMenuTrigger: () => DropdownMenuTrigger,
Flex: () => Flex,
Input: () => Input,
InteractiveGradient: () => InteractiveGradient,
Loading: () => Loading,
Popover: () => Popover,
PopoverAnchor: () => PopoverAnchor,
PopoverContent: () => PopoverContent,
PopoverTrigger: () => PopoverTrigger,
Progress: () => Progress,
RadioGroup: () => RadioGroup2,
RadioGroupItem: () => RadioGroupItem,
Select: () => Select,
SelectContent: () => SelectContent,
SelectGroup: () => SelectGroup,
SelectItem: () => SelectItem,
SelectLabel: () => SelectLabel,
SelectScrollDownButton: () => SelectScrollDownButton,
SelectScrollUpButton: () => SelectScrollUpButton,
SelectSeparator: () => SelectSeparator,
SelectTrigger: () => SelectTrigger,
SelectValue: () => SelectValue,
Sheet: () => Sheet,
SheetClose: () => SheetClose,
SheetContent: () => SheetContent,
SheetDescription: () => SheetDescription,
SheetFooter: () => SheetFooter,
SheetHeader: () => SheetHeader,
SheetOverlay: () => SheetOverlay,
SheetPortal: () => SheetPortal,
SheetTitle: () => SheetTitle,
SheetTrigger: () => SheetTrigger,
Sidebar: () => Sidebar,
SidebarContent: () => SidebarContent,
SidebarFooter: () => SidebarFooter,
SidebarGroup: () => SidebarGroup,
SidebarGroupAction: () => SidebarGroupAction,
SidebarGroupContent: () => SidebarGroupContent,
SidebarGroupLabel: () => SidebarGroupLabel,
SidebarHeader: () => SidebarHeader,
SidebarInput: () => SidebarInput,
SidebarInset: () => SidebarInset,
SidebarMenu: () => SidebarMenu,
SidebarMenuAction: () => SidebarMenuAction,
SidebarMenuBadge: () => SidebarMenuBadge,
SidebarMenuButton: () => SidebarMenuButton,
SidebarMenuItem: () => SidebarMenuItem,
SidebarMenuSkeleton: () => SidebarMenuSkeleton,
SidebarMenuSub: () => SidebarMenuSub,
SidebarMenuSubButton: () => SidebarMenuSubButton,
SidebarMenuSubItem: () => SidebarMenuSubItem,
SidebarProvider: () => SidebarProvider,
SidebarRail: () => SidebarRail,
SidebarSeparator: () => SidebarSeparator,
SidebarTrigger: () => SidebarTrigger,
Slider: () => Slider,
Switch: () => Switch,
TabGroup: () => TabGroup,
TabGroupList: () => TabGroupList,
TabGroupTrigger: () => TabGroupTrigger,
Table: () => Table,
TableBody: () => TableBody,
TableCaption: () => TableCaption,
TableCell: () => TableCell,
TableFooter: () => TableFooter,
TableHead: () => TableHead,
TableHeader: () => TableHeader,
TableRow: () => TableRow,
Tabs: () => Tabs,
TabsContent: () => TabsContent,
TabsList: () => TabsList,
TabsTrigger: () => TabsTrigger,
Textarea: () => Textarea,
ThemeProvider: () => ThemeProvider,
Toast: () => Toast,
ToastAction: () => ToastAction,
ToastClose: () => ToastClose,
ToastDescription: () => ToastDescription,
ToastProvider: () => ToastProvider,
ToastTitle: () => ToastTitle,
ToastViewport: () => ToastViewport,
Toaster: () => Toaster,
Tooltip: () => Tooltip,
TooltipContent: () => TooltipContent,
TooltipProvider: () => TooltipProvider,
TooltipTrigger: () => TooltipTrigger,
baseTokens: () => baseTokens,
buildDarkTheme: () => buildDarkTheme,
buildLightTheme: () => buildLightTheme,
buttonVariants: () => buttonVariants,
cn: () => cn,
destructiveButtonVariants: () => destructiveButtonVariants,
reducer: () => reducer,
toast: () => toast,
useIsMobile: () => useIsMobile,
useSidebar: () => useSidebar,
useTheme: () => useTheme,
useToast: () => useToast
});
module.exports = __toCommonJS(src_exports);
// src/components/ui/card.tsx
var React = __toESM(require("react"));
// src/lib/utils.ts
var import_clsx = require("clsx");
var import_tailwind_merge = require("tailwind-merge");
function cn(...inputs) {
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
}
function isPlainObject(value) {
return Boolean(
value && typeof value === "object" && !Array.isArray(value) && Object.prototype.toString.call(value) === "[object Object]"
);
}
function mergeDeep(target, ...sources) {
if (!sources.length) {
return target;
}
const source = sources.shift();
if (source === void 0) {
return target;
}
if (isPlainObject(target) && isPlainObject(source)) {
Object.keys(source).forEach((key) => {
if (isPlainObject(source[key])) {
if (!target[key]) {
Object.assign(target, { [key]: {} });
}
mergeDeep(target[key], source[key]);
} else {
Object.assign(target, { [key]: source[key] });
}
});
}
return mergeDeep(target, ...sources);
}
// src/components/ui/card.tsx
var Card = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement(
"div",
__spreadValues({
ref,
className: cn(
"rounded-xl border bg-card text-card-foreground shadow",
className
)
}, props)
);
});
Card.displayName = "Card";
var CardHeader = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement(
"div",
__spreadValues({
ref,
className: cn("flex flex-col space-y-1.5 p-6", className)
}, props)
);
});
CardHeader.displayName = "CardHeader";
var CardTitle = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement(
"div",
__spreadValues({
ref,
className: cn("font-semibold leading-none tracking-tight", className)
}, props)
);
});
CardTitle.displayName = "CardTitle";
var CardDescription = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement(
"div",
__spreadValues({
ref,
className: cn("text-sm text-muted-foreground", className)
}, props)
);
});
CardDescription.displayName = "CardDescription";
var CardContent = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement("div", __spreadValues({ ref, className: cn("p-6 pt-0", className) }, props));
});
CardContent.displayName = "CardContent";
var CardFooter = React.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React.createElement(
"div",
__spreadValues({
ref,
className: cn("flex items-center p-6 pt-0", className)
}, props)
);
});
CardFooter.displayName = "CardFooter";
// src/components/ui/input.tsx
var React3 = __toESM(require("react"));
// src/components/ui/flex.tsx
var React2 = __toESM(require("react"));
var import_class_variance_authority = require("class-variance-authority");
var flexVariants = (0, import_class_variance_authority.cva)("flex", {
variants: {
justify: {
start: "justify-start",
end: "justify-end",
center: "justify-center",
between: "justify-between",
around: "justify-around",
evenly: "justify-evenly"
},
align: {
start: "items-start",
end: "items-end",
center: "items-center",
baseline: "items-baseline",
stretch: "items-stretch"
},
direction: {
row: "flex-row",
column: "flex-col",
rowReverse: "flex-row-reverse",
columnReverse: "flex-col-reverse"
}
}
});
var Flex = React2.forwardRef(
(_a, ref) => {
var _b = _a, { justify, align, direction, className } = _b, props = __objRest(_b, ["justify", "align", "direction", "className"]);
return /* @__PURE__ */ React2.createElement(
"div",
__spreadValues({
ref,
className: cn(flexVariants({ justify, align, direction }), className)
}, props)
);
}
);
var Box = React2.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React2.createElement("div", __spreadValues({ ref, className: cn(className) }, props));
});
// src/components/ui/input.tsx
var import_class_variance_authority2 = require("class-variance-authority");
var import_react_use = require("react-use");
var inputVariants = (0, import_class_variance_authority2.cva)(
"flex px-3.5 w-full border rounded-lg border-bd-primary bg-bg-primary placeholder:text-txt-placeholder py-2.5 shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground focus-visible:outline-none focus-visible:ring-1 text-txt-primary focus-visible:border-2 focus-visible:border-bd-brand disabled:cursor-not-allowed disabled:opacity-50 text-md",
{
variants: {
error: {
true: "focus-visible:border-bd-error border-2 border-bd-error ",
false: ""
}
}
}
);
var Input = React3.forwardRef((_a, ref) => {
var _b = _a, { className, error, type } = _b, props = __objRest(_b, ["className", "error", "type"]);
return /* @__PURE__ */ React3.createElement(
"input",
__spreadValues({
type,
className: cn(inputVariants({ error, className })),
ref
}, props)
);
});
Input.displayName = "Input";
var ComposableInput = React3.forwardRef(
(_a, ref) => {
var _b = _a, {
className,
error,
errorText,
type,
label,
hintText,
required,
leftComponent,
rightComponent
} = _b, props = __objRest(_b, [
"className",
"error",
"errorText",
"type",
"label",
"hintText",
"required",
"leftComponent",
"rightComponent"
]);
const [leftRef, { width: leftWidth }] = (0, import_react_use.useMeasure)();
const [rightRef, { width: rightWidth }] = (0, import_react_use.useMeasure)();
return /* @__PURE__ */ React3.createElement(Flex, { direction: "column" }, label ? /* @__PURE__ */ React3.createElement(Flex, { className: "mb-1.5" }, /* @__PURE__ */ React3.createElement("label", { className: "text-txt-primary text-sm font-medium mr-1" }, label), required && /* @__PURE__ */ React3.createElement("span", { className: "text-txt-brand-tertiary text-sm font-medium" }, "*")) : null, /* @__PURE__ */ React3.createElement(Flex, { className: `relative ${errorText ? "mb-1.5" : ""}` }, leftComponent ? /* @__PURE__ */ React3.createElement("div", { className: "absolute py-2.5 left-2 z-1", ref: leftRef }, leftComponent) : null, /* @__PURE__ */ React3.createElement(
Input,
__spreadValues({
ref,
type,
className: inputVariants({
error,
className
}),
style: {
paddingLeft: leftWidth ? leftWidth + 10 : void 0,
paddingRight: rightWidth ? rightWidth + 8 : void 0
}
}, props)
), rightComponent ? /* @__PURE__ */ React3.createElement("div", { className: "absolute py-2.5 right-2 z-1", ref: rightRef }, rightComponent) : null), !error && hintText && /* @__PURE__ */ React3.createElement("span", { className: "text-xs text-txt-tertiary font-medium" }, hintText), error && errorText && /* @__PURE__ */ React3.createElement("span", { className: "text-xs text-txt-error-primary font-medium" }, errorText));
}
);
ComposableInput.displayName = "ComposableInput";
// src/components/ui/accordion.tsx
var React4 = __toESM(require("react"));
var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion"));
var import_lucide_react = require("lucide-react");
var Accordion = AccordionPrimitive.Root;
var AccordionItem = React4.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React4.createElement(
AccordionPrimitive.Item,
__spreadValues({
ref,
className: cn("border-b", className)
}, props)
);
});
AccordionItem.displayName = "AccordionItem";
var AccordionTrigger = React4.forwardRef((_a, ref) => {
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
return /* @__PURE__ */ React4.createElement(AccordionPrimitive.Header, { className: "flex" }, /* @__PURE__ */ React4.createElement(
AccordionPrimitive.Trigger,
__spreadValues({
ref,
className: cn(
"flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180",
className
)
}, props),
children,
/* @__PURE__ */ React4.createElement(import_lucide_react.ChevronDown, { className: "h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" })
));
});
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
var AccordionContent = React4.forwardRef((_a, ref) => {
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
return /* @__PURE__ */ React4.createElement(
AccordionPrimitive.Content,
__spreadValues({
ref,
className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
}, props),
/* @__PURE__ */ React4.createElement("div", { className: cn("pb-4 pt-0", className) }, children)
);
});
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
// src/components/ui/button.tsx
var React5 = __toESM(require("react"));
var import_react_slot = require("@radix-ui/react-slot");
var import_class_variance_authority3 = require("class-variance-authority");
var buttonVariants = (0, import_class_variance_authority3.cva)(
"inline-flex items-center rounded-none justify-center gap-2 whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
{
variants: {
variant: {
primary: "bg-bg-brand-solid cursor-pointer border-fg-white border-2 text-txt-primary-on-brand shadow-sm hover:shadow-md hover:bg-bg-brand-solid-hover focus:border-2 focus:border-bg-brand-solid ",
"secondary-gray": "bg-bg-primary border border-bd-primary cursor-pointer text-txt-secondary shadow-sm hover:bg-bg-primary-hover hover:border-bg-primary-hover hover:text-txt-secondary-hover focus:border-bd focus:bg-bg-primary focus:border-bd-primary ",
secondary: "bg-bg-primary border border-bd-brand-subtle cursor-pointer text-txt-brand-tertiary shadow-sm hover:bg-bg-primary-hover hover:text-txt-brand-primary focus:bg-primary focus:border-bd-brand-subtle ",
"tertiary-gray": "cursor-pointer text-txt-tertiary shadow-sm hover:bg-bg-primary-hover hover:text-txt-tertiary-hover focus:bg-bg-primary",
tertiary: "cursor-pointer text-txt-secondary shadow-sm hover:bg-bg-brand-primary hover:text-txt-brand-primary focus:shadow-md focus:bg-primary",
link: "px-0 py-0 text-txt-tertiary hover:text-txt-tertiary-hover focus:text-txt-tertiary",
"link-gray": "px-0 py-0 text-txt-tertiary-hover hover:text-txt-brand-primary focus:text-txt-tertiary-hover"
},
disable: {
true: "",
false: ""
},
size: {
default: "px-4 py-2 text-sm font-semibold rounded-md",
sm: " py-2 px-3 text-sm gap-1.5 font-semibold rounded-md",
md: "py-2.5 text-sm px-3.5 gap-1.5 font-semibold rounded-md",
lg: "text-md px-4 py-2.5 gap-2 font-semibold rounded-lg",
xl: "text-md px-[1.125rem] py-3 font-semibold rounded-lg",
"2xl": "text-lg py-4 px-[1.375rem] font-semibold rounded-lg",
link: "p-0"
}
},
compoundVariants: [
{
variant: "primary",
disable: true,
class: "bg-bg-disabled cursor-not-allowed hover:bg-bg-disabled border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "secondary",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "secondary-gray",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "tertiary",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "tertiary-gray",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "link",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
},
{
variant: "link-gray",
disable: true,
class: "bg-bg-primary cursor-not-allowed border border-bd-disabled-subtle shadow-md text-txt-disabled "
}
],
defaultVariants: {
variant: "secondary",
size: "default"
}
}
);
var Button = React5.forwardRef(
(_a, ref) => {
var _b = _a, { className, variant, disable, size, asChild = false } = _b, props = __objRest(_b, ["className", "variant", "disable", "size", "asChild"]);
const Comp = asChild ? import_react_slot.Slot : "button";
return /* @__PURE__ */ React5.createElement(
Comp,
__spreadValues({
className: cn(buttonVariants({ variant, size, disable, className })),
ref,
disabled: Boolean(disable)
}, props)
);
}
);
Button.displayName = "Button";
// src/components/ui/dialog.tsx
var React6 = __toESM(require("react"));
var DialogPrimitive = __toESM(require("@radix-ui/react-dialog"));
var import_lucide_react2 = require("lucide-react");
var Dialog = DialogPrimitive.Root;
var DialogTrigger = DialogPrimitive.Trigger;
var DialogPortal = DialogPrimitive.Portal;
var DialogClose = DialogPrimitive.Close;
var DialogOverlay = React6.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React6.createElement(
DialogPrimitive.Overlay,
__spreadValues({
ref,
className: cn(
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
className
)
}, props)
);
});
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
var DialogContent = React6.forwardRef((_a, ref) => {
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
return /* @__PURE__ */ React6.createElement(DialogPortal, null, /* @__PURE__ */ React6.createElement(DialogOverlay, null), /* @__PURE__ */ React6.createElement(
DialogPrimitive.Content,
__spreadValues({
ref,
className: cn(
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
className
)
}, props),
children,
/* @__PURE__ */ React6.createElement(DialogPrimitive.Close, { className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground" }, /* @__PURE__ */ React6.createElement(import_lucide_react2.X, { className: "h-4 w-4" }), /* @__PURE__ */ React6.createElement("span", { className: "sr-only" }, "Close"))
));
});
DialogContent.displayName = DialogPrimitive.Content.displayName;
var DialogHeader = (_a) => {
var _b = _a, {
className
} = _b, props = __objRest(_b, [
"className"
]);
return /* @__PURE__ */ React6.createElement(
"div",
__spreadValues({
className: cn(
"flex flex-col space-y-1.5 text-center sm:text-left",
className
)
}, props)
);
};
DialogHeader.displayName = "DialogHeader";
var DialogFooter = (_a) => {
var _b = _a, {
className
} = _b, props = __objRest(_b, [
"className"
]);
return /* @__PURE__ */ React6.createElement(
"div",
__spreadValues({
className: cn(
"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",
className
)
}, props)
);
};
DialogFooter.displayName = "DialogFooter";
var DialogTitle = React6.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React6.createElement(
DialogPrimitive.Title,
__spreadValues({
ref,
className: cn(
"text-lg font-semibold leading-none tracking-tight",
className
)
}, props)
);
});
DialogTitle.displayName = DialogPrimitive.Title.displayName;
var DialogDescription = React6.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React6.createElement(
DialogPrimitive.Description,
__spreadValues({
ref,
className: cn("text-sm text-muted-foreground", className)
}, props)
);
});
DialogDescription.displayName = DialogPrimitive.Description.displayName;
// src/components/ui/slider.tsx
var React8 = __toESM(require("react"));
var SliderPrimitive = __toESM(require("@radix-ui/react-slider"));
// src/components/ui/tooltip.tsx
var React7 = __toESM(require("react"));
var TooltipPrimitive = __toESM(require("@radix-ui/react-tooltip"));
var TooltipProvider = TooltipPrimitive.Provider;
var Tooltip = TooltipPrimitive.Root;
var TooltipTrigger = TooltipPrimitive.Trigger;
var TooltipContent = React7.forwardRef((_a, ref) => {
var _b = _a, { className, sideOffset = 4, side, arrowPresent } = _b, props = __objRest(_b, ["className", "sideOffset", "side", "arrowPresent"]);
return /* @__PURE__ */ React7.createElement(TooltipPrimitive.Portal, null, /* @__PURE__ */ React7.createElement(
TooltipPrimitive.Content,
__spreadValues({
ref,
sideOffset,
side,
avoidCollisions: false,
className: cn(
`z-50 rounded-md bg-black text-xs font-semibold leading-[18px] text-white animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 py-2 px-3`,
className
)
}, props),
props.children,
arrowPresent && /* @__PURE__ */ React7.createElement(TooltipPrimitive.Arrow, { offset: 0, width: 12, height: 6 })
));
});
TooltipContent.displayName = TooltipPrimitive.Content.displayName;
// src/components/ui/slider.tsx
var Slider = React8.forwardRef((props, ref) => {
var _b;
const _a = props, {
className,
tooltip = false,
tooltip_direction = "top",
value,
defaultValue,
onValueChange
} = _a, restProps = __objRest(_a, [
"className",
"tooltip",
"tooltip_direction",
"value",
"defaultValue",
"onValueChange"
]);
const initialValue = (_b = value != null ? value : defaultValue) != null ? _b : 30;
const [sliderValue, setSliderValue] = React8.useState(initialValue);
React8.useEffect(() => {
if (typeof value === "number") {
setSliderValue(value);
}
}, [value]);
const handleValueChange = (newValues) => {
const newValue = newValues[0];
setSliderValue(newValue);
if (onValueChange) {
onValueChange(newValue);
}
};
const tooltipClass = tooltip_direction === "bottom" ? "bg-white text-black" : "";
return /* @__PURE__ */ React8.createElement(TooltipProvider, null, /* @__PURE__ */ React8.createElement(
SliderPrimitive.Root,
__spreadValues({
ref,
className: cn(
"relative flex w-80 touch-none select-none items-center",
className
),
value: [sliderValue],
onValueChange: handleValueChange
}, restProps),
/* @__PURE__ */ React8.createElement(SliderPrimitive.Track, { className: "relative h-2 w-full overflow-hidden bg-bg-quaternary" }, /* @__PURE__ */ React8.createElement(SliderPrimitive.Range, { className: "absolute h-full bg-fg-brand-primary" })),
/* @__PURE__ */ React8.createElement(
SliderPrimitive.Thumb,
{
className: cn(
"block h-6 w-6 rounded-full border-2 border-bg-brand-solid bg-white shadow transition-colors",
"focus-visible:outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-bg-brand-solid focus-visible:outline-offset-2",
"disabled:pointer-events-none disabled:opacity-50"
)
},
tooltip && /* @__PURE__ */ React8.createElement(Tooltip, null, /* @__PURE__ */ React8.createElement(TooltipTrigger, { asChild: true }, /* @__PURE__ */ React8.createElement("div", { className: "w-full h-full" })), /* @__PURE__ */ React8.createElement(
TooltipContent,
{
sideOffset: 12,
side: tooltip_direction,
align: "center",
className: cn("text-xs rounded", tooltipClass)
},
sliderValue
))
)
));
});
Slider.displayName = "Slider";
// src/components/ui/switch.tsx
var React9 = __toESM(require("react"));
var SwitchPrimitives = __toESM(require("@radix-ui/react-switch"));
var Switch = React9.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React9.createElement(
SwitchPrimitives.Root,
__spreadProps(__spreadValues({
className: cn(
"peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-bg-brand-solid data-[state=unchecked]:bg-bg-tertiary focus-visible:ring-bg-brand-solid-hover",
className
)
}, props), {
ref
}),
/* @__PURE__ */ React9.createElement(
SwitchPrimitives.Thumb,
{
className: cn(
"pointer-events-none block h-4 w-4 rounded-full bg-bg-primary shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0"
)
}
)
);
});
Switch.displayName = SwitchPrimitives.Root.displayName;
// src/components/ui/progress.tsx
var React10 = __toESM(require("react"));
var ProgressPrimitive = __toESM(require("@radix-ui/react-progress"));
var Progress = React10.forwardRef((_a, ref) => {
var _b = _a, { className, value } = _b, props = __objRest(_b, ["className", "value"]);
return /* @__PURE__ */ React10.createElement(
ProgressPrimitive.Root,
__spreadValues({
ref,
className: cn(
"relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
className
)
}, props),
/* @__PURE__ */ React10.createElement(
ProgressPrimitive.Indicator,
{
className: "h-full w-full flex-1 bg-primary transition-all",
style: { transform: `translateX(-${100 - (value || 0)}%)` }
}
)
);
});
Progress.displayName = ProgressPrimitive.Root.displayName;
// src/components/ui/checkbox.tsx
var React11 = __toESM(require("react"));
var CheckboxPrimitive = __toESM(require("@radix-ui/react-checkbox"));
var import_lucide_react3 = require("lucide-react");
var Checkbox = React11.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React11.createElement(
CheckboxPrimitive.Root,
__spreadValues({
ref,
className: cn(
"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",
className
)
}, props),
/* @__PURE__ */ React11.createElement(
CheckboxPrimitive.Indicator,
{
className: cn("flex items-center justify-center text-current")
},
/* @__PURE__ */ React11.createElement(import_lucide_react3.Check, { className: "h-4 w-4" })
)
);
});
Checkbox.displayName = CheckboxPrimitive.Root.displayName;
// src/components/ui/dropdown-menu.tsx
var React12 = __toESM(require("react"));
var DropdownMenuPrimitive = __toESM(require("@radix-ui/react-dropdown-menu"));
var import_lucide_react4 = require("lucide-react");
var DropdownMenu = DropdownMenuPrimitive.Root;
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
var DropdownMenuGroup = DropdownMenuPrimitive.Group;
var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
var DropdownMenuSub = DropdownMenuPrimitive.Sub;
var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
var DropdownMenuSubTrigger = React12.forwardRef((_a, ref) => {
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.SubTrigger,
__spreadValues({
ref,
className: cn(
"flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
inset && "pl-8",
className
)
}, props),
children,
/* @__PURE__ */ React12.createElement(import_lucide_react4.ChevronRight, { className: "ml-auto" })
);
});
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
var DropdownMenuSubContent = React12.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.SubContent,
__spreadValues({
ref,
className: cn(
"z-100 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-0 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className
)
}, props)
);
});
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
var DropdownMenuContent = React12.forwardRef((_a, ref) => {
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
return /* @__PURE__ */ React12.createElement(DropdownMenuPrimitive.Portal, null, /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.Content,
__spreadValues({
ref,
sideOffset,
className: cn(
"z-50 min-w-[8rem] overflow-hidden rounded-md border bg-bg-primary p-0 text-popover-foreground shadow-md",
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
className
)
}, props)
));
});
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
var DropdownMenuItem = React12.forwardRef((_a, ref) => {
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.Item,
__spreadValues({
ref,
className: cn(
"relative flex text-txt-secondary rounded-none bg-bg-primary hover:bg-bg-primary-hover hover:text-txt-secondary-hover cursor-default select-none items-center gap-2 px-2.5 py-2 text-sm outline-none transition-colors focus:bg-bg-primary-hover focus:text-txt-secondary-hover data-[disabled]:text-txt-disabled data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0",
inset && "pl-8",
className
)
}, props)
);
});
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
var DropdownMenuCheckboxItem = React12.forwardRef((_a, ref) => {
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.CheckboxItem,
__spreadValues({
ref,
className: cn(
"relative flex cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-txt-secondary rounded-none bg-bg-primary hover:bg-bg-primary-hover hover:text-txt-secondary-hover data-[disabled]:text-txt-disabled data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
className
),
checked
}, props),
/* @__PURE__ */ React12.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React12.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React12.createElement(import_lucide_react4.Check, { className: "h-4 w-4" }))),
children
);
});
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
var DropdownMenuRadioItem = React12.forwardRef((_a, ref) => {
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.RadioItem,
__spreadValues({
ref,
className: cn(
"relative flex cursor-default select-none items-center py-1.5 pl-8 pr-2 text-sm outline-none transition-colors text-txt-secondary rounded-none bg-bg-primary hover:bg-bg-primary-hover hover:text-txt-secondary-hover data-[disabled]:text-txt-disabled data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
className
)
}, props),
/* @__PURE__ */ React12.createElement("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center" }, /* @__PURE__ */ React12.createElement(DropdownMenuPrimitive.ItemIndicator, null, /* @__PURE__ */ React12.createElement(import_lucide_react4.Circle, { className: "h-2 w-2 fill-current" }))),
children
);
});
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
var DropdownMenuLabel = React12.forwardRef((_a, ref) => {
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.Label,
__spreadValues({
ref,
className: cn(
"px-2 py-1.5 text-sm font-semibold",
inset && "pl-8",
className
)
}, props)
);
});
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
var DropdownMenuSeparator = React12.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React12.createElement(
DropdownMenuPrimitive.Separator,
__spreadValues({
ref,
className: cn("-mx-1 my-1 h-px bg-bd-secondary", className)
}, props)
);
});
DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
var DropdownMenuShortcut = (_a) => {
var _b = _a, {
className
} = _b, props = __objRest(_b, [
"className"
]);
return /* @__PURE__ */ React12.createElement(
"span",
__spreadValues({
className: cn("ml-auto text-xs tracking-widest opacity-60", className)
}, props)
);
};
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
// src/components/ui/InteractiveGradient.tsx
var import_react = __toESM(require("react"));
var InteractiveGradient = ({
backgroundGradient = ["rgb(8, 10, 15)", "rgb(0, 17, 32)"],
circleColors = [
"18, 113, 255",
"107, 74, 255",
"100, 100, 255",
"50, 160, 220",
"80, 47, 122"
],
interactiveColor = "140, 100, 255",
circleSize = "80%",
blending = "hard-light",
className = ""
}) => {
const interactiveRef = (0, import_react.useRef)(null);
(0, import_react.useEffect)(() => {
let curX = 0;
let curY = 0;
let tgX = 0;
let tgY = 0;
const interBubble = interactiveRef.current;
const move = () => {
curX += (tgX - curX) / 20;
curY += (tgY - curY) / 20;
if (interBubble) {
interBubble.style.transform = `translate(${Math.round(curX)}px, ${Math.round(curY)}px)`;
}
requestAnimationFrame(move);
};
const handleMouseMove = (e) => {
tgX = e.clientX;
tgY = e.clientY;
};
window.addEventListener("mousemove", handleMouseMove);
move();
return () => {
window.removeEventListener("mousemove", handleMouseMove);
};
}, []);
const containerStyle = {
background: `linear-gradient(40deg, ${backgroundGradient[0]}, ${backgroundGradient[1]})`
};
const radialStyle = (rgbColor) => ({
background: `radial-gradient(circle at center, rgba(${rgbColor}, 0.8) 0, rgba(${rgbColor}, 0) 50%) no-repeat`,
mixBlendMode: blending
});
const circleConfigs = [
{
top: `calc(50% - ${circleSize} / 2)`,
left: `calc(50% - ${circleSize} / 2)`,
animation: "moveVertical 30s ease infinite",
transformOrigin: "center center",
opacity: 1
},
{
top: `calc(50% - ${circleSize} / 2)`,
left: `calc(50% - ${circleSize} / 2)`,
animation: "moveInCircle 20s reverse infinite",
transformOrigin: "calc(50% - 400px)",
opacity: 1
},
{
top: `calc(50% - ${circleSize} / 2 + 200px)`,
left: `calc(50% - ${circleSize} / 2 - 500px)`,
animation: "moveInCircle 40s linear infinite",
transformOrigin: "calc(50% + 400px)",
opacity: 1
},
{
top: `calc(50% - ${circleSize} / 2)`,
left: `calc(50% - ${circleSize} / 2)`,
animation: "moveHorizontal 40s ease infinite",
transformOrigin: "calc(50% - 200px)",
opacity: 0.7
},
{
top: `calc(50% - ${circleSize})`,
left: `calc(50% - ${circleSize})`,
animation: "moveInCircle 20s ease infinite",
transformOrigin: "calc(50% - 800px) calc(50% + 200px)",
opacity: 1,
width: `calc(${circleSize} * 2)`,
height: `calc(${circleSize} * 2)`
}
];
const circlesToRender = circleConfigs.slice(0, circleColors.length);
return /* @__PURE__ */ import_react.default.createElement(
"div",
{
className: `relative w-full h-full overflow-hidden ${className}`,
style: containerStyle
},
/* @__PURE__ */ import_react.default.createElement("style", null, `
@keyframes moveInCircle {
0% { transform: rotate(0deg); }
50% { transform: rotate(180deg); }
100% { transform: rotate(360deg); }
}
@keyframes moveVertical {
0% { transform: translateY(-50%); }
50% { transform: translateY(50%); }
100% { transform: translateY(-50%); }
}
@keyframes moveHorizontal {
0% { transform: translateX(-50%) translateY(-10%); }
50% { transform: translateX(50%) translateY(10%); }
100% { transform: translateX(-50%) translateY(-10%); }
}
`),
/* @__PURE__ */ import_react.default.createElement(
"svg",
{
viewBox: "0 0 100vw 100vw",
xmlns: "http://www.w3.org/2000/svg",
className: "absolute top-0 left-0 w-full h-full z-[1]",
style: { mixBlendMode: "soft-light", opacity: 0.3 }
},
/* @__PURE__ */ import_react.default.createElement("filter", { id: "noiseFilterBg" }, /* @__PURE__ */ import_react.default.createElement(
"feTurbulence",
{
type: "fractalNoise",
baseFrequency: "0.6",
stitchTiles: "stitch"
}
)),
/* @__PURE__ */ import_react.default.createElement(
"rect",
{
width: "100%",
height: "100%",
preserveAspectRatio: "xMidYMid meet",
filter: "url(#noiseFilterBg)"
}
)
),
/* @__PURE__ */ import_react.default.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", className: "hidden" }, /* @__PURE__ */ import_react.default.createElement("defs", null, /* @__PURE__ */ import_react.default.createElement("filter", { id: "goo" }, /* @__PURE__ */ import_react.default.createElement(
"feGaussianBlur",
{
in: "SourceGraphic",
stdDeviation: "10",
result: "blur"
}
), /* @__PURE__ */ import_react.default.createElement(
"feColorMatrix",
{
in: "blur",
mode: "matrix",
values: "1 0 0 0 0\n 0 1 0 0 0\n 0 0 1 0 0\n 0 0 0 18 -8",
result: "goo"
}
), /* @__PURE__ */ import_react.default.createElement("feBlend", { in: "SourceGraphic", in2: "goo" })))),
/* @__PURE__ */ import_react.default.createElement(
"div",
{
className: "relative w-full h-full z-[2]",
style: {
filter: "url(#goo) blur(40px)"
}
},
circlesToRender.map((cfg, idx) => {
var _a, _b;
const width = (_a = cfg.width) != null ? _a : circleSize;
const height = (_b = cfg.height) != null ? _b : circleSize;
const circleStyle = __spreadProps(__spreadValues({}, radialStyle(circleColors[idx])), {
position: "absolute",
width,
height,
top: cfg.top,
left: cfg.left,
animation: cfg.animation,
transformOrigin: cfg.transformOrigin,
opacity: cfg.opacity
});
return /* @__PURE__ */ import_react.default.createElement("div", { key: idx, style: circleStyle });
}),
/* @__PURE__ */ import_react.default.createElement(
"div",
{
ref: interactiveRef,
style: __spreadProps(__spreadValues({}, radialStyle(interactiveColor)), {
position: "absolute",
width: "100%",
height: "100%",
top: "-50%",
left: "-50%",
opacity: 0.7
})
}
)
)
);
};
// src/components/ui/sidebar.tsx
var React18 = __toESM(require("react"));
var import_react_slot2 = require("@radix-ui/react-slot");
var import_class_variance_authority5 = require("class-variance-authority");
var import_lucide_react6 = require("lucide-react");
// src/hooks/use-mobile.tsx
var React14 = __toESM(require("react"));
var MOBILE_BREAKPOINT = 768;
function useIsMobile() {
const [isMobile, setIsMobile] = React14.useState(void 0);
React14.useEffect(() => {
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
const onChange = () => {
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
};
mql.addEventListener("change", onChange);
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
return () => mql.removeEventListener("change", onChange);
}, []);
return !!isMobile;
}
// src/components/ui/separator.tsx
var React15 = __toESM(require("react"));
var SeparatorPrimitive = __toESM(require("@radix-ui/react-separator"));
var Separator2 = React15.forwardRef(
(_a, ref) => {
var _b = _a, { className, orientation = "horizontal", decorative = true } = _b, props = __objRest(_b, ["className", "orientation", "decorative"]);
return /* @__PURE__ */ React15.createElement(
SeparatorPrimitive.Root,
__spreadValues({
ref,
decorative,
orientation,
className: cn(
"shrink-0 bg-border",
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
className
)
}, props)
);
}
);
Separator2.displayName = SeparatorPrimitive.Root.displayName;
// src/components/ui/sheet.tsx
var React16 = __toESM(require("react"));
var SheetPrimitive = __toESM(require("@radix-ui/react-dialog"));
var import_class_variance_authority4 = require("class-variance-authority");
var import_lucide_react5 = require("lucide-react");
var Sheet = SheetPrimitive.Root;
var SheetTrigger = SheetPrimitive.Trigger;
var SheetClose = SheetPrimitive.Close;
var SheetPortal = SheetPrimitive.Portal;
var SheetOverlay = React16.forwardRef((_a, ref) => {
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
return /* @__PURE__ */ React16.createElement(
SheetPrimitive.Overlay,
__spreadProps(__spreadValues({
className: cn(
"fixed inset-0 z-50 bg-primary data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
className
)
}, props), {
ref
})
);
});
SheetOverlay.displayName = SheetPrimitive.Overlay.displayName;
var sheetVariants = (0, import_class_variance_authority4.cva)(
"fixed z-50 gap-4 bg-bg-primary p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out",
{
variants: {
side: {
top: "inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]: