Hy3 / styles.py
ericsqin's picture
add hy3
ad51766
Raw
History Blame Contribute Delete
1.75 kB
"""Loads and concatenates the modular CSS files under ``static/css/``.
Modules are loaded in a deterministic order that matches the cascade:
variables first, then layout, then components, then dark-mode overrides.
Adding a new stylesheet? Append it to ``_LOAD_ORDER`` below.
"""
from __future__ import annotations
from pathlib import Path
_CSS_DIR = Path(__file__).parent / "static" / "css"
_LOAD_ORDER = (
"_variables.css", # CSS custom properties (light + dark)
"_layout.css", # html/body/container/font
"_chatbot.css", # chat bubble / markdown / table rules
"_chat.css", # custom chat surface layout (loaded AFTER _chatbot
# so our overrides for #hy-chat-host / .message.user
# win conflicts with the !important rules above)
"_perf.css", # content-visibility / containment for long convos
"_math.css", # KaTeX math rendering
"_thinking.css", # collapsible reasoning block
"_legacy.css", # form/label/prose tweaks (Svelte-hash-free)
"_input.css", # message input, send/new buttons
"_misc.css", # request-id, code blocks, blockquote, slider
"_modals.css", # tool area + html preview modal
"_typing.css", # typing indicator (waiting for model)
"_examples.css", # empty-state examples overlay
"_hide.css", # hide gradio defaults (avatars/buttons)
"_dark.css", # remaining dark-mode overrides (sliders, scrollbars)
)
def _load_css() -> str:
parts: list[str] = []
for name in _LOAD_ORDER:
path = _CSS_DIR / name
parts.append(f"/* === {name} === */\n{path.read_text(encoding='utf-8')}")
return "\n".join(parts)
CSS = _load_css()