@@ -5,14 +5,13 @@ import { totalRules, ruleGroups } from '../../data/rules';
55const langCount = ruleGroups .length ;
66
77const languages = [
8- { name: ' JavaScript' , short: ' JS' , color: ' #F7DF1E' },
9- { name: ' TypeScript' , short: ' TS' , color: ' #3178C6' },
10- { name: ' Python' , short: ' PY' , color: ' #3776AB' },
11- { name: ' Go' , short: ' GO' , color: ' #00ADD8' },
12- { name: ' Ruby' , short: ' RB' , color: ' #CC342D' },
13- { name: ' Java' , short: ' JA' , color: ' #ED8B00' },
14- { name: ' PHP' , short: ' PHP' , color: ' #777BB4' },
15- { name: ' Rust' , short: ' RS' , color: ' #DEA584' },
8+ { name: ' JavaScript' , color: ' #F7DF1E' , rules: 24 },
9+ { name: ' Python' , color: ' #3776AB' , rules: 26 },
10+ { name: ' Go' , color: ' #00ADD8' , rules: 8 },
11+ { name: ' Ruby' , color: ' #CC342D' , rules: 10 },
12+ { name: ' Java' , color: ' #ED8B00' , rules: 10 },
13+ { name: ' PHP' , color: ' #777BB4' , rules: 10 },
14+ { name: ' Rust' , color: ' #DEA584' , rules: 10 },
1615];
1716---
1817
@@ -40,38 +39,25 @@ const languages = [
4039 <!-- Main hero grid -->
4140 <div class =" grid gap-10 lg:grid-cols-[1fr_1fr] lg:items-start" >
4241
43- <!-- Left: copy -->
42+ <!-- Left -->
4443 <div class =" fade-up fade-up-delay-1" >
4544 <div class =" flex items-center gap-4 mb-6" >
46- <svg class =" w-12 h-12 sm:w-16 sm:h-16 shrink-0" viewBox =" 0 0 64 64" fill =" none" >
45+ <svg class =" w-12 h-12 sm:w-14 sm:h-14 shrink-0" viewBox =" 0 0 64 64" fill =" none" >
4746 <path d =" M8 8L20 28L32 20L44 28L56 8L52 32L44 44L36 52H28L20 44L12 32L8 8Z" fill =" #F59E0B" fill-opacity =" 0.15" stroke =" #F59E0B" stroke-width =" 2" stroke-linejoin =" round" />
4847 <circle cx =" 24" cy =" 32" r =" 2.5" fill =" #F59E0B" />
4948 <circle cx =" 40" cy =" 32" r =" 2.5" fill =" #F59E0B" />
5049 </svg >
51- <h1 class =" font-heading text-noir-50 leading-[0.92] tracking-[-0.03em]" style =" font-size: clamp(3.2rem, 7.5vw, 6rem );" >
50+ <h1 class =" font-heading text-noir-50 leading-[0.92] tracking-[-0.03em]" style =" font-size: clamp(3.2rem, 7.5vw, 5.5rem );" >
5251 fox<span class =" text-fox-light" >guard</span >
5352 </h1 >
5453 </div >
5554
56- <p class =" max-w-lg text-lg text-noir-300 mb-3 " >
57- Fast local security scanner written in Rust.
55+ <p class =" max-w-md text-lg text-noir-300 mb-8 " >
56+ Security scanner that runs before you commit. { totalRules } built- in rules, single Rust binary, no network calls .
5857 </p >
59- <p class =" max-w-lg text-base text-noir-500 leading-relaxed mb-6" >
60- { totalRules } built-in rules across { langCount } languages. Secrets scanning. Baselines. Semgrep-compatible YAML. Single binary.
61- </p >
62-
63- <!-- Language badges -->
64- <div class =" flex flex-wrap gap-2 mb-8" >
65- { languages .map ((lang ) => (
66- <div class = " flex items-center gap-1.5 rounded-md bg-noir-900 border border-noir-800 px-2.5 py-1.5 transition-colors hover:border-noir-700" >
67- <span class = " w-2 h-2 rounded-full shrink-0" style = { ` background: ${lang .color } ` } ></span >
68- <span class = " font-mono text-[10px] text-noir-400 tracking-wide" >{ lang .name } </span >
69- </div >
70- ))}
71- </div >
7258
7359 <!-- CTA -->
74- <div class =" flex flex-col sm:flex-row items-start sm:items-center gap-3 mb-10 " >
60+ <div class =" flex flex-col sm:flex-row items-start sm:items-center gap-3 mb-8 " >
7561 <button
7662 id =" npx-btn"
7763 class =" group flex items-center gap-3 rounded-md border border-noir-800 bg-noir-950 px-5 py-3 font-mono text-sm text-fox-light transition-all duration-200 hover:border-noir-700 cursor-pointer"
@@ -92,21 +78,20 @@ const languages = [
9278 </a >
9379 </div >
9480
95- <!-- Stats row -->
96- <div class =" flex flex-wrap items-center gap-6 font-mono text-xs" >
97- <div >
98- <span class =" text-noir-100 text-lg font-heading" >{ totalRules } </span >
99- <span class =" text-noir-600 ml-1.5" >rules</span >
100- </div >
101- <div class =" w-px h-4 bg-noir-800" ></div >
102- <div >
103- <span class =" text-noir-100 text-lg font-heading" >{ langCount } </span >
104- <span class =" text-noir-600 ml-1.5" >languages</span >
81+ <!-- Languages strip -->
82+ <div class =" bg-noir-900 border border-noir-800 rounded-xl p-4" >
83+ <div class =" flex items-center justify-between mb-3" >
84+ <span class =" font-mono text-[10px] uppercase tracking-wider text-noir-600" >{ langCount } languages</span >
85+ <span class =" font-mono text-[10px] text-fox" >{ totalRules } rules</span >
10586 </div >
106- <div class =" w-px h-4 bg-noir-800" ></div >
107- <div >
108- <span class =" text-noir-100 text-lg font-heading" >< 1s</span >
109- <span class =" text-noir-600 ml-1.5" >typical scan</span >
87+ <div class =" grid grid-cols-4 sm:grid-cols-7 gap-2" >
88+ { languages .map ((lang ) => (
89+ <div class = " flex flex-col items-center gap-1.5 py-1.5" >
90+ <span class = " w-3 h-3 rounded-full" style = { ` background: ${lang .color }; box-shadow: 0 0 8px ${lang .color }33 ` } ></span >
91+ <span class = " font-mono text-[9px] text-noir-400" >{ lang .name } </span >
92+ <span class = " font-mono text-[9px] text-noir-600" >{ lang .rules } </span >
93+ </div >
94+ ))}
11095 </div >
11196 </div >
11297 </div >
0 commit comments