Skip to content

Bespoke fun landing layout + funnier shared theme#2

Merged
btravers merged 1 commit into
mainfrom
feat/fun-landing-theme
Jun 27, 2026
Merged

Bespoke fun landing layout + funnier shared theme#2
btravers merged 1 commit into
mainfrom
feat/fun-landing-theme

Conversation

@btravers

Copy link
Copy Markdown
Contributor

Follow-up to the merged monorepo PR.

Landing — back to the bespoke Claude Design layout (on VitePress)

apps/website/.vitepress/theme/Landing.vue + index.md (layout: false): custom sticky header, floating beetroot + pulsing glow hero, philosophy cards, package cards with the SVG project logos, click-to-copy install commands (toast), live GitHub stars, CTA banner, footer. Replaces the plain VitePress home layout.

Theme — funnier, shared across every site

@btravstack/theme now layers the landing's playfulness onto standard VitePress chrome, so the docs sites match:

  • home-hero beetroot glow + floating logo
  • lifting feature cards (brand-tinted shadow)
  • springy brand buttons, rounder & pinker code

Verified

turbo build of both packages; bespoke landing renders (copy + toast work, no overflow, no console errors); theme confirmed on a throwaway VitePress home page in light and dark (then removed).

The docs sites pick up the funnier theme once @btravstack/theme is published to npm and they migrate onto it (separate follow-up).

🤖 Generated with Claude Code

Replace the plain VitePress home with the bespoke Claude Design landing,
ported as a full-page VitePress layout (Landing.vue, index.md layout:false):
custom header, floating beetroot + glow hero, philosophy cards, package
cards with SVG project logos, click-to-copy install (toast), live stars.

Push the same playfulness into @btravstack/theme so the docs sites match:
home-hero glow + floating logo, lifting feature cards, springy brand
buttons, rounder/pinker code. Verified on VitePress chrome, light + dark.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 27, 2026 14:42
@btravers btravers merged commit b4a8015 into main Jun 27, 2026
1 check passed
@btravers btravers deleted the feat/fun-landing-theme branch June 27, 2026 14:43

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refreshes the main site landing page with a bespoke VitePress layout while also extending @btravstack/theme to apply the same “playful” styling (hero glow/floating logo, lifted feature cards, springy buttons, rounder code) across btravstack docs sites.

Changes:

  • Added shared “playful flourishes” CSS to the published VitePress theme (@btravstack/theme).
  • Replaced the default VitePress home frontmatter-based layout with a custom <Landing /> component (layout: false) for apps/website.
  • Registered the new Landing component via the website’s local VitePress theme entrypoint.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 5 comments.

File Description
packages/theme/src/style.css Adds shared hero glow/floating animation and hover “lift” styling for the standard VitePress home UI.
apps/website/index.md Switches the website home page to layout: false and renders the bespoke <Landing /> component.
apps/website/.vitepress/theme/Landing.vue Introduces the custom landing page implementation (hero, cards, copy-to-clipboard toast, live stars, footer).
apps/website/.vitepress/theme/index.ts Extends the shared theme and registers Landing as a global component.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

/* ── Playful flourishes — shared across every btravstack site ───── */

/* Home hero: a soft beetroot glow + a gently floating logo */
.VPHome { position: relative; overflow-x: clip; }
Comment on lines +57 to +62
function copy(text: string) {
if (navigator.clipboard?.writeText) navigator.clipboard.writeText(text).catch(() => {});
copied.value = text;
clearTimeout(timer);
timer = setTimeout(() => (copied.value = null), 1600);
}
@@ -0,0 +1,341 @@
<script setup lang="ts">
import { onMounted, reactive, ref } from "vue";
Comment on lines +54 to +56
const copied = ref<string | null>(null);
let timer: ReturnType<typeof setTimeout> | undefined;

Comment on lines +68 to +74
onMounted(() => {
for (const p of projects) {
fetch(`https://api.github.com/repos/${p.repoFull}`, { headers: { Accept: "application/vnd.github+json" } })
.then((r) => (r.ok ? r.json() : Promise.reject(r.status)))
.then((d) => { if (typeof d.stargazers_count === "number") stars[p.repoFull] = d.stargazers_count; })
.catch(() => {});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants