import { useState, useEffect } from 'react' import { X, Copy, Check } from 'lucide-react' import { useDevFlags, DEV_FLAGS, type DevFlagKey } from '../contexts/DevFlagsContext' // Master-detail feature-flag panel (Ctrl/Cmd+Shift+D). List on the left // (green = enabled, ring = selected), detail + toggle on the right. export function DevPanel() { const { flags, setFlag, isPanelOpen, setPanelOpen } = useDevFlags() const [selectedKey, setSelectedKey] = useState(DEV_FLAGS[0]?.key) const [copied, setCopied] = useState(false) useEffect(() => { if (!isPanelOpen) return const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') setPanelOpen(false) } window.addEventListener('keydown', onKey) return () => window.removeEventListener('keydown', onKey) }, [isPanelOpen, setPanelOpen]) if (!isPanelOpen) return null const selected = DEV_FLAGS.find(f => f.key === selectedKey) ?? DEV_FLAGS[0] const isOn = selected ? flags[selected.key] : false const copyKey = () => { if (!selected) return void navigator.clipboard?.writeText(selected.key).then(() => { setCopied(true) setTimeout(() => setCopied(false), 1200) }) } return (
setPanelOpen(false)} >
e.stopPropagation()} > {/* Header */}

Dev Panel

Local-only feature toggles, saved on this machine.

{/* Body: list + detail */}
{/* List */}
{DEV_FLAGS.map(spec => { const on = flags[spec.key] const isSelected = spec.key === selectedKey return ( ) })}
{/* Detail */}
{selected && ( <>

{selected.label}

Enabled

Description

{selected.description}

)}
) }