Cal.com
Components

Button

View in AirtableView in Figma
Design:
Ready for dev
Dev:
Ready for review

Variants and Colors

Buttons come in different variants and colors to suit different purposes. Each variant can be combined with any color and size.

Default

primary

xs
sm
base
lg

secondary

xs
sm
base
lg

minimal

xs
sm
base
lg

destructive

xs
sm
base
lg

icon

primary

xs
sm
base
lg

secondary

xs
sm
base
lg

minimal

xs
sm
base
lg

destructive

xs
sm
base
lg

Icons

Buttons can include icons at the start or end. The icon color and size are automatically handled by the button component.

Start Icon

Start Icon
Start Icon
Start Icon
Start Icon

End Icon

End Icon
End Icon
End Icon
End Icon

Loading State

Buttons can show a loading state to indicate an ongoing action. The loading spinner replaces the button text while maintaining the button's width.

Loading State

Loading
Loading
Loading
Loading

Loading with Icons

With Icon
With Icon
With Icon
With Icon

Disabled State

Buttons can be disabled to indicate that they are not interactive. The disabled state is visually distinct and prevents any click events.

Disabled State

Disabled
Disabled
Disabled
Disabled

Disabled with Icons

With Icon
With Icon
With Icon
With Icon

onClick Events

Buttons handle click events like any other button component. You can provide an onClick handler to respond to user interactions.

Providing a loading state will add a spinner on the left side of the button.

Loading State

Loading
Loading
Loading
Loading

Loading with Icons

With Icon
With Icon
With Icon
With Icon

Disabled

Disabled State

Disabled
Disabled
Disabled
Disabled

Disabled with Icons

With Icon
With Icon
With Icon
With Icon

Button Groups

Buttons can be grouped together using the ButtonGroup component. The ButtonGroup component can be used to create a group of related buttons with consistent spacing and optional combined borders.

Button Group Sizes

Seperated

Combined

On this page