"use client"; import { memo } from "react"; import CardStackTextBox from "@/components/cardStack/CardStackTextBox"; import MediaContent from "@/components/shared/MediaContent"; import { useCardAnimation } from "@/components/cardStack/hooks/useCardAnimation"; import { cls, shouldUseInvertedText } from "@/lib/utils"; import { useTheme } from "@/providers/themeProvider/ThemeProvider"; import type { LucideIcon } from "lucide-react"; import type { ButtonConfig, CardAnimationType, TitleSegment } from "@/components/cardStack/types"; import type { TextboxLayout, InvertedBackground } from "@/providers/themeProvider/config/constants"; type MediaProps = | { imageSrc: string; imageAlt?: string; videoSrc?: never; videoAriaLabel?: never; } | { videoSrc: string; videoAriaLabel?: string; imageSrc?: never; imageAlt?: never; }; type Metric = MediaProps & { id: string; value: string; title: string; description: string; }; interface MetricCardElevenProps { metrics: Metric[]; animationType: CardAnimationType; title: string; titleSegments?: TitleSegment[]; description: string; tag?: string; tagIcon?: LucideIcon; buttons?: ButtonConfig[]; textboxLayout: TextboxLayout; useInvertedBackground: InvertedBackground; ariaLabel?: string; className?: string; containerClassName?: string; textBoxClassName?: string; textBoxTitleClassName?: string; textBoxTitleImageWrapperClassName?: string; textBoxTitleImageClassName?: string; textBoxDescriptionClassName?: string; textBoxTagClassName?: string; textBoxButtonContainerClassName?: string; textBoxButtonClassName?: string; textBoxButtonTextClassName?: string; gridClassName?: string; cardClassName?: string; valueClassName?: string; cardTitleClassName?: string; cardDescriptionClassName?: string; mediaCardClassName?: string; mediaClassName?: string; } interface MetricTextCardProps { metric: Metric; shouldUseLightText: boolean; cardClassName?: string; valueClassName?: string; cardTitleClassName?: string; cardDescriptionClassName?: string; } interface MetricMediaCardProps { metric: Metric; mediaCardClassName?: string; mediaClassName?: string; } const MetricTextCard = memo(({ metric, shouldUseLightText, cardClassName = "", valueClassName = "", cardTitleClassName = "", cardDescriptionClassName = "", }: MetricTextCardProps) => { return (
{metric.title}
{metric.description}