File size: 2,110 Bytes
29d740c
e66cfb4
 
 
29d740c
e66cfb4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29d740c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e66cfb4
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from dash_iconify import DashIconify
# header.py (或你專案中產生 header 的檔案)
from dash import html
import dash_mantine_components as dmc
from student_login import create_student_badge

HEADER_H = 50  # 想大一點改 72/80 即可



def generate_header():
    # 漢堡:手機版才顯示 / 桌機版才顯示
    burger_mobile = dmc.Burger(
        id="mobile-burger", size="sm", hiddenFrom="sm", opened=False,
        style={"marginTop": "6px"}  # 往下些
    )
    burger_desktop = dmc.Burger(
        id="desktop-burger", size="sm", visibleFrom="sm", opened=True,
        style={"marginTop": "6px"}  # 往下些
    )

    left = dmc.Group(
        align="center",
        gap="md",
        wrap="nowrap",
        children=[
            burger_mobile,
            burger_desktop,
            dmc.Image(src="/assets/logo.svg", h=HEADER_H - 20, fit="contain"),
            dmc.Text(
                "微積分教學網站",
                fw=800, size="sm",
                style={"whiteSpace": "nowrap", "textOverflow": "ellipsis"},
            ),
        ],
        style={"height": "100%"},
    )

    right = dmc.Group(
        align="center",
        children=[
            create_student_badge(),
            dmc.Anchor(
                href="/teacher",
                children=dmc.Tooltip(
                    label="老師後台",
                    children=dmc.ActionIcon(
                        DashIconify(icon="tabler:layout-dashboard", height=18),
                        size="md",
                        variant="subtle",
                        color="gray",
                    ),
                ),
                style={"lineHeight": 0},
            ),
            dmc.Switch(
                id="color-scheme-switch", size="lg", color="gray",
                onLabel="🌙", offLabel="☀️", persistence=True
            ),
        ],
        style={"height": "100%"},
    )

    return dmc.AppShellHeader(
        h=HEADER_H, px="md", withBorder=True,
        children=dmc.Group(justify="space-between", align="center", h="100%", children=[left, right]),
    )