Button your main one + 5 that look a bit different, across 12 places
Blue background, pill-shaped, a drop shadow and white text
Why?
bg-blue-600/hover:bg-blue-700 + rounded-full + shadow-lg + text-white is a distinct elevated pill used in 4 places, unlike default's bg-primary hover:bg-primary/90 — promote to a shared 'brand' variant.
Show where it's used (4)
app/billing/page.tsxline 21app/checkout/page.tsxline 16app/dashboard/page.tsxline 21app/page.tsxline 18
Exact code
bg-blue-600hover:bg-blue-700rounded-fullshadow-lgtext-whiteGreen background and white text
Why?
bg-green-600/hover:bg-green-700/text-white recurs across 3 sites as a confirm/success action with no matching cva variant — name it by role as 'success'.
Show where it's used (3)
app/onboarding/page.tsxline 16app/page.tsxline 23app/profile/page.tsxline 25
Exact code
bg-green-600hover:bg-green-700text-whiteRed background and white text
Why?
Hand-rolled bg-red-600/hover:bg-red-700/text-white is the destructive role already defined as bg-destructive text-destructive-foreground hover:bg-destructive/90 — fold into the existing variant.
Show where it's used (2)
app/billing/page.tsxline 26app/dashboard/page.tsxline 26
Exact code
bg-red-600hover:bg-red-700text-whiteA custom color background, pill-shaped, a drop shadow and white text
Why?
bg-[#2563eb]/hover:bg-[#1d4ed8] are the literal hexes of blue-600/blue-700, and with identical rounded-full/shadow-lg/text-white this renders pixel-identical to btn-1 — merge the arbitrary-value duplicate into the named cluster.
Show where it's used (1)
app/settings/page.tsxline 26
Exact code
bg-[#2563eb]hover:bg-[#1d4ed8]rounded-fullshadow-lgtext-whiteBlue background and blue text
Why?
bg-blue-600 with text-blue-600 paints the label the same hue as its background (illegible) — an error, not a style; keep at the single site and flag for human review.
Show where it's used (1)
app/profile/page.tsxline 30
Exact code
bg-blue-600text-blue-600Purple background, extra padding, square corners, a heavy shadow and small text
Why?
bg-purple-500 + px-12 + rounded-none + text-xs + shadow-2xl is a lone one-off matching no role or other cluster — reads as a copy-paste slip; keep at the call site and flag.
Show where it's used (1)
app/onboarding/page.tsxline 21
Exact code
bg-purple-500px-12rounded-noneshadow-2xltext-xs2 that change depending on context — we won't touch these
app/checkout/page.tsxline 26app/settings/page.tsxline 36
Card your main one + 1 that look a bit different, across 5 places
A drop shadow
Why?
The lone shadow-md override is pixel-identical to the existing 'elevated' variant (classes: shadow-md) — it's a hand-rolled duplicate, fold it into the named variant.
Show where it's used (3)
app/billing/page.tsxline 11app/dashboard/page.tsxline 11app/profile/page.tsxline 12
Exact code
shadow-mdBlue border and a drop shadow
Why?
border-blue-500 + shadow-lg is a genuinely new look used at 2 sites that matches no existing variant; promote it to a role-named 'accent' variant rather than leaving the blue border drifting.
Show where it's used (2)
app/page.tsxline 10app/settings/page.tsxline 14
Exact code
border-blue-500shadow-lgBadge 2 different looks across 4 places
Gray background, rounded corners and gray text
Why?
bg-gray-100/text-gray-600 is a legible low-emphasis look repeated across 2 sites with no theme-token equivalent among existing variants, so it earns a semantic 'muted' variant.
Show where it's used (2)
app/billing/page.tsxline 16app/settings/page.tsxline 19
Exact code
bg-gray-100rounded-smtext-gray-600Green background and green text
Why?
bg-green-100/text-green-800 is the conventional high-contrast success pairing used in 2 places and no existing variant covers green, so it becomes a 'success' variant named by role not color.
Show where it's used (2)
app/dashboard/page.tsxline 16app/profile/page.tsxline 17
Exact code
bg-green-100text-green-800Input ✓ already consistent
Every Input uses the standard style — nothing to clean up here.