style: align uninstall and translation visuals

This commit is contained in:
Valdemar Lorenzen
2026-10-15 13:22:17 +02:00
parent 6a7a0eb0ab
commit c0e53a1d53
5 changed files with 14 additions and 15 deletions
+1 -1
View File
@@ -149,7 +149,7 @@ The red **Uninstall application** action morphs the existing launcher into a fil
The application's name and keyboard guidance remain visible throughout file review: Return toggles inclusion; Command-Return opens confirmation. Filtering preserves discovery progress or errors until discovery succeeds, then shows selection counts and no-match feedback without changing checked files.
Keyboard file toggles update the existing checkbox without reloading or fading the list, preserving both the highlighted row and scroll position. The launcher's footer Open and Actions labels use 12-point medium text. All custom shortcut hints—in the launcher footer, numbered application rows, uninstall footer, and actions selector—use `ShortcutIndicator` from `Sources/Conjure/ShortcutIndicator.swift` (for example, `ShortcutIndicator("⌘", "K")`). It owns 12-point medium key text, square 18×18-point containers, visible-glyph centering, border styling, and 2-point gaps between adjacent keys; callers position or hide the whole indicator, and numbered rows update their single key without rebuilding the cell. Native menus and shortcut-recording controls retain their platform styling.
Keyboard file toggles update the existing checkbox without reloading or fading the list, preserving both the highlighted row and scroll position. Launcher, Translate, and uninstall footer buttons use 12-point medium text, with plain brown-filled action pills inset 8 points from the right and bottom edges. Uninstall retains destructive red text and Command-Return confirmation. All custom shortcut hints—in the launcher footer, numbered application rows, uninstall footer, and actions selector—use `ShortcutIndicator` from `Sources/Conjure/ShortcutIndicator.swift` (for example, `ShortcutIndicator("⌘", "K")`). It owns 12-point medium key text, square 18×18-point containers, visible-glyph centering, border styling, and 2-point gaps between adjacent keys; callers position or hide the whole indicator, and numbered rows update their single key without rebuilding the cell. Native menus and shortcut-recording controls retain their platform styling.
Numbered row overlays use 13-point numbers in 22×22-point boxes with a lighter opaque warm-brown backing. Their label fade begins 36 points before the badge, twice the original lead-in; other shortcut hints retain their 12-point text and 18×18-point boxes.
@@ -131,7 +131,7 @@ final class SettingsWindowController: NSWindowController, NSWindowDelegate {
for label in [instructions, statusLabel, spotlight, loginStatus] {
label.textColor = SunsetPalette.secondaryText
}
for button in [recorder, commandSpaceButton, clearButton, keyboardSettings, loginToggle, loginSettings] {
for button in [recorder, commandSpaceButton, clearButton, keyboardSettings, loginToggle, loginSettings, recoveryButton] {
button.contentTintColor = SunsetPalette.accent
}
let loginHeading = NSTextField(labelWithString: "Startup")
@@ -25,6 +25,7 @@ final class TranslationController: NSViewController, NSTextFieldDelegate, NSText
view = NSView()
let title = NSTextField(labelWithString: "Conjure Translate · English → Japanese")
title.font = .systemFont(ofSize: 13, weight: .semibold)
title.textColor = SunsetPalette.text
let back = NSButton(title: "", target: self, action: #selector(goBack))
back.image = IconStyle.symbol("chevron.left", for: title.font!)
back.imageScaling = .scaleProportionallyDown
@@ -101,7 +101,7 @@ final class UninstallReviewController: NSViewController, NSSearchFieldDelegate,
remove.action = #selector(confirmUninstall)
remove.contentTintColor = .systemRed
remove.isBordered = false
remove.font = .systemFont(ofSize: 14, weight: .medium)
remove.font = .systemFont(ofSize: 12, weight: .medium)
remove.keyEquivalent = "\r"
remove.keyEquivalentModifierMask = .command
remove.toolTip = "Confirm uninstall (Command-Return). Return toggles the highlighted file."
@@ -124,14 +124,12 @@ final class UninstallReviewController: NSViewController, NSSearchFieldDelegate,
scroll.autohidesScrollers = true
scroll.drawsBackground = false
scroll.contentView.drawsBackground = false
let pill = NSVisualEffectView()
pill.material = .popover
pill.blendingMode = .withinWindow
pill.state = .active
roundMaterialCorners(pill, radius: 18)
let pill = NSView()
pill.wantsLayer = true
pill.layer?.cornerRadius = 18
pill.layer?.borderWidth = 0.5
pill.layer?.borderColor = SunsetPalette.accent.withAlphaComponent(0.35).cgColor
pill.layer?.backgroundColor = SunsetPalette.accent.withAlphaComponent(0.08).cgColor
pill.layer?.backgroundColor = SunsetPalette.background.withAlphaComponent(0.25).cgColor
let shortcut = ShortcutIndicator("⌘", "↵")
for child in [remove, shortcut] {
child.translatesAutoresizingMaskIntoConstraints = false
@@ -174,8 +172,8 @@ final class UninstallReviewController: NSViewController, NSSearchFieldDelegate,
scroll.trailingAnchor.constraint(equalTo: content.trailingAnchor, constant: -12),
scroll.bottomAnchor.constraint(equalTo: footer.topAnchor, constant: -16),
footer.leadingAnchor.constraint(equalTo: search.leadingAnchor),
footer.trailingAnchor.constraint(equalTo: search.trailingAnchor),
footer.bottomAnchor.constraint(equalTo: content.bottomAnchor, constant: -16),
footer.trailingAnchor.constraint(equalTo: content.trailingAnchor, constant: -8),
footer.bottomAnchor.constraint(equalTo: content.bottomAnchor, constant: -8),
footer.heightAnchor.constraint(equalToConstant: 36)
])
}
+4 -4
View File
@@ -13,12 +13,12 @@
### Visual consistency
- [ ] Match uninstall footer text to the launcher/Translate baseline: 12pt medium rather than 14pt; retain destructive red.
- [ ] Align the uninstall footer with launcher/Translate: 8pt right/bottom insets rather than 24pt right and 16pt bottom.
- [ ] Use the launcher/Translate footer's plain brown-filled view for uninstall instead of adding a popover material and orange tint.
- [x] Match uninstall footer text to the launcher/Translate baseline: 12pt medium rather than 14pt; retain destructive red.
- [x] Align the uninstall footer with launcher/Translate: 8pt right/bottom insets rather than 24pt right and 16pt bottom.
- [x] Use the launcher/Translate footer's plain brown-filled view for uninstall instead of adding a popover material and orange tint.
- [x] Apply Actions' SF Symbol optical-inset handling to launcher icons. Native layout measured a 22×29pt command icon view versus 22×22pt action icon views.
- [x] Render application and command favorite markers consistently: use the configured star symbol rather than a literal ★ for commands.
- [ ] Apply the existing Sunset palette to Translate's custom heading and the Settings recovery button, matching equivalent headings/actions.
- [x] Apply the existing Sunset palette to Translate's custom heading and the Settings recovery button, matching equivalent headings/actions.
### Documentation and visual verification