diff --git a/app/belgeler/page.tsx b/app/belgeler/page.tsx index f3269a1..240be89 100644 --- a/app/belgeler/page.tsx +++ b/app/belgeler/page.tsx @@ -143,23 +143,25 @@ export default function Documents() { return (
-
+

Belgeler

A2 Metro Hattı proje belgeleri

-
+
{categories.map((cat) => ( ))}
diff --git a/app/canli-yayin/page.tsx b/app/canli-yayin/page.tsx index 9278e69..631434c 100644 --- a/app/canli-yayin/page.tsx +++ b/app/canli-yayin/page.tsx @@ -49,7 +49,7 @@ export default function LiveStream() {
-
+
{/* Başlık */}
diff --git a/app/haberler/page.tsx b/app/haberler/page.tsx index ec0e383..8883c02 100644 --- a/app/haberler/page.tsx +++ b/app/haberler/page.tsx @@ -4,98 +4,23 @@ import { useState } from 'react'; import Image from 'next/image'; import Header from "@/components/Header"; import Footer from "@/components/Footer"; +import { newsData, categories } from '@/data/news'; export default function News() { const [selectedCategory, setSelectedCategory] = useState('all'); const [selectedNews, setSelectedNews] = useState(null); - const categories = [ - { id: 'all', name: 'Tümü', icon: '📰' }, - { id: 'construction', name: 'İnşaat', icon: '🏗️' }, - { id: 'announcements', name: 'Duyurular', icon: '📢' }, - { id: 'events', name: 'Etkinlikler', icon: '🎉' }, - ]; - - const news = [ - { - id: 1, - category: 'construction', - title: 'A2 Metro Hattı Kazı Çalışmaları Hızla İlerliyor', - summary: 'Dikimevi-Natoyolu Metro Hattı inşaat çalışmaları planlandığı gibi devam ediyor.', - image: 'https://picsum.photos/800/450?random=1', - date: '15 Ekim 2025', - author: 'Ankara Büyükşehir Belediyesi', - content: 'A2 Metro Hattı kapsamında Dikimevi-Natoyolu güzergâhında yürütülen kazı çalışmaları planlandığı şekilde devam ediyor. 6.5 kilometre uzunluğundaki hat üzerinde 5 istasyon inşa edilecek. Proje, Ankara\'nın ulaşım altyapısına önemli bir katkı sağlayacak.', - tags: ['Metro', 'İnşaat', 'A2 Hattı'] - }, - { - id: 2, - category: 'announcements', - title: 'Yeni İstasyon Tasarımları Açıklandı', - summary: 'Modern ve çevre dostu istasyon tasarımları kamuoyuyla paylaşıldı.', - image: 'https://picsum.photos/800/450?random=2', - date: '12 Ekim 2025', - author: 'Proje Yönetimi', - content: 'A2 Metro Hattı istasyonlarının mimari tasarımları tamamlandı. Tasarımlarda enerji verimliliği, erişilebilirlik ve modern estetik ön planda tutuldu. İstasyonlarda güneş enerjisi panelleri, LED aydınlatma ve akıllı havalandırma sistemleri kullanılacak.', - tags: ['Tasarım', 'Sürdürülebilirlik', 'İstasyon'] - }, - { - id: 3, - category: 'construction', - title: 'Dikimevi İstasyonu Temel Atma Töreni Gerçekleştirildi', - summary: 'Dikimevi İstasyonu\'nun temel atma töreni büyük bir coşkuyla yapıldı.', - image: 'https://picsum.photos/800/450?random=3', - date: '8 Ekim 2025', - author: 'Ankara Büyükşehir Belediyesi', - content: 'A2 Metro Hattı\'nın önemli duraklarından biri olan Dikimevi İstasyonu\'nun temel atma töreni gerçekleştirildi. Törene Ankara Büyükşehir Belediye Başkanı, milletvekilleri ve bölge sakinleri katıldı. İstasyonun 2026 yılı sonunda hizmete girmesi planlanıyor.', - tags: ['Tören', 'Dikimevi', 'Milestone'] - }, - { - id: 4, - category: 'events', - title: 'Metro Projesi Tanıtım Günleri Düzenlendi', - summary: 'Vatandaşlarımız proje hakkında detaylı bilgi aldı.', - image: 'https://picsum.photos/800/450?random=4', - date: '5 Ekim 2025', - author: 'Halkla İlişkiler', - content: 'A2 Metro Hattı Projesi\'ni tanıtmak amacıyla düzenlenen etkinlikte vatandaşlar, proje yetkilileriyle bir araya geldi. Etkinlikte 3D animasyonlar, maketler ve interaktif sunumlarla proje detayları anlatıldı. Vatandaşların soruları cevaplandı.', - tags: ['Tanıtım', 'Etkinlik', 'Halkla İlişkiler'] - }, - { - id: 5, - category: 'announcements', - title: 'Trafik Düzenlemesi Duyurusu', - summary: 'İnşaat nedeniyle bazı yollarda geçici trafik düzenlemeleri yapılacak.', - image: 'https://picsum.photos/800/450?random=5', - date: '1 Ekim 2025', - author: 'Ulaşım Koordinasyon', - content: 'A2 Metro Hattı inşaatı kapsamında Dikimevi-Tuzluçayır güzergâhında geçici trafik düzenlemeleri uygulanacak. Alternatif güzergâhlar belirlenmiş olup, yönlendirme levhaları yerleştirilmiştir. Vatandaşlarımızın anlayışına sığınıyoruz.', - tags: ['Trafik', 'Duyuru', 'Koordinasyon'] - }, - { - id: 6, - category: 'construction', - title: 'TBM Makinesi Tünele Girdi', - summary: 'Dev tünel açma makinesi (TBM) çalışmalara başladı.', - image: 'https://picsum.photos/800/450?random=6', - date: '28 Eylül 2025', - author: 'İnşaat Ekibi', - content: 'A2 Metro Hattı tünel kazı çalışmalarında kullanılacak TBM (Tunnel Boring Machine) makinesi tünele girdi. 120 metrelik dev makine, günde ortalama 15 metre ilerleme kaydedecek. TBM teknolojisi sayesinde kazı çalışmaları daha hızlı ve güvenli şekilde yapılıyor.', - tags: ['TBM', 'Tünel', 'Teknoloji'] - } - ]; - const filteredNews = selectedCategory === 'all' - ? news - : news.filter(item => item.category === selectedCategory); + ? newsData + : newsData.filter(item => item.category === selectedCategory); - const selectedNewsItem = news.find(item => item.id === selectedNews); + const selectedNewsItem = newsData.find(item => item.id === selectedNews); return (
-
+
{/* Başlık */}
@@ -106,12 +31,12 @@ export default function News() {
{/* Kategori Filtreleri */} -
+
{categories.map((category) => ( - + {/* Slider Content */} +
+ {heroSlides.map((slide, index) => ( +
+

+ {slide.title} +

+

+ {slide.description} +

+ + {/* Action Buttons - Mobilde gizle */} +
+ + +
+
+ ))}
- {/* Pagination Dots */} -
- - - - + {/* Pagination Dots & Navigation */} +
+ {/* Dots */} +
+ {heroSlides.map((_, index) => ( +
+ + {/* Arrow Navigation */} +
+ + +
+
- {/* Alt Menü Kartları - Slide üzerine bindiriyor (yarısı üstte) */} -
-
-
+ {/* Alt Menü Kartları - Mobilde normal akış, Desktop'ta overlay */} +
+
+
{/* Canlı Yayın */} {/* Haberler */} {/* Belgeler */} {/* Medya Galerisi */} {/* Dilek-Şikayet */} {/* E-İletişim */}
-
{/* Canlı Yayın Video Bölümü */} {showLiveStream && ( -
+
@@ -425,7 +491,7 @@ export default function Home() { {/* Haberler Bölümü */} {showNews && ( -
+
@@ -436,20 +502,31 @@ export default function Home() {

Son Haberler

- +
+ + Tümünü Gör + + + + + +
{/* Haberler Grid veya Detay */} {selectedNews === null ? (
- {newsData.map((news) => ( + {featuredNews.map((news) => (
{/* Haber Görseli */}
@@ -568,7 +645,7 @@ export default function Home() { {/* Belgeler Bölümü */} {showDocuments && ( -
+
@@ -654,7 +731,7 @@ export default function Home() { {/* Medya Galerisi Bölümü */} {showMediaGallery && ( -
+
@@ -872,7 +949,7 @@ export default function Home() { {/* Dilek-Şikayet Formu */} {showComplaintForm && ( -
+
@@ -1091,7 +1168,7 @@ export default function Home() { {/* E-İletişim Bölümü */} {showContact && ( -
+
@@ -1227,7 +1304,7 @@ export default function Home() { )} {/* Ana İçerik - Kartlar için üstten boşluk */} -
+

Metro Hat Durumları diff --git a/app/yonetim-paneli-a2m-secure/dashboard/page.tsx b/app/yonetim-paneli-a2m-secure/dashboard/page.tsx new file mode 100644 index 0000000..c6a85ff --- /dev/null +++ b/app/yonetim-paneli-a2m-secure/dashboard/page.tsx @@ -0,0 +1,1115 @@ +'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)} + >
+ )} +
+ ); +} diff --git a/app/yonetim-paneli-a2m-secure/page.tsx b/app/yonetim-paneli-a2m-secure/page.tsx new file mode 100644 index 0000000..21fb33d --- /dev/null +++ b/app/yonetim-paneli-a2m-secure/page.tsx @@ -0,0 +1,101 @@ +'use client'; + +import { useState } from 'react'; +import { useRouter } from 'next/navigation'; + +export default function AdminLogin() { + const router = useRouter(); + const [credentials, setCredentials] = useState({ username: '', password: '' }); + const [error, setError] = useState(''); + const [loading, setLoading] = useState(false); + + const handleLogin = async (e: React.FormEvent) => { + e.preventDefault(); + setLoading(true); + setError(''); + + // Basit auth - production'da backend ile yapılmalı + if (credentials.username === 'admin' && credentials.password === 'A2Metro2025!') { + localStorage.setItem('admin_token', 'authenticated'); + router.push('/yonetim-paneli-a2m-secure/dashboard'); + } else { + setError('Kullanıcı adı veya şifre hatalı'); + setLoading(false); + } + }; + + return ( +
+
+ +
+
+ {/* Logo ve Başlık */} +
+
+ + + +
+

Yönetim Paneli

+

A2 Metro Hattı İnşaat Projesi

+
+ + {/* Login Form */} +
+ {error && ( +
+ {error} +
+ )} + +
+ + setCredentials({ ...credentials, username: e.target.value })} + className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-[#00B4D8] focus:border-transparent outline-none transition-all text-gray-900" + placeholder="Kullanıcı adınızı girin" + required + /> +
+ +
+ + setCredentials({ ...credentials, password: e.target.value })} + className="w-full px-4 py-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-[#00B4D8] focus:border-transparent outline-none transition-all text-gray-900" + placeholder="Şifrenizi girin" + required + /> +
+ + +
+ + {/* Footer */} +
+

+ © 2025 Ankara Büyükşehir Belediyesi +

+
+
+
+
+ ); +} diff --git a/components/Header.tsx b/components/Header.tsx index e22d44a..e3af544 100644 --- a/components/Header.tsx +++ b/components/Header.tsx @@ -111,6 +111,7 @@ export default function Header() { {[ { icon: 'M23 3a10.9 10.9 0 01-3.14 1.53 4.48 4.48 0 00-7.86 3v1A10.66 10.66 0 013 4s-4 9 5 13a11.64 11.64 0 01-7 2c9 5 20 0 20-11.5a4.5 4.5 0 00-.08-.83A7.72 7.72 0 0023 3z', url: 'https://twitter.com/Ankara_BB' }, { icon: 'M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z', url: 'https://www.facebook.com/ankarabb' }, + { icon: 'M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z', url: 'https://www.instagram.com/ankarabb' }, { icon: 'M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z M4 2a2 2 0 100 4 2 2 0 000-4z', url: 'https://www.linkedin.com/company/ankara-bb' }, ].map((social, i) => ( +
{/* Proje Başlığı */} -
-
-
- +
+
+
+
-

A2 Metro Hattı İnşaatı

-

Abidin Paşa - Natoyolu

+

A2 Metro Hattı İnşaatı

+

Abidin Paşa - Natoyolu

-
-

İnşaat Durumu

-

{Math.round(progressPercentage)}%

+
+

İnşaat Durumu

+

{Math.round(progressPercentage)}%

- {/* Metro Hat ve İnşaat Çizgisi */} -
+ {/* Metro Hat ve İnşaat Çizgisi - Desktop */} +
{/* Gri arka plan hattı (tüm hat) */}
@@ -83,8 +83,8 @@ export default function MetroLine() { style={{width: `${progressPercentage}%`}}>
- {/* Duraklar Grid */} -
+ {/* Duraklar Grid - Desktop */} +
{stations.map((station, index) => (
@@ -123,23 +123,84 @@ export default function MetroLine() {
+ {/* Metro Hat - Mobil (Dikey Liste) */} +
+ {stations.map((station, index) => ( +
+ {/* İkon */} +
+ {index === currentStation ? ( + + + + ) : station.status === 'completed' ? ( + + + + ) : ( + + + + )} +
+ + {/* Bilgi */} +
+

+ {station.name} +

+

+ {index === currentStation ? '🚇 Metro Burada' : + station.status === 'completed' ? '✓ Tamamlandı' : + '◯ Planlı'} +

+
+ + {/* Bağlantı çizgisi (son istasyon hariç) */} + {index < stations.length - 1 && ( +
+ )} +
+ ))} +
+ {/* Alt Bilgi */} -
-
+
+
-
- +
+
Tamamlandı
-
+
İnşaat Halinde (Metro Burada)
-
+
Planlanan
diff --git a/data/documents.ts b/data/documents.ts new file mode 100644 index 0000000..b888228 --- /dev/null +++ b/data/documents.ts @@ -0,0 +1,144 @@ +export interface Document { + id: number; + title: string; + category: 'ihale' | 'teknik' | 'cevresel' | 'raporlar' | 'guvenlik'; + date: string; + size: string; + type: 'PDF' | 'DWG' | 'XLSX' | 'DOCX'; + description: string; + downloadUrl?: string; + featured?: boolean; +} + +export const documentsData: Document[] = [ + { + id: 1, + title: "A2 Metro Hattı İhale Şartnamesi", + category: 'ihale', + date: "15 Ocak 2025", + size: "2.4 MB", + type: "PDF", + description: "Metro inşaatı için teknik şartname ve ihale koşulları", + featured: true + }, + { + id: 2, + title: "Proje Teknik Çizimleri", + category: 'teknik', + date: "10 Şubat 2025", + size: "15.8 MB", + type: "DWG", + description: "Tüm istasyonların teknik mimari çizimleri", + featured: true + }, + { + id: 3, + title: "Çevresel Etki Değerlendirme Raporu", + category: 'cevresel', + date: "5 Mart 2025", + size: "4.2 MB", + type: "PDF", + description: "Proje çevresel etki analizi ve önlemler" + }, + { + id: 4, + title: "2025 Ekim Ayı İlerleme Raporu", + category: 'raporlar', + date: "1 Kasım 2025", + size: "1.8 MB", + type: "PDF", + description: "Aylık proje ilerleme ve istatistikler", + featured: true + }, + { + id: 5, + title: "Güvenlik Planı ve Prosedürleri", + category: 'guvenlik', + date: "20 Ocak 2025", + size: "3.1 MB", + type: "PDF", + description: "İnşaat sahası güvenlik protokolleri" + }, + { + id: 6, + title: "İstasyon Tasarım Detayları", + category: 'teknik', + date: "8 Şubat 2025", + size: "8.5 MB", + type: "PDF", + description: "İstasyon iç ve dış mekan tasarım detayları" + }, + { + id: 7, + title: "Finansman Planı", + category: 'ihale', + date: "12 Ocak 2025", + size: "1.2 MB", + type: "XLSX", + description: "Proje bütçe ve finansman dağılımı" + }, + { + id: 8, + title: "2025 Eylül Ayı İlerleme Raporu", + category: 'raporlar', + date: "1 Ekim 2025", + size: "2.1 MB", + type: "PDF", + description: "Aylık proje ilerleme ve istatistikler" + }, + { + id: 9, + title: "Gürültü ve Titreşim Analizi", + category: 'cevresel', + date: "18 Mart 2025", + size: "3.8 MB", + type: "PDF", + description: "Çevre gürültü ve titreşim ölçüm sonuçları" + }, + { + id: 10, + title: "İş Güvenliği Risk Analizi", + category: 'guvenlik', + date: "5 Şubat 2025", + size: "2.7 MB", + type: "PDF", + description: "İnşaat sahası risk değerlendirme raporu" + }, + { + id: 11, + title: "Elektrik ve Mekanik Sistem Şartnamesi", + category: 'teknik', + date: "15 Mart 2025", + size: "6.3 MB", + type: "PDF", + description: "Metro elektrik ve mekanik sistemler teknik şartnamesi" + }, + { + id: 12, + title: "Su Yönetimi Planı", + category: 'cevresel', + date: "10 Nisan 2025", + size: "2.2 MB", + type: "PDF", + description: "İnşaat sahası su kullanımı ve yönetimi" + } +]; + +export const documentCategories = [ + { id: 'all', name: 'Tümü', icon: '📋' }, + { id: 'ihale', name: 'İhale Belgeleri', icon: '📄' }, + { id: 'teknik', name: 'Teknik Dökümanlar', icon: '📐' }, + { id: 'cevresel', name: 'Çevresel Etki', icon: '🌱' }, + { id: 'raporlar', name: 'İlerleme Raporları', icon: '📊' }, + { id: 'guvenlik', name: 'Güvenlik Belgeleri', icon: '🛡️' }, +]; + +export const getFileIcon = (type: string) => { + switch (type) { + case 'PDF': return '📕'; + case 'DWG': return '📐'; + case 'XLSX': return '📊'; + case 'DOCX': return '📄'; + default: return '📄'; + } +}; diff --git a/data/media.ts b/data/media.ts new file mode 100644 index 0000000..2c5192f --- /dev/null +++ b/data/media.ts @@ -0,0 +1,115 @@ +export interface MediaItem { + id: number; + type: 'video' | 'photo'; + title: string; + thumbnail: string; + videoUrl?: string; + date: string; + duration?: string; + description: string; + category?: string; + featured?: boolean; +} + +export const mediaData: MediaItem[] = [ + { + id: 1, + type: 'video', + title: 'A2 Metro Hattı Genel Tanıtım', + thumbnail: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg', + videoUrl: 'https://www.youtube.com/embed/b9q88QDEcKg', + date: '20 Ekim 2025', + duration: '5:32', + description: 'A2 Metro Hattı projesinin genel tanıtımı ve istasyonların detayları', + category: 'Tanıtım', + featured: true + }, + { + id: 2, + type: 'photo', + title: 'Dikimevi İstasyonu İnşaat Çalışmaları', + thumbnail: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg', + date: '18 Ekim 2025', + description: 'Dikimevi metro istasyonunda devam eden kazı ve inşaat çalışmaları', + category: 'İnşaat', + featured: true + }, + { + id: 3, + type: 'photo', + title: 'Tuzluçayır İstasyonu Temel Atma', + thumbnail: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg', + date: '15 Ekim 2025', + description: 'Tuzluçayır istasyonunun temel atma töreni anları', + category: 'Etkinlik' + }, + { + id: 4, + type: 'video', + title: 'Metro İnşaatı İlerleme Raporu', + thumbnail: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg', + videoUrl: 'https://www.youtube.com/embed/b9q88QDEcKg', + date: '12 Ekim 2025', + duration: '8:15', + description: 'Ekim ayı metro inşaatı ilerleme raporu ve gelecek hedefler', + category: 'Rapor' + }, + { + id: 5, + type: 'photo', + title: 'Modern İstasyon Tasarımları', + thumbnail: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg', + date: '10 Ekim 2025', + description: 'Yeni nesil metro istasyonlarının modern iç mekan tasarımları', + category: 'Tasarım' + }, + { + id: 6, + type: 'video', + title: 'Çevre Dostu Metro Projesi', + thumbnail: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg', + videoUrl: 'https://www.youtube.com/embed/b9q88QDEcKg', + date: '8 Ekim 2025', + duration: '6:45', + description: 'Metro projesinde kullanılan çevre dostu teknolojiler ve sürdürülebilir yaklaşımlar', + category: 'Çevre' + }, + { + id: 7, + type: 'photo', + title: 'İşçi Güvenliği Eğitimi', + thumbnail: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg', + date: '5 Ekim 2025', + description: 'İnşaat sahalarında iş güvenliği eğitimleri', + category: 'Güvenlik' + }, + { + id: 8, + type: 'photo', + title: 'Ray Döşeme Çalışmaları', + thumbnail: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg', + date: '1 Ekim 2025', + description: 'Metro hattında ray döşeme işlemlerinin başlaması', + category: 'İnşaat' + }, + { + id: 9, + type: 'video', + title: 'TBM Makinesi Tünel Kazısı', + thumbnail: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg', + videoUrl: 'https://www.youtube.com/embed/b9q88QDEcKg', + date: '28 Eylül 2025', + duration: '4:20', + description: 'Dev tünel açma makinesinin çalışma anları', + category: 'Teknoloji' + }, + { + id: 10, + type: 'photo', + title: 'Gece Vardiyası Çalışmaları', + thumbnail: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg', + date: '25 Eylül 2025', + description: 'İnşaat sahalarında 7/24 devam eden çalışmalar', + category: 'İnşaat' + } +]; diff --git a/data/metroStations.ts b/data/metroStations.ts new file mode 100644 index 0000000..dd384d4 --- /dev/null +++ b/data/metroStations.ts @@ -0,0 +1,162 @@ +export interface MetroStation { + id: number; + name: string; + status: 'completed' | 'in-progress' | 'planned'; + progress: number; + startDate: string; + expectedCompletion: string; + actualCompletion?: string; + connections?: string[]; + features: string[]; + dailyCapacity: string; + image?: string; +} + +export const metroStations: MetroStation[] = [ + { + id: 1, + name: 'Dikimevi', + status: 'in-progress', + progress: 75, + startDate: '15 Ocak 2024', + expectedCompletion: '30 Haziran 2026', + connections: ['M1', 'M3'], + features: ['Aktarma İstasyonu', 'Otopark', 'Engelsiz Erişim'], + dailyCapacity: '50,000', + image: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg' + }, + { + id: 2, + name: 'Tuzluçayır', + status: 'in-progress', + progress: 65, + startDate: '1 Şubat 2024', + expectedCompletion: '15 Temmuz 2026', + connections: [], + features: ['Modern Tasarım', 'Güneş Enerjisi', 'Güvenlik Sistemleri'], + dailyCapacity: '35,000', + image: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg' + }, + { + id: 3, + name: 'Yenimahalle', + status: 'in-progress', + progress: 55, + startDate: '15 Mart 2024', + expectedCompletion: '30 Ağustos 2026', + connections: ['M2'], + features: ['Aktarma Merkezi', 'Ticari Alan', 'Otopark'], + dailyCapacity: '45,000', + image: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg' + }, + { + id: 4, + name: 'Demetevler', + status: 'in-progress', + progress: 45, + startDate: '1 Nisan 2024', + expectedCompletion: '15 Eylül 2026', + connections: [], + features: ['Modern Mimari', 'LED Aydınlatma', 'Havalandırma'], + dailyCapacity: '30,000', + image: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg' + }, + { + id: 5, + name: 'Akköprü', + status: 'in-progress', + progress: 40, + startDate: '15 Nisan 2024', + expectedCompletion: '30 Eylül 2026', + connections: [], + features: ['Geniş Peronlar', 'Asansör', 'Güvenlik Kameraları'], + dailyCapacity: '28,000', + image: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg' + }, + { + id: 6, + name: 'Şentepe', + status: 'planned', + progress: 25, + startDate: '1 Mayıs 2024', + expectedCompletion: '15 Ekim 2026', + connections: [], + features: ['Çevre Dostu', 'Akıllı Sistemler', 'Engelsiz Erişim'], + dailyCapacity: '25,000', + image: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg' + }, + { + id: 7, + name: 'Atatürk', + status: 'planned', + progress: 20, + startDate: '15 Mayıs 2024', + expectedCompletion: '30 Ekim 2026', + connections: ['M1', 'M4'], + features: ['Ana Aktarma', 'AVM Bağlantısı', 'Geniş Alan'], + dailyCapacity: '60,000', + image: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg' + }, + { + id: 8, + name: 'Sıhhiye', + status: 'planned', + progress: 15, + startDate: '1 Haziran 2024', + expectedCompletion: '15 Kasım 2026', + connections: ['M2', 'M3'], + features: ['Merkezi Konum', 'Hastane Bağlantısı', 'Yüksek Kapasite'], + dailyCapacity: '55,000', + image: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg' + }, + { + id: 9, + name: 'Kızılay', + status: 'planned', + progress: 10, + startDate: '15 Haziran 2024', + expectedCompletion: '30 Kasım 2026', + connections: ['M1', 'M2', 'M3', 'M4'], + features: ['Merkez İstasyon', 'Çok Katlı', 'Tüm Hatlar'], + dailyCapacity: '80,000', + image: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg' + }, + { + id: 10, + name: 'Kocatepe', + status: 'planned', + progress: 5, + startDate: '1 Temmuz 2024', + expectedCompletion: '15 Aralık 2026', + connections: [], + features: ['Modern Tasarım', 'Ticari Birimler', 'Güvenlik'], + dailyCapacity: '22,000', + image: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg' + } +]; + +export const getStatusColor = (status: MetroStation['status']) => { + switch (status) { + case 'completed': + return 'bg-green-500'; + case 'in-progress': + return 'bg-blue-500'; + case 'planned': + return 'bg-yellow-500'; + default: + return 'bg-gray-500'; + } +}; + +export const getStatusText = (status: MetroStation['status']) => { + switch (status) { + case 'completed': + return 'Tamamlandı'; + case 'in-progress': + return 'Devam Ediyor'; + case 'planned': + return 'Planlanıyor'; + default: + return 'Bilinmiyor'; + } +}; diff --git a/data/news.ts b/data/news.ts new file mode 100644 index 0000000..b2f1847 --- /dev/null +++ b/data/news.ts @@ -0,0 +1,114 @@ +export interface NewsItem { + id: number; + category: 'construction' | 'announcements' | 'events'; + title: string; + summary: string; + image: string; + date: string; + author: string; + content: string; + tags: string[]; + featured?: boolean; // Ana sayfada gösterilecek mi +} + +export const newsData: NewsItem[] = [ + { + id: 1, + category: 'construction', + title: 'A2 Metro Hattı Kazı Çalışmaları Hızla İlerliyor', + summary: 'Dikimevi-Natoyolu Metro Hattı inşaat çalışmaları planlandığı gibi devam ediyor.', + image: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg', + date: '20 Ekim 2025', + author: 'Ankara Büyükşehir Belediyesi', + content: 'A2 Metro Hattı kapsamında Dikimevi-Natoyolu güzergâhında yürütülen kazı çalışmaları planlandığı şekilde devam ediyor. 6.5 kilometre uzunluğundaki hat üzerinde 5 istasyon inşa edilecek. Proje, Ankara\'nın ulaşım altyapısına önemli bir katkı sağlayacak. İnşaat ekiplerimiz 7/24 çalışarak projeyi zamanında tamamlamak için büyük çaba gösteriyor.', + tags: ['Metro', 'İnşaat', 'A2 Hattı'], + featured: true + }, + { + id: 2, + category: 'announcements', + title: 'Yeni İstasyon Tasarımları Açıklandı', + summary: 'Modern ve çevre dostu istasyon tasarımları kamuoyuyla paylaşıldı.', + image: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg', + date: '18 Ekim 2025', + author: 'Proje Yönetimi', + content: 'A2 Metro Hattı istasyonlarının mimari tasarımları tamamlandı. Tasarımlarda enerji verimliliği, erişilebilirlik ve modern estetik ön planda tutuldu. İstasyonlarda güneş enerjisi panelleri, LED aydınlatma ve akıllı havalandırma sistemleri kullanılacak. Yolcu konforunu artıracak modern bekleme alanları ve engelsiz erişim imkanları sunulacak.', + tags: ['Tasarım', 'Sürdürülebilirlik', 'İstasyon'], + featured: true + }, + { + id: 3, + category: 'construction', + title: 'Dikimevi İstasyonu Temel Atma Töreni Gerçekleştirildi', + summary: 'Dikimevi İstasyonu\'nun temel atma töreni büyük bir coşkuyla yapıldı.', + image: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg', + date: '15 Ekim 2025', + author: 'Ankara Büyükşehir Belediyesi', + content: 'A2 Metro Hattı\'nın önemli duraklarından biri olan Dikimevi İstasyonu\'nun temel atma töreni gerçekleştirildi. Törene Ankara Büyükşehir Belediye Başkanı, milletvekilleri ve bölge sakinleri katıldı. İstasyonun 2026 yılı sonunda hizmete girmesi planlanıyor. Dikimevi istasyonu günlük 50 bin yolcu kapasitesine sahip olacak.', + tags: ['Tören', 'Dikimevi', 'Milestone'], + featured: true + }, + { + id: 4, + category: 'announcements', + title: 'Metro Hattı 2026\'da Hizmete Girecek', + summary: 'A2 Metro Hattı\'nın ilk etabının 2026 yılı sonunda hizmete girmesi planlanıyor.', + image: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg', + date: '12 Ekim 2025', + author: 'Ankara Büyükşehir Belediyesi', + content: 'Ankara Büyükşehir Belediyesi yetkilileri, A2 Metro Hattı\'nın ilk etabının 2026 yılı sonunda hizmete açılacağını duyurdu. 8 istasyondan oluşan hat, günlük 100 bin yolcuya hizmet verecek. Modern trenler, konforlu istasyonlar ve güvenli sistem ile Ankara\'nın ulaşım altyapısına önemli bir katkı sağlayacak. İlk etabın ardından hatın genişletilmesi planlanıyor.', + tags: ['2026', 'Açılış', 'Milestone'], + featured: true + }, + { + id: 5, + category: 'events', + title: 'Metro Projesi Tanıtım Günleri Düzenlendi', + summary: 'Vatandaşlarımız proje hakkında detaylı bilgi aldı.', + image: 'https://images.pexels.com/photos/17152223/pexels-photo-17152223.jpeg', + date: '8 Ekim 2025', + author: 'Halkla İlişkiler', + content: 'A2 Metro Hattı Projesi\'ni tanıtmak amacıyla düzenlenen etkinlikte vatandaşlar, proje yetkilileriyle bir araya geldi. Etkinlikte 3D animasyonlar, maketler ve interaktif sunumlarla proje detayları anlatıldı. Vatandaşların soruları cevaplandı. Etkinliğe büyük ilgi gösterildi.', + tags: ['Tanıtım', 'Etkinlik', 'Halkla İlişkiler'] + }, + { + id: 6, + category: 'announcements', + title: 'Trafik Düzenlemesi Duyurusu', + summary: 'İnşaat nedeniyle bazı yollarda geçici trafik düzenlemeleri yapılacak.', + image: 'https://images.pexels.com/photos/17302615/pexels-photo-17302615.jpeg', + date: '5 Ekim 2025', + author: 'Ulaşım Koordinasyon', + content: 'A2 Metro Hattı inşaatı kapsamında Dikimevi-Tuzluçayır güzergâhında geçici trafik düzenlemeleri uygulanacak. Alternatif güzergâhlar belirlenmiş olup, yönlendirme levhaları yerleştirilmiştir. Vatandaşlarımızın anlayışına sığınıyoruz. Detaylı bilgi için belediyemizin web sitesini ziyaret edebilirsiniz.', + tags: ['Trafik', 'Duyuru', 'Koordinasyon'] + }, + { + id: 7, + category: 'construction', + title: 'TBM Makinesi Tünele Girdi', + summary: 'Dev tünel açma makinesi (TBM) çalışmalara başladı.', + image: 'https://images.pexels.com/photos/33950678/pexels-photo-33950678.jpeg', + date: '1 Ekim 2025', + author: 'İnşaat Ekibi', + content: 'A2 Metro Hattı tünel kazı çalışmalarında kullanılacak TBM (Tunnel Boring Machine) makinesi tünele girdi. 120 metrelik dev makine, günde ortalama 15 metre ilerleme kaydedecek. TBM teknolojisi sayesinde kazı çalışmaları daha hızlı ve güvenli şekilde yapılıyor. Makine, en son teknoloji sensörlerle donatılmış durumda.', + tags: ['TBM', 'Tünel', 'Teknoloji'] + }, + { + id: 8, + category: 'events', + title: 'İş Güvenliği Eğitimi Tamamlandı', + summary: '500+ çalışan iş güvenliği eğitiminden geçti.', + image: 'https://images.pexels.com/photos/253647/pexels-photo-253647.jpeg', + date: '28 Eylül 2025', + author: 'İnsan Kaynakları', + content: 'A2 Metro Hattı projesinde çalışan tüm personel için kapsamlı iş güvenliği eğitimleri düzenlendi. ISO 45001 standartlarına uygun eğitimlerde, inşaat sahası güvenliği, ekipman kullanımı ve acil durum prosedürleri anlatıldı. Sıfır iş kazası hedefiyle çalışıyoruz.', + tags: ['İş Güvenliği', 'Eğitim', 'ISO 45001'] + } +]; + +export const categories = [ + { id: 'all', name: 'Tümü', icon: '📰' }, + { id: 'construction', name: 'İnşaat', icon: '🏗️' }, + { id: 'announcements', name: 'Duyurular', icon: '📢' }, + { id: 'events', name: 'Etkinlikler', icon: '🎉' }, +];