Skip to content
Nerdfishui
Esc
navigateopen⌘Jpreview
On this page

Spinner

An indicator that can be used to show a loading state.

'use client'

import { Item, ItemContent, ItemMedia, ItemTitle } from '@nerdfish/react/item'
import { Spinner } from '@nerdfish/react/spinner'

export default function SpinnerExample() {
	return (
		<div className="gap-friends flex w-full flex-col [--radius:1rem]">
			<Item variant="muted">
				<ItemMedia>
					<Spinner />
				</ItemMedia>
				<ItemContent>
					<ItemTitle className="line-clamp-1">Processing payment...</ItemTitle>
				</ItemContent>
				<ItemContent className="flex-none justify-end">
					<span className="text-sm tabular-nums">$100.00</span>
				</ItemContent>
			</Item>
		</div>
	)
}

Color

'use client'

import { Spinner } from '@nerdfish/react/spinner'

export default function SpinnerColorExample() {
	return (
		<div className="flex items-center gap-6">
			<Spinner className="text-destructive size-6" />
			<Spinner className="text-success size-6" />
			<Spinner className="text-info size-6" />
			<Spinner className="text-warning size-6" />
		</div>
	)
}

Size

'use client'

import { Spinner } from '@nerdfish/react/spinner'

export default function SpinnerSizeExample() {
	return (
		<div className="flex items-center gap-6">
			<Spinner className="size-3" />
			<Spinner className="size-4" />
			<Spinner className="size-6" />
			<Spinner className="size-8" />
		</div>
	)
}

Button

'use client'

import { Button } from '@nerdfish/react/button'
import { Spinner } from '@nerdfish/react/spinner'

export default function SpinnerButtonExample() {
	return (
		<div className="flex flex-col items-center gap-4">
			<Button disabled size="sm">
				<Spinner />
				Loading...
			</Button>
			<Button variant="outline" disabled size="sm">
				<Spinner />
				Please wait
			</Button>
			<Button variant="secondary" disabled size="sm">
				<Spinner />
				Processing
			</Button>
		</div>
	)
}