feat: add reusable Button component

This commit is contained in:
2026-03-20 11:40:07 -06:00
parent 9b8b8de875
commit f42c4b8e0a

View File

@@ -0,0 +1,29 @@
import { cx } from '@styled-system/css'
import { type ButtonVariantProps, button } from '@styled-system/recipes/button'
import type { ButtonHTMLAttributes, DetailedHTMLProps, FC } from 'react'
import type { MergeOmitting } from '@/types/helpers'
export type ButtonProps = MergeOmitting<
DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>,
ButtonVariantProps
>
const Button: FC<ButtonProps> = ({
className,
type = 'button',
children,
...props
}) => {
const [buttonArgs, restProps] = button.splitVariantProps(props)
return (
<button
type={type}
{...restProps}
className={cx(button(buttonArgs), className)}
>
{children}
</button>
)
}
export default Button