Categories
The 11 closed theme-category slugs the catalog groups by, and why the enum is closed.
Every theme declares exactly one category from a closed enum of 11
slugs. The catalog uses it as the primary navigation bucket — the same
pattern the mini-app categories follow, with
a theme-specific slug list.
A category is mandatory at publish time. Optional tags
refine search, but the navigation buckets are the categories alone.
The 11 categories
| Slug | What goes here |
|---|---|
dark | Dark-first palettes. |
light | Light-first palettes. |
minimal | Restrained, low-chrome looks. |
vibrant | Saturated, high-energy palettes. |
classic | Traditional / timeless looks. |
seasonal | Holiday or season-themed (winter, Ramadan, etc.). |
monochrome | Single-hue or grayscale palettes. |
neon | Glowing, high-contrast accent looks. |
nature | Earth tones, foliage, landscape-inspired. |
brand | Marque or brand-colored themes. |
other | Fallback — only if nothing above fits. |
Pick the closest match. Reaching for other regularly is a signal the
enum needs a new slug — open an issue.
Why a closed enum
A closed enum keeps the catalog's category rail predictable instead of
filling with near-duplicate free-form labels. The slug list lives in
theme-category-slugs.json, vendored byte-identically into the SDK and
the backend with a CI drift check — so adding a slug is a deliberate SDK
- backend lockstep change, not something any single repo can drift on.
Related
ThemeManifestreference — wherecategoryandtagsare declared.- Building a theme — the
theme initprompt that picks a category. - Mini-app categories — the parallel enum for mini-apps.