shadcn: migrate home page lists to card + item + badge
closedTask
Migrate internal/appview/ui/home.templ (HomePage) lists and add-domain form.
Files:
- Edit: internal/appview/ui/home.templ
- Uses: card, item, separator, badge, input, button, empty/skeleton for empty states
Steps:
1. Domain/mailbox <ul> (divide-y ... bg-white) -> card + item rows + separator; status text -> badge.
2. “Manage” links -> button variant=link (or keep links if more appropriate; decide per review).
3. “Sign out” button -> button variant=ghost or link.
4. “Add a hosted domain” panel -> card; domain input -> input, submit -> button; keep hx-post=/domains, hx-target=#form-error OOB contract.
5. Empty states (“No domains yet”, “No mailboxes yet”) -> empty (loading: skeleton).
Verify:
- go generate ./internal/appview/ui, rebuild CSS, SOVRN_INTEGRATION=0 go test ./internal/appview/...
- Manual: admin + non-admin branches, htmx add-domain flow, sign-out.
Done when: home.templ has no hand-rolled list/card/button markup.
1 Comment
Complete
home.templ: lists -> card+item(VariantOutline)+badge(VariantSecondary); Manage -> button variant=link real anchors; sign-out -> button ghost; add-domain panel -> card with textInput+primaryButton helpers; empty states -> empty component; skeleton skipped (no loading state); separator deliberately omitted (Group gap + outline borders already divide).role="listitem"on items (Group renders role=list), variant pins in tests.