"use client"; import type { ReactNode } from "react"; import { useEffect, useState } from "react"; import { TooltipProvider } from "@/components/ui/tooltip"; import { RightPanel } from "@/components/panels/right-panel"; import { Sidebar } from "@/components/sidebar/sidebar"; import { CommandPalette } from "@/components/ai/command-palette"; import { SearchDialog } from "@/components/search"; export function AppShell({ children }: { children: ReactNode }) { const [searchOpen, setSearchOpen] = useState(false); useEffect(() => { const onKey = (e: KeyboardEvent) => { const isSlash = e.key === "/" || e.code === "Slash"; if (!isSlash || !(e.metaKey || e.ctrlKey)) return; const t = e.target as HTMLElement | null; if (t?.closest?.("[data-search-dialog-ignore-shortcut]")) return; e.preventDefault(); setSearchOpen(true); }; document.addEventListener("keydown", onKey, true); return () => document.removeEventListener("keydown", onKey, true); }, []); return (
setSearchOpen(true)} />
{children}
); }