release(v0.3.3): акцентная типография — все надписи крупнее и контрастнее
Some checks failed
CI / Typecheck + Tests (push) Has been cancelled
CI / Build (Windows) (push) Has been cancelled
Release / Build installer + publish release (push) Has been cancelled

Жалоба: вторичные подписи (Активных / До следующего / Трекинг матчей /
Возобнови чтобы продолжить отсчёт) выглядели мелко и плохо читались.

Сделан sweep по всему UI:
- Базовая шкала secondary text: 12px → 13-14px
- Контрастность подписей: text-text/45 → text-text/65 (или /75 для лейблов)
- font-medium → font-semibold для метаданных карточек

Dashboard:
- Дата: 13/font-medium → 14/font-semibold
- HeroStat label: 12/medium/55 → 14/semibold/75 (вот эти "Активных" и пр.)
- HeroStat value: 26/semibold → 28/bold
- HeroStat subvalue: 12/45 → 13/60/medium
- HeroStat icon plaque: 24px → 28px
- Paused banner title: 14 → 16, hint: 12 → 14/70
- Иконка баннера 36→40px

Settings:
- ToggleRow/SelectRow label: medium → semibold
- Hint: 12/55 → 13/65/medium
- "Конфигурация": 13/45/medium → 14/65/semibold

Exercises/Challenges (row + page):
- Row title: 15/medium → 16/semibold
- Row subtitle: 13/55 → 14/65/medium
- Стат-метрики bold
- Empty state: 14/55 → 15/65/medium
- Warning banner: 13/80 → 14/85/medium + иконка крупнее

Games:
- Game title: 17/semibold → 18/bold
- Install path subtitle: 12/45 → 13/55/medium
- Queue/error banners: 13/80 → 14/85/medium + крупнее иконки и code

ExerciseCard:
- Title: 17/semibold → 18/bold
- Reps meta: 13/55 → 14/65/medium
- Countdown label "Через/Сейчас": 11/45 → 12/60/semibold
- Countdown value: 22/semibold → 24/bold
- "Готово" CTA: 14/semibold → 15/bold, h-10 → h-11

ReminderApp:
- "Время тренировки" label: 12/45 → 13 + accent цвет + bold
- "Раз" подпись: 14/55 → 15/65/semibold
- "Следующее через": 12/45 → 13/65/medium
- Match summary header: 11/45 → 12/65/semibold
- Match summary subtitle: 12/45 → 13/65/medium
- Match summary total: 12/55 → 13/65/medium + 14 → 16 для числа
- ChallengeRow title: 14/medium → 15/semibold
- ChallengeRow subtitle: 12/55 → 13/65/medium
- CTA Готово: 15/semibold → 16/bold

UpdaterCard:
- Cell title medium → semibold
- Cell subtitle: 12/55 → 13/65/medium
- Иконка ячеек 36→40px
- Progress download title medium → semibold + 18px процент

Card SectionHeader:
- 12/medium/45 → 13/semibold/60

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
AnRil
2026-05-17 18:00:52 +07:00
parent aa60acb164
commit 9b488164e0
10 changed files with 92 additions and 82 deletions

View File

@@ -69,7 +69,7 @@ export default function Dashboard(): JSX.Element {
{/* Hero — iOS Large Title */}
<div className="flex flex-col sm:flex-row sm:items-end sm:justify-between gap-4 mb-8">
<div className="min-w-0">
<div className="text-[13px] text-text/45 font-medium capitalize">
<div className="text-[14px] text-text/65 font-semibold capitalize">
{today}
</div>
<h1 className="font-serif text-[32px] sm:text-[36px] leading-[1.05] tracking-tight mt-1 font-medium">
@@ -139,19 +139,19 @@ export default function Dashboard(): JSX.Element {
animate={{ opacity: 1, y: 0 }}
className="mb-6 rounded-2xl bg-warning/12 p-4 flex items-center gap-3"
>
<div className="w-9 h-9 rounded-xl bg-warning/15 text-warning grid place-items-center">
<Pause size={16} strokeWidth={2.5} />
<div className="w-10 h-10 rounded-xl bg-warning/18 text-warning grid place-items-center shrink-0">
<Pause size={18} strokeWidth={2.5} />
</div>
<div className="flex-1 min-w-0">
<div className="text-[14px] font-semibold">
<div className="text-[16px] font-semibold leading-tight">
Напоминания на паузе
</div>
<div className="text-[12px] text-text/55 mt-0.5">
<div className="text-[14px] text-text/70 mt-1">
Возобнови, чтобы продолжить отсчёт
</div>
</div>
<Button variant="filled" size="sm" onClick={togglePause}>
<Play size={13} strokeWidth={2.5} /> Старт
<Play size={14} strokeWidth={2.5} /> Старт
</Button>
</motion.div>
)}
@@ -225,19 +225,21 @@ function HeroStat({
<div className="flex items-center gap-2 mb-3">
<div
className={[
'w-6 h-6 rounded-md grid place-items-center text-white',
'w-7 h-7 rounded-lg grid place-items-center text-white',
toneBg
].join(' ')}
>
{icon}
</div>
<div className="text-[12px] text-text/55 font-medium">{label}</div>
<div className="text-[14px] text-text/75 font-semibold">{label}</div>
</div>
<div className="font-display text-[26px] font-semibold tracking-tight leading-none">
<div className="font-display text-[28px] font-bold tracking-tight leading-none">
{value}
</div>
{subvalue && (
<div className="text-[12px] text-text/45 mt-1.5">{subvalue}</div>
<div className="text-[13px] text-text/60 mt-2 font-medium">
{subvalue}
</div>
)}
</div>
)