// src/components/ui/modified-card.tsx import Image from 'next/image'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { Card, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card'; import { cn } from '@/lib/utils'; type ModifiedCardProps = { imageSrc: string; title: string; description: string; buttonText: string; onButtonClick: () => void; badges?: string[]; loading?: boolean; disabled?: boolean; secondaryButton?: { text: string; onClick: () => void; className?: string; }; imageAspectRatio?: 'square' | 'video' | 'wide'; variant?: 'default' | 'bordered' | 'minimal'; className?: string; imageWrapperClassName?: string; imageClassName?: string; headerClassName?: string; titleClassName?: string; descriptionClassName?: string; footerClassName?: string; buttonClassName?: string; badgeClassName?: string; }; // 1. Define an external default array so you don't set it inline. const DEFAULT_BADGES: string[] = []; export function ModifiedCard({ imageSrc, title, description, buttonText, onButtonClick, badges = DEFAULT_BADGES, // Use the external constant loading = false, disabled = false, secondaryButton, imageAspectRatio = 'video', variant = 'default', className = '', imageWrapperClassName = '', imageClassName = '', headerClassName = '', titleClassName = '', descriptionClassName = '', footerClassName = '', buttonClassName = '', badgeClassName = '', }: ModifiedCardProps) { const aspectRatioClasses = { square: 'aspect-square', video: 'aspect-video', wide: 'aspect-[2/1]', }; const variantClasses = { default: 'bg-card border shadow-sm', bordered: 'border-2 border-primary', minimal: 'bg-transparent border-none shadow-none', }; return ( {imageSrc && (
{title}
)} {badges.length > 0 && (
{badges.map(badge => ( // 2. Use `badge` (assuming it's unique) as the key, // rather than index to avoid `react/no-array-index-key`. {badge} ))}
)} {title} {description}
{secondaryButton && ( )}
); } export type { ModifiedCardProps };