From 99c2c9c6d7d34ce70e36ec9f2b99142d8b650257 Mon Sep 17 00:00:00 2001 From: nico Date: Wed, 10 Dec 2025 14:16:15 +0800 Subject: [PATCH 1/2] Fix semua tulisan profile jadi profil, mulai dari navbar, dan route --- .../_lib/layoutTabsDetail.tsx | 18 +-- .../_lib/layoutTabsEdit.tsx | 8 +- .../desa/{profile => profil}/layout.tsx | 0 .../profil-desa}/[id]/lambang_desa/page.tsx | 6 +- .../profil-desa}/[id]/maskot_desa/page.tsx | 4 +- .../profil-desa}/[id]/sejarah_desa/page.tsx | 6 +- .../profil-desa}/[id]/visi_misi_desa/page.tsx | 6 +- .../profil-desa}/page.tsx | 10 +- .../[id]/edit/page.tsx | 2 +- .../[id]/page.tsx | 4 +- .../create/page.tsx | 2 +- .../page.tsx | 4 +- .../profil-perbekel}/[id]/page.tsx | 4 +- .../profil-perbekel}/page.tsx | 2 +- src/app/admin/_com/list_PageAdmin.tsx | 12 +- .../{profile => profil}/_com/BackButto.tsx | 0 .../(pages)/desa/{profile => profil}/page.tsx | 0 .../struktur-perangkat-desa/[id]/page.tsx | 0 .../struktur-perangkat-desa/page.tsx | 0 .../struktur-perangkat-desa/struktur.css | 0 .../{profile => profil}/ui/lambangDesa.tsx | 0 .../{profile => profil}/ui/maskotDesa.tsx | 0 .../desa/{profile => profil}/ui/motoDesa.tsx | 0 .../{profile => profil}/ui/profilPerbekel.tsx | 0 .../{profile => profil}/ui/profileDesa.tsx | 0 .../{profile => profil}/ui/sejarahDesa.tsx | 0 .../{profile => profil}/ui/semuaPerbekel.tsx | 0 .../{profile => profil}/ui/visimisiDesa.tsx | 0 .../{profile-ppid => profil-ppid}/page.tsx | 0 .../_com/main-page/kepuasan/index.tsx | 133 +++++++++++++----- src/con/navbar-list-menu.ts | 8 +- 31 files changed, 146 insertions(+), 83 deletions(-) rename src/app/admin/(dashboard)/desa/{profile => profil}/_lib/layoutTabsDetail.tsx (89%) rename src/app/admin/(dashboard)/desa/{profile => profil}/_lib/layoutTabsEdit.tsx (89%) rename src/app/admin/(dashboard)/desa/{profile => profil}/layout.tsx (100%) rename src/app/admin/(dashboard)/desa/{profile/profile-desa => profil/profil-desa}/[id]/lambang_desa/page.tsx (97%) rename src/app/admin/(dashboard)/desa/{profile/profile-desa => profil/profil-desa}/[id]/maskot_desa/page.tsx (98%) rename src/app/admin/(dashboard)/desa/{profile/profile-desa => profil/profil-desa}/[id]/sejarah_desa/page.tsx (98%) rename src/app/admin/(dashboard)/desa/{profile/profile-desa => profil/profil-desa}/[id]/visi_misi_desa/page.tsx (97%) rename src/app/admin/(dashboard)/desa/{profile/profile-desa => profil/profil-desa}/page.tsx (97%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel-dari-masa-ke-masa => profil/profil-perbekel-dari-masa-ke-masa}/[id]/edit/page.tsx (99%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel-dari-masa-ke-masa => profil/profil-perbekel-dari-masa-ke-masa}/[id]/page.tsx (96%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel-dari-masa-ke-masa => profil/profil-perbekel-dari-masa-ke-masa}/create/page.tsx (98%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel-dari-masa-ke-masa => profil/profil-perbekel-dari-masa-ke-masa}/page.tsx (96%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel => profil/profil-perbekel}/[id]/page.tsx (98%) rename src/app/admin/(dashboard)/desa/{profile/profile-perbekel => profil/profil-perbekel}/page.tsx (97%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/_com/BackButto.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/page.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/struktur-perangkat-desa/[id]/page.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/struktur-perangkat-desa/page.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/struktur-perangkat-desa/struktur.css (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/lambangDesa.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/maskotDesa.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/motoDesa.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/profilPerbekel.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/profileDesa.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/sejarahDesa.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/semuaPerbekel.tsx (100%) rename src/app/darmasaba/(pages)/desa/{profile => profil}/ui/visimisiDesa.tsx (100%) rename src/app/darmasaba/(pages)/ppid/{profile-ppid => profil-ppid}/page.tsx (100%) diff --git a/src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsDetail.tsx b/src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsDetail.tsx similarity index 89% rename from src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsDetail.tsx rename to src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsDetail.tsx index 25771ec3..a3dd1255 100644 --- a/src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsDetail.tsx +++ b/src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsDetail.tsx @@ -11,21 +11,21 @@ function LayoutTabsDetail({ children }: { children: React.ReactNode }) { const pathname = usePathname() const tabs = [ { - label: "Profile Desa", - value: "profiledesa", - href: "/admin/desa/profile/profile-desa", + label: "Profil Desa", + value: "profildesa", + href: "/admin/desa/profil/profil-desa", icon: }, { - label: "Profile Perbekel", - value: "profileperbekel", - href: "/admin/desa/profile/profile-perbekel", + label: "Profil Perbekel", + value: "profilperbekel", + href: "/admin/desa/profil/profil-perbekel", icon: }, { - label: "Profile Perbekel Dari Masa Ke Masa", - value: "profile-perbekel-dari-masa-ke-masa", - href: "/admin/desa/profile/profile-perbekel-dari-masa-ke-masa", + label: "Profil Perbekel Dari Masa Ke Masa", + value: "profilperbekeldarimasakemasa", + href: "/admin/desa/profil/profil-perbekel-dari-masa-ke-masa", icon: } ]; diff --git a/src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsEdit.tsx b/src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsEdit.tsx similarity index 89% rename from src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsEdit.tsx rename to src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsEdit.tsx index 75201d3d..c384b326 100644 --- a/src/app/admin/(dashboard)/desa/profile/_lib/layoutTabsEdit.tsx +++ b/src/app/admin/(dashboard)/desa/profil/_lib/layoutTabsEdit.tsx @@ -12,22 +12,22 @@ function LayoutTabsEdit({ children }: { children: React.ReactNode }) { { label: "Sejarah Desa", value: "sejarahdesa", - href: "/admin/desa/profile/edit/sejarah_desa" + href: "/admin/desa/profil/edit/sejarah_desa" }, { label: "Visi Misi Desa", value: "visimisidesa", - href: "/admin/desa/profile/edit/visi_misi_desa" + href: "/admin/desa/profil/edit/visi_misi_desa" }, { label: "Lambang Desa", value: "lambangdesa", - href: "/admin/desa/profile/edit/lambang_desa" + href: "/admin/desa/profil/edit/lambang_desa" }, { label: "Maskot Desa", value: "maskotdesa", - href: "/admin/desa/profile/edit/maskot_desa" + href: "/admin/desa/profil/edit/maskot_desa" }, ]; const curentTab = tabs.find(tab => tab.href === pathname) diff --git a/src/app/admin/(dashboard)/desa/profile/layout.tsx b/src/app/admin/(dashboard)/desa/profil/layout.tsx similarity index 100% rename from src/app/admin/(dashboard)/desa/profile/layout.tsx rename to src/app/admin/(dashboard)/desa/profil/layout.tsx diff --git a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/lambang_desa/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/lambang_desa/page.tsx similarity index 97% rename from src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/lambang_desa/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/lambang_desa/page.tsx index 6d182103..ea9f877b 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/lambang_desa/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/lambang_desa/page.tsx @@ -43,7 +43,7 @@ function Page() { const id = params?.id as string; if (!id) { toast.error('ID tidak valid'); - router.push('/admin/desa/profile/profile-desa'); + router.push('/admin/desa/profil/profil-desa'); return; } @@ -106,7 +106,7 @@ function Page() { if (success) { toast.success('Data berhasil disimpan'); - router.push('/admin/desa/profile/profile-desa'); + router.push('/admin/desa/profil/profil-desa'); } else { toast.error('Gagal menyimpan data'); } @@ -156,7 +156,7 @@ function Page() { } color="red" title="Terjadi Kesalahan" radius="md"> {loadError} - diff --git a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/maskot_desa/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/maskot_desa/page.tsx similarity index 98% rename from src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/maskot_desa/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/maskot_desa/page.tsx index a33601da..16bd9fda 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/maskot_desa/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/maskot_desa/page.tsx @@ -40,7 +40,7 @@ function Page() { const id = params?.id as string; if (!id) { toast.error("ID tidak valid"); - router.push("/admin/desa/profile/profile-desa"); + router.push("/admin/desa/profil/profil-desa"); return; } @@ -157,7 +157,7 @@ function Page() { if (success) { toast.success("Maskot berhasil diperbarui!"); - router.push("/admin/desa/profile/profile-desa"); + router.push("/admin/desa/profil/profil-desa"); } } catch (error) { console.error("Error update maskot:", error); diff --git a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/sejarah_desa/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/sejarah_desa/page.tsx similarity index 98% rename from src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/sejarah_desa/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/sejarah_desa/page.tsx index 7bbd5c16..72ab0b41 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-desa/[id]/sejarah_desa/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-desa/[id]/sejarah_desa/page.tsx @@ -50,7 +50,7 @@ function Page() { const id = params?.id as string; if (!id) { toast.error('ID tidak valid'); - router.push('/admin/desa/profile/profile-desa'); + router.push('/admin/desa/profil/profil-desa'); return; } @@ -122,7 +122,7 @@ function Page() { if (success) { toast.success('Data berhasil disimpan'); - router.push('/admin/desa/profile/profile-desa'); + router.push('/admin/desa/profil/profil-desa'); } else { toast.error('Gagal menyimpan data'); } @@ -179,7 +179,7 @@ function Page() { {loadError} @@ -87,7 +87,7 @@ function Page() { variant="light" leftSection={} radius="md" - onClick={() => router.push(`/admin/desa/profile/profile-desa/${visiMisi.id}/visi_misi_desa`)} + onClick={() => router.push(`/admin/desa/profil/profil-desa/${visiMisi.id}/visi_misi_desa`)} > Edit @@ -135,7 +135,7 @@ function Page() { variant="light" leftSection={} radius="md" - onClick={() => router.push(`/admin/desa/profile/profile-desa/${lambang.id}/lambang_desa`)} + onClick={() => router.push(`/admin/desa/profil/profil-desa/${lambang.id}/lambang_desa`)} > Edit @@ -180,7 +180,7 @@ function Page() { variant="light" leftSection={} radius="md" - onClick={() => router.push(`/admin/desa/profile/profile-desa/${maskot.id}/maskot_desa`)} + onClick={() => router.push(`/admin/desa/profil/profil-desa/${maskot.id}/maskot_desa`)} > Edit diff --git a/src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx similarity index 99% rename from src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx index d7c3b632..8cf2e438 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/edit/page.tsx @@ -117,7 +117,7 @@ function EditPerbekelDariMasaKeMasa() { await state.update.update(); toast.success('Perbekel dari masa ke masa berhasil diperbarui!'); - router.push('/admin/desa/profile/profile-perbekel-dari-masa-ke-masa'); + router.push('/admin/desa/profil/profil-perbekel-dari-masa-ke-masa'); } catch (error) { console.error('Error updating perbekel dari masa ke masa:', error); toast.error('Terjadi kesalahan saat memperbarui perbekel dari masa ke masa'); diff --git a/src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/page.tsx similarity index 96% rename from src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/page.tsx index 8a63f508..c8f9eca9 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-perbekel-dari-masa-ke-masa/[id]/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-perbekel-dari-masa-ke-masa/[id]/page.tsx @@ -25,7 +25,7 @@ function DetailPerbekelDariMasa() { state.delete.byId(selectedId); setModalHapus(false); setSelectedId(null); - router.push("/admin/desa/profile/profile-perbekel-dari-masa-ke-masa"); + router.push("/admin/desa/profil/profil-perbekel-dari-masa-ke-masa"); } }; @@ -113,7 +113,7 @@ function DetailPerbekelDariMasa() { @@ -90,7 +90,7 @@ function ListPerbekelDariMasaKeMasa({ search }: { search: string }) { variant="light" color="blue" leftSection={} - onClick={() => router.push(`/admin/desa/profile/profile-perbekel-dari-masa-ke-masa/${item.id}`)} + onClick={() => router.push(`/admin/desa/profil/profil-perbekel-dari-masa-ke-masa/${item.id}`)} > Detail diff --git a/src/app/admin/(dashboard)/desa/profile/profile-perbekel/[id]/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-perbekel/[id]/page.tsx similarity index 98% rename from src/app/admin/(dashboard)/desa/profile/profile-perbekel/[id]/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-perbekel/[id]/page.tsx index 1a916bfe..bd26f5c1 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-perbekel/[id]/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-perbekel/[id]/page.tsx @@ -25,7 +25,7 @@ function ProfilePerbekel() { const id = params?.id as string; if (!id) { toast.error("ID tidak valid"); - router.push("/admin/desa/profile/profile-perbekel"); + router.push("/admin/desa/profil/profil-perbekel"); return; } @@ -74,7 +74,7 @@ function ProfilePerbekel() { const success = await perbekelState.edit.submit() if (success) { toast.success("Data berhasil disimpan"); - router.push("/admin/desa/profile/profile-perbekel"); + router.push("/admin/desa/profil/profil-perbekel"); } } catch (error) { console.error("Error update sejarah desa:", error); diff --git a/src/app/admin/(dashboard)/desa/profile/profile-perbekel/page.tsx b/src/app/admin/(dashboard)/desa/profil/profil-perbekel/page.tsx similarity index 97% rename from src/app/admin/(dashboard)/desa/profile/profile-perbekel/page.tsx rename to src/app/admin/(dashboard)/desa/profil/profil-perbekel/page.tsx index 2d2ddf4a..53ad1d8c 100644 --- a/src/app/admin/(dashboard)/desa/profile/profile-perbekel/page.tsx +++ b/src/app/admin/(dashboard)/desa/profil/profil-perbekel/page.tsx @@ -41,7 +41,7 @@ function Page() { variant="light" leftSection={} radius="md" - onClick={() => router.push(`/admin/desa/profile/profile-perbekel/${perbekel.id}`)} + onClick={() => router.push(`/admin/desa/profil/profil-perbekel/${perbekel.id}`)} > Edit diff --git a/src/app/admin/_com/list_PageAdmin.tsx b/src/app/admin/_com/list_PageAdmin.tsx index c6208d81..6574cdb7 100644 --- a/src/app/admin/_com/list_PageAdmin.tsx +++ b/src/app/admin/_com/list_PageAdmin.tsx @@ -91,8 +91,8 @@ export const devBar = [ children: [ { id: "Desa_1", - name: "Profile", - path: "/admin/desa/profile/profile-desa" + name: "Profil", + path: "/admin/desa/profil/profil-desa" }, { id: "Desa_2", @@ -495,8 +495,8 @@ export const navBar = [ children: [ { id: "Desa_1", - name: "Profile", - path: "/admin/desa/profile/profile-desa" + name: "Profil", + path: "/admin/desa/profil/profil-desa" }, { id: "Desa_2", @@ -899,8 +899,8 @@ export const role1 = [ children: [ { id: "Desa_1", - name: "Profile", - path: "/admin/desa/profile/profile-desa" + name: "Profil", + path: "/admin/desa/profil/profil-desa" }, { id: "Desa_2", diff --git a/src/app/darmasaba/(pages)/desa/profile/_com/BackButto.tsx b/src/app/darmasaba/(pages)/desa/profil/_com/BackButto.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/_com/BackButto.tsx rename to src/app/darmasaba/(pages)/desa/profil/_com/BackButto.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/page.tsx b/src/app/darmasaba/(pages)/desa/profil/page.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/page.tsx rename to src/app/darmasaba/(pages)/desa/profil/page.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/[id]/page.tsx b/src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/[id]/page.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/[id]/page.tsx rename to src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/[id]/page.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/page.tsx b/src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/page.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/page.tsx rename to src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/page.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/struktur.css b/src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/struktur.css similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/struktur-perangkat-desa/struktur.css rename to src/app/darmasaba/(pages)/desa/profil/struktur-perangkat-desa/struktur.css diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/lambangDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/lambangDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/lambangDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/lambangDesa.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/maskotDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/maskotDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/maskotDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/maskotDesa.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/motoDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/motoDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/motoDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/motoDesa.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/profilPerbekel.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/profilPerbekel.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/profilPerbekel.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/profilPerbekel.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/profileDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/profileDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/profileDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/profileDesa.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/sejarahDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/sejarahDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/sejarahDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/sejarahDesa.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/semuaPerbekel.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/semuaPerbekel.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/semuaPerbekel.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/semuaPerbekel.tsx diff --git a/src/app/darmasaba/(pages)/desa/profile/ui/visimisiDesa.tsx b/src/app/darmasaba/(pages)/desa/profil/ui/visimisiDesa.tsx similarity index 100% rename from src/app/darmasaba/(pages)/desa/profile/ui/visimisiDesa.tsx rename to src/app/darmasaba/(pages)/desa/profil/ui/visimisiDesa.tsx diff --git a/src/app/darmasaba/(pages)/ppid/profile-ppid/page.tsx b/src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx similarity index 100% rename from src/app/darmasaba/(pages)/ppid/profile-ppid/page.tsx rename to src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx diff --git a/src/app/darmasaba/_com/main-page/kepuasan/index.tsx b/src/app/darmasaba/_com/main-page/kepuasan/index.tsx index d303760c..539ad85a 100644 --- a/src/app/darmasaba/_com/main-page/kepuasan/index.tsx +++ b/src/app/darmasaba/_com/main-page/kepuasan/index.tsx @@ -179,26 +179,61 @@ function Kepuasan() { - - Pelayanan Terhadap Publik Desa Darmasaba - - Total Responden - + + + Pelayanan Terhadap Publik Desa Darmasaba + + + + Total Responden + + {state.findMany.total.toLocaleString('id-ID')} - + + + @@ -443,34 +478,62 @@ function Kepuasan() { - + - + Pelayanan Terhadap Publik Desa Darmasaba - - Total Responden - + + + Total Responden + + {state.findMany.total.toLocaleString('id-ID')} - + + + @@ -499,7 +562,7 @@ function Kepuasan() { withLabels withTooltip labelsPosition="inside" - + labelsType="percent" size={200} data={donutDataJenisKelamin} @@ -537,7 +600,7 @@ function Kepuasan() { withTooltip tooltipAnimationDuration={200} withLabels - + labelsPosition="inside" labelsType="percent" withLabelsLine @@ -581,7 +644,7 @@ function Kepuasan() { withTooltip tooltipAnimationDuration={200} withLabels - + labelsPosition="inside" labelsType="percent" withLabelsLine diff --git a/src/con/navbar-list-menu.ts b/src/con/navbar-list-menu.ts index c9574c47..35fbebc2 100644 --- a/src/con/navbar-list-menu.ts +++ b/src/con/navbar-list-menu.ts @@ -5,8 +5,8 @@ const navbarListMenu = [ children: [ { id: "1.1", - name: "Profile PPID", - href: "/darmasaba/ppid/profile-ppid" + name: "Profil PPID", + href: "/darmasaba/ppid/profil-ppid" }, { id: "1.2", @@ -53,8 +53,8 @@ const navbarListMenu = [ children: [ { id: "2.1", - name: "Profile", - href: "/darmasaba/desa/profile" + name: "Profil", + href: "/darmasaba/desa/profil" }, { id: "2.2", From 242ea86f777ef78a256f23539f44571f9f579fdc Mon Sep 17 00:00:00 2001 From: nico Date: Wed, 10 Dec 2025 17:44:31 +0800 Subject: [PATCH 2/2] Fix konsisten font, menu landing page & PPID --- .../daftar-informasi-publik/[id]/page.tsx | 54 +-- .../ppid/daftar-informasi-publik/page.tsx | 103 ++++-- .../(pages)/ppid/dasar-hukum/page.tsx | 58 ++-- .../ppid/indeks-kepuasan-masyarakat/page.tsx | 258 ++++++++------ .../ppid/permohonan-informasi-publik/page.tsx | 70 ++-- .../page.tsx | 72 ++-- .../(pages)/ppid/profil-ppid/page.tsx | 197 ++++++++--- .../(pages)/ppid/struktur-ppid/[id]/page.tsx | 45 ++- .../(pages)/ppid/struktur-ppid/page.tsx | 65 ++-- .../(pages)/ppid/visi-misi-ppid/page.tsx | 95 ++++-- .../darmasaba/_com/ModernNewsNotification.tsx | 1 + src/app/darmasaba/_com/NewsReaderalanding.tsx | 1 + .../darmasaba/_com/main-page/apbdes/index.tsx | 98 +++--- .../_com/main-page/desaantikorupsi/index.tsx | 92 +++-- .../_com/main-page/kepuasan/index.tsx | 225 ++++++------ .../main-page/landing-page/ModuleView.tsx | 26 +- .../main-page/landing-page/ProfileView.tsx | 59 ++-- .../main-page/landing-page/SosmedView.tsx | 15 +- .../_com/main-page/landing-page/index.tsx | 63 +++- .../_com/main-page/layanan/index.tsx | 85 ++++- .../_com/main-page/penghargaan/index.tsx | 319 ++++++++++++------ .../_com/main-page/potensi/index.tsx | 63 +++- .../_com/main-page/prestasi/index.tsx | 75 ++-- .../darmasaba/_com/main-page/sdgs/index.tsx | 62 ++-- src/app/darmasaba/page.tsx | 4 +- 25 files changed, 1505 insertions(+), 700 deletions(-) diff --git a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/[id]/page.tsx b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/[id]/page.tsx index 16981c7e..9a53b209 100644 --- a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/[id]/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/[id]/page.tsx @@ -12,6 +12,7 @@ import { Skeleton, Stack, Text, + Title, } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; @@ -41,9 +42,9 @@ export default function DetailInformasiPublikUser() { return (
- + Informasi tidak ditemukan - </Text> + @@ -75,53 +76,60 @@ export default function DetailInformasiPublikUser() { shadow="xs" > - Detail Informasi Publik - + + {/* CONTENT */} + {/* Jenis Informasi */} - + Jenis Informasi - </Text> - <Text fz={{ base: 'sm', md: 'md' }} c="dimmed"> + + {data.jenisInformasi || '-'} + {/* Tanggal Publikasi */} - + Tanggal Publikasi - </Text> - <Text fz={{ base: 'sm', md: 'md' }} c="dimmed"> + + {data.tanggal ? new Date(data.tanggal).toLocaleDateString('id-ID', { - day: '2-digit', - month: 'long', - year: 'numeric', - }) + day: '2-digit', + month: 'long', + year: 'numeric', + }) : '-'} + {/* Deskripsi */} - + Deskripsi - </Text> + + @@ -130,4 +138,4 @@ export default function DetailInformasiPublikUser() { ); -} \ No newline at end of file +} diff --git a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/page.tsx b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/page.tsx index 9b9e12e3..7208dcfa 100644 --- a/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/daftar-informasi-publik/page.tsx @@ -21,7 +21,8 @@ import { TableTr, Text, TextInput, - Tooltip + Tooltip, + Title } from '@mantine/core'; import { useDebouncedValue, useShallowEffect } from '@mantine/hooks'; import { IconBrandWhatsapp, IconDeviceImacCog, IconFileInfo, IconMail, IconSearch } from '@tabler/icons-react'; @@ -33,7 +34,7 @@ import { useTransitionRouter } from 'next-view-transitions'; function Page() { const listData = useProxy(daftarInformasiPublik) const [search, setSearch] = useState('') - const [debouncedSearch] = useDebouncedValue(search, 1000); // 500ms delay + const [debouncedSearch] = useDebouncedValue(search, 1000); // 1000ms delay const router = useTransitionRouter() const { data, @@ -65,20 +66,49 @@ function Page() { +
- Logo Desa Darmasaba + Logo Desa Darmasaba
- + + Daftar Informasi Publik - </Text> - <Box px={{ base: "md", md: 100 }}> + + + - + Tentang Informasi Publik - </Text> - <Text ta={"center"} fz={{ base: 'sm', md: 'md' }} c="dimmed"> + + + Daftar Informasi Publik Desa Darmasaba adalah kumpulan data yang dapat diakses oleh masyarakat sesuai dengan ketentuan peraturan yang berlaku. @@ -97,8 +127,8 @@ function Page() { {data.length === 0 ? (
- - Tidak ada informasi publik yang ditemukan. + + Tidak ada informasi publik yang ditemukan.
) : ( @@ -113,27 +143,42 @@ function Page() { Aksi + {data.map((item, index) => ( - {(page - 1) * 5 + index + 1} + + + {(page - 1) * 5 + index + 1} + + + - + {item.jenisInformasi} + - + + - + {item.tanggal ? new Date(item.tanggal).toLocaleDateString('id-ID', { day: '2-digit', month: 'long', @@ -142,6 +187,7 @@ function Page() { + @@ -152,8 +198,9 @@ function Page() { color="blue" leftSection={} onClick={() => router.push(`/darmasaba/ppid/daftar-informasi-publik/${item.id}`)} + aria-label={`Detail ${item.jenisInformasi}`} > - Detail + Detail @@ -178,17 +225,27 @@ function Page() { - Kontak PPID + + Kontak PPID + + - - - Email: ppid@desadarmasaba.id + + + Email:{' '} + + ppid@desadarmasaba.id + + - - - WhatsApp: 081-xxx-xxx-xxx + + + WhatsApp:{' '} + + 081-xxx-xxx-xxx + diff --git a/src/app/darmasaba/(pages)/ppid/dasar-hukum/page.tsx b/src/app/darmasaba/(pages)/ppid/dasar-hukum/page.tsx index 7b66459c..5e63b18e 100644 --- a/src/app/darmasaba/(pages)/ppid/dasar-hukum/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/dasar-hukum/page.tsx @@ -1,7 +1,7 @@ 'use client' import stateDasarHukum from '@/app/admin/(dashboard)/_state/ppid/dasar_hukum/dasarHukum'; import colors from '@/con/colors'; -import { Box, Paper, Skeleton, Stack, Text, Transition } from '@mantine/core'; +import { Box, Paper, Skeleton, Stack, Text, Transition, Title } from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { useProxy } from 'valtio/utils'; import { IconBook2 } from '@tabler/icons-react'; @@ -31,31 +31,39 @@ function Page() { - + + {/* HEADER */} + - Dasar Hukum - - + + + Informasi regulasi dan kebijakan resmi yang menjadi dasar hukum + + {/* CONTENT */} {dataArray.map((item, k) => ( - + + {/* CONTENT */} diff --git a/src/app/darmasaba/(pages)/ppid/indeks-kepuasan-masyarakat/page.tsx b/src/app/darmasaba/(pages)/ppid/indeks-kepuasan-masyarakat/page.tsx index 7dadf3d7..ed3f1d36 100644 --- a/src/app/darmasaba/(pages)/ppid/indeks-kepuasan-masyarakat/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/indeks-kepuasan-masyarakat/page.tsx @@ -3,7 +3,22 @@ import indeksKepuasanState from "@/app/admin/(dashboard)/_state/landing-page/indeks-kepuasan"; import colors from "@/con/colors"; import { BarChart, PieChart } from '@mantine/charts'; -import { Box, Button, Center, Container, Flex, Modal, Paper, Select, SimpleGrid, Skeleton, Stack, Text, TextInput, Title } from "@mantine/core"; +import { + Box, + Button, + Center, + Container, + Flex, + Modal, + Paper, + Select, + SimpleGrid, + Skeleton, + Stack, + Text, + TextInput, + Title +} from "@mantine/core"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { useState } from "react"; import { useProxy } from "valtio/utils"; @@ -15,16 +30,14 @@ interface ChartDataItem { label?: string; } - - function Kepuasan() { -const state = useProxy(indeksKepuasanState.responden); + const state = useProxy(indeksKepuasanState.responden); const { data, loading } = state.findMany; const [donutDataJenisKelamin, setDonutDataJenisKelamin] = useState([]); const [donutDataRating, setDonutDataRating] = useState([]); const [donutDataKelompokUmur, setDonutDataKelompokUmur] = useState([]); const [barChartData, setBarChartData] = useState>([]); - const [opened, { open, close }] = useDisclosure(false) + const [opened, { open, close }] = useDisclosure(false); const resetForm = () => { state.create.form = { @@ -34,14 +47,14 @@ const state = useProxy(indeksKepuasanState.responden); jenisKelaminId: "", ratingId: "", kelompokUmurId: "", - } - } + }; + }; useShallowEffect(() => { - indeksKepuasanState.jenisKelaminResponden.findMany.load() - indeksKepuasanState.pilihanRatingResponden.findMany.load() - indeksKepuasanState.kelompokUmurResponden.findMany.load() - },[]) + indeksKepuasanState.jenisKelaminResponden.findMany.load(); + indeksKepuasanState.pilihanRatingResponden.findMany.load(); + indeksKepuasanState.kelompokUmurResponden.findMany.load(); + }, []); const handleSubmit = async () => { try { @@ -51,11 +64,11 @@ const state = useProxy(indeksKepuasanState.responden); await state.findUnique.load(idStr); } resetForm(); - close() + close(); } catch (error) { console.error('Error submitting form:', error); } - } + }; // Load data on component mount useShallowEffect(() => { @@ -154,33 +167,52 @@ const state = useProxy(indeksKepuasanState.responden); if (data.length === 0) { return ( - +
- Indeks Kepuasan Masyarakat + {/* Main page title — converted to Title, use order (don't set fz according to rules) */} + + Indeks Kepuasan Masyarakat +
- Ukur kebahagiaan warga, tingkatkan layanan desa! Dengan partisipasi aktif masyarakat, kami berkomitmen untuk terus memperbaiki layanan agar lebih transparan, efektif, dan sesuai dengan kebutuhan warga. Kepuasan Anda adalah prioritas utama kami dalam membangun desa yang lebih baik! + + {/* Body lead text — responsive fz & lh */} + + Ukur kebahagiaan warga, tingkatkan layanan desa! Dengan partisipasi aktif masyarakat, kami berkomitmen untuk terus memperbaiki layanan agar lebih transparan, efektif, dan sesuai dengan kebutuhan warga. Kepuasan Anda adalah prioritas utama kami dalam membangun desa yang lebih baik! + +
+ > + Ajukan Responden +
- - - - - - Pelayanan Terhadap Publik Desa Darmasaba + + + + + + + {/* Section heading — use Title order for hierarchy */} + + Pelayanan Terhadap Publik Desa Darmasaba + + - Total Responden - - {state.findMany.total.toLocaleString('id-ID')} + + Total Responden + {/* Big number — use Title for emphasis */} + + {state.findMany.total.toLocaleString('id-ID')} + + - - + + + {/* Chart Jenis Kelamin */} - Jenis Kelamin + Jenis Kelamin + {donutDataJenisKelamin.every(item => item.value === 0) ? ( - + Belum ada data untuk ditampilkan dalam grafik ) : ( @@ -218,7 +248,7 @@ const state = useProxy(indeksKepuasanState.responden); withTooltip labelsPosition="inside" labelsType="percent" - size={250} // Fixed size in pixels + size={250} data={donutDataJenisKelamin} />
@@ -227,7 +257,7 @@ const state = useProxy(indeksKepuasanState.responden); {donutDataJenisKelamin.map((entry) => ( - {entry.name}: {entry.value} + {entry.name}: {entry.value} ))} @@ -240,9 +270,10 @@ const state = useProxy(indeksKepuasanState.responden); {/* Chart Rating */} - Ulasan + Ulasan + {donutDataRating.every(item => item.value === 0) ? ( - + Belum ada data untuk ditampilkan dalam grafik ) : ( @@ -267,7 +298,7 @@ const state = useProxy(indeksKepuasanState.responden); {donutDataRating.map((entry) => ( - + {entry.name}: {entry.value} @@ -283,9 +314,10 @@ const state = useProxy(indeksKepuasanState.responden); {/* Chart Kelompok Umur */} - Umur + Umur + {donutDataKelompokUmur.every(item => item.value === 0) ? ( - + Belum ada data untuk ditampilkan dalam grafik ) : ( @@ -310,7 +342,7 @@ const state = useProxy(indeksKepuasanState.responden); {donutDataKelompokUmur.map((entry) => ( - + {entry.name}: {entry.value} @@ -326,18 +358,21 @@ const state = useProxy(indeksKepuasanState.responden);
+ {/* Modal */} - + { state.create.form.name = val.currentTarget.value; }} + // label typography + labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any} /> { state.create.form.tanggal = val.currentTarget.value; }} + labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any} /> { @@ -376,17 +414,18 @@ const state = useProxy(indeksKepuasanState.responden); }} data={ (indeksKepuasanState.pilihanRatingResponden.findMany.data || []) - .filter(Boolean) // Hapus null, undefined, dll + .filter(Boolean) .map((item) => ({ value: item.id, label: item.name || 'Tanpa Nama', })) } disabled={indeksKepuasanState.pilihanRatingResponden.findMany.loading} + labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any} /> { @@ -625,17 +674,18 @@ const state = useProxy(indeksKepuasanState.responden); }} data={ (indeksKepuasanState.jenisKelaminResponden.findMany.data || []) - .filter(Boolean) // Hapus null, undefined, dll + .filter(Boolean) .map((item) => ({ value: item.id, label: item.name || 'Tanpa Nama', })) } disabled={indeksKepuasanState.jenisKelaminResponden.findMany.loading} + labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any} /> { @@ -661,19 +712,16 @@ const state = useProxy(indeksKepuasanState.responden); }} data={ (indeksKepuasanState.kelompokUmurResponden.findMany.data || []) - .filter(Boolean) // Hapus null, undefined, dll + .filter(Boolean) .map((item) => ({ value: item.id, label: item.name || 'Tanpa Nama', })) } disabled={indeksKepuasanState.kelompokUmurResponden.findMany.loading} + labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any} /> - diff --git a/src/app/darmasaba/(pages)/ppid/permohonan-informasi-publik/page.tsx b/src/app/darmasaba/(pages)/ppid/permohonan-informasi-publik/page.tsx index 6bd6ebd1..f5d12f86 100644 --- a/src/app/darmasaba/(pages)/ppid/permohonan-informasi-publik/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/permohonan-informasi-publik/page.tsx @@ -12,7 +12,8 @@ import { SimpleGrid, Stack, Text, - TextInput + TextInput, + Title } from '@mantine/core'; import { IconSend2 } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; @@ -55,7 +56,7 @@ function Page() { const submitForms = async () => { const { create } = permohonanInformasiPublikState.statepermohonanInformasiPublik; - const hasil = await create.create(); // tunggu hasilnya + const hasil = await create.create(); if (hasil) { router.push('/darmasaba/permohonan/berhasil'); } @@ -67,14 +68,17 @@ function Page() {
- Permohonan Informasi Publik - + @@ -85,15 +89,18 @@ function Page() { shadow="sm" bg={colors['white-trans-1']} > - Tata Cara Permohonan - + {steps.map((v) => ( @@ -116,27 +123,38 @@ function Page() { c={colors['blue-button']} ta="center" fw="bold" - fz="h3" + fz="h2" + lh={1} > {v.number} + + + {v.title} + + - {v.title} - - {v.desc}
))} + - Formulir Permohonan Informasi - + + {/* INPUTS */} + + + + + { permohonanInformasiPublikState.statepermohonanInformasiPublik.create.form.caraMemperolehInformasiId = val.id; }} /> + { permohonanInformasiPublikState.statepermohonanInformasiPublik.create.form.caraMemperolehSalinanInformasiId = @@ -241,6 +270,7 @@ function Page() { Kirim Permohonan + diff --git a/src/app/darmasaba/(pages)/ppid/permohonan-keberatan-informasi-publik/page.tsx b/src/app/darmasaba/(pages)/ppid/permohonan-keberatan-informasi-publik/page.tsx index 871fd6f5..80de7c2e 100644 --- a/src/app/darmasaba/(pages)/ppid/permohonan-keberatan-informasi-publik/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/permohonan-keberatan-informasi-publik/page.tsx @@ -12,6 +12,7 @@ import { Stack, Text, TextInput, + Title, Tooltip, } from '@mantine/core'; import { @@ -56,13 +57,8 @@ function Page() { const router = useRouter(); const submit = async () => { - const { create } = stateKeberatan; - - const hasil = await create.create(); // tunggu hasilnya - - if (hasil) { - router.push('/darmasaba/permohonan/berhasil'); - } + const hasil = await stateKeberatan.create.create(); + if (hasil) router.push('/darmasaba/permohonan/berhasil'); }; return ( @@ -72,15 +68,16 @@ function Page() { - Permohonan Keberatan Informasi Publik - + + {/* Tentang */} - + Tentang Permohonan Keberatan - </Text> - <Text ta="justify" fz={{ base: 'sm', md: 'md' }} lh={1.6}> + + + Jika Anda merasa permohonan informasi tidak ditanggapi dengan baik atau ditolak, Anda berhak mengajukan keberatan melalui formulir berikut. + {/* Alur */} - Alur Pengajuan Keberatan - + {data.map((v) => ( @@ -124,15 +131,23 @@ function Page() {
+ {v.title} - + + {v.desc}
@@ -141,6 +156,7 @@ function Page() {
+ {/* Form */} - Formulir Keberatan - + - + Alasan Keberatan + {/* Kontak */} - + Kontak PPID - </Text> - <Text fz="sm" c="dimmed"> + + + Email: desadarmasaba@badungkab.go.id | WhatsApp: 081-xxx-xxx-xxx diff --git a/src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx b/src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx index 00a0102e..e3ba98df 100644 --- a/src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/profil-ppid/page.tsx @@ -1,79 +1,134 @@ 'use client' import stateProfilePPID from '@/app/admin/(dashboard)/_state/ppid/profile_ppid/profile_PPID'; import colors from '@/con/colors'; -import { Box, Center, Divider, Flex, Image, List, Paper, SimpleGrid, Skeleton, Stack, Text } from '@mantine/core'; +import { + Box, + Center, + Divider, + Flex, + Image, + List, + Paper, + SimpleGrid, + Skeleton, + Stack, + Text, + Title, +} from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; -import { IconBuildingCommunity, IconTargetArrow, IconTimeline, IconUser } from '@tabler/icons-react'; +import { + IconBuildingCommunity, + IconTargetArrow, + IconTimeline, + IconUser, +} from '@tabler/icons-react'; import { useProxy } from 'valtio/utils'; import BackButton from '../../desa/layanan/_com/BackButto'; import ScrollToTopButton from '@/app/darmasaba/_com/scrollToTopButton'; function Page() { - const allList = useProxy(stateProfilePPID) - useShallowEffect(() => { - allList.profile.load("edit") - }, []) + const allList = useProxy(stateProfilePPID); - if (!allList.profile.data) return ( - - - - - - - - - - {Array.from({ length: 8 }).map((_, i) => ( - - ))} - - - - ) + useShallowEffect(() => { + allList.profile.load('edit'); + }, []); + + // LOADING SKELETON + if (!allList.profile.data) + return ( + + + + + + + + + + {Array.from({ length: 8 }).map((_, i) => ( + + ))} + + + + ); const dataArray = Array.isArray(allList.profile.data) ? allList.profile.data - : [allList.profile.data] + : [allList.profile.data]; return ( + {/* Back Button */} + + {/* Page Title */} - + Profil PPID Desa Darmasaba - </Text> + + {dataArray.map((item) => ( - + - + {/* LOGO & TITLE */} +
- Logo Desa + Logo Desa
- + + Pejabat Pengelola Informasi dan Dokumentasi - </Text> +
+ + {/* GRID BLOCK */} + {/* FOTO + NAMA */} Foto Pimpinan e.currentTarget.src = "/perbekel.png"} + onError={(e) => (e.currentTarget.src = '/perbekel.png')} loading="lazy" /> + - + {item.name} - </Text> + + {/* BIOGRAFI & RIWAYAT */} + {/* BIO */} - Biografi + + Biografi + + - + + + {/* RIWAYAT */} - Riwayat Karir + + Riwayat Karir + + - + @@ -116,26 +200,46 @@ function Page() { + {/* ORGANISASI */} - Pengalaman Organisasi + + Pengalaman Organisasi + + - + + {/* PROGRAM UNGGULAN */} - Program Unggulan + + Program Unggulan + + - + @@ -143,10 +247,11 @@ function Page() {
))}
- {/* Tombol Scroll ke Atas */} + + {/* tombol scroll */}
- ) + ); } -export default Page +export default Page; diff --git a/src/app/darmasaba/(pages)/ppid/struktur-ppid/[id]/page.tsx b/src/app/darmasaba/(pages)/ppid/struktur-ppid/[id]/page.tsx index 9b0d45cc..3b42bec3 100644 --- a/src/app/darmasaba/(pages)/ppid/struktur-ppid/[id]/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/struktur-ppid/[id]/page.tsx @@ -27,7 +27,6 @@ function DetailPegawaiUser() { statePegawai.findUnique.load(params?.id as string); }, []); - if (!statePegawai.findUnique.data) { return ( @@ -52,7 +51,7 @@ function DetailPegawaiUser() { }} > - + Kembali @@ -65,9 +64,7 @@ function DetailPegawaiUser() { radius="lg" shadow="sm" bg="white" - style={{ - border: '1px solid #eaeaea', - }} + style={{ border: '1px solid #eaeaea' }} > {/* Foto Profil */} @@ -84,10 +81,23 @@ function DetailPegawaiUser() { {/* Nama & Jabatan */} - + <Title + order={2} + c={colors['blue-button']} + fw={700} + fz={{ base: 'xl', md: '28px' }} + lh="1.2" + ta="center" + > {data.namaLengkap || '-'} {data.gelarAkademik || ''} - + + {data.posisi?.nama || 'Posisi tidak tersedia'} @@ -105,10 +115,10 @@ function DetailPegawaiUser() { value={ data.tanggalMasuk ? new Date(data.tanggalMasuk).toLocaleDateString('id-ID', { - day: '2-digit', - month: 'long', - year: 'numeric', - }) + day: '2-digit', + month: 'long', + year: 'numeric', + }) : '-' } /> @@ -123,7 +133,7 @@ function DetailPegawaiUser() { ); } -/* Komponen kecil untuk menampilkan baris informasi */ +/* Komponen Baris Informasi */ function InfoRow({ label, value, @@ -137,11 +147,18 @@ function InfoRow({ }) { return ( - + {label} + Struktur Organisasi PPID - + Gambaran visual peran dan pegawai yang ditugaskan. Arahkan kursor untuk melihat detail atau klik node untuk fokus tampilan. @@ -105,8 +106,8 @@ function StrukturOrganisasiPPID() {
- Memuat struktur organisasi… - + Memuat struktur organisasi… + Mengambil data pegawai dan posisi. Mohon tunggu sebentar. @@ -132,10 +133,10 @@ function StrukturOrganisasiPPID() {
- + <Title order={3} mt="md" fz={{ base: 16, md: 18 }} lh={1.15}> Data pegawai belum tersedia - + Belum ada data pegawai yang tercatat untuk PPID. @@ -232,11 +233,18 @@ function StrukturOrganisasiPPID() { {/* 🔍 Controls */} } - style={{ flexShrink: 0 }} // 👈 pastikan tidak mengecil + style={{ flexShrink: 0 }} > - Zoom Out + Zoom Out - {Math.round(scale * 100)}% + + {Math.round(scale * 100)}% + } style={{ flexShrink: 0 }} > - Zoom In + Zoom In - Reset + Reset - {isFullscreen ? 'Exit' : 'Fullscreen'} + + {isFullscreen ? 'Exit' : 'Fullscreen'} + @@ -451,18 +465,17 @@ function NodeCard({ node, router }: any) { {/* Name */} {name} @@ -470,18 +483,18 @@ function NodeCard({ node, router }: any) { {/* Title/Position */} {title} @@ -504,7 +517,7 @@ function NodeCard({ node, router }: any) { fontWeight: 600, }} > - Lihat Detail + Lihat Detail )} diff --git a/src/app/darmasaba/(pages)/ppid/visi-misi-ppid/page.tsx b/src/app/darmasaba/(pages)/ppid/visi-misi-ppid/page.tsx index 43440556..f3541077 100644 --- a/src/app/darmasaba/(pages)/ppid/visi-misi-ppid/page.tsx +++ b/src/app/darmasaba/(pages)/ppid/visi-misi-ppid/page.tsx @@ -1,7 +1,18 @@ 'use client' import stateVisiMisiPPID from '@/app/admin/(dashboard)/_state/ppid/visi_misi_ppid/visimisiPPID'; import colors from '@/con/colors'; -import { Box, Center, Image, Paper, Skeleton, Stack, Text, Divider, Transition } from '@mantine/core'; +import { + Box, + Center, + Image, + Paper, + Skeleton, + Stack, + Text, + Divider, + Transition, + Title +} from '@mantine/core'; import { useShallowEffect } from '@mantine/hooks'; import { useProxy } from 'valtio/utils'; import { IconSparkles } from '@tabler/icons-react'; @@ -9,6 +20,7 @@ import BackButton from '../../desa/layanan/_com/BackButto'; function Page() { const allList = useProxy(stateVisiMisiPPID); + useShallowEffect(() => { allList.findById.load("1"); }, []); @@ -35,7 +47,7 @@ function Page() { {dataArray.map((item) => ( - + {(styles) => ( + + {/* ==== MOTTO SECTION ==== */}
- Logo Desa Darmasaba + Logo Desa Darmasaba
- Moto PPID Desa Darmasaba - - + + + Memberikan informasi yang cepat, mudah, tepat, dan transparan
- } /> + } + /> + {/* ==== VISI SECTION ==== */} - - Visi PPID - - + Visi PPID + + + + {/* ==== MISI SECTION ==== */} - + Misi PPID - </Text> + + +
)} diff --git a/src/app/darmasaba/_com/ModernNewsNotification.tsx b/src/app/darmasaba/_com/ModernNewsNotification.tsx index e2663db0..2fa14f1c 100644 --- a/src/app/darmasaba/_com/ModernNewsNotification.tsx +++ b/src/app/darmasaba/_com/ModernNewsNotification.tsx @@ -168,6 +168,7 @@ export default function ModernNewsNotification({ position: "fixed", bottom: "24px", right: "24px", + zIndex: 1 }} > { borderBottomRightRadius: '20px', borderTopRightRadius: '20px', transition: 'all 0.3s ease', + zIndex: 1 }} > {isPointerMode ? : } diff --git a/src/app/darmasaba/_com/main-page/apbdes/index.tsx b/src/app/darmasaba/_com/main-page/apbdes/index.tsx index ad848d55..1e70c8e0 100644 --- a/src/app/darmasaba/_com/main-page/apbdes/index.tsx +++ b/src/app/darmasaba/_com/main-page/apbdes/index.tsx @@ -5,7 +5,20 @@ import apbdes from '@/app/admin/(dashboard)/_state/landing-page/apbdes' import APBDesProgress from '@/app/darmasaba/(tambahan)/apbdes/lib/apbDesaProgress' import { transformAPBDesData } from '@/app/darmasaba/(tambahan)/apbdes/lib/types' import colors from '@/con/colors' -import { ActionIcon, BackgroundImage, Box, Button, Center, Group, Loader, Select, SimpleGrid, Stack, Text } from '@mantine/core' +import { + ActionIcon, + BackgroundImage, + Box, + Button, + Center, + Group, + Loader, + Select, + SimpleGrid, + Stack, + Text, + Title, +} from '@mantine/core' import { IconDownload } from '@tabler/icons-react' import Link from 'next/link' import { useEffect, useState } from 'react' @@ -38,17 +51,15 @@ function Apbdes() { const dataAPBDes = state.findMany.data || [] const years = Array.from(new Set(dataAPBDes.map((item: any) => item.tahun))) - .sort((a, b) => b - a) // urutkan descending + .sort((a, b) => b - a) .map(year => ({ value: year.toString(), label: `Tahun ${year}` })) - // Pilih tahun pertama sebagai default jika belum ada yang dipilih useEffect(() => { if (years.length > 0 && !selectedYear) { setSelectedYear(years[0].value) } }, [years, selectedYear]) - // Transform and filter data based on selected year const currentApbdes = dataAPBDes.length > 0 ? transformAPBDesData(dataAPBDes.find(item => item?.tahun?.toString() === selectedYear) || dataAPBDes[0]) : null @@ -57,17 +68,31 @@ function Apbdes() { return ( - + {/* 📌 HEADING */} + - + {textHeading.title} - </Text> - <Text ta={"center"} fz={{ base: "1rem", md: "1.3rem" }}> + + + {textHeading.des} + {/* Button Lihat Semua */}