feat: redesign the UI with a brand theme and guided reward flow - #184
Merged
Merged
Conversation
- custom Skeleton theme derived from the logo colors (blue, mint, navy) - self-hosted Inter and JetBrains Mono fonts - header with logo mark, Reward / Advanced / Badge navigation, wallet button and light switch; replaces the floating mode buttons - footer with Peanut Protocol, license and GitHub links - page titles, meta description and Open Graph tags - move data-theme to <html> so the root background uses the theme Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- hero with a stable-width animated heading and a short explanation - Repository / Contributors / Reward / Send stepper with progress - repository card (avatar, description, stars, forks) from a new /api/github/repo endpoint, with inline "not found" / error states; pasted GitHub URLs are normalized to owner/name - top 3 / 5 / 10 / custom presets that re-slice the loaded contributors instead of fetching them again - contributor rows with rank, avatar, activity bar and commit count; placeholder rows while loading and an empty state - reward summary (count x amount = total, network) with an insufficient balance warning; "Max" now splits the balance between the recipients - reward links table with per-link and "copy all" buttons, a warning for contributors with a private GitHub email, and a confirmed "start over" - the form locks once the links are created so they can't be lost by editing the repository - use the snapshot helper from $app/navigation (export is deprecated) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- sticky summary panel: repository card, "same amount / per contributor" mode switch, selected contributors avatar stack, total per token, insufficient balance and missing amount warnings, single action button - filter by name / login / email, sort by commits or name, select all - compact contributor cards with rank, commit count and a clear selected state; placeholder cards while loading and empty states - /dashboard?repository=owner/name prefills the page - use the snapshot helper from $app/navigation (export is deprecated) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- sticky live preview on a light and a dark README background - default settings (label, logo, brand color) so a preview shows at once - visual style picker rendering each badge style - color fields with a swatch and a native color picker - labelled fields grouped in Content / Style / Colors sections - code tabs (Markdown first) only once a repository is entered: fixes the snippet showing src="undefined" - /badges?repository=owner/name prefills the repository - badge URL helpers moved to #lib/badge.ts, shared clipboard helper Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- fix horizontal overflow on narrow screens: grid columns use minmax(0, 1fr) so long emails truncate instead of widening the page - step headers wrap on phones, "Select none" no longer breaks - visible keyboard focus ring on links, buttons, radios and checkboxes - honor prefers-reduced-motion for CSS transitions and animations - the amount field has an accessible name when used without a <label> Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- home: the reward summary shows "Total 10 USDC ≈ 9.26 €" - advanced: each token total shows its fiat value, plus an overall fiat total when several tokens are sent and all of them are priced - the amount field merges the fiat line with the token balance: "≈ 1.85 €" on the left, "Balance: 120 USDC (≈ 111.11 €)" on the right - the €/$ switch matches the other header icon buttons Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
legacytheme. Inter and JetBrains Mono are bundled with the app, and a soft brand-colored glow sits behind the page.<title>, a meta description and Open Graph tags.prefers-reduced-motionsupport, no sideways scrolling on narrow screens.Behavior changes and fixes
@users.noreply.github.comaddress, since the reward email won't reach them.src="undefined"before a repository is entered.data-thememoved from<body>to<html>. Skeleton paints the background on<html>, which never received the theme's colors./api/github/reporeturns repository information for the card./dashboardand/badgesaccept?repository=owner/name, and pasting a full GitHub URL works everywhere.snapshothelper from$app/navigation, sinceexport const snapshotis deprecated.Why
The UI was the stock Skeleton look with bare forms. A first-time visitor couldn't tell what CommitKudos does, the badge page wasn't linked from anywhere, and some flows could lose money-related state. This PR gives the app an identity that matches the logo, and makes the reward flow explain itself step by step.
Design decisions
@lucide/svelte, imported one per file so only the icons used are bundled.Testing
pnpm check,pnpm lintandpnpm buildpass.Checked every page with headless Chrome screenshots: dark and light mode, 1280–1440px wide and 500px (the narrowest headless Chrome renders).
I checked the step 4 layout and the fiat values with injected test data, which is not part of this PR.
Not tested:
A click-through with a test wallet on Sepolia before merging would cover these.
🤖 Generated with Claude Code