diff --git a/prisma/data/pendidikan/info-sekolah/jenjang-pendidikan.json b/prisma/data/pendidikan/info-sekolah/jenjang-pendidikan.json new file mode 100644 index 00000000..a2d63947 --- /dev/null +++ b/prisma/data/pendidikan/info-sekolah/jenjang-pendidikan.json @@ -0,0 +1,9 @@ +[ + { "id": "cmghqwjs4000404l8c5uvc300", "nama": "PAUD" }, + { "id": "cmghqwjs4000404l8c5uvc301", "nama": "TK" }, + { "id": "cmghqwjs4000404l8c5uvc302", "nama": "SD" }, + { "id": "cmghqwjs4000404l8c5uvc303", "nama": "SMP" }, + { "id": "cmghqwjs4000404l8c5uvc304", "nama": "SMA" }, + { "id": "cmghqwjs4000404l8c5uvc305", "nama": "SMK" } + ] + \ No newline at end of file diff --git a/prisma/seed.ts b/prisma/seed.ts index f90b09ae..52de4324 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -56,6 +56,7 @@ import tujuanProgram from "./data/pendidikan/program-pendidikan-anak/tujuan-prog import roles from "./data/user/roles.json"; import users from "./data/user/users.json"; import fileStorage from "./data/file-storage.json"; +import jenjangPendidikan from "./data/pendidikan/info-sekolah/jenjang-pendidikan.json"; import seedAssets from "./seed_assets"; import { safeSeedUnique } from "./safeseedUnique"; @@ -1164,6 +1165,22 @@ import { safeSeedUnique } from "./safeseedUnique"; "✅ fasilitas bimbingan belajar desa seeded (editable later via UI)" ); + for (const j of jenjangPendidikan) { + await prisma.jenjangPendidikan.upsert({ + where: { + id: j.id || undefined, + }, + update: { + nama: j.nama, + }, + create: { + nama: j.nama, + }, + }); + } + + console.log("✅ Jenjang Pendidikan seeded successfully"); + // seed assets await seedAssets(); diff --git a/src/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa.ts b/src/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa.ts index d8866b37..7337d64c 100644 --- a/src/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa.ts +++ b/src/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa.ts @@ -332,7 +332,7 @@ const keunggulanProgram = proxy({ ].post(keunggulanProgram.create.form); if (res.status === 200) { keunggulanProgram.findMany.load(); - return toast.success("Data Berhasil Dibuat, Silahkan Menunggu Konfirmasi dari Admin di WhatsApp"); + return toast.success("Data Berhasil Dibuat"); } console.log(res); return toast.error("failed create"); diff --git a/src/app/admin/(dashboard)/pendidikan/beasiswa-desa/_lib/layoutTabs.tsx b/src/app/admin/(dashboard)/pendidikan/beasiswa-desa/_lib/layoutTabs.tsx index 553daf17..6c0b4be0 100644 --- a/src/app/admin/(dashboard)/pendidikan/beasiswa-desa/_lib/layoutTabs.tsx +++ b/src/app/admin/(dashboard)/pendidikan/beasiswa-desa/_lib/layoutTabs.tsx @@ -1,7 +1,7 @@ /* eslint-disable react-hooks/exhaustive-deps */ 'use client' import colors from '@/con/colors'; -import { Stack, Tabs, TabsList, TabsPanel, TabsTab, Title, Tooltip } from '@mantine/core'; +import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title, Tooltip } from '@mantine/core'; import { usePathname, useRouter } from 'next/navigation'; import React, { useEffect, useState } from 'react'; import { IconSchool, IconStar } from '@tabler/icons-react'; @@ -58,36 +58,38 @@ function LayoutTabs({ children }: { children: React.ReactNode }) { radius="lg" keepMounted={false} > - - {tabs.map((tab, i) => ( - - + + {tabs.map((tab, i) => ( + - {tab.label} - - - ))} - + + {tab.label} + + + ))} + + {tabs.map((tab, i) => ( - Nama Keunggulan Program - Deskripsi - Edit - Delete + Nama Keunggulan Program + Deskripsi + Edit + Delete {filteredData.length > 0 ? ( filteredData.map((item) => ( - + {item.judul} - + - + - - Beasiswa Desa + Beasiswa Desa @@ -101,14 +112,29 @@ function Page() { Keunggulan Program - {dataProgram.map((v, k) => ( + {data.map((v, k) => ( {v.judul} - {v.deskripsi} + ))} +
+ { + load(newPage, 10); + window.scrollTo({ top: 0, behavior: 'smooth' }); + }} + total={totalPages} + mt="md" + mb="md" + color="blue" + radius="md" + /> +
+ Timeline Pendaftaran @@ -142,66 +168,66 @@ function Page() { > - { beasiswaDesa.create.form.namaLengkap = val.target.value }} /> - { beasiswaDesa.create.form.nik = val.target.value }} /> - { beasiswaDesa.create.form.tempatLahir = val.target.value }} /> - { beasiswaDesa.create.form.tanggalLahir = val.target.value }} /> - { if (val) beasiswaDesa.create.form.agama = val }} /> - { beasiswaDesa.create.form.alamatKTP = val.target.value }} /> - { beasiswaDesa.create.form.alamatDomisili = val.target.value }} /> - { beasiswaDesa.create.form.noHp = val.target.value }} /> - { beasiswaDesa.create.form.email = val.target.value }} /> - { if (val) beasiswaDesa.create.form.ukuranBaju = val }} /> + { beasiswaDesa.create.form.namaLengkap = val.target.value }} /> + { beasiswaDesa.create.form.nik = val.target.value }} /> + { beasiswaDesa.create.form.tempatLahir = val.target.value }} /> + { beasiswaDesa.create.form.tanggalLahir = val.target.value }} /> + { if (val) beasiswaDesa.create.form.agama = val }} /> + { beasiswaDesa.create.form.alamatKTP = val.target.value }} /> + { beasiswaDesa.create.form.alamatDomisili = val.target.value }} /> + { beasiswaDesa.create.form.noHp = val.target.value }} /> + { beasiswaDesa.create.form.email = val.target.value }} /> + { if (val) beasiswaDesa.create.form.ukuranBaju = val }} /> diff --git a/src/app/darmasaba/(pages)/pendidikan/beasiswa-desa/pelajari-lebih-lanjut/page.tsx b/src/app/darmasaba/(pages)/pendidikan/beasiswa-desa/pelajari-lebih-lanjut/page.tsx new file mode 100644 index 00000000..0f45651d --- /dev/null +++ b/src/app/darmasaba/(pages)/pendidikan/beasiswa-desa/pelajari-lebih-lanjut/page.tsx @@ -0,0 +1,278 @@ +'use client'; + +import { + Box, + Button, + Container, + Group, + Modal, + Paper, + Select, + SimpleGrid, + Stack, + Text, + TextInput, + Timeline, + Title +} from '@mantine/core'; +import { IconArrowLeft } from '@tabler/icons-react'; +import { useRouter } from 'next/navigation'; +import { useDisclosure } from '@mantine/hooks'; +import { useProxy } from 'valtio/utils'; +import beasiswaDesaState from '@/app/admin/(dashboard)/_state/pendidikan/beasiswa-desa'; +import colors from '@/con/colors'; + + +export default function BeasiswaPage() { + const router = useRouter(); + const beasiswaDesa = useProxy(beasiswaDesaState.beasiswaPendaftar) + const [opened, { open, close }] = useDisclosure(false); + const resetForm = () => { + beasiswaDesa.create.form = { + namaLengkap: "", + nik: "", + tempatLahir: "", + tanggalLahir: "", + jenisKelamin: "", + kewarganegaraan: "", + agama: "", + alamatKTP: "", + alamatDomisili: "", + noHp: "", + email: "", + statusPernikahan: "", + ukuranBaju: "", + }; + }; + + const handleSubmit = async () => { + await beasiswaDesa.create.create(); + resetForm(); + close(); + }; + + return ( + + {/* Tombol Kembali */} + + + + + {/* Hero Section */} + + + + Program Beasiswa Pendidikan Desa Darmasaba + + + Program ini bertujuan untuk mendukung pendidikan generasi muda di Desa Darmasaba + agar dapat melanjutkan studi ke jenjang lebih tinggi dengan dukungan finansial dan pendampingan. + + + + + {/* Tentang Program */} + + + Tentang Program + + + Program Beasiswa Desa Darmasaba adalah inisiatif pemerintah desa untuk meningkatkan akses + pendidikan bagi siswa berprestasi dan kurang mampu. Melalui program ini, desa memberikan bantuan + biaya sekolah, bimbingan akademik, serta pelatihan soft skill bagi peserta terpilih. + + + + {/* Syarat dan Ketentuan */} + + + Syarat Pendaftaran + + + + + Domisili Desa Darmasaba + + Peserta harus merupakan warga desa yang berdomisili minimal 2 tahun. + + + + + Nilai Akademik + + Rata-rata nilai raport minimal 80 atau setara. + + + + + Surat Rekomendasi + + Diperlukan surat rekomendasi dari sekolah atau guru wali kelas. + + + + + + {/* Proses Seleksi */} + + + Proses Seleksi + + + + + + Calon peserta mengisi formulir pendaftaran dan mengunggah dokumen pendukung. + + + + + + Panitia memverifikasi kelengkapan dan validitas berkas. + + + + + + Peserta yang lolos administrasi akan diundang untuk wawancara langsung dengan tim seleksi. + + + + + + Daftar penerima beasiswa diumumkan melalui website resmi Desa Darmasaba. + + + + + + {/* Testimoni */} + + + Cerita Sukses Penerima Beasiswa + + + + + + “Program ini sangat membantu saya melanjutkan kuliah di Universitas Udayana. Terima kasih Desa Darmasaba!” + + + – Ni Kadek Ayu S., Penerima Beasiswa 2024 + + + + + + “Selain bantuan dana, kami juga mendapatkan pelatihan komputer dan bahasa Inggris.” + + + – I Made Gede A., Penerima Beasiswa 2023 + + + + + + {/* CTA Akhir */} + + Siap Bergabung dengan Program Ini? + + Segera daftar dan wujudkan mimpimu bersama Desa Darmasaba. + + + + + + Formulir Beasiswa + + } + > + + + { beasiswaDesa.create.form.namaLengkap = val.target.value }} /> + { beasiswaDesa.create.form.nik = val.target.value }} /> + { beasiswaDesa.create.form.tempatLahir = val.target.value }} /> + { beasiswaDesa.create.form.tanggalLahir = val.target.value }} /> + { if (val) beasiswaDesa.create.form.agama = val }} /> + { beasiswaDesa.create.form.alamatKTP = val.target.value }} /> + { beasiswaDesa.create.form.alamatDomisili = val.target.value }} /> + { beasiswaDesa.create.form.noHp = val.target.value }} /> + { beasiswaDesa.create.form.email = val.target.value }} /> + { if (val) beasiswaDesa.create.form.ukuranBaju = val }} /> + + + + + + + + + ); +} diff --git a/src/app/darmasaba/(pages)/pendidikan/bimbingan-belajar-desa/page.tsx b/src/app/darmasaba/(pages)/pendidikan/bimbingan-belajar-desa/page.tsx index 3e79b11f..fd567fba 100644 --- a/src/app/darmasaba/(pages)/pendidikan/bimbingan-belajar-desa/page.tsx +++ b/src/app/darmasaba/(pages)/pendidikan/bimbingan-belajar-desa/page.tsx @@ -51,7 +51,7 @@ function Page() { - Tujuan Program + {stateTujuanProgram.findById.data?.judul} @@ -66,7 +66,7 @@ function Page() { - Lokasi & Jadwal + {stateLokasiDanJadwal.findById.data?.judul} @@ -81,7 +81,7 @@ function Page() { - Fasilitas + {stateFasilitas.findById.data?.judul} diff --git a/src/app/darmasaba/(pages)/pendidikan/pendidikan-non-formal/page.tsx b/src/app/darmasaba/(pages)/pendidikan/pendidikan-non-formal/page.tsx index 75bb297c..0d08b1cf 100644 --- a/src/app/darmasaba/(pages)/pendidikan/pendidikan-non-formal/page.tsx +++ b/src/app/darmasaba/(pages)/pendidikan/pendidikan-non-formal/page.tsx @@ -62,7 +62,7 @@ function Page() { <IconTarget size={28} style={{ marginRight: 8 }} /> - Tujuan Program + {stateTujuanPendidikanNonFormal.findById.data?.judul} @@ -79,7 +79,7 @@ function Page() { <IconMapPin size={28} style={{ marginRight: 8 }} /> - Tempat Kegiatan + {stateTempatKegiatan.findById.data?.judul} @@ -98,7 +98,7 @@ function Page() { <IconBook2 size={28} style={{ marginRight: 8 }} /> - Jenis Program yang Diselenggarakan + {stateJenisProgram.findById.data?.judul} diff --git a/src/app/darmasaba/(pages)/pendidikan/program-pendidikan-anak/page.tsx b/src/app/darmasaba/(pages)/pendidikan/program-pendidikan-anak/page.tsx index d5ebb162..cb6b4f90 100644 --- a/src/app/darmasaba/(pages)/pendidikan/program-pendidikan-anak/page.tsx +++ b/src/app/darmasaba/(pages)/pendidikan/program-pendidikan-anak/page.tsx @@ -62,7 +62,7 @@ function Page() { - Tujuan Program + {stateTujuan.findById.data?.judul} @@ -83,7 +83,7 @@ function Page() { - Program Unggulan + {stateUnggulan.findById.data?.judul}