설명 없음

AppDashboardTheme.swift 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  1. //
  2. // AppDashboardTheme.swift
  3. // App for Indeed
  4. //
  5. import AppKit
  6. /// Indeed-inspired dashboard colors that follow the active light / dark appearance.
  7. @MainActor
  8. enum AppDashboardTheme {
  9. static var isDark: Bool { AppAppearanceManager.shared.isDark }
  10. static var brandBlue: NSColor {
  11. NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
  12. }
  13. static var brandBlueHover: NSColor {
  14. isDark
  15. ? NSColor(srgbRed: 54 / 255, green: 110 / 255, blue: 198 / 255, alpha: 1)
  16. : NSColor(srgbRed: 28 / 255, green: 70 / 255, blue: 140 / 255, alpha: 1)
  17. }
  18. static var pageBackground: NSColor {
  19. isDark
  20. ? NSColor(srgbRed: 28 / 255, green: 28 / 255, blue: 30 / 255, alpha: 1)
  21. : NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
  22. }
  23. static var chromeBackground: NSColor {
  24. isDark
  25. ? NSColor(srgbRed: 28 / 255, green: 28 / 255, blue: 30 / 255, alpha: 1)
  26. : NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1)
  27. }
  28. static var sidebarBackground: NSColor {
  29. isDark
  30. ? NSColor(srgbRed: 36 / 255, green: 36 / 255, blue: 38 / 255, alpha: 1)
  31. : NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
  32. }
  33. static var mainHostBackground: NSColor {
  34. pageBackground
  35. }
  36. static var welcomeHeroHeadingBlue: NSColor {
  37. isDark
  38. ? NSColor(srgbRed: 96 / 255, green: 165 / 255, blue: 250 / 255, alpha: 1)
  39. : NSColor(srgbRed: 0, green: 82 / 255, blue: 204 / 255, alpha: 1)
  40. }
  41. static var welcomeHeroSubtitleText: NSColor {
  42. isDark
  43. ? NSColor(srgbRed: 174 / 255, green: 184 / 255, blue: 198 / 255, alpha: 1)
  44. : NSColor(srgbRed: 51 / 255, green: 65 / 255, blue: 85 / 255, alpha: 1)
  45. }
  46. static var welcomeHeroIconWell: NSColor {
  47. isDark
  48. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.22)
  49. : NSColor(srgbRed: 239 / 255, green: 246 / 255, blue: 255 / 255, alpha: 1)
  50. }
  51. static var welcomeHeroWaveTint: NSColor {
  52. isDark
  53. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.35)
  54. : NSColor(srgbRed: 186 / 255, green: 210 / 255, blue: 253 / 255, alpha: 1)
  55. }
  56. static var welcomeSubtitleText: NSColor {
  57. isDark
  58. ? NSColor(srgbRed: 174 / 255, green: 174 / 255, blue: 178 / 255, alpha: 1)
  59. : NSColor(srgbRed: 64 / 255, green: 64 / 255, blue: 64 / 255, alpha: 1)
  60. }
  61. static var selectionFill: NSColor {
  62. NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: isDark ? 0.28 : 0.12)
  63. }
  64. static var selectionFillHover: NSColor {
  65. NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: isDark ? 0.38 : 0.2)
  66. }
  67. static var cardBackground: NSColor {
  68. isDark
  69. ? NSColor(srgbRed: 44 / 255, green: 44 / 255, blue: 46 / 255, alpha: 1)
  70. : NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
  71. }
  72. static var toggleBackground: NSColor {
  73. isDark
  74. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  75. : NSColor(srgbRed: 232 / 255, green: 232 / 255, blue: 232 / 255, alpha: 1)
  76. }
  77. static var primaryText: NSColor {
  78. isDark
  79. ? NSColor(srgbRed: 245 / 255, green: 245 / 255, blue: 247 / 255, alpha: 1)
  80. : NSColor(srgbRed: 45 / 255, green: 45 / 255, blue: 45 / 255, alpha: 1)
  81. }
  82. static var secondaryText: NSColor {
  83. isDark
  84. ? NSColor(srgbRed: 152 / 255, green: 152 / 255, blue: 157 / 255, alpha: 1)
  85. : NSColor(srgbRed: 118 / 255, green: 118 / 255, blue: 118 / 255, alpha: 1)
  86. }
  87. static var tertiaryText: NSColor { secondaryText }
  88. static var border: NSColor {
  89. isDark
  90. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  91. : NSColor(srgbRed: 212 / 255, green: 210 / 255, blue: 208 / 255, alpha: 1)
  92. }
  93. static var searchBarBorder: NSColor {
  94. isDark
  95. ? NSColor(srgbRed: 72 / 255, green: 96 / 255, blue: 140 / 255, alpha: 0.55)
  96. : NSColor(srgbRed: 180 / 255, green: 200 / 255, blue: 228 / 255, alpha: 1)
  97. }
  98. static var searchBarBorderHover: NSColor {
  99. isDark
  100. ? NSColor(srgbRed: 96 / 255, green: 140 / 255, blue: 210 / 255, alpha: 0.75)
  101. : NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.55)
  102. }
  103. static var proCardFill: NSColor {
  104. isDark
  105. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.14)
  106. : NSColor(srgbRed: 239 / 255, green: 244 / 255, blue: 252 / 255, alpha: 1)
  107. }
  108. static var proCardBorder: NSColor { border }
  109. static var proAccent: NSColor { brandBlue }
  110. static var proCTABackground: NSColor { brandBlue }
  111. static var proCTAText: NSColor {
  112. NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
  113. }
  114. static var neutralHoverFill: NSColor {
  115. isDark
  116. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  117. : NSColor(srgbRed: 240 / 255, green: 240 / 255, blue: 240 / 255, alpha: 1)
  118. }
  119. static var sidebarRowHoverFill: NSColor {
  120. isDark
  121. ? NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 0.06)
  122. : NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 0.04)
  123. }
  124. static var settingsPageBackground: NSColor { mainHostBackground }
  125. static var settingsGroupBackground: NSColor { cardBackground }
  126. static var settingsIconBackground: NSColor {
  127. isDark
  128. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.2)
  129. : NSColor(srgbRed: 239 / 255, green: 244 / 255, blue: 252 / 255, alpha: 1)
  130. }
  131. static var settingsDivider: NSColor {
  132. isDark
  133. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  134. : NSColor(srgbRed: 228 / 255, green: 228 / 255, blue: 228 / 255, alpha: 1)
  135. }
  136. static var featureCardBackground: NSColor { cardBackground }
  137. static var featureCardBorder: NSColor {
  138. isDark
  139. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  140. : NSColor(srgbRed: 237 / 255, green: 242 / 255, blue: 247 / 255, alpha: 1)
  141. }
  142. static var featureIconWell: NSColor {
  143. isDark
  144. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.22)
  145. : NSColor(srgbRed: 235 / 255, green: 242 / 255, blue: 255 / 255, alpha: 1)
  146. }
  147. static var featurePrimaryBlue: NSColor { welcomeHeroHeadingBlue }
  148. static var featureSecondaryText: NSColor {
  149. isDark
  150. ? NSColor(srgbRed: 174 / 255, green: 184 / 255, blue: 198 / 255, alpha: 1)
  151. : NSColor(srgbRed: 93 / 255, green: 109 / 255, blue: 126 / 255, alpha: 1)
  152. }
  153. static var loadingPageBackgroundTop: NSColor {
  154. isDark
  155. ? NSColor(srgbRed: 36 / 255, green: 36 / 255, blue: 38 / 255, alpha: 1)
  156. : NSColor(srgbRed: 252 / 255, green: 253 / 255, blue: 255 / 255, alpha: 1)
  157. }
  158. static var loadingPageBackgroundBottom: NSColor {
  159. isDark
  160. ? NSColor(srgbRed: 28 / 255, green: 28 / 255, blue: 30 / 255, alpha: 1)
  161. : NSColor(srgbRed: 241 / 255, green: 245 / 255, blue: 252 / 255, alpha: 1)
  162. }
  163. static var loadingIconWell: NSColor { featureIconWell }
  164. static var loadingHeadingBlue: NSColor { welcomeHeroHeadingBlue }
  165. static var loadingSubtitleText: NSColor { welcomeHeroSubtitleText }
  166. static var loadingStatusText: NSColor { secondaryText }
  167. static var loadingWaveTint: NSColor { welcomeHeroWaveTint }
  168. static var loadingBadgeFill: NSColor {
  169. isDark
  170. ? NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.28)
  171. : NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.1)
  172. }
  173. static var loadingBadgeText: NSColor { brandBlue }
  174. static var loadingTrackFill: NSColor {
  175. isDark
  176. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  177. : NSColor(srgbRed: 228 / 255, green: 233 / 255, blue: 242 / 255, alpha: 1)
  178. }
  179. static var loadingTrackBorder: NSColor { border }
  180. static var loadingIconWellBorder: NSColor {
  181. isDark
  182. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  183. : NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
  184. }
  185. // MARK: CV Maker gallery
  186. static var cvMakerPageGradientTop: NSColor {
  187. isDark ? pageBackground : NSColor(srgbRed: 250 / 255, green: 252 / 255, blue: 1, alpha: 1)
  188. }
  189. static var cvMakerPageGradientBottom: NSColor {
  190. isDark ? pageBackground : NSColor(srgbRed: 236 / 255, green: 244 / 255, blue: 1, alpha: 1)
  191. }
  192. static var cvMakerChipRestFill: NSColor { cardBackground }
  193. static var cvMakerChipRestBorder: NSColor { border }
  194. static var cvMakerChipHoverFill: NSColor { neutralHoverFill }
  195. static var cvMakerChipBadgeBackground: NSColor {
  196. isDark
  197. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  198. : NSColor(srgbRed: 233 / 255, green: 236 / 255, blue: 241 / 255, alpha: 1)
  199. }
  200. static var cvMakerChipBadgeText: NSColor { secondaryText }
  201. static var cvMakerCardFooter: NSColor {
  202. isDark
  203. ? NSColor(srgbRed: 40 / 255, green: 40 / 255, blue: 42 / 255, alpha: 1)
  204. : NSColor(srgbRed: 250 / 255, green: 251 / 255, blue: 253 / 255, alpha: 1)
  205. }
  206. static var cvMakerPreviewSurface: NSColor {
  207. isDark
  208. ? NSColor(srgbRed: 52 / 255, green: 52 / 255, blue: 54 / 255, alpha: 1)
  209. : NSColor(srgbRed: 252 / 255, green: 252 / 255, blue: 252 / 255, alpha: 1)
  210. }
  211. static var cvMakerPreviewSidebarTint: NSColor {
  212. isDark
  213. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  214. : NSColor(srgbRed: 244 / 255, green: 246 / 255, blue: 250 / 255, alpha: 1)
  215. }
  216. static var cvMakerCardBorderHover: NSColor { searchBarBorderHover }
  217. static var cvMakerSelectionGlow: NSColor {
  218. NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: isDark ? 0.65 : 0.55)
  219. }
  220. static var cvMakerFilterChromeBorder: NSColor {
  221. isDark
  222. ? NSColor(srgbRed: 58 / 255, green: 58 / 255, blue: 60 / 255, alpha: 1)
  223. : NSColor.white.withAlphaComponent(0.65)
  224. }
  225. // MARK: Profile hub & editor
  226. static var profileFieldFill: NSColor {
  227. isDark
  228. ? NSColor(srgbRed: 52 / 255, green: 52 / 255, blue: 54 / 255, alpha: 1)
  229. : NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1)
  230. }
  231. static var profileDestructive: NSColor {
  232. NSColor(srgbRed: 220 / 255, green: 38 / 255, blue: 38 / 255, alpha: 1)
  233. }
  234. }