Skip to content

Commit 6ae1f56

Browse files
committed
docs: added Look and Feel page
1 parent 3a1044a commit 6ae1f56

4 files changed

Lines changed: 346 additions & 0 deletions

File tree

Lines changed: 345 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,345 @@
1+
# Look and Feel
2+
3+
AiderDesk provides extensive customization options for themes and fonts, allowing you to personalize the application's appearance to match your preferences and workflow.
4+
5+
## Overview
6+
7+
The Look and Feel settings in AiderDesk are built on a flexible CSS custom properties system that enables:
8+
9+
- **Dynamic theme switching** without application restart
10+
- **Comprehensive color theming** covering all UI elements
11+
- **Font customization** with real-time preview
12+
- **Consistent design language** across all components
13+
14+
## Themes
15+
16+
### How Themes Work
17+
18+
AiderDesk themes are implemented using CSS custom properties (variables) that define the complete color palette for the application. Each theme is a self-contained SCSS file that defines:
19+
20+
- **Background colors** (primary, secondary, tertiary, etc.)
21+
- **Text colors** (primary, secondary, muted, etc.)
22+
- **Border colors** and accents
23+
- **Interactive states** (buttons, inputs, selections)
24+
- **Status colors** (success, warning, error, info)
25+
- **Specialized colors** for code blocks, diff viewers, and agent indicators
26+
27+
When you select a theme, AiderDesk applies the corresponding CSS class to the document body, which activates all the color variables defined in that theme.
28+
29+
### Available Themes
30+
31+
AiderDesk includes 14 carefully crafted themes:
32+
33+
#### Dark Themes
34+
- **Dark** - The default theme with balanced contrast and modern appearance
35+
- **Charcoal** - A sophisticated dark gray theme with warm undertones
36+
- **Midnight** - Deep black theme with high contrast for focused work
37+
- **Neon** - Vibrant theme inspired by cyberpunk aesthetics
38+
- **Neopunk** - Futuristic dark theme with bold accent colors
39+
- **Ocean** - Deep blue theme reminiscent of ocean depths
40+
41+
#### Light Themes
42+
- **Light** - Clean, minimal light theme with excellent readability
43+
- **BW (Black & White)** - High-contrast monochrome theme
44+
- **Serenity** - Calming light theme with soft, muted colors
45+
- **Cappuccino** - Warm, coffee-inspired light theme
46+
47+
#### Colorful Themes
48+
- **Aurora** - Ethereal theme inspired by northern lights
49+
- **Forest** - Nature-inspired green theme
50+
- **Lavender** - Purple-themed interface with calming aesthetics
51+
52+
### Switching Themes
53+
54+
1. Open **Settings** from the main menu
55+
2. Navigate to the **General** section
56+
3. Under **GUI Settings**, select your preferred theme from the dropdown
57+
4. The theme applies immediately without restart
58+
59+
![Theme Selection Interface](../images/themes.gif)
60+
*Theme selection interface showing available themes*
61+
62+
## Fonts
63+
64+
### How Fonts Work
65+
66+
AiderDesk's font system is built on web fonts with CSS custom properties:
67+
68+
- **Font Files**: All fonts are included as TrueType (.ttf) files
69+
- **@font-face Declarations**: Each font is properly declared in CSS for cross-browser compatibility
70+
- **CSS Variables**: Fonts are applied using the `--font-family` custom property
71+
- **Monospace Fallback**: All fonts include `monospace` as a fallback for consistency
72+
73+
### Available Fonts
74+
75+
AiderDesk includes 19 carefully selected fonts covering various styles:
76+
77+
#### Monospace/Code Fonts
78+
- **Sono** - The default font, modern and highly readable
79+
- **JetBrains Mono** - Developer-focused font with ligatures
80+
- **Roboto Mono** - Clean, neutral monospace font
81+
- **Source Code Pro** - Adobe's open-source coding font
82+
- **Space Mono** - Quirky, distinctive monospace font
83+
- **Ubuntu Mono** - Part of the Ubuntu font family
84+
- **Fira Code** - Programming font with code ligatures
85+
86+
#### Sans-Serif Fonts
87+
- **Inter** - Highly readable modern sans-serif
88+
- **Poppins** - Geometric sans-serif with friendly appearance
89+
- **Nunito** - Well-balanced sans-serif with rounded terminals
90+
- **Quicksand** - Light, airy sans-serif font
91+
- **Space Grotesk** - Modern geometric sans-serif
92+
- **Google Sans Code** - Google's coding-optimized sans-serif
93+
- **Sansation** - Clean, professional sans-serif
94+
95+
#### Serif & Display Fonts
96+
- **Lora** - Elegant serif font suitable for long reading
97+
- **Playfair Display** - High-contrast serif for headings
98+
- **Orbitron** - Futuristic display font
99+
- **Enriqueta** - Classic serif with modern proportions
100+
- **Silkscreen** - Retro pixel-art style display font
101+
102+
### Switching Fonts
103+
104+
1. Open **Settings** from the main menu
105+
2. Navigate to the **General** section
106+
3. Under **GUI Settings**, select your preferred font from the dropdown
107+
4. The font applies immediately across the entire application
108+
109+
![Font Selection Interface](../images/fonts.gif)
110+
*Font selection interface with live preview of each font*
111+
112+
## Contributing: Adding New Themes
113+
114+
### Adding a New Theme
115+
116+
To contribute a new theme to AiderDesk, follow these steps:
117+
118+
#### 1. Create the Theme SCSS File
119+
120+
Create a new file in `src/renderer/src/themes/` following the naming convention:
121+
```scss
122+
// src/renderer/src/themes/theme-your-theme-name.scss
123+
.theme-your-theme-name {
124+
// Background colors
125+
--color-bg-primary: #your-primary-bg-color;
126+
--color-bg-primary-light: #your-light-bg-color;
127+
--color-bg-primary-light-strong: #your-strong-bg-color;
128+
--color-bg-secondary: #your-secondary-bg-color;
129+
--color-bg-secondary-light: #your-secondary-light-bg-color;
130+
--color-bg-secondary-light-strongest: #your-secondary-strongest-bg-color;
131+
--color-bg-tertiary: #your-tertiary-bg-color;
132+
--color-bg-tertiary-emphasis: #your-tertiary-emphasis-color;
133+
--color-bg-tertiary-strong: #your-tertiary-strong-color;
134+
// ... continue with all background color variables
135+
136+
// Text colors
137+
--color-text-primary: #your-primary-text-color;
138+
--color-text-secondary: #your-secondary-text-color;
139+
--color-text-tertiary: #your-tertiary-text-color;
140+
// ... continue with all text color variables
141+
142+
// Border colors
143+
--color-border-default: #your-default-border-color;
144+
--color-border-accent: #your-accent-border-color;
145+
// ... continue with border colors
146+
147+
// Interactive colors
148+
--color-button-primary: #your-primary-button-color;
149+
--color-button-primary-text: #your-primary-button-text-color;
150+
// ... continue with button colors
151+
152+
// Status colors
153+
--color-success: #your-success-color;
154+
--color-warning: #your-warning-color;
155+
--color-error: #your-error-color;
156+
--color-info: #your-info-color;
157+
158+
// Agent-specific colors
159+
--color-agent-auto-approve: #your-auto-approve-color;
160+
--color-agent-aider-tools: #your-aider-tools-color;
161+
--color-agent-power-tools: #your-power-tools-color;
162+
--color-agent-todo-tools: #your-todo-tools-color;
163+
--color-agent-context-files: #your-context-files-color;
164+
--color-agent-repo-map: #your-repo-map-color;
165+
// ... continue with agent colors
166+
}
167+
```
168+
169+
#### 2. Import the Theme
170+
171+
Add your theme to the themes import file:
172+
```scss
173+
// src/renderer/src/themes/themes.scss
174+
@use 'theme-your-theme-name.scss'; // Add this line
175+
```
176+
177+
#### 3. Update the Theme List
178+
179+
Add your theme to the TypeScript types:
180+
```typescript
181+
// src/common/types.ts
182+
export const THEMES = [
183+
'dark',
184+
'light',
185+
'charcoal',
186+
// ... existing themes
187+
'your-theme-name', // Add this line
188+
] as const;
189+
```
190+
191+
#### 4. Add Translation
192+
193+
Add your theme name to the translation files:
194+
```json
195+
// src/common/locales/en.json
196+
{
197+
"settings": {
198+
"themeOptions": {
199+
"your-theme-name": "Your Theme Display Name"
200+
}
201+
}
202+
}
203+
```
204+
205+
#### 5. Testing Requirements
206+
207+
Before submitting your theme, ensure it:
208+
209+
- ✅ Provides sufficient contrast for accessibility (WCAG AA standards)
210+
- ✅ Works well in all major UI components
211+
- ✅ Maintains readability in both light and dark contexts
212+
- ✅ Includes all required color variables
213+
- ✅ Is tested across different screen sizes
214+
- ✅ Works with all available fonts
215+
216+
### Theme Design Guidelines
217+
218+
- **Contrast Ratio**: Maintain at least 4.5:1 for normal text and 3:1 for large text
219+
- **Color Harmony**: Use a cohesive color palette with proper relationships
220+
- **Consistency**: Follow the established color hierarchy and naming conventions
221+
- **Accessibility**: Ensure color combinations are accessible to colorblind users
222+
- **Performance**: Use hex colors for optimal performance
223+
224+
## Contributing: Adding New Fonts
225+
226+
### Adding a New Font
227+
228+
To contribute a new font to AiderDesk, follow these steps:
229+
230+
#### 1. Obtain the Font File
231+
232+
- Ensure you have the legal right to distribute the font (open-source license preferred)
233+
- Obtain the font in TrueType (.ttf) format
234+
- Verify the font includes all necessary characters and glyphs
235+
236+
#### 2. Add Font File
237+
238+
Place the font file in the fonts directory:
239+
```
240+
src/renderer/src/fonts/YourFontName.ttf
241+
```
242+
243+
#### 3. Update Font CSS
244+
245+
Add the font declaration to the fonts CSS file:
246+
```css
247+
/* src/renderer/src/fonts.css */
248+
@font-face {
249+
font-family: 'YourFontName';
250+
src: url('./fonts/YourFontName.ttf') format('truetype');
251+
font-weight: 400;
252+
font-style: normal;
253+
}
254+
```
255+
256+
#### 4. Update the Font List
257+
258+
Add your font to the TypeScript types:
259+
```typescript
260+
// src/common/types.ts
261+
export const FONTS = [
262+
'Sono',
263+
'Poppins',
264+
// ... existing fonts
265+
'YourFontName', // Add this line
266+
] as const;
267+
```
268+
269+
#### 5. Add Translation
270+
271+
Add your font name to the translation files:
272+
```json
273+
// src/common/locales/en.json
274+
{
275+
"settings": {
276+
"fontOptions": {
277+
"yourFontName": "Your Font Display Name"
278+
}
279+
}
280+
}
281+
```
282+
283+
#### 6. Testing Requirements
284+
285+
Before submitting your font, ensure it:
286+
287+
- ✅ Renders correctly across all operating systems
288+
- ✅ Maintains readability at various sizes
289+
- ✅ Works well with all available themes
290+
- ✅ Includes proper character coverage for your target languages
291+
- ✅ Has reasonable file size (< 1MB preferred)
292+
- ✅ Is properly licensed for open-source distribution
293+
294+
### Font Selection Guidelines
295+
296+
- **Readability**: Prioritize fonts that are easy to read for long periods
297+
- **Character Support**: Ensure coverage of common programming characters and symbols
298+
- **Performance**: Consider font file size and loading impact
299+
- **Licensing**: Prefer fonts with permissive open-source licenses (MIT, OFL, Apache)
300+
- **Variety**: Add fonts that bring unique styles and use cases
301+
302+
### Recommended Font Sources
303+
304+
- **Google Fonts**: Large collection of free, open-source fonts
305+
- **Adobe Fonts**: High-quality fonts (check licensing)
306+
- **Font Squirrel**: Curated collection of free fonts
307+
- **GitHub**: Many open-source font projects available
308+
309+
## Troubleshooting
310+
311+
### Theme Issues
312+
313+
If you encounter issues with themes:
314+
315+
1. **Theme not applying**: Check that the theme file is properly imported in `themes.scss`
316+
2. **Colors not working**: Verify all required CSS variables are defined
317+
3. **Contrast issues**: Use browser dev tools to check contrast ratios
318+
4. **Missing elements**: Ensure all color variables from the reference theme are included
319+
320+
### Font Issues
321+
322+
If you encounter issues with fonts:
323+
324+
1. **Font not loading**: Check the font file path in the `@font-face` declaration
325+
2. **Font not appearing**: Verify the font name matches exactly in CSS and TypeScript
326+
3. **Rendering issues**: Test the font across different browsers and operating systems
327+
4. **Licensing concerns**: Double-check the font's license allows for distribution
328+
329+
## Best Practices
330+
331+
### For Users
332+
333+
- **Consistency**: Choose a theme and font combination that you'll use consistently
334+
- **Accessibility**: Prioritize readability and contrast over aesthetics
335+
- **Environment**: Consider your lighting conditions when choosing between light and dark themes
336+
- **Performance**: Lighter themes may consume slightly less battery on OLED displays
337+
338+
### For Contributors
339+
340+
- **Testing**: Thoroughly test your contributions across different environments
341+
- **Documentation**: Provide clear descriptions of your theme/font design philosophy
342+
- **Maintenance**: Be prepared to maintain your contribution over time
343+
- **Community**: Engage with user feedback and make improvements based on usage
344+
345+
By following these guidelines, you can help make AiderDesk more customizable and enjoyable for everyone in the community.

docs-site/docs/images/fonts.gif

268 KB
Loading

docs-site/docs/images/themes.gif

202 KB
Loading

docs-site/sidebars.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const sidebars: SidebarsConfig = {
6464
'configuration/providers',
6565
'configuration/aider-configuration',
6666
'configuration/project-specific-rules',
67+
'configuration/look-and-feel',
6768
'configuration/prompt-behavior',
6869
'configuration/automatic-updates',
6970
'configuration/telemetry',

0 commit comments

Comments
 (0)