UNPKG

@100mslive/hms-ai-ui

Version:
1,250 lines (1,228 loc) 138 kB
"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]: