Skip to content

Theme Adapters

Panels built on dj_control_room_base render with the classic Django admin palette by default. For projects using a themed admin skin, this package ships theme adapters - small stylesheets that remap DCR's --dcr-* design tokens onto the host skin's own CSS variables, so panels blend in instead of clashing with the rest of the admin.

Adapters live under dj_control_room_base/css/themes/. With the default THEME_AUTO_DETECT = True, PanelConfig detects the active admin skin from INSTALLED_APPS and injects either a first-class adapter or a general light/dark pin through the same pipeline as EXTRA_CSS. Turn it off to opt out and load an adapter manually:

DJ_MY_PANEL_SETTINGS = {
    "THEME_AUTO_DETECT": True,  # default
    # Or opt out:
    # "THEME_AUTO_DETECT": False,
    # "EXTRA_CSS": ["dj_control_room_base/css/themes/unfold.css"],
}

See Configuration - Theme adapters for the full settings reference, general pin fallbacks, and dark-mode wiring. This page is a visual tour of what's currently supported.


Compatibility status

Admin skin INSTALLED_APPS label Status Stylesheet
Classic Django admin Built-in (no adapter needed)
django-unfold unfold First-class adapter themes/unfold.css
django-jazzmin jazzmin First-class adapter themes/jazzmin.css
django-grappelli grappelli First-class adapter themes/grappelli.css
django-admin-interface admin_interface First-class adapter themes/admin-interface.css
django-admin-dracula django_admin_dracula First-class adapter themes/dracula.css
django-simpleui simpleui General light pin themes/general-light.css
django-semantic-admin semantic_admin General light pin themes/general-light.css
django-admin-kubi django_admin_kubi General light pin themes/general-light.css
django-daisy django_daisy General light pin themes/general-light.css
django-jet-reboot jet General light pin themes/general-light.css
djangocms-admin-style djangocms_admin_style General light pin themes/general-light.css
bootstrap-admin bootstrap_admin General light pin themes/general-light.css

django-unfold

django-unfold themes are driven by --color-primary-*, --color-base-*, and --color-font-* CSS variables. themes/unfold.css remaps DCR's accent, surface, border, and muted-text tokens onto those variables, so panels automatically pick up whatever brand color the project has configured for Unfold - light or dark mode included.

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/unfold.css"],
}

Django Control Room running with the django-unfold admin theme


django-jazzmin

django-jazzmin is built on Bootstrap 5 and ships as a set of Bootswatch skins, selected via JAZZMIN_UI_TWEAKS["theme"]. themes/jazzmin.css maps DCR's tokens onto Bootstrap's own CSS variables, so panels track whichever theme is active, including Jazzmin's dark skins, without any extra configuration.

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/jazzmin.css"],
}

Django Control Room running with the django-jazzmin admin theme

All of Jazzmin's built-in Bootswatch themes are covered, each with its own accent color and (for the dark ones) matching surface/border/text fallbacks:

Light themes Dark themes
cerulean, cosmo, flatly, journal, litera, lumen, lux, materia, minty, pulse, sandstone, simplex, sketchy, spacelab, united, yeti cyborg, darkly, slate, solar, superhero

See ui_customisation for the full list of themes Jazzmin ships.


django-grappelli

django-grappelli support via themes/grappelli.css, matching its teal accent and boxy, light-only look.

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/grappelli.css"],
}

Django Control Room running with the django-grappelli admin theme


django-admin-interface

django-admin-interface

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/admin-interface.css"],
}

Django Control Room running with the django-admin-interface admin theme


django-admin-dracula

django-admin-dracula overrides Django admin CSS with the Dracula palette and supports light / dark / auto via Django's data-theme toggle. themes/dracula.css remaps DCR tokens onto Dracula's --body-*, --default-button-bg, and --dracula-* variables so panels track both modes (purple accent, cyan/pink/green semantic colors).

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/dracula.css"],
}

Django Control Room running with the django-admin-dracula theme


General light and dark pins (unsupported skins)

Skins without a first-class adapter get a pinned palette when auto-detect finds them first in INSTALLED_APPS:

These pins keep panel surfaces aligned with the host chrome; they do not attempt brand remapping.

DJ_MY_PANEL_SETTINGS = {
    "EXTRA_CSS": ["dj_control_room_base/css/themes/general-light.css"],
    # Or:
    # "EXTRA_CSS": ["dj_control_room_base/css/themes/general-dark.css"],
}

See Configuration - General light and dark pins for the recognized app labels.


Build your own

Want to support another admin skin? Use unfold.css, jazzmin.css, grappelli.css, admin-interface.css, or dracula.css as a starting point and remap the --dcr-* tokens to match. Until then, a general light or dark pin keeps panels readable under that skin.