diff options
Diffstat (limited to 'packages/ui/src/components/button.tsx')
| -rw-r--r-- | packages/ui/src/components/button.tsx | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/ui/src/components/button.tsx b/packages/ui/src/components/button.tsx new file mode 100644 index 000000000..db1da2fb9 --- /dev/null +++ b/packages/ui/src/components/button.tsx @@ -0,0 +1,25 @@ +import { Button as Kobalte } from "@kobalte/core/button" +import { type ComponentProps, splitProps } from "solid-js" + +export interface ButtonProps { + size?: "normal" | "large" + variant?: "primary" | "secondary" | "ghost" +} + +export function Button(props: ComponentProps<"button"> & ButtonProps) { + const [split, rest] = splitProps(props, ["variant", "size", "class", "classList"]) + return ( + <Kobalte + {...rest} + data-component="button" + data-size={split.size || "normal"} + data-variant={split.variant || "secondary"} + classList={{ + ...(split.classList ?? {}), + [split.class ?? ""]: !!split.class, + }} + > + {props.children} + </Kobalte> + ) +} |
