namespace NexusShell.Models;

public enum NexusSettingsSection
{
    General,
    Appearance,
    Display,
    Audio,
    Network,
    Bluetooth,
    Devices,
    Printers,
    Updates,
    Account,
    Identity,
    ControlCenter,
    DefaultApps,
    DeveloperDiagnostics,
    About,
}

public sealed class NexusSettingsNavItem
{
    public required NexusSettingsSection Section { get; init; }
    public required string Title { get; init; }
    public required string IconPath { get; init; }
    public string InfoHint { get; init; } = string.Empty;
}

public sealed class NexusDeviceInfoSnapshot
{
    public string CpuName { get; init; } = "—";
    public string RamLabel { get; init; } = "—";
    public string DiskLabel { get; init; } = "—";
    public string GpuName { get; init; } = "—";
}

public sealed class NexusNetworkInfoSnapshot
{
    public string ActiveNetwork { get; init; } = "—";
    public string IpAddress { get; init; } = "—";
    public string SignalStrength { get; init; } = "—";
    public bool IsOnline { get; init; }
}

public sealed class NexusAudioSnapshot
{
    public string OutputDevice { get; init; } = "—";
    public int VolumePercent { get; init; }
    public bool CanChangeVolume { get; init; }
}

public sealed class NexusBluetoothSnapshot
{
    public string Status { get; init; } = "—";
    public IReadOnlyList<string> PairedDevices { get; init; } = [];
}

public sealed class NexusPrinterInfo
{
    public required string Name { get; init; }
    public string Status { get; init; } = "—";
    public bool IsDefault { get; init; }
}
