Skip to content

Rebuild the landing page from the Claude Design handoff - #146

Merged
xuelink merged 10 commits into
mainfrom
feat/landing-redesign
Sep 6, 2026
Merged

Rebuild the landing page from the Claude Design handoff#146
xuelink merged 10 commits into
mainfrom
feat/landing-redesign

Conversation

@xuelink

@xuelink xuelink commented Sep 6, 2026

Copy link
Copy Markdown
Member

Implements LangX Landing.dc.html from the Claude Design handoff, on top of the hero globe from #145.

  • Centred hero, chat card with a correction, eight language chips, four feature rows, plan cards from plans.ts, reviews grid, yellow closing panel.
  • Header and footer follow the design (logo, four links, one yellow button); the theme toggle stays, and the footer keeps a quiet legal row the stores require.
  • All colours are theme tokens; verified in light and dark, desktop and phone widths, and on /blog which shares the header.
  • GSAP ScrollTrigger reveals via a reveal action. no-js guard in app.html so no-script and reduced-motion visitors get everything visible. GSAP ships as its own chunk (27 + 17 KB gzipped), homepage only.
  • Buttons take the design's hard-edge pressed style.

Left in place, no longer used on the homepage: Story, Anywhere, OpenSource, FAQ, LanguageMarquee, NewsletterForm, Socials, the phone screens.

npm run check, npm run lint, npx vite build pass.

🤖 Generated with Claude Code

xuelink and others added 10 commits September 6, 2026 05:09
The homepage now follows "LangX Landing.dc.html": a centred hero (with the
globe kept underneath, by decision), a single chat card with a correction,
eight language chips, four feature rows with tinted icons, three plan cards
rendered from plans.ts, the reviews in a three-column grid, and a yellow
closing panel. The header and footer are the design's — logo, four links,
one yellow button — with the theme switch kept; the footer also keeps a quiet
row of legal links, which the design lacks but the app stores require.

Every colour is a theme token, so the page holds in dark mode. Buttons take
the design's pressed-into-a-hard-edge style; sizes follow the design too.

Sections play in with GSAP ScrollTrigger through a `reveal` action. Elements
are hidden by the stylesheet only after app.html's pre-paint script removes
`no-js`, so a visitor without script or with reduced motion sees the page as
it is. GSAP loads in its own chunk on first use; the prerendered HTML does not
reference it.

Story, Anywhere, OpenSource, FAQ, LanguageMarquee, NewsletterForm, Socials and
the phone screens have no user on the homepage any more and are left in place.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The design's footer had four links, which left the blog, the tools and the
legal pages reachable from nowhere. The five groups from before return under
the design's top row, and the ad-hoc legal line goes, since Legal is one of
them.

Every "Start for free" and "Get the app" button now points at get.langx.io,
which sends a phone to its store and a desktop to the web app. The explicit
App Store, Google Play and "Web app" links stay where they are.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Second Claude Design pass, Duolingo-paced: a sticky translucent header,
a text marquee of languages, three feature rows with the screen that
shows each idea, six more features in a grid of hairlines, plan cards
that list rows instead of ticks, reviews in two columns, the FAQ back on
the homepage, and a closing mark with two stacked buttons.

The hero and its globe stay as they were. The chat card under the hero
is gone. The footer keeps the design's one line and puts the link groups
under it, smaller and quieter, because the blog, the tools and the legal
pages are reachable from nowhere else.

Buttons are now set the way the app's are: small caps, a soft square
corner, and a hard edge they press into. Every committing button goes to
get.langx.io, which sends a phone to its store and a desktop to the web
app. The FAQ said 18 or older; MINIMUM_AGE in packages/shared is 16.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The fine print under the buttons said what the new sentence already
says, so it goes.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The hero globe now turns and tips with the page: a ScrollTrigger scrub
drives a group above the spin, so the auto-spin and the drag keep their
own rotation. The matching row gets a second, smaller globe in pair
mode: two cities only, one arc growing between New York and Madrid, the
globe turned to face them and holding still. The closing section's mark
is the two hooks from Logo.svelte extruded and lit, turning on a
vertical axis, with the flat mark as the fallback where there is no
WebGL. Both new scenes pause off-screen and go still under reduced
motion, as the hero's does.

The header's mark turns too, but in CSS: it is on every page, and a
canvas there would ship Three.js to the blog and the tools.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
It did not read; the two pills and the arrows say it better. The pair
mode goes with it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The card that used to sit under the hero now closes the page: mark,
headline and buttons on the left, the chat on the right, stacked on a
phone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Beside the closing copy it split the ending in two. After the three
feature rows it reads as their sum: the closing goes back to one column.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@xuelink
xuelink merged commit f5ece69 into main Sep 6, 2026
1 check passed
@xuelink
xuelink deleted the feat/landing-redesign branch September 6, 2026 09:50
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.

1 participant