namespace UVC.Twin.MonitoringUI
{
    internal static class ElementIds
    {
        // MonitoringUI Root
        public const string TopNavBar = "top-nav-bar";
        public const string LeftSidebar = "left-sidebar";

        // TopNavBar
        public const string BayTabContainer = "bay-tab-container";
        public const string BtnHamburger = "btn-hamburger";
        public const string BtnSettings = "btn-settings";
        public const string BtnVisibility = "btn-visibility";
        public const string BtnUser = "btn-user";
        public const string BtnExport = "btn-export";

        // LeftSidebar
        public const string InfoButtons = "info-buttons";
        public const string BtnSidebarToggle = "btn-sidebar-toggle";
        public const string SidebarToggleIcon = "sidebar-toggle-icon";

        // SideDrawer
        public const string DrawerOverlay = "drawer-overlay";
        public const string DrawerPanel = "drawer-panel";
        public const string BtnDrawerClose = "btn-drawer-close";
        public const string DrawerContent = "drawer-content";

        // MainContent
        public const string MainContentArea = "main-content-area";
        public const string MainContentPanelContainer = "main-content-panel-container";

        // OverviewPanel
        public const string OverviewPanel = "overview-panel";
        public const string EquipmentCardsSection = "equipment-cards-section";
        public const string EquipmentCardsScrollView = "equipment-cards-scroll";
        public const string ScheduleInfoPanel = "schedule-info-panel";

        // Schedule
        public const string ScheduleToggleDaily = "btn-toggle-daily";
        public const string ScheduleToggleEquipment = "btn-toggle-equipment";
        public const string ScheduleDateNav = "schedule-date-nav";
        public const string ScheduleCurrentDate = "schedule-current-date";
        public const string ScheduleTableHeader = "schedule-table-header";
        public const string ScheduleTableBody = "schedule-table-body";
        public const string ScheduleEquipmentFilter = "schedule-equipment-filter";
        public const string ScheduleEquipmentDropdown = "schedule-equipment-dropdown";
        public const string ScheduleDateDropdown = "schedule-date-dropdown";
    }

    internal static class CssClasses
    {
        public const string BayTab = "bay-tab";
        public const string BayTabActive = "bay-tab--active";
        public const string InfoButtonRow = "info-button-row";
        public const string InfoButtonRowActive = "info-button-row--active";
        public const string InfoDot = "info-dot";
        public const string InfoDotLabel = "info-dot-label";
        public const string InfoTextLabel = "info-text-label";
        public const string DrawerHidden = "drawer--hidden";
        public const string DrawerItem = "drawer-item";
        public const string SidebarCollapsed = "left-sidebar--collapsed";
        public const string SidebarExpanded = "left-sidebar--expanded";

        // Equipment Cards
        public const string EquipmentCard = "equipment-card";
        public const string EquipmentCardSummary = "equipment-card--summary";
        public const string EquipmentCardActive = "equipment-card--active";
        public const string CardHeader = "card-header";
        public const string CardTitle = "card-title";
        public const string CardInfoButton = "card-info-button";
        public const string CardChartsContainer = "card-charts-container";
        public const string CardInfoSection = "card-info-section";
        public const string CardWoLabel = "card-wo-label";

        // Bar Chart
        public const string BarChartRow = "bar-chart-row";
        public const string BarChartLabel = "bar-chart-label";
        public const string BarChartTrackContainer = "bar-chart-track-container";
        public const string BarChartTrack = "bar-chart-track";
        public const string BarChartFillPrimary = "bar-chart-fill--primary";
        public const string BarChartFillSecondary = "bar-chart-fill--secondary";
        public const string BarChartValuePrimary = "bar-chart-value--primary";
        public const string BarChartValueSecondary = "bar-chart-value--secondary";

        // Bottom Panels
        public const string ContentPanel = "content-panel";
        public const string PanelHeader = "panel-header";
        public const string PanelTitle = "panel-title";
        public const string PanelInfoButton = "panel-info-button";
        public const string PanelBody = "panel-body";

        // Schedule
        public const string ScheduleToggleBtn = "schedule-toggle-btn";
        public const string ScheduleToggleBtnActive = "schedule-toggle-btn--active";
        public const string ScheduleDateLabel = "schedule-date-label";
        public const string ScheduleDateLabelActive = "schedule-date-label--active";
        public const string ScheduleNavBtn = "schedule-nav-btn";
        public const string ScheduleTableRow = "schedule-table-row";
        public const string ScheduleTableCell = "schedule-table-cell";
        public const string ScheduleTableHeaderCell = "schedule-table-header-cell";
        public const string ScheduleEquipmentFilter = "schedule-equipment-filter";
        public const string ScheduleDropdown = "schedule-dropdown";
        public const string ScheduleDropdownLabel = "schedule-dropdown-label";
    }

    internal static class PanelTypes
    {
        public const string OverviewAll = "overview-all";
        public const string OverviewSection = "overview-section";
        public const string OverviewComplex = "overview-complex";
        public const string OverviewLeader = "overview-leader";

        public static bool IsOverviewPanel(string panelType)
            => panelType != null && panelType.StartsWith("overview-");
    }

    internal static class ScheduleToggleModes
    {
        public const string Daily = "daily";
        public const string Equipment = "equipment";
    }

    internal static class NavButtonNames
    {
        public const string DatePrevFar = "btn-date-prev-far";
        public const string DatePrev = "btn-date-prev";
        public const string DateNext = "btn-date-next";
        public const string DateNextFar = "btn-date-next-far";
    }

    internal static class ScheduleColumns
    {
        public static readonly string[] Headers =
            { "W/O", "착수일", "종료일", "계열", "절단장", "장비" };
    }

    /// <summary>
    /// USS 파일에 문서화된 색상 토큰과 일치하는 상수입니다.
    /// VisualElement.style로 프로그래밍 방식의 색상 설정 시 사용합니다.
    /// </summary>
    internal static class UssColors
    {
        // Dark theme surfaces
        public const string BgSurface = "#1E1E2E";
        public const string BgSidebar = "#151521";

        // Dark theme borders & hover
        public const string Border = "#3A3A4C";
        public const string Hover = "#2A2A3C";

        // Text colors
        public const string TextMuted = "#A0A0B0";
        public const string TextSubtle = "#6B6B7B";

        // Primary accent
        public const string Primary = "#2563EB";
        public const string PrimaryHover = "#1D4ED8";
        public const string PrimaryLight = "#3B82F6";
        public const string PrimaryPale = "#93C5FD";

        // Light theme surfaces & borders
        public const string BgCard = "rgba(255,255,255,0.95)";
        public const string BorderCard = "#E0E0E0";
        public const string BgInput = "#F0F0F5";
        public const string BorderInput = "#D0D0D8";
        public const string BgInfo = "#E8ECEF";
    }
}
