{
  "title": "Dự án 5: Món Quà Mơ Ước",
  "subtitle": "Học và rèn luyện kỹ năng Bài 19 môn Web",
  "description": [
    {
      "text": "Chào mừng các em học sinh lớp 4! Trong dự án 5 này, chúng ta sẽ lập trình ứng dụng 'Món Quà Mơ Ước'.",
      "bold": false
    },
    {
      "text": " Em sẽ thực hành và sử dụng các kiến thức đã học ở Bài 19 kết hợp với các kiến thức từ các bài trước để xây dựng giao diện tương tác sinh động.",
      "bold": false
    }
  ],
  "knowledge_title": "Kiến thức trọng tâm",
  "knowledge_tags": [
    "Bài học chính: Bài 19",
    "Ngôn ngữ: HTML, CSS, JavaScript",
    "Mảng dữ liệu: Array []",
    "Thêm phần tử: push()",
    "Danh sách: ul, ol, li",
    "CSS: list-style-type"
  ],
  "steps_title": "Các bước thực hiện chi tiết",
  "steps": [
    {
      "title": "Bước 1: Khởi tạo thư mục dự án",
      "body": "- Trên ổ đĩa Z, tạo thư mục dự án của em: hocsinh01/{tên của em}/bai19-5.\n- Tạo file: index.html, style.css, và tạo một thư mục con tên là assets để chứa các tệp tài nguyên hình ảnh, âm thanh."
    },
    {
      "title": "Bước 2: Xây dựng khung HTML chính",
      "body": "- Trong thẻ <head>, khai báo thẻ đường dẫn cơ sở: <base href=\"./assets/\"> và kết nối file CSS ngoài bằng đường dẫn tương đối lùi cấp: <link rel=\"stylesheet\" href=\"../style.css\">.\n- Tạo một thẻ div lớp 'container' bao bọc toàn bộ nội dung.\n- Thêm thẻ tiêu đề chính <h1> với nội dung 'MÓN QUÀ MƠ ƯỚC'.\n- Tạo một thẻ <input type=\"text\" id=\"o-nhap-moi\" placeholder=\"Tên món quà...\"> để học sinh nhập dữ liệu.\n- Tạo nút bấm <button class=\"btn-them\"> với nội dung 'THÊM' và sự kiện click chuột onclick gọi tương tác."
    },
    {
      "title": "Bước 3: Lập trình tương tác JavaScript",
      "body": "- Tự viết mã JavaScript trong thẻ <script> đặt ở cuối body (học sinh tự xây dựng, không có code mẫu):\n  + Tự khai báo một mảng rỗng để lưu danh sách các món quà mơ ước: let danhSachQua = [];\n  + Khai báo hàm thêm món quà: lấy tên món quà từ ô id='o-nhap-moi' qua .value. Dùng lệnh if kiểm tra nếu chưa nhập gì thì bật alert() nhắc nhở.\n  + Nếu tên món quà hợp lệ: Dùng phương thức .push() để đưa món quà vào mảng, rồi xóa trắng ô nhập liệu để sẵn sàng nhập tiếp.\n  + Thêm một thẻ danh sách <ol id=\"danh-sach-qua\"> trong HTML và lập trình hiển thị danh sách các món quà cùng tổng số món quà ra màn hình."
    },
    {
      "title": "Bước 4: Định dạng CSS cho đẹp mắt",
      "body": "- Mở file style.css để thiết lập màu nền cho body là '#ff7675'.\n- Định dạng lớp '.container': chiều rộng tối đa '600px', viền '3px solid #d63031' và đổ bóng đẹp mắt.\n- Thiết lập cursor: pointer cho tất cả phần tử tương tác click chuột được."
    },
    {
      "title": "Bước 5: Sáng tạo thêm",
      "body": "- Hãy bổ sung ít nhất 5 loại vật phẩm khác vào danh sách của em, định dạng CSS cho chúng nổi bật và lập trình thêm nút để xóa phần tử cuối cùng khỏi danh sách sử dụng phương thức .pop().\n- Định dạng màu sắc và hình nền mang đậm phong cách cá nhân độc đáo của riêng em để hoàn thành bài tập."
    }
  ],
  "code_samples_title": "Gợi ý Code mẫu",
  "code_samples_desc": "Đây là bài tập rèn luyện tư duy độc lập về nhà, học sinh hãy tự suy nghĩ và tự viết toàn bộ code HTML/CSS/JavaScript (không có code mẫu có sẵn).",
  "code_samples": [
    {
      "title": "HTML Gợi ý",
      "type": "html",
      "code": "<!-- Giao diện dự án Món Quà Mơ Ước -->\n<base href=\"/* base href assets */\">\n<link rel=\"stylesheet\" href=\"/* đường dẫn lùi cấp ra style.css */\">\n<div class=\"container\">\n  <h1>MÓN QUÀ MƠ ƯỚC</h1>\n  <input type=\"text\" id=\"o-nhap-moi\" placeholder=\"/* placeholder */\">\n  <button class=\"btn-them\" onclick=\"/* JS code của em */\">THÊM</button>\n</div>"
    },
    {
      "title": "CSS Gợi ý",
      "type": "css",
      "code": "/* CSS Cơ bản cho dự án */\nbody {\n  background-color: /* màu nền: #ff7675 */;\n}\n.container {\n  max-width: /* độ rộng container: 600px */;\n  border: /* viền: 3px solid #d63031 */;\n  /* bo góc, đổ bóng container */\n}\n.nut-bam, .btn, .btn-nhac, .btn-mo, .btn-dong, .btn-tinh, .btn-them, .btn-play, .btn-pause, .btn-check, .btn-kick, .btn-go {\n  /* màu nền nút bấm */\n  /* con trỏ chuột: bàn tay chỉ */\n}"
    }
  ],
  "tip": {
    "title": "💡 Mẹo nhỏ:",
    "desc": "Để thêm một món đồ vào cuối mảng, ta dùng mảng.push('tên'). Để hiển thị nó dạng danh sách, hãy kết hợp thẻ ul và li trong HTML."
  }
}