modern-loaders 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # modern-loaders
4
4
 
5
- **100 colorful, animated loaders for React.**
5
+ **212 colorful, animated loaders for React.**
6
6
 
7
7
  Pure CSS motion behind one typed component — no runtime dependencies, no SVG, no images.
8
8
 
@@ -10,6 +10,11 @@ Pure CSS motion behind one typed component — no runtime dependencies, no SVG,
10
10
  [![size](https://img.shields.io/bundlephobia/minzip/modern-loaders?color=ec4899&label=gzipped)](https://bundlephobia.com/package/modern-loaders)
11
11
  [![types](https://img.shields.io/npm/types/modern-loaders?color=22d3ee)](https://www.npmjs.com/package/modern-loaders)
12
12
  [![license](https://img.shields.io/npm/l/modern-loaders?color=8b5cf6)](./LICENSE)
13
+ [![demo](https://img.shields.io/badge/demo-live-10b981)](https://modern-loaders.netlify.app/)
14
+
15
+ ### [**→ Browse all 212 loaders live**](https://modern-loaders.netlify.app/)
16
+
17
+ Search by name, filter by family, tune size / speed / palette, and copy the JSX for any of them.
13
18
 
14
19
  </div>
15
20
 
@@ -33,9 +38,9 @@ remember, nothing to configure in Vite, Next.js, CRA, or Tailwind.
33
38
 
34
39
  ## Why this one
35
40
 
36
- - **100 variants across 10 families** — spinners, dots, bars, shapes, progress, grids, pulses, organic, skeletons, and dimensional.
41
+ - **212 variants across 20 families** — spinners, dots, bars, shapes, progress, grids, pulses, organic, skeletons, dimensional, neon, liquid, glitch, particles, futuristic, elastic, minimal, gradient, kinetic, and premium.
37
42
  - **Three props to learn.** `size`, `speed`, `colors`. Everything else has a sensible default.
38
- - **Zero dependencies.** ~2 kB of JS. All motion is CSS keyframes, so it runs off the main thread.
43
+ - **Zero dependencies.** ~4 kB of JS. All motion is CSS keyframes — no rAF loop, no JS on the animation path.
39
44
  - **Fully typed.** `variant` autocompletes every id, and a typo is a compile error.
40
45
  - **Accessible by default.** Each loader is a labelled `role="status"` and honours `prefers-reduced-motion`.
41
46
  - **Themeable without a build step.** Every value is a CSS custom property you can override.
@@ -46,7 +51,7 @@ remember, nothing to configure in Vite, Next.js, CRA, or Tailwind.
46
51
 
47
52
  | prop | type | default | description |
48
53
  |---|---|---|---|
49
- | `variant` | `LoaderVariant` | `"aurora"` | Which loader to render — any of the 100 ids below. |
54
+ | `variant` | `LoaderVariant` | `"aurora"` | Which loader to render — any of the 212 ids below. |
50
55
  | `size` | `number \| string` | `48` | Overall size. A number means pixels; strings pass through (`"3rem"`). |
51
56
  | `speed` | `number \| string` | `1` | Base duration. A number means seconds; lower is faster. |
52
57
  | `colors` | `string[]` | indigo / pink / cyan | One to three colors. Fewer are cycled, so a single color gives a clean monochrome loader. |
@@ -63,6 +68,10 @@ Every other `div` prop — `className`, `style`, `id`, `onClick`, `data-*` — p
63
68
  | Upload, install, multi-step work | **Progress** | Says "work is moving", not just "wait". |
64
69
  | Live, polling, listening | **Pulses** | Reads as a heartbeat rather than a block. |
65
70
  | Splash, empty state, 404 | **Shapes**, **Organic**, **Dimensional** | Personality is worth the pixels here. |
71
+ | Onboarding, upload, sync | **Premium** | Restrained, product-grade motion that won't date. |
72
+ | Dense UI — toolbars, table cells | **Minimal** | Small and low-contrast; won't pull the eye off the data. |
73
+ | Games, launch screens, dev tools | **Neon**, **Futuristic**, **Glitch** | Loud on purpose. Best on a dark surface. |
74
+ | Playful or brand-forward moments | **Liquid**, **Particles**, **Elastic**, **Kinetic** | Physical motion people actually watch. |
66
75
 
67
76
  ### Recipes
68
77
 
@@ -71,7 +80,7 @@ Every other `div` prop — `className`, `style`, `id`, `onClick`, `data-*` — p
71
80
  ```tsx
72
81
  <button disabled={busy}>
73
82
  {busy
74
- ? <Loader variant="dots" size={16} colors={["currentColor"]} label={null} />
83
+ ? <Loader variant="pulse-dots" size={16} colors={["currentColor"]} label={null} />
75
84
  : "Save"}
76
85
  </button>
77
86
  ```
@@ -102,9 +111,11 @@ VARIANTS.filter(v => v.group === "Skeletons")
102
111
  .map(v => <Loader key={v.id} variant={v.id} />);
103
112
  ```
104
113
 
105
- ## All 100 variants
114
+ ## All 212 variants
106
115
 
107
- Expand a family to see its variants. Every id maps to a `.ldr--<id>` CSS class.
116
+ Every id maps to a `.ldr--<id>` CSS class. The tables below are the full reference; to *see* them
117
+ moving, use the [live gallery](https://modern-loaders.netlify.app/) — it renders every variant with
118
+ your own size, speed, and colours, and copies the JSX for you.
108
119
 
109
120
  <details>
110
121
  <summary><b>Spinners</b> · 10 — Rings and arcs — the classic shape, modernised.</summary>
@@ -286,6 +297,198 @@ Expand a family to see its variants. Every id maps to a `.ldr--<id>` CSS class.
286
297
 
287
298
  </details>
288
299
 
300
+ <details>
301
+ <summary><b>Neon</b> · 12 — Light that hums, blooms, and flickers alight.</summary>
302
+
303
+ | variant | what it looks like |
304
+ |---|---|
305
+ | `neon-ring` | a glass tube that hums, with a lit filament turning inside it |
306
+ | `neon-pulse` | a white-hot filament breathing inside its own bloom |
307
+ | `neon-tube` | a light bouncing wall to wall inside a glass capsule |
308
+ | `neon-sign` | bars igniting one by one, with the stutter of a real tube |
309
+ | `laser` | a scan line crossing a screen, scanlines and all |
310
+ | `light-trail` | two lights chasing each other on nested tracks |
311
+ | `neon-arc` | a tube of light growing and shrinking as it turns |
312
+ | `plasma` | churning light held inside a containment ring |
313
+ | `strobe` | halos firing outward on hard steps, not a smooth ripple |
314
+ | `glow-dots` | a chain of bulbs handing the current along |
315
+ | `retro-grid` | a synthwave horizon rushing toward you |
316
+ | `firefly` | soft lights drifting and blinking out of step |
317
+
318
+ </details>
319
+
320
+ <details>
321
+ <summary><b>Liquid</b> · 11 — Fluid behaviour — filling, pouring, rippling, merging.</summary>
322
+
323
+ | variant | what it looks like |
324
+ |---|---|
325
+ | `liquid-fill` | a vessel filling and draining behind a rolling surface |
326
+ | `drip` | a drop swelling at a nozzle, letting go, and landing in the pool |
327
+ | `metaball` | two drops pulling a neck between them, then merging |
328
+ | `wave-tank` | two swells sloshing past each other at a steady level |
329
+ | `ripple-pool` | rings spreading across a surface seen at a low angle |
330
+ | `mercury` | a bead of liquid metal wobbling under its own weight |
331
+ | `lava` | heavy blobs climbing a warm capsule and sinking back |
332
+ | `ink` | a drop of colour blooming out through water |
333
+ | `splash` | a drop hitting the surface and throwing up a crown |
334
+ | `whirl` | liquid spun into a funnel, with the eye opening at the centre |
335
+ | `pour` | a stream running into a glass that fills, then empties |
336
+
337
+ </details>
338
+
339
+ <details>
340
+ <summary><b>Glitch</b> · 11 — Digital damage: tearing, static, dropout, corruption.</summary>
341
+
342
+ | variant | what it looks like |
343
+ |---|---|
344
+ | `glitch-block` | a mark tearing into its colour channels and snapping back |
345
+ | `glitch-text` | lines of copy slipping out of register mid-render |
346
+ | `rgb-split` | three channels drifting apart and recombining |
347
+ | `scanlines` | a CRT panel with the raster rolling through it |
348
+ | `static-noise` | untuned signal, hard-cut frame to frame |
349
+ | `datamosh` | horizontal slices sliding off their own frame |
350
+ | `corrupt-bar` | a progress track that keeps losing its place |
351
+ | `signal-loss` | reception bars dropping out and clawing back |
352
+ | `vhs` | tracking damage crawling up a taped frame |
353
+ | `pixel-drift` | a tile field losing alignment, then re-seating |
354
+ | `terminal` | a prompt typing a line, cursor still blinking |
355
+
356
+ </details>
357
+
358
+ <details>
359
+ <summary><b>Particles</b> · 11 — Fields of small things falling, bursting, drifting, swarming.</summary>
360
+
361
+ | variant | what it looks like |
362
+ |---|---|
363
+ | `confetti` | paper tumbling down through the frame |
364
+ | `firework` | sparks thrown out and pulled back down by gravity |
365
+ | `snow` | soft flakes settling with a lazy sideways drift |
366
+ | `embers` | sparks lifting off a fire and burning out |
367
+ | `starfield` | stars stretching into streaks as you jump to light speed |
368
+ | `dust` | motes turning slowly in a shaft of light |
369
+ | `burst` | a ring of dots detonating outward and snapping home |
370
+ | `swarm` | a flock tightening into a knot and scattering again |
371
+ | `rain` | streaks coming down onto a wet line |
372
+ | `magnet` | particles dragged into a core, then released |
373
+ | `nebula` | coloured gas turning slowly, with stars picking out through it |
374
+
375
+ </details>
376
+
377
+ <details>
378
+ <summary><b>Futuristic</b> · 12 — Reticles, reactors, and hardware that does not exist yet.</summary>
379
+
380
+ | variant | what it looks like |
381
+ |---|---|
382
+ | `hud-ring` | instrument rings ticking against each other |
383
+ | `reactor` | a white-hot core inside a segmented containment ring |
384
+ | `hologram` | a projection standing in its own light cone |
385
+ | `warp` | frames rushing past you down a tunnel |
386
+ | `targeting` | brackets closing onto a lock |
387
+ | `circuit` | pulses running the traces of a board |
388
+ | `barcode` | a code being read, line by line |
389
+ | `quantum` | a particle taking every position it might occupy |
390
+ | `portal` | a gateway swirling open, two currents against each other |
391
+ | `shield` | an energy field taking hits and holding |
392
+ | `satellite` | bodies sweeping their own inclined orbits |
393
+ | `teleport` | slices dematerialising and coming back together |
394
+
395
+ </details>
396
+
397
+ <details>
398
+ <summary><b>Elastic</b> · 11 — Spring physics with genuine overshoot and recoil.</summary>
399
+
400
+ | variant | what it looks like |
401
+ |---|---|
402
+ | `rubber-band` | a band strung between two pins and plucked |
403
+ | `bungee` | a weight dropping on a cord that stretches to catch it |
404
+ | `trampoline` | a ball landing on a sheet that bows and throws it back |
405
+ | `wobble` | a weighted shape rocking past level and settling back |
406
+ | `pogo` | a hop with the squash on landing and a shadow that keeps up |
407
+ | `elastic-bar` | a pill that stretches into the direction it is thrown |
408
+ | `catapult` | flung up and over, then reset out of sight |
409
+ | `yo-yo` | spinning down the string and climbing back up it |
410
+ | `elastic-ring` | a hoop squashed along an axis that keeps turning |
411
+ | `snap-dots` | a thread pulled taut until it lets go |
412
+ | `chain` | a swing running down a linked strand, one bead behind the last |
413
+
414
+ </details>
415
+
416
+ <details>
417
+ <summary><b>Minimal</b> · 11 — Quiet motion for dense UI, toolbars, and inline text.</summary>
418
+
419
+ | variant | what it looks like |
420
+ |---|---|
421
+ | `hairline` | a lit segment travelling a thin rule |
422
+ | `tick` | a hand stepping round a quiet dial |
423
+ | `quarter` | one arc, snapping a quarter-turn at a time |
424
+ | `dot-fade` | one dot, one slow breath |
425
+ | `underline` | a rule tracking back and forth beneath a word |
426
+ | `pill-swap` | a pill stretching to the far end and collecting itself |
427
+ | `bracket` | two marks closing in on the point between them |
428
+ | `slash` | a single stroke wiping through a frame |
429
+ | `micro-dots` | the plainest ellipsis there is |
430
+ | `ring-thin` | a hairline ring with one short arc gliding round it |
431
+ | `crosshair` | two hairlines finding each other |
432
+
433
+ </details>
434
+
435
+ <details>
436
+ <summary><b>Gradient</b> · 11 — Colour itself is the animation.</summary>
437
+
438
+ | variant | what it looks like |
439
+ |---|---|
440
+ | `mesh` | a soft mesh gradient drifting under itself |
441
+ | `hue-ring` | a colour wheel turning while the colours themselves travel |
442
+ | `gradient-orb` | a lit sphere with the highlight sliding over it |
443
+ | `chroma` | three colour fields overlapping and pulling apart |
444
+ | `ombre` | one long gradient revealed a band at a time |
445
+ | `iridescent` | an oil-slick sheen crawling across a disc |
446
+ | `sunrise` | a disc climbing over its own horizon |
447
+ | `refract` | a beam split into its colours by a prism |
448
+ | `gradient-border` | a lit frame with the colour running round the edge |
449
+ | `color-cycle` | one block, the gradient axis sweeping right round it |
450
+ | `northern` | light curtains folding across the sky |
451
+
452
+ </details>
453
+
454
+ <details>
455
+ <summary><b>Kinetic</b> · 11 — Mechanisms — gears, cranks, belts, beams, and escapements.</summary>
456
+
457
+ | variant | what it looks like |
458
+ |---|---|
459
+ | `gears` | two toothed wheels driving each other |
460
+ | `metronome` | a weighted arm keeping time |
461
+ | `hourglass` | sand running out, then the whole thing turns over |
462
+ | `piston` | a head driven up and down by a crank |
463
+ | `carousel` | panels turning past you on a ring |
464
+ | `clockwork` | three hands, three speeds, one dial |
465
+ | `abacus` | beads counted back and forth along their rails |
466
+ | `conveyor` | crates carried along and sent round again |
467
+ | `pie` | a wedge sweeping the full turn, then handing over to the next colour |
468
+ | `seesaw` | a beam tipping between two weights |
469
+ | `roller` | balls rolling round the inside of a track |
470
+
471
+ </details>
472
+
473
+ <details>
474
+ <summary><b>Premium</b> · 11 — Product-grade motion for onboarding, uploads, and sync.</summary>
475
+
476
+ | variant | what it looks like |
477
+ |---|---|
478
+ | `logo-morph` | a brand mark fanning apart and re-forming |
479
+ | `card-stack` | the top card dealt to the back, over and over |
480
+ | `progress-ring` | a track filling round, with the head lit |
481
+ | `pill-progress` | a soft track with a glide and a glass sweep over it |
482
+ | `glass-ring` | frosted glass with one specular arc travelling the rim |
483
+ | `orbit-avatar` | a team circling a hub, each face staying upright |
484
+ | `checklist` | tasks ticking off one after another |
485
+ | `upload-cloud` | chevrons lifting into the cloud |
486
+ | `sync` | two arrows chasing each other round the loop |
487
+ | `steps` | a stepper advancing one node at a time |
488
+ | `spark-line` | a chart drawing itself under a moving read head |
489
+
490
+ </details>
491
+
289
492
  ## Theming
290
493
 
291
494
  The `colors` prop covers most cases. For anything else, override the custom properties — they
@@ -318,13 +521,15 @@ cascade, so one rule themes a whole subtree:
318
521
 
319
522
  | | raw | gzipped |
320
523
  |---|---|---|
321
- | JS | ~7 kB | **~2 kB** |
322
- | CSS (all 100 variants) | ~58 kB | **~8 kB** |
524
+ | JS | ~18 kB | **~4 kB** |
525
+ | CSS (all 212 variants) | ~166 kB | **~24 kB** |
323
526
 
324
527
  One caveat, stated plainly: **the CSS is not tree-shakeable.** Class-based styles cannot be
325
- dead-code eliminated, so importing a single variant still ships the sheet for all 100. That is a
326
- fair trade for most apps. If you need only a handful and every kilobyte counts, copy the specific
327
- `.ldr--*` blocks out of [`src/styles/`](./src/styles) into your own CSS and skip the package.
528
+ dead-code eliminated, so importing a single variant still ships the sheet for all 212. At ~24 kB
529
+ gzipped that is a fair trade for most apps, but it is real weight. If you need only a handful and
530
+ every kilobyte counts, copy the specific `.ldr--*` blocks out of [`src/styles/`](./src/styles)
531
+ into your own CSS and skip the package — each block is self-contained apart from the shared
532
+ keyframes in [`00-base.css`](./src/styles/00-base.css).
328
533
 
329
534
  ## Named exports
330
535
 
@@ -335,25 +540,35 @@ with 1.0.x:
335
540
  import { Aurora, Orbit, Rings, Wave, Bars, Blob, Cube, Spiral, Bar, Grid } from "modern-loaders";
336
541
  ```
337
542
 
338
- The other 90 are reached with `<Loader variant="…" />`. A hundred named exports would bloat the
339
- API surface for no real gain.
543
+ Everything else is reached with `<Loader variant="…" />`. Two hundred named exports would bloat
544
+ the API surface for no real gain, and `variant` autocompletes just as well.
340
545
 
341
546
  ## Browser support
342
547
 
343
- Chrome 111+ · Safari 16.2+ · Firefox 113+ — the floor is set by `color-mix()`, alongside `mask`,
344
- `aspect-ratio`, and `clip-path`. Older browsers degrade to solid shapes rather than breaking.
548
+ Chrome 111+ · Safari 16.4+ · Firefox 113+ — the floor is set by `color-mix()`, alongside `mask`,
549
+ `aspect-ratio`, `clip-path`, and the individual `translate` / `rotate` / `scale` properties. Older
550
+ browsers degrade to solid shapes rather than breaking.
551
+
552
+ Five variants — `neon-arc`, `pie`, `progress-ring`, `gradient-border`, `color-cycle` — animate a
553
+ registered custom property via `@property` (Firefox 128+). Every use passes a fallback, so below
554
+ that they render a sensible static frame instead of disappearing.
345
555
 
346
556
  ## Development
347
557
 
348
558
  ```bash
349
- npm run dev # demo gallery: search, family tabs, live palette / size / speed controls
559
+ npm run dev # showcase: search, 20 family filters, live size / speed / palette, detail sheet
350
560
  npm run build # typecheck, then emit dist/ (ESM + CJS + .d.ts + CSS)
351
- npm run build:demo # static demo site → dist-demo/
561
+ npm run build:demo # static showcase → dist-demo/ (deployed to modern-loaders.netlify.app)
352
562
  ```
353
563
 
354
564
  Adding a variant takes two edits: a `.ldr--<id>` block in `src/styles/`, and a row in
355
- [`src/variants.ts`](./src/variants.ts). The component, the types, and the demo all read from that
356
- one manifest.
565
+ [`src/variants.ts`](./src/variants.ts). The component, the types, the README catalogue, and the
566
+ showcase all read from that one manifest — `cells` is how many `<span>` children the CSS expects.
567
+
568
+ Two rules keep the motion composable inside a variant: put a whole radial chain
569
+ (`rotate(…) translateY(…)`) in a single `transform` so the offset happens in the rotated frame,
570
+ and reach for the standalone `translate` / `rotate` / `scale` properties when an element already
571
+ animates `transform` — they compose instead of overwriting it.
357
572
 
358
573
  ## License
359
574
 
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("react/jsx-runtime"),n=[{id:"aurora",label:"Aurora",group:"Spinners",cells:0},{id:"spiral",label:"Spiral",group:"Spinners",cells:0},{id:"ring-dash",label:"Ring Dash",group:"Spinners",cells:0},{id:"ring-gap",label:"Ring Gap",group:"Spinners",cells:0},{id:"comet",label:"Comet",group:"Spinners",cells:1},{id:"arc-trio",label:"Arc Trio",group:"Spinners",cells:3},{id:"halo",label:"Halo",group:"Spinners",cells:1},{id:"sweep",label:"Sweep",group:"Spinners",cells:0},{id:"dot-ring",label:"Dot Ring",group:"Spinners",cells:8},{id:"petal",label:"Petal",group:"Spinners",cells:8},{id:"wave",label:"Wave",group:"Dots",cells:5},{id:"orbit",label:"Orbit",group:"Dots",cells:3},{id:"bounce",label:"Bounce",group:"Dots",cells:3},{id:"fade-dots",label:"Fade Dots",group:"Dots",cells:3},{id:"pulse-dots",label:"Pulse Dots",group:"Dots",cells:3},{id:"typing",label:"Typing",group:"Dots",cells:3},{id:"chase",label:"Chase",group:"Dots",cells:6},{id:"snake",label:"Snake",group:"Dots",cells:5},{id:"swap",label:"Swap",group:"Dots",cells:2},{id:"juggle",label:"Juggle",group:"Dots",cells:3},{id:"bars",label:"Bars",group:"Bars",cells:5},{id:"ladder",label:"Ladder",group:"Bars",cells:4},{id:"stretch",label:"Stretch",group:"Bars",cells:5},{id:"flip-bars",label:"Flip Bars",group:"Bars",cells:5},{id:"slide-bars",label:"Slide Bars",group:"Bars",cells:3},{id:"drop-bars",label:"Drop Bars",group:"Bars",cells:5},{id:"meter",label:"Meter",group:"Bars",cells:5},{id:"wave-bars",label:"Wave Bars",group:"Bars",cells:7},{id:"split-bars",label:"Split Bars",group:"Bars",cells:4},{id:"scan-bars",label:"Scan Bars",group:"Bars",cells:6},{id:"blob",label:"Blob",group:"Shapes",cells:0},{id:"cube",label:"Cube",group:"Shapes",cells:2},{id:"triangle",label:"Triangle",group:"Shapes",cells:0},{id:"hexagon",label:"Hexagon",group:"Shapes",cells:0},{id:"diamond",label:"Diamond",group:"Shapes",cells:0},{id:"star",label:"Star",group:"Shapes",cells:0},{id:"squircle",label:"Squircle",group:"Shapes",cells:0},{id:"folding",label:"Folding",group:"Shapes",cells:4},{id:"pentagon",label:"Pentagon",group:"Shapes",cells:0},{id:"shape-shift",label:"Shape Shift",group:"Shapes",cells:0},{id:"bar",label:"Bar",group:"Progress",cells:0},{id:"bar-stripes",label:"Bar Stripes",group:"Progress",cells:0},{id:"bar-dual",label:"Bar Dual",group:"Progress",cells:0},{id:"bar-segments",label:"Bar Segments",group:"Progress",cells:5},{id:"bar-pill",label:"Bar Pill",group:"Progress",cells:0},{id:"bar-glow",label:"Bar Glow",group:"Progress",cells:0},{id:"bar-wave",label:"Bar Wave",group:"Progress",cells:0},{id:"bar-dots",label:"Bar Dots",group:"Progress",cells:5},{id:"bar-snake",label:"Bar Snake",group:"Progress",cells:0},{id:"bar-fill",label:"Bar Fill",group:"Progress",cells:0},{id:"grid",label:"Grid",group:"Grids",cells:9},{id:"checker",label:"Checker",group:"Grids",cells:9},{id:"cascade",label:"Cascade",group:"Grids",cells:9},{id:"tiles",label:"Tiles",group:"Grids",cells:9},{id:"pixel",label:"Pixel",group:"Grids",cells:16},{id:"matrix",label:"Matrix",group:"Grids",cells:9},{id:"mosaic",label:"Mosaic",group:"Grids",cells:9},{id:"ripple-grid",label:"Ripple Grid",group:"Grids",cells:9},{id:"domino",label:"Domino",group:"Grids",cells:9},{id:"sparkle",label:"Sparkle",group:"Grids",cells:9},{id:"rings",label:"Rings",group:"Pulses",cells:3},{id:"radar",label:"Radar",group:"Pulses",cells:2},{id:"sonar",label:"Sonar",group:"Pulses",cells:3},{id:"echo",label:"Echo",group:"Pulses",cells:3},{id:"shockwave",label:"Shockwave",group:"Pulses",cells:2},{id:"bloom",label:"Bloom",group:"Pulses",cells:3},{id:"droplet",label:"Droplet",group:"Pulses",cells:2},{id:"concentric",label:"Concentric",group:"Pulses",cells:3},{id:"aura",label:"Aura",group:"Pulses",cells:1},{id:"beacon",label:"Beacon",group:"Pulses",cells:2},{id:"heart",label:"Heart",group:"Organic",cells:0},{id:"moon",label:"Moon",group:"Organic",cells:0},{id:"sun",label:"Sun",group:"Organic",cells:8},{id:"flame",label:"Flame",group:"Organic",cells:0},{id:"bubble",label:"Bubble",group:"Organic",cells:3},{id:"jelly",label:"Jelly",group:"Organic",cells:0},{id:"spring",label:"Spring",group:"Organic",cells:0},{id:"float",label:"Float",group:"Organic",cells:1},{id:"leaf",label:"Leaf",group:"Organic",cells:0},{id:"windmill",label:"Windmill",group:"Organic",cells:4},{id:"shimmer",label:"Shimmer",group:"Skeletons",cells:0},{id:"sk-text",label:"Text",group:"Skeletons",cells:3},{id:"sk-card",label:"Card",group:"Skeletons",cells:3},{id:"sk-avatar",label:"Avatar",group:"Skeletons",cells:2},{id:"sk-image",label:"Image",group:"Skeletons",cells:0},{id:"sk-list",label:"List",group:"Skeletons",cells:3},{id:"sk-table",label:"Table",group:"Skeletons",cells:4},{id:"sk-chip",label:"Chips",group:"Skeletons",cells:3},{id:"sk-paragraph",label:"Paragraph",group:"Skeletons",cells:4},{id:"sk-media",label:"Media",group:"Skeletons",cells:2},{id:"helix",label:"Helix",group:"Dimensional",cells:8},{id:"pendulum",label:"Pendulum",group:"Dimensional",cells:5},{id:"atom",label:"Atom",group:"Dimensional",cells:3},{id:"gyro",label:"Gyro",group:"Dimensional",cells:3},{id:"coil",label:"Coil",group:"Dimensional",cells:5},{id:"vortex",label:"Vortex",group:"Dimensional",cells:4},{id:"prism",label:"Prism",group:"Dimensional",cells:3},{id:"torus",label:"Torus",group:"Dimensional",cells:0},{id:"cylinder",label:"Cylinder",group:"Dimensional",cells:4},{id:"galaxy",label:"Galaxy",group:"Dimensional",cells:6}],b=[{name:"Spinners",description:"Rings and arcs — the classic shape, modernised."},{name:"Dots",description:"Small, quiet, and good inline with text."},{name:"Bars",description:"Equalizer-style motion with a strong rhythm."},{name:"Shapes",description:"Geometry that morphs, folds, and turns."},{name:"Progress",description:"Wide, indeterminate tracks for page and upload states."},{name:"Grids",description:"Cell fields that pulse, flip, and cascade."},{name:"Pulses",description:"Expanding rings for live, waiting, or listening states."},{name:"Organic",description:"Playful, physical motion with personality."},{name:"Skeletons",description:"Content-shaped placeholders — use these over spinners for page loads."},{name:"Dimensional",description:"Depth, 3D rotation, and orbital motion."}],m=n.map(l=>l.id),S=Object.fromEntries(n.map(l=>[l.id,l.cells])),d=(l,i)=>typeof l=="number"?`${l}${i}`:l;function s({variant:l="aurora",size:i=48,speed:p=1,colors:a,label:o="Loading",className:c,style:g,...t}){const r={"--size":d(i,"px"),"--speed":d(p,"s")};return a!=null&&a.length&&(r["--c1"]=a[0],r["--c2"]=a[1%a.length],r["--c3"]=a[2%a.length]),e.jsx("div",{...t,className:["ldr",`ldr--${l}`,c].filter(Boolean).join(" "),style:{...r,...g},role:o?"status":void 0,"aria-label":o??void 0,"aria-hidden":o?void 0:!0,children:Array.from({length:S[l]??0},(O,u)=>e.jsx("span",{},u))})}const h=l=>e.jsx(s,{variant:"aurora",...l}),B=l=>e.jsx(s,{variant:"orbit",...l}),D=l=>e.jsx(s,{variant:"rings",...l}),P=l=>e.jsx(s,{variant:"wave",...l}),k=l=>e.jsx(s,{variant:"bars",...l}),x=l=>e.jsx(s,{variant:"blob",...l}),v=l=>e.jsx(s,{variant:"cube",...l}),f=l=>e.jsx(s,{variant:"spiral",...l}),G=l=>e.jsx(s,{variant:"bar",...l}),y=l=>e.jsx(s,{variant:"grid",...l});exports.Aurora=h;exports.Bar=G;exports.Bars=k;exports.Blob=x;exports.Cube=v;exports.GROUPS=b;exports.Grid=y;exports.LOADER_VARIANTS=m;exports.Loader=s;exports.Orbit=B;exports.Rings=D;exports.Spiral=f;exports.VARIANTS=n;exports.Wave=P;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('./index.css');const e=require("react/jsx-runtime"),c=[{id:"aurora",label:"Aurora",group:"Spinners",cells:0},{id:"spiral",label:"Spiral",group:"Spinners",cells:0},{id:"ring-dash",label:"Ring Dash",group:"Spinners",cells:0},{id:"ring-gap",label:"Ring Gap",group:"Spinners",cells:0},{id:"comet",label:"Comet",group:"Spinners",cells:1},{id:"arc-trio",label:"Arc Trio",group:"Spinners",cells:3},{id:"halo",label:"Halo",group:"Spinners",cells:1},{id:"sweep",label:"Sweep",group:"Spinners",cells:0},{id:"dot-ring",label:"Dot Ring",group:"Spinners",cells:8},{id:"petal",label:"Petal",group:"Spinners",cells:8},{id:"wave",label:"Wave",group:"Dots",cells:5},{id:"orbit",label:"Orbit",group:"Dots",cells:3},{id:"bounce",label:"Bounce",group:"Dots",cells:3},{id:"fade-dots",label:"Fade Dots",group:"Dots",cells:3},{id:"pulse-dots",label:"Pulse Dots",group:"Dots",cells:3},{id:"typing",label:"Typing",group:"Dots",cells:3},{id:"chase",label:"Chase",group:"Dots",cells:6},{id:"snake",label:"Snake",group:"Dots",cells:5},{id:"swap",label:"Swap",group:"Dots",cells:2},{id:"juggle",label:"Juggle",group:"Dots",cells:3},{id:"bars",label:"Bars",group:"Bars",cells:5},{id:"ladder",label:"Ladder",group:"Bars",cells:4},{id:"stretch",label:"Stretch",group:"Bars",cells:5},{id:"flip-bars",label:"Flip Bars",group:"Bars",cells:5},{id:"slide-bars",label:"Slide Bars",group:"Bars",cells:3},{id:"drop-bars",label:"Drop Bars",group:"Bars",cells:5},{id:"meter",label:"Meter",group:"Bars",cells:5},{id:"wave-bars",label:"Wave Bars",group:"Bars",cells:7},{id:"split-bars",label:"Split Bars",group:"Bars",cells:4},{id:"scan-bars",label:"Scan Bars",group:"Bars",cells:6},{id:"blob",label:"Blob",group:"Shapes",cells:0},{id:"cube",label:"Cube",group:"Shapes",cells:2},{id:"triangle",label:"Triangle",group:"Shapes",cells:0},{id:"hexagon",label:"Hexagon",group:"Shapes",cells:0},{id:"diamond",label:"Diamond",group:"Shapes",cells:0},{id:"star",label:"Star",group:"Shapes",cells:0},{id:"squircle",label:"Squircle",group:"Shapes",cells:0},{id:"folding",label:"Folding",group:"Shapes",cells:4},{id:"pentagon",label:"Pentagon",group:"Shapes",cells:0},{id:"shape-shift",label:"Shape Shift",group:"Shapes",cells:0},{id:"bar",label:"Bar",group:"Progress",cells:0},{id:"bar-stripes",label:"Bar Stripes",group:"Progress",cells:0},{id:"bar-dual",label:"Bar Dual",group:"Progress",cells:0},{id:"bar-segments",label:"Bar Segments",group:"Progress",cells:5},{id:"bar-pill",label:"Bar Pill",group:"Progress",cells:0},{id:"bar-glow",label:"Bar Glow",group:"Progress",cells:0},{id:"bar-wave",label:"Bar Wave",group:"Progress",cells:0},{id:"bar-dots",label:"Bar Dots",group:"Progress",cells:5},{id:"bar-snake",label:"Bar Snake",group:"Progress",cells:0},{id:"bar-fill",label:"Bar Fill",group:"Progress",cells:0},{id:"grid",label:"Grid",group:"Grids",cells:9},{id:"checker",label:"Checker",group:"Grids",cells:9},{id:"cascade",label:"Cascade",group:"Grids",cells:9},{id:"tiles",label:"Tiles",group:"Grids",cells:9},{id:"pixel",label:"Pixel",group:"Grids",cells:16},{id:"matrix",label:"Matrix",group:"Grids",cells:9},{id:"mosaic",label:"Mosaic",group:"Grids",cells:9},{id:"ripple-grid",label:"Ripple Grid",group:"Grids",cells:9},{id:"domino",label:"Domino",group:"Grids",cells:9},{id:"sparkle",label:"Sparkle",group:"Grids",cells:9},{id:"rings",label:"Rings",group:"Pulses",cells:3},{id:"radar",label:"Radar",group:"Pulses",cells:2},{id:"sonar",label:"Sonar",group:"Pulses",cells:3},{id:"echo",label:"Echo",group:"Pulses",cells:3},{id:"shockwave",label:"Shockwave",group:"Pulses",cells:2},{id:"bloom",label:"Bloom",group:"Pulses",cells:3},{id:"droplet",label:"Droplet",group:"Pulses",cells:2},{id:"concentric",label:"Concentric",group:"Pulses",cells:3},{id:"aura",label:"Aura",group:"Pulses",cells:1},{id:"beacon",label:"Beacon",group:"Pulses",cells:2},{id:"heart",label:"Heart",group:"Organic",cells:0},{id:"moon",label:"Moon",group:"Organic",cells:0},{id:"sun",label:"Sun",group:"Organic",cells:8},{id:"flame",label:"Flame",group:"Organic",cells:0},{id:"bubble",label:"Bubble",group:"Organic",cells:3},{id:"jelly",label:"Jelly",group:"Organic",cells:0},{id:"spring",label:"Spring",group:"Organic",cells:0},{id:"float",label:"Float",group:"Organic",cells:1},{id:"leaf",label:"Leaf",group:"Organic",cells:0},{id:"windmill",label:"Windmill",group:"Organic",cells:4},{id:"shimmer",label:"Shimmer",group:"Skeletons",cells:0},{id:"sk-text",label:"Text",group:"Skeletons",cells:3},{id:"sk-card",label:"Card",group:"Skeletons",cells:3},{id:"sk-avatar",label:"Avatar",group:"Skeletons",cells:2},{id:"sk-image",label:"Image",group:"Skeletons",cells:0},{id:"sk-list",label:"List",group:"Skeletons",cells:3},{id:"sk-table",label:"Table",group:"Skeletons",cells:4},{id:"sk-chip",label:"Chips",group:"Skeletons",cells:3},{id:"sk-paragraph",label:"Paragraph",group:"Skeletons",cells:4},{id:"sk-media",label:"Media",group:"Skeletons",cells:2},{id:"helix",label:"Helix",group:"Dimensional",cells:8},{id:"pendulum",label:"Pendulum",group:"Dimensional",cells:5},{id:"atom",label:"Atom",group:"Dimensional",cells:3},{id:"gyro",label:"Gyro",group:"Dimensional",cells:3},{id:"coil",label:"Coil",group:"Dimensional",cells:5},{id:"vortex",label:"Vortex",group:"Dimensional",cells:4},{id:"prism",label:"Prism",group:"Dimensional",cells:3},{id:"torus",label:"Torus",group:"Dimensional",cells:0},{id:"cylinder",label:"Cylinder",group:"Dimensional",cells:4},{id:"galaxy",label:"Galaxy",group:"Dimensional",cells:6},{id:"neon-ring",label:"Neon Ring",group:"Neon",cells:0},{id:"neon-pulse",label:"Neon Pulse",group:"Neon",cells:0},{id:"neon-tube",label:"Neon Tube",group:"Neon",cells:0},{id:"neon-sign",label:"Neon Sign",group:"Neon",cells:4},{id:"laser",label:"Laser",group:"Neon",cells:0},{id:"light-trail",label:"Light Trail",group:"Neon",cells:0},{id:"neon-arc",label:"Neon Arc",group:"Neon",cells:0},{id:"plasma",label:"Plasma",group:"Neon",cells:0},{id:"strobe",label:"Strobe",group:"Neon",cells:3},{id:"glow-dots",label:"Glow Dots",group:"Neon",cells:5},{id:"retro-grid",label:"Retro Grid",group:"Neon",cells:0},{id:"firefly",label:"Firefly",group:"Neon",cells:5},{id:"liquid-fill",label:"Liquid Fill",group:"Liquid",cells:2},{id:"drip",label:"Drip",group:"Liquid",cells:1},{id:"metaball",label:"Metaball",group:"Liquid",cells:2},{id:"wave-tank",label:"Wave Tank",group:"Liquid",cells:2},{id:"ripple-pool",label:"Ripple Pool",group:"Liquid",cells:3},{id:"mercury",label:"Mercury",group:"Liquid",cells:0},{id:"lava",label:"Lava",group:"Liquid",cells:3},{id:"ink",label:"Ink",group:"Liquid",cells:3},{id:"splash",label:"Splash",group:"Liquid",cells:3},{id:"whirl",label:"Whirl",group:"Liquid",cells:0},{id:"pour",label:"Pour",group:"Liquid",cells:2},{id:"glitch-block",label:"Glitch Block",group:"Glitch",cells:0},{id:"glitch-text",label:"Glitch Text",group:"Glitch",cells:3},{id:"rgb-split",label:"RGB Split",group:"Glitch",cells:3},{id:"scanlines",label:"Scanlines",group:"Glitch",cells:0},{id:"static-noise",label:"Static",group:"Glitch",cells:0},{id:"datamosh",label:"Datamosh",group:"Glitch",cells:5},{id:"corrupt-bar",label:"Corrupt Bar",group:"Glitch",cells:0},{id:"signal-loss",label:"Signal Loss",group:"Glitch",cells:4},{id:"vhs",label:"VHS",group:"Glitch",cells:0},{id:"pixel-drift",label:"Pixel Drift",group:"Glitch",cells:9},{id:"terminal",label:"Terminal",group:"Glitch",cells:2},{id:"confetti",label:"Confetti",group:"Particles",cells:8},{id:"firework",label:"Firework",group:"Particles",cells:8},{id:"snow",label:"Snow",group:"Particles",cells:6},{id:"embers",label:"Embers",group:"Particles",cells:5},{id:"starfield",label:"Starfield",group:"Particles",cells:8},{id:"dust",label:"Dust",group:"Particles",cells:7},{id:"burst",label:"Burst",group:"Particles",cells:6},{id:"swarm",label:"Swarm",group:"Particles",cells:7},{id:"rain",label:"Rain",group:"Particles",cells:6},{id:"magnet",label:"Magnet",group:"Particles",cells:7},{id:"nebula",label:"Nebula",group:"Particles",cells:6},{id:"hud-ring",label:"HUD Ring",group:"Futuristic",cells:2},{id:"reactor",label:"Reactor",group:"Futuristic",cells:3},{id:"hologram",label:"Hologram",group:"Futuristic",cells:3},{id:"warp",label:"Warp",group:"Futuristic",cells:4},{id:"targeting",label:"Targeting",group:"Futuristic",cells:4},{id:"circuit",label:"Circuit",group:"Futuristic",cells:3},{id:"barcode",label:"Barcode",group:"Futuristic",cells:0},{id:"quantum",label:"Quantum",group:"Futuristic",cells:6},{id:"portal",label:"Portal",group:"Futuristic",cells:0},{id:"shield",label:"Shield",group:"Futuristic",cells:2},{id:"satellite",label:"Satellite",group:"Futuristic",cells:3},{id:"teleport",label:"Teleport",group:"Futuristic",cells:6},{id:"rubber-band",label:"Rubber Band",group:"Elastic",cells:1},{id:"bungee",label:"Bungee",group:"Elastic",cells:1},{id:"trampoline",label:"Trampoline",group:"Elastic",cells:1},{id:"wobble",label:"Wobble",group:"Elastic",cells:0},{id:"pogo",label:"Pogo",group:"Elastic",cells:1},{id:"elastic-bar",label:"Elastic Bar",group:"Elastic",cells:0},{id:"catapult",label:"Catapult",group:"Elastic",cells:1},{id:"yo-yo",label:"Yo-yo",group:"Elastic",cells:1},{id:"elastic-ring",label:"Elastic Ring",group:"Elastic",cells:0},{id:"snap-dots",label:"Snap Dots",group:"Elastic",cells:2},{id:"chain",label:"Chain",group:"Elastic",cells:5},{id:"hairline",label:"Hairline",group:"Minimal",cells:0},{id:"tick",label:"Tick",group:"Minimal",cells:0},{id:"quarter",label:"Quarter",group:"Minimal",cells:0},{id:"dot-fade",label:"Dot Fade",group:"Minimal",cells:0},{id:"underline",label:"Underline",group:"Minimal",cells:0},{id:"pill-swap",label:"Pill Swap",group:"Minimal",cells:0},{id:"bracket",label:"Bracket",group:"Minimal",cells:2},{id:"slash",label:"Slash",group:"Minimal",cells:0},{id:"micro-dots",label:"Micro Dots",group:"Minimal",cells:3},{id:"ring-thin",label:"Ring Thin",group:"Minimal",cells:0},{id:"crosshair",label:"Crosshair",group:"Minimal",cells:0},{id:"mesh",label:"Mesh",group:"Gradient",cells:0},{id:"hue-ring",label:"Hue Ring",group:"Gradient",cells:0},{id:"gradient-orb",label:"Gradient Orb",group:"Gradient",cells:0},{id:"chroma",label:"Chroma",group:"Gradient",cells:3},{id:"ombre",label:"Ombré",group:"Gradient",cells:6},{id:"iridescent",label:"Iridescent",group:"Gradient",cells:0},{id:"sunrise",label:"Sunrise",group:"Gradient",cells:0},{id:"refract",label:"Refract",group:"Gradient",cells:3},{id:"gradient-border",label:"Gradient Border",group:"Gradient",cells:0},{id:"color-cycle",label:"Color Cycle",group:"Gradient",cells:0},{id:"northern",label:"Northern",group:"Gradient",cells:4},{id:"gears",label:"Gears",group:"Kinetic",cells:2},{id:"metronome",label:"Metronome",group:"Kinetic",cells:1},{id:"hourglass",label:"Hourglass",group:"Kinetic",cells:3},{id:"piston",label:"Piston",group:"Kinetic",cells:1},{id:"carousel",label:"Carousel",group:"Kinetic",cells:5},{id:"clockwork",label:"Clockwork",group:"Kinetic",cells:3},{id:"abacus",label:"Abacus",group:"Kinetic",cells:3},{id:"conveyor",label:"Conveyor",group:"Kinetic",cells:3},{id:"pie",label:"Pie",group:"Kinetic",cells:0},{id:"seesaw",label:"Seesaw",group:"Kinetic",cells:1},{id:"roller",label:"Roller",group:"Kinetic",cells:2},{id:"logo-morph",label:"Logo Morph",group:"Premium",cells:3},{id:"card-stack",label:"Card Stack",group:"Premium",cells:3},{id:"progress-ring",label:"Progress Ring",group:"Premium",cells:1},{id:"pill-progress",label:"Pill Progress",group:"Premium",cells:0},{id:"glass-ring",label:"Glass Ring",group:"Premium",cells:0},{id:"orbit-avatar",label:"Orbit Avatar",group:"Premium",cells:5},{id:"checklist",label:"Checklist",group:"Premium",cells:3},{id:"upload-cloud",label:"Upload Cloud",group:"Premium",cells:3},{id:"sync",label:"Sync",group:"Premium",cells:2},{id:"steps",label:"Steps",group:"Premium",cells:4},{id:"spark-line",label:"Spark Line",group:"Premium",cells:2}],b=[{name:"Spinners",description:"Rings and arcs — the classic shape, modernised."},{name:"Dots",description:"Small, quiet, and good inline with text."},{name:"Bars",description:"Equalizer-style motion with a strong rhythm."},{name:"Shapes",description:"Geometry that morphs, folds, and turns."},{name:"Progress",description:"Wide, indeterminate tracks for page and upload states."},{name:"Grids",description:"Cell fields that pulse, flip, and cascade."},{name:"Pulses",description:"Expanding rings for live, waiting, or listening states."},{name:"Organic",description:"Playful, physical motion with personality."},{name:"Skeletons",description:"Content-shaped placeholders — use these over spinners for page loads."},{name:"Dimensional",description:"Depth, 3D rotation, and orbital motion."},{name:"Neon",description:"Light that hums, blooms, and flickers alight."},{name:"Liquid",description:"Fluid behaviour — filling, pouring, rippling, merging."},{name:"Glitch",description:"Digital damage: tearing, static, dropout, corruption."},{name:"Particles",description:"Fields of small things falling, bursting, drifting, swarming."},{name:"Futuristic",description:"Reticles, reactors, and hardware that does not exist yet."},{name:"Elastic",description:"Spring physics with genuine overshoot and recoil."},{name:"Minimal",description:"Quiet motion for dense UI, toolbars, and inline text."},{name:"Gradient",description:"Colour itself is the animation."},{name:"Kinetic",description:"Mechanisms — gears, cranks, belts, beams, and escapements."},{name:"Premium",description:"Product-grade motion for onboarding, uploads, and sync."}],m=c.map(l=>l.id),h=Object.fromEntries(c.map(l=>[l.id,l.cells])),n=(l,s)=>typeof l=="number"?`${l}${s}`:l;function i({variant:l="aurora",size:s=48,speed:t=1,colors:r,label:o="Loading",className:d,style:u,...p}){const a={"--size":n(s,"px"),"--speed":n(t,"s")};return r!=null&&r.length&&(a["--c1"]=r[0],a["--c2"]=r[1%r.length],a["--c3"]=r[2%r.length]),e.jsx("div",{...p,className:["ldr",`ldr--${l}`,d].filter(Boolean).join(" "),style:{...a,...u},role:o?"status":void 0,"aria-label":o??void 0,"aria-hidden":o?void 0:!0,children:Array.from({length:h[l]??0},(x,g)=>e.jsx("span",{},g))})}const S=l=>e.jsx(i,{variant:"aurora",...l}),P=l=>e.jsx(i,{variant:"orbit",...l}),k=l=>e.jsx(i,{variant:"rings",...l}),G=l=>e.jsx(i,{variant:"wave",...l}),B=l=>e.jsx(i,{variant:"bars",...l}),f=l=>e.jsx(i,{variant:"blob",...l}),D=l=>e.jsx(i,{variant:"cube",...l}),v=l=>e.jsx(i,{variant:"spiral",...l}),w=l=>e.jsx(i,{variant:"bar",...l}),y=l=>e.jsx(i,{variant:"grid",...l});exports.Aurora=S;exports.Bar=w;exports.Bars=B;exports.Blob=f;exports.Cube=D;exports.GROUPS=b;exports.Grid=y;exports.LOADER_VARIANTS=m;exports.Loader=i;exports.Orbit=P;exports.Rings=k;exports.Spiral=v;exports.VARIANTS=c;exports.Wave=G;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/variants.ts","../src/Loader.tsx"],"sourcesContent":["/**\n * The single source of truth for every loader.\n * `id` must match a `.ldr--<id>` class in ./styles, and `cells` is how many\n * <span> children that variant's CSS expects.\n */\nexport const VARIANTS = [\n // ---- Spinners ----\n { id: \"aurora\", label: \"Aurora\", group: \"Spinners\", cells: 0 },\n { id: \"spiral\", label: \"Spiral\", group: \"Spinners\", cells: 0 },\n { id: \"ring-dash\", label: \"Ring Dash\", group: \"Spinners\", cells: 0 },\n { id: \"ring-gap\", label: \"Ring Gap\", group: \"Spinners\", cells: 0 },\n { id: \"comet\", label: \"Comet\", group: \"Spinners\", cells: 1 },\n { id: \"arc-trio\", label: \"Arc Trio\", group: \"Spinners\", cells: 3 },\n { id: \"halo\", label: \"Halo\", group: \"Spinners\", cells: 1 },\n { id: \"sweep\", label: \"Sweep\", group: \"Spinners\", cells: 0 },\n { id: \"dot-ring\", label: \"Dot Ring\", group: \"Spinners\", cells: 8 },\n { id: \"petal\", label: \"Petal\", group: \"Spinners\", cells: 8 },\n // ---- Dots ----\n { id: \"wave\", label: \"Wave\", group: \"Dots\", cells: 5 },\n { id: \"orbit\", label: \"Orbit\", group: \"Dots\", cells: 3 },\n { id: \"bounce\", label: \"Bounce\", group: \"Dots\", cells: 3 },\n { id: \"fade-dots\", label: \"Fade Dots\", group: \"Dots\", cells: 3 },\n { id: \"pulse-dots\", label: \"Pulse Dots\", group: \"Dots\", cells: 3 },\n { id: \"typing\", label: \"Typing\", group: \"Dots\", cells: 3 },\n { id: \"chase\", label: \"Chase\", group: \"Dots\", cells: 6 },\n { id: \"snake\", label: \"Snake\", group: \"Dots\", cells: 5 },\n { id: \"swap\", label: \"Swap\", group: \"Dots\", cells: 2 },\n { id: \"juggle\", label: \"Juggle\", group: \"Dots\", cells: 3 },\n // ---- Bars ----\n { id: \"bars\", label: \"Bars\", group: \"Bars\", cells: 5 },\n { id: \"ladder\", label: \"Ladder\", group: \"Bars\", cells: 4 },\n { id: \"stretch\", label: \"Stretch\", group: \"Bars\", cells: 5 },\n { id: \"flip-bars\", label: \"Flip Bars\", group: \"Bars\", cells: 5 },\n { id: \"slide-bars\", label: \"Slide Bars\", group: \"Bars\", cells: 3 },\n { id: \"drop-bars\", label: \"Drop Bars\", group: \"Bars\", cells: 5 },\n { id: \"meter\", label: \"Meter\", group: \"Bars\", cells: 5 },\n { id: \"wave-bars\", label: \"Wave Bars\", group: \"Bars\", cells: 7 },\n { id: \"split-bars\", label: \"Split Bars\", group: \"Bars\", cells: 4 },\n { id: \"scan-bars\", label: \"Scan Bars\", group: \"Bars\", cells: 6 },\n // ---- Shapes ----\n { id: \"blob\", label: \"Blob\", group: \"Shapes\", cells: 0 },\n { id: \"cube\", label: \"Cube\", group: \"Shapes\", cells: 2 },\n { id: \"triangle\", label: \"Triangle\", group: \"Shapes\", cells: 0 },\n { id: \"hexagon\", label: \"Hexagon\", group: \"Shapes\", cells: 0 },\n { id: \"diamond\", label: \"Diamond\", group: \"Shapes\", cells: 0 },\n { id: \"star\", label: \"Star\", group: \"Shapes\", cells: 0 },\n { id: \"squircle\", label: \"Squircle\", group: \"Shapes\", cells: 0 },\n { id: \"folding\", label: \"Folding\", group: \"Shapes\", cells: 4 },\n { id: \"pentagon\", label: \"Pentagon\", group: \"Shapes\", cells: 0 },\n { id: \"shape-shift\", label: \"Shape Shift\", group: \"Shapes\", cells: 0 },\n // ---- Progress ----\n { id: \"bar\", label: \"Bar\", group: \"Progress\", cells: 0 },\n { id: \"bar-stripes\", label: \"Bar Stripes\", group: \"Progress\", cells: 0 },\n { id: \"bar-dual\", label: \"Bar Dual\", group: \"Progress\", cells: 0 },\n { id: \"bar-segments\", label: \"Bar Segments\", group: \"Progress\", cells: 5 },\n { id: \"bar-pill\", label: \"Bar Pill\", group: \"Progress\", cells: 0 },\n { id: \"bar-glow\", label: \"Bar Glow\", group: \"Progress\", cells: 0 },\n { id: \"bar-wave\", label: \"Bar Wave\", group: \"Progress\", cells: 0 },\n { id: \"bar-dots\", label: \"Bar Dots\", group: \"Progress\", cells: 5 },\n { id: \"bar-snake\", label: \"Bar Snake\", group: \"Progress\", cells: 0 },\n { id: \"bar-fill\", label: \"Bar Fill\", group: \"Progress\", cells: 0 },\n // ---- Grids ----\n { id: \"grid\", label: \"Grid\", group: \"Grids\", cells: 9 },\n { id: \"checker\", label: \"Checker\", group: \"Grids\", cells: 9 },\n { id: \"cascade\", label: \"Cascade\", group: \"Grids\", cells: 9 },\n { id: \"tiles\", label: \"Tiles\", group: \"Grids\", cells: 9 },\n { id: \"pixel\", label: \"Pixel\", group: \"Grids\", cells: 16 },\n { id: \"matrix\", label: \"Matrix\", group: \"Grids\", cells: 9 },\n { id: \"mosaic\", label: \"Mosaic\", group: \"Grids\", cells: 9 },\n { id: \"ripple-grid\", label: \"Ripple Grid\", group: \"Grids\", cells: 9 },\n { id: \"domino\", label: \"Domino\", group: \"Grids\", cells: 9 },\n { id: \"sparkle\", label: \"Sparkle\", group: \"Grids\", cells: 9 },\n // ---- Pulses ----\n { id: \"rings\", label: \"Rings\", group: \"Pulses\", cells: 3 },\n { id: \"radar\", label: \"Radar\", group: \"Pulses\", cells: 2 },\n { id: \"sonar\", label: \"Sonar\", group: \"Pulses\", cells: 3 },\n { id: \"echo\", label: \"Echo\", group: \"Pulses\", cells: 3 },\n { id: \"shockwave\", label: \"Shockwave\", group: \"Pulses\", cells: 2 },\n { id: \"bloom\", label: \"Bloom\", group: \"Pulses\", cells: 3 },\n { id: \"droplet\", label: \"Droplet\", group: \"Pulses\", cells: 2 },\n { id: \"concentric\", label: \"Concentric\", group: \"Pulses\", cells: 3 },\n { id: \"aura\", label: \"Aura\", group: \"Pulses\", cells: 1 },\n { id: \"beacon\", label: \"Beacon\", group: \"Pulses\", cells: 2 },\n // ---- Organic ----\n { id: \"heart\", label: \"Heart\", group: \"Organic\", cells: 0 },\n { id: \"moon\", label: \"Moon\", group: \"Organic\", cells: 0 },\n { id: \"sun\", label: \"Sun\", group: \"Organic\", cells: 8 },\n { id: \"flame\", label: \"Flame\", group: \"Organic\", cells: 0 },\n { id: \"bubble\", label: \"Bubble\", group: \"Organic\", cells: 3 },\n { id: \"jelly\", label: \"Jelly\", group: \"Organic\", cells: 0 },\n { id: \"spring\", label: \"Spring\", group: \"Organic\", cells: 0 },\n { id: \"float\", label: \"Float\", group: \"Organic\", cells: 1 },\n { id: \"leaf\", label: \"Leaf\", group: \"Organic\", cells: 0 },\n { id: \"windmill\", label: \"Windmill\", group: \"Organic\", cells: 4 },\n // ---- Skeletons ----\n { id: \"shimmer\", label: \"Shimmer\", group: \"Skeletons\", cells: 0 },\n { id: \"sk-text\", label: \"Text\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-card\", label: \"Card\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-avatar\", label: \"Avatar\", group: \"Skeletons\", cells: 2 },\n { id: \"sk-image\", label: \"Image\", group: \"Skeletons\", cells: 0 },\n { id: \"sk-list\", label: \"List\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-table\", label: \"Table\", group: \"Skeletons\", cells: 4 },\n { id: \"sk-chip\", label: \"Chips\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-paragraph\", label: \"Paragraph\", group: \"Skeletons\", cells: 4 },\n { id: \"sk-media\", label: \"Media\", group: \"Skeletons\", cells: 2 },\n // ---- Dimensional ----\n { id: \"helix\", label: \"Helix\", group: \"Dimensional\", cells: 8 },\n { id: \"pendulum\", label: \"Pendulum\", group: \"Dimensional\", cells: 5 },\n { id: \"atom\", label: \"Atom\", group: \"Dimensional\", cells: 3 },\n { id: \"gyro\", label: \"Gyro\", group: \"Dimensional\", cells: 3 },\n { id: \"coil\", label: \"Coil\", group: \"Dimensional\", cells: 5 },\n { id: \"vortex\", label: \"Vortex\", group: \"Dimensional\", cells: 4 },\n { id: \"prism\", label: \"Prism\", group: \"Dimensional\", cells: 3 },\n { id: \"torus\", label: \"Torus\", group: \"Dimensional\", cells: 0 },\n { id: \"cylinder\", label: \"Cylinder\", group: \"Dimensional\", cells: 4 },\n { id: \"galaxy\", label: \"Galaxy\", group: \"Dimensional\", cells: 6 },\n] as const;\n\nexport const GROUPS = [\n { name: \"Spinners\", description: \"Rings and arcs — the classic shape, modernised.\" },\n { name: \"Dots\", description: \"Small, quiet, and good inline with text.\" },\n { name: \"Bars\", description: \"Equalizer-style motion with a strong rhythm.\" },\n { name: \"Shapes\", description: \"Geometry that morphs, folds, and turns.\" },\n { name: \"Progress\", description: \"Wide, indeterminate tracks for page and upload states.\" },\n { name: \"Grids\", description: \"Cell fields that pulse, flip, and cascade.\" },\n { name: \"Pulses\", description: \"Expanding rings for live, waiting, or listening states.\" },\n { name: \"Organic\", description: \"Playful, physical motion with personality.\" },\n { name: \"Skeletons\", description: \"Content-shaped placeholders — use these over spinners for page loads.\" },\n { name: \"Dimensional\", description: \"Depth, 3D rotation, and orbital motion.\" },\n] as const;\n\nexport type LoaderVariant = (typeof VARIANTS)[number][\"id\"];\nexport type LoaderGroup = (typeof GROUPS)[number][\"name\"];\nexport type VariantMeta = (typeof VARIANTS)[number];\n","import type { CSSProperties, HTMLAttributes } from \"react\";\nimport { VARIANTS, type LoaderVariant } from \"./variants\";\nimport \"./loaders.css\";\n\nexport { VARIANTS, GROUPS } from \"./variants\";\nexport type { LoaderVariant, LoaderGroup, VariantMeta } from \"./variants\";\n\n/** Every variant id, in display order. */\nexport const LOADER_VARIANTS = VARIANTS.map((v) => v.id) as readonly LoaderVariant[];\n\n/** How many <span> children each variant's CSS expects. */\nconst CELLS = Object.fromEntries(VARIANTS.map((v) => [v.id, v.cells])) as Record<\n LoaderVariant,\n number\n>;\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Which loader to render. @default \"aurora\" */\n variant?: LoaderVariant;\n /** Box size. A number is treated as pixels. @default 48 */\n size?: number | string;\n /** Base animation duration. A number is treated as seconds. @default 1 */\n speed?: number | string;\n /**\n * One to three colors. Fewer than three are cycled, so a single color still\n * produces a coherent (monochrome) loader.\n */\n colors?: string[];\n /** Announced to screen readers. Pass `null` to render the loader as decorative. */\n label?: string | null;\n}\n\nconst unit = (v: number | string | undefined, suffix: string) =>\n typeof v === \"number\" ? `${v}${suffix}` : v;\n\nexport function Loader({\n variant = \"aurora\",\n size = 48,\n speed = 1,\n colors,\n label = \"Loading\",\n className,\n style,\n ...rest\n}: LoaderProps) {\n const vars: CSSProperties & Record<string, string | undefined> = {\n \"--size\": unit(size, \"px\"),\n \"--speed\": unit(speed, \"s\"),\n };\n\n if (colors?.length) {\n // Cycle whatever was given across the three slots the CSS reads.\n vars[\"--c1\"] = colors[0];\n vars[\"--c2\"] = colors[1 % colors.length];\n vars[\"--c3\"] = colors[2 % colors.length];\n }\n\n return (\n <div\n {...rest}\n className={[\"ldr\", `ldr--${variant}`, className].filter(Boolean).join(\" \")}\n style={{ ...vars, ...style }}\n role={label ? \"status\" : undefined}\n aria-label={label ?? undefined}\n aria-hidden={label ? undefined : true}\n >\n {Array.from({ length: CELLS[variant] ?? 0 }, (_, i) => (\n <span key={i} />\n ))}\n </div>\n );\n}\n\n/**\n * Named wrappers for the original ten variants, kept for backward compatibility\n * with 1.0.x. The other 90 are reached through `<Loader variant=\"…\" />` — a hundred\n * named exports would bloat the API surface for no real gain.\n */\ntype VariantProps = Omit<LoaderProps, \"variant\">;\n\nexport const Aurora = (p: VariantProps) => <Loader variant=\"aurora\" {...p} />;\nexport const Orbit = (p: VariantProps) => <Loader variant=\"orbit\" {...p} />;\nexport const Rings = (p: VariantProps) => <Loader variant=\"rings\" {...p} />;\nexport const Wave = (p: VariantProps) => <Loader variant=\"wave\" {...p} />;\nexport const Bars = (p: VariantProps) => <Loader variant=\"bars\" {...p} />;\nexport const Blob = (p: VariantProps) => <Loader variant=\"blob\" {...p} />;\nexport const Cube = (p: VariantProps) => <Loader variant=\"cube\" {...p} />;\nexport const Spiral = (p: VariantProps) => <Loader variant=\"spiral\" {...p} />;\nexport const Bar = (p: VariantProps) => <Loader variant=\"bar\" {...p} />;\nexport const Grid = (p: VariantProps) => <Loader variant=\"grid\" {...p} />;\n"],"names":["VARIANTS","GROUPS","LOADER_VARIANTS","v","CELLS","unit","suffix","Loader","variant","size","speed","colors","label","className","style","rest","vars","jsx","_","i","Aurora","p","Orbit","Rings","Wave","Bars","Blob","Cube","Spiral","Bar","Grid"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/variants.ts","../src/Loader.tsx"],"sourcesContent":["/**\n * The single source of truth for every loader.\n * `id` must match a `.ldr--<id>` class in ./styles, and `cells` is how many\n * <span> children that variant's CSS expects.\n */\nexport const VARIANTS = [\n // ---- Spinners ----\n { id: \"aurora\", label: \"Aurora\", group: \"Spinners\", cells: 0 },\n { id: \"spiral\", label: \"Spiral\", group: \"Spinners\", cells: 0 },\n { id: \"ring-dash\", label: \"Ring Dash\", group: \"Spinners\", cells: 0 },\n { id: \"ring-gap\", label: \"Ring Gap\", group: \"Spinners\", cells: 0 },\n { id: \"comet\", label: \"Comet\", group: \"Spinners\", cells: 1 },\n { id: \"arc-trio\", label: \"Arc Trio\", group: \"Spinners\", cells: 3 },\n { id: \"halo\", label: \"Halo\", group: \"Spinners\", cells: 1 },\n { id: \"sweep\", label: \"Sweep\", group: \"Spinners\", cells: 0 },\n { id: \"dot-ring\", label: \"Dot Ring\", group: \"Spinners\", cells: 8 },\n { id: \"petal\", label: \"Petal\", group: \"Spinners\", cells: 8 },\n // ---- Dots ----\n { id: \"wave\", label: \"Wave\", group: \"Dots\", cells: 5 },\n { id: \"orbit\", label: \"Orbit\", group: \"Dots\", cells: 3 },\n { id: \"bounce\", label: \"Bounce\", group: \"Dots\", cells: 3 },\n { id: \"fade-dots\", label: \"Fade Dots\", group: \"Dots\", cells: 3 },\n { id: \"pulse-dots\", label: \"Pulse Dots\", group: \"Dots\", cells: 3 },\n { id: \"typing\", label: \"Typing\", group: \"Dots\", cells: 3 },\n { id: \"chase\", label: \"Chase\", group: \"Dots\", cells: 6 },\n { id: \"snake\", label: \"Snake\", group: \"Dots\", cells: 5 },\n { id: \"swap\", label: \"Swap\", group: \"Dots\", cells: 2 },\n { id: \"juggle\", label: \"Juggle\", group: \"Dots\", cells: 3 },\n // ---- Bars ----\n { id: \"bars\", label: \"Bars\", group: \"Bars\", cells: 5 },\n { id: \"ladder\", label: \"Ladder\", group: \"Bars\", cells: 4 },\n { id: \"stretch\", label: \"Stretch\", group: \"Bars\", cells: 5 },\n { id: \"flip-bars\", label: \"Flip Bars\", group: \"Bars\", cells: 5 },\n { id: \"slide-bars\", label: \"Slide Bars\", group: \"Bars\", cells: 3 },\n { id: \"drop-bars\", label: \"Drop Bars\", group: \"Bars\", cells: 5 },\n { id: \"meter\", label: \"Meter\", group: \"Bars\", cells: 5 },\n { id: \"wave-bars\", label: \"Wave Bars\", group: \"Bars\", cells: 7 },\n { id: \"split-bars\", label: \"Split Bars\", group: \"Bars\", cells: 4 },\n { id: \"scan-bars\", label: \"Scan Bars\", group: \"Bars\", cells: 6 },\n // ---- Shapes ----\n { id: \"blob\", label: \"Blob\", group: \"Shapes\", cells: 0 },\n { id: \"cube\", label: \"Cube\", group: \"Shapes\", cells: 2 },\n { id: \"triangle\", label: \"Triangle\", group: \"Shapes\", cells: 0 },\n { id: \"hexagon\", label: \"Hexagon\", group: \"Shapes\", cells: 0 },\n { id: \"diamond\", label: \"Diamond\", group: \"Shapes\", cells: 0 },\n { id: \"star\", label: \"Star\", group: \"Shapes\", cells: 0 },\n { id: \"squircle\", label: \"Squircle\", group: \"Shapes\", cells: 0 },\n { id: \"folding\", label: \"Folding\", group: \"Shapes\", cells: 4 },\n { id: \"pentagon\", label: \"Pentagon\", group: \"Shapes\", cells: 0 },\n { id: \"shape-shift\", label: \"Shape Shift\", group: \"Shapes\", cells: 0 },\n // ---- Progress ----\n { id: \"bar\", label: \"Bar\", group: \"Progress\", cells: 0 },\n { id: \"bar-stripes\", label: \"Bar Stripes\", group: \"Progress\", cells: 0 },\n { id: \"bar-dual\", label: \"Bar Dual\", group: \"Progress\", cells: 0 },\n { id: \"bar-segments\", label: \"Bar Segments\", group: \"Progress\", cells: 5 },\n { id: \"bar-pill\", label: \"Bar Pill\", group: \"Progress\", cells: 0 },\n { id: \"bar-glow\", label: \"Bar Glow\", group: \"Progress\", cells: 0 },\n { id: \"bar-wave\", label: \"Bar Wave\", group: \"Progress\", cells: 0 },\n { id: \"bar-dots\", label: \"Bar Dots\", group: \"Progress\", cells: 5 },\n { id: \"bar-snake\", label: \"Bar Snake\", group: \"Progress\", cells: 0 },\n { id: \"bar-fill\", label: \"Bar Fill\", group: \"Progress\", cells: 0 },\n // ---- Grids ----\n { id: \"grid\", label: \"Grid\", group: \"Grids\", cells: 9 },\n { id: \"checker\", label: \"Checker\", group: \"Grids\", cells: 9 },\n { id: \"cascade\", label: \"Cascade\", group: \"Grids\", cells: 9 },\n { id: \"tiles\", label: \"Tiles\", group: \"Grids\", cells: 9 },\n { id: \"pixel\", label: \"Pixel\", group: \"Grids\", cells: 16 },\n { id: \"matrix\", label: \"Matrix\", group: \"Grids\", cells: 9 },\n { id: \"mosaic\", label: \"Mosaic\", group: \"Grids\", cells: 9 },\n { id: \"ripple-grid\", label: \"Ripple Grid\", group: \"Grids\", cells: 9 },\n { id: \"domino\", label: \"Domino\", group: \"Grids\", cells: 9 },\n { id: \"sparkle\", label: \"Sparkle\", group: \"Grids\", cells: 9 },\n // ---- Pulses ----\n { id: \"rings\", label: \"Rings\", group: \"Pulses\", cells: 3 },\n { id: \"radar\", label: \"Radar\", group: \"Pulses\", cells: 2 },\n { id: \"sonar\", label: \"Sonar\", group: \"Pulses\", cells: 3 },\n { id: \"echo\", label: \"Echo\", group: \"Pulses\", cells: 3 },\n { id: \"shockwave\", label: \"Shockwave\", group: \"Pulses\", cells: 2 },\n { id: \"bloom\", label: \"Bloom\", group: \"Pulses\", cells: 3 },\n { id: \"droplet\", label: \"Droplet\", group: \"Pulses\", cells: 2 },\n { id: \"concentric\", label: \"Concentric\", group: \"Pulses\", cells: 3 },\n { id: \"aura\", label: \"Aura\", group: \"Pulses\", cells: 1 },\n { id: \"beacon\", label: \"Beacon\", group: \"Pulses\", cells: 2 },\n // ---- Organic ----\n { id: \"heart\", label: \"Heart\", group: \"Organic\", cells: 0 },\n { id: \"moon\", label: \"Moon\", group: \"Organic\", cells: 0 },\n { id: \"sun\", label: \"Sun\", group: \"Organic\", cells: 8 },\n { id: \"flame\", label: \"Flame\", group: \"Organic\", cells: 0 },\n { id: \"bubble\", label: \"Bubble\", group: \"Organic\", cells: 3 },\n { id: \"jelly\", label: \"Jelly\", group: \"Organic\", cells: 0 },\n { id: \"spring\", label: \"Spring\", group: \"Organic\", cells: 0 },\n { id: \"float\", label: \"Float\", group: \"Organic\", cells: 1 },\n { id: \"leaf\", label: \"Leaf\", group: \"Organic\", cells: 0 },\n { id: \"windmill\", label: \"Windmill\", group: \"Organic\", cells: 4 },\n // ---- Skeletons ----\n { id: \"shimmer\", label: \"Shimmer\", group: \"Skeletons\", cells: 0 },\n { id: \"sk-text\", label: \"Text\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-card\", label: \"Card\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-avatar\", label: \"Avatar\", group: \"Skeletons\", cells: 2 },\n { id: \"sk-image\", label: \"Image\", group: \"Skeletons\", cells: 0 },\n { id: \"sk-list\", label: \"List\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-table\", label: \"Table\", group: \"Skeletons\", cells: 4 },\n { id: \"sk-chip\", label: \"Chips\", group: \"Skeletons\", cells: 3 },\n { id: \"sk-paragraph\", label: \"Paragraph\", group: \"Skeletons\", cells: 4 },\n { id: \"sk-media\", label: \"Media\", group: \"Skeletons\", cells: 2 },\n // ---- Dimensional ----\n { id: \"helix\", label: \"Helix\", group: \"Dimensional\", cells: 8 },\n { id: \"pendulum\", label: \"Pendulum\", group: \"Dimensional\", cells: 5 },\n { id: \"atom\", label: \"Atom\", group: \"Dimensional\", cells: 3 },\n { id: \"gyro\", label: \"Gyro\", group: \"Dimensional\", cells: 3 },\n { id: \"coil\", label: \"Coil\", group: \"Dimensional\", cells: 5 },\n { id: \"vortex\", label: \"Vortex\", group: \"Dimensional\", cells: 4 },\n { id: \"prism\", label: \"Prism\", group: \"Dimensional\", cells: 3 },\n { id: \"torus\", label: \"Torus\", group: \"Dimensional\", cells: 0 },\n { id: \"cylinder\", label: \"Cylinder\", group: \"Dimensional\", cells: 4 },\n { id: \"galaxy\", label: \"Galaxy\", group: \"Dimensional\", cells: 6 },\n // ---- Neon ----\n { id: \"neon-ring\", label: \"Neon Ring\", group: \"Neon\", cells: 0 },\n { id: \"neon-pulse\", label: \"Neon Pulse\", group: \"Neon\", cells: 0 },\n { id: \"neon-tube\", label: \"Neon Tube\", group: \"Neon\", cells: 0 },\n { id: \"neon-sign\", label: \"Neon Sign\", group: \"Neon\", cells: 4 },\n { id: \"laser\", label: \"Laser\", group: \"Neon\", cells: 0 },\n { id: \"light-trail\", label: \"Light Trail\", group: \"Neon\", cells: 0 },\n { id: \"neon-arc\", label: \"Neon Arc\", group: \"Neon\", cells: 0 },\n { id: \"plasma\", label: \"Plasma\", group: \"Neon\", cells: 0 },\n { id: \"strobe\", label: \"Strobe\", group: \"Neon\", cells: 3 },\n { id: \"glow-dots\", label: \"Glow Dots\", group: \"Neon\", cells: 5 },\n { id: \"retro-grid\", label: \"Retro Grid\", group: \"Neon\", cells: 0 },\n { id: \"firefly\", label: \"Firefly\", group: \"Neon\", cells: 5 },\n // ---- Liquid ----\n { id: \"liquid-fill\", label: \"Liquid Fill\", group: \"Liquid\", cells: 2 },\n { id: \"drip\", label: \"Drip\", group: \"Liquid\", cells: 1 },\n { id: \"metaball\", label: \"Metaball\", group: \"Liquid\", cells: 2 },\n { id: \"wave-tank\", label: \"Wave Tank\", group: \"Liquid\", cells: 2 },\n { id: \"ripple-pool\", label: \"Ripple Pool\", group: \"Liquid\", cells: 3 },\n { id: \"mercury\", label: \"Mercury\", group: \"Liquid\", cells: 0 },\n { id: \"lava\", label: \"Lava\", group: \"Liquid\", cells: 3 },\n { id: \"ink\", label: \"Ink\", group: \"Liquid\", cells: 3 },\n { id: \"splash\", label: \"Splash\", group: \"Liquid\", cells: 3 },\n { id: \"whirl\", label: \"Whirl\", group: \"Liquid\", cells: 0 },\n { id: \"pour\", label: \"Pour\", group: \"Liquid\", cells: 2 },\n // ---- Glitch ----\n { id: \"glitch-block\", label: \"Glitch Block\", group: \"Glitch\", cells: 0 },\n { id: \"glitch-text\", label: \"Glitch Text\", group: \"Glitch\", cells: 3 },\n { id: \"rgb-split\", label: \"RGB Split\", group: \"Glitch\", cells: 3 },\n { id: \"scanlines\", label: \"Scanlines\", group: \"Glitch\", cells: 0 },\n { id: \"static-noise\", label: \"Static\", group: \"Glitch\", cells: 0 },\n { id: \"datamosh\", label: \"Datamosh\", group: \"Glitch\", cells: 5 },\n { id: \"corrupt-bar\", label: \"Corrupt Bar\", group: \"Glitch\", cells: 0 },\n { id: \"signal-loss\", label: \"Signal Loss\", group: \"Glitch\", cells: 4 },\n { id: \"vhs\", label: \"VHS\", group: \"Glitch\", cells: 0 },\n { id: \"pixel-drift\", label: \"Pixel Drift\", group: \"Glitch\", cells: 9 },\n { id: \"terminal\", label: \"Terminal\", group: \"Glitch\", cells: 2 },\n // ---- Particles ----\n { id: \"confetti\", label: \"Confetti\", group: \"Particles\", cells: 8 },\n { id: \"firework\", label: \"Firework\", group: \"Particles\", cells: 8 },\n { id: \"snow\", label: \"Snow\", group: \"Particles\", cells: 6 },\n { id: \"embers\", label: \"Embers\", group: \"Particles\", cells: 5 },\n { id: \"starfield\", label: \"Starfield\", group: \"Particles\", cells: 8 },\n { id: \"dust\", label: \"Dust\", group: \"Particles\", cells: 7 },\n { id: \"burst\", label: \"Burst\", group: \"Particles\", cells: 6 },\n { id: \"swarm\", label: \"Swarm\", group: \"Particles\", cells: 7 },\n { id: \"rain\", label: \"Rain\", group: \"Particles\", cells: 6 },\n { id: \"magnet\", label: \"Magnet\", group: \"Particles\", cells: 7 },\n { id: \"nebula\", label: \"Nebula\", group: \"Particles\", cells: 6 },\n // ---- Futuristic ----\n { id: \"hud-ring\", label: \"HUD Ring\", group: \"Futuristic\", cells: 2 },\n { id: \"reactor\", label: \"Reactor\", group: \"Futuristic\", cells: 3 },\n { id: \"hologram\", label: \"Hologram\", group: \"Futuristic\", cells: 3 },\n { id: \"warp\", label: \"Warp\", group: \"Futuristic\", cells: 4 },\n { id: \"targeting\", label: \"Targeting\", group: \"Futuristic\", cells: 4 },\n { id: \"circuit\", label: \"Circuit\", group: \"Futuristic\", cells: 3 },\n { id: \"barcode\", label: \"Barcode\", group: \"Futuristic\", cells: 0 },\n { id: \"quantum\", label: \"Quantum\", group: \"Futuristic\", cells: 6 },\n { id: \"portal\", label: \"Portal\", group: \"Futuristic\", cells: 0 },\n { id: \"shield\", label: \"Shield\", group: \"Futuristic\", cells: 2 },\n { id: \"satellite\", label: \"Satellite\", group: \"Futuristic\", cells: 3 },\n { id: \"teleport\", label: \"Teleport\", group: \"Futuristic\", cells: 6 },\n // ---- Elastic ----\n { id: \"rubber-band\", label: \"Rubber Band\", group: \"Elastic\", cells: 1 },\n { id: \"bungee\", label: \"Bungee\", group: \"Elastic\", cells: 1 },\n { id: \"trampoline\", label: \"Trampoline\", group: \"Elastic\", cells: 1 },\n { id: \"wobble\", label: \"Wobble\", group: \"Elastic\", cells: 0 },\n { id: \"pogo\", label: \"Pogo\", group: \"Elastic\", cells: 1 },\n { id: \"elastic-bar\", label: \"Elastic Bar\", group: \"Elastic\", cells: 0 },\n { id: \"catapult\", label: \"Catapult\", group: \"Elastic\", cells: 1 },\n { id: \"yo-yo\", label: \"Yo-yo\", group: \"Elastic\", cells: 1 },\n { id: \"elastic-ring\", label: \"Elastic Ring\", group: \"Elastic\", cells: 0 },\n { id: \"snap-dots\", label: \"Snap Dots\", group: \"Elastic\", cells: 2 },\n { id: \"chain\", label: \"Chain\", group: \"Elastic\", cells: 5 },\n // ---- Minimal ----\n { id: \"hairline\", label: \"Hairline\", group: \"Minimal\", cells: 0 },\n { id: \"tick\", label: \"Tick\", group: \"Minimal\", cells: 0 },\n { id: \"quarter\", label: \"Quarter\", group: \"Minimal\", cells: 0 },\n { id: \"dot-fade\", label: \"Dot Fade\", group: \"Minimal\", cells: 0 },\n { id: \"underline\", label: \"Underline\", group: \"Minimal\", cells: 0 },\n { id: \"pill-swap\", label: \"Pill Swap\", group: \"Minimal\", cells: 0 },\n { id: \"bracket\", label: \"Bracket\", group: \"Minimal\", cells: 2 },\n { id: \"slash\", label: \"Slash\", group: \"Minimal\", cells: 0 },\n { id: \"micro-dots\", label: \"Micro Dots\", group: \"Minimal\", cells: 3 },\n { id: \"ring-thin\", label: \"Ring Thin\", group: \"Minimal\", cells: 0 },\n { id: \"crosshair\", label: \"Crosshair\", group: \"Minimal\", cells: 0 },\n // ---- Gradient ----\n { id: \"mesh\", label: \"Mesh\", group: \"Gradient\", cells: 0 },\n { id: \"hue-ring\", label: \"Hue Ring\", group: \"Gradient\", cells: 0 },\n { id: \"gradient-orb\", label: \"Gradient Orb\", group: \"Gradient\", cells: 0 },\n { id: \"chroma\", label: \"Chroma\", group: \"Gradient\", cells: 3 },\n { id: \"ombre\", label: \"Ombré\", group: \"Gradient\", cells: 6 },\n { id: \"iridescent\", label: \"Iridescent\", group: \"Gradient\", cells: 0 },\n { id: \"sunrise\", label: \"Sunrise\", group: \"Gradient\", cells: 0 },\n { id: \"refract\", label: \"Refract\", group: \"Gradient\", cells: 3 },\n { id: \"gradient-border\", label: \"Gradient Border\", group: \"Gradient\", cells: 0 },\n { id: \"color-cycle\", label: \"Color Cycle\", group: \"Gradient\", cells: 0 },\n { id: \"northern\", label: \"Northern\", group: \"Gradient\", cells: 4 },\n // ---- Kinetic ----\n { id: \"gears\", label: \"Gears\", group: \"Kinetic\", cells: 2 },\n { id: \"metronome\", label: \"Metronome\", group: \"Kinetic\", cells: 1 },\n { id: \"hourglass\", label: \"Hourglass\", group: \"Kinetic\", cells: 3 },\n { id: \"piston\", label: \"Piston\", group: \"Kinetic\", cells: 1 },\n { id: \"carousel\", label: \"Carousel\", group: \"Kinetic\", cells: 5 },\n { id: \"clockwork\", label: \"Clockwork\", group: \"Kinetic\", cells: 3 },\n { id: \"abacus\", label: \"Abacus\", group: \"Kinetic\", cells: 3 },\n { id: \"conveyor\", label: \"Conveyor\", group: \"Kinetic\", cells: 3 },\n { id: \"pie\", label: \"Pie\", group: \"Kinetic\", cells: 0 },\n { id: \"seesaw\", label: \"Seesaw\", group: \"Kinetic\", cells: 1 },\n { id: \"roller\", label: \"Roller\", group: \"Kinetic\", cells: 2 },\n // ---- Premium ----\n { id: \"logo-morph\", label: \"Logo Morph\", group: \"Premium\", cells: 3 },\n { id: \"card-stack\", label: \"Card Stack\", group: \"Premium\", cells: 3 },\n { id: \"progress-ring\", label: \"Progress Ring\", group: \"Premium\", cells: 1 },\n { id: \"pill-progress\", label: \"Pill Progress\", group: \"Premium\", cells: 0 },\n { id: \"glass-ring\", label: \"Glass Ring\", group: \"Premium\", cells: 0 },\n { id: \"orbit-avatar\", label: \"Orbit Avatar\", group: \"Premium\", cells: 5 },\n { id: \"checklist\", label: \"Checklist\", group: \"Premium\", cells: 3 },\n { id: \"upload-cloud\", label: \"Upload Cloud\", group: \"Premium\", cells: 3 },\n { id: \"sync\", label: \"Sync\", group: \"Premium\", cells: 2 },\n { id: \"steps\", label: \"Steps\", group: \"Premium\", cells: 4 },\n { id: \"spark-line\", label: \"Spark Line\", group: \"Premium\", cells: 2 },\n] as const;\n\nexport const GROUPS = [\n { name: \"Spinners\", description: \"Rings and arcs — the classic shape, modernised.\" },\n { name: \"Dots\", description: \"Small, quiet, and good inline with text.\" },\n { name: \"Bars\", description: \"Equalizer-style motion with a strong rhythm.\" },\n { name: \"Shapes\", description: \"Geometry that morphs, folds, and turns.\" },\n { name: \"Progress\", description: \"Wide, indeterminate tracks for page and upload states.\" },\n { name: \"Grids\", description: \"Cell fields that pulse, flip, and cascade.\" },\n { name: \"Pulses\", description: \"Expanding rings for live, waiting, or listening states.\" },\n { name: \"Organic\", description: \"Playful, physical motion with personality.\" },\n { name: \"Skeletons\", description: \"Content-shaped placeholders — use these over spinners for page loads.\" },\n { name: \"Dimensional\", description: \"Depth, 3D rotation, and orbital motion.\" },\n { name: \"Neon\", description: \"Light that hums, blooms, and flickers alight.\" },\n { name: \"Liquid\", description: \"Fluid behaviour — filling, pouring, rippling, merging.\" },\n { name: \"Glitch\", description: \"Digital damage: tearing, static, dropout, corruption.\" },\n { name: \"Particles\", description: \"Fields of small things falling, bursting, drifting, swarming.\" },\n { name: \"Futuristic\", description: \"Reticles, reactors, and hardware that does not exist yet.\" },\n { name: \"Elastic\", description: \"Spring physics with genuine overshoot and recoil.\" },\n { name: \"Minimal\", description: \"Quiet motion for dense UI, toolbars, and inline text.\" },\n { name: \"Gradient\", description: \"Colour itself is the animation.\" },\n { name: \"Kinetic\", description: \"Mechanisms — gears, cranks, belts, beams, and escapements.\" },\n { name: \"Premium\", description: \"Product-grade motion for onboarding, uploads, and sync.\" },\n] as const;\n\nexport type LoaderVariant = (typeof VARIANTS)[number][\"id\"];\nexport type LoaderGroup = (typeof GROUPS)[number][\"name\"];\nexport type VariantMeta = (typeof VARIANTS)[number];\n","import type { CSSProperties, HTMLAttributes } from \"react\";\nimport { VARIANTS, type LoaderVariant } from \"./variants\";\nimport \"./loaders.css\";\n\nexport { VARIANTS, GROUPS } from \"./variants\";\nexport type { LoaderVariant, LoaderGroup, VariantMeta } from \"./variants\";\n\n/** Every variant id, in display order. */\nexport const LOADER_VARIANTS = VARIANTS.map((v) => v.id) as readonly LoaderVariant[];\n\n/** How many <span> children each variant's CSS expects. */\nconst CELLS = Object.fromEntries(VARIANTS.map((v) => [v.id, v.cells])) as Record<\n LoaderVariant,\n number\n>;\n\nexport interface LoaderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Which loader to render. @default \"aurora\" */\n variant?: LoaderVariant;\n /** Box size. A number is treated as pixels. @default 48 */\n size?: number | string;\n /** Base animation duration. A number is treated as seconds. @default 1 */\n speed?: number | string;\n /**\n * One to three colors. Fewer than three are cycled, so a single color still\n * produces a coherent (monochrome) loader.\n */\n colors?: string[];\n /** Announced to screen readers. Pass `null` to render the loader as decorative. */\n label?: string | null;\n}\n\nconst unit = (v: number | string | undefined, suffix: string) =>\n typeof v === \"number\" ? `${v}${suffix}` : v;\n\nexport function Loader({\n variant = \"aurora\",\n size = 48,\n speed = 1,\n colors,\n label = \"Loading\",\n className,\n style,\n ...rest\n}: LoaderProps) {\n const vars: CSSProperties & Record<string, string | undefined> = {\n \"--size\": unit(size, \"px\"),\n \"--speed\": unit(speed, \"s\"),\n };\n\n if (colors?.length) {\n // Cycle whatever was given across the three slots the CSS reads.\n vars[\"--c1\"] = colors[0];\n vars[\"--c2\"] = colors[1 % colors.length];\n vars[\"--c3\"] = colors[2 % colors.length];\n }\n\n return (\n <div\n {...rest}\n className={[\"ldr\", `ldr--${variant}`, className].filter(Boolean).join(\" \")}\n style={{ ...vars, ...style }}\n role={label ? \"status\" : undefined}\n aria-label={label ?? undefined}\n aria-hidden={label ? undefined : true}\n >\n {Array.from({ length: CELLS[variant] ?? 0 }, (_, i) => (\n <span key={i} />\n ))}\n </div>\n );\n}\n\n/**\n * Named wrappers for the original ten variants, kept for backward compatibility\n * with 1.0.x. The other 90 are reached through `<Loader variant=\"…\" />` — a hundred\n * named exports would bloat the API surface for no real gain.\n */\ntype VariantProps = Omit<LoaderProps, \"variant\">;\n\nexport const Aurora = (p: VariantProps) => <Loader variant=\"aurora\" {...p} />;\nexport const Orbit = (p: VariantProps) => <Loader variant=\"orbit\" {...p} />;\nexport const Rings = (p: VariantProps) => <Loader variant=\"rings\" {...p} />;\nexport const Wave = (p: VariantProps) => <Loader variant=\"wave\" {...p} />;\nexport const Bars = (p: VariantProps) => <Loader variant=\"bars\" {...p} />;\nexport const Blob = (p: VariantProps) => <Loader variant=\"blob\" {...p} />;\nexport const Cube = (p: VariantProps) => <Loader variant=\"cube\" {...p} />;\nexport const Spiral = (p: VariantProps) => <Loader variant=\"spiral\" {...p} />;\nexport const Bar = (p: VariantProps) => <Loader variant=\"bar\" {...p} />;\nexport const Grid = (p: VariantProps) => <Loader variant=\"grid\" {...p} />;\n"],"names":["VARIANTS","GROUPS","LOADER_VARIANTS","v","CELLS","unit","suffix","Loader","variant","size","speed","colors","label","className","style","rest","vars","jsx","_","i","Aurora","p","Orbit","Rings","Wave","Bars","Blob","Cube","Spiral","Bar","Grid"],"mappings":"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"}