"use client"; import { ReactNode } from "react"; import { LucideIcon } from "lucide-react"; import { cn } from "@/lib/utils"; interface SettingsCardProps { /** 카드 상단에 표시될 아이콘 컴포넌트 */ icon: LucideIcon; /** 카드 제목 */ title: ReactNode; /** 제목 옆에 표시될 배지 (선택 사항) */ badge?: ReactNode; /** 헤더 우측에 표시될 액션 요소 (스위치, 버튼 등) */ headerAction?: ReactNode; /** 카드 설명 텍스트 */ description?: string; /** 카드 본문 컨텐츠 */ children: ReactNode; /** 카드 하단 영역 (액션 버튼 및 상태 메시지 포함) */ footer?: { /** 좌측 액션 버튼들 */ actions?: ReactNode; /** 우측 상태 메시지 */ status?: ReactNode; }; /** 추가 클래스 */ className?: string; } /** * @description 설정 페이지에서 사용되는 통일된 카드 UI 컴포넌트입니다. * @remarks 모든 설정 폼(인증, 프로필 등)은 이 컴포넌트를 사용하여 일관된 디자인을 유지해야 합니다. */ export function SettingsCard({ icon: Icon, title, badge, headerAction, description, children, footer, className, }: SettingsCardProps) { return (
{/* ========== CARD HEADER ========== */}

{title}

{badge &&
{badge}
}
{description && (

{description}

)}
{headerAction && (
{headerAction}
)}
{/* ========== CARD BODY ========== */}
{children}
{/* ========== CARD FOOTER ========== */} {footer && (
{footer.actions}
{footer.status}
)}
); }