namespace NexusShell.Models;

public sealed class FileSystemItem
{
    public required string Name { get; init; }
    public required string FullPath { get; init; }
    public bool IsDirectory { get; init; }
    public bool IsDrive { get; init; }
    public long? SizeBytes { get; init; }
    public DateTime? ModifiedAt { get; init; }
    public string KindLabel { get; init; } = "Fil";
    public string IconPath { get; init; } = string.Empty;
    public string SizeLabel { get; init; } = "—";
    public string ModifiedLabel { get; init; } = "—";
}

public sealed class NexusNavItem
{
    public required string Id { get; init; }
    public required string Label { get; init; }
    public required string TargetPath { get; init; }
    public required string IconPath { get; init; }
    public bool IsPinned { get; set; }
    public bool ShowPinToggle { get; init; }
    public bool IsIndented { get; init; }
    public string Section { get; init; } = string.Empty;
}

public sealed record NexusPathSegment
{
    public required string Label { get; init; }
    public required string Path { get; init; }
    public bool IsLast { get; init; }
}

public sealed class NexusPreviewState
{
    public string Title { get; init; } = "Ingen forhåndsvisning";
    public string Subtitle { get; init; } = "Vælg en fil for at se detaljer";
    public string IconPath { get; init; } = string.Empty;
    public bool HasSelection { get; init; }
}

public sealed class NexusFavoriteEntry
{
    public required string Id { get; init; }
    public bool IsPinned { get; set; }
}
