@melony/react 0.1.9 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +4 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/providers/melony-provider.tsx","../src/providers/auth-provider.tsx","../src/providers/thread-provider.tsx","../src/hooks/use-melony.ts","../src/hooks/use-auth.ts","../src/hooks/use-threads.ts","../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/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/ui/textarea.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/ui/button.tsx","../src/components/elements/Button.tsx","../src/components/elements/Form.tsx","../src/components/ui-renderer.tsx","../src/components/composer.tsx","../src/components/thread.tsx","../src/components/thread-list.tsx","../src/components/chat-popup.tsx","../src/components/chat-sidebar.tsx","../src/components/chat-full.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/account-dialog.tsx"],"names":["createContext","useState","useCallback","useEffect","jsx","useMemo","error","useContext","Card","SeparatorPrimitive","jsxs","Badge","InputPrimitive","cva","Input","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","Button","IconPlus","IconMessage","AlertDialogPrimitive","MenuPrimitive"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\nimport { Event, Role } from \"melony\"\nimport { Message } from \"@/types\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\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 { Client, ClientState } from \"melony/client\";\nimport { Event } from \"melony\";\nimport { Message } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/utils\";\n\nexport interface MelonyContextValue extends ClientState {\n messages: Message[];\n sendEvent: (event: Event, options?: { runId?: string; state?: Record<string, any> }) => Promise<void>;\n clear: () => void;\n client: Client;\n}\n\nexport const MelonyContext = createContext<MelonyContextValue | undefined>(undefined);\n\nexport interface MelonyProviderProps {\n children: ReactNode;\n client: Client;\n}\n\nexport const MelonyProvider: React.FC<MelonyProviderProps> = ({\n children,\n client,\n}) => {\n const [state, setState] = useState<ClientState>(client.getState());\n\n useEffect(() => {\n setState(client.getState());\n return () => { client.subscribe(setState); };\n }, [client]);\n\n const sendEvent = useCallback(\n async (event: Event, options?: { runId?: string; state?: Record<string, any> }) => {\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 clear = useCallback(() => client.clear(), [client]);\n\n const value = useMemo(\n () => ({\n ...state,\n messages: groupEventsToMessages(state.events),\n sendEvent,\n clear,\n client,\n }),\n [state, sendEvent, clear, 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 { Message, ThreadData, ThreadService } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/utils\";\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 threadMessages: Message[];\n isLoadingEvents: boolean;\n}\n\nexport const ThreadContext = createContext<ThreadContextValue | undefined>(undefined);\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 ? await service.createThread() : 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 ? remainingThreads[0].id : 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 const threadMessages = useMemo(() => {\n return groupEventsToMessages(threadEvents);\n }, [threadEvents]);\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 () => { cancelled = true; };\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 threadMessages,\n isLoadingEvents,\n }),\n [\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n threadMessages,\n isLoadingEvents,\n ]\n );\n\n return (\n <ThreadContext.Provider value={value}>{children}</ThreadContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { MelonyContext, MelonyContextValue } from \"@/providers/melony-provider\";\n\nexport const useMelony = (): MelonyContextValue => {\n const context = useContext(MelonyContext);\n if (context === undefined) {\n throw new Error(\"useMelony must be used within a MelonyProvider\");\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 * 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(\"w-full max-w-2xl shadow-sm\", 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 React, { useState } from \"react\";\nimport { ImageProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\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\n const sizes = {\n sm: \"h-11 w-11\",\n md: \"h-22 w-22\",\n lg: \"h-44 w-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 <div className={cn(\"relative overflow-hidden rounded-md border\", className)} style={style}>\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\",\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 );\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 * 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 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 { 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 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 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 { 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 { Button } from \"./ui/button\";\nimport { Textarea } from \"./ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { IconArrowUp } from \"@tabler/icons-react\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (e?: React.FormEvent) => void;\n placeholder?: string;\n isLoading?: boolean;\n className?: string;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n isLoading,\n className,\n}: ComposerProps) {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\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 />\n <div className=\"flex justify-end items-center px-2 pb-0.5\">\n <Button\n type=\"submit\"\n disabled={(!value.trim() && !isLoading) || isLoading}\n size=\"icon\"\n onClick={() => onSubmit()}\n className={cn(\n \"h-8 w-8 rounded-full transition-all shrink-0\",\n value.trim()\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted-foreground/20 text-muted-foreground/40\"\n )}\n >\n <IconArrowUp className=\"h-5 w-5\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\nimport { UIRenderer } from \"@/components/ui-renderer\";\nimport { StarterPrompt } from \"@/types\";\nimport { Composer } from \"./composer\";\n\nexport function Thread({\n className,\n placeholder = \"Type a message...\",\n starterPrompts,\n onStarterPromptClick,\n}: {\n className?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n onStarterPromptClick?: (prompt: string) => void;\n}) {\n const { messages, isLoading, error, sendEvent } = 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 (e?: React.FormEvent, overrideInput?: string) => {\n e?.preventDefault();\n const text = (overrideInput ?? input).trim();\n if (!text || isLoading) return;\n\n if (!overrideInput) setInput(\"\");\n await sendEvent({\n type: \"text\",\n role: \"user\",\n data: { content: text },\n });\n };\n\n const handleStarterPromptClick = (prompt: string) => {\n if (onStarterPromptClick) {\n onStarterPromptClick(prompt);\n } else {\n handleSubmit(undefined, prompt);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", className)}>\n <div className=\"flex-1 overflow-y-auto p-4 space-y-6\">\n <div className=\"max-w-4xl mx-auto w-full\">\n {messages.length === 0 &&\n starterPrompts &&\n starterPrompts.length > 0 && (\n <div className=\"flex flex-col items-center justify-center min-h-[300px] space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-500\">\n <div className=\"text-center 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=\"grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-2xl px-4\">\n {starterPrompts.map((item, i) => (\n <button\n key={i}\n onClick={() => handleStarterPromptClick(item.prompt)}\n className=\"flex items-center gap-3 p-4 rounded-xl border bg-card hover:bg-muted/50 transition-all text-left group\"\n >\n {item.icon && (\n <div className=\"p-2 rounded-lg bg-muted group-hover:bg-background transition-colors\">\n {item.icon}\n </div>\n )}\n <span className=\"text-sm font-medium\">{item.label}</span>\n </button>\n ))}\n </div>\n </div>\n )}\n {messages.map((message, i) => (\n <div\n key={i}\n className={cn(\n \"flex flex-col\",\n message.role === \"user\" ? \"items-end\" : \"items-start\"\n )}\n >\n <div\n className={cn(\n \"max-w-[85%] rounded-2xl px-4 py-2 space-y-2\",\n message.role === \"user\"\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\"\n )}\n >\n {message.content.map((event, j) => {\n if (event.type === \"text-delta\")\n return <span key={j}>{event.data?.delta}</span>;\n if (event.type === \"text\")\n return (\n <p key={j}>{event.data?.content || event.data?.text}</p>\n );\n if (event.ui) return <UIRenderer key={j} node={event.ui} />;\n return null;\n })}\n </div>\n </div>\n ))}\n {isLoading && (\n <div className=\"text-muted-foreground animate-pulse\">\n Thinking...\n </div>\n )}\n {error && (\n <div className=\"text-destructive p-2 border border-destructive rounded-md bg-destructive/10\">\n {error.message}\n </div>\n )}\n </div>\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"p-4 border-t 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 />\n </div>\n </div>\n </div>\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 {\n threads,\n activeThreadId,\n selectThread,\n createThread,\n 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 border-b\">\n <Button\n variant=\"outline\"\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 p-3 rounded-lg cursor-pointer transition-colors\",\n isActive\n ? \"bg-primary text-primary-foreground\"\n : \"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\n className={cn(\n \"text-sm font-medium truncate\",\n isActive && \"text-primary-foreground\"\n )}\n >\n {thread.title || `Thread ${thread.id.slice(0, 8)}`}\n </p>\n {thread.updatedAt && (\n <span\n className={cn(\n \"text-xs shrink-0\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground\"\n )}\n >\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, CardHeader, CardTitle } from \"./ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt } from \"@/types\";\nimport { useThreads } from \"@/hooks/use-threads\";\n\nexport interface ChatPopupProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n defaultOpen?: boolean;\n}\n\nexport function ChatPopup({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n defaultOpen = false,\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] 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 <CardHeader className=\"p-4 border-b flex flex-row items-center justify-between space-y-0 h-14 shrink-0\">\n <div className=\"flex items-center gap-2\">\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 )}\n <CardTitle className=\"text-sm font-semibold\">\n {view === \"history\" ? \"History\" : title}\n </CardTitle>\n </div>\n <div className=\"flex items-center gap-1\">\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 </div>\n </CardHeader>\n <div className=\"flex-1 overflow-hidden\">\n {view === \"chat\" ? (\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n className=\"h-full\"\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 } from \"@/types\";\n\nexport interface ChatSidebarProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n className?: string;\n}\n\nexport function ChatSidebar({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n className,\n}: ChatSidebarProps) {\n return (\n <div className={cn(\"flex flex-col h-full border-r bg-background w-80\", className)}>\n <div className=\"p-4 border-b h-14 flex items-center shrink-0\">\n <h2 className=\"text-sm font-semibold\">{title}</h2>\n </div>\n <div className=\"flex-1 overflow-hidden\">\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n className=\"h-full\"\n />\n </div>\n </div>\n );\n}\n\n","import React from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt } from \"@/types\";\n\nexport interface ChatFullProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n className?: string;\n}\n\nexport function ChatFull({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n className,\n}: ChatFullProps) {\n return (\n <div className={cn(\"flex flex-col h-full w-full bg-background\", className)}>\n {title && (\n <div className=\"p-4 border-b h-14 flex items-center shrink-0\">\n <h2 className=\"text-sm font-semibold\">{title}</h2>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden\">\n <Thread placeholder={placeholder} starterPrompts={starterPrompts} />\n </div>\n </div>\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 { 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 * as React from \"react\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { useAuth } from \"@/hooks/use-auth\";\nimport { IconBrandGoogle, IconLogout, IconUser } from \"@tabler/icons-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\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,\n size,\n}) => {\n const { isLoading, isAuthenticated, login, logout } = useAuth();\n const [open, setOpen] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n\n const handleGoogleSignIn = async () => {\n login();\n };\n\n if (isAuthenticated) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props) => (\n <Button\n variant={variant}\n size={size}\n {...props}\n className={className}\n >\n <IconUser className=\"mr-2 size-4\" />\n Account\n </Button>\n )}\n />\n <DropdownMenuContent>\n <DropdownMenuItem>\n <IconUser className=\"mr-2 size-4\" />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem onClick={logout}>\n <IconLogout className=\"mr-2 size-4\" />\n Logout\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/providers/melony-provider.tsx","../src/providers/auth-provider.tsx","../src/providers/thread-provider.tsx","../src/hooks/use-melony.ts","../src/hooks/use-auth.ts","../src/hooks/use-threads.ts","../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/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/ui/textarea.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/ui/button.tsx","../src/components/elements/Button.tsx","../src/components/elements/Form.tsx","../src/components/ui-renderer.tsx","../src/components/composer.tsx","../src/components/thread.tsx","../src/components/thread-list.tsx","../src/components/chat-popup.tsx","../src/components/chat-sidebar.tsx","../src/components/chat-full.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/dropdown-menu.tsx","../src/components/account-dialog.tsx"],"names":["createContext","useState","useCallback","useEffect","jsx","useMemo","error","useContext","Card","SeparatorPrimitive","jsxs","Badge","InputPrimitive","cva","Input","Textarea","SelectPrimitive","Select","Label","ButtonPrimitive","Button","IconPlus","IconMessage","AlertDialogPrimitive","MenuPrimitive"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Event } from \"@melony/core\";\nimport { Message } from \"@/types\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\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 { Client, ClientState } from \"@melony/core/client\";\nimport { Event } from \"@melony/core\";\nimport { Message } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/utils\";\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 clear: () => void;\n client: Client;\n}\n\nexport const MelonyContext = createContext<MelonyContextValue | undefined>(\n undefined\n);\n\nexport interface MelonyProviderProps {\n children: ReactNode;\n client: Client;\n}\n\nexport const MelonyProvider: React.FC<MelonyProviderProps> = ({\n children,\n client,\n}) => {\n const [state, setState] = useState<ClientState>(client.getState());\n\n useEffect(() => {\n setState(client.getState());\n return () => {\n client.subscribe(setState);\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 clear = useCallback(() => client.clear(), [client]);\n\n const value = useMemo(\n () => ({\n ...state,\n messages: groupEventsToMessages(state.events),\n sendEvent,\n clear,\n client,\n }),\n [state, sendEvent, clear, 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/core\";\nimport { generateId } from \"@melony/core/client\";\nimport { Message, ThreadData, ThreadService } from \"@/types\";\nimport { groupEventsToMessages } from \"@/lib/utils\";\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 threadMessages: Message[];\n isLoadingEvents: boolean;\n}\n\nexport const ThreadContext = createContext<ThreadContextValue | undefined>(undefined);\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 ? await service.createThread() : 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 ? remainingThreads[0].id : 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 const threadMessages = useMemo(() => {\n return groupEventsToMessages(threadEvents);\n }, [threadEvents]);\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 () => { cancelled = true; };\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 threadMessages,\n isLoadingEvents,\n }),\n [\n threads,\n activeThreadId,\n isLoading,\n error,\n selectThread,\n createThread,\n deleteThread,\n refreshThreads,\n threadEvents,\n threadMessages,\n isLoadingEvents,\n ]\n );\n\n return (\n <ThreadContext.Provider value={value}>{children}</ThreadContext.Provider>\n );\n};\n","import { useContext } from \"react\";\nimport { MelonyContext, MelonyContextValue } from \"@/providers/melony-provider\";\n\nexport const useMelony = (): MelonyContextValue => {\n const context = useContext(MelonyContext);\n if (context === undefined) {\n throw new Error(\"useMelony must be used within a MelonyProvider\");\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 * 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(\"w-full max-w-2xl shadow-sm\", 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 React, { useState } from \"react\";\nimport { ImageProps } from \"./component-types\";\nimport { cn } from \"@/lib/utils\";\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\n const sizes = {\n sm: \"h-11 w-11\",\n md: \"h-22 w-22\",\n lg: \"h-44 w-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 <div className={cn(\"relative overflow-hidden rounded-md border\", className)} style={style}>\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\",\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 );\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 * 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 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 { 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 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 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 type { UINode } from \"@melony/core\";\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 { Button } from \"./ui/button\";\nimport { Textarea } from \"./ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { IconArrowUp } from \"@tabler/icons-react\";\n\ninterface ComposerProps {\n value: string;\n onChange: (value: string) => void;\n onSubmit: (e?: React.FormEvent) => void;\n placeholder?: string;\n isLoading?: boolean;\n className?: string;\n}\n\nexport function Composer({\n value,\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n isLoading,\n className,\n}: ComposerProps) {\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n onSubmit();\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 />\n <div className=\"flex justify-end items-center px-2 pb-0.5\">\n <Button\n type=\"submit\"\n disabled={(!value.trim() && !isLoading) || isLoading}\n size=\"icon\"\n onClick={() => onSubmit()}\n className={cn(\n \"h-8 w-8 rounded-full transition-all shrink-0\",\n value.trim()\n ? \"bg-foreground text-background hover:bg-foreground/90\"\n : \"bg-muted-foreground/20 text-muted-foreground/40\"\n )}\n >\n <IconArrowUp className=\"h-5 w-5\" />\n </Button>\n </div>\n </div>\n </div>\n );\n}\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { useMelony } from \"@/hooks/use-melony\";\nimport { cn } from \"@/lib/utils\";\nimport { UIRenderer } from \"@/components/ui-renderer\";\nimport { StarterPrompt } from \"@/types\";\nimport { Composer } from \"./composer\";\n\nexport function Thread({\n className,\n placeholder = \"Type a message...\",\n starterPrompts,\n onStarterPromptClick,\n}: {\n className?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n onStarterPromptClick?: (prompt: string) => void;\n}) {\n const { messages, isLoading, error, sendEvent } = 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 (e?: React.FormEvent, overrideInput?: string) => {\n e?.preventDefault();\n const text = (overrideInput ?? input).trim();\n if (!text || isLoading) return;\n\n if (!overrideInput) setInput(\"\");\n await sendEvent({\n type: \"text\",\n role: \"user\",\n data: { content: text },\n });\n };\n\n const handleStarterPromptClick = (prompt: string) => {\n if (onStarterPromptClick) {\n onStarterPromptClick(prompt);\n } else {\n handleSubmit(undefined, prompt);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col h-full bg-background\", className)}>\n <div className=\"flex-1 overflow-y-auto p-4 space-y-6\">\n <div className=\"max-w-4xl mx-auto w-full\">\n {messages.length === 0 &&\n starterPrompts &&\n starterPrompts.length > 0 && (\n <div className=\"flex flex-col items-center justify-center min-h-[300px] space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-500\">\n <div className=\"text-center 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=\"grid grid-cols-1 md:grid-cols-2 gap-3 w-full max-w-2xl px-4\">\n {starterPrompts.map((item, i) => (\n <button\n key={i}\n onClick={() => handleStarterPromptClick(item.prompt)}\n className=\"flex items-center gap-3 p-4 rounded-xl border bg-card hover:bg-muted/50 transition-all text-left group\"\n >\n {item.icon && (\n <div className=\"p-2 rounded-lg bg-muted group-hover:bg-background transition-colors\">\n {item.icon}\n </div>\n )}\n <span className=\"text-sm font-medium\">{item.label}</span>\n </button>\n ))}\n </div>\n </div>\n )}\n {messages.map((message, i) => (\n <div\n key={i}\n className={cn(\n \"flex flex-col\",\n message.role === \"user\" ? \"items-end\" : \"items-start\"\n )}\n >\n <div\n className={cn(\n \"max-w-[85%] rounded-2xl px-4 py-2 space-y-2\",\n message.role === \"user\"\n ? \"bg-primary text-primary-foreground\"\n : \"px-0 py-0 text-foreground\"\n )}\n >\n {message.content.map((event, j) => {\n if (event.type === \"text-delta\")\n return <span key={j}>{event.data?.delta}</span>;\n if (event.type === \"text\")\n return (\n <p key={j}>{event.data?.content || event.data?.text}</p>\n );\n if (event.ui) return <UIRenderer key={j} node={event.ui} />;\n return null;\n })}\n </div>\n </div>\n ))}\n {isLoading && (\n <div className=\"text-muted-foreground animate-pulse\">\n Thinking...\n </div>\n )}\n {error && (\n <div className=\"text-destructive p-2 border border-destructive rounded-md bg-destructive/10\">\n {error.message}\n </div>\n )}\n </div>\n\n <div ref={messagesEndRef} />\n </div>\n\n <div className=\"p-4 border-t 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 />\n </div>\n </div>\n </div>\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 {\n threads,\n activeThreadId,\n selectThread,\n createThread,\n 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 border-b\">\n <Button\n variant=\"outline\"\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 p-3 rounded-lg cursor-pointer transition-colors\",\n isActive\n ? \"bg-primary text-primary-foreground\"\n : \"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\n className={cn(\n \"text-sm font-medium truncate\",\n isActive && \"text-primary-foreground\"\n )}\n >\n {thread.title || `Thread ${thread.id.slice(0, 8)}`}\n </p>\n {thread.updatedAt && (\n <span\n className={cn(\n \"text-xs shrink-0\",\n isActive\n ? \"text-primary-foreground/70\"\n : \"text-muted-foreground\"\n )}\n >\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, CardHeader, CardTitle } from \"./ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt } from \"@/types\";\nimport { useThreads } from \"@/hooks/use-threads\";\n\nexport interface ChatPopupProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n defaultOpen?: boolean;\n}\n\nexport function ChatPopup({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n defaultOpen = false,\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] 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 <CardHeader className=\"p-4 border-b flex flex-row items-center justify-between space-y-0 h-14 shrink-0\">\n <div className=\"flex items-center gap-2\">\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 )}\n <CardTitle className=\"text-sm font-semibold\">\n {view === \"history\" ? \"History\" : title}\n </CardTitle>\n </div>\n <div className=\"flex items-center gap-1\">\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 </div>\n </CardHeader>\n <div className=\"flex-1 overflow-hidden\">\n {view === \"chat\" ? (\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n className=\"h-full\"\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 } from \"@/types\";\n\nexport interface ChatSidebarProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n className?: string;\n}\n\nexport function ChatSidebar({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n className,\n}: ChatSidebarProps) {\n return (\n <div className={cn(\"flex flex-col h-full border-r bg-background w-80\", className)}>\n <div className=\"p-4 border-b h-14 flex items-center shrink-0\">\n <h2 className=\"text-sm font-semibold\">{title}</h2>\n </div>\n <div className=\"flex-1 overflow-hidden\">\n <Thread \n placeholder={placeholder} \n starterPrompts={starterPrompts} \n className=\"h-full\"\n />\n </div>\n </div>\n );\n}\n\n","import React from \"react\";\nimport { Thread } from \"./thread\";\nimport { cn } from \"@/lib/utils\";\nimport { StarterPrompt } from \"@/types\";\n\nexport interface ChatFullProps {\n title?: string;\n placeholder?: string;\n starterPrompts?: StarterPrompt[];\n className?: string;\n}\n\nexport function ChatFull({\n title = \"Chat\",\n placeholder = \"Message the AI\",\n starterPrompts,\n className,\n}: ChatFullProps) {\n return (\n <div className={cn(\"flex flex-col h-full w-full bg-background\", className)}>\n {title && (\n <div className=\"p-4 border-b h-14 flex items-center shrink-0\">\n <h2 className=\"text-sm font-semibold\">{title}</h2>\n </div>\n )}\n <div className=\"flex-1 overflow-hidden\">\n <Thread placeholder={placeholder} starterPrompts={starterPrompts} />\n </div>\n </div>\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 { 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 * as React from \"react\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogHeader,\n AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { useAuth } from \"@/hooks/use-auth\";\nimport { IconBrandGoogle, IconLogout, IconUser } from \"@tabler/icons-react\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\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,\n size,\n}) => {\n const { isLoading, isAuthenticated, login, logout } = useAuth();\n const [open, setOpen] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n\n const handleGoogleSignIn = async () => {\n login();\n };\n\n if (isAuthenticated) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n render={(props) => (\n <Button\n variant={variant}\n size={size}\n {...props}\n className={className}\n >\n <IconUser className=\"mr-2 size-4\" />\n Account\n </Button>\n )}\n />\n <DropdownMenuContent>\n <DropdownMenuItem>\n <IconUser className=\"mr-2 size-4\" />\n Account\n </DropdownMenuItem>\n <DropdownMenuItem onClick={logout}>\n <IconLogout className=\"mr-2 size-4\" />\n Logout\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\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"]}
|