---
/**
* ============================================================
* 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 }));
---
{snippets.length} self-contained snippets you can preview live, customize, and copy.
Every one works when pasted into a blank A garden of SVG + CSS animations
.html file — no frameworks, no build step,
and each comes with a short lesson on how it works.
No snippets match — try a broader search.