Monday, December 29, 2025

Platform Pelatihan Gemini Guru

import React, { useState, useRef, useEffect } from 'react'; import { BookOpen, Code, GraduationCap, MessageSquare, CheckCircle, ChevronRight, Play, Award, Star, Menu, X, Printer, Download, User, AlertTriangle, Send, Settings, Edit, Trash2, ListChecks } from 'lucide-react'; // Fungsi utama komponen aplikasi const App = () => { // State utama const [activeTab, setActiveTab] = useState('modules'); const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [userName, setUserName] = useState(''); const [isCertified, setIsCertified] = useState(false); // State untuk Role Management (FITUR ADMIN BARU) const [userRole, setUserRole] = useState('user'); // 'user' atau 'admin' const isAdmin = userRole === 'admin'; // --- Data Modul Pelatihan --- const initialModules = [ { id: 1, title: "Pengenalan Gemini AI", duration: "15 Menit", level: "Dasar", description: "Memahami apa itu Gemini, bagaimana cara kerjanya, dan etika penggunaan AI dalam pendidikan.", content: (

Apa itu Gemini?

Gemini adalah model AI generatif dari Google yang mampu memahami, mengolah, dan menggabungkan berbagai jenis informasi termasuk teks, kode, audio, gambar, dan video.

Perbedaan dengan Mesin Pencari

  • Google Search: Mencari informasi yang sudah ada.
  • Gemini: Membuat konten baru, merangkum, dan menganalisis data.

Etika & Halusinasi AI

AI bisa melakukan "halusinasi" (memberikan info salah dengan percaya diri). Guru harus selalu memverifikasi output AI, terutama untuk fakta sejarah atau data saintifik.

) }, { id: 2, title: "Teknik Prompting untuk Guru", duration: "20 Menit", level: "Menengah", description: "Belajar membuat instruksi (prompt) yang efektif untuk mendapatkan hasil RPP, soal, dan materi ajar terbaik.", content: (

Rumus Prompt Efektif: PREP

P - Persona

Berikan peran. Contoh: "Bertindaklah sebagai Guru Biologi senior..."

R - Request

Tugas spesifik. Contoh: "Buatkan rencana pembelajaran 45 menit tentang fotosintesis."

E - Example

Berikan contoh format. Contoh: "Gunakan format tabel dengan kolom waktu dan aktivitas."

P - Parameter

Batasan. Contoh: "Untuk siswa SMP kelas 7, gaya bahasa santai."

) } ]; const [modules, setModules] = useState(initialModules); // Data simulasi kelulusan const initialCertifications = [ { id: 101, name: "Siti Aisyah, S.Pd.", date: "2024-11-01", status: "Lulus", quizScore: "90%" }, { id: 102, name: "Bambang Wijaya, M.Sc.", date: "2024-11-05", status: "Lulus", quizScore: "83%" }, { id: 103, name: "Nurul Hidayah", date: "2024-11-10", status: "Belum Lulus", quizScore: "65%" }, ]; const [certifications, setCertifications] = useState(initialCertifications); // --- Komponen Halaman Admin (BARU) --- const AdminPage = () => { const [adminActiveTab, setAdminActiveTab] = useState('modules'); // State untuk form edit modul const [editingModule, setEditingModule] = useState(null); // null atau object modul const [newModuleTitle, setNewModuleTitle] = useState(''); const [newModuleDesc, setNewModuleDesc] = useState(''); const [newModuleDuration, setNewModuleDuration] = useState(''); const [newModuleLevel, setNewModuleLevel] = useState('Dasar'); // Reset form saat tab admin berubah useEffect(() => { setEditingModule(null); }, [adminActiveTab]); // Handle Edit Modul const handleEditModule = (mod) => { setEditingModule(mod.id); setNewModuleTitle(mod.title); setNewModuleDesc(mod.description); setNewModuleDuration(mod.duration); setNewModuleLevel(mod.level); }; // Handle Simpan Modul const handleSaveModule = () => { if (!newModuleTitle || !newModuleDesc || !newModuleDuration) { // Mengganti alert() dengan UI pesan khusus di masa depan, tapi untuk saat ini menggunakan alert sederhana window.alert("Semua kolom harus diisi!"); return; } if (editingModule === 'new') { // Tambah Modul Baru const newId = Math.max(...modules.map(m => m.id), 0) + 1; const newMod = { id: newId, title: newModuleTitle, description: newModuleDesc, duration: newModuleDuration, level: newModuleLevel, content:

Konten modul baru. Silakan edit langsung di kode sumber atau kembangkan fungsionalitas editor lebih lanjut.

}; setModules([...modules, newMod]); } else { // Edit Modul Existing setModules(modules.map(mod => mod.id === editingModule ? { ...mod, title: newModuleTitle, description: newModuleDesc, duration: newModuleDuration, level: newModuleLevel } : mod )); } // Reset form setEditingModule(null); setNewModuleTitle(''); setNewModuleDesc(''); setNewModuleDuration(''); setNewModuleLevel('Dasar'); }; // Handle Hapus Modul const handleDeleteModule = (id) => { // Menggunakan window.confirm() sebagai placeholder untuk modal kustom. if (window.confirm("Apakah Anda yakin ingin menghapus modul ini?")) { setModules(modules.filter(mod => mod.id !== id)); } }; // Komponen Daftar Modul const ModuleManagement = () => (

Daftar Modul Pelatihan ({modules.length})

{/* Form Edit/Tambah Modul */} {(editingModule !== null) && (

{editingModule === 'new' ? 'Tambah Modul Baru' : `Edit Modul ID: ${editingModule}`}

setNewModuleTitle(e.target.value)} className="p-2 border rounded-lg"/> setNewModuleDuration(e.target.value)} className="p-2 border rounded-lg"/>