From 8e76a83d1474e1140f8f11e371f8ad1c75168cfb Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 5 Aug 2025 14:59:15 +0800 Subject: [PATCH] Sinkronisasi ADMIN & USER Menu Landing Page, Submenu Layanan --- .../layanan/pelayananSuratKeterangan.json | 57 ++++ .../layanan/pelayananSuratKeternagan.json | 0 .../layanan/pelayananTelunjukSaktiDesa.json | 20 ++ prisma/seed.ts | 18 ++ .../pelayanan_surat_keterangan/page.tsx | 2 +- .../[id]/edit/page.tsx | 18 +- .../[id]/page.tsx | 17 +- .../create/page.tsx | 18 +- .../pelayanan_telunjuk_sakti_desa/page.tsx | 70 ++-- .../page.tsx | 42 --- .../surat-keterangan-belum-kawin/page.tsx | 42 --- .../surat-keterangan-domisili/page.tsx | 42 --- .../surat-keterangan-kelahiran/page.tsx | 43 --- .../surat-keterangan-kelakuan-baik/page.tsx | 41 --- .../surat-keterangan-kematian/page.tsx | 43 --- .../surat-keterangan-penghasilan/page.tsx | 42 --- .../surat-keterangan-tempat-usaha/page.tsx | 43 --- .../surat-keterangan-tidak-mampu/page.tsx | 44 --- .../(detail)/surat-keterangan-usaha/page.tsx | 42 --- .../surat-keterangan-yatim-piatu/page.tsx | 41 --- .../(pages)/desa/layanan/[id]/page.tsx | 106 +++++++ .../(pages)/desa/layanan/[sub]/page.tsx | 10 - .../_com/pelayananPendudukNonPermanent.tsx | 65 ++++ .../_com/pelayananPerizinanBerusaha.tsx | 106 +++++++ .../layanan/_com/pelayananSuratKeterangan.tsx | 97 ++++++ .../_com/pelayananTelunjukSaktiDesa.tsx | 67 ++++ .../darmasaba/(pages)/desa/layanan/page.tsx | 227 +------------ .../_com/main-page/layanan/index.tsx | 299 ++++++++---------- 28 files changed, 749 insertions(+), 913 deletions(-) create mode 100644 prisma/data/desa/layanan/pelayananSuratKeterangan.json delete mode 100644 prisma/data/desa/layanan/pelayananSuratKeternagan.json delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-beda-biodata-diri/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-belum-kawin/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-domisili/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelahiran/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelakuan-baik/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kematian/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-penghasilan/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tempat-usaha/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tidak-mampu/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-usaha/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-yatim-piatu/page.tsx create mode 100644 src/app/darmasaba/(pages)/desa/layanan/[id]/page.tsx delete mode 100644 src/app/darmasaba/(pages)/desa/layanan/[sub]/page.tsx create mode 100644 src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPendudukNonPermanent.tsx create mode 100644 src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPerizinanBerusaha.tsx create mode 100644 src/app/darmasaba/(pages)/desa/layanan/_com/pelayananSuratKeterangan.tsx create mode 100644 src/app/darmasaba/(pages)/desa/layanan/_com/pelayananTelunjukSaktiDesa.tsx diff --git a/prisma/data/desa/layanan/pelayananSuratKeterangan.json b/prisma/data/desa/layanan/pelayananSuratKeterangan.json new file mode 100644 index 00000000..9f13159c --- /dev/null +++ b/prisma/data/desa/layanan/pelayananSuratKeterangan.json @@ -0,0 +1,57 @@ +[ + { + "id" : "cmdxyb9zi0010vniiaeyi55ui", + "name" : "Surat Keterangan Beda Biodata Diri", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxycqz40014vniidftrixvf", + "name" : "Surat Keterangan Yatim Piatu", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdwx3wph0003vnr74us2t7h7", + "name" : "Surat Keterangan Domisili Organisasi", + "deskripsi" : "

Persyaratan Dokumen:

Alur Pelayanan:

" + }, + { + "id" : "cmdxxv3i80004vniidg1mrucc", + "name" : "Surat Keterangan Penghasilan", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxxwp070008vnii9jbdcto7", + "name" : "Surat Keterangan Tidak Mampu", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxxyfkl000cvnii1bxinnfi", + "name" : "Surat Keterangan Kelahiran", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxy23pl000gvniihsg38aq4", + "name" : "Surat Keterangan Usaha", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxy4mgt000kvniib1nemjem", + "name" : "Surat Keterangan Kematian", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxy61a1000ovniif4ytb9hs", + "name" : "Surat Keterangan Tempat Usaha", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxy754q000svniiiz8oqyo0", + "name" : "Surat Keterangan Belum Kawin", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + }, + { + "id" : "cmdxy8pi2000wvnii48fc1sxd", + "name" : "Surat Keterangan Kelakuan Baik", + "deskripsi" : "

Persyaratan Dokumen :

Alur Pelayanan :

" + } +] \ No newline at end of file diff --git a/prisma/data/desa/layanan/pelayananSuratKeternagan.json b/prisma/data/desa/layanan/pelayananSuratKeternagan.json deleted file mode 100644 index e69de29b..00000000 diff --git a/prisma/data/desa/layanan/pelayananTelunjukSaktiDesa.json b/prisma/data/desa/layanan/pelayananTelunjukSaktiDesa.json index e69de29b..aac11c24 100644 --- a/prisma/data/desa/layanan/pelayananTelunjukSaktiDesa.json +++ b/prisma/data/desa/layanan/pelayananTelunjukSaktiDesa.json @@ -0,0 +1,20 @@ +[ + { + "id": "cmdy0dwx10000vnnb6nmt06rv", + "name": "Telunjuk Sakti Desa Akta Kelahiran (Petunjuk Pengajuan pada link berikut : Download", + "deskripsi": "Akta Kelahiran", + "link": "https://darmasaba.desa.id/storage/files/PERSYARATAN%20DAN%20ALUR%20PENGAJUAN%20AKTA%20KELAHIRAN_(dengan%20contoh%20Formulir).pdf" + }, + { + "id": "cmdy0ttpz0001vnnbrvr9jb3z", + "name": "Telunjuk Sakti Desa Akta Perkawinan (Petunjuk Pengajuan pada link berikut : Download", + "deskripsi": "Akta Perkawinan", + "link": "https://darmasaba.desa.id/storage/files/PERSYARATAN%20DAN%20ALUR%20PENGAJUAN%20AKTA%20PERKAWINAN_(dengan%20contoh%20Formulir).pdf" + }, + { + "id": "cmdy0vjic0002vnnbcp0e9lgq", + "name": "Telunjuk Sakti Desa Akta Kematian (Petunjuk Pengajuan pada link berikut : Download", + "deskripsi": "Akta Kematian", + "link": "https://darmasaba.desa.id/storage/files/PERSYARATAN%20DAN%20ALUR%20PENGAJUAN%20AKTA%20KEMATIAN_(dengan%20contoh%20Formulir).pdf" + } +] \ No newline at end of file diff --git a/prisma/seed.ts b/prisma/seed.ts index bfcacb19..7cc5edeb 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -4,6 +4,7 @@ import programInovasi from "./data/landing-page/profile/programInovasi.json"; import mediaSosial from "./data/landing-page/profile/mediaSosial.json"; import sdgsDesa from "./data/landing-page/sdgs-desa/sdgs-desa.json"; import apbdes from "./data/landing-page/apbdes/apbdes.json"; +import pelayananSuratKeterangan from "./data/desa/layanan/pelayananSuratKeterangan.json"; import categoryPengumuman from "./data/category-pengumuman.json"; import kategoriBerita from "./data/kategori-berita.json"; import caraMemperolehInformasi from "./data/list-caraMemperolehInformasi.json"; @@ -98,6 +99,23 @@ import pegawaiPPID from "./data/ppid/struktur-ppid/pegawai-PPID.json"; }, }); } + console.log("media sosial success ..."); + + // =========== LAYANAN DESA =========== + for (const p of pelayananSuratKeterangan) { + await prisma.pelayananSuratKeterangan.upsert({ + where: { id: p.id }, + update: { + name: p.name, + deskripsi: p.deskripsi, + }, + create: { + id: p.id, + name: p.name, + deskripsi: p.deskripsi, + }, + }); + } console.log("media sosial success ..."); // =========== LAYANAN =========== diff --git a/src/app/admin/(dashboard)/desa/layanan/pelayanan_surat_keterangan/page.tsx b/src/app/admin/(dashboard)/desa/layanan/pelayanan_surat_keterangan/page.tsx index 431ab1bd..dba0a5c1 100644 --- a/src/app/admin/(dashboard)/desa/layanan/pelayanan_surat_keterangan/page.tsx +++ b/src/app/admin/(dashboard)/desa/layanan/pelayanan_surat_keterangan/page.tsx @@ -111,7 +111,7 @@ function ListSuratKeterangan({ search }: { search: string }) { - + diff --git a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/edit/page.tsx b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/edit/page.tsx index a8502e56..8e84e4a3 100644 --- a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/edit/page.tsx @@ -1,6 +1,5 @@ 'use client' /* eslint-disable react-hooks/exhaustive-deps */ -import EditEditor from '@/app/admin/(dashboard)/_com/editEditor'; import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; import colors from '@/con/colors'; import { Box, Button, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; @@ -76,6 +75,14 @@ function EditPelayananTelunjukSakti() { label={Nama Surat Keterangan} placeholder="masukkan nama surat keterangan" /> + { + setFormData({ ...formData, deskripsi: val.target.value }); + }} + label={Tautan Link} + placeholder="masukkan tautan link" + /> { @@ -84,15 +91,6 @@ function EditPelayananTelunjukSakti() { label={Link} placeholder="masukkan link" /> - - Konten - { - setFormData({ ...formData, deskripsi: htmlContent }); - }} - /> - diff --git a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/page.tsx b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/page.tsx index c13d2fc5..7cee7349 100644 --- a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/page.tsx +++ b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/[id]/page.tsx @@ -58,11 +58,24 @@ function DetailPelayananTelunjukSakti() { Link - {telunjukSaktiState.findUnique.data?.link} + + {telunjukSaktiState.findUnique.data?.link} + Deskripsi - + {telunjukSaktiState.findUnique.data?.deskripsi} diff --git a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/page.tsx b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/page.tsx index 48944d9a..c995523a 100644 --- a/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/page.tsx +++ b/src/app/admin/(dashboard)/desa/layanan/pelayanan_telunjuk_sakti_desa/page.tsx @@ -1,29 +1,29 @@ 'use client' -import JudulListTab from '@/app/admin/(dashboard)/_com/judulListTab'; import colors from '@/con/colors'; import { Box, Button, Paper, Skeleton, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Text } from '@mantine/core'; -import { IconDeviceImac, IconSearch } from '@tabler/icons-react'; -import { useProxy } from 'valtio/utils'; -import stateLayananDesa from '../../../_state/desa/layananDesa'; import { useShallowEffect } from '@mantine/hooks'; +import { IconDeviceImac, IconSearch } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; +import { useProxy } from 'valtio/utils'; import HeaderSearch from '../../../_com/header'; +import JudulList from '../../../_com/judulList'; +import stateLayananDesa from '../../../_state/desa/layananDesa'; function PelayananTelunjukSakti() { - const [search, setSearch] = useState(""); - return ( - - } - value={search} - onChange={(e) => setSearch(e.currentTarget.value)} - /> - - - ); + const [search, setSearch] = useState(""); + return ( + + } + value={search} + onChange={(e) => setSearch(e.currentTarget.value)} + /> + + + ); } function ListPelayananTelunjukSakti({ search }: { search: string }) { @@ -53,33 +53,41 @@ function ListPelayananTelunjukSakti({ search }: { search: string }) { return ( - } /> Nama - Deskripsi + Link Detail {filteredData.map((item) => ( - {item.name} - - - - - - - + + + + + + + + + + + + + + + + + + ))}
diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-beda-biodata-diri/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-beda-biodata-diri/page.tsx deleted file mode 100644 index 5a38f7f7..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-beda-biodata-diri/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Beda Biodata Diri - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Ktp atau Kartu Keluarga - Fotocopy dokumen bersangkutan yang terdapat perbedaan biodata diri misal : Sertifikat Tanah/Ijazah/Polis Asuransi dan lainnya. - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-belum-kawin/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-belum-kawin/page.tsx deleted file mode 100644 index 060cb498..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-belum-kawin/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Belum Kawin - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Ktp atau Kartu Keluarga - Khusus bagi yang berstatus duda atau janda melampirkan fotocopy akta cerai atau dokumen pendukung lainnya - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-domisili/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-domisili/page.tsx deleted file mode 100644 index 7d7a5795..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-domisili/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import colors from '@/con/colors'; -import { Box, Button, Center, Container, Image, List, ListItem, Stack, Text } from '@mantine/core'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - - - Surat Keterangan Domisili Organisasi - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Surat Keterangan Terdaftar (SKT) organisasi atau Pengukuhan Kelompok - Jika Pengajuan baru pembuatan SKT maka melengkapi Susunan Pengurus lengkap dengan Kop Organisasi - Tanggal berdiri/Tahun berdiri/Sejak kapan berdirinya organisasi - - - - Alur Pelayanan: - -
- -
-
- -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelahiran/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelahiran/page.tsx deleted file mode 100644 index 49c63df0..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelahiran/page.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Group, Center } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Kelahiran - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Surat lahir dari dokter/bidan (jika ada) - Fotocopy Kartu Keluarga - Fotocopy KTP 2 orang saksi - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelakuan-baik/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelakuan-baik/page.tsx deleted file mode 100644 index 5c142d71..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kelakuan-baik/page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Kelakuan Baik (Pengantar SKCK) - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Ktp atau Kartu Keluarga - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kematian/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kematian/page.tsx deleted file mode 100644 index 3b90cf31..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-kematian/page.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Kematian - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy KTP atau Kartu keluarga - Surat Kematian dari rumah sakit atau dokter (jika ada) - Tanggal dan Waktu Kematian - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-penghasilan/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-penghasilan/page.tsx deleted file mode 100644 index 6efc4939..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-penghasilan/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Penghasilan - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy KTP orang tua atau Fotocopy Kartu keluarga - Membuat Surat Pernyataan Penghasilan bermaterai (disertai jumlah penghasilan) - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tempat-usaha/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tempat-usaha/page.tsx deleted file mode 100644 index 531ccee7..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tempat-usaha/page.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Tempat Usaha - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy KTP atau Kartu keluarga - Foto Lokasi dan Kegiatan Usaha di cetak dalam selembar kertas (diparaf dan stempel oleh Kelian Banjar Dinas) - Surat Perjanjian Sewa/Kontrak atau Kwintansi Pembayaran Sewa 3 bulan terakhir bagi yang mengontrak tempat usaha, apabila tempat usaha milik sendiri lampiri dengan dokumen kepemilikan tempat usaha (dapat berupa fotocopy sppt atau Fotocopy Sertipikat Hak Milik) - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tidak-mampu/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tidak-mampu/page.tsx deleted file mode 100644 index 0e8a7f64..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-tidak-mampu/page.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Tidak Mampu - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy KTP/KIA atau Kartu Keluarga - Fotocopy Kartu Indonesia Pintar/Kartu Perlindungan Sosial/Terdaftar dalam DTKS - Jika tidak memiliki Kartu tersebut diatas diwajibkan membuat Surat Pernyataan Tidak Mampu - - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-usaha/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-usaha/page.tsx deleted file mode 100644 index 5d41ae7d..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-usaha/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Usaha - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy KTP atau Kartu keluarga - Foto Lokasi dan Kegiatan Usaha di cetak dalam selembar kertas (diparaf dan stempel oleh Kelian Banjar Dinas) - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-yatim-piatu/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-yatim-piatu/page.tsx deleted file mode 100644 index 242d9b42..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/(detail)/surat-keterangan-yatim-piatu/page.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import colors from '@/con/colors'; -import { Stack, Container, List, ListItem, Box, Text, Image, Button, Center, Group } from '@mantine/core'; -import React from 'react'; -import BackButton from '../../_com/BackButto'; - -function Page() { - return ( - - - - - Surat Keterangan Yatim Piatu - - - - - - Persyaratan Dokumen: - - - Pengantar Kelian Banjar Dinas di Wilayah Masing - masing - Fotocopy Ktp, KIA atau Kartu Keluarga - - - - Alur Pelayanan: - -
- -
-
- - - -
-
-
- ); -} - -export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/[id]/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/[id]/page.tsx new file mode 100644 index 00000000..2c543394 --- /dev/null +++ b/src/app/darmasaba/(pages)/desa/layanan/[id]/page.tsx @@ -0,0 +1,106 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +'use client' +import { useParams } from 'next/navigation'; +import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; +import colors from '@/con/colors'; +import { Box, Button, Center, Container, Group, Image, Skeleton, Stack, Text } from '@mantine/core'; +import { useEffect, useState } from 'react'; +import { useProxy } from 'valtio/utils'; +import BackButton from '../_com/BackButto'; + +interface LayananData { + id: string; + name: string; + deskripsi: string; + imageId: string; + image2Id: string; + image?: { + id: string; + link: string; + }; + image2?: { + id: string; + link: string; + }; +} + +function Page() { + const params = useParams<{ id: string }>(); + const id = Array.isArray(params.id) ? params.id[0] : params.id; + const state = useProxy(stateLayananDesa); + const [loading, setLoading] = useState(true); + const [data, setData] = useState(null); + + useEffect(() => { + const loadData = async () => { + if (!id) return; + + try { + setLoading(true); + await state.suratKeterangan.findUnique.load(id); + const result = state.suratKeterangan.findUnique.data as unknown as LayananData; + setData(result); + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false); + } + }; + + loadData(); + }, [id]); + + if (loading) { + return ( +
+ +
+ ); + } + + if (!data) { + return ( +
+ Data tidak ditemukan +
+ ); + } + + return ( + + + + + + + {data.name} + + + + + + {data.image2?.link && ( +
+ {data.name} +
+ )} + + + +
+
+
+ ); +} + +export default Page; diff --git a/src/app/darmasaba/(pages)/desa/layanan/[sub]/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/[sub]/page.tsx deleted file mode 100644 index 535f2fba..00000000 --- a/src/app/darmasaba/(pages)/desa/layanan/[sub]/page.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Stack } from "@mantine/core"; - -export default async function Page({ params }: { params: Promise<{ sub: string }> }) { - const { sub } = await params - return ( - - {sub} - - ) -} \ No newline at end of file diff --git a/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPendudukNonPermanent.tsx b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPendudukNonPermanent.tsx new file mode 100644 index 00000000..9488c6ef --- /dev/null +++ b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPendudukNonPermanent.tsx @@ -0,0 +1,65 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; +import colors from '@/con/colors'; +import { ActionIcon, Box, Divider, Flex, Skeleton, Text } from '@mantine/core'; +import { IconBrandFacebook, IconBrandInstagram, IconBrandTwitter, IconBrandWhatsapp } from '@tabler/icons-react'; +import React, { useEffect, useState } from 'react'; +import { useProxy } from 'valtio/utils'; + +function PelayananPendudukNonPermanent() { + const state = useProxy(stateLayananDesa) + const [loading, setLoading] = useState(false) + + useEffect(() => { + const loadData = async () => { + try { + setLoading(true) + await state.pelayananPendudukNonPermanen.findById.load('1') + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false) + } + } + loadData() + }, []) + + const data = state.pelayananPendudukNonPermanen.findById.data + return ( + + {loading ? ( + + ) : ( + + + {data?.name} + + + + + 25 May 2021 . Darmasaba + + + + + + + + + + + + + + + + + + + + )} + + ); +} + +export default PelayananPendudukNonPermanent; diff --git a/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPerizinanBerusaha.tsx b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPerizinanBerusaha.tsx new file mode 100644 index 00000000..cde0c677 --- /dev/null +++ b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananPerizinanBerusaha.tsx @@ -0,0 +1,106 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +'use client' +import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; +import { Box, Button, Center, Group, Skeleton, Stepper, StepperCompleted, StepperStep, Text } from '@mantine/core'; +import { useEffect, useState } from 'react'; +import { useProxy } from 'valtio/utils'; + +function PelayananPerizinanBerusaha() { + const state = useProxy(stateLayananDesa) + const [loading, setLoading] = useState(false) + const [active, setActive] = useState(1); + const nextStep = () => setActive((current) => (current < 6 ? current + 1 : current)); + const prevStep = () => setActive((current) => (current > 0 ? current - 1 : current)); + + useEffect(() => { + const loadData = async () => { + try { + setLoading(true); + await state.pelayananPerizinanBerusaha.findById.load('1') + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false); + } + } + loadData() + }, []) + + const data = state.pelayananPerizinanBerusaha.findById.data; + + if (!data) { + return ( +
+ Data tidak tersedia +
+ ); + } + + return ( + + {loading ? ( +
+ +
+ ) : ( + + + Pelayanan Perizinan Berusaha Berbasis Risiko Melalui Sistem ONLINE SINGLE SUBMISSION (OSS) + + + Proses pendaftaran NIB melalui OSS mencakup beberapa langkah umum, seperti: + + + + Pendaftaran akun pada portal OSS + + + Mengisi informasi perusahaan, termasuk data pemegang saham, alamat perusahaan, dan lainnya + + + Memilih KBLI dengan jenis usaha yang akan didaftarkan + + + Mengunggah dokumen-dokumen yang diperlukan, seperti akta pendirian perusahaan, surat izin usaha, dan dokumen lainnya sesuai dengan ketentuan yang berlaku + + + Proses verifikasi dan persetujuan oleh instansi terkait + + + Jika proses sebelumnya berhasil, perusahaan akan menerima NIB sebagai identitas resmi usaha anda + + + Selesai, anda telah mengikuti proses pendaftaran NIB melalui OSS + + + + + + + + + Penting untuk diingat bahwa prosedur dan persyaratan dapat berubah + seiring waktu. Untuk informasi yang lebih akurat dan terkini, saya sarankan untuk mengunjungi situs + resmi OSS (https://oss.go.id/) atau menghubungi instansi terkait di pemerintah Indonesia yang bertanggung jawab atas urusan perizinan usaha. + + + + )} +
+ ); +} + +export default PelayananPerizinanBerusaha; diff --git a/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananSuratKeterangan.tsx b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananSuratKeterangan.tsx new file mode 100644 index 00000000..886cc07d --- /dev/null +++ b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananSuratKeterangan.tsx @@ -0,0 +1,97 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; +import colors from '@/con/colors'; +import { BackgroundImage, Box, Button, Center, Group, SimpleGrid, Skeleton, Stack, Text } from '@mantine/core'; +import { useRouter } from 'next/navigation'; +import React, { useEffect, useMemo, useState } from 'react'; + +import { useProxy } from 'valtio/utils'; + +function PelayananSuratKeterangan({ search }: { search: string }) { + const [loading, setLoading] = useState(false); + const router = useRouter() + const state = useProxy(stateLayananDesa) + const filteredData = useMemo(() => { + if (!state.suratKeterangan.findMany.data) return []; + return state.suratKeterangan.findMany.data.filter(item => { + const keyword = search.toLowerCase(); + return ( + item.name?.toLowerCase().includes(keyword) + ); + }) + }, [state.suratKeterangan.findMany.data, search]); + + useEffect(() => { + const loadData = async () => { + try { + setLoading(true); + await state.suratKeterangan.findMany.load() + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false); + } + } + loadData() + }, []) + return ( + + Pelayanan Surat Keterangan + + {loading ? ( +
+ +
+ ) : ( + filteredData.map((v, k) => { + return ( + + + + + {v.name} + + + + + + + ) + }) + )} +
+
+ + ); +} + +export default PelayananSuratKeterangan; diff --git a/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananTelunjukSaktiDesa.tsx b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananTelunjukSaktiDesa.tsx new file mode 100644 index 00000000..23ac113f --- /dev/null +++ b/src/app/darmasaba/(pages)/desa/layanan/_com/pelayananTelunjukSaktiDesa.tsx @@ -0,0 +1,67 @@ +/* eslint-disable react-hooks/exhaustive-deps */ +import stateLayananDesa from '@/app/admin/(dashboard)/_state/desa/layananDesa'; +import { Box, Flex, Skeleton, Text, Title } from '@mantine/core'; +import { useEffect, useState } from 'react'; +import { useProxy } from 'valtio/utils'; + +interface ServiceItem { + name: string; + deskripsi: string; + link: string; +} + +function PelayananTelunjukSaktiDesa() { + const state = useProxy(stateLayananDesa) + const [loading, setLoading] = useState(false) + + useEffect(() => { + const loadData = async () => { + try { + setLoading(true) + await state.pelayananTelunjukSaktiDesa.findMany.load() + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false) + } + } + loadData() + }, []) + + const data = state.pelayananTelunjukSaktiDesa.findMany.data as Array<{ + name: string; + id: string; + deskripsi: string; + link: string; + items: ServiceItem[]; + createdAt: Date; + updatedAt: Date; + deletedAt: Date | null; + }> + return ( + + Terwujudnya Layanan umum bertajuk Sistim administrasi Kependudukan Terintegrasi di Desa berbasi Elektronik, Smart dan Aman. Layanan Telunjuk Sakti Desa meliputi : + {loading ? ( + + ) : ( + data.map((v, k) => { + return ( + + + + {v.name} + + + {v.deskripsi} + + + + + ) + }) + )} + + ); +} + +export default PelayananTelunjukSaktiDesa; diff --git a/src/app/darmasaba/(pages)/desa/layanan/page.tsx b/src/app/darmasaba/(pages)/desa/layanan/page.tsx index 4ccfd02c..8b2113e5 100644 --- a/src/app/darmasaba/(pages)/desa/layanan/page.tsx +++ b/src/app/darmasaba/(pages)/desa/layanan/page.tsx @@ -1,85 +1,19 @@ 'use client' import colors from "@/con/colors"; -import { ActionIcon, BackgroundImage, Box, Button, Container, Divider, Flex, Group, List, ListItem, SimpleGrid, Stack, Stepper, StepperCompleted, StepperStep, Text, TextInput } from "@mantine/core"; -import { IconBrandFacebook, IconBrandInstagram, IconBrandTwitter, IconBrandWhatsapp, IconSearch } from "@tabler/icons-react"; -import { useRouter } from "next/navigation"; +import { Box, Container, Stack, Text, TextInput } from "@mantine/core"; +import { IconSearch } from "@tabler/icons-react"; import { useState } from "react"; import BackButton from "./_com/BackButto"; +import PelayananPerizinanBerusaha from "./_com/pelayananPerizinanBerusaha"; +import PelayananSuratKeterangan from "./_com/pelayananSuratKeterangan"; +import PelayananTelunjukSaktiDesa from "./_com/pelayananTelunjukSaktiDesa"; +import PelayananPendudukNonPermanent from "./_com/pelayananPendudukNonPermanent"; -const data = [ - { - id: 1, - images: "/api/img/test.png", - name: "Surat Keterangan Domisili Organisasi", - link: "/darmasaba/desa/layanan/surat-keterangan-domisili" - }, - { - id: 2, - images: "/api/img/test-3.jpeg", - name: "Surat Keterangan Penghasilan", - link: "/darmasaba/desa/layanan/surat-keterangan-penghasilan" - }, - { - id: 3, - images: "/api/img/domisili.jpeg", - name: "Surat Keterangan Tidak Mampu", - link: "/darmasaba/desa/layanan/surat-keterangan-tidak-mampu" - }, - { - id: 4, - images: "/api/img/kelahiran.jpeg", - name: "Surat Keterangan Kelahiran", - link: "/darmasaba/desa/layanan/surat-keterangan-kelahiran" - }, - { - id: 5, - images: "/api/img/keterangan-usaha.jpeg", - name: "Surat Keterangan Usaha", - link: "/darmasaba/desa/layanan/surat-keterangan-usaha" - }, - { - id: 6, - images: "/api/img/kematian.jpeg", - name: "Surat Keterangan Kematian", - link: "/darmasaba/desa/layanan/surat-keterangan-kematian" - }, - { - id: 7, - images: "/api/img/tempatusaha.jpeg", - name: "Surat Keterangan Tempat Usaha", - link: "/darmasaba/desa/layanan/surat-keterangan-tempat-usaha" - }, - { - id: 8, - images: "/api/img/belumkawin.jpeg", - name: "Surat Keterangan Belum Kawin", - link: "/darmasaba/desa/layanan/surat-keterangan-belum-kawin" - }, - { - id: 9, - images: "/api/img/berkelakuan-baik.jpeg", - name: "Surat Keterangan Kelakuan Baik", - link: "/darmasaba/desa/layanan/surat-keterangan-kelakuan-baik" - }, - { - id: 10, - images: "/api/img/biodata.jpeg", - name: "Surat Keterangan Beda Biodata Diri", - link: "/darmasaba/desa/layanan/surat-keterangan-beda-biodata-diri" - }, - { - id: 11, - images: "/api/img/yatim.jpeg", - name: "Surat Keterangan Yatim Piatu", - link: "/darmasaba/desa/layanan/surat-keterangan-yatim-piatu" - } -] export default function Page() { - const router = useRouter() - const [active, setActive] = useState(1); - const nextStep = () => setActive((current) => (current < 6 ? current + 1 : current)); - const prevStep = () => setActive((current) => (current > 0 ? current - 1 : current)); + const [search, setSearch] = useState("") + + return ( @@ -100,149 +34,20 @@ export default function Page() { w={{ base: "70%", md: "50%" }} placeholder="Cari Layanan" leftSection={} - + value={search} + onChange={(e) => setSearch(e.currentTarget.value)} /> {/* Bagian Pelayanan Surat Keterangan */} - - Pelayanan Surat Keterangan - - - {data.map((v, k) => { - return ( - - - - - {v.name} - - - - - - - ) - })} - + {/* Bagian Pelayanan Perizinan Berusaha */} - - Pelayanan Perizinan Berusaha Berbasis Risiko Melalui Sistem ONLINE SINGLE SUBMISSION (OSS) - - Penyelenggaraan Perizinan Berusaha Berbasis Risiko melalui Sistem Online Single Submission (OSS) - merupakan pelaksanaan Undang-Undang Nomor 11 Tahun 2020 Tentang Cipta Kerja. OSS Berbasis Risiko wajib digunakan oleh Pelaku Usaha, - Kementerian/Lembaga, Pemerintah Daerah, Administrator Kawasan Ekonomi Khusus (KEK), dan Badan Pengusahaan Kawasan Perdagangan Bebas - Pelabuhan Bebas (KPBPB).Berdasarkan Peraturan Pemerintah Nomor 5 Tahun 2021 terdapat 1.702 kegiatan usaha yang terdiri atas 1.349 - Klasifikasi Baku Lapangan Usaha Indonesia (KBLI) yang sudah diimplementasikan dalam Sistem OSS Berbasis Risiko. - Proses pendaftaran NIB melalui OSS mencakup beberapa langkah umum, seperti: - - - - Pendaftaran akun pada portal OSS - - - Mengisi informasi perusahaan, termasuk data pemegang saham, alamat perusahaan, dan lainnya - - - Memilih KBLI dengan jenis usaha yang akan didaftarkan - - - Mengunggah dokumen-dokumen yang diperlukan, seperti akta pendirian perusahaan, surat izin usaha, dan dokumen lainnya sesuai dengan ketentuan yang berlaku - - - Proses verifikasi dan persetujuan oleh instansi terkait - - - Jika proses sebelumnya berhasil, perusahaan akan menerima NIB sebagai identitas resmi usaha anda - - - Selesai, anda telah mengikuti proses pendaftaran NIB melalui OSS - - - - - - - - Penting untuk diingat bahwa prosedur dan persyaratan dapat berubah - seiring waktu. Untuk informasi yang lebih akurat dan terkini, saya sarankan untuk mengunjungi situs - resmi OSS (https://oss.go.id/) atau menghubungi instansi terkait di pemerintah Indonesia yang bertanggung jawab atas urusan perizinan usaha. - + {/* Bagian Pelayanan Telunjuk Sakti Desa */} - - Pelayanan Telunjuk Sakti Desa - - Terwujudnya Layanan umum bertajuk Sistim administrasi Kependudukan Terintegrasi di Desa berbasi Elektronik, Smart dan Aman. layanan telunjuk sakti Desa meliputi : - - Telunjuk Sakti Desa Akta Kelahiran (Petunjuk Pengajuan pada link berikut : Download Akta Kelahiran) - Telunjuk Sakti Desa Akta Perkawinan (Petunjuk Pengajuan pada link berikut : Download Akta Perkawinan) - Telunjuk Sakti Desa Akta Kematian (Petunjuk Pengajuan pada link berikut : Download Akata Kematian) - - {/* Bagian Pelayanan Telunjuk Sakti Desa */} - - Pelayanan Penduduk Non-Permanent - - Surat Keterangan Penduduk Non-Permanent adalah dokumen yang dikeluarkan oleh pihak berwenang untuk memberikan keterangan bahwa seseorang atau kelompok orang memiliki status penduduk non-permanent di suatu wilayah. Dokumen ini biasanya digunakan untuk keperluan administratif atau legal, seperti mendapatkan akses ke layanan kesehatan, pendidikan, atau pelayanan publik lainnya. - - - 25 May 2021 . Darmasaba - - - - - - - - - - - - - - - - - - + + {/* Bagian Pelayanan Penduduk Non Permanent */} + ) diff --git a/src/app/darmasaba/_com/main-page/layanan/index.tsx b/src/app/darmasaba/_com/main-page/layanan/index.tsx index f6be4268..1f877c70 100644 --- a/src/app/darmasaba/_com/main-page/layanan/index.tsx +++ b/src/app/darmasaba/_com/main-page/layanan/index.tsx @@ -1,202 +1,155 @@ +/* eslint-disable react-hooks/exhaustive-deps */ /* eslint-disable @typescript-eslint/no-unused-vars */ "use client"; +import stateLayananDesa from "@/app/admin/(dashboard)/_state/desa/layananDesa"; import colors from "@/con/colors"; import ApiFetch from "@/lib/api-fetch"; import { Carousel } from "@mantine/carousel"; import { - Box, - Button, - Container, - Divider, - Group, - Paper, - Stack, - Text, - useMantineTheme + Box, + Button, + Container, + Divider, + Group, + Paper, + Stack, + Text, + useMantineTheme } from "@mantine/core"; import { useMediaQuery } from "@mantine/hooks"; import Autoplay from "embla-carousel-autoplay"; import _ from "lodash"; import { useTransitionRouter } from "next-view-transitions"; import Link from "next/link"; -import { useRef } from "react"; +import { useEffect, useRef, useState } from "react"; import useSWR from "swr"; +import { useProxy } from "valtio/utils"; -const data = [ - { - id: 1, - images: "/api/img/test.png", - name: "Surat Keterangan Domisili Organisasi", - link: "/darmasaba/desa/layanan/surat-keterangan-domisili" -}, -{ - id: 2, - images: "/api/img/test-3.jpeg", - name: "Surat Keterangan Penghasilan", - link: "/darmasaba/desa/layanan/surat-keterangan-penghasilan" -}, -{ - id: 3, - images: "/api/img/domisili.jpeg", - name: "Surat Keterangan Tidak Mampu", - link: "/darmasaba/desa/layanan/surat-keterangan-tidak-mampu" -}, -{ - id: 4, - images: "/api/img/kelahiran.jpeg", - name: "Surat Keterangan Kelahiran", - link: "/darmasaba/desa/layanan/surat-keterangan-kelahiran" -}, -{ - id: 5, - images: "/api/img/keterangan-usaha.jpeg", - name: "Surat Keterangan Usaha", - link: "/darmasaba/desa/layanan/surat-keterangan-usaha" -}, -{ - id: 6, - images: "/api/img/kematian.jpeg", - name: "Surat Keterangan Kematian", - link: "/darmasaba/desa/layanan/surat-keterangan-kematian" -}, -{ - id: 7, - images: "/api/img/tempatusaha.jpeg", - name: "Surat Keterangan Tempat Usaha", - link: "/darmasaba/desa/layanan/surat-keterangan-tempat-usaha" -}, -{ - id: 8, - images: "/api/img/belumkawin.jpeg", - name: "Surat Keterangan Belum Kawin", - link: "/darmasaba/desa/layanan/surat-keterangan-belum-kawin" -}, -{ - id: 9, - images: "/api/img/berkelakuan-baik.jpeg", - name: "Surat Keterangan Kelakuan Baik", - link: "/darmasaba/desa/layanan/surat-keterangan-kelakuan-baik" -}, -{ - id: 10, - images: "/api/img/biodata.jpeg", - name: "Surat Keterangan Beda Biodata Diri", - link: "/darmasaba/desa/layanan/surat-keterangan-beda-biodata-diri" -}, -{ - id: 11, - images: "/api/img/yatim.jpeg", - name: "Surat Keterangan Yatim Piatu", - link: "/darmasaba/desa/layanan/surat-keterangan-yatim-piatu" -} - -] const textHeading = { - title: "Layanan", - des: "Layanan adalah fitur yang membantu warga desa mengakses berbagai kebutuhan administrasi, informasi, dan bantuan secara cepat, mudah, dan transparan. Dengan fitur ini, semua layanan desa ada dalam genggaman Anda!", + title: "Layanan", + des: "Layanan adalah fitur yang membantu warga desa mengakses berbagai kebutuhan administrasi, informasi, dan bantuan secara cepat, mudah, dan transparan. Dengan fitur ini, semua layanan desa ada dalam genggaman Anda!", }; function Layanan() { - const { data, isLoading } = useSWR( - "/", - (url) => ApiFetch.api.layanan.get().then(({ data }) => data?.data), - { - fallbackData: [], - } - ); + const { data, isLoading } = useSWR( + "/", + (url) => ApiFetch.api.layanan.get().then(({ data }) => data?.data), + { + fallbackData: [], + } + ); - const router = useTransitionRouter() + const router = useTransitionRouter() - return ( - - - - - {textHeading.title} - - - {textHeading.des} - - - - - - - - - - ); + return ( + + + + + {textHeading.title} + + + {textHeading.des} + + + + + + + + + + ); } const height = 720; function Slider() { - const theme = useMantineTheme(); - const mobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`); - const autoplay = useRef(Autoplay({ delay: 2000 })); - const router = useTransitionRouter() + const state = useProxy(stateLayananDesa) + const [loading, setLoading] = useState(false); + const theme = useMantineTheme(); + const mobile = useMediaQuery(`(max-width: ${theme.breakpoints.sm})`); + const autoplay = useRef(Autoplay({ delay: 2000 })); + const router = useTransitionRouter() - const slides = data.map((item) => ( - - - - - - { + const loadData = async () => { + try { + setLoading(true); + await state.suratKeterangan.findMany.load() + } catch (error) { + console.error('Error loading data:', error); + } finally { + setLoading(false); + } + } + loadData() + }, []) - fw={"bold"} - c={"white"} - size={"3.5rem"} - style={{ - textAlign: "center", - }} - > - {_.startCase(item.name)} - - - - - - - - - )); + const data = (state.suratKeterangan.findMany.data || []).slice(0, 8); - return ( - - {slides} - - ); + const slides = data.map((item) => ( + + + + + + + {_.startCase(item.name)} + + + + + + + + + )); + + return ( + + {slides} + + ); } export default Layanan; +