diff --git a/site/src/assets/screens/eeschema.png b/site/src/assets/screens/eeschema.png new file mode 100644 index 0000000..b90fd96 Binary files /dev/null and b/site/src/assets/screens/eeschema.png differ diff --git a/site/src/assets/screens/gerbview.png b/site/src/assets/screens/gerbview.png new file mode 100644 index 0000000..08e5827 Binary files /dev/null and b/site/src/assets/screens/gerbview.png differ diff --git a/site/src/assets/screens/pcbnew.png b/site/src/assets/screens/pcbnew.png new file mode 100644 index 0000000..823a053 Binary files /dev/null and b/site/src/assets/screens/pcbnew.png differ diff --git a/site/src/assets/screens/symbol-editor.png b/site/src/assets/screens/symbol-editor.png new file mode 100644 index 0000000..8380690 Binary files /dev/null and b/site/src/assets/screens/symbol-editor.png differ diff --git a/site/src/sections/CapabilityProof.astro b/site/src/sections/CapabilityProof.astro index 2221459..a79f069 100644 --- a/site/src/sections/CapabilityProof.astro +++ b/site/src/sections/CapabilityProof.astro @@ -1,7 +1,11 @@ --- import SectionBand from '../components/SectionBand.astro'; import CheckItem from '../components/CheckItem.astro'; -import Placeholder from '../components/Placeholder.astro'; +import { Picture } from 'astro:assets'; +import pcbnew from '../assets/screens/pcbnew.png'; +import eeschema from '../assets/screens/eeschema.png'; +import gerbview from '../assets/screens/gerbview.png'; +import symbolEditor from '../assets/screens/symbol-editor.png'; const capabilities = [ 'Schematic capture (Eeschema)', @@ -16,12 +20,34 @@ const capabilities = [ 'Push-and-shove routing', ]; -// TODO(assets): replace with real annotated screenshots (§4b.4). +// Real screenshots captured from the WASM build by the e2e harness, each loading +// a real design. Originals are 1280×720 PNGs in src/assets/screens/ (kept as the +// source); astro:assets emits responsive AVIF/WebP at build time. +// PCB — pic_programmer demo board (Pcbnew) +// Schematic — ECC83 push-pull amplifier (Eeschema) +// Gerber — tiny_tapeout fab output, 6 layers (GerbView) +// Symbol — VCA810 op-amp from a seeded library (Symbol editor) const shots = [ - 'PRODUCE: PCB layout editor screenshot (§4b.4a)', - 'PRODUCE: schematic capture (Eeschema) (§4b.4b)', - 'PRODUCE: 3D board view (§4b.4c)', - 'PRODUCE: DRC / ERC results panel (§4b.4d)', + { + img: pcbnew, + caption: 'PCB layout — Pcbnew', + alt: 'KiCad Pcbnew laying out the pic_programmer demo board in a browser tab', + }, + { + img: eeschema, + caption: 'Schematic capture — Eeschema', + alt: 'KiCad Eeschema editing the ECC83 push-pull amplifier schematic in a browser tab', + }, + { + img: gerbview, + caption: 'Gerber viewer — GerbView', + alt: 'KiCad GerbView displaying the tiny_tapeout demo board Gerber layers in a browser tab', + }, + { + img: symbolEditor, + caption: 'Symbol editor', + alt: 'KiCad symbol editor showing the VCA810 op-amp symbol in a browser tab', + }, ]; --- @@ -42,7 +68,20 @@ const shots = [ {capabilities.map((c) => )}
- {shots.map((s) => )} + {shots.map((s) => ( +
+ +
{s.caption}
+
+ ))}
@@ -69,6 +108,29 @@ const shots = [ grid-template-columns: 1fr 1fr; gap: 0.75rem; } + .shot { + margin: 0; + display: flex; + flex-direction: column; + gap: 0.4rem; + } + /* astro:assets renders the ; style it globally within .shots. */ + .shots :global(img) { + display: block; + width: 100%; + height: auto; + aspect-ratio: 16 / 9; + object-fit: cover; + border: 1px solid var(--border); + border-radius: var(--radius); + background: var(--bg-soft); + } + .shot figcaption { + font-family: var(--font-mono); + font-size: 0.72rem; + color: var(--fg-muted); + letter-spacing: 0.01em; + } :global(code) { font-family: var(--font-mono); }