/** * @file components.d.ts * @description Type declarations for UI components used in the CLI project. * These declarations are necessary to resolve TypeScript build errors when the components * are installed in user projects through the CLI. * * This file provides type definitions for: * - Message component * - ThreadContent component * - MessageInput component * - MessageSuggestions component * - ThreadHistory component * - ThreadList component * - MessageGenerationStage component * - Tooltip component * - ThreadDropdown component * - ScrollableMessageContainer component * * These components are meant to be installed and used in end-user projects * through the CLI installation process. */ type ComponentVariant = "default" | "solid" | "bordered" | null | undefined; declare module "@/components/ui/message" { export interface MessageProps { className?: string; role: "user" | "assistant"; content?: string | { type: string; text?: string }[]; variant?: ComponentVariant; message: TamboThreadMessage; isLoading?: boolean; children?: React.ReactNode; } export interface MessageContentProps extends Omit, "content"> { content?: string | { type: string; text?: string }[]; } export interface MessageRenderedComponentAreaProps extends React.HTMLAttributes { enableCanvasSpace?: boolean; } export interface ToolcallInfoProps extends Omit, "content"> { /** Optional flag to render response content as Markdown. Default is true. */ markdown?: boolean; } export const Message: React.ForwardRefExoticComponent< MessageProps & React.RefAttributes >; export const MessageContent: React.ForwardRefExoticComponent< MessageContentProps & React.RefAttributes >; export const ToolcallInfo: React.ForwardRefExoticComponent< ToolcallInfoProps & React.RefAttributes >; export const MessageRenderedComponentArea: React.ForwardRefExoticComponent< MessageRenderedComponentAreaProps & React.RefAttributes >; export const messageVariants: { (props?: { variant?: "default" | "solid"; align?: "user" | "assistant"; }): string; variants: Record>; defaultVariants: Record; }; } declare module "@/components/ui/thread-content" { export interface ThreadContentProps extends React.HTMLAttributes { variant?: ComponentVariant; enableCanvasSpace?: boolean; } export interface ThreadContentRootProps extends React.HTMLAttributes { enableCanvasSpace?: boolean; variant?: ComponentVariant; children?: React.ReactNode; } export type ThreadContentMessagesProps = React.HTMLAttributes; export const ThreadContent: React.ForwardRefExoticComponent< ThreadContentProps & React.RefAttributes >; export const ThreadContentRoot: React.ForwardRefExoticComponent< ThreadContentRootProps & React.RefAttributes >; export const ThreadContentMessages: React.ForwardRefExoticComponent< ThreadContentMessagesProps & React.RefAttributes >; } declare module "@/components/ui/message-input" { export interface MessageInputProps extends React.HTMLAttributes { variant?: ComponentVariant; contextKey: string | undefined; } export interface MessageInputRootProps extends React.HTMLAttributes { contextKey?: string; variant?: ComponentVariant; children?: React.ReactNode; } export interface MessageInputTextareaProps extends React.TextareaHTMLAttributes { placeholder?: string; } export interface MessageInputSubmitButtonProps extends React.ButtonHTMLAttributes { children?: React.ReactNode; } export type MessageInputErrorProps = React.HTMLAttributes; export const MessageInput: React.ForwardRefExoticComponent< MessageInputProps & React.RefAttributes >; export const MessageInputRoot: React.ForwardRefExoticComponent< MessageInputRootProps & React.RefAttributes >; export const MessageInputTextarea: React.ForwardRefExoticComponent< MessageInputTextareaProps & React.RefAttributes >; export const MessageInputMcpConfigButton: React.ForwardRefExoticComponent< React.HTMLAttributes & React.RefAttributes >; export const MessageInputSubmitButton: React.ForwardRefExoticComponent< MessageInputSubmitButtonProps & React.RefAttributes >; export const MessageInputToolbar: React.ForwardRefExoticComponent< React.HTMLAttributes & React.RefAttributes >; export const MessageInputError: React.ForwardRefExoticComponent< MessageInputErrorProps & React.RefAttributes >; export const messageInputVariants: { (props?: { variant?: "default" | "solid" | "bordered" }): string; variants: Record>; defaultVariants: Record; }; } declare module "@/components/ui/message-suggestions" { export interface MessageSuggestionsProps extends React.HTMLAttributes { variant?: ComponentVariant; maxSuggestions?: number; initialSuggestions?: Suggestion[]; } export interface MessageSuggestionsRootProps extends React.HTMLAttributes { maxSuggestions?: number; children?: React.ReactNode; } export type MessageSuggestionsStatusProps = React.HTMLAttributes; export type MessageSuggestionsListProps = React.HTMLAttributes; export const MessageSuggestions: React.ForwardRefExoticComponent< MessageSuggestionsProps & React.RefAttributes >; export const MessageSuggestionsRoot: React.ForwardRefExoticComponent< MessageSuggestionsRootProps & React.RefAttributes >; export const MessageSuggestionsStatus: React.ForwardRefExoticComponent< MessageSuggestionsStatusProps & React.RefAttributes >; export const MessageSuggestionsList: React.ForwardRefExoticComponent< MessageSuggestionsListProps & React.RefAttributes >; } declare module "@/components/ui/markdown-components" { export const createMarkdownComponents: ( theme?: string, // eslint-disable-next-line @typescript-eslint/no-explicit-any ) => Record>; } declare module "@/components/ui/thread-history" { export interface ThreadHistoryProps extends React.HTMLAttributes { variant?: ComponentVariant; contextKey?: string | undefined; onThreadChange?: () => void; defaultCollapsed?: boolean; position?: "left" | "right"; } export const ThreadHistory: React.ForwardRefExoticComponent< ThreadHistoryProps & React.RefAttributes >; export const ThreadHistoryRoot: React.ForwardRefExoticComponent< ThreadHistoryRootProps & React.RefAttributes >; export const ThreadHistoryHeader: React.ForwardRefExoticComponent< ThreadHistoryHeaderProps & React.RefAttributes >; export const ThreadHistoryNewButton: React.ForwardRefExoticComponent< ThreadHistoryNewButtonProps & React.RefAttributes >; export const ThreadHistorySearch: React.ForwardRefExoticComponent< ThreadHistorySearchProps & React.RefAttributes >; export const ThreadHistoryList: React.ForwardRefExoticComponent< ThreadHistoryListProps & React.RefAttributes >; } declare module "@/components/ui/thread-list" { export interface ThreadListProps extends React.HTMLAttributes { variant?: ComponentVariant; threads: TamboThread[]; selectedThreadId?: string | null; onThreadSelect?: (threadId: string) => void; isLoading?: boolean; size?: "default" | "compact" | "relaxed"; } export const ThreadList: React.ForwardRefExoticComponent< ThreadListProps & React.RefAttributes >; export const threadListVariants: { (props?: { variant?: "default" | "solid" | "bordered"; size?: "default" | "compact" | "relaxed"; }): string; variants: Record>; defaultVariants: Record; }; } declare module "@/components/ui/message-generation-stage" { export interface GenerationStageProps extends React.HTMLAttributes { showLabel?: boolean; } export const MessageGenerationStage: React.ForwardRefExoticComponent< GenerationStageProps & React.RefAttributes >; } declare module "@/components/ui/suggestions-tooltip" { export interface TooltipProps { content: React.ReactNode; children: React.ReactNode; delayDuration?: number; open?: boolean; defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; side?: "top" | "right" | "bottom" | "left"; align?: "start" | "center" | "end"; className?: string; } export type TooltipProviderProps = React.ComponentPropsWithoutRef< typeof Provider >; export const Tooltip: React.FC; export const TooltipProvider: React.FC; export const TooltipContent: React.ForwardRefExoticComponent< // eslint-disable-next-line @typescript-eslint/no-explicit-any React.ComponentPropsWithoutRef & React.RefAttributes >; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const TooltipRoot: any; // eslint-disable-next-line @typescript-eslint/no-explicit-any export const TooltipTrigger: any; } declare module "@/components/ui/thread-dropdown" { export interface ThreadDropdownProps extends React.HTMLAttributes { variant?: ComponentVariant; contextKey?: string | undefined; onThreadChange?: () => void; } export const ThreadDropdown: React.ForwardRefExoticComponent< ThreadDropdownProps & React.RefAttributes >; } declare module "@/components/ui/scrollable-message-container" { export const ScrollableMessageContainer: React.ForwardRefExoticComponent< React.HTMLAttributes & React.RefAttributes >; } declare module "@/lib/thread-hooks" { export function useMergedRef( ref1: React.Ref | null | undefined, ref2: React.Ref | null | undefined, ): React.RefCallback; export function useCanvasDetection(ref: React.RefObject): { hasCanvasSpace: boolean; canvasIsOnLeft: boolean; }; export function usePositioning( className: string | undefined, canvasIsOnLeft: boolean, hasCanvasSpace: boolean, ): { isLeftPanel: boolean; historyPosition: "left" | "right"; }; export function getSafeContent( content: TamboThreadMessage["content"] | React.ReactNode | undefined | null, ): string | React.ReactElement; export function checkHasContent( content: TamboThreadMessage["content"] | React.ReactNode | undefined | null, ): boolean; } declare module "@/components/ui/thread-container" { export const ThreadContainer: React.ForwardRefExoticComponent< ThreadContainerProps & React.RefAttributes >; export interface ThreadContainerProps extends React.HTMLAttributes { contextKey?: string; } export function useThreadContainerContext(): { containerRef: React.RefObject; hasCanvasSpace: boolean; canvasIsOnLeft: boolean; isLeftPanel: boolean; historyPosition: "left" | "right"; }; } declare module "@/components/ui/mcp-config-modal" { export const McpConfigModal: React.FC<{ isOpen: boolean; onClose: () => void; }>; }