⚡ LoaderX-Arun

May 30, 2026 · View on GitHub

LoaderX-Arun

⚡ LoaderX-Arun

500+ Next-Generation Animated UI Loaders

Zero dependencies · Pure CSS core · Works everywhere

npm size license frameworks


React · Next.js · Vue · Angular · Vanilla HTML · CDN · SSR


🌟 Why LoaderX-Arun?

FeatureDetail
🎨 500+ LoadersSpinners, Dots, Bars, Shapes, Glow, Tech, Nature, Creative, Robotic, Science & Technology
📦 Zero DependenciesPure CSS core — no bloat, no lock-in
Plug & PlayOne CSS file. No build step needed for vanilla HTML
🌳 Tree-ShakableImport only the React components you need
AccessibleARIA roles, aria-live, and screen reader text built-in
🎛️ CSS VariablesColor, size, speed — all customizable via --ul-* variables
🌐 Universal BuildsESM · CJS · UMD (CDN)
🖥️ SSR SafeNo window/document errors in Next.js / Node.js
🔷 Web Components<ul-loader> custom element works in any framework

📦 Installation

# npm
npm install loaderx-arun

# yarn
yarn add loaderx-arun

# pnpm
pnpm add loaderx-arun

CDN (no install required)

<!-- Stylesheet only — all 500+ loaders -->
<link rel="stylesheet" href="https://unpkg.com/loaderx-arun/dist/style.css" />

<!-- UMD bundle (Web Components + utilities) -->
<script src="https://unpkg.com/loaderx-arun/dist/loaderx-arun.umd.js"></script>

🚀 Quick Start

Vanilla HTML (no JavaScript needed)

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" href="https://unpkg.com/loaderx-arun/dist/style.css" />
</head>
<body>

  <!-- Spinner -->
  <div class="ul-loader ul-spinner" role="status" aria-live="polite">
    <span class="ul-sr-only">Loading…</span>
  </div>

  <!-- Dots -->
  <div class="ul-loader ul-dots" role="status" aria-live="polite">
    <span class="ul-dots__dot"></span>
    <span class="ul-sr-only">Loading…</span>
  </div>

  <!-- Neon Ring (glow effect) -->
  <div class="ul-loader ul-neon-ring" role="status" aria-live="polite">
    <span class="ul-sr-only">Loading…</span>
  </div>

  <!-- Custom color & size via CSS variables -->
  <div class="ul-loader ul-spinner"
       style="--ul-color:#ef4444; --ul-size:48px; --ul-speed:0.6s;"
       role="status" aria-live="polite">
    <span class="ul-sr-only">Loading…</span>
  </div>

</body>
</html>

⚛️ React / Next.js

npm install loaderx-arun
import { Loader, Spinner, Dots, Ring, Bars, Pulse, Progress } from 'loaderx-arun/react';
import 'loaderx-arun/style.css';

export default function App() {
  return (
    <div>
      {/* Basic usage */}
      <Spinner />
      <Dots />
      <Ring />

      {/* With props */}
      <Spinner color="#ef4444" size="lg" speed="0.5s" />
      <Loader type="neon-ring" color="#8b5cf6" size="xl" />
      <Loader type="galaxy" color="#06b6d4" />

      {/* Progress bar */}
      <Progress color="#10b981" />

      {/* Custom aria label */}
      <Loader type="dots" label="Fetching your data…" />
    </div>
  );
}

🟢 Vue 3

npm install loaderx-arun
<template>
  <div>
    <ul-loader type="spinner" color="#3b82f6"></ul-loader>
    <ul-loader type="neon-ring" color="#8b5cf6" size="lg"></ul-loader>
    <ul-loader type="dots-typing" color="#10b981"></ul-loader>
    <ul-loader type="equalizer" color="#f59e0b" size="xl"></ul-loader>
  </div>
</template>

<script setup>
import 'loaderx-arun/web-components'; // registers <ul-loader>
</script>

Vue 3 Vite config — tell Vue to skip custom elements:

// vite.config.ts
import vue from '@vitejs/plugin-vue';

export default {
  plugins: [
    vue({
      template: {
        compilerOptions: {
          isCustomElement: (tag) => tag.startsWith('ul-')
        }
      }
    })
  ]
};

🅰️ Angular

npm install loaderx-arun

Step 1 — Add CSS to angular.json:

"styles": [
  "node_modules/loaderx-arun/dist/style.css"
]

Step 2 — Use in any component:

import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import 'loaderx-arun/web-components';

@Component({
  selector: 'app-loading',
  standalone: true,
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
  template: `
    <ul-loader type="spinner" color="#6366f1"></ul-loader>
    <ul-loader type="bars" color="#ef4444" size="lg"></ul-loader>
    <ul-loader type="radar" color="#10b981"></ul-loader>
  `,
})
export class LoadingComponent {}

🌐 Web Components (Framework-agnostic)

<!-- Register once in your entry -->
<script type="module">
  import 'loaderx-arun/web-components';
</script>

<!-- Use anywhere -->
<ul-loader type="spinner"></ul-loader>
<ul-loader type="dots" color="#10b981" size="lg"></ul-loader>
<ul-loader type="ring-neon" color="#8b5cf6" speed="0.8s"></ul-loader>
<ul-loader type="galaxy" color="#06b6d4" size="xl"></ul-loader>

🎨 Customization

CSS Variables (all loaders)

VariableDefaultDescription
--ul-color#3b82f6Primary loader color
--ul-secondary-colorrgba(59,130,246,0.2)Track / secondary color
--ul-size40pxWidth & height
--ul-speed1sAnimation duration
--ul-border-width3pxBorder thickness
--ul-dot-sizecalc(size/4)Dot diameter

Global Theme Override

/* styles.css or :root block */
:root {
  --ul-color: #8b5cf6;   /* purple theme */
  --ul-size: 48px;
  --ul-speed: 0.75s;
}

Per-instance Override

<div class="ul-loader ul-spinner"
     style="--ul-color:#ef4444; --ul-size:32px; --ul-speed:0.5s;">
</div>

React Props

PropTypeDefaultDescription
typeLoaderType'spinner'Loader variant
colorstring'#3b82f6'Primary color
size'sm' | 'md' | 'lg' | 'xl' | string'md'Loader size
speedstring'1s'Animation speed
labelstring'Loading…'Screen reader text
classNamestringExtra CSS class

Size Presets

KeyValue
sm24px
md40px (default)
lg56px
xl80px

🗂️ Loader Categories (500+ total)

CategoryCountExamples
🌀 Spinners & Rings33spinner, ring-neon, gyro, cyclone, dual-ring-pulse
Dots & Particles24dots-typing, fireflies, constellation, dots-clock
📊 Bars & Lines24equalizer, waveform, spectrum, led-bar, stretching
🔷 Shapes & Geometry27cube-3d, hexagon, morph-shape, yin-yang, target
Glow & Neon25neon-ring, plasma, holographic, aurora, reactor
💻 Tech & UI22radar, dna, glitch, matrix, biometric, qr-scan
🌿 Nature19fire-flame, snowflake, tornado, petal-spin, meteor-shower
🎨 Creative & Fun28pacman, jelly, confetti, heart-beat, ripple-send
🤖 Robotic96robo-arm-1, servo-turn-1, android-eye-1, bot-face-1, gear-train-1
🧪 Science97quantum-spin-1, molecule-bond-1, cosmic-orbit-1, particle-beam-1
⚙️ Technology97neural-synapse-1, processor-core-1, cyber-shield-1, binary-matrix-1

Sample Loader Classes

<!-- Spinners -->
<div class="ul-loader ul-spinner"></div>
<div class="ul-loader ul-ring-neon"></div>
<div class="ul-loader ul-gyro"></div>
<div class="ul-loader ul-cyclone"></div>

<!-- Dots -->
<div class="ul-loader ul-dots-typing">
  <span class="ul-d"></span><span class="ul-d"></span><span class="ul-d"></span>
</div>
<div class="ul-loader ul-equalizer">
  <span class="ul-d"></span><span class="ul-d"></span>
  <span class="ul-d"></span><span class="ul-d"></span>
  <span class="ul-d"></span><span class="ul-d"></span>
</div>

<!-- Glow -->
<div class="ul-loader ul-plasma"></div>
<div class="ul-loader ul-holographic"></div>
<div class="ul-loader ul-aurora"></div>

<!-- Tech -->
<div class="ul-loader ul-radar"></div>
<div class="ul-loader ul-glitch"></div>

<!-- Nature -->
<div class="ul-loader ul-fire-flame"></div>
<div class="ul-loader ul-tornado">
  <span class="ul-d"></span><span class="ul-d"></span>
  <span class="ul-d"></span><span class="ul-d"></span>
  <span class="ul-d"></span>
</div>

<!-- Creative -->
<div class="ul-loader ul-pacman"></div>
<div class="ul-loader ul-jelly"></div>
<div class="ul-loader ul-heart-beat"></div>

♿ Accessibility

Every loader ships with proper ARIA support out of the box:

<div class="ul-loader ul-spinner"
     role="status"
     aria-live="polite"
     aria-label="Loading content">
  <span class="ul-sr-only">Loading…</span>
</div>
  • role="status" — marks it as a live region
  • aria-live="polite" — screen readers announce without interrupting
  • .ul-sr-only — visually hidden text for screen readers

In React, the label prop customizes the hidden text:

<Spinner label="Uploading your file, please wait…" />

🌐 Browser Support

BrowserMinimum Version
Chrome80+
Firefox75+
Safari13.1+
Edge80+
iOS Safari13.4+
Android Chrome80+

All loaders use standard CSS animations and custom properties. No JavaScript is required for CSS-only usage.


📦 Package Exports

loaderx-arun                → Core types & utilities (ESM/CJS)
loaderx-arun/react          → React wrapper components
loaderx-arun/web-components → <ul-loader> custom element
loaderx-arun/style.css      → Full bundled CSS (500+ loaders)

Build Output

🛠️ Development

# Clone & install
git clone https://github.com/arun/loaderx-arun.git
cd loaderx-arun
npm install

# Build everything (JS + CSS + UMD)
npm run build

# CSS only (fast rebuild for CSS changes)
npm run build:css

# Type check
npm run typecheck

# Preview demo (http://localhost:4242)
npx http-server . -p 4242
# → open http://localhost:4242/examples/vanilla/index.html

# Clean dist folder
npm run clean

### Adding a New Loader

1. Add CSS to the appropriate file in `src/core/styles/` (or `extra.css`):
   ```css
   .ul-my-loader {
     width: var(--ul-size);
     height: var(--ul-size);
     /* your animation */
   }
  1. Add the name to LOADER_TYPES in src/core/index.ts
  2. Run npm run build:css to regenerate dist/style.css
  3. Add an entry to the LOADERS array in examples/vanilla/index.html

🚢 Publishing

# 1. Build everything
npm run build

# 2. Preview what will be published
npm pack --dry-run

# 3. Login (first time only)
npm login

# 4. Publish
npm publish

Pre-publish checklist:

  • Version bumped in package.json
  • npm run build succeeds
  • Demo page shows all loaders correctly
  • TypeScript types exist in dist/
  • npm pack --dry-run shows only dist/ and README.md

🤝 Contributing

Contributions are welcome! To add new loaders:

  1. Fork the repository
  2. Create a CSS class following the ul- prefix convention
  3. Use CSS variables (--ul-color, --ul-size, --ul-speed) — no hardcoded values
  4. Add to LOADER_TYPES, rebuild, and update the demo
  5. Open a Pull Request with a screenshot 🎉

📄 License

MIT © 2024 Arun


Made with ❤️ by Arun · npm · GitHub

Star ⭐ the repo if LoaderX-Arun helped you!