thinking-orbs-vue

Vue 3 port of thinking-orbs — dotted thought-orb loading indicators for AI & agent UIs. Zero runtime dependencies, no React.
200
Install
npm install thinking-orbs-vue
Latest Version:0.1.0
Vue:3
License:MIT
Last Updated:Sep 25, 2026
Links: GitHub  ·  npm
Maintainer: agattaollamast

thinking-orbs-vue

Dotted thought-orb loading indicators for AI & agent UIs, for Vue 3 and Nuxt.

A Vue port of thinking-orbs by Jakub Antalik. It bundles upstream's own engine untouched, so the orbs render exactly like the React original. No runtime dependencies, no React, ~8 kB gzipped.

Install

npm install thinking-orbs-vue   # or pnpm / yarn / bun

Usage

<script setup lang="ts">
import { ThinkingOrb } from 'thinking-orbs-vue';
</script>

<template>
  <ThinkingOrb state="searching" />
  <ThinkingOrb state="composing" :size="20" theme="dark" :speed="1.5" />
</template>
Prop Type Default Description
state see below 'working' Which animation to show.
size 64 | 20 64 Tuned size preset, in CSS px.
theme 'auto' | 'dark' | 'light' 'auto' Ink palette. auto follows the host page.
speed number 1 Multiplier on top of the preset's tuned speed.
paused boolean false Freeze on the current frame.

States: working, searching, solving, listening, connecting, weaving, composing, breathing, shaping. You can browse them all on the upstream demo.

Sizes: only 64 and 20 exist. Each one is a separately tuned design, not a scale factor.

Theme: auto uses the nearest ancestor with data-theme="dark|light" or a dark / light class (Tailwind, shadcn-vue and @nuxtjs/color-mode all follow this convention). Otherwise it falls back to prefers-color-scheme.

Other attributes (class, style, aria-label…) go to the underlying <canvas>. The orb pauses when offscreen or when the tab is hidden, and shows a static frame under prefers-reduced-motion.

Nuxt

The component is SSR-safe, so you don't need <ClientOnly>. Import it where you need it, or register it globally:

// plugins/thinking-orbs.ts
import { ThinkingOrb } from 'thinking-orbs-vue';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.component('ThinkingOrb', ThinkingOrb);
});

License

MIT. Includes code from thinking-orbs, © Jakub Antalik, MIT; see NOTICE.

Related Packages

thinking-orbs-vue3

Vue 3 port of the dotted thought-orb loading indicators for AI and agent UIs

1,087
vue-agent-fx

Vue 3 port of Libraries.dev: thinking orbs, border beam, voice glow and image lo...

209 0
vue-global-loader

Global loaders made easy for Vue and Nuxt

2,084 17
@loader-kit/web

LoaderKit loading and progress indicators for the web: a canvas renderer, and cu...

843 1
vue-loading-overlay

Vue.js component for full screen loading indicator.

2,880,068 1,261

Version History

Version Released Vue License
0.1.0 ^3.5.2 MIT