'use client'; import { useEffect, useState } from 'react'; import { useRouter } from 'next/navigation'; import { newsData, categories } from '@/data/news'; import type { NewsItem } from '@/data/news'; import { mediaData } from '@/data/media'; import type { MediaItem } from '@/data/media'; import { documentsData, documentCategories, getFileIcon } from '@/data/documents'; import type { Document } from '@/data/documents'; import { metroStations, getStatusColor, getStatusText } from '@/data/metroStations'; import type { MetroStation } from '@/data/metroStations'; export default function Dashboard() { const router = useRouter(); const [activeSection, setActiveSection] = useState('overview'); const [menuOpen, setMenuOpen] = useState(false); useEffect(() => { const token = localStorage.getItem('admin_token'); if (!token) { router.push('/yonetim-paneli-a2m-secure'); } }, [router]); const handleLogout = () => { localStorage.removeItem('admin_token'); router.push('/yonetim-paneli-a2m-secure'); }; const stats = [ { title: 'Aktif Slider', value: '4', icon: '🎬', color: 'from-[#004B87] to-[#00B4D8]', change: '+1' }, { title: 'Toplam Haberler', value: newsData.length.toString(), icon: '📰', color: 'from-[#00B4D8] to-[#0096C7]', change: '+2' }, { title: 'Medya İçeriği', value: mediaData.length.toString(), icon: '�', color: 'from-[#0096C7] to-[#48CAE4]', change: '+3' }, { title: 'Metro İstasyonları', value: metroStations.length.toString(), icon: '�', color: 'from-[#48CAE4] to-[#90E0EF]', change: '+2' }, ]; const menuItems = [ { id: 'overview', label: 'Genel Bakış', icon: '📊' }, { id: 'slider', label: 'Slider Yönetimi', icon: '🎬' }, { id: 'news', label: 'Haberler', icon: '📰' }, { id: 'media', label: 'Medya', icon: '📸' }, { id: 'documents', label: 'Belgeler', icon: '📄' }, { id: 'metro-line', label: 'Metro Hattı', icon: '🚇' }, { id: 'settings', label: 'Ayarlar', icon: '⚙️' }, ]; // Slider data const [sliderItems, setSliderItems] = useState([ { id: 1, title: 'Ankara Metro Altyapı Projelerinde Öncü Çözümler', description: 'Ankara Büyükşehir Belediyesi ile birlikte, modern teknoloji ve mühendislik uzmanlığımızla başkentin ulaşım ağını inşa ediyor, geleceğin metro sistemlerini bugünden hayata geçiriyoruz.', buttonText: 'Detayları Gör', buttonLink: '#proje-detay', active: true }, { id: 2, title: 'A2 Metro Hattı İnşaatında Son Aşamaya Gelindi', description: '15 istasyonlu A2 Metro Hattı projemiz %75 tamamlandı. 2026 yılında hizmete açılacak modern metro hattımız, günlük 300 bin yolcuya hizmet verecek.', buttonText: 'İlerlemeyi İzle', buttonLink: '#metro-hatti', active: true }, { id: 3, title: 'Çevre Dostu Metro Teknolojileri', description: 'Yenilenebilir enerji kaynakları ve sürdürülebilir inşaat teknikleri ile çevre dostu metro projelerine imza atıyoruz. Karbon emisyonunu %40 azaltan yenilikçi çözümlerimiz.', buttonText: 'Yeşil Projeler', buttonLink: '#cevre', active: true }, { id: 4, title: 'Güvenli İnşaat, Güvenli Gelecek', description: 'ISO 45001 sertifikalı iş güvenliği sistemlerimiz ile 2000+ çalışanımızın güvenliğini en üst düzeyde tutuyoruz. Sıfır iş kazası hedefiyle çalışıyoruz.', buttonText: 'Güvenlik Önlemleri', buttonLink: '#guvenlik', active: true } ]); // News management state const [newsList, setNewsList] = useState(newsData); const [selectedNewsCategory, setSelectedNewsCategory] = useState('all'); const [editingNews, setEditingNews] = useState(null); const [showNewsForm, setShowNewsForm] = useState(false); const filteredNewsList = selectedNewsCategory === 'all' ? newsList : newsList.filter(news => news.category === selectedNewsCategory); // Media management state const [mediaList, setMediaList] = useState(mediaData); const [selectedMediaType, setSelectedMediaType] = useState<'all' | 'video' | 'photo'>('all'); const filteredMediaList = selectedMediaType === 'all' ? mediaList : mediaList.filter(media => media.type === selectedMediaType); // Documents management state const [documentsList, setDocumentsList] = useState(documentsData); const [selectedDocCategory, setSelectedDocCategory] = useState('all'); const filteredDocsList = selectedDocCategory === 'all' ? documentsList : documentsList.filter(doc => doc.category === selectedDocCategory); // Metro stations management state const [stationsList, setStationsList] = useState(metroStations); const [selectedStationStatus, setSelectedStationStatus] = useState<'all' | 'completed' | 'in-progress' | 'planned'>('all'); const filteredStationsList = selectedStationStatus === 'all' ? stationsList : stationsList.filter(station => station.status === selectedStationStatus); return (
{/* Sidebar */} {/* Main Content */}
{/* Header */}

{menuItems.find(item => item.id === activeSection)?.label || 'Dashboard'}

A
{/* Dashboard Content */}
{activeSection === 'overview' && ( <> {/* Stats Grid */}
{stats.map((stat, index) => (
{stat.icon}
{stat.change}

{stat.title}

{stat.value}

))}
{/* Charts Section */}

İnşaat İlerleme Durumu

{[ { name: 'Temeller', progress: 100, color: 'bg-green-500' }, { name: 'Yapı İnşaatı', progress: 75, color: 'bg-[#00B4D8]' }, { name: 'Elektrik', progress: 60, color: 'bg-[#0096C7]' }, { name: 'Ray Döşeme', progress: 40, color: 'bg-yellow-500' }, { name: 'İç Mekan', progress: 25, color: 'bg-orange-500' }, ].map((item, index) => (
{item.name} {item.progress}%
))}

Son Aktiviteler

{[ { action: 'Yeni haber eklendi', time: '5 dakika önce', icon: '📰', color: 'bg-blue-100 text-blue-600' }, { action: 'Medya içeriği güncellendi', time: '1 saat önce', icon: '📸', color: 'bg-purple-100 text-purple-600' }, { action: 'Belge yüklendi', time: '2 saat önce', icon: '📄', color: 'bg-green-100 text-green-600' }, { action: 'İstasyon durumu güncellendi', time: '3 saat önce', icon: '🚇', color: 'bg-yellow-100 text-yellow-600' }, ].map((activity, index) => (
{activity.icon}

{activity.action}

{activity.time}

))}
{/* Quick Actions */}

Hızlı İşlemler

{[ { label: 'Haber Ekle', icon: '➕', color: 'from-[#004B87] to-[#00B4D8]' }, { label: 'Medya Yükle', icon: '📤', color: 'from-[#00B4D8] to-[#0096C7]' }, { label: 'Belge Yükle', icon: '📁', color: 'from-[#0096C7] to-[#48CAE4]' }, { label: 'Rapor Oluştur', icon: '📊', color: 'from-[#48CAE4] to-[#90E0EF]' }, ].map((action, index) => ( ))}
)} {/* Slider Management Section */} {activeSection === 'slider' && (
{/* Header */}

Slider Yönetimi

Ana sayfa hero slider içeriklerini yönetin

{/* Slider Items Grid */}
{sliderItems.map((slide, index) => (
{index + 1}

Slide #{slide.id}

{slide.active ? '✓ Aktif' : '○ Pasif'}

{slide.title}

{slide.description}

{slide.buttonText}

))}
{/* Info Box */}
ℹ️

Slider Kullanım Bilgisi

  • • Slider otomatik olarak 5 saniyede bir değişir
  • • Maksimum 4 slide önerilir (mevcut: {sliderItems.length}/4)
  • • Başlık 80 karakter, açıklama 200 karakter ile sınırlıdır
  • • Değişiklikler anında ana sayfaya yansır
)} {/* News Management Section */} {activeSection === 'news' && (
{/* Header */}

Haberler Yönetimi

Haberler ve duyuruları yönetin, düzenleyin

{/* Category Filter */}
{categories.map((category) => ( ))}
{/* News Table */}
{filteredNewsList.map((news) => ( ))}
Haber Kategori Tarih Yazar Durum İşlemler
{news.title}

{news.title}

{news.summary}

{categories.find(c => c.id === news.category)?.name} {news.date} {news.author} {news.featured ? ( ⭐ Ana Sayfa ) : ( Yayında )}
{/* Stats */}

Toplam Haber

{newsList.length}

📰

Ana Sayfada

{newsList.filter(n => n.featured).length}

İnşaat Haberleri

{newsList.filter(n => n.category === 'construction').length}

🏗️

Duyurular

{newsList.filter(n => n.category === 'announcements').length}

📢
)} {/* Media Management Section */} {activeSection === 'media' && (
{/* Header */}

Medya Galerisi Yönetimi

Video ve fotoğraf içeriklerini yönetin

{/* Type Filter */}
{/* Media Grid */}
{filteredMediaList.map((media) => (
{media.title}
{media.type === 'video' ? '🎥 Video' : '📸 Foto'}
{media.duration && (
{media.duration}
)}

{media.title}

{media.description}

{media.date}
))}
{/* Stats */}

Toplam Medya

{mediaList.length}

📁

Videolar

{mediaList.filter(m => m.type === 'video').length}

🎥

Fotoğraflar

{mediaList.filter(m => m.type === 'photo').length}

📸
)} {/* Documents Management Section */} {activeSection === 'documents' && (
{/* Header */}

Belgeler Yönetimi

Proje belgelerini ve dökümanları yönetin

{/* Category Filter */}
{documentCategories.map((category) => ( ))}
{/* Documents Table */}
{filteredDocsList.map((doc) => ( ))}
Belge Kategori Tarih Boyut İşlemler
{getFileIcon(doc.type)}

{doc.title}

{doc.description}

{documentCategories.find(c => c.id === doc.category)?.name} {doc.date} {doc.size}
{/* Stats */}
📋

Toplam

{documentsList.length}

📄

İhale

{documentsList.filter(d => d.category === 'ihale').length}

📐

Teknik

{documentsList.filter(d => d.category === 'teknik').length}

🌱

Çevresel

{documentsList.filter(d => d.category === 'cevresel').length}

📊

Raporlar

{documentsList.filter(d => d.category === 'raporlar').length}

)} {/* Metro Line Management Section */} {activeSection === 'metro-line' && (
{/* Header */}

Metro Hattı İstasyonları

İstasyon durumlarını ve ilerlemeyi yönetin

{/* Status Filter */}
{/* Stations Grid */}
{filteredStationsList.map((station) => (
{station.image && (
{station.name}
)}

{station.name}

{getStatusText(station.status)}
{/* Progress Bar */}
İlerleme {station.progress}%
{/* Details */}
📅 Başlangıç: {station.startDate}
🎯 Bitiş: {station.expectedCompletion}
👥 Günlük Kapasite: {station.dailyCapacity} yolcu
{station.connections && station.connections.length > 0 && (
🔄 Aktarma:
{station.connections.map((conn, i) => ( {conn} ))}
)}
{/* Features */}

ÖZELLİKLER:

{station.features.map((feature, i) => ( {feature} ))}
))}
{/* Stats */}

Toplam İstasyon

{stationsList.length}

🚇

Tamamlanan

{stationsList.filter(s => s.status === 'completed').length}

Devam Eden

{stationsList.filter(s => s.status === 'in-progress').length}

🔄

Planlanan

{stationsList.filter(s => s.status === 'planned').length}

📅
)} {/* Settings Section */} {activeSection === 'settings' && (

Sistem Ayarları

{/* Site Settings */}

🌐 Site Ayarları

{/* Admin Settings */}

👤 Admin Ayarları

{/* Notification Settings */}

🔔 Bildirim Ayarları

{/* Save Button */}
)} {activeSection !== 'overview' && activeSection !== 'slider' && activeSection !== 'news' && activeSection !== 'media' && activeSection !== 'documents' && activeSection !== 'metro-line' && activeSection !== 'settings' && (
{menuItems.find(item => item.id === activeSection)?.icon}

{menuItems.find(item => item.id === activeSection)?.label}

Bu bölüm yakında geliştirilecek...

)}
{/* Mobile Overlay */} {menuOpen && (
setMenuOpen(false)} >
)}
); }