@aigentyc/chat-sdk 0.2.5 → 0.3.0
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/bin/aigentyc.mjs +10 -4
- package/bin/lib/skill.mjs +84 -0
- package/claude-skill/README.md +32 -0
- package/claude-skill/aigentyc-chat-sdk/SKILL.md +339 -0
- package/context7.json +1 -1
- package/dist/ChatInterface-B0zbA3Lm.d.cts +64 -0
- package/dist/ChatInterface-f8ftS56n.d.ts +64 -0
- package/dist/{SlotsContext-CBtt36al.d.ts → SlotsContext-BjiX1mRx.d.ts} +17 -2
- package/dist/{SlotsContext-CHvISDJT.d.cts → SlotsContext-CEOBjzfh.d.cts} +17 -2
- package/dist/ai-elements.cjs +114 -393
- package/dist/ai-elements.cjs.map +1 -1
- package/dist/ai-elements.d.cts +2 -31
- package/dist/ai-elements.d.ts +2 -31
- package/dist/ai-elements.js +9 -291
- package/dist/ai-elements.js.map +1 -1
- package/dist/{chunk-5QSXB6UL.cjs → chunk-3HGOLNGG.cjs} +13 -4
- package/dist/chunk-3HGOLNGG.cjs.map +1 -0
- package/dist/{chunk-KVEJAPWA.js → chunk-3KSMOHNY.js} +48 -62
- package/dist/chunk-3KSMOHNY.js.map +1 -0
- package/dist/chunk-4WOBNRRB.cjs +540 -0
- package/dist/chunk-4WOBNRRB.cjs.map +1 -0
- package/dist/chunk-7AZMWPKX.cjs +35 -0
- package/dist/chunk-7AZMWPKX.cjs.map +1 -0
- package/dist/chunk-B27JIQ4Z.js +528 -0
- package/dist/chunk-B27JIQ4Z.js.map +1 -0
- package/dist/{chunk-J2K7EJYP.cjs → chunk-BPV66QNM.cjs} +6 -4
- package/dist/chunk-BPV66QNM.cjs.map +1 -0
- package/dist/{chunk-FYPJSHCL.js → chunk-FPQ3UCCJ.js} +6 -4
- package/dist/chunk-FPQ3UCCJ.js.map +1 -0
- package/dist/{chunk-7L4FS6G7.js → chunk-JHWSG5IB.js} +17 -3
- package/dist/chunk-JHWSG5IB.js.map +1 -0
- package/dist/{chunk-4FBVV64J.js → chunk-M4YRNNGB.js} +13 -4
- package/dist/chunk-M4YRNNGB.js.map +1 -0
- package/dist/{chunk-QDFPJJ5Y.cjs → chunk-OU5OZKYH.cjs} +50 -65
- package/dist/chunk-OU5OZKYH.cjs.map +1 -0
- package/dist/{chunk-MC6QDYB6.cjs → chunk-PPCGZ5MP.cjs} +166 -67
- package/dist/chunk-PPCGZ5MP.cjs.map +1 -0
- package/dist/{chunk-U3FXVLUK.js → chunk-PQCGQ32Q.js} +84 -4
- package/dist/chunk-PQCGQ32Q.js.map +1 -0
- package/dist/{chunk-FOZXDUSZ.js → chunk-SWKWHBBN.js} +151 -54
- package/dist/chunk-SWKWHBBN.js.map +1 -0
- package/dist/{chunk-DMGYQ6NN.cjs → chunk-TLGZSXTU.cjs} +86 -6
- package/dist/chunk-TLGZSXTU.cjs.map +1 -0
- package/dist/{chunk-C24QG43M.cjs → chunk-TZ7EM3EG.cjs} +17 -2
- package/dist/chunk-TZ7EM3EG.cjs.map +1 -0
- package/dist/chunk-XEAAB5ZM.js +32 -0
- package/dist/chunk-XEAAB5ZM.js.map +1 -0
- package/dist/components.cjs +31 -52
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +4 -34
- package/dist/components.d.ts +4 -34
- package/dist/components.js +18 -42
- package/dist/components.js.map +1 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/hooks.cjs +6 -6
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +2 -2
- package/dist/i18n.d.cts +1 -1
- package/dist/i18n.d.ts +1 -1
- package/dist/index.cjs +45 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +51 -6
- package/dist/index.d.ts +51 -6
- package/dist/index.js +17 -10
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +194 -14
- package/dist/message-feedback-BFh3-qym.d.cts +92 -0
- package/dist/message-feedback-cWR0NVok.d.ts +92 -0
- package/dist/normalize-KzCLLqpU.d.cts +42 -0
- package/dist/normalize-KzCLLqpU.d.ts +42 -0
- package/dist/styles.css +1 -1
- package/dist/theme.d.cts +1 -1
- package/dist/theme.d.ts +1 -1
- package/dist/tools.cjs +14 -5
- package/dist/tools.d.cts +3 -2
- package/dist/tools.d.ts +3 -2
- package/dist/tools.js +3 -2
- package/dist/{types-DKJ_-nbG.d.cts → types-DlNwk-bG.d.cts} +33 -3
- package/dist/{types-DKJ_-nbG.d.ts → types-DlNwk-bG.d.ts} +33 -3
- package/dist/ui.cjs +45 -45
- package/dist/ui.js +2 -2
- package/llms.txt +175 -5
- package/package.json +2 -1
- package/dist/chunk-4FBVV64J.js.map +0 -1
- package/dist/chunk-5QSXB6UL.cjs.map +0 -1
- package/dist/chunk-7L4FS6G7.js.map +0 -1
- package/dist/chunk-A7PCSWIK.js +0 -219
- package/dist/chunk-A7PCSWIK.js.map +0 -1
- package/dist/chunk-C24QG43M.cjs.map +0 -1
- package/dist/chunk-DMGYQ6NN.cjs.map +0 -1
- package/dist/chunk-FOZXDUSZ.js.map +0 -1
- package/dist/chunk-FYPJSHCL.js.map +0 -1
- package/dist/chunk-J2K7EJYP.cjs.map +0 -1
- package/dist/chunk-KVEJAPWA.js.map +0 -1
- package/dist/chunk-MC6QDYB6.cjs.map +0 -1
- package/dist/chunk-QDFPJJ5Y.cjs.map +0 -1
- package/dist/chunk-RTVEBPAJ.cjs +0 -230
- package/dist/chunk-RTVEBPAJ.cjs.map +0 -1
- package/dist/chunk-U3FXVLUK.js.map +0 -1
package/dist/ai-elements.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/button-group.tsx","../src/ai-elements/message.tsx","../src/core/api/kb-client.ts","../src/ai-elements/message-feedback.tsx","../src/ai-elements/component-renderer.tsx","../src/ai-elements/artifact.tsx","../src/ai-elements/code-block.tsx","../src/ai-elements/web-preview.tsx","../src/ui/hover-card.tsx","../src/ai-elements/inline-citation.tsx","../src/ai-elements/shimmer.tsx","../src/ai-elements/reasoning.tsx","../src/ai-elements/thinking-spinner.tsx","../src/ai-elements/followup-buttons.tsx","../src/ai-elements/suggestion.tsx","../src/ai-elements/context.tsx","../src/ai-elements/chain-of-thought.tsx","../src/ai-elements/confirmation.tsx","../src/ai-elements/controls.tsx","../src/ui/command.tsx","../src/ai-elements/model-selector.tsx","../src/ai-elements/open-in-chat.tsx","../src/ai-elements/panel.tsx","../src/ai-elements/plan.tsx","../src/ui/input-group.tsx","../src/ai-elements/prompt-input.tsx","../src/ai-elements/queue.tsx","../src/ai-elements/task.tsx","../src/ai-elements/tool.tsx","../src/ai-elements/toolbar.tsx","../src/ai-elements/canvas.tsx","../src/ai-elements/checkpoint.tsx","../src/ai-elements/connection.tsx","../src/ai-elements/edge.tsx","../src/ai-elements/node.tsx","../src/ai-elements/image.tsx"],"names":["jsx","useState","jsxs","useEffect","XIcon","createContext","useRef","useContext","React","Fragment","memo","ChevronDownIcon","Streamdown","useControllableState","useMemo","BrainIcon","ControlsPrimitive","CommandPrimitive","PanelPrimitive","cva","useCallback","PaperclipIcon","Position"],"mappings":"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","file":"ai-elements.js","sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\nimport { Separator } from \"./separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"../ui/button-group\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport type { FileUIPart, UIMessage } from \"ai\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n PaperclipIcon,\n XIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes, ReactElement } from \"react\";\nimport { createContext, memo, useContext, useEffect, useState } from \"react\";\nimport { Streamdown } from \"streamdown\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n fullWidth?: boolean;\n};\n\nexport const Message = ({ className, from, fullWidth, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full flex-col gap-2\",\n fullWidth ? \"\" : from === \"assistant\" ? \"max-w-[var(--ac-assistant-max-width,95%)]\" : \"max-w-[95%]\",\n from === \"user\" ? \"is-user justify-end\" : \"is-assistant\",\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement> & {\n fullWidth?: boolean;\n};\n\nexport const MessageContent = ({\n children,\n className,\n fullWidth,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n \"flex min-w-0 flex-col gap-2 overflow-hidden\",\n fullWidth\n ? \"w-full\"\n : \"w-fit max-w-full\",\n \"group-[.is-user]:ml-auto group-[.is-user]:px-6 group-[.is-user]:py-4 group-[.is-user]:text-foreground group-[.is-user]:rounded-bl-[24px] group-[.is-user]:rounded-br-[24px] group-[.is-user]:rounded-tl-[4px] group-[.is-user]:rounded-tr-[24px] group-[.is-user]:bg-[var(--ac-user-bubble-bg,#f0f4f8)]\",\n \"group-[.is-assistant]:text-foreground group-[.is-assistant]:w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageActionsProps = ComponentProps<\"div\">;\n\nexport const MessageActions = ({\n className,\n children,\n ...props\n}: MessageActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type MessageActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const MessageAction = ({\n tooltip,\n children,\n label,\n variant = \"ghost\",\n size = \"icon-sm\",\n ...props\n}: MessageActionProps) => {\n const button = (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\ntype MessageBranchContextType = {\n currentBranch: number;\n totalBranches: number;\n goToPrevious: () => void;\n goToNext: () => void;\n branches: ReactElement[];\n setBranches: (branches: ReactElement[]) => void;\n};\n\nconst MessageBranchContext = createContext<MessageBranchContextType | null>(\n null\n);\n\nconst useMessageBranch = () => {\n const context = useContext(MessageBranchContext);\n\n if (!context) {\n throw new Error(\n \"MessageBranch components must be used within MessageBranch\"\n );\n }\n\n return context;\n};\n\nexport type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {\n defaultBranch?: number;\n onBranchChange?: (branchIndex: number) => void;\n};\n\nexport const MessageBranch = ({\n defaultBranch = 0,\n onBranchChange,\n className,\n ...props\n}: MessageBranchProps) => {\n const [currentBranch, setCurrentBranch] = useState(defaultBranch);\n const [branches, setBranches] = useState<ReactElement[]>([]);\n\n const handleBranchChange = (newBranch: number) => {\n setCurrentBranch(newBranch);\n onBranchChange?.(newBranch);\n };\n\n const goToPrevious = () => {\n const newBranch =\n currentBranch > 0 ? currentBranch - 1 : branches.length - 1;\n handleBranchChange(newBranch);\n };\n\n const goToNext = () => {\n const newBranch =\n currentBranch < branches.length - 1 ? currentBranch + 1 : 0;\n handleBranchChange(newBranch);\n };\n\n const contextValue: MessageBranchContextType = {\n currentBranch,\n totalBranches: branches.length,\n goToPrevious,\n goToNext,\n branches,\n setBranches,\n };\n\n return (\n <MessageBranchContext.Provider value={contextValue}>\n <div\n className={cn(\"grid w-full gap-2 [&>div]:pb-0\", className)}\n {...props}\n />\n </MessageBranchContext.Provider>\n );\n};\n\nexport type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageBranchContent = ({\n children,\n ...props\n}: MessageBranchContentProps) => {\n const { currentBranch, setBranches, branches } = useMessageBranch();\n const childrenArray = Array.isArray(children) ? children : [children];\n\n useEffect(() => {\n if (branches.length !== childrenArray.length) {\n setBranches(childrenArray);\n }\n }, [childrenArray, branches, setBranches]);\n\n return childrenArray.map((branch, index) => (\n <div\n className={cn(\n \"grid gap-2 overflow-hidden [&>div]:pb-0\",\n index === currentBranch ? \"block\" : \"hidden\"\n )}\n key={branch.key}\n {...props}\n >\n {branch}\n </div>\n ));\n};\n\nexport type MessageBranchSelectorProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const MessageBranchSelector = ({\n className,\n from,\n ...props\n}: MessageBranchSelectorProps) => {\n const { totalBranches } = useMessageBranch();\n\n if (totalBranches <= 1) {\n return null;\n }\n\n return (\n <ButtonGroup\n className=\"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md\"\n orientation=\"horizontal\"\n {...props}\n />\n );\n};\n\nexport type MessageBranchPreviousProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchPrevious = ({\n children,\n ...props\n}: MessageBranchPreviousProps) => {\n const { goToPrevious, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Previous branch\"\n disabled={totalBranches <= 1}\n onClick={goToPrevious}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronLeftIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchNextProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchNext = ({\n children,\n className,\n ...props\n}: MessageBranchNextProps) => {\n const { goToNext, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Next branch\"\n disabled={totalBranches <= 1}\n onClick={goToNext}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronRightIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const MessageBranchPage = ({\n className,\n ...props\n}: MessageBranchPageProps) => {\n const { currentBranch, totalBranches } = useMessageBranch();\n\n return (\n <ButtonGroupText\n className={cn(\n \"border-none bg-transparent text-muted-foreground shadow-none\",\n className\n )}\n {...props}\n >\n {currentBranch + 1} of {totalBranches}\n </ButtonGroupText>\n );\n};\n\nexport type MessageResponseProps = ComponentProps<typeof Streamdown>;\n\n/**\n * Add UTM parameters to a URL\n */\nfunction addUtmParams(url: string): string {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set(\"utm_source\", \"chat\");\n urlObj.searchParams.set(\"utm_medium\", \"referral\");\n return urlObj.toString();\n } catch {\n return url;\n }\n}\n\nconst CustomLink = ({ href, children, ...props }: React.AnchorHTMLAttributes<HTMLAnchorElement>) => (\n <a\n href={href ? addUtmParams(href) : href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"hover:underline hover:opacity-80 transition-opacity font-medium\"\n {...props}\n >\n {children}\n </a>\n);\n\nconst CustomImage = ({ src, alt, ...props }: React.ImgHTMLAttributes<HTMLImageElement>) => (\n <img\n src={src}\n alt={alt || \"\"}\n loading=\"lazy\"\n className=\"rounded-xl max-w-full h-auto my-4\"\n {...props}\n />\n);\n\nconst CustomTable = ({ children, ...props }: React.TableHTMLAttributes<HTMLTableElement>) => (\n <div className=\"my-4 overflow-x-auto\">\n <table\n className=\"w-full text-sm rounded-xl border border-black/[0.08] overflow-hidden\"\n {...props}\n >\n {children}\n </table>\n </div>\n);\n\nconst CustomThead = ({ children, ...props }: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <thead className=\"bg-black/[0.04]\" {...props}>\n {children}\n </thead>\n);\n\nconst CustomTh = ({ children, ...props }: React.ThHTMLAttributes<HTMLTableCellElement>) => (\n <th\n className=\"px-4 py-3 text-start text-xs font-medium uppercase tracking-wider opacity-60 border-b border-black/[0.08]\"\n {...props}\n >\n {children}\n </th>\n);\n\nconst CustomTd = ({ children, ...props }: React.TdHTMLAttributes<HTMLTableCellElement>) => (\n <td\n className=\"px-4 py-3 border-b border-black/[0.08]\"\n {...props}\n >\n {children}\n </td>\n);\n\nconst CustomTr = ({ children, ...props }: React.HTMLAttributes<HTMLTableRowElement>) => (\n <tr\n className=\"hover:bg-black/[0.02] transition-colors\"\n {...props}\n >\n {children}\n </tr>\n);\n\nexport const MessageResponse = memo(\n ({ className, ...props }: MessageResponseProps) => (\n <Streamdown\n className={cn(\n \"message-response size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\",\n className\n )}\n components={{\n a: CustomLink,\n img: CustomImage,\n table: CustomTable,\n thead: CustomThead,\n th: CustomTh,\n td: CustomTd,\n tr: CustomTr,\n } as never}\n linkSafety={{ enabled: false }}\n {...props}\n />\n ),\n (prevProps, nextProps) => prevProps.children === nextProps.children\n);\n\nMessageResponse.displayName = \"MessageResponse\";\n\nexport type MessageAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart;\n className?: string;\n onRemove?: () => void;\n};\n\nexport function MessageAttachment({\n data,\n className,\n onRemove,\n ...props\n}: MessageAttachmentProps) {\n const filename = data.filename || \"\";\n const mediaType =\n data.mediaType?.startsWith(\"image/\") && data.url ? \"image\" : \"file\";\n const isImage = mediaType === \"image\";\n const attachmentLabel = filename || (isImage ? \"Image\" : \"Attachment\");\n\n return (\n <div\n className={cn(\n \"group relative size-24 overflow-hidden rounded-lg\",\n className\n )}\n {...props}\n >\n {isImage ? (\n <>\n <img\n alt={filename || \"attachment\"}\n className=\"size-full object-cover\"\n height={100}\n src={data.url}\n width={100}\n />\n {onRemove && (\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute top-2 right-2 size-6 rounded-full bg-background/80 p-0 opacity-0 backdrop-blur-sm transition-opacity hover:bg-background group-hover:opacity-100 [&>svg]:size-3\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </>\n ) : (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"flex size-full shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <PaperclipIcon className=\"size-4\" />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p>{attachmentLabel}</p>\n </TooltipContent>\n </Tooltip>\n {onRemove && (\n <Button\n aria-label=\"Remove attachment\"\n className=\"size-6 shrink-0 rounded-full p-0 opacity-0 transition-opacity hover:bg-accent group-hover:opacity-100 [&>svg]:size-3\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </>\n )}\n </div>\n );\n}\n\nexport type MessageAttachmentsProps = ComponentProps<\"div\">;\n\nexport function MessageAttachments({\n children,\n className,\n ...props\n}: MessageAttachmentsProps) {\n if (!children) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"ml-auto flex w-fit flex-wrap items-start gap-2\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type MessageToolbarProps = ComponentProps<\"div\">;\n\nexport const MessageToolbar = ({\n className,\n children,\n ...props\n}: MessageToolbarProps) => (\n <div\n className={cn(\n \"mt-4 flex w-full items-center justify-between gap-4\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n","\"use client\";\n\n/**\n * Knowledge Base API Client\n * Communicates with central system's KB endpoints.\n */\n\nexport interface KBSearchOptions {\n\ttopK?: number;\n\tthreshold?: number;\n\tsectorId?: string;\n}\n\nexport interface KBSearchResult {\n\tid: number;\n\tcontent: string;\n\tdocumentName: string | null;\n\tsourceUrl: string | null;\n\tsimilarity: number;\n\tpageTitle?: string;\n\tsectionType?: string;\n}\n\nexport interface KBSearchResponse {\n\tsuccess: boolean;\n\tresults: KBSearchResult[];\n\tmetadata: {\n\t\tquery: string;\n\t\ttotalResults: number;\n\t\tgeneratedQueries?: string[];\n\t};\n}\n\nfunction getDefaultEndpoint(): string {\n\ttry {\n\t\t// Vite/ESM environments\n\t\tconst env = (import.meta as unknown as { env?: Record<string, string> }).env;\n\t\tif (env?.VITE_API_ENDPOINT) return env.VITE_API_ENDPOINT;\n\t} catch {\n\t\t// Ignore — not a Vite/ESM env.\n\t}\n\treturn \"http://localhost:3000\";\n}\n\n/**\n * Search the knowledge base via central API.\n */\nexport async function searchKnowledgeBase(\n\tprojectId: string,\n\tquery: string,\n\toptions?: KBSearchOptions,\n\tapiEndpoint?: string,\n): Promise<KBSearchResponse> {\n\tconst endpoint = apiEndpoint || getDefaultEndpoint();\n\n\tconst response = await fetch(`${endpoint}/api/kb/search`, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\tcredentials: \"include\",\n\t\tbody: JSON.stringify({\n\t\t\tprojectId,\n\t\t\tquery,\n\t\t\ttopK: options?.topK || 5,\n\t\t\tthreshold: options?.threshold || 0.3,\n\t\t\tsectorId: options?.sectorId,\n\t\t}),\n\t});\n\n\tif (!response.ok) {\n\t\tconst error = await response\n\t\t\t.json()\n\t\t\t.catch(() => ({ error: response.statusText }));\n\t\tthrow new Error(\n\t\t\t`KB search failed: ${error.error || response.statusText}`,\n\t\t);\n\t}\n\n\treturn await response.json();\n}\n\nexport interface CustomTool {\n\tid: string;\n\tname: string;\n\tdisplayName: string;\n\tdescription: string;\n\tinputSchema: unknown;\n\ttoolType: string;\n\tisActive: boolean;\n}\n\n/**\n * Get the list of available custom tools.\n */\nexport async function getCustomTools(\n\tprojectId: string,\n\tapiEndpoint?: string,\n): Promise<CustomTool[]> {\n\tconst endpoint = apiEndpoint || getDefaultEndpoint();\n\n\tconst response = await fetch(\n\t\t`${endpoint}/api/kb/tools?projectId=${projectId}`,\n\t\t{ method: \"GET\", credentials: \"include\" },\n\t);\n\n\tif (!response.ok) {\n\t\tthrow new Error(`Failed to get tools: ${response.statusText}`);\n\t}\n\n\tconst data = await response.json();\n\treturn data.tools || [];\n}\n\n/**\n * Execute a custom tool.\n */\nexport async function executeCustomTool(\n\tprojectId: string,\n\ttoolName: string,\n\tinput: unknown,\n\tapiEndpoint?: string,\n): Promise<unknown> {\n\tconst endpoint = apiEndpoint || getDefaultEndpoint();\n\n\tconst response = await fetch(`${endpoint}/api/kb/tools`, {\n\t\tmethod: \"POST\",\n\t\theaders: { \"Content-Type\": \"application/json\" },\n\t\tcredentials: \"include\",\n\t\tbody: JSON.stringify({ projectId, toolName, input }),\n\t});\n\n\tif (!response.ok) {\n\t\tthrow new Error(`Tool execution failed: ${response.statusText}`);\n\t}\n\n\tconst data = await response.json();\n\treturn data.result;\n}\n\n/**\n * Feedback request payload.\n */\nexport interface FeedbackRequest {\n\tprojectId: string;\n\tsessionId?: string;\n\tmessageId?: string;\n\tisPositive: boolean;\n\tissueType?:\n\t\t| \"wrong_answer\"\n\t\t| \"partial_answer\"\n\t\t| \"hallucination\"\n\t\t| \"inappropriate_tone\";\n\tfeedbackText?: string;\n}\n\n/**\n * Submit feedback for a chat response.\n */\nexport async function submitFeedback(\n\trequest: FeedbackRequest,\n\tapiKey?: string,\n\tapiEndpoint?: string,\n): Promise<{ success: boolean; error?: string }> {\n\tconst endpoint = apiEndpoint || getDefaultEndpoint();\n\n\tconst headers: Record<string, string> = {\n\t\t\"Content-Type\": \"application/json\",\n\t};\n\tif (apiKey) {\n\t\theaders[\"Authorization\"] = `Bearer ${apiKey}`;\n\t}\n\n\ttry {\n\t\tconst response = await fetch(`${endpoint}/api/kb/feedback`, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tcredentials: \"include\",\n\t\t\tbody: JSON.stringify(request),\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tconst error = await response\n\t\t\t\t.json()\n\t\t\t\t.catch(() => ({ error: response.statusText }));\n\t\t\treturn { success: false, error: error.error || response.statusText };\n\t\t}\n\n\t\treturn { success: true };\n\t} catch (error) {\n\t\treturn {\n\t\t\tsuccess: false,\n\t\t\terror: error instanceof Error ? error.message : \"Unknown error\",\n\t\t};\n\t}\n}\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { Check, Copy, X } from \"lucide-react\";\nimport { Textarea } from \"../ui/textarea\";\nimport { submitFeedback, type FeedbackRequest } from \"../core/api/kb-client\";\nimport type { TrackInteractionParams } from \"../core/analytics/interaction-tracker\";\nimport { useI18n } from \"../hooks/use-i18n\";\nimport { cn } from \"../core/utils\";\n\n// Custom icons\nconst ThumbsUpIcon = ({ className }: { className?: string }) => (\n\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n\t\t<path\n\t\t\td=\"M7 11V19C7 19.2652 6.89464 19.5196 6.70711 19.7071C6.51957 19.8946 6.26522 20 6 20H4C3.73478 20 3.48043 19.8946 3.29289 19.7071C3.10536 19.5196 3 19.2652 3 19V12C3 11.7348 3.10536 11.4804 3.29289 11.2929C3.48043 11.1054 3.73478 11 4 11H7ZM7 11C8.06087 11 9.07828 10.5786 9.82843 9.82843C10.5786 9.07828 11 8.06087 11 7V6C11 5.46957 11.2107 4.96086 11.5858 4.58579C11.9609 4.21071 12.4696 4 13 4C13.5304 4 14.0391 4.21071 14.4142 4.58579C14.7893 4.96086 15 5.46957 15 6V11H18C18.5304 11 19.0391 11.2107 19.4142 11.5858C19.7893 11.9609 20 12.4696 20 13L19 18C18.8562 18.6135 18.5834 19.1402 18.2227 19.501C17.8619 19.8617 17.4328 20.0368 17 20H10C9.20435 20 8.44129 19.6839 7.87868 19.1213C7.31607 18.5587 7 17.7956 7 17\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t/>\n\t</svg>\n);\n\nconst ThumbsDownIcon = ({ className }: { className?: string }) => (\n\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className={className}>\n\t\t<path\n\t\t\td=\"M7 13V4.99999C7 4.73478 6.89464 4.48042 6.70711 4.29289C6.51957 4.10535 6.26522 3.99999 6 3.99999H4C3.73478 3.99999 3.48043 4.10535 3.29289 4.29289C3.10536 4.48042 3 4.73478 3 4.99999V12C3 12.2652 3.10536 12.5196 3.29289 12.7071C3.48043 12.8946 3.73478 13 4 13H7ZM7 13C8.06087 13 9.07828 13.4214 9.82843 14.1716C10.5786 14.9217 11 15.9391 11 17V18C11 18.5304 11.2107 19.0391 11.5858 19.4142C11.9609 19.7893 12.4696 20 13 20C13.5304 20 14.0391 19.7893 14.4142 19.4142C14.7893 19.0391 15 18.5304 15 18V13H18C18.5304 13 19.0391 12.7893 19.4142 12.4142C19.7893 12.0391 20 11.5304 20 11L19 5.99999C18.8562 5.38652 18.5834 4.85975 18.2227 4.49903C17.8619 4.13831 17.4328 3.96317 17 3.99999H10C9.20435 3.99999 8.44129 4.31606 7.87868 4.87867C7.31607 5.44128 7 6.20434 7 6.99999\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeWidth=\"1.5\"\n\t\t\tstrokeLinecap=\"round\"\n\t\t\tstrokeLinejoin=\"round\"\n\t\t/>\n\t</svg>\n);\n\nconst REVIEW_TYPES = [\n\t{ value: \"wrong_answer\", labelKey: \"wrongAnswer\" as const },\n\t{ value: \"partial_answer\", labelKey: \"partialAnswer\" as const },\n\t{ value: \"hallucination\", labelKey: \"hallucination\" as const },\n\t{ value: \"inappropriate_tone\", labelKey: \"inappropriateTone\" as const },\n] as const;\n\ntype ReviewType = (typeof REVIEW_TYPES)[number][\"value\"];\n\nexport interface FeedbackData {\n\tisPositive: boolean;\n\treviewType?: ReviewType;\n\treviewText?: string;\n}\n\ninterface MessageFeedbackProps {\n\tmessageId: string;\n\tprojectId: string;\n\tsessionId?: string;\n\tapiKey?: string;\n\tapiEndpoint?: string;\n\ttextContent: string;\n\ttrackInteraction?: (params: TrackInteractionParams) => void;\n}\n\nexport function MessageFeedback({\n\tmessageId,\n\tprojectId,\n\tsessionId,\n\tapiKey,\n\tapiEndpoint,\n\ttextContent,\n\ttrackInteraction,\n}: MessageFeedbackProps) {\n\tconst { t } = useI18n();\n\tconst [feedback, setFeedback] = useState<\"positive\" | \"negative\" | null>(null);\n\tconst [showReviewForm, setShowReviewForm] = useState(false);\n\tconst [reviewType, setReviewType] = useState<ReviewType | null>(null);\n\tconst [reviewText, setReviewText] = useState(\"\");\n\tconst [isSubmitting, setIsSubmitting] = useState(false);\n\tconst [copied, setCopied] = useState(false);\n\n\tconst submitFeedbackToApi = async (feedbackData: FeedbackData) => {\n\t\tif (!projectId || !messageId || isSubmitting) return;\n\n\t\tsetIsSubmitting(true);\n\t\ttry {\n\t\t\tconst request: FeedbackRequest = {\n\t\t\t\tprojectId,\n\t\t\t\tsessionId,\n\t\t\t\tmessageId,\n\t\t\t\tisPositive: feedbackData.isPositive,\n\t\t\t\tissueType: feedbackData.reviewType as any,\n\t\t\t\tfeedbackText: feedbackData.reviewText,\n\t\t\t};\n\t\t\tconst result = await submitFeedback(request, apiKey, apiEndpoint);\n\t\t\tif (!result.success) {\n\t\t\t\tconsole.error(\"Failed to submit feedback:\", result.error);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Failed to submit feedback:\", error);\n\t\t} finally {\n\t\t\tsetIsSubmitting(false);\n\t\t}\n\t};\n\n\tconst handlePositiveFeedback = () => {\n\t\tif (isSubmitting) return;\n\t\tsetFeedback(\"positive\");\n\t\tsetShowReviewForm(false);\n\t\tsubmitFeedbackToApi({ isPositive: true });\n\n\t\ttrackInteraction?.({\n\t\t\ttype: \"feedback\",\n\t\t\ttarget: \"thumbs_up\",\n\t\t\tlabel: \"Positive feedback\",\n\t\t\tmessageId,\n\t\t\tmetadata: { isPositive: true },\n\t\t});\n\t};\n\n\tconst handleNegativeFeedback = () => {\n\t\tif (isSubmitting) return;\n\t\tsetFeedback(\"negative\");\n\t\tsetShowReviewForm(true);\n\t};\n\n\tconst handleSubmitReview = () => {\n\t\tif (isSubmitting) return;\n\t\tconst feedbackData: FeedbackData = {\n\t\t\tisPositive: false,\n\t\t\treviewType: reviewType ?? undefined,\n\t\t\treviewText: reviewText || undefined,\n\t\t};\n\t\tsetShowReviewForm(false);\n\t\tsubmitFeedbackToApi(feedbackData);\n\n\t\ttrackInteraction?.({\n\t\t\ttype: \"feedback\",\n\t\t\ttarget: \"thumbs_down\",\n\t\t\tlabel: \"Negative feedback\",\n\t\t\tmessageId,\n\t\t\tmetadata: { isPositive: false, reviewType, reviewText },\n\t\t});\n\t};\n\n\tconst handleCancelReview = () => {\n\t\tsetFeedback(null);\n\t\tsetShowReviewForm(false);\n\t\tsetReviewType(null);\n\t\tsetReviewText(\"\");\n\t};\n\n\tconst handleCopy = async () => {\n\t\tif (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) return;\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(textContent);\n\t\t\tsetCopied(true);\n\t\t\tsetTimeout(() => setCopied(false), 2000);\n\n\t\t\ttrackInteraction?.({\n\t\t\t\ttype: \"copy\",\n\t\t\t\ttarget: \"message\",\n\t\t\t\tlabel: \"Copy response\",\n\t\t\t\tmessageId,\n\t\t\t\tmetadata: { contentLength: textContent.length },\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.error(\"Failed to copy:\", error);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className=\"mt-4\">\n\t\t\t{/* Action buttons row */}\n\t\t\t<div className=\"flex items-center gap-2\">\n\t\t\t\t{/* Thumbs Up */}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={handlePositiveFeedback}\n\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group w-8 h-8 rounded-full flex items-center justify-center transition-all duration-300\",\n\t\t\t\t\t\tfeedback === \"positive\"\n\t\t\t\t\t\t\t? \"bg-primary/10 text-primary\"\n\t\t\t\t\t\t\t: \"bg-secondary text-muted-foreground hover:bg-primary/10 hover:text-primary\",\n\t\t\t\t\t\tisSubmitting && \"opacity-50 cursor-not-allowed\"\n\t\t\t\t\t)}\n\t\t\t\t\ttitle={t(\"helpful\")}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsUpIcon />\n\t\t\t\t</button>\n\n\t\t\t\t{/* Thumbs Down */}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={handleNegativeFeedback}\n\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group w-8 h-8 rounded-full flex items-center justify-center transition-all duration-300\",\n\t\t\t\t\t\tfeedback === \"negative\"\n\t\t\t\t\t\t\t? \"bg-red-100 text-red-500\"\n\t\t\t\t\t\t\t: \"bg-secondary text-muted-foreground hover:bg-red-50 hover:text-red-500\",\n\t\t\t\t\t\tisSubmitting && \"opacity-50 cursor-not-allowed\"\n\t\t\t\t\t)}\n\t\t\t\t\ttitle={t(\"notHelpful\")}\n\t\t\t\t>\n\t\t\t\t\t<ThumbsDownIcon />\n\t\t\t\t</button>\n\n\t\t\t\t{/* Copy Button */}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonClick={handleCopy}\n\t\t\t\t\tclassName=\"group w-8 h-8 rounded-full bg-secondary flex items-center justify-center text-muted-foreground hover:bg-primary/10 hover:text-primary transition-all duration-300\"\n\t\t\t\t\ttitle={t(\"copyResponse\")}\n\t\t\t\t>\n\t\t\t\t\t{copied ? (\n\t\t\t\t\t\t<Check className=\"w-4 h-4 text-green-600\" />\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Copy className=\"w-4 h-4\" />\n\t\t\t\t\t)}\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t{/* Review Form */}\n\t\t\t{showReviewForm && (\n\t\t\t\t<div className=\"mt-4 bg-gradient-to-br from-accent to-secondary rounded-2xl border border-border overflow-hidden animate-in slide-in-from-top-2 duration-300\">\n\t\t\t\t\t<div className=\"px-5 py-4 border-b border-border flex items-center justify-between\">\n\t\t\t\t\t\t<div className=\"flex items-center gap-3\">\n\t\t\t\t\t\t\t<span className=\"w-8 h-8 rounded-xl bg-card border border-border flex items-center justify-center\">\n\t\t\t\t\t\t\t\t<ThumbsDownIcon className=\"text-red-500\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span className=\"font-medium text-sm\">{t(\"whatWentWrong\")}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleCancelReview}\n\t\t\t\t\t\t\tclassName=\"w-8 h-8 rounded-full bg-card border border-border flex items-center justify-center hover:border-primary transition-colors\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<X className=\"w-4 h-4\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div className=\"p-5 space-y-4\">\n\t\t\t\t\t\t<div className=\"flex flex-wrap gap-2\">\n\t\t\t\t\t\t\t{REVIEW_TYPES.map((type) => (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={type.value}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => setReviewType(type.value as ReviewType)}\n\t\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t\t\"px-4 py-2 rounded-full text-xs font-medium transition-all duration-300\",\n\t\t\t\t\t\t\t\t\t\treviewType === type.value\n\t\t\t\t\t\t\t\t\t\t\t? \"bg-primary text-primary-foreground shadow-md shadow-primary/20\"\n\t\t\t\t\t\t\t\t\t\t\t: \"bg-card border border-border text-foreground hover:border-primary hover:text-primary\"\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{t(type.labelKey)}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t<Textarea\n\t\t\t\t\t\t\tplaceholder={t(\"addDetails\")}\n\t\t\t\t\t\t\tvalue={reviewText}\n\t\t\t\t\t\t\tonChange={(e) => setReviewText(e.target.value)}\n\t\t\t\t\t\t\trows={2}\n\t\t\t\t\t\t\tclassName=\"text-sm resize-none rounded-xl border-border focus:border-primary focus:ring-primary/20\"\n\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t<div className=\"flex justify-end\">\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonClick={handleSubmitReview}\n\t\t\t\t\t\t\t\tdisabled={isSubmitting}\n\t\t\t\t\t\t\t\tclassName=\"group relative px-5 py-2.5 bg-primary text-primary-foreground rounded-full text-sm font-medium overflow-hidden transition-all duration-300 hover:shadow-lg hover:shadow-primary/25 disabled:opacity-50 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span className=\"relative z-10\">\n\t\t\t\t\t\t\t\t\t{isSubmitting ? t(\"submitting\") : t(\"submitFeedback\")}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity bg-primary/90\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\n\t\t\t<style>{`\n\t\t\t\t.animate-in {\n\t\t\t\t\tanimation: animateIn 0.3s ease-out;\n\t\t\t\t}\n\t\t\t\t.slide-in-from-top-2 {\n\t\t\t\t\t--tw-enter-translate-y: -0.5rem;\n\t\t\t\t}\n\t\t\t\t@keyframes animateIn {\n\t\t\t\t\tfrom {\n\t\t\t\t\t\topacity: 0;\n\t\t\t\t\t\ttransform: translateY(var(--tw-enter-translate-y, 0));\n\t\t\t\t\t}\n\t\t\t\t\tto {\n\t\t\t\t\t\topacity: 1;\n\t\t\t\t\t\ttransform: translateY(0);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t`}</style>\n\t\t</div>\n\t);\n}\n","\"use client\";\n\n/**\n * ComponentRenderer - Renders custom HTML/CSS templates with data\n * Supports both single objects and arrays with grid layout\n */\n\nimport { useEffect, useId, useRef, useState, useSyncExternalStore } from \"react\";\nimport { processImagesInHtml } from \"../core/image-utils\";\nimport type { TrackInteractionParams } from \"../core/analytics/interaction-tracker\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nfunction subscribeToResize(cb: () => void) {\n if (typeof window === \"undefined\") return () => {};\n window.addEventListener(\"resize\", cb);\n return () => window.removeEventListener(\"resize\", cb);\n}\n\nfunction getIsMobile() {\n if (typeof window === \"undefined\") return false;\n return window.innerWidth < MOBILE_BREAKPOINT;\n}\n\nexport interface ComponentRendererProps {\n htmlCode: string;\n cssCode: string;\n data: any;\n mobileGridCols?: number;\n desktopGridCols?: number;\n onInteraction?: (params: TrackInteractionParams) => void;\n messageId?: string;\n eventId?: string;\n /** Max items per page on mobile (default: 4) */\n mobilePageSize?: number;\n /** Max items per page on desktop (default: 4) */\n desktopPageSize?: number;\n}\n\nexport function ComponentRenderer({\n htmlCode,\n cssCode,\n data,\n mobileGridCols = 1,\n desktopGridCols = 3,\n onInteraction,\n messageId,\n eventId,\n mobilePageSize = 4,\n desktopPageSize = 4,\n}: ComponentRendererProps) {\n const containerId = useId();\n const containerRef = useRef<HTMLDivElement>(null);\n const [currentPage, setCurrentPage] = useState(0);\n const isMobile = useSyncExternalStore(subscribeToResize, getIsMobile, () => true);\n\n const pageSize = isMobile ? mobilePageSize : desktopPageSize;\n\n // Pagination calculations\n const isArray = Array.isArray(data);\n const totalItems = isArray ? data.length : 1;\n const totalPages = isArray ? Math.ceil(totalItems / pageSize) : 1;\n const hasPagination = isArray && totalItems > pageSize;\n\n // Reset to first page when page size changes (mobile ↔ desktop)\n useEffect(() => {\n setCurrentPage(p => Math.min(p, Math.max(0, totalPages - 1)));\n }, [totalPages]);\n\n // Get current page data\n const displayData = isArray && hasPagination\n ? data.slice(currentPage * pageSize, (currentPage + 1) * pageSize)\n : data;\n\n useEffect(() => {\n if (!containerRef.current) return;\n if (typeof document === \"undefined\") return;\n\n let processedHtml = \"\";\n\n if (Array.isArray(displayData)) {\n const gridId = `grid-${containerId}`;\n const items = displayData\n .map((item, idx) => {\n let rendered = replaceTemplateVariables(htmlCode, item);\n rendered = processImagesInHtml(rendered);\n const globalIndex = currentPage * pageSize + idx;\n return `<div class=\"grid-item\" data-item-index=\"${globalIndex}\">${rendered}</div>`;\n })\n .join(\"\");\n\n processedHtml = `<div class=\"grid-container\" id=\"${gridId}\">${items}</div>`;\n } else {\n processedHtml = replaceTemplateVariables(htmlCode, displayData);\n processedHtml = processImagesInHtml(processedHtml);\n }\n\n containerRef.current.innerHTML = processedHtml;\n\n // Inject scoped CSS\n const styleId = `component-style-${containerId}`;\n const existingStyle = document.getElementById(styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n\n let finalCss = cssCode;\n if (Array.isArray(displayData)) {\n const gridCss = `\n#${containerId} .grid-container {\n display: grid;\n grid-template-columns: repeat(${mobileGridCols}, 1fr);\n gap: 1rem;\n width: 100%;\n}\n\n#${containerId} .grid-item {\n width: 100%;\n}\n\n@media (min-width: 768px) {\n #${containerId} .grid-container {\n grid-template-columns: repeat(${desktopGridCols}, 1fr);\n }\n}\n`;\n finalCss = `${cssCode}\\n${gridCss}`;\n }\n\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = finalCss;\n containerRef.current.appendChild(style);\n\n // Add lazy loading to images\n const images = containerRef.current.querySelectorAll(\"img\");\n images.forEach((img) => {\n if (!img.hasAttribute(\"loading\")) {\n img.setAttribute(\"loading\", \"lazy\");\n }\n });\n\n // Make all links open in new tab\n const links = containerRef.current.querySelectorAll(\"a\");\n links.forEach((link) => {\n link.setAttribute(\"target\", \"_blank\");\n link.setAttribute(\"rel\", \"noopener noreferrer\");\n });\n }, [htmlCode, cssCode, displayData, mobileGridCols, desktopGridCols, containerId, currentPage, pageSize, totalItems, totalPages]);\n\n return (\n <div className=\"component-renderer-wrapper\">\n <div\n ref={containerRef}\n id={containerId}\n className=\"component-render w-full rounded\"\n onClick={(e) => {\n if (!onInteraction) return;\n\n const target = e.target as HTMLElement;\n const link = target.closest(\"a\");\n const button = target.closest(\"button\");\n\n if (link?.href) {\n onInteraction({\n type: \"link_click\",\n target: link.href,\n label: link.textContent || link.href,\n metadata: { url: link.href, text: link.textContent },\n messageId,\n eventId,\n });\n } else if (button && !button.hasAttribute(\"data-no-track\")) {\n onInteraction({\n type: \"button_click\",\n target: button.textContent || \"button\",\n label: button.textContent || \"button\",\n metadata: { buttonText: button.textContent },\n messageId,\n eventId,\n });\n }\n }}\n style={{ display: \"block\" }}\n />\n\n {/* Pagination Controls - RTL aware */}\n {hasPagination && (\n <div className=\"flex items-center justify-center gap-2 mt-4\" dir=\"ltr\">\n <button\n onClick={() => setCurrentPage(p => Math.max(0, p - 1))}\n disabled={currentPage === 0}\n className=\"px-3 py-1.5 text-sm rounded-md border border-gray-300 disabled:opacity-40 disabled:cursor-not-allowed hover:bg-gray-100 transition-colors\"\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n\n <span className=\"text-sm text-gray-600 px-2 tabular-nums\">\n {currentPage + 1} / {totalPages}\n </span>\n\n <button\n onClick={() => setCurrentPage(p => Math.min(totalPages - 1, p + 1))}\n disabled={currentPage >= totalPages - 1}\n className=\"px-3 py-1.5 text-sm rounded-md border border-gray-300 disabled:opacity-40 disabled:cursor-not-allowed hover:bg-gray-100 transition-colors\"\n aria-label=\"Next page\"\n >\n ›\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Replace {{template}} variables in HTML with actual data values\n * Supports: {{field}}, {{nested.field}}, {{#each field}}...{{/each}}, {{this}}, {{this.field}}\n */\nfunction replaceTemplateVariables(html: string, data: any): string {\n // Process {{#each field}}...{{/each}} blocks first\n let processed = processEachBlocks(html, data);\n\n // Strip any remaining unsupported control flow ({{#if}}, etc.)\n processed = processed.replace(/\\{\\{[#/][^}]+\\}\\}/g, \"\");\n\n // Replace {{this}} with the data itself (for scalar arrays inside #each)\n processed = processed.replace(/\\{\\{this\\}\\}/g, () => {\n return data !== undefined && data !== null ? String(data) : \"\";\n });\n\n // Replace {{this.field}} with {{field}} for compatibility\n processed = processed.replace(/\\{\\{this\\.([^}]+)\\}\\}/g, \"{{$1}}\");\n\n return processed.replace(/\\{\\{([^}]+)\\}\\}/g, (match, path) => {\n try {\n const trimmedPath = path.trim();\n const value = getNestedValue(data, trimmedPath);\n\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n\n return String(value);\n } catch (error) {\n console.error(`Error processing template variable {{${path}}}:`, error);\n return match;\n }\n });\n}\n\n/**\n * Process {{#each field}}...{{/each}} blocks by iterating over arrays in data\n */\nfunction processEachBlocks(html: string, data: any): string {\n const eachRegex = /\\{\\{#each\\s+([^}]+)\\}\\}([\\s\\S]*?)\\{\\{\\/each\\}\\}/g;\n\n return html.replace(eachRegex, (_match, field, content) => {\n const trimmedField = field.trim();\n const array = getNestedValue(data, trimmedField);\n\n if (!Array.isArray(array)) {\n return \"\";\n }\n\n return array\n .map((item) => {\n let itemHtml = processEachBlocks(content, item);\n\n if (typeof item !== \"object\" || item === null) {\n itemHtml = itemHtml.replace(/\\{\\{this\\}\\}/g, String(item));\n return itemHtml;\n }\n\n itemHtml = itemHtml.replace(/\\{\\{this\\.([^}]+)\\}\\}/g, \"{{$1}}\");\n itemHtml = itemHtml.replace(/\\{\\{([^}]+)\\}\\}/g, (m, path) => {\n const trimmedPath = path.trim();\n if (trimmedPath.startsWith(\"#\") || trimmedPath.startsWith(\"/\")) return m;\n const value = getNestedValue(item, trimmedPath);\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n });\n\n return itemHtml;\n })\n .join(\"\");\n });\n}\n\n/**\n * Get nested value from object using dot/bracket notation\n */\nfunction getNestedValue(obj: any, path: string): any {\n if (!path || obj === null || obj === undefined) {\n return undefined;\n }\n\n const parts = path.split(/\\.(?![^[]*\\])/);\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n\n const arrayMatch = part.match(/^([^[]+)\\[([^\\]]+)\\]$/);\n if (arrayMatch) {\n const [, key, index] = arrayMatch;\n current = current[key];\n if (Array.isArray(current)) {\n current = current[parseInt(index, 10)];\n }\n } else {\n current = current[part];\n }\n }\n\n return current;\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { type LucideIcon, XIcon } from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type ArtifactProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Artifact = ({ className, ...props }: ArtifactProps) => (\n <div\n className={cn(\n \"flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactHeader = ({\n className,\n ...props\n}: ArtifactHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between border-b bg-muted/50 px-4 py-3\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactCloseProps = ComponentProps<typeof Button>;\n\nexport const ArtifactClose = ({\n className,\n children,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactCloseProps) => (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children ?? <XIcon className=\"size-4\" />}\n <span className=\"sr-only\">Close</span>\n </Button>\n);\n\nexport type ArtifactTitleProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactTitle = ({ className, ...props }: ArtifactTitleProps) => (\n <p\n className={cn(\"font-medium text-foreground text-sm\", className)}\n {...props}\n />\n);\n\nexport type ArtifactDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactDescription = ({\n className,\n ...props\n}: ArtifactDescriptionProps) => (\n <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n);\n\nexport type ArtifactActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactActions = ({\n className,\n ...props\n}: ArtifactActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type ArtifactActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n icon?: LucideIcon;\n};\n\nexport const ArtifactAction = ({\n tooltip,\n label,\n icon: Icon,\n children,\n className,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactActionProps) => {\n const button = (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {Icon ? <Icon className=\"size-4\" /> : children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\nexport type ArtifactContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactContent = ({\n className,\n ...props\n}: ArtifactContentProps) => (\n <div className={cn(\"flex-1 overflow-auto p-4\", className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\nimport { CheckIcon, CopyIcon } from \"lucide-react\";\nimport {\n type ComponentProps,\n createContext,\n type HTMLAttributes,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { type BundledLanguage, codeToHtml, type ShikiTransformer } from \"shiki\";\n\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\nconst lineNumberTransformer: ShikiTransformer = {\n name: \"line-numbers\",\n line(node, line) {\n node.children.unshift({\n type: \"element\",\n tagName: \"span\",\n properties: {\n className: [\n \"inline-block\",\n \"min-w-10\",\n \"mr-4\",\n \"text-right\",\n \"select-none\",\n \"text-muted-foreground\",\n ],\n },\n children: [{ type: \"text\", value: String(line) }],\n });\n },\n};\n\nexport async function highlightCode(\n code: string,\n language: BundledLanguage,\n showLineNumbers = false\n) {\n const transformers: ShikiTransformer[] = showLineNumbers\n ? [lineNumberTransformer]\n : [];\n\n return await Promise.all([\n codeToHtml(code, {\n lang: language,\n theme: \"one-light\",\n transformers,\n }),\n codeToHtml(code, {\n lang: language,\n theme: \"one-dark-pro\",\n transformers,\n }),\n ]);\n}\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => {\n const [html, setHtml] = useState<string>(\"\");\n const [darkHtml, setDarkHtml] = useState<string>(\"\");\n const mounted = useRef(false);\n\n useEffect(() => {\n highlightCode(code, language, showLineNumbers).then(([light, dark]) => {\n if (!mounted.current) {\n setHtml(light);\n setDarkHtml(dark);\n mounted.current = true;\n }\n });\n\n return () => {\n mounted.current = false;\n };\n }, [code, language, showLineNumbers]);\n\n return (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-md border bg-background text-foreground\",\n className\n )}\n {...props}\n >\n <div className=\"relative\">\n <div\n className=\"overflow-auto dark:hidden [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n <div\n className=\"hidden overflow-auto dark:block [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: darkHtml }}\n />\n {children && (\n <div className=\"absolute top-2 right-2 flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn(\"shrink-0\", className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { Input } from \"../ui/input\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\nexport type WebPreviewContextValue = {\n url: string;\n setUrl: (url: string) => void;\n consoleOpen: boolean;\n setConsoleOpen: (open: boolean) => void;\n};\n\nconst WebPreviewContext = createContext<WebPreviewContextValue | null>(null);\n\nconst useWebPreview = () => {\n const context = useContext(WebPreviewContext);\n if (!context) {\n throw new Error(\"WebPreview components must be used within a WebPreview\");\n }\n return context;\n};\n\nexport type WebPreviewProps = ComponentProps<\"div\"> & {\n defaultUrl?: string;\n onUrlChange?: (url: string) => void;\n};\n\nexport const WebPreview = ({\n className,\n children,\n defaultUrl = \"\",\n onUrlChange,\n ...props\n}: WebPreviewProps) => {\n const [url, setUrl] = useState(defaultUrl);\n const [consoleOpen, setConsoleOpen] = useState(false);\n\n const handleUrlChange = (newUrl: string) => {\n setUrl(newUrl);\n onUrlChange?.(newUrl);\n };\n\n const contextValue: WebPreviewContextValue = {\n url,\n setUrl: handleUrlChange,\n consoleOpen,\n setConsoleOpen,\n };\n\n return (\n <WebPreviewContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex size-full flex-col rounded-lg border bg-card\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </WebPreviewContext.Provider>\n );\n};\n\nexport type WebPreviewNavigationProps = ComponentProps<\"div\">;\n\nexport const WebPreviewNavigation = ({\n className,\n children,\n ...props\n}: WebPreviewNavigationProps) => (\n <div\n className={cn(\"flex items-center gap-1 border-b p-2\", className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type WebPreviewNavigationButtonProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n};\n\nexport const WebPreviewNavigationButton = ({\n onClick,\n disabled,\n tooltip,\n children,\n ...props\n}: WebPreviewNavigationButtonProps) => (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n className=\"h-8 w-8 p-0 hover:text-foreground\"\n disabled={disabled}\n onClick={onClick}\n size=\"sm\"\n variant=\"ghost\"\n {...props}\n >\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n);\n\nexport type WebPreviewUrlProps = ComponentProps<typeof Input>;\n\nexport const WebPreviewUrl = ({\n value,\n onChange,\n onKeyDown,\n ...props\n}: WebPreviewUrlProps) => {\n const { url, setUrl } = useWebPreview();\n const [inputValue, setInputValue] = useState(url);\n\n useEffect(() => {\n setInputValue(url);\n }, [url]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n onChange?.(event);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n const target = event.target as HTMLInputElement;\n setUrl(target.value);\n }\n onKeyDown?.(event);\n };\n\n return (\n <Input\n className=\"h-8 flex-1 text-sm\"\n onChange={onChange ?? handleChange}\n onKeyDown={handleKeyDown}\n placeholder=\"Enter URL...\"\n value={value ?? inputValue}\n {...props}\n />\n );\n};\n\nexport type WebPreviewBodyProps = ComponentProps<\"iframe\"> & {\n loading?: ReactNode;\n};\n\nexport const WebPreviewBody = ({\n className,\n loading,\n src,\n ...props\n}: WebPreviewBodyProps) => {\n const { url } = useWebPreview();\n\n return (\n <div className=\"flex-1\">\n <iframe\n className={cn(\"size-full\", className)}\n sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-presentation\"\n src={(src ?? url) || undefined}\n title=\"Preview\"\n {...props}\n />\n {loading}\n </div>\n );\n};\n\nexport type WebPreviewConsoleProps = ComponentProps<\"div\"> & {\n logs?: Array<{\n level: \"log\" | \"warn\" | \"error\";\n message: string;\n timestamp: Date;\n }>;\n};\n\nexport const WebPreviewConsole = ({\n className,\n logs = [],\n children,\n ...props\n}: WebPreviewConsoleProps) => {\n const { consoleOpen, setConsoleOpen } = useWebPreview();\n\n return (\n <Collapsible\n className={cn(\"border-t bg-muted/50 font-mono text-sm\", className)}\n onOpenChange={setConsoleOpen}\n open={consoleOpen}\n {...props}\n >\n <CollapsibleTrigger asChild>\n <Button\n className=\"flex w-full items-center justify-between p-4 text-start font-medium hover:bg-muted/50\"\n variant=\"ghost\"\n >\n Console\n <ChevronDownIcon\n className={cn(\n \"h-4 w-4 transition-transform duration-200\",\n consoleOpen && \"rotate-180\"\n )}\n />\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent\n className={cn(\n \"px-4 pb-4\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\"\n )}\n >\n <div className=\"max-h-48 space-y-1 overflow-y-auto\">\n {logs.length === 0 ? (\n <p className=\"text-muted-foreground\">No console output</p>\n ) : (\n logs.map((log, index) => (\n <div\n className={cn(\n \"text-xs\",\n log.level === \"error\" && \"text-destructive\",\n log.level === \"warn\" && \"text-yellow-600\",\n log.level === \"log\" && \"text-foreground\"\n )}\n key={`${log.timestamp.getTime()}-${index}`}\n >\n <span className=\"text-muted-foreground\">\n {log.timestamp.toLocaleTimeString()}\n </span>{\" \"}\n {log.message}\n </div>\n ))\n )}\n {children}\n </div>\n </CollapsibleContent>\n </Collapsible>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"../core/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]\",\n className\n )}\n {...props}\n />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\";\n\nimport { Badge } from \"../ui/badge\";\nimport {\n Carousel,\n type CarouselApi,\n CarouselContent,\n CarouselItem,\n} from \"../ui/carousel\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport { cn } from \"../core/utils\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport {\n type ComponentProps,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nexport type InlineCitationProps = ComponentProps<\"span\">;\n\nexport const InlineCitation = ({\n className,\n ...props\n}: InlineCitationProps) => (\n <span\n className={cn(\"group inline items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationTextProps = ComponentProps<\"span\">;\n\nexport const InlineCitationText = ({\n className,\n ...props\n}: InlineCitationTextProps) => (\n <span\n className={cn(\"transition-colors group-hover:bg-accent\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCardProps = ComponentProps<typeof HoverCard>;\n\nexport const InlineCitationCard = (props: InlineCitationCardProps) => (\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n);\n\nexport type InlineCitationCardTriggerProps = ComponentProps<typeof Badge> & {\n sources: string[];\n};\n\nexport const InlineCitationCardTrigger = ({\n sources,\n className,\n ...props\n}: InlineCitationCardTriggerProps) => (\n <HoverCardTrigger asChild>\n <Badge\n className={cn(\"ml-1 rounded-full\", className)}\n variant=\"secondary\"\n {...props}\n >\n {sources[0] ? (\n <>\n {new URL(sources[0]).hostname}{\" \"}\n {sources.length > 1 && `+${sources.length - 1}`}\n </>\n ) : (\n \"unknown\"\n )}\n </Badge>\n </HoverCardTrigger>\n);\n\nexport type InlineCitationCardBodyProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCardBody = ({\n className,\n ...props\n}: InlineCitationCardBodyProps) => (\n <HoverCardContent className={cn(\"relative w-80 p-0\", className)} {...props} />\n);\n\nconst CarouselApiContext = createContext<CarouselApi | undefined>(undefined);\n\nconst useCarouselApi = () => {\n const context = useContext(CarouselApiContext);\n return context;\n};\n\nexport type InlineCitationCarouselProps = ComponentProps<typeof Carousel>;\n\nexport const InlineCitationCarousel = ({\n className,\n children,\n ...props\n}: InlineCitationCarouselProps) => {\n const [api, setApi] = useState<CarouselApi>();\n\n return (\n <CarouselApiContext.Provider value={api}>\n <Carousel className={cn(\"w-full\", className)} setApi={setApi} {...props}>\n {children}\n </Carousel>\n </CarouselApiContext.Provider>\n );\n};\n\nexport type InlineCitationCarouselContentProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselContent = (\n props: InlineCitationCarouselContentProps\n) => <CarouselContent {...props} />;\n\nexport type InlineCitationCarouselItemProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselItem = ({\n className,\n ...props\n}: InlineCitationCarouselItemProps) => (\n <CarouselItem\n className={cn(\"w-full space-y-2 p-4 pl-8\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselHeaderProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselHeader = ({\n className,\n ...props\n}: InlineCitationCarouselHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2\",\n className\n )}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselIndexProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselIndex = ({\n children,\n className,\n ...props\n}: InlineCitationCarouselIndexProps) => {\n const api = useCarouselApi();\n const [current, setCurrent] = useState(0);\n const [count, setCount] = useState(0);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n setCount(api.scrollSnapList().length);\n setCurrent(api.selectedScrollSnap() + 1);\n\n api.on(\"select\", () => {\n setCurrent(api.selectedScrollSnap() + 1);\n });\n }, [api]);\n\n return (\n <div\n className={cn(\n \"flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children ?? `${current}/${count}`}\n </div>\n );\n};\n\nexport type InlineCitationCarouselPrevProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselPrev = ({\n className,\n ...props\n}: InlineCitationCarouselPrevProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollPrev();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Previous\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowLeftIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationCarouselNextProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselNext = ({\n className,\n ...props\n}: InlineCitationCarouselNextProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollNext();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Next\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowRightIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationSourceProps = ComponentProps<\"div\"> & {\n title?: string;\n url?: string;\n description?: string;\n};\n\nexport const InlineCitationSource = ({\n title,\n url,\n description,\n className,\n children,\n ...props\n}: InlineCitationSourceProps) => (\n <div className={cn(\"space-y-1\", className)} {...props}>\n {title && (\n <h4 className=\"truncate font-medium text-sm leading-tight\">{title}</h4>\n )}\n {url && (\n <p className=\"truncate break-all text-muted-foreground text-xs\">{url}</p>\n )}\n {description && (\n <p className=\"line-clamp-3 text-muted-foreground text-sm leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n </div>\n);\n\nexport type InlineCitationQuoteProps = ComponentProps<\"blockquote\">;\n\nexport const InlineCitationQuote = ({\n children,\n className,\n ...props\n}: InlineCitationQuoteProps) => (\n <blockquote\n className={cn(\n \"border-muted border-l-2 pl-3 text-muted-foreground text-sm italic\",\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { motion } from \"motion/react\";\nimport {\n type CSSProperties,\n type ElementType,\n type JSX,\n memo,\n useMemo,\n} from \"react\";\n\nexport type TextShimmerProps = {\n children: string;\n as?: ElementType;\n className?: string;\n duration?: number;\n spread?: number;\n};\n\nconst ShimmerComponent = ({\n children,\n as: Component = \"p\",\n className,\n duration = 2,\n spread = 2,\n}: TextShimmerProps) => {\n const MotionComponent = motion.create(\n Component as keyof JSX.IntrinsicElements\n );\n\n const dynamicSpread = useMemo(\n () => (children?.length ?? 0) * spread,\n [children, spread]\n );\n\n return (\n <MotionComponent\n animate={{ backgroundPosition: \"0% center\" }}\n className={cn(\n \"relative inline-block bg-[length:250%_100%,auto] bg-clip-text text-transparent\",\n \"[--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--ac-background),#0000_calc(50%+var(--spread)))] [background-repeat:no-repeat,padding-box]\",\n className\n )}\n initial={{ backgroundPosition: \"100% center\" }}\n style={\n {\n \"--spread\": `${dynamicSpread}px`,\n backgroundImage:\n \"var(--bg), linear-gradient(var(--ac-muted-foreground), var(--ac-muted-foreground))\",\n } as CSSProperties\n }\n transition={{\n repeat: Number.POSITIVE_INFINITY,\n duration,\n ease: \"linear\",\n }}\n >\n {children}\n </MotionComponent>\n );\n};\n\nexport const Shimmer = memo(ShimmerComponent);\n","\"use client\";\n\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { BrainIcon, ChevronDownIcon } from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, memo, useContext, useEffect, useState } from \"react\";\nimport { Streamdown } from \"streamdown\";\nimport { Shimmer } from \"./shimmer\";\n\ntype ReasoningContextValue = {\n isStreaming: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n duration: number | undefined;\n};\n\nconst ReasoningContext = createContext<ReasoningContextValue | null>(null);\n\nexport const useReasoning = () => {\n const context = useContext(ReasoningContext);\n if (!context) {\n throw new Error(\"Reasoning components must be used within Reasoning\");\n }\n return context;\n};\n\nexport type ReasoningProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n duration?: number;\n};\n\nconst AUTO_CLOSE_DELAY = 1000;\nconst MS_IN_S = 1000;\n\nexport const Reasoning = memo(\n ({\n className,\n isStreaming = false,\n open,\n defaultOpen = true,\n onOpenChange,\n duration: durationProp,\n children,\n ...props\n }: ReasoningProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [duration, setDuration] = useControllableState({\n prop: durationProp,\n defaultProp: undefined,\n });\n\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n const [startTime, setStartTime] = useState<number | null>(null);\n\n useEffect(() => {\n if (isStreaming) {\n if (startTime === null) {\n setStartTime(Date.now());\n }\n } else if (startTime !== null) {\n setDuration(Math.ceil((Date.now() - startTime) / MS_IN_S));\n setStartTime(null);\n }\n }, [isStreaming, startTime, setDuration]);\n\n useEffect(() => {\n if (defaultOpen && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, defaultOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = (newOpen: boolean) => {\n setIsOpen(newOpen);\n };\n\n return (\n <ReasoningContext.Provider\n value={{ isStreaming, isOpen, setIsOpen, duration }}\n >\n <Collapsible\n className={cn(\"not-prose mb-4\", className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n >\n {children}\n </Collapsible>\n </ReasoningContext.Provider>\n );\n }\n);\n\nexport type ReasoningTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode;\n};\n\nconst defaultGetThinkingMessage = (isStreaming: boolean, duration?: number) => {\n if (isStreaming || duration === 0) {\n return <Shimmer duration={1}>Thinking...</Shimmer>;\n }\n if (duration === undefined) {\n return <p>Thought for a few seconds</p>;\n }\n return <p>Thought for {duration} seconds</p>;\n};\n\nexport const ReasoningTrigger = memo(\n ({ className, children, getThinkingMessage = defaultGetThinkingMessage, ...props }: ReasoningTriggerProps) => {\n const { isStreaming, isOpen, duration } = useReasoning();\n\n return (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <BrainIcon className=\"size-4\" />\n {getThinkingMessage(isStreaming, duration)}\n <ChevronDownIcon\n className={cn(\n \"size-4 transition-transform\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n />\n </>\n )}\n </CollapsibleTrigger>\n );\n }\n);\n\nexport type ReasoningContentProps = ComponentProps<\n typeof CollapsibleContent\n> & {\n children: string;\n};\n\nexport const ReasoningContent = memo(\n ({ className, children, ...props }: ReasoningContentProps) => (\n <CollapsibleContent\n className={cn(\n \"mt-4 text-sm\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-muted-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n <Streamdown {...(props as any)}>{children}</Streamdown>\n </CollapsibleContent>\n )\n);\n\nReasoning.displayName = \"Reasoning\";\nReasoningTrigger.displayName = \"ReasoningTrigger\";\nReasoningContent.displayName = \"ReasoningContent\";\n","\"use client\";\n\n/**\n * Thinking/Loading Spinner Component\n */\n\nimport { cn } from \"../core/utils\";\nimport { useEffect, useState, useRef } from \"react\";\n\ninterface ThinkingSpinnerProps {\n\t/** Text to display next to spinner */\n\ttext?: string;\n\t/** Additional classes */\n\tclassName?: string;\n}\n\nexport function ThinkingSpinner({\n\ttext = \"Thinking...\",\n\tclassName,\n}: ThinkingSpinnerProps) {\n\tconst [displayText, setDisplayText] = useState(text);\n\tconst [isAnimating, setIsAnimating] = useState(false);\n\tconst prevTextRef = useRef(text);\n\n\tuseEffect(() => {\n\t\tif (text !== prevTextRef.current) {\n\t\t\tsetIsAnimating(true);\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tsetDisplayText(text);\n\t\t\t\tsetIsAnimating(false);\n\t\t\t\tprevTextRef.current = text;\n\t\t\t}, 150);\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\t}, [text]);\n\n\treturn (\n\t\t<div className={cn(\"flex items-center gap-3 my-4\", className)}>\n\t\t\t<svg\n\t\t\t\tclassName=\"animate-spin\"\n\t\t\t\twidth=\"20\"\n\t\t\t\theight=\"20\"\n\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tstyle={{ color: \"var(--ac-loader-color, var(--ac-primary, #2f80ed))\" }}\n\t\t\t>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"10\"\n\t\t\t\t\tcy=\"10\"\n\t\t\t\t\tr=\"8\"\n\t\t\t\t\tstroke=\"#E5E5E5\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td=\"M10 2C14.4183 2 18 5.58172 18 10\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sm text-muted-foreground transition-all duration-150\",\n\t\t\t\t\tisAnimating ? \"opacity-0\" : \"opacity-100\"\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{displayText}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nexport default ThinkingSpinner;\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\n\ninterface FollowupButtonsProps {\n\tsuggestions: string[];\n\tonSelect: (suggestion: string) => void;\n\tclassName?: string;\n\tdisabled?: boolean;\n}\n\nexport function FollowupButtons({\n\tsuggestions,\n\tonSelect,\n\tclassName,\n\tdisabled = false,\n}: FollowupButtonsProps) {\n\tif (!suggestions || suggestions.length === 0) return null;\n\n\treturn (\n\t\t<div className={cn(\"flex flex-wrap gap-2\", className)}>\n\t\t\t{suggestions.map((suggestion, index) => (\n\t\t\t\t<Button\n\t\t\t\t\tkey={index}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tonClick={() => onSelect(suggestion)}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"text-xs h-auto py-1.5 px-3 whitespace-normal text-start\"\n\t\t\t\t>\n\t\t\t\t\t{suggestion}\n\t\t\t\t</Button>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n ScrollArea,\n ScrollBar,\n} from \"../ui/scroll-area\";\nimport { cn } from \"../core/utils\";\nimport type { ComponentProps } from \"react\";\n\nexport type SuggestionsProps = ComponentProps<typeof ScrollArea>;\n\nexport const Suggestions = ({\n className,\n children,\n ...props\n}: SuggestionsProps) => (\n <ScrollArea className=\"w-full overflow-x-auto whitespace-nowrap\" {...props}>\n <div className={cn(\"flex w-max flex-nowrap items-center gap-2\", className)}>\n {children}\n </div>\n <ScrollBar className=\"hidden\" orientation=\"horizontal\" />\n </ScrollArea>\n);\n\nexport type SuggestionProps = Omit<ComponentProps<typeof Button>, \"onClick\"> & {\n suggestion: string;\n onClick?: (suggestion: string) => void;\n};\n\nexport const Suggestion = ({\n suggestion,\n onClick,\n className,\n variant = \"outline\",\n size = \"sm\",\n children,\n ...props\n}: SuggestionProps) => {\n const handleClick = () => {\n onClick?.(suggestion);\n };\n\n return (\n <Button\n className={cn(\"cursor-pointer rounded-full px-4\", className)}\n onClick={handleClick}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children || suggestion}\n </Button>\n );\n};\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport { Progress } from \"../ui/progress\";\nimport { cn } from \"../core/utils\";\nimport type { LanguageModelUsage } from \"ai\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\nimport { getUsage } from \"tokenlens\";\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\n\ntype ModelId = string;\n\ntype ContextSchema = {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n modelId?: ModelId;\n};\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n modelId,\n ...props\n}: ContextProps) => (\n <ContextContext.Provider\n value={{\n usedTokens,\n maxTokens,\n usage,\n modelId,\n }}\n >\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n);\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transformOrigin: \"center\", transform: \"rotate(-90deg)\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button>;\n\nexport const ContextTrigger = ({ children, ...props }: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n <span className=\"font-medium text-muted-foreground\">\n {renderedPercent}\n </span>\n <ContextIcon />\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-60 divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeaderProps = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeaderProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress className=\"bg-muted\" value={usedPercent * PERCENT_MAX} />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBodyProps = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBodyProps) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooterProps = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooterProps) => {\n const { modelId, usage } = useContextValue();\n const costUSD = modelId\n ? getUsage({\n modelId,\n usage: {\n input: usage?.inputTokens ?? 0,\n output: usage?.outputTokens ?? 0,\n },\n }).costUSD?.totalUSD\n : undefined;\n const totalCost = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(costUSD ?? 0);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-secondary p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCost = modelId\n ? getUsage({\n modelId,\n usage: { input: inputTokens, output: 0 },\n }).costUSD?.totalUSD\n : undefined;\n const inputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(inputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCost = modelId\n ? getUsage({\n modelId,\n usage: { input: 0, output: outputTokens },\n }).costUSD?.totalUSD\n : undefined;\n const outputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(outputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, modelId } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCost = modelId\n ? getUsage({\n modelId,\n usage: { reasoningTokens },\n }).costUSD?.totalUSD\n : undefined;\n const reasoningCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(reasoningCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, modelId } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCost = modelId\n ? getUsage({\n modelId,\n usage: { cacheReads: cacheTokens, input: 0, output: 0 },\n }).costUSD?.totalUSD\n : undefined;\n const cacheCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(cacheCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n","\"use client\";\n\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Badge } from \"../ui/badge\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport {\n BrainIcon,\n ChevronDownIcon,\n DotIcon,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, memo, useContext, useMemo } from \"react\";\n\ntype ChainOfThoughtContextValue = {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n};\n\nconst ChainOfThoughtContext = createContext<ChainOfThoughtContextValue | null>(\n null\n);\n\nconst useChainOfThought = () => {\n const context = useContext(ChainOfThoughtContext);\n if (!context) {\n throw new Error(\n \"ChainOfThought components must be used within ChainOfThought\"\n );\n }\n return context;\n};\n\nexport type ChainOfThoughtProps = ComponentProps<\"div\"> & {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const ChainOfThought = memo(\n ({\n className,\n open,\n defaultOpen = false,\n onOpenChange,\n children,\n ...props\n }: ChainOfThoughtProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const chainOfThoughtContext = useMemo(\n () => ({ isOpen, setIsOpen }),\n [isOpen, setIsOpen]\n );\n\n return (\n <ChainOfThoughtContext.Provider value={chainOfThoughtContext}>\n <div\n className={cn(\"not-prose max-w-prose space-y-4\", className)}\n {...props}\n >\n {children}\n </div>\n </ChainOfThoughtContext.Provider>\n );\n }\n);\n\nexport type ChainOfThoughtHeaderProps = ComponentProps<\n typeof CollapsibleTrigger\n>;\n\nexport const ChainOfThoughtHeader = memo(\n ({ className, children, ...props }: ChainOfThoughtHeaderProps) => {\n const { isOpen, setIsOpen } = useChainOfThought();\n\n return (\n <Collapsible onOpenChange={setIsOpen} open={isOpen}>\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n <BrainIcon className=\"size-4\" />\n <span className=\"flex-1 text-start\">\n {children ?? \"Chain of Thought\"}\n </span>\n <ChevronDownIcon\n className={cn(\n \"size-4 transition-transform\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n />\n </CollapsibleTrigger>\n </Collapsible>\n );\n }\n);\n\nexport type ChainOfThoughtStepProps = ComponentProps<\"div\"> & {\n icon?: LucideIcon;\n label: ReactNode;\n description?: ReactNode;\n status?: \"complete\" | \"active\" | \"pending\";\n};\n\nexport const ChainOfThoughtStep = memo(\n ({\n className,\n icon: Icon = DotIcon,\n label,\n description,\n status = \"complete\",\n children,\n ...props\n }: ChainOfThoughtStepProps) => {\n const statusStyles = {\n complete: \"text-muted-foreground\",\n active: \"text-foreground\",\n pending: \"text-muted-foreground/50\",\n };\n\n return (\n <div\n className={cn(\n \"flex gap-2 text-sm\",\n statusStyles[status],\n \"fade-in-0 slide-in-from-top-2 animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative mt-0.5\">\n <Icon className=\"size-4\" />\n <div className=\"-mx-px absolute top-7 bottom-0 left-1/2 w-px bg-border\" />\n </div>\n <div className=\"flex-1 space-y-2 overflow-hidden\">\n <div>{label}</div>\n {description && (\n <div className=\"text-muted-foreground text-xs\">{description}</div>\n )}\n {children}\n </div>\n </div>\n );\n }\n);\n\nexport type ChainOfThoughtSearchResultsProps = ComponentProps<\"div\">;\n\nexport const ChainOfThoughtSearchResults = memo(\n ({ className, ...props }: ChainOfThoughtSearchResultsProps) => (\n <div\n className={cn(\"flex flex-wrap items-center gap-2\", className)}\n {...props}\n />\n )\n);\n\nexport type ChainOfThoughtSearchResultProps = ComponentProps<typeof Badge>;\n\nexport const ChainOfThoughtSearchResult = memo(\n ({ className, children, ...props }: ChainOfThoughtSearchResultProps) => (\n <Badge\n className={cn(\"gap-1 px-2 py-0.5 font-normal text-xs\", className)}\n variant=\"secondary\"\n {...props}\n >\n {children}\n </Badge>\n )\n);\n\nexport type ChainOfThoughtContentProps = ComponentProps<\n typeof CollapsibleContent\n>;\n\nexport const ChainOfThoughtContent = memo(\n ({ className, children, ...props }: ChainOfThoughtContentProps) => {\n const { isOpen } = useChainOfThought();\n\n return (\n <Collapsible open={isOpen}>\n <CollapsibleContent\n className={cn(\n \"mt-2 space-y-3\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n }\n);\n\nexport type ChainOfThoughtImageProps = ComponentProps<\"div\"> & {\n caption?: string;\n};\n\nexport const ChainOfThoughtImage = memo(\n ({ className, children, caption, ...props }: ChainOfThoughtImageProps) => (\n <div className={cn(\"mt-2 space-y-2\", className)} {...props}>\n <div className=\"relative flex max-h-[22rem] items-center justify-center overflow-hidden rounded-lg bg-muted p-3\">\n {children}\n </div>\n {caption && <p className=\"text-muted-foreground text-xs\">{caption}</p>}\n </div>\n )\n);\n\nChainOfThought.displayName = \"ChainOfThought\";\nChainOfThoughtHeader.displayName = \"ChainOfThoughtHeader\";\nChainOfThoughtStep.displayName = \"ChainOfThoughtStep\";\nChainOfThoughtSearchResults.displayName = \"ChainOfThoughtSearchResults\";\nChainOfThoughtSearchResult.displayName = \"ChainOfThoughtSearchResult\";\nChainOfThoughtContent.displayName = \"ChainOfThoughtContent\";\nChainOfThoughtImage.displayName = \"ChainOfThoughtImage\";\n","\"use client\";\n\nimport { Alert, AlertDescription } from \"../ui/alert\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\nimport type { ToolUIPart } from \"ai\";\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n} from \"react\";\n\ntype ToolUIPartApproval =\n | {\n id: string;\n approved?: never;\n reason?: never;\n }\n | {\n id: string;\n approved: boolean;\n reason?: string;\n }\n | {\n id: string;\n approved: true;\n reason?: string;\n }\n | {\n id: string;\n approved: true;\n reason?: string;\n }\n | {\n id: string;\n approved: false;\n reason?: string;\n }\n | undefined;\n\ntype ConfirmationContextValue = {\n approval: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nconst ConfirmationContext = createContext<ConfirmationContextValue | null>(\n null\n);\n\nconst useConfirmation = () => {\n const context = useContext(ConfirmationContext);\n\n if (!context) {\n throw new Error(\"Confirmation components must be used within Confirmation\");\n }\n\n return context;\n};\n\nexport type ConfirmationProps = ComponentProps<typeof Alert> & {\n approval?: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nexport const Confirmation = ({\n className,\n approval,\n state,\n ...props\n}: ConfirmationProps) => {\n if (!approval || state === \"input-streaming\" || state === \"input-available\") {\n return null;\n }\n\n return (\n <ConfirmationContext.Provider value={{ approval, state }}>\n <Alert className={cn(\"flex flex-col gap-2\", className)} {...props} />\n </ConfirmationContext.Provider>\n );\n};\n\nexport type ConfirmationTitleProps = ComponentProps<typeof AlertDescription>;\n\nexport const ConfirmationTitle = ({\n className,\n ...props\n}: ConfirmationTitleProps) => (\n <AlertDescription className={cn(\"inline\", className)} {...props} />\n);\n\nexport type ConfirmationRequestProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRequest = ({ children }: ConfirmationRequestProps) => {\n const { state } = useConfirmation();\n\n if ((state as string) !== \"approval-requested\") {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationAcceptedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationAccepted = ({\n children,\n}: ConfirmationAcceptedProps) => {\n const { approval, state } = useConfirmation();\n\n if (\n !approval?.approved ||\n ((state as string) !== \"approval-responded\" &&\n (state as string) !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationRejectedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRejected = ({\n children,\n}: ConfirmationRejectedProps) => {\n const { approval, state } = useConfirmation();\n\n if (\n approval?.approved !== false ||\n ((state as string) !== \"approval-responded\" &&\n (state as string) !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationActionsProps = ComponentProps<\"div\">;\n\nexport const ConfirmationActions = ({\n className,\n ...props\n}: ConfirmationActionsProps) => {\n const { state } = useConfirmation();\n\n if ((state as string) !== \"approval-requested\") {\n return null;\n }\n\n return (\n <div\n className={cn(\"flex items-center justify-end gap-2 self-end\", className)}\n {...props}\n />\n );\n};\n\nexport type ConfirmationActionProps = ComponentProps<typeof Button>;\n\nexport const ConfirmationAction = (props: ConfirmationActionProps) => (\n <Button className=\"h-8 px-3 text-sm\" type=\"button\" {...props} />\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { Controls as ControlsPrimitive } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\nexport type ControlsProps = ComponentProps<typeof ControlsPrimitive>;\n\nexport const Controls = ({ className, ...props }: ControlsProps) => (\n <ControlsPrimitive\n className={cn(\n \"gap-px overflow-hidden rounded-md border bg-card p-1 shadow-none!\",\n \"[&>button]:rounded-md [&>button]:border-none! [&>button]:bg-transparent! [&>button]:hover:bg-secondary!\",\n className\n )}\n {...props}\n />\n);\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\nimport { Dialog, DialogContent } from \"./dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\";\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n} from \"../ui/command\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport { cn } from \"../core/utils\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nexport type ModelSelectorProps = ComponentProps<typeof Dialog>;\n\nexport const ModelSelector = (props: ModelSelectorProps) => (\n <Dialog {...props} />\n);\n\nexport type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;\n\nexport const ModelSelectorTrigger = (props: ModelSelectorTriggerProps) => (\n <DialogTrigger {...props} />\n);\n\nexport type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {\n title?: ReactNode;\n};\n\nexport const ModelSelectorContent = ({\n className,\n children,\n title = \"Model Selector\",\n ...props\n}: ModelSelectorContentProps) => (\n <DialogContent className={cn(\"p-0\", className)} {...props}>\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <Command className=\"**:data-[slot=command-input-wrapper]:h-auto\">\n {children}\n </Command>\n </DialogContent>\n);\n\nexport type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;\n\nexport const ModelSelectorDialog = (props: ModelSelectorDialogProps) => (\n <CommandDialog {...props} />\n);\n\nexport type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;\n\nexport const ModelSelectorInput = ({\n className,\n ...props\n}: ModelSelectorInputProps) => (\n <CommandInput className={cn(\"h-auto py-3.5\", className)} {...props} />\n);\n\nexport type ModelSelectorListProps = ComponentProps<typeof CommandList>;\n\nexport const ModelSelectorList = (props: ModelSelectorListProps) => (\n <CommandList {...props} />\n);\n\nexport type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const ModelSelectorEmpty = (props: ModelSelectorEmptyProps) => (\n <CommandEmpty {...props} />\n);\n\nexport type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const ModelSelectorGroup = (props: ModelSelectorGroupProps) => (\n <CommandGroup {...props} />\n);\n\nexport type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;\n\nexport const ModelSelectorItem = (props: ModelSelectorItemProps) => (\n <CommandItem {...props} />\n);\n\nexport type ModelSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;\n\nexport const ModelSelectorShortcut = (props: ModelSelectorShortcutProps) => (\n <CommandShortcut {...props} />\n);\n\nexport type ModelSelectorSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const ModelSelectorSeparator = (props: ModelSelectorSeparatorProps) => (\n <CommandSeparator {...props} />\n);\n\nexport type ModelSelectorLogoProps = Omit<\n ComponentProps<\"img\">,\n \"src\" | \"alt\"\n> & {\n provider: string;\n};\n\nexport const ModelSelectorLogo = ({\n provider,\n className,\n ...props\n}: ModelSelectorLogoProps) => (\n <img\n {...props}\n alt={`${provider} logo`}\n className={cn(\"size-3 dark:invert\", className)}\n height={12}\n src={`https://models.dev/logos/${provider}.svg`}\n width={12}\n />\n);\n\nexport type ModelSelectorLogoGroupProps = ComponentProps<\"div\">;\n\nexport const ModelSelectorLogoGroup = ({\n className,\n ...props\n}: ModelSelectorLogoGroupProps) => (\n <div\n className={cn(\n \"-space-x-1 flex shrink-0 items-center [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type ModelSelectorNameProps = ComponentProps<\"span\">;\n\nexport const ModelSelectorName = ({\n className,\n ...props\n}: ModelSelectorNameProps) => (\n <span className={cn(\"flex-1 truncate text-start\", className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../core/utils\";\nimport {\n ChevronDownIcon,\n ExternalLinkIcon,\n MessageCircleIcon,\n} from \"lucide-react\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\n\nconst providers = {\n github: {\n title: \"Open in GitHub\",\n createUrl: (url: string) => url,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 24 24\">\n <title>GitHub</title>\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" />\n </svg>\n ),\n },\n chatgpt: {\n title: \"Open in ChatGPT\",\n createUrl: (prompt: string) =>\n `https://chatgpt.com/?${new URLSearchParams({\n hints: \"search\",\n prompt,\n })}`,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>OpenAI</title>\n <path d=\"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729z\" />\n </svg>\n ),\n },\n claude: {\n title: \"Open in Claude\",\n createUrl: (q: string) =>\n `https://claude.ai/new?${new URLSearchParams({ q })}`,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 12 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Claude</title>\n </svg>\n ),\n },\n t3: {\n title: \"Open in T3 Chat\",\n createUrl: (q: string) =>\n `https://t3.chat/new?${new URLSearchParams({ q })}`,\n icon: <MessageCircleIcon />,\n },\n scira: {\n title: \"Open in Scira\",\n createUrl: (q: string) =>\n `https://scira.ai/?${new URLSearchParams({ q })}`,\n icon: (<svg viewBox=\"0 0 910 934\" xmlns=\"http://www.w3.org/2000/svg\"><title>Scira AI</title></svg>),\n },\n v0: {\n title: \"Open in v0\",\n createUrl: (q: string) =>\n `https://v0.app?${new URLSearchParams({ q })}`,\n icon: (\n <svg fill=\"currentColor\" viewBox=\"0 0 147 70\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>v0</title>\n <path d=\"M56 50.2031V14H70V60.1562C70 65.5928 65.5928 70 60.1562 70C57.5605 70 54.9982 68.9992 53.1562 67.1573L0 14H19.7969L56 50.2031Z\" />\n <path d=\"M147 56H133V23.9531L100.953 56H133V70H96.6875C85.8144 70 77 61.1856 77 50.3125V14H91V46.1562L123.156 14H91V0H127.312C138.186 0 147 8.81439 147 19.6875V56Z\" />\n </svg>\n ),\n },\n cursor: {\n title: \"Open in Cursor\",\n createUrl: (text: string) => {\n if (typeof window === \"undefined\") return `https://cursor.com/link/prompt?text=${encodeURIComponent(text)}`;\n const url = new URL(\"https://cursor.com/link/prompt\");\n url.searchParams.set(\"text\", text);\n return url.toString();\n },\n icon: (\n <svg version=\"1.1\" viewBox=\"0 0 466.73 532.09\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Cursor</title>\n </svg>\n ),\n },\n};\n\nconst OpenInContext = createContext<{ query: string } | undefined>(undefined);\n\nconst useOpenInContext = () => {\n const context = useContext(OpenInContext);\n if (!context) {\n throw new Error(\"OpenIn components must be used within an OpenIn provider\");\n }\n return context;\n};\n\nexport type OpenInProps = ComponentProps<typeof DropdownMenu> & {\n query: string;\n};\n\nexport const OpenIn = ({ query, ...props }: OpenInProps) => (\n <OpenInContext.Provider value={{ query }}>\n <DropdownMenu {...props} />\n </OpenInContext.Provider>\n);\n\nexport type OpenInContentProps = ComponentProps<typeof DropdownMenuContent>;\n\nexport const OpenInContent = ({ className, ...props }: OpenInContentProps) => (\n <DropdownMenuContent\n align=\"start\"\n className={cn(\"w-[240px]\", className)}\n {...props}\n />\n);\n\nexport type OpenInItemProps = ComponentProps<typeof DropdownMenuItem>;\n\nexport const OpenInItem = (props: OpenInItemProps) => (\n <DropdownMenuItem {...props} />\n);\n\nexport type OpenInLabelProps = ComponentProps<typeof DropdownMenuLabel>;\n\nexport const OpenInLabel = (props: OpenInLabelProps) => (\n <DropdownMenuLabel {...props} />\n);\n\nexport type OpenInSeparatorProps = ComponentProps<typeof DropdownMenuSeparator>;\n\nexport const OpenInSeparator = (props: OpenInSeparatorProps) => (\n <DropdownMenuSeparator {...props} />\n);\n\nexport type OpenInTriggerProps = ComponentProps<typeof DropdownMenuTrigger>;\n\nexport const OpenInTrigger = ({ children, ...props }: OpenInTriggerProps) => (\n <DropdownMenuTrigger {...props} asChild>\n {children ?? (\n <Button type=\"button\" variant=\"outline\">\n Open in chat\n <ChevronDownIcon className=\"size-4\" />\n </Button>\n )}\n </DropdownMenuTrigger>\n);\n\nconst makeProviderItem = (key: keyof typeof providers) => {\n return (props: ComponentProps<typeof DropdownMenuItem>) => {\n const { query } = useOpenInContext();\n const p = providers[key];\n return (\n <DropdownMenuItem asChild {...props}>\n <a\n className=\"flex items-center gap-2\"\n href={p.createUrl(query)}\n rel=\"noopener\"\n target=\"_blank\"\n >\n <span className=\"shrink-0\">{p.icon}</span>\n <span className=\"flex-1\">{p.title}</span>\n <ExternalLinkIcon className=\"size-4 shrink-0\" />\n </a>\n </DropdownMenuItem>\n );\n };\n};\n\nexport const OpenInChatGPT = makeProviderItem(\"chatgpt\");\nexport const OpenInClaude = makeProviderItem(\"claude\");\nexport const OpenInT3 = makeProviderItem(\"t3\");\nexport const OpenInScira = makeProviderItem(\"scira\");\nexport const OpenInv0 = makeProviderItem(\"v0\");\nexport const OpenInCursor = makeProviderItem(\"cursor\");\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { Panel as PanelPrimitive } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\ntype PanelProps = ComponentProps<typeof PanelPrimitive>;\n\nexport const Panel = ({ className, ...props }: PanelProps) => (\n <PanelPrimitive\n className={cn(\n \"m-4 overflow-hidden rounded-md border bg-card p-1\",\n className\n )}\n {...props}\n />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../ui/card\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Shimmer } from \"./shimmer\";\n\ntype PlanContextValue = {\n isStreaming: boolean;\n};\n\nconst PlanContext = createContext<PlanContextValue | null>(null);\n\nconst usePlan = () => {\n const context = useContext(PlanContext);\n if (!context) {\n throw new Error(\"Plan components must be used within Plan\");\n }\n return context;\n};\n\nexport type PlanProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Plan = ({\n className,\n isStreaming = false,\n children,\n ...props\n}: PlanProps) => (\n <PlanContext.Provider value={{ isStreaming }}>\n <Collapsible asChild data-slot=\"plan\" {...props}>\n <Card className={cn(\"shadow-none\", className)}>{children}</Card>\n </Collapsible>\n </PlanContext.Provider>\n);\n\nexport type PlanHeaderProps = ComponentProps<typeof CardHeader>;\n\nexport const PlanHeader = ({ className, ...props }: PlanHeaderProps) => (\n <CardHeader\n className={cn(\"flex items-start justify-between\", className)}\n data-slot=\"plan-header\"\n {...props}\n />\n);\n\nexport type PlanTitleProps = Omit<\n ComponentProps<typeof CardTitle>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanTitle = ({ children, ...props }: PlanTitleProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardTitle data-slot=\"plan-title\" {...props}>\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardTitle>\n );\n};\n\nexport type PlanDescriptionProps = Omit<\n ComponentProps<typeof CardDescription>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanDescription = ({\n className,\n children,\n ...props\n}: PlanDescriptionProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardDescription\n className={cn(\"text-balance\", className)}\n data-slot=\"plan-description\"\n {...props}\n >\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardDescription>\n );\n};\n\nexport type PlanActionProps = ComponentProps<typeof CardAction>;\n\nexport const PlanAction = (props: PlanActionProps) => (\n <CardAction data-slot=\"plan-action\" {...props} />\n);\n\nexport type PlanContentProps = ComponentProps<typeof CardContent>;\n\nexport const PlanContent = (props: PlanContentProps) => (\n <CollapsibleContent asChild>\n <CardContent data-slot=\"plan-content\" {...props} />\n </CollapsibleContent>\n);\n\nexport type PlanFooterProps = ComponentProps<\"div\">;\n\nexport const PlanFooter = (props: PlanFooterProps) => (\n <CardFooter data-slot=\"plan-footer\" {...props} />\n);\n\nexport type PlanTriggerProps = ComponentProps<typeof CollapsibleTrigger>;\n\nexport const PlanTrigger = ({ className, ...props }: PlanTriggerProps) => (\n <CollapsibleTrigger asChild>\n <Button\n className={cn(\"size-8\", className)}\n data-slot=\"plan-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n <ChevronsUpDownIcon className=\"size-4\" />\n <span className=\"sr-only\">Toggle plan</span>\n </Button>\n </CollapsibleTrigger>\n);\n","\"use client\";\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \" shadow-xs relative flex w-full items-center rounded-md outline-none transition-[color,box-shadow]\",\n \"h-9 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"../ui/command\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n} from \"../ui/input-group\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { cn } from \"../core/utils\";\nimport type { ChatStatus, FileUIPart } from \"ai\";\nimport {\n CornerDownLeftIcon,\n ImageIcon,\n Loader2Icon,\n MicIcon,\n PaperclipIcon,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from \"lucide-react\";\nimport { nanoid } from \"nanoid\";\nimport {\n type ChangeEvent,\n type ChangeEventHandler,\n Children,\n type ClipboardEventHandler,\n type ComponentProps,\n createContext,\n type FormEvent,\n type FormEventHandler,\n Fragment,\n type HTMLAttributes,\n type KeyboardEventHandler,\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport type AttachmentsContext = {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n};\n\nexport type TextInputContext = {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n};\n\nexport type PromptInputControllerProps = {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void\n ) => void;\n};\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use usePromptInputController().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use useProviderAttachments().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\nexport function PromptInputProvider({\n initialInput: initialTextInput = \"\",\n children,\n}: PromptInputProviderProps) {\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(\"\"), []);\n\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const openRef = useRef<() => void>(() => {});\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = Array.from(files);\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) =>\n prev.concat(\n incoming.map((file) => ({\n id: nanoid(),\n type: \"file\" as const,\n url: typeof window !== \"undefined\" ? URL.createObjectURL(file) : \"\",\n mediaType: file.type,\n filename: file.name,\n }))\n )\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url && typeof window !== \"undefined\") {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n if (typeof window !== \"undefined\") {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n return [];\n });\n }, []);\n\n const attachmentsRef = useRef(attachmentFiles);\n attachmentsRef.current = attachmentFiles;\n\n useEffect(() => {\n return () => {\n if (typeof window !== \"undefined\") {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n };\n }, []);\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n files: attachmentFiles,\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog]\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n []\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n textInput: {\n value: textInput,\n setInput: setTextInput,\n clear: clearInput,\n },\n attachments,\n __registerFileInput,\n }),\n [textInput, clearInput, attachments, __registerFileInput]\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n}\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = provider ?? local;\n if (!context) {\n throw new Error(\n \"usePromptInputAttachments must be used within a PromptInput or PromptInputProvider\"\n );\n }\n return context;\n};\n\nexport type PromptInputAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart & { id: string };\n className?: string;\n};\n\nexport function PromptInputAttachment({\n data,\n className,\n ...props\n}: PromptInputAttachmentProps) {\n const attachments = usePromptInputAttachments();\n\n const filename = data.filename || \"\";\n\n const mediaType =\n data.mediaType?.startsWith(\"image/\") && data.url ? \"image\" : \"file\";\n const isImage = mediaType === \"image\";\n\n const attachmentLabel = filename || (isImage ? \"Image\" : \"Attachment\");\n\n return (\n <PromptInputHoverCard>\n <HoverCardTrigger asChild>\n <div\n className={cn(\n \"group relative flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-md border border-border px-1.5 font-medium text-sm transition-all hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n className\n )}\n key={data.id}\n {...props}\n >\n <div className=\"relative size-5 shrink-0\">\n <div className=\"absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded bg-background transition-opacity group-hover:opacity-0\">\n {isImage ? (\n <img\n alt={filename || \"attachment\"}\n className=\"size-5 object-cover\"\n height={20}\n src={data.url}\n width={20}\n />\n ) : (\n <div className=\"flex size-5 items-center justify-center text-muted-foreground\">\n <PaperclipIcon className=\"size-3\" />\n </div>\n )}\n </div>\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5\"\n onClick={(e) => {\n e.stopPropagation();\n attachments.remove(data.id);\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n </div>\n\n <span className=\"flex-1 truncate\">{attachmentLabel}</span>\n </div>\n </HoverCardTrigger>\n <PromptInputHoverCardContent className=\"w-auto p-2\">\n <div className=\"w-auto space-y-3\">\n {isImage && (\n <div className=\"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border\">\n <img\n alt={filename || \"attachment preview\"}\n className=\"max-h-full max-w-full object-contain\"\n height={384}\n src={data.url}\n width={448}\n />\n </div>\n )}\n <div className=\"flex items-center gap-2.5\">\n <div className=\"min-w-0 flex-1 space-y-1 px-0.5\">\n <h4 className=\"truncate font-semibold text-sm leading-none\">\n {filename || (isImage ? \"Image\" : \"Attachment\")}\n </h4>\n {data.mediaType && (\n <p className=\"truncate font-mono text-muted-foreground text-xs\">\n {data.mediaType}\n </p>\n )}\n </div>\n </div>\n </div>\n </PromptInputHoverCardContent>\n </PromptInputHoverCard>\n );\n}\n\nexport type PromptInputAttachmentsProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & {\n children: (attachment: FileUIPart & { id: string }) => ReactNode;\n};\n\nexport function PromptInputAttachments({\n children,\n className,\n ...props\n}: PromptInputAttachmentsProps) {\n const attachments = usePromptInputAttachments();\n\n if (!attachments.files.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\"flex flex-wrap items-center gap-2 p-3 w-full\", className)}\n {...props}\n >\n {attachments.files.map((file) => (\n <Fragment key={file.id}>{children(file)}</Fragment>\n ))}\n </div>\n );\n}\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = \"Add photos or files\",\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n return (\n <DropdownMenuItem\n {...props}\n onSelect={(e) => {\n e.preventDefault();\n attachments.openFileDialog();\n }}\n >\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputMessage = {\n text: string;\n files: FileUIPart[];\n};\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onError\"\n> & {\n accept?: string;\n multiple?: boolean;\n globalDrop?: boolean;\n syncHiddenInput?: boolean;\n maxFiles?: number;\n maxFileSize?: number;\n onError?: (err: {\n code: \"max_files\" | \"max_file_size\" | \"accept\";\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === \"\") {\n return true;\n }\n\n const patterns = accept\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith(\"/*\")) {\n const prefix = pattern.slice(0, -1);\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept]\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = Array.from(fileList);\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n id: nanoid(),\n type: \"file\",\n url: typeof window !== \"undefined\" ? URL.createObjectURL(file) : \"\",\n mediaType: file.type,\n filename: file.name,\n });\n }\n return prev.concat(next);\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError]\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url && typeof window !== \"undefined\") {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n []\n );\n\n const clearLocal = useCallback(\n () =>\n setItems((prev) => {\n if (typeof window !== \"undefined\") {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n }\n return [];\n }),\n []\n );\n\n const add = usingProvider ? controller.attachments.add : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const clear = usingProvider ? controller.attachments.clear : clearLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n useEffect(() => {\n if (!usingProvider) return;\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = \"\";\n }\n }, [files, syncHiddenInput]);\n\n useEffect(() => {\n const form = formRef.current;\n if (!form) return;\n if (globalDrop) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n form.addEventListener(\"dragover\", onDragOver);\n form.addEventListener(\"drop\", onDrop);\n return () => {\n form.removeEventListener(\"dragover\", onDragOver);\n form.removeEventListener(\"drop\", onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(() => {\n if (!globalDrop) return;\n if (typeof document === \"undefined\") return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n document.addEventListener(\"dragover\", onDragOver);\n document.addEventListener(\"drop\", onDrop);\n return () => {\n document.removeEventListener(\"dragover\", onDragOver);\n document.removeEventListener(\"drop\", onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(\n () => () => {\n if (!usingProvider && typeof window !== \"undefined\") {\n for (const f of filesRef.current) {\n if (f.url) URL.revokeObjectURL(f.url);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [usingProvider]\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n event.currentTarget.value = \"\";\n };\n\n const convertBlobUrlToDataUrl = async (\n url: string\n ): Promise<string | null> => {\n if (typeof window === \"undefined\") return null;\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n };\n\n const ctx = useMemo<AttachmentsContext>(\n () => ({\n files: files.map((item) => ({ ...item, id: item.id })),\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef: inputRef,\n }),\n [files, add, remove, clear, openFileDialog]\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n return (formData.get(\"message\") as string) || \"\";\n })();\n\n if (!usingProvider) {\n form.reset();\n }\n\n Promise.all(\n files.map(async ({ id, ...item }) => {\n if (item.url && item.url.startsWith(\"blob:\")) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n })\n )\n .then((convertedFiles: FileUIPart[]) => {\n try {\n const result = onSubmit({ text, files: convertedFiles }, event);\n\n if (result instanceof Promise) {\n result\n .then(() => {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n })\n .catch(() => {});\n } else {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {}\n })\n .catch(() => {});\n };\n\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn(\"w-full\", className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"overflow-hidden\">{children}</InputGroup>\n </form>\n </>\n );\n\n return usingProvider ? (\n inner\n ) : (\n <LocalAttachmentsContext.Provider value={ctx}>\n {inner}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn(\"contents\", className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = \"What would you like to know?\",\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (e) => {\n if (e.key === \"Enter\") {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n const form = e.currentTarget.form;\n const submitButton = form?.querySelector(\n 'button[type=\"submit\"]'\n ) as HTMLButtonElement | null;\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.value === \"\" &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files.at(-1);\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n };\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n };\n\n const controlledProps = controller\n ? {\n value: controller.textInput.value,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn(\"field-sizing-content max-h-48 min-h-16\", className)}\n name=\"message\"\n onCompositionEnd={() => setIsComposing(false)}\n onCompositionStart={() => setIsComposing(true)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"order-first flex-wrap gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"justify-between gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton>;\n\nexport const PromptInputButton = ({\n variant = \"ghost\",\n className,\n size,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? \"sm\" : \"icon-sm\");\n\n return (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n ...props\n}: PromptInputActionMenuTriggerProps) => (\n <DropdownMenuTrigger asChild>\n <PromptInputButton className={className} {...props}>\n {children ?? <PlusIcon className=\"size-4\" />}\n </PromptInputButton>\n </DropdownMenuTrigger>\n);\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = \"default\",\n size = \"icon-sm\",\n status,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === \"submitted\") {\n Icon = <Loader2Icon className=\"size-4 animate-spin\" />;\n } else if (status === \"streaming\") {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === \"error\") {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n return (\n <InputGroupButton\n aria-label=\"Submit\"\n className={cn(className)}\n size={size}\n type=\"submit\"\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n start(): void;\n stop(): void;\n onstart: ((this: SpeechRecognition, ev: Event) => any) | null;\n onend: ((this: SpeechRecognition, ev: Event) => any) | null;\n onresult:\n | ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any)\n | null;\n onerror:\n | ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => any)\n | null;\n}\n\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n resultIndex: number;\n}\n\ntype SpeechRecognitionResultList = {\n readonly length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n};\n\ntype SpeechRecognitionResult = {\n readonly length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n};\n\ntype SpeechRecognitionAlternative = {\n transcript: string;\n confidence: number;\n};\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition: {\n new (): SpeechRecognition;\n };\n webkitSpeechRecognition: {\n new (): SpeechRecognition;\n };\n }\n}\n\nexport type PromptInputSpeechButtonProps = ComponentProps<\n typeof PromptInputButton\n> & {\n textareaRef?: RefObject<HTMLTextAreaElement | null>;\n onTranscriptionChange?: (text: string) => void;\n};\n\nexport const PromptInputSpeechButton = ({\n className,\n textareaRef,\n onTranscriptionChange,\n ...props\n}: PromptInputSpeechButtonProps) => {\n const [isListening, setIsListening] = useState(false);\n const [recognition, setRecognition] = useState<SpeechRecognition | null>(\n null\n );\n const recognitionRef = useRef<SpeechRecognition | null>(null);\n\n useEffect(() => {\n if (\n typeof window !== \"undefined\" &&\n (\"SpeechRecognition\" in window || \"webkitSpeechRecognition\" in window)\n ) {\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = true;\n speechRecognition.interimResults = true;\n speechRecognition.lang = \"en-US\";\n\n speechRecognition.onstart = () => {\n setIsListening(true);\n };\n\n speechRecognition.onend = () => {\n setIsListening(false);\n };\n\n speechRecognition.onresult = (event) => {\n let finalTranscript = \"\";\n\n for (let i = event.resultIndex; i < event.results.length; i++) {\n const result = event.results[i];\n if (result.isFinal) {\n finalTranscript += result[0]?.transcript ?? \"\";\n }\n }\n\n if (finalTranscript && textareaRef?.current) {\n const textarea = textareaRef.current;\n const currentValue = textarea.value;\n const newValue =\n currentValue + (currentValue ? \" \" : \"\") + finalTranscript;\n\n textarea.value = newValue;\n textarea.dispatchEvent(new Event(\"input\", { bubbles: true }));\n onTranscriptionChange?.(newValue);\n }\n };\n\n speechRecognition.onerror = (event) => {\n console.error(\"Speech recognition error:\", event.error);\n setIsListening(false);\n };\n\n recognitionRef.current = speechRecognition;\n setRecognition(speechRecognition);\n }\n\n return () => {\n if (recognitionRef.current) {\n recognitionRef.current.stop();\n }\n };\n }, [textareaRef, onTranscriptionChange]);\n\n const toggleListening = useCallback(() => {\n if (!recognition) {\n return;\n }\n\n if (isListening) {\n recognition.stop();\n } else {\n recognition.start();\n }\n }, [recognition, isListening]);\n\n return (\n <PromptInputButton\n className={cn(\n \"relative transition-all duration-200\",\n isListening && \"animate-pulse bg-accent text-accent-foreground\",\n className\n )}\n disabled={!recognition}\n onClick={toggleListening}\n {...props}\n >\n <MicIcon className=\"size-4\" />\n </PromptInputButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n \"border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors\",\n \"hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = (\n props: PromptInputHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = \"start\",\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n \"mb-2 px-3 font-medium text-muted-foreground text-xs\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn(\"space-y-1\", className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon, PaperclipIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type QueueMessagePart = {\n type: string;\n text?: string;\n url?: string;\n filename?: string;\n mediaType?: string;\n};\n\nexport type QueueMessage = {\n id: string;\n parts: QueueMessagePart[];\n};\n\nexport type QueueTodo = {\n id: string;\n title: string;\n description?: string;\n status?: \"pending\" | \"completed\";\n};\n\nexport type QueueItemProps = ComponentProps<\"li\">;\n\nexport const QueueItem = ({ className, ...props }: QueueItemProps) => (\n <li\n className={cn(\n \"group flex flex-col gap-1 rounded-md px-3 py-1 text-sm transition-colors hover:bg-muted\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemIndicatorProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemIndicator = ({\n completed = false,\n className,\n ...props\n}: QueueItemIndicatorProps) => (\n <span\n className={cn(\n \"mt-0.5 inline-block size-2.5 rounded-full border\",\n completed\n ? \"border-muted-foreground/20 bg-muted-foreground/10\"\n : \"border-muted-foreground/50\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemContentProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemContent = ({\n completed = false,\n className,\n ...props\n}: QueueItemContentProps) => (\n <span\n className={cn(\n \"line-clamp-1 grow break-words\",\n completed\n ? \"text-muted-foreground/50 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemDescriptionProps = ComponentProps<\"div\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemDescription = ({\n completed = false,\n className,\n ...props\n}: QueueItemDescriptionProps) => (\n <div\n className={cn(\n \"ml-6 text-xs\",\n completed\n ? \"text-muted-foreground/40 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemActionsProps = ComponentProps<\"div\">;\n\nexport const QueueItemActions = ({\n className,\n ...props\n}: QueueItemActionsProps) => (\n <div className={cn(\"flex gap-1\", className)} {...props} />\n);\n\nexport type QueueItemActionProps = Omit<\n ComponentProps<typeof Button>,\n \"variant\" | \"size\"\n>;\n\nexport const QueueItemAction = ({\n className,\n ...props\n}: QueueItemActionProps) => (\n <Button\n className={cn(\n \"size-auto rounded p-1 text-muted-foreground opacity-0 transition-opacity hover:bg-muted-foreground/10 hover:text-foreground group-hover:opacity-100\",\n className\n )}\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n />\n);\n\nexport type QueueItemAttachmentProps = ComponentProps<\"div\">;\n\nexport const QueueItemAttachment = ({\n className,\n ...props\n}: QueueItemAttachmentProps) => (\n <div className={cn(\"mt-1 flex flex-wrap gap-2\", className)} {...props} />\n);\n\nexport type QueueItemImageProps = ComponentProps<\"img\">;\n\nexport const QueueItemImage = ({\n className,\n ...props\n}: QueueItemImageProps) => (\n <img\n alt=\"\"\n className={cn(\"h-8 w-8 rounded border object-cover\", className)}\n height={32}\n width={32}\n {...props}\n />\n);\n\nexport type QueueItemFileProps = ComponentProps<\"span\">;\n\nexport const QueueItemFile = ({\n children,\n className,\n ...props\n}: QueueItemFileProps) => (\n <span\n className={cn(\n \"flex items-center gap-1 rounded border bg-muted px-2 py-1 text-xs\",\n className\n )}\n {...props}\n >\n <PaperclipIcon size={12} />\n <span className=\"max-w-[100px] truncate\">{children}</span>\n </span>\n);\n\nexport type QueueListProps = ComponentProps<typeof ScrollArea>;\n\nexport const QueueList = ({\n children,\n className,\n ...props\n}: QueueListProps) => (\n <ScrollArea className={cn(\"-mb-1 mt-2\", className)} {...props}>\n <div className=\"max-h-40 pr-4\">\n <ul>{children}</ul>\n </div>\n </ScrollArea>\n);\n\nexport type QueueSectionProps = ComponentProps<typeof Collapsible>;\n\nexport const QueueSection = ({\n className,\n defaultOpen = true,\n ...props\n}: QueueSectionProps) => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\nexport type QueueSectionTriggerProps = ComponentProps<\"button\">;\n\nexport const QueueSectionTrigger = ({\n children,\n className,\n ...props\n}: QueueSectionTriggerProps) => (\n <CollapsibleTrigger asChild>\n <button\n className={cn(\n \"group flex w-full items-center justify-between rounded-md bg-muted/40 px-3 py-2 text-start font-medium text-muted-foreground text-sm transition-colors hover:bg-muted\",\n className\n )}\n type=\"button\"\n {...props}\n >\n {children}\n </button>\n </CollapsibleTrigger>\n);\n\nexport type QueueSectionLabelProps = ComponentProps<\"span\"> & {\n count?: number;\n label: string;\n icon?: React.ReactNode;\n};\n\nexport const QueueSectionLabel = ({\n count,\n label,\n icon,\n className,\n ...props\n}: QueueSectionLabelProps) => (\n <span className={cn(\"flex items-center gap-2\", className)} {...props}>\n <ChevronDownIcon className=\"group-data-[state=closed]:-rotate-90 size-4 transition-transform\" />\n {icon}\n <span>\n {count} {label}\n </span>\n </span>\n);\n\nexport type QueueSectionContentProps = ComponentProps<\n typeof CollapsibleContent\n>;\n\nexport const QueueSectionContent = ({\n className,\n ...props\n}: QueueSectionContentProps) => (\n <CollapsibleContent className={cn(className)} {...props} />\n);\n\nexport type QueueProps = ComponentProps<\"div\">;\n\nexport const Queue = ({ className, ...props }: QueueProps) => (\n <div\n className={cn(\n \"flex flex-col gap-2 rounded-xl border border-border bg-background px-3 pt-2 pb-2 shadow-xs\",\n className\n )}\n {...props}\n />\n);\n","\"use client\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type TaskItemFileProps = ComponentProps<\"div\">;\n\nexport const TaskItemFile = ({\n children,\n className,\n ...props\n}: TaskItemFileProps) => (\n <div\n className={cn(\n \"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type TaskItemProps = ComponentProps<\"div\">;\n\nexport const TaskItem = ({ children, className, ...props }: TaskItemProps) => (\n <div className={cn(\"text-muted-foreground text-sm\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type TaskProps = ComponentProps<typeof Collapsible>;\n\nexport const Task = ({\n defaultOpen = true,\n className,\n ...props\n}: TaskProps) => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\nexport type TaskTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title: string;\n};\n\nexport const TaskTrigger = ({\n children,\n className,\n title,\n ...props\n}: TaskTriggerProps) => (\n <CollapsibleTrigger asChild className={cn(\"group\", className)} {...props}>\n {children ?? (\n <div className=\"flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\">\n <SearchIcon className=\"size-4\" />\n <p className=\"text-sm\">{title}</p>\n <ChevronDownIcon className=\"size-4 transition-transform group-data-[state=open]:rotate-180\" />\n </div>\n )}\n </CollapsibleTrigger>\n);\n\nexport type TaskContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const TaskContent = ({\n children,\n className,\n ...props\n}: TaskContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"mt-4 space-y-2 border-muted border-l-2 pl-4\">\n {children}\n </div>\n </CollapsibleContent>\n);\n","\"use client\";\n\nimport { Badge } from \"../ui/badge\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport type { ToolUIPart } from \"ai\";\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { isValidElement } from \"react\";\nimport { CodeBlock } from \"./code-block\";\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn(\"not-prose mb-4 w-full rounded-md border\", className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n title?: string;\n type: ToolUIPart[\"type\"];\n state: ToolUIPart[\"state\"];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart[\"state\"]) => {\n const labels: Record<string, string> = {\n \"input-streaming\": \"Pending\",\n \"input-available\": \"Running\",\n \"approval-requested\": \"Awaiting Approval\",\n \"approval-responded\": \"Responded\",\n \"output-available\": \"Completed\",\n \"output-error\": \"Error\",\n \"output-denied\": \"Denied\",\n };\n\n const icons: Record<string, ReactNode> = {\n \"input-streaming\": <CircleIcon className=\"size-4\" />,\n \"input-available\": <ClockIcon className=\"size-4 animate-pulse\" />,\n \"approval-requested\": <ClockIcon className=\"size-4 text-yellow-600\" />,\n \"approval-responded\": <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n \"output-available\": <CheckCircleIcon className=\"size-4 text-green-600\" />,\n \"output-error\": <XCircleIcon className=\"size-4 text-red-600\" />,\n \"output-denied\": <XCircleIcon className=\"size-4 text-orange-600\" />,\n };\n\n return (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4 p-3\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">\n {title ?? type.split(\"-\").slice(1).join(\"-\")}\n </span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<\"div\"> & {\n input: ToolUIPart[\"input\"];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn(\"space-y-2 overflow-hidden p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<\"div\"> & {\n output: ToolUIPart[\"output\"];\n errorText: ToolUIPart[\"errorText\"];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === \"object\" && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === \"string\") {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn(\"space-y-2 p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {errorText ? \"Error\" : \"Result\"}\n </h4>\n <div\n className={cn(\n \"overflow-x-auto rounded-md text-xs [&_table]:w-full\",\n errorText\n ? \"bg-destructive/10 text-destructive\"\n : \"bg-muted/50 text-foreground\"\n )}\n >\n {errorText && <div>{errorText}</div>}\n {Output}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { NodeToolbar, Position } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\ntype ToolbarProps = ComponentProps<typeof NodeToolbar>;\n\nexport const Toolbar = ({ className, ...props }: ToolbarProps) => (\n <NodeToolbar\n className={cn(\n \"flex items-center gap-1 rounded-sm border bg-background p-1.5\",\n className\n )}\n position={Position.Bottom}\n {...props}\n />\n);\n","\"use client\";\n\nimport { Background, ReactFlow, type ReactFlowProps } from \"@xyflow/react\";\nimport type { ReactNode } from \"react\";\n// @ts-ignore - CSS import handled by bundler\nimport \"@xyflow/react/dist/style.css\";\n\ntype CanvasProps = ReactFlowProps & {\n children?: ReactNode;\n};\n\nexport const Canvas = ({ children, ...props }: CanvasProps) => (\n <ReactFlow\n deleteKeyCode={[\"Backspace\", \"Delete\"]}\n fitView\n panOnDrag={false}\n panOnScroll\n selectionOnDrag={true}\n zoomOnDoubleClick={false}\n {...props}\n >\n <Background bgColor=\"var(--ac-sidebar)\" />\n {children}\n </ReactFlow>\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { Separator } from \"../ui/separator\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { BookmarkIcon, type LucideProps } from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type CheckpointProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Checkpoint = ({\n className,\n children,\n ...props\n}: CheckpointProps) => (\n <div\n className={cn(\"flex items-center gap-0.5 text-muted-foreground overflow-hidden\", className)}\n {...props}\n >\n {children}\n <Separator />\n </div>\n);\n\nexport type CheckpointIconProps = LucideProps;\n\nexport const CheckpointIcon = ({\n className,\n children,\n ...props\n}: CheckpointIconProps) =>\n children ?? (\n <BookmarkIcon className={cn(\"size-4 shrink-0\", className)} {...props} />\n );\n\nexport type CheckpointTriggerProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n};\n\nexport const CheckpointTrigger = ({\n children,\n className,\n variant = \"ghost\",\n size = \"sm\",\n tooltip,\n ...props\n}: CheckpointTriggerProps) =>\n tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent align=\"start\" side=\"bottom\">\n {tooltip}\n </TooltipContent>\n </Tooltip>\n ) : (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n </Button>\n );\n","\"use client\";\n\nimport type { ConnectionLineComponent } from \"@xyflow/react\";\n\nconst HALF = 0.5;\n\nexport const Connection: ConnectionLineComponent = ({\n fromX,\n fromY,\n toX,\n toY,\n}) => (\n <g>\n <path\n className=\"animated\"\n d={`M${fromX},${fromY} C ${fromX + (toX - fromX) * HALF},${fromY} ${fromX + (toX - fromX) * HALF},${toY} ${toX},${toY}`}\n fill=\"none\"\n stroke=\"var(--ac-ring)\"\n strokeWidth={1}\n />\n <circle\n cx={toX}\n cy={toY}\n fill=\"#fff\"\n r={3}\n stroke=\"var(--ac-ring)\"\n strokeWidth={1}\n />\n </g>\n);\n","\"use client\";\n\nimport {\n BaseEdge,\n type EdgeProps,\n getBezierPath,\n getSimpleBezierPath,\n type InternalNode,\n type Node,\n Position,\n useInternalNode,\n} from \"@xyflow/react\";\n\nconst Temporary = ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n}: EdgeProps) => {\n const [edgePath] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n return (\n <BaseEdge\n className=\"stroke-1 stroke-ring\"\n id={id}\n path={edgePath}\n style={{\n strokeDasharray: \"5, 5\",\n }}\n />\n );\n};\n\nconst getHandleCoordsByPosition = (\n node: InternalNode<Node>,\n handlePosition: Position\n) => {\n const handleType = handlePosition === Position.Left ? \"target\" : \"source\";\n\n const handle = node.internals.handleBounds?.[handleType]?.find(\n (h) => h.position === handlePosition\n );\n\n if (!handle) {\n return [0, 0] as const;\n }\n\n let offsetX = handle.width / 2;\n let offsetY = handle.height / 2;\n\n switch (handlePosition) {\n case Position.Left:\n offsetX = 0;\n break;\n case Position.Right:\n offsetX = handle.width;\n break;\n case Position.Top:\n offsetY = 0;\n break;\n case Position.Bottom:\n offsetY = handle.height;\n break;\n default:\n throw new Error(`Invalid handle position: ${handlePosition}`);\n }\n\n const x = node.internals.positionAbsolute.x + handle.x + offsetX;\n const y = node.internals.positionAbsolute.y + handle.y + offsetY;\n\n return [x, y] as const;\n};\n\nconst getEdgeParams = (\n source: InternalNode<Node>,\n target: InternalNode<Node>\n) => {\n const sourcePos = Position.Right;\n const [sx, sy] = getHandleCoordsByPosition(source, sourcePos);\n const targetPos = Position.Left;\n const [tx, ty] = getHandleCoordsByPosition(target, targetPos);\n\n return {\n sx,\n sy,\n tx,\n ty,\n sourcePos,\n targetPos,\n };\n};\n\nconst Animated = ({ id, source, target, markerEnd, style }: EdgeProps) => {\n const sourceNode = useInternalNode(source);\n const targetNode = useInternalNode(target);\n\n if (!(sourceNode && targetNode)) {\n return null;\n }\n\n const { sx, sy, tx, ty, sourcePos, targetPos } = getEdgeParams(\n sourceNode,\n targetNode\n );\n\n const [edgePath] = getBezierPath({\n sourceX: sx,\n sourceY: sy,\n sourcePosition: sourcePos,\n targetX: tx,\n targetY: ty,\n targetPosition: targetPos,\n });\n\n return (\n <>\n <BaseEdge id={id} markerEnd={markerEnd} path={edgePath} style={style} />\n <circle fill=\"var(--ac-primary)\" r=\"4\">\n <animateMotion dur=\"2s\" path={edgePath} repeatCount=\"indefinite\" />\n </circle>\n </>\n );\n};\n\nexport const Edge = {\n Temporary,\n Animated,\n};\n","\"use client\";\n\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../ui/card\";\nimport { cn } from \"../core/utils\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\nexport type NodeProps = ComponentProps<typeof Card> & {\n handles: {\n target: boolean;\n source: boolean;\n };\n};\n\nexport const Node = ({ handles, className, ...props }: NodeProps) => (\n <Card\n className={cn(\n \"node-container relative size-full h-auto w-sm gap-0 rounded-md p-0\",\n className\n )}\n {...props}\n >\n {handles.target && <Handle position={Position.Left} type=\"target\" />}\n {handles.source && <Handle position={Position.Right} type=\"source\" />}\n {props.children}\n </Card>\n);\n\nexport type NodeHeaderProps = ComponentProps<typeof CardHeader>;\n\nexport const NodeHeader = ({ className, ...props }: NodeHeaderProps) => (\n <CardHeader\n className={cn(\"gap-0.5 rounded-t-md border-b bg-secondary p-3!\", className)}\n {...props}\n />\n);\n\nexport type NodeTitleProps = ComponentProps<typeof CardTitle>;\n\nexport const NodeTitle = (props: NodeTitleProps) => <CardTitle {...props} />;\n\nexport type NodeDescriptionProps = ComponentProps<typeof CardDescription>;\n\nexport const NodeDescription = (props: NodeDescriptionProps) => (\n <CardDescription {...props} />\n);\n\nexport type NodeActionProps = ComponentProps<typeof CardAction>;\n\nexport const NodeAction = (props: NodeActionProps) => <CardAction {...props} />;\n\nexport type NodeContentProps = ComponentProps<typeof CardContent>;\n\nexport const NodeContent = ({ className, ...props }: NodeContentProps) => (\n <CardContent className={cn(\"p-3\", className)} {...props} />\n);\n\nexport type NodeFooterProps = ComponentProps<typeof CardFooter>;\n\nexport const NodeFooter = ({ className, ...props }: NodeFooterProps) => (\n <CardFooter\n className={cn(\"rounded-b-md border-t bg-secondary p-3!\", className)}\n {...props}\n />\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport type { Experimental_GeneratedImage } from \"ai\";\n\nexport type ImageProps = Experimental_GeneratedImage & {\n className?: string;\n alt?: string;\n};\n\nexport const Image = ({\n base64,\n uint8Array,\n mediaType,\n ...props\n}: ImageProps) => (\n <img\n {...props}\n alt={props.alt}\n className={cn(\n \"h-auto max-w-full overflow-hidden rounded-md\",\n props.className\n )}\n src={`data:${mediaType};base64,${base64}`}\n />\n);\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/button-group.tsx","../src/ai-elements/message.tsx","../src/ai-elements/component-renderer.tsx","../src/ai-elements/artifact.tsx","../src/ai-elements/code-block.tsx","../src/ai-elements/web-preview.tsx","../src/ui/hover-card.tsx","../src/ai-elements/inline-citation.tsx","../src/ai-elements/shimmer.tsx","../src/ai-elements/reasoning.tsx","../src/ai-elements/thinking-spinner.tsx","../src/ai-elements/followup-buttons.tsx","../src/ai-elements/suggestion.tsx","../src/ai-elements/context.tsx","../src/ai-elements/chain-of-thought.tsx","../src/ai-elements/confirmation.tsx","../src/ai-elements/controls.tsx","../src/ui/command.tsx","../src/ai-elements/model-selector.tsx","../src/ai-elements/open-in-chat.tsx","../src/ai-elements/panel.tsx","../src/ai-elements/plan.tsx","../src/ui/input-group.tsx","../src/ai-elements/prompt-input.tsx","../src/ai-elements/queue.tsx","../src/ai-elements/task.tsx","../src/ai-elements/tool.tsx","../src/ai-elements/toolbar.tsx","../src/ai-elements/canvas.tsx","../src/ai-elements/checkpoint.tsx","../src/ai-elements/connection.tsx","../src/ai-elements/edge.tsx","../src/ai-elements/node.tsx","../src/ai-elements/image.tsx"],"names":["jsx","useState","useEffect","jsxs","XIcon","createContext","useRef","useContext","React","Fragment","memo","ChevronDownIcon","Streamdown","useControllableState","useMemo","BrainIcon","ControlsPrimitive","CommandPrimitive","PanelPrimitive","cva","useCallback","PaperclipIcon","Position"],"mappings":"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","file":"ai-elements.js","sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\nimport { Separator } from \"./separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n ButtonGroup,\n ButtonGroupText,\n} from \"../ui/button-group\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport type { FileUIPart, UIMessage } from \"ai\";\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n PaperclipIcon,\n XIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes, ReactElement } from \"react\";\nimport { createContext, memo, useContext, useEffect, useState } from \"react\";\nimport { Streamdown } from \"streamdown\";\n\nexport type MessageProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n fullWidth?: boolean;\n};\n\nexport const Message = ({ className, from, fullWidth, ...props }: MessageProps) => (\n <div\n className={cn(\n \"group flex w-full flex-col gap-2\",\n fullWidth ? \"\" : from === \"assistant\" ? \"max-w-[var(--ac-assistant-max-width,95%)]\" : \"max-w-[95%]\",\n from === \"user\" ? \"is-user justify-end\" : \"is-assistant\",\n className\n )}\n {...props}\n />\n);\n\nexport type MessageContentProps = HTMLAttributes<HTMLDivElement> & {\n fullWidth?: boolean;\n};\n\nexport const MessageContent = ({\n children,\n className,\n fullWidth,\n ...props\n}: MessageContentProps) => (\n <div\n className={cn(\n \"flex min-w-0 flex-col gap-2 overflow-hidden\",\n fullWidth\n ? \"w-full\"\n : \"w-fit max-w-full\",\n \"group-[.is-user]:ml-auto group-[.is-user]:px-6 group-[.is-user]:py-4 group-[.is-user]:text-foreground group-[.is-user]:rounded-bl-[24px] group-[.is-user]:rounded-br-[24px] group-[.is-user]:rounded-tl-[4px] group-[.is-user]:rounded-tr-[24px] group-[.is-user]:bg-[var(--ac-user-bubble-bg,#f0f4f8)]\",\n \"group-[.is-assistant]:text-foreground group-[.is-assistant]:w-full\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type MessageActionsProps = ComponentProps<\"div\">;\n\nexport const MessageActions = ({\n className,\n children,\n ...props\n}: MessageActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type MessageActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n};\n\nexport const MessageAction = ({\n tooltip,\n children,\n label,\n variant = \"ghost\",\n size = \"icon-sm\",\n ...props\n}: MessageActionProps) => {\n const button = (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\ntype MessageBranchContextType = {\n currentBranch: number;\n totalBranches: number;\n goToPrevious: () => void;\n goToNext: () => void;\n branches: ReactElement[];\n setBranches: (branches: ReactElement[]) => void;\n};\n\nconst MessageBranchContext = createContext<MessageBranchContextType | null>(\n null\n);\n\nconst useMessageBranch = () => {\n const context = useContext(MessageBranchContext);\n\n if (!context) {\n throw new Error(\n \"MessageBranch components must be used within MessageBranch\"\n );\n }\n\n return context;\n};\n\nexport type MessageBranchProps = HTMLAttributes<HTMLDivElement> & {\n defaultBranch?: number;\n onBranchChange?: (branchIndex: number) => void;\n};\n\nexport const MessageBranch = ({\n defaultBranch = 0,\n onBranchChange,\n className,\n ...props\n}: MessageBranchProps) => {\n const [currentBranch, setCurrentBranch] = useState(defaultBranch);\n const [branches, setBranches] = useState<ReactElement[]>([]);\n\n const handleBranchChange = (newBranch: number) => {\n setCurrentBranch(newBranch);\n onBranchChange?.(newBranch);\n };\n\n const goToPrevious = () => {\n const newBranch =\n currentBranch > 0 ? currentBranch - 1 : branches.length - 1;\n handleBranchChange(newBranch);\n };\n\n const goToNext = () => {\n const newBranch =\n currentBranch < branches.length - 1 ? currentBranch + 1 : 0;\n handleBranchChange(newBranch);\n };\n\n const contextValue: MessageBranchContextType = {\n currentBranch,\n totalBranches: branches.length,\n goToPrevious,\n goToNext,\n branches,\n setBranches,\n };\n\n return (\n <MessageBranchContext.Provider value={contextValue}>\n <div\n className={cn(\"grid w-full gap-2 [&>div]:pb-0\", className)}\n {...props}\n />\n </MessageBranchContext.Provider>\n );\n};\n\nexport type MessageBranchContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const MessageBranchContent = ({\n children,\n ...props\n}: MessageBranchContentProps) => {\n const { currentBranch, setBranches, branches } = useMessageBranch();\n const childrenArray = Array.isArray(children) ? children : [children];\n\n useEffect(() => {\n if (branches.length !== childrenArray.length) {\n setBranches(childrenArray);\n }\n }, [childrenArray, branches, setBranches]);\n\n return childrenArray.map((branch, index) => (\n <div\n className={cn(\n \"grid gap-2 overflow-hidden [&>div]:pb-0\",\n index === currentBranch ? \"block\" : \"hidden\"\n )}\n key={branch.key}\n {...props}\n >\n {branch}\n </div>\n ));\n};\n\nexport type MessageBranchSelectorProps = HTMLAttributes<HTMLDivElement> & {\n from: UIMessage[\"role\"];\n};\n\nexport const MessageBranchSelector = ({\n className,\n from,\n ...props\n}: MessageBranchSelectorProps) => {\n const { totalBranches } = useMessageBranch();\n\n if (totalBranches <= 1) {\n return null;\n }\n\n return (\n <ButtonGroup\n className=\"[&>*:not(:first-child)]:rounded-l-md [&>*:not(:last-child)]:rounded-r-md\"\n orientation=\"horizontal\"\n {...props}\n />\n );\n};\n\nexport type MessageBranchPreviousProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchPrevious = ({\n children,\n ...props\n}: MessageBranchPreviousProps) => {\n const { goToPrevious, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Previous branch\"\n disabled={totalBranches <= 1}\n onClick={goToPrevious}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronLeftIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchNextProps = ComponentProps<typeof Button>;\n\nexport const MessageBranchNext = ({\n children,\n className,\n ...props\n}: MessageBranchNextProps) => {\n const { goToNext, totalBranches } = useMessageBranch();\n\n return (\n <Button\n aria-label=\"Next branch\"\n disabled={totalBranches <= 1}\n onClick={goToNext}\n size=\"icon-sm\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <ChevronRightIcon size={14} />}\n </Button>\n );\n};\n\nexport type MessageBranchPageProps = HTMLAttributes<HTMLSpanElement>;\n\nexport const MessageBranchPage = ({\n className,\n ...props\n}: MessageBranchPageProps) => {\n const { currentBranch, totalBranches } = useMessageBranch();\n\n return (\n <ButtonGroupText\n className={cn(\n \"border-none bg-transparent text-muted-foreground shadow-none\",\n className\n )}\n {...props}\n >\n {currentBranch + 1} of {totalBranches}\n </ButtonGroupText>\n );\n};\n\nexport type MessageResponseProps = ComponentProps<typeof Streamdown>;\n\n/**\n * Add UTM parameters to a URL\n */\nfunction addUtmParams(url: string): string {\n try {\n const urlObj = new URL(url);\n urlObj.searchParams.set(\"utm_source\", \"chat\");\n urlObj.searchParams.set(\"utm_medium\", \"referral\");\n return urlObj.toString();\n } catch {\n return url;\n }\n}\n\nconst CustomLink = ({ href, children, ...props }: React.AnchorHTMLAttributes<HTMLAnchorElement>) => (\n <a\n href={href ? addUtmParams(href) : href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"hover:underline hover:opacity-80 transition-opacity font-medium\"\n {...props}\n >\n {children}\n </a>\n);\n\nconst CustomImage = ({ src, alt, ...props }: React.ImgHTMLAttributes<HTMLImageElement>) => (\n <img\n src={src}\n alt={alt || \"\"}\n loading=\"lazy\"\n className=\"rounded-xl max-w-full h-auto my-4\"\n {...props}\n />\n);\n\nconst CustomTable = ({ children, ...props }: React.TableHTMLAttributes<HTMLTableElement>) => (\n <div className=\"my-4 overflow-x-auto\">\n <table\n className=\"w-full text-sm rounded-xl border border-black/[0.08] overflow-hidden\"\n {...props}\n >\n {children}\n </table>\n </div>\n);\n\nconst CustomThead = ({ children, ...props }: React.HTMLAttributes<HTMLTableSectionElement>) => (\n <thead className=\"bg-black/[0.04]\" {...props}>\n {children}\n </thead>\n);\n\nconst CustomTh = ({ children, ...props }: React.ThHTMLAttributes<HTMLTableCellElement>) => (\n <th\n className=\"px-4 py-3 text-start text-xs font-medium uppercase tracking-wider opacity-60 border-b border-black/[0.08]\"\n {...props}\n >\n {children}\n </th>\n);\n\nconst CustomTd = ({ children, ...props }: React.TdHTMLAttributes<HTMLTableCellElement>) => (\n <td\n className=\"px-4 py-3 border-b border-black/[0.08]\"\n {...props}\n >\n {children}\n </td>\n);\n\nconst CustomTr = ({ children, ...props }: React.HTMLAttributes<HTMLTableRowElement>) => (\n <tr\n className=\"hover:bg-black/[0.02] transition-colors\"\n {...props}\n >\n {children}\n </tr>\n);\n\nexport const MessageResponse = memo(\n ({ className, ...props }: MessageResponseProps) => (\n <Streamdown\n className={cn(\n \"message-response size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0\",\n className\n )}\n components={{\n a: CustomLink,\n img: CustomImage,\n table: CustomTable,\n thead: CustomThead,\n th: CustomTh,\n td: CustomTd,\n tr: CustomTr,\n } as never}\n linkSafety={{ enabled: false }}\n {...props}\n />\n ),\n (prevProps, nextProps) => prevProps.children === nextProps.children\n);\n\nMessageResponse.displayName = \"MessageResponse\";\n\nexport type MessageAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart;\n className?: string;\n onRemove?: () => void;\n};\n\nexport function MessageAttachment({\n data,\n className,\n onRemove,\n ...props\n}: MessageAttachmentProps) {\n const filename = data.filename || \"\";\n const mediaType =\n data.mediaType?.startsWith(\"image/\") && data.url ? \"image\" : \"file\";\n const isImage = mediaType === \"image\";\n const attachmentLabel = filename || (isImage ? \"Image\" : \"Attachment\");\n\n return (\n <div\n className={cn(\n \"group relative size-24 overflow-hidden rounded-lg\",\n className\n )}\n {...props}\n >\n {isImage ? (\n <>\n <img\n alt={filename || \"attachment\"}\n className=\"size-full object-cover\"\n height={100}\n src={data.url}\n width={100}\n />\n {onRemove && (\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute top-2 right-2 size-6 rounded-full bg-background/80 p-0 opacity-0 backdrop-blur-sm transition-opacity hover:bg-background group-hover:opacity-100 [&>svg]:size-3\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </>\n ) : (\n <>\n <Tooltip>\n <TooltipTrigger asChild>\n <div className=\"flex size-full shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <PaperclipIcon className=\"size-4\" />\n </div>\n </TooltipTrigger>\n <TooltipContent>\n <p>{attachmentLabel}</p>\n </TooltipContent>\n </Tooltip>\n {onRemove && (\n <Button\n aria-label=\"Remove attachment\"\n className=\"size-6 shrink-0 rounded-full p-0 opacity-0 transition-opacity hover:bg-accent group-hover:opacity-100 [&>svg]:size-3\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n )}\n </>\n )}\n </div>\n );\n}\n\nexport type MessageAttachmentsProps = ComponentProps<\"div\">;\n\nexport function MessageAttachments({\n children,\n className,\n ...props\n}: MessageAttachmentsProps) {\n if (!children) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"ml-auto flex w-fit flex-wrap items-start gap-2\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport type MessageToolbarProps = ComponentProps<\"div\">;\n\nexport const MessageToolbar = ({\n className,\n children,\n ...props\n}: MessageToolbarProps) => (\n <div\n className={cn(\n \"mt-4 flex w-full items-center justify-between gap-4\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n","\"use client\";\n\n/**\n * ComponentRenderer - Renders custom HTML/CSS templates with data\n * Supports both single objects and arrays with grid layout\n */\n\nimport { useEffect, useId, useRef, useState, useSyncExternalStore } from \"react\";\nimport { processImagesInHtml } from \"../core/image-utils\";\nimport type { TrackInteractionParams } from \"../core/analytics/interaction-tracker\";\n\nconst MOBILE_BREAKPOINT = 768;\n\nfunction subscribeToResize(cb: () => void) {\n if (typeof window === \"undefined\") return () => {};\n window.addEventListener(\"resize\", cb);\n return () => window.removeEventListener(\"resize\", cb);\n}\n\nfunction getIsMobile() {\n if (typeof window === \"undefined\") return false;\n return window.innerWidth < MOBILE_BREAKPOINT;\n}\n\nexport interface ComponentRendererProps {\n htmlCode: string;\n cssCode: string;\n data: any;\n mobileGridCols?: number;\n desktopGridCols?: number;\n onInteraction?: (params: TrackInteractionParams) => void;\n messageId?: string;\n eventId?: string;\n /** Max items per page on mobile (default: 4) */\n mobilePageSize?: number;\n /** Max items per page on desktop (default: 4) */\n desktopPageSize?: number;\n}\n\nexport function ComponentRenderer({\n htmlCode,\n cssCode,\n data,\n mobileGridCols = 1,\n desktopGridCols = 3,\n onInteraction,\n messageId,\n eventId,\n mobilePageSize = 4,\n desktopPageSize = 4,\n}: ComponentRendererProps) {\n const containerId = useId();\n const containerRef = useRef<HTMLDivElement>(null);\n const [currentPage, setCurrentPage] = useState(0);\n const isMobile = useSyncExternalStore(subscribeToResize, getIsMobile, () => true);\n\n const pageSize = isMobile ? mobilePageSize : desktopPageSize;\n\n // Pagination calculations\n const isArray = Array.isArray(data);\n const totalItems = isArray ? data.length : 1;\n const totalPages = isArray ? Math.ceil(totalItems / pageSize) : 1;\n const hasPagination = isArray && totalItems > pageSize;\n\n // Reset to first page when page size changes (mobile ↔ desktop)\n useEffect(() => {\n setCurrentPage(p => Math.min(p, Math.max(0, totalPages - 1)));\n }, [totalPages]);\n\n // Get current page data\n const displayData = isArray && hasPagination\n ? data.slice(currentPage * pageSize, (currentPage + 1) * pageSize)\n : data;\n\n useEffect(() => {\n if (!containerRef.current) return;\n if (typeof document === \"undefined\") return;\n\n let processedHtml = \"\";\n\n if (Array.isArray(displayData)) {\n const gridId = `grid-${containerId}`;\n const items = displayData\n .map((item, idx) => {\n let rendered = replaceTemplateVariables(htmlCode, item);\n rendered = processImagesInHtml(rendered);\n const globalIndex = currentPage * pageSize + idx;\n return `<div class=\"grid-item\" data-item-index=\"${globalIndex}\">${rendered}</div>`;\n })\n .join(\"\");\n\n processedHtml = `<div class=\"grid-container\" id=\"${gridId}\">${items}</div>`;\n } else {\n processedHtml = replaceTemplateVariables(htmlCode, displayData);\n processedHtml = processImagesInHtml(processedHtml);\n }\n\n containerRef.current.innerHTML = processedHtml;\n\n // Inject scoped CSS\n const styleId = `component-style-${containerId}`;\n const existingStyle = document.getElementById(styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n\n let finalCss = cssCode;\n if (Array.isArray(displayData)) {\n const gridCss = `\n#${containerId} .grid-container {\n display: grid;\n grid-template-columns: repeat(${mobileGridCols}, 1fr);\n gap: 1rem;\n width: 100%;\n}\n\n#${containerId} .grid-item {\n width: 100%;\n}\n\n@media (min-width: 768px) {\n #${containerId} .grid-container {\n grid-template-columns: repeat(${desktopGridCols}, 1fr);\n }\n}\n`;\n finalCss = `${cssCode}\\n${gridCss}`;\n }\n\n const style = document.createElement(\"style\");\n style.id = styleId;\n style.textContent = finalCss;\n containerRef.current.appendChild(style);\n\n // Add lazy loading to images\n const images = containerRef.current.querySelectorAll(\"img\");\n images.forEach((img) => {\n if (!img.hasAttribute(\"loading\")) {\n img.setAttribute(\"loading\", \"lazy\");\n }\n });\n\n // Make all links open in new tab\n const links = containerRef.current.querySelectorAll(\"a\");\n links.forEach((link) => {\n link.setAttribute(\"target\", \"_blank\");\n link.setAttribute(\"rel\", \"noopener noreferrer\");\n });\n }, [htmlCode, cssCode, displayData, mobileGridCols, desktopGridCols, containerId, currentPage, pageSize, totalItems, totalPages]);\n\n return (\n <div className=\"component-renderer-wrapper\">\n <div\n ref={containerRef}\n id={containerId}\n className=\"component-render w-full rounded\"\n onClick={(e) => {\n if (!onInteraction) return;\n\n const target = e.target as HTMLElement;\n const link = target.closest(\"a\");\n const button = target.closest(\"button\");\n\n if (link?.href) {\n onInteraction({\n type: \"link_click\",\n target: link.href,\n label: link.textContent || link.href,\n metadata: { url: link.href, text: link.textContent },\n messageId,\n eventId,\n });\n } else if (button && !button.hasAttribute(\"data-no-track\")) {\n onInteraction({\n type: \"button_click\",\n target: button.textContent || \"button\",\n label: button.textContent || \"button\",\n metadata: { buttonText: button.textContent },\n messageId,\n eventId,\n });\n }\n }}\n style={{ display: \"block\" }}\n />\n\n {/* Pagination Controls - RTL aware */}\n {hasPagination && (\n <div className=\"flex items-center justify-center gap-2 mt-4\" dir=\"ltr\">\n <button\n onClick={() => setCurrentPage(p => Math.max(0, p - 1))}\n disabled={currentPage === 0}\n className=\"px-3 py-1.5 text-sm rounded-md border border-border disabled:opacity-40 disabled:cursor-not-allowed hover:bg-muted transition-colors\"\n aria-label=\"Previous page\"\n >\n ‹\n </button>\n\n <span className=\"text-sm text-muted-foreground px-2 tabular-nums\">\n {currentPage + 1} / {totalPages}\n </span>\n\n <button\n onClick={() => setCurrentPage(p => Math.min(totalPages - 1, p + 1))}\n disabled={currentPage >= totalPages - 1}\n className=\"px-3 py-1.5 text-sm rounded-md border border-border disabled:opacity-40 disabled:cursor-not-allowed hover:bg-muted transition-colors\"\n aria-label=\"Next page\"\n >\n ›\n </button>\n </div>\n )}\n </div>\n );\n}\n\n/**\n * Replace {{template}} variables in HTML with actual data values\n * Supports: {{field}}, {{nested.field}}, {{#each field}}...{{/each}}, {{this}}, {{this.field}}\n */\nfunction replaceTemplateVariables(html: string, data: any): string {\n // Process {{#each field}}...{{/each}} blocks first\n let processed = processEachBlocks(html, data);\n\n // Strip any remaining unsupported control flow ({{#if}}, etc.)\n processed = processed.replace(/\\{\\{[#/][^}]+\\}\\}/g, \"\");\n\n // Replace {{this}} with the data itself (for scalar arrays inside #each)\n processed = processed.replace(/\\{\\{this\\}\\}/g, () => {\n return data !== undefined && data !== null ? String(data) : \"\";\n });\n\n // Replace {{this.field}} with {{field}} for compatibility\n processed = processed.replace(/\\{\\{this\\.([^}]+)\\}\\}/g, \"{{$1}}\");\n\n return processed.replace(/\\{\\{([^}]+)\\}\\}/g, (match, path) => {\n try {\n const trimmedPath = path.trim();\n const value = getNestedValue(data, trimmedPath);\n\n if (value === undefined || value === null) {\n return \"\";\n }\n\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n\n return String(value);\n } catch (error) {\n console.error(`Error processing template variable {{${path}}}:`, error);\n return match;\n }\n });\n}\n\n/**\n * Process {{#each field}}...{{/each}} blocks by iterating over arrays in data\n */\nfunction processEachBlocks(html: string, data: any): string {\n const eachRegex = /\\{\\{#each\\s+([^}]+)\\}\\}([\\s\\S]*?)\\{\\{\\/each\\}\\}/g;\n\n return html.replace(eachRegex, (_match, field, content) => {\n const trimmedField = field.trim();\n const array = getNestedValue(data, trimmedField);\n\n if (!Array.isArray(array)) {\n return \"\";\n }\n\n return array\n .map((item) => {\n let itemHtml = processEachBlocks(content, item);\n\n if (typeof item !== \"object\" || item === null) {\n itemHtml = itemHtml.replace(/\\{\\{this\\}\\}/g, String(item));\n return itemHtml;\n }\n\n itemHtml = itemHtml.replace(/\\{\\{this\\.([^}]+)\\}\\}/g, \"{{$1}}\");\n itemHtml = itemHtml.replace(/\\{\\{([^}]+)\\}\\}/g, (m, path) => {\n const trimmedPath = path.trim();\n if (trimmedPath.startsWith(\"#\") || trimmedPath.startsWith(\"/\")) return m;\n const value = getNestedValue(item, trimmedPath);\n if (value === undefined || value === null) return \"\";\n if (typeof value === \"object\") return JSON.stringify(value);\n return String(value);\n });\n\n return itemHtml;\n })\n .join(\"\");\n });\n}\n\n/**\n * Get nested value from object using dot/bracket notation\n */\nfunction getNestedValue(obj: any, path: string): any {\n if (!path || obj === null || obj === undefined) {\n return undefined;\n }\n\n const parts = path.split(/\\.(?![^[]*\\])/);\n let current = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return undefined;\n }\n\n const arrayMatch = part.match(/^([^[]+)\\[([^\\]]+)\\]$/);\n if (arrayMatch) {\n const [, key, index] = arrayMatch;\n current = current[key];\n if (Array.isArray(current)) {\n current = current[parseInt(index, 10)];\n }\n } else {\n current = current[part];\n }\n }\n\n return current;\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { type LucideIcon, XIcon } from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type ArtifactProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Artifact = ({ className, ...props }: ArtifactProps) => (\n <div\n className={cn(\n \"flex flex-col overflow-hidden rounded-lg border bg-background shadow-sm\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactHeader = ({\n className,\n ...props\n}: ArtifactHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between border-b bg-muted/50 px-4 py-3\",\n className\n )}\n {...props}\n />\n);\n\nexport type ArtifactCloseProps = ComponentProps<typeof Button>;\n\nexport const ArtifactClose = ({\n className,\n children,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactCloseProps) => (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children ?? <XIcon className=\"size-4\" />}\n <span className=\"sr-only\">Close</span>\n </Button>\n);\n\nexport type ArtifactTitleProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactTitle = ({ className, ...props }: ArtifactTitleProps) => (\n <p\n className={cn(\"font-medium text-foreground text-sm\", className)}\n {...props}\n />\n);\n\nexport type ArtifactDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const ArtifactDescription = ({\n className,\n ...props\n}: ArtifactDescriptionProps) => (\n <p className={cn(\"text-muted-foreground text-sm\", className)} {...props} />\n);\n\nexport type ArtifactActionsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactActions = ({\n className,\n ...props\n}: ArtifactActionsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type ArtifactActionProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n label?: string;\n icon?: LucideIcon;\n};\n\nexport const ArtifactAction = ({\n tooltip,\n label,\n icon: Icon,\n children,\n className,\n size = \"sm\",\n variant = \"ghost\",\n ...props\n}: ArtifactActionProps) => {\n const button = (\n <Button\n className={cn(\n \"size-8 p-0 text-muted-foreground hover:text-foreground\",\n className\n )}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {Icon ? <Icon className=\"size-4\" /> : children}\n <span className=\"sr-only\">{label || tooltip}</span>\n </Button>\n );\n\n if (tooltip) {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return button;\n};\n\nexport type ArtifactContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const ArtifactContent = ({\n className,\n ...props\n}: ArtifactContentProps) => (\n <div className={cn(\"flex-1 overflow-auto p-4\", className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\nimport { CheckIcon, CopyIcon } from \"lucide-react\";\nimport {\n type ComponentProps,\n createContext,\n type HTMLAttributes,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { type BundledLanguage, codeToHtml, type ShikiTransformer } from \"shiki\";\n\ntype CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: BundledLanguage;\n showLineNumbers?: boolean;\n};\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: \"\",\n});\n\nconst lineNumberTransformer: ShikiTransformer = {\n name: \"line-numbers\",\n line(node, line) {\n node.children.unshift({\n type: \"element\",\n tagName: \"span\",\n properties: {\n className: [\n \"inline-block\",\n \"min-w-10\",\n \"mr-4\",\n \"text-right\",\n \"select-none\",\n \"text-muted-foreground\",\n ],\n },\n children: [{ type: \"text\", value: String(line) }],\n });\n },\n};\n\nexport async function highlightCode(\n code: string,\n language: BundledLanguage,\n showLineNumbers = false\n) {\n const transformers: ShikiTransformer[] = showLineNumbers\n ? [lineNumberTransformer]\n : [];\n\n return await Promise.all([\n codeToHtml(code, {\n lang: language,\n theme: \"one-light\",\n transformers,\n }),\n codeToHtml(code, {\n lang: language,\n theme: \"one-dark-pro\",\n transformers,\n }),\n ]);\n}\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => {\n const [html, setHtml] = useState<string>(\"\");\n const [darkHtml, setDarkHtml] = useState<string>(\"\");\n const mounted = useRef(false);\n\n useEffect(() => {\n highlightCode(code, language, showLineNumbers).then(([light, dark]) => {\n if (!mounted.current) {\n setHtml(light);\n setDarkHtml(dark);\n mounted.current = true;\n }\n });\n\n return () => {\n mounted.current = false;\n };\n }, [code, language, showLineNumbers]);\n\n return (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n \"group relative w-full overflow-hidden rounded-md border bg-background text-foreground\",\n className\n )}\n {...props}\n >\n <div className=\"relative\">\n <div\n className=\"overflow-auto dark:hidden [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: html }}\n />\n <div\n className=\"hidden overflow-auto dark:block [&>pre]:m-0 [&>pre]:bg-background! [&>pre]:p-4 [&>pre]:text-foreground! [&>pre]:text-sm [&_code]:font-mono [&_code]:text-sm\"\n // biome-ignore lint/security/noDangerouslySetInnerHtml: \"this is needed.\"\n dangerouslySetInnerHTML={{ __html: darkHtml }}\n />\n {children && (\n <div className=\"absolute top-2 right-2 flex items-center gap-2\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n );\n};\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, setIsCopied] = useState(false);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === \"undefined\" || !navigator?.clipboard?.writeText) {\n onError?.(new Error(\"Clipboard API not available\"));\n return;\n }\n\n try {\n await navigator.clipboard.writeText(code);\n setIsCopied(true);\n onCopy?.();\n setTimeout(() => setIsCopied(false), timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn(\"shrink-0\", className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { Input } from \"../ui/input\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, useContext, useEffect, useState } from \"react\";\n\nexport type WebPreviewContextValue = {\n url: string;\n setUrl: (url: string) => void;\n consoleOpen: boolean;\n setConsoleOpen: (open: boolean) => void;\n};\n\nconst WebPreviewContext = createContext<WebPreviewContextValue | null>(null);\n\nconst useWebPreview = () => {\n const context = useContext(WebPreviewContext);\n if (!context) {\n throw new Error(\"WebPreview components must be used within a WebPreview\");\n }\n return context;\n};\n\nexport type WebPreviewProps = ComponentProps<\"div\"> & {\n defaultUrl?: string;\n onUrlChange?: (url: string) => void;\n};\n\nexport const WebPreview = ({\n className,\n children,\n defaultUrl = \"\",\n onUrlChange,\n ...props\n}: WebPreviewProps) => {\n const [url, setUrl] = useState(defaultUrl);\n const [consoleOpen, setConsoleOpen] = useState(false);\n\n const handleUrlChange = (newUrl: string) => {\n setUrl(newUrl);\n onUrlChange?.(newUrl);\n };\n\n const contextValue: WebPreviewContextValue = {\n url,\n setUrl: handleUrlChange,\n consoleOpen,\n setConsoleOpen,\n };\n\n return (\n <WebPreviewContext.Provider value={contextValue}>\n <div\n className={cn(\n \"flex size-full flex-col rounded-lg border bg-card\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </WebPreviewContext.Provider>\n );\n};\n\nexport type WebPreviewNavigationProps = ComponentProps<\"div\">;\n\nexport const WebPreviewNavigation = ({\n className,\n children,\n ...props\n}: WebPreviewNavigationProps) => (\n <div\n className={cn(\"flex items-center gap-1 border-b p-2\", className)}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type WebPreviewNavigationButtonProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n};\n\nexport const WebPreviewNavigationButton = ({\n onClick,\n disabled,\n tooltip,\n children,\n ...props\n}: WebPreviewNavigationButtonProps) => (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n className=\"h-8 w-8 p-0 hover:text-foreground\"\n disabled={disabled}\n onClick={onClick}\n size=\"sm\"\n variant=\"ghost\"\n {...props}\n >\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{tooltip}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n);\n\nexport type WebPreviewUrlProps = ComponentProps<typeof Input>;\n\nexport const WebPreviewUrl = ({\n value,\n onChange,\n onKeyDown,\n ...props\n}: WebPreviewUrlProps) => {\n const { url, setUrl } = useWebPreview();\n const [inputValue, setInputValue] = useState(url);\n\n useEffect(() => {\n setInputValue(url);\n }, [url]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n onChange?.(event);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\") {\n const target = event.target as HTMLInputElement;\n setUrl(target.value);\n }\n onKeyDown?.(event);\n };\n\n return (\n <Input\n className=\"h-8 flex-1 text-sm\"\n onChange={onChange ?? handleChange}\n onKeyDown={handleKeyDown}\n placeholder=\"Enter URL...\"\n value={value ?? inputValue}\n {...props}\n />\n );\n};\n\nexport type WebPreviewBodyProps = ComponentProps<\"iframe\"> & {\n loading?: ReactNode;\n};\n\nexport const WebPreviewBody = ({\n className,\n loading,\n src,\n ...props\n}: WebPreviewBodyProps) => {\n const { url } = useWebPreview();\n\n return (\n <div className=\"flex-1\">\n <iframe\n className={cn(\"size-full\", className)}\n sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups allow-presentation\"\n src={(src ?? url) || undefined}\n title=\"Preview\"\n {...props}\n />\n {loading}\n </div>\n );\n};\n\nexport type WebPreviewConsoleProps = ComponentProps<\"div\"> & {\n logs?: Array<{\n level: \"log\" | \"warn\" | \"error\";\n message: string;\n timestamp: Date;\n }>;\n};\n\nexport const WebPreviewConsole = ({\n className,\n logs = [],\n children,\n ...props\n}: WebPreviewConsoleProps) => {\n const { consoleOpen, setConsoleOpen } = useWebPreview();\n\n return (\n <Collapsible\n className={cn(\"border-t bg-muted/50 font-mono text-sm\", className)}\n onOpenChange={setConsoleOpen}\n open={consoleOpen}\n {...props}\n >\n <CollapsibleTrigger asChild>\n <Button\n className=\"flex w-full items-center justify-between p-4 text-start font-medium hover:bg-muted/50\"\n variant=\"ghost\"\n >\n Console\n <ChevronDownIcon\n className={cn(\n \"h-4 w-4 transition-transform duration-200\",\n consoleOpen && \"rotate-180\"\n )}\n />\n </Button>\n </CollapsibleTrigger>\n <CollapsibleContent\n className={cn(\n \"px-4 pb-4\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\"\n )}\n >\n <div className=\"max-h-48 space-y-1 overflow-y-auto\">\n {logs.length === 0 ? (\n <p className=\"text-muted-foreground\">No console output</p>\n ) : (\n logs.map((log, index) => (\n <div\n className={cn(\n \"text-xs\",\n log.level === \"error\" && \"text-destructive\",\n log.level === \"warn\" && \"text-yellow-600\",\n log.level === \"log\" && \"text-foreground\"\n )}\n key={`${log.timestamp.getTime()}-${index}`}\n >\n <span className=\"text-muted-foreground\">\n {log.timestamp.toLocaleTimeString()}\n </span>{\" \"}\n {log.message}\n </div>\n ))\n )}\n {children}\n </div>\n </CollapsibleContent>\n </Collapsible>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"../core/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef<typeof HoverCardPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <HoverCardPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-hover-card-content-transform-origin]\",\n className\n )}\n {...props}\n />\n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n","\"use client\";\n\nimport { Badge } from \"../ui/badge\";\nimport {\n Carousel,\n type CarouselApi,\n CarouselContent,\n CarouselItem,\n} from \"../ui/carousel\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport { cn } from \"../core/utils\";\nimport { ArrowLeftIcon, ArrowRightIcon } from \"lucide-react\";\nimport {\n type ComponentProps,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nexport type InlineCitationProps = ComponentProps<\"span\">;\n\nexport const InlineCitation = ({\n className,\n ...props\n}: InlineCitationProps) => (\n <span\n className={cn(\"group inline items-center gap-1\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationTextProps = ComponentProps<\"span\">;\n\nexport const InlineCitationText = ({\n className,\n ...props\n}: InlineCitationTextProps) => (\n <span\n className={cn(\"transition-colors group-hover:bg-accent\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCardProps = ComponentProps<typeof HoverCard>;\n\nexport const InlineCitationCard = (props: InlineCitationCardProps) => (\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n);\n\nexport type InlineCitationCardTriggerProps = ComponentProps<typeof Badge> & {\n sources: string[];\n};\n\nexport const InlineCitationCardTrigger = ({\n sources,\n className,\n ...props\n}: InlineCitationCardTriggerProps) => (\n <HoverCardTrigger asChild>\n <Badge\n className={cn(\"ml-1 rounded-full\", className)}\n variant=\"secondary\"\n {...props}\n >\n {sources[0] ? (\n <>\n {new URL(sources[0]).hostname}{\" \"}\n {sources.length > 1 && `+${sources.length - 1}`}\n </>\n ) : (\n \"unknown\"\n )}\n </Badge>\n </HoverCardTrigger>\n);\n\nexport type InlineCitationCardBodyProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCardBody = ({\n className,\n ...props\n}: InlineCitationCardBodyProps) => (\n <HoverCardContent className={cn(\"relative w-80 p-0\", className)} {...props} />\n);\n\nconst CarouselApiContext = createContext<CarouselApi | undefined>(undefined);\n\nconst useCarouselApi = () => {\n const context = useContext(CarouselApiContext);\n return context;\n};\n\nexport type InlineCitationCarouselProps = ComponentProps<typeof Carousel>;\n\nexport const InlineCitationCarousel = ({\n className,\n children,\n ...props\n}: InlineCitationCarouselProps) => {\n const [api, setApi] = useState<CarouselApi>();\n\n return (\n <CarouselApiContext.Provider value={api}>\n <Carousel className={cn(\"w-full\", className)} setApi={setApi} {...props}>\n {children}\n </Carousel>\n </CarouselApiContext.Provider>\n );\n};\n\nexport type InlineCitationCarouselContentProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselContent = (\n props: InlineCitationCarouselContentProps\n) => <CarouselContent {...props} />;\n\nexport type InlineCitationCarouselItemProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselItem = ({\n className,\n ...props\n}: InlineCitationCarouselItemProps) => (\n <CarouselItem\n className={cn(\"w-full space-y-2 p-4 pl-8\", className)}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselHeaderProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselHeader = ({\n className,\n ...props\n}: InlineCitationCarouselHeaderProps) => (\n <div\n className={cn(\n \"flex items-center justify-between gap-2 rounded-t-md bg-secondary p-2\",\n className\n )}\n {...props}\n />\n);\n\nexport type InlineCitationCarouselIndexProps = ComponentProps<\"div\">;\n\nexport const InlineCitationCarouselIndex = ({\n children,\n className,\n ...props\n}: InlineCitationCarouselIndexProps) => {\n const api = useCarouselApi();\n const [current, setCurrent] = useState(0);\n const [count, setCount] = useState(0);\n\n useEffect(() => {\n if (!api) {\n return;\n }\n\n setCount(api.scrollSnapList().length);\n setCurrent(api.selectedScrollSnap() + 1);\n\n api.on(\"select\", () => {\n setCurrent(api.selectedScrollSnap() + 1);\n });\n }, [api]);\n\n return (\n <div\n className={cn(\n \"flex flex-1 items-center justify-end px-3 py-1 text-muted-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children ?? `${current}/${count}`}\n </div>\n );\n};\n\nexport type InlineCitationCarouselPrevProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselPrev = ({\n className,\n ...props\n}: InlineCitationCarouselPrevProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollPrev();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Previous\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowLeftIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationCarouselNextProps = ComponentProps<\"button\">;\n\nexport const InlineCitationCarouselNext = ({\n className,\n ...props\n}: InlineCitationCarouselNextProps) => {\n const api = useCarouselApi();\n\n const handleClick = useCallback(() => {\n if (api) {\n api.scrollNext();\n }\n }, [api]);\n\n return (\n <button\n aria-label=\"Next\"\n className={cn(\"shrink-0\", className)}\n onClick={handleClick}\n type=\"button\"\n {...props}\n >\n <ArrowRightIcon className=\"size-4 text-muted-foreground\" />\n </button>\n );\n};\n\nexport type InlineCitationSourceProps = ComponentProps<\"div\"> & {\n title?: string;\n url?: string;\n description?: string;\n};\n\nexport const InlineCitationSource = ({\n title,\n url,\n description,\n className,\n children,\n ...props\n}: InlineCitationSourceProps) => (\n <div className={cn(\"space-y-1\", className)} {...props}>\n {title && (\n <h4 className=\"truncate font-medium text-sm leading-tight\">{title}</h4>\n )}\n {url && (\n <p className=\"truncate break-all text-muted-foreground text-xs\">{url}</p>\n )}\n {description && (\n <p className=\"line-clamp-3 text-muted-foreground text-sm leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n </div>\n);\n\nexport type InlineCitationQuoteProps = ComponentProps<\"blockquote\">;\n\nexport const InlineCitationQuote = ({\n children,\n className,\n ...props\n}: InlineCitationQuoteProps) => (\n <blockquote\n className={cn(\n \"border-muted border-l-2 pl-3 text-muted-foreground text-sm italic\",\n className\n )}\n {...props}\n >\n {children}\n </blockquote>\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { motion } from \"motion/react\";\nimport {\n type CSSProperties,\n type ElementType,\n type JSX,\n memo,\n useMemo,\n} from \"react\";\n\nexport type TextShimmerProps = {\n children: string;\n as?: ElementType;\n className?: string;\n duration?: number;\n spread?: number;\n};\n\nconst ShimmerComponent = ({\n children,\n as: Component = \"p\",\n className,\n duration = 2,\n spread = 2,\n}: TextShimmerProps) => {\n const MotionComponent = motion.create(\n Component as keyof JSX.IntrinsicElements\n );\n\n const dynamicSpread = useMemo(\n () => (children?.length ?? 0) * spread,\n [children, spread]\n );\n\n return (\n <MotionComponent\n animate={{ backgroundPosition: \"0% center\" }}\n className={cn(\n \"relative inline-block bg-[length:250%_100%,auto] bg-clip-text text-transparent\",\n \"[--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--ac-background),#0000_calc(50%+var(--spread)))] [background-repeat:no-repeat,padding-box]\",\n className\n )}\n initial={{ backgroundPosition: \"100% center\" }}\n style={\n {\n \"--spread\": `${dynamicSpread}px`,\n backgroundImage:\n \"var(--bg), linear-gradient(var(--ac-muted-foreground), var(--ac-muted-foreground))\",\n } as CSSProperties\n }\n transition={{\n repeat: Number.POSITIVE_INFINITY,\n duration,\n ease: \"linear\",\n }}\n >\n {children}\n </MotionComponent>\n );\n};\n\nexport const Shimmer = memo(ShimmerComponent);\n","\"use client\";\n\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { BrainIcon, ChevronDownIcon } from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, memo, useContext, useEffect, useState } from \"react\";\nimport { Streamdown } from \"streamdown\";\nimport { Shimmer } from \"./shimmer\";\n\ntype ReasoningContextValue = {\n isStreaming: boolean;\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n duration: number | undefined;\n};\n\nconst ReasoningContext = createContext<ReasoningContextValue | null>(null);\n\nexport const useReasoning = () => {\n const context = useContext(ReasoningContext);\n if (!context) {\n throw new Error(\"Reasoning components must be used within Reasoning\");\n }\n return context;\n};\n\nexport type ReasoningProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n duration?: number;\n};\n\nconst AUTO_CLOSE_DELAY = 1000;\nconst MS_IN_S = 1000;\n\nexport const Reasoning = memo(\n ({\n className,\n isStreaming = false,\n open,\n defaultOpen = true,\n onOpenChange,\n duration: durationProp,\n children,\n ...props\n }: ReasoningProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n const [duration, setDuration] = useControllableState({\n prop: durationProp,\n defaultProp: undefined,\n });\n\n const [hasAutoClosed, setHasAutoClosed] = useState(false);\n const [startTime, setStartTime] = useState<number | null>(null);\n\n useEffect(() => {\n if (isStreaming) {\n if (startTime === null) {\n setStartTime(Date.now());\n }\n } else if (startTime !== null) {\n setDuration(Math.ceil((Date.now() - startTime) / MS_IN_S));\n setStartTime(null);\n }\n }, [isStreaming, startTime, setDuration]);\n\n useEffect(() => {\n if (defaultOpen && !isStreaming && isOpen && !hasAutoClosed) {\n const timer = setTimeout(() => {\n setIsOpen(false);\n setHasAutoClosed(true);\n }, AUTO_CLOSE_DELAY);\n\n return () => clearTimeout(timer);\n }\n }, [isStreaming, isOpen, defaultOpen, setIsOpen, hasAutoClosed]);\n\n const handleOpenChange = (newOpen: boolean) => {\n setIsOpen(newOpen);\n };\n\n return (\n <ReasoningContext.Provider\n value={{ isStreaming, isOpen, setIsOpen, duration }}\n >\n <Collapsible\n className={cn(\"not-prose mb-4\", className)}\n onOpenChange={handleOpenChange}\n open={isOpen}\n {...props}\n >\n {children}\n </Collapsible>\n </ReasoningContext.Provider>\n );\n }\n);\n\nexport type ReasoningTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode;\n};\n\nconst defaultGetThinkingMessage = (isStreaming: boolean, duration?: number) => {\n if (isStreaming || duration === 0) {\n return <Shimmer duration={1}>Thinking...</Shimmer>;\n }\n if (duration === undefined) {\n return <p>Thought for a few seconds</p>;\n }\n return <p>Thought for {duration} seconds</p>;\n};\n\nexport const ReasoningTrigger = memo(\n ({ className, children, getThinkingMessage = defaultGetThinkingMessage, ...props }: ReasoningTriggerProps) => {\n const { isStreaming, isOpen, duration } = useReasoning();\n\n return (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <BrainIcon className=\"size-4\" />\n {getThinkingMessage(isStreaming, duration)}\n <ChevronDownIcon\n className={cn(\n \"size-4 transition-transform\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n />\n </>\n )}\n </CollapsibleTrigger>\n );\n }\n);\n\nexport type ReasoningContentProps = ComponentProps<\n typeof CollapsibleContent\n> & {\n children: string;\n};\n\nexport const ReasoningContent = memo(\n ({ className, children, ...props }: ReasoningContentProps) => (\n <CollapsibleContent\n className={cn(\n \"mt-4 text-sm\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-muted-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\n <Streamdown {...(props as any)}>{children}</Streamdown>\n </CollapsibleContent>\n )\n);\n\nReasoning.displayName = \"Reasoning\";\nReasoningTrigger.displayName = \"ReasoningTrigger\";\nReasoningContent.displayName = \"ReasoningContent\";\n","\"use client\";\n\n/**\n * Thinking/Loading Spinner Component\n */\n\nimport { cn } from \"../core/utils\";\nimport { useEffect, useState, useRef } from \"react\";\n\ninterface ThinkingSpinnerProps {\n\t/** Text to display next to spinner */\n\ttext?: string;\n\t/** Additional classes */\n\tclassName?: string;\n}\n\nexport function ThinkingSpinner({\n\ttext = \"Thinking...\",\n\tclassName,\n}: ThinkingSpinnerProps) {\n\tconst [displayText, setDisplayText] = useState(text);\n\tconst [isAnimating, setIsAnimating] = useState(false);\n\tconst prevTextRef = useRef(text);\n\n\tuseEffect(() => {\n\t\tif (text !== prevTextRef.current) {\n\t\t\tsetIsAnimating(true);\n\t\t\tconst timer = setTimeout(() => {\n\t\t\t\tsetDisplayText(text);\n\t\t\t\tsetIsAnimating(false);\n\t\t\t\tprevTextRef.current = text;\n\t\t\t}, 150);\n\t\t\treturn () => clearTimeout(timer);\n\t\t}\n\t}, [text]);\n\n\treturn (\n\t\t<div className={cn(\"flex items-center gap-3 my-4\", className)}>\n\t\t\t<svg\n\t\t\t\tclassName=\"animate-spin\"\n\t\t\t\twidth=\"20\"\n\t\t\t\theight=\"20\"\n\t\t\t\tviewBox=\"0 0 20 20\"\n\t\t\t\tfill=\"none\"\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tstyle={{ color: \"var(--ac-loader-color, var(--ac-primary, #2f80ed))\" }}\n\t\t\t>\n\t\t\t\t<circle\n\t\t\t\t\tcx=\"10\"\n\t\t\t\t\tcy=\"10\"\n\t\t\t\t\tr=\"8\"\n\t\t\t\t\tstroke=\"#E5E5E5\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t\t<path\n\t\t\t\t\td=\"M10 2C14.4183 2 18 5.58172 18 10\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstrokeWidth=\"2\"\n\t\t\t\t\tstrokeLinecap=\"round\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t/>\n\t\t\t</svg>\n\t\t\t<span\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sm text-muted-foreground transition-all duration-150\",\n\t\t\t\t\tisAnimating ? \"opacity-0\" : \"opacity-100\"\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{displayText}\n\t\t\t</span>\n\t\t</div>\n\t);\n}\n\nexport default ThinkingSpinner;\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\n\ninterface FollowupButtonsProps {\n\tsuggestions: string[];\n\tonSelect: (suggestion: string) => void;\n\tclassName?: string;\n\tdisabled?: boolean;\n}\n\nexport function FollowupButtons({\n\tsuggestions,\n\tonSelect,\n\tclassName,\n\tdisabled = false,\n}: FollowupButtonsProps) {\n\tif (!suggestions || suggestions.length === 0) return null;\n\n\treturn (\n\t\t<div className={cn(\"flex flex-wrap gap-2\", className)}>\n\t\t\t{suggestions.map((suggestion, index) => (\n\t\t\t\t<Button\n\t\t\t\t\tkey={index}\n\t\t\t\t\tvariant=\"outline\"\n\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\tonClick={() => onSelect(suggestion)}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tclassName=\"text-xs h-auto py-1.5 px-3 whitespace-normal text-start\"\n\t\t\t\t>\n\t\t\t\t\t{suggestion}\n\t\t\t\t</Button>\n\t\t\t))}\n\t\t</div>\n\t);\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n ScrollArea,\n ScrollBar,\n} from \"../ui/scroll-area\";\nimport { cn } from \"../core/utils\";\nimport type { ComponentProps } from \"react\";\n\nexport type SuggestionsProps = ComponentProps<typeof ScrollArea>;\n\nexport const Suggestions = ({\n className,\n children,\n ...props\n}: SuggestionsProps) => (\n <ScrollArea className=\"w-full overflow-x-auto whitespace-nowrap\" {...props}>\n <div className={cn(\"flex w-max flex-nowrap items-center gap-2\", className)}>\n {children}\n </div>\n <ScrollBar className=\"hidden\" orientation=\"horizontal\" />\n </ScrollArea>\n);\n\nexport type SuggestionProps = Omit<ComponentProps<typeof Button>, \"onClick\"> & {\n suggestion: string;\n onClick?: (suggestion: string) => void;\n};\n\nexport const Suggestion = ({\n suggestion,\n onClick,\n className,\n variant = \"outline\",\n size = \"sm\",\n children,\n ...props\n}: SuggestionProps) => {\n const handleClick = () => {\n onClick?.(suggestion);\n };\n\n return (\n <Button\n className={cn(\"cursor-pointer rounded-full px-4\", className)}\n onClick={handleClick}\n size={size}\n type=\"button\"\n variant={variant}\n {...props}\n >\n {children || suggestion}\n </Button>\n );\n};\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport { Progress } from \"../ui/progress\";\nimport { cn } from \"../core/utils\";\nimport type { LanguageModelUsage } from \"ai\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\nimport { getUsage } from \"tokenlens\";\n\nconst PERCENT_MAX = 100;\nconst ICON_RADIUS = 10;\nconst ICON_VIEWBOX = 24;\nconst ICON_CENTER = 12;\nconst ICON_STROKE_WIDTH = 2;\n\ntype ModelId = string;\n\ntype ContextSchema = {\n usedTokens: number;\n maxTokens: number;\n usage?: LanguageModelUsage;\n modelId?: ModelId;\n};\n\nconst ContextContext = createContext<ContextSchema | null>(null);\n\nconst useContextValue = () => {\n const context = useContext(ContextContext);\n\n if (!context) {\n throw new Error(\"Context components must be used within Context\");\n }\n\n return context;\n};\n\nexport type ContextProps = ComponentProps<typeof HoverCard> & ContextSchema;\n\nexport const Context = ({\n usedTokens,\n maxTokens,\n usage,\n modelId,\n ...props\n}: ContextProps) => (\n <ContextContext.Provider\n value={{\n usedTokens,\n maxTokens,\n usage,\n modelId,\n }}\n >\n <HoverCard closeDelay={0} openDelay={0} {...props} />\n </ContextContext.Provider>\n);\n\nconst ContextIcon = () => {\n const { usedTokens, maxTokens } = useContextValue();\n const circumference = 2 * Math.PI * ICON_RADIUS;\n const usedPercent = usedTokens / maxTokens;\n const dashOffset = circumference * (1 - usedPercent);\n\n return (\n <svg\n aria-label=\"Model context usage\"\n height=\"20\"\n role=\"img\"\n style={{ color: \"currentcolor\" }}\n viewBox={`0 0 ${ICON_VIEWBOX} ${ICON_VIEWBOX}`}\n width=\"20\"\n >\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.25\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeWidth={ICON_STROKE_WIDTH}\n />\n <circle\n cx={ICON_CENTER}\n cy={ICON_CENTER}\n fill=\"none\"\n opacity=\"0.7\"\n r={ICON_RADIUS}\n stroke=\"currentColor\"\n strokeDasharray={`${circumference} ${circumference}`}\n strokeDashoffset={dashOffset}\n strokeLinecap=\"round\"\n strokeWidth={ICON_STROKE_WIDTH}\n style={{ transformOrigin: \"center\", transform: \"rotate(-90deg)\" }}\n />\n </svg>\n );\n};\n\nexport type ContextTriggerProps = ComponentProps<typeof Button>;\n\nexport const ContextTrigger = ({ children, ...props }: ContextTriggerProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const renderedPercent = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n\n return (\n <HoverCardTrigger asChild>\n {children ?? (\n <Button type=\"button\" variant=\"ghost\" {...props}>\n <span className=\"font-medium text-muted-foreground\">\n {renderedPercent}\n </span>\n <ContextIcon />\n </Button>\n )}\n </HoverCardTrigger>\n );\n};\n\nexport type ContextContentProps = ComponentProps<typeof HoverCardContent>;\n\nexport const ContextContent = ({\n className,\n ...props\n}: ContextContentProps) => (\n <HoverCardContent\n className={cn(\"min-w-60 divide-y overflow-hidden p-0\", className)}\n {...props}\n />\n);\n\nexport type ContextContentHeaderProps = ComponentProps<\"div\">;\n\nexport const ContextContentHeader = ({\n children,\n className,\n ...props\n}: ContextContentHeaderProps) => {\n const { usedTokens, maxTokens } = useContextValue();\n const usedPercent = usedTokens / maxTokens;\n const displayPct = new Intl.NumberFormat(\"en-US\", {\n style: \"percent\",\n maximumFractionDigits: 1,\n }).format(usedPercent);\n const used = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(usedTokens);\n const total = new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(maxTokens);\n\n return (\n <div className={cn(\"w-full space-y-2 p-3\", className)} {...props}>\n {children ?? (\n <>\n <div className=\"flex items-center justify-between gap-3 text-xs\">\n <p>{displayPct}</p>\n <p className=\"font-mono text-muted-foreground\">\n {used} / {total}\n </p>\n </div>\n <div className=\"space-y-2\">\n <Progress className=\"bg-muted\" value={usedPercent * PERCENT_MAX} />\n </div>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextContentBodyProps = ComponentProps<\"div\">;\n\nexport const ContextContentBody = ({\n children,\n className,\n ...props\n}: ContextContentBodyProps) => (\n <div className={cn(\"w-full p-3\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type ContextContentFooterProps = ComponentProps<\"div\">;\n\nexport const ContextContentFooter = ({\n children,\n className,\n ...props\n}: ContextContentFooterProps) => {\n const { modelId, usage } = useContextValue();\n const costUSD = modelId\n ? getUsage({\n modelId,\n usage: {\n input: usage?.inputTokens ?? 0,\n output: usage?.outputTokens ?? 0,\n },\n }).costUSD?.totalUSD\n : undefined;\n const totalCost = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(costUSD ?? 0);\n\n return (\n <div\n className={cn(\n \"flex w-full items-center justify-between gap-3 bg-secondary p-3 text-xs\",\n className\n )}\n {...props}\n >\n {children ?? (\n <>\n <span className=\"text-muted-foreground\">Total cost</span>\n <span>{totalCost}</span>\n </>\n )}\n </div>\n );\n};\n\nexport type ContextInputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextInputUsage = ({\n className,\n children,\n ...props\n}: ContextInputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const inputTokens = usage?.inputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!inputTokens) {\n return null;\n }\n\n const inputCost = modelId\n ? getUsage({\n modelId,\n usage: { input: inputTokens, output: 0 },\n }).costUSD?.totalUSD\n : undefined;\n const inputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(inputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Input</span>\n <TokensWithCost costText={inputCostText} tokens={inputTokens} />\n </div>\n );\n};\n\nexport type ContextOutputUsageProps = ComponentProps<\"div\">;\n\nexport const ContextOutputUsage = ({\n className,\n children,\n ...props\n}: ContextOutputUsageProps) => {\n const { usage, modelId } = useContextValue();\n const outputTokens = usage?.outputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!outputTokens) {\n return null;\n }\n\n const outputCost = modelId\n ? getUsage({\n modelId,\n usage: { input: 0, output: outputTokens },\n }).costUSD?.totalUSD\n : undefined;\n const outputCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(outputCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Output</span>\n <TokensWithCost costText={outputCostText} tokens={outputTokens} />\n </div>\n );\n};\n\nexport type ContextReasoningUsageProps = ComponentProps<\"div\">;\n\nexport const ContextReasoningUsage = ({\n className,\n children,\n ...props\n}: ContextReasoningUsageProps) => {\n const { usage, modelId } = useContextValue();\n const reasoningTokens = usage?.reasoningTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!reasoningTokens) {\n return null;\n }\n\n const reasoningCost = modelId\n ? getUsage({\n modelId,\n usage: { reasoningTokens },\n }).costUSD?.totalUSD\n : undefined;\n const reasoningCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(reasoningCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Reasoning</span>\n <TokensWithCost costText={reasoningCostText} tokens={reasoningTokens} />\n </div>\n );\n};\n\nexport type ContextCacheUsageProps = ComponentProps<\"div\">;\n\nexport const ContextCacheUsage = ({\n className,\n children,\n ...props\n}: ContextCacheUsageProps) => {\n const { usage, modelId } = useContextValue();\n const cacheTokens = usage?.cachedInputTokens ?? 0;\n\n if (children) {\n return children;\n }\n\n if (!cacheTokens) {\n return null;\n }\n\n const cacheCost = modelId\n ? getUsage({\n modelId,\n usage: { cacheReads: cacheTokens, input: 0, output: 0 },\n }).costUSD?.totalUSD\n : undefined;\n const cacheCostText = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n }).format(cacheCost ?? 0);\n\n return (\n <div\n className={cn(\"flex items-center justify-between text-xs\", className)}\n {...props}\n >\n <span className=\"text-muted-foreground\">Cache</span>\n <TokensWithCost costText={cacheCostText} tokens={cacheTokens} />\n </div>\n );\n};\n\nconst TokensWithCost = ({\n tokens,\n costText,\n}: {\n tokens?: number;\n costText?: string;\n}) => (\n <span>\n {tokens === undefined\n ? \"—\"\n : new Intl.NumberFormat(\"en-US\", {\n notation: \"compact\",\n }).format(tokens)}\n {costText ? (\n <span className=\"ml-2 text-muted-foreground\">• {costText}</span>\n ) : null}\n </span>\n);\n","\"use client\";\n\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Badge } from \"../ui/badge\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport {\n BrainIcon,\n ChevronDownIcon,\n DotIcon,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { createContext, memo, useContext, useMemo } from \"react\";\n\ntype ChainOfThoughtContextValue = {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n};\n\nconst ChainOfThoughtContext = createContext<ChainOfThoughtContextValue | null>(\n null\n);\n\nconst useChainOfThought = () => {\n const context = useContext(ChainOfThoughtContext);\n if (!context) {\n throw new Error(\n \"ChainOfThought components must be used within ChainOfThought\"\n );\n }\n return context;\n};\n\nexport type ChainOfThoughtProps = ComponentProps<\"div\"> & {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n};\n\nexport const ChainOfThought = memo(\n ({\n className,\n open,\n defaultOpen = false,\n onOpenChange,\n children,\n ...props\n }: ChainOfThoughtProps) => {\n const [isOpen, setIsOpen] = useControllableState({\n prop: open,\n defaultProp: defaultOpen,\n onChange: onOpenChange,\n });\n\n const chainOfThoughtContext = useMemo(\n () => ({ isOpen, setIsOpen }),\n [isOpen, setIsOpen]\n );\n\n return (\n <ChainOfThoughtContext.Provider value={chainOfThoughtContext}>\n <div\n className={cn(\"not-prose max-w-prose space-y-4\", className)}\n {...props}\n >\n {children}\n </div>\n </ChainOfThoughtContext.Provider>\n );\n }\n);\n\nexport type ChainOfThoughtHeaderProps = ComponentProps<\n typeof CollapsibleTrigger\n>;\n\nexport const ChainOfThoughtHeader = memo(\n ({ className, children, ...props }: ChainOfThoughtHeaderProps) => {\n const { isOpen, setIsOpen } = useChainOfThought();\n\n return (\n <Collapsible onOpenChange={setIsOpen} open={isOpen}>\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\",\n className\n )}\n {...props}\n >\n <BrainIcon className=\"size-4\" />\n <span className=\"flex-1 text-start\">\n {children ?? \"Chain of Thought\"}\n </span>\n <ChevronDownIcon\n className={cn(\n \"size-4 transition-transform\",\n isOpen ? \"rotate-180\" : \"rotate-0\"\n )}\n />\n </CollapsibleTrigger>\n </Collapsible>\n );\n }\n);\n\nexport type ChainOfThoughtStepProps = ComponentProps<\"div\"> & {\n icon?: LucideIcon;\n label: ReactNode;\n description?: ReactNode;\n status?: \"complete\" | \"active\" | \"pending\";\n};\n\nexport const ChainOfThoughtStep = memo(\n ({\n className,\n icon: Icon = DotIcon,\n label,\n description,\n status = \"complete\",\n children,\n ...props\n }: ChainOfThoughtStepProps) => {\n const statusStyles = {\n complete: \"text-muted-foreground\",\n active: \"text-foreground\",\n pending: \"text-muted-foreground/50\",\n };\n\n return (\n <div\n className={cn(\n \"flex gap-2 text-sm\",\n statusStyles[status],\n \"fade-in-0 slide-in-from-top-2 animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"relative mt-0.5\">\n <Icon className=\"size-4\" />\n <div className=\"-mx-px absolute top-7 bottom-0 left-1/2 w-px bg-border\" />\n </div>\n <div className=\"flex-1 space-y-2 overflow-hidden\">\n <div>{label}</div>\n {description && (\n <div className=\"text-muted-foreground text-xs\">{description}</div>\n )}\n {children}\n </div>\n </div>\n );\n }\n);\n\nexport type ChainOfThoughtSearchResultsProps = ComponentProps<\"div\">;\n\nexport const ChainOfThoughtSearchResults = memo(\n ({ className, ...props }: ChainOfThoughtSearchResultsProps) => (\n <div\n className={cn(\"flex flex-wrap items-center gap-2\", className)}\n {...props}\n />\n )\n);\n\nexport type ChainOfThoughtSearchResultProps = ComponentProps<typeof Badge>;\n\nexport const ChainOfThoughtSearchResult = memo(\n ({ className, children, ...props }: ChainOfThoughtSearchResultProps) => (\n <Badge\n className={cn(\"gap-1 px-2 py-0.5 font-normal text-xs\", className)}\n variant=\"secondary\"\n {...props}\n >\n {children}\n </Badge>\n )\n);\n\nexport type ChainOfThoughtContentProps = ComponentProps<\n typeof CollapsibleContent\n>;\n\nexport const ChainOfThoughtContent = memo(\n ({ className, children, ...props }: ChainOfThoughtContentProps) => {\n const { isOpen } = useChainOfThought();\n\n return (\n <Collapsible open={isOpen}>\n <CollapsibleContent\n className={cn(\n \"mt-2 space-y-3\",\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n }\n);\n\nexport type ChainOfThoughtImageProps = ComponentProps<\"div\"> & {\n caption?: string;\n};\n\nexport const ChainOfThoughtImage = memo(\n ({ className, children, caption, ...props }: ChainOfThoughtImageProps) => (\n <div className={cn(\"mt-2 space-y-2\", className)} {...props}>\n <div className=\"relative flex max-h-[22rem] items-center justify-center overflow-hidden rounded-lg bg-muted p-3\">\n {children}\n </div>\n {caption && <p className=\"text-muted-foreground text-xs\">{caption}</p>}\n </div>\n )\n);\n\nChainOfThought.displayName = \"ChainOfThought\";\nChainOfThoughtHeader.displayName = \"ChainOfThoughtHeader\";\nChainOfThoughtStep.displayName = \"ChainOfThoughtStep\";\nChainOfThoughtSearchResults.displayName = \"ChainOfThoughtSearchResults\";\nChainOfThoughtSearchResult.displayName = \"ChainOfThoughtSearchResult\";\nChainOfThoughtContent.displayName = \"ChainOfThoughtContent\";\nChainOfThoughtImage.displayName = \"ChainOfThoughtImage\";\n","\"use client\";\n\nimport { Alert, AlertDescription } from \"../ui/alert\";\nimport { Button } from \"../ui/button\";\nimport { cn } from \"../core/utils\";\nimport type { ToolUIPart } from \"ai\";\nimport {\n type ComponentProps,\n createContext,\n type ReactNode,\n useContext,\n} from \"react\";\n\ntype ToolUIPartApproval =\n | {\n id: string;\n approved?: never;\n reason?: never;\n }\n | {\n id: string;\n approved: boolean;\n reason?: string;\n }\n | {\n id: string;\n approved: true;\n reason?: string;\n }\n | {\n id: string;\n approved: true;\n reason?: string;\n }\n | {\n id: string;\n approved: false;\n reason?: string;\n }\n | undefined;\n\ntype ConfirmationContextValue = {\n approval: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nconst ConfirmationContext = createContext<ConfirmationContextValue | null>(\n null\n);\n\nconst useConfirmation = () => {\n const context = useContext(ConfirmationContext);\n\n if (!context) {\n throw new Error(\"Confirmation components must be used within Confirmation\");\n }\n\n return context;\n};\n\nexport type ConfirmationProps = ComponentProps<typeof Alert> & {\n approval?: ToolUIPartApproval;\n state: ToolUIPart[\"state\"];\n};\n\nexport const Confirmation = ({\n className,\n approval,\n state,\n ...props\n}: ConfirmationProps) => {\n if (!approval || state === \"input-streaming\" || state === \"input-available\") {\n return null;\n }\n\n return (\n <ConfirmationContext.Provider value={{ approval, state }}>\n <Alert className={cn(\"flex flex-col gap-2\", className)} {...props} />\n </ConfirmationContext.Provider>\n );\n};\n\nexport type ConfirmationTitleProps = ComponentProps<typeof AlertDescription>;\n\nexport const ConfirmationTitle = ({\n className,\n ...props\n}: ConfirmationTitleProps) => (\n <AlertDescription className={cn(\"inline\", className)} {...props} />\n);\n\nexport type ConfirmationRequestProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRequest = ({ children }: ConfirmationRequestProps) => {\n const { state } = useConfirmation();\n\n if ((state as string) !== \"approval-requested\") {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationAcceptedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationAccepted = ({\n children,\n}: ConfirmationAcceptedProps) => {\n const { approval, state } = useConfirmation();\n\n if (\n !approval?.approved ||\n ((state as string) !== \"approval-responded\" &&\n (state as string) !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationRejectedProps = {\n children?: ReactNode;\n};\n\nexport const ConfirmationRejected = ({\n children,\n}: ConfirmationRejectedProps) => {\n const { approval, state } = useConfirmation();\n\n if (\n approval?.approved !== false ||\n ((state as string) !== \"approval-responded\" &&\n (state as string) !== \"output-denied\" &&\n state !== \"output-available\")\n ) {\n return null;\n }\n\n return children;\n};\n\nexport type ConfirmationActionsProps = ComponentProps<\"div\">;\n\nexport const ConfirmationActions = ({\n className,\n ...props\n}: ConfirmationActionsProps) => {\n const { state } = useConfirmation();\n\n if ((state as string) !== \"approval-requested\") {\n return null;\n }\n\n return (\n <div\n className={cn(\"flex items-center justify-end gap-2 self-end\", className)}\n {...props}\n />\n );\n};\n\nexport type ConfirmationActionProps = ComponentProps<typeof Button>;\n\nexport const ConfirmationAction = (props: ConfirmationActionProps) => (\n <Button className=\"h-8 px-3 text-sm\" type=\"button\" {...props} />\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { Controls as ControlsPrimitive } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\nexport type ControlsProps = ComponentProps<typeof ControlsPrimitive>;\n\nexport const Controls = ({ className, ...props }: ControlsProps) => (\n <ControlsPrimitive\n className={cn(\n \"gap-px overflow-hidden rounded-md border bg-card p-1 shadow-none!\",\n \"[&>button]:rounded-md [&>button]:border-none! [&>button]:bg-transparent! [&>button]:hover:bg-secondary!\",\n className\n )}\n {...props}\n />\n);\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"../core/utils\"\nimport { Dialog, DialogContent } from \"./dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","\"use client\";\n\nimport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n} from \"../ui/command\";\nimport {\n Dialog,\n DialogContent,\n DialogTitle,\n DialogTrigger,\n} from \"../ui/dialog\";\nimport { cn } from \"../core/utils\";\nimport type { ComponentProps, ReactNode } from \"react\";\n\nexport type ModelSelectorProps = ComponentProps<typeof Dialog>;\n\nexport const ModelSelector = (props: ModelSelectorProps) => (\n <Dialog {...props} />\n);\n\nexport type ModelSelectorTriggerProps = ComponentProps<typeof DialogTrigger>;\n\nexport const ModelSelectorTrigger = (props: ModelSelectorTriggerProps) => (\n <DialogTrigger {...props} />\n);\n\nexport type ModelSelectorContentProps = ComponentProps<typeof DialogContent> & {\n title?: ReactNode;\n};\n\nexport const ModelSelectorContent = ({\n className,\n children,\n title = \"Model Selector\",\n ...props\n}: ModelSelectorContentProps) => (\n <DialogContent className={cn(\"p-0\", className)} {...props}>\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <Command className=\"**:data-[slot=command-input-wrapper]:h-auto\">\n {children}\n </Command>\n </DialogContent>\n);\n\nexport type ModelSelectorDialogProps = ComponentProps<typeof CommandDialog>;\n\nexport const ModelSelectorDialog = (props: ModelSelectorDialogProps) => (\n <CommandDialog {...props} />\n);\n\nexport type ModelSelectorInputProps = ComponentProps<typeof CommandInput>;\n\nexport const ModelSelectorInput = ({\n className,\n ...props\n}: ModelSelectorInputProps) => (\n <CommandInput className={cn(\"h-auto py-3.5\", className)} {...props} />\n);\n\nexport type ModelSelectorListProps = ComponentProps<typeof CommandList>;\n\nexport const ModelSelectorList = (props: ModelSelectorListProps) => (\n <CommandList {...props} />\n);\n\nexport type ModelSelectorEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const ModelSelectorEmpty = (props: ModelSelectorEmptyProps) => (\n <CommandEmpty {...props} />\n);\n\nexport type ModelSelectorGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const ModelSelectorGroup = (props: ModelSelectorGroupProps) => (\n <CommandGroup {...props} />\n);\n\nexport type ModelSelectorItemProps = ComponentProps<typeof CommandItem>;\n\nexport const ModelSelectorItem = (props: ModelSelectorItemProps) => (\n <CommandItem {...props} />\n);\n\nexport type ModelSelectorShortcutProps = ComponentProps<typeof CommandShortcut>;\n\nexport const ModelSelectorShortcut = (props: ModelSelectorShortcutProps) => (\n <CommandShortcut {...props} />\n);\n\nexport type ModelSelectorSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const ModelSelectorSeparator = (props: ModelSelectorSeparatorProps) => (\n <CommandSeparator {...props} />\n);\n\nexport type ModelSelectorLogoProps = Omit<\n ComponentProps<\"img\">,\n \"src\" | \"alt\"\n> & {\n provider: string;\n};\n\nexport const ModelSelectorLogo = ({\n provider,\n className,\n ...props\n}: ModelSelectorLogoProps) => (\n <img\n {...props}\n alt={`${provider} logo`}\n className={cn(\"size-3 dark:invert\", className)}\n height={12}\n src={`https://models.dev/logos/${provider}.svg`}\n width={12}\n />\n);\n\nexport type ModelSelectorLogoGroupProps = ComponentProps<\"div\">;\n\nexport const ModelSelectorLogoGroup = ({\n className,\n ...props\n}: ModelSelectorLogoGroupProps) => (\n <div\n className={cn(\n \"-space-x-1 flex shrink-0 items-center [&>img]:rounded-full [&>img]:bg-background [&>img]:p-px [&>img]:ring-1 dark:[&>img]:bg-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type ModelSelectorNameProps = ComponentProps<\"span\">;\n\nexport const ModelSelectorName = ({\n className,\n ...props\n}: ModelSelectorNameProps) => (\n <span className={cn(\"flex-1 truncate text-start\", className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { cn } from \"../core/utils\";\nimport {\n ChevronDownIcon,\n ExternalLinkIcon,\n MessageCircleIcon,\n} from \"lucide-react\";\nimport { type ComponentProps, createContext, useContext } from \"react\";\n\nconst providers = {\n github: {\n title: \"Open in GitHub\",\n createUrl: (url: string) => url,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 24 24\">\n <title>GitHub</title>\n <path d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\" />\n </svg>\n ),\n },\n chatgpt: {\n title: \"Open in ChatGPT\",\n createUrl: (prompt: string) =>\n `https://chatgpt.com/?${new URLSearchParams({\n hints: \"search\",\n prompt,\n })}`,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>OpenAI</title>\n <path d=\"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729z\" />\n </svg>\n ),\n },\n claude: {\n title: \"Open in Claude\",\n createUrl: (q: string) =>\n `https://claude.ai/new?${new URLSearchParams({ q })}`,\n icon: (\n <svg fill=\"currentColor\" role=\"img\" viewBox=\"0 0 12 12\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Claude</title>\n </svg>\n ),\n },\n t3: {\n title: \"Open in T3 Chat\",\n createUrl: (q: string) =>\n `https://t3.chat/new?${new URLSearchParams({ q })}`,\n icon: <MessageCircleIcon />,\n },\n scira: {\n title: \"Open in Scira\",\n createUrl: (q: string) =>\n `https://scira.ai/?${new URLSearchParams({ q })}`,\n icon: (<svg viewBox=\"0 0 910 934\" xmlns=\"http://www.w3.org/2000/svg\"><title>Scira AI</title></svg>),\n },\n v0: {\n title: \"Open in v0\",\n createUrl: (q: string) =>\n `https://v0.app?${new URLSearchParams({ q })}`,\n icon: (\n <svg fill=\"currentColor\" viewBox=\"0 0 147 70\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>v0</title>\n <path d=\"M56 50.2031V14H70V60.1562C70 65.5928 65.5928 70 60.1562 70C57.5605 70 54.9982 68.9992 53.1562 67.1573L0 14H19.7969L56 50.2031Z\" />\n <path d=\"M147 56H133V23.9531L100.953 56H133V70H96.6875C85.8144 70 77 61.1856 77 50.3125V14H91V46.1562L123.156 14H91V0H127.312C138.186 0 147 8.81439 147 19.6875V56Z\" />\n </svg>\n ),\n },\n cursor: {\n title: \"Open in Cursor\",\n createUrl: (text: string) => {\n if (typeof window === \"undefined\") return `https://cursor.com/link/prompt?text=${encodeURIComponent(text)}`;\n const url = new URL(\"https://cursor.com/link/prompt\");\n url.searchParams.set(\"text\", text);\n return url.toString();\n },\n icon: (\n <svg version=\"1.1\" viewBox=\"0 0 466.73 532.09\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Cursor</title>\n </svg>\n ),\n },\n};\n\nconst OpenInContext = createContext<{ query: string } | undefined>(undefined);\n\nconst useOpenInContext = () => {\n const context = useContext(OpenInContext);\n if (!context) {\n throw new Error(\"OpenIn components must be used within an OpenIn provider\");\n }\n return context;\n};\n\nexport type OpenInProps = ComponentProps<typeof DropdownMenu> & {\n query: string;\n};\n\nexport const OpenIn = ({ query, ...props }: OpenInProps) => (\n <OpenInContext.Provider value={{ query }}>\n <DropdownMenu {...props} />\n </OpenInContext.Provider>\n);\n\nexport type OpenInContentProps = ComponentProps<typeof DropdownMenuContent>;\n\nexport const OpenInContent = ({ className, ...props }: OpenInContentProps) => (\n <DropdownMenuContent\n align=\"start\"\n className={cn(\"w-[240px]\", className)}\n {...props}\n />\n);\n\nexport type OpenInItemProps = ComponentProps<typeof DropdownMenuItem>;\n\nexport const OpenInItem = (props: OpenInItemProps) => (\n <DropdownMenuItem {...props} />\n);\n\nexport type OpenInLabelProps = ComponentProps<typeof DropdownMenuLabel>;\n\nexport const OpenInLabel = (props: OpenInLabelProps) => (\n <DropdownMenuLabel {...props} />\n);\n\nexport type OpenInSeparatorProps = ComponentProps<typeof DropdownMenuSeparator>;\n\nexport const OpenInSeparator = (props: OpenInSeparatorProps) => (\n <DropdownMenuSeparator {...props} />\n);\n\nexport type OpenInTriggerProps = ComponentProps<typeof DropdownMenuTrigger>;\n\nexport const OpenInTrigger = ({ children, ...props }: OpenInTriggerProps) => (\n <DropdownMenuTrigger {...props} asChild>\n {children ?? (\n <Button type=\"button\" variant=\"outline\">\n Open in chat\n <ChevronDownIcon className=\"size-4\" />\n </Button>\n )}\n </DropdownMenuTrigger>\n);\n\nconst makeProviderItem = (key: keyof typeof providers) => {\n return (props: ComponentProps<typeof DropdownMenuItem>) => {\n const { query } = useOpenInContext();\n const p = providers[key];\n return (\n <DropdownMenuItem asChild {...props}>\n <a\n className=\"flex items-center gap-2\"\n href={p.createUrl(query)}\n rel=\"noopener\"\n target=\"_blank\"\n >\n <span className=\"shrink-0\">{p.icon}</span>\n <span className=\"flex-1\">{p.title}</span>\n <ExternalLinkIcon className=\"size-4 shrink-0\" />\n </a>\n </DropdownMenuItem>\n );\n };\n};\n\nexport const OpenInChatGPT = makeProviderItem(\"chatgpt\");\nexport const OpenInClaude = makeProviderItem(\"claude\");\nexport const OpenInT3 = makeProviderItem(\"t3\");\nexport const OpenInScira = makeProviderItem(\"scira\");\nexport const OpenInv0 = makeProviderItem(\"v0\");\nexport const OpenInCursor = makeProviderItem(\"cursor\");\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { Panel as PanelPrimitive } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\ntype PanelProps = ComponentProps<typeof PanelPrimitive>;\n\nexport const Panel = ({ className, ...props }: PanelProps) => (\n <PanelPrimitive\n className={cn(\n \"m-4 overflow-hidden rounded-md border bg-card p-1\",\n className\n )}\n {...props}\n />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../ui/card\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { ChevronsUpDownIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { createContext, useContext } from \"react\";\nimport { Shimmer } from \"./shimmer\";\n\ntype PlanContextValue = {\n isStreaming: boolean;\n};\n\nconst PlanContext = createContext<PlanContextValue | null>(null);\n\nconst usePlan = () => {\n const context = useContext(PlanContext);\n if (!context) {\n throw new Error(\"Plan components must be used within Plan\");\n }\n return context;\n};\n\nexport type PlanProps = ComponentProps<typeof Collapsible> & {\n isStreaming?: boolean;\n};\n\nexport const Plan = ({\n className,\n isStreaming = false,\n children,\n ...props\n}: PlanProps) => (\n <PlanContext.Provider value={{ isStreaming }}>\n <Collapsible asChild data-slot=\"plan\" {...props}>\n <Card className={cn(\"shadow-none\", className)}>{children}</Card>\n </Collapsible>\n </PlanContext.Provider>\n);\n\nexport type PlanHeaderProps = ComponentProps<typeof CardHeader>;\n\nexport const PlanHeader = ({ className, ...props }: PlanHeaderProps) => (\n <CardHeader\n className={cn(\"flex items-start justify-between\", className)}\n data-slot=\"plan-header\"\n {...props}\n />\n);\n\nexport type PlanTitleProps = Omit<\n ComponentProps<typeof CardTitle>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanTitle = ({ children, ...props }: PlanTitleProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardTitle data-slot=\"plan-title\" {...props}>\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardTitle>\n );\n};\n\nexport type PlanDescriptionProps = Omit<\n ComponentProps<typeof CardDescription>,\n \"children\"\n> & {\n children: string;\n};\n\nexport const PlanDescription = ({\n className,\n children,\n ...props\n}: PlanDescriptionProps) => {\n const { isStreaming } = usePlan();\n\n return (\n <CardDescription\n className={cn(\"text-balance\", className)}\n data-slot=\"plan-description\"\n {...props}\n >\n {isStreaming ? <Shimmer>{children}</Shimmer> : children}\n </CardDescription>\n );\n};\n\nexport type PlanActionProps = ComponentProps<typeof CardAction>;\n\nexport const PlanAction = (props: PlanActionProps) => (\n <CardAction data-slot=\"plan-action\" {...props} />\n);\n\nexport type PlanContentProps = ComponentProps<typeof CardContent>;\n\nexport const PlanContent = (props: PlanContentProps) => (\n <CollapsibleContent asChild>\n <CardContent data-slot=\"plan-content\" {...props} />\n </CollapsibleContent>\n);\n\nexport type PlanFooterProps = ComponentProps<\"div\">;\n\nexport const PlanFooter = (props: PlanFooterProps) => (\n <CardFooter data-slot=\"plan-footer\" {...props} />\n);\n\nexport type PlanTriggerProps = ComponentProps<typeof CollapsibleTrigger>;\n\nexport const PlanTrigger = ({ className, ...props }: PlanTriggerProps) => (\n <CollapsibleTrigger asChild>\n <Button\n className={cn(\"size-8\", className)}\n data-slot=\"plan-trigger\"\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n <ChevronsUpDownIcon className=\"size-4\" />\n <span className=\"sr-only\">Toggle plan</span>\n </Button>\n </CollapsibleTrigger>\n);\n","\"use client\";\n\nimport * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../core/utils\"\nimport { Button } from \"./button\"\nimport { Input } from \"./input\"\nimport { Textarea } from \"./textarea\"\n\nfunction InputGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"input-group\"\n role=\"group\"\n className={cn(\n \" shadow-xs relative flex w-full items-center rounded-md outline-none transition-[color,box-shadow]\",\n \"h-9 has-[>textarea]:h-auto\",\n\n // Variants based on alignment.\n \"has-[>[data-align=inline-start]]:[&>input]:pl-2\",\n \"has-[>[data-align=inline-end]]:[&>input]:pr-2\",\n \"has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3\",\n \"has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3\",\n\n // Focus state.\n \"has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1\",\n\n // Error state.\n \"has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40\",\n\n className\n )}\n {...props}\n />\n )\n}\n\nconst inputGroupAddonVariants = cva(\n \"text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n align: {\n \"inline-start\":\n \"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]\",\n \"inline-end\":\n \"order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]\",\n \"block-start\":\n \"[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5\",\n \"block-end\":\n \"[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5\",\n },\n },\n defaultVariants: {\n align: \"inline-start\",\n },\n }\n)\n\nfunction InputGroupAddon({\n className,\n align = \"inline-start\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof inputGroupAddonVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={(e) => {\n if ((e.target as HTMLElement).closest(\"button\")) {\n return\n }\n e.currentTarget.parentElement?.querySelector(\"input\")?.focus()\n }}\n {...props}\n />\n )\n}\n\nconst inputGroupButtonVariants = cva(\n \"flex items-center gap-2 text-sm shadow-none\",\n {\n variants: {\n size: {\n xs: \"h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5\",\n sm: \"h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5\",\n \"icon-xs\":\n \"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0\",\n \"icon-sm\": \"size-8 p-0 has-[>svg]:p-0\",\n },\n },\n defaultVariants: {\n size: \"xs\",\n },\n }\n)\n\nfunction InputGroupButton({\n className,\n type = \"button\",\n variant = \"ghost\",\n size = \"xs\",\n ...props\n}: Omit<React.ComponentProps<typeof Button>, \"size\"> &\n VariantProps<typeof inputGroupButtonVariants>) {\n return (\n <Button\n type={type}\n data-size={size}\n variant={variant}\n className={cn(inputGroupButtonVariants({ size }), className)}\n {...props}\n />\n )\n}\n\nfunction InputGroupText({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n className={cn(\n \"text-muted-foreground flex items-center gap-2 text-sm [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupInput({\n className,\n ...props\n}: React.ComponentProps<\"input\">) {\n return (\n <Input\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction InputGroupTextarea({\n className,\n ...props\n}: React.ComponentProps<\"textarea\">) {\n return (\n <Textarea\n data-slot=\"input-group-control\"\n className={cn(\n \"flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupText,\n InputGroupInput,\n InputGroupTextarea,\n}\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"../ui/command\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport {\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n} from \"../ui/hover-card\";\nimport {\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n} from \"../ui/input-group\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { cn } from \"../core/utils\";\nimport type { ChatStatus, FileUIPart } from \"ai\";\nimport {\n CornerDownLeftIcon,\n ImageIcon,\n Loader2Icon,\n MicIcon,\n PaperclipIcon,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from \"lucide-react\";\nimport { nanoid } from \"nanoid\";\nimport {\n type ChangeEvent,\n type ChangeEventHandler,\n Children,\n type ClipboardEventHandler,\n type ComponentProps,\n createContext,\n type FormEvent,\n type FormEventHandler,\n Fragment,\n type HTMLAttributes,\n type KeyboardEventHandler,\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport type AttachmentsContext = {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n};\n\nexport type TextInputContext = {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n};\n\nexport type PromptInputControllerProps = {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void\n ) => void;\n};\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use usePromptInputController().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n \"Wrap your component inside <PromptInputProvider> to use useProviderAttachments().\"\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\nexport function PromptInputProvider({\n initialInput: initialTextInput = \"\",\n children,\n}: PromptInputProviderProps) {\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(\"\"), []);\n\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const openRef = useRef<() => void>(() => {});\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = Array.from(files);\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) =>\n prev.concat(\n incoming.map((file) => ({\n id: nanoid(),\n type: \"file\" as const,\n url: typeof window !== \"undefined\" ? URL.createObjectURL(file) : \"\",\n mediaType: file.type,\n filename: file.name,\n }))\n )\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url && typeof window !== \"undefined\") {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n if (typeof window !== \"undefined\") {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n return [];\n });\n }, []);\n\n const attachmentsRef = useRef(attachmentFiles);\n attachmentsRef.current = attachmentFiles;\n\n useEffect(() => {\n return () => {\n if (typeof window !== \"undefined\") {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n }\n };\n }, []);\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n files: attachmentFiles,\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog]\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n []\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n textInput: {\n value: textInput,\n setInput: setTextInput,\n clear: clearInput,\n },\n attachments,\n __registerFileInput,\n }),\n [textInput, clearInput, attachments, __registerFileInput]\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n}\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = provider ?? local;\n if (!context) {\n throw new Error(\n \"usePromptInputAttachments must be used within a PromptInput or PromptInputProvider\"\n );\n }\n return context;\n};\n\nexport type PromptInputAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart & { id: string };\n className?: string;\n};\n\nexport function PromptInputAttachment({\n data,\n className,\n ...props\n}: PromptInputAttachmentProps) {\n const attachments = usePromptInputAttachments();\n\n const filename = data.filename || \"\";\n\n const mediaType =\n data.mediaType?.startsWith(\"image/\") && data.url ? \"image\" : \"file\";\n const isImage = mediaType === \"image\";\n\n const attachmentLabel = filename || (isImage ? \"Image\" : \"Attachment\");\n\n return (\n <PromptInputHoverCard>\n <HoverCardTrigger asChild>\n <div\n className={cn(\n \"group relative flex h-8 cursor-pointer select-none items-center gap-1.5 rounded-md border border-border px-1.5 font-medium text-sm transition-all hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n className\n )}\n key={data.id}\n {...props}\n >\n <div className=\"relative size-5 shrink-0\">\n <div className=\"absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded bg-background transition-opacity group-hover:opacity-0\">\n {isImage ? (\n <img\n alt={filename || \"attachment\"}\n className=\"size-5 object-cover\"\n height={20}\n src={data.url}\n width={20}\n />\n ) : (\n <div className=\"flex size-5 items-center justify-center text-muted-foreground\">\n <PaperclipIcon className=\"size-3\" />\n </div>\n )}\n </div>\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5\"\n onClick={(e) => {\n e.stopPropagation();\n attachments.remove(data.id);\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n </div>\n\n <span className=\"flex-1 truncate\">{attachmentLabel}</span>\n </div>\n </HoverCardTrigger>\n <PromptInputHoverCardContent className=\"w-auto p-2\">\n <div className=\"w-auto space-y-3\">\n {isImage && (\n <div className=\"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border\">\n <img\n alt={filename || \"attachment preview\"}\n className=\"max-h-full max-w-full object-contain\"\n height={384}\n src={data.url}\n width={448}\n />\n </div>\n )}\n <div className=\"flex items-center gap-2.5\">\n <div className=\"min-w-0 flex-1 space-y-1 px-0.5\">\n <h4 className=\"truncate font-semibold text-sm leading-none\">\n {filename || (isImage ? \"Image\" : \"Attachment\")}\n </h4>\n {data.mediaType && (\n <p className=\"truncate font-mono text-muted-foreground text-xs\">\n {data.mediaType}\n </p>\n )}\n </div>\n </div>\n </div>\n </PromptInputHoverCardContent>\n </PromptInputHoverCard>\n );\n}\n\nexport type PromptInputAttachmentsProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> & {\n children: (attachment: FileUIPart & { id: string }) => ReactNode;\n};\n\nexport function PromptInputAttachments({\n children,\n className,\n ...props\n}: PromptInputAttachmentsProps) {\n const attachments = usePromptInputAttachments();\n\n if (!attachments.files.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\"flex flex-wrap items-center gap-2 p-3 w-full\", className)}\n {...props}\n >\n {attachments.files.map((file) => (\n <Fragment key={file.id}>{children(file)}</Fragment>\n ))}\n </div>\n );\n}\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = \"Add photos or files\",\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n return (\n <DropdownMenuItem\n {...props}\n onSelect={(e) => {\n e.preventDefault();\n attachments.openFileDialog();\n }}\n >\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputMessage = {\n text: string;\n files: FileUIPart[];\n};\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n \"onSubmit\" | \"onError\"\n> & {\n accept?: string;\n multiple?: boolean;\n globalDrop?: boolean;\n syncHiddenInput?: boolean;\n maxFiles?: number;\n maxFileSize?: number;\n onError?: (err: {\n code: \"max_files\" | \"max_file_size\" | \"accept\";\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n const filesRef = useRef(files);\n filesRef.current = files;\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === \"\") {\n return true;\n }\n\n const patterns = accept\n .split(\",\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith(\"/*\")) {\n const prefix = pattern.slice(0, -1);\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept]\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = Array.from(fileList);\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: \"accept\",\n message: \"No files match the accepted types.\",\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: \"max_file_size\",\n message: \"All files exceed the maximum size.\",\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === \"number\"\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === \"number\" ? sized.slice(0, capacity) : sized;\n if (typeof capacity === \"number\" && sized.length > capacity) {\n onError?.({\n code: \"max_files\",\n message: \"Too many files. Some were not added.\",\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n id: nanoid(),\n type: \"file\",\n url: typeof window !== \"undefined\" ? URL.createObjectURL(file) : \"\",\n mediaType: file.type,\n filename: file.name,\n });\n }\n return prev.concat(next);\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError]\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url && typeof window !== \"undefined\") {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n []\n );\n\n const clearLocal = useCallback(\n () =>\n setItems((prev) => {\n if (typeof window !== \"undefined\") {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n }\n return [];\n }),\n []\n );\n\n const add = usingProvider ? controller.attachments.add : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const clear = usingProvider ? controller.attachments.clear : clearLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n useEffect(() => {\n if (!usingProvider) return;\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = \"\";\n }\n }, [files, syncHiddenInput]);\n\n useEffect(() => {\n const form = formRef.current;\n if (!form) return;\n if (globalDrop) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n form.addEventListener(\"dragover\", onDragOver);\n form.addEventListener(\"drop\", onDrop);\n return () => {\n form.removeEventListener(\"dragover\", onDragOver);\n form.removeEventListener(\"drop\", onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(() => {\n if (!globalDrop) return;\n if (typeof document === \"undefined\") return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes(\"Files\")) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n document.addEventListener(\"dragover\", onDragOver);\n document.addEventListener(\"drop\", onDrop);\n return () => {\n document.removeEventListener(\"dragover\", onDragOver);\n document.removeEventListener(\"drop\", onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(\n () => () => {\n if (!usingProvider && typeof window !== \"undefined\") {\n for (const f of filesRef.current) {\n if (f.url) URL.revokeObjectURL(f.url);\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [usingProvider]\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n event.currentTarget.value = \"\";\n };\n\n const convertBlobUrlToDataUrl = async (\n url: string\n ): Promise<string | null> => {\n if (typeof window === \"undefined\") return null;\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n };\n\n const ctx = useMemo<AttachmentsContext>(\n () => ({\n files: files.map((item) => ({ ...item, id: item.id })),\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef: inputRef,\n }),\n [files, add, remove, clear, openFileDialog]\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n return (formData.get(\"message\") as string) || \"\";\n })();\n\n if (!usingProvider) {\n form.reset();\n }\n\n Promise.all(\n files.map(async ({ id, ...item }) => {\n if (item.url && item.url.startsWith(\"blob:\")) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n })\n )\n .then((convertedFiles: FileUIPart[]) => {\n try {\n const result = onSubmit({ text, files: convertedFiles }, event);\n\n if (result instanceof Promise) {\n result\n .then(() => {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n })\n .catch(() => {});\n } else {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {}\n })\n .catch(() => {});\n };\n\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn(\"w-full\", className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"overflow-hidden\">{children}</InputGroup>\n </form>\n </>\n );\n\n return usingProvider ? (\n inner\n ) : (\n <LocalAttachmentsContext.Provider value={ctx}>\n {inner}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn(\"contents\", className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = \"What would you like to know?\",\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (e) => {\n if (e.key === \"Enter\") {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n const form = e.currentTarget.form;\n const submitButton = form?.querySelector(\n 'button[type=\"submit\"]'\n ) as HTMLButtonElement | null;\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n if (\n e.key === \"Backspace\" &&\n e.currentTarget.value === \"\" &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files.at(-1);\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n };\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === \"file\") {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n };\n\n const controlledProps = controller\n ? {\n value: controller.textInput.value,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn(\"field-sizing-content max-h-48 min-h-16\", className)}\n name=\"message\"\n onCompositionEnd={() => setIsComposing(false)}\n onCompositionStart={() => setIsComposing(true)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"order-first flex-wrap gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n \"align\"\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn(\"justify-between gap-1\", className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div className={cn(\"flex items-center gap-1\", className)} {...props} />\n);\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton>;\n\nexport const PromptInputButton = ({\n variant = \"ghost\",\n className,\n size,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? \"sm\" : \"icon-sm\");\n\n return (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n ...props\n}: PromptInputActionMenuTriggerProps) => (\n <DropdownMenuTrigger asChild>\n <PromptInputButton className={className} {...props}>\n {children ?? <PlusIcon className=\"size-4\" />}\n </PromptInputButton>\n </DropdownMenuTrigger>\n);\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = \"default\",\n size = \"icon-sm\",\n status,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === \"submitted\") {\n Icon = <Loader2Icon className=\"size-4 animate-spin\" />;\n } else if (status === \"streaming\") {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === \"error\") {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n return (\n <InputGroupButton\n aria-label=\"Submit\"\n className={cn(className)}\n size={size}\n type=\"submit\"\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n start(): void;\n stop(): void;\n onstart: ((this: SpeechRecognition, ev: Event) => any) | null;\n onend: ((this: SpeechRecognition, ev: Event) => any) | null;\n onresult:\n | ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => any)\n | null;\n onerror:\n | ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => any)\n | null;\n}\n\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n resultIndex: number;\n}\n\ntype SpeechRecognitionResultList = {\n readonly length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n};\n\ntype SpeechRecognitionResult = {\n readonly length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n};\n\ntype SpeechRecognitionAlternative = {\n transcript: string;\n confidence: number;\n};\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition: {\n new (): SpeechRecognition;\n };\n webkitSpeechRecognition: {\n new (): SpeechRecognition;\n };\n }\n}\n\nexport type PromptInputSpeechButtonProps = ComponentProps<\n typeof PromptInputButton\n> & {\n textareaRef?: RefObject<HTMLTextAreaElement | null>;\n onTranscriptionChange?: (text: string) => void;\n};\n\nexport const PromptInputSpeechButton = ({\n className,\n textareaRef,\n onTranscriptionChange,\n ...props\n}: PromptInputSpeechButtonProps) => {\n const [isListening, setIsListening] = useState(false);\n const [recognition, setRecognition] = useState<SpeechRecognition | null>(\n null\n );\n const recognitionRef = useRef<SpeechRecognition | null>(null);\n\n useEffect(() => {\n if (\n typeof window !== \"undefined\" &&\n (\"SpeechRecognition\" in window || \"webkitSpeechRecognition\" in window)\n ) {\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = true;\n speechRecognition.interimResults = true;\n speechRecognition.lang = \"en-US\";\n\n speechRecognition.onstart = () => {\n setIsListening(true);\n };\n\n speechRecognition.onend = () => {\n setIsListening(false);\n };\n\n speechRecognition.onresult = (event) => {\n let finalTranscript = \"\";\n\n for (let i = event.resultIndex; i < event.results.length; i++) {\n const result = event.results[i];\n if (result.isFinal) {\n finalTranscript += result[0]?.transcript ?? \"\";\n }\n }\n\n if (finalTranscript && textareaRef?.current) {\n const textarea = textareaRef.current;\n const currentValue = textarea.value;\n const newValue =\n currentValue + (currentValue ? \" \" : \"\") + finalTranscript;\n\n textarea.value = newValue;\n textarea.dispatchEvent(new Event(\"input\", { bubbles: true }));\n onTranscriptionChange?.(newValue);\n }\n };\n\n speechRecognition.onerror = (event) => {\n console.error(\"Speech recognition error:\", event.error);\n setIsListening(false);\n };\n\n recognitionRef.current = speechRecognition;\n setRecognition(speechRecognition);\n }\n\n return () => {\n if (recognitionRef.current) {\n recognitionRef.current.stop();\n }\n };\n }, [textareaRef, onTranscriptionChange]);\n\n const toggleListening = useCallback(() => {\n if (!recognition) {\n return;\n }\n\n if (isListening) {\n recognition.stop();\n } else {\n recognition.start();\n }\n }, [recognition, isListening]);\n\n return (\n <PromptInputButton\n className={cn(\n \"relative transition-all duration-200\",\n isListening && \"animate-pulse bg-accent text-accent-foreground\",\n className\n )}\n disabled={!recognition}\n onClick={toggleListening}\n {...props}\n >\n <MicIcon className=\"size-4\" />\n </PromptInputButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n \"border-none bg-transparent font-medium text-muted-foreground shadow-none transition-colors\",\n \"hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = ({\n openDelay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardProps) => (\n <HoverCard closeDelay={closeDelay} openDelay={openDelay} {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = (\n props: PromptInputHoverCardTriggerProps\n) => <HoverCardTrigger {...props} />;\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = \"start\",\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n \"mb-2 px-3 font-medium text-muted-foreground text-xs\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn(\"space-y-1\", className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n \"flex items-center gap-2 px-3 py-2 text-xs hover:bg-accent\",\n className\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon, PaperclipIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type QueueMessagePart = {\n type: string;\n text?: string;\n url?: string;\n filename?: string;\n mediaType?: string;\n};\n\nexport type QueueMessage = {\n id: string;\n parts: QueueMessagePart[];\n};\n\nexport type QueueTodo = {\n id: string;\n title: string;\n description?: string;\n status?: \"pending\" | \"completed\";\n};\n\nexport type QueueItemProps = ComponentProps<\"li\">;\n\nexport const QueueItem = ({ className, ...props }: QueueItemProps) => (\n <li\n className={cn(\n \"group flex flex-col gap-1 rounded-md px-3 py-1 text-sm transition-colors hover:bg-muted\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemIndicatorProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemIndicator = ({\n completed = false,\n className,\n ...props\n}: QueueItemIndicatorProps) => (\n <span\n className={cn(\n \"mt-0.5 inline-block size-2.5 rounded-full border\",\n completed\n ? \"border-muted-foreground/20 bg-muted-foreground/10\"\n : \"border-muted-foreground/50\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemContentProps = ComponentProps<\"span\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemContent = ({\n completed = false,\n className,\n ...props\n}: QueueItemContentProps) => (\n <span\n className={cn(\n \"line-clamp-1 grow break-words\",\n completed\n ? \"text-muted-foreground/50 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemDescriptionProps = ComponentProps<\"div\"> & {\n completed?: boolean;\n};\n\nexport const QueueItemDescription = ({\n completed = false,\n className,\n ...props\n}: QueueItemDescriptionProps) => (\n <div\n className={cn(\n \"ml-6 text-xs\",\n completed\n ? \"text-muted-foreground/40 line-through\"\n : \"text-muted-foreground\",\n className\n )}\n {...props}\n />\n);\n\nexport type QueueItemActionsProps = ComponentProps<\"div\">;\n\nexport const QueueItemActions = ({\n className,\n ...props\n}: QueueItemActionsProps) => (\n <div className={cn(\"flex gap-1\", className)} {...props} />\n);\n\nexport type QueueItemActionProps = Omit<\n ComponentProps<typeof Button>,\n \"variant\" | \"size\"\n>;\n\nexport const QueueItemAction = ({\n className,\n ...props\n}: QueueItemActionProps) => (\n <Button\n className={cn(\n \"size-auto rounded p-1 text-muted-foreground opacity-0 transition-opacity hover:bg-muted-foreground/10 hover:text-foreground group-hover:opacity-100\",\n className\n )}\n size=\"icon\"\n type=\"button\"\n variant=\"ghost\"\n {...props}\n />\n);\n\nexport type QueueItemAttachmentProps = ComponentProps<\"div\">;\n\nexport const QueueItemAttachment = ({\n className,\n ...props\n}: QueueItemAttachmentProps) => (\n <div className={cn(\"mt-1 flex flex-wrap gap-2\", className)} {...props} />\n);\n\nexport type QueueItemImageProps = ComponentProps<\"img\">;\n\nexport const QueueItemImage = ({\n className,\n ...props\n}: QueueItemImageProps) => (\n <img\n alt=\"\"\n className={cn(\"h-8 w-8 rounded border object-cover\", className)}\n height={32}\n width={32}\n {...props}\n />\n);\n\nexport type QueueItemFileProps = ComponentProps<\"span\">;\n\nexport const QueueItemFile = ({\n children,\n className,\n ...props\n}: QueueItemFileProps) => (\n <span\n className={cn(\n \"flex items-center gap-1 rounded border bg-muted px-2 py-1 text-xs\",\n className\n )}\n {...props}\n >\n <PaperclipIcon size={12} />\n <span className=\"max-w-[100px] truncate\">{children}</span>\n </span>\n);\n\nexport type QueueListProps = ComponentProps<typeof ScrollArea>;\n\nexport const QueueList = ({\n children,\n className,\n ...props\n}: QueueListProps) => (\n <ScrollArea className={cn(\"-mb-1 mt-2\", className)} {...props}>\n <div className=\"max-h-40 pr-4\">\n <ul>{children}</ul>\n </div>\n </ScrollArea>\n);\n\nexport type QueueSectionProps = ComponentProps<typeof Collapsible>;\n\nexport const QueueSection = ({\n className,\n defaultOpen = true,\n ...props\n}: QueueSectionProps) => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\nexport type QueueSectionTriggerProps = ComponentProps<\"button\">;\n\nexport const QueueSectionTrigger = ({\n children,\n className,\n ...props\n}: QueueSectionTriggerProps) => (\n <CollapsibleTrigger asChild>\n <button\n className={cn(\n \"group flex w-full items-center justify-between rounded-md bg-muted/40 px-3 py-2 text-start font-medium text-muted-foreground text-sm transition-colors hover:bg-muted\",\n className\n )}\n type=\"button\"\n {...props}\n >\n {children}\n </button>\n </CollapsibleTrigger>\n);\n\nexport type QueueSectionLabelProps = ComponentProps<\"span\"> & {\n count?: number;\n label: string;\n icon?: React.ReactNode;\n};\n\nexport const QueueSectionLabel = ({\n count,\n label,\n icon,\n className,\n ...props\n}: QueueSectionLabelProps) => (\n <span className={cn(\"flex items-center gap-2\", className)} {...props}>\n <ChevronDownIcon className=\"group-data-[state=closed]:-rotate-90 size-4 transition-transform\" />\n {icon}\n <span>\n {count} {label}\n </span>\n </span>\n);\n\nexport type QueueSectionContentProps = ComponentProps<\n typeof CollapsibleContent\n>;\n\nexport const QueueSectionContent = ({\n className,\n ...props\n}: QueueSectionContentProps) => (\n <CollapsibleContent className={cn(className)} {...props} />\n);\n\nexport type QueueProps = ComponentProps<\"div\">;\n\nexport const Queue = ({ className, ...props }: QueueProps) => (\n <div\n className={cn(\n \"flex flex-col gap-2 rounded-xl border border-border bg-background px-3 pt-2 pb-2 shadow-xs\",\n className\n )}\n {...props}\n />\n);\n","\"use client\";\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport { ChevronDownIcon, SearchIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\n\nexport type TaskItemFileProps = ComponentProps<\"div\">;\n\nexport const TaskItemFile = ({\n children,\n className,\n ...props\n}: TaskItemFileProps) => (\n <div\n className={cn(\n \"inline-flex items-center gap-1 rounded-md border bg-secondary px-1.5 py-0.5 text-foreground text-xs\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nexport type TaskItemProps = ComponentProps<\"div\">;\n\nexport const TaskItem = ({ children, className, ...props }: TaskItemProps) => (\n <div className={cn(\"text-muted-foreground text-sm\", className)} {...props}>\n {children}\n </div>\n);\n\nexport type TaskProps = ComponentProps<typeof Collapsible>;\n\nexport const Task = ({\n defaultOpen = true,\n className,\n ...props\n}: TaskProps) => (\n <Collapsible className={cn(className)} defaultOpen={defaultOpen} {...props} />\n);\n\nexport type TaskTriggerProps = ComponentProps<typeof CollapsibleTrigger> & {\n title: string;\n};\n\nexport const TaskTrigger = ({\n children,\n className,\n title,\n ...props\n}: TaskTriggerProps) => (\n <CollapsibleTrigger asChild className={cn(\"group\", className)} {...props}>\n {children ?? (\n <div className=\"flex w-full cursor-pointer items-center gap-2 text-muted-foreground text-sm transition-colors hover:text-foreground\">\n <SearchIcon className=\"size-4\" />\n <p className=\"text-sm\">{title}</p>\n <ChevronDownIcon className=\"size-4 transition-transform group-data-[state=open]:rotate-180\" />\n </div>\n )}\n </CollapsibleTrigger>\n);\n\nexport type TaskContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const TaskContent = ({\n children,\n className,\n ...props\n}: TaskContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n >\n <div className=\"mt-4 space-y-2 border-muted border-l-2 pl-4\">\n {children}\n </div>\n </CollapsibleContent>\n);\n","\"use client\";\n\nimport { Badge } from \"../ui/badge\";\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"../ui/collapsible\";\nimport { cn } from \"../core/utils\";\nimport type { ToolUIPart } from \"ai\";\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from \"lucide-react\";\nimport type { ComponentProps, ReactNode } from \"react\";\nimport { isValidElement } from \"react\";\nimport { CodeBlock } from \"./code-block\";\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn(\"not-prose mb-4 w-full rounded-md border\", className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n title?: string;\n type: ToolUIPart[\"type\"];\n state: ToolUIPart[\"state\"];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart[\"state\"]) => {\n const labels: Record<string, string> = {\n \"input-streaming\": \"Pending\",\n \"input-available\": \"Running\",\n \"approval-requested\": \"Awaiting Approval\",\n \"approval-responded\": \"Responded\",\n \"output-available\": \"Completed\",\n \"output-error\": \"Error\",\n \"output-denied\": \"Denied\",\n };\n\n const icons: Record<string, ReactNode> = {\n \"input-streaming\": <CircleIcon className=\"size-4\" />,\n \"input-available\": <ClockIcon className=\"size-4 animate-pulse\" />,\n \"approval-requested\": <ClockIcon className=\"size-4 text-yellow-600\" />,\n \"approval-responded\": <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n \"output-available\": <CheckCircleIcon className=\"size-4 text-green-600\" />,\n \"output-error\": <XCircleIcon className=\"size-4 text-red-600\" />,\n \"output-denied\": <XCircleIcon className=\"size-4 text-orange-600\" />,\n };\n\n return (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n \"flex w-full items-center justify-between gap-4 p-3\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"size-4 text-muted-foreground\" />\n <span className=\"font-medium text-sm\">\n {title ?? type.split(\"-\").slice(1).join(\"-\")}\n </span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"size-4 text-muted-foreground transition-transform group-data-[state=open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n \"data-[state=closed]:fade-out-0 data-[state=closed]:slide-out-to-top-2 data-[state=open]:slide-in-from-top-2 text-popover-foreground outline-none data-[state=closed]:animate-out data-[state=open]:animate-in\",\n className\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<\"div\"> & {\n input: ToolUIPart[\"input\"];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn(\"space-y-2 overflow-hidden p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n Parameters\n </h4>\n <div className=\"rounded-md bg-muted/50\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<\"div\"> & {\n output: ToolUIPart[\"output\"];\n errorText: ToolUIPart[\"errorText\"];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === \"object\" && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === \"string\") {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn(\"space-y-2 p-4\", className)} {...props}>\n <h4 className=\"font-medium text-muted-foreground text-xs uppercase tracking-wide\">\n {errorText ? \"Error\" : \"Result\"}\n </h4>\n <div\n className={cn(\n \"overflow-x-auto rounded-md text-xs [&_table]:w-full\",\n errorText\n ? \"bg-destructive/10 text-destructive\"\n : \"bg-muted/50 text-foreground\"\n )}\n >\n {errorText && <div>{errorText}</div>}\n {Output}\n </div>\n </div>\n );\n};\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport { NodeToolbar, Position } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\ntype ToolbarProps = ComponentProps<typeof NodeToolbar>;\n\nexport const Toolbar = ({ className, ...props }: ToolbarProps) => (\n <NodeToolbar\n className={cn(\n \"flex items-center gap-1 rounded-sm border bg-background p-1.5\",\n className\n )}\n position={Position.Bottom}\n {...props}\n />\n);\n","\"use client\";\n\nimport { Background, ReactFlow, type ReactFlowProps } from \"@xyflow/react\";\nimport type { ReactNode } from \"react\";\n// @ts-ignore - CSS import handled by bundler\nimport \"@xyflow/react/dist/style.css\";\n\ntype CanvasProps = ReactFlowProps & {\n children?: ReactNode;\n};\n\nexport const Canvas = ({ children, ...props }: CanvasProps) => (\n <ReactFlow\n deleteKeyCode={[\"Backspace\", \"Delete\"]}\n fitView\n panOnDrag={false}\n panOnScroll\n selectionOnDrag={true}\n zoomOnDoubleClick={false}\n {...props}\n >\n <Background bgColor=\"var(--ac-sidebar)\" />\n {children}\n </ReactFlow>\n);\n","\"use client\";\n\nimport { Button } from \"../ui/button\";\nimport { Separator } from \"../ui/separator\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../core/utils\";\nimport { BookmarkIcon, type LucideProps } from \"lucide-react\";\nimport type { ComponentProps, HTMLAttributes } from \"react\";\n\nexport type CheckpointProps = HTMLAttributes<HTMLDivElement>;\n\nexport const Checkpoint = ({\n className,\n children,\n ...props\n}: CheckpointProps) => (\n <div\n className={cn(\"flex items-center gap-0.5 text-muted-foreground overflow-hidden\", className)}\n {...props}\n >\n {children}\n <Separator />\n </div>\n);\n\nexport type CheckpointIconProps = LucideProps;\n\nexport const CheckpointIcon = ({\n className,\n children,\n ...props\n}: CheckpointIconProps) =>\n children ?? (\n <BookmarkIcon className={cn(\"size-4 shrink-0\", className)} {...props} />\n );\n\nexport type CheckpointTriggerProps = ComponentProps<typeof Button> & {\n tooltip?: string;\n};\n\nexport const CheckpointTrigger = ({\n children,\n className,\n variant = \"ghost\",\n size = \"sm\",\n tooltip,\n ...props\n}: CheckpointTriggerProps) =>\n tooltip ? (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n </Button>\n </TooltipTrigger>\n <TooltipContent align=\"start\" side=\"bottom\">\n {tooltip}\n </TooltipContent>\n </Tooltip>\n ) : (\n <Button size={size} type=\"button\" variant={variant} {...props}>\n {children}\n </Button>\n );\n","\"use client\";\n\nimport type { ConnectionLineComponent } from \"@xyflow/react\";\n\nconst HALF = 0.5;\n\nexport const Connection: ConnectionLineComponent = ({\n fromX,\n fromY,\n toX,\n toY,\n}) => (\n <g>\n <path\n className=\"animated\"\n d={`M${fromX},${fromY} C ${fromX + (toX - fromX) * HALF},${fromY} ${fromX + (toX - fromX) * HALF},${toY} ${toX},${toY}`}\n fill=\"none\"\n stroke=\"var(--ac-ring)\"\n strokeWidth={1}\n />\n <circle\n cx={toX}\n cy={toY}\n fill=\"#fff\"\n r={3}\n stroke=\"var(--ac-ring)\"\n strokeWidth={1}\n />\n </g>\n);\n","\"use client\";\n\nimport {\n BaseEdge,\n type EdgeProps,\n getBezierPath,\n getSimpleBezierPath,\n type InternalNode,\n type Node,\n Position,\n useInternalNode,\n} from \"@xyflow/react\";\n\nconst Temporary = ({\n id,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourcePosition,\n targetPosition,\n}: EdgeProps) => {\n const [edgePath] = getSimpleBezierPath({\n sourceX,\n sourceY,\n sourcePosition,\n targetX,\n targetY,\n targetPosition,\n });\n\n return (\n <BaseEdge\n className=\"stroke-1 stroke-ring\"\n id={id}\n path={edgePath}\n style={{\n strokeDasharray: \"5, 5\",\n }}\n />\n );\n};\n\nconst getHandleCoordsByPosition = (\n node: InternalNode<Node>,\n handlePosition: Position\n) => {\n const handleType = handlePosition === Position.Left ? \"target\" : \"source\";\n\n const handle = node.internals.handleBounds?.[handleType]?.find(\n (h) => h.position === handlePosition\n );\n\n if (!handle) {\n return [0, 0] as const;\n }\n\n let offsetX = handle.width / 2;\n let offsetY = handle.height / 2;\n\n switch (handlePosition) {\n case Position.Left:\n offsetX = 0;\n break;\n case Position.Right:\n offsetX = handle.width;\n break;\n case Position.Top:\n offsetY = 0;\n break;\n case Position.Bottom:\n offsetY = handle.height;\n break;\n default:\n throw new Error(`Invalid handle position: ${handlePosition}`);\n }\n\n const x = node.internals.positionAbsolute.x + handle.x + offsetX;\n const y = node.internals.positionAbsolute.y + handle.y + offsetY;\n\n return [x, y] as const;\n};\n\nconst getEdgeParams = (\n source: InternalNode<Node>,\n target: InternalNode<Node>\n) => {\n const sourcePos = Position.Right;\n const [sx, sy] = getHandleCoordsByPosition(source, sourcePos);\n const targetPos = Position.Left;\n const [tx, ty] = getHandleCoordsByPosition(target, targetPos);\n\n return {\n sx,\n sy,\n tx,\n ty,\n sourcePos,\n targetPos,\n };\n};\n\nconst Animated = ({ id, source, target, markerEnd, style }: EdgeProps) => {\n const sourceNode = useInternalNode(source);\n const targetNode = useInternalNode(target);\n\n if (!(sourceNode && targetNode)) {\n return null;\n }\n\n const { sx, sy, tx, ty, sourcePos, targetPos } = getEdgeParams(\n sourceNode,\n targetNode\n );\n\n const [edgePath] = getBezierPath({\n sourceX: sx,\n sourceY: sy,\n sourcePosition: sourcePos,\n targetX: tx,\n targetY: ty,\n targetPosition: targetPos,\n });\n\n return (\n <>\n <BaseEdge id={id} markerEnd={markerEnd} path={edgePath} style={style} />\n <circle fill=\"var(--ac-primary)\" r=\"4\">\n <animateMotion dur=\"2s\" path={edgePath} repeatCount=\"indefinite\" />\n </circle>\n </>\n );\n};\n\nexport const Edge = {\n Temporary,\n Animated,\n};\n","\"use client\";\n\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardTitle,\n} from \"../ui/card\";\nimport { cn } from \"../core/utils\";\nimport { Handle, Position } from \"@xyflow/react\";\nimport type { ComponentProps } from \"react\";\n\nexport type NodeProps = ComponentProps<typeof Card> & {\n handles: {\n target: boolean;\n source: boolean;\n };\n};\n\nexport const Node = ({ handles, className, ...props }: NodeProps) => (\n <Card\n className={cn(\n \"node-container relative size-full h-auto w-sm gap-0 rounded-md p-0\",\n className\n )}\n {...props}\n >\n {handles.target && <Handle position={Position.Left} type=\"target\" />}\n {handles.source && <Handle position={Position.Right} type=\"source\" />}\n {props.children}\n </Card>\n);\n\nexport type NodeHeaderProps = ComponentProps<typeof CardHeader>;\n\nexport const NodeHeader = ({ className, ...props }: NodeHeaderProps) => (\n <CardHeader\n className={cn(\"gap-0.5 rounded-t-md border-b bg-secondary p-3!\", className)}\n {...props}\n />\n);\n\nexport type NodeTitleProps = ComponentProps<typeof CardTitle>;\n\nexport const NodeTitle = (props: NodeTitleProps) => <CardTitle {...props} />;\n\nexport type NodeDescriptionProps = ComponentProps<typeof CardDescription>;\n\nexport const NodeDescription = (props: NodeDescriptionProps) => (\n <CardDescription {...props} />\n);\n\nexport type NodeActionProps = ComponentProps<typeof CardAction>;\n\nexport const NodeAction = (props: NodeActionProps) => <CardAction {...props} />;\n\nexport type NodeContentProps = ComponentProps<typeof CardContent>;\n\nexport const NodeContent = ({ className, ...props }: NodeContentProps) => (\n <CardContent className={cn(\"p-3\", className)} {...props} />\n);\n\nexport type NodeFooterProps = ComponentProps<typeof CardFooter>;\n\nexport const NodeFooter = ({ className, ...props }: NodeFooterProps) => (\n <CardFooter\n className={cn(\"rounded-b-md border-t bg-secondary p-3!\", className)}\n {...props}\n />\n);\n","\"use client\";\n\nimport { cn } from \"../core/utils\";\nimport type { Experimental_GeneratedImage } from \"ai\";\n\nexport type ImageProps = Experimental_GeneratedImage & {\n className?: string;\n alt?: string;\n};\n\nexport const Image = ({\n base64,\n uint8Array,\n mediaType,\n ...props\n}: ImageProps) => (\n <img\n {...props}\n alt={props.alt}\n className={cn(\n \"h-auto max-w-full overflow-hidden rounded-md\",\n props.className\n )}\n src={`data:${mediaType};base64,${base64}`}\n />\n);\n"]}
|