🌱 refactor: adopt PageShell across ladder/leaderboard/partners + fix shell DOM - #7108
Conversation
…ers + fix shell DOM The PageShell shipped in #7107 had a subtly wrong background layer (absolute -z-10 with no opaque base) that did not match the canonical DOM used by every page in src/app/[locale]/*/page.tsx. Since no page had adopted it yet, this commit fixes the interface before any callers depend on it, and then ports the four pages that use the exact default content wrapper ("relative z-10 pt-7") to it: - src/app/[locale]/ladder/page.tsx - src/app/[locale]/leaderboard/page.tsx - src/app/[locale]/leaderboard/[username]/page.tsx - src/app/[locale]/partners/page.tsx PageShell now renders exactly: <div outer> <Navbar/> <div className="fixed inset-0 z-0"> <div className="absolute inset-0 bg-[#0a0a0a]"/> <StarField/> <GridLines/> </div> <div className="relative z-10 pt-7">{children}</div> <Footer/> </div> New knobs: baseLayerClassName (pass false to omit); contentClassName (pass null to omit wrapper — for pages with custom content wrappers). Vitest: 13/13 pass. tsc --noEmit clean on all four ported pages. Refs #7106 (partial: 3 canonical pages [products, programs, programs/[slug]/ProgramPageClient] with custom content wrappers + coming-soon-*-page.tsx variants remain) Signed-off-by: kubestellar-hive[bot] <223556219+Copilot@users.noreply.github.com>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
✅ Deploy Preview for kubestellar-docs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Hi @hivecommons-hive[bot]. Thanks for your PR. I'm waiting for a kubestellar member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
Thank you for your contribution! Your PR has been merged. Check out what's new:
Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey |
Ports src/app/[locale]/products/page.tsx and src/app/[locale]/programs/page.tsx to the shared PageShell component (introduced in #7107, extended in #7108). Both pages restated the exact canonical scaffold — outer div with bg-[#0a0a0a] text-white overflow-x-hidden min-h-screen, Navbar, fixed background wrapper with opaque base + StarField density=medium showComets={true} cometCount={3} + GridLines 21/18, then Footer — so this is a pure DOM-preserving swap. Both pages own their hero <section className="relative … z-10">, so the port uses <PageShell contentClassName={null}> and lets the page's existing inner content sit directly under the background layer, matching the pattern docstring for products/programs called out in PageShell.tsx. Refs #7106 (14 page.tsx files remain; each subsequent port lands as its own PR — acmm-leaderboard is deferred because it uses non-canonical GridLines 20/20 with strokeColor override and bg-[#0a0a0f], which the issue calls out as drift that a mechanical port would silently normalise) --- Filed by architect agent (ACMM L6 — full mode) Signed-off-by: kubestellar-hive[bot] <223556219+Copilot@users.noreply.github.com> Co-authored-by: kubestellar-hive[bot] <223556219+Copilot@users.noreply.github.com>
…s/[slug] (#7113) Continues the #7106 port sequence started by #7107 (PageShell interface) and continued by #7108 and #7110 (five canonical pages). This slice ports the two remaining scaffold-owning pages in the drift matrix. - `acmm-leaderboard/page.tsx` — the "20/20 medium + strokeColor variant" row of the drift matrix. Ported via `<PageShell>` with a typed `background` prop that carries the four variant values (grid 20/20, strokeColor "rgba(255,255,255,0.03)", stars density "medium", plus the `pointer-events-none` wrapper class and `baseLayerClassName: false` to match the current DOM). The one-off `strokeColor` override that #7106 flagged as pre-#7107 tech debt now lives in the shell props where the drift matrix can grep it, not buried in JSX. - `programs/[slug]/ProgramPageClient.tsx` — the "21/18 + medium + comets 3" canonical row. Ported to `<PageShell>` with the default background; the `<main className="relative min-h-screen">` wrapper stays inside `children` under `contentClassName={null}`, mirroring how PR #7110 handled `programs/page.tsx` and `products/page.tsx`. No visual/behaviour change intended: outer div classes, background wrapper classes, and widget prop values are preserved exactly per the #7106 drift matrix. Verification - `npx tsc --noEmit` — clean - `npx eslint <changed>` — clean - `npx vitest run` — 140 files / 1588 tests pass (PageShell suite: 13/13, acmmLeaderboardComponents: 16/16 unchanged) Refs #7106 (three variant pages remain: marketplace, quick-installation, contribute-handbook, plus the bare coming-soon* pair — each is a distinct variant class per the drift matrix and will land as its own slice) Signed-off-by: kubestellar-hive[bot] <223556219+Copilot@users.noreply.github.com> Co-authored-by: kubestellar-hive[bot] <223556219+Copilot@users.noreply.github.com>
Refactor
Two things in one PR because they must land together:
Fix
PageShellDOM shape. The shell shipped in refactor: introduce PageShell for the shared page scaffold (#7106) [architect] #7107 usedabsolute -z-10with no opaque base — subtly different from thecanonical scaffold every existing page uses:
Since nothing had adopted the shell yet, this PR corrects it before
the first callers land. New knobs:
baseLayerClassName(passfalseto omit),
contentClassName(passnullto omit — for pages withtheir own content wrappers).
Adopt
PageShellin the 4 pages that share the exact defaultscaffold + content wrapper (
relative z-10 pt-7):src/app/[locale]/ladder/page.tsxsrc/app/[locale]/leaderboard/page.tsxsrc/app/[locale]/leaderboard/[username]/page.tsxsrc/app/[locale]/partners/page.tsxNet: −127 / +187 (of which +115 is the shell interface fix +
expanded tests).
Validation
npx tsc --noEmitclean on all four ported pagesnpx vitest run src/__tests__/PageShell.test.tsx→ 13/13 passjsx-a11ywarnings inside the ported pagesare unrelated (untouched interactive elements)
Not in this PR
3 canonical pages have custom content wrappers and get a follow-up:
src/app/[locale]/products/page.tsx—"relative z-10 text-center px-2 sm:px-4 pt-16 sm:pt-20 pb-2"src/app/[locale]/programs/page.tsx—"relative z-10 text-center px-4 pt-20 pb-2"src/app/[locale]/programs/[slug]/ProgramPageClient.tsx— variant outer + custom wrapperPlus the
coming-soon-*-page.tsxfiles listed in #7106.Refs #7106 (partial: 3 variant-wrapper pages + coming-soon-* remain)
Filed by architect agent (ACMM L6 — full mode)
— hive: agent=architect backend=copilot model=claude-opus-4.7 copilot=1.0.88