import React from 'react'; import { Paperclip, File, FileAudio } from 'lucide-react'; import { Button } from '../ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '../ui/dropdown-menu'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../ui/tooltip'; import { cn } from '@/lib/utils'; interface AttachButtonProps { onImageAttach: () => void; onPdfAttach: () => void; onAudioAttach: () => void; className?: string; supports?: { image?: boolean; pdf?: boolean; audio?: boolean; }; /** Use lg breakpoint instead of md for responsive text */ useLargeBreakpoint?: boolean; } export function AttachButton({ onImageAttach, onPdfAttach, onAudioAttach, className, supports, useLargeBreakpoint = false, }: AttachButtonProps) { const [open, setOpen] = React.useState(false); const imageSupported = supports?.image !== false; // default to true if unknown const pdfSupported = supports?.pdf !== false; // default to true if unknown const audioSupported = supports?.audio !== false; return ( { if (!imageSupported) return; onImageAttach(); setOpen(false); }} className={!imageSupported ? 'opacity-50 cursor-not-allowed' : undefined} aria-disabled={!imageSupported} >
Image
{!imageSupported && ( Unsupported for this model )}
{ if (!pdfSupported) return; onPdfAttach(); setOpen(false); }} className={!pdfSupported ? 'opacity-50 cursor-not-allowed' : undefined} aria-disabled={!pdfSupported} >
PDF
{!pdfSupported && ( Unsupported for this model )}
{ if (!audioSupported) return; onAudioAttach(); setOpen(false); }} className={!audioSupported ? 'opacity-50 cursor-not-allowed' : undefined} aria-disabled={!audioSupported} >
Audio file
{!audioSupported && ( Unsupported for this model )}
); }