63 lines
2.0 KiB
Python
63 lines
2.0 KiB
Python
"""
|
|
Style Engine Module.
|
|
====================
|
|
|
|
Centralized design system for the 2026 Premium UI.
|
|
Defines color palettes, glassmorphism templates, and modern font loading.
|
|
"""
|
|
|
|
from PySide6.QtGui import QColor, QFont, QFontDatabase
|
|
import os
|
|
|
|
class Theme:
|
|
"""Premium Dark Theme Palette (2026 Edition)."""
|
|
# Backgrounds
|
|
BG_DARK = "#0d0d12" # Deep cosmic black
|
|
BG_CARD = "#16161e" # Slightly lighter for components
|
|
BG_GLASS = "rgba(22, 22, 30, 0.7)" # Semi-transparent for glass effect
|
|
|
|
# Neons & Accents
|
|
ACCENT_CYAN = "#00f2ff" # Electric cyan
|
|
ACCENT_PURPLE = "#7000ff" # Deep cyber purple
|
|
ACCENT_GREEN = "#00ff88" # Mint neon
|
|
|
|
# Text
|
|
TEXT_PRIMARY = "#ffffff" # Pure white
|
|
TEXT_SECONDARY = "#9499b0" # Muted blue-gray
|
|
TEXT_MUTED = "#565f89" # Darker blue-gray
|
|
|
|
# Borders
|
|
BORDER_SUBTLE = "rgba(100, 100, 150, 0.2)"
|
|
BORDER_GLOW = "rgba(0, 242, 255, 0.5)"
|
|
|
|
class StyleGenerator:
|
|
"""Generates QSS strings for complex effects."""
|
|
|
|
@staticmethod
|
|
def get_glass_card(radius=12, border=True):
|
|
"""Returns QSS for a glassmorphism card."""
|
|
border_css = f"border: 1px solid {Theme.BORDER_SUBTLE};" if border else "border: none;"
|
|
return f"""
|
|
background-color: {Theme.BG_GLASS};
|
|
border-radius: {radius}px;
|
|
{border_css}
|
|
"""
|
|
|
|
@staticmethod
|
|
def get_glow_border(color=Theme.ACCENT_CYAN):
|
|
"""Returns QSS for a glowing border state."""
|
|
return f"border: 1px solid {color};"
|
|
|
|
def load_modern_fonts():
|
|
"""Attempts to load a modern font stack for the 2026 look."""
|
|
# Preferred order: Segoe UI Variable, Inter, Segoe UI, sans-serif
|
|
families = ["Segoe UI Variable Text", "Inter", "Segoe UI", "sans-serif"]
|
|
|
|
for family in families:
|
|
font = QFont(family, 10)
|
|
if QFontDatabase.families().count(family) > 0:
|
|
return font
|
|
|
|
# Absolute fallback
|
|
return QFont("Arial", 10)
|