차량 관리 (신규): - VehicleList/VehicleDetail: 차량 목록/상세 - ForkliftList/ForkliftDetail: 지게차 목록/상세 - VehicleLogList/VehicleLogDetail: 운행일지 목록/상세 - 관련 페이지 라우트 추가 (/vehicle-management/*) CEO 대시보드: - Enhanced 섹션 컴포넌트 적용 (아이콘 + 컬러 테마) - EnhancedStatusBoardSection, EnhancedDailyReportSection, EnhancedMonthlyExpenseSection - TodayIssueSection 개선 IntegratedDetailTemplate: - FieldInput, FieldRenderer 기능 확장 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
'use client';
|
|
|
|
import { Wine, Utensils, Users, CreditCard } from 'lucide-react';
|
|
import { Card, CardContent } from '@/components/ui/card';
|
|
import { SectionTitle, AmountCardItem, CheckPointItem, type SectionColorTheme } from '../components';
|
|
import type { EntertainmentData } from '../types';
|
|
|
|
// 카드별 아이콘 매핑
|
|
const CARD_ICONS = [Wine, Utensils, Users, CreditCard];
|
|
const CARD_THEMES: SectionColorTheme[] = ['pink', 'purple', 'indigo', 'red'];
|
|
|
|
interface EntertainmentSectionProps {
|
|
data: EntertainmentData;
|
|
onCardClick?: (cardId: string) => void;
|
|
}
|
|
|
|
export function EntertainmentSection({ data, onCardClick }: EntertainmentSectionProps) {
|
|
return (
|
|
<Card>
|
|
<CardContent className="p-6">
|
|
<SectionTitle
|
|
title="접대비 현황"
|
|
badge="warning"
|
|
icon={Wine}
|
|
colorTheme="pink"
|
|
/>
|
|
|
|
<div className="grid grid-cols-1 xs:grid-cols-2 md:grid-cols-4 gap-3 xs:gap-4 mb-4">
|
|
{data.cards.map((card, idx) => (
|
|
<AmountCardItem
|
|
key={card.id}
|
|
card={card}
|
|
onClick={() => onCardClick?.(card.id)}
|
|
icon={CARD_ICONS[idx] || Wine}
|
|
colorTheme={CARD_THEMES[idx] || 'pink'}
|
|
showTrend={!!card.previousLabel}
|
|
trendValue={card.previousLabel}
|
|
trendDirection="up"
|
|
/>
|
|
))}
|
|
</div>
|
|
|
|
{data.checkPoints.length > 0 && (
|
|
<div className="border-t pt-4 space-y-1">
|
|
{data.checkPoints.map((cp) => (
|
|
<CheckPointItem key={cp.id} checkpoint={cp} />
|
|
))}
|
|
</div>
|
|
)}
|
|
</CardContent>
|
|
</Card>
|
|
);
|
|
} |