Skip to content

Homepage cosmetics#669

Merged
yamcodes merged 8 commits intomainfrom
homepage-cosmetics
Dec 30, 2025
Merged

Homepage cosmetics#669
yamcodes merged 8 commits intomainfrom
homepage-cosmetics

Conversation

@yamcodes
Copy link
Owner

@yamcodes yamcodes commented Dec 29, 2025

Summary by CodeRabbit

  • Style

    • Removed decorative glow/ambient backgrounds from announcement badge and hero visuals
    • Updated hero gradient overlay colors and opacity for light/dark modes
    • Simplified button outline styling and removed heavy shadowing
    • Switched button hover animations from scale to subtle translate and adjusted quickstart styling
    • Updated button label copy (removed exclamation)
  • Tests

    • Updated button tests to match revised label text

✏️ Tip: You can customize this high-level summary in your review settings.

@changeset-bot
Copy link

changeset-bot bot commented Dec 29, 2025

⚠️ No Changeset found

Latest commit: 7869524

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Dec 29, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
arkenv Ready Ready Preview, Comment Dec 30, 2025 5:54pm

@github-actions github-actions bot added www Improvements or additions to arkenv.js.org tests This issue or PR is about adding, removing or changing tests labels Dec 29, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 29, 2025

Walkthrough

Removed several decorative visual effects and adjusted component styling: hover glows and shadows were removed or simplified, SVG gradient color/opacity tweaked, button hover animations changed to subtle translate, and button text/test assertions updated.

Changes

Cohort / File(s) Summary
Glow / Ambient Elements
apps/www/components/announcement-badge.tsx, apps/www/components/hero-visual.tsx
Removed decorative background glow in AnnouncementBadge; removed ambient glow container and drop-shadow class from HeroVisual floating SVG.
Gradient / Color Tweaks
apps/www/components/hero-gradient-overlay.tsx
Updated SVG className color/opacity from text-blue-50 dark:text-[#011537]text-blue-200/60 dark:text-blue-600/20.
Button Styling & Interaction
apps/www/components/page/quickstart-button.tsx, apps/www/components/ui/button.tsx
Changed QuickstartButton hover/active classes (removed font-semibold, adjusted border opacity, added hover translate/brightness); simplified Button outline variant by removing complex shadow classes.
Star Us Button & Tests
apps/www/components/page/star-us-button.tsx, apps/www/components/page/star-us-button.test.tsx
Replaced hover scale with translate-only on desktop; removed starUsShadowVariants and associated shadow elements; updated label from "Star us on GitHub!" → "Star us on GitHub"; updated tests to match new text.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 I hopped to the site and blinked my eyes,
The glows grew faint beneath softer skies,
Buttons now bob with a gentle slide,
Shadows faded, nowhere to hide —
A cleaner hop, a quieter prize.

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Homepage cosmetics' accurately reflects the nature of the changes, which involve visual/styling adjustments across multiple homepage components including button hover effects, glow elements, shadows, and text updates.
✨ Finishing touches
  • 📝 Generate docstrings

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.

Copy link
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: 0

🧹 Nitpick comments (1)
apps/www/components/hero-visual.tsx (1)

53-58: Consider removing commented code instead of leaving it in.

The ambient glow has been successfully disabled by commenting it out, which achieves the PR's goal. However, commented-out code can clutter the codebase over time.

🔎 Proposed cleanup
-		{/* Ambient Glow Background */}
-		{/* <div
-			className="absolute inset-0 bg-blue-500/10 dark:bg-blue-400/5 rounded-full blur-[80px] transform-gpu transition-transform duration-500"
-			style={{
-				transform: `translate3d(${mousePos.x * 40}px, ${mousePos.y * 40}px, 0)`,
-			}}
-		/> */}
-
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 20c8d62 and 0aa5e57.

📒 Files selected for processing (6)
  • apps/www/components/announcement-badge.tsx
  • apps/www/components/hero-gradient-overlay.tsx
  • apps/www/components/hero-visual.tsx
  • apps/www/components/page/quickstart-button.tsx
  • apps/www/components/page/star-us-button.test.tsx
  • apps/www/components/page/star-us-button.tsx
💤 Files with no reviewable changes (1)
  • apps/www/components/announcement-badge.tsx
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)

**/*.{ts,tsx}: Prefer type over interface for type definitions in TypeScript
Use TypeScript 5.1+ features when appropriate
Leverage const type parameters for better inference in TypeScript
Use JSDoc comments for public APIs
Use tabs for indentation (configured in Biome)
Use double quotes for strings (configured in Biome)
Organize imports automatically (Biome handles this)
Avoid explicit types when TypeScript can infer them (noInferrableTypes error)
Use as const where appropriate for immutable values (useAsConstAssertion error)
Don't reassign function parameters (noParameterAssign error)
Place default parameters last in function signatures (useDefaultParameterLast error)
Always initialize enum values (useEnumInitializers error)
Declare one variable per statement (useSingleVarDeclarator error)
Avoid unnecessary template literals (noUnusedTemplateLiteral error)
Prefer Number.parseInt over global parseInt (useNumberNamespace error)
Use kebab-case for TypeScript filenames (e.g., create-env.ts)
Use camelCase for function names (e.g., createEnv)
Use PascalCase for type names (e.g., ArkEnvError)
Use UPPER_SNAKE_CASE for environment variables and constants
Include examples in JSDoc comments when helpful for public APIs
Document complex type logic with JSDoc comments
Use ArkEnvError for environment variable validation errors
Provide clear, actionable error messages that include the variable name and expected type

**/*.{ts,tsx}: Use createEnv(schema) function (or default import as arkenv) to create validated environment objects in TypeScript
Use built-in validators (host, port, url, email) from ArkEnv when available instead of custom ArkType schemas
Provide default values for optional environment variables using ArkType syntax (e.g., 'boolean = false')
Use ArkEnvError for environment variable errors instead of generic Error types
For environment schema definition, use ArkType string literal syntax for enumerated values (e.g., "'deve...

Files:

  • apps/www/components/hero-visual.tsx
  • apps/www/components/page/star-us-button.test.tsx
  • apps/www/components/hero-gradient-overlay.tsx
  • apps/www/components/page/star-us-button.tsx
  • apps/www/components/page/quickstart-button.tsx
**/*.tsx

📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)

Use self-closing JSX elements (useSelfClosingElements error)

Files:

  • apps/www/components/hero-visual.tsx
  • apps/www/components/page/star-us-button.test.tsx
  • apps/www/components/hero-gradient-overlay.tsx
  • apps/www/components/page/star-us-button.tsx
  • apps/www/components/page/quickstart-button.tsx
apps/www/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (apps/www/.cursor/rules/posthog-integration.mdc)

apps/www/**/*.{ts,tsx,js,jsx}: If using TypeScript, use an enum to store feature flag names. If using JavaScript, store feature flag names as strings to an object declared as a constant to simulate an enum. Use UPPERCASE_WITH_UNDERSCORE naming convention for enum/const object members.
If a custom property for a person or event is referenced in two or more files or two or more callsites in the same file, use an enum or const object with UPPERCASE_WITH_UNDERSCORE naming convention, similar to feature flags.

Files:

  • apps/www/components/hero-visual.tsx
  • apps/www/components/page/star-us-button.test.tsx
  • apps/www/components/hero-gradient-overlay.tsx
  • apps/www/components/page/star-us-button.tsx
  • apps/www/components/page/quickstart-button.tsx
**/*.test.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)

Co-locate tests with components: Component.tsx next to Component.test.tsx

**/*.test.{ts,tsx}: Use Vitest for unit and integration tests
Test individual functions, components, and hooks in isolation with mocked dependencies in unit tests
Unit tests should focus on individual function logic and edge cases, component rendering and props, error handling and validation, and type checking
Unit tests should execute in less than 100ms per test
Mock external dependencies (clipboard, network, etc.) in unit tests
Co-locate unit test files with source files using naming convention: source file → test file (e.g., create-env.ts → create-env.test.ts)
Test component behavior, not aesthetics, and focus on what users can do and what the component guarantees through its API
Test component public API (props, events, and component contract), user behavior (clicks, typing, focus, keyboard, ARIA), state transitions, accessibility, and side effects in component tests
Do not test pure styling or CSS classes, library internals (Radix/shadcn), implementation details (hooks, setState, private variables), or visual variants in component tests
Use Testing Library with user-event for real user simulation in component tests
Query by role, name, label, and text (accessibility first) in component tests
Use beforeEach/afterEach for cleanup, not beforeAll/afterAll when possible
Keep tests fast, deterministic, and parallelizable
Mock at component boundaries (network, time, context)

Create unit tests with .test.ts or .test.tsx suffix located alongside source files, testing individual functions and components in isolation with mocked dependencies

Files:

  • apps/www/components/page/star-us-button.test.tsx
**/*.{test,integration.test}.{ts,tsx}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{test,integration.test}.{ts,tsx}: Use Vitest's describe/it structure for all test files
Test both success and failure cases in unit and integration tests
Mock process.env in unit tests to test different environment variable scenarios

Files:

  • apps/www/components/page/star-us-button.test.tsx
🧠 Learnings (7)
📚 Learning: 2025-12-12T13:20:01.954Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to **/*.test.{ts,tsx} : Test component public API (props, events, and component contract), user behavior (clicks, typing, focus, keyboard, ARIA), state transitions, accessibility, and side effects in component tests

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-12T13:20:01.954Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to **/*.test.{ts,tsx} : Test component behavior, not aesthetics, and focus on what users can do and what the component guarantees through its API

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-12T13:20:01.954Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to **/*.test.{ts,tsx} : Do not test pure styling or CSS classes, library internals (Radix/shadcn), implementation details (hooks, setState, private variables), or visual variants in component tests

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-12T13:20:01.954Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to tooling/playwright-www/**/*.{ts,tsx} : End-to-end tests should focus on user-facing behavior, not implementation details

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-12T13:20:01.954Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to **/*.test.{ts,tsx} : Query by role, name, label, and text (accessibility first) in component tests

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-23T07:09:57.130Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-23T07:09:57.130Z
Learning: Applies to **/*.{test,integration.test}.{ts,tsx} : Test both success and failure cases in unit and integration tests

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
📚 Learning: 2025-12-23T07:09:57.130Z
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-23T07:09:57.130Z
Learning: Applies to **/*.test.{ts,tsx} : Create unit tests with `.test.ts` or `.test.tsx` suffix located alongside source files, testing individual functions and components in isolation with mocked dependencies

Applied to files:

  • apps/www/components/page/star-us-button.test.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: test-e2e (a11y)
  • GitHub Check: test-e2e (e2e)
  • GitHub Check: test-build (lts/*)
  • GitHub Check: test-build (latest)
  • GitHub Check: test-typesafety
🔇 Additional comments (6)
apps/www/components/hero-gradient-overlay.tsx (1)

9-9: LGTM! Color and opacity adjustments look good.

The updated gradient overlay colors with opacity modifiers follow Tailwind v4 syntax correctly and align with the PR's visual refinement objectives.

apps/www/components/page/star-us-button.test.tsx (1)

12-12: LGTM! Test assertions correctly updated to match implementation.

The updated text expectations align with the button label changes in the implementation file. Tests follow coding guidelines by querying text content (accessibility-first approach) and testing component public API.

Also applies to: 38-38

apps/www/components/hero-visual.tsx (1)

83-83: LGTM! Drop shadow removal aligns with visual simplification goals.

Removing the drop-shadow class from the SVG while keeping the animation is consistent with the PR's objective to streamline decorative effects.

apps/www/components/page/quickstart-button.tsx (1)

10-10: LGTM! Styling updates are well-executed and consistent.

The button styling refinements follow Tailwind v4 syntax correctly and maintain consistency with other components in this PR (e.g., the hover effect change from scale to translate matches the approach in star-us-button.tsx).

apps/www/components/page/star-us-button.tsx (2)

36-36: LGTM! Hover effect refinement is consistent across the PR.

The change from scale-based to translate-based hover effect maintains consistency with quickstart-button.tsx and follows a unified approach to hover animations across the homepage.


124-124: LGTM! Button text updated consistently across both mobile and desktop versions.

The text change (removing the exclamation mark) has been applied consistently to both button variants, and the corresponding tests have been properly updated to match.

Also applies to: 184-184

@yamcodes
Copy link
Owner Author

There’s still some glow around the GitHub button on mobile. Ideally we should also fix the SolidStart icon to be the SolidStart icon and not the Solid icon but this can be a separate PR.

Copy link
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: 0

🧹 Nitpick comments (1)
apps/www/components/page/quickstart-button.tsx (1)

10-10: LGTM! Hover effects enhanced as intended.

The updated hover effects (hover:-translate-y-0.5 and hover:brightness-110) and increased border opacity align well with the PR's cosmetic improvements.

Optional: Extract className for better maintainability

Consider extracting the lengthy className string to a constant for improved readability:

+const quickstartButtonStyles = 
+	"w-full sm:w-auto text-md text-white relative overflow-hidden rounded-xl " +
+	"transition-all duration-200 ease-in-out bg-linear-to-br from-blue-600 via-blue-700 to-indigo-800 " +
+	"hover:-translate-y-0.5 hover:brightness-110 active:scale-[0.98] " +
+	"border-t border-white/60 shadow-[0_4px_12px_rgba(0,0,0,0.1)]";
+
 export function QuickstartButton() {
 	return (
 		<Button
 			asChild
 			size="lg"
-			className="w-full sm:w-auto text-md text-white relative overflow-hidden rounded-xl transition-all duration-200 ease-in-out bg-linear-to-br from-blue-600 via-blue-700 to-indigo-800 hover:-translate-y-0.5 hover:brightness-110 active:scale-[0.98] border-t border-white/60 shadow-[0_4px_12px_rgba(0,0,0,0.1)]"
+			className={quickstartButtonStyles}
 		>
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0aa5e57 and 7869524.

📒 Files selected for processing (3)
  • apps/www/components/hero-visual.tsx
  • apps/www/components/page/quickstart-button.tsx
  • apps/www/components/ui/button.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/www/components/hero-visual.tsx
🧰 Additional context used
📓 Path-based instructions (3)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)

**/*.{ts,tsx}: Prefer type over interface for type definitions in TypeScript
Use TypeScript 5.1+ features when appropriate
Leverage const type parameters for better inference in TypeScript
Use JSDoc comments for public APIs
Use tabs for indentation (configured in Biome)
Use double quotes for strings (configured in Biome)
Organize imports automatically (Biome handles this)
Avoid explicit types when TypeScript can infer them (noInferrableTypes error)
Use as const where appropriate for immutable values (useAsConstAssertion error)
Don't reassign function parameters (noParameterAssign error)
Place default parameters last in function signatures (useDefaultParameterLast error)
Always initialize enum values (useEnumInitializers error)
Declare one variable per statement (useSingleVarDeclarator error)
Avoid unnecessary template literals (noUnusedTemplateLiteral error)
Prefer Number.parseInt over global parseInt (useNumberNamespace error)
Use kebab-case for TypeScript filenames (e.g., create-env.ts)
Use camelCase for function names (e.g., createEnv)
Use PascalCase for type names (e.g., ArkEnvError)
Use UPPER_SNAKE_CASE for environment variables and constants
Include examples in JSDoc comments when helpful for public APIs
Document complex type logic with JSDoc comments
Use ArkEnvError for environment variable validation errors
Provide clear, actionable error messages that include the variable name and expected type

**/*.{ts,tsx}: Use createEnv(schema) function (or default import as arkenv) to create validated environment objects in TypeScript
Use built-in validators (host, port, url, email) from ArkEnv when available instead of custom ArkType schemas
Provide default values for optional environment variables using ArkType syntax (e.g., 'boolean = false')
Use ArkEnvError for environment variable errors instead of generic Error types
For environment schema definition, use ArkType string literal syntax for enumerated values (e.g., "'deve...

Files:

  • apps/www/components/ui/button.tsx
  • apps/www/components/page/quickstart-button.tsx
**/*.tsx

📄 CodeRabbit inference engine (.cursor/rules/coding-guidelines.mdc)

Use self-closing JSX elements (useSelfClosingElements error)

Files:

  • apps/www/components/ui/button.tsx
  • apps/www/components/page/quickstart-button.tsx
apps/www/**/*.{ts,tsx,js,jsx}

📄 CodeRabbit inference engine (apps/www/.cursor/rules/posthog-integration.mdc)

apps/www/**/*.{ts,tsx,js,jsx}: If using TypeScript, use an enum to store feature flag names. If using JavaScript, store feature flag names as strings to an object declared as a constant to simulate an enum. Use UPPERCASE_WITH_UNDERSCORE naming convention for enum/const object members.
If a custom property for a person or event is referenced in two or more files or two or more callsites in the same file, use an enum or const object with UPPERCASE_WITH_UNDERSCORE naming convention, similar to feature flags.

Files:

  • apps/www/components/ui/button.tsx
  • apps/www/components/page/quickstart-button.tsx
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: yamcodes/arkenv PR: 0
File: .cursor/rules/test-patterns.mdc:0-0
Timestamp: 2025-12-12T13:20:01.954Z
Learning: Applies to **/*.test.{ts,tsx} : Test component behavior, not aesthetics, and focus on what users can do and what the component guarantees through its API
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
  • GitHub Check: test-e2e (a11y)
  • GitHub Check: test-e2e (e2e)
  • GitHub Check: test-build (lts/*)
  • GitHub Check: test-typesafety
  • GitHub Check: test-build (latest)
🔇 Additional comments (1)
apps/www/components/ui/button.tsx (1)

17-17: LGTM! Outline variant simplified effectively.

The removal of custom shadow styling in favor of the standard shadow-sm utility simplifies the outline variant while maintaining its visual identity. This change aligns perfectly with the PR's objective to clean up button styling.

@yamcodes yamcodes merged commit e88d136 into main Dec 30, 2025
15 checks passed
@yamcodes yamcodes deleted the homepage-cosmetics branch December 30, 2025 21:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tests This issue or PR is about adding, removing or changing tests www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant