turbo-themes
Universal design tokens and theme management for Python applications.
Features
- 9 curated themes from Catppuccin (4 variants), Dracula, GitHub (light/dark), and Bulma (light/dark)
- Design tokens as typed Python dataclasses
- CSS variable generation for web integration
- Type-safe with full type hints and mypy strict mode
- Lightweight: single runtime dependency (python-dateutil)
Installation
pip install turbo-themes
# or
uv add turbo-themes
Quick Start
Access Theme Colors
from turbo_themes import THEMES
# Get a specific theme
mocha = THEMES["catppuccin-mocha"]
print(mocha.colors.primary) # "#89b4fa"
print(mocha.colors.background) # "#1e1e2e"
print(mocha.meta.name) # "Catppuccin Mocha"
print(mocha.meta.variant) # "dark"
Theme Manager
from turbo_themes import ThemeManager
manager = ThemeManager()
# Set and apply a theme
manager.set_theme("catppuccin-mocha")
css_vars = manager.apply_theme_to_css_variables()
# Generate CSS custom properties
for var_name, value in css_vars.items():
print(f"--{var_name}: {value};")
List Available Themes
from turbo_themes import THEMES, list_themes
# Get all theme names
themes = list_themes()
print(themes)
# ['bulma-dark', 'bulma-light', 'catppuccin-frappe', 'catppuccin-latte',
# 'catppuccin-macchiato', 'catppuccin-mocha', 'dracula', 'github-dark', 'github-light']
# Filter by variant
dark_themes = [name for name, theme in THEMES.items() if theme.meta.variant == "dark"]
Available Themes
| Theme | Variant | Source |
|---|---|---|
catppuccin-mocha |
dark | catppuccin.com |
catppuccin-macchiato |
dark | catppuccin.com |
catppuccin-frappe |
dark | catppuccin.com |
catppuccin-latte |
light | catppuccin.com |
dracula |
dark | draculatheme.com |
github-dark |
dark | primer.style |
github-light |
light | primer.style |
bulma-dark |
dark | bulma.io |
bulma-light |
light | bulma.io |
Theme Structure
Each theme provides:
theme.colors.primary # Primary accent color
theme.colors.secondary # Secondary accent color
theme.colors.background # Background color
theme.colors.surface # Surface/card color
theme.colors.text # Primary text color
theme.colors.text_muted # Muted/secondary text
theme.colors.border # Border color
theme.colors.error # Error state color
theme.colors.warning # Warning state color
theme.colors.success # Success state color
theme.colors.info # Info state color
theme.meta.name # Display name
theme.meta.variant # "light" or "dark"
theme.meta.source # Source project URL
Integration Examples
Flask/Jinja2
from flask import Flask, render_template
from turbo_themes import ThemeManager
app = Flask(__name__)
manager = ThemeManager()
@app.route("/")
def index():
manager.set_theme("catppuccin-mocha")
css_vars = manager.apply_theme_to_css_variables()
return render_template("index.html", theme_vars=css_vars)
Django
from turbo_themes import THEMES
def get_theme_context(theme_name: str) -> dict:
theme = THEMES.get(theme_name, THEMES["catppuccin-mocha"])
return {
"primary_color": theme.colors.primary,
"background_color": theme.colors.background,
"text_color": theme.colors.text,
}
Multi-Platform
This package is part of the turbo-themes ecosystem:
- npm:
@lgtm-hq/turbo-themes- TypeScript/JavaScript - PyPI:
turbo-themes- Python (this package) - RubyGems:
turbo-themes- Ruby/Jekyll - Swift: Via Swift Package Manager
All packages share the same design tokens and color values.
Links
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
turbo_themes-0.43.4.tar.gz
(70.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turbo_themes-0.43.4.tar.gz.
File metadata
- Download URL: turbo_themes-0.43.4.tar.gz
- Upload date:
- Size: 70.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed9296fec6bbe3a414ec9b5fcff0284ad2d08a080f89916197a1f085d7ae33b0
|
|
| MD5 |
1db1953a96a2efc2e90c4926c1c78af2
|
|
| BLAKE2b-256 |
1e5f7370f6c91925885a7123c919d7a4168d4480be26ae4a857af753f8f6baad
|
File details
Details for the file turbo_themes-0.43.4-py3-none-any.whl.
File metadata
- Download URL: turbo_themes-0.43.4-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
972d0d33df429bd325007fd4cb67875a26c99c5501746b1479108ebb44687997
|
|
| MD5 |
6a52c564f38aa3a54480b7a969c618d7
|
|
| BLAKE2b-256 |
0fd2be3ec01679f39a2c70746b95c77ae0a32bade98c8efd408d48e665469168
|