feat: split logo scale by viewport

This commit is contained in:
3252a8
2026-06-03 12:24:18 +03:00
parent 602cbc7ee6
commit d8fe88eb01
14 changed files with 269 additions and 97 deletions
+8
View File
@@ -559,10 +559,14 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
def test_home_logo_scale_rules_beat_late_loaded_admin_brand_styles(self):
css = Path("frontend/src/styles/webapp.css").read_text(encoding="utf-8")
base_css = Path("frontend/src/styles/base.css").read_text(encoding="utf-8")
self.assertIn(".app-shell .home-brand .brand-mark.brand-mark-xl", css)
self.assertIn(".app-shell .login-brand-auth .brand-mark.brand-mark-xl", css)
self.assertIn(".app-shell .loader .brand-mark.brand-mark-lg", css)
self.assertIn("--home-logo-scale-effective", css)
self.assertIn("--home-logo-scale-mobile", base_css)
self.assertIn("--home-logo-scale-desktop", base_css)
def test_prune_unused_appearance_assets_keeps_only_referenced_logo_and_favicons(self):
with tempfile.TemporaryDirectory() as tmpdir:
@@ -647,6 +651,8 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
cfg = builtin_webapp_themes_config("#123456")
theme = cfg.theme_by_key("light")
theme.tokens.home_logo_scale = 135
theme.tokens.home_logo_scale_desktop = 150
theme.tokens.home_logo_scale_mobile = 85
request = SimpleNamespace(get=lambda key, default="": "nonce-value")
markup = subscription_webapp._initial_theme_head_markup(request, theme, "#123456")
@@ -655,6 +661,8 @@ class WebAppAssetTests(unittest.IsolatedAsyncioTestCase):
self.assertIn('nonce="nonce-value"', markup)
self.assertIn("--accent:#123456", markup)
self.assertIn("--home-logo-scale:1.35", markup)
self.assertIn("--home-logo-scale-desktop:1.5", markup)
self.assertIn("--home-logo-scale-mobile:0.85", markup)
self.assertIn("color-scheme:light", markup)
def test_theme_asset_version_bumps_for_saved_default_css_theme(self):
+11 -2
View File
@@ -296,7 +296,7 @@ class WebappThemesConfigTests(unittest.TestCase):
self.assertEqual(cfg.theme_by_key("custom").tokens.accent, "#00ff88")
def test_theme_home_logo_scale_is_public_token(self):
def test_theme_home_logo_scales_are_public_tokens(self):
cfg = WebappThemesConfig(
default_theme="custom",
themes=[
@@ -304,7 +304,12 @@ class WebappThemesConfigTests(unittest.TestCase):
"key": "custom",
"enabled": True,
"default": True,
"tokens": {"color_scheme": "dark", "home_logo_scale": 135},
"tokens": {
"color_scheme": "dark",
"home_logo_scale": 135,
"home_logo_scale_desktop": 150,
"home_logo_scale_mobile": 85,
},
}
],
)
@@ -313,7 +318,11 @@ class WebappThemesConfigTests(unittest.TestCase):
custom = payload["themes"][0]
self.assertEqual(cfg.theme_by_key("custom").tokens.home_logo_scale, 135)
self.assertEqual(cfg.theme_by_key("custom").tokens.home_logo_scale_desktop, 150)
self.assertEqual(cfg.theme_by_key("custom").tokens.home_logo_scale_mobile, 85)
self.assertEqual(custom["tokens"]["home_logo_scale"], 135)
self.assertEqual(custom["tokens"]["home_logo_scale_desktop"], 150)
self.assertEqual(custom["tokens"]["home_logo_scale_mobile"], 85)
def test_theme_accent_rejects_non_hex_values(self):
with self.assertRaises(ValueError):