import { useState } from 'react'; import { ThemeProvider } from './context/ThemeContext'; import { QRProvider } from './context/QRContext'; import { ToastProvider } from './context/ToastContext'; import { HistoryProvider } from './context/HistoryContext'; import { Navbar } from './components/Navbar/Navbar'; import { LeftPanel } from './components/LeftPanel/LeftPanel'; import { CenterPanel } from './components/CenterPanel/CenterPanel'; import { RightPanel } from './components/RightPanel/RightPanel'; type MobileTab = 'types' | 'preview' | 'style'; const TABS: { key: MobileTab; label: string; icon: React.ReactNode }[] = [ { key: 'types', label: 'Type', icon: , }, { key: 'preview', label: 'Preview', icon: , }, { key: 'style', label: 'Style', icon: , }, ]; export default function App() { const [mobileTab, setMobileTab] = useState('preview'); return (
{/* ── Desktop / Tablet landscape (≥1024px): 3 columns ── */}
{/* ── Tablet portrait (768px–1023px): left + center, right hidden ── */}
{/* ── Mobile (<768px): single panel + bottom tab bar ── */}
{/* ── Mobile bottom tab bar ── */} {/* ── Tablet portrait: style panel button (floating) ── */}
); } /* Floating style button for tablet portrait — opens right panel as a drawer */ function StyleDrawer() { const [open, setOpen] = useState(false); return ( <> {open && ( <>
setOpen(false)} style={{ background: 'rgba(0,0,0,0.4)', backdropFilter: 'blur(2px)' }} />
Style your QR
)} ); }