@asphalt-react/button v2.5.0
Button
Buttons provide a way to trigger an action. The caption of a Button should hint what action it'll perform. The caption is typically text but Buttons can also have an icon with text or just an icon (which we call as Icon Button).
Buttons's caption decides its width by default, but it can also stretch to take its container's width. Buttons can form a group by sticking to each other enabling use cases like split button.
Usage
import { Button } from '@asphalt-react/button'
<Button>Click me</Button>Variants & Intents
Buttons come in 4 variants to emphasize different levels:
- Primary (default): For strong call to an action.
- Secondary: For supporting primary buttons.
- Tertiary: For actions less important than primary actions.
- Nude: For least important actions.
There are 3 intents, which paired with the above variants address multiple supportive actions:
- Brand (default): For most recommended action.
- Danger: For actions that have some element of risk like deletion.
- System: For less recommended actions.
Variants and an intents are mutually exclusive. Button falls back to the default value if a variant or intent occurs more than once. For example, using primary and nude together will fallback to a primary variant.
Sizes
Buttons support 4 sizes: - extra small (xs) - small (s) - medium (m) - large (l)
Link styled as Button
Button features the ability to render a semantic link styled as a button (which we call Link Button). Link Buttons and Icon Link Buttons — icon as caption — handle security and privacy risks if the link opens in a new tab.
Split Button
You can make a split button by grouping a default action button with a menu button.
Set stickEnd to true on start button and stickStart to true on the end button.
Use stick prop optionally on the the end button to enhance it's style in order to make default and menu button look good together. stick adds spacing to the left of the primary, tertiary & nude variant buttons, in case of secondary variant it removes the left border.
import { Button } from '@asphalt-react/button'
<div>
<Button stickEnd>Default action</Button>
<Button stickStart stick>Menu</Button>
</div>Accessibility
Buttons accept React
refto give access to the underlying element.They accept most of the button element's attributes such as
disabled&onClickand supports data-* attributes.The rendered button element has a
typeattribute set to "button". You may override thetypeattribute if needed.All buttons are focusable and keyboard navigable; tab (or shift+tab when tabbing backwards).
space and enter keys trigger the buttons when in focus.
enter key triggers the link buttons when in focus.
All buttons accept the aria-* attributes button role.
Link buttons accept the aria-* attributes for the link role.
Accessibility must-haves
Add aria-label or aria-labelledby in Icon Button to help assistive technologies.
Props
children
React node for button's caption
| type | required | default |
|---|---|---|
| node | true | N/A |
primary
Renders a primary variant
| type | required | default |
|---|---|---|
| bool | false | false |
secondary
Renders a secondary variant
| type | required | default |
|---|---|---|
| bool | false | false |
tertiary
Renders a tertiary variant
| type | required | default |
|---|---|---|
| bool | false | false |
nude
Renders a nude variant
| type | required | default |
|---|---|---|
| bool | false | false |
brand
Renders brand intent
| type | required | default |
|---|---|---|
| bool | false | false |
danger
Renders danger intent
| type | required | default |
|---|---|---|
| bool | false | false |
system
Renders system intent
| type | required | default |
|---|---|---|
| bool | false | false |
link
Renders a link button
| type | required | default |
|---|---|---|
| bool | false | false |
as
Link element to render. Accepts an HTML element or a React component.
| type | required | default |
|---|---|---|
| elementType | false | "a" |
asProps
Accepts props & attributes for the link element.
| type | required | default |
|---|---|---|
| object | false | { href: "." } |
icon
Renders an icon button
| type | required | default |
|---|---|---|
| bool | false | false |
compact
Shrinks the size of the Button keeping the size of the contents intact. Useful for use-cases with space-constraints.
| type | required | default |
|---|---|---|
| bool | false | false |
qualifier
Qualifier is an icon or a word that enhances the caption. Button prepends the qualifier by default. Accepts SVG for icons. Checkout @asphalt-react/iconpack for SVG wrapped React components.
⚠️ Do not use
qualifierto render an icon button, useiconprop instead
| type | required | default |
|---|---|---|
| union | false | null |
qualifierEnd
Appends qualifier to the caption
| type | required | default |
|---|---|---|
| bool | false | false |
size
Controls size of button. Possible values are "xs", "s", "m", "l" for extra small, small, medium & large respectively
| type | required | default |
|---|---|---|
| enum | false | "m" |
stretch
Stretches Button to take it's container width
| type | required | default |
|---|---|---|
| bool | false | false |
stickStart
Adapts to let other buttons stick to its start
| type | required | default |
|---|---|---|
| bool | false | false |
stickEnd
Adapts to let other buttons stick to its end
| type | required | default |
|---|---|---|
| bool | false | false |
stick
Enhances the style of the supporting button.
| type | required | default |
|---|---|---|
| bool | false | false |
underline
Adds underline in link Button
| type | required | default |
|---|---|---|
| bool | false | true |
11 months ago
9 months ago
5 months ago
8 months ago
9 months ago
10 months ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago