|
| 1 | +--- |
| 2 | +import TerminalDemo from '../ui/TerminalDemo.astro'; |
| 3 | +import CopyButton from '../ui/CopyButton.astro'; |
| 4 | +import { totalRules } from '../../data/rules'; |
| 5 | +--- |
| 6 | + |
| 7 | +<section class="relative pt-10 pb-16 sm:pt-14 sm:pb-24"> |
| 8 | + <div class="max-w-6xl mx-auto px-6"> |
| 9 | + |
| 10 | + <!-- Top bar --> |
| 11 | + <div class="fade-up flex items-center justify-between pb-10"> |
| 12 | + <div class="editorial-kicker">local-first sast</div> |
| 13 | + <nav class="hidden md:flex items-center gap-6 font-mono text-[10px] uppercase tracking-[0.12em] text-noir-600"> |
| 14 | + <a href="#speed" class="hover:text-noir-100 transition-colors no-underline">speed</a> |
| 15 | + <a href="#coverage" class="hover:text-noir-100 transition-colors no-underline">coverage</a> |
| 16 | + <a href="#rules" class="hover:text-noir-100 transition-colors no-underline">rules</a> |
| 17 | + <a href="#install" class="hover:text-noir-100 transition-colors no-underline">install</a> |
| 18 | + </nav> |
| 19 | + </div> |
| 20 | + |
| 21 | + <!-- Main hero grid --> |
| 22 | + <div class="grid gap-10 lg:grid-cols-[1fr_1fr] lg:items-start"> |
| 23 | + |
| 24 | + <!-- Left: copy --> |
| 25 | + <div class="fade-up fade-up-delay-1"> |
| 26 | + <h1 class="font-heading text-noir-50 leading-[0.92] tracking-[-0.03em] mb-6" style="font-size: clamp(3.2rem, 7.5vw, 6rem);"> |
| 27 | + fox<span class="text-fox-light">guard</span> |
| 28 | + </h1> |
| 29 | + |
| 30 | + <p class="max-w-lg text-lg text-noir-300 mb-3"> |
| 31 | + Fast local security scanner written in Rust. |
| 32 | + </p> |
| 33 | + <p class="max-w-lg text-base text-noir-500 leading-relaxed mb-8"> |
| 34 | + {totalRules} built-in rules for JS/TS, Python, and Go. Secrets scanning. Baselines. Semgrep-compatible YAML. Single binary. No network calls. |
| 35 | + </p> |
| 36 | + |
| 37 | + <!-- CTA --> |
| 38 | + <div class="flex flex-col sm:flex-row items-start sm:items-center gap-3 mb-10"> |
| 39 | + <button |
| 40 | + id="npx-btn" |
| 41 | + 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" |
| 42 | + > |
| 43 | + <span class="text-noir-600">$</span> |
| 44 | + <span>npx foxguard .</span> |
| 45 | + <svg class="w-3.5 h-3.5 text-noir-600 group-hover:text-fox-light transition-colors" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg> |
| 46 | + </button> |
| 47 | + |
| 48 | + <a |
| 49 | + href="https://github.com/peaktwilight/foxguard" |
| 50 | + target="_blank" |
| 51 | + rel="noopener" |
| 52 | + class="btn-ghost no-underline hover:no-underline" |
| 53 | + > |
| 54 | + <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/></svg> |
| 55 | + GitHub |
| 56 | + </a> |
| 57 | + </div> |
| 58 | + |
| 59 | + <!-- Stats row --> |
| 60 | + <div class="flex flex-wrap items-center gap-6 font-mono text-xs"> |
| 61 | + <div> |
| 62 | + <span class="text-noir-100 text-lg font-heading">{totalRules}</span> |
| 63 | + <span class="text-noir-600 ml-1.5">rules</span> |
| 64 | + </div> |
| 65 | + <div class="w-px h-4 bg-noir-800"></div> |
| 66 | + <div> |
| 67 | + <span class="text-noir-100 text-lg font-heading">3</span> |
| 68 | + <span class="text-noir-600 ml-1.5">languages</span> |
| 69 | + </div> |
| 70 | + <div class="w-px h-4 bg-noir-800"></div> |
| 71 | + <div> |
| 72 | + <span class="text-noir-100 text-lg font-heading"><1s</span> |
| 73 | + <span class="text-noir-600 ml-1.5">typical scan</span> |
| 74 | + </div> |
| 75 | + </div> |
| 76 | + </div> |
| 77 | + |
| 78 | + <!-- Right: terminal demo --> |
| 79 | + <div class="fade-up fade-up-delay-2"> |
| 80 | + <TerminalDemo /> |
| 81 | + </div> |
| 82 | + </div> |
| 83 | + </div> |
| 84 | +</section> |
0 commit comments