dashboard.tsx sitt datalag skrevet om fra V0s mock-useState til ekte kall: /auth/me (organisasjoner), /orgs/{id}/tournaments (turneringer per valgt org), POST /orgs og POST /orgs/{id}/tournaments (opprettelse), POST /auth/logout.
/verify sender deg nå videre til /dashboard etter innlogging (fantes ingen dit å gå før).
login-form.tsx fikk kun en kirurgisk patch (Wordmark flyttet til egen fil, som V0 selv gjorde) — din egen fetch-/feillogikk urørt.
Verifisert: ekte typesjekket build, redeploy av kun teecup_frontend (ingen Caddy-endring trengtes denne gangen — mønsteret fra sist holder), /dashboard → 200 live, teeoff.no upåvirket.
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { cn } from "@/lib/utils"
|
|
|
|
export type TournamentStatus = "draft" | "active" | "completed" | "archived"
|
|
|
|
const STATUS_CONFIG: Record<
|
|
TournamentStatus,
|
|
{ label: string; dot: string; badge: string }
|
|
> = {
|
|
draft: {
|
|
label: "Utkast",
|
|
dot: "bg-muted-foreground",
|
|
badge: "bg-muted text-foreground",
|
|
},
|
|
active: {
|
|
label: "Aktiv",
|
|
dot: "bg-primary",
|
|
badge: "bg-primary/15 text-foreground",
|
|
},
|
|
completed: {
|
|
label: "Fullført",
|
|
dot: "bg-brand-orange",
|
|
badge: "bg-brand-orange/12 text-foreground",
|
|
},
|
|
archived: {
|
|
label: "Arkivert",
|
|
dot: "bg-muted-foreground/50",
|
|
badge: "border border-border bg-transparent text-muted-foreground",
|
|
},
|
|
}
|
|
|
|
export function TournamentStatusBadge({ status }: { status: TournamentStatus }) {
|
|
const config = STATUS_CONFIG[status]
|
|
return (
|
|
<span
|
|
className={cn(
|
|
"inline-flex items-center gap-1.5 rounded-full px-2.5 py-1 text-xs font-semibold",
|
|
config.badge,
|
|
)}
|
|
>
|
|
<span className={cn("size-1.5 rounded-full", config.dot)} aria-hidden="true" />
|
|
{config.label}
|
|
</span>
|
|
)
|
|
}
|