Apply the house UI style #15
Loading…
Reference in a new issue
No description provided.
Delete branch "d/house-style"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Flat elevation everywhere with hairline borders and surface contrast from a real theme (off-white field with white cards in light mode, lighter cards on a dark field with the opacity text ladder in dark, drawer dark in both), Bahnschrift display headings over Segoe UI body, 12px radius, 260px drawer. Every page gets the kicker/title/actions header anatomy with a single filled-primary CTA, async actions run through a self-disabling progress button, status chips move to the fixed semantic colour mapping with humanised labels, and the pa-6/mb-6 spacing scale applies throughout. Also fixes the long-standing PanelClass analyzer warning (renamed to TabPanelsClass).
🤖 Claude AI Code Review
Summary
Applies a consistent flat "house" UI theme across all pages, introducing reusable
PageHeader/ProgressButtoncomponents and semantic status chips. Cosmetic/structural change with two new components.Code Quality ⭐⭐⭐⭐☆
Well-organized theming with good extraction of reusable components and a proper re-entrancy guard in
ProgressButton.Issues
🟡 ProgressButton.razor — no error surfacing / StateHasChanged. If
OnClick.InvokeAsync()throws, the exception propagates out ofRunAsyncand_busyis reset infinally, but the unhandled exception may tear down the Blazor circuit. Consider whether callers already guard their handlers; if not, wrap or document that consumers must handle their own exceptions. Also, since the busy state changes are inside an async flow triggered byOnClick, verify the spinner actually renders — Blazor auto-invokesStateHasChangedaround event handlers, so a single async continuation is fine, but if any handler swallows the render cycle it won't update. Low confidence this is a real bug; verify manually.🟢 Home.razor — two separate
@if (ProjectState.CurrentProject != null)blocks back-to-back where one would do. Not a bug, but the split re-evaluates the same condition; harmless.Solid, mostly mechanical UI refactor. The
TabPanelsClassrename correctly addresses the analyzer warning, and theProgressButtonre-entry guard is correct. Just confirm exceptions thrown by asyncOnClickhandlers are handled somewhere (snackbar/try-catch in the page methods) so a failure doesn't crash the circuit.📊 Tokens: 15652 input + 611 output | 💰 Cost: ~$0.0935
Generated by Claude Opus 4.8 via Gitea Actions