A Pajamas guide for technical workflows: actual semantic tokens, fluid type and spacing, a staged pipeline inspector, readable failure output and an explicitly local retry simulation.
Native @gitlab/ui 138.0.0 CSS; original staged layout, HTML and local state logic. No real CI activity. · Implementation reference
02
GitLab Pajamas Design System Design Reference
@gitlab/ui 138.0.0 published light token export and native CSS. GL_* names are JavaScript exports; their lower-case --gl-* equivalents appear in the compiled CSS. The example uses the native stylesheet with original HTML/state logic, not mounted Vue components.
GitLab Pajamas Design System Pipeline Information Architecture
Put failure context before recovery
The header names a fictional pipeline, branch and commit so the job inspector has context. Build, Test and Publish are visible groupings, and a selected job opens its own output. The failed link check includes the route and exit condition that explain the failure before the user sees the retry action.
Keep a compact graph readable
This specimen uses stage columns and buttons rather than pretending to implement a full dependency graph. On a narrow screen, stages stack in document order. A production pipeline may need parallel jobs, dependencies, waiting, manual and canceled states; those should be modeled explicitly rather than inferred from the three sample headings.
GitLab Pajamas Design System Semantic Colors and Status
Use semantic UI roles for the work surface
The light export provides warm neutral surfaces, distinct text strengths and subtle borders. The sample uses the default surface for job cards, a blue selected surface and a dark log region. The guide lists exact package values so a user can reproduce the relationship without sampling pixels from a screenshot.
Make state labels carry the meaning
Passed and Failed are written in each job row and badge. A check or cross supplements that text; colored badges alone would be ambiguous. Brand purple is not used as a generic success indicator. The status references in the table are intentionally separate from the selection blue.
GitLab Pajamas Design System Type Scale and Technical Text
Preserve fluid expressions where they apply
The package exposes fixed small roles and clamp-based larger roles. Replacing a clamp with its largest endpoint changes the responsive behavior. The original specimen uses an application-sized 24px title and compact 12–14px supporting roles; those choices are identified as layout decisions rather than additional package tokens.
Use monospace for identifiers and output
The branch and commit use code styling, while job names remain readable interface text. Output uses a wrapped monospace block with a keyboard focus target. Long paths can wrap instead of forcing the entire page wider than a phone, and selection changes replace the text rather than injecting raw HTML.
GitLab Pajamas Design System Spacing and Border Rhythm
Do not calculate token values from their number
GL_SPACING_SCALE_3 is 0.5rem and scale_5 is 1rem; the index is a key, not a direct multiplier. Use the exported value when implementing the scale. The reference table preserves the exact unit, including the zero-pixel step.
Use boundaries to clarify regions
GitLab Pajamas Design System Job Selection and Filtering
Keep selected identity independent of filter position
The script uses stable string IDs such as links and accessibility. The filter changes which jobs are listed, and chooses a matching job when one exists. Clicking a job updates its pressed state, stage, state badge and log together. This avoids showing one job title with another job’s output.
Retain recovery context when the result disappears
After the failed job is simulated as passed, a Failed jobs filter has no results. The empty message explains how to restore the list, while the inspector retains the just-completed result. This deliberate choice lets the user understand why the row disappeared instead of losing the confirmation.
GitLab Pajamas Design System Retry and Reset Behavior
Label the simulation honestly
The action says Simulate successful retry, changes only the local fixture and replaces the log with a written simulation result. It does not enqueue a runner, create a job or inspect a repository. The overall pipeline badge is recalculated from all job states rather than blindly setting success after any click.
Restore the entire initial fixture
Reset creates a fresh copy of the initial job data, selects the failed link job, restores All jobs and re-renders both panels. It clears the simulated result without a reload. This makes the specimen repeatable and prevents a second viewer from mistaking a previously simulated success for the starting condition.
Select Failed jobs and inspect the failed route.
Simulate success and read the retained inspector plus empty filtered list.
Reset the specimen and verify that the failure and original output return.
GitLab Pajamas Design System Accessible Job Controls
Use buttons for local selection
Each job is a real button with aria-pressed. The state is written beside the duration, and visible keyboard focus remains separate from the selected appearance. The filter has a visible label. No custom keyboard-only graph navigation is claimed for these simple controls.
Announce the outcome without moving the reader
The result is written to a status region after retry or reset. The log is selectable text and can receive keyboard focus for reading, but the application does not automatically pull focus into it after every selection. This keeps repeated comparisons between jobs predictable.
GitLab Pajamas Design System CSS and Vue Integration Boundaries
Choose one integration level explicitly
This source imports the published CSS distribution and supplies original HTML/JavaScript behavior. It does not instantiate GlButton, GlFormSelect or other Vue exports. A Vue application should use the corresponding native components and their current props/events rather than treating this DOM implementation as a Vue example.
CSS distribution: native appearance and semantic variables.
Original HTML: accessible controls and region structure.
Original JavaScript: fixture data, selection, filters and simulation.
Keep tokens tied to the imported release
GitLab Pajamas Design System Component Examples
index.html — pipeline workspace
Complete semantic layout and controls.
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>
Save as src/pajamas.css. System font fallback is explicit; no GitLab branded font is bundled.
04
GitLab Pajamas Design System Agent Setup
Implementation Starting Point
This integration imports the native CSS distribution only. Follow GitLab UI peer dependency requirements separately if adopting its Vue components.
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
A Prompt for Your Project
Agent Prompt
Build a technical job inspector with Pajamas semantic surfaces, real spacing/type references, stable job IDs and accessible selection. Use the complete fixture source, preserve visible failure context, make filtered empty states understandable, and label all local simulation. Do not imply that CSS or the example retry creates a GitLab CI job.
05
GitLab Pajamas Design System Sources and Scope
OpenDesign application guide to GitLab Pajamas and @gitlab/ui 138.0.0. Native package CSS styles this original HTML/JavaScript specimen. The pipeline is fictional and no GitLab API, Vue runtime, CI runner or repository action is invoked.