fix(frontend): auto-completed on finish time, dashboard links, list/calendar UX
Some checks failed
CI / build-and-test (pull_request) Has been cancelled
Some checks failed
CI / build-and-test (pull_request) Has been cancelled
- Set status to completed when finish time parses (input + submit) - Dashboard: last personal record by recent date+time; links on top 3 cards - Hover scale+shadow on all dashboard-card; linked card padding via BEM - Race list: full row links to race detail; same hover as before - Calendar year grid: 3 columns, 2 on tablet, 1 on narrow - Version 0.4.1 Made-with: Cursor
This commit is contained in:
@@ -8,7 +8,6 @@ import {
|
||||
formatRaceDate,
|
||||
getRaceStatusClassName,
|
||||
getRaceStatusLabel,
|
||||
raceNeedsResultEntry,
|
||||
splitRacesByDate,
|
||||
} from "../lib";
|
||||
|
||||
@@ -67,38 +66,16 @@ function RaceList(props: { title: string; races: Race[] }): JSX.Element {
|
||||
<h2 className="race-list__title">{title}</h2>
|
||||
{races.length > 0 ? (
|
||||
<ul className="race-list__items">
|
||||
{races.map((race) => {
|
||||
const needsResult = raceNeedsResultEntry(race);
|
||||
if (needsResult) {
|
||||
return (
|
||||
<li key={race.id} className="race-card race-card--action">
|
||||
<Link
|
||||
className="race-card__link-surface"
|
||||
to={`/races/${race.id}/edit`}
|
||||
aria-label={`${race.title}, внести результат`}
|
||||
>
|
||||
<div className="race-card__main">
|
||||
<p className="race-card__title">
|
||||
<span className="race-card__title-text">{race.title}</span>
|
||||
</p>
|
||||
<p className="race-card__meta">
|
||||
{formatRaceDate(race.date)} · {formatDistance(race.distanceKm)}
|
||||
</p>
|
||||
</div>
|
||||
<span className={getRaceStatusClassName(race.status, race.date)}>
|
||||
{getRaceStatusLabel(race.status, race.date)}
|
||||
</span>
|
||||
</Link>
|
||||
</li>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<li key={race.id} className="race-card">
|
||||
{races.map((race) => (
|
||||
<li key={race.id} className="race-card race-card--action">
|
||||
<Link
|
||||
className="race-card__link-surface"
|
||||
to={`/races/${race.id}`}
|
||||
aria-label={`Старт: ${race.title}`}
|
||||
>
|
||||
<div className="race-card__main">
|
||||
<p className="race-card__title">
|
||||
<Link className="race-card__link" to={`/races/${race.id}`}>
|
||||
{race.title}
|
||||
</Link>
|
||||
<span className="race-card__title-text">{race.title}</span>
|
||||
</p>
|
||||
<p className="race-card__meta">
|
||||
{formatRaceDate(race.date)} · {formatDistance(race.distanceKm)}
|
||||
@@ -107,9 +84,9 @@ function RaceList(props: { title: string; races: Race[] }): JSX.Element {
|
||||
<span className={getRaceStatusClassName(race.status, race.date)}>
|
||||
{getRaceStatusLabel(race.status, race.date)}
|
||||
</span>
|
||||
</li>
|
||||
);
|
||||
})}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
) : (
|
||||
<p className="race-list__empty">Пока нет данных в этом разделе.</p>
|
||||
|
||||
Reference in New Issue
Block a user