diff --git a/mac/Sources/Byre/Dialogs.swift b/mac/Sources/Byre/Dialogs.swift index 376550c..b3b5a44 100644 --- a/mac/Sources/Byre/Dialogs.swift +++ b/mac/Sources/Byre/Dialogs.swift @@ -249,7 +249,7 @@ struct OverlayHost: View { var body: some View { ZStack(alignment: .topLeading) { if let switcher = overlays.switcher { - Color.black.opacity(0.35) + Palette.overlayBackdrop .contentShape(Rectangle()) .onTapGesture { switcher.close() @@ -257,7 +257,7 @@ struct OverlayHost: View { SwitcherPlacement(model: switcher) } if let image = overlays.image { - Color.black.opacity(0.6) + Palette.imageBackdrop .onTapGesture { overlays.image = nil } @@ -283,7 +283,7 @@ struct OverlayHost: View { .padding(4) .background(Palette.raised, in: RoundedRectangle(cornerRadius: 6)) .overlay(RoundedRectangle(cornerRadius: 6).stroke(Palette.border)) - .shadow(color: overlayShadow, radius: 14, y: 8) + .shadow(color: Palette.overlayShadow, radius: 14, y: 8) .environment(\.paneAccent, menu.accent) .onHover { inside in overlays.menuHover = inside @@ -292,14 +292,14 @@ struct OverlayHost: View { .offset(x: menu.anchor.minX, y: menu.anchor.maxY + 4) } if let m = overlays.modal { - Color.black.opacity(0.35) + Palette.overlayBackdrop .contentShape(Rectangle()) ModalPlacement(modal: m, pane: overlays.paneFrame) { value in overlays.answerModal(value) } } if let alert = overlays.alerts.last { - Color.black.opacity(0.35) + Palette.overlayBackdrop .contentShape(Rectangle()) GeometryReader { g in AlertBox(alert: alert, maxText: max(60, g.size.height - 48 - 90)) { @@ -432,7 +432,7 @@ private struct ModalBox: View { .frame(maxWidth: 520) .background(Palette.raised, in: RoundedRectangle(cornerRadius: 10)) .overlay(RoundedRectangle(cornerRadius: 10).stroke(Palette.border)) - .shadow(color: overlayShadow, radius: 14, y: 8) + .shadow(color: Palette.overlayShadow, radius: 14, y: 8) } } @@ -460,7 +460,7 @@ private struct AlertBox: View { .frame(maxWidth: 520) .background(Palette.raised, in: RoundedRectangle(cornerRadius: 10)) .overlay(RoundedRectangle(cornerRadius: 10).stroke(Palette.border)) - .shadow(color: overlayShadow, radius: 14, y: 8) + .shadow(color: Palette.overlayShadow, radius: 14, y: 8) .padding(24) } } diff --git a/mac/Sources/Byre/Format.swift b/mac/Sources/Byre/Format.swift index 3dbaef5..9fea5ea 100644 --- a/mac/Sources/Byre/Format.swift +++ b/mac/Sources/Byre/Format.swift @@ -654,7 +654,3 @@ struct FlowLayout: Layout { return rows } } - -let overlayShadow = Color(nsColor: NSColor(name: nil) { appearance in - appearance.bestMatch(from: [.aqua, .darkAqua]) == .darkAqua ? NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 0.5) : NSColor(srgbRed: 16 / 255, green: 24 / 255, blue: 40 / 255, alpha: 0.18) -}) diff --git a/mac/Sources/Byre/Palette.swift b/mac/Sources/Byre/Palette.swift index 0237d7c..14bbcb0 100644 --- a/mac/Sources/Byre/Palette.swift +++ b/mac/Sources/Byre/Palette.swift @@ -29,6 +29,12 @@ enum Palette { static let task9 = dynamic(0x793c9f, 0xd7a6fc) static let task10 = dynamic(0x942e79, 0xf59cd8) + static let overlayBackdrop = Color.black.opacity(0.35) + static let imageBackdrop = Color.black.opacity(0.6) + static let overlayShadow = Color(nsColor: NSColor(name: nil) { appearance in + appearance.bestMatch(from: [.aqua, .darkAqua]) == .darkAqua ? NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 0.5) : NSColor(srgbRed: 16 / 255, green: 24 / 255, blue: 40 / 255, alpha: 0.18) + }) + private static func rgb(_ hex: UInt32) -> NSColor { NSColor(srgbRed: CGFloat(hex >> 16 & 0xff) / 255, green: CGFloat(hex >> 8 & 0xff) / 255, blue: CGFloat(hex & 0xff) / 255, alpha: 1) } diff --git a/mac/Sources/Byre/Switcher.swift b/mac/Sources/Byre/Switcher.swift index 24dcb23..26b2e7b 100644 --- a/mac/Sources/Byre/Switcher.swift +++ b/mac/Sources/Byre/Switcher.swift @@ -417,7 +417,7 @@ private struct SwitcherBox: View { .padding(10) .background(Palette.raised, in: RoundedRectangle(cornerRadius: 10)) .overlay(RoundedRectangle(cornerRadius: 10).stroke(Palette.border)) - .shadow(color: overlayShadow, radius: 14, y: 8) + .shadow(color: Palette.overlayShadow, radius: 14, y: 8) .onAppear { DispatchQueue.main.async { logFocus("switcher before focus")