feat: split logo scale by viewport
This commit is contained in:
@@ -1517,6 +1517,8 @@ _INITIAL_THEME_TOKEN_CSS_MAP = {
|
||||
"font_logo": "--font-logo",
|
||||
"font_mono": "--font-mono",
|
||||
"home_logo_scale": "--home-logo-scale",
|
||||
"home_logo_scale_desktop": "--home-logo-scale-desktop",
|
||||
"home_logo_scale_mobile": "--home-logo-scale-mobile",
|
||||
"admin_bg": "--admin-bg",
|
||||
"admin_surface": "--admin-surface",
|
||||
"admin_surface_2": "--admin-surface-2",
|
||||
@@ -1528,6 +1530,12 @@ _INITIAL_THEME_TOKEN_CSS_MAP = {
|
||||
"admin_dim": "--admin-dim",
|
||||
}
|
||||
|
||||
_INITIAL_THEME_LOGO_SCALE_TOKENS = {
|
||||
"home_logo_scale",
|
||||
"home_logo_scale_desktop",
|
||||
"home_logo_scale_mobile",
|
||||
}
|
||||
|
||||
|
||||
def _theme_css_href_for_html(theme: Any) -> str:
|
||||
css_file = str(getattr(theme, "css_file", "") or "").strip()
|
||||
@@ -1571,7 +1579,7 @@ def _initial_theme_head_markup(request: web.Request, theme: Any, primary_color:
|
||||
tokens = tokens if isinstance(tokens, dict) else {}
|
||||
declarations = []
|
||||
for token_key, css_name in _INITIAL_THEME_TOKEN_CSS_MAP.items():
|
||||
if token_key == "home_logo_scale":
|
||||
if token_key in _INITIAL_THEME_LOGO_SCALE_TOKENS:
|
||||
try:
|
||||
scale = float(tokens.get(token_key) or 0)
|
||||
except (TypeError, ValueError):
|
||||
|
||||
@@ -54,6 +54,8 @@ class ThemeTokens(BaseModel):
|
||||
font_logo: Optional[str] = None
|
||||
font_mono: Optional[str] = None
|
||||
home_logo_scale: Optional[int] = None
|
||||
home_logo_scale_desktop: Optional[int] = None
|
||||
home_logo_scale_mobile: Optional[int] = None
|
||||
admin_bg: Optional[str] = None
|
||||
admin_surface: Optional[str] = None
|
||||
admin_surface_2: Optional[str] = None
|
||||
@@ -80,14 +82,14 @@ class ThemeTokens(BaseModel):
|
||||
hex_value = "".join(char * 2 for char in hex_value)
|
||||
return f"#{hex_value}"
|
||||
|
||||
@field_validator("home_logo_scale")
|
||||
@field_validator("home_logo_scale", "home_logo_scale_desktop", "home_logo_scale_mobile")
|
||||
@classmethod
|
||||
def _normalize_home_logo_scale(cls, value: Optional[int]) -> Optional[int]:
|
||||
if value is None:
|
||||
return None
|
||||
scale = int(value)
|
||||
if scale < 50 or scale > 300:
|
||||
raise ValueError("home_logo_scale must be between 50 and 300 percent")
|
||||
raise ValueError("home logo scale must be between 50 and 300 percent")
|
||||
return scale
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user