Skip to content

feat(web): align visual design between docs and marketing apps#124

Merged
yacosta738 merged 4 commits into
mainfrom
website
Mar 3, 2026
Merged

feat(web): align visual design between docs and marketing apps#124
yacosta738 merged 4 commits into
mainfrom
website

Conversation

@yacosta738
Copy link
Copy Markdown
Contributor

@yacosta738 yacosta738 commented Mar 3, 2026

This pull request introduces a major visual and architectural update to the marketing site by centralizing brand tokens, unifying the design language, and enhancing navigation. The most significant changes are the adoption of shared design tokens for consistent branding, a comprehensive overhaul of the CSS to use these tokens, and improvements to navigation and accessibility.

Design System & Branding

  • Replaced Google Fonts imports and hardcoded color/font variables in both custom.css and global.css with imports from a shared brand tokens file (tokens.css), centralizing design decisions and ensuring consistency across the app. [1] [2]
  • Overhauled all major color, font, spacing, and radius variables to use the new --corvus-* CSS custom properties, and updated gradients, backgrounds, and shadows to match the new brand guidelines. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18]
  • Updated the theme color in the marketing layout meta tags to match the new brand palette.

Component & Layout Enhancements

  • Refactored all major UI components (buttons, cards, grids, nav, footer, etc.) to use the new shared tokens, added modern hover/active/focus states, and introduced subtle transitions and glassmorphism effects for a more polished and interactive feel. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
  • Improved typography for headings and body text, ensuring font weights, letter spacing, and font families are consistent and accessible. [1] [2]

Navigation & Accessibility

  • Added prominent links to documentation throughout the marketing site (top nav, hero, download section, and footer), and improved the call-to-action structure for better user guidance. [1] [2] [3]
  • Improved accessibility by adding clear focus styles and transitions, and introduced view transition animations for smoother navigation. [1] [2]

Code & Maintainability

Overall, these changes modernize the marketing site’s appearance, improve brand consistency, and enhance the user experience through better navigation and accessibility.

Summary by CodeRabbit

  • New Features

    • Added Docs links to primary navigation, hero actions, and footer; replaced single "View Source" button with "Read the docs →" and "GitHub" buttons.
    • Introduced a shared design tokens package for consistent branding and local font sourcing.
  • Style & Design

    • Switched site styling to token-driven fonts, colors, gradients, glass visuals, and new view-transition animations.
    • Updated theme color, enhanced gradient/text effects, and responsive layout adjustments for narrow screens.
  • Improvements

    • Improved focus-visible outlines, hover/active states, and button/CTA consistency.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 3, 2026

Warning

Rate limit exceeded

@yacosta738 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 10 minutes and 51 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 339c4c8 and 75103e8.

📒 Files selected for processing (1)
  • clients/web/apps/marketing/src/styles/global.css
📝 Walkthrough

Walkthrough

Adds a new shared CSS tokens package and exposes tokens.css; migrates docs and marketing apps to consume token-driven styles; updates marketing layout meta/canonical logic and homepage navigation/CTA links.

Changes

Cohort / File(s) Summary
Shared Design Tokens
clients/web/packages/shared/tokens.css, clients/web/packages/shared/package.json
Adds tokens.css with font imports and comprehensive root CSS custom properties (typography, colors, gradients, glass, borders, radii, transitions). Exports ./tokens.css and adds dev/format/check/clean scripts to package.json.
Docs app: consume tokens
clients/web/apps/docs/src/styles/custom.css, clients/web/apps/docs/package.json
Replaces direct Google Fonts import with @corvus/shared/tokens.css import and adds @corvus/shared: "workspace:*" dependency in package.json. No other CSS rule changes.
Marketing app: styles & content updates
clients/web/apps/marketing/src/styles/global.css, clients/web/apps/marketing/src/layouts/MarketingLayout.astro, clients/web/apps/marketing/src/pages/index.astro
Global stylesheet migrated to token-driven variables and extensive visual updates (colors, typography, gradients, glass, components, responsive rules, transitions). Layout meta tag color changed and canonical URL/link rendering made conditional. Homepage: added Docs links and adjusted CTA buttons/anchors.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: aligning visual design between docs and marketing apps through shared design tokens.
Description check ✅ Passed The description is comprehensive and well-structured with clear sections covering design system, components, navigation, and code maintainability, but the Tested Information and Breaking Changes sections from the template are not filled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch website

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 and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 3, 2026

✅ Contributor Report

User: @yacosta738
Status: Passed (12/13 metrics passed)

Metric Description Value Threshold Status
PR Merge Rate PRs merged vs closed 88% >= 30%
Repo Quality Repos with ≥100 stars 0 >= 0
Positive Reactions Positive reactions received 9 >= 1
Negative Reactions Negative reactions received 0 <= 5
Account Age GitHub account age 3048 days >= 30 days
Activity Consistency Regular activity over time 108% >= 0%
Issue Engagement Issues with community engagement 0 >= 0
Code Reviews Code reviews given to others 385 >= 0
Merger Diversity Unique maintainers who merged PRs 2 >= 0
Repo History Merge Rate Merge rate in this repo 90% >= 0%
Repo History Min PRs Previous PRs in this repo 93 >= 0
Profile Completeness Profile richness (bio, followers) 90 >= 0
Suspicious Patterns Spam-like activity detection 1 N/A

Contributor Report evaluates based on public GitHub activity. Analysis period: 2025-03-03 to 2026-03-03

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (2)
clients/web/apps/marketing/src/styles/global.css (2)

147-150: Prefer shared tokens over raw brand literals to prevent drift.

At Line 147-Line 150, hardcoded gradient colors bypass the centralized token system. Consider moving this gradient into clients/web/packages/shared/tokens.css and referencing a token here for consistency across apps.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/marketing/src/styles/global.css` around lines 147 - 150,
Replace the hardcoded gradient in global.css with a shared token: add a
descriptive CSS custom property (e.g. --brand-gradient or individual stop tokens
like --brand-100, --brand-400, --brand-700) into
clients/web/packages/shared/tokens.css, export or document that token, and then
update the rules in clients/web/apps/marketing/src/styles/global.css (the block
using linear-gradient, -webkit-background-clip, -webkit-text-fill-color,
background-clip) to reference the new token via var(--brand-gradient) or
composing the gradient from the stop tokens instead of raw hex literals so all
apps consume the centralized brand values.

1-7: Add visual regression coverage for this cross-app design migration.

This file carries broad UI/token changes; please add or update visual regression tests for critical surfaces (hero, nav, cards, CTA/footer) to catch token/theming regressions early.

As per coding guidelines, "Testing: Verify that tests cover critical paths and follow established naming conventions (e.g., backticks for Kotlin tests)."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/marketing/src/styles/global.css` around lines 1 - 7,
global.css introduces broad token/theme changes that need visual regression
coverage; add/update storybook/regression tests to cover critical surfaces
(hero, nav, card, CTA/footer) that consume `@corvus/shared` tokens so token breaks
are caught. Create visual snapshots for components/pages that import global.css
(e.g., Hero component stories, Nav bar, Card variants, Footer/CTA) and add CI
assertions against baseline images; name tests following the repository's
visual-test naming conventions and place them alongside the related component
stories or e2e visual tests to ensure they run in the existing pipeline. Ensure
tests load the same global.css (or import `@corvus/shared/tokens.css`) so
snapshots reflect the migrated tokens and update baselines if the changes are
intentional.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@clients/web/apps/docs/src/styles/custom.css`:
- Line 7: Replace the deep relative import
"../../../../packages/shared/tokens.css" in custom.css with the package-alias
export (e.g., import from "@corvus/shared/tokens.css") so the docs styling
consumes the shared tokens via the package contract rather than repo-relative
path; update the `@import` statement in
clients/web/apps/docs/src/styles/custom.css (the line containing
"../../../../packages/shared/tokens.css") to use the package alias and ensure
the package is exported/added to the build resolver if needed.

In `@clients/web/apps/marketing/src/layouts/MarketingLayout.astro`:
- Around line 16-19: The canonical URL code uses a hardcoded localhost fallback
which can produce bad metadata; remove the "http://localhost:9988" fallback and
instead only build canonical when Astro.site is defined: check Astro.site (and
Astro.url.pathname) and if present compute canonical with new
URL(Astro.url.pathname, Astro.site).toString(), otherwise skip setting
canonical/og:url (or return undefined) so the app relies on the configured site
from astro.config.mjs; update the code that references canonical to handle the
missing value safely.

In `@clients/web/apps/marketing/src/pages/index.astro`:
- Line 158: Update the anchor(s) that currently use href="/install" to use the
in-page anchor href="#install" so they target the install command card on the
current page; specifically find the <a class="btn btn-primary" ...> elements
with href="/install" and change their href value to "#install" to match the
other in-page links and avoid linking to a non-existent /install route.

In `@clients/web/apps/marketing/src/styles/global.css`:
- Line 6: The CSS uses a deep relative import "@import
"../../../../packages/shared/tokens.css";" which is brittle; replace that with
the package-level token export (import tokens from the shared package alias like
"shared/tokens.css" or your org-scoped package alias) so the module boundary is
respected; update the import in global.css to reference the shared package alias
and, if necessary, adjust your build/alias config so the package-level path
resolves.

---

Nitpick comments:
In `@clients/web/apps/marketing/src/styles/global.css`:
- Around line 147-150: Replace the hardcoded gradient in global.css with a
shared token: add a descriptive CSS custom property (e.g. --brand-gradient or
individual stop tokens like --brand-100, --brand-400, --brand-700) into
clients/web/packages/shared/tokens.css, export or document that token, and then
update the rules in clients/web/apps/marketing/src/styles/global.css (the block
using linear-gradient, -webkit-background-clip, -webkit-text-fill-color,
background-clip) to reference the new token via var(--brand-gradient) or
composing the gradient from the stop tokens instead of raw hex literals so all
apps consume the centralized brand values.
- Around line 1-7: global.css introduces broad token/theme changes that need
visual regression coverage; add/update storybook/regression tests to cover
critical surfaces (hero, nav, card, CTA/footer) that consume `@corvus/shared`
tokens so token breaks are caught. Create visual snapshots for components/pages
that import global.css (e.g., Hero component stories, Nav bar, Card variants,
Footer/CTA) and add CI assertions against baseline images; name tests following
the repository's visual-test naming conventions and place them alongside the
related component stories or e2e visual tests to ensure they run in the existing
pipeline. Ensure tests load the same global.css (or import
`@corvus/shared/tokens.css`) so snapshots reflect the migrated tokens and update
baselines if the changes are intentional.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8e02231 and 27bf6a9.

📒 Files selected for processing (5)
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/apps/marketing/src/layouts/MarketingLayout.astro
  • clients/web/apps/marketing/src/pages/index.astro
  • clients/web/apps/marketing/src/styles/global.css
  • clients/web/packages/shared/tokens.css

Comment thread clients/web/apps/docs/src/styles/custom.css Outdated
Comment thread clients/web/apps/marketing/src/layouts/MarketingLayout.astro Outdated
Comment thread clients/web/apps/marketing/src/pages/index.astro Outdated
Comment thread clients/web/apps/marketing/src/styles/global.css Outdated
@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented Mar 3, 2026

Deploying corvus with  Cloudflare Pages  Cloudflare Pages

Latest commit: 75103e8
Status: ✅  Deploy successful!
Preview URL: https://633c6413.corvus-42x.pages.dev
Branch Preview URL: https://website.corvus-42x.pages.dev

View logs

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
clients/web/apps/marketing/src/styles/global.css (1)

417-419: Consider tokenizing the testimonial text color for full consistency.

#d7ebfe is the remaining hardcoded color in an otherwise token-driven file; moving it to a --corvus-* token will keep the theme surface centralized.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/marketing/src/styles/global.css` around lines 417 - 419, The
.testimonial-card p rule uses a hardcoded color `#d7ebfe`; replace this with a CSS
variable (e.g. --corvus-testimonial-text or an existing --corvus-* token) and
update the declaration in :root (or the theme token file) so the color is
centralized; change the selector .testimonial-card p to use color:
var(--corvus-testimonial-text) and add the corresponding
--corvus-testimonial-text: `#d7ebfe`; to the token definitions to keep theming
consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@clients/web/packages/shared/tokens.css`:
- Around line 7-16: Replace the `@import` url(...) line with the quoted syntax
`@import` "https://fonts.googleapis.com/..." so it complies with the stylelint
import-notation rule; keep the rest of the rule-set intact (the font-family
declarations used for --corvus-font-sans and --corvus-font-mono remain unchanged
and the unquoted font names like BlinkMacSystemFont, SFMono-Regular, and
Consolas should stay unquoted).

---

Nitpick comments:
In `@clients/web/apps/marketing/src/styles/global.css`:
- Around line 417-419: The .testimonial-card p rule uses a hardcoded color
`#d7ebfe`; replace this with a CSS variable (e.g. --corvus-testimonial-text or an
existing --corvus-* token) and update the declaration in :root (or the theme
token file) so the color is centralized; change the selector .testimonial-card p
to use color: var(--corvus-testimonial-text) and add the corresponding
--corvus-testimonial-text: `#d7ebfe`; to the token definitions to keep theming
consistent.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 27bf6a9 and 1a26e27.

⛔ Files ignored due to path filters (4)
  • assets/corvus-base.png is excluded by !**/*.png
  • assets/corvus-base.svg is excluded by !**/*.svg
  • assets/corvus-log.svg is excluded by !**/*.svg
  • clients/web/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
📒 Files selected for processing (7)
  • clients/web/apps/docs/package.json
  • clients/web/apps/docs/src/styles/custom.css
  • clients/web/apps/marketing/src/layouts/MarketingLayout.astro
  • clients/web/apps/marketing/src/pages/index.astro
  • clients/web/apps/marketing/src/styles/global.css
  • clients/web/packages/shared/package.json
  • clients/web/packages/shared/tokens.css
🚧 Files skipped from review as they are similar to previous changes (3)
  • clients/web/apps/marketing/src/pages/index.astro
  • clients/web/apps/marketing/src/layouts/MarketingLayout.astro
  • clients/web/apps/docs/src/styles/custom.css

Comment thread clients/web/packages/shared/tokens.css Outdated
…tation

- Replace @import url() with quoted string syntax in tokens.css for stylelint
- Add --corvus-testimonial-text token for centralized theming
- Update .testimonial-card p to use CSS variable instead of hardcoded color
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
clients/web/apps/marketing/src/styles/global.css (1)

169-207: Add a prefers-reduced-motion: reduce override for transition/transform-heavy interactions.

You already gate keyframes and view transitions well; extending that to hover transitions/transforms would complete the a11y story.

♻️ Proposed patch
+@media (prefers-reduced-motion: reduce) {
+  .btn,
+  .copy-btn,
+  nav a,
+  .inline-link,
+  .back-link,
+  .metric-grid article,
+  .feature-card,
+  .testimonial-card,
+  .footer a {
+    transition: none;
+  }
+
+  .btn-primary:hover,
+  .btn-ghost:hover,
+  .metric-grid article:hover,
+  .feature-card:hover,
+  .testimonial-card:hover {
+    transform: none;
+  }
+}

Also applies to: 263-275, 338-415, 472-475, 535-560

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@clients/web/apps/marketing/src/styles/global.css` around lines 169 - 207, The
hover transitions and transforms on .btn, .btn-primary, .btn-ghost (and their
:hover states) lack a prefers-reduced-motion override; add a media query for
(prefers-reduced-motion: reduce) that sets transition: none and transform: none
(and removes heavy box-shadow changes if desired) for .btn, .btn-primary,
.btn-ghost, .btn-primary:hover and .btn-ghost:hover so users who request reduced
motion won’t experience translations or animated transitions; apply the same
override to the other affected blocks noted in the comment.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@clients/web/apps/marketing/src/styles/global.css`:
- Around line 169-207: The hover transitions and transforms on .btn,
.btn-primary, .btn-ghost (and their :hover states) lack a prefers-reduced-motion
override; add a media query for (prefers-reduced-motion: reduce) that sets
transition: none and transform: none (and removes heavy box-shadow changes if
desired) for .btn, .btn-primary, .btn-ghost, .btn-primary:hover and
.btn-ghost:hover so users who request reduced motion won’t experience
translations or animated transitions; apply the same override to the other
affected blocks noted in the comment.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 1a26e27 and 339c4c8.

📒 Files selected for processing (2)
  • clients/web/apps/marketing/src/styles/global.css
  • clients/web/packages/shared/tokens.css

- Disable transitions on .btn, .btn-primary, .btn-ghost
- Disable transforms on hover states for users with reduced motion preferences
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Mar 3, 2026

@yacosta738 yacosta738 merged commit b9b7539 into main Mar 3, 2026
17 checks passed
@yacosta738 yacosta738 deleted the website branch March 3, 2026 10:47
@yacosta738 yacosta738 mentioned this pull request Mar 16, 2026
This was referenced Apr 19, 2026
This was referenced Apr 29, 2026
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