Skip to content

Customer theme skins

A customer installation can optionally restyle the entire admin with one tokens-only CSS file. No admin fork, no per-customer admin build.

How it works

  1. Author a skin from customer-theme-skin.template.css — redefine only the design tokens you want, under :root (light) and [data-theme="dark"] (dark). Delete the rest.
  2. Ship the file in the customer module (convention: ui/theme.css).
  3. Set the platform env var SYNTEC_THEME_CSS to the file's absolute path on the platform host (e.g. /app/modules/crm/ui/theme.css). Leave it unset for the default themes.

The platform serves the active skin at GET /api/v1/theme.css (public, ETag-cached; empty when unset). The admin injects one <link> to it after its default tokens, so your overrides win. The light/dark toggle is unchanged — both palettes come from the single file.

Notes

  • One file covers both modes (:root + [data-theme="dark"]). No second request.
  • Misconfiguration (missing file, non-.css path) serves empty CSS — the admin falls back to the default themes, never errors.
  • Changing the skin is a deployment action (set the env, redeploy).