Files
LazyPM/pkg/web/components/layout.templ
Robin Olsen 0dcfe3989d refine architecture
change module name to repo
2026-02-02 11:22:20 +01:00

81 lines
1.4 KiB
Plaintext

package components
templ Layout(props LayoutProps){
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{props.Title}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content={props.Description}>
@Head(props.Head)
</head>
<body>
@Header(props.Header)
<main>
{ children... }
</main>
@Footer(props.Footer)
</body>
</html>
}
type LayoutProps struct {
Title string
Description string
Head HeadProps
Header HeaderProps
Footer FooterProps
}
templ Head(props HeadProps){
for _, link := range props.Links {
<link href={ link.Href } rel={ link.Rel }>
}
for _, script := range props.Scripts {
<script src={ script.Src } defer={ script.Defer }></script>
}
}
type HeadProps struct {
Links []Link
Scripts []Script
}
type Link struct {
Href string
Rel string
}
type Script struct {
Src string
Defer bool
}
templ Header(props HeaderProps){
<header>
<nav>
for _, route := range props.Routes {
<a href={ route.Path }>{ route.Name }</a>
}
</nav>
</header>
}
type HeaderProps struct {
Routes []NavRoute
}
type NavRoute struct {
Name string
Path string
}
templ Footer(props FooterProps){
}
type FooterProps struct {
}