summaryrefslogtreecommitdiffhomepage
path: root/cloud/web/src/ui/button.tsx
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-08-08 13:22:54 -0400
committerFrank <[email protected]>2025-08-08 13:24:32 -0400
commit183e0911b76025a1f2a82e979d9834fec2131d0e (patch)
tree9987c1753bd64d1ce1d174ab397f1a8c681f642c /cloud/web/src/ui/button.tsx
parentc7bb19ad0712469063eab35589aa5d3602b0c5b1 (diff)
downloadopencode-183e0911b76025a1f2a82e979d9834fec2131d0e.tar.gz
opencode-183e0911b76025a1f2a82e979d9834fec2131d0e.zip
wip: gateway
Diffstat (limited to 'cloud/web/src/ui/button.tsx')
-rw-r--r--cloud/web/src/ui/button.tsx24
1 files changed, 24 insertions, 0 deletions
diff --git a/cloud/web/src/ui/button.tsx b/cloud/web/src/ui/button.tsx
new file mode 100644
index 000000000..889102dda
--- /dev/null
+++ b/cloud/web/src/ui/button.tsx
@@ -0,0 +1,24 @@
+import { Button as Kobalte } from "@kobalte/core/button"
+import { JSX, Show, splitProps } from "solid-js"
+
+export interface ButtonProps {
+ color?: "primary" | "secondary" | "ghost"
+ size?: "md" | "sm"
+ icon?: JSX.Element
+}
+export function Button(props: JSX.IntrinsicElements["button"] & ButtonProps) {
+ const [split, rest] = splitProps(props, ["color", "size", "icon"])
+ return (
+ <Kobalte
+ {...rest}
+ data-component="button"
+ data-size={split.size || "md"}
+ data-color={split.color || "primary"}
+ >
+ <Show when={props.icon}>
+ <div data-slot="icon">{props.icon}</div>
+ </Show>
+ {props.children}
+ </Kobalte>
+ )
+}