* refactor(PBI-77): align TaskDialogSkeleton with entity-dialog-layout (T-899) Use entityDialogContentClasses/HeaderClasses/BodyClasses/FooterClasses from components/shared/entity-dialog-layout.ts instead of hand-copied class strings. Header, body, and footer skeletons now mimic the actual TaskDialog form fields (code, title, description, plan, priority, status, delete + cancel/save buttons). Fixes mobile layout-shift: the shared content-classes include max-sm: fullscreen modifiers that the previous hand-rolled subset missed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * refactor(PBI-77): extract BacklogPageSkeleton from 3 identical loadings (T-900) The loading.tsx files for products/[id], sprint/[sprintId], and sprint/[sprintId]/planning were 100% identical hand-rolled animate-pulse markup. Extract the shape into components/loading/backlog-page-skeleton.tsx using the shadcn <Skeleton> component, and re-export it from the three loading files. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * refactor(PBI-77): dashboard + settings loading on shadcn Skeleton (T-901) Replace hand-rolled animate-pulse + bg-border divs with the shadcn <Skeleton> component for consistent bg-muted color and pulse timing across all five loading.tsx files. No layout-shift: heights, widths, and rounded radii are preserved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
12 lines
318 B
TypeScript
12 lines
318 B
TypeScript
import { Skeleton } from '@/components/ui/skeleton'
|
|
|
|
export default function Loading() {
|
|
return (
|
|
<div className="p-6 max-w-2xl mx-auto w-full space-y-4">
|
|
<Skeleton className="h-6 w-28" />
|
|
{[1, 2, 3, 4].map((i) => (
|
|
<Skeleton key={i} className="h-28 rounded-xl" />
|
|
))}
|
|
</div>
|
|
)
|
|
}
|