Старт

Typography

Заморожена типографічна шкала. Не плодимо <Heading> /<Text> компоненти — копіюй className звідси, коли потрібен той самий стиль у DataTable / Card / form. PageHeader і Modal вже вшивають h1/h2 з цієї шкали.

Headings

Display / H1 / H2 / H3 / H4 / Eyebrow. Tracking негативний на великих, позитивний на uppercase-малих.

Display
34px / 600 / tracking -0.02em

Великий тайтл лендингу або hero-секції. Один на сторінку.

Все управління ЖК — в одному вікні
text-[34px] font-semibold leading-tight tracking-[-0.02em] text-slate-950
H1 (page title)
24/28px / 600 / tracking -0.025em

Головний заголовок сторінки. Уже вшитий у <PageHeader title>.

Журнал проводок
text-[24px] font-semibold leading-tight tracking-[-0.025em] text-slate-950 sm:text-[28px]
H2 (section)
20px / 600 / tracking -0.015em

Заголовок розділу всередині сторінки (Modal title / Card heading).

Платіжне доручення
text-[20px] font-semibold leading-tight tracking-[-0.015em] text-slate-950
H3 (subsection)
15px / 600 / tracking -0.01em

Підрозділ. Те, що зараз стоїть у Modal / Drawer title.

Деталі платежу
text-[15px] font-semibold leading-tight tracking-[-0.01em] text-slate-950
H4 (group label)
13px / 600 / uppercase / tracking 0.06em

Маленький заголовок групи у формах / sidebar / Section helpers.

Загальна інформація
text-[13px] font-semibold uppercase tracking-[0.06em] text-slate-700
Eyebrow
11px / 600 / uppercase / tracking 0.18em

Маленька надтекстівка над H1 (PageHeader.eyebrow).

Бухгалтерія / Журнал
text-[11px] font-semibold uppercase tracking-[0.18em] text-slate-500

Body

14px (text-sm) — дефолт інтерфейсу. 16px — лише для intro/hero. Caption 12px — у helper-тексті форм.

Body Large
16px / 400 / leading 1.625

Hero paragraph під Display-заголовком, intro статей.

Реєстри, тарифи, шахматка, доступи, заявки, голосування. Прокручуйте — кожен екран сам розповість що вміє.
text-[16px] leading-relaxed text-slate-700
Body
14px / 400 / leading 1.5

Параграфи, описи в картках, body форм, error messages під полями.

Розрахунок ОСББ виконується автоматично після підтвердження тарифу. Усі зміни логуються та доступні для перегляду в розділі історії.
text-sm leading-6 text-slate-700
Body Small
13px / 400 / leading 1.5

Описи всередині DataTable, метаінформація, helper text.

Сума розраховується з урахуванням пільг і прив'язана до особового рахунку.
text-[13px] leading-5 text-slate-600
Caption
12px / 400 / leading 1.25

Допоміжний текст під полями (FormHelperText), timestamp, footnotes.

Останнє оновлення: 30 квітня 2026, 14:32
text-xs leading-5 text-slate-500
Micro
10px / 500 / uppercase / tracking 0.08em

Колонкові заголовки в DataTable, лейбли над числами.

ЄДРПОУ
text-[10px] font-medium uppercase tracking-[0.08em] text-slate-500

Inline & utility

Дрібні токени: жирний/курсив/посилання/код/числа з табулярним моноширинним. Числові колонки в DataTable — обов'язково tabular-nums, інакше суми «стрибають».

Strong
font-semibold + text-slate-950

Виділення слова всередині абзацу. Не використовуй <b>.

Сума 4 250 ₴ зараховується на рахунок 311.
font-semibold text-slate-950
Emphasis
italic

Цитати або не-критичне виділення.

Пілот стартує не пізніше 30 квітня.
italic text-slate-700
Link
blue-700 + underline-blue-300

Внутрішнє посилання. Зовнішнє — те ж саме + IconExternalLink size=12.

Переглянути журнал →
font-medium text-blue-700 underline decoration-blue-300 underline-offset-2 hover:decoration-blue-500
Code (inline)
mono / 12px / bg-slate-100

Імена полів, edrpou, IBAN, фрагменти коду в підказках.

edrpou=42100123
rounded-[3px] bg-slate-100 px-1.5 py-0.5 font-mono text-[12px] text-slate-700
Number / monospace
font-mono + tabular-nums

Грошові колонки в DataTable. tabular-nums гарантує однакову ширину цифр для рівних колонок.

12 480,00 ₴
font-mono tabular-nums text-slate-900
Muted
text-slate-500

Приглушений текст: timestamp, second-row у таблиці, optional поля.

оновлено 14:32
text-slate-500

Paragraphs

Реальний текст у блоці шириною max-w-2xl. Перевір ширину рядка — комфортно читаємий 60-75 символів.

Розрахунок ОСББ виконується автоматично після підтвердження тарифу. Усі зміни логуються і доступні для перегляду в розділі історії. Якщо тариф було змінено заднім числом — система перерахує всі нарахування за відповідний період.

Особовий рахунок (PA) — це канонічна одиниця обліку для будь-якого клієнта. ОСББ використовує POSTPAID (нараховується наперед, оплачується пізніше); клуби типу 5й-Елемент — PREPAID із credit_limit для VIP-карт.

  • Один PA → багато контрактів (води, тепла, домофону).
  • Контракти → ContractAccess для прав в'їзду.
  • Платежі → Movement → SubjectBalance кеш.

PageHeader — варіанти

Варіанти живого <PageHeader> з різними слотами. Якщо лейаут уже має padding на <main>, ти отримаєш подвійний відступ — у такому разі або зніми padding з main, або обгорни PageHeader без додаткових контейнерів.

Журнал проводок

Простий — лише title. Знизу — border-b за замовчуванням.

Платежі мешканців

Виписки з банку та звірка з нарахуваннями.

+ description (max-width 2xl, leading-6 — comfortable read).

Бухгалтерія / Журнал

JE-10042

REVERSED

REVERSAL запис від 30.04.2026 — виправлення помилки кодування.

+ eyebrow + status (status справа від title, не в actions).

Журнал проводок

Усі AUTO-проводки за поточний період.

+ actions (на маленьких — переходять у новий ряд).

Звернення мешканців

Заявки в управляючу компанію за поточний місяць.

12 нових86 в роботі240 закритих

+ toolbar (під заголовком, full-width — для фільтрів / лічильників).

Звіти

Регульовані форми + керівнича аналітика. Натисни на категорію щоб відкрити.

color=blue → tinted Surface замість plain. Fasta замість border-b — ціла кольорова сім'я (9 варіантів: blue / emerald / amber / rose / slate / orange / violet / pink / dark).

Lists

UL / OL / definition list. Усе на text-sm, gap-1.5 між елементами.

Unordered
  • Реєстр мешканців з пошуком за об'єктом
  • Шахматка лицьових рахунків
  • Звірка платежів з банку
  • Експорт в Excel / PDF
Ordered
  1. Виберіть період звіту
  2. Підтвердіть тарифи
  3. Перегляньте розрахунок у preview
  4. Натисніть «Опублікувати»
Definition (for KV pairs)
Платник
Іванов Іван Іванович
ЄДРПОУ
42100123
Сума
12 480,00 ₴
Статус
Сплачено

Quote / callout

Цитата або bookkeeping-нотатка всередині сторінки. Border-l + bg-slate-50 — не Banner (Banner це алерт із семантикою).

Реверс проведення створює новий запис типу REVERSAL, оригінал помічається REVERSED. Це єдиний спосіб виправити помилку — soft delete і прямі правки заборонені на рівні SQLAlchemy hooks.

— STABILITY.md, Section §4 (GL Immutability)

Code blocks

Inline + block. Block — для прикладів коду в документації / pre-views полів.

Створення нової проводки через action API:

POST /actions/accounting/journal.create
{
  "company_id": 31,
  "entry_date": "2026-04-30",
  "description": "Нарахування квартплати",
  "lines": [
    { "account": "377", "debit": 1245.50 },
    { "account": "703", "credit": 1245.50 }
  ]
}

Numbers — tabular-nums

У DataTable грошові / кількості — обов'язково font-mono tabular-nums. Інакше суми «дихають» при різних цифрах і колонка читається погано.

Без tabular-nums
1 245,00
11 980,50
2 350,00
987,00
4 100,25
З tabular-nums
1 245,00
11 980,50
2 350,00
987,00
4 100,25

Quick reference (cheatsheet)

Скопіюй у свій компонент.

UseClass
Page titlePageHeader title="..."
Section headingtext-[15px] font-semibold tracking-[-0.01em] text-slate-950
Group label (uppercase)text-[10px] font-semibold uppercase tracking-[0.08em] text-slate-500
Bodytext-sm leading-6 text-slate-700
Helper / captiontext-xs leading-5 text-slate-500
Money (DataTable)font-mono tabular-nums text-slate-900
Inline coderounded-[3px] bg-slate-100 px-1.5 py-0.5 font-mono text-[12px] text-slate-700
Linkfont-medium text-blue-700 underline decoration-blue-300 underline-offset-2 hover:decoration-blue-500