'use client'; import React from 'react'; /** * The single card system for the "For People" page. * Wraps the shared `.fp-card*` classes (defined in VerticalScrollWrapper) so * every section imports one component and the markup can't drift. */ type Theme = 'light' | 'dark' | 'fill'; const themeClass: Record = { light: 'fp-card--light', dark: 'fp-card--dark', fill: 'fp-card--fill', }; const DEFAULT_ICON_BG: Record = { light: 'rgba(244,190,40,0.14)', dark: 'rgba(244,190,40,0.14)', fill: 'rgba(244,190,40,0.16)', }; const sora = 'Sora, sans-serif'; const GOLD = '#f4be28'; interface TagCardProps { theme?: Theme; icon: React.ReactNode; /** Icon-badge background; falls back to the theme's gold tint. */ iconBg?: string; /** Icon tint — icons draw in `currentColor`. Falls back to the theme's gold. */ iconColor?: string; children: React.ReactNode; className?: string; style?: React.CSSProperties; } /** Compact icon + label pill (radius 12). */ export function FpTagCard({ theme = 'light', icon, iconBg, iconColor, children, className = '', style }: TagCardProps) { return (
{icon} {children}
); } interface StatCardProps { theme?: Theme; layout?: 'row' | 'column'; icon: React.ReactNode; iconBg?: string; /** Icon tint — icons draw in `currentColor`. Falls back to the theme's gold. */ iconColor?: string; /** May be a plain node or a count-up ref. */ value: React.ReactNode; label: string; /** Value text color; defaults to theme-appropriate. */ color?: string; className?: string; style?: React.CSSProperties; } /** Larger icon + value + label card (radius 20). */ export function FpStatCard({ theme = 'light', layout = 'column', icon, iconBg, iconColor, value, label, color, className = '', style, }: StatCardProps) { const dark = theme !== 'light'; const column = layout === 'column'; return (
{icon}
{value}
{label}
); }