Skip to content

Lab UI: every HTML output in the site's visual language - #2

Merged
ali-demirbas merged 6 commits into
mainfrom
design/lab-ui
Sep 28, 2026
Merged

ali-demirbas merged 6 commits into
mainfrom
design/lab-ui

Conversation

@hulusi-tunc

Copy link
Copy Markdown
Collaborator

The canvases, the report and the landing page each had their own look: cream paper, Georgia and terracotta on the canvases and landing page, slate and teal in Avenir on the report. None of them matched each other or the Lab pages on alidemirbas.com.tr. All four now draw from one kit, Lab UI, which is the site's own language: stone ink on white paper, the brand blue, one sans family, plain-case labels, tiles and pill buttons. The journey canvas uses the same journey cards as the site's journey pages.

What changes

  • templates/lab-ui.css is the kit, the one place it is edited. scripts/sync_lab_ui.py inlines it between /* lab-ui:begin */ … /* lab-ui:end */ markers. Outputs stay single files that render offline and load nothing third-party: Inter where installed, the system sans otherwise. validate.sh section 17 fails on any stale inlined copy.
  • Journey canvas:
    • a dark entry card with its Giriş pin
    • paper message cards with the channel colour along the top
    • a green decision card, and wait and exit pills
    • orthogonal connectors with arrowheads, on a dot sheet
    • picker tiles for journeys
    • one UI block that holds every interface word
  • Copy canvas:
    • the channel colour on each step card, matching the canvas
    • segmented tabs
    • review badges with icons instead of emoji
    • the render-time recount, unchanged
  • Report and landing page: same structure and content, restyled on the kit.
  • Rendering fix: a human step ("İnsan · CSM") now shows as its own channel instead of Email.

Unchanged by design

  • The swappable regions, their markers and the const JOURNEYS … ]; boundary are the same, so build_canvas.py and the skeleton check work as before.
  • The fixtures and demos differ from the templates only in data. The English demos also change the language tag and the UI block.

Checked

  • validate.sh (all 17 sections) and scripts/tests/run_tests.sh pass at every commit in this branch.
  • The demos, a build_canvas.py output and the report render at 1440px and 390px with no sideways scroll.
  • The Gemini extension is regenerated.

🤖 Generated with Claude Code

hulusi-tunc and others added 5 commits September 28, 2026 16:09
The Lab tools present themselves on alidemirbas.com.tr/lab, but each of
their HTML outputs carried its own look. templates/lab-ui.css is the
site's visual language as one stylesheet: stone ink on white paper, the
brand blue #2f6bff, the site's hue ramps, radii and shadows, one sans
family, plain-case labels, and the components the outputs need (tiles,
chips, badges, pill buttons, segmented tabs, picker tiles, tables,
meters, the journey cards on a dot sheet, tooltip, toast), with light
and dark themes.

Outputs must stay single self-contained files that render offline and
load nothing third-party, so the kit is inlined, not linked: a file opts
in with a /* lab-ui:begin */ ... /* lab-ui:end */ pair inside its
<style>, and scripts/sync_lab_ui.py writes the kit between them.
validate.sh section 17 runs it with --check so an inlined copy can never
drift from the kit.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The canvas was cream paper, Georgia, a terracotta accent and uppercase
monospace labels, a look shared with nothing else the project ships.
It now uses the kit and the same card language as the journey pages on
the site: a dark entry card with its Giriş pin, paper message cards
with the channel colour along the top, the green decision card, wait
and exit pills, branch labels as small pills, and orthogonal connectors
with arrowheads on a dot sheet. Journey tabs are picker tiles, the meta
card is a tile with a plain-case definition list, and the download
buttons are the site's pills.

Every interface word now sits in one UI block, so the English demo
differs from the template only in that block and the language tag.
A message step whose tag names a human route (Insan, CSM, Human,
Support) shows as its own channel instead of falling back to Email, and
the channel no longer repeats in the tag beside its pill.

The swappable regions, their markers and the JOURNEYS boundary are
unchanged, so build_canvas.py and the skeleton check work as before.
docs/demo/journey-canvas.html and the README screenshot are rebuilt
from the new template with the same demo data.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Each step card now carries its channel colour along the top, the same
signal the journey canvas uses, so a step is recognisable across the
two files. Journeys switch on the site's segmented tabs; review status
is a tinted badge with an icon instead of an emoji; variant labels,
field labels and counts are plain case; fields sit in a hairline table
with the render-time recount unchanged (over the limit in the bad
colour, a declared count that drifted in the watch colour).

The skeleton-check fixtures are rebuilt on the new template: the good
one is the template with the fixture's data, the bad one drops the
generator stamp, part of the kit and the mismatch state, the kind of
elision a retyped copy makes, and carries no lab-ui markers so the sync
never repairs it. docs/demo/message-copy.html is rebuilt from the new
template with the same demo data.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
templates/report.html (the optional assessment report) was slate and
teal in Avenir, with square corners, left colour rails and uppercase
tracked labels. It keeps its structure and class names, since the
engine reproduces those, and now takes its look from the kit: tiles,
plain-case section headings, pill tags in the shared status colours, a
status dot instead of a rail, and the brand blue for score bars. It is
also a complete document now, with a body the kit can style.

docs/index.html, the published landing page, moves from cream and
Georgia to the kit, with the same content, canonical and share tags.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The kit's picker fits four 200px cards into the canvas's 1000px
column, so the demo's fifth journey sat alone on a second row. Up to
five journeys now share one row on a desktop, six split 3+3, seven
or eight 4+x; on a phone an odd last card spans the row.

validate.sh (17 sections) and run_tests.sh pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ali-demirbas
ali-demirbas merged commit 6c30b60 into main Sep 28, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants