|
|
@@ -6,22 +6,25 @@
|
|
6
|
6
|
import Cocoa
|
|
7
|
7
|
|
|
8
|
8
|
final class DashboardView: NSView {
|
|
|
9
|
+ /// Indeed.com-inspired neutrals and brand blue (white surfaces, `#2557a7` accent, `#2d2d2d` / `#767676` text, `#d4d2d0` borders).
|
|
9
|
10
|
private enum Theme {
|
|
10
|
|
- static let pageBackground = NSColor(calibratedWhite: 0.02, alpha: 1)
|
|
11
|
|
- static let chromeBackground = NSColor(calibratedWhite: 0.04, alpha: 1)
|
|
12
|
|
- static let sidebarBackground = NSColor(calibratedWhite: 0.07, alpha: 1)
|
|
13
|
|
- static let mainHostBackground = NSColor(calibratedWhite: 0.06, alpha: 1)
|
|
14
|
|
- static let selectionFill = NSColor(calibratedWhite: 1, alpha: 0.1)
|
|
15
|
|
- static let cardBackground = NSColor(calibratedWhite: 0.11, alpha: 1)
|
|
16
|
|
- static let toggleBackground = NSColor(calibratedWhite: 0.16, alpha: 1)
|
|
17
|
|
- static let primaryText = NSColor(calibratedWhite: 0.96, alpha: 1)
|
|
18
|
|
- static let secondaryText = NSColor(calibratedWhite: 0.62, alpha: 1)
|
|
19
|
|
- static let tertiaryText = NSColor(calibratedWhite: 0.48, alpha: 1)
|
|
20
|
|
- static let proCardFill = NSColor(calibratedRed: 0.1, green: 0.09, blue: 0.12, alpha: 1)
|
|
21
|
|
- static let proCardBorder = NSColor(calibratedWhite: 1, alpha: 0.09)
|
|
22
|
|
- static let proAccent = NSColor(calibratedRed: 0.98, green: 0.82, blue: 0.38, alpha: 1)
|
|
23
|
|
- static let proCTABackground = NSColor(calibratedWhite: 0.97, alpha: 1)
|
|
24
|
|
- static let proCTAText = NSColor(calibratedWhite: 0.05, alpha: 1)
|
|
|
11
|
+ static let brandBlue = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
|
|
|
12
|
+ static let pageBackground = NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
|
|
|
13
|
+ static let chromeBackground = NSColor(srgbRed: 247 / 255, green: 247 / 255, blue: 247 / 255, alpha: 1)
|
|
|
14
|
+ static let sidebarBackground = NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
|
|
|
15
|
+ static let mainHostBackground = NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
|
|
|
16
|
+ static let selectionFill = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 0.12)
|
|
|
17
|
+ static let cardBackground = NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
|
|
|
18
|
+ static let toggleBackground = NSColor(srgbRed: 232 / 255, green: 232 / 255, blue: 232 / 255, alpha: 1)
|
|
|
19
|
+ static let primaryText = NSColor(srgbRed: 45 / 255, green: 45 / 255, blue: 45 / 255, alpha: 1)
|
|
|
20
|
+ static let secondaryText = NSColor(srgbRed: 118 / 255, green: 118 / 255, blue: 118 / 255, alpha: 1)
|
|
|
21
|
+ static let tertiaryText = NSColor(srgbRed: 118 / 255, green: 118 / 255, blue: 118 / 255, alpha: 1)
|
|
|
22
|
+ static let border = NSColor(srgbRed: 212 / 255, green: 210 / 255, blue: 208 / 255, alpha: 1)
|
|
|
23
|
+ static let proCardFill = NSColor(srgbRed: 239 / 255, green: 244 / 255, blue: 252 / 255, alpha: 1)
|
|
|
24
|
+ static let proCardBorder = NSColor(srgbRed: 212 / 255, green: 210 / 255, blue: 208 / 255, alpha: 1)
|
|
|
25
|
+ static let proAccent = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
|
|
|
26
|
+ static let proCTABackground = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
|
|
|
27
|
+ static let proCTAText = NSColor(srgbRed: 1, green: 1, blue: 1, alpha: 1)
|
|
25
|
28
|
}
|
|
26
|
29
|
|
|
27
|
30
|
private let contentStack = NSStackView()
|
|
|
@@ -197,7 +200,7 @@ final class DashboardView: NSView {
|
|
197
|
200
|
searchCard.layer?.backgroundColor = Theme.cardBackground.cgColor
|
|
198
|
201
|
searchCard.layer?.cornerRadius = 14
|
|
199
|
202
|
searchCard.layer?.borderWidth = 1
|
|
200
|
|
- searchCard.layer?.borderColor = NSColor(calibratedWhite: 1, alpha: 0.06).cgColor
|
|
|
203
|
+ searchCard.layer?.borderColor = Theme.border.cgColor
|
|
201
|
204
|
searchCard.translatesAutoresizingMaskIntoConstraints = false
|
|
202
|
205
|
searchCard.setContentHuggingPriority(.defaultHigh, for: .vertical)
|
|
203
|
206
|
|
|
|
@@ -255,7 +258,7 @@ final class DashboardView: NSView {
|
|
255
|
258
|
|
|
256
|
259
|
let brand = NSTextField(labelWithString: "Indeed AI\nJob Finder")
|
|
257
|
260
|
brand.font = .systemFont(ofSize: 18, weight: .bold)
|
|
258
|
|
- brand.textColor = Theme.primaryText
|
|
|
261
|
+ brand.textColor = Theme.brandBlue
|
|
259
|
262
|
brand.alignment = .left
|
|
260
|
263
|
sidebar.addArrangedSubview(brand)
|
|
261
|
264
|
|
|
|
@@ -289,11 +292,11 @@ final class DashboardView: NSView {
|
|
289
|
292
|
let icon = NSImageView()
|
|
290
|
293
|
icon.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 13, weight: .medium)
|
|
291
|
294
|
icon.image = NSImage(systemSymbolName: item.systemImage, accessibilityDescription: item.title)
|
|
292
|
|
- icon.contentTintColor = isSelected ? Theme.primaryText : Theme.secondaryText
|
|
|
295
|
+ icon.contentTintColor = isSelected ? Theme.brandBlue : Theme.secondaryText
|
|
293
|
296
|
|
|
294
|
297
|
let text = NSTextField(labelWithString: item.title)
|
|
295
|
298
|
text.font = .systemFont(ofSize: 14, weight: .medium)
|
|
296
|
|
- text.textColor = isSelected ? Theme.primaryText : Theme.secondaryText
|
|
|
299
|
+ text.textColor = isSelected ? Theme.brandBlue : Theme.secondaryText
|
|
297
|
300
|
text.refusesFirstResponder = true
|
|
298
|
301
|
|
|
299
|
302
|
row.addArrangedSubview(icon)
|