2025-11-18 14:17:52 +09:00
|
|
|
'use client';
|
|
|
|
|
|
|
|
|
|
import { ReactNode } from "react";
|
|
|
|
|
import { LucideIcon } from "lucide-react";
|
|
|
|
|
|
2025-12-20 14:33:11 +09:00
|
|
|
export interface PageHeaderProps {
|
fix: 프로젝트 전체 TypeScript 타입에러 408개 수정 (tsc --noEmit 0 errors)
- 공통 템플릿 타입 수정 (IntegratedDetailTemplate, UniversalListPage)
- 페이지(app/[locale]) 타입 호환성 수정 (80개)
- 재고/자재 모듈 타입 수정 (StockStatus, ReceivingManagement)
- 생산 모듈 타입 수정 (WorkOrders, WorkerScreen, WorkResults)
- 주문/출고 모듈 타입 수정 (ShipmentManagement, Orders)
- 견적/단가 모듈 타입 수정 (Quotes, Pricing)
- 건설 모듈 타입 수정 (49개, 17개 하위 모듈)
- HR 모듈 타입 수정 (CardManagement, VacationManagement 등)
- 설정 모듈 타입 수정 (PermissionManagement, AccountManagement 등)
- 게시판 모듈 타입 수정 (BoardManagement, BoardList 등)
- 회계 모듈 타입 수정 (VendorManagement, BadDebtCollection 등)
- 기타 모듈 타입 수정 (CEODashboard, clients, vehicle 등)
- 유틸/훅/API 타입 수정 (hooks, contexts, lib)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 10:07:58 +09:00
|
|
|
title: string | ReactNode;
|
2025-11-18 14:17:52 +09:00
|
|
|
description?: string;
|
|
|
|
|
actions?: ReactNode;
|
|
|
|
|
icon?: LucideIcon;
|
|
|
|
|
versionBadge?: ReactNode;
|
2025-12-20 14:33:11 +09:00
|
|
|
/** 뒤로가기 핸들러 */
|
|
|
|
|
onBack?: () => void;
|
2025-11-18 14:17:52 +09:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function PageHeader({ title, description, actions, icon: Icon, versionBadge }: PageHeaderProps) {
|
|
|
|
|
return (
|
|
|
|
|
<div className="flex flex-col md:flex-row md:items-center justify-between gap-4">
|
|
|
|
|
<div className="flex items-start gap-3">
|
|
|
|
|
{Icon && (
|
|
|
|
|
<div className="p-2 bg-primary/10 rounded-lg hidden md:block">
|
|
|
|
|
<Icon className="w-6 h-6 text-primary" />
|
|
|
|
|
</div>
|
|
|
|
|
)}
|
|
|
|
|
<div>
|
|
|
|
|
<div className="flex items-center gap-2">
|
|
|
|
|
<h1 className="text-xl md:text-2xl">{title}</h1>
|
|
|
|
|
{versionBadge}
|
|
|
|
|
</div>
|
|
|
|
|
{description && (
|
|
|
|
|
<p className="text-sm text-muted-foreground mt-1">
|
|
|
|
|
{description}
|
|
|
|
|
</p>
|
|
|
|
|
)}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="flex gap-2 flex-wrap items-center">
|
|
|
|
|
{actions}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|