namespace Lattice.Themes.Core; /// /// Статические ключи для ресурсов Lattice Framework. /// Используются в XAML через {DynamicResource} или {ThemeResource}. /// public static class LatticeTokens { // ============ Цвета (Colors) ============ // Основные цвета public const string ColorPrimary = "Lattice.Color.Primary"; public const string ColorSecondary = "Lattice.Color.Secondary"; public const string ColorTertiary = "Lattice.Color.Tertiary"; // Акцентные цвета public const string ColorAccent = "Lattice.Color.Accent"; public const string ColorAccentLight = "Lattice.Color.Accent.Light"; public const string ColorAccentDark = "Lattice.Color.Accent.Dark"; public const string ColorAccentAction = "Lattice.Color.Accent.Action"; // Фоновые цвета public const string ColorBackgroundPrimary = "Lattice.Color.Background.Primary"; public const string ColorBackgroundSecondary = "Lattice.Color.Background.Secondary"; public const string ColorBackgroundTertiary = "Lattice.Color.Background.Tertiary"; public const string ColorBackgroundQuaternary = "Lattice.Color.Background.Quaternary"; // Текстовые цвета public const string ColorTextPrimary = "Lattice.Color.Text.Primary"; public const string ColorTextSecondary = "Lattice.Color.Text.Secondary"; public const string ColorTextDisabled = "Lattice.Color.Text.Disabled"; public const string ColorTextOnAccent = "Lattice.Color.Text.OnAccent"; // Граничные цвета public const string ColorBorderPrimary = "Lattice.Color.Border.Primary"; public const string ColorBorderSecondary = "Lattice.Color.Border.Secondary"; public const string ColorBorderAccent = "Lattice.Color.Border.Accent"; // Состояния public const string ColorSuccess = "Lattice.Color.Success"; public const string ColorWarning = "Lattice.Color.Warning"; public const string ColorError = "Lattice.Color.Error"; public const string ColorInfo = "Lattice.Color.Info"; // ============ Кисти (Brushes) ============ // Основные кисти public const string BrushPrimary = "Lattice.Brush.Primary"; public const string BrushSecondary = "Lattice.Brush.Secondary"; public const string BrushTertiary = "Lattice.Brush.Tertiary"; // Акцентные кисти public const string BrushAccent = "Lattice.Brush.Accent"; public const string BrushAccentLight = "Lattice.Brush.Accent.Light"; public const string BrushAccentDark = "Lattice.Brush.Accent.Dark"; public const string BrushAccentAction = "Lattice.Brush.Accent.Action"; // Фоновые кисти public const string BrushBackgroundPrimary = "Lattice.Brush.Background.Primary"; public const string BrushBackgroundSecondary = "Lattice.Brush.Background.Secondary"; public const string BrushBackgroundTertiary = "Lattice.Brush.Background.Tertiary"; public const string BrushBackgroundQuaternary = "Lattice.Brush.Background.Quaternary"; // Текстовые кисти public const string BrushTextPrimary = "Lattice.Brush.Text.Primary"; public const string BrushTextSecondary = "Lattice.Brush.Text.Secondary"; public const string BrushTextDisabled = "Lattice.Brush.Text.Disabled"; public const string BrushTextOnAccent = "Lattice.Brush.Text.OnAccent"; // Граничные кисти public const string BrushBorderPrimary = "Lattice.Brush.Border.Primary"; public const string BrushBorderSecondary = "Lattice.Brush.Border.Secondary"; public const string BrushBorderAccent = "Lattice.Brush.Border.Accent"; // Кисти состояний public const string BrushSuccess = "Lattice.Brush.Success"; public const string BrushWarning = "Lattice.Brush.Warning"; public const string BrushError = "Lattice.Brush.Error"; public const string BrushInfo = "Lattice.Brush.Info"; // Кисти для перетаскивания public const string BrushDragOverlay = "Lattice.Brush.Drag.Overlay"; public const string BrushDropPreview = "Lattice.Brush.Drop.Preview"; public const string BrushDropValid = "Lattice.Brush.Drop.Valid"; public const string BrushDropInvalid = "Lattice.Brush.Drop.Invalid"; // Кисти для панелей и разделителей public const string BrushPanelBorder = "Lattice.Brush.Panel.Border"; public const string BrushSplitterNormal = "Lattice.Brush.Splitter.Normal"; public const string BrushSplitterHover = "Lattice.Brush.Splitter.Hover"; // ============ Геометрия (Geometry) ============ public const string SizeSplitterWidth = "Lattice.Size.Splitter.Width"; // Радиусы скругления public const string CornerRadiusNone = "Lattice.CornerRadius.None"; public const string CornerRadiusSmall = "Lattice.CornerRadius.Small"; public const string CornerRadiusMedium = "Lattice.CornerRadius.Medium"; public const string CornerRadiusLarge = "Lattice.CornerRadius.Large"; public const string CornerRadiusXLarge = "Lattice.CornerRadius.XLarge"; public const string CornerRadiusCircle = "Lattice.CornerRadius.Circle"; public const string CornerRadiusPanel = "Lattice.CornerRadius.Panel"; // Отступы public const string SpacingNone = "Lattice.Spacing.None"; public const string SpacingXSmall = "Lattice.Spacing.XSmall"; public const string SpacingSmall = "Lattice.Spacing.Small"; public const string SpacingMedium = "Lattice.Spacing.Medium"; public const string SpacingLarge = "Lattice.Spacing.Large"; public const string SpacingXLarge = "Lattice.Spacing.XLarge"; public const string SpacingXXLarge = "Lattice.Spacing.XXLarge"; public const string SpacingPanel = "Lattice.Spacing.Panel"; // Толщины границ public const string BorderThicknessNone = "Lattice.BorderThickness.None"; public const string BorderThicknessThin = "Lattice.BorderThickness.Thin"; public const string BorderThicknessMedium = "Lattice.BorderThickness.Medium"; public const string BorderThicknessThick = "Lattice.BorderThickness.Thick"; public const string BorderThicknessPanel = "Lattice.BorderThickness.Panel"; // Размеры теней public const string ShadowDepthNone = "Lattice.Shadow.Depth.None"; public const string ShadowDepthSmall = "Lattice.Shadow.Depth.Small"; public const string ShadowDepthMedium = "Lattice.Shadow.Depth.Medium"; public const string ShadowDepthLarge = "Lattice.Shadow.Depth.Large"; // ============ Текстовые стили (Typography) ============ // Размеры шрифтов public const string FontSizeCaption = "Lattice.FontSize.Caption"; public const string FontSizeBody = "Lattice.FontSize.Body"; public const string FontSizeBodyStrong = "Lattice.FontSize.BodyStrong"; public const string FontSizeSubtitle = "Lattice.FontSize.Subtitle"; public const string FontSizeTitle = "Lattice.FontSize.Title"; public const string FontSizeTitleLarge = "Lattice.FontSize.TitleLarge"; public const string FontSizeDisplay = "Lattice.FontSize.Display"; // Высота строк public const string LineHeightTight = "Lattice.LineHeight.Tight"; public const string LineHeightNormal = "Lattice.LineHeight.Normal"; public const string LineHeightRelaxed = "Lattice.LineHeight.Relaxed"; // Веса шрифтов public const string FontWeightLight = "Lattice.FontWeight.Light"; public const string FontWeightNormal = "Lattice.FontWeight.Normal"; public const string FontWeightMedium = "Lattice.FontWeight.Medium"; public const string FontWeightSemibold = "Lattice.FontWeight.Semibold"; public const string FontWeightBold = "Lattice.FontWeight.Bold"; // ============ Анимации (Animations) ============ // Длительности public const string DurationInstant = "Lattice.Duration.Instant"; public const string DurationFast = "Lattice.Duration.Fast"; public const string DurationNormal = "Lattice.Duration.Normal"; public const string DurationSlow = "Lattice.Duration.Slow"; // Кривые анимаций public const string EasingLinear = "Lattice.Easing.Linear"; public const string EasingStandard = "Lattice.Easing.Standard"; public const string EasingStandardAccelerate = "Lattice.Easing.Standard.Accelerate"; public const string EasingStandardDecelerate = "Lattice.Easing.Standard.Decelerate"; public const string EasingEmphasized = "Lattice.Easing.Emphasized"; // ============ Разное (Miscellaneous) ============ // Прозрачности public const string OpacityDisabled = "Lattice.Opacity.Disabled"; public const string OpacityOverlay = "Lattice.Opacity.Overlay"; public const string OpacityDrag = "Lattice.Opacity.Drag"; public const string OpacityDropPreview = "Lattice.Opacity.DropPreview"; // Z-индексы public const string ZIndexDefault = "Lattice.ZIndex.Default"; public const string ZIndexOverlay = "Lattice.ZIndex.Overlay"; public const string ZIndexDialog = "Lattice.ZIndex.Dialog"; public const string ZIndexTooltip = "Lattice.ZIndex.Tooltip"; public const string ZIndexDrag = "Lattice.ZIndex.Drag"; public const string ZIndexDropPreview = "Lattice.ZIndex.DropPreview"; // Размеры иконок public const string IconSizeSmall = "Lattice.IconSize.Small"; public const string IconSizeMedium = "Lattice.IconSize.Medium"; public const string IconSizeLarge = "Lattice.IconSize.Large"; // ============ Вспомогательные методы ============ /// /// Получает все токены как коллекцию ключ-значение. /// public static IReadOnlyDictionary GetAllTokens() { var fields = typeof(LatticeTokens).GetFields( System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); var tokens = new Dictionary(); foreach (var field in fields) { if (field.FieldType == typeof(string) && field.IsLiteral) { tokens[field.Name] = (string)field.GetValue(null)!; } } return tokens; } /// /// Проверяет, существует ли токен с указанным ключом. /// public static bool ContainsToken(string key) { return GetAllTokens().ContainsKey(key); } /// /// Получает токен по его имени (не по значению). /// public static string? GetTokenByName(string name) { var field = typeof(LatticeTokens).GetField( name, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static); return field?.GetValue(null) as string; } }