'use client' import colors from '@/con/colors'; import { Box, Group, Stack, Tabs, TabsList, TabsTab, Text, TextInput } from '@mantine/core'; import { IconSearch } from '@tabler/icons-react'; import { usePathname, useRouter, useSearchParams } from 'next/navigation'; import React, { useEffect, useState } from 'react'; import BackButton from '../../layanan/_com/BackButto'; type HeaderSearchProps = { placeholder?: string; searchIcon?: React.ReactNode; value?: string; onChange?: (event: React.ChangeEvent) => void; children?: React.ReactNode; }; function LayoutTabsBerita({ children, placeholder = "pencarian", searchIcon = }: HeaderSearchProps) { const router = useRouter(); const pathname = usePathname(); const searchParams = useSearchParams(); const activeTab = pathname.split('/').pop() || 'semua'; const initialSearch = searchParams.get('search') || ''; const [searchValue, setSearchValue] = useState(initialSearch); const [searchTimeout, setSearchTimeout] = useState(null); const [activeTabState, setActiveTabState] = useState(activeTab); useEffect(() => { setActiveTabState(activeTab); }, [activeTab]); useEffect(() => { return () => { if (searchTimeout !== null) clearTimeout(searchTimeout); }; }, [searchTimeout]); const handleSearchChange = (event: React.ChangeEvent) => { const value = event.target.value; setSearchValue(value); if (searchTimeout !== null) clearTimeout(searchTimeout); const newTimeout = window.setTimeout(() => { const params = new URLSearchParams(searchParams.toString()); if (value) params.set('search', value); else params.delete('search'); if (params.toString() !== searchParams.toString()) { router.push(`/darmasaba/desa/berita/${activeTab}?${params.toString()}`); } }, 500); setSearchTimeout(newTimeout); }; const tabs = [ { label: "Semua", value: "semua", href: "/darmasaba/desa/berita/semua" }, { label: "Budaya", value: "budaya", href: "/darmasaba/desa/berita/budaya" }, { label: "Pemerintahan", value: "pemerintahan", href: "/darmasaba/desa/berita/pemerintahan" }, { label: "Ekonomi", value: "ekonomi", href: "/darmasaba/desa/berita/ekonomi" }, { label: "Pembangunan", value: "pembangunan", href: "/darmasaba/desa/berita/pembangunan" }, { label: "Sosial", value: "sosial", href: "/darmasaba/desa/berita/sosial" }, { label: "Teknologi", value: "teknologi", href: "/darmasaba/desa/berita/teknologi" }, ]; const handleTabChange = (value: string | null) => { if (!value) return; const tab = tabs.find(t => t.value === value); if (tab) { const params = new URLSearchParams(searchParams.toString()); router.push(`/darmasaba/desa/berita/${value}${params.toString() ? `?${params.toString()}` : ''}`); } }; return ( {/* Header */} Portal Berita Darmasaba Temukan berbagai potensi dan keunggulan yang dimiliki Desa Darmasaba {/* SCROLLABLE TABS */} {tabs.map((tab, index) => ( router.push(tab.href)} style={{ flex: '0 0 auto', // Prevent shrinking minWidth: 100, // optional: makes them touch-friendly textAlign: 'center' }} > {tab.label} ))} {children} ); } export default LayoutTabsBerita;