UNPKG

@hanzo/ui

Version:

Multi-framework UI library with React, Vue, Svelte, and React Native support. Based on shadcn/ui with comprehensive framework coverage.

1,378 lines (1,357 loc) 476 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); 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); // primitives/index-next.ts var index_next_exports = {}; __export(index_next_exports, { AIAgentIcon: () => AIAgentIcon, AISearchContentIcon: () => AISearchContentIcon, Accordion: () => Accordion, AccordionContent: () => AccordionContent, AccordionItem: () => AccordionItem, AccordionTrigger: () => AccordionTrigger, ActionButton: () => action_button_default, ActiveIcon: () => ActiveIcon, AddAgentIcon: () => AddAgentIcon, AddCryptoWalletIcon: () => AddCryptoWalletIcon, AddNewFolderIcon: () => AddNewFolderIcon, AgentIcon: () => AgentIcon, AiTasksIcon: () => AiTasksIcon, AisIcon: () => AisIcon, Alert: () => Alert, AlertDescription: () => AlertDescription, AlertDialog: () => AlertDialog, AlertDialogAction: () => AlertDialogAction, AlertDialogCancel: () => AlertDialogCancel, AlertDialogContent: () => AlertDialogContent, AlertDialogDescription: () => AlertDialogDescription, AlertDialogFooter: () => AlertDialogFooter, AlertDialogHeader: () => AlertDialogHeader, AlertDialogTitle: () => AlertDialogTitle, AlertDialogTrigger: () => AlertDialogTrigger, AlertTitle: () => AlertTitle, AnthropicIcon: () => AnthropicIcon, ApplyTypography: () => ApplyTypography, ArchiveIcon: () => ArchiveIcon, ArchivedIcon: () => ArchivedIcon, ArrowRightIcon: () => ArrowRightIcon, AspectRatio: () => aspect_ratio_default, AttachmentIcon: () => AttachmentIcon, Avatar: () => Avatar, AvatarFallback: () => AvatarFallback, AvatarImage: () => AvatarImage, AyaCohereIcon: () => AyaCohereIcon, AzureIcon: () => AzureIcon, Breadcrumb: () => Breadcrumb, BreadcrumbEllipsis: () => BreadcrumbEllipsis, BreadcrumbItem: () => BreadcrumbItem, BreadcrumbLink: () => BreadcrumbLink, BreadcrumbList: () => BreadcrumbList, BreadcrumbPage: () => BreadcrumbPage, BreadcrumbSeparator: () => BreadcrumbSeparator, BreakpointIndicator: () => breakpoint_indicator_default, BrowseSubscriptionIcon: () => BrowseSubscriptionIcon, Button: () => button_default, Calendar: () => calendar_default, Card: () => Card, CardContent: () => CardContent, CardDescription: () => CardDescription, CardFooter: () => CardFooter, CardHeader: () => CardHeader, CardTitle: () => CardTitle, Carousel: () => Carousel, CarouselContent: () => CarouselContent, CarouselItem: () => CarouselItem, CarouselNext: () => CarouselNext, CarouselPrevious: () => CarouselPrevious, CategoryIcon: () => CategoryIcon, ChatBubbleIcon: () => ChatBubbleIcon, ChatInput: () => ChatInput, ChatInputArea: () => ChatInputArea, ChatSettingsIcon: () => ChatSettingsIcon, CloudModelIcon: () => CloudModelIcon, Collapsible: () => Collapsible, CollapsibleContent: () => CollapsibleContent2, CollapsibleTrigger: () => CollapsibleTrigger2, Combobox: () => Combobox, Command: () => Command, CommandDialog: () => CommandDialog, CommandEmpty: () => CommandEmpty, CommandGroup: () => CommandGroup, CommandInput: () => CommandInput, CommandItem: () => CommandItem, CommandList: () => CommandList, CommandSeparator: () => CommandSeparator, CommandShortcut: () => CommandShortcut, ContextMenu: () => ContextMenu, ContextMenuCheckboxItem: () => ContextMenuCheckboxItem, ContextMenuContent: () => ContextMenuContent, ContextMenuGroup: () => ContextMenuGroup, ContextMenuItem: () => ContextMenuItem, ContextMenuLabel: () => ContextMenuLabel, ContextMenuPortal: () => ContextMenuPortal, ContextMenuRadioGroup: () => ContextMenuRadioGroup, ContextMenuRadioItem: () => ContextMenuRadioItem, ContextMenuSeparator: () => ContextMenuSeparator, ContextMenuShortcut: () => ContextMenuShortcut, ContextMenuSub: () => ContextMenuSub, ContextMenuSubContent: () => ContextMenuSubContent, ContextMenuSubTrigger: () => ContextMenuSubTrigger, ContextMenuTrigger: () => ContextMenuTrigger, CopyToClipboardIcon: () => CopyToClipboardIcon, CreateAIIcon: () => CreateAIIcon, CryptoWalletIcon: () => CryptoWalletIcon, DeepSeekIcon: () => DeepSeekIcon, Dialog: () => Dialog, DialogContent: () => DialogContent, DialogDescription: () => DialogDescription, DialogFooter: () => DialogFooter, DialogHeader: () => DialogHeader, DialogOverlay: () => DialogOverlay, DialogPortal: () => DialogPortal, DialogTitle: () => DialogTitle, DialogTrigger: () => DialogTrigger, DialogVideoController: () => dialog_video_controller_default, DirectoryTypeIcon: () => DirectoryTypeIcon, DisconnectIcon: () => DisconnectIcon, DotsLoader: () => DotsLoader, DownloadIcon: () => DownloadIcon, Drawer: () => Drawer, DrawerClose: () => DrawerClose, DrawerContent: () => DrawerContent, DrawerDescription: () => DrawerDescription, DrawerFooter: () => DrawerFooter, DrawerHeader: () => DrawerHeader, DrawerOverlay: () => DrawerOverlay, DrawerPortal: () => DrawerPortal, DrawerTitle: () => DrawerTitle, DrawerTrigger: () => DrawerTrigger, 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, EmbeddingsGeneratedIcon: () => EmbeddingsGeneratedIcon, EthereumIcon: () => EthereumIcon, ExoIcon: () => ExoIcon, ExportIcon: () => ExportIcon, FileEmptyStateIcon: () => FileEmptyStateIcon, FileList: () => FileList, FileTypeIcon: () => FileTypeIcon, FileUploader: () => FileUploader, FilesIcon: () => FilesIcon, Form: () => Form, FormControl: () => FormControl, FormDescription: () => FormDescription, FormField: () => FormField, FormItem: () => FormItem, FormLabel: () => FormLabel, FormMessage: () => FormMessage, FormulaIcon: () => FormulaIcon, GeminiIcon: () => GeminiIcon, GenerateDocIcon: () => GenerateDocIcon, GenerateFromWebIcon: () => GenerateFromWebIcon, GoogleIcon: () => GoogleIcon, GrokIcon: () => GrokIcon, GroqIcon: () => GroqIcon, HanzoCombinationMarkIcon: () => HanzoCombinationMarkIcon, HanzoIcon: () => HanzoIcon, HanzoLogoIcon: () => HanzoLogoIcon, HanzoLogoSoloIcon: () => HanzoLogoSoloIcon, HomeIcon: () => HomeIcon, HoverCard: () => HoverCard, HoverCardContent: () => HoverCardContent, HoverCardTrigger: () => HoverCardTrigger, Icons: () => icons_exports, Image: () => image_default, ImportIcon: () => ImportIcon, InboxIcon: () => InboxIcon, InlineIcon: () => inline_icon_default, InputOTP: () => InputOTP, InputOTPGroup: () => InputOTPGroup, InputOTPSeparator: () => InputOTPSeparator, InputOTPSlot: () => InputOTPSlot, JobBubbleIcon: () => JobBubbleIcon, JsonForm: () => json_form_default, LinkElement: () => link_element_default, ListBox: () => list_box_default, LmStudioIcon: () => LmStudioIcon, LoadingSpinner: () => loading_spinner_default, LocalModelIcon: () => LocalModelIcon, MCPIcon: () => MCPIcon, MDXLink: () => mdx_link_default, MarkdownText: () => MarkdownText, MediaStack: () => media_stack_default, MetaIcon: () => MetaIcon, MetadataIcon: () => MetadataIcon, MicrosoftIcon: () => MicrosoftIcon, MistralIcon: () => MistralIcon, MySubscriptionsIcon: () => MySubscriptionsIcon, NavItems: () => nav_items_default, NavigationMenu: () => NavigationMenu, NavigationMenuContent: () => NavigationMenuContent, NavigationMenuIndicator: () => NavigationMenuIndicator, NavigationMenuItem: () => NavigationMenuItem, NavigationMenuLink: () => NavigationMenuLink, NavigationMenuList: () => NavigationMenuList, NavigationMenuTrigger: () => NavigationMenuTrigger, NavigationMenuViewport: () => NavigationMenuViewport, NetworkAgentIcon: () => NetworkAgentIcon, NotificationIcon: () => NotificationIcon, OllamaIcon: () => OllamaIcon, OpenAIIcon: () => OpenAIIcon, OpenBMBIcon: () => OpenBMBIcon, OpenRouterIcon: () => OpenRouterIcon, PaperClipIcon: () => PaperClipIcon, PartyIcon: () => PartyIcon, PerplexityIcon: () => PerplexityIcon, PlusIcon: () => PlusIcon, Popover: () => Popover, PopoverAnchor: () => PopoverAnchor, PopoverContent: () => PopoverContent, PopoverTrigger: () => PopoverTrigger, PrettyJsonPrint: () => PrettyJsonPrint, PromptLibraryIcon: () => PromptLibraryIcon, PythonIcon: () => PythonIcon, QrIcon: () => QrIcon, QwenIcon: () => QwenIcon, RadioGroup: () => RadioGroup3, RadioGroupItem: () => RadioGroupItem, ReactJsIcon: () => ReactJsIcon, ReasoningIcon: () => ReasoningIcon, ResizableHandle: () => ResizableHandle, ResizablePanel: () => ResizablePanel, ResizablePanelGroup: () => ResizablePanelGroup, SaveIcon: () => SaveIcon, ScheduledTasksComingSoonIcon: () => ScheduledTasksComingSoonIcon, ScheduledTasksIcon: () => ScheduledTasksIcon, ScrollArea: () => ScrollArea, ScrollBar: () => ScrollBar, SearchInput: () => SearchInput, Select: () => Select, SelectContent: () => SelectContent, SelectGroup: () => SelectGroup, SelectItem: () => SelectItem, SelectLabel: () => SelectLabel, SelectSeparator: () => SelectSeparator, SelectTrigger: () => SelectTrigger, SelectValue: () => SelectValue, SendIcon: () => SendIcon, SharedFolderIcon: () => SharedFolderIcon, Sheet: () => Sheet, SheetClose: () => SheetClose, SheetContent: () => SheetContent, SheetDescription: () => SheetDescription, SheetFileIcon: () => SheetFileIcon, SheetFooter: () => SheetFooter, SheetHeader: () => SheetHeader, SheetIcon: () => SheetIcon, SheetOverlay: () => SheetOverlay, SheetPortal: () => SheetPortal, SheetTitle: () => SheetTitle, SheetTrigger: () => SheetTrigger, ShortcutsIcon: () => ShortcutsIcon, SortingAToZ: () => SortingAToZ, SortingZToA: () => SortingZToA, StepIndicator: () => step_indicator_default, StoreIcon: () => StoreIcon, Table: () => Table, TableBody: () => TableBody, TableCaption: () => TableCaption, TableCell: () => TableCell, TableFooter: () => TableFooter, TableHead: () => TableHead, TableHeader: () => TableHeader, TableRow: () => TableRow, Tabs: () => Tabs, TabsContent: () => TabsContent, TabsList: () => TabsList, TabsTrigger: () => TabsTrigger, Toaster: () => Toaster, TogetherAI: () => TogetherAI, Toggle: () => Toggle, ToggleGroup: () => ToggleGroup, ToggleGroupItem: () => ToggleGroupItem, ToolAssetsIcon: () => ToolAssetsIcon, ToolsDisabledIcon: () => ToolsDisabledIcon, ToolsIcon: () => ToolsIcon, Tooltip: () => Tooltip, TooltipArrow: () => TooltipArrow2, TooltipContent: () => TooltipContent, TooltipPortal: () => TooltipPortal, TooltipProvider: () => TooltipProvider, TooltipTrigger: () => TooltipTrigger, TracingIcon: () => TracingIcon, TypeScriptIcon: () => TypeScriptIcon, USDCIcon: () => USDCIcon, UnknownLanguageIcon: () => UnknownLanguageIcon, UploadVectorResourceIcon: () => UploadVectorResourceIcon, VideoPlayer: () => video_player_default, WebSearchDisabledIcon: () => WebSearchDisabledIcon, WebSearchIcon: () => WebSearchIcon, YouTubeEmbed: () => youtube_embed_default, buttonVariants: () => buttonVariants, fileIconMap: () => fileIconMap, navigationMenuTriggerStyle: () => navigationMenuTriggerStyle, toast: () => import_sonner2.toast, toggleVariants: () => toggleVariants, useFormField: () => useFormField }); module.exports = __toCommonJS(index_next_exports); // primitives/accordion.tsx var AccordionPrimitive = __toESM(require("@radix-ui/react-accordion")); var import_lucide_react = require("lucide-react"); // src/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)); } __name(cn, "cn"); // primitives/accordion.tsx var import_jsx_runtime = require("react/jsx-runtime"); var Accordion = AccordionPrimitive.Root; var AccordionItem = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionPrimitive.Item, { className: cn("", className), ref, ...props }), "AccordionItem"); AccordionItem.displayName = "AccordionItem"; var AccordionTrigger = /* @__PURE__ */ __name(({ className, children, hideArrow = false, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)( AccordionPrimitive.Trigger, { className: cn( "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", className ), ref, ...props, children: [ children, hideArrow ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_lucide_react.ChevronDown, { className: "h-4 w-4 shrink-0 transition-transform duration-200" }) ] } ) }), "AccordionTrigger"); AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; var AccordionContent = /* @__PURE__ */ __name(({ className, children, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)( AccordionPrimitive.Content, { className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down w-full overflow-hidden text-sm transition-all", ref, ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: cn("pt-0 pb-4", className), children }) } ), "AccordionContent"); AccordionContent.displayName = AccordionPrimitive.Content.displayName; // primitives/alert-dialog.tsx var AlertDialogPrimitive = __toESM(require("@radix-ui/react-alert-dialog")); // primitives/button.tsx var import_react_slot = require("@radix-ui/react-slot"); var import_class_variance_authority = require("class-variance-authority"); var import_lucide_react2 = require("lucide-react"); var React = __toESM(require("react")); var import_jsx_runtime2 = require("react/jsx-runtime"); var buttonVariants = (0, import_class_variance_authority.cva)( "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md 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 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", { variants: { variant: { default: "bg-primary text-primary-foreground shadow hover:bg-primary/90", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", ghost: "hover:bg-accent hover:text-accent-foreground", link: "text-primary underline-offset-4 hover:underline", // Keep the additional Hanzo variants for backward compatibility primary: "bg-primary text-primary-foreground shadow hover:bg-primary/90", linkFG: "text-primary underline-offset-4 hover:underline", linkMuted: "text-muted-foreground underline-offset-4 hover:underline hover:text-foreground" }, size: { default: "h-9 px-4 py-2", sm: "h-8 rounded-md px-3 text-xs", lg: "h-10 rounded-md px-8", icon: "h-9 w-9" } }, defaultVariants: { variant: "default", size: "default" } } ); var Button = React.forwardRef( ({ className, variant, size: size2, asChild = false, isLoading = false, children, ...props }, ref) => { const Comp = asChild ? import_react_slot.Slot : "button"; return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)( Comp, { className: cn(buttonVariants({ variant, size: size2, className })), ref, ...props, children: [ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)( import_lucide_react2.Loader2, { className: cn("h-4 w-4 animate-spin", size2 !== "icon" && "mr-2") } ) : null, isLoading && size2 === "icon" ? null : children ] } ); } ); Button.displayName = "Button"; var button_default = Button; // primitives/alert-dialog.tsx var import_jsx_runtime3 = require("react/jsx-runtime"); var AlertDialog = AlertDialogPrimitive.Root; var AlertDialogTrigger = AlertDialogPrimitive.Trigger; var AlertDialogPortal = AlertDialogPrimitive.Portal; var AlertDialogOverlay = /* @__PURE__ */ __name(({ className, children, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Overlay, { className: cn( "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 backdrop-blur-sm", "bg-bg-dark/90", className ), ...props, ref } ), "AlertDialogOverlay"); AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName; var AlertDialogContent = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(AlertDialogPortal, { children: [ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(AlertDialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Content, { className: cn( "bg-bg-default 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 border-divider fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className ), ref, ...props } ) ] }), "AlertDialogContent"); AlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName; var AlertDialogHeader = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( "div", { className: cn( "flex flex-col space-y-2 text-center sm:text-left", className ), ...props } ), "AlertDialogHeader"); AlertDialogHeader.displayName = "AlertDialogHeader"; var AlertDialogFooter = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: cn("flex", className), ...props }), "AlertDialogFooter"); AlertDialogFooter.displayName = "AlertDialogFooter"; var AlertDialogTitle = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Title, { className: cn("text-lg font-semibold", className), ref, ...props } ), "AlertDialogTitle"); AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName; var AlertDialogDescription = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Description, { className: cn("text-text-secondary text-sm", className), ref, ...props } ), "AlertDialogDescription"); AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName; var AlertDialogAction = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Action, { className: cn( buttonVariants({ variant: "default", size: "sm" }), className ), ref, ...props } ), "AlertDialogAction"); AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName; var AlertDialogCancel = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)( AlertDialogPrimitive.Cancel, { className: cn( buttonVariants({ variant: "outline", size: "sm" }), className ), ref, ...props } ), "AlertDialogCancel"); AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName; // primitives/alert.tsx var import_class_variance_authority2 = require("class-variance-authority"); var import_jsx_runtime4 = require("react/jsx-runtime"); var alertVariants = (0, import_class_variance_authority2.cva)( "[&>svg]:text-text-default relative w-full rounded-lg border p-4 [&>svg]:absolute [&>svg]:top-4 [&>svg]:left-4 [&>svg+div]:translate-y-[-3px] [&>svg~*]:pl-7", { variants: { variant: { default: "bg-bg-tertiary text-text-default", info: "text-text-secondary [&>svg]:text-text-secondary bg-gray-250 border-gray-100 border-gray-200", destructive: "border-[#4d0408] bg-[#2d0607] text-[#ff9ea1] [&>svg]:text-[#ff9ea1]", warning: "border-yellow-800 bg-yellow-900 text-yellow-400 [&>svg]:text-yellow-400", success: "border-green-800 bg-green-900 text-green-400 [&>svg]:text-green-400", download: "border-gray-800 bg-gray-900 text-cyan-400 [&>svg]:text-cyan-400" } }, defaultVariants: { variant: "default" } } ); var Alert = /* @__PURE__ */ __name(({ className, variant, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( "div", { className: cn(alertVariants({ variant }), className), ref, role: "alert", ...props } ), "Alert"); Alert.displayName = "Alert"; var AlertTitle = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( "h5", { className: cn("mb-1 leading-none font-medium tracking-tight", className), ref, ...props } ), "AlertTitle"); AlertTitle.displayName = "AlertTitle"; var AlertDescription = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)( "div", { className: cn("text-sm [&_p]:leading-relaxed", className), ref, ...props } ), "AlertDescription"); AlertDescription.displayName = "AlertDescription"; // primitives/avatar.tsx var AvatarPrimitive = __toESM(require("@radix-ui/react-avatar")); var import_jsx_runtime5 = require("react/jsx-runtime"); var Avatar = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( AvatarPrimitive.Root, { className: cn( "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className ), ref, ...props } ), "Avatar"); Avatar.displayName = AvatarPrimitive.Root.displayName; var AvatarImage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( AvatarPrimitive.Image, { className: cn("aspect-square h-full w-full", className), ref, ...props } ), "AvatarImage"); AvatarImage.displayName = AvatarPrimitive.Image.displayName; var AvatarFallback = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)( AvatarPrimitive.Fallback, { className: cn( "bg-muted flex h-full w-full items-center justify-center rounded-full", className ), ref, ...props } ), "AvatarFallback"); AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; // primitives/breadcrumb.tsx var import_react_slot2 = require("@radix-ui/react-slot"); var import_lucide_react3 = require("lucide-react"); var import_jsx_runtime6 = require("react/jsx-runtime"); var Breadcrumb = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("nav", { "aria-label": "breadcrumb", ref, ...props }), "Breadcrumb"); Breadcrumb.displayName = "Breadcrumb"; var BreadcrumbList = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( "ol", { className: cn( "text-text-secondary flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5", className ), ref, ...props } ), "BreadcrumbList"); BreadcrumbList.displayName = "BreadcrumbList"; var BreadcrumbItem = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( "li", { className: cn("inline-flex items-center gap-1.5", className), ref, ...props } ), "BreadcrumbItem"); BreadcrumbItem.displayName = "BreadcrumbItem"; var BreadcrumbLink = /* @__PURE__ */ __name(({ asChild, className, ref, ...props }) => { const Comp = asChild ? import_react_slot2.Slot : "a"; return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( Comp, { className: cn("hover:text-text-default transition-colors", className), ref, ...props } ); }, "BreadcrumbLink"); BreadcrumbLink.displayName = "BreadcrumbLink"; var BreadcrumbPage = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( "span", { "aria-current": "page", "aria-disabled": "true", className: cn("text-text-default font-normal", className), ref, role: "link", ...props } ), "BreadcrumbPage"); BreadcrumbPage.displayName = "BreadcrumbPage"; var BreadcrumbSeparator = /* @__PURE__ */ __name(({ children, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)( "li", { "aria-hidden": "true", className: cn("[&>svg]:h-4 [&>svg]:w-4", className), role: "presentation", ...props, children: children ?? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.ChevronRight, {}) } ), "BreadcrumbSeparator"); BreadcrumbSeparator.displayName = "BreadcrumbSeparator"; var BreadcrumbEllipsis = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)( "span", { "aria-hidden": "true", className: cn("flex h-9 w-9 items-center justify-center", className), role: "presentation", ...props, children: [ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_lucide_react3.MoreHorizontal, { className: "h-4 w-4" }), /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "sr-only", children: "More" }) ] } ), "BreadcrumbEllipsis"); BreadcrumbEllipsis.displayName = "BreadcrumbElipssis"; // primitives/card.tsx var import_jsx_runtime7 = require("react/jsx-runtime"); var Card = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "div", { className: cn( "bg-card text-card-foreground rounded-lg border shadow-xs", className ), ref, ...props } ), "Card"); Card.displayName = "Card"; var CardHeader = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "div", { className: cn("flex flex-col space-y-1.5 p-6", className), ref, ...props } ), "CardHeader"); CardHeader.displayName = "CardHeader"; var CardTitle = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "h3", { className: cn( "text-2xl leading-none font-semibold tracking-tight", className ), ref, ...props } ), "CardTitle"); CardTitle.displayName = "CardTitle"; var CardDescription = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "p", { className: cn("text-text-secondary text-sm", className), ref, ...props } ), "CardDescription"); CardDescription.displayName = "CardDescription"; var CardContent = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: cn("p-6 pt-0", className), ref, ...props }), "CardContent"); CardContent.displayName = "CardContent"; var CardFooter = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)( "div", { className: cn("flex items-center p-6 pt-0", className), ref, ...props } ), "CardFooter"); CardFooter.displayName = "CardFooter"; // primitives/carousel.tsx var React2 = __toESM(require("react")); var import_embla_carousel_react = __toESM(require("embla-carousel-react")); var import_lucide_react4 = require("lucide-react"); // util/copy-to-clipboard.ts async function copyToClipboard(text) { try { await navigator.clipboard.writeText(text); } catch { const textarea = document.createElement("textarea"); textarea.style.position = "fixed"; textarea.style.top = "-9999px"; textarea.style.left = "-9999px"; textarea.innerText = text; document.body.appendChild(textarea); textarea.focus(); textarea.select(); document.execCommand("copy"); textarea.remove(); } } __name(copyToClipboard, "copyToClipboard"); // util/spread-to-transform.ts function spreadToTransform(t) { let transformStrings = []; const scaleVal = "scale" in t ? t.scale : void 0; if (scaleVal) { if (typeof scaleVal === "number") { transformStrings.push(`scale(${scaleVal})`); } else if (Array.isArray(scaleVal) && scaleVal.length == 2 && typeof scaleVal[0] === "number") { transformStrings.push(`scale(${scaleVal[0]}, ${scaleVal[1]})`); } else { throw new Error("parsing MediaTransform: Unrecognized value for 'scale'!"); } } return transformStrings.length > 0 ? { transform: transformStrings.join(" ") } : {}; } __name(spreadToTransform, "spreadToTransform"); var spread_to_transform_default = spreadToTransform; // util/index.ts function constrain(value, minOrConstrainTo, max) { if (typeof value === "number" && typeof minOrConstrainTo === "number" && typeof max === "number") { return Math.min(Math.max(value, minOrConstrainTo), max); } if (typeof value === "object" && typeof minOrConstrainTo === "object") { const dim = value; const constrainTo = minOrConstrainTo; const aspectRatio = dim.w / dim.h; const constrainAspectRatio = constrainTo.w / constrainTo.h; if (aspectRatio > constrainAspectRatio) { return { w: constrainTo.w, h: constrainTo.w / aspectRatio }; } else { return { w: constrainTo.h * aspectRatio, h: constrainTo.h }; } } throw new Error("Invalid parameters for constrain function"); } __name(constrain, "constrain"); // primitives/carousel.tsx var import_jsx_runtime8 = require("react/jsx-runtime"); var CarouselContext = React2.createContext(null); var useCarousel = /* @__PURE__ */ __name(() => { const service = React2.useContext(CarouselContext); if (!service) { throw new Error("useCarousel must be used within a <Carousel />"); } return service; }, "useCarousel"); var Carousel = React2.forwardRef( ({ orientation = "horizontal", options, setApi, plugins, className, children, onCarouselSelect, ...props }, ref) => { const [carouselRef, api] = (0, import_embla_carousel_react.default)({ ...options, axis: orientation === "horizontal" ? "x" : "y" }, plugins); const [canScrollPrev, setCanScrollPrev] = React2.useState(false); const [canScrollNext, setCanScrollNext] = React2.useState(false); const onSelect = React2.useCallback((api2) => { if (!api2) { return; } setCanScrollPrev(api2.canScrollPrev()); setCanScrollNext(api2.canScrollNext()); if (onCarouselSelect) { onCarouselSelect(api2); } }, []); const scrollPrev = React2.useCallback(() => { api?.scrollPrev(); }, [api]); const scrollNext = React2.useCallback(() => { api?.scrollNext(); }, [api]); const handleKeyDown = React2.useCallback((event) => { if (event.key === "ArrowLeft") { event.preventDefault(); scrollPrev(); } else if (event.key === "ArrowRight") { event.preventDefault(); scrollNext(); } }, [scrollPrev, scrollNext]); React2.useEffect(() => { if (!api || !setApi) { return; } setApi(api); }, [api, setApi]); React2.useEffect(() => { if (!api) { return; } onSelect(api); api.on("reInit", onSelect); api.on("select", onSelect); return () => { api?.off("select", onSelect); }; }, [api, onSelect]); return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( CarouselContext.Provider, { value: { carouselRef, api, options, orientation: orientation || (options?.axis === "y" ? "vertical" : "horizontal"), scrollPrev, scrollNext, canScrollPrev, canScrollNext }, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( "div", { ref, onKeyDownCapture: handleKeyDown, className: cn("relative", className), role: "region", "aria-roledescription": "carousel", "data-vaul-no-drag": true, ...props, children } ) } ); } ); Carousel.displayName = "Carousel"; var CarouselContent = React2.forwardRef(({ className, ...props }, ref) => { const { carouselRef, orientation } = useCarousel(); return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { ref: carouselRef, className: "overflow-hidden", "data-vaul-no-drag": true, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( "div", { ref, className: cn( "flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", className ), ...props } ) }); }); CarouselContent.displayName = "CarouselContent"; var CarouselItem = React2.forwardRef(({ className, ...props }, ref) => { const { orientation } = useCarousel(); return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)( "div", { ref, role: "group", "aria-roledescription": "slide", "data-vaul-no-drag": true, className: cn( "min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "pl-4" : "pt-4", className ), ...props } ); }); CarouselItem.displayName = "CarouselItem"; var CarouselPrevious = React2.forwardRef(({ className, variant = "ghost", size: size2 = "icon", ...props }, ref) => { const { orientation, scrollPrev, canScrollPrev } = useCarousel(); return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)( button_default, { ref, variant, size: size2, className: cn( "absolute h-8 w-8 rounded-full", orientation === "horizontal" ? "-left-12 top-1/2 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className ), disabled: !canScrollPrev, onClick: scrollPrev, ...props, children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react4.ArrowLeft, { className: "h-4 w-4" }), /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Previous slide" }) ] } ); }); CarouselPrevious.displayName = "CarouselPrevious"; var CarouselNext = React2.forwardRef(({ className, variant = "ghost", size: size2 = "icon", ...props }, ref) => { const { orientation, scrollNext, canScrollNext } = useCarousel(); return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)( button_default, { ref, variant, size: size2, className: cn( "absolute h-8 w-8 rounded-full", orientation === "horizontal" ? "-right-12 top-1/2 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className ), disabled: !canScrollNext, onClick: scrollNext, ...props, children: [ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_lucide_react4.ArrowRight, { className: "h-4 w-4" }), /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "sr-only", children: "Next slide" }) ] } ); }); CarouselNext.displayName = "CarouselNext"; // primitives/command.tsx var import_cmdk = require("cmdk"); var import_lucide_react6 = require("lucide-react"); // primitives/dialog.tsx var DialogPrimitive = __toESM(require("@radix-ui/react-dialog")); var import_lucide_react5 = require("lucide-react"); var import_jsx_runtime9 = require("react/jsx-runtime"); var Dialog = DialogPrimitive.Root; var DialogTrigger = DialogPrimitive.Trigger; var DialogPortal = DialogPrimitive.Portal; var DialogOverlay = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( DialogPrimitive.Overlay, { className: cn( "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50", "bg-bg-dark/90", className ), ...props } ), "DialogOverlay"); DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; var DialogContent = /* @__PURE__ */ __name(({ className, children, showCloseButton = false, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(DialogPortal, { children: [ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(DialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)( DialogPrimitive.Content, { className: cn( "bg-bg-default 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 border-divider fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:rounded-lg md:w-full", className ), ...props, children: [ children, /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)( DialogPrimitive.Close, { className: cn( "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-text-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", !showCloseButton && "hidden" ), children: [ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_lucide_react5.X, { className: "h-4 w-4" }), /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "sr-only", children: "Close" }) ] } ) ] } ) ] }), "DialogContent"); DialogContent.displayName = DialogPrimitive.Content.displayName; var DialogHeader = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( "div", { className: cn( "flex flex-col space-y-1.5 text-center sm:text-left", className ), ...props } ), "DialogHeader"); DialogHeader.displayName = "DialogHeader"; var DialogFooter = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( "div", { className: cn( "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className ), ...props } ), "DialogFooter"); DialogFooter.displayName = "DialogFooter"; var DialogTitle = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( DialogPrimitive.Title, { className: cn( "text-lg leading-none font-semibold tracking-tight", className ), ...props } ), "DialogTitle"); DialogTitle.displayName = DialogPrimitive.Title.displayName; var DialogDescription = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)( DialogPrimitive.Description, { className: cn("text-text-secondary text-sm", className), ...props } ), "DialogDescription"); DialogDescription.displayName = DialogPrimitive.Description.displayName; // primitives/command.tsx var import_jsx_runtime10 = require("react/jsx-runtime"); var Command = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command, { className: cn( "bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md [&_[cmdk-list]]:scroll-pt-0 [&_[cmdk-list]]:scroll-auto", className ), loop: true, ...props } ), "Command"); Command.displayName = import_cmdk.Command.displayName; var CommandDialog = /* @__PURE__ */ __name(({ children, ...props }) => { return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Dialog, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Command, { className: "[&_[cmdk-group-heading]]:text-text-secondary [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) }); }, "CommandDialog"); var CommandInput = /* @__PURE__ */ __name(({ className, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_lucide_react6.Search, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }), /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command.Input, { className: cn( "placeholder:!text-text-placeholder flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className ), ref, ...props } ) ] }), "CommandInput"); CommandInput.displayName = import_cmdk.Command.Input.displayName; var CommandList = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command.List, { className: cn( "max-h-[300px] scroll-pt-0 overflow-x-hidden overflow-y-auto scroll-auto", className ), ...props } ), "CommandList"); CommandList.displayName = import_cmdk.Command.List.displayName; var CommandEmpty = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_cmdk.Command.Empty, { className: "py-6 text-center text-sm", ...props }), "CommandEmpty"); CommandEmpty.displayName = import_cmdk.Command.Empty.displayName; var CommandGroup = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command.Group, { className: cn( "text-text-default [&_[cmdk-group-heading]]:text-text-default overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className ), ...props } ), "CommandGroup"); CommandGroup.displayName = import_cmdk.Command.Group.displayName; var CommandSeparator = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command.Separator, { className: cn("bg-divider -mx-1 h-px", className), ...props } ), "CommandSeparator"); CommandSeparator.displayName = import_cmdk.Command.Separator.displayName; var CommandItem = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( import_cmdk.Command.Item, { className: cn( "hover:bg-bg-secondary data-[selected=true]:text-text-default data-[selected='true']:bg-bg-secondary relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50", className ), ...props } ), "CommandItem"); CommandItem.displayName = import_cmdk.Command.Item.displayName; var CommandShortcut = /* @__PURE__ */ __name(({ className, ...props }) => { return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)( "span", { className: cn( "text-text-secondary ml-auto text-xs tracking-widest", className ), ...props } ); }, "CommandShortcut"); CommandShortcut.displayName = "CommandShortcut"; // primitives/collapsible.tsx var CollapsiblePrimitive = __toESM(require("@radix-ui/react-collapsible")); var Collapsible = CollapsiblePrimitive.Root; var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger; var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent; // primitives/context-menu.tsx var ContextMenuPrimitive = __toESM(require("@radix-ui/react-context-menu")); var import_lucide_react7 = require("lucide-react"); var import_jsx_runtime11 = require("react/jsx-runtime"); var ContextMenu = ContextMenuPrimitive.Root; var ContextMenuTrigger = ContextMenuPrimitive.Trigger; var ContextMenuGroup = ContextMenuPrimitive.Group; var ContextMenuPortal = ContextMenuPrimitive.Portal; var ContextMenuSub = ContextMenuPrimitive.Sub; var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup; var ContextMenuSubTrigger = /* @__PURE__ */ __name(({ className, inset, children, ref, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)( ContextMenuPrimitive.SubTrigger, { className: cn( "focus:bg-accent data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none focus:text-white", inset && "pl-8", className ), ref, ...props, children: [ children, /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_lucide_react7.ChevronRight, { className: "ml-auto h-4 w-4" }) ] } ), "ContextMenuSubTrigger"); ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName; var ContextMenuSubContent = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( ContextMenuPrimitive.SubContent, { className: cn( "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 z-50 min-w-[8rem] overflow-hidden rounded-md border bg-gray-300 p-1 text-white shadow-md", className ), ...props } ), "ContextMenuSubContent"); ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName; var ContextMenuContent = /* @__PURE__ */ __name(({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( ContextMenuPrimitive.Content, { className: cn( "animate-in fade-in-80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border border-gray-600 bg-gray-300 p-1 text-gray-50 shadow-md", className ), ...props } ) }), "ContextMenuContent"); ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName; var ContextMenuItem = /* @__PURE__ */ __name(({ className, inset, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)( ContextMenuPrimitive.Item, { className: cn( "relative flex cursor-default items-center rounded-xs px-2 py-1.5 text-sm outline-hidden select-none focus:bg-gray-200 focus:text-white data-[disabled]:pointer-events-none data-[disabled]:opacity-50", inset && "pl-8", className ), ...props } ), "ContextMenuItem"); ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName; var ContextMenuCheckboxItem = /* @__PUR