
Security News
Next.js Patches Critical Middleware Vulnerability (CVE-2025-29927)
Next.js has patched a critical vulnerability (CVE-2025-29927) that allowed attackers to bypass middleware-based authorization checks in self-hosted apps.
@lightspeed/cirrus-button
Advanced tools
The most essential element of a user interface.
Our buttons come in four different sizes: Small, Medium, Large & Extra Large. All buttons have a fixed height and padding unless stated differently inside the type
Size | Usage |
---|---|
small | These little buttons are used in compact little spaces, e.g. inside the header of a card. |
large | The large button is mainly used inside an open but content-rich page with multiple actions. This large button also provides a large touchable area for use on touch screens. |
xlarge | When a single page has nothing going on but to promote a single thing with just one button, you should use the extra large button. This button is also great for fast pacing flows with a focus on touch screens. |
These are all the styles that are included in all button types (unless stated differently in the types section).
Style | Usage |
---|---|
default | The neutral button is used for all generic actions. |
primary | There should only be one main action on the page. This action should always be a primary styled button. |
secondary | For subsequent actions that encourage our users to fill data like selecting a product. |
danger | For all actions that can be destructive, we use the danger styled button. |
These are all the styles that are included in all button types (unless stated differently in the types section).
Type | Usage |
---|---|
Outline | Our standard button is for all non-default styles the outline button can transform into a fill button to start encouraging interaction. |
Fill | When taking action is promoted/encouraged we use the fill button. The main CTA should always be a fill. Not available in default style. |
Icon + Text | Bringing visual context to what a button will do, can help the user understand and it manages expectations. When space is limited, but actions are required you might want to use an icon only button. |
Icon | A small, often square-shaped button with only an <Icon> for CTA. These should be avoided at all costs, unless when dealing with extremely standard usecases. Consider an Icon + Text button instead. |
First, make sure you have been through the Getting Started steps of adding Cirrus in your application.
If using Yarn:
yarn add @lightspeed/cirrus-button
Or using npm:
npm i -S @lightspeed/cirrus-button
Import required styles in your .scss
:
@import '@lightspeed/cirrus-button/Button.scss';
Prop | Type | Description |
---|---|---|
children | React.ReactNode | The content to display inside the button |
primary | boolean | Displays as success button |
secondary | boolean | Displays as secondary button |
danger | boolean | Displays as danger button |
fill | boolean | Displays as fill button |
size | enum['small', 'large', 'xlarge'] | Sets the size of the button |
block | boolean | Displays the button in full width |
noSpacing | boolean | Remove default spacing between button children |
disabled | boolean | Disables the button |
loading | boolean | Displays the loading icon and disables the button |
href | string | Creates a <a> link instead of a <button> |
active | boolean | Displays the button in an active state |
onClick | function | Callback when button is clicked |
onFocus | function | Callback when button is focused |
onBlur | function | Callback when button is blurred |
import React from 'react';
import Button from '@lightspeed/cirrus-button';
const MyComponent = () => (
<div>
<Button>My Button</Button>
</div>
);
export default MyComponent;
Besides the base class .cr-button
you can use one of these classes:
Type | Class |
---|---|
primary | .cr-button--primary |
secondary | .cr-button--secondary |
danger | .cr-button--danger |
fill | .cr-button--fill |
block | .cr-button--block |
noSpacing | .cr-button--no-spacing |
small | .cr-button--small |
large | .cr-button--large |
xlarge | .cr-button--xlarge |
disabled | .cr-button--disabled (only for links, use the disabled attribute on <button> ) |
loading | .cr-button--loading |
The button contains a <span />
to vertically align the content:
Type | Class |
---|---|
content | .cr-button__content |
loading | .cr-button__content--loading |
<button type="button" class="cr-button">
<span class="cr-button__content">My Button</span>
</button>
<button type="button" class="cr-button cr-button--loading" disabled>
<span class="cr-button__content cr-button__content--loading">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" class="cr-icon cr-icon-spinner cr-spinner" style="width: 1.125rem; height: 1.125rem;">
<path class="cr-icon__base cr-icon__base-2" d="M8 16A8 8 0 1 1 8 0a8 8 0 0 1 0 16zm0-3A5 5 0 1 0 8 3a5 5 0 0 0 0 10z" opacity=".3"></path>
<path class="cr-icon__base cr-icon__base-1" d="M8 13a1.5 1.5 0 0 1 0 3A8 8 0 0 1 .323 5.742a1.5 1.5 0 1 1 2.879.846A5 5 0 0 0 8 13z"></path>
</svg>
</span>
<span class="cr-button__content">My Button</span>
</button>
FAQs
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Next.js has patched a critical vulnerability (CVE-2025-29927) that allowed attackers to bypass middleware-based authorization checks in self-hosted apps.
Security News
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
Product
Socket, the leader in open source security, is now available on Google Cloud Marketplace for simplified procurement and enhanced protection against supply chain attacks.