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 (
);
}