#nullable enable using UnityEngine; using UnityEngine.UIElements; namespace UVC.UIToolkit { /// /// 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) /// public static class UTKStyleGuide { #region USS Variable Names - for customStyle access // Primary Colors public static readonly CustomStyleProperty VarColorPrimary = new("--color-primary"); // Text Colors public static readonly CustomStyleProperty VarTextPrimary = new("--color-text-primary"); public static readonly CustomStyleProperty VarTextSecondary = new("--color-text-secondary"); public static readonly CustomStyleProperty VarTextDisabled = new("--color-text-disabled"); public static readonly CustomStyleProperty VarTextPlaceholder = new("--color-text-placeholder"); // Background Colors public static readonly CustomStyleProperty VarBgModal = new("--color-bg-modal"); public static readonly CustomStyleProperty VarBgPanel = new("--color-bg-panel"); public static readonly CustomStyleProperty VarBgInput = new("--color-bg-input"); public static readonly CustomStyleProperty VarBgTooltip = new("--color-bg-tooltip"); // Border Colors public static readonly CustomStyleProperty VarBorder = new("--color-border"); public static readonly CustomStyleProperty VarBorderFocus = new("--color-border-focus"); public static readonly CustomStyleProperty VarBorderError = new("--color-border-error"); // Button Colors public static readonly CustomStyleProperty VarBtnNormal = new("--color-btn-normal"); public static readonly CustomStyleProperty VarBtnHover = new("--color-btn-hover"); public static readonly CustomStyleProperty VarBtnPressed = new("--color-btn-pressed"); public static readonly CustomStyleProperty VarBtnPrimary = new("--color-btn-primary"); public static readonly CustomStyleProperty VarBtnPrimaryHover = new("--color-btn-primary-hover"); // Calendar Colors public static readonly CustomStyleProperty VarCalendarSunday = new("--color-calendar-sunday"); public static readonly CustomStyleProperty VarCalendarSaturday = new("--color-calendar-saturday"); public static readonly CustomStyleProperty VarCalendarToday = new("--color-calendar-today"); public static readonly CustomStyleProperty VarCalendarSelected = new("--color-calendar-selected"); // State Colors public static readonly CustomStyleProperty VarStateSuccess = new("--color-state-success"); public static readonly CustomStyleProperty VarStateWarning = new("--color-state-warning"); public static readonly CustomStyleProperty VarStateError = new("--color-state-error"); public static readonly CustomStyleProperty VarStateInfo = new("--color-state-info"); // Vector Colors public static readonly CustomStyleProperty VarVectorX = new("--color-vector-x"); public static readonly CustomStyleProperty VarVectorY = new("--color-vector-y"); public static readonly CustomStyleProperty VarVectorZ = new("--color-vector-z"); // Scrollbar Colors public static readonly CustomStyleProperty VarScrollerDraggerNormal = new("--color-scroller-dragger-normal"); public static readonly CustomStyleProperty VarScrollerDraggerHover = new("--color-scroller-dragger-hover"); public static readonly CustomStyleProperty VarScrollerDraggerActive = new("--color-scroller-dragger-active"); public static readonly CustomStyleProperty VarScrollerTrackerNormal = new("--color-scroller-tracker-normal"); public static readonly CustomStyleProperty VarScrollerTrackerHover = new("--color-scroller-tracker-hover"); // Drag Ghost Colors public static readonly CustomStyleProperty 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 /// /// VisualElement의 customStyle에서 색상 변수를 읽어옵니다. /// USS 변수가 없으면 기본값을 반환합니다. /// public static Color GetColor(ICustomStyle customStyle, CustomStyleProperty property, Color defaultValue) { return customStyle.TryGetValue(property, out var color) ? color : defaultValue; } /// /// VisualElement에서 텍스트 색상을 가져옵니다. /// 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); /// /// VisualElement에서 배경 색상을 가져옵니다. /// 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); /// /// VisualElement에서 버튼 색상을 가져옵니다. /// 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); /// /// VisualElement에서 테두리 색상을 가져옵니다. /// public static Color GetBorder(ICustomStyle customStyle) => GetColor(customStyle, VarBorder, Border); public static Color GetBorderFocus(ICustomStyle customStyle) => GetColor(customStyle, VarBorderFocus, BorderFocus); #endregion } }