From 5577d96b0d758cba16a411825ba83a26585b7048 Mon Sep 17 00:00:00 2001 From: Hayden Hargreaves Date: Mon, 16 Jun 2025 22:21:06 -0700 Subject: [PATCH] (STYLE/UI): Implemented the nav bar for mobile and desktop. This includes creation of the basic pages. --- internal/app/handlers/page_handler.go | 35 + internal/app/server/server.go | 7 + internal/templates/components/button.templ | 0 internal/templates/components/button_templ.go | 10 - internal/templates/components/navbar.templ | 98 +++ internal/templates/components/navbar_templ.go | 297 +++++++ internal/templates/layouts/app_layout.templ | 27 +- .../templates/layouts/app_layout_templ.go | 4 +- internal/templates/pages/create.templ | 7 + internal/templates/pages/create_templ.go | 42 + internal/templates/pages/favorites.templ | 7 + internal/templates/pages/favorites_templ.go | 42 + internal/templates/pages/home.templ | 7 + internal/templates/pages/home_templ.go | 42 + internal/templates/pages/list.templ | 8 + internal/templates/pages/list_templ.go | 42 + internal/templates/pages/profile.templ | 9 + internal/templates/pages/profile_templ.go | 42 + web/static/css/main.css | 2 - web/static/css/tailwind.css | 764 ++---------------- 20 files changed, 774 insertions(+), 718 deletions(-) delete mode 100644 internal/templates/components/button.templ delete mode 100644 internal/templates/components/button_templ.go create mode 100644 internal/templates/components/navbar.templ create mode 100644 internal/templates/components/navbar_templ.go create mode 100644 internal/templates/pages/create.templ create mode 100644 internal/templates/pages/create_templ.go create mode 100644 internal/templates/pages/favorites.templ create mode 100644 internal/templates/pages/favorites_templ.go create mode 100644 internal/templates/pages/home.templ create mode 100644 internal/templates/pages/home_templ.go create mode 100644 internal/templates/pages/list.templ create mode 100644 internal/templates/pages/list_templ.go create mode 100644 internal/templates/pages/profile.templ create mode 100644 internal/templates/pages/profile_templ.go diff --git a/internal/app/handlers/page_handler.go b/internal/app/handlers/page_handler.go index 309c071..c9df28c 100644 --- a/internal/app/handlers/page_handler.go +++ b/internal/app/handlers/page_handler.go @@ -12,3 +12,38 @@ func LoginPage(ctx *gin.Context) { ctx.HTML(200, "", layouts.AppLayout(title, page)) } + +func HomePage(ctx *gin.Context) { + title := "Potion - Home" + page := pages.HomePage() + + ctx.HTML(200, "", layouts.AppLayout(title, page)) +} + +func FavoritesPage(ctx *gin.Context) { + title := "Potion - Favorites" + page := pages.FavoritesPage() + + ctx.HTML(200, "", layouts.AppLayout(title, page)) +} + +func CreatePage(ctx *gin.Context) { + title := "Potion - Create" + page := pages.CreatePage() + + ctx.HTML(200, "", layouts.AppLayout(title, page)) +} + +func ProfilePage(ctx *gin.Context) { + title := "Potion - Profile" + page := pages.ProfilePage() + + ctx.HTML(200, "", layouts.AppLayout(title, page)) +} + +func ListPage(ctx *gin.Context) { + title := "Potion - Shopping List" + page := pages.ListPage() + + ctx.HTML(200, "", layouts.AppLayout(title, page)) +} diff --git a/internal/app/server/server.go b/internal/app/server/server.go index e41cfbd..10d92b4 100644 --- a/internal/app/server/server.go +++ b/internal/app/server/server.go @@ -3,6 +3,7 @@ package server import ( "database/sql" "fmt" + "net/http" "os" "github.com/a-h/templ/examples/integration-gin/gintemplrenderer" @@ -148,6 +149,12 @@ func (s *Server) Setup() *Server { // WEB router endpoints router_web.GET("/login", handlers.LoginPage) + router_web.GET("/", func(ctx *gin.Context) { ctx.Redirect(http.StatusSeeOther, "/v1/web/home") }) + router_web.GET("/home", handlers.HomePage) + router_web.GET("/favorites", handlers.FavoritesPage) + router_web.GET("/create", handlers.CreatePage) + router_web.GET("/profile", handlers.ProfilePage) + router_web.GET("/list", handlers.ListPage) // Authentication router_api.GET("/auth/login", handlers.GoogleLogin) diff --git a/internal/templates/components/button.templ b/internal/templates/components/button.templ deleted file mode 100644 index e69de29..0000000 diff --git a/internal/templates/components/button_templ.go b/internal/templates/components/button_templ.go deleted file mode 100644 index 1d1995d..0000000 --- a/internal/templates/components/button_templ.go +++ /dev/null @@ -1,10 +0,0 @@ -// Code generated by templ - DO NOT EDIT. - -// templ: version: v0.3.865 - -//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" - -var _ = templruntime.GeneratedTemplate \ No newline at end of file diff --git a/internal/templates/components/navbar.templ b/internal/templates/components/navbar.templ new file mode 100644 index 0000000..3d0ad43 --- /dev/null +++ b/internal/templates/components/navbar.templ @@ -0,0 +1,98 @@ +package components + +import "strings" + +templ hamburgerMenu() { + + + +} + +templ navLink(current, name, url string) { + + { name } + +} + +templ dropdownLink(name, url string) { + + { name } + +} + +templ listIcon(current, name, url string) { + + + + + +} + +templ Navbar(current string) { + +} diff --git a/internal/templates/components/navbar_templ.go b/internal/templates/components/navbar_templ.go new file mode 100644 index 0000000..d09650b --- /dev/null +++ b/internal/templates/components/navbar_templ.go @@ -0,0 +1,297 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +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" + +import "strings" + +func hamburgerMenu() 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 + } + templ_7745c5c3_Err = dropdownLink("Home", "/v1/web/home").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = dropdownLink("Favorites", "/v1/web/favorites").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = dropdownLink("Create", "/v1/web/create").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = dropdownLink("Profile", "/v1/web/profile").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = dropdownLink("Shopping List", "/v1/web/list").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 + } + return nil + }) +} + +func navLink(current, name, url string) 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_Var2 := templ.GetChildren(ctx) + if templ_7745c5c3_Var2 == nil { + templ_7745c5c3_Var2 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/components/navbar.templ`, Line: 48, Col: 8} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func dropdownLink(name, url string) 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_Var5 := templ.GetChildren(ctx) + if templ_7745c5c3_Var5 == nil { + templ_7745c5c3_Var5 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(name) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/components/navbar.templ`, Line: 54, Col: 8} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func listIcon(current, name, url string) 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_Var8 := templ.GetChildren(ctx) + if templ_7745c5c3_Var8 == nil { + templ_7745c5c3_Var8 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +func Navbar(current string) 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_Var10 := templ.GetChildren(ctx) + if templ_7745c5c3_Var10 == nil { + templ_7745c5c3_Var10 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/templates/layouts/app_layout.templ b/internal/templates/layouts/app_layout.templ index 9df544e..bce58eb 100644 --- a/internal/templates/layouts/app_layout.templ +++ b/internal/templates/layouts/app_layout.templ @@ -3,18 +3,17 @@ package templates // AppLayout is the main application layout, this does not contain any content other than // meta data, links, scripts and whatever is passed into it as a component. templ AppLayout(title string, child templ.Component) { - - - - - - - { title } - - - - - @child - - + + + + + + { title } + + + + + @child + + } diff --git a/internal/templates/layouts/app_layout_templ.go b/internal/templates/layouts/app_layout_templ.go index f7c4eee..91fbca2 100644 --- a/internal/templates/layouts/app_layout_templ.go +++ b/internal/templates/layouts/app_layout_templ.go @@ -38,13 +38,13 @@ func AppLayout(title string, child templ.Component) templ.Component { var templ_7745c5c3_Var2 string templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title) if templ_7745c5c3_Err != nil { - return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/layouts/app_layout.templ`, Line: 12, Col: 16} + return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/templates/layouts/app_layout.templ`, Line: 11, Col: 17} } _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/templates/pages/create.templ b/internal/templates/pages/create.templ new file mode 100644 index 0000000..76e7974 --- /dev/null +++ b/internal/templates/pages/create.templ @@ -0,0 +1,7 @@ +package templates + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +templ CreatePage() { + @components.Navbar("create") +} diff --git a/internal/templates/pages/create_templ.go b/internal/templates/pages/create_templ.go new file mode 100644 index 0000000..c909e95 --- /dev/null +++ b/internal/templates/pages/create_templ.go @@ -0,0 +1,42 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +package templates + +//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" + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +func CreatePage() 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 = components.Navbar("create").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/templates/pages/favorites.templ b/internal/templates/pages/favorites.templ new file mode 100644 index 0000000..0c965bc --- /dev/null +++ b/internal/templates/pages/favorites.templ @@ -0,0 +1,7 @@ +package templates + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +templ FavoritesPage() { + @components.Navbar("favorites") +} diff --git a/internal/templates/pages/favorites_templ.go b/internal/templates/pages/favorites_templ.go new file mode 100644 index 0000000..f2d6abe --- /dev/null +++ b/internal/templates/pages/favorites_templ.go @@ -0,0 +1,42 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +package templates + +//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" + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +func FavoritesPage() 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 = components.Navbar("favorites").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/templates/pages/home.templ b/internal/templates/pages/home.templ new file mode 100644 index 0000000..766d07f --- /dev/null +++ b/internal/templates/pages/home.templ @@ -0,0 +1,7 @@ +package templates + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +templ HomePage() { + @components.Navbar("home") +} diff --git a/internal/templates/pages/home_templ.go b/internal/templates/pages/home_templ.go new file mode 100644 index 0000000..54e883c --- /dev/null +++ b/internal/templates/pages/home_templ.go @@ -0,0 +1,42 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +package templates + +//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" + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +func HomePage() 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 = components.Navbar("home").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/templates/pages/list.templ b/internal/templates/pages/list.templ new file mode 100644 index 0000000..8276bb6 --- /dev/null +++ b/internal/templates/pages/list.templ @@ -0,0 +1,8 @@ +package templates + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +templ ListPage() { + @components.Navbar("list") +} + diff --git a/internal/templates/pages/list_templ.go b/internal/templates/pages/list_templ.go new file mode 100644 index 0000000..2d6b0ed --- /dev/null +++ b/internal/templates/pages/list_templ.go @@ -0,0 +1,42 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +package templates + +//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" + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +func ListPage() 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 = components.Navbar("list").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/internal/templates/pages/profile.templ b/internal/templates/pages/profile.templ new file mode 100644 index 0000000..e162f0b --- /dev/null +++ b/internal/templates/pages/profile.templ @@ -0,0 +1,9 @@ +package templates + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +templ ProfilePage() { + @components.Navbar("profile") +} + + diff --git a/internal/templates/pages/profile_templ.go b/internal/templates/pages/profile_templ.go new file mode 100644 index 0000000..9632aca --- /dev/null +++ b/internal/templates/pages/profile_templ.go @@ -0,0 +1,42 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.3.865 +package templates + +//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" + +import "github.com/haydenhargreaves/Potion/internal/templates/components" + +func ProfilePage() 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 = components.Navbar("profile").Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + return nil + }) +} + +var _ = templruntime.GeneratedTemplate diff --git a/web/static/css/main.css b/web/static/css/main.css index fc92c62..f1d8c73 100644 --- a/web/static/css/main.css +++ b/web/static/css/main.css @@ -1,3 +1 @@ @import "tailwindcss"; -@source "./internal/templates/**/*.templ"; -@plugin "daisyui"; diff --git a/web/static/css/tailwind.css b/web/static/css/tailwind.css index 9759576..032bc9a 100644 --- a/web/static/css/tailwind.css +++ b/web/static/css/tailwind.css @@ -5,57 +5,28 @@ :root, :host { --font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; - --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif; --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace; --color-red-500: oklch(63.7% 0.237 25.331); - --color-red-600: oklch(57.7% 0.245 27.325); + --color-blue-400: oklch(70.7% 0.165 254.624); --color-blue-500: oklch(62.3% 0.214 259.815); - --color-blue-600: oklch(54.6% 0.245 262.881); - --color-blue-700: oklch(48.8% 0.243 264.376); - --color-purple-700: oklch(49.6% 0.265 301.924); - --color-purple-800: oklch(43.8% 0.218 303.724); - --color-purple-900: oklch(38.1% 0.176 304.987); - --color-purple-950: oklch(29.1% 0.149 302.717); - --color-pink-100: oklch(94.8% 0.028 342.258); - --color-pink-200: oklch(89.9% 0.061 343.231); - --color-pink-400: oklch(71.8% 0.202 349.761); --color-gray-50: oklch(98.5% 0.002 247.839); --color-gray-100: oklch(96.7% 0.003 264.542); --color-gray-200: oklch(92.8% 0.006 264.531); --color-gray-300: oklch(87.2% 0.01 258.338); - --color-gray-400: oklch(70.7% 0.022 261.325); --color-gray-600: oklch(44.6% 0.03 256.802); + --color-gray-700: oklch(37.3% 0.034 259.733); --color-gray-800: oklch(27.8% 0.033 256.848); - --color-gray-900: oklch(21% 0.034 264.665); - --color-gray-950: oklch(13% 0.028 261.692); - --color-neutral-400: oklch(70.8% 0 0); - --color-neutral-500: oklch(55.6% 0 0); - --color-neutral-600: oklch(43.9% 0 0); - --color-neutral-700: oklch(37.1% 0 0); - --color-neutral-800: oklch(26.9% 0 0); - --color-neutral-900: oklch(20.5% 0 0); - --color-black: #000; --color-white: #fff; --spacing: 0.25rem; - --text-xs: 0.75rem; - --text-xs--line-height: calc(1 / 0.75); --text-sm: 0.875rem; --text-sm--line-height: calc(1.25 / 0.875); --text-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); - --text-3xl: 1.875rem; - --text-3xl--line-height: calc(2.25 / 1.875); --font-weight-medium: 500; - --font-weight-semibold: 600; --font-weight-bold: 700; - --radius-sm: 0.25rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; - --blur-xs: 4px; - --blur-sm: 8px; - --blur-xl: 24px; - --blur-3xl: 64px; --default-transition-duration: 150ms; --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); --default-font-family: var(--font-sans); @@ -208,9 +179,6 @@ } } @layer utilities { - .pointer-events-none { - pointer-events: none; - } .absolute { position: absolute; } @@ -220,35 +188,29 @@ .static { position: static; } - .inset-y-0 { - inset-block: calc(var(--spacing) * 0); + .top-0 { + top: calc(var(--spacing) * 0); } - .end-0 { - inset-inline-end: calc(var(--spacing) * 0); + .top-\[50\%\] { + top: 50%; } - .my-2 { - margin-block: calc(var(--spacing) * 2); + .top-\[95\%\] { + top: 95%; } - .my-4 { - margin-block: calc(var(--spacing) * 4); + .top-\[99\%\] { + top: 99%; } - .my-5 { - margin-block: calc(var(--spacing) * 5); + .top-\[100\%\] { + top: 100%; } - .my-8 { - margin-block: calc(var(--spacing) * 8); + .top-auto { + top: auto; } - .my-10 { - margin-block: calc(var(--spacing) * 10); + .bottom-0 { + bottom: calc(var(--spacing) * 0); } - .ms-3 { - margin-inline-start: calc(var(--spacing) * 3); - } - .mt-0 { - margin-top: calc(var(--spacing) * 0); - } - .mt-0\.5 { - margin-top: calc(var(--spacing) * 0.5); + .left-0 { + left: calc(var(--spacing) * 0); } .mt-2 { margin-top: calc(var(--spacing) * 2); @@ -256,21 +218,6 @@ .mt-5 { margin-top: calc(var(--spacing) * 5); } - .mt-7 { - margin-top: calc(var(--spacing) * 7); - } - .mt-8 { - margin-top: calc(var(--spacing) * 8); - } - .mt-10 { - margin-top: calc(var(--spacing) * 10); - } - .mt-14 { - margin-top: calc(var(--spacing) * 14); - } - .mb-2 { - margin-bottom: calc(var(--spacing) * 2); - } .block { display: block; } @@ -289,14 +236,6 @@ .table { display: table; } - .size-1 { - width: calc(var(--spacing) * 1); - height: calc(var(--spacing) * 1); - } - .size-1\/3 { - width: calc(1/3 * 100%); - height: calc(1/3 * 100%); - } .size-5 { width: calc(var(--spacing) * 5); height: calc(var(--spacing) * 5); @@ -305,15 +244,11 @@ width: calc(var(--spacing) * 6); height: calc(var(--spacing) * 6); } - .size-10 { - width: calc(var(--spacing) * 10); - height: calc(var(--spacing) * 10); + .h-4 { + height: calc(var(--spacing) * 4); } - .h-1 { - height: calc(var(--spacing) * 1); - } - .h-1\/2 { - height: calc(1/2 * 100%); + .h-5 { + height: calc(var(--spacing) * 5); } .h-auto { height: auto; @@ -327,21 +262,6 @@ .w-1\/2 { width: calc(1/2 * 100%); } - .w-1\/3 { - width: calc(1/3 * 100%); - } - .w-1\/4 { - width: calc(1/4 * 100%); - } - .w-2 { - width: calc(var(--spacing) * 2); - } - .w-2\/5 { - width: calc(2/5 * 100%); - } - .w-2\/7 { - width: calc(2/7 * 100%); - } .w-3 { width: calc(var(--spacing) * 3); } @@ -351,23 +271,14 @@ .w-4 { width: calc(var(--spacing) * 4); } - .w-4\/5 { - width: calc(4/5 * 100%); - } .w-full { width: 100%; } - .flex-shrink { - flex-shrink: 1; - } - .shrink-0 { - flex-shrink: 0; - } .border-collapse { border-collapse: collapse; } - .transform { - transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); + .cursor-pointer { + cursor: pointer; } .resize { resize: both; @@ -375,8 +286,8 @@ .flex-col { flex-direction: column; } - .flex-wrap { - flex-wrap: wrap; + .place-content-center { + place-content: center; } .place-items-center { place-items: center; @@ -390,30 +301,15 @@ .justify-center { justify-content: center; } - .justify-evenly { - justify-content: space-evenly; - } - .gap-2 { - gap: calc(var(--spacing) * 2); - } - .gap-4 { - gap: calc(var(--spacing) * 4); - } - .gap-x-1 { - column-gap: calc(var(--spacing) * 1); + .gap-8 { + gap: calc(var(--spacing) * 8); } .gap-x-2 { column-gap: calc(var(--spacing) * 2); } - .gap-y-4 { - row-gap: calc(var(--spacing) * 4); - } .rounded-lg { border-radius: var(--radius-lg); } - .rounded-sm { - border-radius: var(--radius-sm); - } .rounded-xl { border-radius: var(--radius-xl); } @@ -421,13 +317,16 @@ border-style: var(--tw-border-style); border-width: 1px; } - .border-2 { - border-style: var(--tw-border-style); - border-width: 2px; + .border-b { + border-bottom-style: var(--tw-border-style); + border-bottom-width: 1px; } - .border-4 { - border-style: var(--tw-border-style); - border-width: 4px; + .border-b-2 { + border-bottom-style: var(--tw-border-style); + border-bottom-width: 2px; + } + .border-blue-500 { + border-color: var(--color-blue-500); } .border-gray-200 { border-color: var(--color-gray-200); @@ -435,184 +334,53 @@ .border-gray-300 { border-color: var(--color-gray-300); } - .border-purple-700 { - border-color: var(--color-purple-700); - } - .border-purple-900 { - border-color: var(--color-purple-900); - } - .border-red-500 { - border-color: var(--color-red-500); - } - .border-transparent { - border-color: transparent; - } - .bg-\[\#0F0A26\] { - background-color: #0F0A26; - } - .bg-\[\#120B2A\] { - background-color: #120B2A; - } - .bg-\[\#FF0A26\] { - background-color: #FF0A26; - } - .bg-blue-600 { - background-color: var(--color-blue-600); - } - .bg-gray-50 { - background-color: var(--color-gray-50); + .border-white { + border-color: var(--color-white); } .bg-gray-100 { background-color: var(--color-gray-100); } - .bg-gray-200 { - background-color: var(--color-gray-200); - } - .bg-gray-800 { - background-color: var(--color-gray-800); - } - .bg-gray-900 { - background-color: var(--color-gray-900); - } - .bg-gray-950 { - background-color: var(--color-gray-950); - } - .bg-pink-100 { - background-color: var(--color-pink-100); - } - .bg-pink-200 { - background-color: var(--color-pink-200); - } - .bg-pink-400 { - background-color: var(--color-pink-400); - } .bg-red-500 { background-color: var(--color-red-500); } .bg-white { background-color: var(--color-white); } - .bg-gradient-to-b { - --tw-gradient-position: to bottom in oklab; - background-image: linear-gradient(var(--tw-gradient-stops)); - } - .bg-radial { - --tw-gradient-position: in oklab; - background-image: radial-gradient(var(--tw-gradient-stops)); - } - .bg-radial-\[at_25\%_25\%\] { - --tw-gradient-position: at 25% 25%; - background-image: radial-gradient(var(--tw-gradient-stops,at 25% 25%)); - } - .bg-radial-\[at_75\%_75\%\] { - --tw-gradient-position: at 75% 75%; - background-image: radial-gradient(var(--tw-gradient-stops,at 75% 75%)); - } - .from-gray-800 { - --tw-gradient-from: var(--color-gray-800); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-gray-950 { - --tw-gradient-from: var(--color-gray-950); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-pink-100 { - --tw-gradient-from: var(--color-pink-100); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-purple-700 { - --tw-gradient-from: var(--color-purple-700); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-purple-800 { - --tw-gradient-from: var(--color-purple-800); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-purple-900 { - --tw-gradient-from: var(--color-purple-900); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .from-purple-950 { - --tw-gradient-from: var(--color-purple-950); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .to-black { - --tw-gradient-to: var(--color-black); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .to-gray-950 { - --tw-gradient-to: var(--color-gray-950); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .to-purple-900 { - --tw-gradient-to: var(--color-purple-900); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); - } - .to-red-500 { - --tw-gradient-to: var(--color-red-500); - --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + .p-2 { + padding: calc(var(--spacing) * 2); } .p-4 { padding: calc(var(--spacing) * 4); } - .p-5 { - padding: calc(var(--spacing) * 5); - } - .p-10 { - padding: calc(var(--spacing) * 10); - } - .p-14 { - padding: calc(var(--spacing) * 14); - } - .p-44 { - padding: calc(var(--spacing) * 44); + .px-1 { + padding-inline: calc(var(--spacing) * 1); } .px-4 { padding-inline: calc(var(--spacing) * 4); } + .px-8 { + padding-inline: calc(var(--spacing) * 8); + } .py-2 { padding-block: calc(var(--spacing) * 2); } - .py-2\.5 { - padding-block: calc(var(--spacing) * 2.5); - } .py-3 { padding-block: calc(var(--spacing) * 3); } .py-4 { padding-block: calc(var(--spacing) * 4); } - .pe-3 { - padding-inline-end: calc(var(--spacing) * 3); - } .text-center { text-align: center; } - .text-left { - text-align: left; - } - .font-mono { - font-family: var(--font-mono); - } - .font-serif { - font-family: var(--font-serif); - } .text-2xl { font-size: var(--text-2xl); line-height: var(--tw-leading, var(--text-2xl--line-height)); } - .text-3xl { - font-size: var(--text-3xl); - line-height: var(--tw-leading, var(--text-3xl--line-height)); - } .text-sm { font-size: var(--text-sm); line-height: var(--tw-leading, var(--text-sm--line-height)); } - .text-xs { - font-size: var(--text-xs); - line-height: var(--tw-leading, var(--text-xs--line-height)); - } .font-bold { --tw-font-weight: var(--font-weight-bold); font-weight: var(--font-weight-bold); @@ -621,211 +389,54 @@ --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); } - .font-semibold { - --tw-font-weight: var(--font-weight-semibold); - font-weight: var(--font-weight-semibold); - } - .text-blue-600 { - color: var(--color-blue-600); - } - .text-gray-100 { - color: var(--color-gray-100); - } - .text-gray-200 { - color: var(--color-gray-200); - } - .text-gray-300 { - color: var(--color-gray-300); - } - .text-gray-400 { - color: var(--color-gray-400); + .text-blue-500 { + color: var(--color-blue-500); } .text-gray-600 { color: var(--color-gray-600); } + .text-gray-700 { + color: var(--color-gray-700); + } .text-gray-800 { color: var(--color-gray-800); } - .text-red-500 { - color: var(--color-red-500); - } - .text-red-600 { - color: var(--color-red-600); - } - .text-white { - color: var(--color-white); - } - .uppercase { - text-transform: uppercase; - } - .italic { - font-style: italic; - } .underline { text-decoration-line: underline; } - .decoration-2 { - text-decoration-thickness: 2px; - } - .shadow-lg\/50 { - --tw-shadow-alpha: 50%; - --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 50%)), 0 4px 6px -4px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 50%)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-xl\/20 { - --tw-shadow-alpha: 20%; - --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 20%)), 0 8px 10px -6px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 20%)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-xl\/50 { - --tw-shadow-alpha: 50%; - --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 50%)), 0 8px 10px -6px var(--tw-shadow-color, oklab(from rgb(0 0 0 / 0.1) l a b / 50%)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-2xl { - --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } .shadow-2xs { --tw-shadow: 0 1px var(--tw-shadow-color, rgb(0 0 0 / 0.05)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .shadow-lg { - --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-md { - --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } .shadow-sm { --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); } - .shadow-xl { - --tw-shadow: 0 20px 25px -5px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 8px 10px -6px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .ring-2 { - --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor); - box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); - } - .shadow-black { - --tw-shadow-color: #000; + .shadow-gray-300 { + --tw-shadow-color: oklch(87.2% 0.01 258.338); @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, var(--color-black) var(--tw-shadow-alpha), transparent); + --tw-shadow-color: color-mix(in oklab, var(--color-gray-300) var(--tw-shadow-alpha), transparent); } } - .shadow-purple-800 { - --tw-shadow-color: oklch(43.8% 0.218 303.724); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, var(--color-purple-800) var(--tw-shadow-alpha), transparent); - } - } - .shadow-purple-900 { - --tw-shadow-color: oklch(38.1% 0.176 304.987); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, var(--color-purple-900) var(--tw-shadow-alpha), transparent); - } - } - .shadow-purple-950 { - --tw-shadow-color: oklch(29.1% 0.149 302.717); - @supports (color: color-mix(in lab, red, red)) { - --tw-shadow-color: color-mix(in oklab, var(--color-purple-950) var(--tw-shadow-alpha), transparent); - } - } - .ring-black { - --tw-ring-color: var(--color-black); - } - .ring-red-500 { - --tw-ring-color: var(--color-red-500); - } .outline { outline-style: var(--tw-outline-style); outline-width: 1px; } - .blur-3xl { - --tw-blur: blur(var(--blur-3xl)); - filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); - } - .blur-sm { - --tw-blur: blur(var(--blur-sm)); - filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); - } - .blur-xl { - --tw-blur: blur(var(--blur-xl)); - filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); - } - .blur-xs { - --tw-blur: blur(var(--blur-xs)); - filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); - } .filter { filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); } - .transition-all { - transition-property: all; - transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); - transition-duration: var(--tw-duration, var(--default-transition-duration)); + .duration-150 { + --tw-duration: 150ms; + transition-duration: 150ms; } - .duration-200 { - --tw-duration: 200ms; - transition-duration: 200ms; + .select-none { + -webkit-user-select: none; + user-select: none; } - .before\:me-6 { - &::before { - content: var(--tw-content); - margin-inline-end: calc(var(--spacing) * 6); - } - } - .before\:flex-1 { - &::before { - content: var(--tw-content); - flex: 1; - } - } - .before\:border-t { - &::before { - content: var(--tw-content); - border-top-style: var(--tw-border-style); - border-top-width: 1px; - } - } - .before\:border-gray-200 { - &::before { - content: var(--tw-content); - border-color: var(--color-gray-200); - } - } - .after\:ms-6 { - &::after { - content: var(--tw-content); - margin-inline-start: calc(var(--spacing) * 6); - } - } - .after\:flex-1 { - &::after { - content: var(--tw-content); - flex: 1; - } - } - .after\:border-t { - &::after { - content: var(--tw-content); - border-top-style: var(--tw-border-style); - border-top-width: 1px; - } - } - .after\:border-gray-200 { - &::after { - content: var(--tw-content); - border-color: var(--color-gray-200); - } - } - .hover\:bg-blue-700 { + .hover\:border-blue-400 { &:hover { @media (hover: hover) { - background-color: var(--color-blue-700); + border-color: var(--color-blue-400); } } } @@ -836,45 +447,18 @@ } } } - .hover\:bg-gray-800 { + .hover\:text-blue-400 { &:hover { @media (hover: hover) { - background-color: var(--color-gray-800); + color: var(--color-blue-400); } } } - .hover\:underline { - &:hover { - @media (hover: hover) { - text-decoration-line: underline; - } - } - } - .focus\:border-blue-500 { - &:focus { - border-color: var(--color-blue-500); - } - } - .focus\:bg-blue-700 { - &:focus { - background-color: var(--color-blue-700); - } - } .focus\:bg-gray-50 { &:focus { background-color: var(--color-gray-50); } } - .focus\:underline { - &:focus { - text-decoration-line: underline; - } - } - .focus\:ring-blue-500 { - &:focus { - --tw-ring-color: var(--color-blue-500); - } - } .focus\:outline-hidden { &:focus { --tw-outline-style: none; @@ -905,15 +489,14 @@ padding: calc(var(--spacing) * 7); } } - .sm\:py-3 { - @media (width >= 40rem) { - padding-block: calc(var(--spacing) * 3); + .md\:flex { + @media (width >= 48rem) { + display: flex; } } - .sm\:text-sm { - @media (width >= 40rem) { - font-size: var(--text-sm); - line-height: var(--tw-leading, var(--text-sm--line-height)); + .md\:hidden { + @media (width >= 48rem) { + display: none; } } .md\:w-1\/2 { @@ -921,29 +504,14 @@ width: calc(1/2 * 100%); } } - .md\:w-1\/3 { + .md\:px-44 { @media (width >= 48rem) { - width: calc(1/3 * 100%); + padding-inline: calc(var(--spacing) * 44); } } - .lg\:w-1\/2 { + .lg\:flex { @media (width >= 64rem) { - width: calc(1/2 * 100%); - } - } - .lg\:w-1\/3 { - @media (width >= 64rem) { - width: calc(1/3 * 100%); - } - } - .lg\:w-1\/4 { - @media (width >= 64rem) { - width: calc(1/4 * 100%); - } - } - .lg\:w-2\/5 { - @media (width >= 64rem) { - width: calc(2/5 * 100%); + display: flex; } } .lg\:w-2\/7 { @@ -951,176 +519,12 @@ width: calc(2/7 * 100%); } } - .dark\:border-neutral-700 { - @media (prefers-color-scheme: dark) { - border-color: var(--color-neutral-700); - } - } - .dark\:bg-neutral-800 { - @media (prefers-color-scheme: dark) { - background-color: var(--color-neutral-800); - } - } - .dark\:bg-neutral-900 { - @media (prefers-color-scheme: dark) { - background-color: var(--color-neutral-900); - } - } - .dark\:text-blue-500 { - @media (prefers-color-scheme: dark) { - color: var(--color-blue-500); - } - } - .dark\:text-neutral-400 { - @media (prefers-color-scheme: dark) { - color: var(--color-neutral-400); - } - } - .dark\:text-neutral-500 { - @media (prefers-color-scheme: dark) { - color: var(--color-neutral-500); - } - } - .dark\:text-white { - @media (prefers-color-scheme: dark) { - color: var(--color-white); - } - } - .dark\:placeholder-neutral-500 { - @media (prefers-color-scheme: dark) { - &::placeholder { - color: var(--color-neutral-500); - } - } - } - .dark\:before\:border-neutral-600 { - @media (prefers-color-scheme: dark) { - &::before { - content: var(--tw-content); - border-color: var(--color-neutral-600); - } - } - } - .dark\:after\:border-neutral-600 { - @media (prefers-color-scheme: dark) { - &::after { - content: var(--tw-content); - border-color: var(--color-neutral-600); - } - } - } - .dark\:checked\:border-blue-500 { - @media (prefers-color-scheme: dark) { - &:checked { - border-color: var(--color-blue-500); - } - } - } - .dark\:checked\:bg-blue-500 { - @media (prefers-color-scheme: dark) { - &:checked { - background-color: var(--color-blue-500); - } - } - } - .dark\:hover\:bg-neutral-800 { - @media (prefers-color-scheme: dark) { - &:hover { - @media (hover: hover) { - background-color: var(--color-neutral-800); - } - } - } - } - .dark\:focus\:bg-neutral-800 { - @media (prefers-color-scheme: dark) { - &:focus { - background-color: var(--color-neutral-800); - } - } - } - .dark\:focus\:ring-neutral-600 { - @media (prefers-color-scheme: dark) { - &:focus { - --tw-ring-color: var(--color-neutral-600); - } - } - } - .dark\:focus\:ring-offset-gray-800 { - @media (prefers-color-scheme: dark) { - &:focus { - --tw-ring-offset-color: var(--color-gray-800); - } - } - } -} -@property --tw-rotate-x { - syntax: "*"; - inherits: false; -} -@property --tw-rotate-y { - syntax: "*"; - inherits: false; -} -@property --tw-rotate-z { - syntax: "*"; - inherits: false; -} -@property --tw-skew-x { - syntax: "*"; - inherits: false; -} -@property --tw-skew-y { - syntax: "*"; - inherits: false; } @property --tw-border-style { syntax: "*"; inherits: false; initial-value: solid; } -@property --tw-gradient-position { - syntax: "*"; - inherits: false; -} -@property --tw-gradient-from { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-via { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-to { - syntax: ""; - inherits: false; - initial-value: #0000; -} -@property --tw-gradient-stops { - syntax: "*"; - inherits: false; -} -@property --tw-gradient-via-stops { - syntax: "*"; - inherits: false; -} -@property --tw-gradient-from-position { - syntax: ""; - inherits: false; - initial-value: 0%; -} -@property --tw-gradient-via-position { - syntax: ""; - inherits: false; - initial-value: 50%; -} -@property --tw-gradient-to-position { - syntax: ""; - inherits: false; - initial-value: 100%; -} @property --tw-font-weight { syntax: "*"; inherits: false; @@ -1252,29 +656,10 @@ syntax: "*"; inherits: false; } -@property --tw-content { - syntax: "*"; - initial-value: ""; - inherits: false; -} @layer properties { @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { *, ::before, ::after, ::backdrop { - --tw-rotate-x: initial; - --tw-rotate-y: initial; - --tw-rotate-z: initial; - --tw-skew-x: initial; - --tw-skew-y: initial; --tw-border-style: solid; - --tw-gradient-position: initial; - --tw-gradient-from: #0000; - --tw-gradient-via: #0000; - --tw-gradient-to: #0000; - --tw-gradient-stops: initial; - --tw-gradient-via-stops: initial; - --tw-gradient-from-position: 0%; - --tw-gradient-via-position: 50%; - --tw-gradient-to-position: 100%; --tw-font-weight: initial; --tw-shadow: 0 0 #0000; --tw-shadow-color: initial; @@ -1305,7 +690,6 @@ --tw-drop-shadow-alpha: 100%; --tw-drop-shadow-size: initial; --tw-duration: initial; - --tw-content: ""; } } }