Files
XRLib/Assets/Scripts/UVC/UIToolkit/UTKStyleGuide.cs

345 lines
19 KiB
C#

#nullable enable
using UnityEngine;
using UnityEngine.UIElements;
namespace UVC.UIToolkit
{
/// <summary>
/// UIToolkit 컴포넌트에서 사용하는 스타일 가이드 상수 정의.
/// USS 변수와 동일한 값을 C#에서 사용할 수 있도록 제공합니다.
///
/// [권장 사용법]
/// 새로운 컴포넌트는 UTKThemeManager와 USS 클래스를 사용하세요:
/// 1. UTKThemeManager.Instance.RegisterRoot(root) 호출
/// 2. AddToClassList("utk-modal") 등 USS 클래스 사용
///
/// [레거시 호환]
/// 기존 컴포넌트는 using static UTKStyleGuide로 상수 사용 가능:
/// - style.backgroundColor = BackgroundModal;
///
/// [테마 시스템 파일]
/// - UTKVariables.uss : 공통 레이아웃 변수 (spacing, radius, font)
/// - UTKThemeDark.uss / UTKThemeLight.uss : 테마별 색상 변수
/// - UTKComponents.uss : 재사용 컴포넌트 클래스 (.utk-modal, .utk-btn 등)
///
/// [USS 변수명 규칙]
/// - 색상: --color-{category}-{name} (예: --color-text-primary)
/// - 간격: --space-{size} (예: --space-m)
/// - 반지름: --radius-{size} (예: --radius-m)
/// - 폰트: --font-size-{name} (예: --font-size-body1)
/// - 크기: --size-{component}-{property} (예: --size-btn-height)
/// - 애니메이션: --anim-{speed} (예: --anim-fast)
/// - Z-Index: --z-{level} (예: --z-modal)
/// </summary>
public static class UTKStyleGuide
{
#region USS Variable Names - for customStyle access
// Primary Colors
public static readonly CustomStyleProperty<Color> VarColorPrimary = new("--color-primary");
// Text Colors
public static readonly CustomStyleProperty<Color> VarTextPrimary = new("--color-text-primary");
public static readonly CustomStyleProperty<Color> VarTextSecondary = new("--color-text-secondary");
public static readonly CustomStyleProperty<Color> VarTextDisabled = new("--color-text-disabled");
public static readonly CustomStyleProperty<Color> VarTextPlaceholder = new("--color-text-placeholder");
// Background Colors
public static readonly CustomStyleProperty<Color> VarBgModal = new("--color-bg-modal");
public static readonly CustomStyleProperty<Color> VarBgPanel = new("--color-bg-panel");
public static readonly CustomStyleProperty<Color> VarBgInput = new("--color-bg-input");
public static readonly CustomStyleProperty<Color> VarBgTooltip = new("--color-bg-tooltip");
// Border Colors
public static readonly CustomStyleProperty<Color> VarBorder = new("--color-border");
public static readonly CustomStyleProperty<Color> VarBorderFocus = new("--color-border-focus");
public static readonly CustomStyleProperty<Color> VarBorderError = new("--color-border-error");
// Button Colors
public static readonly CustomStyleProperty<Color> VarBtnNormal = new("--color-btn-normal");
public static readonly CustomStyleProperty<Color> VarBtnHover = new("--color-btn-hover");
public static readonly CustomStyleProperty<Color> VarBtnPressed = new("--color-btn-pressed");
public static readonly CustomStyleProperty<Color> VarBtnPrimary = new("--color-btn-primary");
public static readonly CustomStyleProperty<Color> VarBtnPrimaryHover = new("--color-btn-primary-hover");
// Calendar Colors
public static readonly CustomStyleProperty<Color> VarCalendarSunday = new("--color-calendar-sunday");
public static readonly CustomStyleProperty<Color> VarCalendarSaturday = new("--color-calendar-saturday");
public static readonly CustomStyleProperty<Color> VarCalendarToday = new("--color-calendar-today");
public static readonly CustomStyleProperty<Color> VarCalendarSelected = new("--color-calendar-selected");
// State Colors
public static readonly CustomStyleProperty<Color> VarStateSuccess = new("--color-state-success");
public static readonly CustomStyleProperty<Color> VarStateWarning = new("--color-state-warning");
public static readonly CustomStyleProperty<Color> VarStateError = new("--color-state-error");
public static readonly CustomStyleProperty<Color> VarStateInfo = new("--color-state-info");
// Vector Colors
public static readonly CustomStyleProperty<Color> VarVectorX = new("--color-vector-x");
public static readonly CustomStyleProperty<Color> VarVectorY = new("--color-vector-y");
public static readonly CustomStyleProperty<Color> VarVectorZ = new("--color-vector-z");
// Scrollbar Colors
public static readonly CustomStyleProperty<Color> VarScrollerDraggerNormal = new("--color-scroller-dragger-normal");
public static readonly CustomStyleProperty<Color> VarScrollerDraggerHover = new("--color-scroller-dragger-hover");
public static readonly CustomStyleProperty<Color> VarScrollerDraggerActive = new("--color-scroller-dragger-active");
public static readonly CustomStyleProperty<Color> VarScrollerTrackerNormal = new("--color-scroller-tracker-normal");
public static readonly CustomStyleProperty<Color> VarScrollerTrackerHover = new("--color-scroller-tracker-hover");
// Drag Ghost Colors
public static readonly CustomStyleProperty<Color> VarDragGhostBg = new("--color-drag-ghost-bg");
#endregion
#region Base Colors (USS: --color-base-*)
public static readonly Color Base01 = new Color32(0xFF, 0xFF, 0xFF, 0xFF);
public static readonly Color Base02 = new Color32(0xF0, 0xF0, 0xF0, 0xFF);
public static readonly Color Base03 = new Color32(0xE7, 0xE7, 0xE7, 0xFF);
public static readonly Color Base04 = new Color32(0xE5, 0xE5, 0xE5, 0xFF);
public static readonly Color Base05 = new Color32(0xD4, 0xD4, 0xD4, 0xFF);
public static readonly Color Base06 = new Color32(0xCC, 0xCC, 0xCC, 0xFF);
public static readonly Color Base07 = new Color32(0xC6, 0xC6, 0xC6, 0xFF);
public static readonly Color Base08 = new Color32(0xBB, 0xBB, 0xBB, 0xFF);
public static readonly Color Base09 = new Color32(0xA0, 0xA0, 0xA0, 0xFF);
public static readonly Color Base10 = new Color32(0x88, 0x80, 0x80, 0xFF);
public static readonly Color Base11 = new Color32(0x7F, 0x7F, 0x7F, 0xFF);
public static readonly Color Base12 = new Color32(0x60, 0x60, 0x60, 0xFF);
public static readonly Color Base13 = new Color32(0x45, 0x45, 0x45, 0xFF);
public static readonly Color Base14 = new Color32(0x3C, 0x3C, 0x3C, 0xFF);
public static readonly Color Base15 = new Color32(0x3A, 0x3D, 0x41, 0xFF);
public static readonly Color Base16 = new Color32(0x33, 0x33, 0x33, 0xFF);
public static readonly Color Base17 = new Color32(0x30, 0x30, 0x31, 0xFF);
public static readonly Color Base18 = new Color32(0x29, 0x29, 0x29, 0xFF);
public static readonly Color Base19 = new Color32(0x25, 0x25, 0x26, 0xFF);
public static readonly Color Base20 = new Color32(0x1E, 0x1E, 0x1E, 0xFF);
public static readonly Color Base21 = new Color32(0x00, 0x00, 0x00, 0xFF);
#endregion
#region Accent Colors - Blue (USS: --color-blue-*)
public static readonly Color Blue01 = new Color32(0x75, 0xBE, 0xFF, 0xFF);
public static readonly Color Blue02 = new Color32(0x4A, 0xA6, 0xFF, 0xFF);
public static readonly Color Blue03 = new Color32(0x33, 0x99, 0xCC, 0xFF);
public static readonly Color Blue04 = new Color32(0x37, 0x94, 0xFF, 0xFF);
public static readonly Color Blue05 = new Color32(0x08, 0x97, 0xFB, 0xFF);
public static readonly Color Blue06 = new Color32(0x08, 0x7A, 0xCC, 0xFF);
public static readonly Color Blue07 = new Color32(0x0E, 0x63, 0x9C, 0xFF);
public static readonly Color Blue08 = new Color32(0x26, 0x4F, 0x78, 0xFF);
public static readonly Color Blue09 = new Color32(0x09, 0x47, 0x71, 0xFF);
public static readonly Color Blue10 = new Color32(0x06, 0x2F, 0x4A, 0xFF);
public static readonly Color Blue11 = new Color32(0x00, 0x1F, 0x33, 0xFF);
#endregion
#region Accent Colors - Red (USS: --color-red-*)
public static readonly Color Red01 = new Color32(0xF1, 0x4C, 0x4C, 0xFF);
public static readonly Color Red02 = new Color32(0xC7, 0x4E, 0x39, 0xFF);
public static readonly Color Red03 = new Color32(0xFF, 0x00, 0x00, 0xFF);
public static readonly Color Red04 = new Color32(0x26, 0x4F, 0x78, 0xFF);
#endregion
#region Accent Colors - Green (USS: --color-green-*)
public static readonly Color Green01 = new Color32(0x73, 0xC9, 0x91, 0xFF);
public static readonly Color Green02 = new Color32(0x40, 0xC8, 0xAE, 0xFF);
public static readonly Color Green03 = new Color32(0x16, 0x82, 0x5D, 0xFF);
public static readonly Color Green04 = new Color32(0x32, 0x7E, 0x36, 0xFF);
public static readonly Color Green05 = new Color32(0x28, 0x63, 0x2B, 0xFF);
#endregion
#region Accent Colors - Purple (USS: --color-purple-*)
public static readonly Color Purple01 = new Color32(0x6C, 0x6C, 0xC4, 0xFF);
public static readonly Color Purple02 = new Color32(0xB1, 0x80, 0xD7, 0xFF);
public static readonly Color Purple03 = new Color32(0xBC, 0x3F, 0xBC, 0xFF);
public static readonly Color Purple04 = new Color32(0x68, 0x21, 0x7A, 0xFF);
#endregion
#region Accent Colors - Yellow (USS: --color-yellow-*)
public static readonly Color Yellow01 = new Color32(0xD7, 0xBA, 0x7D, 0xFF);
public static readonly Color Yellow02 = new Color32(0xCC, 0xA7, 0x00, 0xFF);
public static readonly Color Yellow03 = new Color32(0xB8, 0x95, 0x00, 0xFF);
public static readonly Color Yellow04 = new Color32(0xBF, 0x88, 0x03, 0xFF);
public static readonly Color Yellow05 = new Color32(0xFF, 0xFF, 0x00, 0xFF);
#endregion
#region Accent Colors - Orange (USS: --color-orange-*)
public static readonly Color Orange01 = new Color32(0xCC, 0x66, 0x33, 0xFF);
public static readonly Color Orange02 = new Color32(0xEE, 0x9D, 0x28, 0xFF);
public static readonly Color Orange03 = new Color32(0xEA, 0x5C, 0x00, 0xFF);
#endregion
#region Gray Colors (USS: --color-gray-*)
public static readonly Color Gray01 = new Color32(0xE4, 0xE6, 0xF1, 0xFF);
public static readonly Color Gray02 = new Color32(0x5F, 0x6A, 0x79, 0xFF);
public static readonly Color Gray03 = new Color32(0x42, 0x47, 0x50, 0xFF);
#endregion
#region Seti Colors (USS: --color-seti-*)
public static readonly Color SetiBlue = new Color32(0x51, 0x9A, 0xBA, 0xFF);
public static readonly Color SetiGreen = new Color32(0x8D, 0xC1, 0x49, 0xFF);
public static readonly Color SetiOrange = new Color32(0xE3, 0x79, 0x33, 0xFF);
public static readonly Color SetiPink = new Color32(0xF5, 0x53, 0x85, 0xFF);
public static readonly Color SetiRed = new Color32(0xCC, 0x3E, 0x44, 0xFF);
public static readonly Color SetiSteel = new Color32(0x74, 0x94, 0xA3, 0xFF);
public static readonly Color SetiYellow = new Color32(0xCB, 0xCB, 0x41, 0xFF);
public static readonly Color SetiPurple = new Color32(0xA0, 0x74, 0xC4, 0xFF);
public static readonly Color SetiIgnore = new Color32(0x41, 0x53, 0x5B, 0xFF);
public static readonly Color SetiWhite = new Color32(0xD4, 0xD7, 0xD6, 0xFF);
public static readonly Color SetiGray = new Color32(0x6D, 0x80, 0x86, 0xFF);
#endregion
#region Semantic Colors - Text (USS: --color-text-*)
public static readonly Color TextPrimary = Base03;
public static readonly Color TextSecondary = Base08;
public static readonly Color TextDisabled = Gray02;
public static readonly Color TextPlaceholder = Base12;
#endregion
#region Semantic Colors - Background (USS: --color-bg-*)
public static readonly Color BackgroundModal = Base18;
public static readonly Color BackgroundPanel = Base20;
public static readonly Color BackgroundInput = Base19;
public static readonly Color BackgroundTooltip = new Color32(0x26, 0x26, 0x26, 0xF2);
#endregion
#region Semantic Colors - Border (USS: --color-border-*)
public static readonly Color Border = Base16;
public static readonly Color BorderFocus = Blue05;
public static readonly Color BorderError = Red01;
#endregion
#region Semantic Colors - Button (USS: --color-btn-*)
public static readonly Color ButtonNormal = Base17;
public static readonly Color ButtonHover = new Color32(0x3C, 0x3C, 0x3D, 0xFF);
public static readonly Color ButtonPressed = Base19;
public static readonly Color ButtonPrimary = Blue05;
public static readonly Color ButtonPrimaryHover = Blue06;
#endregion
#region Semantic Colors - Calendar (USS: --color-calendar-*)
public static readonly Color CalendarSunday = Red01;
public static readonly Color CalendarSaturday = Blue02;
public static readonly Color CalendarToday = SetiOrange;
public static readonly Color CalendarSelected = Blue06;
#endregion
#region Semantic Colors - State (USS: --color-state-*)
public static readonly Color StateSuccess = Green01;
public static readonly Color StateWarning = Orange02;
public static readonly Color StateError = Red01;
public static readonly Color StateInfo = Blue05;
#endregion
#region Semantic Colors - Vector Fields (USS: --color-vector-*)
public static readonly Color VectorX = new Color(0.9f, 0.4f, 0.4f, 1f);
public static readonly Color VectorY = new Color(0.4f, 0.9f, 0.4f, 1f);
public static readonly Color VectorZ = new Color(0.4f, 0.4f, 0.9f, 1f);
#endregion
#region Semantic Colors - Scrollbar (USS: --color-scroller-*)
public static readonly Color ScrollbarDraggerNormal = Base16;
public static readonly Color ScrollbarDraggerHover = new Color(0.322f, 0.322f, 0.322f, 1f);
public static readonly Color ScrollbarDraggerActive = Base16;
public static readonly Color ScrollbarTrackerNormal = Color.clear;
public static readonly Color ScrollbarTrackerHover = new Color(0.1f, 0.1f, 0.1f, 0f);
#endregion
#region Semantic Colors - Drag Ghost (USS: --color-drag-*)
public static readonly Color DragGhostBackground = new Color(0.16f, 0.16f, 0.16f, 1f);
#endregion
#region Spacing (USS: --space-*)
public const int SpacingXS = 2;
public const int SpacingS = 4;
public const int SpacingM = 8;
public const int SpacingL = 12;
public const int SpacingXL = 16;
public const int SpacingXXL = 24;
#endregion
#region Border Radius (USS: --radius-*)
public const int BorderRadiusS = 2;
public const int BorderRadiusM = 4;
public const int BorderRadiusL = 8;
public const int BorderRadiusFull = 9999;
#endregion
#region Border Width (USS: --border-width-*)
public const int BorderWidth = 1;
public const int BorderWidthThick = 2;
#endregion
#region Font Sizes (USS: --font-size-*)
public const int FontSizeH1 = 26;
public const int FontSizeH2 = 14;
public const int FontSizeH3 = 13;
public const int FontSizeH4 = 11;
public const int FontSizeH5 = 11;
public const int FontSizeH6 = 11;
public const int FontSizeBody1 = 13;
public const int FontSizeBody2 = 12;
public const int FontSizeLabel1 = 14;
public const int FontSizeLabel2 = 12;
public const int FontSizeLabel3 = 11;
public const int FontSizeLabel4 = 9;
public const int FontSizeCode = 12;
#endregion
#region Component Sizes (USS: --size-*)
public const int SizeBtnHeight = 24;
public const int SizeBtnMinWidth = 80;
public const int SizeInputHeight = 24;
public const int SizeIconBtn = 20;
public const int SizeNavBtn = 24;
public const int SizeModalMinWidth = 300;
#endregion
#region Animation (USS: --anim-*)
public const int AnimFast = 100;
public const int AnimNormal = 200;
public const int AnimSlow = 300;
#endregion
#region Z-Index (USS: --z-*)
public const int ZDefault = 0;
public const int ZDropdown = 100;
public const int ZModal = 200;
public const int ZTooltip = 300;
#endregion
#region Helper Methods
/// <summary>
/// VisualElement의 customStyle에서 색상 변수를 읽어옵니다.
/// USS 변수가 없으면 기본값을 반환합니다.
/// </summary>
public static Color GetColor(ICustomStyle customStyle, CustomStyleProperty<Color> property, Color defaultValue)
{
return customStyle.TryGetValue(property, out var color) ? color : defaultValue;
}
/// <summary>
/// VisualElement에서 텍스트 색상을 가져옵니다.
/// </summary>
public static Color GetTextPrimary(ICustomStyle customStyle) => GetColor(customStyle, VarTextPrimary, TextPrimary);
public static Color GetTextSecondary(ICustomStyle customStyle) => GetColor(customStyle, VarTextSecondary, TextSecondary);
public static Color GetTextDisabled(ICustomStyle customStyle) => GetColor(customStyle, VarTextDisabled, TextDisabled);
/// <summary>
/// VisualElement에서 배경 색상을 가져옵니다.
/// </summary>
public static Color GetBgModal(ICustomStyle customStyle) => GetColor(customStyle, VarBgModal, BackgroundModal);
public static Color GetBgPanel(ICustomStyle customStyle) => GetColor(customStyle, VarBgPanel, BackgroundPanel);
public static Color GetBgInput(ICustomStyle customStyle) => GetColor(customStyle, VarBgInput, BackgroundInput);
/// <summary>
/// VisualElement에서 버튼 색상을 가져옵니다.
/// </summary>
public static Color GetBtnNormal(ICustomStyle customStyle) => GetColor(customStyle, VarBtnNormal, ButtonNormal);
public static Color GetBtnHover(ICustomStyle customStyle) => GetColor(customStyle, VarBtnHover, ButtonHover);
public static Color GetBtnPressed(ICustomStyle customStyle) => GetColor(customStyle, VarBtnPressed, ButtonPressed);
public static Color GetBtnPrimary(ICustomStyle customStyle) => GetColor(customStyle, VarBtnPrimary, ButtonPrimary);
/// <summary>
/// VisualElement에서 테두리 색상을 가져옵니다.
/// </summary>
public static Color GetBorder(ICustomStyle customStyle) => GetColor(customStyle, VarBorder, Border);
public static Color GetBorderFocus(ICustomStyle customStyle) => GetColor(customStyle, VarBorderFocus, BorderFocus);
#endregion
}
}