Skip to content

Commit 4f2f016

Browse files
committed
chore: format landing docs
1 parent 2a596f8 commit 4f2f016

4 files changed

Lines changed: 3212 additions & 1595 deletions

File tree

docs/.vitepress/theme/SimDeckHome.vue

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,18 @@ function updateNavState() {
1010
const bgCameraY = Math.min(scrollY * 0.58, window.innerHeight * 0.7);
1111
const bgOpacity = Math.max(1 - scrollY / (window.innerHeight * 0.95), 0);
1212
13-
document.documentElement.style.setProperty("--sd-nav-progress", progress.toFixed(3));
14-
document.documentElement.style.setProperty("--sd-hero-bg-camera-y", `${(-bgCameraY).toFixed(1)}px`);
15-
document.documentElement.style.setProperty("--sd-hero-bg-opacity", bgOpacity.toFixed(3));
13+
document.documentElement.style.setProperty(
14+
"--sd-nav-progress",
15+
progress.toFixed(3),
16+
);
17+
document.documentElement.style.setProperty(
18+
"--sd-hero-bg-camera-y",
19+
`${(-bgCameraY).toFixed(1)}px`,
20+
);
21+
document.documentElement.style.setProperty(
22+
"--sd-hero-bg-opacity",
23+
bgOpacity.toFixed(3),
24+
);
1625
document.documentElement.classList.toggle("sd-nav-scrolled", progress > 0.02);
1726
}
1827
@@ -24,7 +33,10 @@ onMounted(() => {
2433
2534
onBeforeUnmount(() => {
2635
window.removeEventListener("scroll", updateNavState);
27-
document.documentElement.classList.remove("sd-home-active", "sd-nav-scrolled");
36+
document.documentElement.classList.remove(
37+
"sd-home-active",
38+
"sd-nav-scrolled",
39+
);
2840
document.documentElement.style.removeProperty("--sd-nav-progress");
2941
document.documentElement.style.removeProperty("--sd-hero-bg-camera-y");
3042
document.documentElement.style.removeProperty("--sd-hero-bg-opacity");
@@ -41,7 +53,11 @@ async function copyCommand() {
4153
textarea.select();
4254
const copiedViaSelection = document.execCommand("copy");
4355
textarea.remove();
44-
if (!copiedViaSelection && typeof navigator !== "undefined" && navigator.clipboard) {
56+
if (
57+
!copiedViaSelection &&
58+
typeof navigator !== "undefined" &&
59+
navigator.clipboard
60+
) {
4561
await navigator.clipboard.writeText(command);
4662
}
4763
} catch {
@@ -61,19 +77,27 @@ async function copyCommand() {
6177
<h1 id="simdeck-title">SimDeck</h1>
6278
<p>Simulator Superpowers for you and your fleet of agents</p>
6379
<div class="sd-command-wrap" aria-label="Install and start SimDeck">
64-
<pre class="sd-command"><code><span>npm i -g simdeck@latest</span><span>simdeck</span></code></pre>
80+
<pre
81+
class="sd-command"
82+
><code><span>npm i -g simdeck@latest</span><span>simdeck</span></code></pre>
6583
<button
6684
class="sd-copy"
6785
type="button"
68-
:aria-label="copied ? 'Copied SimDeck install command' : 'Copy SimDeck install command'"
86+
:aria-label="
87+
copied
88+
? 'Copied SimDeck install command'
89+
: 'Copy SimDeck install command'
90+
"
6991
:data-copied="copied ? 'true' : 'false'"
7092
@click="copyCommand"
7193
>
7294
<svg viewBox="0 0 24 24" aria-hidden="true">
7395
<path v-if="copied" d="m5 12 4 4 10-10" />
7496
<template v-else>
7597
<path d="M9 9h10v10H9z" />
76-
<path d="M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1" />
98+
<path
99+
d="M5 15H4a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v1"
100+
/>
77101
</template>
78102
</svg>
79103
</button>
@@ -91,8 +115,8 @@ async function copyCommand() {
91115
<section class="sd-story" aria-labelledby="simdeck-story">
92116
<div class="sd-story-head sd-reveal">
93117
<h2 id="simdeck-story">
94-
SimDeck does not get in the way. It makes the way for agents to work without dividing your
95-
attention.
118+
SimDeck does not get in the way. It makes the way for agents to work
119+
without dividing your attention.
96120
</h2>
97121
</div>
98122

@@ -102,9 +126,11 @@ async function copyCommand() {
102126
<div class="sd-moment-copy">
103127
<h3>Live Simulator, where your work already happens</h3>
104128
<p>
105-
Open Simulator side by side in your favorite IDE or agent orchestrator. Supported in VS Code,
106-
Codex, Cursor, Claude Code, and more. Simulators run headlessly in the background for agents to
107-
operate on while you stay focused on what matters in the current context.
129+
Open Simulator side by side in your favorite IDE or agent
130+
orchestrator. Supported in VS Code, Codex, Cursor, Claude Code,
131+
and more. Simulators run headlessly in the background for agents
132+
to operate on while you stay focused on what matters in the
133+
current context.
108134
</p>
109135
</div>
110136
<figure class="sd-shot sd-shot-image sd-shot-ide">
@@ -120,9 +146,9 @@ async function copyCommand() {
120146
<div class="sd-moment-copy">
121147
<h3>Pull request previews for mobile apps</h3>
122148
<p>
123-
GitHub Actions can build the app, boot a simulator, and stream the session back through
124-
SimDeck. Review a mobile PR like a web preview: open it, tap around, and merge with actual
125-
confidence.
149+
GitHub Actions can build the app, boot a simulator, and stream the
150+
session back through SimDeck. Review a mobile PR like a web
151+
preview: open it, tap around, and merge with actual confidence.
126152
</p>
127153
</div>
128154
<figure class="sd-shot sd-shot-image sd-shot-pr-image">
@@ -138,8 +164,9 @@ async function copyCommand() {
138164
<div class="sd-moment-copy">
139165
<h3>Remote simulator access without the screen-share lag</h3>
140166
<p>
141-
WebRTC carries the live stream to browsers, teammates, and SimDeck Studio on iOS. Pair
142-
once, then drive the simulator from wherever the work is happening.
167+
WebRTC carries the live stream to browsers, teammates, and SimDeck
168+
Studio on iOS. Pair once, then drive the simulator from wherever
169+
the work is happening.
143170
</p>
144171
</div>
145172
<figure class="sd-shot sd-shot-remote-card">
@@ -155,11 +182,15 @@ async function copyCommand() {
155182
<div class="sd-moment-copy">
156183
<h3>A CLI your agents can actually trust</h3>
157184
<p>
158-
Boot, install, launch, tap, type, describe, screenshot, record, and assert. Stable commands
159-
and clear JSON errors turn simulators into end-to-end test rigs for every agent in your fleet.
185+
Boot, install, launch, tap, type, describe, screenshot, record,
186+
and assert. Stable commands and clear JSON errors turn simulators
187+
into end-to-end test rigs for every agent in your fleet.
160188
</p>
161189
</div>
162-
<div class="sd-shot sd-shot-cli" aria-label="Screenshot placeholder for SimDeck CLI automation">
190+
<div
191+
class="sd-shot sd-shot-cli"
192+
aria-label="Screenshot placeholder for SimDeck CLI automation"
193+
>
163194
<div class="sd-cli-lines" aria-hidden="true">
164195
<span>$ simdeck boot "iPhone 17"</span>
165196
<span>$ simdeck install app.app</span>
@@ -175,8 +206,9 @@ async function copyCommand() {
175206
<div>
176207
<h2>Don't switch context. Give the simulator a URL.</h2>
177208
<p>
178-
Run it headlessly on your Mac, stream it into your editor or pull request, and let agents tap,
179-
type, inspect, screenshot, and verify without taking over your screen.
209+
Run it headlessly on your Mac, stream it into your editor or pull
210+
request, and let agents tap, type, inspect, screenshot, and verify
211+
without taking over your screen.
180212
</p>
181213
</div>
182214
<a href="/guide/quick-start">Start with the quick start</a>

docs/.vitepress/theme/custom.css

Lines changed: 70 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@
1515
--sd-shadow: 0 32px 110px rgba(0, 0, 0, 0.12);
1616

1717
--vp-font-family-base:
18-
"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
19-
sans-serif;
18+
"Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
19+
"Segoe UI", sans-serif;
2020
--vp-font-family-mono:
21-
"SFMono-Regular", ui-monospace, "SF Mono", Menlo, Monaco, Consolas, monospace;
21+
"SFMono-Regular", ui-monospace, "SF Mono", Menlo, Monaco, Consolas,
22+
monospace;
2223
--vp-c-bg: var(--sd-bg);
2324
--vp-c-bg-alt: var(--sd-bg-soft);
2425
--vp-c-bg-soft: var(--sd-bg-soft);
@@ -122,13 +123,23 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
122123
right: 0;
123124
left: 0;
124125
z-index: 50;
125-
border-bottom-color: rgba(128, 128, 128, calc(var(--sd-nav-progress, 0) * 0.11));
126+
border-bottom-color: rgba(
127+
128,
128+
128,
129+
128,
130+
calc(var(--sd-nav-progress, 0) * 0.11)
131+
);
126132
background: rgba(255, 255, 255, calc(var(--sd-nav-progress, 0) * 0.76));
127133
backdrop-filter: blur(calc(var(--sd-nav-progress, 0) * 18px)) saturate(140%);
128134
}
129135

130136
.dark.sd-home-active .VPNav {
131-
border-bottom-color: rgba(128, 128, 128, calc(var(--sd-nav-progress, 0) * 0.11));
137+
border-bottom-color: rgba(
138+
128,
139+
128,
140+
128,
141+
calc(var(--sd-nav-progress, 0) * 0.11)
142+
);
132143
background: rgba(0, 0, 0, calc(var(--sd-nav-progress, 0) * 0.74));
133144
}
134145

@@ -144,7 +155,12 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
144155
.sd-home-active .VPNav .divider,
145156
.sd-home-active .VPNav .divider-line {
146157
border-color: transparent !important;
147-
background-color: rgba(128, 128, 128, calc(var(--sd-nav-progress, 0) * 0.11)) !important;
158+
background-color: rgba(
159+
128,
160+
128,
161+
128,
162+
calc(var(--sd-nav-progress, 0) * 0.11)
163+
) !important;
148164
}
149165

150166
.sd-home-active:not(.sd-nav-scrolled) .VPNav {
@@ -451,7 +467,13 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
451467
bottom: 8px;
452468
left: 26px;
453469
width: 1px;
454-
background: linear-gradient(180deg, transparent, var(--sd-line-strong) 8%, var(--sd-line-strong) 92%, transparent);
470+
background: linear-gradient(
471+
180deg,
472+
transparent,
473+
var(--sd-line-strong) 8%,
474+
var(--sd-line-strong) 92%,
475+
transparent
476+
);
455477
}
456478

457479
.sd-moment {
@@ -513,7 +535,11 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
513535
border: 1px solid var(--sd-line);
514536
border-radius: var(--sd-radius);
515537
background:
516-
linear-gradient(180deg, color-mix(in srgb, var(--sd-panel-subtle) 74%, transparent), color-mix(in srgb, var(--sd-panel) 90%, transparent)),
538+
linear-gradient(
539+
180deg,
540+
color-mix(in srgb, var(--sd-panel-subtle) 74%, transparent),
541+
color-mix(in srgb, var(--sd-panel) 90%, transparent)
542+
),
517543
var(--sd-panel);
518544
overflow: hidden;
519545
transition:
@@ -524,8 +550,16 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
524550

525551
.dark .sd-shot {
526552
background:
527-
radial-gradient(circle at 72% 18%, rgba(50, 145, 255, 0.14), transparent 32%),
528-
linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02)),
553+
radial-gradient(
554+
circle at 72% 18%,
555+
rgba(50, 145, 255, 0.14),
556+
transparent 32%
557+
),
558+
linear-gradient(
559+
180deg,
560+
rgba(255, 255, 255, 0.06),
561+
rgba(255, 255, 255, 0.02)
562+
),
529563
#050505;
530564
}
531565

@@ -570,15 +604,31 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
570604
place-items: center;
571605
padding: 28px;
572606
background:
573-
radial-gradient(circle at 50% 24%, rgba(0, 112, 243, 0.12), transparent 42%),
574-
linear-gradient(180deg, color-mix(in srgb, var(--sd-panel-subtle) 80%, transparent), var(--sd-panel));
607+
radial-gradient(
608+
circle at 50% 24%,
609+
rgba(0, 112, 243, 0.12),
610+
transparent 42%
611+
),
612+
linear-gradient(
613+
180deg,
614+
color-mix(in srgb, var(--sd-panel-subtle) 80%, transparent),
615+
var(--sd-panel)
616+
);
575617
box-shadow: 0 22px 80px rgba(0, 0, 0, 0.16);
576618
}
577619

578620
.dark .sd-shot-remote-card {
579621
background:
580-
radial-gradient(circle at 50% 24%, rgba(50, 145, 255, 0.22), transparent 42%),
581-
linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(255, 255, 255, 0.018)),
622+
radial-gradient(
623+
circle at 50% 24%,
624+
rgba(50, 145, 255, 0.22),
625+
transparent 42%
626+
),
627+
linear-gradient(
628+
180deg,
629+
rgba(255, 255, 255, 0.055),
630+
rgba(255, 255, 255, 0.018)
631+
),
582632
#050505;
583633
box-shadow: 0 24px 94px rgba(0, 0, 0, 0.48);
584634
}
@@ -824,7 +874,12 @@ html:not(.sd-home-active) .VPNavBar.screen-open {
824874
border: 7px solid var(--sd-text);
825875
border-radius: 26px;
826876
background:
827-
linear-gradient(180deg, transparent 0 38%, var(--sd-blue-soft) 38% 40%, transparent 40%),
877+
linear-gradient(
878+
180deg,
879+
transparent 0 38%,
880+
var(--sd-blue-soft) 38% 40%,
881+
transparent 40%
882+
),
828883
radial-gradient(circle at 50% 18%, var(--sd-line-strong), transparent 26%),
829884
var(--sd-bg);
830885
}

0 commit comments

Comments
 (0)