'use client'; import { useState, useCallback } from 'react'; import { CreditCard, Download, AlertTriangle } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { Progress } from '@/components/ui/progress'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, } from '@/components/ui/alert-dialog'; import { PageLayout } from '@/components/organisms/PageLayout'; import { PageHeader } from '@/components/organisms/PageHeader'; import type { SubscriptionInfo } from './types'; import { PLAN_LABELS } from './types'; // ===== Mock 데이터 ===== const mockSubscription: SubscriptionInfo = { lastPaymentDate: '2025-12-01', nextPaymentDate: '2025-12-01', subscriptionAmount: 500000, plan: 'premium', userCount: 100, userLimit: null, // 무제한 storageUsed: 5.5, storageLimit: 10, apiCallsUsed: 8500, apiCallsLimit: 10000, }; // ===== 날짜 포맷 함수 ===== const formatDate = (dateStr: string): string => { const date = new Date(dateStr); const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); return `${year}년 ${month}월 ${day}일`; }; // ===== 금액 포맷 함수 ===== const formatCurrency = (amount: number): string => { return new Intl.NumberFormat('ko-KR').format(amount) + '원'; }; export function SubscriptionManagement() { const [subscription] = useState(mockSubscription); const [showCancelDialog, setShowCancelDialog] = useState(false); // ===== 자료 내보내기 ===== const handleExportData = useCallback(() => { // TODO: 실제 자료 다운로드 처리 console.log('자료 내보내기'); }, []); // ===== 서비스 해지 ===== const handleCancelService = useCallback(() => { // TODO: 실제 서비스 해지 처리 console.log('서비스 해지 처리'); setShowCancelDialog(false); }, []); // ===== Progress 계산 ===== const storageProgress = (subscription.storageUsed / subscription.storageLimit) * 100; const apiProgress = (subscription.apiCallsUsed / subscription.apiCallsLimit) * 100; return ( <> {/* ===== 페이지 헤더 ===== */} } />
{/* ===== 구독 정보 카드 영역 ===== */}
{/* 최근 결제일시 */}
최근 결제일시
{formatDate(subscription.lastPaymentDate)}
{/* 다음 결제일시 */}
다음 결제일시
{formatDate(subscription.nextPaymentDate)}
{/* 구독금액 */}
구독금액
{formatCurrency(subscription.subscriptionAmount)}
{/* ===== 구독 정보 영역 ===== */}
구독 정보
{/* 플랜명 */}

{PLAN_LABELS[subscription.plan]}

{/* 사용량 정보 */}
{/* 사용자 수 */}
사용자 수
{subscription.userCount}명 / {subscription.userLimit ? `${subscription.userLimit}명` : '무제한'}
{/* 저장 공간 */}
저장 공간
{subscription.storageUsed} TB /{subscription.storageLimit} TB
{/* AI API 호출 */}
AI API 호출
{subscription.apiCallsUsed.toLocaleString()} /{subscription.apiCallsLimit.toLocaleString()}
{/* ===== 서비스 해지 확인 다이얼로그 ===== */} 서비스 해지 모든 데이터가 삭제되며 복구할 수 없습니다.
정말 서비스를 해지하시겠습니까?
취소 확인
); }