2025-03-09 20:52:50 +08:00
|
|
|
import { Dialog, DialogBackdrop, DialogPanel } from '@headlessui/react'
|
2025-02-23 10:22:51 +08:00
|
|
|
import type { PropsWithChildren } from 'react'
|
|
|
|
|
|
2025-03-09 20:22:48 +08:00
|
|
|
import { useAdminContext } from '~/contexts/admin'
|
|
|
|
|
|
2025-02-23 12:18:10 +08:00
|
|
|
import { Navbar } from './navbar'
|
|
|
|
|
import { Sidebar } from './sidebar'
|
|
|
|
|
|
2025-02-23 10:22:51 +08:00
|
|
|
export const AdminDashboardLayout = (properties: PropsWithChildren) => {
|
|
|
|
|
const { children } = properties
|
2025-03-09 20:52:50 +08:00
|
|
|
const { isUploadOpen, setIsUploadOpen } = useAdminContext()
|
2025-02-23 10:22:51 +08:00
|
|
|
return (
|
2025-02-23 17:00:17 +08:00
|
|
|
<div className="flex flex-col">
|
2025-02-23 12:18:10 +08:00
|
|
|
<Navbar />
|
2025-02-23 10:22:51 +08:00
|
|
|
<div className="flex">
|
2025-02-23 12:18:10 +08:00
|
|
|
<Sidebar />
|
2025-02-23 17:41:54 +08:00
|
|
|
<div className="min-h-[calc(100dvh-80px)] flex-1 p-8">{children}</div>
|
2025-02-23 10:22:51 +08:00
|
|
|
</div>
|
2025-03-09 20:52:50 +08:00
|
|
|
|
|
|
|
|
<Dialog
|
|
|
|
|
open={!!isUploadOpen}
|
|
|
|
|
onClose={() => {
|
|
|
|
|
setIsUploadOpen(undefined)
|
|
|
|
|
}}
|
|
|
|
|
className="relative z-50"
|
|
|
|
|
transition
|
|
|
|
|
>
|
|
|
|
|
<DialogBackdrop
|
|
|
|
|
className="fixed inset-0 bg-black/50 duration-300 ease-out data-[closed]:opacity-0"
|
|
|
|
|
transition
|
|
|
|
|
/>
|
|
|
|
|
<div className="fixed inset-0 flex w-screen justify-center overflow-y-auto p-0 max-sm:bg-white sm:items-center sm:p-4">
|
|
|
|
|
<DialogPanel
|
|
|
|
|
transition
|
|
|
|
|
className="max-w-lg space-y-6 rounded-lg bg-white p-8 duration-300 ease-out data-[closed]:scale-95 data-[closed]:opacity-0 sm:shadow-lg"
|
|
|
|
|
>
|
|
|
|
|
Upload di mari {isUploadOpen}
|
|
|
|
|
</DialogPanel>
|
|
|
|
|
</div>
|
|
|
|
|
</Dialog>
|
2025-02-23 10:22:51 +08:00
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
}
|