- "content": "---\nimport MenuIcon from \"lucide-static/icons/menu.svg\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from \"@/components/ui/collapsible\"\nimport { Header, HeaderActions } from \"@/components/ui/header\"\nimport { Icon } from \"@/components/ui/icon\"\nimport { Logo, LogoImage, LogoText } from \"@/components/ui/logo\"\nimport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n} from \"@/components/ui/navigation-menu\"\nimport { Sheet, SheetContent, SheetTrigger } from \"@/components/ui/sheet\"\nimport {\n SidebarMenu,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n} from \"@/components/ui/sidebar\"\nimport { ThemeToggle } from \"@/components/ui/theme-toggle\"\n\ninterface Props {\n logo?: {\n src?: string\n alt?: string\n text?: string\n href?: string\n }\n links?: {\n icon?: string\n text?: string\n href?: string\n target?: string\n }[]\n socials?: string[]\n menus?: {\n text?: string\n href?: string\n links?: {\n text?: string\n href?: string\n }[]\n }[]\n}\n\nconst { logo, menus, links, socials } = Astro.props\n---\n\n<Header>\n <Logo href={logo?.href || \"/\"}>\n <LogoImage src={logo?.src} alt={logo?.alt} />\n <LogoText>{logo?.text}</LogoText>\n </Logo>\n <NavigationMenu class=\"mr-auto @max-5xl:hidden\">\n <NavigationMenuList>\n {\n menus?.map((menu, index) => (\n <NavigationMenuItem value={`menu-${index}`}>\n {menu.links && menu.links.length > 0 ? (\n <>\n <NavigationMenuTrigger class=\"inline-flex h-8 items-center bg-transparent px-3 py-0\">\n {menu.text}\n </NavigationMenuTrigger>\n <NavigationMenuContent>\n <ul class=\"grid min-w-48 gap-1\">\n {menu.links?.map((link) => (\n <li>\n <NavigationMenuLink href={link.href} class=\"w-full\">\n {link.text}\n </NavigationMenuLink>\n </li>\n ))}\n </ul>\n </NavigationMenuContent>\n </>\n ) : (\n <NavigationMenuLink\n class=\"inline-flex h-8 items-center bg-transparent px-3 py-0\"\n href={menu.href}\n >\n {menu.text}\n </NavigationMenuLink>\n )}\n </NavigationMenuItem>\n ))\n }\n </NavigationMenuList>\n </NavigationMenu>\n <HeaderActions class=\"@max-5xl:hidden\">\n {\n socials?.map((social) => (\n <>\n <Button\n as=\"a\"\n variant=\"ghost\"\n size=\"icon-sm\"\n href={social}\n target=\"_blank\"\n >\n <Icon href={social} />\n </Button>\n </>\n ))\n }\n <ThemeToggle />\n {\n links?.map(({ icon, text, ...link }, i) => (\n <Button\n variant={i === links.length - 1 ? \"default\" : \"outline\"}\n size=\"sm\"\n {...link}\n >\n {icon && <Icon name={icon} />}\n {text}\n </Button>\n ))\n }\n </HeaderActions>\n <Sheet class=\"first:ml-auto\">\n <SheetTrigger\n class=\"@5xl:hidden\"\n variant=\"ghost\"\n size=\"icon\"\n name=\"open-menu-button\"\n >\n <MenuIcon class=\"size-5\" />\n </SheetTrigger>\n <SheetContent class=\"overflow-y-auto px-4 py-12\">\n <SidebarMenu>\n {\n menus?.map((menu) => (\n <SidebarMenuItem>\n {menu.links && menu.links.length > 0 ? (\n <Collapsible>\n <CollapsibleTrigger>\n <SidebarMenuButton class=\"h-10 rounded-md px-4 text-xl\">\n {menu.text}\n </SidebarMenuButton>\n </CollapsibleTrigger>\n <CollapsibleContent>\n <SidebarMenuSub>\n {menu.links?.map((link) => (\n <SidebarMenuSubItem>\n <SidebarMenuSubButton href={link.href}>\n {link.text}\n </SidebarMenuSubButton>\n </SidebarMenuSubItem>\n ))}\n </SidebarMenuSub>\n </CollapsibleContent>\n </Collapsible>\n ) : (\n <SidebarMenuButton\n class=\"h-10 w-full rounded-md px-4 text-xl has-[>svg]:px-4\"\n href={menu.href}\n >\n {menu.text}\n </SidebarMenuButton>\n )}\n </SidebarMenuItem>\n ))\n }\n </SidebarMenu>\n <HeaderActions class=\"flex flex-col gap-2\">\n {\n links?.map(({ icon, text, ...link }, i) => (\n <Button\n variant={i === links.length - 1 ? \"default\" : \"secondary\"}\n class=\"w-full\"\n {...link}\n >\n {icon && <Icon name={icon} />}\n {text}\n </Button>\n ))\n }\n </HeaderActions>\n <HeaderActions>\n {\n socials?.map((social) => (\n <Button as=\"a\" variant=\"ghost\" size=\"icon\" href={social}>\n <Icon href={social} />\n </Button>\n ))\n }\n </HeaderActions>\n </SheetContent>\n </Sheet>\n</Header>\n",
0 commit comments