Installation
Install the dependencies
pnpm add cnCopy the component
Copy the following files into src/lib/components/ui/spinner.
<script lang="ts">
import type { SpinnerProps } from './types.js';
import { cn } from 'cn';
import Loader2Icon from '@lucide/svelte/icons/loader-2';
let { class: classProp, ...props }: SpinnerProps = $props();
</script>
<Loader2Icon
data-slot="spinner"
role="status"
aria-label="Loading"
class={cn('size-4 animate-spin', classProp)}
{...props}
/>import type { SVGAttributes } from 'svelte/elements';
export type SpinnerProps = Omit<SVGAttributes<SVGSVGElement>, 'children'>;export { default as Spinner } from './Spinner.svelte';
export type { SpinnerProps } from './types.js';Update the import paths
Change the imports to match your project setup.
Usage
<script lang="ts">
import { Spinner } from '$lib/components/ui/spinner';
</script><Spinner class="size-6" />