Button
The Button component is used to trigger an action or event. It supports multiple colors, visual variants, sizes, icons, disabled states, and full-width layouts.
import Button from "rocksolidjs/Button";
export default function Example() {
return <Button>Click me</Button>;
}Examples
Colors
Use the color prop to customize the semantic color of the Button.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="flex flex-wrap gap-4">
<Button color="default">Default</Button>
<Button color="success">Success</Button>
<Button color="warning">Warning</Button>
<Button color="info">Info</Button>
<Button color="error">Error</Button>
</div>
);
}Variants
Use the variant prop to control the visual style of the Button.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="flex flex-col gap-4">
<div class="flex flex-wrap gap-4">
<Button variant="solid" color="default">
Solid
</Button>
<Button variant="solid" color="success">
Solid
</Button>
<Button variant="solid" color="error">
Solid
</Button>
</div>
<div class="flex flex-wrap gap-4">
<Button variant="outlined" color="default">
Outlined
</Button>
<Button variant="outlined" color="success">
Outlined
</Button>
<Button variant="outlined" color="error">
Outlined
</Button>
</div>
<div class="flex flex-wrap gap-4">
<Button variant="filled" color="default">
Filled
</Button>
<Button variant="filled" color="success">
Filled
</Button>
<Button variant="filled" color="error">
Filled
</Button>
</div>
<div class="flex flex-wrap gap-4">
<Button variant="ghost" color="default">
Text
</Button>
<Button variant="ghost" color="success">
Text
</Button>
<Button variant="ghost" color="error">
Text
</Button>
</div>
</div>
);
}Sizes
Use the size prop to control the size of the Button.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="flex flex-col gap-4">
<div class="flex flex-wrap gap-4">
<Button size="small" color="default">
Small
</Button>
<Button size="small" color="success">
Small
</Button>
<Button size="small" color="error">
Small
</Button>
</div>
<div class="flex flex-wrap gap-4">
<Button size="medium" color="default">
Medium
</Button>
<Button size="medium" color="success">
Medium
</Button>
<Button size="medium" color="error">
Medium
</Button>
</div>
<div class="flex flex-wrap gap-4">
<Button size="large" color="default">
Large
</Button>
<Button size="large" color="success">
Large
</Button>
<Button size="large" color="error">
Large
</Button>
</div>
</div>
);
}Icons
Use the startIcon and endIcon props to add icons before or after the
Button content.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="flex flex-wrap gap-4">
<Button
startIcon={<span aria-hidden>+</span>}
>
Start content
</Button>
<Button
endIcon={<span aria-hidden>→</span>}
>
End content
</Button>
<Button
startIcon={<span aria-hidden>+</span>}
endIcon={<span aria-hidden>→</span>}
>
Both
</Button>
</div>
);
}Disabled
Use the disabled prop to prevent the Button from being interacted with.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="flex flex-wrap gap-4">
<Button disabled>
Disabled Solid
</Button>
<Button variant="outlined" disabled>
Disabled Outlined
</Button>
<Button variant="filled" disabled>
Disabled Filled
</Button>
<Button variant="ghost" disabled>
Disabled Text
</Button>
</div>
);
}Full Width
Use the fullWidth prop to make the Button take up the full available
width.
import Button from "rocksolidjs/Button";
export default function Example() {
return (
<div class="w-full">
<Button fullWidth>
Full width button
</Button>
</div>
);
}Accessibility
- Use descriptive text that clearly communicates the Button’s action.
- Do not rely on color alone to communicate meaning or state.
- Use the
disabledprop when an action is unavailable. - When using
startIconorendIconfor decorative icons, setaria-hidden="true"on the icon so it is hidden from assistive technologies.
API
Button
The Button component supports customizable colors, variants, sizes,
icons, disabled states, and full-width layouts.
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
| children | JSXElement |
No | — | The content to display inside the Button. |
| class | string |
No | — | Additional CSS class name(s) applied to the Button. |
| color | "default" | "success" | "warning" | "info" | "error" |
No | "default" |
Controls the semantic color of the Button. |
| disabled | boolean |
No | false |
Disables the Button and prevents user interaction. |
| endIcon | JSXElement |
No | — | Displays an element after the Button content. |
| fullWidth | boolean |
No | false |
Makes the Button span the full available width. |
| size | "small" | "medium" | "large" |
No | "medium" |
Controls the size of the Button. |
| slotProps | { startIcon?: object; endIcon?: object; } |
No | — | Provides props to customize the Button slots.
|
| startIcon | JSXElement |
No | — | Displays an element before the Button content. |
| variant | "solid" | "filled" | "outlined" | "ghost" |
No | "solid" |
Controls the visual style of the Button. |
Related Components
- IconButton — Use IconButton for actions that are represented by an icon without visible text.