namespace YMhut.Box.Core.Settings;

public sealed class AppSettings
{
    public string Theme { get; set; } = "Light";

    public string Language { get; set; } = "zh-CN";

    public bool PitchBlack { get; set; }

    public string WindowBackdrop { get; set; } = "mica";

    public string SettingsPanelMaterial { get; set; } = "solid";

    public string TopBarMaterial { get; set; } = "inherit";

    public int SeedColor { get; set; } = unchecked((int)0xFF5E6D44);

    public double CardOpacity { get; set; } = 0.7;

    public string BackgroundImage { get; set; } = string.Empty;

    public double BackgroundOpacity { get; set; } = 1.0;

    public bool UserAgreementAccepted { get; set; }

    public string UserAgreementVersion { get; set; } = string.Empty;

    public DateTimeOffset? UserAgreementAcceptedAt { get; set; }

    public bool SidebarCollapsed { get; set; }

    public bool DesktopTitlebar { get; set; } = true;

    public List<string> RecentToolIds { get; set; } = [];

    public List<string> PinnedToolIds { get; set; } = [];

    public double? WindowX { get; set; }

    public double? WindowY { get; set; }

    public double? WindowWidth { get; set; }

    public double? WindowHeight { get; set; }

    public bool WindowMaximized { get; set; }

    public bool ProxyEnabled { get; set; }

    public string ProxyMode { get; set; } = "system";

    public string ProxyHost { get; set; } = string.Empty;

    public int ProxyPort { get; set; } = 7890;

    public bool AnimationsEnabled { get; set; } = true;

    public double FontSize { get; set; } = 1.0;

    public string ToolDisplayMode { get; set; } = "grid";

    public string ToolboxDefaultScope { get; set; } = "all";

    public bool ToolboxCompactCards { get; set; }

    public bool ToolboxShowRecentFirst { get; set; } = true;

    public bool ShowHardwareBrandLogo { get; set; } = true;

    public bool RequireRiskConfirmation { get; set; } = true;

    public string HomePageMode { get; set; } = "dashboard";

    public string CloseBehavior { get; set; } = "ask";

    public bool RestoreWindowPosition { get; set; } = true;

    public bool AutoStart { get; set; }

    public int LogRetentionCount { get; set; }

    public int DataRefreshInterval { get; set; } = 30;

    public bool UpdateNotification { get; set; } = true;

    public bool HardwareAccelerationEnabled { get; set; } = true;

    public int ProxyTestTimeoutSeconds { get; set; } = 6;

    public bool PluginsEnabled { get; set; }

    public string PluginRootPath { get; set; } = string.Empty;

    public string FeedbackDefaultContact { get; set; } = string.Empty;

    public string FeedbackDefaultType { get; set; } = "issue";

    public string FeedbackDefaultSeverity { get; set; } = "normal";

    public bool FeedbackIncludeTodayLogsByDefault { get; set; }

    public bool FeedbackIncludeToolStatusByDefault { get; set; }

    public bool FeedbackIncludeSystemSummaryByDefault { get; set; }

    public bool FeedbackRememberDefaults { get; set; } = true;

    public string FeedbackDailySubmissionDate { get; set; } = string.Empty;

    public int FeedbackDailySubmissionCount { get; set; }

    public bool LegacyImportCompleted { get; set; }

    public bool LegacyDatabaseImportCompleted { get; set; }

    public string? LegacyDatabaseSnapshotPath { get; set; }
}
