From 91ab27e07061f95f1c0877ba2d1253dc7ac70101 Mon Sep 17 00:00:00 2001 From: Benny Joo Date: Thu, 24 Apr 2025 05:48:03 -0300 Subject: [PATCH] feat: add loading component for /apps main page (#20924) --- .../apps/(homepage)/loading.tsx | 5 + .../apps/{ => (homepage)}/page.tsx | 2 +- .../apps/(homepage)/skeleton.tsx | 105 ++++++++++++++++++ .../components/apps/layouts/AppsLayout.tsx | 1 - 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 apps/web/app/(use-page-wrapper)/apps/(homepage)/loading.tsx rename apps/web/app/(use-page-wrapper)/apps/{ => (homepage)}/page.tsx (100%) create mode 100644 apps/web/app/(use-page-wrapper)/apps/(homepage)/skeleton.tsx diff --git a/apps/web/app/(use-page-wrapper)/apps/(homepage)/loading.tsx b/apps/web/app/(use-page-wrapper)/apps/(homepage)/loading.tsx new file mode 100644 index 0000000000..46bb64ba5e --- /dev/null +++ b/apps/web/app/(use-page-wrapper)/apps/(homepage)/loading.tsx @@ -0,0 +1,5 @@ +import { AppHomePageSkeleton } from "app/(use-page-wrapper)/apps/(homepage)/skeleton"; + +export default function Loading() { + return ; +} diff --git a/apps/web/app/(use-page-wrapper)/apps/page.tsx b/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx similarity index 100% rename from apps/web/app/(use-page-wrapper)/apps/page.tsx rename to apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx index f15da14504..336e81deb2 100644 --- a/apps/web/app/(use-page-wrapper)/apps/page.tsx +++ b/apps/web/app/(use-page-wrapper)/apps/(homepage)/page.tsx @@ -22,8 +22,8 @@ const getData = withAppDirSsr(getServerSideProps); const ServerPage = async ({ params, searchParams }: PageProps) => { const context = buildLegacyCtx(await headers(), await cookies(), await params, await searchParams); - const props = await getData(context); + return ; }; diff --git a/apps/web/app/(use-page-wrapper)/apps/(homepage)/skeleton.tsx b/apps/web/app/(use-page-wrapper)/apps/(homepage)/skeleton.tsx new file mode 100644 index 0000000000..66066870fe --- /dev/null +++ b/apps/web/app/(use-page-wrapper)/apps/(homepage)/skeleton.tsx @@ -0,0 +1,105 @@ +"use client"; + +import { useLocale } from "@calcom/lib/hooks/useLocale"; +import { SkeletonText, SkeletonContainer, SkeletonButton } from "@calcom/ui/components/skeleton"; + +import AppsLayout from "@components/apps/layouts/AppsLayout"; + +export function AppHomePageSkeleton() { + const { t } = useLocale(); + + return ( + + +
+ {/* Featured Categories section */} +
+
+ +
+ {/* Left arrow */} + {/* Right arrow */} +
+
+
+ {/* Category cards - 5 items based on screenshot */} + {Array(5) + .fill(0) + .map((_, i) => ( +
+
{/* Icon placeholder */} + {/* Category name */} + {/* Apps count */} +
+ ))} +
+
+ + {/* Most Popular section */} +
+
+ +
+ {/* Left arrow */} + {/* Right arrow */} +
+
+
+ {/* App cards - 3 items */} + {Array(3) + .fill(0) + .map((_, i) => ( +
+
+
{/* App icon */} +
+ {/* App name */} + {/* Developer name */} +
+
+ {/* Description line 1 */} + {/* Description line 2 */} +
+ {/* Details button */} +
+
+ ))} +
+
+ + {/* All apps section */} +
+ +
+ {/* App cards - 6 items */} + {Array(6) + .fill(0) + .map((_, i) => ( +
+
+
{/* App icon */} +
+ {/* App name */} + {/* Developer name */} +
+
+ {/* Description line 1 */} + {/* Description line 2 */} +
+ {/* Details button */} +
+
+ ))} +
+
+
+ + + ); +} diff --git a/apps/web/components/apps/layouts/AppsLayout.tsx b/apps/web/components/apps/layouts/AppsLayout.tsx index d7e95db8ec..bdfd58219a 100644 --- a/apps/web/components/apps/layouts/AppsLayout.tsx +++ b/apps/web/components/apps/layouts/AppsLayout.tsx @@ -19,7 +19,6 @@ export default function AppsLayout({ children, actions, emptyStore, ...rest }: A const router = useRouter(); const isAdmin = session.data?.user.role === "ADMIN"; - if (session.status === "loading") return <>; return (