fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(ui): finish frontend-audit P0 token migration (closes #103, #104) - #307

Merged
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout
Jul 3, 2026
Merged

fix(ui): finish frontend-audit P0 token migration (closes #103, #104)#307
AndresL230 merged 1 commit into
mainfrom
chore/frontend-audit-p0-closeout

Conversation

@Jose-Gael-Cruz-Lopez

@Jose-Gael-Cruz-LopezJose-Gael-Cruz-Lopez commented Jul 3, 2026

Copy link
Copy Markdown
Member

What & why

Closes out the P0 wave of the Frontend UI audit (#113). Verifying #102/#103/#104 against main (f472300) showed the anti-patterns are essentially eliminated already — but #103 and #104 each had a handful of raw brand-green hex literals still lingering, which their acceptance criteria explicitly call out. This PR clears those last literals so both issues close with every box literally satisfied.

Value-preserving: every swap resolves to the identical hex via an existing token, so there is no visual change — pure token hygiene.

Closes#103
Closes#104

Verification against acceptance criteria (on main)

IssueACState found on mainThis PR
#102 Remove Liquid Glassno backdrop-filter/blur glass; solid surfaces; keep radial washes✅ Done already — 0 backdrop-filter; .glass-* render as opaque --bg-panel (globals.css:601 documents the removal); only blur() uses are the allowed .sapling-mesh-blob / AmbientOrbs atmosphereno code needed — verified done, closed separately
#103 Remove gradient-text headingsno bg-clip-text; #2D8F5C/#155A35 literals gone; headings solid✅ Headings solid, 0 bg-clip-text; #2D8F5C already folded into --brand-forest-bright. ❌ one raw #155A35 left ((public)/page.tsx:1154 beta-submit hover)tokenize #155A35--brand-forest-hover
#104 Consolidate brand greens#1B6C42 single token, 0 raw literals; --state-* statuses; dedup --brand-*/rarity--brand-forest canonical + --state-* defined + no inline graph-status hex + old --brand-primary/success/... fully removed + rarity single block. ❌ 3 raw #1B6C42 left in HowItWorks.tsx:45/52/65swap the 3 → var(--brand-forest) (matches the ~20 var(--brand-forest) sinks already in that file)

Changes

  • globals.css — add --brand-forest-hover: #155A35 (hover-darken of the base forest, for primary-forest button :hover).
  • (public)/page.tsx — beta-submit onMouseEnter sets var(--brand-forest-hover) instead of raw #155A35 (its onMouseLeave already used a token).
  • HowItWorks.tsx — seed-SVG stem / left-leaf / tip-bud static fill/stroke now use var(--brand-forest). These are static attributes (only pathLength/scale animate, not color), so var() resolves fine — same pattern as lines 97/104 in the same file.

Not in scope (noted for follow-up)

Test plan

  • Frontend CI (npm ci + build/lint) is the gate — all changes are string-value swaps mirroring patterns already compiling in the same files, with no type or identifier changes.
  • No visual diff expected (identical rendered colors).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated hover and illustration colors to use consistent theme colors across the site.
    • Added a new hover variant for the forest green brand color, improving visual consistency.
    • Refined the beta newsletter submit button hover state to match the updated theme.

Finish the frontend-audit P0 token migration by replacing the last raw
brand-green hex literals on main with the existing design tokens:
- globals.css: add --brand-forest-hover (#155A35), the hover-darken of the
base forest, for primary-forest button :hover states.
- (public)/page.tsx: the beta-submit button's onMouseEnter now sets
var(--brand-forest-hover) instead of the raw #155A35 — matching its
onMouseLeave, which already used a token. Clears the last #155A35 literal
(#103's AC2).
- HowItWorks.tsx: the seed-SVG stem / left-leaf / tip-bud used raw #1B6C42
in static fill/stroke attributes; switch to var(--brand-forest) to match
the ~20 other var(--brand-forest) sinks already in the same file. Clears
the last #1B6C42 literals (#104's AC1).
Value-preserving: every swap resolves to the identical hex, so there is no
visual change — this is pure token hygiene that lets #103 and #104 close
with every acceptance box literally satisfied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitaiBot commented Jul 3, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 421132a1-978a-485d-af45-28a6d0f67cb2

📥 Commits

Reviewing files that changed from the base of the PR and between f472300 and c914cdf.

📒 Files selected for processing (3)
  • frontend/src/app/(public)/page.tsx
  • frontend/src/app/globals.css
  • frontend/src/components/HowItWorks.tsx

📝 Walkthrough

Walkthrough

A new --brand-forest-hover CSS custom property is added to the global :root design tokens. HowItWorks.tsx SeedSVG styling is updated to use var(--brand-forest) instead of hardcoded hex colors, and the beta submit button's hover state now uses var(--brand-forest-hover).

Changes

Brand forest tokenization

Layer / File(s)Summary
Design token definition
frontend/src/app/globals.css
Adds --brand-forest-hover custom property to :root as a hover-darkened variant of --brand-forest.
Apply tokens to SeedSVG and button hover
frontend/src/components/HowItWorks.tsx, frontend/src/app/(public)/page.tsx
Replaces hardcoded hex colors (#1B6C42) with var(--brand-forest) in SeedSVG stem, leaf, and bud, and updates the beta submit button's onMouseEnter to use var(--brand-forest-hover).

Estimated code review effort: 1 (Trivial) | ~3 minutes

Possibly related issues

Possibly related PRs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check nameStatusExplanation
Title check✅ PassedThe title clearly matches the PR’s main change: tokenizing the remaining brand-green literals for the frontend audit.
Description check✅ PassedThe description is mostly complete and covers summary, changes, related issues, testing intent, and reviewer notes, though it doesn’t follow the template exactly.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check✅ PassedCheck skipped because no linked issues were found for this pull request.
Out of Scope Changes check✅ PassedCheck skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/frontend-audit-p0-closeout

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with Cloudflare Workers Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

StatusNameLatest CommitPreview URLUpdated (UTC)
✅ Deployment successful!
View logs
frontend-stagingc914cdfCommit Preview URL

Branch Preview URL
Jul 03 2026, 01:58 AM

@AndresL230AndresL230 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewed — approving. Verified the two subtle bits: var() in SVG presentation attributes resolves correctly (empirical headless-Chromium check + the same pattern already shipping in SproutSVG and ~6 other components), and the framer-motion color-interpolation hazard doesn't apply since the three swapped elements only animate pathLength/scale. Landing scope is safe (.landing-page/.public-surface never redefine :root tokens), and the post-PR sweep confirms zero raw brand-green hex literals outside globals.css/lib/brand.ts, so #103/#104 close with their ACs literally satisfied.

FYI (out of scope): ~17 rgba(27,108,66,…) alpha-tint literals remain across the landing/onboarding files — rgb-form, so outside the hex ACs; natural fodder for the token-unification work.

🤖 Generated with Claude Code

@AndresL230
AndresL230 merged commit 521991e into mainJul 3, 2026
6 checks passed
@AndresL230
AndresL230 deleted the chore/frontend-audit-p0-closeout branch August 2, 2026 18:29
Sign up for freeto 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.

[P0] Consolidate the brand greens into design tokens [P0] Remove gradient-text headings on the landing page

2 participants

@Jose-Gael-Cruz-Lopez@AndresL230