SliderSwitch
Get Started
Introduction
Components
Accordion
Badge
Button
Card
Checkbox
Command
Dialog
Dropdown Menu
Input
Select
Switch
Table
Tabs
Toast
Tooltip
Forms
Controlled Input
Field Arrays
Submit
Validation

Spinner

An animated loading indicator for async operations.

default
size-4
size-6
size-8
size-12

#Installation

bunx --bun barefoot add spinner

#Usage

1import { Spinner } from "@/components/ui/spinner"23function SpinnerDemo() {4  return <Spinner />5}

#Examples

#Sizes

1import { Spinner } from '@/components/ui/spinner'23function SpinnerSizes() {4  return (5    <div className="flex items-center gap-4">6      <Spinner className="size-4" />7      <Spinner className="size-6" />8      <Spinner className="size-8" />9      <Spinner className="size-12" />10    </div>11  )12}

#Button Loading

1"use client"23import { createSignal } from '@barefootjs/dom'4import { Spinner } from '@/components/ui/spinner'5import { Button } from '@/components/ui/button'67function SpinnerButton() {8  const [loading, setLoading] = createSignal(false)910  const handleClick = (e: Event) => {11    e.preventDefault()12    if (loading()) return13    setLoading(true)14    setTimeout(() => setLoading(false), 2000)15  }1617  return (18    <Button disabled={loading()} onClick={handleClick}>19      <Spinner className={`size-4 ${loading() ? '' : 'hidden'}`} />20      <span>{loading() ? 'Processing...' : 'Submit'}</span>21    </Button>22  )23}

#API Reference

PropTypeDefaultDescription
classNamestring''Additional CSS classes. Use size utilities like "size-4" or "size-6" to change the spinner size.
aria-labelstring'Loading'Accessible label for the spinner.