# Theme Switcher Demo
A lightweight, elegant theme switcher for web applications that allows users to toggle between light, dark, and system themes, along with custom accent colors.
## Features
- **Multiple theme options**:
- Light mode
- Dark mode
- System preference detection
- **Custom accent color** selection
- **Persistent settings** using localStorage
- **Responsive design** that works on all screen sizes
- **No flash of unstyled content** when loading in dark mode
- **Modern UI** with accessible controls
- **Smooth transitions** between themes
## Live Demo
You can see a live demo of this project on GitHub Pages:
https://shadoll.github.io/theme-switcher/
## How It Works
### Theme Switching
The theme switcher allows users to select between three theme options:
- **Light**: Forces light theme regardless of system settings
- **Dark**: Forces dark theme regardless of system settings
- **System**: Automatically follows the user's system preference
### Accent Color
Users can customize the accent color used throughout the interface:
1. Click on the color preview in the theme menu
2. Select a color using the color picker
3. The accent color is applied across buttons, headings, and UI accents
### Persistence
User preferences are stored in the browser's localStorage, so theme settings persist between visits.
## Usage
1. Include the CSS and JavaScript files in your project
2. Add the theme toggle HTML markup
3. Initialize the theme switcher with JavaScript
```html
```
## Implementation Details
### Preventing Flash
To prevent flash of unstyled content when loading in dark mode, the project includes an inline script in the head that sets the theme before the page renders:
```html
```
### CSS Variables
The theme switcher uses CSS custom properties (variables) to define theme colors.
## Browser Support
This theme switcher works in all modern browsers that support:
- CSS Custom Properties (variables)
- localStorage API
- matchMedia API
## License
This project is available for use under the MIT License.
## Getting Started
1. Clone the repository
2. Open index.html in your browser
3. Try switching between themes and selecting custom accent colors