diff --git a/src/app/admin/(dashboard)/_com/modalNonaktif.tsx b/src/app/admin/(dashboard)/_com/modalNonaktif.tsx
new file mode 100644
index 00000000..9b3c3826
--- /dev/null
+++ b/src/app/admin/(dashboard)/_com/modalNonaktif.tsx
@@ -0,0 +1,36 @@
+// components/modal/ModalKonfirmasiHapus.tsx
+import colors from "@/con/colors"
+import { Modal, Text, Button, Flex } from "@mantine/core"
+
+interface ModalKonfirmasiNonAktifProps {
+ opened: boolean
+ loading?: boolean
+ onClose: () => void
+ onConfirm: () => void
+ text: string
+}
+
+export function ModalKonfirmasiNonAktif({
+ opened,
+ loading = false,
+ onClose,
+ onConfirm,
+ text,
+}: ModalKonfirmasiNonAktifProps) {
+ return (
+ Konfirmasi Non Aktif}
+ centered
+ >
+ {text}
+
+
+
+
+
+ )
+}
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)/ekonomi/PADesa-pendapatan-asli-desa/_lib/layoutTabs.tsx b/src/app/admin/(dashboard)/ekonomi/PADesa-pendapatan-asli-desa/_lib/layoutTabs.tsx
index ff6d98fc..e252c31d 100644
--- a/src/app/admin/(dashboard)/ekonomi/PADesa-pendapatan-asli-desa/_lib/layoutTabs.tsx
+++ b/src/app/admin/(dashboard)/ekonomi/PADesa-pendapatan-asli-desa/_lib/layoutTabs.tsx
@@ -2,6 +2,7 @@
'use client'
import colors from '@/con/colors';
import {
+ Box,
ScrollArea,
Stack,
Tabs,
@@ -85,36 +86,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 */}