Skip to content

Commit f00c46d

Browse files
Merge pull request #55 from mmorerasanchez/fix/frontend-fixes-v3.3
fix(web): frontend polish pass — overview, AI pages, design pages (v3.3)
2 parents 65dd49b + c7f8be9 commit f00c46d

14 files changed

Lines changed: 858 additions & 180 deletions

docs/claude-code-prompts-frontend-fixes.md

Lines changed: 650 additions & 0 deletions
Large diffs are not rendered by default.

skill/democrito/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ When generating or reviewing democrito code, apply this order:
7676

7777
- React 18 + TypeScript 5
7878
- Vite 5
79-
- Tailwind CSS v3
79+
- Tailwind CSS v4
8080
- shadcn/ui (Radix primitives)
8181
- React Router v6
8282

src/components/AppSidebar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function AppSidebar() {
4040

4141
return (
4242
<Sidebar className="border-r border-sidebar-border bg-sidebar">
43-
<SidebarContent className="pt-4">
43+
<SidebarContent className="pt-6">
4444
{/* Documentation */}
4545
<SidebarGroup>
4646
<SidebarGroupLabel className="font-mono text-2xs uppercase tracking-widest text-muted-foreground">

src/components/organisms/ai/QuickStartSection.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,20 @@ interface InstallPath {
1111

1212
const PATHS: InstallPath[] = [
1313
{
14-
title: "shadcn Registry",
14+
title: "shadcn registry",
1515
recommended: true,
1616
description: "Installs the component registry and drops the AI context files into your project root.",
1717
code: INSTALL_COMMAND,
1818
language: "bash",
1919
},
2020
{
21-
title: "Git Clone",
21+
title: "Git clone",
2222
description: "Clone the full repo — useful if you want to browse, fork, or contribute.",
2323
code: "git clone https://github.com/mmorerasanchez/democrito.git",
2424
language: "bash",
2525
},
2626
{
27-
title: "Manual Download",
27+
title: "Manual download",
2828
description: "Download CLAUDE.md and DESIGN.md from the repo and drop them into your project root.",
2929
code: "https://github.com/mmorerasanchez/democrito",
3030
language: "url",
@@ -60,6 +60,18 @@ export function QuickStartSection({ showHeading = true }: QuickStartSectionProps
6060
{path.description}
6161
</Text>
6262
<CodeBlock code={path.code} language={path.language} />
63+
{path.recommended && (
64+
<div className="flex justify-end">
65+
<a
66+
href="https://democrito.design/r/democrito.json"
67+
target="_blank"
68+
rel="noopener noreferrer"
69+
className="font-mono text-2xs text-muted-foreground transition-colors hover:text-accent"
70+
>
71+
registry.json ↗
72+
</a>
73+
</div>
74+
)}
6375
</div>
6476
))}
6577
</div>

src/pages/AiPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ const platforms = [
4040
{
4141
path: "/ai/github",
4242
icon: Github,
43-
name: "GitHub",
44-
badge: "Open Source",
43+
name: "Terminal",
44+
badge: "GitHub",
4545
desc: "Edit src/index.css directly. Two variables change the whole personality.",
4646
},
4747
];

src/pages/AtomsPage.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,13 @@ export default function AtomsPage() {
7171
const [switchOn, setSwitchOn] = useState(false);
7272
const [checked, setChecked] = useState(false);
7373

74+
const categories = [
75+
{ id: "cat-form", label: "Form & Input", count: 4 },
76+
{ id: "cat-labels", label: "Labels & typography", count: 4 },
77+
{ id: "cat-feedback", label: "Feedback & state", count: 4 },
78+
{ id: "cat-utility", label: "Utilities", count: 3 },
79+
];
80+
7481
return (
7582
<div className="space-y-12">
7683
<PageMeta
@@ -91,8 +98,23 @@ export default function AtomsPage() {
9198
<p className="mt-1 font-body text-base text-muted-foreground">
9299
Base-level components — the building blocks of the design system.
93100
</p>
101+
<p className="mt-0.5 font-mono text-xs text-foreground-subtle">10 atoms · 4 categories</p>
94102
</div>
95103

104+
{/* ── CATEGORY JUMP NAV ── */}
105+
<nav className="flex flex-wrap gap-2">
106+
{categories.map((cat) => (
107+
<a
108+
key={cat.id}
109+
href={`#${cat.id}`}
110+
className="inline-flex items-center gap-1.5 rounded-md border border-border bg-card px-3 py-1.5 font-display text-xs font-medium text-foreground transition-colors hover:border-accent hover:text-accent"
111+
>
112+
{cat.label}
113+
<span className="font-mono text-2xs text-muted-foreground">{cat.count}</span>
114+
</a>
115+
))}
116+
</nav>
117+
96118
{/* ═══════════════════════════════════════════════════════════ */}
97119
{/* CATEGORY: Form & Input */}
98120
{/* ═══════════════════════════════════════════════════════════ */}

src/pages/ManifiestoPage.tsx

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ export default function ManifiestoPage() {
2424
<div className="mx-auto max-w-2xl space-y-14 py-4">
2525
<PageMeta
2626
title="Manifesto"
27-
description="You can only be as good as your taste — why design systems still matter in the age of generation."
27+
description="Why design systems still matter in the age of AI generation."
2828
path="/manifesto"
2929
jsonLd={{
3030
"@context": "https://schema.org",
3131
"@type": "Article",
3232
"name": "Manifesto · democrito",
33-
"description": "You can only be as good as your taste — why design systems still matter in the age of generation.",
33+
"description": "Why design systems still matter in the age of AI generation.",
3434
"url": "https://democrito.design/manifesto",
3535
"isPartOf": { "@type": "SoftwareApplication", "name": "democrito" },
3636
}}
@@ -44,16 +44,8 @@ export default function ManifiestoPage() {
4444
</p>
4545
</div>
4646

47-
{/* Opening: pull quote + intro paragraph */}
47+
{/* Opening: intro paragraph */}
4848
<div className="space-y-4">
49-
<blockquote className="border-l-2 border-accent pl-5 py-1">
50-
<p className="font-display text-2xl font-bold text-accent">
51-
"You can only be as good as your taste."
52-
</p>
53-
<cite className="mt-2 block font-mono text-xs text-muted-foreground not-italic">
54-
— Mariano Morera, founder
55-
</cite>
56-
</blockquote>
5749
<p className="font-body text-base leading-relaxed text-muted-foreground">
5850
Every few months, a new headline declares something dead. Design has had its share.
5951
The line travels every feed — half provocation, half prophecy, full misreading.
@@ -70,23 +62,23 @@ export default function ManifiestoPage() {
7062
The Evidence
7163
</p>
7264
<div className="space-y-4">
73-
<p className="font-body text-base leading-relaxed text-foreground">
65+
<p className="font-body text-base leading-relaxed text-muted-foreground">
7466
<L href="https://www.mckinsey.com/capabilities/mckinsey-design/our-insights/the-business-value-of-design">
7567
McKinsey tracked 300+ public companies
7668
</L>{" "}
7769
across five years and 2 million financial data points. Companies in the top
7870
quartile of design maturity outperformed peers by 32 points in revenue growth
7971
and 56 points in shareholder returns.
8072
</p>
81-
<p className="font-body text-base leading-relaxed text-foreground">
73+
<p className="font-body text-base leading-relaxed text-muted-foreground">
8274
The{" "}
8375
<L href="https://www.dmi.org/page/DesignValue">
8476
Design Management Institute's Design Value Index
8577
</L>{" "}
8678
shows design-driven companies outperforming the S&P 500 by more than 200%
8779
over rolling ten-year windows.
8880
</p>
89-
<p className="font-body text-base leading-relaxed text-foreground">
81+
<p className="font-body text-base leading-relaxed text-muted-foreground">
9082
The same pattern holds in government. The countries ranking highest on digital
9183
service delivery — Denmark, Estonia, Singapore — invested in open, documented
9284
design systems:{" "}
@@ -100,7 +92,7 @@ export default function ManifiestoPage() {
10092
</L>{" "}
10193
now spans dozens of countries.
10294
</p>
103-
<p className="font-body text-base leading-relaxed text-foreground">
95+
<p className="font-body text-base leading-relaxed text-muted-foreground">
10496
Design maturity is one of the most consistently rewarded competitive advantages
10597
of the modern era.
10698
</p>
@@ -113,7 +105,7 @@ export default function ManifiestoPage() {
113105
The Last Twelve Months
114106
</p>
115107
<div className="space-y-4">
116-
<p className="font-body text-base leading-relaxed text-foreground">
108+
<p className="font-body text-base leading-relaxed text-muted-foreground">
117109
<L href="https://airbnb.design/">Airbnb invented a file format</L> because
118110
existing formats weren't expressive enough.{" "}
119111
<L href="https://developer.apple.com/design/">
@@ -132,10 +124,10 @@ export default function ManifiestoPage() {
132124
</L>, a tool whose entire pitch is the preservation of design systems and brand
133125
consistency. Lovable launched Aesthetics to give designers more expressive tools.
134126
</p>
135-
<p className="font-body text-base leading-relaxed text-foreground">
127+
<p className="font-body text-base leading-relaxed text-muted-foreground">
136128
Figma grew 41%. Adobe 11.5%. Canva 35% — adding 85 million users in a single year.
137129
</p>
138-
<p className="font-body text-base leading-relaxed text-foreground">
130+
<p className="font-body text-base leading-relaxed text-muted-foreground">
139131
These are not the numbers of a discipline in decline.
140132
</p>
141133
</div>
@@ -148,26 +140,26 @@ export default function ManifiestoPage() {
148140
<p className="font-mono text-2xs uppercase tracking-widest text-accent">
149141
The Gap AI Hasn't Closed
150142
</p>
151-
<p className="font-body text-base leading-relaxed text-foreground">
143+
<p className="font-body text-base leading-relaxed text-muted-foreground">
152144
AI raises the floor. A model can generate a UI in thirty seconds, a brand system
153145
from a URL, a component from a prompt. But Joel Lewenstein, Anthropic's head of
154146
product design and the person who built Claude Design, confirmed the limit directly
155147
after launch:
156148
</p>
157149
{/* Blockquote */}
158150
<blockquote className="border-l-2 border-accent pl-5 py-1">
159-
<p className="font-body text-base leading-relaxed text-foreground">
151+
<p className="font-body text-base leading-relaxed text-muted-foreground">
160152
"Claude Design doesn't yet address that last mile craft and delight that
161153
differentiates the best products from the OK ones."
162154
</p>
163155
<p className="mt-2 font-mono text-xs text-muted-foreground">
164156
— Joel Lewenstein, Head of Product Design, Anthropic
165157
</p>
166158
</blockquote>
167-
<p className="font-body text-base leading-relaxed text-foreground">
159+
<p className="font-body text-base leading-relaxed text-muted-foreground">
168160
The company that built the tool everyone fears most is the one naming the gap.
169161
</p>
170-
<p className="font-body text-base leading-relaxed text-foreground">
162+
<p className="font-body text-base leading-relaxed text-muted-foreground">
171163
The 80% is automated. The 20% — why this surface, not that one; why this typeface
172164
for data and that one for prose; why one accent, not three — is still brain work.
173165
That is the craft difference that defines taste.
@@ -181,20 +173,20 @@ export default function ManifiestoPage() {
181173
<p className="font-mono text-2xs uppercase tracking-widest text-accent">
182174
democrito
183175
</p>
184-
<p className="font-body text-base leading-relaxed text-foreground">
176+
<p className="font-body text-base leading-relaxed text-muted-foreground">
185177
democrito exists in that 20%.
186178
</p>
187-
<p className="font-body text-base leading-relaxed text-foreground">
179+
<p className="font-body text-base leading-relaxed text-muted-foreground">
188180
Three surfaces. One accent. Three fonts, each with a specific semantic role.
189181
Every decision deliberate and documented, from the Sanzo Wada earth-tone palette
190182
to the JetBrains Mono.
191183
</p>
192-
<p className="font-body text-base leading-relaxed text-foreground">
184+
<p className="font-body text-base leading-relaxed text-muted-foreground">
193185
democrito ships DESIGN.md — the layer that carries reasoning, not just tokens —
194186
along with CLAUDE.md, specific Claude instructions. When Claude, Lovable, or any
195187
AI agent reads it, it doesn't just know what to render. It knows why.
196188
</p>
197-
<p className="font-body text-base leading-relaxed text-foreground">
189+
<p className="font-body text-base leading-relaxed text-muted-foreground">
198190
That is what separates a design system from a stylesheet. And what separates a
199191
product with taste from one without.
200192
</p>
@@ -204,15 +196,15 @@ export default function ManifiestoPage() {
204196

205197
{/* Closing */}
206198
<div className="space-y-6">
207-
<p className="font-body text-base leading-relaxed text-foreground">
199+
<p className="font-body text-base leading-relaxed text-muted-foreground">
208200
"X is dead" is an old rhetorical move: a modern echo of the German
209201
post-Reformation philosophical tradition, where Nietzsche's "God is dead"
210202
announced the collapse of a shared moral frame. Used for design, the phrase
211203
keeps its theatrical cadence — half provocation, half prophecy — but it loses
212204
its accuracy. It becomes a kind of hallucination: dramatic in sound, empty
213205
in diagnosis.
214206
</p>
215-
<p className="font-body text-base leading-relaxed text-foreground">
207+
<p className="font-body text-base leading-relaxed text-muted-foreground">
216208
What is actually happening is the opposite of decline. We are entering the
217209
greatest creative expansion of our time. Tools are improving, velocity is
218210
compounding, and the bar is rising alongside competition. In that environment,
@@ -221,7 +213,7 @@ export default function ManifiestoPage() {
221213
code), and deeper into judgment (choosing the right references, sensing the
222214
true signal, and shaping it into coherent craft).
223215
</p>
224-
<p className="font-body text-base leading-relaxed text-foreground">
216+
<p className="font-body text-base leading-relaxed text-muted-foreground">
225217
When generation becomes cheap, the advantage moves to what cannot be inferred
226218
automatically: intention, restraint, and the ability to make the right choices
227219
under constraint. That is where taste lives — and why design is not dying,

src/pages/MoleculesPage.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,13 @@ export default function MoleculesPage() {
9494
const [varName, setVarName] = useState("user_name");
9595
const [varValue, setVarValue] = useState("John Doe");
9696

97+
const categories = [
98+
{ id: "cat-form", label: "Form & input", count: 5 },
99+
{ id: "cat-navigation", label: "Navigation", count: 3 },
100+
{ id: "cat-data", label: "Data & display", count: 5 },
101+
{ id: "cat-activity", label: "Activity & status", count: 3 },
102+
];
103+
97104
return (
98105
<div className="space-y-12">
99106
<PageMeta
@@ -114,8 +121,23 @@ export default function MoleculesPage() {
114121
<p className="mt-1 font-body text-base text-muted-foreground">
115122
Composite components built from atoms. Each molecule combines 2+ atoms into a reusable pattern.
116123
</p>
124+
<p className="mt-0.5 font-mono text-xs text-foreground-subtle">18 molecules · 4 categories</p>
117125
</div>
118126

127+
{/* ── CATEGORY JUMP NAV ── */}
128+
<nav className="flex flex-wrap gap-2">
129+
{categories.map((cat) => (
130+
<a
131+
key={cat.id}
132+
href={`#${cat.id}`}
133+
className="inline-flex items-center gap-1.5 rounded-md border border-border bg-card px-3 py-1.5 font-display text-xs font-medium text-foreground transition-colors hover:border-accent hover:text-accent"
134+
>
135+
{cat.label}
136+
<span className="font-mono text-2xs text-muted-foreground">{cat.count}</span>
137+
</a>
138+
))}
139+
</nav>
140+
119141
{/* ═══════════════════════════════════════════════════════════ */}
120142
{/* CATEGORY: Form & Input */}
121143
{/* ═══════════════════════════════════════════════════════════ */}

0 commit comments

Comments
 (0)