"use client";
import { MessageCircle } from "lucide-react";
import { cn } from "@/lib/utils";
import {
Avatar,
AvatarFallback,
AvatarImage,
} from "@/ui/avatar";
import { Button } from "@/ui/button";
export type AskAIButtonProps = {
avatarSrc?: string;
avatarFallback?: string;
className?: string;
onClick?: () => void;
};
export function AskAIButton({
avatarSrc = "https://github.com/montekkundan.png",
avatarFallback = "MK",
className,
onClick,
}: AskAIButtonProps) {
return (
<div
className={cn(
"flex items-center justify-between rounded-lg bg-zinc-900 p-2",
className
)}
>
<Button
className="border-zinc-700 bg-transparent text-white hover:bg-zinc-800"
onClick={onClick}
variant="outline"
>
Ask AI
</Button>
<Avatar>
<AvatarImage alt="User" src={avatarSrc} />
<AvatarFallback>{avatarFallback}</AvatarFallback>
</Avatar>
</div>
);
}
export type AskAILabelProps = {
label?: string;
className?: string;
};
export function AskAILabel({
label = "Ask AI about this page",
className,
}: AskAILabelProps) {
return (
<span className={cn("flex items-center gap-3 text-zinc-400", className)}>
<MessageCircle className="size-5" />
{label}
</span>
);
}
Overview
The Ask AI component provides an interactive AI chat interface trigger. It includes a button with an avatar and a label to prompt users to engage with AI assistance.
Installation
bunx --bun shadcn@latest add https://sidekick.montek.dev/r/ask-ai.jsonUsage
Basic
import { AskAIButton, AskAILabel } from '@/components/ui/ask-ai'
export default function Page() {
return (
<div className="flex flex-col gap-4">
<AskAILabel />
<AskAIButton onClick={() => console.log('AI chat opened')} />
</div>
)
}Components
AskAILabel
Displays a label with an icon prompting users to ask AI.
Props:
label?: string- Custom label text (default: "Ask AI about this page")className?: string- Additional CSS classes
AskAIButton
Interactive button with avatar to trigger AI chat.
Props:
avatarSrc?: string- Avatar image URL (default: user avatar)avatarFallback?: string- Fallback initials for avatar (default: "MK")className?: string- Additional CSS classesonClick?: () => void- Click handler function