Files
invyone/frontend/components/dash/DashboardToolbar.tsx
T
2026-04-20 10:00:18 +09:00

55 lines
1.6 KiB
TypeScript

'use client';
import { Save, Plus, Zap } from 'lucide-react';
import { useDashboardStore } from '@/stores/dashboardStore';
import { useControlMode } from '@/components/control/hooks/useControlMode';
interface DashboardToolbarProps {
dashboardName: string;
cardCount: number;
onOpenLibrary: () => void;
onSaveLayout: () => void;
}
export function DashboardToolbar({
dashboardName,
cardCount,
onOpenLibrary,
onSaveLayout,
}: DashboardToolbarProps) {
const editMode = useDashboardStore((s) => s.editMode);
const controlActive = useControlMode((s) => s.active);
// 편집/제어 모드가 모두 꺼져 있으면 툴바 자체를 렌더링하지 않음 — 헤더 버튼으로 토글
if (!editMode && !controlActive) return null;
return (
<div className="dash-toolbar">
<div className="dash-toolbar-l">
<span className="dash-cv-title">{dashboardName}</span>
<span className="dash-cv-meta">{`템플릿 ${cardCount}`}</span>
</div>
<div className="dash-toolbar-r">
{controlActive && (
<span className="dash-btn control-on" style={{ pointerEvents: 'none' }}>
<Zap size={13} />
<span> </span>
</span>
)}
{editMode && !controlActive && (
<>
<button className="dash-btn primary" onClick={onOpenLibrary}>
<Plus size={13} />
<span>릿 </span>
</button>
<button className="dash-btn" onClick={onSaveLayout}>
<Save size={13} />
<span></span>
</button>
</>
)}
</div>
</div>
);
}