|
|
@@ -2857,13 +2857,18 @@ private class HoverableView: NSView {
|
|
2857
|
2857
|
}
|
|
2858
|
2858
|
}
|
|
2859
|
2859
|
|
|
2860
|
|
-/// Single sparkle with a soft warm glow and three dots whose opacity animates in a staggered wave (typing-style “thinking” affordance).
|
|
|
2860
|
+/// Single sparkle with a soft brand-blue glow and three dots whose opacity animates in a staggered wave (typing-style “thinking” affordance).
|
|
2861
|
2861
|
private final class ChatThinkingIndicatorView: NSView {
|
|
2862
|
2862
|
private enum AnimationKey {
|
|
2863
|
2863
|
static let dotOpacity = "thinkingDotOpacity"
|
|
2864
|
2864
|
static let sparklePulse = "thinkingSparklePulse"
|
|
2865
|
2865
|
}
|
|
2866
|
2866
|
|
|
|
2867
|
+ /// Matches `DashboardView.Theme.brandBlue` — Indeed-style `#2557a7`.
|
|
|
2868
|
+ private static let accentBlue = NSColor(srgbRed: 37 / 255, green: 87 / 255, blue: 167 / 255, alpha: 1)
|
|
|
2869
|
+ /// Slightly lighter blue for the sparkle glow (reads clearly on light banner/chat surfaces).
|
|
|
2870
|
+ private static let accentBlueGlow = NSColor(srgbRed: 54 / 255, green: 130 / 255, blue: 220 / 255, alpha: 1)
|
|
|
2871
|
+
|
|
2867
|
2872
|
private let sparkleView = NSImageView()
|
|
2868
|
2873
|
private let dotStack = NSStackView()
|
|
2869
|
2874
|
private var dotViews: [NSView] = []
|
|
|
@@ -2880,10 +2885,10 @@ private final class ChatThinkingIndicatorView: NSView {
|
|
2880
|
2885
|
sparkleView.translatesAutoresizingMaskIntoConstraints = false
|
|
2881
|
2886
|
sparkleView.image = NSImage(systemSymbolName: "sparkle", accessibilityDescription: nil)
|
|
2882
|
2887
|
sparkleView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: sparklePoint, weight: .medium)
|
|
2883
|
|
- sparkleView.contentTintColor = NSColor(srgbRed: 232 / 255, green: 104 / 255, blue: 128 / 255, alpha: 1)
|
|
|
2888
|
+ sparkleView.contentTintColor = Self.accentBlue
|
|
2884
|
2889
|
sparkleView.wantsLayer = true
|
|
2885
|
2890
|
sparkleView.layer?.masksToBounds = false
|
|
2886
|
|
- sparkleView.layer?.shadowColor = NSColor(srgbRed: 242 / 255, green: 96 / 255, blue: 132 / 255, alpha: 1).cgColor
|
|
|
2891
|
+ sparkleView.layer?.shadowColor = Self.accentBlueGlow.cgColor
|
|
2887
|
2892
|
sparkleView.layer?.shadowRadius = compact ? 5 : 9
|
|
2888
|
2893
|
sparkleView.layer?.shadowOpacity = 0.55
|
|
2889
|
2894
|
sparkleView.layer?.shadowOffset = .zero
|
|
|
@@ -2898,7 +2903,7 @@ private final class ChatThinkingIndicatorView: NSView {
|
|
2898
|
2903
|
dotStack.alignment = .centerY
|
|
2899
|
2904
|
dotStack.translatesAutoresizingMaskIntoConstraints = false
|
|
2900
|
2905
|
|
|
2901
|
|
- let dotFill = NSColor(srgbRed: 118 / 255, green: 118 / 255, blue: 122 / 255, alpha: 1)
|
|
|
2906
|
+ let dotFill = Self.accentBlue
|
|
2902
|
2907
|
for _ in 0..<3 {
|
|
2903
|
2908
|
let dot = NSView()
|
|
2904
|
2909
|
dot.translatesAutoresizingMaskIntoConstraints = false
|