Icons
Replace template icon carriers with glyphs from any SVG icon pack. Icons land in the finished deck as native vector shapes — no raster fallback.
How icons work
The scanner detects three kinds of icon carrier in a template: SVG-picture
shapes, textless autoshapes used as placeholder icons, and icon-font glyph runs.
Each becomes an icon field in the catalog. At build time the filler swaps the
carrier with the SVG geometry for the chosen glyph, placed through the same
native-shape pipeline (svgdeck) that procedural arts use.
Icon packs
Bundled starter pack: Slidura ships with the Lucide icon pack pre-seeded at
boot (lucide pack key). It is available to all accounts without any upload
step.
User-uploaded packs: upload any TTF/OTF or SVG sprite pack via the web (MediaLib → Icons → Upload pack) or via API:
POST /api/v1/icon-packs/presign → { pack_id, upload: { url, method, headers } }
PUT <upload.url> ← pack bytes
POST /api/v1/icon-packs/{id}/confirm (queues the import job)
GET /api/v1/icon-packs/{id}/status (poll until status = ready)Import parses the pack, extracts per-glyph SVG geometry, and stores it. Large packs may take a few seconds.
Finding a glyph
Use GET /api/v1/icon-packs/{id}/catalog?q=<term> or the MCP tool
search_icons(pack_id, query) to search by glyph name, keywords, or enriched
description. The web MediaLib provides the same search inline.
Once you have a glyph name, the sentinel is:
@icon:<pack_key>/<glyph_name>For example: @icon:lucide/arrow-right. The MCP tool get_icon_ref(pack_id, name)
returns the ready-to-use sentinel in the build_ref field.
Colour handling (brand modes)
Icons are coloured at build time according to a brand mode appended to the sentinel:
| Mode | Behaviour |
|---|---|
recode (default for monochrome glyphs) | replaces every fill with the template’s accent1 colour |
snap | maps each source colour to the nearest theme colour (ΔE distance) |
keep | uses the glyph’s colours verbatim |
Override per-reference: @icon:lucide/arrow-right?brand=keep.
MCP surface
| Tool | Purpose |
|---|---|
list_icon_packs() | list all packs (bundled + uploaded) with status and glyph count |
get_icon_catalog(pack_id) | full glyph list with refs, colour profile, and enrichment fields |
search_icons(pack_id, query) | search by name / keywords / description |
get_icon_ref(pack_id, name) | resolve a glyph name to a build_ref sentinel |
enrich_icon(glyph_id, …) | write back description, usage hint, or keywords |
Optional icon enrichment
When server-side enrichment is enabled, a vision pass can add human-readable descriptions, usage hints, and keyword tags to each glyph. Enriched metadata improves search recall and is surfaced in the MediaLib and to the build assistant. Enrichment is optional and does not change the glyph geometry.
Hiding bundled packs
Bundled packs (such as lucide) cannot be deleted — they are shared
infrastructure — but you can hide any bundled pack from your account’s pack list
via DELETE /api/v1/icon-packs/{id} (hide-not-delete). The pack remains
available to other accounts and can be un-hidden by re-adding it.