diff --git a/src/app/admin/(dashboard)/desa/berita/layout.tsx b/src/app/admin/(dashboard)/desa/berita/layout.tsx index 4c8e4901..25bf8684 100644 --- a/src/app/admin/(dashboard)/desa/berita/layout.tsx +++ b/src/app/admin/(dashboard)/desa/berita/layout.tsx @@ -1,8 +1,30 @@ 'use client' import React from 'react'; import LayoutTabsBerita from './_com/layoutTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + + return ( {children} diff --git a/src/app/admin/(dashboard)/desa/gallery/layout.tsx b/src/app/admin/(dashboard)/desa/gallery/layout.tsx index fbaf56c0..1f40b5ef 100644 --- a/src/app/admin/(dashboard)/desa/gallery/layout.tsx +++ b/src/app/admin/(dashboard)/desa/gallery/layout.tsx @@ -1,7 +1,29 @@ 'use client' +import { usePathname } from "next/navigation"; import LayoutTabsGallery from "./lib/layoutTabs" +import { Box } from "@mantine/core"; export default function Layout({ children }: { children: React.ReactNode }) { +const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + + return ( {children} diff --git a/src/app/admin/(dashboard)/desa/layanan/layout.tsx b/src/app/admin/(dashboard)/desa/layanan/layout.tsx index 7113ca7e..c4413f87 100644 --- a/src/app/admin/(dashboard)/desa/layanan/layout.tsx +++ b/src/app/admin/(dashboard)/desa/layanan/layout.tsx @@ -1,10 +1,31 @@ 'use client' +import { usePathname } from "next/navigation"; import LayoutTabsLayanan from "../_com/layoutTabLayanan"; +import { Box } from "@mantine/core"; export default function Layout({children} : {children: React.ReactNode}) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/layanan/semua → panjang 5 → list + // - /darmasaba/desa/layanan/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/layanan/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu return ( - + {children} - - ) + + ); + } + + return ( + + {children} + + ); } \ No newline at end of file diff --git a/src/app/admin/(dashboard)/desa/pengumuman/layout.tsx b/src/app/admin/(dashboard)/desa/pengumuman/layout.tsx index 4a4acdbd..6ecbb342 100644 --- a/src/app/admin/(dashboard)/desa/pengumuman/layout.tsx +++ b/src/app/admin/(dashboard)/desa/pengumuman/layout.tsx @@ -1,7 +1,29 @@ +'use client' import React from 'react'; import LayoutTabs from './_com/layoutTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/pengumuman/semua → panjang 5 → list + // - /darmasaba/desa/pengumuman/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/pengumuman/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/desa/potensi/layout.tsx b/src/app/admin/(dashboard)/desa/potensi/layout.tsx index b677970c..7e83e086 100644 --- a/src/app/admin/(dashboard)/desa/potensi/layout.tsx +++ b/src/app/admin/(dashboard)/desa/potensi/layout.tsx @@ -1,8 +1,29 @@ 'use client' import React from 'react'; import LayoutTabsPotensi from './_lib/layoutTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/desa/profil/layout.tsx b/src/app/admin/(dashboard)/desa/profil/layout.tsx index f82687f5..475635df 100644 --- a/src/app/admin/(dashboard)/desa/profil/layout.tsx +++ b/src/app/admin/(dashboard)/desa/profil/layout.tsx @@ -1,8 +1,30 @@ 'use client' +import { usePathname } from "next/navigation"; import LayoutTabsDetail from "./_lib/layoutTabsDetail" +import { Box } from "@mantine/core"; export default function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + + return ( {children} diff --git a/src/app/admin/(dashboard)/keamanan/keamanan-lingkungan-pecalang-patwal/[id]/edit/page.tsx b/src/app/admin/(dashboard)/keamanan/keamanan-lingkungan-pecalang-patwal/[id]/edit/page.tsx index 898470c5..fdf71259 100644 --- a/src/app/admin/(dashboard)/keamanan/keamanan-lingkungan-pecalang-patwal/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/keamanan/keamanan-lingkungan-pecalang-patwal/[id]/edit/page.tsx @@ -142,7 +142,7 @@ function EditKeamananLingkungan() { }; return ( - + {/* Header */} - {/* Tabel */} - - + {/* Desktop Table */} + +
Nama Deskripsi - Aksi + + Aksi + @@ -104,25 +111,32 @@ function ListKeamananLingkungan({ search }: { search: string }) { filteredData.map((item) => ( - - - {item.name} - - + + {item.name} + - - - - + + - + @@ -130,8 +144,8 @@ function ListKeamananLingkungan({ search }: { search: string }) { ) : ( -
- +
+ Tidak ada data keamanan lingkungan yang cocok
@@ -141,6 +155,49 @@ function ListKeamananLingkungan({ search }: { search: string }) {
+ + {/* Mobile Cards */} + + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + Nama + {item.name} + + + Deskripsi + + + + + + + + + + )) + ) : ( +
+ + Tidak ada data keamanan lingkungan yang cocok + +
+ )} +
+
{/* Pagination */} @@ -152,8 +209,8 @@ function ListKeamananLingkungan({ search }: { search: string }) { window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} - mt="md" - mb="md" + mt={{ base: 'sm', md: 'md' }} + mb={{ base: 'sm', md: 'md' }} color="blue" radius="md" /> @@ -162,4 +219,4 @@ function ListKeamananLingkungan({ search }: { search: string }) { ); } -export default KeamananLingkungan; +export default KeamananLingkungan; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/keamanan/kontak-darurat/_lib/layoutTabs.tsx b/src/app/admin/(dashboard)/keamanan/kontak-darurat/_lib/layoutTabs.tsx index fe7c756e..d18e3c92 100644 --- a/src/app/admin/(dashboard)/keamanan/kontak-darurat/_lib/layoutTabs.tsx +++ b/src/app/admin/(dashboard)/keamanan/kontak-darurat/_lib/layoutTabs.tsx @@ -1,7 +1,7 @@ /* eslint-disable react-hooks/exhaustive-deps */ 'use client' import colors from '@/con/colors'; -import { ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title } from '@mantine/core'; +import { Box, ScrollArea, Stack, Tabs, TabsList, TabsPanel, TabsTab, Title } from '@mantine/core'; import { IconPhone, IconTag } from '@tabler/icons-react'; import { usePathname, useRouter } from 'next/navigation'; import React, { useEffect, useState } from 'react'; @@ -57,35 +57,76 @@ function LayoutTabs({ children }: { children: React.ReactNode }) { keepMounted={false} > {/* ✅ Scroll horizontal wrapper */} - - + + + {tabs.map((tab, i) => ( + + {tab.label} + + ))} + + +
+ + + - {tabs.map((tab, i) => ( - - {tab.label} - - ))} - - + + + {tabs.map((tab, i) => ( + + {tab.label} + + ))} + + + {tabs.map((tab, i) => ( + {/* Header */} - {/* Tabel */} - - + {/* Desktop: Table */} + +
- Nama Kontak - Nomor Telepon - Aksi + Nama Kontak + Nomor Telepon + Aksi @@ -103,12 +114,12 @@ function ListKontakItem({ search }: { search: string }) { filteredData.map((item) => ( - + {item.nama} - + {item.nomorTelepon || "-"} @@ -116,19 +127,26 @@ function ListKontakItem({ search }: { search: string }) { )) ) : ( - -
- + +
+ Tidak ada data kontak darurat item yang cocok
@@ -138,6 +156,58 @@ function ListKontakItem({ search }: { search: string }) {
+ + {/* Mobile: Card */} + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + + Nama Kontak + + + {item.nama} + + + + + Nomor Telepon + + + {item.nomorTelepon || "-"} + + + + + + + + )) + ) : ( +
+ + Tidak ada data kontak darurat item yang cocok + +
+ )} +
{/* Pagination */} @@ -159,4 +229,4 @@ function ListKontakItem({ search }: { search: string }) { ); } -export default KontakItem; +export default KontakItem; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/keamanan/kontak-darurat/kontak-darurat-keamanan/[id]/edit/page.tsx b/src/app/admin/(dashboard)/keamanan/kontak-darurat/kontak-darurat-keamanan/[id]/edit/page.tsx index 0e0180e5..80a8c6f1 100644 --- a/src/app/admin/(dashboard)/keamanan/kontak-darurat/kontak-darurat-keamanan/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/keamanan/kontak-darurat/kontak-darurat-keamanan/[id]/edit/page.tsx @@ -147,7 +147,7 @@ export default function EditKontakDaruratKeamanan() { })); return ( - + - {/* Tabel */} - - + {/* Desktop Table */} + +
- Kontak Darurat - Nama Kontak - Nomor Telepon - Aksi + Kontak Darurat + Nama Kontak + Nomor Telepon + Aksi @@ -104,17 +114,17 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) { filteredData.map((item) => ( - + {item.nama} - + {item.kategori?.nama} - + {item.kategori?.nomorTelepon || "-"} @@ -125,7 +135,7 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) { onClick={() => router.push(`/admin/keamanan/kontak-darurat/kontak-darurat-keamanan/${item.id}`)} > - Detail + Detail @@ -134,7 +144,7 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) {
- + Tidak ada data kontak darurat keamanan yang cocok
@@ -144,6 +154,55 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) {
+ + {/* Mobile Cards */} + + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + Kontak Darurat + + {item.nama} + + + + Nama Kontak + + {item.kategori?.nama} + + + + Nomor Telepon + + {item.kategori?.nomorTelepon || "-"} + + + + + + + + )) + ) : ( +
+ + Tidak ada data kontak darurat keamanan yang cocok + +
+ )} +
+
{/* Pagination */} @@ -165,4 +224,4 @@ function ListKontakDaruratKeamanan({ search }: { search: string }) { ); } -export default KontakDaruratKeamanan; +export default KontakDaruratKeamanan; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/keamanan/kontak-darurat/layout.tsx b/src/app/admin/(dashboard)/keamanan/kontak-darurat/layout.tsx index 4f25d331..0a2d0beb 100644 --- a/src/app/admin/(dashboard)/keamanan/kontak-darurat/layout.tsx +++ b/src/app/admin/(dashboard)/keamanan/kontak-darurat/layout.tsx @@ -1,8 +1,29 @@ 'use client' import React from 'react'; import LayoutTabs from './_lib/layoutTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/keamanan/laporan-publik/[id]/edit/page.tsx b/src/app/admin/(dashboard)/keamanan/laporan-publik/[id]/edit/page.tsx index 7aecff43..a079c8aa 100644 --- a/src/app/admin/(dashboard)/keamanan/laporan-publik/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/keamanan/laporan-publik/[id]/edit/page.tsx @@ -127,7 +127,7 @@ function EditLaporanPublik() { }; return ( - + {/* Header */} - - + + {/* Desktop Table */} + +
- Judul Laporan Publik - Tanggal - Status - Deskripsi - Aksi + Judul Laporan Publik + Tanggal + Status + Deskripsi + Aksi @@ -98,12 +111,12 @@ function ListLaporanPublik({ search }: { search: string }) { filteredData.map((item) => ( - + {item.judul} - + {new Date(item.tanggalWaktu).toLocaleDateString('id-ID')} @@ -131,9 +144,7 @@ function ListLaporanPublik({ search }: { search: string }) { - - - + @@ -153,7 +164,7 @@ function ListLaporanPublik({ search }: { search: string }) {
- + Tidak ada data laporan publik yang cocok
@@ -163,7 +174,88 @@ function ListLaporanPublik({ search }: { search: string }) {
+ + {/* Mobile Cards */} + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + Judul Laporan Publik + {item.judul} + + + Tanggal + + {new Date(item.tanggalWaktu).toLocaleDateString('id-ID')} + + + + Status + + {item.status} + + + + Deskripsi + + + + + + )) + ) : ( +
+ + Tidak ada data laporan publik yang cocok + +
+ )} +
+ + {/* Tambah Baru (Mobile only) */} + +
+ {/* Back button + Title */} - {/* Tabel */} - - + {/* Desktop Table */} + +
- Nama Pencegahan - Deskripsi - Deskripsi Singkat - Aksi + Nama Pencegahan + Deskripsi + Deskripsi Singkat + Aksi @@ -102,35 +114,29 @@ function ListPencegahanKriminalitas({ search }: { search: string }) { data.map((item) => ( - - - {item.judul} - - + + {item.judul} + - - - + - - - + @@ -148,7 +156,7 @@ function ListPencegahanKriminalitas({ search }: { search: string }) {
- + Tidak ada data pencegahan kriminalitas yang cocok
@@ -158,6 +166,71 @@ function ListPencegahanKriminalitas({ search }: { search: string }) {
+ + {/* Mobile Card View */} + + {data.length > 0 ? ( + data.map((item) => ( + + + + + Nama Pencegahan + + + {item.judul} + + + + + Deskripsi Singkat + + + + + + Deskripsi + + + + + + + + + )) + ) : ( +
+ + Tidak ada data pencegahan kriminalitas yang cocok + +
+ )} +
{/* Pagination */} @@ -175,8 +248,8 @@ function ListPencegahanKriminalitas({ search }: { search: string }) { radius="md" />
-
+ ); } -export default PencegahanKriminalitas; +export default PencegahanKriminalitas; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/keamanan/polsek-terdekat/[id]/edit/page.tsx b/src/app/admin/(dashboard)/keamanan/polsek-terdekat/[id]/edit/page.tsx index 736c9e4e..c1cf3ee5 100644 --- a/src/app/admin/(dashboard)/keamanan/polsek-terdekat/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/keamanan/polsek-terdekat/[id]/edit/page.tsx @@ -247,7 +247,7 @@ function EditPolsekTerdekat() { }; return ( - + {/* Modal Tambah */} + {/* Tombol Back */} - - + {/* Desktop Table */} + +
- Nama Polsek - Jarak - Alamat - Aksi + + + Nama Polsek + + + + + Jarak + + + + + Alamat + + + + + Aksi + + @@ -100,26 +127,31 @@ function ListPolsekTerdekat({ search }: { search: string }) { filteredData.map((item) => ( - - - {item.nama} - - + + {item.nama} + - {item.jarakKeDesa} - - {item.alamat} - + + {item.jarakKeDesa} + + + + + {item.alamat} + @@ -127,8 +159,8 @@ function ListPolsekTerdekat({ search }: { search: string }) { ) : ( -
- +
+ Tidak ada data Polsek yang cocok
@@ -138,6 +170,63 @@ function ListPolsekTerdekat({ search }: { search: string }) {
+ + {/* Mobile Cards */} + + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + + Nama Polsek + + + {item.nama} + + + + + Jarak + + + {item.jarakKeDesa} + + + + + Alamat + + + {item.alamat} + + + + + + + + )) + ) : ( +
+ + Tidak ada data Polsek yang cocok + +
+ )} +
+
{/* Pagination */} @@ -149,8 +238,8 @@ function ListPolsekTerdekat({ search }: { search: string }) { window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} - mt="md" - mb="md" + mt={{ base: 'lg', md: 'xl' }} + mb={{ base: 'lg', md: 'xl' }} color="blue" radius="md" /> @@ -159,4 +248,4 @@ function ListPolsekTerdekat({ search }: { search: string }) { ); } -export default PolsekTerdekat; +export default PolsekTerdekat; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/keamanan/tips-keamanan/[id]/edit/page.tsx b/src/app/admin/(dashboard)/keamanan/tips-keamanan/[id]/edit/page.tsx index e6bb7f88..48de4cf7 100644 --- a/src/app/admin/(dashboard)/keamanan/tips-keamanan/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/keamanan/tips-keamanan/[id]/edit/page.tsx @@ -132,7 +132,7 @@ function EditTipsKeamanan() { }; return ( - + {/* Header */} - - + + {/* Desktop Table */} + +
- Judul - Deskripsi - Aksi + + + Judul + + + + + Deskripsi + + + + + Aksi + + {filteredData.length > 0 ? ( filteredData.map((item) => ( - - - - {item.judul} - - + + + {item.judul} + - - - - + + - + @@ -122,8 +148,10 @@ function ListTipsKeamanan({ search }: { search: string }) { ) : ( -
- Tidak ada data tips keamanan yang cocok +
+ + Tidak ada data tips keamanan yang cocok +
@@ -131,13 +159,66 @@ function ListTipsKeamanan({ search }: { search: string }) {
+ + {/* Mobile Cards */} + + {filteredData.length > 0 ? ( + filteredData.map((item) => ( + + + + + Judul + + + {item.judul} + + + + + Deskripsi + + + + + + + + + + + )) + ) : ( +
+ + Tidak ada data tips keamanan yang cocok + +
+ )} +
+
{ - load(newPage, 10) - window.scrollTo({ top: 0, behavior: 'smooth' }) + load(newPage, 10); + window.scrollTo({ top: 0, behavior: 'smooth' }); }} total={totalPages} mt="md" @@ -150,4 +231,4 @@ function ListTipsKeamanan({ search }: { search: string }) { ); } -export default TipsKeamanan; +export default TipsKeamanan; \ No newline at end of file diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/layout.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/layout.tsx index 9ebad0e4..db66e722 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/layout.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/layout.tsx @@ -1,9 +1,29 @@ 'use client' +import { usePathname } from "next/navigation"; import LayoutTabs from "./_lib/layoutTabs" +import { Box } from "@mantine/core"; -export default function Layout({children} : {children: React.ReactNode}) { +export default function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } return ( {children} diff --git a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/page.tsx b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/page.tsx index fa678124..851b747a 100644 --- a/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/page.tsx +++ b/src/app/admin/(dashboard)/kesehatan/data-kesehatan-warga/persentase_data_kelahiran_kematian/page.tsx @@ -204,17 +204,34 @@ function GrafikPersentaseKelahiranKematian() { {selectedYearData && ( - + Rincian Tahun {selectedYear} - - {formatNumber(selectedYearData.totalKelahiran)} kelahiran - - - {formatNumber(selectedYearData.totalKematian)} kematian - - + + + {formatNumber(selectedYearData.totalKelahiran)} kelahiran + + + {formatNumber(selectedYearData.totalKematian)} kematian + + + + + + + Rincian Tahun {selectedYear} + + + + {formatNumber(selectedYearData.totalKelahiran)} kelahiran + + + {formatNumber(selectedYearData.totalKematian)} kematian + + + + {/* Desktop: Table */} diff --git a/src/app/admin/(dashboard)/landing-page/desa-anti-korupsi/layout.tsx b/src/app/admin/(dashboard)/landing-page/desa-anti-korupsi/layout.tsx index 97e4e3a9..626ded1d 100644 --- a/src/app/admin/(dashboard)/landing-page/desa-anti-korupsi/layout.tsx +++ b/src/app/admin/(dashboard)/landing-page/desa-anti-korupsi/layout.tsx @@ -1,7 +1,29 @@ +'use client' import React from 'react'; import LayoutTabs from './_lib/layouTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } return ( {children} diff --git a/src/app/admin/(dashboard)/landing-page/indeks-kepuasan-masyarakat/layout.tsx b/src/app/admin/(dashboard)/landing-page/indeks-kepuasan-masyarakat/layout.tsx index 0b93e229..eba71609 100644 --- a/src/app/admin/(dashboard)/landing-page/indeks-kepuasan-masyarakat/layout.tsx +++ b/src/app/admin/(dashboard)/landing-page/indeks-kepuasan-masyarakat/layout.tsx @@ -1,7 +1,29 @@ +'use client' import React from 'react'; import LayoutTabsKepuasan from './_lib/layoutTab'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { +const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/landing-page/prestasi-desa/layout.tsx b/src/app/admin/(dashboard)/landing-page/prestasi-desa/layout.tsx index b42a23fd..bc7df9a9 100644 --- a/src/app/admin/(dashboard)/landing-page/prestasi-desa/layout.tsx +++ b/src/app/admin/(dashboard)/landing-page/prestasi-desa/layout.tsx @@ -1,7 +1,29 @@ +'use client' import React from 'react'; import LayoutTabs from './_lib/layoutTabs'; +import { Box } from '@mantine/core'; +import { usePathname } from 'next/navigation'; function Layout({children} : {children: React.ReactNode}) { +const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/landing-page/profil/layout.tsx b/src/app/admin/(dashboard)/landing-page/profil/layout.tsx index f1a8084c..39407f47 100644 --- a/src/app/admin/(dashboard)/landing-page/profil/layout.tsx +++ b/src/app/admin/(dashboard)/landing-page/profil/layout.tsx @@ -1,7 +1,29 @@ +'use client' +import { Box } from '@mantine/core'; +import { usePathname } from 'next/navigation'; import React from 'react'; import LayoutTabs from './_lib/layoutTabs'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + return ( {children} diff --git a/src/app/admin/(dashboard)/ppid/indeks-kepuasan-masyarakat/layout.tsx b/src/app/admin/(dashboard)/ppid/indeks-kepuasan-masyarakat/layout.tsx index f94af0c1..6fa1fdec 100644 --- a/src/app/admin/(dashboard)/ppid/indeks-kepuasan-masyarakat/layout.tsx +++ b/src/app/admin/(dashboard)/ppid/indeks-kepuasan-masyarakat/layout.tsx @@ -1,8 +1,28 @@ 'use client' import React from 'react'; import LayoutTabsIKM from './_lib/layoutTabs'; +import { usePathname } from 'next/navigation'; +import { Box } from '@mantine/core'; function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } return ( {children} diff --git a/src/app/admin/(dashboard)/ppid/struktur-ppid/layout.tsx b/src/app/admin/(dashboard)/ppid/struktur-ppid/layout.tsx index 57a94a4f..43d287e6 100644 --- a/src/app/admin/(dashboard)/ppid/struktur-ppid/layout.tsx +++ b/src/app/admin/(dashboard)/ppid/struktur-ppid/layout.tsx @@ -1,9 +1,31 @@ 'use client' +import { usePathname } from "next/navigation"; import LayoutTabs from "./_lib/layoutTabs" +import { Box } from "@mantine/core"; export default function Layout({ children }: { children: React.ReactNode }) { + const pathname = usePathname(); + + // Contoh path: + // - /darmasaba/desa/berita/semua → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan → panjang 5 → list + // - /darmasaba/desa/berita/Pemerintahan/123 → panjang 6 → detail + + const segments = pathname.split('/').filter(Boolean); + const isDetailPage = segments.length >= 5; + + if (isDetailPage) { + // Tampilkan tanpa tab menu + return ( + + {children} + + ); + } + + return ( {children}