Loading

A flexible loading component for indicating ongoing processes and async operations. Features customizable spinner animations and loading states.

Default

The default loading spinner with various sizes and feedback states.

Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex placeat unde natus ut ea voluptatum vel officiis commodi optio a totam repellendus, fuga, laborum voluptatibus recusandae eos. Voluptate, vel non!
<script lang="ts">
  import Alert from "@pindoba/svelte-alert";
  import Button from "@pindoba/svelte-button";
  import Loading from "@pindoba/svelte-loading";
  import { stack } from "@pindoba/styled-system/patterns";

  let buttonIsLoading = $state(false);

  function handleOnclick() {
    buttonIsLoading = true;

    setTimeout(() => {
      buttonIsLoading = false;
    }, 2000);
  }
</script>

<div
  class={stack({
    gap: "md",
    direction: "column",
    justify: "center",
    flexWrap: "wrap",
  })}
>
  <Loading isLoading={true}>
    <Alert>
      Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex placeat unde
      natus ut ea voluptatum vel officiis commodi optio a totam repellendus,
      fuga, laborum voluptatibus recusandae eos. Voluptate, vel non!
    </Alert>
  </Loading>

  <Loading isLoading={buttonIsLoading}>
    <Button onclick={handleOnclick}>Click me</Button>
  </Loading>
</div>

Props

Prop
passThrough
passThrough

Custom styling and props for loading elements

Type { root?: { style?: SystemStyleObject; props?: HTMLAttributes<HTMLElement> } }
Default undefined
Required No
children
children

Loading content rendered as children

Type Snippet
Default undefined
Required No
...rest
...rest

Standard HTML div attributes

Type HTMLAttributes<HTMLDivElement>
Default -
Required No