import type { TemplateBlueprint } from "./types"; const comparisonFields = [ { key: "name", label: "ชื่อ", type: "text" as const }, { key: "base", label: "ค่าพื้นฐาน", type: "number" as const, displayPrecision: 0 }, { key: "bonus", label: "โบนัส", type: "number" as const, displayPrecision: 0 }, { key: "cost", label: "ต้นทุน", type: "number" as const, displayPrecision: 0 }, { key: "score", label: "คะแนนเปรียบเทียบ", type: "number" as const, formula: "(base + bonus) / cost", displayPrecision: 2, }, ]; export const builtInTemplates: readonly TemplateBlueprint[] = [ { slug: "classic-character-guide", name: "คู่มือตัวละครแบบคลาสสิก", description: "โครงสร้างหลายหน้าสำหรับข้อมูล บิลด์ ทีม และคำอธิบายเชิงลึก", category: "character-guide", builtIn: true, dataSources: [ { key: "weapons", name: "อันดับอาวุธ", fields: comparisonFields, }, { key: "teams", name: "ทีมแนะนำ", fields: [ { key: "team", label: "ทีม", type: "text" }, { key: "member_1", label: "สมาชิก 1", type: "text" }, { key: "member_2", label: "สมาชิก 2", type: "text" }, { key: "member_3", label: "สมาชิก 3", type: "text" }, { key: "member_4", label: "สมาชิก 4", type: "text" }, { key: "notes", label: "หมายเหตุ", type: "text" }, ], }, ], pages: [ { slug: "info", title: "ข้อมูล", blocks: [ { type: "profile", config: { eyebrow: "ภาพรวมตัวละคร", title: "ชื่อตัวละคร", summary: "เพิ่มบทบาท จุดเด่น และแนวทางใช้งาน", badges: [], }, }, { type: "section", config: { title: "จุดเด่น", anchor: "highlights" }, }, { type: "rich-text", config: { content: [{ type: "paragraph", text: "เริ่มเขียนคำแนะนำที่นี่" }] }, }, ], }, { slug: "build", title: "บิลด์", blocks: [ { type: "ranking", config: { title: "อันดับอาวุธ", dataSourceId: "@source:weapons", labelField: "name", valueField: "score", detailField: "notes", higherIsBetter: true, }, }, ], }, { slug: "teams", title: "ทีม", blocks: [ { type: "team-composition", config: { title: "ทีมแนะนำ", dataSourceId: "@source:teams", teamField: "team", memberFields: ["member_1", "member_2", "member_3", "member_4"], notesField: "notes", }, }, ], }, ], }, { slug: "combo-rotation-guide", name: "คู่มือคอมโบและโรเทชัน", description: "ขั้นตอนคอมโบตามลำดับ พร้อมผู้ใช้สกิล เวลา และคำอธิบายเสริม", category: "rotation", builtIn: true, dataSources: [], pages: [ { slug: "combo", title: "คอมโบ", blocks: [ { type: "callout", config: { title: "ก่อนเริ่ม", body: "ระบุเงื่อนไขและทรัพยากรที่ต้องเตรียม", tone: "tip", }, }, { type: "rotation", config: { title: "ลำดับการเล่น", steps: [ { id: "@id:rotation-step-1", actor: "ตัวละคร A", action: "เริ่มต้นด้วยสกิล", detail: "อธิบายเหตุผลและจังหวะสลับตัว", }, ], }, }, ], }, ], }, { slug: "combined-one-page-build", name: "บิลด์รวมหน้าเดียว", description: "สรุปโปรไฟล์ ค่าสำคัญ อันดับอุปกรณ์ และทีมในหน้าเดียว", category: "one-page", builtIn: true, dataSources: [ { key: "builds", name: "ตัวเลือกบิลด์", fields: comparisonFields }, ], pages: [ { slug: "guide", title: "คู่มือ", blocks: [ { type: "profile", config: { title: "ชื่อตัวละคร", summary: "สรุปแนวทางการเล่น", badges: [] }, }, { type: "stat-cards", config: { title: "เป้าหมายค่าสถานะ", items: [ { id: "@id:stat-1", label: "ค่าสำคัญ", value: "—" }, { id: "@id:stat-2", label: "ค่ารอง", value: "—" }, ], }, }, { type: "comparison-chart", responsiveLayout: { width: "wide" }, config: { title: "เปรียบเทียบบิลด์", dataSourceId: "@source:builds", categoryField: "name", series: [{ field: "score", label: "คะแนน", color: "chart-1" }], presentation: "horizontal-bar", normalization: "raw", sort: "descending", showValues: true, showLegend: false, tableFallback: true, }, }, ], }, ], }, { slug: "multi-role-reaction-build", name: "บิลด์หลายบทบาทและปฏิกิริยา", description: "แยกแนวทางตามบทบาทหรือปฏิกิริยาด้วยแท็บที่อ่านง่าย", category: "multi-role", builtIn: true, dataSources: [], pages: [ { slug: "roles", title: "บทบาท", blocks: [ { type: "profile", config: { title: "ชื่อตัวละคร", summary: "เลือกแนวทางตามทีม", badges: [] }, }, { type: "tabs", config: { title: "แนวทางบิลด์", tabs: [ { id: "@id:role-1", label: "บทบาทหลัก", content: "อธิบายบิลด์สำหรับบทบาทหลัก" }, { id: "@id:role-2", label: "บทบาทรอง", content: "อธิบายบิลด์สำหรับบทบาทรอง" }, ], }, }, { type: "accordion", config: { title: "รายละเอียดปฏิกิริยา", items: [ { id: "@id:reaction-1", title: "ปฏิกิริยาที่ 1", content: "เพิ่มเงื่อนไขและข้อควรระวัง" }, ], }, }, ], }, ], }, { slug: "categorized-team-database", name: "ฐานข้อมูลทีมแบบหมวดหมู่", description: "ตารางทีมที่กรองตามหมวด พร้อมรายละเอียดสมาชิกและผลรวม", category: "teams", builtIn: true, dataSources: [ { key: "team-database", name: "ฐานข้อมูลทีม", fields: [ { key: "category", label: "หมวด", type: "badge" }, { key: "team", label: "ชื่อทีม", type: "text" }, { key: "members", label: "สมาชิก", type: "text" }, { key: "score", label: "คะแนน", type: "number", displayPrecision: 1 }, { key: "notes", label: "หมายเหตุ", type: "text" }, ], }, ], pages: [ { slug: "teams", title: "ฐานข้อมูลทีม", blocks: [ { type: "section", config: { title: "ค้นหาทีมที่เหมาะกับคุณ", anchor: "teams" } }, { type: "table", responsiveLayout: { width: "wide" }, config: { dataSourceId: "@source:team-database", columns: [ { field: "category", label: "หมวด", align: "start" }, { field: "team", label: "ทีม", align: "start" }, { field: "members", label: "สมาชิก", align: "start" }, { field: "score", label: "คะแนน", align: "end" }, ], }, }, ], }, ], }, { slug: "calculation-comparison-guide", name: "คู่มือเปรียบเทียบด้วยการคำนวณ", description: "ข้อมูลดิบ สูตรเลขคณิตแบบจำกัด กราฟ และตารางสำรองที่เข้าถึงได้", category: "calculation", builtIn: true, dataSources: [ { key: "comparison", name: "ข้อมูลเปรียบเทียบ", fields: comparisonFields }, ], pages: [ { slug: "comparison", title: "เปรียบเทียบ", blocks: [ { type: "callout", config: { body: "ผลลัพธ์คำนวณจากค่าที่ผู้เขียนกำหนด", tone: "info" }, }, { type: "comparison-chart", responsiveLayout: { width: "wide" }, config: { title: "ผลการเปรียบเทียบ", dataSourceId: "@source:comparison", categoryField: "name", series: [ { field: "base", label: "ค่าพื้นฐาน", color: "chart-2" }, { field: "score", label: "คะแนน", color: "chart-1" }, ], presentation: "grouped-bar", normalization: "raw", sort: "descending", showValues: true, showLegend: true, tableFallback: true, }, }, ], }, ], }, ] as const;