logo-icon
STWUI

Button

Buttons allow the user to take actions or make choices.

Basic
I am a link


svelte
<script lang="ts">
	import { Button } from 'stwui';
</script>

<Button on:click={() => console.log("I've been clicked!")}>Default button</Button>
<Button type="primary">I am primary</Button>
<Button type="danger">I am scary</Button>
<Button type="ghost">Boo I am a ghost</Button>
<Button type="link" href="https://google.com">I am a link</Button>
Loading


svelte
<script lang="ts">
	import { Button } from 'stwui';
</script>

<Button loading>Default button</Button>
<Button type="primary" loading>I am primary</Button>
<Button type="danger" loading>I am scary</Button>
<Button type="ghost" loading>Boo I am a ghost</Button>
<Button type="link" loading>I am a link</Button>
Disabled


svelte
<script lang="ts">
	import { Button } from 'stwui';
</script>

<Button disabled>Default button</Button>
<Button type="primary" disabled>I am primary</Button>
<Button type="danger" disabled>I am scary</Button>
<Button type="ghost" disabled>Boo I am a ghost</Button>
<Button type="link" disabled>I am a link</Button>
Leading & Trailing


svelte
<script lang="ts">
	import { Button } from 'stwui';

	const home = "svg-path";
</script>

<Button>
	<Button.Leading data={home} slot="leading" />
	Default button
</Button>

<Button type="primary">
	<Button.Leading data={home} slot="leading" />
	I am primary
</Button>

<Button type="danger">
	I am scary
	<Button.Trailing data={home} slot="trailing" />
</Button>

<Button type="ghost">
	Boo I am a ghost
	<Button.Trailing data={home} slot="trailing" />
</Button>

<Button type="link">
	I am a link
	<Button.Trailing data={home} slot="trailing" />
</Button>
Shape


svelte
<script lang="ts">
	import { Button } from 'stwui';

	const home = "svg-path";
</script>

<Button shape="circle">
	<Button.Icon data={home} slot="icon" />
</Button>

<Button type="primary" shape="square">I am primary</Button>

<Button type="danger" shape="rounded">I am scary</Button>

<Button type="ghost">Boo I am a ghost</Button>

<Button type="link">I am a link</Button>
Swap Icon


svelte
<script lang="ts">
	import { Button, Swap } from 'stwui';

   let loading = false;

   function toggleLoading() {
      loading = !loading;
   }
</script>

<Button shape="circle" on:click={toggleLoading}>
	<Swap slot="icon" {loading}>
		<Button.Icon data={menu} slot="on" />
		<Button.Icon data={close} slot="off" />
	</Swap>
</Button>

<Button type="primary">
	<Swap {loading} slot="leading">
		<Button.Icon data={menu} slot="on" />
		<Button.Icon data={close} slot="off" />
	</Swap>
	I am primary
</Button>
Sizes

Button Props

disabled boolean false
htmlType 'button' | 'submit' | 'reset' button
loading boolean false
defaultLoading boolean true
type 'default'| 'primary' | 'danger' | 'ghost' | 'link' | 'text' | 'dark' | undefined
shape 'square' | 'circle' | 'rounded' | 'pill' rounded
size 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'fab' md
disableHover boolean false
ariaLabel string | undefined
href string | undefined

Button Slots

leading <Button.Leading slot="leading" />
icon <Button.Icon slot="icon" />
default
trailing <Button.Trailing slot="trailing" />

Button.Leading Props

data string (IconData)
viewBox string 0 0 24 24
size string 24px
width string 24px
height string 24px
color string currentColor
stroke string | undefined
fill string currentColor

Button.Icon Props

data string (IconData)
viewBox string 0 0 24 24
size string 24px
width string 24px
height string 24px
color string currentColor
stroke string | undefined
fill string currentColor

Button.Trailing Props

data string (IconData)
viewBox string 0 0 24 24
size string 24px
width string 24px
height string 24px
color string currentColor
stroke string | undefined
fill string currentColor