import { ComponentChildren, Fragment, VNode, h } from "preact"; import { Dialog, Menu, Transition } from "@headlessui/react"; import { Bars3Icon, BellIcon, CalendarIcon, ChartPieIcon, Cog6ToothIcon, DocumentDuplicateIcon, FolderIcon, HomeIcon, UsersIcon, XMarkIcon, } from "@heroicons/react/24/outline"; import { ChevronDownIcon, MagnifyingGlassIcon, } from "@heroicons/react/20/solid"; import { useRef, useState } from "preact/hooks"; import { NiceForm } from "./NiceForm.js"; const navigation = [ { name: "Dashboard", href: "#", icon: HomeIcon, current: true }, { name: "Team", href: "#", icon: UsersIcon, current: false }, { name: "Projects", href: "#", icon: FolderIcon, current: false }, { name: "Calendar", href: "#", icon: CalendarIcon, current: false }, { name: "Documents", href: "#", icon: DocumentDuplicateIcon, current: false }, { name: "Reports", href: "#", icon: ChartPieIcon, current: false }, ]; const teams = [ { id: 1, name: "Heroicons", href: "#", initial: "H", current: false }, { id: 2, name: "Tailwind Labs", href: "#", initial: "T", current: false }, { id: 3, name: "Workcation", href: "#", initial: "W", current: false }, ]; const userNavigation = [ { name: "Your profile", href: "#" }, { name: "Sign out", href: "#" }, ]; function classNames(...classes: string[]) { return classes.filter(Boolean).join(" "); } /** * mapping route to view * not found (error page) * nested, index element, relative routes * link interception * form POST interception, call action * fromData => Object.fromEntries * segments in the URL * navigationState: idle, submitting, loading * form GET interception: does a navigateTo * form GET Sync: * 1.- back after submit: useEffect to sync URL to form * 2.- refresh after submit: input default value * useSubmit for form submission onChange, history replace * * post form without redirect * * * @param param0 * @returns */ export function Dashboard({ children, }: { children?: ComponentChildren; }): VNode { const [sidebarOpen, setSidebarOpen] = useState(false); const logRef = useRef(null); return ( <>
Your Company
{/* Separator */}
); }