diff --git a/components/sidebar.templ b/components/sidebar.templ new file mode 100644 index 0000000..db4f4aa --- /dev/null +++ b/components/sidebar.templ @@ -0,0 +1,181 @@ +package components + +// SidebarItem represents a navigation item in the sidebar +type SidebarItem struct { + ID string + Icon string + Label string + Href string + Active bool + Badge string +} + +// DefaultSidebarItems returns the main navigation items +func DefaultSidebarItems(activeTab string) []SidebarItem { + return []SidebarItem{ + {ID: "overview", Icon: "house", Label: "Overview", Href: "/dashboard?tab=overview", Active: activeTab == "overview" || activeTab == ""}, + {ID: "transactions", Icon: "right-left", Label: "Transactions", Href: "/dashboard?tab=transactions", Active: activeTab == "transactions"}, + {ID: "tokens", Icon: "wallet", Label: "Tokens", Href: "/dashboard?tab=tokens", Active: activeTab == "tokens"}, + {ID: "nfts", Icon: "images", Label: "NFTs", Href: "/dashboard?tab=nfts", Active: activeTab == "nfts"}, + {ID: "activity", Icon: "clock-rotate-left", Label: "Activity", Href: "/dashboard?tab=activity", Active: activeTab == "activity"}, + } +} + +// SecondarySidebarItems returns the bottom navigation items +func SecondarySidebarItems() []SidebarItem { + return []SidebarItem{ + {ID: "settings", Icon: "gear", Label: "Settings", Href: "/settings", Active: false}, + } +} + +// Sidebar renders the Supabase-style icon sidebar +templ Sidebar(items []SidebarItem, secondaryItems []SidebarItem) { + +} + +// SidebarStyles renders the CSS for the sidebar +templ SidebarStyles() { + +} diff --git a/components/sidebar_templ.go b/components/sidebar_templ.go new file mode 100644 index 0000000..2540f3d --- /dev/null +++ b/components/sidebar_templ.go @@ -0,0 +1,277 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.977 +package components + +//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" + +// SidebarItem represents a navigation item in the sidebar +type SidebarItem struct { + ID string + Icon string + Label string + Href string + Active bool + Badge string +} + +// DefaultSidebarItems returns the main navigation items +func DefaultSidebarItems(activeTab string) []SidebarItem { + return []SidebarItem{ + {ID: "overview", Icon: "house", Label: "Overview", Href: "/dashboard?tab=overview", Active: activeTab == "overview" || activeTab == ""}, + {ID: "transactions", Icon: "right-left", Label: "Transactions", Href: "/dashboard?tab=transactions", Active: activeTab == "transactions"}, + {ID: "tokens", Icon: "wallet", Label: "Tokens", Href: "/dashboard?tab=tokens", Active: activeTab == "tokens"}, + {ID: "nfts", Icon: "images", Label: "NFTs", Href: "/dashboard?tab=nfts", Active: activeTab == "nfts"}, + {ID: "activity", Icon: "clock-rotate-left", Label: "Activity", Href: "/dashboard?tab=activity", Active: activeTab == "activity"}, + } +} + +// SecondarySidebarItems returns the bottom navigation items +func SecondarySidebarItems() []SidebarItem { + return []SidebarItem{ + {ID: "settings", Icon: "gear", Label: "Settings", Href: "/settings", Active: false}, + } +} + +// Sidebar renders the Supabase-style icon sidebar +func Sidebar(items []SidebarItem, secondaryItems []SidebarItem) 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 + }) +} + +// SidebarStyles renders the CSS for the sidebar +func SidebarStyles() 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_Var14 := templ.GetChildren(ctx) + if templ_7745c5c3_Var14 == nil { + templ_7745c5c3_Var14 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate