Skip to content

Commit 72fbac1

Browse files
committed
feat(site): redesign landing page as the Living Document
Replace the generic dark-SaaS template with a distinctive editorial design. - Type triad: Instrument Serif display headlines, JetBrains Mono as the source voice, Inter as the narrator. - Themes section flips the whole stage to warm Paper cream and re-skins live on toggle (default Paper). - Feature matrix replaces the icon-card grid; mono status bar and a vim end-of-file footer. - Real app screenshots in the hero and split-view sections, framed cleanly, no fake mockups. - Keeps the no-JS and reduced-motion fallbacks, live GitHub stats, responsive images, and SEO/schema intact.
1 parent ffbab0c commit 72fbac1

18 files changed

Lines changed: 477 additions & 330 deletions

docs/bun.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/package.json

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
{
22
"name": "marklite-site",
3-
"type": "module",
43
"version": "1.0.0",
5-
"private": true,
6-
"scripts": {
7-
"dev": "astro dev",
8-
"build": "astro build",
9-
"preview": "astro preview",
10-
"astro": "astro"
11-
},
124
"dependencies": {
135
"@fontsource-variable/inter": "^5.0.0",
146
"@fontsource/instrument-serif": "^5.0.0",
7+
"@fontsource/jetbrains-mono": "^5.2.8",
158
"@iconify-json/lucide": "^1.2.0",
169
"@tailwindcss/vite": "^4.0.0",
1710
"astro": "^5.0.0",
1811
"astro-icon": "^1.1.0",
1912
"gsap": "^3.12.0",
2013
"lenis": "^1.1.0",
2114
"tailwindcss": "^4.0.0"
22-
}
15+
},
16+
"private": true,
17+
"scripts": {
18+
"dev": "astro dev",
19+
"build": "astro build",
20+
"preview": "astro preview",
21+
"astro": "astro"
22+
},
23+
"type": "module"
2324
}

docs/src/components/AIShowcase.astro

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ const points = [
3535

3636
<div class="relative z-10 mx-auto grid max-w-6xl items-center gap-14 px-5 lg:grid-cols-2">
3737
<div data-reveal>
38-
<p class="eyebrow"><Icon name="lucide:sparkles" class="h-4 w-4 text-cyan" /> AI assistant</p>
39-
<h2 class="mt-3 text-4xl font-extrabold tracking-tight md:text-5xl">
40-
AI that <span class="text-gradient">edits</span>, not just chats
38+
<p class="mono-label"><span class="tok-mark-cyan">&gt;</span> ai assistant</p>
39+
<h2 class="font-serif-display mt-3 text-[clamp(2.2rem,5vw,3.5rem)]">
40+
AI that <em class="text-gradient">edits</em>, not just chats.
4141
</h2>
4242
<p class="mt-4 text-lg text-fg-muted">
4343
Most editors bolt on a chatbot. MarkLite's Agent proposes real edits to your document as a
@@ -61,7 +61,7 @@ const points = [
6161

6262
<!-- Live Agent inline-diff mock -->
6363
<div data-reveal>
64-
<AppWindow label="notes.md, Agent">
64+
<AppWindow label="notes.md">
6565
<div class="bg-ink-900 p-3 font-mono text-[13px] leading-relaxed">
6666
<!-- composer -->
6767
<div class="ai-composer-demo mb-3 flex items-center gap-2 rounded-lg border border-line bg-ink-850 px-3 py-2">
Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
---
2-
// Frame for product screenshots and the AI mock. The captured screenshots
3-
// already include MarkLite's own title bar + window controls, so this is just
4-
// a rounded, shadowed bezel, no duplicate (and non-native) chrome on top.
2+
// Editor-chrome frame for product screenshots. The captured screenshots
3+
// already include MarkLite's own UI, so this adds just a thin mono titlebar
4+
// (filename + traffic dots) that ties every shot into the page's editor motif.
55
interface Props {
6-
label?: string; // accepted for caller compatibility; not rendered
6+
label?: string; // shown in the titlebar as a filename, optional
77
class?: string;
88
}
9-
const { class: klass = "" } = Astro.props;
9+
const { label, class: klass = "" } = Astro.props;
1010
---
1111

12-
<div class={`window ${klass}`}>
12+
<div class={`editor ${klass}`}>
13+
{label && (
14+
<div class="editor-bar">
15+
<span class="editor-dots"><i></i><i></i><i></i></span>
16+
<span class="ml-1 truncate">{label}</span>
17+
</div>
18+
)}
1319
<slot />
1420
</div>

docs/src/components/Download.astro

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,12 @@ const platforms = [
3838
<div class="aurora" style="opacity:.3;height:60vh" data-parallax="5"></div>
3939
<div class="relative z-10 mx-auto max-w-6xl px-5">
4040
<div class="mx-auto max-w-2xl text-center" data-reveal>
41-
<p class="eyebrow justify-center">Download</p>
42-
<h2 class="mt-3 text-4xl font-extrabold tracking-tight md:text-5xl">
43-
Get MarkLite, it's free
41+
<p class="mono-label justify-center"><span class="tok-mark">$</span> download</p>
42+
<h2 class="font-serif-display mt-3 text-[clamp(2.4rem,6vw,4rem)]">
43+
Get MarkLite. It's free.
4444
</h2>
4545
<p class="mt-4 text-lg text-fg-muted">
46-
Free for personal use. Grab the latest release for your platform. No account required.
46+
Free and open source. Grab the latest release for your platform. No account required.
4747
</p>
4848
</div>
4949

docs/src/components/EditorShowcase.astro

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
import { Image } from "astro:assets";
33
import { Icon } from "astro-icon/components";
4-
import AppWindow from "./AppWindow.astro";
54
import showcase from "../assets/screenshots/showcase-dark.png";
65
76
const chips = [
@@ -12,32 +11,32 @@ const chips = [
1211
---
1312

1413
<section id="editor" class="relative overflow-hidden py-24 md:py-32">
15-
<div class="aurora" style="opacity:.25" data-parallax="4"></div>
16-
<div class="relative z-10 mx-auto max-w-6xl px-5">
17-
<div class="mx-auto max-w-2xl text-center" data-reveal>
18-
<p class="eyebrow justify-center">See it in action</p>
19-
<h2 class="mt-3 text-4xl font-extrabold tracking-tight md:text-5xl">
20-
Type Markdown. Watch it <span class="text-gradient">come alive.</span>
14+
<div class="aurora" style="opacity:.22" data-parallax="4"></div>
15+
<div class="relative z-10 mx-auto max-w-5xl px-5">
16+
<div class="max-w-2xl" data-reveal>
17+
<p class="mono-label"><span class="tok-mark-cyan">&gt;</span> split view</p>
18+
<h2 class="font-serif-display mt-3 text-[clamp(2.2rem,5vw,3.5rem)]">
19+
Source and document, always in&nbsp;sync.
2120
</h2>
2221
<p class="mt-4 text-lg text-fg-muted">
23-
Equations, chemical reactions, diagrams, and code: all rendered live in the preview as you
24-
write, with the raw source one keystroke away.
22+
Write on one side, read on the other, scrolling in lockstep. Equations, chemical reactions,
23+
diagrams, and code all render live in the preview as you type.
2524
</p>
2625
</div>
2726

28-
<div class="relative mx-auto mt-14 max-w-5xl" data-reveal>
29-
<AppWindow label=".shots / Getting Started.md, Split view">
27+
<div class="mt-12" data-reveal>
28+
<div class="editor">
3029
<Image
3130
src={showcase}
32-
alt="MarkLite preview rendering an integral equation, a balanced chemical reaction, a Mermaid flowchart, and a syntax-highlighted TypeScript code block"
31+
alt="MarkLite preview rendering an integral equation, a balanced chemical reaction, a Mermaid flowchart, and a syntax-highlighted code block"
3332
widths={[760, 1100, 1600, 1920]}
3433
sizes="(max-width: 1024px) 100vw, 1024px"
3534
loading="lazy"
3635
class="w-full"
3736
/>
38-
</AppWindow>
37+
</div>
3938

40-
<div class="mt-6 flex flex-wrap justify-center gap-2.5">
39+
<div class="mt-6 flex flex-wrap gap-2.5">
4140
{chips.map((c) => (
4241
<span class="pill">
4342
<Icon name={c.icon} class="h-4 w-4 text-brand" /> {c.label}

docs/src/components/Faq.astro

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ const faqs = [
3131

3232
<section id="faq" class="py-24 md:py-32">
3333
<div class="mx-auto max-w-3xl px-5">
34-
<div class="text-center" data-reveal>
35-
<p class="eyebrow justify-center">FAQ</p>
36-
<h2 class="mt-3 text-4xl font-extrabold tracking-tight md:text-5xl">Good questions</h2>
34+
<div data-reveal>
35+
<p class="mono-label"><span class="tok-mark-cyan">?</span> faq</p>
36+
<h2 class="font-serif-display mt-3 text-[clamp(2.2rem,5vw,3.5rem)]">Good questions.</h2>
3737
</div>
3838

3939
<div class="mt-12 divide-y divide-line" data-reveal>

docs/src/components/Features.astro

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,89 +1,92 @@
11
---
22
import { Icon } from "astro-icon/components";
33
4-
const features = [
4+
const rows = [
55
{
66
icon: "lucide:sparkles",
7-
title: "AI assistant: Ask & Agent",
8-
desc: "Chat about your document, or let Agent mode propose edits as an inline diff you accept or reject, per change. Bring your own model: OpenAI, Gemini, Ollama, llama.cpp.",
9-
span: true,
7+
title: "AI: Ask & Agent",
8+
desc: "Chat about your document, or let Agent propose edits as an inline diff you accept or reject. Bring your own model.",
9+
kbd: "Agent",
1010
accent: "cyan",
1111
},
1212
{
1313
icon: "lucide:columns-2",
1414
title: "Reader · Code · Split",
15-
desc: "Toggle rendered reading, raw code, and a split view with bidirectional scroll sync.",
15+
desc: "Rendered reading, raw source, or both side by side with bidirectional scroll sync.",
16+
kbd: "Ctrl+\\",
1617
},
1718
{
1819
icon: "lucide:sigma",
1920
title: "Math & chemistry",
20-
desc: "KaTeX for inline and block math, plus mhchem for equations, ions, and isotopes, rare in an editor this simple.",
21+
desc: "KaTeX for inline and block math, plus mhchem for equations, ions, and isotopes.",
22+
kbd: "$ … $",
2123
},
2224
{
2325
icon: "lucide:workflow",
2426
title: "Mermaid diagrams",
25-
desc: "Flowcharts, sequence, class, state, gantt, ER, and mindmaps render right in the preview.",
27+
desc: "Flowcharts, sequence, class, state, gantt, ER, and mindmaps render live in the preview.",
28+
kbd: "```mermaid",
2629
},
2730
{
2831
icon: "lucide:slash",
2932
title: "Slash commands",
3033
desc: "Type / for headings, lists, tables, math, callouts, and more. No syntax to memorize.",
34+
kbd: "/",
3135
},
3236
{
3337
icon: "lucide:link",
3438
title: "Wikilinks & outline",
3539
desc: "[[other-file]] links resolve in the folder, with an outline pane that follows your cursor.",
40+
kbd: "[[ ]]",
3641
},
3742
{
3843
icon: "lucide:command",
3944
title: "Command palette",
40-
desc: "Ctrl+P to jump to any command, file, heading, or toggle. Find & Replace with regex too.",
45+
desc: "Jump to any command, file, heading, or toggle. Find & Replace with regex too.",
46+
kbd: "Ctrl+P",
4147
},
4248
{
4349
icon: "lucide:palette",
4450
title: "Themes & typography",
45-
desc: "Four themes (Dark, Light, Paper, GitHub), five fonts, three sizes, focus & typewriter modes.",
51+
desc: "Four themes, five fonts, three sizes, plus focus and typewriter modes.",
52+
kbd: "4 themes",
4653
},
4754
{
4855
icon: "lucide:zap",
4956
title: "Native & private",
50-
desc: "Built with Tauri + Rust: small, fast, offline. No accounts, no tracking, files stay local.",
57+
desc: "Built on Tauri + Rust: small, fast, offline. No accounts, no tracking, files stay local.",
58+
kbd: "Tauri",
5159
},
5260
];
5361
---
5462

5563
<section id="features" class="relative py-24 md:py-32">
56-
<div class="mx-auto max-w-6xl px-5">
64+
<div class="mx-auto max-w-5xl px-5">
5765
<div class="max-w-2xl" data-reveal>
58-
<p class="eyebrow">Features</p>
59-
<h2 class="mt-3 text-4xl font-extrabold tracking-tight md:text-5xl">
60-
Power features, none of the setup
66+
<p class="mono-label"><span class="tok-mark">##</span> features</p>
67+
<h2 class="font-serif-display mt-3 text-[clamp(2.2rem,5vw,3.5rem)]">
68+
Power features, none of the setup.
6169
</h2>
6270
<p class="mt-4 text-lg text-fg-muted">
6371
A focused writing surface with the power features pros expect, and a few you won't find
6472
elsewhere.
6573
</p>
6674
</div>
6775

68-
<div class="mt-12 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3">
69-
{features.map((f) => (
70-
<article
71-
class={`card ring-glow p-6 ${f.span ? "sm:col-span-2" : ""}`}
72-
data-reveal
73-
>
74-
<span
75-
class={`inline-flex h-11 w-11 items-center justify-center rounded-xl border border-line ${
76-
f.accent === "cyan" ? "text-cyan" : "text-brand"
77-
}`}
78-
style={`background: color-mix(in srgb, ${
79-
f.accent === "cyan" ? "var(--color-cyan)" : "var(--color-brand)"
80-
} 12%, transparent)`}
81-
>
82-
<Icon name={f.icon} class="h-5 w-5" />
83-
</span>
84-
<h3 class="mt-5 text-lg font-semibold tracking-tight">{f.title}</h3>
85-
<p class="mt-2 text-[15px] leading-relaxed text-fg-muted">{f.desc}</p>
86-
</article>
76+
<div class="matrix mt-12" data-reveal>
77+
{rows.map((r) => (
78+
<div class="matrix-row">
79+
<div class="flex items-center gap-3">
80+
<span class={`inline-flex h-8 w-8 shrink-0 items-center justify-center rounded-lg border border-line ${r.accent === "cyan" ? "text-cyan" : "text-brand"}`}>
81+
<Icon name={r.icon} class="h-4 w-4" />
82+
</span>
83+
<h3 class="font-medium tracking-tight">{r.title}</h3>
84+
</div>
85+
<p class="text-[15px] leading-relaxed text-fg-muted">{r.desc}</p>
86+
<div class="md:text-right">
87+
<span class={`kbd ${r.accent === "cyan" ? "!text-cyan" : ""}`}>{r.kbd}</span>
88+
</div>
89+
</div>
8790
))}
8891
</div>
8992
</div>

docs/src/components/Footer.astro

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,27 @@ const links = [
1313
];
1414
---
1515

16-
<footer class="border-t border-line py-14">
17-
<div class="mx-auto flex max-w-6xl flex-col items-center justify-between gap-8 px-5 md:flex-row">
16+
<footer class="border-t border-line">
17+
<!-- end-of-file motif -->
18+
<div class="mx-auto max-w-6xl px-5 pt-10 font-mono text-[13px] leading-relaxed" data-reveal>
19+
<div class="flex">
20+
<span class="linenum w-8 shrink-0">38</span>
21+
<span class="text-fg-muted"><span class="text-brand">#</span> Thanks for scrolling.<span class="caret"></span></span>
22+
</div>
23+
{[39, 40, 41].map((n) => (
24+
<div class="flex">
25+
<span class="linenum w-8 shrink-0">{n}</span>
26+
<span class="eof-tilde">~</span>
27+
</div>
28+
))}
29+
</div>
30+
31+
<div class="mx-auto mt-8 flex max-w-6xl flex-col items-center justify-between gap-8 px-5 pb-6 md:flex-row">
1832
<div class="flex items-center gap-3">
1933
<img src={`${base}icon.svg`} alt="MarkLite logo" width="30" height="30" class="h-[30px] w-[30px]" />
2034
<div>
2135
<div class="font-semibold tracking-tight">MarkLite</div>
22-
<div class="text-sm text-fg-dim"{year} Saqlain Abbas · Source-available</div>
36+
<div class="text-sm text-fg-dim"{year} Saqlain Abbas · Apache-2.0</div>
2337
</div>
2438
</div>
2539

@@ -40,4 +54,17 @@ const links = [
4054
<Icon name="lucide:star" class="h-4 w-4" /> Star on GitHub
4155
</a>
4256
</div>
57+
58+
<!-- editor status line -->
59+
<div class="border-t border-line-soft bg-ink-950/70">
60+
<div class="mx-auto flex max-w-6xl flex-wrap items-center gap-x-4 gap-y-1 px-5 py-2.5 font-mono text-[11px] text-fg-dim">
61+
<span class="rounded bg-brand/15 px-1.5 py-0.5 font-semibold text-brand-soft">NORMAL</span>
62+
<span>readme.md</span>
63+
<span class="text-fg-dim/40">·</span>
64+
<span>markdown</span>
65+
<span class="text-fg-dim/40">·</span>
66+
<span>UTF-8</span>
67+
<span class="ml-auto">Ln 42, Col 1</span>
68+
</div>
69+
</div>
4370
</footer>

0 commit comments

Comments
 (0)