The previous setup loaded the full @iconify-json/mdi collection (7000+
icons, 2.95 MB) just to render the ~30 icons we actually use, producing a
2.99 MB client chunk.
generate-icons.mjs scans src/ for static `icon="mdi:..."` references,
extracts a minimal IconifyJSON containing only those icons (plus an
EXTRA_ICONS list for dynamic CMS-driven names) from
@iconify-json/mdi/icons.json, and writes it to a generated subset file.
iconify-offline.ts now registers that subset instead of the full pack.
build/client: 5.6 MB -> 1.6 MB (-71%)
build/server: 5.3 MB -> 2.4 MB (-55%)
largest client chunk: 2.99 MB -> 127 KB (-96%)
iconify subset: 2.95 MB -> 15.5 KB (-99.5%)
Hooked into predev/prebuild so the subset stays fresh; missing icons
fall back to the iconify API at runtime.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>