"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 } from "@/types/screen"; interface GridPanelProps { gridSettings: GridSettings; onGridSettingsChange: (settings: GridSettings) => void; onResetGrid: () => void; } export const GridPanel: React.FC = ({ gridSettings, onGridSettingsChange, onResetGrid }) => { const updateSetting = (key: keyof GridSettings, value: any) => { onGridSettingsChange({ ...gridSettings, [key]: value, }); }; return (
{/* 헤더 */}

격자 설정

{/* 주요 토글들 */}
{gridSettings.showGrid ? ( ) : ( )}
updateSetting("showGrid", checked)} />
updateSetting("snapToGrid", checked)} />
{/* 설정 영역 */}
{/* 격자 구조 */}

격자 구조

updateSetting("columns", value)} className="w-full" />
1 24
updateSetting("gap", value)} className="w-full" />
0px 40px
updateSetting("padding", value)} className="w-full" />
0px 60px
{/* 격자 스타일 */}

격자 스타일

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

미리보기

컴포넌트 예시
{/* 푸터 */}
💡 격자 설정은 실시간으로 캔버스에 반영됩니다
); }; export default GridPanel;