/** * Карточка с лицевой и обратной стороной (переключение без анимации переворота). */ 'use client'; import React, { useMemo, useState } from 'react'; export interface FlipCardProps { /** Контент лицевой стороны */ front: React.ReactNode; /** Контент обратной стороны */ back: React.ReactNode; /** Высота карточки */ height?: string | number; /** Дополнительный класс */ className?: string; /** Управляемый режим (если задан) */ flipped?: boolean; /** Коллбек при смене состояния */ onFlippedChange?: (flipped: boolean) => void; } export const FlipCard: React.FC = ({ front, back, height = 'auto', className = '', flipped, onFlippedChange, }) => { const [internalFlipped, setInternalFlipped] = useState(false); const isControlled = useMemo(() => flipped !== undefined, [flipped]); const isFlipped = isControlled ? (flipped as boolean) : internalFlipped; const setFlipped = (next: boolean) => { if (!isControlled) setInternalFlipped(next); onFlippedChange?.(next); }; return (
{front}
{back}
); };