--- /** * ============================================================ * SVGarden — https://www.svgarden.dev * Author : Simon-Pierre Boucher * Contact: contact@spboucher.ai * File : src/pages/index.astro * Desc : Gallery home — all snippets, live previews, search + filters * ============================================================ */ import Base from '../layouts/Base.astro'; import SnippetCard from '../components/SnippetCard.astro'; import SearchBar from '../components/SearchBar.astro'; import TagFilter from '../components/TagFilter.astro'; import { loadSnippets, loadCategories } from '../lib/snippets.mjs'; const snippets = await loadSnippets(); const categories = await loadCategories(); // Technique facet: most-used techniques across the bank (top 18) const techniqueCounts = new Map(); for (const s of snippets) { for (const t of s.techniques) techniqueCounts.set(t, (techniqueCounts.get(t) ?? 0) + 1); } const techniques = [...techniqueCounts.entries()] .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0])) .slice(0, 18) .map(([name, count]) => ({ name, count })); ---

A garden of SVG + CSS animations

{snippets.length} self-contained snippets you can preview live, customize, and copy. Every one works when pasted into a blank .html file — no frameworks, no build step, and each comes with a short lesson on how it works.

{snippets.length} snippets
{snippets.map((s) => )}