using ClaudeDo.Data.Models; using CommunityToolkit.Mvvm.ComponentModel; namespace ClaudeDo.Ui.ViewModels.Islands; public sealed partial class ListNavItemViewModel : ViewModelBase { public required string Id { get; init; } public required ListKind Kind { get; init; } [ObservableProperty] private string _name = ""; [ObservableProperty] private int _count; [ObservableProperty] private bool _isActive; [ObservableProperty] private string? _workingDir; [ObservableProperty] private string _defaultCommitType = CommitTypeRegistry.DefaultType; // Reminder list: tasks created here default to manual. [ObservableProperty] private bool _isManual; // Whether this list's .claudedo/ findings folder is committed with the repo (ListEntity.FindingsTracked). [ObservableProperty] private bool _findingsTracked; // True when a ticket-system base URL is configured AND this list has a linked ticket project // (ListConfigEntity.TicketProjectId) — gates the "Update from ticket system" context menu entry. [ObservableProperty] private bool _hasTicketProject; [ObservableProperty] private bool _dropHintAbove; [ObservableProperty] private bool _dropHintBelow; // Set while a dragged task hovers over this row as a move target — distinct from // DropHintAbove/Below, which mark an insertion point for list reordering. [ObservableProperty] private bool _isTaskDropTarget; // Settable (not init) so a list-settings icon change refreshes the row in place. [ObservableProperty] private string? _iconKey; // The sidebar folder this row sits in (ListEntity.FolderId); null = top level. [ObservableProperty] private string? _folderId; }