Skip to content

Commit df8b1ae

Browse files
ccross2claude
andcommitted
design: add line-based icon system, integrate into homepage + ecosystem
- Add Icon.svelte with 9 thin-line SVG glyphs (compute, identity, capital, shield, voice, lock, arrow-right, check, signal) - Integrate icons into homepage product cards (top-right, ghost→violet on hover) - Integrate icons into ecosystem pillar headers (violet accent) - Update CLAUDE.md: mark all redesign items complete, consolidate remaining work to external/blocked items only Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 5108280 commit df8b1ae

File tree

4 files changed

+118
-14
lines changed

4 files changed

+118
-14
lines changed

CLAUDE.md

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -302,35 +302,31 @@ Script is at `scripts/generate-og.js`. Run it after any brand or copy changes th
302302
- `esver.computer` has no standalone landing page — product page lives at `sovren.software/esver`
303303
- MrHaven SDK not yet documented on the site (removed SDK mention from CTA until ready)
304304
- No visual that shows the three products converging (convergence story is text-only)
305-
- OG image (`static/og-image.png`) not yet regenerated after schematic magitek redesign — run `npm run generate-og`
306305
- `augmentum.computer``esver.computer` DNS redirect not yet configured (Namecheap/Cloudflare)
307306
- Brevo welcome email template still references Augmentum OS in body text — update in Brevo dashboard
308-
- Dark mode tokens present but unpolished — light-mode first
309307

310308
## Remaining Work
311309

312-
### Redesign — Next Session
313-
- [ ] Schematic SVG diagrams (system architecture, trifecta, signal paths)
314-
- [ ] Line-based icon/glyph system
315-
- [ ] Dark mode polish (token tuning, visual QA)
316-
- [ ] Motion system (line tracing, reveal animations)
317-
- [ ] Regenerate OG image with new colors: `npm run generate-og`
318-
319-
### Pre-Existing
310+
### External / Blocked (cannot complete from this repo)
320311
- [ ] DNS forwarding: `augmentum.computer``esver.computer` (Namecheap or Cloudflare forwarding)
321312
- [ ] Build standalone `esver.computer` product landing page
322313
- [ ] Update Brevo welcome email template body text (Augmentum OS → Esver OS)
323314
- [ ] Blog/article platform for the two-article launch sequence
324315
- [ ] MrHaven SDK section on the MrHaven page (when SDK docs exist)
325-
- [ ] Visual convergence diagram on Ecosystem page
326316
- [ ] X profile update (currently MrHaven-branded)
327317
- [ ] Cloudflare Transform Rules for CDN-level security headers (see `SECURITY.md`)
328318

329319
### Completed
330320
- [x] Schematic magitek editorial redesign — full visual system rewrite (2026-03-15)
331321
- [x] Three.js + GSAP removed, panel/tag system added, violet accent (2026-03-15)
332-
- [x] StatusBar component added (2026-03-15)
333-
- [x] Nav restyled: solid bg, // separators, SYS:LIGHT/SYS:DARK, violet active (2026-03-15)
322+
- [x] StatusBar component, Nav restyled (2026-03-15)
323+
- [x] SVG diagrams: StackDiagram + TrifectaDiagram (2026-03-15)
324+
- [x] Line-based icon/glyph system: Icon.svelte with 9 glyphs (2026-03-15)
325+
- [x] Dark mode polish: refined token tuning (2026-03-15)
326+
- [x] Motion system: reveal.js + CSS scroll reveals (2026-03-15)
327+
- [x] OG image regenerated with schematic magitek palette (2026-03-15)
328+
- [x] Visual convergence diagram on homepage (2026-03-15)
329+
- [x] manifest.webmanifest theme-color updated (2026-03-15)
334330
- [x] Favicon suite, Web app manifest, OG image (2026-02-26)
335331
- [x] Open Graph + Twitter Card + Canonical URLs on all pages (2026-02-26)
336332
- [x] Security headers, skip-nav, aria-labels, prefers-reduced-motion (2026-02-26)

src/lib/Icon.svelte

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
<!--
2+
Line-based icon/glyph system.
3+
Usage: <Icon name="compute" size={20} />
4+
All icons are thin-line SVGs that match the schematic aesthetic.
5+
-->
6+
<script>
7+
/** @type {string} */
8+
export let name;
9+
/** @type {number} */
10+
export let size = 20;
11+
</script>
12+
13+
<svg
14+
width={size}
15+
height={size}
16+
viewBox="0 0 24 24"
17+
fill="none"
18+
stroke="currentColor"
19+
stroke-width="1.5"
20+
stroke-linecap="square"
21+
stroke-linejoin="miter"
22+
aria-hidden="true"
23+
class="icon"
24+
>
25+
{#if name === 'compute'}
26+
<!-- Terminal/command: monitor with prompt -->
27+
<rect x="3" y="4" width="18" height="14" rx="0" />
28+
<line x1="3" y1="20" x2="21" y2="20" />
29+
<polyline points="8,10 10,12 8,14" />
30+
<line x1="12" y1="14" x2="16" y2="14" />
31+
{:else if name === 'identity'}
32+
<!-- Face/biometric: simplified face outline -->
33+
<circle cx="12" cy="10" r="6" />
34+
<path d="M4 20 C4 16 8 14 12 14 C16 14 20 16 20 20" />
35+
{:else if name === 'capital'}
36+
<!-- Vault/lock: safe with keyhole -->
37+
<rect x="4" y="4" width="16" height="16" rx="0" />
38+
<rect x="6" y="6" width="12" height="12" rx="0" />
39+
<circle cx="12" cy="11" r="2" />
40+
<line x1="12" y1="13" x2="12" y2="15" />
41+
{:else if name === 'shield'}
42+
<!-- Shield: security perimeter -->
43+
<path d="M12 3 L20 7 L20 13 C20 17 16 20 12 21 C8 20 4 17 4 13 L4 7 Z" />
44+
{:else if name === 'voice'}
45+
<!-- Microphone: voice interface -->
46+
<rect x="9" y="3" width="6" height="10" rx="0" />
47+
<path d="M5 11 C5 15 8 18 12 18 C16 18 19 15 19 11" />
48+
<line x1="12" y1="18" x2="12" y2="22" />
49+
<line x1="8" y1="22" x2="16" y2="22" />
50+
{:else if name === 'lock'}
51+
<!-- Lock: encrypted/secured -->
52+
<rect x="5" y="11" width="14" height="10" rx="0" />
53+
<path d="M8 11 L8 7 C8 4.5 9.8 3 12 3 C14.2 3 16 4.5 16 7 L16 11" />
54+
<circle cx="12" cy="16" r="1.5" />
55+
{:else if name === 'arrow-right'}
56+
<!-- Arrow right -->
57+
<line x1="4" y1="12" x2="20" y2="12" />
58+
<polyline points="14,6 20,12 14,18" />
59+
{:else if name === 'check'}
60+
<!-- Checkmark -->
61+
<polyline points="4,12 9,17 20,6" />
62+
{:else if name === 'signal'}
63+
<!-- Signal/operational: broadcast waves -->
64+
<circle cx="12" cy="12" r="2" />
65+
<path d="M8 8 A6 6 0 0 1 16 8" />
66+
<path d="M5 5 A10 10 0 0 1 19 5" />
67+
{/if}
68+
</svg>
69+
70+
<style>
71+
.icon {
72+
display: inline-block;
73+
vertical-align: middle;
74+
flex-shrink: 0;
75+
}
76+
</style>

src/routes/+page.svelte

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,30 @@
1111

1212
<script>
1313
import StackDiagram from '$lib/StackDiagram.svelte';
14+
import Icon from '$lib/Icon.svelte';
1415
import { reveal } from '$lib/reveal.js';
1516
1617
const products = [
1718
{
1819
number: '01',
1920
category: 'OS',
21+
icon: 'compute',
2022
name: 'ESVER OS',
2123
href: '/esver',
2224
description: 'Voice-native command interface. Biometric-secured access. Local AI co-pilot. Declarative NixOS substrate. UX, privacy, and security — none sacrificed.',
2325
},
2426
{
2527
number: '02',
2628
category: 'IDENTITY',
29+
icon: 'identity',
2730
name: 'VISAGE',
2831
href: '/visage',
2932
description: 'Linux face authentication via PAM. ONNX inference runs entirely on-device — no cloud enrollment, no biometric database. Open source, MIT licensed.',
3033
},
3134
{
3235
number: '03',
3336
category: 'FINANCE',
37+
icon: 'capital',
3438
name: 'MR. HAVEN',
3539
href: '/mrhaven',
3640
description: 'Non-custodial USDC time vault on Base L2. Set conditions, name beneficiaries, define schedules — or designate autonomous agents as recipients. Smart contract executes regardless of who holds the keys.',
@@ -58,7 +62,10 @@
5862
<div class="product-grid">
5963
{#each products as p, i}
6064
<a href={p.href} class="product-card reveal reveal-delay-{i + 1}" use:reveal>
61-
<span class="product-num">{p.number}</span>
65+
<div class="product-top">
66+
<span class="product-num">{p.number}</span>
67+
<span class="product-icon"><Icon name={p.icon} size={18} /></span>
68+
</div>
6269
<span class="product-label tag">{p.category}</span>
6370
<h3 class="product-name">{p.name}</h3>
6471
<p class="product-desc">{p.description}</p>
@@ -206,12 +213,27 @@
206213
background: var(--accent-surface);
207214
}
208215
216+
.product-top {
217+
display: flex;
218+
justify-content: space-between;
219+
align-items: center;
220+
}
221+
209222
.product-num {
210223
font-size: var(--fs-label);
211224
letter-spacing: var(--ls-wider);
212225
color: var(--accent);
213226
}
214227
228+
.product-icon {
229+
color: var(--text-ghost);
230+
transition: color var(--transition-fast);
231+
}
232+
233+
.product-card:hover .product-icon {
234+
color: var(--accent);
235+
}
236+
215237
.product-label {
216238
align-self: flex-start;
217239
}

src/routes/ecosystem/+page.svelte

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,26 +11,30 @@
1111

1212
<script>
1313
import TrifectaDiagram from '$lib/TrifectaDiagram.svelte';
14+
import Icon from '$lib/Icon.svelte';
1415
import { reveal } from '$lib/reveal.js';
1516
1617
const pillars = [
1718
{
1819
num: '01',
1920
domain: 'COMPUTING',
21+
icon: 'compute',
2022
title: 'THE MACHINE IS A COMMAND CENTER, NOT A SUBSCRIPTION.',
2123
desc: 'An operating system that serves the vendor is not yours. Esver OS is built on the trifecta: UX that does not demand technical sacrifice, privacy that is architectural rather than cosmetic, and security that is the perimeter of your authority. Voice-native interface. Local AI co-pilot. Biometric-secured sessions. Declarative NixOS substrate. None of these properties trade off against the others. That is the point.',
2224
link: { label: 'ESVER OS →', href: '/esver' }
2325
},
2426
{
2527
num: '02',
2628
domain: 'IDENTITY',
29+
icon: 'identity',
2730
title: 'YOU ARE NOT A ROW IN A DATABASE.',
2831
desc: 'Biometrics should never leave the hardware they were captured on. Verification is a local cryptographic process, not a cloud API call. If a system requires your face to authenticate, it must prove it cannot steal it.',
2932
link: { label: 'VISAGE →', href: '/visage' }
3033
},
3134
{
3235
num: '03',
3336
domain: 'CAPITAL',
37+
icon: 'capital',
3438
title: 'NO HUMANS IN THE LOOP.',
3539
desc: 'Assets require custody or cryptography. We choose cryptography. A programmable vault should execute rules without hesitation, without exception, and without permission from a compliance department.',
3640
link: { label: 'MR. HAVEN →', href: '/mrhaven' }
@@ -77,6 +81,7 @@
7781
<div class="pillar panel reveal" use:reveal>
7882
<div class="pillar-header">
7983
<span class="pillar-n">{p.num}</span>
84+
<span class="pillar-icon"><Icon name={p.icon} size={24} /></span>
8085
<span class="pillar-domain tag--accent">{p.domain}</span>
8186
</div>
8287
<div class="pillar-body">
@@ -249,6 +254,11 @@
249254
color: var(--accent);
250255
}
251256
257+
.pillar-icon {
258+
color: var(--accent);
259+
opacity: 0.5;
260+
}
261+
252262
.pillar-domain {
253263
font-size: var(--fs-btn);
254264
font-weight: var(--fw-bold);

0 commit comments

Comments
 (0)