style: LIVE badge right-aligned, bigger live score, remove redundant tip
- LIVE: pulsing red badge with dot, right-aligned in header (replaces countdown position) - Live score: 28px instead of 22px for better visibility - Removed duplicate tip display under live score (tip only shown in footer) - BEENDET status stays left in header Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -39,6 +39,22 @@
|
|||||||
|
|
||||||
.statusLive {
|
.statusLive {
|
||||||
color: var(--error);
|
color: var(--error);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LIVE badge — right-aligned in header */
|
||||||
|
.liveBadge {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 5px;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 800;
|
||||||
|
color: var(--error);
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.08em;
|
||||||
|
background: rgba(248, 113, 113, 0.12);
|
||||||
|
padding: 3px 10px;
|
||||||
|
border-radius: 20px;
|
||||||
|
border: 1px solid rgba(248, 113, 113, 0.25);
|
||||||
animation: pulse 1.5s ease-in-out infinite;
|
animation: pulse 1.5s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,6 +198,11 @@
|
|||||||
letter-spacing: 4px;
|
letter-spacing: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.scoreLive {
|
||||||
|
font-size: 28px;
|
||||||
|
color: var(--text-primary);
|
||||||
|
}
|
||||||
|
|
||||||
.kickoffCenter {
|
.kickoffCenter {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -447,20 +468,6 @@
|
|||||||
animation: pulse 1.5s ease-in-out infinite;
|
animation: pulse 1.5s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Score + live tip stacked */
|
|
||||||
.scoreStack {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
gap: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.liveTipCompare {
|
|
||||||
font-size: 11px;
|
|
||||||
color: var(--text-muted);
|
|
||||||
font-weight: 600;
|
|
||||||
letter-spacing: 0.03em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Points badge */
|
/* Points badge */
|
||||||
.pointsBadge {
|
.pointsBadge {
|
||||||
|
|||||||
@@ -84,13 +84,10 @@ export default function MatchCard({ match, onTip }: Props) {
|
|||||||
return (
|
return (
|
||||||
<div className={`card ${styles.card} ${styles[`card_${state}`]} ${isLive ? styles.live : ''} ${glowClass}`}>
|
<div className={`card ${styles.card} ${styles[`card_${state}`]} ${isLive ? styles.live : ''} ${glowClass}`}>
|
||||||
|
|
||||||
{/* Top row: Status/Group + Countdown right-aligned */}
|
{/* Top row: Group left + Status/Countdown right */}
|
||||||
<div className={styles.topRow}>
|
<div className={styles.topRow}>
|
||||||
{(isLive || isFinished) && (
|
{isFinished && (
|
||||||
<span className={`${styles.status} ${isLive ? styles.statusLive : ''}`}>
|
<span className={styles.status}>{STATUS_LABELS[match.status] ?? match.status}</span>
|
||||||
{isLive && <span className={styles.liveDot} />}
|
|
||||||
{STATUS_LABELS[match.status] ?? match.status}
|
|
||||||
</span>
|
|
||||||
)}
|
)}
|
||||||
{match.group && (
|
{match.group && (
|
||||||
<span className={styles.group}>
|
<span className={styles.group}>
|
||||||
@@ -98,6 +95,12 @@ export default function MatchCard({ match, onTip }: Props) {
|
|||||||
</span>
|
</span>
|
||||||
)}
|
)}
|
||||||
<span style={{ flex: 1 }} />
|
<span style={{ flex: 1 }} />
|
||||||
|
{isLive && (
|
||||||
|
<span className={styles.liveBadge}>
|
||||||
|
<span className={styles.liveDot} />
|
||||||
|
LIVE
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
{(state === 'open' || state === 'tipped') && match.tippable && (
|
{(state === 'open' || state === 'tipped') && match.tippable && (
|
||||||
<span className={`${styles.countdownBadge} ${remainingMins < 60 ? styles.countdownUrgent : ''}`}>
|
<span className={`${styles.countdownBadge} ${remainingMins < 60 ? styles.countdownUrgent : ''}`}>
|
||||||
{match.minutesUntilKickoff < 60
|
{match.minutesUntilKickoff < 60
|
||||||
@@ -131,16 +134,9 @@ export default function MatchCard({ match, onTip }: Props) {
|
|||||||
{/* Center: Score or VS separator */}
|
{/* Center: Score or VS separator */}
|
||||||
<div className={styles.scoreBox}>
|
<div className={styles.scoreBox}>
|
||||||
{isFinished || isLive ? (
|
{isFinished || isLive ? (
|
||||||
<div className={styles.scoreStack}>
|
<span className={`${styles.score} ${isLive ? styles.scoreLive : ''}`}>
|
||||||
<span className={styles.score}>
|
|
||||||
{match.score.home ?? '–'} : {match.score.away ?? '–'}
|
{match.score.home ?? '–'} : {match.score.away ?? '–'}
|
||||||
</span>
|
</span>
|
||||||
{isLive && hasTip && (
|
|
||||||
<span className={styles.liveTipCompare}>
|
|
||||||
Tipp: {match.userTip!.home}:{match.userTip!.away}
|
|
||||||
</span>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
) : (
|
) : (
|
||||||
<span className={styles.vsSeparator}>–</span>
|
<span className={styles.vsSeparator}>–</span>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user