Просмотр исходного кода

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
Родитель
Сommit
c74f9a2c9c
1 измененных файлов с 18 добавлено и 19 удалено
  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 114
         mainOverlay.spacing = 0
115 115
         mainOverlay.alignment = .centerX
116 116
         mainOverlay.translatesAutoresizingMaskIntoConstraints = false
117
+        mainOverlay.setContentHuggingPriority(.required, for: .vertical)
117 118
 
118 119
         greetingLabel.font = .systemFont(ofSize: 32, weight: .bold)
119 120
         greetingLabel.textColor = Theme.primaryText
@@ -125,32 +126,30 @@ final class DashboardView: NSView {
125 126
         subtitleLabel.alignment = .center
126 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 141
         headerStack.orientation = .vertical
135
-        headerStack.spacing = 10
142
+        headerStack.spacing = 18
136 143
         headerStack.alignment = .centerX
137 144
 
138
-        configureInsightsCard()
139
-
140 145
         let midSpacer = NSView()
141 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 150
         mainOverlay.addArrangedSubview(headerStack)
151 151
         mainOverlay.addArrangedSubview(midSpacer)
152 152
         mainOverlay.addArrangedSubview(insightsCard)
153
-        mainOverlay.addArrangedSubview(bottomSpacer)
154 153
 
155 154
         sparkleView.translatesAutoresizingMaskIntoConstraints = false
156 155
         sparkleView.symbolConfiguration = NSImage.SymbolConfiguration(pointSize: 22, weight: .regular)
@@ -180,7 +179,6 @@ final class DashboardView: NSView {
180 179
 
181 180
             sidebar.widthAnchor.constraint(equalToConstant: 225),
182 181
             mainHost.widthAnchor.constraint(greaterThanOrEqualToConstant: 720),
183
-            mainHost.heightAnchor.constraint(greaterThanOrEqualToConstant: 620),
184 182
 
185 183
             mainGradient.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
186 184
             mainGradient.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
@@ -190,12 +188,14 @@ final class DashboardView: NSView {
190 188
             mainOverlay.leadingAnchor.constraint(equalTo: mainHost.leadingAnchor),
191 189
             mainOverlay.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor),
192 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 193
             greetingLabel.leadingAnchor.constraint(equalTo: mainOverlay.leadingAnchor, constant: 24),
196 194
             greetingLabel.trailingAnchor.constraint(equalTo: mainOverlay.trailingAnchor, constant: -24),
197 195
             subtitleLabel.leadingAnchor.constraint(equalTo: greetingLabel.leadingAnchor),
198 196
             subtitleLabel.trailingAnchor.constraint(equalTo: greetingLabel.trailingAnchor),
197
+            insightsLinkButton.leadingAnchor.constraint(equalTo: greetingLabel.leadingAnchor),
198
+            insightsLinkButton.trailingAnchor.constraint(equalTo: greetingLabel.trailingAnchor),
199 199
 
200 200
             sparkleView.trailingAnchor.constraint(equalTo: mainHost.trailingAnchor, constant: -28),
201 201
             sparkleView.bottomAnchor.constraint(equalTo: mainHost.bottomAnchor, constant: -28)
@@ -242,7 +242,6 @@ final class DashboardView: NSView {
242 242
         let inner = NSStackView(views: [
243 243
             insightsTitleLabel,
244 244
             insightsBodyLabel,
245
-            insightsLinkButton,
246 245
             togglesLabel,
247 246
             toggleRow
248 247
         ])