diff --git a/app/(pages)/explore/loading.tsx b/app/(pages)/explore/loading.tsx index 72039bc..521e3d8 100644 --- a/app/(pages)/explore/loading.tsx +++ b/app/(pages)/explore/loading.tsx @@ -4,9 +4,12 @@ import { Skeleton } from "@/components/ui/skeleton"; function TitleRowSkeleton({ withGenreChips }: { withGenreChips?: boolean }) { return (
- +
+ + +
{withGenreChips && ( -
+
{Array.from({ length: 7 }).map((_, i) => ( )} -
+
{Array.from({ length: 6 }).map((_, i) => ( // biome-ignore lint/suspicious/noArrayIndexKey: static skeleton placeholders
@@ -31,8 +34,8 @@ function TitleRowSkeleton({ withGenreChips }: { withGenreChips?: boolean }) { export default function ExploreLoading() { return (
- {/* Hero skeleton */} -
+ {/* Hero skeleton — full viewport width like the actual HeroBanner */} +
diff --git a/app/(pages)/settings/loading.tsx b/app/(pages)/settings/loading.tsx index f557de5..6ce91f2 100644 --- a/app/(pages)/settings/loading.tsx +++ b/app/(pages)/settings/loading.tsx @@ -1,26 +1,48 @@ import { Skeleton } from "@/components/ui/skeleton"; +function SectionSkeleton({ + headingWidth, + children, +}: { + headingWidth: string; + children: React.ReactNode; +}) { + return ( +
+
+ + +
+ {children} +
+ ); +} + export default function SettingsLoading() { return (
{/* Header */}
- - +
+ + +
+
{/* Account card */} -
- - -
+ + + - {/* Media server cards */} -
- - - -
+ {/* Integrations cards */} + +
+ + + +
+
); } diff --git a/components/skeletons.tsx b/components/skeletons.tsx index 68dd86c..efee6be 100644 --- a/components/skeletons.tsx +++ b/components/skeletons.tsx @@ -1,5 +1,14 @@ import { Skeleton } from "@/components/ui/skeleton"; +function SectionHeading({ width = "w-32" }: { width?: string }) { + return ( +
+ + +
+ ); +} + export function TitleCardSkeleton() { return (
@@ -14,7 +23,7 @@ export function TitleCardSkeleton() { export function ContinueWatchingSkeleton() { return ( -
+
@@ -28,12 +37,14 @@ export function ContinueWatchingSkeleton() { } export function StatCardSkeleton() { - return ; + return ( + + ); } export function StatsSectionSkeleton() { return ( -
+
@@ -45,8 +56,8 @@ export function StatsSectionSkeleton() { export function ContinueWatchingSectionSkeleton() { return (
- -
+ +
@@ -59,7 +70,7 @@ export function ContinueWatchingSectionSkeleton() { export function TitleGridSectionSkeleton() { return (
- +
@@ -90,20 +101,32 @@ export function RecommendationsSkeleton() { export function TitleDetailSkeleton() { return (
- -
- + +
+
- - +
+ +
+ + + +
+
-
- - +
+ + +
+ {Array.from({ length: 5 }).map((_, i) => ( + // biome-ignore lint/suspicious/noArrayIndexKey: static skeleton + + ))} +
@@ -116,7 +139,7 @@ export function DashboardSkeleton() {
- +