|
|
@@ -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
|
])
|