From c3dcabc52c19cdbf2526897266d794bbf3c8d667 Mon Sep 17 00:00:00 2001 From: sohey Date: Tue, 23 Jun 2026 20:14:12 +0200 Subject: [PATCH] added design --- docs/images/ledger/deposit-flow-1.png | Bin 0 -> 47923 bytes docs/images/ledger/withdraw-flow-1.png | Bin 0 -> 54490 bytes package-lock.json | 61 ++++++++- package.json | 27 ++++ scripts/diagrams/deposit-flow.html | 69 ++++++++++ scripts/diagrams/render.mjs | 36 +++++ scripts/diagrams/style.css | 183 +++++++++++++++++++++++++ scripts/diagrams/withdraw-flow.html | 66 +++++++++ style-chart.md | 172 +++++++++++++++++++++++ 9 files changed, 612 insertions(+), 2 deletions(-) create mode 100644 docs/images/ledger/deposit-flow-1.png create mode 100644 docs/images/ledger/withdraw-flow-1.png create mode 100644 package.json create mode 100644 scripts/diagrams/deposit-flow.html create mode 100644 scripts/diagrams/render.mjs create mode 100644 scripts/diagrams/style.css create mode 100644 scripts/diagrams/withdraw-flow.html create mode 100644 style-chart.md diff --git a/docs/images/ledger/deposit-flow-1.png b/docs/images/ledger/deposit-flow-1.png new file mode 100644 index 0000000000000000000000000000000000000000..14915f9c78ee2ac2a7a1f4eaafec7d084b60d22f GIT binary patch literal 47923 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.0.0" + } + }, + "node_modules/playwright": { + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.61.0.tgz", + "integrity": "sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.61.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.61.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.61.0.tgz", + "integrity": "sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + } + } } diff --git a/package.json b/package.json new file mode 100644 index 000000000..31ade759d --- /dev/null +++ b/package.json @@ -0,0 +1,27 @@ +{ + "name": "docs", + "version": "1.0.0", + "description": "

\"Base

", + "main": "index.js", + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/base/docs.git" + }, + "keywords": [], + "author": "", + "license": "ISC", + "type": "commonjs", + "bugs": { + "url": "https://github.com/base/docs/issues" + }, + "homepage": "https://github.com/base/docs#readme", + "devDependencies": { + "playwright": "^1.61.0" + } +} diff --git a/scripts/diagrams/deposit-flow.html b/scripts/diagrams/deposit-flow.html new file mode 100644 index 000000000..3ba301464 --- /dev/null +++ b/scripts/diagrams/deposit-flow.html @@ -0,0 +1,69 @@ + + + + + + Deposit flow + + +
+ +
+
User
+
Ledger
+
Portal
+
+ + +
+ +
+
+
+ + +
+
+
+ + + + + + + +
+ encrypt recipient +
+
+
+ +
+ encrypted recipient +
+
+
+ + +
+ deposit(encrypted recipient, amount) +
+
+
+ + +
+ Deposit event +
+
+
+ + +
+
Decrypt & Credit
+
credit the ledger
+
+
+
+ + diff --git a/scripts/diagrams/render.mjs b/scripts/diagrams/render.mjs new file mode 100644 index 000000000..79b0b4779 --- /dev/null +++ b/scripts/diagrams/render.mjs @@ -0,0 +1,36 @@ +/* + * Renders the BDS sequence-diagram HTML sources to PNG via headless Chromium. + * Output is written next to the original ledger flow images. + */ +import { chromium } from "playwright"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { dirname, join, resolve } from "node:path"; + +const here = dirname(fileURLToPath(import.meta.url)); +const outDir = resolve(here, "../../docs/images/ledger"); + +const jobs = [ + { html: "deposit-flow.html", out: "deposit-flow-1.png" }, + { html: "withdraw-flow.html", out: "withdraw-flow-1.png" }, +]; + +function log(event, fields = {}) { + process.stdout.write( + JSON.stringify({ timestamp: new Date().toISOString(), level: "info", event, ...fields }) + "\n", + ); +} + +const browser = await chromium.launch(); +try { + const page = await browser.newPage({ deviceScaleFactor: 2 }); + for (const job of jobs) { + const url = pathToFileURL(join(here, job.html)).href; + await page.goto(url, { waitUntil: "networkidle" }); + const element = page.locator("#diagram"); + const outPath = join(outDir, job.out); + await element.screenshot({ path: outPath }); + log("diagram_rendered", { source: job.html, output: outPath }); + } +} finally { + await browser.close(); +} diff --git a/scripts/diagrams/style.css b/scripts/diagrams/style.css new file mode 100644 index 000000000..7b7e4b4b4 --- /dev/null +++ b/scripts/diagrams/style.css @@ -0,0 +1,183 @@ +/* + * BDS sequence-diagram styles. + * Derived from style-chart.md: gray scale is the foundation; brand blue is + * reserved for the highlighted action path only. + */ +:root { + --gray-0: #ffffff; + --gray-5: #f8f8f8; + --gray-10: #efefef; + --gray-15: #dadada; + --gray-40: #9a9a9a; + --gray-50: #6f6f6f; + --gray-60: #5e5e5e; + --gray-90: #262626; + --gray-100: #111111; + --blue: #0000ff; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + background: var(--gray-0); + font-family: "Inter", "Helvetica Neue", Arial, system-ui, sans-serif; + -webkit-font-smoothing: antialiased; +} + +.diagram { + position: relative; + width: 1024px; + background: var(--gray-0); +} + +/* Participant headers */ +.headers { + position: relative; + height: 56px; +} + +.pill { + position: absolute; + top: 10px; + transform: translateX(-50%); + width: 220px; + padding: 11px 0; + text-align: center; + background: var(--gray-100); + color: var(--gray-0); + border-radius: 9999px; + font-size: 17px; + font-weight: 400; + letter-spacing: -0.01em; +} + +/* Body / sequence area */ +.body { + position: relative; +} + +.band { + position: absolute; + left: 0; + right: 0; +} + +.band.gray { + background: var(--gray-5); +} + +.lifeline { + position: absolute; + top: 0; + bottom: 0; + width: 0; + border-left: 1px dashed var(--gray-15); +} + +.section-label { + position: absolute; + left: 24px; + font-size: 12px; + font-weight: 500; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--gray-40); +} + +/* Arrows: container left/width map to lifeline x positions */ +.arrow { + position: absolute; + height: 0; +} + +.arrow .label { + position: absolute; + bottom: 7px; + left: 0; + right: 0; + text-align: center; + font-size: 13px; + color: var(--gray-60); + white-space: nowrap; +} + +.arrow .line { + position: absolute; + top: 0; + left: 0; + right: 0; +} + +.arrow.blue .line { + border-top: 2px solid var(--blue); +} + +.arrow.gray .line { + border-top: 1.5px solid var(--gray-40); +} + +.arrow .head { + position: absolute; + top: 0; + width: 0; + height: 0; + transform: translateY(-50%); + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; +} + +.arrow.blue .head.right { + right: 0; + border-left: 8px solid var(--blue); +} + +.arrow.blue .head.left { + left: 0; + border-right: 8px solid var(--blue); +} + +.arrow.gray .head.right { + right: 0; + border-left: 8px solid var(--gray-40); +} + +.arrow.gray .head.left { + left: 0; + border-right: 8px solid var(--gray-40); +} + +/* Cards */ +.card { + position: absolute; + transform: translateX(-50%); + background: var(--gray-0); + border: 1px solid var(--gray-10); + border-radius: 10px; + padding: 12px 20px; + text-align: center; +} + +.card .title { + font-size: 15px; + font-weight: 400; + color: var(--gray-90); + letter-spacing: -0.01em; +} + +.card .sub { + margin-top: 3px; + font-size: 13px; + color: var(--gray-50); +} + +.card.chip { + padding: 10px 18px; + white-space: nowrap; +} + +.card.chip .title { + font-size: 14px; +} diff --git a/scripts/diagrams/withdraw-flow.html b/scripts/diagrams/withdraw-flow.html new file mode 100644 index 000000000..1813f1c5d --- /dev/null +++ b/scripts/diagrams/withdraw-flow.html @@ -0,0 +1,66 @@ + + + + + + Withdraw flow + + +
+ +
+
User
+
Ledger
+
Base
+
+ + +
+ +
+
+ + +
+
+
+ + + + + + +
+ request withdraw auth +
+
+
+ + +
+
Operator-signed
+
withdraw authorization
+
+ + +
+ authorization +
+
+
+ + +
+ withdraw(authorization, asset, amount) +
+
+
+ + +
+
Release funds · compose with Base actions
+
+
+
+ + diff --git a/style-chart.md b/style-chart.md new file mode 100644 index 000000000..3120ed8e2 --- /dev/null +++ b/style-chart.md @@ -0,0 +1,172 @@ +Base Diagram Style Guide +======================== +Feed this file to Claude when generating diagrams for Base documentation. +It defines the visual language derived from the Base web design system (BDS). + + +1. COLOR PALETTE +---------------- + +Use the BDS gray scale as the primary palette for diagrams. +Reserve brand blue for emphasis, CTAs, or highlighted paths. + +Gray Scale (light mode): + gray-0 #FFFFFF ── canvas / diagram background + gray-5 #F8F8F8 ── subtle card background, alternating rows + gray-10 #EFEFEF ── card borders, divider lines + gray-15 #DADADA ── secondary borders + gray-20 #C4C4C4 ── disabled / de-emphasized strokes + gray-30 #B8B8B8 ── placeholder text + gray-40 #9A9A9A ── muted labels, annotations + gray-50 #6F6F6F ── secondary text + gray-60 #5E5E5E ── body text (on white) + gray-80 #3A3A3A ── strong labels + gray-90 #262626 ── headings, primary text + gray-100 #111111 ── highest contrast text, dark fills + +Dark-on-light rule: text on white backgrounds should be gray-90 (#262626) or black (#000000). +Light-on-dark rule: text on dark backgrounds should be white (#FFFFFF) or gray-5 (#F8F8F8). + +Brand Blue: + base-blue #0000FF ── primary brand accent, interactive highlights + blue-60 #0052FF ── links, selected states + blue-40 #266EFF ── lighter accent + blue-5 #D3E1FF ── blue tint backgrounds + +Semantic Colors (use sparingly, only when meaning is needed): + green-50 #129961 ── success, positive + red-60 #CF202F ── error, destructive + yellow-50 #CF9700 ── warning, caution + orange-50 #E1591B ── attention + + +2. TYPOGRAPHY +------------- + +Font families (in order of preference): + Primary: "Base Sans" (--font-base-sans) or fallback to system sans-serif + Body text: "Base Sans Text" (--font-base-sans-text) — optimized for reading + Monospace: "Base Sans Mono" or fallback to system monospace + Display: "Base Sans" at 400 weight with tight tracking + +For diagrams, use a clean sans-serif (Inter, Helvetica, or system default if +custom fonts are unavailable). Avoid decorative fonts. + +Text sizes (use these as reference — scale proportionally for diagram context): + Display 36–56px ── diagram title (rarely needed) + Title 1 24–28px ── section headings within a diagram + Title 2 20–24px ── subsection or group headings + Title 3 18–20px ── card titles, node names + Headline 16–18px ── emphasized labels + Body 15–16px ── descriptions, annotations + Label 13–14px ── small labels, tag text + Caption 11–12px ── footnotes, fine print (uppercase, 500 weight) + +General rules: + - Font weight: 400 (regular) for almost everything. Use 500 for captions. + - Letter spacing: tight (-0.01em to -0.04em) for headings, 0 for body. + - Do not use bold (700) for headings — the site uses regular weight throughout. + + +3. SHAPES & BORDER RADIUS +-------------------------- + + Cards / containers: 10px border-radius (the standard "card" radius) + Buttons / pills: 9999px (fully rounded / pill shape) + Small chips / tags: 6–8px + Code blocks: 8–12px + Icons / avatars: 50% (circle) + +Default to 10px radius for any rectangular container in diagrams. +Use fully rounded (pill) only for action buttons or status badges. +Avoid sharp 0px corners — the design language is always softly rounded. + + +4. BORDERS & STROKES +--------------------- + + Primary border: 1px solid gray-10 (#EFEFEF) + Subtle border: 1px solid rgba(0, 0, 0, 0.06–0.10) + On dark backgrounds: 1px solid rgba(255, 255, 255, 0.10–0.20) + Emphasis border: 1px solid gray-15 (#DADADA) + +For connector lines / arrows in diagrams: + Default stroke: 1.5–2px, gray-20 (#C4C4C4) or gray-40 (#9A9A9A) + Highlighted path: 2px, base-blue (#0000FF) + Arrow style: simple pointed, not ornate + + +5. BACKGROUNDS & FILLS +----------------------- + + Page background: #FFFFFF (light) / #111111 (dark) + Card background: #FFFFFF with 1px gray-10 border + Subtle card fill: gray-5 (#F8F8F8) — no border needed + Grouped section: gray-5 (#F8F8F8) or rgba(0, 0, 0, 0.03) + Highlighted fill: blue-5 (#D3E1FF) for blue-tinted callouts + Dark card: gray-100 (#111111) with rgba(255, 255, 255, 0.08) border + + +6. SHADOWS +---------- + +Use shadows sparingly. The site favors flat design with borders over heavy shadows. + + Subtle elevation: 0 4px 24px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(0, 0, 0, 0.08) + Medium elevation: 0 8px 48px rgba(0, 0, 0, 0.35), 0 0 0 1px rgba(255, 255, 255, 0.08) + +Most diagram elements should have no shadow — use borders for separation. + + +7. SPACING +---------- + +Use a 4px base grid. Common spacing values: + + 4px (gap-1) ── tight, between inline elements + 8px (gap-2) ── compact groups + 12px (gap-3) ── related items within a card + 16px (gap-4) ── standard internal card padding, between card sections + 24px (gap-6) ── between cards or groups + 32px (gap-8) ── between diagram sections + 48px (gap-12) ── major section breaks + +Card internal padding: 16–24px. +Content max-width: 1200px (for full-width diagrams). + + +8. LAYOUT GUIDELINES +--------------------- + + - Left-to-right flow for processes, top-to-bottom for hierarchies. + - Align elements to the 4px grid. + - Group related nodes visually using subtle gray-5 background regions. + - Use generous whitespace — the site aesthetic is clean and airy. + - Maximum content width in diagrams should match the site: ~1200px. + + +9. ICONOGRAPHY +-------------- + + - Line-style icons, not filled. + - Stroke width: 1.5–2px. + - Icon size: 16–24px for inline, 32–40px for feature callouts. + - Icon color: match surrounding text color (gray-90 on light, white on dark). + + +10. DO / DON'T +-------------- + + DO: + - Use the gray scale as the foundation; add blue only for emphasis. + - Keep rounded corners consistent at 10px for containers. + - Use regular (400) weight text — the brand avoids heavy bold type. + - Keep diagrams clean with ample whitespace. + + DON'T: + - Use bright multi-color palettes — the site is intentionally restrained. + - Use drop shadows as a primary visual separator. + - Mix rounded and sharp corners in the same diagram. + - Use stroke widths thinner than 1px. + - Use all-caps except for caption/footnote-style labels. + - Use gradients unless replicating a specific site pattern. \ No newline at end of file