new themes
This commit is contained in:
@@ -40,18 +40,72 @@ def google_fonts_css_url() -> str:
|
||||
return f"https://fonts.googleapis.com/css2?{families}&display=swap"
|
||||
|
||||
|
||||
BOOTSTRAP_THEMES = (
|
||||
"default",
|
||||
"flatly",
|
||||
"litera",
|
||||
"lumen",
|
||||
"minty",
|
||||
"sketchy",
|
||||
"solar",
|
||||
"spacelab",
|
||||
"united",
|
||||
"zephyr",
|
||||
)
|
||||
DEVEXPRESS_BOOTSTRAP_THEMES = {
|
||||
"blazing-berry": "Blazing Berry",
|
||||
"office-white": "Office White",
|
||||
"purple": "Purple",
|
||||
}
|
||||
|
||||
PYTORRENT_APP_THEMES = {
|
||||
"adaptive": "pyTorrent Adaptive",
|
||||
"ocean": "pyTorrent Ocean",
|
||||
"graphite": "pyTorrent Graphite",
|
||||
"forest": "pyTorrent Forest",
|
||||
"amber": "pyTorrent Amber",
|
||||
"nord": "pyTorrent Nord",
|
||||
"crimson": "pyTorrent Crimson",
|
||||
"sky": "pyTorrent Sky",
|
||||
}
|
||||
|
||||
|
||||
BOOTSTRAP_THEME_DEFINITIONS = {
|
||||
"default": {
|
||||
"label": "Default Bootstrap",
|
||||
"local": f"{LIBS_STATIC_DIR}/bootstrap/{BOOTSTRAP_VERSION}/css/bootstrap.min.css",
|
||||
"cdn": f"https://cdn.jsdelivr.net/npm/bootstrap@{BOOTSTRAP_VERSION}/dist/css/bootstrap.min.css",
|
||||
},
|
||||
# Bootswatch themes.
|
||||
"flatly": {"label": "Bootswatch: Flatly", "provider": "bootswatch"},
|
||||
"litera": {"label": "Bootswatch: Litera", "provider": "bootswatch"},
|
||||
"lumen": {"label": "Bootswatch: Lumen", "provider": "bootswatch"},
|
||||
"minty": {"label": "Bootswatch: Minty", "provider": "bootswatch"},
|
||||
"sketchy": {"label": "Bootswatch: Sketchy", "provider": "bootswatch"},
|
||||
"spacelab": {"label": "Bootswatch: Spacelab", "provider": "bootswatch"},
|
||||
"united": {"label": "Bootswatch: United", "provider": "bootswatch"},
|
||||
"zephyr": {"label": "Bootswatch: Zephyr", "provider": "bootswatch"},
|
||||
# Complete DevExpress Bootstrap v5 dist.v5 set.
|
||||
**{
|
||||
f"dx-{theme}": {
|
||||
"label": f"DevExpress: {label}",
|
||||
"provider": "devexpress",
|
||||
"local": f"{LIBS_STATIC_DIR}/devexpress-bootstrap-themes/dist.v5/{theme}/bootstrap.min.css",
|
||||
"cdn": f"https://cdn.jsdelivr.net/gh/DevExpress/bootstrap-themes@master/dist.v5/{theme}/bootstrap.min.css",
|
||||
}
|
||||
for theme, label in DEVEXPRESS_BOOTSTRAP_THEMES.items()
|
||||
},
|
||||
# App-specific Bootstrap variable overrides. These sit on top of default Bootstrap.
|
||||
**{
|
||||
f"pytorrent-{theme}": {
|
||||
"label": f"Custom: {label}",
|
||||
"provider": "pytorrent",
|
||||
"local": f"{LIBS_STATIC_DIR}/pytorrent-themes/{theme}/bootstrap.min.css",
|
||||
"cdn": f"/static/{LIBS_STATIC_DIR}/pytorrent-themes/{theme}/bootstrap.min.css",
|
||||
}
|
||||
for theme, label in PYTORRENT_APP_THEMES.items()
|
||||
},
|
||||
}
|
||||
|
||||
def _theme_definition(theme: str | None) -> dict[str, str]:
|
||||
theme = theme if theme in BOOTSTRAP_THEME_DEFINITIONS else "default"
|
||||
item = dict(BOOTSTRAP_THEME_DEFINITIONS[theme])
|
||||
if item.get("provider") == "bootswatch":
|
||||
item["local"] = f"{LIBS_STATIC_DIR}/bootswatch/{BOOTSWATCH_VERSION}/{theme}/bootstrap.min.css"
|
||||
item["cdn"] = f"https://cdn.jsdelivr.net/npm/bootswatch@{BOOTSWATCH_VERSION}/dist/{theme}/bootstrap.min.css"
|
||||
return item
|
||||
|
||||
|
||||
BOOTSTRAP_THEMES = tuple(BOOTSTRAP_THEME_DEFINITIONS.keys())
|
||||
BOOTSTRAP_THEME_LABELS = {key: value["label"] for key, value in BOOTSTRAP_THEME_DEFINITIONS.items()}
|
||||
|
||||
STATIC_ASSETS = {
|
||||
"bootstrap_js": {
|
||||
@@ -86,16 +140,8 @@ STATIC_ASSETS = {
|
||||
|
||||
|
||||
def bootstrap_css_asset(theme: str | None = None) -> dict[str, str]:
|
||||
theme = theme if theme in BOOTSTRAP_THEMES else "default"
|
||||
if theme == "default":
|
||||
return {
|
||||
"local": f"{LIBS_STATIC_DIR}/bootstrap/{BOOTSTRAP_VERSION}/css/bootstrap.min.css",
|
||||
"cdn": f"https://cdn.jsdelivr.net/npm/bootstrap@{BOOTSTRAP_VERSION}/dist/css/bootstrap.min.css",
|
||||
}
|
||||
return {
|
||||
"local": f"{LIBS_STATIC_DIR}/bootswatch/{BOOTSWATCH_VERSION}/{theme}/bootstrap.min.css",
|
||||
"cdn": f"https://cdn.jsdelivr.net/npm/bootswatch@{BOOTSWATCH_VERSION}/dist/{theme}/bootstrap.min.css",
|
||||
}
|
||||
item = _theme_definition(theme)
|
||||
return {"local": item["local"], "cdn": item["cdn"]}
|
||||
|
||||
|
||||
def asset_path(key: str) -> str:
|
||||
|
||||
@@ -4,19 +4,9 @@ import json
|
||||
|
||||
from ..db import connect, utcnow, default_user_id
|
||||
from . import auth
|
||||
from .frontend_assets import BOOTSTRAP_THEME_LABELS
|
||||
|
||||
BOOTSTRAP_THEMES = {
|
||||
"default": "Default Bootstrap",
|
||||
"flatly": "Flatly",
|
||||
"litera": "Litera",
|
||||
"lumen": "Lumen",
|
||||
"minty": "Minty",
|
||||
"sketchy": "Sketchy",
|
||||
"solar": "Solar",
|
||||
"spacelab": "Spacelab",
|
||||
"united": "United",
|
||||
"zephyr": "Zephyr",
|
||||
}
|
||||
BOOTSTRAP_THEMES = BOOTSTRAP_THEME_LABELS
|
||||
|
||||
FONT_FAMILIES = {
|
||||
"default": "Theme default",
|
||||
|
||||
Reference in New Issue
Block a user