❄ SnowballSH Foundation UI

Spinner

One recipe, two bindings — rendered side by side from the same source the package ships.

React

LoadingLoadingRespects reduced motion.
spinner.demo.tsx
import { Spinner } from "../react/index.js";

export default function SpinnerDemo() {
  return (
    <div className="flex items-center gap-6">
      <Spinner size="sm" />
      <Spinner size="md" />
      <span className="text-sm text-ink-secondary">
        Respects reduced motion.
      </span>
    </div>
  );
}

Svelte

Loading Loading Respects reduced motion.
spinner.demo.svelte
<script lang="ts">
  import { Spinner } from "../svelte/index.js";
</script>

<div class="flex items-center gap-6">
  <Spinner size="sm" />
  <Spinner size="md" />
  <span class="text-sm text-ink-secondary">Respects reduced motion.</span>
</div>