"use client"; import { useState } from "react"; import { Play, Square, Move, RotateCcw, Maximize, MousePointer, Undo2, Redo2, Eye, User, } from "lucide-react"; import { useEditorStore } from "@/lib/store"; import { SceneDropdown } from "./scene-dropdown"; export function Toolbar() { const { transformMode, setTransformMode, isPlaying, setIsPlaying, canUndo, canRedo, undo, redo, viewMode, setViewMode, } = useEditorStore(); const [moreOpen, setMoreOpen] = useState(false); return (
{/* Left: Transform modes */}
{!isPlaying && ( <> {/* Mobile: collapsed transform dropdown */}
) : transformMode === "translate" ? ( ) : transformMode === "rotate" ? ( ) : ( ) } active onClick={() => setMoreOpen(!moreOpen)} title="Transform mode" size="mobile" /> {moreOpen && ( <>
setMoreOpen(false)} />
{( [ { mode: "select" as const, icon: MousePointer, label: "Select", }, { mode: "translate" as const, icon: Move, label: "Move", }, { mode: "rotate" as const, icon: RotateCcw, label: "Rotate", }, { mode: "scale" as const, icon: Maximize, label: "Scale", }, ] as const ).map(({ mode, icon: Icon, label }) => ( ))}
)} } onClick={undo} disabled={!canUndo} title="Undo" size="mobile" /> } onClick={redo} disabled={!canRedo} title="Redo" size="mobile" />
{/* Desktop: individual transform buttons */}
} active={transformMode === "select"} onClick={() => setTransformMode("select")} title="Select (Q)" /> } active={transformMode === "translate"} onClick={() => setTransformMode("translate")} title="Translate (W)" /> } active={transformMode === "rotate"} onClick={() => setTransformMode("rotate")} title="Rotate (E)" /> } active={transformMode === "scale"} onClick={() => setTransformMode("scale")} title="Scale (R)" />
} onClick={undo} disabled={!canUndo} title="Undo (Ctrl+Z)" /> } onClick={redo} disabled={!canRedo} title="Redo (Ctrl+Shift+Z)" />
)}
{/* Center: Scene selector (absolutely centered) */}
{!isPlaying && }
{/* Right: Play/View controls */}
{isPlaying && ( <> {/* Mobile view mode buttons */}
} active={viewMode === "first-person"} onClick={() => setViewMode("first-person")} title="First Person" size="mobile" /> } active={viewMode === "third-person"} onClick={() => setViewMode("third-person")} title="Third Person" size="mobile" />
{/* Desktop view mode buttons */}
} active={viewMode === "first-person"} onClick={() => setViewMode("first-person")} title="First Person" /> } active={viewMode === "third-person"} onClick={() => setViewMode("third-person")} title="Third Person" />
)}
); } function ToolButton({ icon, active, onClick, disabled, title, size, }: { icon: React.ReactNode; active?: boolean; onClick: () => void; disabled?: boolean; title?: string; size?: "mobile" | "desktop"; }) { const isMobileSize = size === "mobile"; return ( ); }