Spinner
Ein Ladeindikator mit Ticks im Apple-Stil oder einem atmenden Ring, der vor dem Anzeigen warten und lange genug sichtbar bleiben kann, um nicht zu flackern.
pnpm dlx shadcn@latest add https://hextaui.com/r/spinner.jsonFügt die Komponente, die HextaUI-Theme-Tokens und alle HextaUI-Komponenten hinzu, von denen sie abhängt.
Füge die Theme-Tokens zu deinem globalen CSS hinzu, falls du das noch nicht getan hast.
Installiere die Abhängigkeiten.
pnpm add class-variance-authority cnKopiere den folgenden Code und füge ihn in dein Projekt ein.
components/ui/spinner.tsx Passe die Importpfade an dein Projekt-Setup an.
Der Standard ist der Acht-Speichen-Indikator von Apple-Plattformen. variant="ring" dreht sich, während sein Bogen wächst und schrumpft, sodass er nach Arbeit statt nach Hängen aussieht. Beide werden in der aktuellen Textfarbe gezeichnet.
Ohne Flackern
Übergib loading, und der Spinner wartet delay (150ms), bevor er erscheint, sodass schnelle Ladevorgänge ihn nie aufblitzen lassen, und bleibt dann mindestens minDuration (400ms) sichtbar.
Größen
sm, default, lg und xl für beide Varianten.
Inline
Neben Text markiere den Spinner mit aria-hidden, damit die Worte sprechen. Allein sagt er sein label an.
In Buttons
Button und Command nutzen diesen Spinner für ihre Ladezustände, in der Größe der Icons des Buttons.
- Allein ist der Spinner ein
status, benannt durchlabel(„Loading“). - Mit
aria-hiddenverliert er seine Rolle, zur Verwendung neben sichtbarem Text oder in einem beschäftigten Button. - Bei reduzierter Bewegung pulsiert er sanft, statt sich zu drehen, und zeigt so weiterhin, dass etwas passiert.
| Prop | Typ | Standard |
|---|---|---|
variant | "ticks" | "ring" | "ticks" |
sizenull überlässt die Größe dem Elternelement. | "sm" | "default" | "lg" | "xl" | null | "default" |
label | string | "Loading" |
loadingSchaltet verzögertes Anzeigen ein. Lass es weg, um immer anzuzeigen. | boolean | – |
delay | number | 150 |
minDuration | number | 400 |
animatedPausiere die Animation, ohne sie auszublenden. | boolean | true |
| Attribut | Beschreibung |
|---|---|
data-slot="spinner" | Das SVG, mit data-variant. |
Dasselbe Timing als Hook, für Skeletons, Overlays oder alles, was nicht aufblitzen soll. Siehe den useDelayedLoading-Guide.
- useDelayedLoadingZeigt einen Ladezustand nur, wenn die Arbeit tatsächlich langsam ist, und hält ihn dann lange genug, damit er nie flackert.
- AlertInline-Meldungen für Status und Feedback, mit neutraler Fläche, farbigem Icon und einem Schließen, das sanft zusammenklappt.
- EmptyEin Platzhalter für Ansichten, in denen es noch nichts zu zeigen gibt, mit Icon, Nachricht und der nächsten Aktion.
- ProgressEin Balken oder Ring, der zeigt, wie weit eine Aufgabe fortgeschritten ist, sanft zwischen Aktualisierungen wechselt und gleitet, solange die Gesamtmenge unbekannt ist.
- SkeletonPlatzhalter, die 150 ms warten, bevor sie erscheinen, exakt die Größe des umschlossenen Inhalts annehmen und ihn einblenden, ohne etwas zu verschieben.
- ToastKurze Nachrichten, die sich sauber stapeln, bei Hover aufklappen, weggewischt werden können und einen Ladezustand an Ort und Stelle in Erfolg oder Fehler verwandeln.
In Blocks verwendet
Blocks, die auf Spinner aufbauen.
- ArtifactDas Panel neben einem KI-Chat, das zeigt, was das Modell erzeugt hat. Webseiten, SVGs, Dokumente und Code streamen live ein und wechseln dann zu einer Sandbox-Vorschau, mit Versionen zum Vergleichen und Wiederherstellen, einem anpassbaren Split und einem Bottom Sheet auf Smartphones.
- Chat SidebarDie Seitenleiste für eine Chat-App. Logo, Suche und Neuer Chat oben, deine eigenen Links darunter, angeheftete Chats, Projekte, die sich aufklappen und ihre Chats zeigen, zuletzt verwendete nach Tag gruppiert und Zeilen mit Hover- und Rechtsklick-Menüs, direktem Umbenennen, Löschen mit Rückgängig und Live-Antwortzuständen.
- Diff ReviewPrüfe die Änderungen eines Agenten über mehrere Dateien, bevor sie übernommen werden. Ein Dateibaum mit Zählern, jede Änderung, jede Datei oder alles annehmen oder ablehnen, Kommentare zu jeder Zeile oder jedem Bereich, die an den Agenten zurückgehen, Unified- und Split-Ansicht, Hervorhebung auf Wortebene, Rückgängig, streamende Änderungen und eine Zusammenfassung „4 Dateien bearbeitet“ für den Chat.
- ProfileDer Bereich „Profil“ in den Einstellungen eines KI-Produkts. Ein Foto kreisförmig zuschneiden, einen Benutzernamen wählen, der beim Tippen geprüft wird, eine neue E-Mail mit einem 6-stelligen Code bestätigen, Links hinzufügen, die die Website erkennen, und eine Live-Karte sehen, wie andere dich sehen.