Skip to content
tcpsystemsui

Theme

Colour scheme
Accent
Density
Radius
Esc

Button

Triggers an action, or navigates when given href. One primary per view.

Try it

Svelte
<Button variant="primary">Save changes</Button>

Examples

Variants

Variants.svelte
<script lang="ts">
	import Button from '@tcpsystems/ui/foundation/Button';
	import Cluster from '@tcpsystems/ui/foundation/Cluster';
</script>

<Cluster>
	<Button variant="primary">Deploy</Button>
	<Button>Preview</Button>
	<Button variant="ghost">Cancel</Button>
	<Button variant="danger">Delete</Button>
</Cluster>

States

A link
States.svelte
<script lang="ts">
	import Button from '@tcpsystems/ui/foundation/Button';
	import Cluster from '@tcpsystems/ui/foundation/Cluster';
</script>

<Cluster>
	<Button variant="primary" icon="plus">New project</Button>
	<Button variant="primary" loading loadingLabel="Saving">Save</Button>
	<Button disabled>Disabled</Button>
	<Button href="/components/" iconEnd="arrow-right">A link</Button>
	<Button iconOnly icon="download" aria-label="Download" />
</Cluster>

Sizes

Sizes.svelte
<script lang="ts">
	import Button from '@tcpsystems/ui/foundation/Button';
	import Cluster from '@tcpsystems/ui/foundation/Cluster';
</script>

<Cluster>
	<Button size="sm">Small</Button>
	<Button>Medium</Button>
	<Button size="lg">Large</Button>
</Cluster>

API

Import
import Button from '@tcpsystems/ui/foundation/Button';
PropTypeDefault
variant?'primary' | 'secondary' | 'ghost' | 'danger''secondary'
size?'sm' | 'md' | 'lg''md'
href?stringnone
icon?stringnone
iconEnd?stringnone
iconOnly?booleanfalse
block?booleanfalse
loading?booleanfalse
loadingLabel?stringnone
disabled?nativefalse
type?native'button'
target?nativenone
rel?nativenone
track?nativenone
Snippet
children
HookKind
.tcp-buttonRoot class
data-blockData attribute
data-icon-onlyData attribute
data-sizeData attribute
data-tcp-trackData attribute
data-variantData attribute