Dash-math_Database / layout /Chapter_card.py
Mochi0622's picture
initial deploy
e66cfb4
Raw
History Blame Contribute Delete
2.07 kB
"""
layout/Chapter_card.py ← 向下相容 shim
----------------------------------------
create_card 已整合進 layout/renderer/ 的 cards 模組。
此 shim 讓舊 import 繼續正常運作:
from layout.Chapter_card import create_card ← 仍可用
"""
from .renderer.renderer import render_doc as _ # 確保 renderer 已初始化 # noqa: F401
# Chapter_card 的原始功能直接在此定義(避免 components/ 路徑問題)
from dash import html
import dash_mantine_components as dmc
from dash_iconify import DashIconify
def create_card(data: dict) -> dmc.Card:
"""章節總覽卡片(原 Chapter_card.py)。"""
buttons = [
dmc.Anchor(
href=data["link"],
children=dmc.Button("單元學習", variant="light", color="orange", size="sm", radius="xl"),
)
]
if "trick" in data:
buttons.append(
dmc.Anchor(
href=data["trick"],
children=dmc.Button("技巧學習", variant="outline", color="gray", size="sm", radius="xl"),
)
)
buttons.append(
dmc.Anchor(
href=data["test"],
children=dmc.Button("小測驗", variant="filled", color="blue", size="sm", radius="xl"),
)
)
desc_items = [dmc.Text(line, size="sm", c="dimmed") for line in data["description"]]
desc_items += [dmc.Text(" ", size="sm") for _ in range(4 - len(data["description"]))]
return dmc.Card(
children=[
dmc.Text(data["title"], fw=700, size="lg"),
dmc.Group(
gap="xs", mt="xs", mb="sm",
children=[dmc.Badge(label, color=color, radius="md") for label, color in data["badges"]],
),
dmc.Stack(gap=0, style={"minHeight": 100}, children=desc_items),
dmc.Flex(gap="sm", wrap="wrap", justify="flex-start", mt="sm", children=buttons),
],
withBorder=True, shadow="sm", radius="md",
style={"width": {"base": 280, "sm": 320, "md": 350, "lg": 400}},
)
__all__ = ["create_card"]