Files
sam-react-prod/src/components/business/CEODashboard/sections/EntertainmentSection.tsx
byeongcheolryu e56b7d53a4 fix(WEB): 토큰 만료 시 무한 로딩 대신 로그인 리다이렉트 처리
- 52개 이상의 컴포넌트에 isNextRedirectError 처리 추가
- Server Action의 redirect() 에러가 catch 블록에서 삼켜지는 문제 해결
- access_token + refresh_token 모두 만료 시 정상적으로 로그인 페이지로 리다이렉트

수정된 영역:
- accounting: 10개 컴포넌트
- production: 12개 컴포넌트
- hr: 5개 컴포넌트
- settings: 8개 컴포넌트
- approval: 5개 컴포넌트
- items: 20개+ 컴포넌트
- board: 5개 컴포넌트
- quality: 4개 컴포넌트
- material, outbound, quotes 등 기타 컴포넌트

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-11 17:19:11 +09:00

38 lines
1.1 KiB
TypeScript

'use client';
import { Card, CardContent } from '@/components/ui/card';
import { SectionTitle, AmountCardItem, CheckPointItem } from '../components';
import type { EntertainmentData } from '../types';
interface EntertainmentSectionProps {
data: EntertainmentData;
onCardClick?: (cardId: string) => void;
}
export function EntertainmentSection({ data, onCardClick }: EntertainmentSectionProps) {
return (
<Card>
<CardContent className="p-6">
<SectionTitle title="접대비 현황" badge="warning" />
<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) => (
<AmountCardItem
key={card.id}
card={card}
onClick={() => onCardClick?.(card.id)}
/>
))}
</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>
);
}