Skip to content

fix: emcn component library design engineering polish#3672

Open
adithyaakrishna wants to merge 6 commits intosimstudioai:stagingfrom
adithyaakrishna:feat/emcn
Open

fix: emcn component library design engineering polish#3672
adithyaakrishna wants to merge 6 commits intosimstudioai:stagingfrom
adithyaakrishna:feat/emcn

Conversation

@adithyaakrishna
Copy link

Summary

Comprehensive polish of the emcn compos library along with addressing a11y issues and design token consistency

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation
  • Other: Components Polish

Testing

  • Visual regression: Button variants (tertiary no longer uses !important, base class restructured), toast auto-dismiss now 5s default, dropdown menu wider
  • Touch devices: Verify hover states no longer stick on tap
  • Keyboard navigation: Tab through Input, Textarea, Slider, Switch all now show visible focus indicators
  • Reduced motion: Toggle prefer reduced motion (macos setting), all animations should be disabled

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@cursor
Copy link

cursor bot commented Mar 19, 2026

PR Summary

Low Risk
Low risk visual/UI refactor across auth and marketing pages, with minor interaction changes (animated validation messages and password visibility toggles) that could affect layout or form UX but not auth logic.

Overview
Updates auth and landing/marketing UI to use shared CSS variables/design tokens (replacing hard-coded hex colors) and standardizes spacing/typography classes across buttons, nav, sections, and preview components.

Improves auth form UX by adding show/hide password toggles, animating validation and reset status messages via collapsible containers with aria-live, and tweaking divider/background styles for better consistency.

Refines landing page interactions and visuals, including pausable enterprise feature marquee hover behavior and numerous small layout/hover-state adjustments in the navbar, templates/features previews, and footer.

Written by Cursor Bugbot for commit 2f83f87. This will update automatically on new commits. Configure here.

@vercel
Copy link

vercel bot commented Mar 19, 2026

@adithyaakrishna is attempting to deploy a commit to the Sim Team on Vercel.

A member of the Team first needs to authorize it.

id='features'
aria-labelledby='features-heading'
className='relative overflow-hidden bg-[#F6F6F6]'
className='relative overflow-hidden bg-[var(--text-primary)]'
Copy link

Choose a reason for hiding this comment

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

Text-primary token misused as background makes text invisible

High Severity

The light-section background bg-[#F6F6F6] has been replaced with bg-[var(--text-primary)], but --text-primary is defined as #1a1a1a (light mode) or #e6e6e6 (dark mode) — it's a text color token, not a background token. In these same sections, heading text also uses text-[var(--text-primary)], meaning the background and text resolve to the same color, making headings completely invisible. This affects the Features, Pricing, and Enterprise sections of the landing page.

Additional Locations (2)
Fix in Cursor Fix in Web

aria-selected={index === activeTab}
onClick={() => setActiveTab(index)}
className={`relative h-full flex-1 items-center justify-center whitespace-nowrap px-[12px] font-medium font-season text-[#212121] text-[12px] uppercase lg:px-0 lg:text-[14px]${tab.hideOnMobile ? ' hidden lg:flex' : ' flex'}${index > 0 ? ' border-[#E9E9E9] border-l' : ''}`}
className={`relative h-full flex-1 items-center justify-center whitespace-nowrap px-3 font-medium font-season text-[var(--surface-1)] text-caption uppercase lg:px-0 lg:text-sm${tab.hideOnMobile ? ' hidden lg:flex' : ' flex'}${index > 0 ? ' border-[var(--divider)] border-l' : ''}`}
Copy link

Choose a reason for hiding this comment

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

Feature tab text uses surface token instead of text token

Medium Severity

The feature tab button text color changed from text-[#212121] (dark text) to text-[var(--surface-1)]. The --surface-1 token is a background/surface color (used elsewhere as bg-[var(--surface-1)]), not a text color. Depending on its value, tab labels may be invisible or extremely low contrast against the tab background.

Fix in Cursor Fix in Web

return (
<div className={cn('fixed inset-0 overflow-hidden', className)}>
<div className='-z-50 pointer-events-none absolute inset-0 bg-[#1C1C1C]' />
<div className='-z-50 pointer-events-none absolute inset-0 bg-[var(--text-primary)]' />
Copy link

Choose a reason for hiding this comment

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

Auth dark backgrounds become light using text-primary token

High Severity

Auth pages explicitly set the .dark class, where --text-primary resolves to #e6e6e6 (light). Replacing bg-[#1C1C1C] (near-black) with bg-[var(--text-primary)] turns dark backgrounds light — the auth background, header, and "Or continue with" divider span all become light gray instead of near-black, breaking the dark auth page design entirely.

Additional Locations (2)
Fix in Cursor Fix in Web

Build AI Agents
</h1>
<p className='font-[430] font-season text-[#F6F6F6]/60 text-[15px] leading-[125%] tracking-[0.02em] lg:text-[18px]'>
<p className='font-[430] font-season text-[var(--text-primary)]/60 text-base leading-[125%] tracking-[0.02em] lg:text-lg'>
Copy link

Choose a reason for hiding this comment

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

Text opacity on dark sections uses wrong variable

Medium Severity

text-[var(--text-primary)]/60 replaces text-[#F6F6F6]/60 in dark-background sections (hero subtitle, enterprise text). In light mode, --text-primary is #1a1a1a, producing dark text at 60% opacity on a dark background — nearly invisible. The original #F6F6F6 was light text; a semantic variable for light/foreground text is needed instead.

Additional Locations (1)
Fix in Cursor Fix in Web

@vercel
Copy link

vercel bot commented Mar 20, 2026

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Mar 20, 2026 5:50pm

Request Review

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

There are 6 total unresolved issues (including 4 from previous reviews).

Fix All in Cursor

Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

<h2
id='enterprise-heading'
className='max-w-[600px] font-[430] font-season text-[#1C1C1C] text-[32px] leading-[100%] tracking-[-0.02em] sm:text-[36px] md:text-[40px]'
className='max-w-[600px] font-[430] font-season text-[var(--text-primary)] text-[32px] leading-[100%] tracking-[-0.02em] sm:text-[36px] md:text-[40px]'
Copy link

Choose a reason for hiding this comment

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

Heading text invisible against same-token background

High Severity

Section headings use text-[var(--text-primary)] (was text-[#1C1C1C]) while their parent sections also use bg-[var(--text-primary)] (was bg-[#F6F6F6]). The old code had dark text on light backgrounds — two different colors. Now both foreground and background resolve to the same var(--text-primary) value, rendering heading text completely invisible.

Additional Locations (2)
Fix in Cursor Fix in Web

</div>
<div className='relative flex justify-center text-sm'>
<span className='bg-[#1C1C1C] px-4 font-[340] text-[#999]'>Or continue with</span>
<span className='bg-[var(--text-primary)] px-4 font-[340] text-[var(--text-subtle)]'>Or continue with</span>
Copy link

Choose a reason for hiding this comment

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

Divider span background matches surrounding section background

Medium Severity

The "Or continue with" divider text uses bg-[var(--text-primary)] to create a background that masks the divider line behind it. Previously this was bg-[#1C1C1C], matching the page's dark background. If --text-primary doesn't match the actual page background, the masking effect breaks and the divider line shows through the text, creating a visually broken separator.

Additional Locations (1)
Fix in Cursor Fix in Web

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