Yükleniyor
Bekleyen gönderme, veri alma işlemleri ve satır içi meşgul durumları için animasyonlu bir yükleme göstergesi — herhangi bir neobrütalist kontrol için hazır kullanıma uygun bir simge.
import {
Item,
ItemContent,Spinner, devam eden bir işlemi belirten tek bir animasyonlu simgedir. lucide-react kütüphanesindeki LoaderIcon simgesini animate-spin ile sarar ve role="status" ile bir aria-label'ı hazır olarak sunar — arada bir primitif kütüphane yoktur, bu yüzden her iki backend de aynı implementasyonu paylaşır; currentColor'ı miras alarak içinde bulunduğu neobrütalist kontrole uyum sağlar.
Şu durumlarda tercih edin:
- Bekleyen gönderimler — mutasyon çalışırken düğmenin içine yerleştirin; etiket yerinde kalır.
- Satır içi bekleme durumları — veri bekleyen rozetler, giriş grupları ve tablo hücreleri.
- Bölüm düzeyinde yüklemeler — bir panel akışla gelirken
Emptyile birlikte kullanın.
Kurulum#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/spinner.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/spinner.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/spinner.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/spinner.json
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
import { Loader2Icon } from "lucide-react"
import { cn } from "@/lib/utils"
function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
return (
<Loader2Icon
data-slot="spinner"
role="status"
aria-label="Loading"
className={cn("size-4 animate-spin", className)}
{...props}
/>
)
}
export { Spinner }
İçe aktarma yollarını proje yapılandırmanıza göre güncelleyin.
Kullanım#
import { Spinner } from "@/components/ui/spinner"<Spinner />Özelleştirme#
Spinner bileşenini düzenleyerek varsayılan spinner simgesini başka herhangi bir simgeyle değiştirebilirsiniz.
import { LoaderIcon } from "lucide-react"
import { cn } from "@/lib/utils"import { LoaderIcon } from "lucide-react"
import { cn } from "@/lib/utils"
function Spinner({ className, ...props }: React.ComponentProps<"svg">) {
return (
<LoaderIcon
role="status"
aria-label="Loading"
className={cn("size-4 animate-spin", className)}
{...props}
/>
)
}
export { Spinner }Örnekler#
Boyut#
Spinner'ın boyutunu değiştirmek için size-* yardımcı sınıfını kullanın.
import { Spinner } from "@/components/ui/spinner"
export function SpinnerSize() {Button#
Bir yükleme durumunu göstermek için bir düğmeye spinner ekleyin. Başlangıç konumu için <Spinner />'ı etiketten önce data-icon="inline-start" ile, bitiş konumu için etiketten sonra data-icon="inline-end" ile yerleştirin.
import { Button } from "@/components/ui/button"
import { Spinner } from "@/components/ui/spinner"
Badge#
Bir yükleme durumunu göstermek için bir rozete spinner ekleyin. Başlangıç konumu için <Spinner />'ı etiketten önce data-icon="inline-start" ile, bitiş konumu için etiketten sonra data-icon="inline-end" ile yerleştirin.
import { Badge } from "@/components/ui/badge"
import { Spinner } from "@/components/ui/spinner"
Input Group#
import { ArrowUpIcon } from "lucide-react"
import {Empty#
import { Button } from "@/components/ui/button"
import {
Empty,RTL#
Neobrutalism'de RTL desteğini etkinleştirmek için RTL yapılandırma kılavuzuna bakın.
"use client"
import * as React from "react"Erişilebilirlik#
Spinner, aria-label="Loading" ile role="status" olarak işlenir; böylece ekran okuyucular yükleme durumunu ek bir kurulum olmadan duyurur. Yakındaki metin durumu zaten anlatıyorsa ("Kaydediliyor…"), spinner'a bunun yerine aria-hidden="true" geçirin — tek duyuru yeterlidir. Yükleme durumuna geçen bir bölgenin tamamı içinse kapsayıcıya aria-busy="true" verin.