"use client"; import React from "react"; import { Label } from "@/components/ui/label"; import { Input } from "@/components/ui/input"; import { Checkbox } from "@/components/ui/checkbox"; import { Button } from "@/components/ui/button"; import { Separator } from "@/components/ui/separator"; import { Slider } from "@/components/ui/slider"; import { Grid3X3, RotateCcw, Eye, EyeOff, Zap } from "lucide-react"; import { GridSettings, ScreenResolution } from "@/types/screen"; interface GridPanelProps { gridSettings: GridSettings; onGridSettingsChange: (settings: GridSettings) => void; onResetGrid: () => void; screenResolution?: ScreenResolution; } export const GridPanel: React.FC = ({ gridSettings, onGridSettingsChange, onResetGrid, screenResolution, }) => { const updateSetting = (key: keyof GridSettings, value: any) => { onGridSettingsChange({ ...gridSettings, [key]: value, }); }; return (
{/* 헤더 */}

격자 설정

{/* 주요 토글들 */}
{gridSettings.showGrid ? ( ) : ( )}
updateSetting("showGrid", checked)} />
updateSetting("snapToGrid", checked)} />
{/* 설정 영역 */}
{/* 10px 단위 스냅 안내 */}

격자 시스템

모든 컴포넌트는 10px 단위로 자동 배치됩니다.

{/* 격자 스타일 */}

격자 스타일

updateSetting("gridColor", e.target.value)} className="h-8 w-12 rounded border p-1" /> updateSetting("gridColor", e.target.value)} placeholder="#d1d5db" className="flex-1 text-xs" />
updateSetting("gridOpacity", value)} className="w-full" />
10% 100%
{/* 미리보기 */}

미리보기

10px 격자
{/* 푸터 */}
{screenResolution && (

화면 정보

해상도: {screenResolution.width} × {screenResolution.height}
격자 단위: 10px
)}
); }; export default GridPanel;