/* ===== COURSES — Bastion-styled list + detail ===== */
function CoursesPage({ navigate, openSignup }) {
const [active, setActive] = useState(0);
const programs = [
{ id: "base", num: "01", title: "ENDURANCE", ch: "基礎有氧", zone: "ZONE 2",
bullets: ["維持長時間 Zone 2 穩定騎乘", "建立強大的基礎耐力、提升脂肪代謝效率", "在賽季前打好體能基礎,降低安靜心率"],
meta: { 強度: "★★☆☆☆", 時長: "80 MIN", 對象: "全員 / 入門" } },
{ id: "vo2", num: "02", title: "VO2 MAX", ch: "無氧間歇", zone: "ZONE 5–6 · HIIT",
bullets: ["無氧間歇課程,在 Zone 5–Zone 6 以 HIIT 模式進行訓練", "提升最大攝氧量、衝刺爆發力及乳酸耐受度", "強調在短時間內爆發最高瓦數"],
meta: { 強度: "★★★★★", 時長: "80 MIN", 對象: "進階 / 競賽" } },
{ id: "ftp", num: "03", title: "THRESHOLD", ch: "閾值訓練", zone: "88–94% FTP",
bullets: ["甜蜜點 (SST) 訓練,在 88–94% FTP 進行交叉練習", "利用單車低衝擊特性,輔助跑者或其他項目選手提升體能", "維持高心肺刺激,亦能提高最大攝氧量"],
meta: { 強度: "★★★★☆", 時長: "80 MIN", 對象: "中階 / 跨項目" } },
{ id: "heat", num: "04", title: "HEAT-ADAPT", ch: "熱適應訓練", zone: "CORE 監測",
bullets: ["專屬教室建立安全的熱適應訓練環境", "CORE 感測器嚴格監測體溫、心率與水分補充", "增加心搏輸出量、優化排汗機制"],
meta: { 強度: "★★★☆☆", 時長: "80 MIN", 對象: "夏季備賽 / 三鐵" } },
];
return (
<>
{/* Active program detail */}
// POWER PROGRAMS
FOUR DISCIPLINES.
{/* List nav */}
{programs.map((p, i) => (
setActive(i)}
style={{ display: "grid", gridTemplateColumns: "80px 1fr 1fr 1fr 60px", gap: 24, alignItems: "center", padding: "24px 16px 24px 0", borderBottom: "1px solid var(--hairline-soft)", cursor: "pointer", background: active === i ? "rgba(168,128,79,0.04)" : "transparent", transition: "background 0.2s, padding-left 0.3s", paddingLeft: active === i ? "16px" : "0" }}>
{p.num} /
{p.title}
{p.ch}
{p.zone}
{active === i ? "—" : "+"}
))}
{/* Detail */}
{programs[active].zone}
{programs[active].title}
{programs[active].bullets.map((b, i) => (
0{i + 1}
{b}
))}
預約這堂 ↗
navigate("schedule")}>查看時段 ↗
{Object.entries(programs[active].meta).map(([k, v]) => (
{k}
{v}
))}
{/* Roller training */}
// ROLLER
ROLLER TRAINING.
{[
{ l: "LEVEL 01", t: "BALANCE", c: "初階滾筒", b: ["訓練踩踏平順度、車感及核心平衡", "強調專注力,訓練控車技巧與騎乘姿勢矯正"] },
{ l: "LEVEL 02", t: "REFLEX", c: "中階滾筒", b: ["放手騎乘、單腳踩踏與碰撞等進階平衡練習", "短時間高迴轉衝刺,訓練神經協調反應"] },
].map(r => (
{r.l}
{r.t}
{r.c}
{r.b.map((x, i) => (
0{i + 1}
{x}
))}
))}
{/* Custom & Private */}
// CUSTOM
CUSTOM & PRIVATE.
// CUSTOM PACK
客製化包班
完全客製化的團體課程,教學內容、時間、上課次數皆可依需求制定。車隊集訓、企業團體、生日包場 — 全可。
私訊洽詢 ↗
// 1-ON-1 / 1-ON-2
個人技巧課
室內訓練台、爬坡王國的外騎指導都接。1 對 1、1 對 2 皆可,跨縣市車馬費另計。
私訊洽詢 ↗
>
);
}
function PowerCurve({ mode }) {
const curves = {
base: "M 0 80 Q 50 70 100 70 T 200 65 T 300 65 T 400 60",
vo2: "M 0 90 L 30 30 L 50 30 L 60 85 L 90 25 L 110 25 L 120 88 L 150 22 L 170 22 L 180 90 L 210 28 L 230 28 L 240 86 L 270 25 L 290 25 L 300 90 L 400 90",
ftp: "M 0 85 L 30 50 L 80 48 L 130 50 L 180 47 L 230 50 L 280 48 L 330 50 L 400 85",
heat: "M 0 70 Q 100 68 200 60 T 400 50",
};
return (
POWER PROFILE
{[20, 40, 60, 80].map(y => )}
);
}
/* Shared page hero */
function PageHero({ marker, titleA, titleB, sub }) {
return (
{marker}
{titleA}
{titleB}
{sub && (
)}
);
}
window.CoursesPage = CoursesPage;
window.PageHero = PageHero;