Context
46 files under apps/loopover-ui/src/routes/docs.*.tsx (e.g. docs.quickstart.tsx:44, docs.tuning.tsx:44, docs.troubleshooting.tsx:44, and 43 others) all wrap their MDX/content component in the identical literal:
<Suspense fallback={<p className="text-token-sm text-muted-foreground">Loading…</p>}>
This app already has a LoadingState component built for exactly this purpose — apps/loopover-ui/src/components/site/state-views.tsx, imported as import { LoadingState } from "@/components/site/state-views" (see apps/loopover-ui/src/routes/changelog.tsx:5 for a real usage) — the docs routes never adopted it, so a future loading-state upgrade (spinner, skeleton, a11y role="status") requires editing 46 files instead of one shared component. Note: state-views.tsx is currently app-local, not yet ported into @loopover/ui-kit proper (that port is tracked separately as #6827) — import from its current app-local path, not from @loopover/ui-kit.
Requirements
- Replace the plain-text
<p>Loading…</p> fallback in all 46 docs.*.tsx route files with LoadingState imported from @/components/site/state-views (the same import every other consumer in this app already uses).
- Do not introduce a new loading component or inline JSX pattern — this issue is satisfied only by importing and using the existing
LoadingState primitive, not by writing a new one.
- No change to
Suspense's boundary placement or the content component itself.
Deliverables
Test Coverage Requirements
apps/** UI code falls outside this repo's strict Codecov patch gate (check coverage.include) — a before/after screenshot (or short recording of the loading flash) is still required per this repo's UI-PR convention, plus the regression test above.
Expected Outcome
Every docs route's loading fallback goes through the one shared LoadingState component instead of 46 independent copies of the same literal.
Links & Resources
apps/loopover-ui/src/components/site/state-views.tsx — LoadingState's definition. apps/loopover-ui/src/routes/changelog.tsx:5 for a real import/usage precedent.
Context
46 files under
apps/loopover-ui/src/routes/docs.*.tsx(e.g.docs.quickstart.tsx:44,docs.tuning.tsx:44,docs.troubleshooting.tsx:44, and 43 others) all wrap their MDX/content component in the identical literal:This app already has a
LoadingStatecomponent built for exactly this purpose —apps/loopover-ui/src/components/site/state-views.tsx, imported asimport { LoadingState } from "@/components/site/state-views"(seeapps/loopover-ui/src/routes/changelog.tsx:5for a real usage) — the docs routes never adopted it, so a future loading-state upgrade (spinner, skeleton, a11yrole="status") requires editing 46 files instead of one shared component. Note:state-views.tsxis currently app-local, not yet ported into@loopover/ui-kitproper (that port is tracked separately as #6827) — import from its current app-local path, not from@loopover/ui-kit.Requirements
<p>Loading…</p>fallback in all 46docs.*.tsxroute files withLoadingStateimported from@/components/site/state-views(the same import every other consumer in this app already uses).LoadingStateprimitive, not by writing a new one.Suspense's boundary placement or the content component itself.Deliverables
docs.*.tsxroute files useLoadingStateas theirSuspensefallbackLoadingState's expected markup while suspendedTest Coverage Requirements
apps/**UI code falls outside this repo's strict Codecov patch gate (checkcoverage.include) — a before/after screenshot (or short recording of the loading flash) is still required per this repo's UI-PR convention, plus the regression test above.Expected Outcome
Every docs route's loading fallback goes through the one shared
LoadingStatecomponent instead of 46 independent copies of the same literal.Links & Resources
apps/loopover-ui/src/components/site/state-views.tsx—LoadingState's definition.apps/loopover-ui/src/routes/changelog.tsx:5for a real import/usage precedent.