feat(components/ui): add reusable Button component

This commit is contained in:
2026-02-25 13:56:21 -06:00
parent 9c1aa9a3cb
commit 5decb2a5f5

View File

@@ -0,0 +1,22 @@
---
import { cx } from '@styled-system/css'
import {
type ButtonVariantProps,
button as buttonRecipe
} from '@styled-system/recipes/button'
import type { HTMLAttributes } from 'astro/types'
import type { MergeOmitting } from '@/types/utilities'
type ButtonProps = MergeOmitting<HTMLAttributes<'button'>, ButtonVariantProps>
export type Props = ButtonProps
const { class: className, type = 'button', ...props } = Astro.props
const [buttonRecipeArgs, ButtonProps] = buttonRecipe.splitVariantProps(props)
const buttonClass = buttonRecipe(buttonRecipeArgs)
---
<button {...ButtonProps} type={type} class={cx(buttonClass, className)}>
<slot />
</button>