import { useState } from "react";
import { Button } from "@/components/ui/button";
const questions = [
{
text: "เมื่อคุณเจอหัวข้อการลงทุนใหม่ที่กำลังเป็นกระแส คุณจะ...",
choices: [
"ตื่นเต้น! รีบหาข้อมูลเพิ่มเติมทันที",
"จดไว้ก่อน แล้วค่อยหาเวลาไปอ่านลึกๆ",
"นึกถึงประสบการณ์คล้ายๆ ที่เคยเจอมาก่อน",
"ดูว่าน่าสนใจไหม แล้วค่อยลองวางแผนก่อนตัดสินใจ",
],
},
{
text: "วิธีเรียนรู้ที่คุณชอบมากที่สุดคือ...",
choices: [
"ดูคลิปหรือเข้าร่วมเวิร์คช็อปที่สนุกๆ",
"อ่านหนังสือหรือบทความด้วยตัวเองเงียบๆ",
"ฟังเรื่องราวจากคนที่เคยผ่านมาก่อน",
"ทำตามแผนหรือขั้นตอนที่ชัดเจน พร้อมจดไว้เสมอ",
],
},
{
text: "ถ้าเพื่อนอยากลงทุนแต่ไม่รู้จะเริ่มยังไง คุณจะ...",
choices: [
"แนะนำแอปหรือช่องที่กำลังฮิตให้ดู",
"ส่งลิงก์บทความดีๆ ให้แล้วให้เพื่อนศึกษาเอง",
"เล่าให้ฟังว่าตัวเองเคยเจออะไรมาบ้าง",
"ช่วยวางแผนให้เป็นขั้นตอนแบบเข้าใจง่าย",
],
},
{
text: "คุณรู้สึกสนุกเมื่อ...",
choices: [
"ได้แชร์ไอเดียกับคนอื่นในกิจกรรม",
"ได้วางแผนเก็บเงินอย่างเป็นระบบ",
"ได้ลองใช้โปรแกรมจำลองลงทุน",
"ได้นั่งคุยแลกเปลี่ยนกับเพื่อนนักลงทุน",
],
},
{
text: "เวลาคุณตัดสินใจเรื่องเงิน คุณมักจะ...",
choices: [
"ทำทันที ถ้ารู้สึกว่ามันน่าสนใจ",
"คิดวิเคราะห์ข้อมูลก่อนอย่างละเอียด",
"พิจารณาจากประสบการณ์ที่ผ่านมา",
"วางแผนและประเมินความเสี่ยงทุกครั้ง",
],
},
{
text: "ถ้ามีโอกาสได้ลองอะไรใหม่ๆ ในการลงทุน คุณจะ...",
choices: [
"โดดเข้าไปลองเลย สนุกดี!",
"ขอเวลาศึกษาก่อน ค่อยลงมือ",
"เทียบกับสิ่งที่เคยเจอมา แล้วค่อยตัดสินใจ",
"ดูว่าสอดคล้องกับแผนระยะยาวไหมก่อนเสมอ",
],
},
];
const results = {
A: "น้องใหม่ไฟแรง",
B: "พี่ใหญ่ใจเย็น",
C: "นักสังเกตการณ์มากประสบการณ์",
D: "นักวางแผนมั่นคง",
};
export default function Quiz() {
const [answers
, setAnswers
] = useState
(Array(questions
.length
).fill
(null)); const [showResult, setShowResult] = useState(false);
const handleAnswer = (qIndex, choiceIndex) => {
const newAnswers = [...answers];
newAnswers[qIndex] = ["A", "B", "C", "D"][choiceIndex];
setAnswers(newAnswers);
};
const calculateResult = () => {
const count = { A
: 0, B
: 0, C
: 0, D
: 0 }; answers
.forEach((a
) => { if (a
) count[a
] += 1; }); const max = Object
.entries
(count).sort((a
, b
) => b
[1] - a
[1])[0][0]; };
return (
<div className="p-4 max-w-2xl mx-auto space-y-6">
<h1 className="text-2xl font-bold">แบบทดสอบคาแรกเตอร์นักลงทุน</h1>
{questions.map((q, i) => (
<div
key={i
} className
="p-4 border rounded-xl"> <p className="font-semibold">{i + 1}. {q.text}</p>
<div className="grid grid-cols-1 gap-2 mt-2">
{q.choices.map((c, j) => (
<Button
variant={answers[i] === ["A", "B", "C", "D"][j] ? "default" : "outline"}
onClick={() => handleAnswer(i, j)}
>
{c}
</Button>
))}
</div>
</div>
))}
<Button
className="w-full"
onClick={() => setShowResult(true)}
disabled={answers.includes(null)}
>
ดูผลลัพธ์
</Button>
{showResult && (
<div className="p-4 bg-green-100 rounded-xl text-center">
<p className="text-lg font-semibold">คุณคือ: <span className="text-green-700">{calculateResult()}</span></p>
</div>
)}
</div>
);
}
aW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICJyZWFjdCI7CmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gIkAvY29tcG9uZW50cy91aS9idXR0b24iOwoKY29uc3QgcXVlc3Rpb25zID0gWwogIHsKICAgIHRleHQ6ICLguYDguKHguLfguYjguK3guITguLjguJPguYDguIjguK3guKvguLHguKfguILguYnguK3guIHguLLguKPguKXguIfguJfguLjguJnguYPguKvguKHguYjguJfguLXguYjguIHguLPguKXguLHguIfguYDguJvguYfguJnguIHguKPguLDguYHguKog4LiE4Li44LiT4LiI4LiwLi4uIiwKICAgIGNob2ljZXM6IFsKICAgICAgIuC4leC4t+C5iOC4meC5gOC4leC5ieC4mSEg4Lij4Li14Lia4Lir4Liy4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04Lih4LiX4Lix4LiZ4LiX4Li1IiwKICAgICAgIuC4iOC4lOC5hOC4p+C5ieC4geC5iOC4reC4mSDguYHguKXguYnguKfguITguYjguK3guKLguKvguLLguYDguKfguKXguLLguYTguJvguK3guYjguLLguJnguKXguLbguIHguYYiLAogICAgICAi4LiZ4Li24LiB4LiW4Li24LiH4Lib4Lij4Liw4Liq4Lia4LiB4Liy4Lij4LiT4LmM4LiE4Lil4LmJ4Liy4Lii4LmGIOC4l+C4teC5iOC5gOC4hOC4ouC5gOC4iOC4reC4oeC4suC4geC5iOC4reC4mSIsCiAgICAgICLguJTguLnguKfguYjguLLguJnguYjguLLguKrguJnguYPguIjguYTguKvguKEg4LmB4Lil4LmJ4Lin4LiE4LmI4Lit4Lii4Lil4Lit4LiH4Lin4Liy4LiH4LmB4Lic4LiZ4LiB4LmI4Lit4LiZ4LiV4Lix4LiU4Liq4Li04LiZ4LmD4LiIIiwKICAgIF0sCiAgfSwKICB7CiAgICB0ZXh0OiAi4Lin4Li04LiY4Li14LmA4Lij4Li14Lii4LiZ4Lij4Li54LmJ4LiX4Li14LmI4LiE4Li44LiT4LiK4Lit4Lia4Lih4Liy4LiB4LiX4Li14LmI4Liq4Li44LiU4LiE4Li34LitLi4uIiwKICAgIGNob2ljZXM6IFsKICAgICAgIuC4lOC4ueC4hOC4peC4tOC4m+C4q+C4o+C4t+C4reC5gOC4guC5ieC4suC4o+C5iOC4p+C4oeC5gOC4p+C4tOC4o+C5jOC4hOC4iuC5h+C4reC4m+C4l+C4teC5iOC4quC4meC4uOC4geC5hiIsCiAgICAgICLguK3guYjguLLguJnguKvguJnguLHguIfguKrguLfguK3guKvguKPguLfguK3guJrguJfguITguKfguLLguKHguJTguYnguKfguKLguJXguLHguKfguYDguK3guIfguYDguIfguLXguKLguJrguYYiLAogICAgICAi4Lif4Lix4LiH4LmA4Lij4Li34LmI4Lit4LiH4Lij4Liy4Lin4LiI4Liy4LiB4LiE4LiZ4LiX4Li14LmI4LmA4LiE4Lii4Lic4LmI4Liy4LiZ4Lih4Liy4LiB4LmI4Lit4LiZIiwKICAgICAgIuC4l+C4s+C4leC4suC4oeC5geC4nOC4meC4q+C4o+C4t+C4reC4guC4seC5ieC4meC4leC4reC4meC4l+C4teC5iOC4iuC4seC4lOC5gOC4iOC4mSDguJ7guKPguYnguK3guKHguIjguJTguYTguKfguYnguYDguKrguKHguK0iLAogICAgXSwKICB9LAogIHsKICAgIHRleHQ6ICLguJbguYnguLLguYDguJ7guLfguYjguK3guJnguK3guKLguLLguIHguKXguIfguJfguLjguJnguYHguJXguYjguYTguKHguYjguKPguLnguYnguIjguLDguYDguKPguLTguYjguKHguKLguLHguIfguYTguIcg4LiE4Li44LiT4LiI4LiwLi4uIiwKICAgIGNob2ljZXM6IFsKICAgICAgIuC5geC4meC4sOC4meC4s+C5geC4reC4m+C4q+C4o+C4t+C4reC4iuC5iOC4reC4h+C4l+C4teC5iOC4geC4s+C4peC4seC4h+C4ruC4tOC4leC5g+C4q+C5ieC4lOC4uSIsCiAgICAgICLguKrguYjguIfguKXguLTguIfguIHguYzguJrguJfguITguKfguLLguKHguJTguLXguYYg4LmD4Lir4LmJ4LmB4Lil4LmJ4Lin4LmD4Lir4LmJ4LmA4Lie4Li34LmI4Lit4LiZ4Lio4Li24LiB4Lip4Liy4LmA4Lit4LiHIiwKICAgICAgIuC5gOC4peC5iOC4suC5g+C4q+C5ieC4n+C4seC4h+C4p+C5iOC4suC4leC4seC4p+C5gOC4reC4h+C5gOC4hOC4ouC5gOC4iOC4reC4reC4sOC5hOC4o+C4oeC4suC4muC5ieC4suC4hyIsCiAgICAgICLguIrguYjguKfguKLguKfguLLguIfguYHguJzguJnguYPguKvguYnguYDguJvguYfguJnguILguLHguYnguJnguJXguK3guJnguYHguJrguJrguYDguILguYnguLLguYPguIjguIfguYjguLLguKIiLAogICAgXSwKICB9LAogIHsKICAgIHRleHQ6ICLguITguLjguJPguKPguLnguYnguKrguLbguIHguKrguJnguLjguIHguYDguKHguLfguYjguK0uLi4iLAogICAgY2hvaWNlczogWwogICAgICAi4LmE4LiU4LmJ4LmB4LiK4Lij4LmM4LmE4Lit4LmA4LiU4Li14Lii4LiB4Lix4Lia4LiE4LiZ4Lit4Li34LmI4LiZ4LmD4LiZ4LiB4Li04LiI4LiB4Lij4Lij4LihIiwKICAgICAgIuC5hOC4lOC5ieC4p+C4suC4h+C5geC4nOC4meC5gOC4geC5h+C4muC5gOC4h+C4tOC4meC4reC4ouC5iOC4suC4h+C5gOC4m+C5h+C4meC4o+C4sOC4muC4miIsCiAgICAgICLguYTguJTguYnguKXguK3guIfguYPguIrguYnguYLguJvguKPguYHguIHguKPguKHguIjguLPguKXguK3guIfguKXguIfguJfguLjguJkiLAogICAgICAi4LmE4LiU4LmJ4LiZ4Lix4LmI4LiH4LiE4Li44Lii4LmB4Lil4LiB4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LiB4Lix4Lia4LmA4Lie4Li34LmI4Lit4LiZ4LiZ4Lix4LiB4Lil4LiH4LiX4Li44LiZIiwKICAgIF0sCiAgfSwKICB7CiAgICB0ZXh0OiAi4LmA4Lin4Lil4Liy4LiE4Li44LiT4LiV4Lix4LiU4Liq4Li04LiZ4LmD4LiI4LmA4Lij4Li34LmI4Lit4LiH4LmA4LiH4Li04LiZIOC4hOC4uOC4k+C4oeC4seC4geC4iOC4sC4uLiIsCiAgICBjaG9pY2VzOiBbCiAgICAgICLguJfguLPguJfguLHguJnguJfguLUg4LiW4LmJ4Liy4Lij4Li54LmJ4Liq4Li24LiB4Lin4LmI4Liy4Lih4Lix4LiZ4LiZ4LmI4Liy4Liq4LiZ4LmD4LiIIiwKICAgICAgIuC4hOC4tOC4lOC4p+C4tOC5gOC4hOC4o+C4suC4sOC4q+C5jOC4guC5ieC4reC4oeC4ueC4peC4geC5iOC4reC4meC4reC4ouC5iOC4suC4h+C4peC4sOC5gOC4reC4teC4ouC4lCIsCiAgICAgICLguJ7guLTguIjguLLguKPguJPguLLguIjguLLguIHguJvguKPguLDguKrguJrguIHguLLguKPguJPguYzguJfguLXguYjguJzguYjguLLguJnguKHguLIiLAogICAgICAi4Lin4Liy4LiH4LmB4Lic4LiZ4LmB4Lil4Liw4Lib4Lij4Liw4LmA4Lih4Li04LiZ4LiE4Lin4Liy4Lih4LmA4Liq4Li14LmI4Lii4LiH4LiX4Li44LiB4LiE4Lij4Lix4LmJ4LiHIiwKICAgIF0sCiAgfSwKICB7CiAgICB0ZXh0OiAi4LiW4LmJ4Liy4Lih4Li14LmC4Lit4LiB4Liy4Liq4LmE4LiU4LmJ4Lil4Lit4LiH4Lit4Liw4LmE4Lij4LmD4Lir4Lih4LmI4LmGIOC5g+C4meC4geC4suC4o+C4peC4h+C4l+C4uOC4mSDguITguLjguJPguIjguLAuLi4iLAogICAgY2hvaWNlczogWwogICAgICAi4LmC4LiU4LiU4LmA4LiC4LmJ4Liy4LmE4Lib4Lil4Lit4LiH4LmA4Lil4LiiIOC4quC4meC4uOC4geC4lOC4tSEiLAogICAgICAi4LiC4Lit4LmA4Lin4Lil4Liy4Lio4Li24LiB4Lip4Liy4LiB4LmI4Lit4LiZIOC4hOC5iOC4reC4ouC4peC4h+C4oeC4t+C4rSIsCiAgICAgICLguYDguJfguLXguKLguJrguIHguLHguJrguKrguLTguYjguIfguJfguLXguYjguYDguITguKLguYDguIjguK3guKHguLIg4LmB4Lil4LmJ4Lin4LiE4LmI4Lit4Lii4LiV4Lix4LiU4Liq4Li04LiZ4LmD4LiIIiwKICAgICAgIuC4lOC4ueC4p+C5iOC4suC4quC4reC4lOC4hOC4peC5ieC4reC4h+C4geC4seC4muC5geC4nOC4meC4o+C4sOC4ouC4sOC4ouC4suC4p+C5hOC4q+C4oeC4geC5iOC4reC4meC5gOC4quC4oeC4rSIsCiAgICBdLAogIH0sCl07Cgpjb25zdCByZXN1bHRzID0gewogIEE6ICLguJnguYnguK3guIfguYPguKvguKHguYjguYTguJ/guYHguKPguIciLAogIEI6ICLguJ7guLXguYjguYPguKvguI3guYjguYPguIjguYDguKLguYfguJkiLAogIEM6ICLguJnguLHguIHguKrguLHguIfguYDguIHguJXguIHguLLguKPguJPguYzguKHguLLguIHguJvguKPguLDguKrguJrguIHguLLguKPguJPguYwiLAogIEQ6ICLguJnguLHguIHguKfguLLguIfguYHguJzguJnguKHguLHguYjguJnguITguIciLAp9OwoKZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUXVpeigpIHsKICBjb25zdCBbYW5zd2Vycywgc2V0QW5zd2Vyc10gPSB1c2VTdGF0ZShBcnJheShxdWVzdGlvbnMubGVuZ3RoKS5maWxsKG51bGwpKTsKICBjb25zdCBbc2hvd1Jlc3VsdCwgc2V0U2hvd1Jlc3VsdF0gPSB1c2VTdGF0ZShmYWxzZSk7CgogIGNvbnN0IGhhbmRsZUFuc3dlciA9IChxSW5kZXgsIGNob2ljZUluZGV4KSA9PiB7CiAgICBjb25zdCBuZXdBbnN3ZXJzID0gWy4uLmFuc3dlcnNdOwogICAgbmV3QW5zd2Vyc1txSW5kZXhdID0gWyJBIiwgIkIiLCAiQyIsICJEIl1bY2hvaWNlSW5kZXhdOwogICAgc2V0QW5zd2VycyhuZXdBbnN3ZXJzKTsKICB9OwoKICBjb25zdCBjYWxjdWxhdGVSZXN1bHQgPSAoKSA9PiB7CiAgICBjb25zdCBjb3VudCA9IHsgQTogMCwgQjogMCwgQzogMCwgRDogMCB9OwogICAgYW5zd2Vycy5mb3JFYWNoKChhKSA9PiB7IGlmIChhKSBjb3VudFthXSArPSAxOyB9KTsKICAgIGNvbnN0IG1heCA9IE9iamVjdC5lbnRyaWVzKGNvdW50KS5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSlbMF1bMF07CiAgICByZXR1cm4gcmVzdWx0c1ttYXhdOwogIH07CgogIHJldHVybiAoCiAgICA8ZGl2IGNsYXNzTmFtZT0icC00IG1heC13LTJ4bCBteC1hdXRvIHNwYWNlLXktNiI+CiAgICAgIDxoMSBjbGFzc05hbWU9InRleHQtMnhsIGZvbnQtYm9sZCI+4LmB4Lia4Lia4LiX4LiU4Liq4Lit4Lia4LiE4Liy4LmB4Lij4LiB4LmA4LiV4Lit4Lij4LmM4LiZ4Lix4LiB4Lil4LiH4LiX4Li44LiZPC9oMT4KICAgICAge3F1ZXN0aW9ucy5tYXAoKHEsIGkpID0+ICgKICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPSJwLTQgYm9yZGVyIHJvdW5kZWQteGwiPgogICAgICAgICAgPHAgY2xhc3NOYW1lPSJmb250LXNlbWlib2xkIj57aSArIDF9LiB7cS50ZXh0fTwvcD4KICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJncmlkIGdyaWQtY29scy0xIGdhcC0yIG10LTIiPgogICAgICAgICAgICB7cS5jaG9pY2VzLm1hcCgoYywgaikgPT4gKAogICAgICAgICAgICAgIDxCdXR0b24KICAgICAgICAgICAgICAgIGtleT17an0KICAgICAgICAgICAgICAgIHZhcmlhbnQ9e2Fuc3dlcnNbaV0gPT09IFsiQSIsICJCIiwgIkMiLCAiRCJdW2pdID8gImRlZmF1bHQiIDogIm91dGxpbmUifQogICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlQW5zd2VyKGksIGopfQogICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIHtjfQogICAgICAgICAgICAgIDwvQnV0dG9uPgogICAgICAgICAgICApKX0KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICApKX0KCiAgICAgIDxCdXR0b24KICAgICAgICBjbGFzc05hbWU9InctZnVsbCIKICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UmVzdWx0KHRydWUpfQogICAgICAgIGRpc2FibGVkPXthbnN3ZXJzLmluY2x1ZGVzKG51bGwpfQogICAgICA+CiAgICAgICAg4LiU4Li54Lic4Lil4Lil4Lix4Lie4LiY4LmMCiAgICAgIDwvQnV0dG9uPgoKICAgICAge3Nob3dSZXN1bHQgJiYgKAogICAgICAgIDxkaXYgY2xhc3NOYW1lPSJwLTQgYmctZ3JlZW4tMTAwIHJvdW5kZWQteGwgdGV4dC1jZW50ZXIiPgogICAgICAgICAgPHAgY2xhc3NOYW1lPSJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQiPuC4hOC4uOC4k+C4hOC4t+C4rTogPHNwYW4gY2xhc3NOYW1lPSJ0ZXh0LWdyZWVuLTcwMCI+e2NhbGN1bGF0ZVJlc3VsdCgpfTwvc3Bhbj48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICl9CiAgICA8L2Rpdj4KICApOwp9
import { useState } from "react";
import { Button } from "@/components/ui/button";
const questions = [
{
text: "เมื่อคุณเจอหัวข้อการลงทุนใหม่ที่กำลังเป็นกระแส คุณจะ...",
choices: [
"ตื่นเต้น! รีบหาข้อมูลเพิ่มเติมทันที",
"จดไว้ก่อน แล้วค่อยหาเวลาไปอ่านลึกๆ",
"นึกถึงประสบการณ์คล้ายๆ ที่เคยเจอมาก่อน",
"ดูว่าน่าสนใจไหม แล้วค่อยลองวางแผนก่อนตัดสินใจ",
],
},
{
text: "วิธีเรียนรู้ที่คุณชอบมากที่สุดคือ...",
choices: [
"ดูคลิปหรือเข้าร่วมเวิร์คช็อปที่สนุกๆ",
"อ่านหนังสือหรือบทความด้วยตัวเองเงียบๆ",
"ฟังเรื่องราวจากคนที่เคยผ่านมาก่อน",
"ทำตามแผนหรือขั้นตอนที่ชัดเจน พร้อมจดไว้เสมอ",
],
},
{
text: "ถ้าเพื่อนอยากลงทุนแต่ไม่รู้จะเริ่มยังไง คุณจะ...",
choices: [
"แนะนำแอปหรือช่องที่กำลังฮิตให้ดู",
"ส่งลิงก์บทความดีๆ ให้แล้วให้เพื่อนศึกษาเอง",
"เล่าให้ฟังว่าตัวเองเคยเจออะไรมาบ้าง",
"ช่วยวางแผนให้เป็นขั้นตอนแบบเข้าใจง่าย",
],
},
{
text: "คุณรู้สึกสนุกเมื่อ...",
choices: [
"ได้แชร์ไอเดียกับคนอื่นในกิจกรรม",
"ได้วางแผนเก็บเงินอย่างเป็นระบบ",
"ได้ลองใช้โปรแกรมจำลองลงทุน",
"ได้นั่งคุยแลกเปลี่ยนกับเพื่อนนักลงทุน",
],
},
{
text: "เวลาคุณตัดสินใจเรื่องเงิน คุณมักจะ...",
choices: [
"ทำทันที ถ้ารู้สึกว่ามันน่าสนใจ",
"คิดวิเคราะห์ข้อมูลก่อนอย่างละเอียด",
"พิจารณาจากประสบการณ์ที่ผ่านมา",
"วางแผนและประเมินความเสี่ยงทุกครั้ง",
],
},
{
text: "ถ้ามีโอกาสได้ลองอะไรใหม่ๆ ในการลงทุน คุณจะ...",
choices: [
"โดดเข้าไปลองเลย สนุกดี!",
"ขอเวลาศึกษาก่อน ค่อยลงมือ",
"เทียบกับสิ่งที่เคยเจอมา แล้วค่อยตัดสินใจ",
"ดูว่าสอดคล้องกับแผนระยะยาวไหมก่อนเสมอ",
],
},
];
const results = {
A: "น้องใหม่ไฟแรง",
B: "พี่ใหญ่ใจเย็น",
C: "นักสังเกตการณ์มากประสบการณ์",
D: "นักวางแผนมั่นคง",
};
export default function Quiz() {
const [answers, setAnswers] = useState(Array(questions.length).fill(null));
const [showResult, setShowResult] = useState(false);
const handleAnswer = (qIndex, choiceIndex) => {
const newAnswers = [...answers];
newAnswers[qIndex] = ["A", "B", "C", "D"][choiceIndex];
setAnswers(newAnswers);
};
const calculateResult = () => {
const count = { A: 0, B: 0, C: 0, D: 0 };
answers.forEach((a) => { if (a) count[a] += 1; });
const max = Object.entries(count).sort((a, b) => b[1] - a[1])[0][0];
return results[max];
};
return (
<div className="p-4 max-w-2xl mx-auto space-y-6">
<h1 className="text-2xl font-bold">แบบทดสอบคาแรกเตอร์นักลงทุน</h1>
{questions.map((q, i) => (
<div key={i} className="p-4 border rounded-xl">
<p className="font-semibold">{i + 1}. {q.text}</p>
<div className="grid grid-cols-1 gap-2 mt-2">
{q.choices.map((c, j) => (
<Button
key={j}
variant={answers[i] === ["A", "B", "C", "D"][j] ? "default" : "outline"}
onClick={() => handleAnswer(i, j)}
>
{c}
</Button>
))}
</div>
</div>
))}
<Button
className="w-full"
onClick={() => setShowResult(true)}
disabled={answers.includes(null)}
>
ดูผลลัพธ์
</Button>
{showResult && (
<div className="p-4 bg-green-100 rounded-xl text-center">
<p className="text-lg font-semibold">คุณคือ: <span className="text-green-700">{calculateResult()}</span></p>
</div>
)}
</div>
);
}