feat(ui): add shared analytics-card skeleton + empty-state shell (#2200) - #4699
Conversation
…Nbored#2200) New AnalyticsCardShell: a titled analytics card that renders one of three states — a skeleton shimmer while the metric loads, an EmptyState with a hint when it has no data, or its ready content — so the analytics cards share one loading/empty treatment instead of each re-inventing it. Presentational only. Adopted in the analytics route: the cycle-time slot now shows the shared empty card when its data is absent instead of rendering nothing. Closes JSONbored#2200
|
🚨 Contributor flagged. Click here for more info: Superagent Dashboard |
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ Gittensory review result - approve/merge recommendedReview updated: 2026-07-10 20:34:24 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 5 non-blocking
Flagged checks (non-blocking)
Review context
Contributor next steps
Signal definitions
Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Adds a shared analytics-card skeleton + empty-state treatment (Closes #2200).
New
AnalyticsCardShell(apps/gittensory-ui/src/components/site/app-panels/analytics-card-shell.tsx): a titled analytics card that renders one of three states — a skeleton shimmer while the metric loads, an EmptyState with a hint when it has no data, or its ready content — so the new analytics cards share one loading/empty look instead of each re-inventing it. Presentational only; the caller decides the state from its own data.Adoption: the analytics route's cycle-time slot now renders the shared empty card (with a hint) when its data is absent, instead of rendering nothing.
UI Evidence
Rendered with the app's compiled stylesheet;
.darktheme toggled on the document. Desktop (1440) and mobile (390) at 2× DPR.Test
analytics-card-shell.test.tsx— ready (title + description + content), empty (title + hint, no ready content), loading (skeletons, no ready content), and no-description. 4 tests pass.ui:typecheck+ui:buildgreen; new files prettier + eslint clean.site//CNAME/**/lovable/**; noCHANGELOG.md. UI Evidence attached (GitHub-hosted PNG thumbnails); no review-only screenshots committed to the repo.