Loading...
Loading...
Creates light and dark mode component variants with consistent color token mapping. Use when building dual-theme components, creating light/dark UI pairs, or implementing theme-aware designs.
npx skill4agent add ainergiz/design-inspirations component-variantsComponentLightComponentDarkvariant| Semantic Use | Light Mode | Dark Mode |
|---|---|---|
| Card background | | |
| Card border | | |
| Content area | | |
| Primary text | | |
| Secondary text | | |
| Muted text | | |
| Icon color | | |
| Tag background | | |
| Tag text | | |
| Accent background | | |
| Accent text | | |
| Shadow | | |
| Hover background | | |
| Semantic Use | Light Mode | Dark Mode |
|---|---|---|
| Outer card gradient | | |
| Outer card border | | |
| Outer card shadow | | |
| Inner media border | | |
| Semantic Use | Light Mode | Dark Mode |
|---|---|---|
| Success badge bg | | |
| Success badge text | | |
| Semantic Use | Light Mode | Dark Mode |
|---|---|---|
| Dot separator | | |
| Border separator | | |
// 1. Create the Light variant
function ComponentLight() {
return (
<div className="bg-[#f8f8f8] rounded-xl border border-zinc-200/80 shadow-lg shadow-zinc-200/50">
<div className="bg-white px-4 py-4">
<span className="text-zinc-900">Primary content</span>
<span className="text-zinc-500">Secondary content</span>
</div>
</div>
);
}
// 2. Create the Dark variant (mirror structure, swap tokens)
function ComponentDark() {
return (
<div className="bg-zinc-800 rounded-xl border border-zinc-700/80 shadow-lg shadow-black/30">
<div className="bg-zinc-900 px-4 py-4">
<span className="text-zinc-100">Primary content</span>
<span className="text-zinc-500">Secondary content</span>
</div>
</div>
);
}
// 3. Export unified component
export function Component({ variant = "light" }: { variant?: "light" | "dark" }) {
return variant === "dark" ? <ComponentDark /> : <ComponentLight />;
}interface InfoRowProps {
icon: React.ReactNode;
label: string;
value: React.ReactNode;
}
function InfoRowLight({ icon, label, value }: InfoRowProps) {
return (
<div className="flex items-center gap-3 py-1">
<span className="text-zinc-400">{icon}</span>
<span className="text-zinc-500 text-sm w-32">{label}</span>
<div className="flex-1">{value}</div>
</div>
);
}
function InfoRowDark({ icon, label, value }: InfoRowProps) {
return (
<div className="flex items-center gap-3 py-1">
<span className="text-zinc-500">{icon}</span>
<span className="text-zinc-500 text-sm w-32">{label}</span>
<div className="flex-1">{value}</div>
</div>
);
}