Skip to content

Commit 685db6f

Browse files
committed
feat(site): enhance desktop hero
1 parent 0f63f06 commit 685db6f

15 files changed

Lines changed: 2983 additions & 1704 deletions

apps/site/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<link rel="preconnect" href="https://fonts.googleapis.com" />
4141
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
4242
<link
43-
href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,500;0,600;0,700;1,700&amp;family=JetBrains+Mono:wght@400;500&amp;display=swap"
43+
href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800&amp;family=Geist+Mono:wght@400;500;600&amp;family=Inter:wght@400;500;600;700&amp;family=JetBrains+Mono:wght@400;500;600&amp;display=swap"
4444
rel="stylesheet"
4545
/>
4646
<script
38.9 KB
Loading
104 KB
Loading
104 KB
Loading

apps/site/public/mascot-waving.png

51.9 KB
Loading
-272 KB
Binary file not shown.
-44.2 KB
Binary file not shown.
47.7 KB
Loading

apps/site/src/App.vue

Lines changed: 1740 additions & 993 deletions
Large diffs are not rendered by default.
Lines changed: 72 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,55 @@
11
<template>
2-
<div class="agent-loop">
3-
<span class="visually-hidden">The agent loops: plan, execute, observe, iterate.</span>
4-
<svg viewBox="0 0 320 180" width="100%" aria-hidden="true">
5-
<rect class="loop-base" x="50" y="40" width="220" height="100" rx="28" />
6-
<rect class="loop-progress" x="50" y="40" width="220" height="100" rx="28" />
7-
<circle cx="160" cy="40" r="4" />
8-
<circle cx="270" cy="90" r="4" />
9-
<circle cx="160" cy="140" r="4" />
10-
<circle cx="50" cy="90" r="4" />
11-
<text x="160" y="22" text-anchor="middle">Plan</text>
12-
<text x="284" y="94">Execute</text>
13-
<text x="160" y="166" text-anchor="middle">Observe</text>
14-
<text x="36" y="94" text-anchor="end">Iterate</text>
2+
<div class="agent-loop" aria-label="The autonomous agent loop: Plan, Execute, Observe, Iterate">
3+
<span class="visually-hidden">The autonomous loop: Plan, Execute, Observe, Iterate.</span>
4+
<svg viewBox="0 0 320 160" width="100%" aria-hidden="true">
5+
<defs>
6+
<linearGradient id="loopGradient" x1="0%" y1="0%" x2="100%" y2="100%">
7+
<stop offset="0%" stop-color="var(--accent)" stop-opacity="0.2" />
8+
<stop offset="50%" stop-color="var(--accent)" stop-opacity="1" />
9+
<stop offset="100%" stop-color="#38bdf8" stop-opacity="0.6" />
10+
</linearGradient>
11+
<filter id="nodeGlow" x="-50%" y="-50%" width="200%" height="200%">
12+
<feDropShadow dx="0" dy="0" stdDeviation="3" flood-color="var(--accent)" flood-opacity="0.4" />
13+
</filter>
14+
</defs>
15+
16+
<!-- Base track -->
17+
<rect class="loop-base" x="60" y="38" width="200" height="84" rx="24" />
18+
19+
<!-- Animated energy trail -->
20+
<rect class="loop-progress" x="60" y="38" width="200" height="84" rx="24" />
21+
22+
<!-- Step Nodes -->
23+
<g class="loop-node" transform="translate(160, 38)">
24+
<circle cx="0" cy="0" r="5.5" class="node-outer" />
25+
<circle cx="0" cy="0" r="2.5" class="node-inner" />
26+
</g>
27+
<g class="loop-node" transform="translate(260, 80)">
28+
<circle cx="0" cy="0" r="5.5" class="node-outer" />
29+
<circle cx="0" cy="0" r="2.5" class="node-inner" />
30+
</g>
31+
<g class="loop-node" transform="translate(160, 122)">
32+
<circle cx="0" cy="0" r="5.5" class="node-outer" />
33+
<circle cx="0" cy="0" r="2.5" class="node-inner" />
34+
</g>
35+
<g class="loop-node" transform="translate(60, 80)">
36+
<circle cx="0" cy="0" r="5.5" class="node-outer" />
37+
<circle cx="0" cy="0" r="2.5" class="node-inner" />
38+
</g>
39+
40+
<!-- Step Labels -->
41+
<text x="160" y="20" text-anchor="middle" class="step-label">Plan</text>
42+
<text x="272" y="84" class="step-label">Execute</text>
43+
<text x="160" y="150" text-anchor="middle" class="step-label">Observe</text>
44+
<text x="48" y="84" text-anchor="end" class="step-label">Iterate</text>
1545
</svg>
1646
</div>
1747
</template>
1848

1949
<style scoped>
2050
.agent-loop {
2151
width: 100%;
22-
padding-inline: 12px;
52+
padding-inline: 4px;
2353
}
2454
2555
svg {
@@ -32,39 +62,53 @@ rect {
3262
}
3363
3464
.loop-base {
35-
stroke: rgba(17, 17, 19, 0.15);
36-
stroke-width: 1;
65+
stroke: rgba(10, 10, 12, 0.1);
66+
stroke-width: 1.5;
3767
}
3868
3969
.loop-progress {
40-
stroke: var(--accent);
41-
stroke-dasharray: 40 660;
70+
stroke: url(#loopGradient);
71+
stroke-dasharray: 52 568;
72+
stroke-width: 2;
73+
stroke-linecap: round;
74+
animation: loop-travel 6s cubic-bezier(0.4, 0, 0.2, 1) infinite;
75+
}
76+
77+
.node-outer {
78+
fill: var(--canvas);
79+
stroke: var(--hairline-strong);
4280
stroke-width: 1.5;
43-
animation: loop-travel 6s linear infinite;
4481
}
4582
46-
circle {
47-
fill: #d1d1d5;
83+
.node-inner {
84+
fill: var(--accent);
4885
}
4986
50-
text {
51-
fill: var(--ink-subtle);
52-
font-family: 'JetBrains Mono', ui-monospace, 'SF Mono', monospace;
53-
font-size: 11px;
54-
font-weight: 500;
55-
letter-spacing: 0.6px;
87+
.step-label {
88+
fill: var(--ink-muted);
89+
font-family: 'Geist Mono', 'JetBrains Mono', ui-monospace, monospace;
90+
font-size: 10px;
91+
font-weight: 600;
92+
letter-spacing: 0.07em;
5693
text-transform: uppercase;
94+
transition: fill 200ms ease;
95+
}
96+
97+
.agent-loop:hover .step-label {
98+
fill: var(--ink);
5799
}
58100
59101
@keyframes loop-travel {
60102
to {
61-
stroke-dashoffset: -700;
103+
stroke-dashoffset: -620;
62104
}
63105
}
64106
65107
@media (prefers-reduced-motion: reduce) {
66108
.loop-progress {
67109
animation: none;
110+
stroke: var(--accent);
111+
stroke-dasharray: none;
68112
}
69113
}
70114
</style>

0 commit comments

Comments
 (0)