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.28.6.tar.gz (65.5 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.28.6-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: turbo_themes-0.28.6.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.28.6.tar.gz
Algorithm Hash digest
SHA256 82263250a8d5b962bcc8751ee5cd0aec28e2f19c444e809f80b597fd955d1f49
MD5 f17f63a28294701762cd210b2111ae27
BLAKE2b-256 30bf12064142b53609b2837de156570e8c608d787323aeb9ce66ff3add956d41

See more details on using hashes here.

File details

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

File metadata

  • Download URL: turbo_themes-0.28.6-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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.28.6-py3-none-any.whl
Algorithm Hash digest
SHA256 31afc45ed2eaf863e90e4632a0f85ba6882698609856da5301ea0547077d91f5
MD5 12a0524ae5e7393dab42f404161f817f
BLAKE2b-256 f7f9310e477fe1cff62e6986a34344cb121171db543b8b4bb2a0a657eadddabf

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