button-component #29
@ -11,27 +11,33 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|||||||
|
|
||||||
const variantClasses: Record<ButtonVariant, string> = {
|
const variantClasses: Record<ButtonVariant, string> = {
|
||||||
primary: `
|
primary: `
|
||||||
bg-primary text-base-canvas
|
bg-primary text-base-canvas
|
||||||
|
stne3960 marked this conversation as resolved
Outdated
|
|||||||
border border-primary
|
border border-primary
|
||||||
hover(bg-secondary text-base-canvas border border-primary)
|
hover:bg-secondary hover:text-base-canvas
|
||||||
focus-visible(bg-base-canvas text-base-ink-strong border border-primary outline outline-[length:var(--border-width-lg)] outline-sky-100)
|
hover:border hover:border-primary
|
||||||
|
focus-visible:bg-base-canvas focus-visible:text-base-ink-strong
|
||||||
|
focus-visible:border focus-visible:border-primary
|
||||||
|
focus-visible:outline focus-visible:outline-[length:var(--border-width-lg)] focus-visible:outline-sky-100
|
||||||
`.trim(),
|
`.trim(),
|
||||||
|
secondary: `bg-base-canvas text-base-ink-strong
|
||||||
secondary: `
|
|
||||||
bg-base-canvas text-base-ink-strong
|
|
||||||
border-solid [border-width:var(--border-width-sm)] border-base-ink-soft
|
border-solid [border-width:var(--border-width-sm)] border-base-ink-soft
|
||||||
hover(bg-base-canvas text-base-ink-strong border-base-ink-medium)
|
hover:bg-base-canvas hover:text-base-ink-strong
|
||||||
focus-visible(bg-base-canvas text-base-ink-strong border-primary outline outline-[length:var(--border-width-lg)] outline-sky-100)
|
hover:border-base-ink-medium
|
||||||
`.trim(),
|
focus-visible:bg-base-canvas focus-visible:text-base-ink-strong
|
||||||
|
focus-visible:border-primary
|
||||||
|
focus-visible:outline focus-visible:outline-[length:var(--border-width-lg)] focus-visible:outline-sky-100
|
||||||
|
`.trim(),
|
||||||
red: `
|
red: `
|
||||||
bg-other-red-100 text-su-white
|
bg-other-red-100 text-su-white
|
||||||
focus-visible(bg-base-canvas text-base-ink-strong border border-primary outline outline-[length:var(--border-width-lg)] outline-sky-100)
|
focus-visible:bg-base-canvas focus-visible:text-base-ink-strong
|
||||||
|
focus-visible:border-primary focus-visible:border
|
||||||
|
focus-visible:outline focus-visible:outline-[length:var(--border-width-lg)] focus-visible:outline-sky-100
|
||||||
`.trim(),
|
`.trim(),
|
||||||
|
|
||||||
green: `
|
green: `
|
||||||
bg-other-green text-su-white
|
bg-other-green text-su-white
|
||||||
focus-visible(bg-base-canvas text-base-ink-strong border border-primary outline outline-[length:var(--border-width-lg)] outline-sky-100)
|
focus-visible:bg-base-canvas focus-visible:text-base-ink-strong
|
||||||
|
focus-visible:border-primary focus-visible:border
|
||||||
|
focus-visible:outline focus-visible:outline-[length:var(--border-width-lg)] focus-visible:outline-sky-100
|
||||||
`.trim(),
|
`.trim(),
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -62,7 +68,7 @@ export default function Button({
|
|||||||
sizeClasses[size],
|
sizeClasses[size],
|
||||||
className,
|
className,
|
||||||
]
|
]
|
||||||
.filter(Boolean) // Filter out empty strings and undefined values so they won't pollute the class list
|
.filter(Boolean)
|
||||||
.join(" ");
|
.join(" ");
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user
This is unwieldy. Any way to break it down or group them somehow? Like the border styles, focus styles, colors, and so on.
Is it necessary to repeat the prefix or can you do something like
hover:[a, b, c]instead ofhover:a hover:b hover:c?