37 lines
1.1 KiB
Text
37 lines
1.1 KiB
Text
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/routeurl"
|
|
|
|
type SpaceCardInfo struct {
|
|
ID string
|
|
Name string
|
|
MemberCount int
|
|
TotalBalance decimal.Decimal
|
|
}
|
|
|
|
templ SpaceCard(info SpaceCardInfo) {
|
|
<a href={ routeurl.URL("page.app.spaces.space.overview", "spaceID", info.ID) } class="px-2 py-2 block rounded-md hover:bg-sidebar-accent">
|
|
<div class="flex items-center justify-between">
|
|
<div class="flex gap-4 items-center">
|
|
<div class="w-10 h-10 shrink-0 overflow-hidden rounded-md bg-muted flex items-center justify-center">
|
|
{ strings.ToUpper(string(info.Name[0])) }
|
|
</div>
|
|
<div>
|
|
<p class="font-semibold">{ info.Name }</p>
|
|
<p class="text-xs text-muted-foreground">
|
|
<span>${ info.TotalBalance.StringFixedBank(2) }</span>
|
|
<span>•</span>
|
|
<span>{ fmt.Sprintf("%d members", info.MemberCount) }</span>
|
|
</p>
|
|
</div>
|
|
</div>
|
|
<div class="h-full flex items-center justify-center">
|
|
@icon.ChevronRight()
|
|
</div>
|
|
</div>
|
|
</a>
|
|
}
|