From 399cd436261b90e4e8feeae989f5fc06880076a6 Mon Sep 17 00:00:00 2001 From: Haelnorr Date: Thu, 6 Feb 2025 14:24:23 +1100 Subject: [PATCH] Refactored navbar and added error page --- handlers/index.go | 2 +- view/component/nav/navbar.templ | 25 +++++++ view/component/nav/navbar_templ.go | 61 ++++++++++++++++ view/component/nav/navbar_templ.txt | 3 + view/component/nav/navbaritems.go | 15 ++++ view/component/nav/navbarleft.templ | 18 +++++ view/component/nav/navbarleft_templ.go | 72 +++++++++++++++++++ view/component/nav/navbarleft_templ.txt | 5 ++ view/component/nav/navbarright.templ | 43 +++++++++++ view/component/nav/navbarright_templ.go | 40 +++++++++++ view/component/nav/navbarright_templ.txt | 1 + view/component/{ => nav}/sidenav.templ | 2 +- view/component/nav/sidenav_templ.go | 72 +++++++++++++++++++ view/component/nav/sidenav_templ.txt | 5 ++ view/component/navbar.templ | 90 ------------------------ view/layout/global.templ | 40 +++++------ view/page/error.templ | 30 ++++++++ 17 files changed, 409 insertions(+), 115 deletions(-) create mode 100644 view/component/nav/navbar.templ create mode 100644 view/component/nav/navbar_templ.go create mode 100644 view/component/nav/navbar_templ.txt create mode 100644 view/component/nav/navbaritems.go create mode 100644 view/component/nav/navbarleft.templ create mode 100644 view/component/nav/navbarleft_templ.go create mode 100644 view/component/nav/navbarleft_templ.txt create mode 100644 view/component/nav/navbarright.templ create mode 100644 view/component/nav/navbarright_templ.go create mode 100644 view/component/nav/navbarright_templ.txt rename view/component/{ => nav}/sidenav.templ (98%) create mode 100644 view/component/nav/sidenav_templ.go create mode 100644 view/component/nav/sidenav_templ.txt delete mode 100644 view/component/navbar.templ create mode 100644 view/page/error.templ diff --git a/handlers/index.go b/handlers/index.go index 0f5bd8a..9cf524e 100644 --- a/handlers/index.go +++ b/handlers/index.go @@ -9,7 +9,7 @@ func HandleRoot() http.Handler { return http.HandlerFunc( func(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { - http.NotFound(w, r) + page.Error("404", "Page not found", "The page or resource you have requested does not exist").Render(r.Context(), w) return } page.Index().Render(r.Context(), w) diff --git a/view/component/nav/navbar.templ b/view/component/nav/navbar.templ new file mode 100644 index 0000000..eadf5e7 --- /dev/null +++ b/view/component/nav/navbar.templ @@ -0,0 +1,25 @@ +package nav + +templ Navbar() { + {{ navItems := getNavItems() }} +
+
+
+ + + + Reshoot + + +
+ @navLeft(navItems) + @navRight() +
+
+
+ @sideNav(navItems) +
+} diff --git a/view/component/nav/navbar_templ.go b/view/component/nav/navbar_templ.go new file mode 100644 index 0000000..07196b6 --- /dev/null +++ b/view/component/nav/navbar_templ.go @@ -0,0 +1,61 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.833 +package nav + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func Navbar() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + navItems := getNavItems() + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
Project Reshoot
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = navLeft(navItems).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = navRight().Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = sideNav(navItems).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/view/component/nav/navbar_templ.txt b/view/component/nav/navbar_templ.txt new file mode 100644 index 0000000..6a904a0 --- /dev/null +++ b/view/component/nav/navbar_templ.txt @@ -0,0 +1,3 @@ +
+
\ No newline at end of file diff --git a/view/component/nav/navbaritems.go b/view/component/nav/navbaritems.go new file mode 100644 index 0000000..124d6a5 --- /dev/null +++ b/view/component/nav/navbaritems.go @@ -0,0 +1,15 @@ +package nav + +type NavItem struct { + name string + href string +} + +func getNavItems() []NavItem { + return []NavItem{ + { + name: "Movies", + href: "/movies", + }, + } +} diff --git a/view/component/nav/navbarleft.templ b/view/component/nav/navbarleft.templ new file mode 100644 index 0000000..0d06643 --- /dev/null +++ b/view/component/nav/navbarleft.templ @@ -0,0 +1,18 @@ +package nav + +templ navLeft(navItems []NavItem) { + +} diff --git a/view/component/nav/navbarleft_templ.go b/view/component/nav/navbarleft_templ.go new file mode 100644 index 0000000..c026fee --- /dev/null +++ b/view/component/nav/navbarleft_templ.go @@ -0,0 +1,72 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.833 +package nav + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func navLeft(navItems []NavItem) templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/view/component/nav/navbarleft_templ.txt b/view/component/nav/navbarleft_templ.txt new file mode 100644 index 0000000..91a59e4 --- /dev/null +++ b/view/component/nav/navbarleft_templ.txt @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/view/component/nav/navbarright.templ b/view/component/nav/navbarright.templ new file mode 100644 index 0000000..ef9b7ce --- /dev/null +++ b/view/component/nav/navbarright.templ @@ -0,0 +1,43 @@ +package nav + +templ navRight() { +
+ + +
+} diff --git a/view/component/nav/navbarright_templ.go b/view/component/nav/navbarright_templ.go new file mode 100644 index 0000000..7b2c338 --- /dev/null +++ b/view/component/nav/navbarright_templ.go @@ -0,0 +1,40 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.833 +package nav + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import templruntime "github.com/a-h/templ/runtime" + +func navRight() templ.Component { + return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { + templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context + if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { + return templ_7745c5c3_CtxErr + } + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W) + if !templ_7745c5c3_IsBuffer { + defer func() { + templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer) + if templ_7745c5c3_Err == nil { + templ_7745c5c3_Err = templ_7745c5c3_BufErr + } + }() + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/view/component/nav/navbarright_templ.txt b/view/component/nav/navbarright_templ.txt new file mode 100644 index 0000000..3f87a43 --- /dev/null +++ b/view/component/nav/navbarright_templ.txt @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/view/component/sidenav.templ b/view/component/nav/sidenav.templ similarity index 98% rename from view/component/sidenav.templ rename to view/component/nav/sidenav.templ index caee138..42c504b 100644 --- a/view/component/sidenav.templ +++ b/view/component/nav/sidenav.templ @@ -1,4 +1,4 @@ -package component +package nav templ sideNav(navItems []NavItem) {
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/view/component/nav/sidenav_templ.txt b/view/component/nav/sidenav_templ.txt new file mode 100644 index 0000000..b004ee4 --- /dev/null +++ b/view/component/nav/sidenav_templ.txt @@ -0,0 +1,5 @@ +
\ No newline at end of file diff --git a/view/component/navbar.templ b/view/component/navbar.templ deleted file mode 100644 index ab796a8..0000000 --- a/view/component/navbar.templ +++ /dev/null @@ -1,90 +0,0 @@ -package component - -type NavItem struct { - name string - href string -} - -func getNavItems() []NavItem { - return []NavItem{ - { - name: "Movies", - href: "/movies", - }, - } -} - -templ Navbar() { -
-
-
- - - Reshoot - - - -
- -
- - -
-
-
-
- @sideNav(getNavItems()) -
-} diff --git a/view/layout/global.templ b/view/layout/global.templ index 32ba23b..1d9f227 100644 --- a/view/layout/global.templ +++ b/view/layout/global.templ @@ -1,21 +1,18 @@ package layout -import "projectreshoot/view/component" +import "projectreshoot/view/component/nav" templ Global() { - - - - - - - Project Reshoot - - - - + + - - - - @component.Navbar() -

Hello world!

- { children... } - - - + + + @nav.Navbar() + { children... } + + } diff --git a/view/page/error.templ b/view/page/error.templ new file mode 100644 index 0000000..0ee65ac --- /dev/null +++ b/view/page/error.templ @@ -0,0 +1,30 @@ +package page + +import "projectreshoot/view/layout" + +templ Error(code string, err string, message string) { + @layout.Global() { +
+
+

{ code }

+

{ err }

+

{ message }

+ Go to homepage +
+
+ } +}