Обзор всего, что даёт дизайн-система. Тема: day. Язык: Русский.
Примитивы интерфейса
Формы, которыми компонент быть не может, потому что они оборачивают тело, известное только вызывающему: карточка раздела, сетка данных, раскрывающееся меню и собственная обвязка каркасов. tokens.css поставляет классы, а разметку пишет приложение. Всё, что ниже, — ровно тот образец, который возвращает ui.Styleguide, и тот же образец тесты ui сверяют с tokens.css.
Ссылки здесь неактивны
Ссылки неактивны, исходник примера приложен.
box
Карточка раздела с отступами и заголовок, который стоит вне её.
Какая карточка какая
У rst-list и rst-card намеренно нет отступов: они держат череду строк, а каждая строка отбивает себя сама. Положите внутрь форму, абзац, полосу ссылок или что угодно, что не строка, — и это отрисуется вплотную к границе; текст, касающийся края, и есть примета. Карточка с отступами для произвольного содержимого — rst-box, а её заголовок стоит перед ней соседним rst-box-head.
<div rst-box-head><h2>Payout</h2><a rst-btn href="/payout/edit">Edit</a></div>
<section rst-box><p>Everything on a screen sits inside boxes.</p><div rst-box-foot>Last updated 2 hours ago</div></section>
dropdown
Меню на details/summary, стоящее за меню переполнения в шапке и за фильтром панели списка, плюс применённый фильтр в виде снимаемой метки.
Настоящий словарь таблиц данных: карточка задаёт колонки один раз, строки только выбирают ячейки.
Экраны складываются по вертикали
Экран — это столбец: page-header, затем section-header и карточка, затем следующий section-header и карточка, в порядке чтения. Горизонтальная раскладка оставлена тем приёмам, которые её несут: rst-box-head, rst-field-row, rst-lbar, ячейки rst-lrow, rst-seg-tabs.
Карточка с рамкой, тело которой раскрывается только при включённом переключателе, через :has(). Главное — переключатель; раскрытие лишь удобство отображения.
<div rst-tblock>
<label rst-tblock-head><input type="checkbox" name="notify" checked>
<span rst-switch-track aria-hidden="true"></span>
<span><span rst-tblock-title>Email notifications</span><span rst-tblock-desc>Sent for every reply to a thread you're in.</span></span>
</label>
<div rst-tblock-body>
<div rst-field>
<label rst-field-label for="notify-freq">Frequency</label>
<input rst-input type="text" id="notify-freq" name="notify_freq" value="Daily digest">
</div>
</div>
</div>