namespace Lattice.Themes.Core.Tokens;
///
/// Статические ключи для ресурсов 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;
}
}