using NexusReader.Application.DTOs.AI; namespace NexusReader.UI.Shared.Models; /// /// Defines the active tab state for the unified mobile reader toolbar. /// public enum MobileReaderTab { Reader, Graph, Concepts } /// /// Screen coordinates for text selection popup positioning. /// public record SelectionCoordinates(double Top, double Left, double Width, double Height, double Bottom, double ViewportWidth); /// /// Represents a message in the KM-RAG global and mobile intelligence chat threads. /// public class ChatMessage { public string Id { get; set; } = Guid.NewGuid().ToString(); public string Sender { get; set; } = string.Empty; // "User" or "AI" public string Text { get; set; } = string.Empty; public DateTime Timestamp { get; set; } = DateTime.UtcNow; public List Segments { get; set; } = new(); public List Citations { get; set; } = new(); } /// /// Represents a parsed segment of an intelligence response, potentially referencing a citation. /// public class ResponseSegment { public string Text { get; set; } = string.Empty; public bool IsCitation { get; set; } public string CitationId { get; set; } = string.Empty; }