import { cn } from '../../lib/utils'; interface SkeletonProps { className?: string; } export function Skeleton({ className }: SkeletonProps) { return (
); } export function CardSkeleton() { return (
); } export function ListSkeleton({ count = 3 }: { count?: number }) { return (
{Array.from({ length: count }).map((_, i) => (
))}
); } /** * Skeleton for a single chat message bubble. * Supports both user and assistant message styles. */ export function MessageSkeleton({ isUser = false }: { isUser?: boolean }) { return (
); } /** * Skeleton for a list of chat messages. * Alternates between user and assistant skeletons. */ export function MessageListSkeleton({ count = 4 }: { count?: number }) { return (
{Array.from({ length: count }).map((_, i) => ( ))}
); } /** * Skeleton for a conversation item in the sidebar. */ export function ConversationItemSkeleton() { return (
); } /** * Skeleton for the conversation list sidebar. */ export function ConversationListSkeleton({ count = 5 }: { count?: number }) { return (
{/* Header skeleton */}
{/* List items */}
{Array.from({ length: count }).map((_, i) => ( ))}
); } /** * Skeleton for the chat header. */ export function ChatHeaderSkeleton() { return (
); } /** * Skeleton for the chat input area. */ export function ChatInputSkeleton() { return (
); } /** * Full chat area skeleton including header, messages, and input. */ export function ChatAreaSkeleton({ messageCount = 4 }: { messageCount?: number }) { return (
); }