|
|
@@ -2857,13 +2857,18 @@ private class HoverableView: NSView {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/// Single sparkle with a soft warm glow and three dots whose opacity animates in a staggered wave (typing-style “thinking” affordance).
|
|
|
+/// Single sparkle with a soft brand-blue glow and three dots whose opacity animates in a staggered wave (typing-style “thinking” affordance).
|
|
|
private final class ChatThinkingIndicatorView: NSView {
|
|
|
private enum AnimationKey {
|
|
|
static let dotOpacity = "thinkingDotOpacity"
|
|
|
static let sparklePulse = "thinkingSparklePulse"
|
|
|
}
|
|
|
|
|
|
+ /// Matches `DashboardView.Theme.brandBlue` — Indeed-style `#2557a7`.
|
|
|
+ private static let accentBlue = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
|
|
|
+ /// Slightly lighter blue for the sparkle glow (reads clearly on light banner/chat surfaces).
|
|
|
+ private static let accentBlueGlow = NSColor(srgbRed: 54 / 255, green: 130 / 255, blue: 220 / 255, alpha: 1)
|
|
|
+
|
|
|
private let sparkleView = NSImageView()
|
|
|
private let dotStack = NSStackView()
|
|
|
private var dotViews: [NSView] = []
|
|
|
@@ -2880,10 +2885,10 @@ private final class ChatThinkingIndicatorView: NSView {
|
|
|
sparkleView.translatesAutoresizingMaskIntoConstraints = false
|
|
|
sparkleView.image = NSImage(systemSymbolName: "sparkle", accessibilityDescription: nil)
|
|
|
sparkleView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: sparklePoint, weight: .medium)
|
|
|
- sparkleView.contentTintColor = NSColor(srgbRed: 232 / 255, green: 104 / 255, blue: 128 / 255, alpha: 1)
|
|
|
+ sparkleView.contentTintColor = Self.accentBlue
|
|
|
sparkleView.wantsLayer = true
|
|
|
sparkleView.layer?.masksToBounds = false
|
|
|
- sparkleView.layer?.shadowColor = NSColor(srgbRed: 242 / 255, green: 96 / 255, blue: 132 / 255, alpha: 1).cgColor
|
|
|
+ sparkleView.layer?.shadowColor = Self.accentBlueGlow.cgColor
|
|
|
sparkleView.layer?.shadowRadius = compact ? 5 : 9
|
|
|
sparkleView.layer?.shadowOpacity = 0.55
|
|
|
sparkleView.layer?.shadowOffset = .zero
|
|
|
@@ -2898,7 +2903,7 @@ private final class ChatThinkingIndicatorView: NSView {
|
|
|
dotStack.alignment = .centerY
|
|
|
dotStack.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
|
|
- let dotFill = NSColor(srgbRed: 118 / 255, green: 118 / 255, blue: 122 / 255, alpha: 1)
|
|
|
+ let dotFill = Self.accentBlue
|
|
|
for _ in 0..<3 {
|
|
|
let dot = NSView()
|
|
|
dot.translatesAutoresizingMaskIntoConstraints = false
|