summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/button.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ui/src/components/button.tsx')
-rw-r--r--packages/ui/src/components/button.tsx25
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>
+ )
+}