using Avalonia; namespace LanMountainDesktop.PluginSdk; /// /// 插件外观辅助方法,提供统一的圆角和主题资源访问。 /// public static class PluginAppearanceHelper { /// /// 获取桌面组件主外壳圆角半径。 /// 这是组件最外层边框应该使用的圆角值,对应 DesignCornerRadiusComponent 资源。 /// /// 外观上下文 /// 主外壳圆角半径(像素) public static double GetShellCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Component); } /// /// 获取内部卡片圆角半径。 /// 用于组件内部的次级卡片、内容区块等。 /// /// 外观上下文 /// 内部卡片圆角半径(像素) public static double GetCardCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Sm); } /// /// 获取控件圆角半径。 /// 用于按钮、输入框、标签等交互控件。 /// /// 外观上下文 /// 控件圆角半径(像素) public static double GetControlCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Xs); } /// /// 获取徽章/标签圆角半径。 /// 用于小徽章、标签、角标等微元素。 /// /// 外观上下文 /// 徽章圆角半径(像素) public static double GetBadgeCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Micro); } /// /// 获取中等面板圆角半径。 /// 用于悬浮菜单、小提示框、子面板等。 /// /// 外观上下文 /// 中等面板圆角半径(像素) public static double GetMediumPanelCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Md); } /// /// 获取大面板圆角半径。 /// 用于对话框、设置面板等大型容器(非桌面组件)。 /// /// 外观上下文 /// 大面板圆角半径(像素) public static double GetLargePanelCornerRadius(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.ResolveCornerRadius(PluginCornerRadiusPreset.Lg); } /// /// 将圆角预设转换为 Avalonia CornerRadius。 /// /// 外观上下文 /// 圆角预设 /// Avalonia CornerRadius 结构 public static CornerRadius ToCornerRadius(this IPluginAppearanceContext context, PluginCornerRadiusPreset preset) { ArgumentNullException.ThrowIfNull(context); var radius = context.ResolveCornerRadius(preset); return new CornerRadius(radius); } /// /// 获取当前主题变体(亮色/暗色)。 /// /// 外观上下文 /// 是否为暗色主题 public static bool IsDarkTheme(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return string.Equals(context.Snapshot.ThemeVariant, "Dark", StringComparison.OrdinalIgnoreCase); } /// /// 获取当前主题变体字符串。 /// /// 外观上下文 /// 主题变体字符串("Light" 或 "Dark") public static string GetThemeVariant(this IPluginAppearanceContext context) { ArgumentNullException.ThrowIfNull(context); return context.Snapshot.ThemeVariant; } } /// /// 内部元素层级,用于区分不同层级的圆角需求。 /// public enum InnerElementLevel { /// /// 内部卡片:使用 Sm token(14px @ 1.0x) /// Card, /// /// 交互控件:使用 Xs token(12px @ 1.0x) /// Control, /// /// 微元素徽章:使用 Micro token(6px @ 1.0x) /// Badge }