- Dependencies:
- ∟Direct: 0
- ∟Peer: 7
- Source code ↗
- Check on NPM ↗
Overview
Section titled “Overview”Displays a button or a component that acts like a button. This component was designed from scratch and has some embedded animations that make it unique.
import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" />;}This is an original component from Inpulse.
It has five possible variations, each with its own purpose: Primary, Secondary, Outline, Ghost, and Link. You can also use the pill property to create a pill-shaped button and customize its size with the size property.
This component also features a ripple effect that simulates a pressing effect when clicked, which can be disabled via the useRipple property.
Additionally, it supports a loading state that can be activated via the loading property - fully integrated with the Loading component.
Installation
Section titled “Installation”pnpm add @inpulse-ui/buttonbun add @inpulse-ui/buttonyarn add @inpulse-ui/buttonnpm install @inpulse-ui/buttonAPI Reference
Section titled “API Reference”The main component that renders the button.
| Prop | Type | Default Value | Required |
asChild | boolean | false | No |
icon | boolean | false | No |
loading | boolean | false | No |
pill | boolean | false | No |
size | enum | No | |
useRipple | boolean | true | No |
variation | enum | No |
Wrap any content inside the <Button> component to create a button and apply variations, sizes, and other properties to customize it as needed.
<Button> Click me!</Button>Examples
Section titled “Examples”Primary
Section titled “Primary”By default, all buttons that have borders (as is the case with the primary variation) have a click animation that simulates a pressing effect. This animation can be disabled via the useRipple property.
import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" />;}import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" pill />;}Loading
Section titled “Loading”This animation can be easily activated on the button via the loading property. In a subtle way, it uses the ellipsis symbol to indicate that a process is loading.
import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" loading />;}Secondary
Section titled “Secondary”import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" variant="secondary" />;}Outline
Section titled “Outline”import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" variant="outline" />;}In this variation, the click animation is not displayed because the element does not have borders.
import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" variant="ghost" />;}In this variation, the click animation is not displayed because the element does not have borders.
import { Button } from '@inpulse-ui/button';
export function Demo() { return <Button label="Button" variant="link" />;}The button component supports the following sizes: xs, sm, md, lg.
import { Button } from '@inpulse-ui/button';
export function Demo() { return ( <> <Button label="Button" size="xs" /> <Button label="Button" size="sm" /> <Button label="Button" size="md" /> <Button label="Button" size="lg" /> </> );}import { Button } from '@inpulse-ui/button';import { Gear } from '@inpulse-ui/icons';
export function Demo() { return ( <Button label="Button" size="md" icon> <Gear /> </Button> );}Icon + Loading
Section titled “Icon + Loading”When the icon size is used in conjunction with the loading property, a variation of the loading animation, unique to that state, is displayed in place of the icon.
import { Button } from '@inpulse-ui/button';import { Gear } from '@inpulse-ui/icons';
export function Demo() { return ( <Button label="Button" size="md" icon loading> <Gear /> </Button> );}Built with by Jo Santana in Brazil.
© 2026 Inpulse. All rights reserved.