@melony/react 0.1.15 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/group-events-to-messages.ts","../src/providers/melony-provider.tsx","../src/providers/auth-provider.tsx","../src/providers/thread-provider.tsx","../src/components/theme-provider.tsx","../src/hooks/use-melony.ts","../src/hooks/use-auth.ts","../src/hooks/use-threads.ts","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/textarea.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/composer.tsx","../src/components/ui/card.tsx","../src/components/elements/Card.tsx","../src/components/elements/Row.tsx","../src/components/elements/Col.tsx","../src/components/elements/Box.tsx","../src/components/elements/Spacer.tsx","../src/components/ui/separator.tsx","../src/components/elements/Divider.tsx","../src/components/elements/List.tsx","../src/components/elements/ListItem.tsx","../src/components/ui/dialog.tsx","../src/components/elements/Image.tsx","../src/components/elements/Icon.tsx","../src/components/ui/badge.tsx","../src/components/elements/Badge.tsx","../src/components/elements/Chart.tsx","../src/components/elements/Text.tsx","../src/components/elements/Heading.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/field.tsx","../src/components/elements/Input.tsx","../src/components/elements/Textarea.tsx","../src/components/ui/select.tsx","../src/components/elements/Select.tsx","../src/components/elements/Label.tsx","../src/components/elements/Checkbox.tsx","../src/components/elements/RadioGroup.tsx","../src/components/elements/Button.tsx","../src/components/elements/Form.tsx","../src/components/starter-prompts.tsx","../src/components/ui-renderer.tsx","../src/components/message-content.tsx","../src/components/message.tsx","../src/components/loading-indicator.tsx","../src/components/error-display.tsx","../src/components/message-list.tsx","../src/components/thread.tsx","../src/components/chat-header.tsx","../src/components/thread-list.tsx","../src/components/chat-popup.tsx","../src/components/chat-sidebar.tsx","../src/components/chat-full.tsx","../src/components/ui/popover.tsx","../src/components/thread-popover.tsx","../src/components/create-thread-button.tsx","../src/components/ui/alert-dialog.tsx","../src/components/account-dialog.tsx","../src/components/theme-toggle.tsx"],"names":["createContext","useState","useEffect","useCallback","useMemo","jsx","generateId","error","useContext","twMerge","clsx","cva","ButtonPrimitive","MenuPrimitive","jsxs","IconCheck","React","IconChevronDown","IconLoader2","IconArrowUp","Card","SeparatorPrimitive","DialogPrimitive","ICONS","useRender","mergeProps","Badge","InputPrimitive","Input","Textarea","SelectPrimitive","IconSelector","IconChevronUp","Select","Label","Button","Fragment","useRef","IconPlus","IconMessage","IconTrash","IconArrowLeft","IconHistory","IconX","IconChevronLeft","IconChevronRight","React11","createPortal","React12","useHotkeys","React13","AlertDialogPrimitive","React14","IconUser","IconLogout","IconBrandGoogle","IconDeviceDesktop","IconMoon","IconSun"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Event } from \"melony\";\nimport { Message } from \"@/types\";\n\nexport function groupEventsToMessages(events: Event[]): Message[] {\n if (events.length === 0) return [];\n\n const messages: Message[] = [];\n let currentMessage: Message | null = null;\n\n for (const event of events) {\n const role = event.role || \"assistant\";\n const runId = event.runId;\n\n // Start a new message if:\n // 1. No current message\n // 2. Role changed\n // 3. runId changed (and both have runIds)\n if (\n !currentMessage ||\n currentMessage.role !== role ||\n (runId && currentMessage.runId && runId !== currentMessage.runId)\n ) {\n currentMessage = {\n role: role,\n content: [event],\n runId,\n };\n messages.push(currentMessage);\n } else {\n currentMessage.content.push(event);\n // If the current message didn't have a runId but this event does, update it\n if (!currentMessage.runId && runId) {\n currentMessage.runId = runId;\n }\n }\n }\n\n return messages;\n}\n","import React, {\n createContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n ReactNode,\n} from \"react\";\nimport { MelonyClient, ClientState } from \"melony/client\";\nimport { Event } from \"melony\";\nimport { Message } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/group-events-to-messages\";\n\nexport interface MelonyContextValue extends ClientState {\n messages: Message[];\n sendEvent: (\n event: Event,\n options?: { runId?: string; state?: Record<string, any> }\n ) => Promise<void>;\n reset: (events?: Event[]) => void;\n client: MelonyClient;\n}\n\nexport const MelonyContext = createContext<MelonyContextValue | undefined>(\n undefined\n);\n\nexport interface MelonyClientProviderProps {\n children: ReactNode;\n client: MelonyClient;\n initialEvents?: Event[];\n}\n\nexport const MelonyClientProvider: React.FC<MelonyClientProviderProps> = ({\n children,\n client,\n initialEvents,\n}) => {\n const [state, setState] = useState<ClientState>(client.getState());\n\n useEffect(() => {\n if (\n initialEvents &&\n initialEvents.length > 0 &&\n client.getState().events.length === 0\n ) {\n client.reset(initialEvents);\n }\n }, [client, initialEvents]);\n\n useEffect(() => {\n setState(client.getState());\n const unsubscribe = client.subscribe(setState);\n return () => {\n unsubscribe();\n };\n }, [client]);\n\n const sendEvent = useCallback(\n async (\n event: Event,\n options?: { runId?: string; state?: Record<string, any> }\n ) => {\n const generator = client.sendEvent(event, options);\n for await (const _ of generator) {\n // State updates automatically via subscription\n }\n },\n [client]\n );\n\n const reset = useCallback(\n (events?: Event[]) => client.reset(events),\n [client]\n );\n\n const value = useMemo(\n () => ({\n ...state,\n messages: groupEventsToMessages(state.events),\n sendEvent,\n reset,\n client,\n }),\n [state, sendEvent, reset, client]\n );\n\n return (\n <MelonyContext.Provider value={value}>{children}</MelonyContext.Provider>\n );\n};\n","import React, {\n createContext,\n useState,\n useCallback,\n ReactNode,\n useEffect,\n} from \"react\";\nimport { User, AuthService } from \"@/types\";\n\nexport interface AuthContextValue {\n user: User | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n login: () => void;\n logout: () => void;\n getToken: () => string | null;\n}\n\nexport const AuthContext = createContext<AuthContextValue | undefined>(\n undefined\n);\n\nexport interface AuthProviderProps {\n children: ReactNode;\n service: AuthService;\n}\n\nexport const AuthProvider: React.FC<AuthProviderProps> = ({\n children,\n service,\n}) => {\n const [user, setUser] = useState<User | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const fetchMe = useCallback(async () => {\n setIsLoading(true);\n try {\n const userData = await service.getMe();\n setUser(userData);\n } catch (error) {\n console.error(\"Failed to fetch user:\", error);\n setUser(null);\n } finally {\n setIsLoading(false);\n }\n }, [service]);\n\n useEffect(() => {\n fetchMe();\n }, [fetchMe]);\n\n const login = useCallback(() => {\n service.login();\n }, [service]);\n\n const logout = useCallback(async () => {\n try {\n await service.logout();\n setUser(null);\n } catch (error) {\n console.error(\"Failed to logout:\", error);\n }\n }, [service]);\n\n const value = {\n user,\n isAuthenticated: !!user,\n isLoading,\n login,\n logout,\n getToken: service.getToken,\n };\n\n if (isLoading) {\n return (\n <div\n style={{\n height: \"100vh\",\n width: \"100vw\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"0.875rem\",\n letterSpacing: \"0.01em\",\n }}\n className=\"text-muted-foreground animate-pulse\"\n >\n Loading...\n </div>\n );\n }\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n};\n","import React, {\n createContext,\n useState,\n useCallback,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport { Event } from \"melony\";\nimport { generateId } from \"melony/client\";\nimport { ThreadData, ThreadService } from \"@/types\";\n\nexport interface ThreadContextValue {\n threads: ThreadData[];\n activeThreadId: string | null;\n isLoading: boolean;\n error: Error | null;\n selectThread: (threadId: string) => void;\n createThread: () => Promise<string>;\n deleteThread: (threadId: string) => Promise<void>;\n refreshThreads: () => Promise<void>;\n threadEvents: Event[];\n isLoadingEvents: boolean;\n}\n\nexport const ThreadContext = createContext<ThreadContextValue | undefined>(\n undefined\n);\n\nexport interface ThreadProviderProps {\n children: ReactNode;\n service: ThreadService;\n initialThreadId?: string;\n}\n\nexport const ThreadProvider: React.FC<ThreadProviderProps> = ({\n children,\n service,\n initialThreadId: providedInitialThreadId,\n}) => {\n const defaultInitialThreadId = useMemo(() => generateId(), []);\n const initialThreadId = providedInitialThreadId || defaultInitialThreadId;\n\n const [threads, setThreads] = useState<ThreadData[]>([]);\n const [activeThreadId, setActiveThreadId] = useState<string | null>(\n initialThreadId\n );\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [threadEvents, setThreadEvents] = useState<Event[]>([]);\n const [isLoadingEvents, setIsLoadingEvents] = useState(false);\n\n const fetchThreads = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const processedThreads = await service.getThreads();\n setThreads(processedThreads);\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error(\"Failed to fetch threads\");\n setError(error);\n console.error(\"Failed to fetch threads:\", error);\n } finally {\n setIsLoading(false);\n }\n }, [service]);\n\n useEffect(() => {\n fetchThreads();\n }, [fetchThreads]);\n\n const selectThread = useCallback((threadId: string) => {\n setActiveThreadId(threadId);\n }, []);\n\n const createThread = useCallback(async (): Promise<string> => {\n const newId = service.createThread\n ? await service.createThread()\n : generateId();\n const newThread: ThreadData = {\n id: newId,\n updatedAt: new Date(),\n };\n setThreads((prev) => [newThread, ...prev]);\n setActiveThreadId(newId);\n return newId;\n }, [service]);\n\n const deleteThread = useCallback(\n async (threadId: string) => {\n try {\n await service.deleteThread(threadId);\n\n setThreads((prev) => {\n const remainingThreads = prev.filter((t) => t.id !== threadId);\n setActiveThreadId((current) => {\n if (current === threadId) {\n return remainingThreads.length > 0\n ? remainingThreads[0].id\n : null;\n }\n return current;\n });\n return remainingThreads;\n });\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error(\"Failed to delete thread\");\n setError(error);\n throw error;\n }\n },\n [service]\n );\n\n const refreshThreads = useCallback(async () => {\n await fetchThreads();\n }, [fetchThreads]);\n\n useEffect(() => {\n if (!activeThreadId) {\n setThreadEvents([]);\n setIsLoadingEvents(false);\n return;\n }\n\n let cancelled = false;\n const fetchEvents = async () => {\n setIsLoadingEvents(true);\n try {\n const events = await service.getEvents(activeThreadId);\n if (!cancelled) {\n setThreadEvents(events);\n }\n } catch (err) {\n if (!cancelled) {\n console.error(\"Failed to fetch events:\", err);\n setThreadEvents([]);\n }\n } finally {\n if (!cancelled) {\n setIsLoadingEvents(false);\n }\n }\n };\n\n fetchEvents();\n return () => {\n cancelled = true;\n };\n }, [activeThreadId, service]);\n\n const value = useMemo(\n () => ({\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n isLoadingEvents,\n }),\n [\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n isLoadingEvents,\n ]\n );\n\n return (\n <ThreadContext.Provider value={value}>{children}</ThreadContext.Provider>\n );\n};\n","import { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () => mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n \n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n\n","import { useContext, useEffect } from \"react\";\nimport { MelonyContext, MelonyContextValue } from \"@/providers/melony-provider\";\nimport { Event } from \"melony\";\n\nexport interface UseMelonyOptions {\n initialEvents?: Event[];\n}\n\nexport const useMelony = (options?: UseMelonyOptions): MelonyContextValue => {\n const context = useContext(MelonyContext);\n if (context === undefined) {\n throw new Error(\"useMelony must be used within a MelonyClientProvider\");\n }\n\n const { client, reset } = context;\n const { initialEvents } = options || {};\n\n useEffect(() => {\n if (\n initialEvents &&\n initialEvents.length > 0 &&\n client.getState().events.length === 0\n ) {\n reset(initialEvents);\n }\n }, [client, initialEvents, reset]);\n\n return context;\n};\n","import { useContext } from \"react\";\nimport { AuthContext, AuthContextValue } from \"@/providers/auth-provider\";\n\nexport const useAuth = (): AuthContextValue => {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n};\n\n","import { useContext } from \"react\";\nimport { ThreadContext, ThreadContextValue } from \"@/providers/thread-provider\";\n\nexport const useThreads = (): ThreadContextValue => {\n const context = useContext(ThreadContext);\n if (context === undefined) {\n throw new Error(\"useThreads must be used within a ThreadProvider\");\n }\n return context;\n};\n\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline: \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@/lib/utils\"\nimport { IconChevronRight, IconCheck } from \"@tabler/icons-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\", className )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\", className)}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <IconCheck\n />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <IconCheck\n />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import React from \"react\";\nimport { Button } from \"./ui/button\";\nimport { Textarea } from \"./ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport {\n IconArrowUp,\n IconAdjustmentsHorizontal,\n IconChevronDown,\n IconLoader2,\n} from \"@tabler/icons-react\";\nimport { ComposerOption, ComposerOptionGroup } from \"../types\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n placeholder?: string;\n isLoading?: boolean;\n className?: string;\n options?: ComposerOptionGroup[];\n autoFocus?: boolean;\n defaultSelectedIds?: string[];\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n isLoading,\n className,\n options = [],\n autoFocus = false,\n defaultSelectedIds = [],\n}: ComposerProps) {\n const [selectedOptions, setSelectedOptions] = React.useState<Set<string>>(\n () => new Set(defaultSelectedIds)\n );\n\n const toggleOption = (\n id: string,\n groupOptions?: ComposerOption[],\n type: \"single\" | \"multiple\" = \"multiple\"\n ) => {\n const next = new Set(selectedOptions);\n if (type === \"single\") {\n const isAlreadySelected = next.has(id);\n // Remove all other options from this group\n if (groupOptions) {\n groupOptions.forEach((o) => next.delete(o.id));\n }\n\n if (!isAlreadySelected) {\n next.add(id);\n }\n } else {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n setSelectedOptions(next);\n };\n\n const handleInternalSubmit = () => {\n const state: Record<string, any> = {};\n\n // Handle grouped options\n options.forEach((group) => {\n const selectedInGroup = group.options.filter((o) =>\n selectedOptions.has(o.id)\n );\n\n if (selectedInGroup.length > 0) {\n if (group.type === \"single\") {\n state[group.id] = selectedInGroup[0].value;\n } else {\n state[group.id] = selectedInGroup.map((o) => ({\n id: o.id,\n value: o.value,\n }));\n }\n }\n });\n\n onSubmit(state);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleInternalSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-input border-[1.5px] rounded-3xl bg-background shadow-sm focus-within:border-ring transition-all p-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center px-1\">\n <div className=\"flex items-center gap-1\">\n {/* Grouped options dropdowns */}\n {options.map((group) => {\n const selectedInGroup = group.options.filter((o) =>\n selectedOptions.has(o.id)\n );\n const label =\n selectedInGroup.length === 0\n ? group.label\n : selectedInGroup.length === 1\n ? selectedInGroup[0].label\n : `${group.label} (${selectedInGroup.length})`;\n\n const isSingle = group.type === \"single\";\n\n return (\n <DropdownMenu key={group.id}>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n selectedInGroup.length > 0\n ? \"text-foreground bg-muted/50\"\n : \"text-muted-foreground\"\n )}\n >\n {label}\n <IconChevronDown className=\"h-3 w-3 opacity-50\" />\n </Button>\n }\n />\n <DropdownMenuContent align=\"start\" className=\"w-56\">\n <DropdownMenuGroup>\n <DropdownMenuLabel>{group.label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {group.options.map((option) => (\n <DropdownMenuCheckboxItem\n key={option.id}\n checked={selectedOptions.has(option.id)}\n onCheckedChange={() =>\n toggleOption(\n option.id,\n group.options,\n isSingle ? \"single\" : \"multiple\"\n )\n }\n onSelect={(e) => e.preventDefault()}\n >\n {option.label}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n })}\n </div>\n <Button\n type=\"submit\"\n disabled={(!value.trim() && !isLoading) || isLoading}\n size=\"icon-lg\"\n onClick={handleInternalSubmit}\n >\n {isLoading ? (\n <IconLoader2 className=\"h-5 w-5 animate-spin\" />\n ) : (\n <IconArrowUp className=\"h-5 w-5\" />\n )}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-2xl py-6 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import React from \"react\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { CardProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n className,\n style,\n}) => {\n return (\n <CardBase\n className={cn(\"min-w-96\", className)}\n style={style}\n >\n {(title || subtitle) && (\n <CardHeader className=\"pb-3\">\n {title && <CardTitle className=\"text-lg\">{title}</CardTitle>}\n {subtitle && <CardDescription>{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className=\"flex flex-col gap-4\">\n {children as React.ReactNode}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { RowProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Row: React.FC<RowProps> = ({\n children,\n gap = \"md\",\n align = \"start\",\n justify = \"start\",\n wrap = false,\n className,\n style,\n}) => {\n const gapClasses: Record<string, string> = {\n xs: \"gap-0\",\n sm: \"gap-1\",\n md: \"gap-2\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-row w-full\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-4\",\n alignClasses[align as keyof typeof alignClasses] || \"items-start\",\n justifyClasses[justify as keyof typeof justifyClasses] || \"justify-start\",\n wrap ? \"flex-wrap\" : \"flex-nowrap\",\n className\n )}\n style={style}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { ColProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Col: React.FC<ColProps> = ({\n children,\n gap = \"sm\",\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n flex = 1,\n width,\n height,\n padding,\n overflow,\n position = \"static\",\n className,\n style,\n}) => {\n const gapClasses: Record<string, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n // Automatically add scrollable className for auto/scroll overflow\n const overflowClasses = {\n auto: \"overflow-auto\",\n hidden: \"overflow-hidden\",\n scroll: \"overflow-scroll\",\n visible: \"overflow-visible\",\n };\n\n const positionClasses = {\n static: \"static\",\n relative: \"relative\",\n absolute: \"absolute\",\n fixed: \"fixed\",\n sticky: \"sticky\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-2\",\n alignClasses[align as keyof typeof alignClasses] || \"items-start\",\n justifyClasses[justify as keyof typeof justifyClasses] || \"justify-start\",\n wrap === \"wrap\" ? \"flex-wrap\" : \"flex-nowrap\",\n overflow && (overflowClasses[overflow as keyof typeof overflowClasses]),\n position && positionClasses[position as keyof typeof positionClasses],\n className\n )}\n style={{\n flex: flex,\n width: width,\n height: height,\n padding: padding,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { BoxProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Box: React.FC<BoxProps> = ({\n children,\n padding = \"md\",\n margin,\n background,\n border = false,\n borderRadius,\n width,\n height,\n overflow = \"visible\",\n className,\n style,\n}) => {\n const paddingClasses: Record<string, string> = {\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n };\n\n const overflowClasses = {\n auto: \"overflow-auto\",\n hidden: \"overflow-hidden\",\n scroll: \"overflow-scroll\",\n visible: \"overflow-visible\",\n };\n\n return (\n <div\n className={cn(\n paddingClasses[padding as keyof typeof paddingClasses] || \"p-4\",\n border && \"border rounded-md\",\n overflowClasses[overflow as keyof typeof overflowClasses],\n className\n )}\n style={{\n margin: margin,\n background: background ?? undefined,\n borderRadius: borderRadius,\n width: width,\n height: height,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { SpacerProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Spacer: React.FC<SpacerProps> = ({\n size = \"md\",\n direction = \"vertical\",\n className,\n style,\n}) => {\n const sizeClasses: Record<string, string> = {\n xs: \"p-0.5\",\n sm: \"p-1\",\n md: \"p-2\",\n lg: \"p-4\",\n xl: \"p-8\",\n };\n\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n sizeClasses[size as keyof typeof sizeClasses] || \"p-2\",\n className\n )}\n style={style}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import React from \"react\";\nimport { Separator } from \"../ui/separator\";\nimport { DividerProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n className,\n style,\n}) => {\n return (\n <Separator\n orientation={orientation as \"horizontal\" | \"vertical\"}\n className={cn(\"my-4\", className)}\n style={style}\n />\n );\n};\n","import React from \"react\";\nimport { ListProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const List: React.FC<ListProps> = ({ children, width, className, style }) => {\n return (\n <div\n className={cn(\"flex flex-col list-none p-0 m-0\", className)}\n style={{\n width: width,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { ListItemProps } from \"./component-types\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n orientation = \"horizontal\",\n gap = \"md\",\n align,\n justify = \"start\",\n onClickAction,\n width,\n padding = \"md\",\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const paddingClasses: Record<string, string> = {\n xs: \"px-1.5 py-1\",\n sm: \"px-2 py-1.5\",\n md: \"px-3 py-2\",\n lg: \"px-4 py-3\",\n xl: \"px-6 py-4\",\n };\n\n const isInteractive = !!onClickAction;\n \n const gapClasses: Record<string, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n };\n\n const resolvedAlign = align ?? (orientation === \"vertical\" ? \"start\" : \"center\");\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n const handleClick = () => {\n if (onClickAction) {\n sendEvent(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex rounded-md transition-colors\",\n orientation === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-3\",\n alignClasses[resolvedAlign as keyof typeof alignClasses],\n justifyClasses[justify as keyof typeof justifyClasses],\n paddingClasses[padding as keyof typeof paddingClasses] || \"px-3 py-2\",\n isInteractive ? \"cursor-pointer hover:bg-muted\" : \"cursor-default\",\n className\n )}\n style={{\n width: width,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return (\n <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n )\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return (\n <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n ...props\n}: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 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 sm:rounded-lg outline-none\",\n className\n )}\n {...props}\n />\n </DialogPortal>\n )\n}\n\nfunction DialogClose({\n className,\n ...props\n}: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n}\n\n","import React, { useState } from \"react\";\nimport { ImageProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"@/components/ui/dialog\";\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt,\n size = \"sm\",\n className,\n style,\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n const sizes = {\n sm: \"h-11\",\n md: \"h-22\",\n lg: \"h-44\",\n };\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center rounded-md border bg-muted text-muted-foreground\",\n sizes[size as keyof typeof sizes] || \"h-11 w-11\",\n className\n )}\n style={style}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n className={cn(\"relative overflow-hidden rounded-md border cursor-pointer\", className)}\n style={style}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block h-auto w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n sizes[size as keyof typeof sizes]\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center\">\n <DialogClose className=\"absolute -top-10 right-0 text-white hover:text-gray-300 transition-colors z-10 bg-black/50 rounded-full p-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </DialogClose>\n <img\n src={src}\n alt={alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[90vh] object-contain rounded-lg\"\n />\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport * as ICONS from \"@tabler/icons-react\";\nimport { IconProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size,\n color,\n className,\n style,\n}) => {\n const IconComponent = ICONS[name as keyof typeof ICONS];\n\n if (!IconComponent) return null;\n\n const sizeMap = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 28,\n xxl: 32,\n };\n\n const resolvedSize =\n typeof size === \"string\" && size in sizeMap\n ? sizeMap[size as keyof typeof sizeMap]\n : typeof size === \"number\"\n ? size\n : 20;\n\n return (\n <div\n className={cn(\"inline-flex items-center justify-center\", className)}\n style={style}\n >\n <IconComponent\n size={resolvedSize}\n color={color || \"currentColor\"}\n strokeWidth={1.5}\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\nimport { BadgeProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Badge: React.FC<BadgeProps> = ({\n label,\n variant = \"primary\",\n className,\n style,\n}) => {\n const variantMap: Record<string, \"default\" | \"secondary\" | \"destructive\" | \"outline\"> = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // Mapping success to default/primary\n warning: \"secondary\", // Mapping warning to secondary\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant as keyof typeof variantMap] || \"default\"}\n className={className}\n style={style}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { ChartProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Chart: React.FC<ChartProps> = ({\n data,\n chartType = \"bar\",\n size = \"md\",\n showValues = false,\n showGrid = false,\n showTooltips = true,\n className,\n style,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n // Ensure data is an array\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n // Calculate max value for scaling\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n \n const chartWidth =\n size === \"sm\" ? 300 : size === \"md\" ? 450 : size === \"lg\" ? 600 : 800;\n const chartHeight =\n size === \"sm\" ? 150 : size === \"md\" ? 250 : size === \"lg\" ? 350 : 450;\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing = data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth = (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg width={chartWidth} height={chartHeight + padding.bottom} className=\"overflow-visible\">\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x = padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() => showTooltips && setTooltip({ visible: true, x: x + actualBarWidth / 2, y: y - 5, label: item.label, value: item.value })}\n onMouseLeave={() => setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })}\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x: padding.left + (index / Math.max(data.length - 1, 1)) * (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item\n }));\n\n const pathData = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n\n return (\n <svg width={chartWidth} height={chartHeight + padding.bottom} className=\"overflow-visible\">\n {renderGrid()}\n <path d={pathData} fill=\"none\" stroke={getColor(0)} strokeWidth={3} className=\"transition-all\" />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() => showTooltips && setTooltip({ visible: true, x: point.x, y: point.y - 5, label: point.label, value: point.value })}\n onMouseLeave={() => setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })}\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className={cn(\"py-4 overflow-x-auto\", className)} style={style}>\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { TextProps } from \"./component-types\";\n\nexport const Text: React.FC<TextProps> = ({\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n className,\n style,\n}) => {\n const sizeClasses: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n };\n\n const weightClasses: Record<string, string> = {\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n };\n\n return (\n <span\n className={cn(\n sizeClasses[size as keyof typeof sizeClasses] || \"text-base\",\n weightClasses[weight as keyof typeof weightClasses] || \"font-normal\",\n alignClasses[align as keyof typeof alignClasses] || \"text-left\",\n className\n )}\n style={style}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { HeadingProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Heading: React.FC<HeadingProps> = ({\n value,\n level = 2,\n className,\n style,\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-3xl font-bold tracking-tight\",\n h2: \"text-2xl font-semibold tracking-tight\",\n h3: \"text-xl font-semibold tracking-tight\",\n h4: \"text-lg font-semibold tracking-tight\",\n h5: \"text-base font-semibold\",\n h6: \"text-sm font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n \"text-foreground\",\n className\n )}\n style={style}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\", className)}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\", {\n variants: {\n orientation: {\n vertical:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n})\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\", className)}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { InputProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Input: React.FC<InputProps> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n value,\n label,\n name,\n disabled,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n />\n </Field>\n );\n};\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { TextareaProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Textarea: React.FC<TextareaProps> = ({\n placeholder,\n defaultValue,\n value,\n label,\n name,\n disabled,\n rows,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n />\n </Field>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\n\nimport { cn } from \"@/lib/utils\"\nimport { IconSelector, IconCheck, IconChevronUp, IconChevronDown } from \"@tabler/icons-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <IconSelector className=\"text-muted-foreground size-4 pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\", className )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px pointer-events-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\", className)}\n {...props}\n >\n <IconChevronUp\n />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\", className)}\n {...props}\n >\n <IconChevronDown\n />\n </SelectPrimitive.ScrollDownArrow>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { SelectProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n defaultValue,\n value,\n label,\n name,\n disabled,\n placeholder,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <SelectRoot\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n onValueChange={handleValueChange}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={placeholder || \"Select an option\"} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { LabelProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Label: React.FC<LabelProps> = ({\n value,\n htmlFor,\n required,\n className,\n style,\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\"flex items-center gap-1\", className)}\n style={style}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { CheckboxProps } from \"./component-types\";\nimport { Label } from \"./Label\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n name,\n value = \"on\",\n checked,\n defaultChecked,\n disabled,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: value,\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n style={style}\n >\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n className={cn(\n \"cursor-pointer select-none text-sm font-medium leading-none\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { RadioGroupProps } from \"./component-types\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n defaultValue,\n value,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col gap-3\", className)} style={style}>\n {label && <Label value={label} className=\"text-sm font-semibold\" />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\"\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div\n key={index}\n className=\"flex items-center gap-2\"\n >\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={\n defaultValue === option.value ? true : undefined\n }\n checked={value === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n className={cn(\n \"cursor-pointer select-none text-sm font-medium leading-none\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { ButtonProps } from \"./component-types\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Button: React.FC<ButtonProps> = ({\n label,\n variant = \"primary\",\n size = \"default\",\n disabled = false,\n fullWidth = false,\n onClickAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const variantMap: Record<string, \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"> = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n success: \"default\", // Success doesn't have a direct shadcn mapping in base variant, default is usually primary\n };\n\n return (\n <ButtonBase\n variant={variantMap[variant as keyof typeof variantMap] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(fullWidth ? \"w-full\" : undefined, className)}\n style={style}\n onClick={() => {\n if (onClickAction) {\n sendEvent(onClickAction as any);\n }\n }}\n >\n {label}\n </ButtonBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { FormProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Form: React.FC<FormProps> = ({ children, onSubmitAction, className, style }) => {\n const { sendEvent } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n \n // Prevent double submission\n if (isSubmitted) return;\n \n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n sendEvent({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction.data || {}),\n ...data,\n },\n } as any);\n }\n };\n\n return (\n <form \n onSubmit={handleSubmit} \n className={cn(\"w-full\", className)}\n style={style}\n >\n <fieldset \n disabled={isSubmitted} \n className=\"m-0 border-0 p-0\"\n >\n <div\n className={cn(\n \"flex flex-col gap-4 transition-opacity\",\n isSubmitted && \"opacity-60 pointer-events-none\"\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import React from \"react\";\nimport { StarterPrompt } from \"@/types\";\nimport { Button } from \"./elements\";\n\ninterface StarterPromptsProps {\n prompts: StarterPrompt[];\n onPromptClick: (prompt: string) => void;\n}\n\nexport function StarterPrompts({\n prompts,\n onPromptClick,\n}: StarterPromptsProps) {\n if (!prompts || prompts.length === 0) {\n return null;\n }\n\n return (\n <div className=\"flex flex-col space-y-4 animate-in fade-in slide-in-from-bottom-4 duration-500 mt-auto max-w-2xl\">\n <div className=\"space-y-2\">\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n What can I help with today?\n </h2>\n </div>\n <div className=\"flex flex-col gap-2 w-full\">\n {prompts.map((item, index) => (\n <Button\n key={index}\n label={item.label}\n variant=\"ghost\"\n size=\"lg\"\n onClickAction={{\n type: \"text\",\n role: \"user\",\n data: { content: item.prompt },\n }}\n className=\"w-full justify-start\"\n />\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport type { UINode } from \"melony\";\nimport * as Elements from \"./elements\";\n\nexport interface UIRendererProps {\n node: UINode;\n}\n\n/**\n * Maps UINode types to refined React elements aligned with shadcn.\n * UI is built via elements always starting with a card element as a root.\n * Children are always rendered elements, never raw strings.\n */\nexport function UIRenderer({ node }: UIRendererProps) {\n const { type, props, children } = node;\n\n // Map node type to element component\n const typeMap: Record<string, React.FC<any>> = {\n card: Elements.Card,\n button: Elements.Button,\n row: Elements.Row,\n col: Elements.Col,\n text: Elements.Text,\n heading: Elements.Heading,\n badge: Elements.Badge,\n input: Elements.Input,\n textarea: Elements.Textarea,\n select: Elements.Select,\n checkbox: Elements.Checkbox,\n radioGroup: Elements.RadioGroup,\n spacer: Elements.Spacer,\n divider: Elements.Divider,\n box: Elements.Box,\n image: Elements.Image,\n icon: Elements.Icon,\n list: Elements.List,\n listItem: Elements.ListItem,\n form: Elements.Form,\n chart: Elements.Chart,\n label: Elements.Label,\n };\n\n const Component = typeMap[type];\n\n if (!Component) {\n return (\n <div className=\"text-destructive italic text-sm p-2 border border-dashed rounded border-destructive/50 bg-destructive/5\">\n [Unknown component: {type}]\n </div>\n );\n }\n\n // Recursively render children\n // These will be passed as React.ReactNode to the components\n const renderedChildren = children?.map((child, i) => (\n <UIRenderer key={i} node={child} />\n ));\n\n const componentProps = { ...props };\n\n return <Component {...componentProps}>{renderedChildren}</Component>;\n}\n","import React from \"react\";\nimport { Event } from \"melony\";\nimport { UIRenderer } from \"@/components/ui-renderer\";\n\ninterface MessageContentProps {\n events: Event[];\n}\n\nexport function MessageContent({ events }: MessageContentProps) {\n return (\n <>\n {events.map((event, index) => {\n if (event.type === \"text-delta\") {\n return <span key={index}>{event.data?.delta}</span>;\n }\n if (event.type === \"text\") {\n return (\n <p key={index}>\n {event.data?.content || event.data?.text}\n </p>\n );\n }\n if (event.ui) {\n return <UIRenderer key={index} node={event.ui} />;\n }\n return null;\n })}\n </>\n );\n}\n\n","import React from \"react\";\nimport { Message } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./message-content\";\n\ninterface MessageProps {\n message: Message;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div\n className={cn(\n \"flex flex-col\",\n isUser ? \"items-end\" : \"items-start\"\n )}\n >\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap\",\n isUser\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\"\n )}\n >\n <MessageContent events={message.content} />\n </div>\n </div>\n );\n}\n\n","import { useState } from \"react\";\nimport {\n IconChevronUp,\n IconChevronDown,\n IconLoader2,\n} from \"@tabler/icons-react\";\n\ninterface LoadingIndicatorProps {\n status?: {\n message: string;\n details?: string;\n };\n}\n\nexport function LoadingIndicator({ status }: LoadingIndicatorProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n const message = status?.message || \"Processing...\";\n const details = status?.details;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-2 text-muted-foreground group\">\n <IconLoader2 className=\"size-3.5 animate-spin\" />\n <div className=\"animate-pulse\">{message}</div>\n {details && (\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"p-0.5 hover:bg-muted rounded-sm transition-colors flex items-center justify-center\"\n title={isExpanded ? \"Hide details\" : \"Show details\"}\n >\n {isExpanded ? (\n <IconChevronUp className=\"size-3.5 opacity-50 group-hover:opacity-100\" />\n ) : (\n <IconChevronDown className=\"size-3.5 opacity-50 group-hover:opacity-100\" />\n )}\n </button>\n )}\n </div>\n {isExpanded && details && (\n <div className=\"text-[10px] leading-relaxed font-mono bg-muted/30 p-2.5 rounded border border-border/50 max-h-64 overflow-y-auto whitespace-pre-wrap text-muted-foreground shadow-sm\">\n {details}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\n\ninterface ErrorDisplayProps {\n error: Error;\n}\n\nexport function ErrorDisplay({ error }: ErrorDisplayProps) {\n return (\n <div className=\"text-destructive p-2 border border-destructive rounded-md bg-destructive/10\">\n {error.message}\n </div>\n );\n}\n\n","import React, { useMemo } from \"react\";\nimport { Message } from \"@/types\";\nimport { MessageBubble } from \"./message\";\nimport { LoadingIndicator } from \"./loading-indicator\";\nimport { ErrorDisplay } from \"./error-display\";\n\ninterface MessageListProps {\n messages: Message[];\n isLoading?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({ messages, isLoading, error, loadingStatus }: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n // Check if the last message has text-delta events (text is streaming)\n const isTextStreaming = useMemo(() => {\n if (messages.length === 0 || !isLoading) return false;\n const lastMessage = messages[messages.length - 1];\n return lastMessage.content.some(event => event.type === \"text-delta\");\n }, [messages, isLoading]);\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n {isLoading && !isTextStreaming && <LoadingIndicator status={loadingStatus} />}\n {error && <ErrorDisplay error={error} />}\n </div>\n );\n}\n\n","import { useState, useRef, useEffect } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOptionGroup } from \"@/types\";\nimport { Composer } from \"./composer\";\nimport { StarterPrompts } from \"./starter-prompts\";\nimport { MessageList } from \"./message-list\";\n\ninterface ThreadProps {\n className?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n onStarterPromptClick?: (prompt: string) => void;\n options?: ComposerOptionGroup[];\n autoFocus?: boolean;\n defaultSelectedIds?: string[];\n}\n\nexport function Thread({\n className,\n placeholder = \"Type a message...\",\n starterPrompts,\n onStarterPromptClick,\n options,\n autoFocus = false,\n defaultSelectedIds,\n}: ThreadProps) {\n const { messages, isLoading, error, sendEvent, loadingStatus } = useMelony();\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string\n ) => {\n const text = (overrideInput ?? input).trim();\n if (!text || isLoading) return;\n\n if (!overrideInput) setInput(\"\");\n await sendEvent(\n {\n type: \"text\",\n role: \"user\",\n data: { content: text },\n },\n { state }\n );\n };\n\n const handleStarterPromptClick = (prompt: string) => {\n if (onStarterPromptClick) {\n onStarterPromptClick(prompt);\n } else {\n handleSubmit(undefined, prompt);\n }\n };\n\n const showStarterPrompts =\n messages.length === 0 && starterPrompts && starterPrompts.length > 0;\n\n return (\n <div\n className={cn(\"relative flex flex-col h-full bg-background\", className)}\n >\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-4xl mx-auto w-full p-4\",\n showStarterPrompts && \"min-h-full flex flex-col\"\n )}\n >\n {showStarterPrompts && (\n <StarterPrompts\n prompts={starterPrompts}\n onPromptClick={handleStarterPromptClick}\n />\n )}\n <MessageList\n messages={messages}\n isLoading={isLoading}\n error={error}\n loadingStatus={loadingStatus}\n />\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full\">\n <div className=\"max-w-4xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n placeholder={placeholder}\n isLoading={isLoading}\n options={options}\n autoFocus={autoFocus}\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChatHeaderProps {\n /**\n * The title to display in the header. Can be a string or a React node for custom content.\n */\n title?: string | React.ReactNode;\n \n /**\n * Content to render on the left side of the header (e.g., back button).\n */\n leftContent?: React.ReactNode;\n \n /**\n * Content to render on the right side of the header (e.g., action buttons).\n */\n rightContent?: React.ReactNode;\n \n /**\n * Custom className for the header container.\n */\n className?: string;\n \n /**\n * Custom className for the title element (only applies when title is a string).\n */\n titleClassName?: string;\n \n /**\n * Custom children to render inside the header. If provided, this takes precedence over title/leftContent/rightContent.\n */\n children?: React.ReactNode;\n}\n\n/**\n * A shared, customizable header component for chat interfaces.\n * Used consistently across ChatFull, ChatSidebar, and ChatPopup components.\n */\nexport function ChatHeader({\n title,\n leftContent,\n rightContent,\n className,\n titleClassName,\n children,\n}: ChatHeaderProps) {\n // If children are provided, use them for complete customization\n if (children) {\n return (\n <div className={cn(\"p-4 border-b border-border h-14 flex items-center shrink-0\", className)}>\n {children}\n </div>\n );\n }\n\n return (\n <div className={cn(\"p-4 border-b border-border h-14 flex items-center justify-between shrink-0\", className)}>\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {leftContent}\n {/* {title && (\n <div className={cn(\n \"text-sm font-semibold truncate opacity-50\",\n typeof title === \"string\" ? titleClassName : \"\"\n )}>\n {title}\n </div>\n )} */}\n </div>\n {rightContent && (\n <div className=\"flex items-center gap-1 shrink-0 ml-2\">\n {rightContent}\n </div>\n )}\n </div>\n );\n}\n\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { IconPlus, IconMessage, IconTrash } from \"@tabler/icons-react\";\nimport { useThreads } from \"@/hooks/use-threads\";\n\nexport interface ThreadListProps {\n className?: string;\n emptyState?: React.ReactNode;\n onThreadSelect?: (threadId: string) => void;\n}\n\nexport const ThreadList: React.FC<ThreadListProps> = ({\n className,\n emptyState,\n onThreadSelect,\n}) => {\n const { threads, activeThreadId, selectThread, createThread, deleteThread } =\n useThreads();\n\n const handleThreadClick = (threadId: string) => {\n if (threadId !== activeThreadId) {\n selectThread(threadId);\n }\n onThreadSelect?.(threadId);\n };\n\n const handleDelete = async (e: React.MouseEvent, threadId: string) => {\n e.stopPropagation();\n try {\n await deleteThread(threadId);\n } catch (error) {\n console.error(\"Failed to delete thread:\", error);\n }\n };\n\n const handleNewThread = async () => {\n try {\n await createThread();\n } catch (error) {\n console.error(\"Failed to create thread:\", error);\n }\n };\n\n const formatDate = (date: Date | string | undefined): string => {\n if (!date) return \"\";\n const d = typeof date === \"string\" ? new Date(date) : date;\n if (isNaN(d.getTime())) return \"\";\n\n const now = new Date();\n const diffMs = now.getTime() - d.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return \"Just now\";\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n\n return d.toLocaleDateString();\n };\n\n return (\n <div className={cn(\"flex flex-col h-full\", className)}>\n <div className=\"p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleNewThread}\n className=\"w-full justify-start\"\n >\n <IconPlus className=\"mr-2 size-4\" />\n New Thread\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto\">\n {threads.length === 0 ? (\n <div className=\"p-4 text-center text-muted-foreground\">\n {emptyState || (\n <div className=\"space-y-2\">\n <IconMessage className=\"size-8 mx-auto opacity-50\" />\n <p className=\"text-sm\">No threads yet</p>\n <Button variant=\"ghost\" size=\"sm\" onClick={handleNewThread}>\n Start a conversation\n </Button>\n </div>\n )}\n </div>\n ) : (\n <div className=\"p-2 space-y-1\">\n {threads.map((thread) => {\n const isActive = thread.id === activeThreadId;\n return (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n \"group relative flex items-center gap-3 px-3 py-1.5 rounded-lg cursor-pointer transition-colors\",\n isActive ? \"bg-muted\" : \"hover:bg-muted\"\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className={cn(\"text-sm font-medium truncate\")}>\n {thread.title || `Thread ${thread.id.slice(0, 8)}`}\n </p>\n {thread.updatedAt && (\n <span className={cn(\"text-xs shrink-0\")}>\n {formatDate(thread.updatedAt)}\n </span>\n )}\n </div>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={(e) => handleDelete(e, thread.id)}\n className={cn(\n \"opacity-0 group-hover:opacity-100 transition-opacity shrink-0\",\n isActive && \"hover:bg-primary-foreground/20\"\n )}\n >\n <IconTrash className=\"size-3\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { IconArrowLeft, IconHistory, IconMessage, IconPlus, IconX } from \"@tabler/icons-react\";\nimport { Thread } from \"./thread\";\nimport { ThreadList } from \"./thread-list\";\nimport { Button } from \"./ui/button\";\nimport { Card } from \"./ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { useThreads } from \"@/hooks/use-threads\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\n\nexport interface ChatPopupProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n defaultOpen?: boolean;\n /**\n * Props for customizing the header. Note: leftContent and rightContent in headerProps\n * will be merged with the default popup header actions (back, history, new chat, close).\n */\n headerProps?: Omit<ChatHeaderProps, \"title\" | \"leftContent\" | \"rightContent\">;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatPopup({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n defaultOpen = false,\n headerProps,\n defaultSelectedIds,\n}: ChatPopupProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [view, setView] = useState<\"chat\" | \"history\">(\"chat\");\n const { createThread } = useThreads();\n\n const handleNewChat = async () => {\n try {\n await createThread();\n setView(\"chat\");\n } catch (error) {\n console.error(\"Failed to create new chat:\", error);\n }\n };\n\n return (\n <div className=\"fixed bottom-6 right-6 z-50 flex flex-col items-end gap-4 font-sans\">\n {isOpen && (\n <Card className=\"py-0 w-[440px] h-[640px] gap-0 flex flex-col overflow-hidden border bg-background/95 backdrop-blur supports-backdrop-filter:bg-background/60 shadow-2xl animate-in fade-in zoom-in-95 duration-200 origin-bottom-right\">\n <ChatHeader\n title={view === \"history\" ? \"History\" : title}\n leftContent={\n view === \"history\" ? (\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={() => setView(\"chat\")}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <IconArrowLeft className=\"size-4\" />\n </Button>\n ) : undefined\n }\n rightContent={\n <>\n {view === \"chat\" && (\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={() => setView(\"history\")}\n className=\"text-muted-foreground hover:text-foreground\"\n title=\"History\"\n >\n <IconHistory className=\"size-4\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={handleNewChat}\n className=\"text-muted-foreground hover:text-foreground\"\n title=\"New Chat\"\n >\n <IconPlus className=\"size-4\" />\n </Button>\n <Button \n variant=\"ghost\" \n size=\"icon-xs\" \n onClick={() => setIsOpen(false)}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <IconX className=\"size-4\" />\n </Button>\n </>\n }\n {...headerProps}\n />\n <div className=\"flex-1 overflow-hidden\">\n {view === \"chat\" ? (\n <Thread\n placeholder={placeholder}\n starterPrompts={starterPrompts}\n options={options}\n className=\"h-full\"\n defaultSelectedIds={defaultSelectedIds}\n />\n ) : (\n <ThreadList \n onThreadSelect={() => setView(\"chat\")}\n className=\"h-full\"\n />\n )}\n </div>\n </Card>\n )}\n\n <Button\n size=\"icon-lg\"\n className={cn(\n \"h-14 w-14 rounded-full shadow-2xl transition-all hover:scale-105 active:scale-95\",\n isOpen ? \"bg-muted text-muted-foreground hover:bg-muted/80\" : \"bg-primary text-primary-foreground\"\n )}\n onClick={() => setIsOpen(!isOpen)}\n >\n {isOpen ? <IconX className=\"size-6\" /> : <IconMessage className=\"size-6\" />}\n </Button>\n </div>\n );\n}\n","import React from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\n\nexport interface ChatSidebarProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n className?: string;\n /**\n * Props for customizing the header. If provided, title prop will be passed to header.\n */\n headerProps?: Omit<ChatHeaderProps, \"title\">;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatSidebar({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n className,\n headerProps,\n defaultSelectedIds,\n}: ChatSidebarProps) {\n return (\n <div className={cn(\"flex flex-col h-full border-r bg-background w-80\", className)}>\n <ChatHeader title={title} {...headerProps} />\n <div className=\"flex-1 overflow-hidden\">\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n options={options}\n className=\"h-full\"\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n </div>\n );\n}\n\n","import React, { useState } from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\nimport { Button } from \"./ui/button\";\nimport { IconChevronLeft, IconChevronRight } from \"@tabler/icons-react\";\n\nexport interface ChatFullProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n className?: string;\n /**\n * Props for customizing the header. If provided, title prop will be passed to header.\n */\n headerProps?: Omit<ChatHeaderProps, \"title\">;\n /**\n * Customizable left sidebar content. Typically used for navigation, thread list, etc.\n */\n leftSidebar?: React.ReactNode;\n /**\n * Customizable right sidebar content. Typically used as a canvas, additional info, etc.\n */\n rightSidebar?: React.ReactNode;\n /**\n * Custom className for the left sidebar container\n */\n leftSidebarClassName?: string;\n /**\n * Custom className for the right sidebar container\n */\n rightSidebarClassName?: string;\n /**\n * Whether the left sidebar is collapsible\n */\n leftSidebarCollapsible?: boolean;\n /**\n * Whether the right sidebar is collapsible\n */\n rightSidebarCollapsible?: boolean;\n /**\n * Default collapsed state for the left sidebar\n */\n defaultLeftSidebarCollapsed?: boolean;\n /**\n * Default collapsed state for the right sidebar\n */\n defaultRightSidebarCollapsed?: boolean;\n /**\n * Controlled collapsed state for the left sidebar. If provided, component becomes controlled.\n */\n leftSidebarCollapsed?: boolean;\n /**\n * Controlled collapsed state for the right sidebar. If provided, component becomes controlled.\n */\n rightSidebarCollapsed?: boolean;\n /**\n * Callback when left sidebar collapse state changes\n */\n onLeftSidebarCollapseChange?: (collapsed: boolean) => void;\n /**\n * Callback when right sidebar collapse state changes\n */\n onRightSidebarCollapseChange?: (collapsed: boolean) => void;\n /**\n * Whether the composer should be auto focused\n */\n autoFocus?: boolean;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatFull({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n className,\n headerProps,\n leftSidebar,\n rightSidebar,\n leftSidebarClassName,\n rightSidebarClassName,\n leftSidebarCollapsible = false,\n rightSidebarCollapsible = false,\n defaultLeftSidebarCollapsed = false,\n defaultRightSidebarCollapsed = false,\n leftSidebarCollapsed: controlledLeftCollapsed,\n rightSidebarCollapsed: controlledRightCollapsed,\n onLeftSidebarCollapseChange,\n onRightSidebarCollapseChange,\n autoFocus = false,\n defaultSelectedIds,\n}: ChatFullProps) {\n // Internal state for uncontrolled mode\n const [internalLeftCollapsed, setInternalLeftCollapsed] = useState(\n defaultLeftSidebarCollapsed\n );\n const [internalRightCollapsed, setInternalRightCollapsed] = useState(\n defaultRightSidebarCollapsed\n );\n\n // Use controlled state if provided, otherwise use internal state\n const leftCollapsed =\n controlledLeftCollapsed !== undefined\n ? controlledLeftCollapsed\n : internalLeftCollapsed;\n const rightCollapsed =\n controlledRightCollapsed !== undefined\n ? controlledRightCollapsed\n : internalRightCollapsed;\n\n const handleLeftToggle = () => {\n const newCollapsed = !leftCollapsed;\n if (controlledLeftCollapsed === undefined) {\n setInternalLeftCollapsed(newCollapsed);\n }\n onLeftSidebarCollapseChange?.(newCollapsed);\n };\n\n const handleRightToggle = () => {\n const newCollapsed = !rightCollapsed;\n if (controlledRightCollapsed === undefined) {\n setInternalRightCollapsed(newCollapsed);\n }\n onRightSidebarCollapseChange?.(newCollapsed);\n };\n\n return (\n <div className={cn(\"flex flex-col h-full w-full bg-background\", className)}>\n {title && <ChatHeader title={title} {...headerProps} />}\n <div className=\"flex-1 overflow-hidden flex relative\">\n {leftSidebar && (\n <>\n <div\n className={cn(\n \"flex-shrink-0 border-r border-border bg-background transition-all duration-300 ease-in-out overflow-hidden flex flex-col\",\n leftCollapsed && leftSidebarCollapsible\n ? \"w-0 border-r-0 min-w-0\"\n : \"\",\n !leftCollapsed && leftSidebarClassName\n )}\n >\n {!leftCollapsed && (\n <>\n {leftSidebarCollapsible && (\n <div className=\"flex justify-end p-2 border-b border-border shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleLeftToggle}\n aria-label=\"Collapse left sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden min-h-0\">\n {leftSidebar}\n </div>\n </>\n )}\n </div>\n {leftSidebarCollapsible && leftCollapsed && (\n <div className=\"flex-shrink-0 border-r border-border bg-background flex items-center justify-center w-10\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleLeftToggle}\n aria-label=\"Expand left sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </>\n )}\n <div className=\"flex-1 overflow-hidden min-w-0\">\n <Thread\n placeholder={placeholder}\n starterPrompts={starterPrompts}\n options={options}\n autoFocus={autoFocus}\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n {rightSidebar && (\n <>\n {rightSidebarCollapsible && rightCollapsed && (\n <div className=\"flex-shrink-0 border-l border-border bg-background flex items-center justify-center w-10\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleRightToggle}\n aria-label=\"Expand right sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div\n className={cn(\n \"flex-shrink-0 border-l border-border bg-background transition-all duration-300 ease-in-out overflow-hidden flex flex-col\",\n rightCollapsed && rightSidebarCollapsible\n ? \"w-0 border-l-0 min-w-0\"\n : \"\",\n !rightCollapsed && rightSidebarClassName\n )}\n >\n {!rightCollapsed && (\n <>\n {rightSidebarCollapsible && (\n <div className=\"flex justify-start p-2 border-b border-border shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleRightToggle}\n aria-label=\"Collapse right sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden min-h-0\">\n {rightSidebar}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen]\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n }\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n} from \"@/components/ui/popover\";\nimport { ThreadList } from \"./thread-list\";\nimport { IconHistory } from \"@tabler/icons-react\";\nimport { cn } from \"@/lib/utils\";\nimport { useHotkeys } from \"react-hotkeys-hook\";\n\nexport interface ThreadPopoverProps {\n className?: string;\n buttonClassName?: string;\n buttonVariant?:\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\n buttonSize?:\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n emptyState?: React.ReactNode;\n onThreadSelect?: (threadId: string) => void;\n}\n\nexport const ThreadPopover: React.FC<ThreadPopoverProps> = ({\n className,\n buttonClassName,\n buttonVariant = \"ghost\",\n buttonSize = \"icon\",\n emptyState,\n onThreadSelect,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Hotkey to toggle popover: Press 'H' to open/close\n // Scopes ensure it doesn't trigger when typing in inputs/textareas\n useHotkeys(\n \"h\",\n (e: KeyboardEvent) => {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n },\n {\n enableOnFormTags: false, // Don't trigger when typing in form inputs\n enableOnContentEditable: false, // Don't trigger in contenteditable elements\n }\n );\n\n const handleThreadSelect = (threadId: string) => {\n setIsOpen(false);\n onThreadSelect?.(threadId);\n };\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={buttonVariant}\n size={buttonSize}\n className={cn(buttonClassName)}\n >\n <IconHistory className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\"w-80 p-0\", className)}\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n >\n <div className=\"flex flex-col h-[400px]\">\n <ThreadList\n emptyState={emptyState}\n onThreadSelect={handleThreadSelect}\n className=\"h-full\"\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { IconPlus } from \"@tabler/icons-react\";\nimport { useThreads } from \"@/hooks/use-threads\";\nimport { cn } from \"@/lib/utils\";\nimport { useHotkeys } from \"react-hotkeys-hook\";\n\nexport interface CreateThreadButtonProps {\n className?: string;\n variant?:\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\n size?:\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n children?: React.ReactNode;\n onThreadCreated?: (threadId: string) => void;\n}\n\nexport const CreateThreadButton: React.FC<CreateThreadButtonProps> = ({\n className,\n variant = \"ghost\",\n size = \"icon\",\n children,\n onThreadCreated,\n}) => {\n const { createThread } = useThreads();\n const [isCreating, setIsCreating] = React.useState(false);\n\n const handleCreateThread = async () => {\n if (isCreating) return; // Prevent multiple simultaneous creations\n try {\n setIsCreating(true);\n const threadId = await createThread();\n onThreadCreated?.(threadId);\n } catch (error) {\n console.error(\"Failed to create thread:\", error);\n } finally {\n setIsCreating(false);\n }\n };\n\n // Hotkey to create new thread: Press 'N' to create\n // Scopes ensure it doesn't trigger when typing in inputs/textareas\n useHotkeys(\n \"n\",\n (e: KeyboardEvent) => {\n e.preventDefault();\n handleCreateThread();\n },\n {\n enableOnFormTags: false, // Don't trigger when typing in form inputs\n enableOnContentEditable: false, // Don't trigger in contenteditable elements\n }\n );\n\n return (\n <Button\n variant={variant}\n size={size}\n onClick={handleCreateThread}\n disabled={isCreating}\n className={cn(className)}\n >\n <IconPlus className=\"size-4\" />\n </Button>\n );\n};\n","import * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/5 gap-6 rounded-4xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\"bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-full sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import * as React from \"react\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { useAuth } from \"@/hooks/use-auth\";\nimport {\n IconBrandGoogle,\n IconLogout,\n IconUser,\n IconX,\n} from \"@tabler/icons-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\n\nexport interface AccountDialogProps {\n className?: string;\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n}\n\nexport const AccountDialog: React.FC<AccountDialogProps> = ({\n className,\n variant = \"outline\",\n size,\n}) => {\n const { isLoading, isAuthenticated, user, login, logout } = useAuth();\n const [open, setOpen] = React.useState(false);\n const [accountInfoOpen, setAccountInfoOpen] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n\n const initials = React.useMemo(() => {\n const name = user?.displayName || user?.name;\n if (!name) return \"\";\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n }, [user?.displayName, user?.name]);\n\n const handleGoogleSignIn = async () => {\n login();\n };\n\n if (isAuthenticated) {\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props) => (\n <Button\n variant={variant}\n size=\"icon\"\n {...props}\n className={cn(\"rounded-full\", className)}\n >\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-7 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-7 items-center justify-center rounded-full bg-muted text-xs font-bold\">\n {initials || <IconUser className=\"size-4\" />}\n </div>\n )}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n <div className=\"flex items-center gap-2 p-2\">\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-8 items-center justify-center rounded-full bg-muted text-xs font-bold\">\n {initials || <IconUser className=\"size-4\" />}\n </div>\n )}\n <div className=\"flex flex-col space-y-0.5 overflow-hidden\">\n <p className=\"truncate text-sm font-medium\">\n {user?.displayName || user?.name}\n </p>\n <p className=\"truncate text-xs text-muted-foreground\">\n {user?.email}\n </p>\n </div>\n </div>\n <Separator className=\"my-1\" />\n <DropdownMenuItem onClick={() => setAccountInfoOpen(true)}>\n <IconUser className=\"mr-2 size-4\" />\n Account Settings\n </DropdownMenuItem>\n <DropdownMenuItem onClick={logout} className=\"text-destructive\">\n <IconLogout className=\"mr-2 size-4\" />\n Logout\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n\n <Dialog open={accountInfoOpen} onOpenChange={setAccountInfoOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Account Information</DialogTitle>\n <DialogDescription>\n Your account details and settings.\n </DialogDescription>\n </DialogHeader>\n <DialogClose>\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogClose>\n <div className=\"flex flex-col gap-4 py-4\">\n <div className=\"flex items-center gap-4\">\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-16 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-16 items-center justify-center rounded-full bg-muted text-xl font-bold\">\n {initials || (\n <IconUser className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n )}\n <div className=\"flex flex-col\">\n <h3 className=\"text-lg font-semibold\">\n {user?.displayName || user?.name}\n </h3>\n <p className=\"text-sm text-muted-foreground\">{user?.email}</p>\n </div>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n User ID\n </p>\n <p className=\"font-mono text-xs truncate\">\n {user?.uid || user?.id}\n </p>\n </div>\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n Created At\n </p>\n <p className=\"text-xs\">{user?.createdAt || \"N/A\"}</p>\n </div>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n }\n\n return (\n <>\n <Button\n variant={variant}\n size={size}\n onClick={() => setOpen(true)}\n className={className}\n >\n <IconBrandGoogle className=\"mr-2 size-4\" />\n Sign in with Google\n </Button>\n\n <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogContent className=\"sm:max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle>Sign in to continue</AlertDialogTitle>\n <AlertDialogDescription>\n Choose your preferred sign-in method to access your account.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <div className=\"flex flex-col gap-3 py-4\">\n {error && (\n <div className=\"rounded-lg bg-destructive/10 p-3 text-sm text-destructive\">\n {error}\n </div>\n )}\n <Button\n onClick={handleGoogleSignIn}\n disabled={isLoading}\n variant=\"outline\"\n className=\"w-full\"\n size=\"lg\"\n >\n <IconBrandGoogle className=\"mr-2 size-5\" />\n {isLoading ? \"Signing in...\" : \"Continue with Google\"}\n </Button>\n </div>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n};\n","import { useTheme } from \"./theme-provider\";\nimport { IconMoon, IconSun, IconDeviceDesktop } from \"@tabler/icons-react\";\nimport { Button } from \"./ui/button\";\n\nexport function ThemeToggle() {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const cycleTheme = () => {\n if (theme === \"light\") {\n setTheme(\"dark\");\n } else if (theme === \"dark\") {\n setTheme(\"system\");\n } else {\n setTheme(\"light\");\n }\n };\n\n const getIcon = () => {\n if (theme === \"system\") {\n return <IconDeviceDesktop className=\"h-4 w-4\" />;\n }\n return resolvedTheme === \"dark\" ? (\n <IconMoon className=\"h-4 w-4\" />\n ) : (\n <IconSun className=\"h-4 w-4\" />\n );\n };\n\n const getLabel = () => {\n if (theme === \"system\") {\n return \"System\";\n }\n return resolvedTheme === \"dark\" ? \"Dark\" : \"Light\";\n };\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={cycleTheme}\n aria-label={`Toggle theme (current: ${getLabel()})`}\n title={`Current: ${getLabel()}. Click to cycle: Light → Dark → System`}\n >\n {getIcon()}\n </Button>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/lib/group-events-to-messages.ts","../src/providers/melony-provider.tsx","../src/providers/auth-provider.tsx","../src/providers/thread-provider.tsx","../src/components/theme-provider.tsx","../src/hooks/use-melony.ts","../src/hooks/use-auth.ts","../src/hooks/use-threads.ts","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/textarea.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/composer.tsx","../src/components/ui/card.tsx","../src/components/elements/Card.tsx","../src/components/elements/Row.tsx","../src/components/elements/Col.tsx","../src/components/elements/Box.tsx","../src/components/elements/Spacer.tsx","../src/components/ui/separator.tsx","../src/components/elements/Divider.tsx","../src/components/elements/List.tsx","../src/components/elements/ListItem.tsx","../src/components/ui/dialog.tsx","../src/components/elements/Image.tsx","../src/components/elements/Icon.tsx","../src/components/ui/badge.tsx","../src/components/elements/Badge.tsx","../src/components/elements/Chart.tsx","../src/components/elements/Text.tsx","../src/components/elements/Heading.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/field.tsx","../src/components/elements/Input.tsx","../src/components/elements/Textarea.tsx","../src/components/ui/select.tsx","../src/components/elements/Select.tsx","../src/components/elements/Label.tsx","../src/components/elements/Checkbox.tsx","../src/components/elements/RadioGroup.tsx","../src/components/elements/Button.tsx","../src/components/elements/Form.tsx","../src/components/starter-prompts.tsx","../src/components/ui-renderer.tsx","../src/components/message-content.tsx","../src/components/message.tsx","../src/components/loading-indicator.tsx","../src/components/error-display.tsx","../src/components/message-list.tsx","../src/components/thread.tsx","../src/components/chat-header.tsx","../src/components/thread-list.tsx","../src/components/chat-popup.tsx","../src/components/chat-sidebar.tsx","../src/components/chat-full.tsx","../src/components/ui/popover.tsx","../src/components/thread-popover.tsx","../src/components/create-thread-button.tsx","../src/components/ui/alert-dialog.tsx","../src/components/account-dialog.tsx","../src/components/theme-toggle.tsx"],"names":["createContext","useState","useEffect","useCallback","useMemo","jsx","generateId","error","useContext","twMerge","clsx","cva","ButtonPrimitive","MenuPrimitive","jsxs","IconCheck","React","IconChevronDown","IconLoader2","IconArrowUp","Card","SeparatorPrimitive","DialogPrimitive","ICONS","useRender","mergeProps","Badge","InputPrimitive","Input","Textarea","SelectPrimitive","IconSelector","IconChevronUp","Select","Label","Button","Fragment","useRef","IconPlus","IconMessage","IconTrash","IconArrowLeft","IconHistory","IconX","IconChevronLeft","IconChevronRight","React10","createPortal","React11","useHotkeys","React12","AlertDialogPrimitive","React13","IconUser","IconLogout","IconBrandGoogle","IconDeviceDesktop","IconMoon","IconSun"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Event } from \"melony\";\nimport { Message } from \"@/types\";\n\nexport function groupEventsToMessages(events: Event[]): Message[] {\n if (events.length === 0) return [];\n\n const messages: Message[] = [];\n let currentMessage: Message | null = null;\n\n for (const event of events) {\n const role = event.role || \"assistant\";\n const runId = event.runId;\n\n // Start a new message if:\n // 1. No current message\n // 2. Role changed\n // 3. runId changed (and both have runIds)\n if (\n !currentMessage ||\n currentMessage.role !== role ||\n (runId && currentMessage.runId && runId !== currentMessage.runId)\n ) {\n currentMessage = {\n role: role,\n content: [event],\n runId,\n };\n messages.push(currentMessage);\n } else {\n currentMessage.content.push(event);\n // If the current message didn't have a runId but this event does, update it\n if (!currentMessage.runId && runId) {\n currentMessage.runId = runId;\n }\n }\n }\n\n return messages;\n}\n","import React, {\n createContext,\n useEffect,\n useState,\n useMemo,\n useCallback,\n ReactNode,\n} from \"react\";\nimport { MelonyClient, ClientState } from \"melony/client\";\nimport { Event } from \"melony\";\nimport { Message } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/group-events-to-messages\";\n\nexport interface MelonyContextValue extends ClientState {\n messages: Message[];\n sendEvent: (\n event: Event,\n options?: { runId?: string; state?: Record<string, any> }\n ) => Promise<void>;\n reset: (events?: Event[]) => void;\n client: MelonyClient;\n}\n\nexport const MelonyContext = createContext<MelonyContextValue | undefined>(\n undefined\n);\n\nexport interface MelonyClientProviderProps {\n children: ReactNode;\n client: MelonyClient;\n initialEvents?: Event[];\n}\n\nexport const MelonyClientProvider: React.FC<MelonyClientProviderProps> = ({\n children,\n client,\n initialEvents,\n}) => {\n const [state, setState] = useState<ClientState>(client.getState());\n\n useEffect(() => {\n if (\n initialEvents &&\n initialEvents.length > 0 &&\n client.getState().events.length === 0\n ) {\n client.reset(initialEvents);\n }\n }, [client, initialEvents]);\n\n useEffect(() => {\n setState(client.getState());\n const unsubscribe = client.subscribe(setState);\n return () => {\n unsubscribe();\n };\n }, [client]);\n\n const sendEvent = useCallback(\n async (\n event: Event,\n options?: { runId?: string; state?: Record<string, any> }\n ) => {\n const generator = client.sendEvent(event, options);\n for await (const _ of generator) {\n // State updates automatically via subscription\n }\n },\n [client]\n );\n\n const reset = useCallback(\n (events?: Event[]) => client.reset(events),\n [client]\n );\n\n const value = useMemo(\n () => ({\n ...state,\n messages: groupEventsToMessages(state.events),\n sendEvent,\n reset,\n client,\n }),\n [state, sendEvent, reset, client]\n );\n\n return (\n <MelonyContext.Provider value={value}>{children}</MelonyContext.Provider>\n );\n};\n","import React, {\n createContext,\n useState,\n useCallback,\n ReactNode,\n useEffect,\n} from \"react\";\nimport { User, AuthService } from \"@/types\";\n\nexport interface AuthContextValue {\n user: User | null;\n isAuthenticated: boolean;\n isLoading: boolean;\n login: () => void;\n logout: () => void;\n getToken: () => string | null;\n}\n\nexport const AuthContext = createContext<AuthContextValue | undefined>(\n undefined\n);\n\nexport interface AuthProviderProps {\n children: ReactNode;\n service: AuthService;\n}\n\nexport const AuthProvider: React.FC<AuthProviderProps> = ({\n children,\n service,\n}) => {\n const [user, setUser] = useState<User | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const fetchMe = useCallback(async () => {\n setIsLoading(true);\n try {\n const userData = await service.getMe();\n setUser(userData);\n } catch (error) {\n console.error(\"Failed to fetch user:\", error);\n setUser(null);\n } finally {\n setIsLoading(false);\n }\n }, [service]);\n\n useEffect(() => {\n fetchMe();\n }, [fetchMe]);\n\n const login = useCallback(() => {\n service.login();\n }, [service]);\n\n const logout = useCallback(async () => {\n try {\n await service.logout();\n setUser(null);\n } catch (error) {\n console.error(\"Failed to logout:\", error);\n }\n }, [service]);\n\n const value = {\n user,\n isAuthenticated: !!user,\n isLoading,\n login,\n logout,\n getToken: service.getToken,\n };\n\n if (isLoading) {\n return (\n <div\n style={{\n height: \"100vh\",\n width: \"100vw\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"0.875rem\",\n letterSpacing: \"0.01em\",\n }}\n className=\"text-muted-foreground animate-pulse\"\n >\n Loading...\n </div>\n );\n }\n\n return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;\n};\n","import React, {\n createContext,\n useState,\n useCallback,\n ReactNode,\n useEffect,\n useMemo,\n} from \"react\";\nimport { Event } from \"melony\";\nimport { generateId } from \"melony/client\";\nimport { ThreadData, ThreadService } from \"@/types\";\n\nexport interface ThreadContextValue {\n threads: ThreadData[];\n activeThreadId: string | null;\n isLoading: boolean;\n error: Error | null;\n selectThread: (threadId: string) => void;\n createThread: () => Promise<string>;\n deleteThread: (threadId: string) => Promise<void>;\n refreshThreads: () => Promise<void>;\n threadEvents: Event[];\n isLoadingEvents: boolean;\n}\n\nexport const ThreadContext = createContext<ThreadContextValue | undefined>(\n undefined\n);\n\nexport interface ThreadProviderProps {\n children: ReactNode;\n service: ThreadService;\n initialThreadId?: string;\n}\n\nexport const ThreadProvider: React.FC<ThreadProviderProps> = ({\n children,\n service,\n initialThreadId: providedInitialThreadId,\n}) => {\n const defaultInitialThreadId = useMemo(() => generateId(), []);\n const initialThreadId = providedInitialThreadId || defaultInitialThreadId;\n\n const [threads, setThreads] = useState<ThreadData[]>([]);\n const [activeThreadId, setActiveThreadId] = useState<string | null>(\n initialThreadId\n );\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n const [threadEvents, setThreadEvents] = useState<Event[]>([]);\n const [isLoadingEvents, setIsLoadingEvents] = useState(false);\n\n const fetchThreads = useCallback(async () => {\n setIsLoading(true);\n setError(null);\n try {\n const processedThreads = await service.getThreads();\n setThreads(processedThreads);\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error(\"Failed to fetch threads\");\n setError(error);\n console.error(\"Failed to fetch threads:\", error);\n } finally {\n setIsLoading(false);\n }\n }, [service]);\n\n useEffect(() => {\n fetchThreads();\n }, [fetchThreads]);\n\n const selectThread = useCallback((threadId: string) => {\n setActiveThreadId(threadId);\n }, []);\n\n const createThread = useCallback(async (): Promise<string> => {\n const newId = service.createThread\n ? await service.createThread()\n : generateId();\n const newThread: ThreadData = {\n id: newId,\n updatedAt: new Date(),\n };\n setThreads((prev) => [newThread, ...prev]);\n setActiveThreadId(newId);\n return newId;\n }, [service]);\n\n const deleteThread = useCallback(\n async (threadId: string) => {\n try {\n await service.deleteThread(threadId);\n\n setThreads((prev) => {\n const remainingThreads = prev.filter((t) => t.id !== threadId);\n setActiveThreadId((current) => {\n if (current === threadId) {\n return remainingThreads.length > 0\n ? remainingThreads[0].id\n : null;\n }\n return current;\n });\n return remainingThreads;\n });\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error(\"Failed to delete thread\");\n setError(error);\n throw error;\n }\n },\n [service]\n );\n\n const refreshThreads = useCallback(async () => {\n await fetchThreads();\n }, [fetchThreads]);\n\n useEffect(() => {\n if (!activeThreadId) {\n setThreadEvents([]);\n setIsLoadingEvents(false);\n return;\n }\n\n let cancelled = false;\n const fetchEvents = async () => {\n setIsLoadingEvents(true);\n try {\n const events = await service.getEvents(activeThreadId);\n if (!cancelled) {\n setThreadEvents(events);\n }\n } catch (err) {\n if (!cancelled) {\n console.error(\"Failed to fetch events:\", err);\n setThreadEvents([]);\n }\n } finally {\n if (!cancelled) {\n setIsLoadingEvents(false);\n }\n }\n };\n\n fetchEvents();\n return () => {\n cancelled = true;\n };\n }, [activeThreadId, service]);\n\n const value = useMemo(\n () => ({\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n isLoadingEvents,\n }),\n [\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n isLoadingEvents,\n ]\n );\n\n return (\n <ThreadContext.Provider value={value}>{children}</ThreadContext.Provider>\n );\n};\n","import { createContext, useContext, useEffect, useState } from \"react\";\n\ntype Theme = \"light\" | \"dark\" | \"system\";\n\ninterface ThemeContextType {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n resolvedTheme: \"light\" | \"dark\";\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport function ThemeProvider({ children }: { children: React.ReactNode }) {\n const [theme, setThemeState] = useState<Theme>(\"system\");\n const [resolvedTheme, setResolvedTheme] = useState<\"light\" | \"dark\">(\"light\");\n\n // Initialize theme from localStorage on client side only\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const stored = localStorage.getItem(\"theme\") as Theme | null;\n if (stored) {\n setThemeState(stored);\n }\n }\n }, []);\n\n // Update resolved theme based on theme preference\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n if (theme === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const updateResolvedTheme = () => {\n setResolvedTheme(mediaQuery.matches ? \"dark\" : \"light\");\n };\n\n updateResolvedTheme();\n mediaQuery.addEventListener(\"change\", updateResolvedTheme);\n\n return () => mediaQuery.removeEventListener(\"change\", updateResolvedTheme);\n } else {\n setResolvedTheme(theme);\n }\n }\n }, [theme]);\n\n // Apply theme class to document\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n const root = document.documentElement;\n \n if (resolvedTheme === \"dark\") {\n root.classList.add(\"dark\");\n } else {\n root.classList.remove(\"dark\");\n }\n }\n }, [resolvedTheme]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(\"theme\", newTheme);\n }\n };\n\n return (\n <ThemeContext.Provider value={{ theme, setTheme, resolvedTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n\n","import { useContext, useEffect } from \"react\";\nimport { MelonyContext, MelonyContextValue } from \"@/providers/melony-provider\";\nimport { Event } from \"melony\";\n\nexport interface UseMelonyOptions {\n initialEvents?: Event[];\n}\n\nexport const useMelony = (options?: UseMelonyOptions): MelonyContextValue => {\n const context = useContext(MelonyContext);\n if (context === undefined) {\n throw new Error(\"useMelony must be used within a MelonyClientProvider\");\n }\n\n const { client, reset } = context;\n const { initialEvents } = options || {};\n\n useEffect(() => {\n if (\n initialEvents &&\n initialEvents.length > 0 &&\n client.getState().events.length === 0\n ) {\n reset(initialEvents);\n }\n }, [client, initialEvents, reset]);\n\n return context;\n};\n","import { useContext } from \"react\";\nimport { AuthContext, AuthContextValue } from \"@/providers/auth-provider\";\n\nexport const useAuth = (): AuthContextValue => {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n};\n\n","import { useContext } from \"react\";\nimport { ThreadContext, ThreadContextValue } from \"@/providers/thread-provider\";\n\nexport const useThreads = (): ThreadContextValue => {\n const context = useContext(ThreadContext);\n if (context === undefined) {\n throw new Error(\"useThreads must be used within a ThreadProvider\");\n }\n return context;\n};\n\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Button as ButtonPrimitive } from \"@base-ui/react/button\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 rounded-4xl border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/80\",\n outline: \"border-border bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground\",\n ghost: \"hover:bg-muted hover:text-foreground dark:hover:bg-muted/50 aria-expanded:bg-muted aria-expanded:text-foreground\",\n destructive: \"bg-destructive/10 hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/20 text-destructive focus-visible:border-destructive/40 dark:hover:bg-destructive/30\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 gap-1.5 px-3 has-data-[icon=inline-end]:pr-2.5 has-data-[icon=inline-start]:pl-2.5\",\n xs: \"h-6 gap-1 px-2.5 text-xs has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\",\n lg: \"h-10 gap-1.5 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: ButtonPrimitive.Props & VariantProps<typeof buttonVariants>) {\n return (\n <ButtonPrimitive\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input bg-input/30 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 resize-none rounded-xl border px-3 py-3 text-base transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm placeholder:text-muted-foreground flex field-sizing-content min-h-16 w-full outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","import * as React from \"react\"\nimport { Menu as MenuPrimitive } from \"@base-ui/react/menu\"\n\nimport { cn } from \"@/lib/utils\"\nimport { IconChevronRight, IconCheck } from \"@tabler/icons-react\"\n\nfunction DropdownMenu({ ...props }: MenuPrimitive.Root.Props) {\n return <MenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) {\n return <MenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n}\n\nfunction DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) {\n return <MenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />\n}\n\nfunction DropdownMenuContent({\n align = \"start\",\n alignOffset = 0,\n side = \"bottom\",\n sideOffset = 4,\n className,\n ...props\n}: MenuPrimitive.Popup.Props &\n Pick<\n MenuPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <MenuPrimitive.Portal>\n <MenuPrimitive.Positioner\n className=\"isolate z-50 outline-none\"\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n >\n <MenuPrimitive.Popup\n data-slot=\"dropdown-menu-content\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100 z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto outline-none data-closed:overflow-hidden\", className )}\n {...props}\n />\n </MenuPrimitive.Positioner>\n </MenuPrimitive.Portal>\n )\n}\n\nfunction DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) {\n return <MenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: MenuPrimitive.GroupLabel.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.GroupLabel\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs data-[inset]:pl-8\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: MenuPrimitive.Item.Props & {\n inset?: boolean\n variant?: \"default\" | \"destructive\"\n}) {\n return (\n <MenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) {\n return <MenuPrimitive.SubmenuRoot data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: MenuPrimitive.SubmenuTrigger.Props & {\n inset?: boolean\n}) {\n return (\n <MenuPrimitive.SubmenuTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2 rounded-xl px-3 py-2 text-sm [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto\" />\n </MenuPrimitive.SubmenuTrigger>\n )\n}\n\nfunction DropdownMenuSubContent({\n align = \"start\",\n alignOffset = -3,\n side = \"right\",\n sideOffset = 0,\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuContent>) {\n return (\n <DropdownMenuContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 bg-popover text-popover-foreground min-w-36 rounded-2xl p-1 shadow-2xl ring-1 duration-100 w-auto\", className)}\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: MenuPrimitive.CheckboxItem.Props) {\n return (\n <MenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <MenuPrimitive.CheckboxItemIndicator>\n <IconCheck\n />\n </MenuPrimitive.CheckboxItemIndicator>\n </span>\n {children}\n </MenuPrimitive.CheckboxItem>\n )\n}\n\nfunction DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.Props) {\n return (\n <MenuPrimitive.RadioGroup\n data-slot=\"dropdown-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n ...props\n}: MenuPrimitive.RadioItem.Props) {\n return (\n <MenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span\n className=\"pointer-events-none absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <MenuPrimitive.RadioItemIndicator>\n <IconCheck\n />\n </MenuPrimitive.RadioItemIndicator>\n </span>\n {children}\n </MenuPrimitive.RadioItem>\n )\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: MenuPrimitive.Separator.Props) {\n return (\n <MenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction DropdownMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n )\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n}\n","import React from \"react\";\nimport { Button } from \"./ui/button\";\nimport { Textarea } from \"./ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport {\n IconArrowUp,\n IconAdjustmentsHorizontal,\n IconChevronDown,\n IconLoader2,\n} from \"@tabler/icons-react\";\nimport { ComposerOption, ComposerOptionGroup } from \"../types\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./ui/dropdown-menu\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (state?: Record<string, any>) => void;\n placeholder?: string;\n isLoading?: boolean;\n className?: string;\n options?: ComposerOptionGroup[];\n autoFocus?: boolean;\n defaultSelectedIds?: string[];\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n isLoading,\n className,\n options = [],\n autoFocus = false,\n defaultSelectedIds = [],\n}: ComposerProps) {\n const [selectedOptions, setSelectedOptions] = React.useState<Set<string>>(\n () => new Set(defaultSelectedIds)\n );\n\n const toggleOption = (\n id: string,\n groupOptions?: ComposerOption[],\n type: \"single\" | \"multiple\" = \"multiple\"\n ) => {\n const next = new Set(selectedOptions);\n if (type === \"single\") {\n const isAlreadySelected = next.has(id);\n // Remove all other options from this group\n if (groupOptions) {\n groupOptions.forEach((o) => next.delete(o.id));\n }\n\n if (!isAlreadySelected) {\n next.add(id);\n }\n } else {\n if (next.has(id)) {\n next.delete(id);\n } else {\n next.add(id);\n }\n }\n setSelectedOptions(next);\n };\n\n const handleInternalSubmit = () => {\n const state: Record<string, any> = {};\n\n // Handle grouped options\n options.forEach((group) => {\n const selectedInGroup = group.options.filter((o) =>\n selectedOptions.has(o.id)\n );\n\n if (selectedInGroup.length > 0) {\n if (group.type === \"single\") {\n state[group.id] = selectedInGroup[0].value;\n } else {\n state[group.id] = selectedInGroup.map((o) => ({\n id: o.id,\n value: o.value,\n }));\n }\n }\n });\n\n onSubmit(state);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleInternalSubmit();\n }\n };\n\n return (\n <div className={cn(\"relative flex flex-col w-full\", className)}>\n <div className=\"relative flex flex-col w-full border-input border-[1.5px] rounded-3xl bg-background shadow-sm focus-within:border-ring transition-all p-2\">\n <Textarea\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n className=\"min-h-[44px] max-h-[200px] border-none bg-transparent focus-visible:ring-0 focus-visible:ring-offset-0 px-3 py-2 text-[15px] resize-none\"\n autoFocus={autoFocus}\n />\n <div className=\"flex justify-between items-center px-1\">\n <div className=\"flex items-center gap-1\">\n {/* Grouped options dropdowns */}\n {options.map((group) => {\n const selectedInGroup = group.options.filter((o) =>\n selectedOptions.has(o.id)\n );\n const label =\n selectedInGroup.length === 0\n ? group.label\n : selectedInGroup.length === 1\n ? selectedInGroup[0].label\n : `${group.label} (${selectedInGroup.length})`;\n\n const isSingle = group.type === \"single\";\n\n return (\n <DropdownMenu key={group.id}>\n <DropdownMenuTrigger\n render={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n selectedInGroup.length > 0\n ? \"text-foreground bg-muted/50\"\n : \"text-muted-foreground\"\n )}\n >\n {label}\n <IconChevronDown className=\"h-3 w-3 opacity-50\" />\n </Button>\n }\n />\n <DropdownMenuContent align=\"start\" className=\"w-56\">\n <DropdownMenuGroup>\n <DropdownMenuLabel>{group.label}</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {group.options.map((option) => (\n <DropdownMenuCheckboxItem\n key={option.id}\n checked={selectedOptions.has(option.id)}\n onCheckedChange={() =>\n toggleOption(\n option.id,\n group.options,\n isSingle ? \"single\" : \"multiple\"\n )\n }\n onSelect={(e) => e.preventDefault()}\n >\n {option.label}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n })}\n </div>\n <Button\n type=\"submit\"\n disabled={(!value.trim() && !isLoading) || isLoading}\n size=\"icon-lg\"\n onClick={handleInternalSubmit}\n >\n {isLoading ? (\n <IconLoader2 className=\"h-5 w-5 animate-spin\" />\n ) : (\n <IconArrowUp className=\"h-5 w-5\" />\n )}\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-2xl py-6 text-sm ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-2 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6 group-data-[size=sm]/card:px-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"rounded-b-xl px-6 group-data-[size=sm]/card:px-4 [.border-t]:pt-6 group-data-[size=sm]/card:[.border-t]:pt-4 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import React from \"react\";\nimport {\n Card as CardBase,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n} from \"../ui/card\";\nimport { CardProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Card: React.FC<CardProps> = ({\n children,\n title,\n subtitle,\n className,\n style,\n}) => {\n return (\n <CardBase\n className={cn(\"min-w-96\", className)}\n style={style}\n >\n {(title || subtitle) && (\n <CardHeader className=\"pb-3\">\n {title && <CardTitle className=\"text-lg\">{title}</CardTitle>}\n {subtitle && <CardDescription>{subtitle}</CardDescription>}\n </CardHeader>\n )}\n <CardContent className=\"flex flex-col gap-4\">\n {children as React.ReactNode}\n </CardContent>\n </CardBase>\n );\n};\n","import React from \"react\";\nimport { RowProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Row: React.FC<RowProps> = ({\n children,\n gap = \"md\",\n align = \"start\",\n justify = \"start\",\n wrap = false,\n className,\n style,\n}) => {\n const gapClasses: Record<string, string> = {\n xs: \"gap-0\",\n sm: \"gap-1\",\n md: \"gap-2\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-row w-full\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-4\",\n alignClasses[align as keyof typeof alignClasses] || \"items-start\",\n justifyClasses[justify as keyof typeof justifyClasses] || \"justify-start\",\n wrap ? \"flex-wrap\" : \"flex-nowrap\",\n className\n )}\n style={style}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { ColProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Col: React.FC<ColProps> = ({\n children,\n gap = \"sm\",\n align = \"start\",\n justify = \"start\",\n wrap = \"nowrap\",\n flex = 1,\n width,\n height,\n padding,\n overflow,\n position = \"static\",\n className,\n style,\n}) => {\n const gapClasses: Record<string, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n // Automatically add scrollable className for auto/scroll overflow\n const overflowClasses = {\n auto: \"overflow-auto\",\n hidden: \"overflow-hidden\",\n scroll: \"overflow-scroll\",\n visible: \"overflow-visible\",\n };\n\n const positionClasses = {\n static: \"static\",\n relative: \"relative\",\n absolute: \"absolute\",\n fixed: \"fixed\",\n sticky: \"sticky\",\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-2\",\n alignClasses[align as keyof typeof alignClasses] || \"items-start\",\n justifyClasses[justify as keyof typeof justifyClasses] || \"justify-start\",\n wrap === \"wrap\" ? \"flex-wrap\" : \"flex-nowrap\",\n overflow && (overflowClasses[overflow as keyof typeof overflowClasses]),\n position && positionClasses[position as keyof typeof positionClasses],\n className\n )}\n style={{\n flex: flex,\n width: width,\n height: height,\n padding: padding,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { BoxProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Box: React.FC<BoxProps> = ({\n children,\n padding = \"md\",\n margin,\n background,\n border = false,\n borderRadius,\n width,\n height,\n overflow = \"visible\",\n className,\n style,\n}) => {\n const paddingClasses: Record<string, string> = {\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n };\n\n const overflowClasses = {\n auto: \"overflow-auto\",\n hidden: \"overflow-hidden\",\n scroll: \"overflow-scroll\",\n visible: \"overflow-visible\",\n };\n\n return (\n <div\n className={cn(\n paddingClasses[padding as keyof typeof paddingClasses] || \"p-4\",\n border && \"border rounded-md\",\n overflowClasses[overflow as keyof typeof overflowClasses],\n className\n )}\n style={{\n margin: margin,\n background: background ?? undefined,\n borderRadius: borderRadius,\n width: width,\n height: height,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { SpacerProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Spacer: React.FC<SpacerProps> = ({\n size = \"md\",\n direction = \"vertical\",\n className,\n style,\n}) => {\n const sizeClasses: Record<string, string> = {\n xs: \"p-0.5\",\n sm: \"p-1\",\n md: \"p-2\",\n lg: \"p-4\",\n xl: \"p-8\",\n };\n\n return (\n <div\n className={cn(\n direction === \"vertical\" ? \"w-full\" : \"h-full\",\n sizeClasses[size as keyof typeof sizeClasses] || \"p-2\",\n className\n )}\n style={style}\n />\n );\n};\n","import { Separator as SeparatorPrimitive } from \"@base-ui/react/separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n ...props\n}: SeparatorPrimitive.Props) {\n return (\n <SeparatorPrimitive\n data-slot=\"separator\"\n orientation={orientation}\n className={cn(\n \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:w-px data-[orientation=vertical]:self-stretch\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Separator }\n","import React from \"react\";\nimport { Separator } from \"../ui/separator\";\nimport { DividerProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n className,\n style,\n}) => {\n return (\n <Separator\n orientation={orientation as \"horizontal\" | \"vertical\"}\n className={cn(\"my-4\", className)}\n style={style}\n />\n );\n};\n","import React from \"react\";\nimport { ListProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const List: React.FC<ListProps> = ({ children, width, className, style }) => {\n return (\n <div\n className={cn(\"flex flex-col list-none p-0 m-0\", className)}\n style={{\n width: width,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import React from \"react\";\nimport { ListItemProps } from \"./component-types\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n orientation = \"horizontal\",\n gap = \"md\",\n align,\n justify = \"start\",\n onClickAction,\n width,\n padding = \"md\",\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const paddingClasses: Record<string, string> = {\n xs: \"px-1.5 py-1\",\n sm: \"px-2 py-1.5\",\n md: \"px-3 py-2\",\n lg: \"px-4 py-3\",\n xl: \"px-6 py-4\",\n };\n\n const isInteractive = !!onClickAction;\n \n const gapClasses: Record<string, string> = {\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-3\",\n lg: \"gap-4\",\n xl: \"gap-6\",\n };\n\n const resolvedAlign = align ?? (orientation === \"vertical\" ? \"start\" : \"center\");\n\n const alignClasses: Record<string, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n };\n\n const justifyClasses: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n };\n\n const handleClick = () => {\n if (onClickAction) {\n sendEvent(onClickAction as any);\n }\n };\n\n return (\n <div\n onClick={isInteractive ? handleClick : undefined}\n className={cn(\n \"flex rounded-md transition-colors\",\n orientation === \"horizontal\" ? \"flex-row\" : \"flex-col\",\n gapClasses[gap as keyof typeof gapClasses] || \"gap-3\",\n alignClasses[resolvedAlign as keyof typeof alignClasses],\n justifyClasses[justify as keyof typeof justifyClasses],\n paddingClasses[padding as keyof typeof paddingClasses] || \"px-3 py-2\",\n isInteractive ? \"cursor-pointer hover:bg-muted\" : \"cursor-default\",\n className\n )}\n style={{\n width: width,\n ...style,\n }}\n >\n {children as React.ReactNode}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) {\n return (\n <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n )\n}\n\nfunction DialogPortal({ ...props }: DialogPrimitive.Portal.Props) {\n return (\n <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n )\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-200 supports-backdrop-filter:backdrop-blur-sm fixed inset-0 isolate z-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n ...props\n}: DialogPrimitive.Popup.Props) {\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 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 sm:rounded-lg outline-none\",\n className\n )}\n {...props}\n />\n </DialogPortal>\n )\n}\n\nfunction DialogClose({\n className,\n ...props\n}: DialogPrimitive.Close.Props) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogClose,\n DialogOverlay,\n DialogPortal,\n}\n\n","import React, { useState } from \"react\";\nimport { ImageProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogTrigger,\n DialogClose,\n} from \"@/components/ui/dialog\";\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt,\n size = \"sm\",\n className,\n style,\n}) => {\n const [hasError, setHasError] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [open, setOpen] = useState(false);\n\n const sizes = {\n sm: \"h-11\",\n md: \"h-22\",\n lg: \"h-44\",\n };\n\n const handleError = () => {\n setHasError(true);\n setIsLoading(false);\n };\n\n const handleLoad = () => {\n setIsLoading(false);\n };\n\n if (hasError) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center rounded-md border bg-muted text-muted-foreground\",\n sizes[size as keyof typeof sizes] || \"h-11 w-11\",\n className\n )}\n style={style}\n >\n <span className=\"text-[10px]\">Error</span>\n </div>\n );\n }\n\n return (\n <Dialog open={open} onOpenChange={setOpen}>\n <DialogTrigger>\n <div\n className={cn(\"relative overflow-hidden rounded-md border cursor-pointer\", className)}\n style={style}\n >\n <img\n src={src}\n alt={alt}\n onError={handleError}\n onLoad={handleLoad}\n className={cn(\n \"block h-auto w-full transition-opacity duration-200 hover:opacity-90\",\n isLoading ? \"opacity-0\" : \"opacity-100\",\n sizes[size as keyof typeof sizes]\n )}\n />\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-muted animate-pulse\" />\n )}\n </div>\n </DialogTrigger>\n <DialogContent\n className=\"max-w-[90vw] max-h-[90vh] p-0 bg-transparent border-none shadow-none\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"relative flex items-center justify-center\">\n <DialogClose className=\"absolute -top-10 right-0 text-white hover:text-gray-300 transition-colors z-10 bg-black/50 rounded-full p-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </DialogClose>\n <img\n src={src}\n alt={alt || \"Enlarged image\"}\n className=\"max-w-full max-h-[90vh] object-contain rounded-lg\"\n />\n </div>\n </DialogContent>\n </Dialog>\n );\n};\n","import React from \"react\";\nimport * as ICONS from \"@tabler/icons-react\";\nimport { IconProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Icon: React.FC<IconProps> = ({\n name,\n size,\n color,\n className,\n style,\n}) => {\n const IconComponent = ICONS[name as keyof typeof ICONS];\n\n if (!IconComponent) return null;\n\n const sizeMap = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 28,\n xxl: 32,\n };\n\n const resolvedSize =\n typeof size === \"string\" && size in sizeMap\n ? sizeMap[size as keyof typeof sizeMap]\n : typeof size === \"number\"\n ? size\n : 20;\n\n return (\n <div\n className={cn(\"inline-flex items-center justify-center\", className)}\n style={style}\n >\n <IconComponent\n size={resolvedSize}\n color={color || \"currentColor\"}\n strokeWidth={1.5}\n />\n </div>\n );\n};\n","import { mergeProps } from \"@base-ui/react/merge-props\";\nimport { useRender } from \"@base-ui/react/use-render\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"h-5 gap-1 rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium transition-all has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&>svg]:size-3! inline-flex items-center justify-center w-fit whitespace-nowrap shrink-0 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-colors overflow-hidden group/badge\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground [a]:hover:bg-primary/80\",\n secondary:\n \"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80\",\n destructive:\n \"bg-destructive/10 [a]:hover:bg-destructive/20 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 text-destructive dark:bg-destructive/20\",\n outline:\n \"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground bg-input/30\",\n ghost:\n \"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nfunction Badge({\n className,\n variant = \"default\",\n render,\n ...props\n}: useRender.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return useRender({\n defaultTagName: \"span\",\n props: mergeProps<\"span\">(\n {\n className: cn(badgeVariants({ className, variant })),\n },\n props\n ),\n render,\n state: {\n slot: \"badge\",\n variant,\n },\n });\n}\n\nexport { Badge, badgeVariants };\n","import React from \"react\";\nimport { Badge as BadgeBase } from \"../ui/badge\";\nimport { BadgeProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Badge: React.FC<BadgeProps> = ({\n label,\n variant = \"primary\",\n className,\n style,\n}) => {\n const variantMap: Record<string, \"default\" | \"secondary\" | \"destructive\" | \"outline\"> = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n success: \"default\", // Mapping success to default/primary\n warning: \"secondary\", // Mapping warning to secondary\n };\n\n return (\n <BadgeBase\n variant={variantMap[variant as keyof typeof variantMap] || \"default\"}\n className={className}\n style={style}\n >\n {label}\n </BadgeBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { ChartProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Chart: React.FC<ChartProps> = ({\n data,\n chartType = \"bar\",\n size = \"md\",\n showValues = false,\n showGrid = false,\n showTooltips = true,\n className,\n style,\n}) => {\n const [tooltip, setTooltip] = useState<{\n visible: boolean;\n x: number;\n y: number;\n label: string;\n value: number;\n } | null>(null);\n\n // Ensure data is an array\n if (!Array.isArray(data)) {\n return (\n <div className=\"p-4 text-destructive border border-destructive/20 rounded-md bg-destructive/5\">\n Error: Chart data must be an array\n </div>\n );\n }\n\n // Calculate max value for scaling\n const maxValue = Math.max(...data.map((d) => d.value), 1);\n const padding = { top: 40, right: 20, bottom: 40, left: 20 };\n \n const chartWidth =\n size === \"sm\" ? 300 : size === \"md\" ? 450 : size === \"lg\" ? 600 : 800;\n const chartHeight =\n size === \"sm\" ? 150 : size === \"md\" ? 250 : size === \"lg\" ? 350 : 450;\n\n const defaultColors = [\n \"hsl(var(--primary))\",\n \"hsl(var(--chart-1, 217 91% 60%))\",\n \"hsl(var(--chart-2, 142 71% 45%))\",\n \"hsl(var(--chart-3, 31 92% 55%))\",\n \"hsl(var(--chart-4, 346 84% 61%))\",\n \"hsl(var(--chart-5, 271 81% 56%))\",\n ];\n\n const getColor = (index: number, color?: string) => {\n if (color) return color;\n return defaultColors[index % defaultColors.length];\n };\n\n const renderGrid = () => {\n if (!showGrid) return null;\n return [0, 0.25, 0.5, 0.75, 1].map((fraction, i) => (\n <line\n key={i}\n x1={padding.left}\n y1={padding.top + chartHeight * (1 - fraction)}\n x2={chartWidth - padding.right}\n y2={padding.top + chartHeight * (1 - fraction)}\n stroke=\"currentColor\"\n className=\"text-border\"\n strokeDasharray=\"4,4\"\n strokeOpacity={0.5}\n />\n ));\n };\n\n const renderTooltip = () => {\n if (!tooltip || !tooltip.visible) return null;\n\n return (\n <g className=\"pointer-events-none\">\n <rect\n x={tooltip.x - 40}\n y={tooltip.y - 45}\n width={80}\n height={40}\n fill=\"hsl(var(--popover))\"\n stroke=\"hsl(var(--border))\"\n strokeWidth={1}\n rx={6}\n className=\"shadow-md\"\n />\n <text\n x={tooltip.x}\n y={tooltip.y - 28}\n textAnchor=\"middle\"\n className=\"fill-popover-foreground text-[10px] font-semibold\"\n >\n {tooltip.value}\n </text>\n <text\n x={tooltip.x}\n y={tooltip.y - 14}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[9px]\"\n >\n {tooltip.label}\n </text>\n </g>\n );\n };\n\n const renderBarChart = () => {\n const totalBarSpace = chartWidth - padding.left - padding.right;\n const barSpacing = data.length > 1 ? (totalBarSpace * 0.1) / data.length : 0;\n const actualBarWidth = (totalBarSpace - barSpacing * (data.length + 1)) / data.length;\n\n return (\n <svg width={chartWidth} height={chartHeight + padding.bottom} className=\"overflow-visible\">\n {renderGrid()}\n {data.map((item, index) => {\n const barHeight = (item.value / maxValue) * chartHeight;\n const x = padding.left + barSpacing + index * (actualBarWidth + barSpacing);\n const y = padding.top + chartHeight - barHeight;\n\n return (\n <g key={index}>\n <rect\n x={x}\n y={y}\n width={actualBarWidth}\n height={barHeight}\n fill={getColor(index, item.color)}\n rx={4}\n onMouseEnter={() => showTooltips && setTooltip({ visible: true, x: x + actualBarWidth / 2, y: y - 5, label: item.label, value: item.value })}\n onMouseLeave={() => setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })}\n className=\"transition-all hover:opacity-80 cursor-pointer\"\n />\n <text\n x={x + actualBarWidth / 2}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {item.label}\n </text>\n </g>\n );\n })}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderLineChart = () => {\n const points = data.map((item, index) => ({\n x: padding.left + (index / Math.max(data.length - 1, 1)) * (chartWidth - padding.left - padding.right),\n y: padding.top + chartHeight - (item.value / maxValue) * chartHeight,\n ...item\n }));\n\n const pathData = points.map((p, i) => `${i === 0 ? \"M\" : \"L\"} ${p.x} ${p.y}`).join(\" \");\n\n return (\n <svg width={chartWidth} height={chartHeight + padding.bottom} className=\"overflow-visible\">\n {renderGrid()}\n <path d={pathData} fill=\"none\" stroke={getColor(0)} strokeWidth={3} className=\"transition-all\" />\n {points.map((point, index) => (\n <g key={index}>\n <circle\n cx={point.x}\n cy={point.y}\n r={5}\n fill={getColor(index, point.color)}\n stroke=\"hsl(var(--background))\"\n strokeWidth={2}\n onMouseEnter={() => showTooltips && setTooltip({ visible: true, x: point.x, y: point.y - 5, label: point.label, value: point.value })}\n onMouseLeave={() => setTooltip({ visible: false, x: 0, y: 0, label: \"\", value: 0 })}\n className=\"hover:r-6 transition-all cursor-pointer\"\n />\n <text\n x={point.x}\n y={padding.top + chartHeight + 20}\n textAnchor=\"middle\"\n className=\"fill-muted-foreground text-[10px]\"\n >\n {point.label}\n </text>\n </g>\n ))}\n {showTooltips && renderTooltip()}\n </svg>\n );\n };\n\n const renderChart = () => {\n switch (chartType) {\n case \"line\":\n return renderLineChart();\n case \"bar\":\n default:\n return renderBarChart();\n }\n };\n\n return (\n <div className={cn(\"py-4 overflow-x-auto\", className)} style={style}>\n {renderChart()}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\nimport { TextProps } from \"./component-types\";\n\nexport const Text: React.FC<TextProps> = ({\n value,\n size = \"md\",\n weight = \"normal\",\n align = \"start\",\n className,\n style,\n}) => {\n const sizeClasses: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n };\n\n const weightClasses: Record<string, string> = {\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n };\n\n const alignClasses: Record<string, string> = {\n start: \"text-left\",\n center: \"text-center\",\n end: \"text-right\",\n stretch: \"text-justify\",\n };\n\n return (\n <span\n className={cn(\n sizeClasses[size as keyof typeof sizeClasses] || \"text-base\",\n weightClasses[weight as keyof typeof weightClasses] || \"font-normal\",\n alignClasses[align as keyof typeof alignClasses] || \"text-left\",\n className\n )}\n style={style}\n >\n {value}\n </span>\n );\n};\n","import React from \"react\";\nimport { HeadingProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Heading: React.FC<HeadingProps> = ({\n value,\n level = 2,\n className,\n style,\n}) => {\n const Tag = `h${level}` as \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\";\n\n const levelClasses: Record<string, string> = {\n h1: \"text-3xl font-bold tracking-tight\",\n h2: \"text-2xl font-semibold tracking-tight\",\n h3: \"text-xl font-semibold tracking-tight\",\n h4: \"text-lg font-semibold tracking-tight\",\n h5: \"text-base font-semibold\",\n h6: \"text-sm font-semibold\",\n };\n\n return (\n <Tag\n className={cn(\n levelClasses[Tag] || levelClasses.h2,\n \"text-foreground\",\n className\n )}\n style={style}\n >\n {value}\n </Tag>\n );\n};\n","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 h-9 rounded-4xl border px-3 py-1 text-base transition-colors file:h-7 file:text-sm file:font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({ className, ...props }: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/components/ui/label\"\nimport { Separator } from \"@/components/ui/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\"gap-6 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\"mb-3 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base\", className)}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\"data-[invalid=true]:text-destructive gap-3 group/field flex w-full\", {\n variants: {\n orientation: {\n vertical:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n horizontal:\n \"flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n responsive:\n \"flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n})\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"gap-1 group/field-content flex flex-1 flex-col leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"has-data-checked:bg-primary/5 has-data-checked:border-primary/50 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-xl has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4 group/field-label peer/field-label flex w-fit leading-snug\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"last:mt-0 nth-last-2:-mt-1\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\"-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative\", className)}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"text-muted-foreground px-2 bg-background relative mx-auto block w-fit\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors?.length) {\n return null\n }\n\n const uniqueErrors = [\n ...new Map(errors.map((error) => [error?.message, error])).values(),\n ]\n\n if (uniqueErrors?.length == 1) {\n return uniqueErrors[0]?.message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {uniqueErrors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { Input as InputBase } from \"../ui/input\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { InputProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Input: React.FC<InputProps> = ({\n inputType = \"text\",\n placeholder,\n defaultValue,\n value,\n label,\n name,\n disabled,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <InputBase\n type={inputType}\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n />\n </Field>\n );\n};\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { Textarea as TextareaBase } from \"../ui/textarea\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { TextareaProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Textarea: React.FC<TextareaProps> = ({\n placeholder,\n defaultValue,\n value,\n label,\n name,\n disabled,\n rows,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <TextareaBase\n name={name}\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n rows={rows}\n onChange={handleChange}\n />\n </Field>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\n\nimport { cn } from \"@/lib/utils\"\nimport { IconSelector, IconCheck, IconChevronUp, IconChevronDown } from \"@tabler/icons-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-4xl border px-3 py-2 text-sm transition-colors focus-visible:ring-[3px] aria-invalid:ring-[3px] data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:flex *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <IconSelector className=\"text-muted-foreground size-4 pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n className={cn(\"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto\", className )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-3 py-2.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-2.5 rounded-xl py-2 pr-8 pl-3 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <IconCheck className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border/50 -mx-1 my-1 h-px pointer-events-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\", className)}\n {...props}\n >\n <IconChevronUp\n />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\", className)}\n {...props}\n >\n <IconChevronDown\n />\n </SelectPrimitive.ScrollDownArrow>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport {\n Select as SelectRoot,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Field, FieldTitle } from \"../ui/field\";\nimport { SelectProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Select: React.FC<SelectProps> = ({\n options,\n defaultValue,\n value,\n label,\n name,\n disabled,\n placeholder,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleValueChange = (val: string) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: val,\n },\n } as any);\n }\n };\n\n return (\n <Field className={cn(\"w-full\", className)} style={style}>\n {label && <FieldTitle>{label}</FieldTitle>}\n <SelectRoot\n defaultValue={defaultValue}\n value={value}\n disabled={disabled}\n onValueChange={handleValueChange}\n >\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={placeholder || \"Select an option\"} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </Field>\n );\n};\n","import React from \"react\";\nimport { Label as LabelBase } from \"../ui/label\";\nimport { LabelProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Label: React.FC<LabelProps> = ({\n value,\n htmlFor,\n required,\n className,\n style,\n}) => {\n return (\n <LabelBase\n htmlFor={htmlFor}\n className={cn(\"flex items-center gap-1\", className)}\n style={style}\n >\n {value}\n {required && <span className=\"text-destructive\">*</span>}\n </LabelBase>\n );\n};\n","import React from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { CheckboxProps } from \"./component-types\";\nimport { Label } from \"./Label\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n name,\n value = \"on\",\n checked,\n defaultChecked,\n disabled,\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name || \"\",\n value: value,\n checked: e.target.checked,\n },\n } as any);\n }\n };\n\n return (\n <div\n className={cn(\"flex items-center gap-2\", className)}\n style={style}\n >\n <input\n type=\"checkbox\"\n name={name}\n id={name}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"h-4 w-4 rounded border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n {label && (\n <Label\n htmlFor={name}\n value={label}\n className={cn(\n \"cursor-pointer select-none text-sm font-medium leading-none\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { RadioGroupProps } from \"./component-types\";\nimport { Label } from \"./Label\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const RadioGroup: React.FC<RadioGroupProps> = ({\n name,\n options,\n defaultValue,\n value,\n label,\n disabled,\n orientation = \"vertical\",\n onChangeAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChangeAction) {\n sendEvent({\n ...onChangeAction,\n data: {\n name: name,\n value: e.target.value,\n },\n } as any);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col gap-3\", className)} style={style}>\n {label && <Label value={label} className=\"text-sm font-semibold\" />}\n <div\n className={cn(\n \"flex\",\n orientation === \"horizontal\" ? \"flex-row gap-4\" : \"flex-col gap-2\"\n )}\n >\n {options.map((option, index) => {\n const radioId = `${name}-${index}`;\n const isDisabled = disabled || option.disabled;\n\n return (\n <div\n key={index}\n className=\"flex items-center gap-2\"\n >\n <input\n type=\"radio\"\n name={name}\n id={radioId}\n value={option.value}\n defaultChecked={\n defaultValue === option.value ? true : undefined\n }\n checked={value === option.value}\n disabled={isDisabled}\n onChange={handleChange}\n className=\"h-4 w-4 border-gray-300 text-primary focus:ring-primary disabled:cursor-not-allowed disabled:opacity-50\"\n />\n <Label\n htmlFor={radioId}\n value={option.label}\n className={cn(\n \"cursor-pointer select-none text-sm font-medium leading-none\",\n isDisabled && \"cursor-not-allowed opacity-50\"\n )}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { Button as ButtonBase } from \"../ui/button\";\nimport { ButtonProps } from \"./component-types\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Button: React.FC<ButtonProps> = ({\n label,\n variant = \"primary\",\n size = \"default\",\n disabled = false,\n fullWidth = false,\n onClickAction,\n className,\n style,\n}) => {\n const { sendEvent } = useMelony();\n\n const variantMap: Record<string, \"default\" | \"secondary\" | \"destructive\" | \"outline\" | \"ghost\" | \"link\"> = {\n primary: \"default\",\n secondary: \"secondary\",\n danger: \"destructive\",\n outline: \"outline\",\n ghost: \"ghost\",\n link: \"link\",\n success: \"default\", // Success doesn't have a direct shadcn mapping in base variant, default is usually primary\n };\n\n return (\n <ButtonBase\n variant={variantMap[variant as keyof typeof variantMap] || \"default\"}\n size={size === \"md\" ? \"default\" : (size as any)}\n disabled={disabled}\n className={cn(fullWidth ? \"w-full\" : undefined, className)}\n style={style}\n onClick={() => {\n if (onClickAction) {\n sendEvent(onClickAction as any);\n }\n }}\n >\n {label}\n </ButtonBase>\n );\n};\n","import React, { useState } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { FormProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\n\nexport const Form: React.FC<FormProps> = ({ children, onSubmitAction, className, style }) => {\n const { sendEvent } = useMelony();\n const [isSubmitted, setIsSubmitted] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n \n // Prevent double submission\n if (isSubmitted) return;\n \n const formData = new FormData(e.currentTarget);\n const data: Record<string, any> = {};\n formData.forEach((value, key) => {\n data[key] = value;\n });\n\n if (onSubmitAction) {\n setIsSubmitted(true);\n sendEvent({\n ...onSubmitAction,\n data: {\n ...(onSubmitAction.data || {}),\n ...data,\n },\n } as any);\n }\n };\n\n return (\n <form \n onSubmit={handleSubmit} \n className={cn(\"w-full\", className)}\n style={style}\n >\n <fieldset \n disabled={isSubmitted} \n className=\"m-0 border-0 p-0\"\n >\n <div\n className={cn(\n \"flex flex-col gap-4 transition-opacity\",\n isSubmitted && \"opacity-60 pointer-events-none\"\n )}\n >\n {children as React.ReactNode}\n </div>\n </fieldset>\n </form>\n );\n};\n","import React from \"react\";\nimport { StarterPrompt } from \"@/types\";\nimport { Button } from \"./elements\";\n\ninterface StarterPromptsProps {\n prompts: StarterPrompt[];\n onPromptClick: (prompt: string) => void;\n}\n\nexport function StarterPrompts({\n prompts,\n onPromptClick,\n}: StarterPromptsProps) {\n if (!prompts || prompts.length === 0) {\n return null;\n }\n\n return (\n <div className=\"flex flex-col space-y-4 animate-in fade-in slide-in-from-bottom-4 duration-500 mt-auto max-w-2xl\">\n <div className=\"space-y-2\">\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n What can I help with today?\n </h2>\n </div>\n <div className=\"flex flex-col gap-2 w-full\">\n {prompts.map((item, index) => (\n <Button\n key={index}\n label={item.label}\n variant=\"ghost\"\n size=\"lg\"\n onClickAction={{\n type: \"text\",\n role: \"user\",\n data: { content: item.prompt },\n }}\n className=\"w-full justify-start\"\n />\n ))}\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport type { UINode } from \"melony\";\nimport * as Elements from \"./elements\";\n\nexport interface UIRendererProps {\n node: UINode;\n}\n\n/**\n * Maps UINode types to refined React elements aligned with shadcn.\n * UI is built via elements always starting with a card element as a root.\n * Children are always rendered elements, never raw strings.\n */\nexport function UIRenderer({ node }: UIRendererProps) {\n const { type, props, children } = node;\n\n // Map node type to element component\n const typeMap: Record<string, React.FC<any>> = {\n card: Elements.Card,\n button: Elements.Button,\n row: Elements.Row,\n col: Elements.Col,\n text: Elements.Text,\n heading: Elements.Heading,\n badge: Elements.Badge,\n input: Elements.Input,\n textarea: Elements.Textarea,\n select: Elements.Select,\n checkbox: Elements.Checkbox,\n radioGroup: Elements.RadioGroup,\n spacer: Elements.Spacer,\n divider: Elements.Divider,\n box: Elements.Box,\n image: Elements.Image,\n icon: Elements.Icon,\n list: Elements.List,\n listItem: Elements.ListItem,\n form: Elements.Form,\n chart: Elements.Chart,\n label: Elements.Label,\n };\n\n const Component = typeMap[type];\n\n if (!Component) {\n return (\n <div className=\"text-destructive italic text-sm p-2 border border-dashed rounded border-destructive/50 bg-destructive/5\">\n [Unknown component: {type}]\n </div>\n );\n }\n\n // Recursively render children\n // These will be passed as React.ReactNode to the components\n const renderedChildren = children?.map((child, i) => (\n <UIRenderer key={i} node={child} />\n ));\n\n const componentProps = { ...props };\n\n return <Component {...componentProps}>{renderedChildren}</Component>;\n}\n","import React from \"react\";\nimport { Event } from \"melony\";\nimport { UIRenderer } from \"@/components/ui-renderer\";\n\ninterface MessageContentProps {\n events: Event[];\n}\n\nexport function MessageContent({ events }: MessageContentProps) {\n return (\n <>\n {events.map((event, index) => {\n if (event.type === \"text-delta\") {\n return <span key={index}>{event.data?.delta}</span>;\n }\n if (event.type === \"text\") {\n return (\n <p key={index}>\n {event.data?.content || event.data?.text}\n </p>\n );\n }\n if (event.ui) {\n return <UIRenderer key={index} node={event.ui} />;\n }\n return null;\n })}\n </>\n );\n}\n\n","import React from \"react\";\nimport { Message } from \"@/types\";\nimport { cn } from \"@/lib/utils\";\nimport { MessageContent } from \"./message-content\";\n\ninterface MessageProps {\n message: Message;\n}\n\nexport function MessageBubble({ message }: MessageProps) {\n const isUser = message.role === \"user\";\n\n return (\n <div\n className={cn(\n \"flex flex-col\",\n isUser ? \"items-end\" : \"items-start\"\n )}\n >\n <div\n className={cn(\n \"flex flex-col items-start max-w-[85%] rounded-2xl px-4 py-2 space-y-4 whitespace-pre-wrap\",\n isUser\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\"\n )}\n >\n <MessageContent events={message.content} />\n </div>\n </div>\n );\n}\n\n","import { useState } from \"react\";\nimport {\n IconChevronUp,\n IconChevronDown,\n IconLoader2,\n} from \"@tabler/icons-react\";\n\ninterface LoadingIndicatorProps {\n status?: {\n message: string;\n details?: string;\n };\n}\n\nexport function LoadingIndicator({ status }: LoadingIndicatorProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n const message = status?.message || \"Processing...\";\n const details = status?.details;\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center gap-2 text-muted-foreground group\">\n <IconLoader2 className=\"size-3.5 animate-spin\" />\n <div className=\"animate-pulse\">{message}</div>\n {details && (\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"p-0.5 hover:bg-muted rounded-sm transition-colors flex items-center justify-center\"\n title={isExpanded ? \"Hide details\" : \"Show details\"}\n >\n {isExpanded ? (\n <IconChevronUp className=\"size-3.5 opacity-50 group-hover:opacity-100\" />\n ) : (\n <IconChevronDown className=\"size-3.5 opacity-50 group-hover:opacity-100\" />\n )}\n </button>\n )}\n </div>\n {isExpanded && details && (\n <div className=\"text-[10px] leading-relaxed font-mono bg-muted/30 p-2.5 rounded border border-border/50 max-h-64 overflow-y-auto whitespace-pre-wrap text-muted-foreground shadow-sm\">\n {details}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\n\ninterface ErrorDisplayProps {\n error: Error;\n}\n\nexport function ErrorDisplay({ error }: ErrorDisplayProps) {\n return (\n <div className=\"text-destructive p-2 border border-destructive rounded-md bg-destructive/10\">\n {error.message}\n </div>\n );\n}\n\n","import { useMemo } from \"react\";\nimport { Message } from \"@/types\";\nimport { MessageBubble } from \"./message\";\nimport { LoadingIndicator } from \"./loading-indicator\";\nimport { ErrorDisplay } from \"./error-display\";\n\ninterface MessageListProps {\n messages: Message[];\n isLoading?: boolean;\n error?: Error | null;\n loadingStatus?: {\n message: string;\n details?: string;\n };\n}\n\nexport function MessageList({\n messages,\n isLoading,\n error,\n loadingStatus,\n}: MessageListProps) {\n if (messages.length === 0) {\n return null;\n }\n\n // Check if the last message has text-delta events (text is streaming)\n const isTextStreaming = useMemo(() => {\n if (messages.length === 0 || !isLoading) return false;\n const lastMessage = messages[messages.length - 1];\n return lastMessage.content.some((event) => event.type === \"text-delta\");\n }, [messages, isLoading]);\n\n console.log(\"MESSAGES\", messages);\n\n return (\n <div className=\"space-y-6\">\n {messages.map((message, index) => (\n <MessageBubble key={index} message={message} />\n ))}\n {isLoading && !isTextStreaming && (\n <LoadingIndicator status={loadingStatus} />\n )}\n {error && <ErrorDisplay error={error} />}\n </div>\n );\n}\n","import { useState, useRef, useEffect } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOptionGroup } from \"@/types\";\nimport { Composer } from \"./composer\";\nimport { StarterPrompts } from \"./starter-prompts\";\nimport { MessageList } from \"./message-list\";\n\ninterface ThreadProps {\n className?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n onStarterPromptClick?: (prompt: string) => void;\n options?: ComposerOptionGroup[];\n autoFocus?: boolean;\n defaultSelectedIds?: string[];\n}\n\nexport function Thread({\n className,\n placeholder = \"Type a message...\",\n starterPrompts,\n onStarterPromptClick,\n options,\n autoFocus = false,\n defaultSelectedIds,\n}: ThreadProps) {\n const { messages, isLoading, error, sendEvent, loadingStatus } = useMelony();\n const [input, setInput] = useState(\"\");\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n\n const handleSubmit = async (\n state?: Record<string, any>,\n overrideInput?: string\n ) => {\n const text = (overrideInput ?? input).trim();\n if (!text || isLoading) return;\n\n if (!overrideInput) setInput(\"\");\n await sendEvent(\n {\n type: \"text\",\n role: \"user\",\n data: { content: text },\n },\n { state }\n );\n };\n\n const handleStarterPromptClick = (prompt: string) => {\n if (onStarterPromptClick) {\n onStarterPromptClick(prompt);\n } else {\n handleSubmit(undefined, prompt);\n }\n };\n\n const showStarterPrompts =\n messages.length === 0 && starterPrompts && starterPrompts.length > 0;\n\n return (\n <div\n className={cn(\"relative flex flex-col h-full bg-background\", className)}\n >\n <div className=\"flex-1 overflow-y-auto p-4 pb-36\">\n <div\n className={cn(\n \"max-w-4xl mx-auto w-full p-4\",\n showStarterPrompts && \"min-h-full flex flex-col\"\n )}\n >\n {showStarterPrompts && (\n <StarterPrompts\n prompts={starterPrompts}\n onPromptClick={handleStarterPromptClick}\n />\n )}\n <MessageList\n messages={messages}\n isLoading={isLoading}\n error={error}\n loadingStatus={loadingStatus}\n />\n </div>\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"absolute bottom-0 p-4 w-full\">\n <div className=\"max-w-4xl mx-auto\">\n <Composer\n value={input}\n onChange={setInput}\n onSubmit={handleSubmit}\n placeholder={placeholder}\n isLoading={isLoading}\n options={options}\n autoFocus={autoFocus}\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface ChatHeaderProps {\n /**\n * The title to display in the header. Can be a string or a React node for custom content.\n */\n title?: string | React.ReactNode;\n \n /**\n * Content to render on the left side of the header (e.g., back button).\n */\n leftContent?: React.ReactNode;\n \n /**\n * Content to render on the right side of the header (e.g., action buttons).\n */\n rightContent?: React.ReactNode;\n \n /**\n * Custom className for the header container.\n */\n className?: string;\n \n /**\n * Custom className for the title element (only applies when title is a string).\n */\n titleClassName?: string;\n \n /**\n * Custom children to render inside the header. If provided, this takes precedence over title/leftContent/rightContent.\n */\n children?: React.ReactNode;\n}\n\n/**\n * A shared, customizable header component for chat interfaces.\n * Used consistently across ChatFull, ChatSidebar, and ChatPopup components.\n */\nexport function ChatHeader({\n title,\n leftContent,\n rightContent,\n className,\n titleClassName,\n children,\n}: ChatHeaderProps) {\n // If children are provided, use them for complete customization\n if (children) {\n return (\n <div className={cn(\"p-4 border-b border-border h-14 flex items-center shrink-0\", className)}>\n {children}\n </div>\n );\n }\n\n return (\n <div className={cn(\"p-4 border-b border-border h-14 flex items-center justify-between shrink-0\", className)}>\n <div className=\"flex items-center gap-2 flex-1 min-w-0\">\n {leftContent}\n {/* {title && (\n <div className={cn(\n \"text-sm font-semibold truncate opacity-50\",\n typeof title === \"string\" ? titleClassName : \"\"\n )}>\n {title}\n </div>\n )} */}\n </div>\n {rightContent && (\n <div className=\"flex items-center gap-1 shrink-0 ml-2\">\n {rightContent}\n </div>\n )}\n </div>\n );\n}\n\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { IconPlus, IconMessage, IconTrash } from \"@tabler/icons-react\";\nimport { useThreads } from \"@/hooks/use-threads\";\n\nexport interface ThreadListProps {\n className?: string;\n emptyState?: React.ReactNode;\n onThreadSelect?: (threadId: string) => void;\n}\n\nexport const ThreadList: React.FC<ThreadListProps> = ({\n className,\n emptyState,\n onThreadSelect,\n}) => {\n const { threads, activeThreadId, selectThread, createThread, deleteThread } =\n useThreads();\n\n const handleThreadClick = (threadId: string) => {\n if (threadId !== activeThreadId) {\n selectThread(threadId);\n }\n onThreadSelect?.(threadId);\n };\n\n const handleDelete = async (e: React.MouseEvent, threadId: string) => {\n e.stopPropagation();\n try {\n await deleteThread(threadId);\n } catch (error) {\n console.error(\"Failed to delete thread:\", error);\n }\n };\n\n const handleNewThread = async () => {\n try {\n await createThread();\n } catch (error) {\n console.error(\"Failed to create thread:\", error);\n }\n };\n\n const formatDate = (date: Date | string | undefined): string => {\n if (!date) return \"\";\n const d = typeof date === \"string\" ? new Date(date) : date;\n if (isNaN(d.getTime())) return \"\";\n\n const now = new Date();\n const diffMs = now.getTime() - d.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n\n if (diffMins < 1) return \"Just now\";\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n\n return d.toLocaleDateString();\n };\n\n return (\n <div className={cn(\"flex flex-col h-full\", className)}>\n <div className=\"p-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleNewThread}\n className=\"w-full justify-start\"\n >\n <IconPlus className=\"mr-2 size-4\" />\n New Thread\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto\">\n {threads.length === 0 ? (\n <div className=\"p-4 text-center text-muted-foreground\">\n {emptyState || (\n <div className=\"space-y-2\">\n <IconMessage className=\"size-8 mx-auto opacity-50\" />\n <p className=\"text-sm\">No threads yet</p>\n <Button variant=\"ghost\" size=\"sm\" onClick={handleNewThread}>\n Start a conversation\n </Button>\n </div>\n )}\n </div>\n ) : (\n <div className=\"p-2 space-y-1\">\n {threads.map((thread) => {\n const isActive = thread.id === activeThreadId;\n return (\n <div\n key={thread.id}\n onClick={() => handleThreadClick(thread.id)}\n className={cn(\n \"group relative flex items-center gap-3 px-3 py-1.5 rounded-lg cursor-pointer transition-colors\",\n isActive ? \"bg-muted\" : \"hover:bg-muted\"\n )}\n >\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center justify-between gap-2\">\n <p className={cn(\"text-sm font-medium truncate\")}>\n {thread.title || `Thread ${thread.id.slice(0, 8)}`}\n </p>\n {thread.updatedAt && (\n <span className={cn(\"text-xs shrink-0\")}>\n {formatDate(thread.updatedAt)}\n </span>\n )}\n </div>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={(e) => handleDelete(e, thread.id)}\n className={cn(\n \"opacity-0 group-hover:opacity-100 transition-opacity shrink-0\",\n isActive && \"hover:bg-primary-foreground/20\"\n )}\n >\n <IconTrash className=\"size-3\" />\n </Button>\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { IconArrowLeft, IconHistory, IconMessage, IconPlus, IconX } from \"@tabler/icons-react\";\nimport { Thread } from \"./thread\";\nimport { ThreadList } from \"./thread-list\";\nimport { Button } from \"./ui/button\";\nimport { Card } from \"./ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { useThreads } from \"@/hooks/use-threads\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\n\nexport interface ChatPopupProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n defaultOpen?: boolean;\n /**\n * Props for customizing the header. Note: leftContent and rightContent in headerProps\n * will be merged with the default popup header actions (back, history, new chat, close).\n */\n headerProps?: Omit<ChatHeaderProps, \"title\" | \"leftContent\" | \"rightContent\">;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatPopup({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n defaultOpen = false,\n headerProps,\n defaultSelectedIds,\n}: ChatPopupProps) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n const [view, setView] = useState<\"chat\" | \"history\">(\"chat\");\n const { createThread } = useThreads();\n\n const handleNewChat = async () => {\n try {\n await createThread();\n setView(\"chat\");\n } catch (error) {\n console.error(\"Failed to create new chat:\", error);\n }\n };\n\n return (\n <div className=\"fixed bottom-6 right-6 z-50 flex flex-col items-end gap-4 font-sans\">\n {isOpen && (\n <Card className=\"py-0 w-[440px] h-[640px] gap-0 flex flex-col overflow-hidden border bg-background/95 backdrop-blur supports-backdrop-filter:bg-background/60 shadow-2xl animate-in fade-in zoom-in-95 duration-200 origin-bottom-right\">\n <ChatHeader\n title={view === \"history\" ? \"History\" : title}\n leftContent={\n view === \"history\" ? (\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={() => setView(\"chat\")}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <IconArrowLeft className=\"size-4\" />\n </Button>\n ) : undefined\n }\n rightContent={\n <>\n {view === \"chat\" && (\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={() => setView(\"history\")}\n className=\"text-muted-foreground hover:text-foreground\"\n title=\"History\"\n >\n <IconHistory className=\"size-4\" />\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={handleNewChat}\n className=\"text-muted-foreground hover:text-foreground\"\n title=\"New Chat\"\n >\n <IconPlus className=\"size-4\" />\n </Button>\n <Button \n variant=\"ghost\" \n size=\"icon-xs\" \n onClick={() => setIsOpen(false)}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <IconX className=\"size-4\" />\n </Button>\n </>\n }\n {...headerProps}\n />\n <div className=\"flex-1 overflow-hidden\">\n {view === \"chat\" ? (\n <Thread\n placeholder={placeholder}\n starterPrompts={starterPrompts}\n options={options}\n className=\"h-full\"\n defaultSelectedIds={defaultSelectedIds}\n />\n ) : (\n <ThreadList \n onThreadSelect={() => setView(\"chat\")}\n className=\"h-full\"\n />\n )}\n </div>\n </Card>\n )}\n\n <Button\n size=\"icon-lg\"\n className={cn(\n \"h-14 w-14 rounded-full shadow-2xl transition-all hover:scale-105 active:scale-95\",\n isOpen ? \"bg-muted text-muted-foreground hover:bg-muted/80\" : \"bg-primary text-primary-foreground\"\n )}\n onClick={() => setIsOpen(!isOpen)}\n >\n {isOpen ? <IconX className=\"size-6\" /> : <IconMessage className=\"size-6\" />}\n </Button>\n </div>\n );\n}\n","import React from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\n\nexport interface ChatSidebarProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n className?: string;\n /**\n * Props for customizing the header. If provided, title prop will be passed to header.\n */\n headerProps?: Omit<ChatHeaderProps, \"title\">;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatSidebar({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n className,\n headerProps,\n defaultSelectedIds,\n}: ChatSidebarProps) {\n return (\n <div className={cn(\"flex flex-col h-full border-r bg-background w-80\", className)}>\n <ChatHeader title={title} {...headerProps} />\n <div className=\"flex-1 overflow-hidden\">\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n options={options}\n className=\"h-full\"\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n </div>\n );\n}\n\n","import React, { useState } from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt, ComposerOption, ComposerOptionGroup } from \"@/types\";\nimport { ChatHeader, ChatHeaderProps } from \"./chat-header\";\nimport { Button } from \"./ui/button\";\nimport { IconChevronLeft, IconChevronRight } from \"@tabler/icons-react\";\n\nexport interface ChatFullProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n options?: ComposerOptionGroup[];\n className?: string;\n /**\n * Props for customizing the header. If provided, title prop will be passed to header.\n */\n headerProps?: Omit<ChatHeaderProps, \"title\">;\n /**\n * Customizable left sidebar content. Typically used for navigation, thread list, etc.\n */\n leftSidebar?: React.ReactNode;\n /**\n * Customizable right sidebar content. Typically used as a canvas, additional info, etc.\n */\n rightSidebar?: React.ReactNode;\n /**\n * Custom className for the left sidebar container\n */\n leftSidebarClassName?: string;\n /**\n * Custom className for the right sidebar container\n */\n rightSidebarClassName?: string;\n /**\n * Whether the left sidebar is collapsible\n */\n leftSidebarCollapsible?: boolean;\n /**\n * Whether the right sidebar is collapsible\n */\n rightSidebarCollapsible?: boolean;\n /**\n * Default collapsed state for the left sidebar\n */\n defaultLeftSidebarCollapsed?: boolean;\n /**\n * Default collapsed state for the right sidebar\n */\n defaultRightSidebarCollapsed?: boolean;\n /**\n * Controlled collapsed state for the left sidebar. If provided, component becomes controlled.\n */\n leftSidebarCollapsed?: boolean;\n /**\n * Controlled collapsed state for the right sidebar. If provided, component becomes controlled.\n */\n rightSidebarCollapsed?: boolean;\n /**\n * Callback when left sidebar collapse state changes\n */\n onLeftSidebarCollapseChange?: (collapsed: boolean) => void;\n /**\n * Callback when right sidebar collapse state changes\n */\n onRightSidebarCollapseChange?: (collapsed: boolean) => void;\n /**\n * Whether the composer should be auto focused\n */\n autoFocus?: boolean;\n /**\n * IDs of options to be selected by default\n */\n defaultSelectedIds?: string[];\n}\n\nexport function ChatFull({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n options,\n className,\n headerProps,\n leftSidebar,\n rightSidebar,\n leftSidebarClassName,\n rightSidebarClassName,\n leftSidebarCollapsible = false,\n rightSidebarCollapsible = false,\n defaultLeftSidebarCollapsed = false,\n defaultRightSidebarCollapsed = false,\n leftSidebarCollapsed: controlledLeftCollapsed,\n rightSidebarCollapsed: controlledRightCollapsed,\n onLeftSidebarCollapseChange,\n onRightSidebarCollapseChange,\n autoFocus = false,\n defaultSelectedIds,\n}: ChatFullProps) {\n // Internal state for uncontrolled mode\n const [internalLeftCollapsed, setInternalLeftCollapsed] = useState(\n defaultLeftSidebarCollapsed\n );\n const [internalRightCollapsed, setInternalRightCollapsed] = useState(\n defaultRightSidebarCollapsed\n );\n\n // Use controlled state if provided, otherwise use internal state\n const leftCollapsed =\n controlledLeftCollapsed !== undefined\n ? controlledLeftCollapsed\n : internalLeftCollapsed;\n const rightCollapsed =\n controlledRightCollapsed !== undefined\n ? controlledRightCollapsed\n : internalRightCollapsed;\n\n const handleLeftToggle = () => {\n const newCollapsed = !leftCollapsed;\n if (controlledLeftCollapsed === undefined) {\n setInternalLeftCollapsed(newCollapsed);\n }\n onLeftSidebarCollapseChange?.(newCollapsed);\n };\n\n const handleRightToggle = () => {\n const newCollapsed = !rightCollapsed;\n if (controlledRightCollapsed === undefined) {\n setInternalRightCollapsed(newCollapsed);\n }\n onRightSidebarCollapseChange?.(newCollapsed);\n };\n\n return (\n <div className={cn(\"flex flex-col h-full w-full bg-background\", className)}>\n {title && <ChatHeader title={title} {...headerProps} />}\n <div className=\"flex-1 overflow-hidden flex relative\">\n {leftSidebar && (\n <>\n <div\n className={cn(\n \"flex-shrink-0 border-r border-border bg-background transition-all duration-300 ease-in-out overflow-hidden flex flex-col\",\n leftCollapsed && leftSidebarCollapsible\n ? \"w-0 border-r-0 min-w-0\"\n : \"\",\n !leftCollapsed && leftSidebarClassName\n )}\n >\n {!leftCollapsed && (\n <>\n {leftSidebarCollapsible && (\n <div className=\"flex justify-end p-2 border-b border-border shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleLeftToggle}\n aria-label=\"Collapse left sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden min-h-0\">\n {leftSidebar}\n </div>\n </>\n )}\n </div>\n {leftSidebarCollapsible && leftCollapsed && (\n <div className=\"flex-shrink-0 border-r border-border bg-background flex items-center justify-center w-10\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleLeftToggle}\n aria-label=\"Expand left sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n </>\n )}\n <div className=\"flex-1 overflow-hidden min-w-0\">\n <Thread\n placeholder={placeholder}\n starterPrompts={starterPrompts}\n options={options}\n autoFocus={autoFocus}\n defaultSelectedIds={defaultSelectedIds}\n />\n </div>\n {rightSidebar && (\n <>\n {rightSidebarCollapsible && rightCollapsed && (\n <div className=\"flex-shrink-0 border-l border-border bg-background flex items-center justify-center w-10\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleRightToggle}\n aria-label=\"Expand right sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronLeft className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div\n className={cn(\n \"flex-shrink-0 border-l border-border bg-background transition-all duration-300 ease-in-out overflow-hidden flex flex-col\",\n rightCollapsed && rightSidebarCollapsible\n ? \"w-0 border-l-0 min-w-0\"\n : \"\",\n !rightCollapsed && rightSidebarClassName\n )}\n >\n {!rightCollapsed && (\n <>\n {rightSidebarCollapsible && (\n <div className=\"flex justify-start p-2 border-b border-border shrink-0\">\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={handleRightToggle}\n aria-label=\"Collapse right sidebar\"\n className=\"h-8 w-8\"\n >\n <IconChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden min-h-0\">\n {rightSidebar}\n </div>\n </>\n )}\n </div>\n </>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/lib/utils\";\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.RefObject<HTMLElement | null>;\n}\n\nconst PopoverContext = React.createContext<PopoverContextValue | undefined>(\n undefined\n);\n\nfunction usePopoverContext() {\n const context = React.useContext(PopoverContext);\n if (!context) {\n throw new Error(\"Popover components must be used within a Popover\");\n }\n return context;\n}\n\ninterface PopoverProps {\n children: React.ReactNode;\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nfunction Popover({\n children,\n defaultOpen = false,\n open: controlledOpen,\n onOpenChange,\n}: PopoverProps) {\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const triggerRef = React.useRef<HTMLElement>(null);\n\n const open = controlledOpen ?? internalOpen;\n const setOpen = React.useCallback(\n (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n },\n [controlledOpen, onOpenChange]\n );\n\n const value = React.useMemo(\n () => ({\n open,\n setOpen,\n triggerRef,\n }),\n [open, setOpen]\n );\n\n return (\n <PopoverContext.Provider value={value}>{children}</PopoverContext.Provider>\n );\n}\n\ninterface PopoverTriggerProps extends React.ComponentPropsWithoutRef<\"button\"> {\n asChild?: boolean;\n}\n\nconst PopoverTrigger = React.forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n ({ asChild, className, children, ...props }, ref) => {\n const { setOpen, triggerRef } = usePopoverContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n setOpen(true);\n props.onClick?.(e);\n };\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(children, {\n ref: (node: HTMLElement) => {\n triggerRef.current = node;\n if (typeof (children as any).ref === \"function\") {\n (children as any).ref(node);\n } else if ((children as any).ref) {\n (children as any).ref.current = node;\n }\n },\n onClick: handleClick,\n } as any);\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={className}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nPopoverTrigger.displayName = \"PopoverTrigger\";\n\ninterface PopoverContentProps extends React.ComponentPropsWithoutRef<\"div\"> {\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n alignOffset?: number;\n}\n\nconst PopoverContent = React.forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n className,\n side = \"bottom\",\n align = \"start\",\n sideOffset = 4,\n alignOffset = 0,\n children,\n ...props\n },\n ref\n ) => {\n const { open, setOpen, triggerRef } = usePopoverContext();\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const contentRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (!open || !triggerRef.current) return;\n\n const updatePosition = () => {\n if (!triggerRef.current || !contentRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const contentRect = contentRef.current.getBoundingClientRect();\n const scrollX = window.scrollX;\n const scrollY = window.scrollY;\n\n let top = 0;\n let left = 0;\n\n switch (side) {\n case \"bottom\":\n top = triggerRect.bottom + sideOffset + scrollY;\n break;\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset + scrollY;\n break;\n case \"right\":\n top = triggerRect.top + scrollY;\n left = triggerRect.right + sideOffset + scrollX;\n break;\n case \"left\":\n top = triggerRect.top + scrollY;\n left = triggerRect.left - contentRect.width - sideOffset + scrollX;\n break;\n }\n\n switch (align) {\n case \"start\":\n if (side === \"top\" || side === \"bottom\") {\n left = triggerRect.left + scrollX + alignOffset;\n } else {\n top += alignOffset;\n }\n break;\n case \"center\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width / 2 -\n contentRect.width / 2 +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height / 2 - contentRect.height / 2 + alignOffset;\n }\n break;\n case \"end\":\n if (side === \"top\" || side === \"bottom\") {\n left =\n triggerRect.left +\n triggerRect.width -\n contentRect.width +\n scrollX +\n alignOffset;\n } else {\n top += triggerRect.height - contentRect.height + alignOffset;\n }\n break;\n }\n\n setPosition({ top, left });\n };\n\n // Use requestAnimationFrame to ensure content is rendered\n requestAnimationFrame(() => {\n updatePosition();\n });\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }, [open, side, align, sideOffset, alignOffset, triggerRef]);\n\n React.useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n contentRef.current &&\n !contentRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [open, setOpen, triggerRef]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={(node) => {\n contentRef.current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className={cn(\n \"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 ring-foreground/5 rounded-2xl shadow-2xl ring-1 z-50 min-w-48 max-h-96 overflow-hidden\",\n className\n )}\n style={{\n position: \"absolute\",\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n {...props}\n >\n {children}\n </div>\n );\n\n return createPortal(content, document.body);\n }\n);\n\nPopoverContent.displayName = \"PopoverContent\";\n\nexport { Popover, PopoverTrigger, PopoverContent };\n\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n Popover,\n PopoverTrigger,\n PopoverContent,\n} from \"@/components/ui/popover\";\nimport { ThreadList } from \"./thread-list\";\nimport { IconHistory } from \"@tabler/icons-react\";\nimport { cn } from \"@/lib/utils\";\nimport { useHotkeys } from \"react-hotkeys-hook\";\n\nexport interface ThreadPopoverProps {\n className?: string;\n buttonClassName?: string;\n buttonVariant?:\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\n buttonSize?:\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n emptyState?: React.ReactNode;\n onThreadSelect?: (threadId: string) => void;\n}\n\nexport const ThreadPopover: React.FC<ThreadPopoverProps> = ({\n className,\n buttonClassName,\n buttonVariant = \"ghost\",\n buttonSize = \"icon\",\n emptyState,\n onThreadSelect,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false);\n\n // Hotkey to toggle popover: Press 'H' to open/close\n // Scopes ensure it doesn't trigger when typing in inputs/textareas\n useHotkeys(\n \"h\",\n (e: KeyboardEvent) => {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n },\n {\n enableOnFormTags: false, // Don't trigger when typing in form inputs\n enableOnContentEditable: false, // Don't trigger in contenteditable elements\n }\n );\n\n const handleThreadSelect = (threadId: string) => {\n setIsOpen(false);\n onThreadSelect?.(threadId);\n };\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={buttonVariant}\n size={buttonSize}\n className={cn(buttonClassName)}\n >\n <IconHistory className=\"size-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className={cn(\"w-80 p-0\", className)}\n side=\"bottom\"\n align=\"start\"\n sideOffset={8}\n >\n <div className=\"flex flex-col h-[400px]\">\n <ThreadList\n emptyState={emptyState}\n onThreadSelect={handleThreadSelect}\n className=\"h-full\"\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n};\n","import * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { IconPlus } from \"@tabler/icons-react\";\nimport { useThreads } from \"@/hooks/use-threads\";\nimport { cn } from \"@/lib/utils\";\nimport { useHotkeys } from \"react-hotkeys-hook\";\n\nexport interface CreateThreadButtonProps {\n className?: string;\n variant?:\n | \"default\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\n size?:\n | \"default\"\n | \"xs\"\n | \"sm\"\n | \"lg\"\n | \"icon\"\n | \"icon-xs\"\n | \"icon-sm\"\n | \"icon-lg\";\n children?: React.ReactNode;\n onThreadCreated?: (threadId: string) => void;\n}\n\nexport const CreateThreadButton: React.FC<CreateThreadButtonProps> = ({\n className,\n variant = \"ghost\",\n size = \"icon\",\n children,\n onThreadCreated,\n}) => {\n const { createThread } = useThreads();\n const [isCreating, setIsCreating] = React.useState(false);\n\n const handleCreateThread = async () => {\n if (isCreating) return; // Prevent multiple simultaneous creations\n try {\n setIsCreating(true);\n const threadId = await createThread();\n onThreadCreated?.(threadId);\n } catch (error) {\n console.error(\"Failed to create thread:\", error);\n } finally {\n setIsCreating(false);\n }\n };\n\n // Hotkey to create new thread: Press 'N' to create\n // Scopes ensure it doesn't trigger when typing in inputs/textareas\n useHotkeys(\n \"n\",\n (e: KeyboardEvent) => {\n e.preventDefault();\n handleCreateThread();\n },\n {\n enableOnFormTags: false, // Don't trigger when typing in form inputs\n enableOnContentEditable: false, // Don't trigger in contenteditable elements\n }\n );\n\n return (\n <Button\n variant={variant}\n size={size}\n onClick={handleCreateThread}\n disabled={isCreating}\n className={cn(className)}\n >\n <IconPlus className=\"size-4\" />\n </Button>\n );\n};\n","import * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs fixed inset-0 isolate z-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 bg-background ring-foreground/5 gap-6 rounded-4xl p-6 ring-1 duration-100 data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\"bg-muted mb-2 inline-flex size-16 items-center justify-center rounded-full sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm text-balance md:text-pretty *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import * as React from \"react\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogClose,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { useAuth } from \"@/hooks/use-auth\";\nimport {\n IconBrandGoogle,\n IconLogout,\n IconUser,\n IconX,\n} from \"@tabler/icons-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"@/components/ui/separator\";\n\nexport interface AccountDialogProps {\n className?: string;\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n}\n\nexport const AccountDialog: React.FC<AccountDialogProps> = ({\n className,\n variant = \"outline\",\n size,\n}) => {\n const { isLoading, isAuthenticated, user, login, logout } = useAuth();\n const [open, setOpen] = React.useState(false);\n const [accountInfoOpen, setAccountInfoOpen] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n\n const initials = React.useMemo(() => {\n const name = user?.displayName || user?.name;\n if (!name) return \"\";\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n }, [user?.displayName, user?.name]);\n\n const handleGoogleSignIn = async () => {\n login();\n };\n\n if (isAuthenticated) {\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props) => (\n <Button\n variant={variant}\n size=\"icon\"\n {...props}\n className={cn(\"rounded-full\", className)}\n >\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-7 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-7 items-center justify-center rounded-full bg-muted text-xs font-bold\">\n {initials || <IconUser className=\"size-4\" />}\n </div>\n )}\n </Button>\n )}\n />\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n <div className=\"flex items-center gap-2 p-2\">\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-8 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-8 items-center justify-center rounded-full bg-muted text-xs font-bold\">\n {initials || <IconUser className=\"size-4\" />}\n </div>\n )}\n <div className=\"flex flex-col space-y-0.5 overflow-hidden\">\n <p className=\"truncate text-sm font-medium\">\n {user?.displayName || user?.name}\n </p>\n <p className=\"truncate text-xs text-muted-foreground\">\n {user?.email}\n </p>\n </div>\n </div>\n <Separator className=\"my-1\" />\n <DropdownMenuItem onClick={() => setAccountInfoOpen(true)}>\n <IconUser className=\"mr-2 size-4\" />\n Account Settings\n </DropdownMenuItem>\n <DropdownMenuItem onClick={logout} className=\"text-destructive\">\n <IconLogout className=\"mr-2 size-4\" />\n Logout\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n\n <Dialog open={accountInfoOpen} onOpenChange={setAccountInfoOpen}>\n <DialogContent className=\"sm:max-w-md\">\n <DialogHeader>\n <DialogTitle>Account Information</DialogTitle>\n <DialogDescription>\n Your account details and settings.\n </DialogDescription>\n </DialogHeader>\n <DialogClose>\n <IconX className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogClose>\n <div className=\"flex flex-col gap-4 py-4\">\n <div className=\"flex items-center gap-4\">\n {user?.picture ? (\n <img\n src={user.picture}\n alt={user.displayName || user.name}\n className=\"size-16 rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex size-16 items-center justify-center rounded-full bg-muted text-xl font-bold\">\n {initials || (\n <IconUser className=\"size-8 text-muted-foreground\" />\n )}\n </div>\n )}\n <div className=\"flex flex-col\">\n <h3 className=\"text-lg font-semibold\">\n {user?.displayName || user?.name}\n </h3>\n <p className=\"text-sm text-muted-foreground\">{user?.email}</p>\n </div>\n </div>\n <Separator />\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n User ID\n </p>\n <p className=\"font-mono text-xs truncate\">\n {user?.uid || user?.id}\n </p>\n </div>\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium text-muted-foreground\">\n Created At\n </p>\n <p className=\"text-xs\">{user?.createdAt || \"N/A\"}</p>\n </div>\n </div>\n </div>\n </DialogContent>\n </Dialog>\n </>\n );\n }\n\n return (\n <>\n <Button\n variant={variant}\n size={size}\n onClick={() => setOpen(true)}\n className={className}\n >\n <IconBrandGoogle className=\"mr-2 size-4\" />\n Sign in with Google\n </Button>\n\n <AlertDialog open={open} onOpenChange={setOpen}>\n <AlertDialogContent className=\"sm:max-w-md\">\n <AlertDialogHeader>\n <AlertDialogTitle>Sign in to continue</AlertDialogTitle>\n <AlertDialogDescription>\n Choose your preferred sign-in method to access your account.\n </AlertDialogDescription>\n </AlertDialogHeader>\n <div className=\"flex flex-col gap-3 py-4\">\n {error && (\n <div className=\"rounded-lg bg-destructive/10 p-3 text-sm text-destructive\">\n {error}\n </div>\n )}\n <Button\n onClick={handleGoogleSignIn}\n disabled={isLoading}\n variant=\"outline\"\n className=\"w-full\"\n size=\"lg\"\n >\n <IconBrandGoogle className=\"mr-2 size-5\" />\n {isLoading ? \"Signing in...\" : \"Continue with Google\"}\n </Button>\n </div>\n </AlertDialogContent>\n </AlertDialog>\n </>\n );\n};\n","import { useTheme } from \"./theme-provider\";\nimport { IconMoon, IconSun, IconDeviceDesktop } from \"@tabler/icons-react\";\nimport { Button } from \"./ui/button\";\n\nexport function ThemeToggle() {\n const { theme, setTheme, resolvedTheme } = useTheme();\n\n const cycleTheme = () => {\n if (theme === \"light\") {\n setTheme(\"dark\");\n } else if (theme === \"dark\") {\n setTheme(\"system\");\n } else {\n setTheme(\"light\");\n }\n };\n\n const getIcon = () => {\n if (theme === \"system\") {\n return <IconDeviceDesktop className=\"h-4 w-4\" />;\n }\n return resolvedTheme === \"dark\" ? (\n <IconMoon className=\"h-4 w-4\" />\n ) : (\n <IconSun className=\"h-4 w-4\" />\n );\n };\n\n const getLabel = () => {\n if (theme === \"system\") {\n return \"System\";\n }\n return resolvedTheme === \"dark\" ? \"Dark\" : \"Light\";\n };\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={cycleTheme}\n aria-label={`Toggle theme (current: ${getLabel()})`}\n title={`Current: ${getLabel()}. Click to cycle: Light → Dark → System`}\n >\n {getIcon()}\n </Button>\n );\n}\n"]}