using System; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Input; using System.Windows.Media; namespace AxCopilot.Views; public partial class ChatWindow { private Border CreateSurfacePopupContainer(UIElement content, double minWidth = 180, Thickness? padding = null) { var bg = TryFindResource("LauncherBackground") as Brush ?? new SolidColorBrush(Color.FromRgb(0x1E, 0x1E, 0x2E)); var borderBrush = TryFindResource("BorderColor") as Brush ?? Brushes.Gray; return new Border { Background = bg, BorderBrush = borderBrush, BorderThickness = new Thickness(1), CornerRadius = new CornerRadius(12), Padding = padding ?? new Thickness(6), MinWidth = minWidth, Effect = new System.Windows.Media.Effects.DropShadowEffect { BlurRadius = 16, ShadowDepth = 4, Opacity = 0.34, Color = Colors.Black, }, Child = content, }; } private Border CreateSurfacePopupMenuItem(string icon, Brush iconBrush, string label, Action onClick, Brush? labelBrush = null, double fontSize = 12.5) { var primaryText = TryFindResource("PrimaryText") as Brush ?? Brushes.White; var hoverBg = TryFindResource("ItemHoverBackground") as Brush ?? new SolidColorBrush(Color.FromArgb(0x18, 0xFF, 0xFF, 0xFF)); var item = new Border { Background = Brushes.Transparent, CornerRadius = new CornerRadius(8), Padding = new Thickness(10, 8, 14, 8), Margin = new Thickness(0, 1, 0, 1), Cursor = Cursors.Hand, }; var row = new StackPanel { Orientation = Orientation.Horizontal }; row.Children.Add(new TextBlock { Text = icon, FontFamily = s_segoeIconFont, FontSize = 13, Foreground = iconBrush, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 10, 0), }); row.Children.Add(new TextBlock { Text = label, FontSize = fontSize, Foreground = labelBrush ?? primaryText, VerticalAlignment = VerticalAlignment.Center, }); item.Child = row; item.MouseEnter += (s, _) => { if (s is Border b) b.Background = hoverBg; }; item.MouseLeave += (s, _) => { if (s is Border b) b.Background = Brushes.Transparent; }; item.MouseLeftButtonUp += (_, _) => onClick(); return item; } private Border CreateSurfacePopupSeparator() { var borderBrush = TryFindResource("BorderColor") as Brush ?? Brushes.Gray; return new Border { Height = 1, Margin = new Thickness(10, 4, 10, 4), Background = borderBrush, Opacity = 0.3, }; } private StackPanel CreateSurfaceFileTreeHeader(string icon, string name, string? sizeText) { var secondaryText = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray; var sp = new StackPanel { Orientation = Orientation.Horizontal }; sp.Children.Add(new TextBlock { Text = icon, FontFamily = s_segoeIconFont, FontSize = 11, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(0, 0, 5, 0), }); sp.Children.Add(new TextBlock { Text = name, FontSize = 11.5, Foreground = TryFindResource("PrimaryText") as Brush ?? Brushes.White, VerticalAlignment = VerticalAlignment.Center, }); if (!string.IsNullOrEmpty(sizeText)) { sp.Children.Add(new TextBlock { Text = $" {sizeText}", FontSize = 10, Foreground = secondaryText, VerticalAlignment = VerticalAlignment.Center, }); } return sp; } }