Spinner.svelte 628 B

12345678910111213141516171819
  1. <script lang="ts">
  2. import type { BaseComponentProps } from "@json-render/svelte";
  3. import type { ShadcnProps } from "./catalog.js";
  4. interface Props extends BaseComponentProps<ShadcnProps<"Spinner">> {}
  5. let { props }: Props = $props();
  6. const sizeClass = $derived(
  7. props.size === "sm" ? "size-4" : props.size === "lg" ? "size-8" : "size-6",
  8. );
  9. </script>
  10. <div class="inline-flex items-center gap-2 text-muted-foreground">
  11. <div class={`animate-spin rounded-full border-2 border-current border-t-transparent ${sizeClass}`}></div>
  12. {#if props.label}
  13. <span class="text-sm">{props.label}</span>
  14. {/if}
  15. </div>