Evidence type: [evidence]
Time horizon: Before launch
Files: frontend/src/components/ui/Button.tsx:52-55
What's happening: The loading <svg> is written with backslash-escaped quotes inside JSX attribute strings, which JSX doesn't interpret as escapes; the resulting attributes carry trailing backslashes, so fill="none\" and stroke="currentColor\" aren't valid paint values.
Why it matters: Every <Button isLoading> in the app renders a malformed, mis-sized, black-filled spinner instead of the intended ring — highly visible exactly when users are already waiting.
Recommendation: Remove the backslashes from all attribute strings, or replace with the existing ui/LoadingSpinner.
Expected impact: Correct loading affordance on every button in the app.
Effort estimate: S
Finding ID: UX-M5
Source: docs/agents/pre-launch-report.md
Evidence type: [evidence]
Time horizon: Before launch
Files: frontend/src/components/ui/Button.tsx:52-55
What's happening: The loading
<svg>is written with backslash-escaped quotes inside JSX attribute strings, which JSX doesn't interpret as escapes; the resulting attributes carry trailing backslashes, sofill="none\"andstroke="currentColor\"aren't valid paint values.Why it matters: Every
<Button isLoading>in the app renders a malformed, mis-sized, black-filled spinner instead of the intended ring — highly visible exactly when users are already waiting.Recommendation: Remove the backslashes from all attribute strings, or replace with the existing
ui/LoadingSpinner.Expected impact: Correct loading affordance on every button in the app.
Effort estimate: S
Finding ID: UX-M5
Source: docs/agents/pre-launch-report.md