Files
Lattice/Lattice.Themes.Core/LatticeTokens.cs
2026-01-18 16:33:35 +03:00

231 lines
11 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace Lattice.Themes.Core.Tokens;
/// <summary>
/// Статические ключи для ресурсов Lattice Framework.
/// Используются в XAML через {DynamicResource} или {ThemeResource}.
/// </summary>
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";
// ============ Вспомогательные методы ============
/// <summary>
/// Получает все токены как коллекцию ключ-значение.
/// </summary>
public static IReadOnlyDictionary<string, string> GetAllTokens()
{
var fields = typeof(LatticeTokens).GetFields(
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Static);
var tokens = new Dictionary<string, string>();
foreach (var field in fields)
{
if (field.FieldType == typeof(string) && field.IsLiteral)
{
tokens[field.Name] = (string)field.GetValue(null)!;
}
}
return tokens;
}
/// <summary>
/// Проверяет, существует ли токен с указанным ключом.
/// </summary>
public static bool ContainsToken(string key)
{
return GetAllTokens().ContainsKey(key);
}
/// <summary>
/// Получает токен по его имени (не по значению).
/// </summary>
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;
}
}