style: add sunset palette and soft background glows
This commit is contained in:
@@ -47,7 +47,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
NSApp.activate()
|
||||
window?.makeKeyAndOrderFront(nil)
|
||||
window?.makeFirstResponder(searchField)
|
||||
(searchField.currentEditor() as? NSTextView)?.insertionPointColor = .labelColor
|
||||
(searchField.currentEditor() as? NSTextView)?.insertionPointColor = SunsetPalette.accent
|
||||
refreshApplications()
|
||||
}
|
||||
|
||||
@@ -66,14 +66,18 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
content.layer?.masksToBounds = true
|
||||
content.layer?.borderWidth = 0.5
|
||||
window.contentView = content
|
||||
let tint = NSView(frame: content.bounds)
|
||||
tint.autoresizingMask = [.width, .height]
|
||||
tint.wantsLayer = true
|
||||
content.addSubview(tint)
|
||||
let background = LauncherBackground(frame: content.bounds)
|
||||
background.autoresizingMask = [.width, .height]
|
||||
background.setAccessibilityElement(false)
|
||||
content.addSubview(background)
|
||||
|
||||
searchField.placeholderString = "Search for apps…"
|
||||
searchField.font = .systemFont(ofSize: 20)
|
||||
searchField.textColor = .labelColor
|
||||
let searchFont = NSFont.systemFont(ofSize: 20)
|
||||
searchField.font = searchFont
|
||||
searchField.placeholderAttributedString = NSAttributedString(
|
||||
string: "Search for apps…",
|
||||
attributes: [.foregroundColor: SunsetPalette.secondaryText, .font: searchFont]
|
||||
)
|
||||
searchField.textColor = SunsetPalette.text
|
||||
searchField.isBordered = false
|
||||
searchField.drawsBackground = false
|
||||
searchField.focusRingType = .none
|
||||
@@ -88,7 +92,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
|
||||
let symbol = NSImageView()
|
||||
symbol.image = NSImage(systemSymbolName: "sparkles", accessibilityDescription: nil)
|
||||
symbol.contentTintColor = .tertiaryLabelColor
|
||||
symbol.contentTintColor = SunsetPalette.accent
|
||||
symbol.setAccessibilityElement(false)
|
||||
let header = NSStackView(views: [symbol, searchField])
|
||||
header.orientation = .horizontal
|
||||
@@ -97,7 +101,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
|
||||
let sectionLabel = NSTextField(labelWithString: "Applications")
|
||||
sectionLabel.font = .systemFont(ofSize: 12, weight: .semibold)
|
||||
sectionLabel.textColor = .secondaryLabelColor
|
||||
sectionLabel.textColor = SunsetPalette.secondaryText
|
||||
|
||||
let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("application"))
|
||||
column.resizingMask = .autoresizingMask
|
||||
@@ -134,14 +138,14 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
scrollView.horizontalScrollElasticity = .none
|
||||
|
||||
statusLabel.font = .systemFont(ofSize: 12)
|
||||
statusLabel.textColor = .secondaryLabelColor
|
||||
statusLabel.textColor = SunsetPalette.secondaryText
|
||||
statusLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
|
||||
emptyLabel.textColor = .secondaryLabelColor
|
||||
emptyLabel.textColor = SunsetPalette.secondaryText
|
||||
emptyLabel.alignment = .center
|
||||
|
||||
openButton.isBordered = false
|
||||
openButton.font = .systemFont(ofSize: 14, weight: .medium)
|
||||
openButton.contentTintColor = .labelColor
|
||||
openButton.contentTintColor = SunsetPalette.text
|
||||
openButton.keyEquivalent = "\r"
|
||||
openButton.target = self
|
||||
openButton.action = #selector(openSelection)
|
||||
@@ -149,7 +153,7 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
openButton.toolTip = "Open the selected application (Return). Use ↑ and ↓ to select."
|
||||
let returnKey = NSTextField(labelWithString: "↵")
|
||||
returnKey.font = .systemFont(ofSize: 14)
|
||||
returnKey.textColor = .secondaryLabelColor
|
||||
returnKey.textColor = SunsetPalette.secondaryText
|
||||
returnKey.alignment = .center
|
||||
returnKey.wantsLayer = true
|
||||
returnKey.layer?.cornerRadius = 5
|
||||
@@ -208,11 +212,11 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
returnKey.heightAnchor.constraint(equalToConstant: 18),
|
||||
])
|
||||
window.effectiveAppearance.performAsCurrentDrawingAppearance {
|
||||
let border = NSColor.separatorColor.cgColor
|
||||
let border = SunsetPalette.secondaryText.withAlphaComponent(0.22).cgColor
|
||||
content.layer?.borderColor = border
|
||||
returnKey.layer?.borderColor = border
|
||||
actionPill.layer?.borderColor = border
|
||||
tint.layer?.backgroundColor = NSColor.textBackgroundColor.withAlphaComponent(0.85).cgColor
|
||||
returnKey.layer?.borderColor = SunsetPalette.secondaryText.withAlphaComponent(0.35).cgColor
|
||||
actionPill.layer?.borderColor = SunsetPalette.accent.withAlphaComponent(0.35).cgColor
|
||||
actionPill.layer?.backgroundColor = SunsetPalette.accent.withAlphaComponent(0.08).cgColor
|
||||
}
|
||||
window.initialFirstResponder = searchField
|
||||
}
|
||||
@@ -315,10 +319,11 @@ final class LauncherWindowController: NSWindowController, NSWindowDelegate, NSSe
|
||||
icon.setAccessibilityElement(false)
|
||||
let label = NSTextField(labelWithString: "")
|
||||
label.font = .systemFont(ofSize: 14, weight: .medium)
|
||||
label.textColor = SunsetPalette.text
|
||||
label.lineBreakMode = .byTruncatingTail
|
||||
let kind = NSTextField(labelWithString: "Application")
|
||||
kind.font = .systemFont(ofSize: 14)
|
||||
kind.textColor = .secondaryLabelColor
|
||||
kind.textColor = SunsetPalette.secondaryText
|
||||
kind.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||
kind.setAccessibilityElement(false)
|
||||
cell.imageView = icon
|
||||
@@ -418,13 +423,12 @@ private final class LauncherPanel: NSPanel {
|
||||
@MainActor
|
||||
private final class LauncherRowView: NSTableRowView {
|
||||
override func drawSelection(in dirtyRect: NSRect) {
|
||||
let selection = NSBezierPath(roundedRect: bounds, xRadius: 10, yRadius: 10)
|
||||
NSColor.unemphasizedSelectedContentBackgroundColor.withAlphaComponent(0.55).setFill()
|
||||
let selection = NSBezierPath(roundedRect: bounds.insetBy(dx: 0.75, dy: 0.75), xRadius: 10, yRadius: 10)
|
||||
SunsetPalette.selectionFill.setFill()
|
||||
selection.fill()
|
||||
if NSWorkspace.shared.accessibilityDisplayShouldIncreaseContrast {
|
||||
NSColor.labelColor.setStroke()
|
||||
selection.lineWidth = 1
|
||||
selection.stroke()
|
||||
}
|
||||
let increasedContrast = NSWorkspace.shared.accessibilityDisplayShouldIncreaseContrast
|
||||
(increasedContrast ? SunsetPalette.accent : SunsetPalette.selectionBorder).setStroke()
|
||||
selection.lineWidth = increasedContrast ? 1.5 : 0.5
|
||||
selection.stroke()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user