You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(design-system): upgrade to 3.41.1 + adopt primary token (#989)
* chore(design-system): upgrade to 3.41.1 + adopt primary token across docs
Bumps @arcadeai/design-system from 3.39.1 to 3.41.1 and reconciles the
docs with two breaking API/visual changes shipped in that range:
- 3.40.0 removed the Radix-style `asChild` prop on Button, PopoverTrigger,
and DropdownMenuTrigger in favor of Base UI's `render={<Element/>}` API.
Migrates 9 call sites across landing-page, references, faq, not-found,
challenge-solution, glossary-term, and filters-bar.
- 3.41.1 changed `--primary` from Arcade pink to a bright lime. Replaces
the 11 hardcoded `#ee175e` / `#ff6b8a` sites with `var(--primary)` via
Tailwind utilities (`bg-primary/X`, `text-primary`, `border-primary/X`)
so future primary changes propagate without a code edit.
Also adopts the design system more broadly:
- Migrates several custom `<button>` styles to `<Button variant="…">`
where the classes were a clean match (toggle-content → outline, enhanced
code block copy → ghost xs). Leaves bespoke ones (search trigger, dark
terminal copy, badge X-icons, card a11y wrappers) untouched.
- Replaces the half-migrated `buttonVariants({…})`-on-`<Link>` pattern in
toolkits-client.tsx and 3 sites in not-found.tsx with proper
`<Button render={<Link/>}>` wrappers.
- Drops the `text-white` override on every `bg-primary` button — the
default variant's `text-primary-foreground` already provides correct
near-black contrast against the lime, restoring accessibility on the
hero CTA, references CTAs, and FAQ CTA.
- Removes the hardcoded blue override on the integrations
"Learn how to build a MCP Server" button so the default variant takes
over (black-text-on-blue + lime hover bleed-through both fixed).
- Replaces `#9089fc` purple in the landing-page decorative gradients and
LLM-friendly banner with `primary` at varying alpha for a monochrome
lime treatment.
Adds two CSS-level wiring fixes in globals.css:
- A new `--color-brand-accent` token (registered via `@theme inline`)
resolves to `var(--primary)` in dark mode and `oklch(from var(--primary)
0.45 c h)` in light mode, giving a saturated dark green that's readable
as text/icons/borders on light surfaces. Used in place of `text-primary`
on 9 light-bg sites (quick-start card, footer, references links, LLM
banner, landing-page quick links, analytics SignupLink).
- An override of Nextra's primary scale (`--x-color-primary-100…800`)
that derives every shade from `var(--primary)` via `color-mix`, so the
sidebar active state, TOC highlight, accent links, and focus rings
follow the design-system primary instead of the stale pink HSL config.
Verified: `tsc --noEmit` clean, `pnpm test` 601/601 passing.
* fix(design-system): point card hover shadow at --primary
Three Framer Motion `whileHover.boxShadow` values were still using the
old pink `rgba(238, 23, 94, 0.1)` while the CSS hover border on the same
cards now uses `var(--primary)` (lime). On hover, the border glowed lime
but the shadow glowed pink — a visible color mismatch.
Replaces the literal rgba with `oklch(from var(--primary) l c h / 0.1)`
so the glow follows the design-system primary in both light and dark
modes. Affects:
- app/_components/challenge-solution.tsx
- app/_components/quick-start-card.tsx
- app/_components/sample-app-card.tsx
* style: apply Ultracite formatting to toolkits-client.tsx
Inline the @arcadeai/design-system import (fits on one line) and break
the inline `render={<Link/>}` JSX across multiple lines per Biome's
multi-attribute formatting rule. Fixes the CI lint format check.
* fix(logo): drop invert filter, use text-foreground for theme-aware color
The new `ArcadeLogo` SVG in @arcadeai/design-system 3.41.x uses
`fill="currentColor"`, where the previous version had a hardcoded white
fill. The `invert dark:invert-0` filter assumed the latter — flipping
white → black in light mode, no-op in dark mode.
With currentColor, `invert` rotates whatever color is inherited from the
parent, producing an invisible near-white logo on the light-mode
navbar's white background.
Replaces the filter with `text-foreground`, the design-system token
that's already themed (near-black light, near-white dark). The logo
now renders correctly in both modes without filter trickery.
* fix(cards): move hover shadow from Framer Motion to CSS
Framer Motion's color parser decomposes box-shadow values in JS for
interpolation and cannot resolve `var()` references or relative-color
syntax (`oklch(from …)`) — those are browser-only. The previous commit
swapped the rgba pink for `oklch(from var(--primary) l c h / 0.1)` to
follow the design-system token, which left the shadow snapping on/off
on hover instead of smoothly fading.
Moves the shadow to a Tailwind arbitrary-value `hover:shadow-[…]` class
on the same motion.div, with `transition-shadow` for a smooth CSS fade.
Framer Motion keeps the scale spring on hover/tap — color stays in CSS
where it belongs.
Affects:
- app/_components/quick-start-card.tsx
- app/_components/sample-app-card.tsx
- app/_components/challenge-solution.tsx
0 commit comments