Fanget opp i FEATURE_BACKLOG.md (ikke designet/bygget ennå) + en pekende note i scorekort-spec-dokumentet der id-en skal vises. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
8.2 KiB
TeeCup — skjerm-spec: Scorekort + Score-entry
Status: PRESKRIPTIV (mål, ikke beskrivelse). Dette dokumentet er bevisst det motsatte av
DESIGN_SYSTEM.md: der DS beskriver hva som ER i koden, beskriver dette hva skjermene SKAL være. Det gir repoet et tak å sikte mot, ikke bare et gulv å reprodusere.Til Claude Code: behandle token- og prop-navn her som intensjon. Der de avviker fra faktisk
globals.css/components/*.tsx, vinner kildekoden — avstem, ikke gjett. Alt visuelt skal fortsatt gå gjennom tokenene og komponentene iDESIGN_SYSTEM.md; dette dokumentet endrer komposisjon og tetthet, ikke fargespråket.Grunnlaget er en gjennomgang av fem etablerte golf-apper (Golf GameBook, Golf Pad, Golfshot, Hole 19, 18Birdies). Reglene under er der de fem konvergerer — altså «slik løser kategorien det», ikke smak.
0. Prinsipper (gjelder begge skjermene)
Fire ting skiller de fem appene fra dagens TeeCup-skjerm. Alt under er utledet av disse:
-
Tetthet framfor høflighet. Ingen av de fem lar en flate stå halvtom. Entry- og visningskontrollene fyller skjermen. Et enkelt kort øverst med død luft under er ikke et mønster i kategorien — det er tegnet på en nettside, ikke et verktøy. Regel: ingen score-flate skal ha mer enn ~1 skjermhøyde tom plass under fold. Har runden få hull ført, vis alle 18 (kommende hull grået ut), ikke whitespace.
-
Ett aksent-poeng på nøytralt underlag. Alle fem bruker et nesten monokromt underlag + ÉN aksent (blå/grønn/teal). TeeCup-score-skjermen leser som grønt-på-grønt fordi sirkler, faner, hull-velger og knapper deler samme grønn. Regel:
primary(grønn) reserveres for aktiv tilstand + under-par/positivt.brand-orangeer kontrast-polen (over par). Alt annet er nøytralt:bg-card,bg-muted,border-border,muted-foreground. Hvis to naboelementer begge er grønne uten at begge betyr «aktiv/positiv», er ett av dem feil. -
Tall vises alltid med term og/eller til-par — aldri farge alene. Alle fem viser Eagle/Birdie/Par/Bogey og/eller +N/−N/E ved siden av tallet. Dette er allerede din
§Golfscore-språket; håndhev den. En bar grønn sirkel med råtall (dagens skjerm) er det ene mønsteret ingen av de fem bruker. -
Verktøy, ikke nettside. Hard, tydelig header; klare skiller mellom rader/kolonner; kraftig
font-extrabold tabular-numspå resultat-tall. Myke, like avrundede kort overalt = generisk.
1. Scorekort-skjerm (score-VISNING)
Mål: erstatt ett-hull-kortet med et tett, scrollbart scorekort-grid. Dette er skjermens største enkeltløft.
Layout
- Container:
mx-auto w-full max-w-xl(per DS for scorekort-visninger). - Sticky header (
sticky top-0 z-10 border-b border-border bg-background/95 backdrop-blur): banenavn, dato, evt. format (Slag/Stableford). Ikke et stort kort — en tett topplinje. - Grid, ikke kort-stabel. Én container
(
rounded-2xl border border-border overflow-hidden) — DS sier eksplisitt at sammenhengende lister skal være én container meddivide-y, ikke separate kort med mellomrom.- Spillere = rader. Venstre kolonne er sticky (
sticky left-0): fullt navn (roster-kontekst → fullt navn, ikke fornavn) + HCP under, itext-sm muted-foreground. Fast rad-høyde (min-h-[Npx]+truncate) så rader med ulik navnelengde blir like høye (DS-mønsteret fra 2026-07-26).Notert 2026-08-22, IKKE designet/bygget ennå (se FEATURE_BACKLOG.md "Inkrementell deltaker-id (startnummer) for turneringer"): bruker vil at hver deltaker skal ha et fortløpende tildelt startnummer, synlig her (og på startlister). Foreløpig ingen avgjørelse om plassering i denne raden (f.eks. foran navnet) -- avklares når selve funksjonen designes.
- Hull = kolonner, horisontalt scrollbare. Kolonnetopp:
hull-nr (
font-bold), Par og evt. HCP-indeks under itext-sm muted-foreground. Aktivt/valgt hull markeres medbg-primarypå kolonnetoppen (én grønn, ikke grønn overalt). - Celle = score for (spiller × hull): brutto som hovedtall
(
font-extrabold tabular-nums) med net som liten senket subscript. Score-merket følger§Golfscore-språketUBRYTELIG:- under par → sirkel (
rounded-full) - over par → firkant (
rounded-[4px]) - E → ren tekst, ingen ramme
- eagle+/dobbel bogey+/leder → fylt (
bg-primary/bg-brand-orange), samme form, kun fyllingen endres. Vanlig =border-2+/10-tint.
- under par → sirkel (
- Sum-kolonner: Ut / Inn / Total i en høyre sticky kolonne
(
sticky right-0),tabular-nums font-extrabold, til-par som E/+N/−N.
- Spillere = rader. Venstre kolonne er sticky (
- Fyll flaten: vis alle 18 hull-kolonner alltid. Uspilte hull = tomme celler på nøytralt underlag, ikke utelatt.
Farge
Underlaget er nøytralt (bg-card). Grønn (primary) opptrer kun i:
aktivt hulls kolonnetopp, under-par-merker, og lederens sum. Over-par-
merker bruker firkant-form + brand-orange-tint. Ingenting annet er grønt.
Interaksjon
Tapp en celle (eller en rad-header) → åpne score-entry-overlegget (§2) for det hullet. Overgang, ikke ny side.
2. Score-entry-skjerm (per hull)
Mål: tett, fokusert entry som fyller skjermen — komponentene finnes
allerede (NumberPicker, Stepper, ChoiceRow, DirectionCross); dette
er ren komposisjon.
Struktur — DS' fullskjerm-overlegg
fixed inset-0 z-50 flex flex-col bg-background, tredelt:
header (shrink-0)
- Hull · Par · HCP-indeks, og «til par så langt» (
tabular-nums, E/+N/−N). - Lukk-knapp,
size-11, ikon +aria-label. - Aktiv spillers navn + HCP (roster-kontekst → fullt navn).
main (flex-1 overflow-y-auto) — i denne rekkefølgen, alt synlig med
minst mulig scroll:
- Score —
NumberPicker(eksisterende): 3-kol grid,h-16, valgt =bg-primary, term-caption relativt til hullets par (Albatross/Eagle/Birdie/Par/Bogey/Dobbel bogey). «10+»-utvidelse beholdes. - Putter —
Stepper(+/−,size-11). - Fairway —
ChoiceRowellerDirectionCross: Bom venstre / Treff / Bom høyre. Alltid tekstlabel (DS: aldri ikon alene). - Green (GIR) —
DirectionCross«Bommet green? Hvor» (Lang/Kort/ Venstre/Høyre + treff i sentrum), ellerChoiceRowhvis enklere. - Bunkerslag / Straffeslag / Chip —
Stepperhver. - Sand save / Up & down — toggles (pille,
size-11-treffflate).
footer (shrink-0) — handling-rad:
- Sekundær «Forrige» (
bg-muted/nøytral) + primær «Neste»/«Ferdig» (bg-primary), begge full bredde-andel,min-h-12.
Multiplayer
Behold per-spiller fullskjerm-fokus (GameBook-mønsteret) framfor inline-
rader — det matcher størrelsen på NumberPicker og tilgjengelighetsgulvet
bedre enn tette inline-steppere. «Neste» går til neste spiller på samme
hull, deretter neste hull. (18Birdies' inline-alle-spillere er et alternativ
å vurdere senere, men krever mindre trykkflater — sekundært valg.)
Tetthet
Score + Putter + Fairway skal være synlige uten scroll på en vanlig telefon.
Resten scroller i main. Ingen halvtom skjerm.
3. Compliance-pass (kjør FØR nybygg)
Dette er avvik mellom DESIGN_SYSTEM.md og faktisk kode som allerede er
synlige i skjermbildene. Fiks dem først — de gir størst effekt per innsats:
ScoreMarkbrukes på ALLE score-visninger. Auditérround-scorecard.tsxog score-visnings-skjermen: dagens grønne sirkler med råtall bryter§Golfscore-språket. Bogey og dobbel bogey skal IKKE se like ut, og over-par skal være firkant.- Badge-dublett «Deg Deg».
Badge:default(fylt) = «Deg»,outline= «Eier». Fjern at navnet «Deg» får en «Deg»-badge oppå seg. tabular-numspå alle score-/HCP-/sum-tall.- 44px trykkgulv (
min-h-11) på alt trykkbart;size-11på ikon-only. - Farge aldri alene — hver farge-bærende tilstand har også form eller tekst.
4. Referanser
Legg GameBook- + de fire andre skjermdumpene i design/references/ og pek
Claude Code på dem: «scorekort-skjermen skal matche tetthet og hierarki i
disse». Visuell referanse forankrer bedre enn prosa alene.