/** * CAD 화면 골격 조립 — 제목표시줄 · 리본 · 좌측 팔레트 · 탐색막대 · 명령행 · 상태막대. * 각 조각은 자기 파일에 있고, 여기서는 배치와 표시 상태만 다룬다. */ import { type FC, useEffect, useState } from 'react'; import { CommandLine } from './CommandLine'; import { InspectorPanel } from './InspectorPanel'; import { QuickProperties } from './QuickProperties'; import { BlockLibraryPanel } from './BlockLibraryPanel'; import { LayersWidget, PropertiesWidget, TextStyleWidget } from './RibbonWidgets'; import { QuickAccessBar } from './QuickAccessBar'; import { Ribbon } from '../ribbon/Ribbon'; import { StatusBar } from './StatusBar'; import { useCadRefresh } from './use-cad-refresh'; import { getActiveToolActor } from '../state'; import type { Tool } from '../tools'; import { ViewControls } from './ViewControls'; export const Toolbar: FC = () => { useCadRefresh(); const [panelCollapsed, setPanelCollapsed] = useState(false); const [commandLineVisible, setCommandLineVisible] = useState(true); const activeTool = (getActiveToolActor()?.getSnapshot()?.context?.type ?? null) as Tool | null; useEffect(() => { // 편 상태의 폭은 App.css의 `--cad-panel-width` 기본값을 쓴다. 여기 숫자를 박아 // 두면 스타일에서 넓혀도 이 인라인 값이 덮는다(2026-09-01 실측: 300px 무시됨). if (panelCollapsed) document.documentElement.style.setProperty('--cad-panel-width', '0px'); else document.documentElement.style.removeProperty('--cad-panel-width'); document.documentElement.style.setProperty( '--cad-command-height', commandLineVisible ? '86px' : '0px' ); window.dispatchEvent(new Event('resize')); }, [panelCollapsed, commandLineVisible]); return ( <> , layers: , textStyle: , }} /> setPanelCollapsed((value) => !value)} /> {commandLineVisible && } setCommandLineVisible((value) => !value)} /> ); };