Skip to main content

Universal design tokens and themes for Python applications

Project description

turbo-themes

PyPI Python License

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

Project details


Release history Release notifications | RSS feed

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.20.13.tar.gz (57.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

turbo_themes-0.20.13-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file turbo_themes-0.20.13.tar.gz.

File metadata

  • Download URL: turbo_themes-0.20.13.tar.gz
  • Upload date:
  • Size: 57.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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

Hashes for turbo_themes-0.20.13.tar.gz
Algorithm Hash digest
SHA256 9ea0be4d052db16a73d2e7332c10a06349097803bbb4513b9b3344ebddf0f5fd
MD5 8ce65b4183e34143e6c91390dc016a13
BLAKE2b-256 dd58ea8dae90fbdb8984397248d325a8fd4428951e9eb5fac45d0b9561bc2238

See more details on using hashes here.

File details

Details for the file turbo_themes-0.20.13-py3-none-any.whl.

File metadata

  • Download URL: turbo_themes-0.20.13-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","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

Hashes for turbo_themes-0.20.13-py3-none-any.whl
Algorithm Hash digest
SHA256 fa65f0293fc7996f51d220a18956b078c33420b2c6e1b323e453dab3d69afe29
MD5 9362e076119b62c15c825e50878a8c1d
BLAKE2b-256 f2c91d94291719deaa6d1ab9b72b5c0d2c1e066e7293c42ac7bf3497bd57456f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page