diff --git a/packages/ui/src/ceramic/button.ts b/packages/ui/src/ceramic/button.tsx similarity index 75% rename from packages/ui/src/ceramic/button.ts rename to packages/ui/src/ceramic/button.tsx index 21326c01cfe..98e9330193b 100644 --- a/packages/ui/src/ceramic/button.ts +++ b/packages/ui/src/ceramic/button.tsx @@ -1,9 +1,11 @@ -import { style, variants } from './variants'; +import * as React from 'react'; + +import { Composite, type RenderProp } from './composite'; +import { type StyleRule, type VariantProps, style, variants } from './variants'; export const buttonStyles = variants({ base: style(theme => ({ appearance: 'none', - boxSizing: 'border-box', position: 'relative', display: 'inline-flex', alignItems: 'center', @@ -16,8 +18,6 @@ export const buttonStyles = variants({ fontFamily: theme.fontFamilies.sans, border: 'none', outline: 'none', - margin: 0, - paddingBlock: 0, paddingInline: theme.spacing[3], cursor: 'pointer', textDecoration: 'none', @@ -55,7 +55,7 @@ export const buttonStyles = variants({ }, })), variants: { - variant: { + color: { primary: style(theme => ({ background: theme.colors.purple[700], color: theme.colors.white, @@ -73,7 +73,29 @@ export const buttonStyles = variants({ }, }, defaultVariants: { - variant: 'primary', + color: 'primary', fullWidth: false, }, }); + +type ButtonVariantProps = VariantProps; + +type ButtonProps = ButtonVariantProps & { + render?: RenderProp; + sx?: StyleRule; +}; + +export const Button = React.forwardRef & ButtonProps>( + function Button(props, forwardedRef) { + const { render =