reifydb-sub-admin 0.1.5

Admin subsystem for web-based administration
Documentation
import { Outlet } from '@tanstack/react-router'
import { Sidebar } from './sidebar.tsx'
import { Search, Bell, Sun, Moon, Command } from 'lucide-react'
import { Button } from '@/components/ui/button'
import { useState, useEffect } from 'react'
import { CommandPalette } from '@/components/command-palette'
import { useCommandPalette } from '@/hooks/use-command-palette'

export function MainLayout() {
  const [darkMode, setDarkMode] = useState(false)
  const commandPalette = useCommandPalette()

  useEffect(() => {
    if (darkMode) {
      document.documentElement.classList.add('dark')
    } else {
      document.documentElement.classList.remove('dark')
    }
  }, [darkMode])

  return (
    <div className="flex h-screen bg-background">
      <Sidebar />
      
      <div className="flex-1 flex flex-col overflow-hidden">
        <header className="flex items-center justify-between px-6 py-4 border-b border-border bg-card">
          <div className="flex items-center gap-4 flex-1 max-w-xl">
            <Button
              variant="outline"
              className="relative flex-1 justify-start text-left font-normal text-muted-foreground"
              onClick={commandPalette.open}
            >
              <Search className="mr-2 h-4 w-4" />
              <span className="flex-1">Search or press</span>
              <kbd className="pointer-events-none ml-auto inline-flex h-5 select-none items-center gap-1 rounded border border-border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground">
                <Command className="h-3 w-3" />K
              </kbd>
            </Button>
          </div>
          
          <div className="flex items-center gap-2">
            <Button variant="ghost" size="icon">
              <Bell className="h-4 w-4" />
            </Button>
            <Button
              variant="ghost"
              size="icon"
              onClick={() => setDarkMode(!darkMode)}
            >
              {darkMode ? <Sun className="h-4 w-4" /> : <Moon className="h-4 w-4" />}
            </Button>
          </div>
        </header>

        <main className="flex-1 overflow-auto p-6">
          <Outlet />
        </main>
      </div>
      
      <CommandPalette isOpen={commandPalette.isOpen} onClose={commandPalette.close} />
    </div>
  )
}