v1.3.0
  1. ds
  2. Overview
  3. Products

Products

What fin1te.com, topo, ack and lab share and where they differ.

Four products use ds. fin1te.com is a site you read, topo is an editor you work in, ack is a player you watch and scrub, and lab is a set of small tools you paste things into. They share every token, the base layer, the header, the type and the diagram look. The differences come from what each one is for.

What they share

  • The tokens: warm neutrals, one purple accent, amber for data at rest, both themes set on <html data-theme> before first paint and saved in localStorage.theme.
  • Mona Sans with its width axis for headings, IBM Plex Mono for labels, numbers and code.
  • The header: sticky, 3.5rem, blurred, a mono brand with the purple mark. The tools add their name after a slash.
  • One easing curve, short durations, and prefers-reduced-motion respected.
  • The CSS itself. ack and lab vendor a copy of ds.css and refresh it with scripts/sync-ds.mjs; fin1te.com and topo carry the same tokens in their own CSS until they move to it. Product CSS sits on top of the tokens.

What differs

fin1te.comtopoacklab
What it isA site you readAn editor you work inA player you watch and scrubSmall tools you paste into
Base size16px root, rem everywhere14px UI text; chrome scales with a zoom factor, the canvas never does16px root; the diagram scales as a picture16px root, rem everywhere
Header.hdr with the site navIslands over the canvas, no header.hdr-brand: fin1te / ack.hdr-brand: fin1te / lab
Primary action.btn.primary: ink on paper.btn.accent: Present.btn.accent: Play.btn.primary or none; the output is the point
LayoutDocument flow, sticky header, rowsFull-screen canvas with floating islandsEditor beside a stage, .playbar under it.workbench: input left, output right
SurfacesRules, almost no shadowIslands and panels carry --shadowRules; the stage sits on the dot gridOne framed pair of panes, no shadow
BackdropSquare grid behind headsDot grid under the whole canvasDot grid under the diagramPlain --bg
MotionShort fades on scrollLinks that flow, walkthroughsThe content: messages on a real clockAlmost none

fin1te chrome

SparkRustClickHouse
Code
<div class="btn-row">
  <a class="btn primary" href="#">Get in touch</a>
  <a class="btn" href="#">Résumé (PDF)</a>
</div>
<div class="chips">
  <span class="chip">Spark</span><span class="chip warm">Rust</span><span class="chip">ClickHouse</span>
</div>

topo chrome

Code
<div class="island bar">
  <button class="btn icon on" aria-label="Select"><svg class="i">…</svg></button>
  <button class="btn icon" aria-label="Pan"><svg class="i">…</svg></button>
  <span class="sep"></span>
  …
</div>
<div class="island">
  <button class="btn"><svg class="i">…</svg>AI</button>
  <button class="btn accent"><svg class="i">…</svg>Present</button>
</div>

ack and lab chrome

0:04.8 / 0:12.0
Code
<div class="playbar">…</div>          <!-- ack: see Playback bar -->
<div class="wb-head">…</div>          <!-- lab: see Workbench -->

ack plays: its one accent button is Play, and the playback bar sits under the stage. lab converts and inspects: a workbench with output tabs and a copy button, and no accent button at all, because the output is the point.

Names in the codebases

A few parts were renamed here so the system has one name for each thing. fin1te.com and topo keep their current names until they move to ds.css; ack and lab start with the ds names.

dsfin1te.comtopo
.panel-headn/a.ph
.panel-secn/a.ps
.dlg-headn/a.dlg .ph
.chip.chip, .tagn/a
.pilln/a.chip
.stat-tiles, .stat-v.tiles, .tvn/a
.metrics.mtn/a
.timeline, .tl-item.tl, .enn/a
.insp-card.card (scoped).sd .card
.stepbar, .irailn/a.pv-steps, .pv-tl
.hdr-row, .hdr-tools, .ibtn.row, .tools, .icon (scoped)n/a