Create new AiderDesk UI themes by defining SCSS color variables, registering theme types, and adding i18n display names. Use when adding a theme, creating a color scheme, customizing appearance, or implementing dark mode and light mode variants.
Use this skill when you need to add a new theme to AiderDesk.
AiderDesk themes are implemented as SCSS files that define a .theme-<name> class with a full set of CSS custom properties (variables). The UI uses Tailwind utilities mapped to these CSS variables.
src/renderer/src/themes/theme-<name>.scsssrc/renderer/src/themes/themes.scsspackages/common/src/types/common.ts (THEMES)src/renderer/src/components/settings/GeneralSettings.tsxsrc/renderer/src/App.tsx (applies theme-<name> class to document.body)packages/common/src/locales/en.json (themeOptions.<name>)packages/common/src/locales/zh.json (themeOptions.<name>)Each theme is a class:
.theme-<name>--color-* variables.Best workflow: copy an existing theme (e.g. theme-dark.scss) and adjust values.
Pick a kebab-case name, e.g. sunset, nord, paper.
You will reference it consistently in:
.theme-<name>theme-<name>.scssTHEMES array value: '<name>'themeOptions.<name>Create:
src/renderer/src/themes/theme-<name>.scssStart by copying a similar theme (dark -> dark-ish, light -> light-ish), then update the hex colors.
Minimum requirement: define all variables expected by the app.
Practical way to ensure completeness:
src/renderer/src/themes/theme-dark.scss (or another full theme)Edit:
src/renderer/src/themes/themes.scssAdd:
@use 'theme-<name>.scss';
If the file is not imported here, it won’t be included in the built CSS.
Edit:
packages/common/src/types/common.tsAdd '<name>' to the exported THEMES array.
This makes the theme selectable and type-safe.
Edit:
packages/common/src/locales/en.jsonpackages/common/src/locales/zh.jsonAdd entries under themeOptions:
{
"themeOptions": {
"<name>": "Your Theme Name"
}
}
Theme not showing up:
@use import in src/renderer/src/themes/themes.scssTHEMES array in packages/common/src/types/common.ts.theme-<name> and the <name> stored in settingsSome UI areas look “unstyled”:
--color-* variables; compare against a known-good theme and fill in the missing ones.