diff --git a/OSGKeyboard/Views/KeyboardPreviewStub.swift b/OSGKeyboard/Views/KeyboardPreviewStub.swift index 4fe5cb0..c490fce 100644 --- a/OSGKeyboard/Views/KeyboardPreviewStub.swift +++ b/OSGKeyboard/Views/KeyboardPreviewStub.swift @@ -241,7 +241,6 @@ struct KeyboardPreviewStub: View { .fill(discGradient) .frame(width: 96, height: 96) .overlay(Circle().stroke(palette.accentGlow, lineWidth: 1.5)) - .shadow(color: .black.opacity(0.4), radius: 10, y: 6) Group { switch phase { case .idle: @@ -258,7 +257,19 @@ struct KeyboardPreviewStub: View { } .frame(width: 60, height: 32) case .processing: - ProgressView().tint(.white).scaleEffect(1.1) + // Scaled to ~50pt inside a 96pt disc (~52%) so the + // spinner is the dominant visual element of the + // loading state without crowding the disc's edge. + // `palette.textPrimary` (instead of hardcoded + // `.white`) keeps the spinner visible in both light + // and dark themes — the processing-state disc + // gradient is `surfaceElevated → surface`, which is + // light in light mode and would swallow a white + // spinner. + ProgressView() + .progressViewStyle(.circular) + .tint(palette.textPrimary) + .scaleEffect(2.5) } } } diff --git a/OSGKeyboardExt/Views/RecordButton.swift b/OSGKeyboardExt/Views/RecordButton.swift index f8e0993..79b50b3 100644 --- a/OSGKeyboardExt/Views/RecordButton.swift +++ b/OSGKeyboardExt/Views/RecordButton.swift @@ -96,10 +96,17 @@ struct RecordButton: View { .frame(width: 80, height: 44) .transition(.opacity) case .processing: + // Scaled to ~50pt inside a 120pt disc (~42%) — + // same absolute size as the preview stub's + // spinner (2.5x of the default ProgressView), + // just a smaller fraction because the real + // disc is bigger. The user gets the same + // visual weight whether they're looking at + // the in-app preview or the live keyboard. ProgressView() .progressViewStyle(.circular) .tint(palette.textPrimary) - .scaleEffect(1.2) + .scaleEffect(2.5) case .error: Image(systemName: "exclamationmark.triangle.fill") .font(.system(size: 30, weight: .medium)) @@ -109,7 +116,6 @@ struct RecordButton: View { } .frame(width: 120, height: 120) .scaleEffect(isPressed ? 0.94 : 1.0) - .shadow(color: .black.opacity(0.45), radius: 14, y: 8) .animation(Motion.quick, value: isPressed) .animation(Motion.soft, value: phase) }