Spinner
A loading spinner component for indicating loading or processing states.
Installation
bash
npx @galaxy-stack/nebula-cli@latest add spinnerbash
pnpm dlx @galaxy-stack/nebula-cli@latest add spinnerbash
yarn dlx @galaxy-stack/nebula-cli@latest add spinnerbash
bunx @galaxy-stack/nebula-cli@latest add spinnerbash
# If you have installed galaxy-design globally
galaxy-design add spinnerDependencies
This component automatically installs the following dependencies:
- React:
class-variance-authority - Vue:
class-variance-authority - Angular:
class-variance-authority - React Native:
nativewind,tailwindcss - Flutter: No additional dependencies
No manual installation needed!
Usage
Basic Example
tsx
import { Spinner } from "@/components/ui/spinner"
export default function SpinnerDemo() {
return <Spinner />
}vue
<script setup lang="ts">
import { Spinner } from '@/components/ui/spinner'
</script>
<template>
<Spinner />
</template>Size Variants
tsx
import { Spinner } from "@/components/ui/spinner"
export default function SpinnerSizes() {
return (
<div className="flex gap-4 items-center">
<Spinner size="sm" />
<Spinner size="default" />
<Spinner size="lg" />
</div>
)
}vue
<script setup lang="ts">
import { Spinner } from '@/components/ui/spinner'
</script>
<template>
<div class="flex gap-4 items-center">
<Spinner size="sm" />
<Spinner size="default" />
<Spinner size="lg" />
</div>
</template>With Text
tsx
import { Spinner } from "@/components/ui/spinner"
export default function SpinnerWithText() {
return (
<div className="flex items-center gap-2">
<Spinner />
<span>Loading...</span>
</div>
)
}vue
<script setup lang="ts">
import { Spinner } from '@/components/ui/spinner'
</script>
<template>
<div class="flex items-center gap-2">
<Spinner />
<span>Loading...</span>
</div>
</template>API Reference
Props
| Prop | Type | Default | Description | Framework Support |
|---|---|---|---|---|
size | `'sm' | 'default' | 'lg'` | 'default' |
className / class | string | '' | CSS class names | All |
ariaLabel | string | 'Loading...' | Accessible label | All |
Accessibility
- Screen Reader: Uses
role="status"andaria-labelfor loading state - Focus Management: Does not receive focus (decorative)
- WCAG Compliance: WCAG 2.1 Level AA compliant
Author
Bùi Trọng Hiếu (kevinbui)
- GitHub: @buikevin
- Email: kevinbui210191@gmail.com
License
MIT © 2025 Bùi Trọng Hiếu (kevinbui)
