"use client"; import React from "react"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Save, Trash2, Eye, Palette } from "lucide-react"; import { ElementType, ElementSubtype } from "./types"; import { ResolutionSelector, Resolution } from "./ResolutionSelector"; import { Input } from "@/components/ui/input"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; interface DashboardTopMenuProps { onSaveLayout: () => void; onClearCanvas: () => void; onViewDashboard?: () => void; dashboardTitle?: string; onAddElement?: (type: ElementType, subtype: ElementSubtype) => void; resolution?: Resolution; onResolutionChange?: (resolution: Resolution) => void; currentScreenResolution?: Resolution; backgroundColor?: string; onBackgroundColorChange?: (color: string) => void; } /** * 대시보드 편집 화면 상단 메뉴바 * - 차트/위젯 선택 (셀렉트박스) * - 저장/초기화/보기 버튼 */ export function DashboardTopMenu({ onSaveLayout, onClearCanvas, onViewDashboard, dashboardTitle, onAddElement, resolution = "fhd", onResolutionChange, currentScreenResolution, backgroundColor = "#f9fafb", onBackgroundColorChange, }: DashboardTopMenuProps) { const [chartValue, setChartValue] = React.useState(""); const [widgetValue, setWidgetValue] = React.useState(""); // 차트 선택 시 캔버스 중앙에 추가 const handleChartSelect = (value: string) => { if (onAddElement) { onAddElement("chart", value as ElementSubtype); // 선택 후 즉시 리셋하여 같은 항목을 연속으로 선택 가능하게 setTimeout(() => setChartValue(""), 0); } }; // 위젯 선택 시 캔버스 중앙에 추가 const handleWidgetSelect = (value: string) => { if (onAddElement) { onAddElement("widget", value as ElementSubtype); // 선택 후 즉시 리셋하여 같은 항목을 연속으로 선택 가능하게 setTimeout(() => setWidgetValue(""), 0); } }; return (
{/* 좌측: 대시보드 제목 */}
{dashboardTitle && (
{dashboardTitle} 편집 중
)}
{/* 중앙: 해상도 선택 & 요소 추가 */}
{/* 해상도 선택 */} {onResolutionChange && ( )}
{/* 배경색 선택 */} {onBackgroundColorChange && (
onBackgroundColorChange(e.target.value)} className="h-10 w-20 cursor-pointer" /> onBackgroundColorChange(e.target.value)} placeholder="#f9fafb" className="flex-1" />
{[ "#ffffff", "#f9fafb", "#f3f4f6", "#e5e7eb", "#1f2937", "#111827", "#fef3c7", "#fde68a", "#dbeafe", "#bfdbfe", "#fecaca", "#fca5a5", ].map((color) => (
)}
{/* 차트 선택 */} {/* 위젯 선택 */}
{/* 우측: 액션 버튼 */}
{onViewDashboard && ( )}
); }