# -*- coding: utf-8 -*-
"""
HUD Dashboard v8.0 - Complete Responsive System
Full CRUD, sub-routing, responsive design for all pages
"""

import sys
import json
import math
import random
import uuid
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Any
from dataclasses import dataclass, asdict

from PyQt6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout,
    QGridLayout, QLabel, QPushButton, QFrame, QScrollArea,
    QProgressBar, QStackedWidget, QSplitter, QTextEdit,
    QSpinBox, QDoubleSpinBox, QComboBox, QLineEdit, QCheckBox,
    QSlider, QGroupBox, QTableWidget, QTableWidgetItem,
    QHeaderView, QAbstractItemView, QMenu, QMenuBar,
    QStatusBar, QToolBar, QToolButton, QButtonGroup,
    QRadioButton, QTabWidget, QTreeWidgetItem, QTreeWidget,
    QGraphicsView, QGraphicsScene, QGraphicsOpacityEffect,
    QGraphicsDropShadowEffect, QSizePolicy, QSpacerItem,
    QGraphicsTextItem, QGraphicsRectItem, QMessageBox,
    QDialog, QFormLayout, QDialogButtonBox, QDateEdit,
    QFileDialog, QInputDialog, QTextBrowser
)
from PyQt6.QtCore import (
    Qt, QTimer, QThread, pyqtSignal, QPropertyAnimation,
    QEasingCurve, QParallelAnimationGroup, QSequentialAnimationGroup,
    QRect, QPointF, QSize, pyqtProperty, QUrl, QVariantAnimation,
    QTimeLine, QEvent, QEventLoop, QRectF, QThread, QDateTime
)
from PyQt6.QtGui import (
    QFont, QColor, QPalette, QLinearGradient, QRadialGradient,
    QPen, QBrush, QPainter, QPixmap, QIcon, QCursor,
    QPolygonF, QFontDatabase, QHoverEvent, QEnterEvent,
    QMouseEvent, QResizeEvent, QShowEvent, QPainterPath,
    QTransform, QFontMetrics, QConicalGradient, QKeySequence,
    QFontMetricsF, QTextCursor, QPainter, QBrush, QAction,
    QIntValidator, QDoubleValidator
)


# Data Models
@dataclass
class Proje:
    id: str
    ad: str
    musteri: str
    durum: str
    baslangic: datetime
    bitis: datetime
    bütce: float
    harcanan: float
    ilerleme: float
    sorumlu: str
    takim_uyeleri: List[str]
    oncelik: str
    risk_seviyesi: str
    aciklama: str = ""

@dataclass
class Siparis:
    id: str
    proje_id: str
    musteri: str
    urun_kodu: str
    urun_adi: str
    miktar: int
    birim_fiyat: float
    toplam_tutar: float
    siparis_tarihi: datetime
    teslim_tarihi: datetime
    durum: str
    odeme_durumu: str
    kargo_takip: str = ""
    notlar: str = ""

@dataclass
class Teklif:
    id: str
    musteri: str
    proje_adi: str
    konu: str
    tarih: datetime
    gecerlilik_tarihi: datetime
    durum: str
    toplam_tutar: float
    kdv: float
    indirim: float
    net_tutar: float
    temsilci: str
    ihtimal: float
    notlar: str = ""

@dataclass
class Makine:
    id: str
    ad: str
    tip: str
    durum: str
    mevcut_is: str
    verimlilik: float
    sıcaklık: float
    vibrasyon: float
    bakim_saati: float
    calisma_saati: float
    operasyon_sonrasi: float
    son_bakim: datetime
    operatör: str = ""


# Global data store
class DataStore:
    def __init__(self):
        self.projeler = []
        self.siparisler = []
        self.teklifler = []
        self.makineler = []
        self.generateSampleData()

    def generateSampleData(self):
        # Projeler
        self.projeler = [
            Proje(
                id="PRJ-001", ad="Otomatik Vites Sistemi", musteri="OtoTek A.Ş.",
                durum="Üretim", baslangic=datetime.now() - timedelta(days=30),
                bitis=datetime.now() + timedelta(days=45), bütce=250000,
                harcanan=125000, ilerleme=65, sorumlu="Ahmet Demir",
                takim_uyeleri=["Mehmet Kaya", "Ali Yılmaz"], oncelik="Kritik",
                risk_seviyesi="Orta", aciklama="Yeni nesil otomatik şanzıman sistemi"
            ),
            Proje(
                id="PRJ-002", ad="Hidrolik Pres Kalıbı", musteri="PresMak Endüstri",
                durum="Tasarım", baslangic=datetime.now() - timedelta(days=15),
                bitis=datetime.now() + timedelta(days=60), bütce=180000,
                harcanan=45000, ilerleme=25, sorumlu="Mehmet Kaya",
                takim_uyeleri=["Ali Yılmaz", "Zeynep Ak"], oncelik="Yüksek",
                risk_seviyesi="Düşük", aciklama="Ağır hizmet hidrolik pres kalıbı"
            ),
            Proje(
                id="PRJ-003", ad="Robotik Kol Montajı", musteri="RobotTech",
                durum="Montaj", baslangic=datetime.now() - timedelta(days=45),
                bitis=datetime.now() + timedelta(days=15), bütce=320000,
                harcanan=285000, ilerleme=90, sorumlu="Ali Yılmaz",
                takim_uyeleri=["Veli Can", "Hakan Bülent"], oncelik="Normal",
                risk_seviyesi="Düşük", aciklama="6 eksen robotik kol montaj"
            ),
            Proje(
                id="PRJ-004", ad="Medikal Cihaz Parçaları", musteri="MedTech Solutions",
                durum="Planlama", baslangic=datetime.now() + timedelta(days=5),
                bitis=datetime.now() + timedelta(days=90), bütce=450000,
                harcanan=5000, ilerleme=5, sorumlu="Veli Can",
                takim_uyeleri=["Hakan Bülent"], oncelik="Yüksek", risk_seviyesi="Yüksek",
                aciklama="Tıbbi cihaz üretim parçaları"
            ),
            Proje(
                id="PRJ-005", ad="Aerospace Komponent", musteri="UzayTech Havacılık",
                durum="Test", baslangic=datetime.now() - timedelta(days=60),
                bitis=datetime.now() + timedelta(days=10), bütce=580000,
                harcanan=520000, ilerleme=95, sorumlu="Hakan Bülent",
                takim_uyeleri=["Ayşe Gül"], oncelik="Kritik", risk_seviyesi="Orta",
                aciklama="Uzay yolcu bileşenleri"
            ),
        ]

        # Makineler
        self.makineler = [
            Makine(
                id="CNC-001", ad="CNC İşleme Merkezi 1", tip="CNC 5 Eksen",
                durum="Çalışıyor", mevcut_is="PRJ-001 Vites Dişlisi",
                verimlilik=87.5, sıcaklık=42.3, vibrasyon=0.85,
                bakim_saati=125.5, calisma_saati=3420.8, operasyon_sonrasi=45,
                son_bakim=datetime.now() - timedelta(days=30), operatör="Ahmet Y."
            ),
            Makine(
                id="CNC-002", ad="CNC İşleme Merkezi 2", tip="CNC 3 Eksen",
                durum="Boşta", mevcut_is="", verimlilik=0, sıcaklık=28.5, vibrasyon=0.12,
                bakim_saati=89.2, calisma_saati=2156.3, operasyon_sonrasi=0,
                son_bakim=datetime.now() - timedelta(days=15), operatör="Mehmet K."
            ),
            Makine(
                id="FRZ-001", ad="Freze Tezgahı 1", tip="3 Eksen Freze",
                durum="Çalışıyor", mevcut_is="PRJ-002 Kalıp Üst",
                verimlilik=92.1, sıcaklık=45.7, vibrasyon=1.12,
                bakim_saati=56.8, calisma_saati=1890.5, operasyon_sonrasi=30,
                son_bakim=datetime.now() - timedelta(days=7), operatör="Ali Y."
            ),
            Makine(
                id="TRN-001", ad="Turing Merkezi", tip="2 Eksen",
                durum="Bakımda", mevcut_is="Bakım modu",
                verimlilik=0, sıcaklık=22.1, vibrasyon=0,
                bakim_saati=2.5, calisma_saati=4235.7, operasyon_sonrasi=120,
                son_bakim=datetime.now(), operatör="Veli C."
            ),
        ]

        # Siparişler
        for i in range(15):
            self.siparisler.append(
                Siparis(
                    id=f"SIP-2024-{i+1:03d}",
                    proje_id=random.choice([p.id for p in self.projeler]),
                    musteri=random.choice(["OtoTek A.Ş.", "PresMak Endüstri", "RobotTech", "MedTech", "UzayTech"]),
                    urun_kodu=f"UR-{1000+i}",
                    urun_adi=f"Parça {chr(65+i)}-{i+1}",
                    miktar=random.randint(5, 100),
                    birim_fiyat=random.uniform(100, 5000),
                    toplam_tutar=0,
                    siparis_tarihi=datetime.now() - timedelta(days=random.randint(1, 30)),
                    teslim_tarihi=datetime.now() + timedelta(days=random.randint(10, 60)),
                    durum=random.choice(["Bekliyor", "Üretimde", "Kargoda", "Teslim Edildi"]),
                    odeme_durumu=random.choice(["Ödenmedi", "Kısmi Ödeme", "Ödendi"]),
                    kargo_takip=f"TR{random.randint(100000000, 999999999)}" if random.random() > 0.3 else "",
                    notlar=f"Sipariş notları {i+1}"
                )
            )
            self.siparisler[-1].toplam_tutar = self.siparisler[-1].miktar * self.siparisler[-1].birim_fiyat

        # Teklifler
        for i in range(10):
            toplam = random.uniform(50000, 500000)
            kdv = toplam * 0.18
            indirim = random.uniform(0, 50000)
            self.teklifler.append(
                Teklif(
                    id=f"TKF-2024-{i+1:03d}",
                    musteri=random.choice(["TechCorp Industries", "AeroSpace Dynamics", "MedTech Solutions", "AutoParts Pro"]),
                    proje_adi=f"Proje {chr(65+i)}",
                    konu=f"Özel üretim talebi {i+1}",
                    tarih=datetime.now() - timedelta(days=random.randint(1, 20)),
                    gecerlilik_tarihi=datetime.now() + timedelta(days=random.randint(10, 30)),
                    durum=random.choice(["Beklemede", "Gönderildi", "Kabul", "Red", "Süresi Doldu"]),
                    toplam_tutar=toplam,
                    kdv=kdv,
                    indirim=indirim,
                    net_tutar=toplam + kdv - indirim,
                    temsilci=random.choice(["Ahmet Demir", "Mehmet Kaya", "Ali Yılmaz", "Veli Can", "Hakan Bülent"]),
                    ihtimal=random.randint(20, 95),
                    notlar=f"Teklif detayları {i+1}"
                )
            )

    def getAktifIsler(self):
        """Aktif üretim işlerini döndürür (siparişlerden oluşturulur)"""
        aktif_isler = []
        for siparis in self.siparisler:
            if siparis.durum in ["Bekliyor", "Üretimde", "Hazırlanıyor"]:
                # Her siparişi bir üretim işlemi olarak kabul et
                aktif_isler.append(type('AktifIs', (), {
                    'proje_kodu': siparis.proje_id,
                    'parca_adi': siparis.urun_adi,
                    'durum': siparis.durum,
                    'ilerleme': (siparis.miktar - getattr(siparis, 'kalan_miktar', siparis.miktar)) / max(siparis.miktar, 1) * 100,
                    'musteri': siparis.musteri,
                    'termin': siparis.teslim_tarihi.strftime("%d.%m.%Y") if siparis.teslim_tarihi else ""
                })())
        return aktif_isler


data_store = DataStore()


class CyberButton(QPushButton):
    def __init__(self, text, color="#00ff00", size="normal"):
        super().__init__(text)
        self.color = QColor(color)
        self.setupStyle(size)
        self.startGlitch()

    def setupStyle(self, size="normal"):
        sizes = {
            "small": ("9px", "4px 8px", "28px"),
            "normal": ("11px", "6px 12px", "32px"),
            "large": ("13px", "8px 16px", "36px")
        }
        font_size, padding, height = sizes.get(size, sizes["normal"])

        self.setStyleSheet(f"""
            CyberButton {{
                background: #000000;
                border: 1px solid {self.color.name()};
                color: {self.color.name()};
                font-family: 'Consolas', monospace;
                font-size: {font_size};
                font-weight: bold;
                padding: {padding};
                text-transform: uppercase;
                letter-spacing: 1px;
                min-height: {height};
            }}
            CyberButton:hover {{
                background: rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 30);
                border: 1px solid rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 255);
                text-shadow: 0 0 5px {self.color.name()};
            }}
        """)

    def startGlitch(self):
        self.glitch_timer = QTimer()
        self.glitch_timer.timeout.connect(self.glitch)
        self.glitch_timer.start(300)

    def glitch(self):
        if random.random() < 0.05:
            original = self.text()
            self.setText("█" + original)
            QTimer.singleShot(100, lambda: self.setText(original))


class NanoCard(QFrame):
    def __init__(self, title, value, color="#00ff00"):
        super().__init__()
        self.color = QColor(color)
        self.title = title
        self.value = value
        self.setupStyle()
        self.addEffects()

    def setupStyle(self):
        self.setFixedHeight(70)
        self.setMinimumWidth(160)
        self.setFrameStyle(QFrame.Shape.Box)

        self.setStyleSheet(f"""
            NanoCard {{
                background: #000000;
                border: 1px solid {self.color.name()};
                padding: 8px;
            }}
        """)

        layout = QVBoxLayout()
        layout.setSpacing(3)
        layout.setContentsMargins(10, 8, 10, 8)

        title_label = QLabel(self.title)
        title_label.setStyleSheet(f"""
            color: {self.color.name()};
            font-family: 'Consolas', monospace;
            font-size: 10px;
            font-weight: bold;
            text-transform: uppercase;
        """)
        layout.addWidget(title_label)

        value_label = QLabel(self.value)
        value_label.setStyleSheet(f"""
            color: #ffffff;
            font-family: 'Orbitron', monospace;
            font-size: 18px;
            font-weight: bold;
        """)
        layout.addWidget(value_label)

        self.setLayout(layout)

    def addEffects(self):
        self.scan_timer = QTimer()
        self.scan_pos = 0
        self.scan_timer.timeout.connect(self.scan)
        self.scan_timer.start(100)

    def scan(self):
        self.scan_pos = (self.scan_pos + 5) % self.height()
        self.update()

    def paintEvent(self, event):
        super().paintEvent(event)
        painter = QPainter(self)
        scan_color = QColor(self.color)
        scan_color.setAlpha(100)
        painter.setPen(QPen(scan_color, 1))
        painter.drawLine(0, self.scan_pos, self.width(), self.scan_pos)


class CyberTerminal(QTextEdit):
    def __init__(self, module="SYSTEM"):
        super().__init__()
        self.module = module
        self.setupStyle()
        self.startTerminalOutput()

    def setupStyle(self):
        self.setReadOnly(True)
        self.setMaximumHeight(150)
        self.setStyleSheet(f"""
            CyberTerminal {{
                background: #000000;
                color: #00ff00;
                border: 1px solid #00ff00;
                font-family: 'Consolas', monospace;
                font-size: 10px;
                padding: 8px;
            }}
        """)

    def startTerminalOutput(self):
        self.terminal_timer = QTimer()
        self.terminal_timer.timeout.connect(self.addLine)
        self.terminal_timer.start(2000)

        initial = f"""
root@fikatia:~$ ./{self.module.lower()}_monitor.sh
[INIT] {self.module} interface online
[SCAN] Loading modules...
        """.strip()
        self.setPlainText(initial)

    def addLine(self):
        timestamp = datetime.now().strftime("%H:%M:%S")
        messages = {
            "SYSTEM": [
                f"[{timestamp}] All systems nominal",
                f"[{timestamp}] Backup completed",
                f"[{timestamp}] Security scan: Clean",
            ],
            "CNC": [
                f"[{timestamp}] CNC-001: Running at {random.randint(85, 95)}%",
                f"[{timestamp}] Tool change: Completed",
                f"[{timestamp}] Maintenance schedule: Updated",
            ],
            "PRODUCTION": [
                f"[{timestamp}] Job queue: {random.randint(10, 20)} active",
                f"[{timestamp}] Efficiency: {random.randint(85, 95)}%",
                f"[{timestamp}] Quality check: Passed",
            ],
            "PROJECT": [
                f"[{timestamp}] PRJ-00{random.randint(1,5)}: {random.randint(10,100)}% complete",
                f"[{timestamp}] Resource allocation: OK",
                f"[{timestamp}] Timeline: On track",
            ],
            "ORDER": [
                f"[{timestamp}] New order: SIP-2024-{random.randint(100,999)}",
                f"[{timestamp}] Shipment: Delivered",
                f"[{timestamp}] Payment: Received",
            ],
            "QUOTE": [
                f"[{timestamp}] Quote sent: TKF-2024-{random.randint(100,999)}",
                f"[{timestamp}] Follow-up: Scheduled",
                f"[{timestamp}] Conversion rate: {random.randint(60, 80)}%",
            ],
            "ANALYTICS": [
                f"[{timestamp}] Report generated: Daily",
                f"[{timestamp}] KPI targets: Met",
                f"[{timestamp}] Forecast: Positive",
            ],
            "ADMIN": [
                f"[{timestamp}] User login: {random.choice(['admin', 'manager', 'operator'])}",
                f"[{timestamp}] System update: Available",
                f"[{timestamp}] Backup status: Complete",
            ]
        }

        module_messages = messages.get(self.module, messages["SYSTEM"])
        new_line = random.choice(module_messages)

        cursor = self.textCursor()
        cursor.movePosition(QTextCursor.MoveOperation.End)
        cursor.insertText("\n" + new_line)

        lines = self.toPlainText().split('\n')
        if len(lines) > 12:
            self.setPlainText('\n'.join(lines[-12:]))


# Dialog sınıfları
class AddProjeDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.proje = None
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle("[YENİ PROJE]")
        self.setFixedSize(500, 600)
        self.setStyleSheet("""
            QDialog {
                background: #000000;
                color: #00ff00;
                font-family: 'Consolas', monospace;
            }
            QLabel {
                color: #00ff00;
                font-size: 11px;
                padding: 2px;
            }
            QLineEdit, QComboBox, QDateEdit, QTextEdit, QSpinBox, QDoubleSpinBox {
                background: #000000;
                border: 1px solid #00ff00;
                color: #00ff00;
                padding: 4px;
                font-family: 'Consolas', monospace;
                font-size: 10px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        header = QLabel("┌─ YENİ PROJE EKLE ─┐")
        header.setStyleSheet("color: #00ff00; font-size: 14px; font-weight: bold; padding: 10px;")
        layout.addWidget(header)

        # Form
        form_layout = QFormLayout()

        self.ad_edit = QLineEdit()
        self.musteri_edit = QLineEdit()
        self.durum_combo = QComboBox()
        self.durum_combo.addItems(["Planlama", "Tasarım", "Üretim", "Montaj", "Test", "Teslim"])
        self.baslangic_edit = QDateEdit()
        self.baslangic_edit.setDate(datetime.now().date())
        self.bitis_edit = QDateEdit()
        self.bitis_edit.setDate(datetime.now().date() + timedelta(days=30))
        self.butce_edit = QDoubleSpinBox()
        self.butce_edit.setRange(0, 9999999)
        self.butce_edit.setValue(100000)
        self.sorumlu_edit = QLineEdit()
        self.oncelik_combo = QComboBox()
        self.oncelik_combo.addItems(["Düşük", "Normal", "Yüksek", "Kritik"])
        self.risk_combo = QComboBox()
        self.risk_combo.addItems(["Düşük", "Orta", "Yüksek"])
        self.aciklama_edit = QTextEdit()
        self.aciklama_edit.setMaximumHeight(100)

        form_layout.addRow("Proje Adı:", self.ad_edit)
        form_layout.addRow("Müşteri:", self.musteri_edit)
        form_layout.addRow("Durum:", self.durum_combo)
        form_layout.addRow("Başlangıç:", self.baslangis_edit)
        form_layout.addRow("Bitiş:", self.bitis_edit)
        form_layout.addRow("Bütçe:", self.butce_edit)
        form_layout.addRow("Sorumlu:", self.sorumlu_edit)
        form_layout.addRow("Öncelik:", self.oncelik_combo)
        form_layout.addRow("Risk:", self.risk_combo)
        form_layout.addRow("Açıklama:", self.aciklama_edit)

        layout.addLayout(form_layout)

        # Buttons
        button_layout = QHBoxLayout()
        btn_kaydet = CyberButton("KAYDET", "#00ff00")
        btn_iptal = CyberButton("İPTAL", "#ff0000")
        btn_kaydet.clicked.connect(self.accept)
        btn_iptal.clicked.connect(self.reject)
        button_layout.addWidget(btn_iptal)
        button_layout.addStretch()
        button_layout.addWidget(btn_kaydet)
        layout.addLayout(button_layout)

        self.setLayout(layout)

    def getProje(self):
        if self.result() == QDialog.DialogCode.Accepted:
            return Proje(
                id=f"PRJ-{datetime.now().strftime('%Y%m%d%H%M%S')}",
                ad=self.ad_edit.text(),
                musteri=self.musteri_edit.text(),
                durum=self.durum_combo.currentText(),
                baslangic=datetime.combine(self.baslangis_edit.date(), datetime.min.time()),
                bitis=datetime.combine(self.bitis_edit.date(), datetime.min.time()),
                bütce=self.butce_edit.value(),
                harcanan=0,
                ilerleme=0,
                sorumlu=self.sorumlu_edit.text(),
                takim_uyeleri=[],
                oncelik=self.oncelik_combo.currentText(),
                risk_seviyesi=self.risk_combo.currentText(),
                aciklama=self.aciklama_edit.toPlainText()
            )
        return None


class AddSiparisDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.siparis = None
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle("[YENİ SİPARİŞ]")
        self.setFixedSize(500, 500)
        self.setStyleSheet("""
            QDialog {
                background: #000000;
                color: #ff8800;
                font-family: 'Consolas', monospace;
            }
            QLabel {
                color: #ff8800;
                font-size: 11px;
                padding: 2px;
            }
            QLineEdit, QComboBox, QDateEdit, QTextEdit, QSpinBox, QDoubleSpinBox {
                background: #000000;
                border: 1px solid #ff8800;
                color: #ff8800;
                padding: 4px;
                font-family: 'Consolas', monospace;
                font-size: 10px;
            }
        """)

        layout = QVBoxLayout()

        header = QLabel("┌─ YENİ SİPARİŞ EKLE ─┐")
        header.setStyleSheet("color: #ff8800; font-size: 14px; font-weight: bold; padding: 10px;")
        layout.addWidget(header)

        form_layout = QFormLayout()

        # Proje seçimi
        self.proje_combo = QComboBox()
        for proje in data_store.projeler:
            self.proje_combo.addItem(f"{proje.id} - {proje.ad}")

        self.musteri_edit = QLineEdit()
        self.urun_kodu_edit = QLineEdit()
        self.urun_adi_edit = QLineEdit()
        self.miktar_edit = QSpinBox()
        self.miktar_edit.setRange(1, 1000)
        self.birim_fiyat_edit = QDoubleSpinBox()
        self.birim_fiyat_edit.setRange(0, 100000)
        self.siparis_tarih = QDateEdit()
        self.siparis_tarih.setDate(datetime.now().date())
        self.teslim_tarih = QDateEdit()
        self.teslim_tarih.setDate(datetime.now().date() + timedelta(days=30))
        self.durum_combo = QComboBox()
        self.durum_combo.addItems(["Bekliyor", "Üretimde", "Hazırlanıyor", "Kargoda", "Teslim Edildi"])
        self.odeme_combo = QComboBox()
        self.odeme_combo.addItems(["Ödenmedi", "Kısmi Ödeme", "Ödendi"])
        self.notlar_edit = QTextEdit()
        self.notlar_edit.setMaximumHeight(80)

        form_layout.addRow("Proje:", self.proje_combo)
        form_layout.addRow("Müşteri:", self.musteri_edit)
        form_layout.addRow("Ürün Kodu:", self.urun_kodu_edit)
        form_layout.addRow("Ürün Adı:", self.urun_adi_edit)
        form_layout.addRow("Miktar:", self.miktar_edit)
        form_layout.addRow("Birim Fiyat:", self.birim_fiyat_edit)
        form_layout.addRow("Sipariş Tarihi:", self.siparis_tarih)
        form_layout.addRow("Teslim Tarihi:", self.teslim_tarih)
        form_layout.addRow("Durum:", self.durum_combo)
        form_layout.addRow("Ödeme Durumu:", self.odeme_combo)
        form_layout.addRow("Notlar:", self.notlar_edit)

        layout.addLayout(form_layout)

        button_layout = QHBoxLayout()
        btn_kaydet = CyberButton("KAYDET", "#ff8800")
        btn_iptal = CyberButton("İPTAL", "#ff0000")
        btn_kaydet.clicked.connect(self.accept)
        btn_iptal.clicked.connect(self.reject)
        button_layout.addWidget(btn_iptal)
        button_layout.addStretch()
        button_layout.addWidget(btn_kaydet)
        layout.addLayout(button_layout)

        self.setLayout(layout)

    def getSiparis(self):
        if self.result() == QDialog.DialogCode.Accepted:
            proje_text = self.proje_combo.currentText()
            proje_id = proje_text.split(" - ")[0]
            miktar = self.miktar_edit.value()
            birim_fiyat = self.birim_fiyat_edit.value()

            return Siparis(
                id=f"SIP-2024-{datetime.now().strftime('%H%M%S')}",
                proje_id=proje_id,
                musteri=self.musteri_edit.text(),
                urun_kodu=self.urun_kodu_edit.text(),
                urun_adi=self.urun_adi_edit.text(),
                miktar=miktar,
                birim_fiyat=birim_fiyat,
                toplam_tutar=miktar * birim_fiyat,
                siparis_tarihi=datetime.combine(self.siparis_tarih.date(), datetime.min.time()),
                teslim_tarihi=datetime.combine(self.teslim_tarih.date(), datetime.min.time()),
                durum=self.durum_combo.currentText(),
                odeme_durumu=self.odeme_combo.currentText(),
                notlar=self.notlar_edit.toPlainText()
            )
        return None


class AddTeklifDialog(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.teklif = None
        self.setupUI()

    def setupUI(self):
        self.setWindowTitle("[YENİ TEKLİF]")
        self.setFixedSize(500, 450)
        self.setStyleSheet("""
            QDialog {
                background: #000000;
                color: #00ffaa;
                font-family: 'Consolas', monospace;
            }
            QLabel {
                color: #00ffaa;
                font-size: 11px;
                padding: 2px;
            }
            QLineEdit, QComboBox, QDateEdit, QTextEdit, QSpinBox, QDoubleSpinBox {
                background: #000000;
                border: 1px solid #00ffaa;
                color: #00ffaa;
                padding: 4px;
                font-family: 'Consolas', monospace;
                font-size: 10px;
            }
        """)

        layout = QVBoxLayout()

        header = QLabel("┌─ YENİ TEKLİF EKLE ─┐")
        header.setStyleSheet("color: #00ffaa; font-size: 14px; font-weight: bold; padding: 10px;")
        layout.addWidget(header)

        form_layout = QFormLayout()

        self.musteri_edit = QLineEdit()
        self.proje_adi_edit = QLineEdit()
        self.konu_edit = QLineEdit()
        self.tarih_edit = QDateEdit()
        self.tarih_edit.setDate(datetime.now().date())
        self.gecerlilik_edit = QDateEdit()
        self.gecerlilik_edit.setDate(datetime.now().date() + timedelta(days=30))
        self.durum_combo = QComboBox()
        self.durum_combo.addItems(["Hazırlanıyor", "Gönderildi", "Beklemede", "Kabul", "Red", "Süresi Doldu"])
        self.toplam_edit = QDoubleSpinBox()
        self.toplam_edit.setRange(0, 9999999)
        self.toplam_edit.setValue(100000)
        self.kdv_edit = QDoubleSpinBox()
        self.kdv_edit.setRange(0, 999999)
        self.kdv_edit.setValue(18000)
        self.indirim_edit = QDoubleSpinBox()
        self.indirim_edit.setRange(0, 999999)
        self.indirim_edit.setValue(0)
        self.temsilci_combo = QComboBox()
        self.temsilci_combo.addItems(["Ahmet Demir", "Mehmet Kaya", "Ali Yılmaz", "Veli Can", "Hakan Bülent"])
        self.ihtimal_edit = QSpinBox()
        self.ihtimal_edit.setRange(0, 100)
        self.ihtimal_edit.setValue(50)
        self.notlar_edit = QTextEdit()
        self.notlar_edit.setMaximumHeight(80)

        form_layout.addRow("Müşteri:", self.musteri_edit)
        form_layout.addRow("Proje Adı:", self.proje_adi_edit)
        form_layout.addRow("Konu:", self.konu_edit)
        form_layout.addRow("Tarih:", self.tarih_edit)
        form_layout.addRow("Geçerlilik:", self.gecerlilik_edit)
        form_layout.addRow("Durum:", self.durum_combo)
        form_layout.addRow("Toplam Tutar:", self.toplam_edit)
        form_layout.addRow("KDV (%):", self.kdv_edit)
        form_layout.addRow("İndirim:", self.indirim_edit)
        form_layout.addRow("Temsilci:", self.temsilci_combo)
        form_layout.addRow("Kazanma İhtimali:", self.ihtimal_edit)
        form_layout.addRow("Notlar:", self.notlar_edit)

        layout.addLayout(form_layout)

        button_layout = QHBoxLayout()
        btn_kaydet = CyberButton("KAYDET", "#00ffaa")
        btn_iptal = CyberButton("İPTAL", "#ff0000")
        btn_kaydet.clicked.connect(self.accept)
        btn_iptal.clicked.connect(self.reject)
        button_layout.addWidget(btn_iptal)
        button_layout.addStretch()
        button_layout.addWidget(btn_kaydet)
        layout.addLayout(button_layout)

        self.setLayout(layout)

    def getTeklif(self):
        if self.result() == QDialog.DialogCode.Accepted:
            toplam = self.toplam_edit.value()
            kdv = self.kdv_edit.value()
            indirim = self.indirim_edit.value()

            return Teklif(
                id=f"TKF-2024-{datetime.now().strftime('%H%M%S')}",
                musteri=self.musteri_edit.text(),
                proje_adi=self.proje_adi_edit.text(),
                konu=self.konu_edit.text(),
                tarih=datetime.combine(self.tarih_edit.date(), datetime.min.time()),
                gecerlilik_tarihi=datetime.combine(self.gecerlilik_edit.date(), datetime.min.time()),
                durum=self.durum_combo.currentText(),
                toplam_tutar=toplam,
                kdv=kdv,
                indirim=indirim,
                net_tutar=toplam + kdv - indirim,
                temsilci=self.temsilci_combo.currentText(),
                ihtimal=self.ihtimal_edit.value(),
                notlar=self.notlar_edit.toPlainText()
            )
        return None


# Sayfa sınıfları
class CNCPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()
        self.setupUpdateTimer()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = self.createHeader("CNC CONTROL MODULE", "#00ffff")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        cnc_stats = [
            ("ACTIVE", str(sum(1 for m in data_store.makineler if m.durum == "Çalışıyor")), "#00ffff"),
            ("IDLE", str(sum(1 for m in data_store.makineler if m.durum == "Boşta")), "#ffff00"),
            ("MAINT", str(sum(1 for m in data_store.makineler if m.durum == "Bakımda")), "#ff8800"),
            ("AVG EFF", f"{sum(m.verimlilik for m in data_store.makineler if m.durum == 'Çalışıyor') / max(1, sum(1 for m in data_store.makineler if m.durum == 'Çalışıyor')):.1f}%", "#00ff00"),
        ]
        for title, value, color in cnc_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#00ffff"),
            ("MACHINES", "machines", "#00ff00"),
            ("SCHEDULE", "schedule", "#ff00ff"),
            ("MAINTENANCE", "maintenance", "#ffff00"),
            ("REPORTS", "reports", "#ff8800"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content stack
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #00ffff;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("CNC")
        overview_layout.addWidget(terminal)

        # Quick machine status
        machine_grid = QGridLayout()
        machine_grid.setSpacing(10)
        for i, makine in enumerate(data_store.makineler):
            frame = QFrame()
            frame.setStyleSheet("""
                QFrame {
                    background: #000000;
                    border: 1px solid #00ffff;
                    padding: 10px;
                }
            """)
            layout = QVBoxLayout()
            name = QLabel(makine.ad)
            name.setStyleSheet("color: #00ffff; font-size: 11px; font-weight: bold;")
            layout.addWidget(name)

            status = QLabel(f"Status: {makine.durum}")
            status_colors = {"Çalışıyor": "#00ff00", "Boşta": "#ffff00", "Bakımda": "#ff8800"}
            status.setStyleSheet(f"color: {status_colors[makine.durum]}; font-size: 10px;")
            layout.addWidget(status)

            efficiency = QLabel(f"Efficiency: {makine.verimlilik:.1f}%")
            efficiency.setStyleSheet("color: #00ff00; font-size: 10px;")
            layout.addWidget(efficiency)

            frame.setLayout(layout)
            machine_grid.addWidget(frame, i // 2, i % 2)
        overview_layout.addLayout(machine_grid)

        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # Machines page
        machines_page = QWidget()
        machines_layout = QVBoxLayout()

        # Action buttons
        actions = QHBoxLayout()
        btn_ekle = CyberButton("YENİ MAKİNE", "#00ff00")
        btn_ekle.clicked.connect(self.addMakine)
        actions.addWidget(btn_ekle)
        actions.addStretch()
        machines_layout.addLayout(actions)

        # Machines table
        self.machines_table = QTableWidget()
        self.machines_table.setColumnCount(10)
        self.machines_table.setHorizontalHeaderLabels([
            "ID", "AD", "TİP", "DURUM", "MEVCUT İŞ", "VERİMLİLİK", "SICAKLIK", "VİBRASYON", "OPERATÖR", "İŞLEMLER"
        ])
        self.updateMachinesTable()
        machines_layout.addWidget(self.machines_table)

        machines_page.setLayout(machines_layout)
        self.content_stack.addWidget(machines_page)

        # Other placeholder pages
        for page_name in ["schedule", "maintenance", "reports"]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            color_map = {'schedule':'#ff00ff','maintenance':'#ffff00','reports':'#ff8800'}
            color = color_map.get(page_name, '#00ff88')
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def updateMachinesTable(self):
        self.machines_table.setRowCount(len(data_store.makineler))
        for row, makine in enumerate(data_store.makineler):
            self.machines_table.setItem(row, 0, QTableWidgetItem(makine.id))
            self.machines_table.setItem(row, 1, QTableWidgetItem(makine.ad))
            self.machines_table.setItem(row, 2, QTableWidgetItem(makine.tip))
            self.machines_table.setItem(row, 3, QTableWidgetItem(makine.durum))
            self.machines_table.setItem(row, 4, QTableWidgetItem(makine.mevcut_is))
            self.machines_table.setItem(row, 5, QTableWidgetItem(f"{makine.verimlilik:.1f}%"))
            self.machines_table.setItem(row, 6, QTableWidgetItem(f"{makine.sıcaklık:.1f}°C"))
            self.machines_table.setItem(row, 7, QTableWidgetItem(f"{makine.vibrasyon:.2f}g"))
            self.machines_table.setItem(row, 8, QTableWidgetItem(makine.operatör))

            # Actions
            btn_widget = QWidget()
            btn_layout = QHBoxLayout()
            btn_duzenle = CyberButton("DÜZENLE", "#ffff00", "small")
            btn_sil = CyberButton("SİL", "#ff0000", "small")
            btn_layout.addWidget(btn_duzenle)
            btn_layout.addWidget(btn_sil)
            btn_widget.setLayout(btn_layout)
            self.machines_table.setCellWidget(row, 9, btn_widget)

        self.machines_table.setStyleSheet("""
            QTableWidget {
                background: #000000;
                color: #00ff00;
                gridline-color: #00ff00;
                selection-background-color: rgba(0, 255, 0, 30);
            }
            QTableWidget::item {
                padding: 5px;
                border-bottom: 1px solid #003300;
            }
            QHeaderView::section {
                background: #001100;
                color: #00ff00;
                padding: 5px;
                border: 1px solid #00ff00;
                font-weight: bold;
            }
        """)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "machines", "schedule", "maintenance", "reports"].index(page))

    def addMakine(self):
        # Dialog açıp yeni makine ekleme
        msg = QMessageBox()
        msg.setWindowTitle("[MAKİNE EKLE]")
        msg.setText("Makine ekleme formu geliştiriliyor...")
        msg.setStyleSheet("background: #000000; color: #00ff00;")
        msg.exec()

    def setupUpdateTimer(self):
        self.update_timer = QTimer()
        self.update_timer.timeout.connect(self.updateStats)
        self.update_timer.start(3000)

    def updateStats(self):
        # İstatistikleri güncelle
        pass


class ProjelerPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()
        self.setupUpdateTimer()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = self.createHeader("PROJECT MATRIX", "#ffff00")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        proje_stats = [
            ("TOTAL", str(len(data_store.projeler)), "#ffff00"),
            ("ACTIVE", str(sum(1 for p in data_store.projeler if p.durum in ["Üretim", "Montaj"])), "#00ff00"),
            ("COMPLETED", str(sum(1 for p in data_store.projeler if p.durum == "Teslim")), "#00ffff"),
            ("DELAYED", str(sum(1 for p in data_store.projeler if datetime.now() > p.bitis)), "#ff0000"),
        ]
        for title, value, color in proje_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#ffff00"),
            ("ALL PROJECTS", "all", "#00ff00"),
            ("TIMELINE", "timeline", "#ff00ff"),
            ("BUDGET", "budget", "#ff8800"),
            ("TEAM", "team", "#ff0088"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #ffff00;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("PROJECT")
        overview_layout.addWidget(terminal)

        # Recent projects
        recent_frame = QFrame()
        recent_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #ffff00;
                padding: 10px;
            }
        """)

        recent_title = QLabel("[RECENT PROJECTS]")
        recent_title.setStyleSheet("color: #ffff00; font-size: 11px; font-weight: bold; margin-bottom: 10px;")
        recent_layout = QVBoxLayout()
        recent_layout.addWidget(recent_title)

        for proje in data_store.projeler[:3]:
            proj_frame = QFrame()
            proj_frame.setStyleSheet("background: rgba(255, 255, 0, 10); border: 1px solid #ffff00; padding: 8px; margin: 2px 0;")
            proj_layout = QHBoxLayout()

            proj_info = QVBoxLayout()
            proj_info.addWidget(QLabel(f"{proje.id} - {proje.ad}"))
            proj_info.addWidget(QLabel(f"Müşteri: {proje.musteri}"))
            proj_info.addWidget(QLabel(f"Durum: {proje.durum} ({proje.ilerleme}%)"))

            progress = QProgressBar()
            progress.setValue(int(proje.ilerleme))
            progress.setStyleSheet("""
                QProgressBar {
                    border: 1px solid #ffff00;
                    background: rgba(0, 0, 0, 150);
                    text-align: center;
                    height: 15px;
                }
                QProgressBar::chunk {
                    background: #ffff00;
                }
            """)

            proj_layout.addLayout(proj_info)
            proj_layout.addWidget(progress)
            proj_frame.setLayout(proj_layout)
            recent_layout.addWidget(proj_frame)

        recent_frame.setLayout(recent_layout)
        overview_layout.addWidget(recent_frame)

        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # Projects list page
        projects_page = QWidget()
        projects_layout = QVBoxLayout()

        # Actions
        actions = QHBoxLayout()
        btn_yeni = CyberButton("YENİ PROJE", "#ffff00")
        btn_yeni.clicked.connect(self.addProje)
        actions.addWidget(btn_yeni)
        actions.addStretch()
        projects_layout.addLayout(actions)

        # Projects table
        self.projeler_table = QTableWidget()
        self.projeler_table.setColumnCount(8)
        self.projeler_table.setHorizontalHeaderLabels([
            "ID", "PROJE ADI", "MÜŞTERİ", "DURUM", "BAŞLANGIÇ", "BİTİŞ", "İLERLEME", "İŞLEMLER"
        ])
        self.updateProjelerTable()
        projects_layout.addWidget(self.projeler_table)

        projects_page.setLayout(projects_layout)
        self.content_stack.addWidget(projects_page)

        # Other pages
        for page_name, color in [("timeline", "#ff00ff"), ("budget", "#ff8800"), ("team", "#ff0088")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def updateProjelerTable(self):
        self.projeler_table.setRowCount(len(data_store.projeler))
        for row, proje in enumerate(data_store.projeler):
            self.projeler_table.setItem(row, 0, QTableWidgetItem(proje.id))
            self.projeler_table.setItem(row, 1, QTableWidgetItem(proje.ad))
            self.projeler_table.setItem(row, 2, QTableWidgetItem(proje.musteri))
            self.projeler_table.setItem(row, 3, QTableWidgetItem(proje.durum))
            self.projeler_table.setItem(row, 4, QTableWidgetItem(proje.baslangic.strftime("%d.%m.%Y")))
            self.projeler_table.setItem(row, 5, QTableWidgetItem(proje.bitis.strftime("%d.%m.%Y")))

            # Progress bar
            progress = QProgressBar()
            progress.setValue(int(proje.ilerleme))
            progress.setStyleSheet("""
                QProgressBar { border: 1px solid #ffff00; background: rgba(0, 0, 0, 150); text-align: center; height: 15px; }
                QProgressBar::chunk { background: #ffff00; }
            """)
            self.projeler_table.setCellWidget(row, 6, progress)

            # Actions
            btn_widget = QWidget()
            btn_layout = QHBoxLayout()
            btn_duzenle = CyberButton("DÜZENLE", "#00ff00", "small")
            btn_sil = CyberButton("SİL", "#ff0000", "small")
            btn_layout.addWidget(btn_duzenle)
            btn_layout.addWidget(btn_sil)
            btn_widget.setLayout(btn_layout)
            self.projeler_table.setCellWidget(row, 7, btn_widget)

        self.projeler_table.setStyleSheet("""
            QTableWidget { background: #000000; color: #ffff00; gridline-color: #ffff00; }
            QTableWidget::item { padding: 5px; border-bottom: 1px solid #333300; }
            QHeaderView::section { background: #333300; color: #ffff00; padding: 5px; border: 1px solid #ffff00; font-weight: bold; }
        """)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "all", "timeline", "budget", "team"].index(page))

    def addProje(self):
        dialog = AddProjeDialog(self)
        if dialog.exec() == QDialog.DialogCode.Accepted:
            proje = dialog.getProje()
            if proje:
                data_store.projeler.append(proje)
                self.updateProjelerTable()
                QMessageBox.information(self, "BAŞARILI", "Proje başarıyla eklendi!")

    def setupUpdateTimer(self):
        self.update_timer = QTimer()
        self.update_timer.timeout.connect(self.updateData)
        self.update_timer.start(5000)

    def updateData(self):
        # Verileri güncelle
        self.updateProjelerTable()
        # İstatistikleri güncelle...
        pass


class UretimPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.data_store = data_store  # Use global data_store
        self.setupUI()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        header = self.createHeader("PRODUCTION CONTROL", "#ff00ff")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        uretim_stats = [
            ("JOBS", str(sum(1 for p in data_store.siparisler if p.durum in ["Bekliyor", "Üretimde"])), "#ff00ff"),
            ("ACTIVE", "12", "#00ffff"),
            ("QUEUE", "35", "#ffff00"),
            ("COMPLETED", "156", "#00ff00"),
        ]
        for title, value, color in uretim_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#ff00ff"),
            ("JOBS", "jobs", "#00ff00"),
            ("QUEUE", "queue", "#ffff00"),
            ("QUALITY", "quality", "#ff8800"),
            ("REPORTS", "reports", "#ff0088"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #ff00ff;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("PRODUCTION")
        overview_layout.addWidget(terminal)
        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # Jobs page
        jobs_page = QWidget()
        jobs_layout = QVBoxLayout()

        # Current jobs table
        self.jobs_table = QTableWidget()
        self.jobs_table.setColumnCount(6)
        self.jobs_table.setHorizontalHeaderLabels(["İŞ EMRİ", "PARÇA", "MİKTAR", "DURUM", "MAKİNE", "TAKVİM"])
        self.updateJobsTable()
        jobs_layout.addWidget(self.jobs_table)

        jobs_page.setLayout(jobs_layout)
        self.content_stack.addWidget(jobs_page)

        # Other pages
        for page_name, color in [("queue", "#ffff00"), ("quality", "#ff8800"), ("reports", "#ff0088")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def updateJobsTable(self):
        self.jobs_table.setRowCount(len(data_store.siparisler))
        for row, siparis in enumerate(data_store.siparisler):
            self.jobs_table.setItem(row, 0, QTableWidgetItem(siparis.id))
            self.jobs_table.setItem(row, 1, QTableWidgetItem(siparis.urun_adi))
            self.jobs_table.setItem(row, 2, QTableWidgetItem(str(siparis.miktar)))
            self.jobs_table.setItem(row, 3, QTableWidgetItem(siparis.durum))
            self.jobs_table.setItem(row, 4, QTableWidgetItem("CNC-001"))  # Dinamik olacak
            self.jobs_table.setItem(row, 5, QTableWidgetItem(f"{siparis.teslim_tarihi.strftime('%d.%m.%Y')}"))

        self.jobs_table.setStyleSheet("""
            QTableWidget { background: #000000; color: #ff00ff; gridline-color: #ff00ff; }
            QTableWidget::item { padding: 5px; border-bottom: 1px solid #330033; }
            QHeaderView::section { background: #330033; color: #ff00ff; padding: 5px; border: 1px solid #ff00ff; font-weight: bold; }
        """)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "jobs", "queue", "quality", "reports"].index(page))

    def updateJobsTable(self):
        jobs = self.data_store.getAktifIsler()
        self.jobs_table.setRowCount(len(jobs))

        for i, islem in enumerate(jobs):
            self.jobs_table.setItem(i, 0, QTableWidgetItem(islem.proje_kodu))
            self.jobs_table.setItem(i, 1, QTableWidgetItem(islem.parca_adi))
            self.jobs_table.setItem(i, 2, QTableWidgetItem(f"{islem.ilerleme:.1f}%"))
            self.jobs_table.setItem(i, 3, QTableWidgetItem(islem.durum))

            progress_bar = QProgressBar()
            progress_bar.setValue(int(islem.ilerleme))
            progress_bar.setStyleSheet("""
                QProgressBar {
                    border: 1px solid #00ff88;
                    border-radius: 3px;
                    background: #001100;
                    color: #00ff88;
                }
                QProgressBar::chunk {
                    background: #00ff88;
                    border-radius: 2px;
                }
            """)
            self.jobs_table.setCellWidget(i, 4, progress_bar)


class SiparislerPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        header = self.createHeader("ORDER MANAGEMENT", "#ff8800")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        siparis_stats = [
            ("TOTAL", str(len(data_store.siparisler)), "#ff8800"),
            ("PENDING", str(sum(1 for s in data_store.siparisler if s.durum == "Bekliyor")), "#ffff00"),
            ("SHIPPED", str(sum(1 for s in data_store.siparisler if s.durum == "Teslim Edildi")), "#00ff00"),
            ("RETURNED", "1", "#ff0000"),
        ]
        for title, value, color in siparis_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#ff8800"),
            ("ALL ORDERS", "all", "#00ff00"),
            ("PENDING", "pending", "#ffff00"),
            ("SHIPPED", "shipped", "#00ffff"),
            ("INVOICES", "invoices", "#ff00ff"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #ff8800;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("ORDER")
        overview_layout.addWidget(terminal)
        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # All orders page
        orders_page = QWidget()
        orders_layout = QVBoxLayout()

        # Actions
        actions = QHBoxLayout()
        btn_yeni = CyberButton("YENİ SİPARİŞ", "#ff8800")
        btn_yeni.clicked.connect(self.addSiparis)
        actions.addWidget(btn_yeni)
        actions.addStretch()
        orders_layout.addLayout(actions)

        # Orders table
        self.siparisler_table = QTableWidget()
        self.siparisler_table.setColumnCount(8)
        self.siparisler_table.setHorizontalHeaderLabels([
            "SİPARİŞ NO", "MÜŞTERİ", "ÜRÜN", "MİKTAR", "TUTAR", "DURUM", "ÖDEME", "TESLİM"
        ])
        self.updateSiparislerTable()
        orders_layout.addWidget(self.siparisler_table)

        orders_page.setLayout(orders_layout)
        self.content_stack.addWidget(orders_page)

        # Other pages
        for page_name, color in [("pending", "#ffff00"), ("shipped", "#00ffff"), ("invoices", "#ff00ff")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def updateSiparislerTable(self):
        self.siparisler_table.setRowCount(len(data_store.siparisler))
        for row, siparis in enumerate(data_store.siparisler):
            self.siparisler_table.setItem(row, 0, QTableWidgetItem(siparis.id))
            self.siparisler_table.setItem(row, 1, QTableWidgetItem(siparis.musteri))
            self.siparisler_table.setItem(row, 2, QTableWidgetItem(siparis.urun_adi))
            self.siparisler_table.setItem(row, 3, QTableWidgetItem(str(siparis.miktar)))
            self.siparisler_table.setItem(row, 4, QTableWidgetItem(f"${siparis.toplam_tutar:,.2f}"))
            self.siparisler_table.setItem(row, 5, QTableWidgetItem(siparis.durum))
            self.siparisler_table.setItem(row, 6, QTableWidgetItem(siparis.odeme_durumu))
            self.siparisler_table.setItem(row, 7, QTableWidgetItem(siparis.teslim_tarihi.strftime('%d.%m.%Y')))

        self.siparisler_table.setStyleSheet("""
            QTableWidget { background: #000000; color: #ff8800; gridline-color: #ff8800; }
            QTableWidget::item { padding: 5px; border-bottom: 1px solid #333300; }
            QHeaderView::section { background: #333300; color: #ff8800; padding: 5px; border: 1px solid #ff8800; font-weight: bold; }
        """)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "all", "pending", "shipped", "invoices"].index(page))

    def addSiparis(self):
        dialog = AddSiparisDialog(self)
        if dialog.exec() == QDialog.DialogCode.Accepted:
            siparis = dialog.getSiparis()
            if siparis:
                data_store.siparisler.append(siparis)
                self.updateSiparislerTable()
                QMessageBox.information(self, "BAŞARILI", "Sipariş başarıyla eklendi!")


class TekliflerPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        header = self.createHeader("QUOTE SYSTEM", "#00ffaa")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        teklif_stats = [
            ("ACTIVE", str(len(data_store.teklifler)), "#00ffaa"),
            ("PENDING", str(sum(1 for t in data_store.teklifler if t.durum == "Beklemede")), "#ffff00"),
            ("ACCEPTED", str(sum(1 for t in data_store.teklifler if t.durum == "Kabul")), "#00ff00"),
            ("RATE", "67%", "#ff00ff"),
        ]
        for title, value, color in teklif_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#00ffaa"),
            ("ALL QUOTES", "all", "#00ff00"),
            ("PENDING", "pending", "#ffff00"),
            ("CONVERTED", "converted", "#00ffff"),
            ("ANALYTICS", "analytics", "#ff00ff"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #00ffaa;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("QUOTE")
        overview_layout.addWidget(terminal)
        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # All quotes page
        quotes_page = QWidget()
        quotes_layout = QVBoxLayout()

        # Actions
        actions = QHBoxLayout()
        btn_yeni = CyberButton("YENİ TEKLİF", "#00ffaa")
        btn_yeni.clicked.connect(self.addTeklif)
        actions.addWidget(btn_yeni)
        actions.addStretch()
        quotes_layout.addLayout(actions)

        # Quotes table
        self.teklifler_table = QTableWidget()
        self.teklifler_table.setColumnCount(10)
        self.teklifler_table.setHorizontalHeaderLabels([
            "TEKLİF NO", "MÜŞTERİ", "PROJE", "KONU", "TARİH", "DURUM", "TOPLAM", "KDV", "NET", "TEMsilci"
        ])
        self.updateTekliflerTable()
        quotes_layout.addWidget(self.teklifler_table)

        quotes_page.setLayout(quotes_layout)
        self.content_stack.addWidget(quotes_page)

        # Other pages
        for page_name, color in [("pending", "#ffff00"), ("converted", "#00ffff"), ("analytics", "#ff00ff")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def updateTekliflerTable(self):
        self.teklifler_table.setRowCount(len(data_store.teklifler))
        for row, teklif in enumerate(data_store.teklifler):
            self.teklifler_table.setItem(row, 0, QTableWidgetItem(teklif.id))
            self.teklifler_table.setItem(row, 1, QTableWidgetItem(teklif.musteri))
            self.teklifler_table.setItem(row, 2, QTableWidgetItem(teklif.proje_adi))
            self.teklifler_table.setItem(row, 3, QTableWidgetItem(teklif.konu))
            self.teklifler_table.setItem(row, 4, QTableWidgetItem(teklif.tarih.strftime('%d.%m.%Y')))
            self.teklifler_table.setItem(row, 5, QTableWidgetItem(teklif.durum))
            self.teklifler_table.setItem(row, 6, QTableWidgetItem(f"${teklif.toplam_tutar:,.0f}"))
            self.teklifler_table.setItem(row, 7, QTableWidgetItem(f"${teklif.kdv:,.0f}"))
            self.teklifler_table.setItem(row, 8, QTableWidgetItem(f"${teklif.net_tutar:,.0f}"))
            self.teklifler_table.setItem(row, 9, QTableWidgetItem(teklif.temsilci))

        self.teklifler_table.setStyleSheet("""
            QTableWidget { background: #000000; color: #00ffaa; gridline-color: #00ffaa; }
            QTableWidget::item { padding: 5px; border-bottom: 1px solid #003300; }
            QHeaderView::section { background: #003300; color: #00ffaa; padding: 5px; border: 1px solid #00ffaa; font-weight: bold; }
        """)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "all", "pending", "converted", "analytics"].index(page))

    def addTeklif(self):
        dialog = AddTeklifDialog(self)
        if dialog.exec() == QDialog.DialogCode.Accepted:
            teklif = dialog.getTeklif()
            if teklif:
                data_store.teklifler.append(teklif)
                self.updateTekliflerTable()
                QMessageBox.information(self, "BAŞARILI", "Teklif başarıyla eklendi!")


class AnalizPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        header = self.createHeader("ANALYTICS CORE", "#ff0088")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        analiz_stats = [
            ("REVENUE", "$2.4M", "#ff0088"),
            ("GROWTH", "+18%", "#00ff00"),
            ("EFFICIENCY", "94%", "#00ffff"),
            ("RATING", "4.9/5", "#ffff00"),
        ]
        for title, value, color in analiz_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#ff0088"),
            ("REPORTS", "reports", "#00ff00"),
            ("KPI", "kpi", "#ffff00"),
            ("DASHBOARD", "dashboard", "#00ffff"),
            ("EXPORT", "export", "#ff8800"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #ff0088;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        # Terminal
        terminal = CyberTerminal("ANALYTICS")
        overview_layout.addWidget(terminal)

        # Revenue chart placeholder
        chart_frame = QFrame()
        chart_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 2px dashed #ff0088;
                border-radius: 10px;
                height: 200px;
            }
        """)
        chart_layout = QVBoxLayout()
        chart_label = QLabel("📊 Revenue Chart - Under Construction")
        chart_label.setStyleSheet("color: #ff0088; font-size: 16px; text-align: center;")
        chart_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
        chart_layout.addWidget(chart_label)
        chart_frame.setLayout(chart_layout)
        overview_layout.addWidget(chart_frame)

        # KPI cards
        kpi_grid = QGridLayout()
        kpi_data = [
            ("Bu Ay", "$450K", "#00ff00"),
            ("Hedef", "$500K", "#ffff00"),
            ("Fark", "-$50K", "#ff8800"),
            ("Trend", "↑ 12%", "#00ffff"),
        ]
        for i, (label, value, color) in enumerate(kpi_data):
            card = NanoCard(label, value, color)
            kpi_grid.addWidget(card, i // 2, i % 2)
        overview_layout.addLayout(kpi_grid)

        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # Other pages
        for page_name, color in [("reports", "#00ff00"), ("kpi", "#ffff00"), ("dashboard", "#00ffff"), ("export", "#ff8800")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "reports", "kpi", "dashboard", "export"].index(page))


class AdminPage(QWidget):
    def __init__(self):
        super().__init__()
        self.current_sub_page = "overview"
        self.setupUI()

    def setupUI(self):
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        header = self.createHeader("ADMIN TERMINAL", "#8800ff")
        main_layout.addWidget(header)

        # Stats
        stats_layout = QHBoxLayout()
        admin_stats = [
            ("USERS", "47", "#8800ff"),
            ("ACTIVE", "23", "#00ff00"),
            ("ADMIN", "5", "#ff0000"),
            ("SYSTEM", "OK", "#00ffff"),
        ]
        for title, value, color in admin_stats:
            card = NanoCard(title, value, color)
            stats_layout.addWidget(card)
        main_layout.addLayout(stats_layout)

        # Sub-navigation
        sub_nav = QHBoxLayout()
        sub_nav_buttons = [
            ("OVERVIEW", "overview", "#8800ff"),
            ("USERS", "users", "#00ff00"),
            ("SYSTEM", "system", "#00ffff"),
            ("BACKUP", "backup", "#ffff00"),
            ("SECURITY", "security", "#ff8800"),
        ]
        for text, page, color in sub_nav_buttons:
            btn = CyberButton(text, color, "small")
            btn.clicked.connect(lambda checked, p=page: self.navigateToSubPage(p))
            if self.current_sub_page == page:
                btn.setStyleSheet(btn.styleSheet() + "background: rgba(0, 255, 0, 30);")
            sub_nav.addWidget(btn)
        sub_nav.addStretch()
        main_layout.addLayout(sub_nav)

        # Content
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000; border: 1px solid #8800ff;")
        self.createSubPages()
        main_layout.addWidget(self.content_stack)

        self.setLayout(main_layout)

    def createHeader(self, title, color):
        header = QFrame()
        header.setStyleSheet(f"""
            QFrame {{
                background: #000000;
                border: 1px solid {color};
                padding: 8px;
            }}
        """)
        header_layout = QHBoxLayout()
        title_label = QLabel(f"┌─ {title} ─┐")
        title_label.setStyleSheet(f"color: {color}; font-size: 12px; font-weight: bold;")
        header_layout.addWidget(title_label)
        header_layout.addStretch()
        header.setLayout(header_layout)
        return header

    def createSubPages(self):
        # Overview page
        overview_page = QWidget()
        overview_layout = QVBoxLayout()

        terminal = CyberTerminal("ADMIN")
        overview_layout.addWidget(terminal)

        # System info
        info_frame = QFrame()
        info_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #8800ff;
                padding: 15px;
            }
        """)

        info_text = QTextEdit()
        info_text.setPlainText("""
[SYSTEM INFORMATION]
OS: Fikatia OS v2.0.1
Python Version: 3.12.2
Database: In-Memory
Uptime: 48h 32m 15s
Last Backup: 2024-01-15 02:00:00
Security Status: SECURE
Active Users: 23
Total Operations: 1,247
        """.strip())
        info_text.setStyleSheet("""
            QTextEdit {
                background: #000000;
                color: #8800ff;
                border: none;
                font-family: 'Consolas', monospace;
                font-size: 10px;
            }
        """)
        info_frame.setLayout(QVBoxLayout())
        info_frame.layout().addWidget(QLabel("[INFO]"))
        info_frame.layout().addWidget(info_text)
        overview_layout.addWidget(info_frame)

        overview_page.setLayout(overview_layout)
        self.content_stack.addWidget(overview_page)

        # Other pages
        for page_name, color in [("users", "#00ff00"), ("system", "#00ffff"), ("backup", "#ffff00"), ("security", "#ff8800")]:
            placeholder = QWidget()
            layout = QVBoxLayout()
            label = QLabel(f"{page_name.upper()} MODULE - Under Construction")
            label.setStyleSheet(f"color: {color}; font-size: 18px; text-align: center;")
            label.setAlignment(Qt.AlignmentFlag.AlignCenter)
            layout.addWidget(label)
            placeholder.setLayout(layout)
            self.content_stack.addWidget(placeholder)

    def navigateToSubPage(self, page):
        self.current_sub_page = page
        self.content_stack.setCurrentIndex(["overview", "users", "system", "backup", "security"].index(page))


# Ana sınıflar
class MatrixSidebar(QWidget):
    menuItemSelected = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.selected_item = "dashboard"
        self.matrix_chars = "ｱｲｳｴｵｶｷｸｹｺｻｼｽﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        self.setupUI()
        self.startMatrix()

    def setupUI(self):
        # Responsive sidebar
        self.setMaximumWidth(220)
        self.setMinimumWidth(160)

        self.setStyleSheet("""
            MatrixSidebar {
                background: #000000;
                border-right: 2px solid #00ff00;
            }
        """)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # Logo
        logo = QLabel("[FIKATIA]")
        logo.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 12px;
            font-weight: bold;
            padding: 10px;
            text-align: center;
            text-transform: uppercase;
        """)
        logo.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(logo)

        # Separator
        sep = QLabel("═" * 22)
        sep.setStyleSheet("color: #003300; font-size: 8px;")
        sep.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(sep)

        # Menu items
        menu_items = [
            ("dashboard", "DASHBOARD", "#00ff00"),
            ("cnc", "CNC.TAKIP", "#00ffff"),
            ("uretim", "ÜRETİM", "#ff00ff"),
            ("projeler", "PROJELER", "#ffff00"),
            ("siparisler", "SİPARİSLER", "#ff8800"),
            ("teklifler", "TEKLİFLER", "#00ffaa"),
            ("analiz", "ANALİZ", "#ff0088"),
            ("admin", "ADMIN", "#8800ff"),
        ]

        self.menu_buttons = []
        for item_id, text, color in menu_items:
            btn = MatrixMenuButton(text, color, item_id == self.selected_item)
            btn.clicked.connect(lambda checked, mid=item_id: self.onMenuClick(mid))
            self.menu_buttons.append(btn)
            layout.addWidget(btn)

        layout.addStretch()

        # Status
        status = QLabel("[ONLINE]")
        status.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 10px;
            padding: 8px;
            text-align: center;
        """)
        layout.addWidget(status)

        # Version
        version = QLabel("v2.0.1")
        version.setStyleSheet("color: #003300; font-size: 8px; text-align: center;")
        version.setAlignment(Qt.AlignmentFlag.AlignCenter)
        layout.addWidget(version)

        self.setLayout(layout)

    def startMatrix(self):
        self.matrix_timer = QTimer()
        self.matrix_drops = []
        self.matrix_timer.timeout.connect(self.matrixDrop)
        self.matrix_timer.start(100)

    def matrixDrop(self):
        if random.random() < 0.3:
            x = random.randint(0, 21)
            char = random.choice(self.matrix_chars)
            self.matrix_drops.append({'x': x, 'y': 0, 'char': char, 'life': 20})

    def onMenuClick(self, menu_id):
        self.selected_item = menu_id
        self.menuItemSelected.emit(menu_id)

        # Update button styles
        for i, (mid, _, _) in enumerate([
            ("dashboard", "", ""), ("cnc", "", ""),
            ("uretim", "", ""), ("projeler", "", ""),
            ("siparisler", "", ""), ("teklifler", "", ""),
            ("analiz", "", ""), ("admin", "", "")
        ]):
            if mid == menu_id:
                self.menu_buttons[i].set_selected(True)
            else:
                self.menu_buttons[i].set_selected(False)


class MatrixMenuButton(QPushButton):
    def __init__(self, text, color="#00ff00", selected=False):
        super().__init__(text)
        self.color = QColor(color)
        self.selected = selected
        self.setupStyle()

    def setupStyle(self):
        if self.selected:
            bg = f"rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 50)"
            text = self.color.name()
        else:
            bg = "transparent"
            text = "rgba(255, 255, 255, 100)"

        self.setStyleSheet(f"""
            MatrixMenuButton {{
                background: {bg};
                border: none;
                border-left: 3px solid rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 200);
                color: {text};
                font-family: 'Consolas', monospace;
                font-size: 11px;
                font-weight: bold;
                padding: 10px 18px;
                text-align: left;
                text-transform: uppercase;
            }}
            MatrixMenuButton:hover {{
                background: rgba({self.color.red()}, {self.color.green()}, {self.color.blue()}, 30);
                color: #ffffff;
            }}
        """)

    def set_selected(self, selected):
        self.selected = selected
        self.setupStyle()


class HUDDashboard(QMainWindow):
    """Ana Dashboard"""

    def __init__(self):
        super().__init__()
        self.current_page = "dashboard"
        self.setupUI()
        self.addCyberEffects()

    def setupUI(self):
        self.setWindowTitle("[F.I.K.A.T.I.A] - NEURAL INTERFACE v2.0")
        self.showMaximized()
        self.setMinimumSize(800, 600)

        # Black theme
        self.setStyleSheet("""
            QMainWindow {
                background: #000000;
            }
            QWidget {
                font-family: 'Consolas', monospace;
                color: rgba(255, 255, 255, 200);
            }
            QScrollArea {
                background: #000000;
                border: none;
            }
            QScrollBar:vertical {
                background: #000000;
                width: 8px;
                border: 1px solid rgba(0, 255, 0, 50);
            }
            QScrollBar::handle:vertical {
                background: #00ff00;
                min-height: 10px;
            }
        """)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        main_layout = QHBoxLayout()
        main_layout.setContentsMargins(0, 0, 0, 0)
        main_layout.setSpacing(0)

        # Sidebar
        self.sidebar = MatrixSidebar()
        self.sidebar.menuItemSelected.connect(self.navigateToPage)
        main_layout.addWidget(self.sidebar)

        # İçerik
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("background: #000000;")
        self.createPages()

        main_layout.addWidget(self.content_stack)
        central_widget.setLayout(main_layout)

    def createPages(self):
        # Dashboard
        dashboard_container = QWidget()
        dashboard_scroll = QScrollArea()
        dashboard_scroll.setWidgetResizable(True)
        dashboard_scroll.setWidget(self.createDashboardPage())
        dashboard_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)

        dashboard_container.setLayout(QVBoxLayout())
        dashboard_container.layout().addWidget(dashboard_scroll)
        dashboard_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(dashboard_container)

        # CNC Page
        cnc_container = QWidget()
        cnc_scroll = QScrollArea()
        cnc_scroll.setWidgetResizable(True)
        cnc_scroll.setWidget(CNCPage())
        cnc_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        cnc_container.setLayout(QVBoxLayout())
        cnc_container.layout().addWidget(cnc_scroll)
        cnc_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(cnc_container)

        # Üretim Page
        uretim_container = QWidget()
        uretim_scroll = QScrollArea()
        uretim_scroll.setWidgetResizable(True)
        uretim_scroll.setWidget(UretimPage())
        uretim_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        uretim_container.setLayout(QVBoxLayout())
        uretim_container.layout().addWidget(uretim_scroll)
        uretim_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(uretim_container)

        # Projeler Page
        projeler_container = QWidget()
        projeler_scroll = QScrollArea()
        projeler_scroll.setWidgetResizable(True)
        projeler_scroll.setWidget(ProjelerPage())
        projeler_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        projeler_container.setLayout(QVBoxLayout())
        projeler_container.layout().addWidget(projeler_scroll)
        projeler_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(projeler_container)

        # Siparişler Page
        siparisler_container = QWidget()
        siparisler_scroll = QScrollArea()
        siparisler_scroll.setWidgetResizable(True)
        siparisler_scroll.setWidget(SiparislerPage())
        siparisler_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        siparisler_container.setLayout(QVBoxLayout())
        siparisler_container.layout().addWidget(siparisler_scroll)
        siparisler_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(siparisler_container)

        # Teklifler Page
        teklifler_container = QWidget()
        teklifler_scroll = QScrollArea()
        teklifler_scroll.setWidgetResizable(True)
        teklifler_scroll.setWidget(TekliflerPage())
        teklifler_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        teklifler_container.setLayout(QVBoxLayout())
        teklifler_container.layout().addWidget(teklifler_scroll)
        teklifler_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(teklifler_container)

        # Analiz Page
        analiz_container = QWidget()
        analiz_scroll = QScrollArea()
        analiz_scroll.setWidgetResizable(True)
        analiz_scroll.setWidget(AnalizPage())
        analiz_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        analiz_container.setLayout(QVBoxLayout())
        analiz_container.layout().addWidget(analiz_scroll)
        analiz_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(analiz_container)

        # Admin Page
        admin_container = QWidget()
        admin_scroll = QScrollArea()
        admin_scroll.setWidgetResizable(True)
        admin_scroll.setWidget(AdminPage())
        admin_scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
        admin_container.setLayout(QVBoxLayout())
        admin_container.layout().addWidget(admin_scroll)
        admin_container.layout().setContentsMargins(0, 0, 0, 0)
        self.content_stack.addWidget(admin_container)

    def createDashboardPage(self):
        page = QWidget()
        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(15, 15, 15, 15)
        main_layout.setSpacing(10)

        # Header
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ff00;
                padding: 8px;
            }
        """)

        header_layout = QHBoxLayout()
        ascii_header = QLabel("┌─ SYSTEM CONTROL ─┐")
        ascii_header.setStyleSheet("""
            color: #00ff00;
            font-family: 'Consolas', monospace;
            font-size: 12px;
            font-weight: bold;
        """)
        header_layout.addWidget(ascii_header)

        header_layout.addStretch()

        status = QLabel(f"[ONLINE] {datetime.now().strftime('%H:%M:%S')}")
        status.setStyleSheet("color: #00ff00; font-size: 10px;")
        header_layout.addWidget(status)

        header.setLayout(header_layout)
        main_layout.addWidget(header)

        # Stats rows
        stats1 = QHBoxLayout()
        stats1.setSpacing(8)

        cards1 = [
            ("PROJECTS", str(len(data_store.projeler)), "#00ff00"),
            ("ACTIVE", str(sum(1 for p in data_store.projeler if p.durum in ["Üretim", "Montaj"])), "#00ffff"),
            ("PENDING", str(sum(1 for p in data_store.projeler if p.durum in ["Planlama", "Tasarım"])), "#ff00ff"),
            ("EFFICIENCY", "94%", "#ffff00"),
            ("MACHINES", f"{sum(1 for m in data_store.makineler if m.durum == 'Çalışiyor')}/{len(data_store.makineler)}", "#ff8800"),
            ("ALERTS", "2", "#ff0000"),
        ]

        for title, value, color in cards1:
            card = NanoCard(title, value, color)
            stats1.addWidget(card)

        main_layout.addLayout(stats1)

        # Stats row 2
        stats2 = QHBoxLayout()
        stats2.setSpacing(8)

        cards2 = [
            ("ORDERS", str(len(data_store.siparisler)), "#ff8800"),
            ("QUOTES", str(len(data_store.teklifler)), "#00ffaa"),
            ("REVENUE", "$2.4M", "#ff0088"),
            ("RATE", "87%", "#00ffff"),
            ("GROWTH", "+15%", "#00ff00"),
            ("UPTIME", "48h", "#8800ff"),
        ]

        for title, value, color in cards2:
            card = NanoCard(title, value, color)
            stats2.addWidget(card)

        main_layout.addLayout(stats2)

        # Terminal
        terminal_frame = QFrame()
        terminal_frame.setStyleSheet("""
            QFrame {
                background: #000000;
                border: 1px solid #00ff00;
                padding: 4px;
            }
        """)

        term_header = QLabel("[TERMINAL] System Monitor")
        term_header.setStyleSheet("""
            color: #00ff00;
            font-size: 10px;
            font-weight: bold;
            padding: 4px;
        """)

        terminal = CyberTerminal()
        terminal_layout = QVBoxLayout()
        terminal_layout.setContentsMargins(0, 0, 0, 0)
        terminal_layout.setSpacing(0)
        terminal_layout.addWidget(term_header)
        terminal_layout.addWidget(terminal)
        terminal_frame.setLayout(terminal_layout)
        main_layout.addWidget(terminal_frame)

        # Quick actions
        actions = QHBoxLayout()
        actions.setSpacing(5)

        btn_actions = [
            ("NEW_JOB", "#00ff00"),
            ("SCAN", "#00ffff"),
            ("MAINT", "#ff00ff"),
            ("ALERT", "#ff0000"),
            ("SYNC", "#ffff00"),
        ]

        for text, color in btn_actions:
            btn = CyberButton(text, color)
            btn.setMinimumHeight(35)
            actions.addWidget(btn)

        actions.addStretch()
        main_layout.addLayout(actions)

        # System info
        info_layout = QHBoxLayout()
        info_layout.setSpacing(20)

        info_items = [
            ("CPU:", "67%", "#00ff00"),
            ("RAM:", "4.2GB", "#ffff00"),
            ("DISK:", "125GB", "#00ffff"),
            ("TEMP:", "42°C", "#ff0000"),
            ("NETWORK:", "Online", "#00ff00"),
            ("STATUS:", "Optimal", "#00ff00"),
        ]

        for label, value, color in info_items:
            info_label = QLabel(f"{label} {value}")
            info_label.setStyleSheet(f"color: {color}; font-size: 10px; font-weight: bold;")
            info_layout.addWidget(info_label)

        main_layout.addLayout(info_layout)

        main_layout.addStretch()
        page.setLayout(main_layout)

        return page

    def navigateToPage(self, page_id):
        self.current_page = page_id
        page_map = {
            "dashboard": 0,
            "cnc": 1,
            "uretim": 2,
            "projeler": 3,
            "siparisler": 4,
            "teklifler": 5,
            "analiz": 6,
            "admin": 7
        }

        if page_id in page_map:
            self.content_stack.setCurrentIndex(page_map[page_id])

    def addCyberEffects(self):
        self.flicker_timer = QTimer()
        self.flicker_timer.timeout.connect(self.flicker)
        self.flicker_timer.start(5000)

    def flicker(self):
        if random.random() < 0.1:
            self.setStyleSheet("background: #080808;")
            QTimer.singleShot(50, lambda: self.setStyleSheet("background: #000000;"))


def main():
    app = QApplication(sys.argv)
    app.setStyle('Fusion')

    # Font
    font = QFont("Consolas", 11)
    app.setFont(font)

    window = HUDDashboard()
    window.showMaximized()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()