Frontend component reuse: inventory repeated UI patterns, then file per-family extraction issues #276
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#276
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Umbrella follow-up to #275: make the frontend easy to maintain by moving repeated hand-rolled UI patterns into shared, reusable components — so visual/spacing fixes land in one place instead of ~16.
Approach: inventory first
Phase 1 — inventory pass (done, 2026-08-04 — see triage comment): catalog the repeated patterns across
web/src, e.g.:<p class="empty">at ~16 call sites (routes outside the settings sections migrated by #275: Tokens, Credentials, History, Repos, RepoIssues, RepoCRs, RunChat, NewRun, …). → #279.section-head(shell.css) and.card-head(cards.css) — unify onto theSectionCardhead from #275 or a shared head component. → #280.form-card+ heading + ErrorBanner + submit button pattern). → #281article.card+.card-head+ title + danger-action rows, e.g. ImportRow/TokenCard/CredentialCard). → #282<div class="banner error" role="alert">copies vs theErrorBannercomponent. → #283Phase 2 — the per-family issues are triaged and labeled individually; this umbrella tracks them and closes when the last family lands.
Constraints
SectionCardfrom #275 is the exemplar for shape and test style.Blocked by
Triage outcome: phase 1 (inventory) done — this issue is now a tracking umbrella
The inventory pass was performed during triage and the per-family issues are filed, each with an agent brief and
ready-for-agent:class="empty"occurrences, ~16 production call sites across 13 files (list routes, RunChat ×4, NewRun, settings sections)..section-head×20 (13 route files, shell.css) vs.card-head×26 (cards.css);SectionCardfrom #275 is the exemplar; cards.css already mirrors.section-head h2sizing by hand..card.form-cardshells (create token/credential, AddRepo, NewIssue, secrets/imports/schedules add-forms) duplicating heading + ErrorBanner + busy-submit wiring.TokenCard,CredentialCard,ImportRoweach hand-rollarticle.card+.card-titlehead + danger action +.card-sub.<div class="banner error" role="alert">copies plus inlinebanner successand extra-class variants, whileErrorBannerexists but lacks non-dismissible/success/extra-class support.Nothing remains for an agent to do on this issue — the family issues carry the work. #276 stays open as the tracker: the
## Blocked bysection in the body now lists the five family issues, and this closes when the last of them lands. Removingneeds-triage; deliberately not applyingready-for-agenthere so the scheduler never hands the umbrella itself to an agent.