# -*- coding: utf-8 -*-
"""
Web Dashboard v4.0 - Professional Modelhane Üretim Takip Sistemi
Ant-Design inspired, responsive, scrollable, optimized
"""

import sys
import json
import math
from datetime import datetime, timedelta
from typing import Dict, List, Optional, Any
from dataclasses import dataclass, asdict
import random

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
)
from PyQt6.QtCore import (
    Qt, QTimer, QThread, pyqtSignal, QPropertyAnimation,
    QEasingCurve, QParallelAnimationGroup, QSequentialAnimationGroup,
    QRect, QPointF, QSize, pyqtProperty, QUrl, QVariantAnimation,
    QTimeLine, QEvent, QEventLoop, QRectF
)
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
)


@dataclass
class Proje:
    """Proje veri yapısı"""
    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


class ModernButton(QPushButton):
    """Modern buton - Ant-Design tarzı"""

    def __init__(self, text, btn_type="primary", icon=""):
        super().__init__(text)
        self.btn_type = btn_type
        self.icon = icon
        self.setupStyle()

    def setupStyle(self):
        colors = {
            "primary": ("#1890ff", "#40a9ff", "#096dd9"),
            "success": ("#52c41a", "#73d13d", "#389e0d"),
            "warning": ("#faad14", "#ffc53d", "#d48806"),
            "danger": ("#ff4d4f", "#ff7875", "#cf1322"),
            "default": ("#d9d9d9", "#f0f0f0", "#bfbfbf"),
            "info": ("#13c2c2", "#36cfc9", "#08979c")
        }

        normal, hover, active = colors.get(self.btn_type, colors["primary"])

        self.setStyleSheet(f"""
            ModernButton {{
                background-color: {normal};
                border: 1px solid {normal};
                border-radius: 6px;
                color: white;
                font-size: 14px;
                font-weight: 500;
                padding: 4px 15px;
                min-height: 32px;
                text-align: center;
                outline: none;
            }}
            ModernButton:hover {{
                background-color: {hover};
                border-color: {hover};
                color: white;
            }}
            ModernButton:pressed {{
                background-color: {active};
                border-color: {active};
                color: white;
            }}
            ModernButton:disabled {{
                background-color: #f5f5f5;
                border-color: #d9d9d9;
                color: rgba(0, 0, 0, 0.25);
            }}
        """)

        # Icon varsa ekle
        if self.icon:
            self.setText(f"{self.icon} {text}")


class StatCard(QFrame):
    """İstatistik kartı - Professional tasarım"""

    def __init__(self, title, value, subtitle="", icon="📊", color="#1890ff"):
        super().__init__()
        self.color = QColor(color)
        self.title = title
        self.value = value
        self.subtitle = subtitle
        self.icon = icon
        self.setupUI()

    def setupUI(self):
        self.setFixedHeight(120)
        self.setMinimumWidth(240)
        self.setFrameStyle(QFrame.Shape.NoFrame)

        # Professional card design
        self.setStyleSheet(f"""
            StatCard {{
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 16px;
            }}
            StatCard:hover {{
                border-color: {self.color.name()};
                box-shadow: 0 2px 8px rgba(0,0,0,0.09);
            }}
        """)

        layout = QVBoxLayout()
        layout.setSpacing(8)
        layout.setContentsMargins(16, 16, 16, 16)

        # Header
        header_layout = QHBoxLayout()
        header_layout.setSpacing(8)

        # Icon
        icon_label = QLabel(self.icon)
        icon_label.setStyleSheet(f"""
            font-size: 20px;
            color: {self.color.name()};
            margin-right: 8px;
        """)
        header_layout.addWidget(icon_label)

        # Title
        title_label = QLabel(self.title)
        title_label.setStyleSheet("""
            color: rgba(0, 0, 0, 0.65);
            font-size: 14px;
            font-weight: 400;
            line-height: 22px;
        """)
        header_layout.addWidget(title_label)

        header_layout.addStretch()
        layout.addLayout(header_layout)

        # Value
        value_label = QLabel(self.value)
        value_label.setStyleSheet(f"""
            color: rgba(0, 0, 0, 0.85);
            font-size: 30px;
            font-weight: 600;
            line-height: 38px;
            margin-top: 4px;
        """)
        layout.addWidget(value_label)

        # Subtitle
        if self.subtitle:
            subtitle_label = QLabel(self.subtitle)
            subtitle_label.setStyleSheet(f"""
                color: {self.color.name()};
                font-size: 12px;
                line-height: 20px;
            """)
            layout.addWidget(subtitle_label)

        self.setLayout(layout)


class ModernSidebar(QWidget):
    """Modern kenar menü - Ant-Design tarzı"""

    menuItemSelected = pyqtSignal(str)

    def __init__(self):
        super().__init__()
        self.selected_item = "dashboard"
        self.setupUI()

    def setupUI(self):
        self.setFixedWidth(200)
        self.setStyleSheet("""
            ModernSidebar {
                background-color: #001529;
                border-right: 1px solid #f0f0f0;
            }
        """)

        layout = QVBoxLayout()
        layout.setContentsMargins(0, 0, 0, 0)
        layout.setSpacing(0)

        # Logo
        logo_frame = QFrame()
        logo_frame.setFixedHeight(64)
        logo_frame.setStyleSheet("""
            QFrame {
                background-color: #002140;
                border-bottom: 1px solid #f0f0f0;
                padding: 16px;
            }
        """)

        logo_layout = QHBoxLayout()
        logo_layout.setContentsMargins(16, 16, 16, 16)

        logo_label = QLabel("FIKATIA")
        logo_label.setStyleSheet("""
            font-size: 18px;
            font-weight: 600;
            color: #ffffff;
            letter-spacing: 1px;
        """)
        logo_layout.addWidget(logo_label)

        logo_frame.setLayout(logo_layout)
        layout.addWidget(logo_frame)

        # Menu items
        self.menu_items = [
            ("dashboard", "Dashboard", "📊", "#1890ff"),
            ("cnc", "CNC Takip", "🔧", "#1890ff"),
            ("uretim", "Üretim", "📦", "#1890ff"),
            ("projeler", "Projeler", "📁", "#1890ff"),
            ("siparisler", "Siparişler", "💰", "#1890ff"),
            ("teklifler", "Teklifler", "💼", "#1890ff"),
            ("analiz", "Analiz", "📈", "#1890ff"),
            ("admin", "Admin", "⚙️", "#1890ff"),
        ]

        self.menu_buttons = []
        for item_id, text, icon, color in self.menu_items:
            btn = MenuButton(text, icon, item_id == self.selected_item)
            btn.clicked.connect(lambda checked, mid=item_id: self.onMenuClick(mid))
            self.menu_buttons.append(btn)
            layout.addWidget(btn)

        # İlk butonu seç
        self.menu_buttons[0].set_selected(True)

        layout.addStretch()
        self.setLayout(layout)

    def onMenuClick(self, menu_id):
        # Önceki seçimi temizle
        for btn in self.menu_buttons:
            btn.set_selected(False)

        # Yeni seçimi yap
        index = next(i for i, (mid, _, _, _) in enumerate(self.menu_items) if mid == menu_id)
        self.menu_buttons[index].set_selected(True)

        self.selected_item = menu_id
        self.menuItemSelected.emit(menu_id)


class MenuButton(QPushButton):
    """Modern menü butonu"""

    def __init__(self, text, icon, selected=False):
        super().__init__(f"{icon} {text}")
        self.selected = selected
        self.setupStyle()

    def setupStyle(self):
        if self.selected:
            self.setStyleSheet("""
                MenuButton {
                    background-color: #1890ff;
                    color: white;
                    border: none;
                    padding: 12px 24px;
                    text-align: left;
                    font-size: 14px;
                    font-weight: 400;
                    outline: none;
                }
                MenuButton::before {
                    content: '';
                    position: absolute;
                    top: 0;
                    right: 0;
                    bottom: 0;
                    width: 3px;
                    background-color: #1890ff;
                }
            """)
        else:
            self.setStyleSheet("""
                MenuButton {
                    background-color: transparent;
                    color: rgba(255, 255, 255, 0.65);
                    border: none;
                    padding: 12px 24px;
                    text-align: left;
                    font-size: 14px;
                    font-weight: 400;
                    outline: none;
                }
                MenuButton:hover {
                    background-color: rgba(255, 255, 255, 0.08);
                    color: rgba(255, 255, 255, 0.85);
                }
            """)

    def set_selected(self, selected):
        self.selected = selected
        self.setupStyle()


class ProfessionalDashboard(QMainWindow):
    """Profesyonel Dashboard Ana Penceresi"""

    def __init__(self):
        super().__init__()
        self.setupSampleData()
        self.current_page = "dashboard"
        self.setupUI()

    def setupSampleData(self):
        """Örnek veriler"""
        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"
            ),
        ]

    def setupUI(self):
        self.setWindowTitle("Fikatia - Modelhane Yönetim Sistemi")
        self.setGeometry(100, 100, 1400, 900)
        self.setMinimumSize(1200, 700)

        # Professional theme
        self.setStyleSheet("""
            QMainWindow {
                background-color: #f0f2f5;
            }
            QWidget {
                font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;
                font-size: 14px;
                color: rgba(0, 0, 0, 0.85);
            }
            QScrollArea {
                background-color: transparent;
                border: none;
            }
            QScrollBar:vertical {
                background-color: transparent;
                width: 10px;
                border-radius: 5px;
            }
            QScrollBar::handle:vertical {
                background-color: rgba(0, 0, 0, 0.2);
                border-radius: 5px;
                min-height: 20px;
            }
            QScrollBar::handle:vertical:hover {
                background-color: rgba(0, 0, 0, 0.3);
            }
            QScrollBar::add-line:vertical,
            QScrollBar::sub-line:vertical {
                height: 0px;
            }
        """)

        # Merkezi widget
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # Ana layout
        main_layout = QHBoxLayout()
        main_layout.setContentsMargins(0, 0, 0, 0)
        main_layout.setSpacing(0)

        # Sidebar
        self.sidebar = ModernSidebar()
        self.sidebar.menuItemSelected.connect(self.navigateToPage)
        main_layout.addWidget(self.sidebar)

        # İçerik alanı
        self.content_stack = QStackedWidget()
        self.content_stack.setStyleSheet("""
            QStackedWidget {
                background-color: #f0f2f5;
                border: none;
            }
        """)

        # Sayfaları oluştur
        self.createPages()

        main_layout.addWidget(self.content_stack)
        central_widget.setLayout(main_layout)

    def createPages(self):
        """Tüm sayfaları oluştur"""
        # 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 Takip
        cnc_container = QWidget()
        cnc_scroll = QScrollArea()
        cnc_scroll.setWidgetResizable(True)
        cnc_scroll.setWidget(self.createCNCPage())
        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
        uretim_container = QWidget()
        uretim_scroll = QScrollArea()
        uretim_scroll.setWidgetResizable(True)
        uretim_scroll.setWidget(self.createUretimPage())
        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
        projeler_container = QWidget()
        projeler_scroll = QScrollArea()
        projeler_scroll.setWidgetResizable(True)
        projeler_scroll.setWidget(self.createProjelerPage())
        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
        siparisler_container = QWidget()
        siparisler_scroll = QScrollArea()
        siparisler_scroll.setWidgetResizable(True)
        siparisler_scroll.setWidget(self.createSiparislerPage())
        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
        teklifler_container = QWidget()
        teklifler_scroll = QScrollArea()
        teklifler_scroll.setWidgetResizable(True)
        teklifler_scroll.setWidget(self.createTekliflerPage())
        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
        analiz_container = QWidget()
        analiz_scroll = QScrollArea()
        analiz_scroll.setWidgetResizable(True)
        analiz_scroll.setWidget(self.createAnalizPage())
        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
        admin_container = QWidget()
        admin_scroll = QScrollArea()
        admin_scroll.setWidgetResizable(True)
        admin_scroll.setWidget(self.createAdminPage())
        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):
        """Dashboard sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        # Page Header
        header = self.createPageHeader("Dashboard", "Modelhane yönetim sistemine hoş geldiniz")
        main_layout.addWidget(header)

        # Stats Cards
        cards_row = QHBoxLayout()
        cards_row.setSpacing(16)

        cards = [
            ("Toplam Proje", "24", "2 kritik", "📁", "#1890ff"),
            ("Aktif İş", "45", "5 acil", "⚡", "#52c41a"),
            ("Bekleyen Teklif", "12", "3 son gün", "💼", "#faad14"),
            ("Verimlilik", "%87.5", "↑ 5.2%", "📈", "#722ed1"),
        ]

        for title, value, subtitle, icon, color in cards:
            card = StatCard(title, value, subtitle, icon, color)
            cards_row.addWidget(card)

        main_layout.addLayout(cards_row)

        # Charts Row
        charts_row = QHBoxLayout()
        charts_row.setSpacing(16)

        # Production Chart
        chart_card = self.createChartCard("Üretim Durumu", "Günlük üretim grafiği")
        charts_row.addWidget(chart_card, 2)

        # Recent Activities
        activity_card = self.createActivityCard("Son Aktiviteler")
        charts_row.addWidget(activity_card, 1)

        main_layout.addLayout(charts_row)

        # Bottom Row
        bottom_row = QHBoxLayout()
        bottom_row.setSpacing(16)

        # Machine Status
        machine_card = self.createMachineStatusCard("Makine Durumu")
        bottom_row.addWidget(machine_card, 1)

        # Quick Actions
        actions_card = self.createQuickActionsCard("Hızlı Eylemler")
        bottom_row.addWidget(actions_card, 1)

        main_layout.addLayout(bottom_row)

        # Spacer
        main_layout.addStretch()

        page.setLayout(main_layout)
        return page

    def createChartCard(self, title, subtitle):
        """Grafik kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 24px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        header_layout = QVBoxLayout()
        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
            margin-bottom: 4px;
        """)
        header_layout.addWidget(title_label)

        subtitle_label = QLabel(subtitle)
        subtitle_label.setStyleSheet("""
            font-size: 14px;
            color: rgba(0, 0, 0, 0.45);
        """)
        header_layout.addWidget(subtitle_label)
        layout.addLayout(header_layout)

        # Chart placeholder
        chart_area = QFrame()
        chart_area.setStyleSheet("""
            QFrame {
                background-color: #fafafa;
                border: 1px dashed #d9d9d9;
                border-radius: 4px;
                height: 200px;
            }
        """)
        chart_layout = QVBoxLayout()
        chart_layout.addWidget(QLabel("📊"))
        chart_layout.addWidget(QLabel("Grafik Alanı"))
        chart_layout.addWidget(QLabel("Buraya gerçek grafik eklenecek"))
        chart_layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
        chart_area.setLayout(chart_layout)
        layout.addWidget(chart_area)

        card.setLayout(layout)
        return card

    def createActivityCard(self, title):
        """Aktivite kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 24px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
            margin-bottom: 16px;
        """)
        layout.addWidget(title_label)

        # Activities
        activities = [
            "• Yeni sipariş oluşturuldu: SIP-2024-003",
            "• Proje tamamlandı: PRJ-045",
            "• Makine bakımı: CNC-002",
            "• Kalite kontrol tamamlandı",
            "• Rapor oluşturuldu",
        ]

        for activity in activities:
            label = QLabel(activity)
            label.setStyleSheet("""
                color: rgba(0, 0, 0, 0.65);
                font-size: 14px;
                padding: 8px 0;
                border-bottom: 1px solid #f0f0f0;
            """)
            layout.addWidget(label)

        layout.addStretch()
        card.setLayout(layout)
        return card

    def createMachineStatusCard(self, title):
        """Makine durumu kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 24px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
            margin-bottom: 16px;
        """)
        layout.addWidget(title_label)

        # Machine list
        machines = [
            ("CNC-001", "Çalışıyor", "#52c41a"),
            ("CNC-002", "Boşta", "#faad14"),
            ("FRZ-001", "İşleniyor", "#1890ff"),
            ("TRN-001", "Bakımda", "#ff4d4f"),
        ]

        for name, status, color in machines:
            machine_layout = QHBoxLayout()
            machine_layout.setSpacing(12)

            name_label = QLabel(name)
            name_label.setStyleSheet("font-weight: 500; color: rgba(0, 0, 0, 0.85);")
            machine_layout.addWidget(name_label)

            machine_layout.addStretch()

            status_label = QLabel(status)
            status_label.setStyleSheet(f"""
                background-color: {color};
                color: white;
                padding: 2px 8px;
                border-radius: 10px;
                font-size: 12px;
                font-weight: 500;
            """)
            machine_layout.addWidget(status_label)

            layout.addLayout(machine_layout)

        card.setLayout(layout)
        return card

    def createQuickActionsCard(self, title):
        """Hızlı eylemler kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 24px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
            margin-bottom: 16px;
        """)
        layout.addWidget(title_label)

        # Action buttons
        actions = [
            ("Yeni Proje Ekle", "primary"),
            ("Sipariş Oluştur", "success"),
            ("Teklif Hazırla", "warning"),
            ("Rapor Al", "info"),
        ]

        for text, btn_type in actions:
            btn = ModernButton(text, btn_type)
            btn.setMinimumHeight(36)
            layout.addWidget(btn)

        layout.addStretch()
        card.setLayout(layout)
        return card

    def createCNCPage(self):
        """CNC Takip sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        # Header
        header = self.createPageHeader("CNC Takip", "Makine durumu ve üretim takibi")
        main_layout.addWidget(header)

        # Filters
        filter_frame = QFrame()
        filter_frame.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 16px;
            }
        """)

        filter_layout = QHBoxLayout()
        filter_layout.setSpacing(16)

        filter_layout.addWidget(QLabel("Makine:"))
        makine_combo = self.createComboBox(["Tümü", "CNC-001", "CNC-002", "FRZ-001"])
        filter_layout.addWidget(makine_combo)

        filter_layout.addWidget(QLabel("Durum:"))
        durum_combo = self.createComboBox(["Tümü", "Çalışıyor", "Boşta", "Bakımda"])
        filter_layout.addWidget(durum_combo)

        filter_layout.addStretch()
        filter_layout.addWidget(ModernButton("Filtrele", "primary"))

        filter_frame.setLayout(filter_layout)
        main_layout.addWidget(filter_frame)

        # Machines Grid
        machines_grid = QGridLayout()
        machines_grid.setSpacing(16)

        for i in range(6):  # 6 makine
            machine_card = self.createMachineCard(f"CNC-{i+1:03d}")
            machines_grid.addWidget(machine_card, i // 3, i % 3)

        main_layout.addLayout(machines_grid)

        page.setLayout(main_layout)
        return page

    def createMachineCard(self, machine_id):
        """Makine kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 16px;
            }
        """)

        layout = QVBoxLayout()

        # Header
        header_layout = QHBoxLayout()
        name_label = QLabel(machine_id)
        name_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
        """)
        header_layout.addWidget(name_label)

        header_layout.addStretch()

        status = random.choice(["Çalışıyor", "Boşta", "Bakımda"])
        status_colors = {
            "Çalışıyor": "#52c41a",
            "Boşta": "#faad14",
            "Bakımda": "#ff4d4f"
        }
        status_color = status_colors[status]

        status_label = QLabel(status)
        status_label.setStyleSheet(f"""
            background-color: {status_color};
            color: white;
            padding: 2px 8px;
            border-radius: 10px;
            font-size: 12px;
        """)
        header_layout.addWidget(status_label)
        layout.addLayout(header_layout)

        # Stats
        stats = [
            ("Verimlilik", f"{random.randint(60, 95)}%"),
            ("Sıcaklık", f"{random.randint(35, 65)}°C"),
            ("Çalışma Süresi", f"{random.randint(100, 1000)} saat"),
        ]

        for label, value in stats:
            stat_layout = QHBoxLayout()
            stat_label = QLabel(f"{label}:")
            stat_label.setStyleSheet("color: rgba(0, 0, 0, 0.65); font-size: 12px;")
            stat_layout.addWidget(stat_label)

            stat_layout.addStretch()

            value_label = QLabel(value)
            value_label.setStyleSheet("color: rgba(0, 0, 0, 0.85); font-weight: 500; font-size: 12px;")
            stat_layout.addWidget(value_label)

            layout.addLayout(stat_layout)

        # Progress bar
        efficiency = random.randint(60, 95)
        layout.addWidget(QLabel("Verimlilik:"))
        progress = QProgressBar()
        progress.setValue(efficiency)
        progress.setStyleSheet("""
            QProgressBar {
                border: 1px solid #f0f0f0;
                border-radius: 4px;
                text-align: center;
                background-color: #f5f5f5;
                height: 8px;
            }
            QProgressBar::chunk {
                background-color: #1890ff;
                border-radius: 3px;
            }
        """)
        layout.addWidget(progress)

        card.setLayout(layout)
        return card

    def createUretimPage(self):
        """Üretim sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        # Header
        header = self.createPageHeader("Üretim Takip", "İş emirleri ve üretim durumu")
        main_layout.addWidget(header)

        # Table
        table = QTableWidget()
        table.setColumnCount(7)
        table.setHorizontalHeaderLabels([
            "İş Emri", "Parça Kodu", "Miktar", "Tamamlandı", "Durum", "Makine", "Tarih"
        ])

        # Sample data
        table.setRowCount(20)
        for i in range(20):
            table.setItem(i, 0, QTableWidgetItem(f"PO-2024-{i+1:03d}"))
            table.setItem(i, 1, QTableWidgetItem(f"PRT-{1000+i}"))
            table.setItem(i, 2, QTableWidgetItem(str(random.randint(10, 500))))
            table.setItem(i, 3, QTableWidgetItem(str(random.randint(0, 500))))

            durum = random.choice(["Bekliyor", "İşleniyor", "Tamamlandı"])
            durum_item = QTableWidgetItem(durum)
            if durum == "Tamamlandı":
                durum_item.setBackground(QColor("#f6ffed"))
                durum_item.setForeground(QColor("#52c41a"))
            elif durum == "İşleniyor":
                durum_item.setBackground(QColor("#e6f7ff"))
                durum_item.setForeground(QColor("#1890ff"))
            table.setItem(i, 4, durum_item)

            table.setItem(i, 5, QTableWidgetItem(f"CNC-{random.randint(1,6):03d}"))
            table.setItem(i, 6, QTableWidgetItem((datetime.now() - timedelta(days=random.randint(0,30))).strftime("%d.%m.%Y")))

        # Table style
        table.setStyleSheet("""
            QTableWidget {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                gridline-color: #f0f0f0;
                selection-background-color: #e6f7ff;
            }
            QTableWidget::item {
                padding: 12px 16px;
                border: none;
            }
            QHeaderView::section {
                background-color: #fafafa;
                color: rgba(0, 0, 0, 0.85);
                font-weight: 600;
                padding: 12px 16px;
                border: none;
                border-right: 1px solid #f0f0f0;
                border-bottom: 1px solid #f0f0f0;
            }
        """)

        # Auto resize
        header = table.horizontalHeader()
        header.setSectionResizeMode(QHeaderView.ResizeMode.Stretch)

        main_layout.addWidget(table)
        page.setLayout(main_layout)
        return page

    def createProjelerPage(self):
        """Projeler sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        # Header
        header = self.createPageHeader("Proje Yönetimi", "Tüm projeler ve detayları")
        main_layout.addWidget(header)

        # Projects grid
        projects_grid = QGridLayout()
        projects_grid.setSpacing(16)

        # Sample projects
        projects = [
            ("Otomatik Vites Sistemi", "OtoTek A.Ş.", "Üretim", 65),
            ("Hidrolik Pres Kalıbı", "PresMak", "Tasarım", 25),
            ("Robotik Kol Montajı", "RobotTech", "Test", 90),
            ("Medikal Cihaz Parçaları", "MedTech", "Planlama", 10),
            ("Aerospace Komponent", "UzayTech", "Montaj", 85),
        ]

        for i, (name, customer, status, progress) in enumerate(projects):
            project_card = self.createProjectCard(f"PRJ-{i+1:03d}", name, customer, status, progress)
            projects_grid.addWidget(project_card, i // 3, i % 3)

        main_layout.addLayout(projects_grid)
        page.setLayout(main_layout)
        return page

    def createProjectCard(self, project_id, name, customer, status, progress):
        """Proje kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 20px;
            }
        """)

        layout = QVBoxLayout()
        layout.setSpacing(12)

        # Header
        header_layout = QHBoxLayout()
        id_label = QLabel(project_id)
        id_label.setStyleSheet("""
            color: rgba(0, 0, 0, 0.45);
            font-size: 12px;
            font-weight: 500;
        """)
        header_layout.addWidget(id_label)
        header_layout.addStretch()
        layout.addLayout(header_layout)

        # Name
        name_label = QLabel(name)
        name_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
        """)
        name_label.setWordWrap(True)
        layout.addWidget(name_label)

        # Customer
        customer_label = QLabel(f"Müşteri: {customer}")
        customer_label.setStyleSheet("""
            color: rgba(0, 0, 0, 0.65);
            font-size: 14px;
        """)
        layout.addWidget(customer_label)

        # Status
        status_colors = {
            "Planlama": "#faad14",
            "Tasarım": "#1890ff",
            "Üretim": "#52c41a",
            "Montaj": "#722ed1",
            "Test": "#13c2c2"
        }
        status_color = status_colors.get(status, "#d9d9d9")

        status_label = QLabel(status)
        status_label.setStyleSheet(f"""
            background-color: {status_color};
            color: white;
            padding: 4px 12px;
            border-radius: 12px;
            font-size: 12px;
            font-weight: 500;
        """)
        layout.addWidget(status_label)

        # Progress
        layout.addWidget(QLabel("İlerleme:"))
        progress_bar = QProgressBar()
        progress_bar.setValue(progress)
        progress_bar.setStyleSheet("""
            QProgressBar {
                border: 1px solid #f0f0f0;
                border-radius: 4px;
                text-align: center;
                background-color: #f5f5f5;
                height: 8px;
            }
            QProgressBar::chunk {
                background-color: #1890ff;
                border-radius: 3px;
            }
        """)
        layout.addWidget(progress_bar)

        card.setLayout(layout)
        return card

    def createSiparislerPage(self):
        """Siparişler sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        # Header
        header = self.createPageHeader("Sipariş Yönetimi", "Tüm siparişler ve ödeme durumu")
        main_layout.addWidget(header)

        # Stats row
        stats_row = QHBoxLayout()
        stats_row.setSpacing(16)

        stats = [
            ("Toplam Sipariş", "156", "#1890ff"),
            ("Bu Ay", "42", "#52c41a"),
            ("Bekleyen", "8", "#faad14"),
            ("Geciken", "3", "#ff4d4f"),
        ]

        for title, value, color in stats:
            card = StatCard(title, value, "", "📦", color)
            stats_row.addWidget(card)

        main_layout.addLayout(stats_row)

        # Orders table
        table = QTableWidget()
        table.setColumnCount(8)
        table.setHorizontalHeaderLabels([
            "Sipariş No", "Müşteri", "Ürün", "Miktar", "Birim Fiyat",
            "Toplam", "Durum", "Teslim"
        ])

        table.setStyleSheet("""
            QTableWidget {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                gridline-color: #f0f0f0;
            }
            QTableWidget::item {
                padding: 12px 16px;
                border: none;
            }
            QHeaderView::section {
                background-color: #fafafa;
                color: rgba(0, 0, 0, 0.85);
                font-weight: 600;
                padding: 12px 16px;
                border: none;
                border-right: 1px solid #f0f0f0;
                border-bottom: 1px solid #f0f0f0;
            }
        """)

        main_layout.addWidget(table)
        page.setLayout(main_layout)
        return page

    def createTekliflerPage(self):
        """Teklifler sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        header = self.createPageHeader("Teklif Yönetimi", "Tüm teklifler ve durumları")
        main_layout.addWidget(header)

        # Cards grid
        cards_grid = QGridLayout()
        cards_grid.setSpacing(16)

        offers = [
            ("Otomotiv Giant", "Motor Bloğu", "$125,000", 75),
            ("Defense Industries", "Zırh Parçaları", "$450,000", 60),
            ("Energy Solutions", "Rüzgar Türbini", "$280,000", 85),
            ("Maritime Tech", "Gemi Motoru", "$180,000", 45),
            ("Construction Co.", "Beton Santrali", "$320,000", 90),
        ]

        for i, (customer, project, amount, probability) in enumerate(offers):
            offer_card = self.createOfferCard(customer, project, amount, probability)
            cards_grid.addWidget(offer_card, i // 2, i % 2)

        main_layout.addLayout(cards_grid)
        page.setLayout(main_layout)
        return page

    def createOfferCard(self, customer, project, amount, probability):
        """Teklif kartı"""
        card = QFrame()
        card.setStyleSheet("""
            QFrame {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                padding: 20px;
            }
        """)

        layout = QVBoxLayout()

        # Customer
        customer_label = QLabel(customer)
        customer_label.setStyleSheet("""
            font-size: 16px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
        """)
        layout.addWidget(customer_label)

        # Project
        project_label = QLabel(project)
        project_label.setStyleSheet("""
            color: rgba(0, 0, 0, 0.65);
            font-size: 14px;
            margin-bottom: 12px;
        """)
        layout.addWidget(project_label)

        # Amount
        amount_label = QLabel(amount)
        amount_label.setStyleSheet("""
            font-size: 24px;
            font-weight: 600;
            color: #1890ff;
            margin-bottom: 12px;
        """)
        layout.addWidget(amount_label)

        # Probability
        layout.addWidget(QLabel("Kazanma İhtimali:"))
        progress_bar = QProgressBar()
        progress_bar.setValue(probability)
        progress_bar.setStyleSheet("""
            QProgressBar {
                border: 1px solid #f0f0f0;
                border-radius: 4px;
                text-align: center;
                background-color: #f5f5f5;
                height: 8px;
            }
            QProgressBar::chunk {
                background-color: #52c41a;
                border-radius: 3px;
            }
        """)
        layout.addWidget(progress_bar)

        card.setLayout(layout)
        return card

    def createAnalizPage(self):
        """Analiz sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        header = self.createPageHeader("Analiz ve Raporlama", "Performans grafikleri ve istatistikler")
        main_layout.addWidget(header)

        # Charts
        charts_layout = QGridLayout()
        charts_layout.setSpacing(16)

        chart_titles = [
            ("Aylık Ciro", "$1.2M"),
            ("Proje Tamamlanma", "85%"),
            ("Müşteri Memnuniyeti", "4.8/5"),
            ("Verimlilik Artışı", "+12%"),
        ]

        for i, (title, value) in enumerate(chart_titles):
            chart_card = self.createChartCard(title, f"Mevcut değer: {value}")
            charts_layout.addWidget(chart_card, i // 2, i % 2)

        main_layout.addLayout(charts_layout)
        page.setLayout(main_layout)
        return page

    def createAdminPage(self):
        """Admin paneli sayfası"""
        page = QWidget()
        page.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)

        main_layout = QVBoxLayout()
        main_layout.setContentsMargins(24, 24, 24, 24)
        main_layout.setSpacing(24)

        header = self.createPageHeader("Admin Paneli", "Sistem yönetimi ve ayarlar")
        main_layout.addWidget(header)

        # Tabs
        tabs = QTabWidget()
        tabs.setStyleSheet("""
            QTabWidget::pane {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
            }
            QTabBar::tab {
                background-color: #fafafa;
                color: rgba(0, 0, 0, 0.65);
                padding: 12px 24px;
                margin-right: 2px;
                font-weight: 500;
            }
            QTabBar::tab:selected {
                background-color: #ffffff;
                color: #1890ff;
                border-bottom: 2px solid #1890ff;
            }
        """)

        # Users tab
        users_tab = QWidget()
        users_layout = QVBoxLayout()

        # Button
        btn_layout = QHBoxLayout()
        btn_layout.addStretch()
        btn_layout.addWidget(ModernButton("Yeni Kullanıcı Ekle", "primary"))
        users_layout.addLayout(btn_layout)

        # Table
        users_table = QTableWidget()
        users_table.setColumnCount(5)
        users_table.setHorizontalHeaderLabels(["ID", "Ad Soyad", "E-posta", "Rol", "Durum"])
        users_table.setStyleSheet("""
            QTableWidget {
                background-color: #ffffff;
                border: 1px solid #f0f0f0;
                border-radius: 6px;
                gridline-color: #f0f0f0;
            }
            QTableWidget::item {
                padding: 12px 16px;
            }
            QHeaderView::section {
                background-color: #fafafa;
                font-weight: 600;
                padding: 12px 16px;
            }
        """)
        users_layout.addWidget(users_table)
        users_tab.setLayout(users_layout)
        tabs.addTab(users_tab, "Kullanıcılar")

        # Settings tab
        settings_tab = QWidget()
        settings_layout = QVBoxLayout()

        settings_groups = [
            ("Genel Ayarlar", ["Şirket Adı", "Web Sitesi", "E-posta"]),
            ("Bildirimler", ["E-posta Bildirimleri", "SMS Bildirimleri", "Sistem Bildirimleri"]),
        ]

        for group_title, fields in settings_groups:
            group = QGroupBox(group_title)
            group.setStyleSheet("""
                QGroupBox {
                    font-size: 16px;
                    font-weight: 600;
                    color: rgba(0, 0, 0, 0.85);
                    border: 1px solid #f0f0f0;
                    border-radius: 6px;
                    margin-top: 16px;
                    padding-top: 8px;
                }
                QGroupBox::title {
                    subcontrol-origin: margin;
                    left: 12px;
                    padding: 0 8px 0 8px;
                }
            """)

            group_layout = QGridLayout()
            group_layout.setSpacing(16)

            for i, field in enumerate(fields):
                label = QLabel(field)
                label.setStyleSheet("color: rgba(0, 0, 0, 0.85); font-weight: 500;")
                group_layout.addWidget(label, i, 0)

                line_edit = QLineEdit()
                line_edit.setStyleSheet("""
                    QLineEdit {
                        border: 1px solid #d9d9d9;
                        border-radius: 4px;
                        padding: 8px 12px;
                        font-size: 14px;
                    }
                    QLineEdit:focus {
                        border-color: #40a9ff;
                        box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
                    }
                """)
                group_layout.addWidget(line_edit, i, 1)

            group.setLayout(group_layout)
            settings_layout.addWidget(group)

        # Save button
        btn_layout = QHBoxLayout()
        btn_layout.addStretch()
        btn_layout.addWidget(ModernButton("Ayarları Kaydet", "primary"))
        settings_layout.addLayout(btn_layout)

        settings_tab.setLayout(settings_layout)
        tabs.addTab(settings_tab, "Ayarlar")

        main_layout.addWidget(tabs)
        page.setLayout(main_layout)
        return page

    def createPageHeader(self, title, subtitle):
        """Sayfa başlığı"""
        header = QFrame()
        header.setStyleSheet("""
            QFrame {
                background-color: transparent;
                border: none;
                margin-bottom: 8px;
            }
        """)

        layout = QVBoxLayout()
        layout.setSpacing(4)

        title_label = QLabel(title)
        title_label.setStyleSheet("""
            font-size: 20px;
            font-weight: 600;
            color: rgba(0, 0, 0, 0.85);
        """)
        layout.addWidget(title_label)

        subtitle_label = QLabel(subtitle)
        subtitle_label.setStyleSheet("""
            font-size: 14px;
            color: rgba(0, 0, 0, 0.45);
        """)
        layout.addWidget(subtitle_label)

        header.setLayout(layout)
        return header

    def createComboBox(self, items):
        """Combobox oluştur"""
        combo = QComboBox()
        combo.addItems(items)
        combo.setStyleSheet("""
            QComboBox {
                border: 1px solid #d9d9d9;
                border-radius: 4px;
                padding: 8px 12px;
                background-color: white;
                min-width: 120px;
            }
            QComboBox:hover {
                border-color: #40a9ff;
            }
            QComboBox:focus {
                border-color: #40a9ff;
                box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);
            }
            QComboBox::drop-down {
                border: none;
                width: 20px;
            }
            QComboBox::down-arrow {
                image: none;
                border-left: 5px solid transparent;
                border-right: 5px solid transparent;
                border-top: 5px solid rgba(0, 0, 0, 0.45);
            }
        """)
        return combo

    def navigateToPage(self, page_id):
        """Sayfa geçişi"""
        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 main():
    app = QApplication(sys.argv)
    app.setStyle('Fusion')

    # Font ayarı - daha küçük ve profesyonel
    font = QFont("Segoe UI", 12)
    app.setFont(font)

    window = ProfessionalDashboard()
    window.show()

    sys.exit(app.exec())


if __name__ == "__main__":
    main()