diff options
| author | Frank <[email protected]> | 2025-08-08 13:22:54 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-08-08 13:24:32 -0400 |
| commit | 183e0911b76025a1f2a82e979d9834fec2131d0e (patch) | |
| tree | 9987c1753bd64d1ce1d174ab397f1a8c681f642c /cloud/web/src/ui/button.tsx | |
| parent | c7bb19ad0712469063eab35589aa5d3602b0c5b1 (diff) | |
| download | opencode-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.tsx | 24 |
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> + ) +} |
