Skip to content

refactor (website): updated some styles/layout and fixed responsive bugs#326

Merged
AviPeltz merged 6 commits intomainfrom
detailed-shrimp-96a303
Dec 12, 2025
Merged

refactor (website): updated some styles/layout and fixed responsive bugs#326
AviPeltz merged 6 commits intomainfrom
detailed-shrimp-96a303

Conversation

@AviPeltz
Copy link
Copy Markdown
Collaborator

@AviPeltz AviPeltz commented Dec 12, 2025

Description

Related Issues

Type of Change

  • Bug fix
  • New feature
  • Documentation
  • [ x] Refactor
  • Other (please describe):

Testing

Screenshots (if applicable)

Additional Notes

Summary by CodeRabbit

  • Style

    • Refreshed website styling across multiple sections with updated color palette, typography, spacing, and responsive text sizing
    • Refined button styles and selector pill visuals; Download button label updated to "Download for macOS"
    • Reworked footer layout and spacing for clearer structure and contrast
  • New Features

    • Added full Privacy Policy and Terms of Service pages with structured content and metadata

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

@vercel
Copy link
Copy Markdown

vercel Bot commented Dec 12, 2025

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

Project Deployment Preview Comments Updated (UTC)
website Ready Ready Preview Comment Dec 12, 2025 1:15am

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Dec 12, 2025

Warning

Rate limit exceeded

@AviPeltz has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 13 minutes and 58 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 fb2f6df and 6030081.

📒 Files selected for processing (3)
  • apps/website/src/app/components/VideoSection/VideoSection.tsx (1 hunks)
  • apps/website/src/app/privacy-policy/page.tsx (1 hunks)
  • apps/website/src/app/terms-of-service/page.tsx (1 hunks)

Walkthrough

Updates across website UI: button label and styles, multiple component typography and color token adjustments, Hero and Footer structural/markup changes, and two new static pages for Privacy Policy and Terms of Service. No runtime logic or public API signature changes except added page exports.

Changes

Cohort / File(s) Summary
Download button
apps/website/src/app/components/DownloadButton/DownloadButton.tsx
Changed button label to "Download for macOS", swapped color tokens from white/black to neutral/neutral-950, and reduced font weight from medium to normal.
Hero & related UI
apps/website/src/app/components/HeroSection/HeroSection.tsx
Converted top-level wrapper to a div, adjusted spacing and responsive heading sizes/colors (to stone/neutral tokens), updated primary action to a dark neutral theme with border and GitHub icon, switched gradient utility names, and tweaked selector pill styles and layering attributes.
Section typography updates
apps/website/src/app/components/SecuritySection/SecuritySection.tsx, apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx, apps/website/src/app/components/VideoSection/VideoSection.tsx
Revised headings to monospaced/stone/neutral tokens, adjusted font weights and responsive sizes; VideoSection replaced a secondary heading with a descriptive paragraph and removed an older paragraph.
Footer rewrite
apps/website/src/app/components/Footer/Footer.tsx
Reworked layout into multi-section footer with dark neutral background, motion wrapper, separated left/right content areas (logo/links and social links), and a bottom copyright row with border; link styles updated to neutral tokens.
New static legal pages
apps/website/src/app/privacy-policy/page.tsx, apps/website/src/app/terms-of-service/page.tsx
Added full Privacy Policy and Terms of Service pages with metadata exports and default React page components rendering structured legal content and using site Header/Footer.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review areas needing extra attention:
    • HeroSection.tsx structural wrapper change and z-index/aria-hidden layering.
    • Footer markup reorganization and motion wrapper integration.
    • New page exports and metadata in privacy-policy/page.tsx and terms-of-service/page.tsx (verify routing/metadata shapes).
    • Consistency of new color token names (gradients and neutral/stones) across components.

Possibly related PRs

Poem

🐰 I hopped through tokens, fonts, and hue,
Tweaked buttons, headers — fresh and new,
Footers stretched and pages born,
Privacy, Terms — no dusk till morn,
A tiny rabbit cheers the view 🥕✨

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The description is incomplete with most sections left empty. The Type of Change is marked as Refactor, but Description, Related Issues, Testing, Screenshots, and Additional Notes lack substantive content. Provide a detailed description of the style/layout changes, link any related issues, describe testing steps, add screenshots showing visual changes, and include relevant context or notes.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main changes: refactoring website styles/layout and fixing responsive bugs, which aligns with the changeset updates to multiple components and new pages.

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 Dec 12, 2025

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ✅ Neon database branch

Thank you for your contribution! 🎉

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: 2

🧹 Nitpick comments (6)
apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx (1)

28-30: Header typography update looks good; consider consistency + semantics

The h2 shift to font-mono + text-stone-100 is aligned with the stated design direction and should be safe. Two small follow-ups:

  • If the goal is to move away from pure white/black, consider whether the logo rows should also move off text-white (Line 64) for consistency.
  • The logo items use cursor-pointer (Line 64) but aren’t interactive elements; either wire them to links/buttons (with focus styles) or drop the pointer to avoid misleading affordance.
apps/website/src/app/components/VideoSection/VideoSection.tsx (1)

36-43: Harden and fix the YouTube embed params.
control=0 looks like a typo for controls=0. Also consider loading="lazy" and a restrictive referrerPolicy / sandbox for better performance + safety.

  <iframe
    className="absolute inset-0 w-full h-full"
-   src="https://www.youtube.com/embed/dkD-U7JXkbI?control=0"
+   src="https://www.youtube.com/embed/dkD-U7JXkbI?controls=0"
    title="Superset Demo"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
    allowFullScreen
+   loading="lazy"
+   referrerPolicy="strict-origin-when-cross-origin"
+   sandbox="allow-scripts allow-same-origin allow-presentation"
  />
apps/website/src/app/components/DownloadButton/DownloadButton.tsx (1)

94-94: More specific button label improves UX.

The updated text "Download for macOS" is clearer and more informative than the previous "Download".

Optional: Consider standardizing terminology. The button uses "macOS" while the dropdown menu item at line 62 uses "Mac". While both are acceptable, using consistent terminology throughout ("Download for macOS" in both places) would slightly improve polish.

apps/website/src/app/components/SecuritySection/SecuritySection.tsx (1)

49-54: Typography updates align with design system migration.

The heading style changes successfully implement the monospace/stone color design language described in the PR summary. The responsive sizing and letter-spacing adjustments look appropriate.

Optional semantic HTML refinement: The second h2 element (line 52) serves as a descriptive subtitle rather than a peer-level heading. Consider using a <p> tag instead to better reflect the content hierarchy.

Color palette consistency: The headings now use stone-100 and neutral-400, while the features grid below (lines 66-86) continues using the white/opacity pattern (text-white/90, text-white/50, etc.). Verify whether this contrast is intentional or if the features section should also adopt the new stone/neutral palette.

Apply this diff if you'd like to use a <p> tag for the subtitle:

-					<h2 className="text-lg sm:text-xl font-light tracking-[-0.03em] text-neutral-400 max-w-[700px]">
+					<p className="text-lg sm:text-xl font-light tracking-[-0.03em] text-neutral-400 max-w-[700px]">
 						Your code never leaves your machine.
-					</h2>
+					</p>
apps/website/src/app/components/HeroSection/HeroSection.tsx (2)

15-15: Consider removing the redundant wrapper div.

The outer <div> wrapper at lines 15 and 120 provides no styling, semantic meaning, or structural purpose. Unless this is intended for future functionality, it can be removed to keep the component structure clean.

Apply this diff to remove the redundant wrapper:

 export function HeroSection() {
 	const [isWaitlistOpen, setIsWaitlistOpen] = useState(false);
 
 	return (
-		<div>
-			<div className="flex mt-14 min-h-[calc(100vh-64px)] items-center overflow-hidden">
+		<div className="flex mt-14 min-h-[calc(100vh-64px)] items-center overflow-hidden">
 			{/* Grid background */}
 			<motion.div
 				...
 			</div>
-		</div>
 		<WaitlistModal
 			isOpen={isWaitlistOpen}
 			onClose={() => setIsWaitlistOpen(false)}
 		/>
-		</div>
+		</div>
 	);
 }

Also applies to: 120-120


82-82: Prefer semantic color tokens over hardcoded values.

The change from text-muted-foreground to text-neutral-400 replaces a semantic token with a hardcoded color value. Semantic tokens provide better theme flexibility and maintainability across the application.

Consider reverting to the semantic token or verifying this change aligns with your design system strategy:

-<p className="text-md sm:text-lg font-light text-neutral-400 max-w-[400px]">
+<p className="text-md sm:text-lg font-light text-muted-foreground max-w-[400px]">
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f0a421c and 02645b5.

📒 Files selected for processing (5)
  • apps/website/src/app/components/DownloadButton/DownloadButton.tsx (1 hunks)
  • apps/website/src/app/components/HeroSection/HeroSection.tsx (6 hunks)
  • apps/website/src/app/components/SecuritySection/SecuritySection.tsx (1 hunks)
  • apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx (1 hunks)
  • apps/website/src/app/components/VideoSection/VideoSection.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Maintain type safety and avoid using any unless absolutely necessary in TypeScript code

Files:

  • apps/website/src/app/components/VideoSection/VideoSection.tsx
  • apps/website/src/app/components/SecuritySection/SecuritySection.tsx
  • apps/website/src/app/components/DownloadButton/DownloadButton.tsx
  • apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx
  • apps/website/src/app/components/HeroSection/HeroSection.tsx
**/components/**/[A-Z]*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Use one folder per component with structure ComponentName/ComponentName.tsx + index.ts barrel export

Files:

  • apps/website/src/app/components/VideoSection/VideoSection.tsx
  • apps/website/src/app/components/SecuritySection/SecuritySection.tsx
  • apps/website/src/app/components/DownloadButton/DownloadButton.tsx
  • apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx
  • apps/website/src/app/components/HeroSection/HeroSection.tsx
🧠 Learnings (1)
📚 Learning: 2025-12-08T23:32:32.232Z
Learnt from: CR
Repo: superset-sh/superset PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-08T23:32:32.232Z
Learning: Applies to src/components/{ui,ai-elements,react-flow}/**/*.tsx : Use kebab-case single files for shadcn/ui components in src/components/ui/, src/components/ai-elements, and src/components/react-flow/

Applied to files:

  • apps/website/src/app/components/SecuritySection/SecuritySection.tsx
  • apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx
  • apps/website/src/app/components/HeroSection/HeroSection.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). (1)
  • GitHub Check: Build
🔇 Additional comments (9)
apps/website/src/app/components/TrustedBySection/TrustedBySection.tsx (1)

20-20: Verify Tailwind spacing token md:py-18 exists

md:py-18 is non-standard in default Tailwind spacing scales; please confirm it’s defined in this repo’s Tailwind config (or adjust to a supported token) to avoid a silent no-op in production.

apps/website/src/app/components/DownloadButton/DownloadButton.tsx (1)

92-92: LGTM! Styling updates align with design system.

The color palette shift to neutral tones (neutral-50/neutral-950) and font-weight adjustment to normal improve the design consistency. The changes maintain proper hover states and transitions.

apps/website/src/app/components/HeroSection/HeroSection.tsx (7)

16-16: LGTM!

The container styling updates improve responsive behavior with proper viewport height calculation, centered alignment, and overflow handling.


19-19: LGTM!

Good accessibility improvement by adding aria-hidden="true" to the decorative grid background, and explicit z-index layering with z-0 ensures proper stacking context.

Also applies to: 23-23


75-75: LGTM!

The responsive spacing adjustments (space-y-2 sm:space-y-6 and gap-2 sm:gap-4) appropriately reduce gaps on mobile devices while maintaining generous spacing on larger screens.

Also applies to: 88-88


94-94: LGTM!

The GitHub button styling update to the neutral theme (bg-neutral-900, border-neutral-800, text-neutral-100) aligns with the broader design system updates while maintaining proper hover states and functionality.


227-227: LGTM!

The selector pill styling updates (removing rounded corners and adjusting inactive state opacity from bg-white/5 to bg-white/3) align with the broader design system changes across the component.

Also applies to: 231-231


147-156: LGTM!

The lazy loading implementation efficiently loads GIFs only when needed, uses a Set for O(1) lookups, and correctly prioritizes the first image. The unoptimized prop is appropriate for animated GIFs since Next.js image optimization doesn't support animation.

Also applies to: 193-194


18-23: LGTM!

The Framer Motion animations are well-implemented with appropriate durations, easing functions, and staggered delays. The use of initial={false} for controlled opacity transitions and declarative animate props creates smooth user experiences.

Also applies to: 68-72, 105-109, 165-171, 176-182, 234-238

Comment thread apps/website/src/app/components/HeroSection/HeroSection.tsx
Comment thread apps/website/src/app/components/VideoSection/VideoSection.tsx
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: 0

🧹 Nitpick comments (1)
apps/website/src/app/privacy-policy/page.tsx (1)

11-312: Consider extracting a shared layout component.

Both the Privacy Policy and Terms of Service pages share identical layout structure (Header, main container, article wrapper, and Footer with the same styling patterns). Consider creating a shared LegalPageLayout component to reduce duplication and improve maintainability.

Example implementation:

// apps/website/src/app/components/LegalPageLayout/LegalPageLayout.tsx
import { Header } from "../Header";
import { Footer } from "../Footer";

interface LegalPageLayoutProps {
  title: string;
  lastUpdated: string;
  children: React.ReactNode;
}

export function LegalPageLayout({ title, lastUpdated, children }: LegalPageLayoutProps) {
  return (
    <>
      <Header />
      <main className="bg-neutral-900 pt-24 pb-16 min-h-screen">
        <article className="max-w-3xl mx-auto px-6 sm:px-8">
          <header className="border-b border-neutral-800 pb-8 mb-10">
            <h1 className="text-3xl sm:text-4xl font-medium text-neutral-100">
              {title}
            </h1>
            <p className="mt-4 text-sm text-neutral-500">
              Last updated: {lastUpdated}
            </p>
          </header>
          <div className="space-y-10 text-neutral-300 leading-relaxed">
            {children}
          </div>
        </article>
      </main>
      <Footer />
    </>
  );
}

Then both pages would simplify to:

export default function PrivacyPolicyPage() {
  return (
    <LegalPageLayout title="Privacy Policy" lastUpdated="December 11, 2025">
      {/* sections here */}
    </LegalPageLayout>
  );
}
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 02645b5 and fb2f6df.

📒 Files selected for processing (3)
  • apps/website/src/app/components/Footer/Footer.tsx (1 hunks)
  • apps/website/src/app/privacy-policy/page.tsx (1 hunks)
  • apps/website/src/app/terms-of-service/page.tsx (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{ts,tsx}

📄 CodeRabbit inference engine (AGENTS.md)

Maintain type safety and avoid using any unless absolutely necessary in TypeScript code

Files:

  • apps/website/src/app/terms-of-service/page.tsx
  • apps/website/src/app/privacy-policy/page.tsx
  • apps/website/src/app/components/Footer/Footer.tsx
**/components/**/[A-Z]*.tsx

📄 CodeRabbit inference engine (AGENTS.md)

Use one folder per component with structure ComponentName/ComponentName.tsx + index.ts barrel export

Files:

  • apps/website/src/app/components/Footer/Footer.tsx
🧬 Code graph analysis (3)
apps/website/src/app/terms-of-service/page.tsx (2)
apps/website/src/app/privacy-policy/page.tsx (1)
  • metadata (5-9)
apps/website/src/app/components/Footer/Footer.tsx (1)
  • Footer (26-75)
apps/website/src/app/privacy-policy/page.tsx (2)
apps/website/src/app/terms-of-service/page.tsx (1)
  • metadata (5-9)
apps/website/src/app/components/Footer/Footer.tsx (1)
  • Footer (26-75)
apps/website/src/app/components/Footer/Footer.tsx (1)
apps/website/src/app/components/SocialLinks/SocialLinks.tsx (1)
  • SocialLinks (7-48)
⏰ 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). (1)
  • GitHub Check: Build
🔇 Additional comments (5)
apps/website/src/app/privacy-policy/page.tsx (2)

5-9: Metadata properly configured.

The page metadata follows Next.js conventions with appropriate title and description for SEO.


11-312: Privacy Policy page implementation is well-structured with proper TypeScript typing.

The page is well-organized with:

  • Semantic HTML structure (article, header, sections)
  • Consistent heading hierarchy and typography
  • Comprehensive privacy policy content across 12 sections
  • Proper use of neutral color tokens
  • Responsive design with mobile-first approach
  • Correct TypeScript type annotations (Metadata properly imported and typed)
  • No any type usage detected

Manual verification needed:

  1. Hardcoded date on line 22: Confirm that "Last updated: December 11, 2025" is the correct/current date.

  2. Email address on line 299: Verify that privacy@supersetlabs.com is a valid, active email address that is monitored.

apps/website/src/app/terms-of-service/page.tsx (2)

5-9: Metadata properly configured.

The page metadata follows Next.js conventions with appropriate title and description for SEO.


11-373: Terms of Service page implementation is well-structured.

The page is well-organized with:

  • Semantic HTML structure (article, header, sections)
  • Consistent heading hierarchy and typography
  • Comprehensive terms of service content across 19 sections
  • Proper legal disclaimers in uppercase (sections 10-11)
  • Proper use of neutral color tokens
  • Responsive design with mobile-first approach
  • Consistent styling with the Privacy Policy page

The hardcoded date "December 11, 2025" on line 22 is accurate and matches the file's last commit timestamp. The email address legal@supersetlabs.com on line 360 should be verified as active and monitored by your team, as email validation cannot be confirmed in this environment.

apps/website/src/app/components/Footer/Footer.tsx (1)

26-75: LGTM! Footer restructure is well-implemented.

The Footer component has been successfully restructured with:

  • Motion-wrapped container for smooth fade-in animation
  • Well-organized multi-section layout (logo/legal links, social links, copyright)
  • Proper responsive design with mobile-first approach
  • Consistent use of neutral color tokens
  • Good accessibility with semantic HTML and proper link text
  • Correct component structure with barrel export at apps/website/src/app/components/Footer/index.ts

@AviPeltz AviPeltz merged commit 5ff08a2 into main Dec 12, 2025
8 checks passed
@Kitenite Kitenite deleted the detailed-shrimp-96a303 branch December 12, 2025 02:06
@coderabbitai coderabbitai Bot mentioned this pull request Dec 21, 2025
5 tasks
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