'use client' import { useViewer } from '@pascal-app/viewer' import { Box, Camera, Diamond, Image, Layers, Layers2 } from 'lucide-react' import { Button } from '@/components/ui/primitives/button' import { Tooltip, TooltipContent, TooltipTrigger, } from '@/components/ui/primitives/tooltip' 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 */}

Camera: {cameraMode === 'perspective' ? 'Perspective' : 'Orthographic'}

{/* Level Mode */}

Levels: {levelMode === 'manual' ? 'Manual' : levelModeLabels[levelMode as keyof typeof levelModeLabels]}

{/* Wall Mode */}

Walls: {wallModeConfig[wallMode].label}

{/* Show Scans */}

Scans: {showScans ? 'Visible' : 'Hidden'}

{/* Show Guides */}

Guides: {showGuides ? 'Visible' : 'Hidden'}

) }