mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-18 14:27:51 +00:00
47 lines
2.0 KiB
TypeScript
47 lines
2.0 KiB
TypeScript
import React from 'react';
|
|
import { DashboardSidebar } from './DashboardSidebar';
|
|
|
|
interface DashboardLayoutProps {
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export function DashboardLayout({ children }: DashboardLayoutProps): JSX.Element {
|
|
const [sidebarOpen, setSidebarOpen] = React.useState(false);
|
|
|
|
return (
|
|
<>
|
|
<button
|
|
onClick={() => setSidebarOpen(!sidebarOpen)}
|
|
type="button"
|
|
className="inline-flex items-center p-2 mt-2 ms-3 text-sm text-gray-500 rounded-lg sm:hidden hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
|
|
>
|
|
<span className="sr-only">Abrir menu</span>
|
|
<svg className="w-6 h-6" aria-hidden="true" fill="currentColor" viewBox="0 0 20 20">
|
|
<path clipRule="evenodd" fillRule="evenodd" d="M2 4.75A.75.75 0 012.75 4h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 4.75zm0 10.5a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5h-7.5a.75.75 0 01-.75-.75zM2 10a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 10z" />
|
|
</svg>
|
|
</button>
|
|
|
|
<aside
|
|
className={`fixed top-0 left-0 z-40 w-64 h-screen transition-transform ${
|
|
sidebarOpen ? 'translate-x-0' : '-translate-x-full'
|
|
} sm:translate-x-0`}
|
|
>
|
|
<div className="h-full px-3 py-4 overflow-y-auto bg-white border-r border-gray-200 dark:bg-gray-800 dark:border-gray-700">
|
|
<div className="flex items-center pb-4 mb-4 border-b border-gray-200 dark:border-gray-700">
|
|
<img src="/logo.svg" className="h-8 me-3" alt="Logo" />
|
|
<span className="self-center text-xl font-semibold whitespace-nowrap dark:text-white">
|
|
Leiturama
|
|
</span>
|
|
</div>
|
|
<DashboardSidebar />
|
|
</div>
|
|
</aside>
|
|
|
|
<div className="p-4 sm:ml-64">
|
|
<div className="p-4 border-2 border-gray-200 border-dashed rounded-lg dark:border-gray-700">
|
|
{children}
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|