Przeglądaj źródła

Fix dashboard layout: pull AI Profile Insights card up

Remove bottom spacer that absorbed vertical space, size mainHost to
mainOverlay content with required vertical hugging, drop rigid min
height, and use a fixed gap between the insights link and card.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 3 tygodni temu
rodzic
commit
c74f9a2c9c
1 zmienionych plików z 18 dodań i 19 usunięć
  1. 18 19
      App for Indeed/Views/DashboardView.swift

+ 18 - 19
App for Indeed/Views/DashboardView.swift

@@ -114,6 +114,7 @@ final class DashboardView: NSView {
114
         mainOverlay.spacing = 0
114
         mainOverlay.spacing = 0
115
         mainOverlay.alignment = .centerX
115
         mainOverlay.alignment = .centerX
116
         mainOverlay.translatesAutoresizingMaskIntoConstraints = false
116
         mainOverlay.translatesAutoresizingMaskIntoConstraints = false
117
+        mainOverlay.setContentHuggingPriority(.required, for: .vertical)
117
 
118
 
118
         greetingLabel.font = .systemFont(ofSize: 32, weight: .bold)
119
         greetingLabel.font = .systemFont(ofSize: 32, weight: .bold)
119
         greetingLabel.textColor = Theme.primaryText
120
         greetingLabel.textColor = Theme.primaryText
@@ -125,32 +126,30 @@ final class DashboardView: NSView {
125
         subtitleLabel.alignment = .center
126
         subtitleLabel.alignment = .center
126
         subtitleLabel.maximumNumberOfLines = 2
127
         subtitleLabel.maximumNumberOfLines = 2
127
 
128
 
128
-        let topSpacer = NSView()
129
-        topSpacer.translatesAutoresizingMaskIntoConstraints = false
130
-        topSpacer.setContentHuggingPriority(.defaultLow, for: .vertical)
131
-        topSpacer.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
129
+        let topInset = NSView()
130
+        topInset.translatesAutoresizingMaskIntoConstraints = false
131
+        topInset.heightAnchor.constraint(equalToConstant: 32).isActive = true
132
 
132
 
133
-        let headerStack = NSStackView(views: [greetingLabel, subtitleLabel])
133
+        configureInsightsCard()
134
+
135
+        let titleBlock = NSStackView(views: [greetingLabel, subtitleLabel])
136
+        titleBlock.orientation = .vertical
137
+        titleBlock.spacing = 10
138
+        titleBlock.alignment = .centerX
139
+
140
+        let headerStack = NSStackView(views: [titleBlock, insightsLinkButton])
134
         headerStack.orientation = .vertical
141
         headerStack.orientation = .vertical
135
-        headerStack.spacing = 10
142
+        headerStack.spacing = 18
136
         headerStack.alignment = .centerX
143
         headerStack.alignment = .centerX
137
 
144
 
138
-        configureInsightsCard()
139
-
140
         let midSpacer = NSView()
145
         let midSpacer = NSView()
141
         midSpacer.translatesAutoresizingMaskIntoConstraints = false
146
         midSpacer.translatesAutoresizingMaskIntoConstraints = false
142
-        midSpacer.heightAnchor.constraint(greaterThanOrEqualToConstant: 28).isActive = true
143
-
144
-        let bottomSpacer = NSView()
145
-        bottomSpacer.translatesAutoresizingMaskIntoConstraints = false
146
-        bottomSpacer.setContentHuggingPriority(.defaultLow, for: .vertical)
147
-        bottomSpacer.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
147
+        midSpacer.heightAnchor.constraint(equalToConstant: 20).isActive = true
148
 
148
 
149
-        mainOverlay.addArrangedSubview(topSpacer)
149
+        mainOverlay.addArrangedSubview(topInset)
150
         mainOverlay.addArrangedSubview(headerStack)
150
         mainOverlay.addArrangedSubview(headerStack)
151
         mainOverlay.addArrangedSubview(midSpacer)
151
         mainOverlay.addArrangedSubview(midSpacer)
152
         mainOverlay.addArrangedSubview(insightsCard)
152
         mainOverlay.addArrangedSubview(insightsCard)
153
-        mainOverlay.addArrangedSubview(bottomSpacer)
154
 
153
 
155
         sparkleView.translatesAutoresizingMaskIntoConstraints = false
154
         sparkleView.translatesAutoresizingMaskIntoConstraints = false
156
         sparkleView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 22, weight: .regular)
155
         sparkleView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 22, weight: .regular)
@@ -180,7 +179,6 @@ final class DashboardView: NSView {
180
 
179
 
181
             sidebar.widthAnchor.constraint(equalToConstant: 225),
180
             sidebar.widthAnchor.constraint(equalToConstant: 225),
182
             mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
181
             mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
183
-            mainHost.heightAnchor.constraint(greaterThanOrEqualToConstant: 620),
184
 
182
 
185
             mainGradient.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
183
             mainGradient.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
186
             mainGradient.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
184
             mainGradient.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
@@ -190,12 +188,14 @@ final class DashboardView: NSView {
190
             mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
188
             mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
191
             mainOverlay.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
189
             mainOverlay.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
192
             mainOverlay.topAnchor.constraint(equalTo: mainHost.topAnchor),
190
             mainOverlay.topAnchor.constraint(equalTo: mainHost.topAnchor),
193
-            mainOverlay.bottomAnchor.constraint(equalTo: mainHost.bottomAnchor),
191
+            mainHost.bottomAnchor.constraint(equalTo: mainOverlay.bottomAnchor, constant: 24),
194
 
192
 
195
             greetingLabel.leadingAnchor.constraint(equalTo: mainOverlay.leadingAnchor, constant: 24),
193
             greetingLabel.leadingAnchor.constraint(equalTo: mainOverlay.leadingAnchor, constant: 24),
196
             greetingLabel.trailingAnchor.constraint(equalTo: mainOverlay.trailingAnchor, constant: -24),
194
             greetingLabel.trailingAnchor.constraint(equalTo: mainOverlay.trailingAnchor, constant: -24),
197
             subtitleLabel.leadingAnchor.constraint(equalTo: greetingLabel.leadingAnchor),
195
             subtitleLabel.leadingAnchor.constraint(equalTo: greetingLabel.leadingAnchor),
198
             subtitleLabel.trailingAnchor.constraint(equalTo: greetingLabel.trailingAnchor),
196
             subtitleLabel.trailingAnchor.constraint(equalTo: greetingLabel.trailingAnchor),
197
+            insightsLinkButton.leadingAnchor.constraint(equalTo: greetingLabel.leadingAnchor),
198
+            insightsLinkButton.trailingAnchor.constraint(equalTo: greetingLabel.trailingAnchor),
199
 
199
 
200
             sparkleView.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor, constant: -28),
200
             sparkleView.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor, constant: -28),
201
             sparkleView.bottomAnchor.constraint(equalTo: mainHost.bottomAnchor, constant: -28)
201
             sparkleView.bottomAnchor.constraint(equalTo: mainHost.bottomAnchor, constant: -28)
@@ -242,7 +242,6 @@ final class DashboardView: NSView {
242
         let inner = NSStackView(views: [
242
         let inner = NSStackView(views: [
243
             insightsTitleLabel,
243
             insightsTitleLabel,
244
             insightsBodyLabel,
244
             insightsBodyLabel,
245
-            insightsLinkButton,
246
             togglesLabel,
245
             togglesLabel,
247
             toggleRow
246
             toggleRow
248
         ])
247
         ])