'use client' import { useViewer } from '@pascal-app/viewer' import { Box, Camera, Diamond, Image, Layers, Layers2 } from 'lucide-react' import { ActionButton } from "./action-button"; import { cn } from '@/lib/utils' const levelModeLabels: Record<'stacked' | 'exploded' | 'solo', string> = { stacked: 'Stacked', exploded: 'Exploded', solo: 'Solo', } const levelModeOrder: ('stacked' | 'exploded' | 'solo')[] = ['stacked', 'exploded', 'solo'] type WallMode = 'up' | 'cutaway' | 'down' const wallModeConfig: Record< WallMode, { icon: React.FC>; label: string } > = { up: { icon: (props) => ( Full Height ), label: 'Full Height', }, cutaway: { icon: (props) => ( Cutaway ), label: 'Cutaway', }, down: { icon: (props) => Low, label: 'Low', }, } const wallModeOrder: WallMode[] = ['cutaway', 'up', 'down'] export function ViewToggles() { const cameraMode = useViewer((state) => state.cameraMode) const setCameraMode = useViewer((state) => state.setCameraMode) const levelMode = useViewer((state) => state.levelMode) const setLevelMode = useViewer((state) => state.setLevelMode) const wallMode = useViewer((state) => state.wallMode) const setWallMode = useViewer((state) => state.setWallMode) const showScans = useViewer((state) => state.showScans) const setShowScans = useViewer((state) => state.setShowScans) const showGuides = useViewer((state) => state.showGuides) const setShowGuides = useViewer((state) => state.setShowGuides) const toggleCameraMode = () => { setCameraMode(cameraMode === 'perspective' ? 'orthographic' : 'perspective') } const cycleLevelMode = () => { if (levelMode === 'manual') { setLevelMode('stacked') return } const currentIndex = levelModeOrder.indexOf(levelMode as 'stacked' | 'exploded' | 'solo') const nextIndex = (currentIndex + 1) % levelModeOrder.length const nextMode = levelModeOrder[nextIndex] if (nextMode) setLevelMode(nextMode) } const cycleWallMode = () => { const currentIndex = wallModeOrder.indexOf(wallMode) const nextIndex = (currentIndex + 1) % wallModeOrder.length const nextMode = wallModeOrder[nextIndex] if (nextMode) setWallMode(nextMode) } return (
{/* Camera Mode */} {/* Level Mode */} {levelMode === 'solo' && } {levelMode === 'exploded' && } {(levelMode === 'stacked' || levelMode === 'manual') && } {/* Wall Mode */} {(() => { const Icon = wallModeConfig[wallMode].icon return })()} {/* Show Scans */} setShowScans(!showScans)} size="icon" variant="ghost" > Scans {/* Show Guides */} setShowGuides(!showGuides)} size="icon" variant="ghost" > Guides
) }