Skip to content

Commit 8876a3e

Browse files
committed
refactor: align InfraLens UI with Randy Code design tokens and fix tools card/back-links (v0.9.1)
- retokenize 210 raw zinc classes across 22 files to semantic Randy Code classes (bg-background, text-muted-foreground, border-border, etc.) — zero visual diff for now, since .infralens-scope keeps its current values; sets up the actual recoloring without touching these files a second time - app/tools/page.tsx: drop the redundant "Lancer l'outil" CTA, rename "Ouvrir InfraLens" to the generic "Ouvrir l'outil" (reusable for future tools), add the logo, switch to Randy Code's own tokens (this file lives outside .infralens-scope) - replace the identical "← Back to home" duplicated across docs/privacy/compare with a shared LocalNav component ("Analyze · Compare · Documentation") — real lateral nav instead of a redundant back link, on top of the existing global back-link - fix a real pre-existing contrast failure on the "Fail" status badge (text-red-500 on bg-red-500/10, 4.1:1 vs 4.5:1 required), caught by the accessibility suite now that a "Fail" example actually renders on a scanned page — aligned to -400 like info/error
1 parent cf5c789 commit 8876a3e

26 files changed

Lines changed: 347 additions & 294 deletions

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## [0.9.1] — 2026-08-11
4+
5+
### Nettoyage
6+
7+
- **Classes zinc brutes retokenisées vers les classes sémantiques Randy Code** — 210 occurrences dans 22 fichiers InfraLens (`bg-zinc-900``bg-background`, `text-zinc-400``text-muted-foreground`, `border-zinc-800``border-border`, etc.) ; changement de valeurs nul pour l'instant (`.infralens-scope` garde ses valeurs actuelles), seulement les noms de classes changent — prépare la recoloration réelle sans retoucher ces fichiers une seconde fois.
8+
- **Card `/tools` d'InfraLens** — CTA redondant "Lancer l'outil" supprimé, "Ouvrir InfraLens" renommé "Ouvrir l'outil" (générique, réutilisable pour les futurs outils), logo ajouté, classes zinc remplacées par les tokens Randy Code natifs (ce fichier vit hors `.infralens-scope`).
9+
- **Back-link tripliqué sur docs/privacy/compare** — chaque page avait son propre "← Back to home" identique, en plus du lien global "Retour aux outils". Remplacé par un composant `LocalNav` partagé ("Analyze · Compare · Documentation"), qui donne une vraie navigation latérale au lieu d'un retour dupliqué.
10+
11+
### Corrections
12+
13+
- **Contraste insuffisant sur le badge "Fail"** (`text-red-500` sur `bg-red-500/10`, 4.1:1 au lieu de 4.5:1 requis) — préexistant, jamais détecté car aucun exemple "Fail" n'était jusqu'ici scanné par les tests d'accessibilité (corrigé en trouvant l'exemple de rapport, v0.9.0). Aligné sur `-400` comme les statuts `info`/`error` déjà conformes.
14+
315
## [0.9.0] — 2026-08-11
416

517
### Contenu

app/tools/infralens/compare/page.tsx

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { CompareClient } from "@infralens-components/compare/compare-client";
2-
import { ArrowLeft } from "lucide-react";
3-
import Link from "next/link";
2+
import { LocalNav } from "@infralens-components/local-nav";
43

54
export const metadata = {
65
title: "Compare reports — InfraLens",
@@ -10,22 +9,16 @@ export const metadata = {
109

1110
export default function ComparePage() {
1211
return (
13-
<main className="min-h-screen bg-zinc-900 text-zinc-100">
12+
<main className="min-h-screen bg-background text-foreground">
1413
<div className="max-w-4xl mx-auto px-6 sm:px-8 md:px-12 py-8 md:py-12 lg:py-16">
1514
<div className="space-y-8 md:space-y-10">
1615
<div className="space-y-4">
17-
<Link
18-
href="/tools/infralens"
19-
className="inline-flex items-center gap-2 text-sm text-zinc-400 hover:text-zinc-300 transition-colors"
20-
>
21-
<ArrowLeft className="size-4" />
22-
Back to home
23-
</Link>
16+
<LocalNav />
2417
<div>
2518
<h1 className="text-3xl md:text-4xl font-bold tracking-tight mb-2">
2619
Compare reports
2720
</h1>
28-
<p className="text-zinc-400">
21+
<p className="text-muted-foreground">
2922
Drop in two JSON reports exported from InfraLens to see what
3023
changed — score, category breakdown, and every check that
3124
improved or regressed. Everything happens in your browser;

app/tools/infralens/docs/page.tsx

Lines changed: 90 additions & 94 deletions
Large diffs are not rendered by default.

app/tools/infralens/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function InfraLensLayout({
1515
}>) {
1616
return (
1717
<div className="infralens-scope">
18-
<div className="bg-zinc-900 px-6 pt-4 sm:px-8 md:px-12">
18+
<div className="bg-background px-6 pt-4 sm:px-8 md:px-12">
1919
<div className="mx-auto max-w-4xl">
2020
<ToolBackLink />
2121
</div>

app/tools/infralens/privacy/page.tsx

Lines changed: 23 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import {
55
CardHeader,
66
CardTitle,
77
} from "@/components/ui/card";
8+
import { LocalNav } from "@infralens-components/local-nav";
89
import { siteConfig } from "@infralens-config/site-config";
9-
import { ArrowLeft } from "lucide-react";
1010
import Link from "next/link";
1111

1212
export const metadata = {
@@ -17,22 +17,16 @@ export const metadata = {
1717

1818
export default function PrivacyPage() {
1919
return (
20-
<main className="min-h-screen bg-zinc-900 text-zinc-100">
20+
<main className="min-h-screen bg-background text-foreground">
2121
<div className="max-w-4xl mx-auto px-6 sm:px-8 md:px-12 py-8 md:py-12 lg:py-16">
2222
<div className="space-y-8 md:space-y-12">
2323
<div className="space-y-4">
24-
<Link
25-
href="/tools/infralens"
26-
className="inline-flex items-center gap-2 text-sm text-zinc-400 hover:text-zinc-300 transition-colors"
27-
>
28-
<ArrowLeft className="size-4" />
29-
Back to home
30-
</Link>
24+
<LocalNav />
3125
<div>
3226
<h1 className="text-3xl md:text-4xl font-bold tracking-tight mb-2">
3327
Privacy
3428
</h1>
35-
<p className="text-zinc-400">
29+
<p className="text-muted-foreground">
3630
{siteConfig.name} has no account, no billing, and no ad
3731
tracking. This page explains exactly what data moves where — in
3832
plain terms, matching what the{" "}
@@ -49,17 +43,17 @@ export default function PrivacyPage() {
4943
</div>
5044
</div>
5145

52-
<Card className="border-zinc-800 bg-zinc-900/50">
46+
<Card className="border-border bg-background/50">
5347
<CardHeader>
5448
<CardTitle className="text-xl">
5549
What gets sent when you run an analysis
5650
</CardTitle>
57-
<CardDescription className="text-zinc-400">
51+
<CardDescription className="text-muted-foreground">
5852
The URL you type is sent to InfraLens&apos;s own server, which
5953
performs the checks itself — not your browser.
6054
</CardDescription>
6155
</CardHeader>
62-
<CardContent className="space-y-3 text-sm text-zinc-400">
56+
<CardContent className="space-y-3 text-sm text-muted-foreground">
6357
<p>
6458
Checks (DNS lookups, HTTP requests, TLS handshakes) have to run
6559
server-side: your browser can&apos;t make most of these requests
@@ -74,17 +68,17 @@ export default function PrivacyPage() {
7468
</CardContent>
7569
</Card>
7670

77-
<Card className="border-zinc-800 bg-zinc-900/50">
71+
<Card className="border-border bg-background/50">
7872
<CardHeader>
7973
<CardTitle className="text-xl">
8074
Rate limiting and your IP
8175
</CardTitle>
82-
<CardDescription className="text-zinc-400">
76+
<CardDescription className="text-muted-foreground">
8377
Yes, your IP address is used — only to enforce a per-IP request
8478
limit, and only for a few seconds.
8579
</CardDescription>
8680
</CardHeader>
87-
<CardContent className="space-y-3 text-sm text-zinc-400">
81+
<CardContent className="space-y-3 text-sm text-muted-foreground">
8882
<p>
8983
Each analysis request is checked against a short-lived,
9084
in-memory counter keyed by your IP address, to prevent abuse
@@ -104,20 +98,20 @@ export default function PrivacyPage() {
10498
</CardContent>
10599
</Card>
106100

107-
<Card className="border-zinc-800 bg-zinc-900/50">
101+
<Card className="border-border bg-background/50">
108102
<CardHeader>
109103
<CardTitle className="text-xl">
110104
Third-party services contacted
111105
</CardTitle>
112-
<CardDescription className="text-zinc-400">
106+
<CardDescription className="text-muted-foreground">
113107
One: a public IP-info lookup, about the site you&apos;re
114108
analyzing — never about you.
115109
</CardDescription>
116110
</CardHeader>
117-
<CardContent className="space-y-3 text-sm text-zinc-400">
111+
<CardContent className="space-y-3 text-sm text-muted-foreground">
118112
<p>
119113
The Hosting &amp; IP check queries{" "}
120-
<span className="text-zinc-300">ipapi.co</span> with the
114+
<span className="text-foreground">ipapi.co</span> with the
121115
resolved IP address of the site being analyzed, to report its
122116
hosting provider and network (ASN). That result is cached
123117
server-side for 15 minutes to avoid repeat lookups. Your own IP
@@ -129,22 +123,22 @@ export default function PrivacyPage() {
129123
</CardContent>
130124
</Card>
131125

132-
<Card className="border-zinc-800 bg-zinc-900/50">
126+
<Card className="border-border bg-background/50">
133127
<CardHeader>
134128
<CardTitle className="text-xl">
135129
What&apos;s stored locally
136130
</CardTitle>
137-
<CardDescription className="text-zinc-400">
131+
<CardDescription className="text-muted-foreground">
138132
Your last 10 analyses, in your browser only — nothing on
139133
InfraLens&apos;s servers.
140134
</CardDescription>
141135
</CardHeader>
142-
<CardContent className="space-y-3 text-sm text-zinc-400">
136+
<CardContent className="space-y-3 text-sm text-muted-foreground">
143137
<p>
144138
InfraLens keeps no server-side record of any analysis once the
145139
report is returned to your browser. Instead, up to 10 recent
146140
reports are cached in your browser&apos;s{" "}
147-
<span className="text-zinc-300">localStorage</span> so you can
141+
<span className="text-foreground">localStorage</span> so you can
148142
revisit them — this never leaves your device and no other page
149143
or site can read it.
150144
</p>
@@ -158,16 +152,16 @@ export default function PrivacyPage() {
158152
</CardContent>
159153
</Card>
160154

161-
<Card className="border-zinc-800 bg-zinc-900/50">
155+
<Card className="border-border bg-background/50">
162156
<CardHeader>
163157
<CardTitle className="text-xl">
164158
What the analyzed site can see
165159
</CardTitle>
166-
<CardDescription className="text-zinc-400">
160+
<CardDescription className="text-muted-foreground">
167161
Its own server logs, exactly as for any other visitor.
168162
</CardDescription>
169163
</CardHeader>
170-
<CardContent className="space-y-3 text-sm text-zinc-400">
164+
<CardContent className="space-y-3 text-sm text-muted-foreground">
171165
<p>
172166
Running an analysis makes real DNS, HTTP, and TLS connections to
173167
the target from InfraLens&apos;s server. The site being analyzed
@@ -180,11 +174,11 @@ export default function PrivacyPage() {
180174
</CardContent>
181175
</Card>
182176

183-
<Card className="border-zinc-800 bg-zinc-900/50">
177+
<Card className="border-border bg-background/50">
184178
<CardHeader>
185179
<CardTitle className="text-xl">No tracking, by design</CardTitle>
186180
</CardHeader>
187-
<CardContent className="space-y-3 text-sm text-zinc-400">
181+
<CardContent className="space-y-3 text-sm text-muted-foreground">
188182
<p>
189183
No analytics scripts, no ad trackers, no cookies used for
190184
identification, no account system, no persistent server-side

app/tools/page.tsx

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { PageShell } from "@/components/layout/page-shell";
22
import { brand } from "@/lib/brand";
3-
import { ArrowRight } from "lucide-react";
43
import type { Metadata } from "next";
4+
import Image from "next/image";
55
import Link from "next/link";
66

77
export const metadata: Metadata = {
@@ -29,6 +29,16 @@ export default function ToolsPage() {
2929
}}
3030
>
3131
<div className="mb-4 flex items-center justify-between">
32+
<div className="flex items-center gap-2">
33+
<Image
34+
src="/infralens/brand/logo-symbol.png"
35+
alt=""
36+
width={24}
37+
height={24}
38+
className="h-6 w-6"
39+
/>
40+
<span className="sr-only">InfraLens</span>
41+
</div>
3242
<span
3343
className="inline-block rounded-md px-2.5 py-1 text-[10px] font-semibold uppercase tracking-wider"
3444
style={{
@@ -38,33 +48,27 @@ export default function ToolsPage() {
3848
>
3949
Disponible
4050
</span>
41-
<Link
42-
href="/tools/infralens"
43-
className="inline-flex items-center gap-1 text-xs text-zinc-400 transition-colors hover:text-zinc-300"
44-
>
45-
Lancer l&apos;outil <ArrowRight size={10} />
46-
</Link>
4751
</div>
4852

49-
<h2 className="text-2xl font-bold text-white">InfraLens</h2>
50-
<p className="mt-2 max-w-lg text-sm text-zinc-400">
53+
<h2 className="text-2xl font-bold text-foreground">InfraLens</h2>
54+
<p className="mt-2 max-w-lg text-sm text-muted-foreground">
5155
Outil open source d&apos;inspection technique de sites web : DNS,
5256
TLS, headers HTTP et sécurité, infrastructure, robots.txt et
5357
sitemap, en un seul rapport lisible.
5458
</p>
55-
<p className="mt-4 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-zinc-400">
59+
<p className="mt-4 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground">
5660
<Link
5761
href="/tools/infralens"
58-
className="text-white underline underline-offset-2 hover:text-zinc-300"
62+
className="text-foreground underline underline-offset-2 hover:text-muted-foreground"
5963
>
60-
Ouvrir InfraLens
64+
Ouvrir l&apos;outil
6165
</Link>
6266
<span aria-hidden="true">·</span>
6367
<Link
6468
href="/projects/infralens"
65-
className="underline underline-offset-2 hover:text-zinc-300"
69+
className="underline underline-offset-2 hover:text-foreground"
6670
>
67-
Voir l&apos;étude de cas
71+
Étude de cas
6872
</Link>
6973
</p>
7074
</div>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "randy-code",
3-
"version": "0.9.0",
3+
"version": "0.9.1",
44
"private": true,
55
"packageManager": "pnpm@10.7.0",
66
"scripts": {

0 commit comments

Comments
 (0)