UNPKG

create-vanjs

Version:

🍦 Quick tool for scaffolding your first VanJS project

106 lines (102 loc) 3.15 kB
import van from "vanjs-core"; import { A } from "@vanjs/router"; export const route = { preload: async () => { // in most cases you may want to enforce user access control console.log("Admin Layout preload triggered"); }, load: async () => { // Load data if needed // you might want to cache this data console.log("Admin Layout load triggered"); }, }; export const Layout = (props) => { const open = van.state(false); const onOpenChange = () => { const current = open.val; open.val = !current; }; return [ <> <div class="flex p-4 gap-2 md:hidden items-center"> <label aria-label="Open menu" for="drawer" class="btn btn-ghost drawer-button" > <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" class="inline-block h-5 w-5 stroke-current md:h-6 md:w-6" > <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" > </path> </svg> <span class="font-bold">Admin Navigation</span> </label> </div> <div class="drawer mx-auto md:drawer-open"> <input id="drawer" type="checkbox" class="drawer-toggle" onChange={onOpenChange} /> <div class="drawer-content px-4" inert={open}> {props?.children} </div> <div class="drawer-side z-40" style="scroll-behavior: smooth; scroll-padding-top: 5rem;" > <label for="drawer" class="drawer-overlay" aria-label="Close Menu"> </label> <aside class="bg-base-200 min-h-screen w-80"> <div class="navbar sticky top-0 z-20 pb-0 pt-4 px-4 backdrop-blur-md font-bold"> Admin navigation </div> <ul class="menu w-full z-10"> <li> <A href="/admin" class="aria-[current=page]:bg-primary aria-[current=page]:text-primary-content" > <span>Dashboard</span> </A> </li> <li> <A href="/admin/articles" class="aria-[current=page]:bg-primary aria-[current=page]:text-primary-content" > <span>Articles</span> </A> <A href="/admin/categories" class="aria-[current=page]:bg-primary aria-[current=page]:text-primary-content" > <span>Categories</span> </A> <A href="/admin/users" class="aria-[current=page]:bg-primary aria-[current=page]:text-primary-content" > <span>Users</span> </A> </li> </ul> </aside> </div> </div> </>, ]; };