diff --git a/libs/ui/src/atoms/button.tsx b/libs/ui/src/atoms/button.tsx index 5d654a968..7f6ddbd46 100644 --- a/libs/ui/src/atoms/button.tsx +++ b/libs/ui/src/atoms/button.tsx @@ -38,6 +38,8 @@ export const buttonVariants = tv({ sm: "h-form-control-sm gap-button-sm rounded-button-sm p-button-sm text-button-sm", md: "h-form-control-md gap-button-md rounded-button-md p-button-md text-button-md", lg: "gap-button-lg rounded-button-lg p-button-lg text-button-lg", + content: + "min-h-form-control-md gap-button-md whitespace-normal break-words rounded-button-md p-button-md text-center text-button-md leading-button-content", current: "gap-button-md text-inherit", }, block: { @@ -230,6 +232,11 @@ export const buttonVariants = tv({ size: "md", className: "border-(length:--border-width-button-md)", }, + { + theme: "outlined", + size: "content", + className: "border-(length:--border-width-button-md)", + }, { theme: "outlined", size: "lg", diff --git a/libs/ui/src/atoms/link-button.tsx b/libs/ui/src/atoms/link-button.tsx index a83702f9b..31fb43ad6 100644 --- a/libs/ui/src/atoms/link-button.tsx +++ b/libs/ui/src/atoms/link-button.tsx @@ -61,6 +61,7 @@ export function LinkButton({ const handleClick = onClick as | ((event: MouseEvent) => void) | undefined + const resolvedIconSize = iconSize ?? (size === "content" ? "current" : size) return ( ({ tabIndex={disabled ? -1 : tabIndex} > {icon && iconPosition === "left" && ( - + )} {children} {icon && iconPosition === "right" && ( - + )} ) diff --git a/libs/ui/src/tokens/components/atoms/_button.css b/libs/ui/src/tokens/components/atoms/_button.css index 2e885f18b..609e051ab 100644 --- a/libs/ui/src/tokens/components/atoms/_button.css +++ b/libs/ui/src/tokens/components/atoms/_button.css @@ -6,6 +6,7 @@ * `p-button-{size}` utility. Figma exports the split `x` and `y` * axes; this bridge composes them so the existing utility name keeps * working without per-axis class churn. + * - Content button line-height for multiline CTA labels. * - The `token-icon-button-spinner` semantic icon alias. */ @@ -13,6 +14,7 @@ --padding-button-sm: var(--padding-button-y-sm) var(--padding-button-x-sm); --padding-button-md: var(--padding-button-y-md) var(--padding-button-x-md); --padding-button-lg: var(--padding-button-y-lg) var(--padding-button-x-lg); + --leading-button-content: 1.25; } @utility token-icon-button-spinner { diff --git a/libs/ui/stories/atoms/button.stories.tsx b/libs/ui/stories/atoms/button.stories.tsx index 83b275d77..45abcc4e8 100644 --- a/libs/ui/stories/atoms/button.stories.tsx +++ b/libs/ui/stories/atoms/button.stories.tsx @@ -27,7 +27,7 @@ const meta: Meta = { }, size: { control: 'select', - options: ['sm', 'md', 'lg', 'current'], + options: ['sm', 'md', 'lg', 'content', 'current'], description: 'Controls the size of the button', table: { defaultValue: { summary: 'md' }, @@ -207,6 +207,9 @@ export const Sizes: Story = { +
+ +