Skip to content

Commit 70c1c9a

Browse files
cpcloudclaude
andcommitted
feat(ui): use colored ∗ (U+2217) for required field markers
Replace plain ASCII * with the ASTERISK OPERATOR glyph rendered in the secondary (orange) accent color via a `requiredTitle` helper. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 3fe01f0 commit 70c1c9a

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

internal/app/forms.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ func (m *Model) startHouseForm() {
122122
form := huh.NewForm(
123123
huh.NewGroup(
124124
huh.NewInput().
125-
Title("Nickname *").
125+
Title(requiredTitle("Nickname")).
126126
Description("Ex: Primary Residence").
127127
Value(&values.Nickname).
128128
Validate(requiredText("nickname")),
@@ -210,7 +210,7 @@ func (m *Model) startProjectForm() {
210210
form := huh.NewForm(
211211
huh.NewGroup(
212212
huh.NewInput().
213-
Title("Title *").
213+
Title(requiredTitle("Title")).
214214
Value(&values.Title).
215215
Validate(requiredText("title")),
216216
huh.NewSelect[uint]().
@@ -242,7 +242,7 @@ func (m *Model) openProjectForm(values *projectFormData, options []huh.Option[ui
242242
form := huh.NewForm(
243243
huh.NewGroup(
244244
huh.NewInput().
245-
Title("Title *").
245+
Title(requiredTitle("Title")).
246246
Value(&values.Title).
247247
Validate(requiredText("title")),
248248
huh.NewSelect[uint]().
@@ -299,11 +299,11 @@ func (m *Model) startQuoteForm() error {
299299
Options(options...).
300300
Value(&values.ProjectID),
301301
huh.NewInput().
302-
Title("Vendor name *").
302+
Title(requiredTitle("Vendor name")).
303303
Value(&values.VendorName).
304304
Validate(requiredText("vendor name")),
305305
huh.NewInput().
306-
Title("Total *").
306+
Title(requiredTitle("Total")).
307307
Placeholder("3250.00").
308308
Value(&values.Total).
309309
Validate(requiredMoney("total")),
@@ -340,7 +340,7 @@ func (m *Model) openQuoteForm(values *quoteFormData, projectOpts []huh.Option[ui
340340
Options(projectOpts...).
341341
Value(&values.ProjectID),
342342
huh.NewInput().
343-
Title("Vendor name *").
343+
Title(requiredTitle("Vendor name")).
344344
Value(&values.VendorName).
345345
Validate(requiredText("vendor name")),
346346
huh.NewInput().Title("Contact name").Value(&values.ContactName),
@@ -350,7 +350,7 @@ func (m *Model) openQuoteForm(values *quoteFormData, projectOpts []huh.Option[ui
350350
).Title("Vendor"),
351351
huh.NewGroup(
352352
huh.NewInput().
353-
Title("Total *").
353+
Title(requiredTitle("Total")).
354354
Placeholder("3250.00").
355355
Value(&values.Total).
356356
Validate(requiredMoney("total")),
@@ -390,7 +390,7 @@ func (m *Model) startMaintenanceForm() {
390390
form := huh.NewForm(
391391
huh.NewGroup(
392392
huh.NewInput().
393-
Title("Item *").
393+
Title(requiredTitle("Item")).
394394
Value(&values.Name).
395395
Validate(requiredText("item")),
396396
huh.NewSelect[uint]().
@@ -433,7 +433,7 @@ func (m *Model) openMaintenanceForm(
433433
form := huh.NewForm(
434434
huh.NewGroup(
435435
huh.NewInput().
436-
Title("Item *").
436+
Title(requiredTitle("Item")).
437437
Value(&values.Name).
438438
Validate(requiredText("item")),
439439
huh.NewSelect[uint]().
@@ -473,7 +473,7 @@ func (m *Model) startApplianceForm() {
473473
form := huh.NewForm(
474474
huh.NewGroup(
475475
huh.NewInput().
476-
Title("Name *").
476+
Title(requiredTitle("Name")).
477477
Placeholder("Kitchen Refrigerator").
478478
Value(&values.Name).
479479
Validate(requiredText("name")),
@@ -497,7 +497,7 @@ func (m *Model) openApplianceForm(values *applianceFormData) {
497497
form := huh.NewForm(
498498
huh.NewGroup(
499499
huh.NewInput().
500-
Title("Name *").
500+
Title(requiredTitle("Name")).
501501
Placeholder("Kitchen Refrigerator").
502502
Value(&values.Name).
503503
Validate(requiredText("name")),
@@ -573,7 +573,7 @@ func (m *Model) startVendorForm() {
573573
form := huh.NewForm(
574574
huh.NewGroup(
575575
huh.NewInput().
576-
Title("Name *").
576+
Title(requiredTitle("Name")).
577577
Placeholder("Acme Plumbing").
578578
Value(&values.Name).
579579
Validate(requiredText("name")),
@@ -597,7 +597,7 @@ func (m *Model) openVendorForm(values *vendorFormData) {
597597
form := huh.NewForm(
598598
huh.NewGroup(
599599
huh.NewInput().
600-
Title("Name *").
600+
Title(requiredTitle("Name")).
601601
Placeholder("Acme Plumbing").
602602
Value(&values.Name).
603603
Validate(requiredText("name")),
@@ -908,7 +908,7 @@ func (m *Model) startServiceLogForm(maintenanceItemID uint) error {
908908
form := huh.NewForm(
909909
huh.NewGroup(
910910
huh.NewInput().
911-
Title("Date serviced * (YYYY-MM-DD)").
911+
Title(requiredTitle("Date serviced")+" (YYYY-MM-DD)").
912912
Value(&values.ServicedAt).
913913
Validate(requiredDate("date serviced")),
914914
huh.NewSelect[uint]().
@@ -940,7 +940,7 @@ func (m *Model) openServiceLogForm(
940940
form := huh.NewForm(
941941
huh.NewGroup(
942942
huh.NewInput().
943-
Title("Date serviced * (YYYY-MM-DD)").
943+
Title(requiredTitle("Date serviced")+" (YYYY-MM-DD)").
944944
Value(&values.ServicedAt).
945945
Validate(requiredDate("date serviced")),
946946
huh.NewSelect[uint]().
@@ -1633,6 +1633,12 @@ func houseFormValues(profile data.HouseProfile) *houseFormData {
16331633
}
16341634
}
16351635

1636+
// requiredTitle appends a colored ∗ (U+2217) to a form field label.
1637+
func requiredTitle(label string) string {
1638+
marker := lipgloss.NewStyle().Foreground(secondary).Render(" ∗")
1639+
return label + marker
1640+
}
1641+
16361642
func intToString(value int) string {
16371643
if value == 0 {
16381644
return ""

0 commit comments

Comments
 (0)