test ferst

This commit is contained in:
jze9
2026-05-13 19:05:07 +05:00
commit 0ac1c8a862
33 changed files with 3702 additions and 0 deletions

69
web/theme_manager.py Normal file
View File

@@ -0,0 +1,69 @@
import flet as ft
import designer as d
_ui_text = ft.TextTheme(
body_medium=ft.TextStyle(font_family=d.FONT_UI),
body_large=ft.TextStyle(font_family=d.FONT_UI),
body_small=ft.TextStyle(font_family=d.FONT_UI),
label_large=ft.TextStyle(font_family=d.FONT_UI),
label_medium=ft.TextStyle(font_family=d.FONT_UI),
label_small=ft.TextStyle(font_family=d.FONT_UI),
title_large=ft.TextStyle(font_family=d.FONT_UI, weight=ft.FontWeight.W_600),
title_medium=ft.TextStyle(font_family=d.FONT_UI, weight=ft.FontWeight.W_500),
title_small=ft.TextStyle(font_family=d.FONT_UI),
)
THEMES = {
"light": ft.Theme(
color_scheme_seed=d.PRIMARY,
color_scheme=ft.ColorScheme(
primary=d.PRIMARY,
secondary=d.ACCENT,
background=d.BACKGROUND,
surface=d.SURFACE,
),
text_theme=_ui_text,
),
"dark": ft.Theme(
color_scheme_seed=d.PRIMARY,
color_scheme=ft.ColorScheme(
primary=d.PRIMARY_LIGHT,
secondary=d.ACCENT,
background="#121212",
surface="#1E1E1E",
on_surface=ft.colors.WHITE,
),
text_theme=_ui_text,
),
}
def apply(page: ft.Page, theme_id: str = "light"):
theme = THEMES.get(theme_id, THEMES["light"])
if theme_id == "dark":
page.theme_mode = ft.ThemeMode.DARK
page.dark_theme = theme
else:
page.theme_mode = ft.ThemeMode.LIGHT
page.theme = theme
def apply_article_font(page: ft.Page, font_family: str):
"""Temporarily override body text font for article reading view."""
article_text = ft.TextTheme(
body_medium=ft.TextStyle(font_family=font_family, size=16, height=1.7),
body_large=ft.TextStyle(font_family=font_family, size=18, height=1.7),
body_small=ft.TextStyle(font_family=font_family),
)
if page.theme:
page.theme.text_theme = article_text
else:
page.theme = ft.Theme(text_theme=article_text)
page.update()
def reset_font(page: ft.Page):
"""Restore default UI font after leaving article view."""
if page.theme:
page.theme.text_theme = _ui_text
page.update()