Most Neo projects create custom themes to match their brand identity. This involves creating your own palette and theme files that extend Neo’s base theming system.Documentation Index
Fetch the complete documentation index at: https://neo.tvk.company/llms.txt
Use this file to discover all available pages before exploring further.
Extending Neo’s Default Themes
Neo provides two exceptional built-in themes -NeoThemeLight and NeoThemeDark - that are carefully designed for accessibility, consistency, and cross-platform compatibility. Instead of building themes from scratch, you should extend these default themes and only override the tokens you need to customize.
Benefits of Extending Default Themes:
- Automatically inherit Neo’s color combinations
- Maintain consistency with Neo’s design system
- Reduce maintenance burden by leveraging tested color relationships
- Focus only on your brand customizations rather than rebuilding everything
- Brand colors (
fgBrand,bgBrand,bgBrandHover, etc.) - Optional spacing, radius, or typography adjustments
- Semantic colors (success, warning, danger)
- Neutral grays and surface colors
- Cross-platform visual consistency
Project Structure
The standard Neo theming structure organizes your custom colors and themes:Creating Your Light Theme
Create a light theme that extends Neo’s light theme and overrides only your brand colors:Creating Your Dark Theme
Create a matching dark theme that extends Neo’s dark theme:Using Your Custom Themes
Apply your custom themes in your app’s main file:Mixing Neo and Custom Colors
You can combine your custom colors with Neo’s built-in colors:Best Practices
Theme Architecture
- Extend
NeoThemeLightandNeoThemeDarkinstead of building from scratch - Keep brand colors in separate palette files for organization
- Follow the standard
lib/theming/folder structure - Always create both light and dark theme variants
Customization Approach
- Start minimal - override only brand colors initially
- Use Neo’s semantic colors unless you have specific brand requirements
- Leverage
super.colors.copyWith()to preserve Neo’s tested color relationships - Test thoroughly in both light and dark modes
Brand Integration
- Use your brand’s established color palette with Neo’s naming conventions
- Ensure sufficient contrast ratios for accessibility compliance

