Create custom themes for CZero Engine desktop App with light/dark mode support, and ofcourse, comes with its own CLI.
# 1. Fork/Clone this repository
git clone https://github.com/yourusername/theme-template.git my-theme
cd my-theme
# 2. Install dependencies
npm install
# 3. Run the interactive theme builder
npm run create
# 4. Validate your theme
npm run validate
# 5. Install into CZero (Permanent!)
# Open CZero Engine โ Settings โ General โ "Import Theme"
# Select your theme.json file - it's permanently installed!# 1-2. Same as above
# 3. Edit theme.json manually
# 4-5. Same as abovemy-theme/
โโโ theme.json # Main theme (complete v2.0 structure)
โโโ package.json # Package metadata
โโโ README.md # This documentation
โโโ scripts/ # Validation & creation tools
โ โโโ validate.js # Strict v2.0 validation
โ โโโ create-theme.js # Interactive theme builder
โโโ themes/ # 6 professional example themes
โโโ cyberpunk-neon/ # High-contrast neon theme
โโโ dark-forest/ # Nature-inspired theme
โโโ minimal-light/ # Clean, professional theme
โโโ monochrome-modern/ # Black & white theme
โโโ ocean-depths/ # Deep blue oceanic theme
โโโ retro-terminal/ # Classic terminal theme
Run npm run create for guided theme creation:
๐จ Color Presets: Cyberpunk, Ocean, Forest, Sunset, Purple Dream, Monochrome, Rose Gold, Custom
โจ Visual Styles:
- Modern: Clean, minimalist with subtle shadows
- Neon: Vibrant with glowing effects
- Glass: Transparent with blur effects
- Flat: No shadows, solid colors
- Gradient: Rich gradients and transitions
โก Loading Animations: Pulse, Spinner, Dots, Fractal, Glitch, Wave
๐ Auto-Generation: Creates matching light and dark variants automatically
Your theme includes both top-level properties (engine compatibility) and variants (v2.0 compliance):
{
"name": "my-theme",
"displayName": "My Theme",
"version": "2.0.0",
"description": "Beautiful custom theme",
"author": "Your Name",
"loadingAnimation": "pulse",
// TOP-LEVEL PROPERTIES (Engine Compatibility)
"colors": { /* complete color system */ },
"typography": { /* font definitions */ },
"spacing": { /* spacing scale */ },
"shadows": { /* shadow system */ },
"animations": { /* timing & easing */ },
"borderRadius": { /* corner system */ },
"effects": { /* special effects */ },
// VARIANTS (v2.0 Compliance)
"variants": {
"light": { /* complete light mode */ },
"dark": { /* complete dark mode */ }
}
}"brand": {
"primary": "#00d4ff", // Main brand color
"secondary": "#ff00ff", // Secondary accent
"tertiary": "#00ff88", // Additional accent
"accent": "#ffd700" // Highlight color
}"button": {
"primary": { "background": "#00d4ff", "text": "#000", "hover": "#00b8e6", "active": "#009cc7" },
"secondary": { "background": "transparent", "text": "#00d4ff", "border": "#00d4ff", "hover": "rgba(0,212,255,0.1)" },
"ghost": { "background": "transparent", "text": "#fff", "hover": "rgba(255,255,255,0.1)" }
},
"input": {
"background": "rgba(0,0,0,0.8)", "border": "rgba(255,255,255,0.1)",
"borderHover": "rgba(255,255,255,0.2)", "borderFocus": "#00d4ff",
"text": "#fff", "placeholder": "#666"
},
"card": {
"background": "#0d1220", "border": "rgba(255,255,255,0.05)",
"hover": { "background": "#141b3c", "border": "rgba(255,255,255,0.1)" }
}"effects": {
"glass": { "background": "rgba(255,255,255,0.1)", "backdropFilter": "blur(10px)", "border": "1px solid rgba(255,255,255,0.2)" },
"neonText": { "color": "#00d4ff", "textShadow": "0 0 10px #00d4ff, 0 0 20px #00d4ff" },
"holographic": { "background": "linear-gradient(135deg, #ff0080, #ff8c00, #40e0d0)", "animation": "holo 3s ease infinite" }
}"shadows": {
"xs": "0 1px 2px rgba(0,0,0,0.05)", "sm": "0 2px 4px rgba(0,0,0,0.1)",
"md": "0 4px 8px rgba(0,0,0,0.15)", "lg": "0 8px 16px rgba(0,0,0,0.2)",
"glow": "0 0 20px rgba(0,212,255,0.5)", "none": "none"
}npm run validate # Validates all themes
npm run validate theme.json # Validates specific themeWhat's Validated:
- โ Complete top-level structure (engine compatibility)
- โ Both light and dark variants (v2.0 compliance)
- โ All required color properties exist
- โ Component-specific colors (button, input, card)
- โ Valid color formats (hex, rgb, rgba, gradients)
- โ Loading animation enums
- โ Complete typography, spacing, shadows
- Open CZero Engine โ Settings โ General โ Appearance
- Click "Import Theme"
- Select your
theme.jsonfile - โ Theme permanently installed to app directory!
- Click "Open Themes Folder" in Settings
- Copy
theme.jsonto the themes folder (app directory) - Click "Refresh" or restart app
- โ Theme appears in selector!
Installation Path:
- Windows:
%APPDATA%\czero-overlay\themes\ - macOS:
~/Library/Application Support/czero-overlay/themes/
- ๐๏ธ Delete Custom Themes: Delete button on theme cards (built-ins protected)
- ๐ Manual Refresh: Refresh button picks up manually added themes
- ๐ค Export Themes: Export any theme as shareable JSON
- ๐จ Theme Previews: Visual previews with color swatches
- ๐ Mode Switching: Automatic light/dark variant switching
- Cyberpunk Neon: High-contrast neon with vibrant magenta/cyan colors
- Dark Forest: Nature-inspired with earthy greens and natural browns
- Minimal Light: Clean, professional with subtle accents
- Monochrome Modern: Ultra-modern black/white with sharp contrasts
- Ocean Depths: Deep oceanic blues with bioluminescent gradients
- Retro Terminal: Classic green phosphor terminal with VT323 font
- Use the Interactive Builder - It generates perfect v2.0 structure
- Test Both Modes - Always test light and dark variants thoroughly
- Follow Accessibility - Ensure WCAG AA compliance (4.5:1 contrast)
- Validate Before Sharing - Use
npm run validateto ensure quality - Component Colors Matter - Don't skip button/input/card color definitions
- Effects in Moderation - Enhance, don't distract
- Create your theme using this template
- Test thoroughly in CZero Overlay
- Take screenshots in both light/dark modes
- Share JSON files with the community
- Contribute to the theme repository
MIT - Create and share themes freely!