Skip to main content

App Compatibility

This guide explains how Nextcloud app developers can ensure their apps work correctly when Thematiq is active.

Key Principles​

Use Nextcloud's CSS Variables​

Thematiq works by overriding Nextcloud's CSS custom properties. If your app uses these variables, it will automatically pick up the correct colors:

/* Good — uses Nextcloud variables, works with Thematiq */
.my-button {
background-color: var(--color-primary);
color: var(--color-primary-text);
border-radius: var(--border-radius-element);
}

/* Bad — hardcoded colors, ignores Thematiq theming */
.my-button {
background-color: #0082c9;
color: white;
border-radius: 8px;
}

Avoid Hardcoded Colors​

Never hardcode color values in CSS or inline styles. Always use Nextcloud's CSS variables or the --nldesign-* token namespace.

Common variables to use:

PurposeVariable
Primary accentvar(--color-primary)
Text on primaryvar(--color-primary-text)
Body textvar(--color-main-text)
Muted textvar(--color-text-maxcontrast)
Bordersvar(--color-border)
Error statevar(--color-error)
Success statevar(--color-success)
Warning statevar(--color-warning)

Use Standard Nextcloud Components​

If you're building a Vue.js Nextcloud app, use components from @nextcloud/vue. These components already use the correct CSS variables and will inherit Thematiq theming automatically.

Test with Multiple Token Sets​

Different token sets have different characteristics:

  • Rijkshuisstijl uses 0px border radius (sharp corners)
  • Amsterdam uses a light header with dark icons (unusual contrast)
  • Some municipalities have very dark or very light primary colors

Test your app with at least 3-4 different token sets to catch contrast and layout issues.

Testing Your App​

  1. Install Thematiq in your development environment
  2. Enable it and select a token set
  3. Navigate through your app and check:
    • All text is readable (contrast)
    • Buttons and interactive elements are visible
    • No hardcoded colors clash with the theme
    • Icons are visible against the header background
  4. Switch to a different token set and repeat

What Thematiq Overrides​

Thematiq maps 49 of Nextcloud's 102 CSS variables. The full mapping is documented in the CSS Variable Mappings reference.

Variables that Thematiq intentionally does not override:

  • Layout dimensions (header height, sidebar width, breakpoints)
  • Background images and gradients (user-configurable)
  • Spacing and clickable area sizes (accessibility standards)
  • Dark mode inversion filters (Nextcloud handles these)