improve add expense form UI

This commit is contained in:
juancwu 2026-01-19 01:43:14 +00:00
commit abdd67ccc9

View file

@ -8,6 +8,9 @@ import (
"git.juancwu.dev/juancwu/budgit/internal/ui/components/input" "git.juancwu.dev/juancwu/budgit/internal/ui/components/input"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/tagsinput" "git.juancwu.dev/juancwu/budgit/internal/ui/components/tagsinput"
"time" "time"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/radio"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/label"
"git.juancwu.dev/juancwu/budgit/internal/ui/components/datepicker"
) )
templ AddExpenseForm(space *model.Space, tags []*model.Tag, lists []*model.ShoppingList) { templ AddExpenseForm(space *model.Space, tags []*model.Tag, lists []*model.ShoppingList) {
@ -21,14 +24,35 @@ templ AddExpenseForm(space *model.Space, tags []*model.Tag, lists []*model.Shopp
@csrf.Token() @csrf.Token()
// Type // Type
<div class="flex gap-4"> <div class="flex gap-4">
<label> <div class="flex items-start gap-3">
<input type="radio" name="type" value="expense" checked class="radio"/> @radio.Radio(radio.Props{
<span class="label-text ml-2">Expense</span> ID: "expense-type-expense",
</label> Name: "type",
<label> Value: "expense",
<input type="radio" name="type" value="topup" class="radio"/> Checked: true,
<span class="label-text ml-2">Top-up</span> })
</label> <div class="grid gap-2">
@label.Label(label.Props{
For: "expense-type-expense",
}) {
Expense
}
</div>
</div>
<div class="flex items-start gap-3">
@radio.Radio(radio.Props{
ID: "expense-type-topup",
Name: "type",
Value: "topup",
})
<div class="grid gap-2">
@label.Label(label.Props{
For: "expense-type-topup",
}) {
Top-up
}
</div>
</div>
</div> </div>
// Description // Description
<div> <div>
@ -52,11 +76,10 @@ templ AddExpenseForm(space *model.Space, tags []*model.Tag, lists []*model.Shopp
// Date // Date
<div> <div>
<label for="date" class="label">Date</label> <label for="date" class="label">Date</label>
@input.Input(input.Props{ @datepicker.DatePicker(datepicker.Props{
Name: "date",
ID: "date", ID: "date",
Type: "date", Name: "date",
Value: time.Now().Format("2006-01-02"), Value: time.Now(),
Attributes: templ.Attributes{"required": "true"}, Attributes: templ.Attributes{"required": "true"},
}) })
</div> </div>