diff --git a/internal/handler/space.go b/internal/handler/space.go
index 30a22d9..e6f1312 100644
--- a/internal/handler/space.go
+++ b/internal/handler/space.go
@@ -5,7 +5,9 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/service"
"git.juancwu.dev/juancwu/budgit/internal/ui"
+ "git.juancwu.dev/juancwu/budgit/internal/ui/blocks"
"git.juancwu.dev/juancwu/budgit/internal/ui/pages"
+ "github.com/shopspring/decimal"
)
type spaceHandler struct {
@@ -17,5 +19,10 @@ func NewSpaceHandler(spaceService *service.SpaceService) *spaceHandler {
}
func (h *spaceHandler) SpacesPage(w http.ResponseWriter, r *http.Request) {
- ui.Render(w, r, pages.Spaces())
+ ui.Render(w, r, pages.Spaces([]blocks.SpaceCardInfo{
+ {
+ ID: "test-1", Name: "My Space",
+ MemberCount: 3, TotalBalance: decimal.NewFromFloat(123.23),
+ },
+ }))
}
diff --git a/internal/misc/currency/currency.go b/internal/misc/currency/currency.go
new file mode 100644
index 0000000..0b9ebfe
--- /dev/null
+++ b/internal/misc/currency/currency.go
@@ -0,0 +1,8 @@
+package currency
+
+type Currency string
+
+const (
+ CAD Currency = "cad"
+ USD Currency = "usd"
+)
diff --git a/internal/timezone/timezones.go b/internal/misc/timezone/timezones.go
similarity index 100%
rename from internal/timezone/timezones.go
rename to internal/misc/timezone/timezones.go
diff --git a/internal/ui/blocks/page_header.templ b/internal/ui/blocks/page_header.templ
new file mode 100644
index 0000000..e044bdb
--- /dev/null
+++ b/internal/ui/blocks/page_header.templ
@@ -0,0 +1,8 @@
+package blocks
+
+templ PageHeader(heading, subHeading string) {
+
+
{ heading }
+
{ subHeading }
+
+}
diff --git a/internal/ui/blocks/space_card.templ b/internal/ui/blocks/space_card.templ
new file mode 100644
index 0000000..b2b559a
--- /dev/null
+++ b/internal/ui/blocks/space_card.templ
@@ -0,0 +1,38 @@
+package blocks
+
+import "github.com/shopspring/decimal"
+import "strings"
+import "git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
+import "fmt"
+import "git.juancwu.dev/juancwu/budgit/internal/misc/currency"
+
+type SpaceCardInfo struct {
+ ID string
+ Name string
+ MemberCount int
+ TotalBalance decimal.Decimal
+ Currency currency.Currency
+}
+
+templ SpaceCard(info SpaceCardInfo) {
+
+}
diff --git a/internal/ui/pages/app_settings.templ b/internal/ui/pages/app_settings.templ
index 01fec07..f99dfef 100644
--- a/internal/ui/pages/app_settings.templ
+++ b/internal/ui/pages/app_settings.templ
@@ -8,15 +8,13 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/input"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/label"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/card"
+ "git.juancwu.dev/juancwu/budgit/internal/ui/blocks"
)
templ AppSettings(hasPassword bool, errorMsg string) {
@layouts.App("Settings") {
-
-
Settings
-
Manage your account settings
-
+ @blocks.PageHeader("Settings", "Manage your account settings")
@card.Card() {
@card.Header() {
@card.Title() {
diff --git a/internal/ui/pages/spaces.templ b/internal/ui/pages/spaces.templ
index d2c90db..836878b 100644
--- a/internal/ui/pages/spaces.templ
+++ b/internal/ui/pages/spaces.templ
@@ -1,9 +1,34 @@
package pages
import "git.juancwu.dev/juancwu/budgit/internal/ui/layouts"
+import "git.juancwu.dev/juancwu/budgit/internal/ui/blocks"
+import "git.juancwu.dev/juancwu/budgit/internal/ui/components/button"
+import "git.juancwu.dev/juancwu/budgit/internal/ui/components/icon"
+import "git.juancwu.dev/juancwu/budgit/internal/routeurl"
-templ Spaces() {
- @layouts.App("Dashboard") {
-
Spaces
+templ Spaces(spaces []blocks.SpaceCardInfo) {
+ @layouts.App("Spaces") {
+
+
+
+
Spaces
+
Manage and monitor your expenses across collaborative spaces.
+
+
+ @button.Button(button.Props{
+ Class: "flex gap-2 items-center",
+ Href: routeurl.URL("page.app.create-space"),
+ }) {
+ @icon.Plus()
+ Create space
+ }
+
+
+
+ for _, space := range spaces {
+ @blocks.SpaceCard(space)
+ }
+
+
}
}