namespace MarkdownEditor.Constants;

/// <summary>
/// Application-wide constant values for configuration and styling.
/// Centralizes magic strings and numbers to improve maintainability.
/// </summary>
public static class AppConstants
{
    /// <summary>
    /// UI color constants for consistent theming.
    /// </summary>
    public static class Colors
    {
        public const string Background = "#1E1E1E";
        public const string SecondaryBackground = "#252526";
        public const string TertiaryBackground = "#2D2D2D";
        public const string Border = "#3E3E42";
        public const string Hover = "#3E3E42";
        public const string Pressed = "#505050";
        public const string Foreground = "#CCCCCC";
        public const string ForegroundBright = "#FFFFFF";
        public const string Accent = "#4A90E2";
        public const string CodeBackground = "#2D2D2D";
        public const string LineNumbers = "#858585";
        public const string TextColor = "#D4D4D4";
    }

    /// <summary>
    /// Font size constants for typography consistency.
    /// </summary>
    public static class FontSizes
    {
        public const int Heading1 = 32;
        public const int Heading2 = 24;
        public const int Heading3 = 19;
        public const int Heading4 = 16;
        public const int Heading5 = 13;
        public const int Heading6 = 11;
        public const int Editor = 14;
        public const int Tab = 13;
    }

    /// <summary>
    /// Markdown formatting symbols.
    /// </summary>
    public static class Markdown
    {
        public const string Bold = "**";
        public const string Italic = "*";
        public const string InlineCode = "`";
        public const string CodeBlockStart = "```\n";
        public const string CodeBlockEnd = "\n```";
        public const string Heading1Prefix = "# ";
        public const string Heading2Prefix = "## ";
        public const string Heading3Prefix = "### ";
        public const string BulletPrefix = "- ";
        public const string NumberedPrefix = "1. ";
        public const string QuotePrefix = "> ";
        public const string DefaultPlaceholder = "text";
    }

    /// <summary>
    /// File-related constants.
    /// </summary>
    public static class Files
    {
        public const string MarkdownExtension = "*.md";
        public const string MarkdownExtensionAlt = "*.markdown";
        public const string DefaultFileName = "untitled.md";
        public const string MarkdownFileTypeName = "Markdown Files";
    }

    /// <summary>
    /// Default UI text and messages.
    /// </summary>
    public static class Messages
    {
        public const string DefaultTabTitle = "Untitled";
        public const string DefaultEditorContent = "# Welcome to Markle\n\nStart editing...";
        public const string ErrorRenderingMarkdown = "Error rendering markdown";
        public const string OpenFileDialogTitle = "Open Markdown File";
        public const string SaveFileDialogTitle = "Save Markdown File";
        public const string ImageLoadError = "Failed to load image";
        public const string LocalImagePlaceholder = "{0}";
        public const string SaveChangesBeforeClose = "You have unsaved changes. Do you want to save them before closing?";
        public const string SaveChangesBeforeCloseMultiple = "You have {0} file(s) with unsaved changes. Do you want to save them before closing?";
    }

    /// <summary>
    /// Window and layout dimensions.
    /// </summary>
    public static class Layout
    {
        public const int DefaultWindowWidth = 1200;
        public const int DefaultWindowHeight = 800;
        public const int ImageMaxWidth = 600;
        public const int MinTabsToAllowClose = 1;
    }
}

