Theming & Branding

Last updated

/jabali-admin/server-settings → Branding. All values are server-wide singletons — no per-user override.

Font size

server_settings.panel_font_size. Allowed values: small, medium (default), large. Anything else is normalised to medium for backwards-compat.

Semantic colors

One value per role, applied in both light and dark themes:

FieldPurpose
panel_primary_colorPrimary brand
panel_accent_colorAccent highlights
panel_success_colorSuccess states
panel_warning_colorWarning states
panel_error_colorError states
panel_info_colorInfo states
panel_link_colorLink text

Chrome colors

Separate light + dark values for the panel’s own surfaces:

RegionLightDark
Top barpanel_light_topbar_colorpanel_dark_topbar_color
Page backgroundpanel_light_bg_colorpanel_dark_bg_color
Card / containerpanel_light_container_colorpanel_dark_container_color
Textpanel_light_text_colorpanel_dark_text_color

Value format

  • 7-char hex (#rrggbb) or 9-char hex with alpha (#rrggbbaa).
  • Empty string reverts the field to the built-in default.
  • Any other format returns invalid_<field> from the API — validated by isValidHexColor() before the PATCH is accepted.

API

  • PATCH /api/v1/admin/settings — set any of the fields above.
  • GET /api/v1/admin/settings — read the full settings row.
  • GET /api/v1/branding — unauthenticated read of colors, font size, and logo presence. The login screen and 2FA challenge use this to brand themselves before the user has a session.