> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamly.watch/llms.txt
> Use this file to discover all available pages before exploring further.

# Themes

> Apply and preview Streamly storefront themes — packages, capabilities, presets, isolation, and roadmap for zip IO.

**Themes** (`/admin/themes`) switches the public storefront between ready-made design packages under `themes/<id>/`.

## Built-in packages

| Theme          | ID           | Status            | Category  | Capabilities                                   |
| -------------- | ------------ | ----------------- | --------- | ---------------------------------------------- |
| **Streamly**   | `streamly`   | **Final** default | Standard  | `supportsFeaturesSection: true`, no light mode |
| **Streamlix**  | `streamlix`  | Usable            | Cinematic | No features section, no light mode             |
| **StreamTube** | `streamtube` | Usable            | Discovery | `supportsLightMode: true`, no features section |

| Theme      | Page shell                                     | Button chrome | Corners            |
| ---------- | ---------------------------------------------- | ------------- | ------------------ |
| Streamly   | `max-w-7xl` (`STOREFRONT_HOME`)                | Bevel         | Soft radius        |
| Streamlix  | Full-bleed nav gutter (`STOREFRONT_LIX_SHELL`) | Flat          | **Square / sharp** |
| StreamTube | Same content shell as Streamly today           | Bevel         | Soft radius        |

Prefer **capabilities** over hardcoding theme ids in custom code. Streamlix / StreamTube must not regress the Streamly path.

## Apply vs Preview

| Action      | Behavior                                                                                                                                                                                                                                                                   |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Apply**   | Persists theme; snapshots previous look into `theme_presets[previous]`; restores target preset or package seed. **Never overwrites SEO / product / content keys.**                                                                                                         |
| **Preview** | `/?__theme_preview=<themeId>` — operator-only, in-memory, not persisted. Floating banner links back to Themes. Must also switch `html[data-storefront-theme]` chrome so Streamly preview does not inherit another theme’s CSS. Anonymous viewers never get preview merges. |

Hard rule: live storefront look changes only when an operator clicks **Apply** (or edits Brand & Experience). Install/export never auto-apply.

## Isolation rules

* One route tree — do **not** fork `/movies`, `/title`, etc. per theme.
* Skins via `templateEntry` → `StorefrontThemeProvider` / `getStorefrontSkin`.
* CSS chrome scoped with `html[data-storefront-theme="…"]` (Streamlix square/flat rules).
* Page content width follows theme `pageShell`.

## Zip install / export (roadmap in UI)

APIs exist (`/api/operator/themes/install`, export, delete), but gallery upload/export/uninstall controls are **hidden** (`SHOW_THEME_PACKAGE_IO_UI = false`). Treat third-party zip IO as **roadmap** in the UI.

Uploaded zips contain `theme.json` + `config.json` only — they **cannot** ship new React templates; they skin a built-in `templateEntry`. Built-in ids cannot be overwritten on install. SEO keys are stripped on install/apply.

Deep dives: [Themes & Skins](/viewer/themes-and-skins), [Brand Presets](/viewer/brand-presets), [Themes Package System](/technical/themes-package-system).

## Related

* [Brand & Experience](/admin-dashboard/brand-experience)
* [Themes Branding FAQ](/faq/themes-branding-faq)
