import { useState, useCallback } from 'react';
import type { ReactNode } from 'react';
import { Sidebar } from './Sidebar';
import { Header } from './Header';

export function AppLayout({
  children,
  title,
}: {
  children: ReactNode;
  title: string;
}) {
  const [sidebarOpen, setSidebarOpen] = useState(false);

  const closeSidebar = useCallback(() => setSidebarOpen(false), []);
  const toggleSidebar = useCallback(() => setSidebarOpen((prev) => !prev), []);

  return (
    <div className="min-h-screen bg-surface-50 grid grid-cols-[1fr] lg:grid-cols-[256px_1fr]">
      <Sidebar open={sidebarOpen} onClose={closeSidebar} />
      <div className="col-start-1 lg:col-start-2">
        <Header title={title} onMenuClick={toggleSidebar} />
        <main className="p-4 sm:p-6">{children}</main>
      </div>
    </div>
  );
}