Руководство Pajamas для технических процессов: настоящие семантические токены, адаптивные шкалы типографики и отступов, пошаговая панель проверки конвейера, понятный вывод ошибок и явно обозначенная локальная симуляция повтора.
Руководство OpenDesign8 глав43 справочные записиАвторское руководство по приложению
01
Предварительный просмотр интерфейса дизайн-системы GitLab Pajamas
Фильтруйте задания по состоянию, выберите задание, чтобы прочитать его вывод, смоделируйте успешное прохождение проверки ссылок после сбоя и восстановите исходные тестовые данные.
Штатный @gitlab/ui 138.0.0 CSS; исходная компоновка этапов, HTML и логика локального состояния. Реальные действия CI не выполняются. · Справочник по реализации
02
Справочник по дизайн-системе GitLab Pajamas
Экспорт токенов для светлой темы и штатный CSS из @gitlab/ui 138.0.0. Имена GL_* — это экспорты JavaScript; их эквиваленты в нижнем регистре --gl-* доступны в скомпилированном CSS. В примере используется штатная таблица стилей с исходной логикой HTML и состояния, а не смонтированные компоненты Vue.
Информационная архитектура конвейера в дизайн-системе GitLab Pajamas
Сначала объясните сбой, затем предложите восстановление
В заголовке указаны название вымышленного конвейера, ветка и коммит — это даёт контекст для инспектора заданий. Этапы Build, Test и Publish представлены отдельными группами, а при выборе задания открывается его вывод. Для сбоя проверки ссылок сначала указаны маршрут и условие выхода, объясняющие причину сбоя, и только затем показано действие повтора.
Сохраняйте компактную и понятную схему
В этом примере используются колонки этапов и кнопки, а не создаётся видимость полноценного графа зависимостей. На узком экране этапы располагаются друг под другом в порядке документа. В производственном конвейере могут понадобиться параллельные задания, зависимости, состояния ожидания, ручного запуска и отмены; их следует задавать явно, а не выводить из трёх примеров заголовков.
Семантические цвета и состояния в дизайн-системе GitLab Pajamas
Используйте семантические роли для рабочей области
Экспорт для светлой темы содержит тёплые нейтральные поверхности, несколько уровней контрастности текста и ненавязчивые границы. В примере для карточек заданий используется стандартная поверхность, для выбранного задания — синяя, а для области журнала — тёмная. В справочнике приведены точные значения пакета: так пользователь сможет воспроизвести их сочетание, не подбирая цвета по снимку экрана.
Передавайте смысл с помощью меток состояния
В каждой строке задания и на каждой метке указано Passed или Failed. Галочка или крестик дополняют текст; одних цветных меток было бы недостаточно. Фирменный фиолетовый цвет не используется как универсальный признак успеха. Цвета состояний в таблице намеренно отделены от синего цвета выделения.
Шкала типографики и технический текст в дизайн-системе GitLab Pajamas
Сохраняйте гибкие выражения там, где они нужны
В пакете есть фиксированные малые роли и крупные роли на основе clamp. Замена clamp его наибольшим конечным значением меняет адаптивное поведение. В исходном примере заголовок размером 24px соответствует размеру приложения, а вспомогательный текст — компактным ролям 12–14px; эти решения относятся к компоновке, а не к дополнительным токенам пакета.
Используйте моноширинный шрифт для идентификаторов и вывода
Для ветки и коммита используется оформление кода, а названия заданий остаются читабельным текстом интерфейса. Вывод помещён в моноширинный блок с переносом строк, на который можно перевести клавиатурный фокус. Длинные пути переносятся, не растягивая всю страницу шире экрана телефона; при выборе задания текст заменяется, а не вставляется как необработанный HTML.
Ритм интервалов и границ в дизайн-системе GitLab Pajamas
Не вычисляйте значения токенов по их номеру
GL_SPACING_SCALE_3 равен 0.5rem, а scale_5 — 1rem; индекс служит ключом, а не множителем. При реализации шкалы используйте экспортированное значение. В справочной таблице указаны точные единицы измерения, в том числе шаг в ноль пикселей.
Используйте границы для разделения областей
Выбор и фильтрация заданий в дизайн-системе GitLab Pajamas
Не связывайте выбранное задание с его позицией в фильтре
В скрипте используются стабильные строковые идентификаторы, например links и accessibility. Фильтр меняет список заданий и выбирает подходящее задание, если оно есть. Нажатие на задание одновременно обновляет состояние aria-pressed, этап, метку состояния и журнал. Так заголовок одного задания не будет показан рядом с выводом другого.
Сохраняйте контекст восстановления, когда результат исчезает
После того как для сбойного задания смоделирован успешный результат, фильтр Failed jobs не находит заданий. Сообщение о пустом списке объясняет, как восстановить его, а инспектор сохраняет только что полученный результат. Это сделано намеренно: пользователь понимает, почему строка исчезла, и не теряет подтверждение результата.
Повтор и сброс в дизайн-системе GitLab Pajamas
Чётко обозначайте симуляцию
Действие называется Simulate successful retry: оно меняет только локальные тестовые данные и заменяет журнал текстом о смоделированном результате. Оно не ставит задачу в очередь исполнителя, не создаёт задание и не проверяет репозиторий. Общее состояние конвейера пересчитывается по состоянию всех заданий, а не безусловно меняется на успешное после любого нажатия.
Полностью восстанавливайте исходные тестовые данные
Сброс создаёт новую копию исходных данных заданий, выбирает сбойное задание links, возвращает фильтр All jobs и заново отрисовывает обе панели. Смоделированный результат сбрасывается без перезагрузки страницы. Так пример можно запускать повторно, и следующий пользователь не примет ранее смоделированный успех за исходное состояние.
Выберите Failed jobs и изучите маршрут, вызвавший сбой.
Смоделируйте успех и прочитайте сохранённый результат в инспекторе и пустом отфильтрованном списке.
Сбросьте пример и убедитесь, что сбой и исходный вывод восстановились.
Доступные элементы управления заданиями в дизайн-системе GitLab Pajamas
Используйте кнопки для локального выбора
Каждое задание — настоящая кнопка с атрибутом aria-pressed. Состояние указано рядом с длительностью, а видимое состояние клавиатурного фокуса отличается от выделения. У фильтра есть видимая подпись. Для этих простых элементов управления не заявлена специальная клавиатурная навигация по графу.
Сообщайте о результате, не перемещая фокус
После повтора или сброса результат появляется в области статуса. Журнал — это текст, который можно выделить; на него также можно перевести клавиатурный фокус, чтобы прочитать содержимое. При этом приложение не переносит фокус в журнал автоматически после каждого выбора. Так сравнивать задания можно предсказуемо, одно за другим.
Границы интеграции CSS и Vue в дизайн-системе GitLab Pajamas
Явно выбирайте уровень интеграции
Этот исходный код подключает опубликованный дистрибутив CSS и добавляет исходную логику HTML/JavaScript. Он не создаёт экземпляры GlButton, GlFormSelect и других экспортируемых компонентов Vue. В приложении Vue следует использовать соответствующие штатные компоненты и актуальные свойства и события, а не считать эту реализацию DOM примером для Vue.
Дистрибутив CSS: нативный внешний вид и семантические переменные.
Исходный HTML: доступные элементы управления и структура областей.
Исходный JavaScript: тестовые данные, выбор, фильтры и симуляция.
Используйте токены именно той версии, которая подключена
Примеры компонентов дизайн-системы GitLab Pajamas
index.html — рабочая область конвейера
Полная семантическая структура и элементы управления.
html
<!doctype html>
<html lang="en">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Pipeline specimen</title>
<body>
<main class="pipeline-example">
<header>
<p class="eyebrow">sample-team / documentation</p>
<div class="title-row">
<div>
<h1>Pipeline #1842</h1>
<p>
Preview build for <code>docs/update-navigation</code> ·
<code>7c31a82</code>
</p>
</div>
<span id="pipeline-state" class="state failed">Failed</span>
</div>
</header>
<div class="toolbar">
<label for="job-filter">Show jobs</label
><select id="job-filter" class="gl-form-select">
<option value="all">All jobs</option>
<option value="failed">Failed jobs</option>
<option value="passed">Passed jobs</option></select
><button id="reset" class="btn btn-default gl-button">
Reset specimen
</button>
</div>
<div class="pipeline-layout">
<section aria-label="Pipeline stages">
<div id="stages" class="stages"></div>
<p id="empty" hidden>
No jobs match this filter. Choose All jobs to restore the pipeline.
</p>
</section>
<section class="job-detail" aria-labelledby="job-title">
<div class="detail-heading">
<h2 id="job-title"></h2>
<span id="job-state" class="state"></span>
</div>
<dl>
<dt>Stage</dt>
<dd id="job-stage"></dd>
<dt>Runner</dt>
<dd>local-example-runner</dd>
<dt>Execution</dt>
<dd>Simulated in this page</dd>
</dl>
<h3>Job output</h3>
<pre id="job-log" tabindex="0" aria-label="Selected job output"></pre>
<button id="retry" class="btn btn-confirm gl-button">
Simulate successful retry
</button>
<p id="feedback" role="status"></p>
</section>
</div>
<footer>
Native @gitlab/ui 138.0.0 CSS with original HTML and state logic. Fictional
pipeline; no runner, repository or CI job is started.
</footer>
</main>
<script type="module" src="/src/main.js"></script>
</body></html>
Сохраните как src/pajamas.css. Явно задан запасной системный шрифт; фирменный шрифт GitLab не включён.
04
Настройка агента дизайн-системы GitLab Pajamas
Отправная точка для реализации
Эта интеграция подключает только штатный дистрибутив CSS. Если вы используете компоненты Vue, отдельно соблюдайте требования GitLab UI к peer-зависимостям.
sh
npm create vite@latest pajamas-pipeline -- --template vanilla
cd pajamas-pipeline
npm install
npm install @gitlab/[email protected]
# Replace index.html; add src/main.js and src/pajamas.css from the complete examples.
npm run dev
Запрос для вашего проекта
Промпт для AI-агента
Создайте технический инспектор заданий с семантическими поверхностями Pajamas, точными значениями интервалов и типографики, стабильными идентификаторами заданий и доступным выбором. Используйте полный исходный код тестовых данных, сохраняйте видимый контекст сбоя, делайте понятными пустые результаты фильтрации и помечайте все локальные симуляции. Не создавайте впечатление, что CSS или повтор в примере создаёт задание GitLab CI.
05
Источники и область применения дизайн-системы GitLab Pajamas
Руководство по приложению OpenDesign для GitLab Pajamas и @gitlab/ui 138.0.0. Стили исходного примера HTML/JavaScript задаются таблицей стилей штатного пакета CSS. Конвейер вымышленный; запросы к GitLab API, среда выполнения Vue, исполнитель CI и действия с репозиторием не используются.