@readdy/anim 0.0.21 → 0.0.26

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.
Files changed (104) hide show
  1. package/animations/button/confetti-button/index.js +1 -1
  2. package/animations/button/confetti-button/react.tsx +5 -3
  3. package/animations/card/magic-ui-border-beam/index.js +26 -0
  4. package/animations/card/magic-ui-border-beam/react.tsx +8 -0
  5. package/animations/card/magic-ui-border-beam/style.css +1 -0
  6. package/animations/header/blur-to-sharp-rise/index.js +14 -0
  7. package/animations/header/blur-to-sharp-rise/react.tsx +6 -0
  8. package/animations/header/blur-to-sharp-rise/style.css +1 -0
  9. package/animations/header/gradient-text/index.js +36 -0
  10. package/animations/header/gradient-text/style.css +17 -5
  11. package/animations/header/shimmer-text/index.js +36 -0
  12. package/animations/header/shimmer-text/style.css +16 -5
  13. package/dist/button/3d-flip/react.js +3 -3
  14. package/dist/button/3d-flip.js +3 -3
  15. package/dist/button/blur-fade-in/react.js +1 -1
  16. package/dist/button/blur-fade-in.js +1 -1
  17. package/dist/button/border-beam/react.js +2 -2
  18. package/dist/button/border-beam.js +1 -1
  19. package/dist/button/bounce-elastic/react.js +1 -1
  20. package/dist/button/bounce-elastic.js +1 -1
  21. package/dist/button/bubble-button/react.js +2 -2
  22. package/dist/button/bubble-button.js +2 -2
  23. package/dist/button/confetti-button/react.js +6 -6
  24. package/dist/button/confetti-button.js +3 -3
  25. package/dist/button/glow-cta/react.js +3 -3
  26. package/dist/button/glow-cta.js +3 -3
  27. package/dist/button/magnetic-hover/react.js +3 -3
  28. package/dist/button/magnetic-hover.js +3 -3
  29. package/dist/button/pulse/react.js +1 -1
  30. package/dist/button/pulse.js +1 -1
  31. package/dist/button/rainbow-button/react.js +1 -1
  32. package/dist/button/rainbow-button.js +1 -1
  33. package/dist/button/shimmer-border/react.js +2 -2
  34. package/dist/button/shimmer-border.js +1 -1
  35. package/dist/button/sketch-button/react.js +2 -2
  36. package/dist/button/sketch-button.js +1 -1
  37. package/dist/card/blur-rise/react.js +1 -1
  38. package/dist/card/blur-rise.js +1 -1
  39. package/dist/card/bounce-in-bottom/react.js +1 -1
  40. package/dist/card/bounce-in-bottom.js +1 -1
  41. package/dist/card/card-fan-spread/react.js +2 -2
  42. package/dist/card/card-fan-spread.js +2 -2
  43. package/dist/card/float-idle/react.js +1 -1
  44. package/dist/card/float-idle.js +1 -1
  45. package/dist/card/image-magnifier/react.js +4 -4
  46. package/dist/card/image-magnifier.js +4 -4
  47. package/dist/card/image-zoom-rotate/react.js +3 -3
  48. package/dist/card/image-zoom-rotate.js +2 -2
  49. package/dist/card/pop-in-stack/react.js +2 -2
  50. package/dist/card/pop-in-stack.js +1 -1
  51. package/dist/card/reveal-from-top/react.js +1 -1
  52. package/dist/card/reveal-from-top.js +1 -1
  53. package/dist/card/rgb-split-glitch/react.js +2 -2
  54. package/dist/card/rgb-split-glitch.js +1 -1
  55. package/dist/card/tilted-card/react.js +3 -3
  56. package/dist/card/tilted-card.js +3 -3
  57. package/dist/chunks/{text-split-D02jltVh.js → text-split-6ct2SEme.js} +1 -1
  58. package/dist/chunks/{text-split-frOR4UpH.js → text-split-CdeSt_Fu.js} +1 -1
  59. package/dist/full.css +1 -1
  60. package/dist/full.js +383 -249
  61. package/dist/header/anime-splittext/react.js +2 -2
  62. package/dist/header/anime-splittext.js +1 -1
  63. package/dist/header/bounce-in-down/react.js +3 -3
  64. package/dist/header/bounce-in-down.js +3 -3
  65. package/dist/header/fly-in-chars/react.js +3 -3
  66. package/dist/header/fly-in-chars.js +3 -3
  67. package/dist/header/gradient-text/react.js +1 -1
  68. package/dist/header/gradient-text.js +37 -1
  69. package/dist/header/letter-bounce/react.js +3 -3
  70. package/dist/header/letter-bounce.js +2 -2
  71. package/dist/header/roll-in/react.js +3 -3
  72. package/dist/header/roll-in.js +3 -3
  73. package/dist/header/shimmer-text/react.js +2 -2
  74. package/dist/header/shimmer-text.js +37 -1
  75. package/dist/header/shuffle/react.js +3 -3
  76. package/dist/header/shuffle.js +3 -3
  77. package/dist/header/split-text/react.js +3 -3
  78. package/dist/header/split-text.js +3 -3
  79. package/dist/header/text-type/react.js +2 -2
  80. package/dist/header/text-type.js +2 -2
  81. package/dist/header/word-curtain-reveal/react.js +2 -2
  82. package/dist/header/word-curtain-reveal.js +2 -2
  83. package/dist/meta.json +2 -2
  84. package/dist/metadata.json +71 -107
  85. package/dist/react.css +1 -1
  86. package/dist/types/animations/button/confetti-button/react.d.ts +2 -1
  87. package/dist/types/animations/card/magic-ui-border-beam/index.d.ts +3 -0
  88. package/dist/types/animations/card/magic-ui-border-beam/react.d.ts +5 -0
  89. package/dist/types/animations/header/blur-to-sharp-rise/index.d.ts +3 -0
  90. package/dist/types/animations/header/blur-to-sharp-rise/react.d.ts +4 -0
  91. package/dist/types/react-barrel.d.ts +2 -0
  92. package/dist/types/scripts/bundle-all.d.ts +1 -172
  93. package/dist/types/stories/blur-to-sharp-rise-header.stories.d.ts +4 -4
  94. package/dist/types/stories/magic-ui-border-beam-card.stories.d.ts +4 -4
  95. package/package.json +7 -1
  96. package/react-barrel.js +2 -0
  97. /package/dist/chunks/{constants-EnH6-Pz4.js → constants-B4SUCot6.js} +0 -0
  98. /package/dist/chunks/{constants-ZTHic1pf.js → constants-Ckf5cPIt.js} +0 -0
  99. /package/dist/chunks/{pointer-follow-B3RFnn_q.js → pointer-follow-BM2eyAGD.js} +0 -0
  100. /package/dist/chunks/{pointer-follow-BETANySn.js → pointer-follow-p3-xoxQh.js} +0 -0
  101. /package/dist/chunks/{reduced-motion-BpQYuEzK.js → reduced-motion-Bay2Fxcs.js} +0 -0
  102. /package/dist/chunks/{reduced-motion-HX79Ac8G.js → reduced-motion-CZ_p2Mh_.js} +0 -0
  103. /package/dist/chunks/{resolve-card-media-Cj3V_oms.js → resolve-card-media-C0BoIACv.js} +0 -0
  104. /package/dist/chunks/{resolve-card-media-DBIU-duL.js → resolve-card-media-cXysS2d2.js} +0 -0
package/dist/full.js CHANGED
@@ -257,12 +257,12 @@
257
257
  }
258
258
  }
259
259
 
260
- const ANIMATION_ID$x = buildAnimId('letter-bounce');
260
+ const ANIMATION_ID$z = buildAnimId('letter-bounce');
261
261
 
262
262
  const CSS_CLASS$x = buildAnimClass('letter-bounce');
263
263
  const CHAR_CLASS$6 = buildAnimClass('letter-bounce-char');
264
264
 
265
- function init$x(el, options = {}) {
265
+ function init$z(el, options = {}) {
266
266
  if (!el.classList.contains(CSS_CLASS$x)) {
267
267
  el.classList.add(CSS_CLASS$x);
268
268
  }
@@ -277,7 +277,7 @@
277
277
  });
278
278
  }
279
279
 
280
- function destroy$x(el) {
280
+ function destroy$z(el) {
281
281
  el.classList.remove(CSS_CLASS$x);
282
282
  el.style.removeProperty('--readdy-anim-letter-bounce-duration');
283
283
  el.style.removeProperty('--readdy-anim-letter-bounce-amplitude');
@@ -289,30 +289,66 @@
289
289
 
290
290
  var letterBounce = /*#__PURE__*/Object.freeze({
291
291
  __proto__: null,
292
- ANIMATION_ID: ANIMATION_ID$x,
293
- destroy: destroy$x,
294
- init: init$x
292
+ ANIMATION_ID: ANIMATION_ID$z,
293
+ destroy: destroy$z,
294
+ init: init$z
295
295
  });
296
296
 
297
- const ANIMATION_ID$w = buildAnimId('shimmer-text');
297
+ const ANIMATION_ID$y = buildAnimId('shimmer-text');
298
298
 
299
299
  const CSS_CLASS$w = buildAnimClass('shimmer-text');
300
+ const UNIT_CLASS$1 = buildAnimClass('shimmer-text-unit');
301
+
302
+ function wrapTextNodes$1(el) {
303
+ if (!el.dataset.originalText) {
304
+ el.dataset.originalText = el.innerHTML;
305
+ }
306
+
307
+ const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT);
308
+ const textNodes = [];
309
+ let node = walker.nextNode();
310
+
311
+ while (node) {
312
+ textNodes.push(node);
313
+ node = walker.nextNode();
314
+ }
315
+
316
+ for (const textNode of textNodes) {
317
+ const text = textNode.textContent ?? '';
318
+ if (!text.trim()) {
319
+ continue
320
+ }
321
+
322
+ const span = document.createElement('span');
323
+ span.className = UNIT_CLASS$1;
324
+ span.textContent = text;
325
+ textNode.parentNode?.replaceChild(span, textNode);
326
+ }
327
+ }
328
+
329
+ function init$y(el) {
330
+ destroy$y(el);
300
331
 
301
- function init$w(el) {
302
332
  if (!el.classList.contains(CSS_CLASS$w)) {
303
333
  el.classList.add(CSS_CLASS$w);
304
334
  }
335
+
336
+ wrapTextNodes$1(el);
305
337
  }
306
338
 
307
- function destroy$w(el) {
339
+ function destroy$y(el) {
308
340
  el.classList.remove(CSS_CLASS$w);
341
+ if (el.dataset.originalText) {
342
+ el.innerHTML = el.dataset.originalText;
343
+ delete el.dataset.originalText;
344
+ }
309
345
  }
310
346
 
311
347
  var shimmerText = /*#__PURE__*/Object.freeze({
312
348
  __proto__: null,
313
- ANIMATION_ID: ANIMATION_ID$w,
314
- destroy: destroy$w,
315
- init: init$w
349
+ ANIMATION_ID: ANIMATION_ID$y,
350
+ destroy: destroy$y,
351
+ init: init$y
316
352
  });
317
353
 
318
354
  /**
@@ -331,7 +367,7 @@
331
367
  window.matchMedia('(prefers-reduced-motion: reduce)').matches
332
368
  }
333
369
 
334
- const ANIMATION_ID$v = buildAnimId('text-type');
370
+ const ANIMATION_ID$x = buildAnimId('text-type');
335
371
 
336
372
  const CSS_CLASS$v = buildAnimClass('text-type');
337
373
  const CONTENT_CLASS = buildAnimClass('text-type-content');
@@ -503,8 +539,8 @@
503
539
  schedule(state, typeNext, typingSpeed);
504
540
  }
505
541
 
506
- function init$v(el, options = {}) {
507
- destroy$v(el);
542
+ function init$x(el, options = {}) {
543
+ destroy$x(el);
508
544
 
509
545
  if (!el.dataset.originalText) {
510
546
  el.dataset.originalText = el.innerHTML;
@@ -567,7 +603,7 @@
567
603
  typePhrase(state, 0);
568
604
  }
569
605
 
570
- function destroy$v(el) {
606
+ function destroy$x(el) {
571
607
  const state = stateMap$9.get(el);
572
608
  if (state) {
573
609
  clearState$1(state);
@@ -597,33 +633,69 @@
597
633
 
598
634
  var textType = /*#__PURE__*/Object.freeze({
599
635
  __proto__: null,
600
- ANIMATION_ID: ANIMATION_ID$v,
601
- destroy: destroy$v,
602
- init: init$v
636
+ ANIMATION_ID: ANIMATION_ID$x,
637
+ destroy: destroy$x,
638
+ init: init$x
603
639
  });
604
640
 
605
- const ANIMATION_ID$u = buildAnimId('gradient-text');
641
+ const ANIMATION_ID$w = buildAnimId('gradient-text');
606
642
 
607
643
  const CSS_CLASS$u = buildAnimClass('gradient-text');
644
+ const UNIT_CLASS = buildAnimClass('gradient-text-unit');
645
+
646
+ function wrapTextNodes(el) {
647
+ if (!el.dataset.originalText) {
648
+ el.dataset.originalText = el.innerHTML;
649
+ }
650
+
651
+ const walker = document.createTreeWalker(el, NodeFilter.SHOW_TEXT);
652
+ const textNodes = [];
653
+ let node = walker.nextNode();
654
+
655
+ while (node) {
656
+ textNodes.push(node);
657
+ node = walker.nextNode();
658
+ }
659
+
660
+ for (const textNode of textNodes) {
661
+ const text = textNode.textContent ?? '';
662
+ if (!text.trim()) {
663
+ continue
664
+ }
665
+
666
+ const span = document.createElement('span');
667
+ span.className = UNIT_CLASS;
668
+ span.textContent = text;
669
+ textNode.parentNode?.replaceChild(span, textNode);
670
+ }
671
+ }
672
+
673
+ function init$w(el, options = {}) {
674
+ destroy$w(el);
608
675
 
609
- function init$u(el, options = {}) {
610
676
  if (!el.classList.contains(CSS_CLASS$u)) {
611
677
  el.classList.add(CSS_CLASS$u);
612
678
  }
679
+
680
+ wrapTextNodes(el);
613
681
  }
614
682
 
615
- function destroy$u(el) {
683
+ function destroy$w(el) {
616
684
  el.classList.remove(CSS_CLASS$u);
685
+ if (el.dataset.originalText) {
686
+ el.innerHTML = el.dataset.originalText;
687
+ delete el.dataset.originalText;
688
+ }
617
689
  }
618
690
 
619
691
  var gradientText = /*#__PURE__*/Object.freeze({
620
692
  __proto__: null,
621
- ANIMATION_ID: ANIMATION_ID$u,
622
- destroy: destroy$u,
623
- init: init$u
693
+ ANIMATION_ID: ANIMATION_ID$w,
694
+ destroy: destroy$w,
695
+ init: init$w
624
696
  });
625
697
 
626
- const ANIMATION_ID$t = buildAnimId('fly-in-chars');
698
+ const ANIMATION_ID$v = buildAnimId('fly-in-chars');
627
699
 
628
700
  const CSS_CLASS$t = buildAnimClass('fly-in-chars');
629
701
  const CHAR_CLASS$5 = buildAnimClass('fly-in-char');
@@ -632,7 +704,7 @@
632
704
  return Math.round(min + Math.random() * (max - min))
633
705
  }
634
706
 
635
- function init$t(el, options = {}) {
707
+ function init$v(el, options = {}) {
636
708
  if (el.classList.contains(CSS_CLASS$t)) {
637
709
  return
638
710
  }
@@ -657,7 +729,7 @@
657
729
  }
658
730
  }
659
731
 
660
- function destroy$t(el) {
732
+ function destroy$v(el) {
661
733
  el.classList.remove(CSS_CLASS$t);
662
734
  if (el.dataset.originalText) {
663
735
  el.innerHTML = el.dataset.originalText;
@@ -667,33 +739,50 @@
667
739
 
668
740
  var flyInChars = /*#__PURE__*/Object.freeze({
669
741
  __proto__: null,
670
- ANIMATION_ID: ANIMATION_ID$t,
671
- destroy: destroy$t,
672
- init: init$t
742
+ ANIMATION_ID: ANIMATION_ID$v,
743
+ destroy: destroy$v,
744
+ init: init$v
673
745
  });
674
746
 
675
- const ANIMATION_ID$s = buildAnimId('blur-rise');
747
+ const ANIMATION_ID$u = buildAnimId('blur-rise');
676
748
 
677
749
  const CSS_CLASS$s = buildAnimClass('blur-rise');
678
750
 
679
- function init$s(el, options = {}) {
751
+ function init$u(el, options = {}) {
680
752
  if (!el.classList.contains(CSS_CLASS$s)) {
681
753
  el.classList.add(CSS_CLASS$s);
682
754
  }
683
755
  }
684
756
 
685
- function destroy$s(el) {
757
+ function destroy$u(el) {
686
758
  el.classList.remove(CSS_CLASS$s);
687
759
  }
688
760
 
689
761
  var blurRise = /*#__PURE__*/Object.freeze({
690
762
  __proto__: null,
691
- ANIMATION_ID: ANIMATION_ID$s,
692
- destroy: destroy$s,
693
- init: init$s
763
+ ANIMATION_ID: ANIMATION_ID$u,
764
+ destroy: destroy$u,
765
+ init: init$u
694
766
  });
695
767
 
696
- const ANIMATION_ID$r = buildAnimId('split-text');
768
+ const ANIMATION_ID$t = buildAnimId('blur-to-sharp-rise');
769
+
770
+ function init$t(el, options = {}) {
771
+ init$u(el, options);
772
+ }
773
+
774
+ function destroy$t(el) {
775
+ destroy$u(el);
776
+ }
777
+
778
+ var blurToSharpRise = /*#__PURE__*/Object.freeze({
779
+ __proto__: null,
780
+ ANIMATION_ID: ANIMATION_ID$t,
781
+ destroy: destroy$t,
782
+ init: init$t
783
+ });
784
+
785
+ const ANIMATION_ID$s = buildAnimId('split-text');
697
786
 
698
787
  const CSS_CLASS$r = buildAnimClass('split-text');
699
788
  const VISIBLE_CLASS = 'is-visible';
@@ -706,7 +795,7 @@
706
795
  }
707
796
  }
708
797
 
709
- function init$r(el, options = {}) {
798
+ function init$s(el, options = {}) {
710
799
  if (el.classList.contains(CSS_CLASS$r)) {
711
800
  return
712
801
  }
@@ -747,7 +836,7 @@
747
836
  observerMap.set(el, observer);
748
837
  }
749
838
 
750
- function destroy$r(el) {
839
+ function destroy$s(el) {
751
840
  const observer = observerMap.get(el);
752
841
  if (observer) {
753
842
  observer.disconnect();
@@ -763,12 +852,12 @@
763
852
 
764
853
  var splitText = /*#__PURE__*/Object.freeze({
765
854
  __proto__: null,
766
- ANIMATION_ID: ANIMATION_ID$r,
767
- destroy: destroy$r,
768
- init: init$r
855
+ ANIMATION_ID: ANIMATION_ID$s,
856
+ destroy: destroy$s,
857
+ init: init$s
769
858
  });
770
859
 
771
- const ANIMATION_ID$q = buildAnimId('shuffle');
860
+ const ANIMATION_ID$r = buildAnimId('shuffle');
772
861
 
773
862
  const CSS_CLASS$q = buildAnimClass('shuffle');
774
863
  const CHAR_CLASS$3 = buildAnimClass('shuffle-char');
@@ -825,7 +914,7 @@
825
914
  });
826
915
  }
827
916
 
828
- function init$q(el, options = {}) {
917
+ function init$r(el, options = {}) {
829
918
  if (el.classList.contains(CSS_CLASS$q)) {
830
919
  return
831
920
  }
@@ -863,7 +952,7 @@
863
952
  runShuffle(el, options);
864
953
  }
865
954
 
866
- function destroy$q(el) {
955
+ function destroy$r(el) {
867
956
  const state = stateMap$8.get(el);
868
957
  if (state) {
869
958
  clearState(state);
@@ -884,17 +973,17 @@
884
973
 
885
974
  var shuffle = /*#__PURE__*/Object.freeze({
886
975
  __proto__: null,
887
- ANIMATION_ID: ANIMATION_ID$q,
888
- destroy: destroy$q,
889
- init: init$q
976
+ ANIMATION_ID: ANIMATION_ID$r,
977
+ destroy: destroy$r,
978
+ init: init$r
890
979
  });
891
980
 
892
- const ANIMATION_ID$p = buildAnimId('roll-in');
981
+ const ANIMATION_ID$q = buildAnimId('roll-in');
893
982
 
894
983
  const CSS_CLASS$p = buildAnimClass('roll-in');
895
984
  const CHAR_CLASS$2 = buildAnimClass('roll-in-char');
896
985
 
897
- function init$p(el, options = {}) {
986
+ function init$q(el, options = {}) {
898
987
  if (el.classList.contains(CSS_CLASS$p)) {
899
988
  return
900
989
  }
@@ -912,7 +1001,7 @@
912
1001
  });
913
1002
  }
914
1003
 
915
- function destroy$p(el) {
1004
+ function destroy$q(el) {
916
1005
  el.classList.remove(CSS_CLASS$p);
917
1006
  if (el.dataset.originalText) {
918
1007
  el.innerHTML = el.dataset.originalText;
@@ -922,12 +1011,12 @@
922
1011
 
923
1012
  var rollIn = /*#__PURE__*/Object.freeze({
924
1013
  __proto__: null,
925
- ANIMATION_ID: ANIMATION_ID$p,
926
- destroy: destroy$p,
927
- init: init$p
1014
+ ANIMATION_ID: ANIMATION_ID$q,
1015
+ destroy: destroy$q,
1016
+ init: init$q
928
1017
  });
929
1018
 
930
- const ANIMATION_ID$o = buildAnimId('anime-splittext');
1019
+ const ANIMATION_ID$p = buildAnimId('anime-splittext');
931
1020
 
932
1021
  const CSS_CLASS$o = buildAnimClass('anime-splittext');
933
1022
  const WORD_CLASS$1 = buildAnimClass('anime-word');
@@ -1013,8 +1102,8 @@
1013
1102
  }
1014
1103
  }
1015
1104
 
1016
- function init$o(el, options = {}) {
1017
- destroy$o(el);
1105
+ function init$p(el, options = {}) {
1106
+ destroy$p(el);
1018
1107
 
1019
1108
  if (!el.classList.contains(CSS_CLASS$o)) {
1020
1109
  el.classList.add(CSS_CLASS$o);
@@ -1024,7 +1113,7 @@
1024
1113
  splitWords$1(el, options);
1025
1114
  }
1026
1115
 
1027
- function destroy$o(el) {
1116
+ function destroy$p(el) {
1028
1117
  el.classList.remove(CSS_CLASS$o);
1029
1118
  el.style.removeProperty('--readdy-anim-anime-word-duration');
1030
1119
  if (el.dataset.originalText) {
@@ -1035,12 +1124,12 @@
1035
1124
 
1036
1125
  var animeSplittext = /*#__PURE__*/Object.freeze({
1037
1126
  __proto__: null,
1038
- ANIMATION_ID: ANIMATION_ID$o,
1039
- destroy: destroy$o,
1040
- init: init$o
1127
+ ANIMATION_ID: ANIMATION_ID$p,
1128
+ destroy: destroy$p,
1129
+ init: init$p
1041
1130
  });
1042
1131
 
1043
- const ANIMATION_ID$n = buildAnimId('word-curtain-reveal');
1132
+ const ANIMATION_ID$o = buildAnimId('word-curtain-reveal');
1044
1133
 
1045
1134
  const CSS_CLASS$n = buildAnimClass('word-curtain-reveal');
1046
1135
  const WORD_CLASS = buildAnimClass('word-curtain-word');
@@ -1106,8 +1195,8 @@
1106
1195
  }
1107
1196
  }
1108
1197
 
1109
- function init$n(el, options = {}) {
1110
- destroy$n(el);
1198
+ function init$o(el, options = {}) {
1199
+ destroy$o(el);
1111
1200
 
1112
1201
  if (!el.classList.contains(CSS_CLASS$n)) {
1113
1202
  el.classList.add(CSS_CLASS$n);
@@ -1125,7 +1214,7 @@
1125
1214
  splitWords(el, options.stagger ?? 35);
1126
1215
  }
1127
1216
 
1128
- function destroy$n(el) {
1217
+ function destroy$o(el) {
1129
1218
  el.classList.remove(CSS_CLASS$n);
1130
1219
  el.style.removeProperty('--readdy-anim-word-curtain-duration');
1131
1220
  if (el.dataset.originalText) {
@@ -1136,17 +1225,17 @@
1136
1225
 
1137
1226
  var wordCurtainReveal = /*#__PURE__*/Object.freeze({
1138
1227
  __proto__: null,
1139
- ANIMATION_ID: ANIMATION_ID$n,
1140
- destroy: destroy$n,
1141
- init: init$n
1228
+ ANIMATION_ID: ANIMATION_ID$o,
1229
+ destroy: destroy$o,
1230
+ init: init$o
1142
1231
  });
1143
1232
 
1144
- const ANIMATION_ID$m = buildAnimId('bounce-in-down');
1233
+ const ANIMATION_ID$n = buildAnimId('bounce-in-down');
1145
1234
 
1146
1235
  const CSS_CLASS$m = buildAnimClass('bounce-in-down');
1147
1236
  const CHAR_CLASS = buildAnimClass('bounce-in-down-char');
1148
1237
 
1149
- function init$m(el, options = {}) {
1238
+ function init$n(el, options = {}) {
1150
1239
  if (el.classList.contains(CSS_CLASS$m)) {
1151
1240
  return
1152
1241
  }
@@ -1164,7 +1253,7 @@
1164
1253
  });
1165
1254
  }
1166
1255
 
1167
- function destroy$m(el) {
1256
+ function destroy$n(el) {
1168
1257
  el.classList.remove(CSS_CLASS$m);
1169
1258
  if (el.dataset.originalText) {
1170
1259
  el.innerHTML = el.dataset.originalText;
@@ -1174,9 +1263,9 @@
1174
1263
 
1175
1264
  var bounceInDown = /*#__PURE__*/Object.freeze({
1176
1265
  __proto__: null,
1177
- ANIMATION_ID: ANIMATION_ID$m,
1178
- destroy: destroy$m,
1179
- init: init$m
1266
+ ANIMATION_ID: ANIMATION_ID$n,
1267
+ destroy: destroy$n,
1268
+ init: init$n
1180
1269
  });
1181
1270
 
1182
1271
  function getPointerMetrics(target, event) {
@@ -1271,7 +1360,7 @@
1271
1360
  }
1272
1361
  }
1273
1362
 
1274
- const ANIMATION_ID$l = buildAnimId('magnetic-hover');
1363
+ const ANIMATION_ID$m = buildAnimId('magnetic-hover');
1275
1364
 
1276
1365
  const CSS_CLASS$l = buildAnimClass('magnetic-hover');
1277
1366
  const stateMap$7 = new WeakMap();
@@ -1282,8 +1371,8 @@
1282
1371
  el.style.setProperty('--readdy-anim-magnetic-scale', '1');
1283
1372
  }
1284
1373
 
1285
- function init$l(el, options = {}) {
1286
- destroy$l(el);
1374
+ function init$m(el, options = {}) {
1375
+ destroy$m(el);
1287
1376
 
1288
1377
  el.classList.add(CSS_CLASS$l);
1289
1378
  resetTransform(el);
@@ -1315,7 +1404,7 @@
1315
1404
  stateMap$7.set(el, { cleanup });
1316
1405
  }
1317
1406
 
1318
- function destroy$l(el) {
1407
+ function destroy$m(el) {
1319
1408
  const state = stateMap$7.get(el);
1320
1409
  if (state) {
1321
1410
  state.cleanup();
@@ -1330,12 +1419,12 @@
1330
1419
 
1331
1420
  var magneticHover = /*#__PURE__*/Object.freeze({
1332
1421
  __proto__: null,
1333
- ANIMATION_ID: ANIMATION_ID$l,
1334
- destroy: destroy$l,
1335
- init: init$l
1422
+ ANIMATION_ID: ANIMATION_ID$m,
1423
+ destroy: destroy$m,
1424
+ init: init$m
1336
1425
  });
1337
1426
 
1338
- const ANIMATION_ID$k = buildAnimId('border-beam');
1427
+ const ANIMATION_ID$l = buildAnimId('border-beam');
1339
1428
 
1340
1429
  const CSS_CLASS$k = buildAnimClass('border-beam');
1341
1430
  const LAYER_CLASS$1 = `${CSS_CLASS$k}__layer`;
@@ -1460,7 +1549,7 @@
1460
1549
  }
1461
1550
  }
1462
1551
 
1463
- function init$k(el, options = {}) {
1552
+ function init$l(el, options = {}) {
1464
1553
  if (!el.classList.contains(CSS_CLASS$k)) {
1465
1554
  el.classList.add(CSS_CLASS$k);
1466
1555
  }
@@ -1484,7 +1573,7 @@
1484
1573
  runAnimation(el);
1485
1574
  }
1486
1575
 
1487
- function destroy$k(el) {
1576
+ function destroy$l(el) {
1488
1577
  cancelAnimation(el);
1489
1578
 
1490
1579
  const state = el[STATE_KEY];
@@ -1502,16 +1591,16 @@
1502
1591
 
1503
1592
  var borderBeam = /*#__PURE__*/Object.freeze({
1504
1593
  __proto__: null,
1505
- ANIMATION_ID: ANIMATION_ID$k,
1506
- destroy: destroy$k,
1507
- init: init$k
1594
+ ANIMATION_ID: ANIMATION_ID$l,
1595
+ destroy: destroy$l,
1596
+ init: init$l
1508
1597
  });
1509
1598
 
1510
- const ANIMATION_ID$j = buildAnimId('shimmer-border');
1599
+ const ANIMATION_ID$k = buildAnimId('shimmer-border');
1511
1600
 
1512
1601
  const CSS_CLASS$j = buildAnimClass('shimmer-border');
1513
1602
 
1514
- function init$j(el, options = {}) {
1603
+ function init$k(el, options = {}) {
1515
1604
  if (!el.classList.contains(CSS_CLASS$j)) {
1516
1605
  el.classList.add(CSS_CLASS$j);
1517
1606
  }
@@ -1521,7 +1610,7 @@
1521
1610
  el.style.setProperty('--readdy-anim-shimmer-border-opacity', `${options.opacity ?? 0.88}`);
1522
1611
  }
1523
1612
 
1524
- function destroy$j(el) {
1613
+ function destroy$k(el) {
1525
1614
  el.classList.remove(CSS_CLASS$j);
1526
1615
  el.style.removeProperty('--readdy-anim-shimmer-border-duration');
1527
1616
  el.style.removeProperty('--readdy-anim-shimmer-border-width');
@@ -1530,54 +1619,54 @@
1530
1619
 
1531
1620
  var shimmerBorder = /*#__PURE__*/Object.freeze({
1532
1621
  __proto__: null,
1533
- ANIMATION_ID: ANIMATION_ID$j,
1534
- destroy: destroy$j,
1535
- init: init$j
1622
+ ANIMATION_ID: ANIMATION_ID$k,
1623
+ destroy: destroy$k,
1624
+ init: init$k
1536
1625
  });
1537
1626
 
1538
- const ANIMATION_ID$i = buildAnimId('rainbow-button');
1627
+ const ANIMATION_ID$j = buildAnimId('rainbow-button');
1539
1628
 
1540
1629
  const CSS_CLASS$i = buildAnimClass('rainbow-button');
1541
1630
 
1542
- function init$i(el, options = {}) {
1631
+ function init$j(el, options = {}) {
1543
1632
  if (!el.classList.contains(CSS_CLASS$i)) {
1544
1633
  el.classList.add(CSS_CLASS$i);
1545
1634
  }
1546
1635
  }
1547
1636
 
1548
- function destroy$i(el) {
1637
+ function destroy$j(el) {
1549
1638
  el.classList.remove(CSS_CLASS$i);
1550
1639
  }
1551
1640
 
1552
1641
  var rainbowButton = /*#__PURE__*/Object.freeze({
1553
1642
  __proto__: null,
1554
- ANIMATION_ID: ANIMATION_ID$i,
1555
- destroy: destroy$i,
1556
- init: init$i
1643
+ ANIMATION_ID: ANIMATION_ID$j,
1644
+ destroy: destroy$j,
1645
+ init: init$j
1557
1646
  });
1558
1647
 
1559
- const ANIMATION_ID$h = buildAnimId('sketch-button');
1648
+ const ANIMATION_ID$i = buildAnimId('sketch-button');
1560
1649
 
1561
1650
  const CSS_CLASS$h = buildAnimClass('sketch-button');
1562
1651
 
1563
- function init$h(el) {
1652
+ function init$i(el) {
1564
1653
  if (!el.classList.contains(CSS_CLASS$h)) {
1565
1654
  el.classList.add(CSS_CLASS$h);
1566
1655
  }
1567
1656
  }
1568
1657
 
1569
- function destroy$h(el) {
1658
+ function destroy$i(el) {
1570
1659
  el.classList.remove(CSS_CLASS$h);
1571
1660
  }
1572
1661
 
1573
1662
  var sketchButton = /*#__PURE__*/Object.freeze({
1574
1663
  __proto__: null,
1575
- ANIMATION_ID: ANIMATION_ID$h,
1576
- destroy: destroy$h,
1577
- init: init$h
1664
+ ANIMATION_ID: ANIMATION_ID$i,
1665
+ destroy: destroy$i,
1666
+ init: init$i
1578
1667
  });
1579
1668
 
1580
- const ANIMATION_ID$g = buildAnimId('confetti-button');
1669
+ const ANIMATION_ID$h = buildAnimId('confetti-button');
1581
1670
 
1582
1671
  const CSS_CLASS$g = buildAnimClass('confetti-button');
1583
1672
  const LAYER_CLASS = buildAnimClass('confetti-layer');
@@ -1608,13 +1697,13 @@
1608
1697
  }, 1100)
1609
1698
  }
1610
1699
 
1611
- function init$g(el, options = {}) {
1612
- destroy$g(el);
1700
+ function init$h(el, options = {}) {
1701
+ destroy$h(el);
1613
1702
 
1614
1703
  el.classList.add(CSS_CLASS$g);
1615
1704
 
1616
1705
  const onClick = () => {
1617
- if (prefersReducedMotion()) {
1706
+ if (options.respectReducedMotion !== false && prefersReducedMotion()) {
1618
1707
  return
1619
1708
  }
1620
1709
  const timeoutId = createBurst(el, options);
@@ -1628,7 +1717,7 @@
1628
1717
  stateMap$6.set(el, { onClick, timeoutIds: [] });
1629
1718
  }
1630
1719
 
1631
- function destroy$g(el) {
1720
+ function destroy$h(el) {
1632
1721
  const state = stateMap$6.get(el);
1633
1722
  if (state) {
1634
1723
  el.removeEventListener('click', state.onClick);
@@ -1642,12 +1731,12 @@
1642
1731
 
1643
1732
  var confettiButton = /*#__PURE__*/Object.freeze({
1644
1733
  __proto__: null,
1645
- ANIMATION_ID: ANIMATION_ID$g,
1646
- destroy: destroy$g,
1647
- init: init$g
1734
+ ANIMATION_ID: ANIMATION_ID$h,
1735
+ destroy: destroy$h,
1736
+ init: init$h
1648
1737
  });
1649
1738
 
1650
- const ANIMATION_ID$f = buildAnimId('glow-cta');
1739
+ const ANIMATION_ID$g = buildAnimId('glow-cta');
1651
1740
 
1652
1741
  const CSS_CLASS$f = buildAnimClass('glow-cta');
1653
1742
  const ACTIVE_CLASS$1 = buildAnimClass('glow-cta-active');
@@ -1655,7 +1744,7 @@
1655
1744
  const GLOW_X_VAR = '--readdy-anim-glow-cta-x';
1656
1745
  const GLOW_Y_VAR = '--readdy-anim-glow-cta-y';
1657
1746
 
1658
- function init$f(el, options = {}) {
1747
+ function init$g(el, options = {}) {
1659
1748
  if (cleanups.has(el)) return
1660
1749
 
1661
1750
  el.classList.add(CSS_CLASS$f);
@@ -1692,7 +1781,7 @@
1692
1781
  cleanups.set(el, cleanup);
1693
1782
  }
1694
1783
 
1695
- function destroy$f(el) {
1784
+ function destroy$g(el) {
1696
1785
  cleanups.get(el)?.();
1697
1786
  cleanups.delete(el);
1698
1787
 
@@ -1709,12 +1798,12 @@
1709
1798
 
1710
1799
  var glowCta = /*#__PURE__*/Object.freeze({
1711
1800
  __proto__: null,
1712
- ANIMATION_ID: ANIMATION_ID$f,
1713
- destroy: destroy$f,
1714
- init: init$f
1801
+ ANIMATION_ID: ANIMATION_ID$g,
1802
+ destroy: destroy$g,
1803
+ init: init$g
1715
1804
  });
1716
1805
 
1717
- const ANIMATION_ID$e = buildAnimId('bubble-button');
1806
+ const ANIMATION_ID$f = buildAnimId('bubble-button');
1718
1807
 
1719
1808
  const CSS_CLASS$e = buildAnimClass('bubble-button');
1720
1809
  const ACTIVE_CLASS = buildAnimClass('bubble-button-active');
@@ -1967,8 +2056,8 @@
1967
2056
  });
1968
2057
  }
1969
2058
 
1970
- function init$e(el) {
1971
- destroy$e(el);
2059
+ function init$f(el) {
2060
+ destroy$f(el);
1972
2061
  el.classList.add(CSS_CLASS$e);
1973
2062
 
1974
2063
  if (prefersReducedMotion()) {
@@ -2001,7 +2090,7 @@
2001
2090
  stateMap$5.set(el, state);
2002
2091
  }
2003
2092
 
2004
- function destroy$e(el) {
2093
+ function destroy$f(el) {
2005
2094
  const state = stateMap$5.get(el);
2006
2095
  if (state) {
2007
2096
  state.container.removeEventListener('mouseenter', state.onEnter);
@@ -2030,75 +2119,75 @@
2030
2119
 
2031
2120
  var bubbleButton = /*#__PURE__*/Object.freeze({
2032
2121
  __proto__: null,
2033
- ANIMATION_ID: ANIMATION_ID$e,
2034
- destroy: destroy$e,
2035
- init: init$e
2122
+ ANIMATION_ID: ANIMATION_ID$f,
2123
+ destroy: destroy$f,
2124
+ init: init$f
2036
2125
  });
2037
2126
 
2038
- const ANIMATION_ID$d = buildAnimId('bounce-elastic');
2127
+ const ANIMATION_ID$e = buildAnimId('bounce-elastic');
2039
2128
 
2040
2129
  const CSS_CLASS$d = buildAnimClass('bounce-elastic');
2041
2130
 
2042
- function init$d(el, options = {}) {
2131
+ function init$e(el, options = {}) {
2043
2132
  if (!el.classList.contains(CSS_CLASS$d)) {
2044
2133
  el.classList.add(CSS_CLASS$d);
2045
2134
  }
2046
2135
  }
2047
2136
 
2048
- function destroy$d(el) {
2137
+ function destroy$e(el) {
2049
2138
  el.classList.remove(CSS_CLASS$d);
2050
2139
  }
2051
2140
 
2052
2141
  var bounceElastic = /*#__PURE__*/Object.freeze({
2053
2142
  __proto__: null,
2054
- ANIMATION_ID: ANIMATION_ID$d,
2055
- destroy: destroy$d,
2056
- init: init$d
2143
+ ANIMATION_ID: ANIMATION_ID$e,
2144
+ destroy: destroy$e,
2145
+ init: init$e
2057
2146
  });
2058
2147
 
2059
- const ANIMATION_ID$c = buildAnimId('pulse');
2148
+ const ANIMATION_ID$d = buildAnimId('pulse');
2060
2149
 
2061
2150
  const CSS_CLASS$c = buildAnimClass('pulse');
2062
2151
 
2063
- function init$c(el, options = {}) {
2152
+ function init$d(el, options = {}) {
2064
2153
  if (!el.classList.contains(CSS_CLASS$c)) {
2065
2154
  el.classList.add(CSS_CLASS$c);
2066
2155
  }
2067
2156
  }
2068
2157
 
2069
- function destroy$c(el) {
2158
+ function destroy$d(el) {
2070
2159
  el.classList.remove(CSS_CLASS$c);
2071
2160
  }
2072
2161
 
2073
2162
  var pulse = /*#__PURE__*/Object.freeze({
2074
2163
  __proto__: null,
2075
- ANIMATION_ID: ANIMATION_ID$c,
2076
- destroy: destroy$c,
2077
- init: init$c
2164
+ ANIMATION_ID: ANIMATION_ID$d,
2165
+ destroy: destroy$d,
2166
+ init: init$d
2078
2167
  });
2079
2168
 
2080
- const ANIMATION_ID$b = buildAnimId('blur-fade-in');
2169
+ const ANIMATION_ID$c = buildAnimId('blur-fade-in');
2081
2170
 
2082
2171
  const CSS_CLASS$b = buildAnimClass('blur-fade-in');
2083
2172
 
2084
- function init$b(el, options = {}) {
2173
+ function init$c(el, options = {}) {
2085
2174
  if (!el.classList.contains(CSS_CLASS$b)) {
2086
2175
  el.classList.add(CSS_CLASS$b);
2087
2176
  }
2088
2177
  }
2089
2178
 
2090
- function destroy$b(el) {
2179
+ function destroy$c(el) {
2091
2180
  el.classList.remove(CSS_CLASS$b);
2092
2181
  }
2093
2182
 
2094
2183
  var blurFadeIn = /*#__PURE__*/Object.freeze({
2095
2184
  __proto__: null,
2096
- ANIMATION_ID: ANIMATION_ID$b,
2097
- destroy: destroy$b,
2098
- init: init$b
2185
+ ANIMATION_ID: ANIMATION_ID$c,
2186
+ destroy: destroy$c,
2187
+ init: init$c
2099
2188
  });
2100
2189
 
2101
- const ANIMATION_ID$a = buildAnimId('3d-flip');
2190
+ const ANIMATION_ID$b = buildAnimId('3d-flip');
2102
2191
 
2103
2192
  const CSS_CLASS$a = buildAnimClass('3d-flip');
2104
2193
  const stateMap$4 = new WeakMap();
@@ -2110,8 +2199,8 @@
2110
2199
  el.style.setProperty('--readdy-anim-3d-translate-y', '0px');
2111
2200
  }
2112
2201
 
2113
- function init$a(el, options = {}) {
2114
- destroy$a(el);
2202
+ function init$b(el, options = {}) {
2203
+ destroy$b(el);
2115
2204
 
2116
2205
  el.classList.add(CSS_CLASS$a);
2117
2206
  reset$1(el);
@@ -2140,7 +2229,7 @@
2140
2229
  stateMap$4.set(el, { cleanup });
2141
2230
  }
2142
2231
 
2143
- function destroy$a(el) {
2232
+ function destroy$b(el) {
2144
2233
  const state = stateMap$4.get(el);
2145
2234
  if (state) {
2146
2235
  state.cleanup();
@@ -2156,33 +2245,33 @@
2156
2245
 
2157
2246
  var flip3d = /*#__PURE__*/Object.freeze({
2158
2247
  __proto__: null,
2159
- ANIMATION_ID: ANIMATION_ID$a,
2160
- destroy: destroy$a,
2161
- init: init$a
2248
+ ANIMATION_ID: ANIMATION_ID$b,
2249
+ destroy: destroy$b,
2250
+ init: init$b
2162
2251
  });
2163
2252
 
2164
- const ANIMATION_ID$9 = buildAnimId('float-idle');
2253
+ const ANIMATION_ID$a = buildAnimId('float-idle');
2165
2254
 
2166
2255
  const CSS_CLASS$9 = buildAnimClass('float-idle');
2167
2256
 
2168
- function init$9(el, options = {}) {
2257
+ function init$a(el, options = {}) {
2169
2258
  if (!el.classList.contains(CSS_CLASS$9)) {
2170
2259
  el.classList.add(CSS_CLASS$9);
2171
2260
  }
2172
2261
  }
2173
2262
 
2174
- function destroy$9(el) {
2263
+ function destroy$a(el) {
2175
2264
  el.classList.remove(CSS_CLASS$9);
2176
2265
  }
2177
2266
 
2178
2267
  var floatIdle = /*#__PURE__*/Object.freeze({
2179
2268
  __proto__: null,
2180
- ANIMATION_ID: ANIMATION_ID$9,
2181
- destroy: destroy$9,
2182
- init: init$9
2269
+ ANIMATION_ID: ANIMATION_ID$a,
2270
+ destroy: destroy$a,
2271
+ init: init$a
2183
2272
  });
2184
2273
 
2185
- const ANIMATION_ID$8 = buildAnimId('tilted-card');
2274
+ const ANIMATION_ID$9 = buildAnimId('tilted-card');
2186
2275
 
2187
2276
  const CSS_CLASS$8 = buildAnimClass('tilted-card');
2188
2277
  const stateMap$3 = new WeakMap();
@@ -2193,8 +2282,8 @@
2193
2282
  el.style.setProperty('--readdy-anim-card-scale', '1');
2194
2283
  }
2195
2284
 
2196
- function init$8(el, options = {}) {
2197
- destroy$8(el);
2285
+ function init$9(el, options = {}) {
2286
+ destroy$9(el);
2198
2287
 
2199
2288
  el.classList.add(CSS_CLASS$8);
2200
2289
  reset(el);
@@ -2227,7 +2316,7 @@
2227
2316
  stateMap$3.set(el, { cleanup });
2228
2317
  }
2229
2318
 
2230
- function destroy$8(el) {
2319
+ function destroy$9(el) {
2231
2320
  const state = stateMap$3.get(el);
2232
2321
  if (state) {
2233
2322
  state.cleanup();
@@ -2244,12 +2333,12 @@
2244
2333
 
2245
2334
  var tiltedCard = /*#__PURE__*/Object.freeze({
2246
2335
  __proto__: null,
2247
- ANIMATION_ID: ANIMATION_ID$8,
2248
- destroy: destroy$8,
2249
- init: init$8
2336
+ ANIMATION_ID: ANIMATION_ID$9,
2337
+ destroy: destroy$9,
2338
+ init: init$9
2250
2339
  });
2251
2340
 
2252
- const ANIMATION_ID$7 = buildAnimId('card-flip');
2341
+ const ANIMATION_ID$8 = buildAnimId('card-flip');
2253
2342
 
2254
2343
  const CSS_CLASS$7 = buildAnimClass('card-flip');
2255
2344
  const SCENE_CLASS = buildAnimClass('card-flip-scene');
@@ -2365,8 +2454,8 @@
2365
2454
  });
2366
2455
  }
2367
2456
 
2368
- function init$7(el, options = {}) {
2369
- destroy$7(el);
2457
+ function init$8(el, options = {}) {
2458
+ destroy$8(el);
2370
2459
 
2371
2460
  const originalNodes = collectRenderableNodes(el);
2372
2461
  const rect = el.getBoundingClientRect();
@@ -2420,7 +2509,7 @@
2420
2509
  el.replaceChildren(scene);
2421
2510
  }
2422
2511
 
2423
- function destroy$7(el) {
2512
+ function destroy$8(el) {
2424
2513
  const state = stateMap$2.get(el);
2425
2514
  el.classList.remove(CSS_CLASS$7);
2426
2515
  el.style.removeProperty('--readdy-anim-card-flip-duration');
@@ -2452,9 +2541,9 @@
2452
2541
 
2453
2542
  var cardFlip = /*#__PURE__*/Object.freeze({
2454
2543
  __proto__: null,
2455
- ANIMATION_ID: ANIMATION_ID$7,
2456
- destroy: destroy$7,
2457
- init: init$7
2544
+ ANIMATION_ID: ANIMATION_ID$8,
2545
+ destroy: destroy$8,
2546
+ init: init$8
2458
2547
  });
2459
2548
 
2460
2549
  function hasUsableBackgroundImage(node) {
@@ -2499,14 +2588,14 @@
2499
2588
  return el.firstElementChild instanceof HTMLElement ? el.firstElementChild : el
2500
2589
  }
2501
2590
 
2502
- const ANIMATION_ID$6 = buildAnimId('image-zoom-rotate');
2591
+ const ANIMATION_ID$7 = buildAnimId('image-zoom-rotate');
2503
2592
 
2504
2593
  const CSS_CLASS$6 = buildAnimClass('image-zoom-rotate');
2505
2594
  const MEDIA_CLASS$1 = buildAnimClass('card-media');
2506
2595
 
2507
2596
  const autoMediaState = new WeakMap();
2508
2597
 
2509
- function init$6(el, options = {}) {
2598
+ function init$7(el, options = {}) {
2510
2599
  if (!el.classList.contains(CSS_CLASS$6)) {
2511
2600
  el.classList.add(CSS_CLASS$6);
2512
2601
  }
@@ -2531,7 +2620,7 @@
2531
2620
  autoMediaState.set(el, state);
2532
2621
  }
2533
2622
 
2534
- function destroy$6(el) {
2623
+ function destroy$7(el) {
2535
2624
  el.classList.remove(CSS_CLASS$6);
2536
2625
  el.style.removeProperty('--readdy-anim-image-zoom-scale');
2537
2626
  el.style.removeProperty('--readdy-anim-image-zoom-rotate');
@@ -2546,16 +2635,16 @@
2546
2635
 
2547
2636
  var imageZoomRotate = /*#__PURE__*/Object.freeze({
2548
2637
  __proto__: null,
2549
- ANIMATION_ID: ANIMATION_ID$6,
2550
- destroy: destroy$6,
2551
- init: init$6
2638
+ ANIMATION_ID: ANIMATION_ID$7,
2639
+ destroy: destroy$7,
2640
+ init: init$7
2552
2641
  });
2553
2642
 
2554
- const ANIMATION_ID$5 = buildAnimId('rgb-split-glitch');
2643
+ const ANIMATION_ID$6 = buildAnimId('rgb-split-glitch');
2555
2644
 
2556
2645
  const CSS_CLASS$5 = buildAnimClass('rgb-split-glitch');
2557
2646
 
2558
- function init$5(el, options = {}) {
2647
+ function init$6(el, options = {}) {
2559
2648
  if (!el.classList.contains(CSS_CLASS$5)) {
2560
2649
  el.classList.add(CSS_CLASS$5);
2561
2650
  }
@@ -2565,7 +2654,7 @@
2565
2654
  el.style.setProperty('--readdy-anim-rgb-glitch-shadow', `${options.shadowOffset ?? 2}px`);
2566
2655
  }
2567
2656
 
2568
- function destroy$5(el) {
2657
+ function destroy$6(el) {
2569
2658
  el.classList.remove(CSS_CLASS$5);
2570
2659
  el.style.removeProperty('--readdy-anim-rgb-glitch-duration');
2571
2660
  el.style.removeProperty('--readdy-anim-rgb-glitch-shift');
@@ -2574,12 +2663,12 @@
2574
2663
 
2575
2664
  var rgbSplitGlitch = /*#__PURE__*/Object.freeze({
2576
2665
  __proto__: null,
2577
- ANIMATION_ID: ANIMATION_ID$5,
2578
- destroy: destroy$5,
2579
- init: init$5
2666
+ ANIMATION_ID: ANIMATION_ID$6,
2667
+ destroy: destroy$6,
2668
+ init: init$6
2580
2669
  });
2581
2670
 
2582
- const ANIMATION_ID$4 = buildAnimId('card-fan-spread');
2671
+ const ANIMATION_ID$5 = buildAnimId('card-fan-spread');
2583
2672
 
2584
2673
  const CSS_CLASS$4 = buildAnimClass('card-fan-spread');
2585
2674
  const STACK_CLASS = buildAnimClass('card-fan-stack');
@@ -2644,8 +2733,8 @@
2644
2733
  return stack
2645
2734
  }
2646
2735
 
2647
- function init$4(el, options = {}) {
2648
- destroy$4(el);
2736
+ function init$5(el, options = {}) {
2737
+ destroy$5(el);
2649
2738
 
2650
2739
  el.classList.add(CSS_CLASS$4);
2651
2740
  const spreadDistance = options.spreadDistance ?? 72;
@@ -2695,7 +2784,7 @@
2695
2784
  stateMap$1.set(el, state);
2696
2785
  }
2697
2786
 
2698
- function destroy$4(el) {
2787
+ function destroy$5(el) {
2699
2788
  const state = stateMap$1.get(el);
2700
2789
  if (state) {
2701
2790
  if (state.toggle) {
@@ -2724,12 +2813,12 @@
2724
2813
 
2725
2814
  var cardFanSpread = /*#__PURE__*/Object.freeze({
2726
2815
  __proto__: null,
2727
- ANIMATION_ID: ANIMATION_ID$4,
2728
- destroy: destroy$4,
2729
- init: init$4
2816
+ ANIMATION_ID: ANIMATION_ID$5,
2817
+ destroy: destroy$5,
2818
+ init: init$5
2730
2819
  });
2731
2820
 
2732
- const ANIMATION_ID$3 = buildAnimId('image-magnifier');
2821
+ const ANIMATION_ID$4 = buildAnimId('image-magnifier');
2733
2822
 
2734
2823
  const CSS_CLASS$3 = buildAnimClass('image-magnifier');
2735
2824
  const MEDIA_CLASS = buildAnimClass('card-media');
@@ -2957,8 +3046,8 @@
2957
3046
  lens.style.backgroundPosition = `${localX}% ${localY}%`;
2958
3047
  }
2959
3048
 
2960
- function init$3(el, options = {}) {
2961
- destroy$3(el);
3049
+ function init$4(el, options = {}) {
3050
+ destroy$4(el);
2962
3051
 
2963
3052
  el.classList.add(CSS_CLASS$3);
2964
3053
 
@@ -3039,7 +3128,7 @@
3039
3128
  primeLensSurface(el, state, zoomFactor);
3040
3129
  }
3041
3130
 
3042
- function destroy$3(el) {
3131
+ function destroy$4(el) {
3043
3132
  const state = stateMap.get(el);
3044
3133
  if (state) {
3045
3134
  state.cleanupPointerFollow();
@@ -3059,16 +3148,16 @@
3059
3148
 
3060
3149
  var imageMagnifier = /*#__PURE__*/Object.freeze({
3061
3150
  __proto__: null,
3062
- ANIMATION_ID: ANIMATION_ID$3,
3063
- destroy: destroy$3,
3064
- init: init$3
3151
+ ANIMATION_ID: ANIMATION_ID$4,
3152
+ destroy: destroy$4,
3153
+ init: init$4
3065
3154
  });
3066
3155
 
3067
- const ANIMATION_ID$2 = buildAnimId('pop-in-stack');
3156
+ const ANIMATION_ID$3 = buildAnimId('pop-in-stack');
3068
3157
 
3069
3158
  const CSS_CLASS$2 = buildAnimClass('pop-in-stack');
3070
3159
 
3071
- function init$2(el, options = {}) {
3160
+ function init$3(el, options = {}) {
3072
3161
  if (!el.classList.contains(CSS_CLASS$2)) {
3073
3162
  el.classList.add(CSS_CLASS$2);
3074
3163
  }
@@ -3079,7 +3168,7 @@
3079
3168
  el.style.setProperty('--readdy-anim-pop-scale-start', `${options.scaleStart ?? 0.88}`);
3080
3169
  }
3081
3170
 
3082
- function destroy$2(el) {
3171
+ function destroy$3(el) {
3083
3172
  el.classList.remove(CSS_CLASS$2);
3084
3173
  el.style.removeProperty('--readdy-anim-pop-delay');
3085
3174
  el.style.removeProperty('--readdy-anim-pop-duration');
@@ -3089,47 +3178,76 @@
3089
3178
 
3090
3179
  var popInStack = /*#__PURE__*/Object.freeze({
3091
3180
  __proto__: null,
3092
- ANIMATION_ID: ANIMATION_ID$2,
3093
- destroy: destroy$2,
3094
- init: init$2
3181
+ ANIMATION_ID: ANIMATION_ID$3,
3182
+ destroy: destroy$3,
3183
+ init: init$3
3095
3184
  });
3096
3185
 
3097
- const ANIMATION_ID$1 = buildAnimId('bounce-in-bottom');
3186
+ const ANIMATION_ID$2 = buildAnimId('bounce-in-bottom');
3098
3187
 
3099
3188
  const CSS_CLASS$1 = buildAnimClass('bounce-in-bottom');
3100
3189
 
3101
- function init$1(el, options = {}) {
3190
+ function init$2(el, options = {}) {
3102
3191
  if (!el.classList.contains(CSS_CLASS$1)) {
3103
3192
  el.classList.add(CSS_CLASS$1);
3104
3193
  }
3105
3194
  }
3106
3195
 
3107
- function destroy$1(el) {
3196
+ function destroy$2(el) {
3108
3197
  el.classList.remove(CSS_CLASS$1);
3109
3198
  }
3110
3199
 
3111
3200
  var bounceInBottom = /*#__PURE__*/Object.freeze({
3112
3201
  __proto__: null,
3113
- ANIMATION_ID: ANIMATION_ID$1,
3114
- destroy: destroy$1,
3115
- init: init$1
3202
+ ANIMATION_ID: ANIMATION_ID$2,
3203
+ destroy: destroy$2,
3204
+ init: init$2
3116
3205
  });
3117
3206
 
3118
- const ANIMATION_ID = buildAnimId('reveal-from-top');
3207
+ const ANIMATION_ID$1 = buildAnimId('reveal-from-top');
3119
3208
 
3120
3209
  const CSS_CLASS = buildAnimClass('reveal-from-top');
3121
3210
 
3122
- function init(el, options = {}) {
3211
+ function init$1(el, options = {}) {
3123
3212
  if (!el.classList.contains(CSS_CLASS)) {
3124
3213
  el.classList.add(CSS_CLASS);
3125
3214
  }
3126
3215
  }
3127
3216
 
3128
- function destroy(el) {
3217
+ function destroy$1(el) {
3129
3218
  el.classList.remove(CSS_CLASS);
3130
3219
  }
3131
3220
 
3132
3221
  var revealFromTop = /*#__PURE__*/Object.freeze({
3222
+ __proto__: null,
3223
+ ANIMATION_ID: ANIMATION_ID$1,
3224
+ destroy: destroy$1,
3225
+ init: init$1
3226
+ });
3227
+
3228
+ const ANIMATION_ID = buildAnimId('magic-ui-border-beam');
3229
+
3230
+ function init(el, options = {}) {
3231
+ init$l(el, {
3232
+ duration: options.duration ?? 3000,
3233
+ delay: options.delay ?? 0,
3234
+ borderWidth: options.borderWidth ?? 1.35,
3235
+ glowOpacity: options.glowOpacity ?? 0.28,
3236
+ size: options.size,
3237
+ initialOffset: options.initialOffset ?? 0,
3238
+ colorFrom: options.colorFrom ?? '#ff6b6b',
3239
+ colorTo: options.colorTo ?? '#ffb86b',
3240
+ secondaryColorFrom: options.secondaryColorFrom ?? '#5ea0ff',
3241
+ secondaryColorTo: options.secondaryColorTo ?? '#9ec5ff',
3242
+ reverse: options.reverse ?? false,
3243
+ });
3244
+ }
3245
+
3246
+ function destroy(el) {
3247
+ destroy$l(el);
3248
+ }
3249
+
3250
+ var magicUiBorderBeam = /*#__PURE__*/Object.freeze({
3133
3251
  __proto__: null,
3134
3252
  ANIMATION_ID: ANIMATION_ID,
3135
3253
  destroy: destroy,
@@ -3150,42 +3268,58 @@
3150
3268
  }
3151
3269
  }
3152
3270
 
3153
- const registry = {
3154
- [ANIMATION_ID$x]: defineAnimation(letterBounce),
3155
- [ANIMATION_ID$w]: defineAnimation(shimmerText),
3156
- [ANIMATION_ID$v]: defineAnimation(textType),
3157
- [ANIMATION_ID$u]: defineAnimation(gradientText),
3158
- [ANIMATION_ID$t]: defineAnimation(flyInChars),
3159
- [ANIMATION_ID$s]: defineAnimation(blurRise),
3160
- [ANIMATION_ID$r]: defineAnimation(splitText),
3161
- [ANIMATION_ID$q]: defineAnimation(shuffle),
3162
- [ANIMATION_ID$p]: defineAnimation(rollIn),
3163
- [ANIMATION_ID$o]: defineAnimation(animeSplittext),
3164
- [ANIMATION_ID$n]: defineAnimation(wordCurtainReveal),
3165
- [ANIMATION_ID$m]: defineAnimation(bounceInDown),
3166
- [ANIMATION_ID$l]: defineAnimation(magneticHover),
3167
- [ANIMATION_ID$k]: defineAnimation(borderBeam),
3168
- [ANIMATION_ID$j]: defineAnimation(shimmerBorder),
3169
- [ANIMATION_ID$i]: defineAnimation(rainbowButton),
3170
- [ANIMATION_ID$h]: defineAnimation(sketchButton),
3171
- [ANIMATION_ID$g]: defineAnimation(confettiButton),
3172
- [ANIMATION_ID$f]: defineAnimation(glowCta),
3173
- [ANIMATION_ID$e]: defineAnimation(bubbleButton),
3174
- [ANIMATION_ID$d]: defineAnimation(bounceElastic),
3175
- [ANIMATION_ID$c]: defineAnimation(pulse),
3176
- [ANIMATION_ID$b]: defineAnimation(blurFadeIn),
3177
- [ANIMATION_ID$a]: defineAnimation(flip3d),
3178
- [ANIMATION_ID$9]: defineAnimation(floatIdle),
3179
- [ANIMATION_ID$8]: defineAnimation(tiltedCard),
3180
- [ANIMATION_ID$7]: defineAnimation(cardFlip),
3181
- [ANIMATION_ID$6]: defineAnimation(imageZoomRotate),
3182
- [ANIMATION_ID$5]: defineAnimation(rgbSplitGlitch),
3183
- [ANIMATION_ID$4]: defineAnimation(cardFanSpread),
3184
- [ANIMATION_ID$3]: defineAnimation(imageMagnifier),
3185
- [ANIMATION_ID$2]: defineAnimation(popInStack),
3186
- [ANIMATION_ID$1]: defineAnimation(bounceInBottom),
3187
- [ANIMATION_ID]: defineAnimation(revealFromTop),
3188
- };
3271
+ function buildMetadataId(category, slug) {
3272
+ return `anim-readdy-${category}-${slug}`
3273
+ }
3274
+
3275
+ function register(registry, mod, aliases = []) {
3276
+ const entry = defineAnimation(mod);
3277
+ registry[mod.ANIMATION_ID] = entry;
3278
+ for (const alias of aliases) {
3279
+ registry[alias] = entry;
3280
+ }
3281
+ }
3282
+
3283
+ const registry = {};
3284
+
3285
+ register(registry, letterBounce, [buildMetadataId('header', 'letter-bounce')]);
3286
+ register(registry, shimmerText, [buildMetadataId('header', 'shimmer-text')]);
3287
+ register(registry, textType, [buildMetadataId('header', 'text-type')]);
3288
+ register(registry, gradientText, [buildMetadataId('header', 'gradient-text')]);
3289
+ register(registry, flyInChars, [buildMetadataId('header', 'fly-in-chars')]);
3290
+ register(registry, blurToSharpRise, [buildMetadataId('header', 'blur-to-sharp-rise')]);
3291
+ register(registry, blurRise, [buildMetadataId('card', 'blur-rise')]);
3292
+ register(registry, splitText, [buildMetadataId('header', 'split-text')]);
3293
+ register(registry, shuffle, [buildMetadataId('header', 'shuffle')]);
3294
+ register(registry, rollIn, [buildMetadataId('header', 'roll-in')]);
3295
+ register(registry, animeSplittext, [buildMetadataId('header', 'anime-splittext')]);
3296
+ register(registry, wordCurtainReveal, [buildMetadataId('header', 'word-curtain-reveal')]);
3297
+ register(registry, bounceInDown, [buildMetadataId('header', 'bounce-in-down')]);
3298
+
3299
+ register(registry, magneticHover, [buildMetadataId('button', 'magnetic-hover')]);
3300
+ register(registry, borderBeam, [buildMetadataId('button', 'border-beam')]);
3301
+ register(registry, shimmerBorder, [buildMetadataId('button', 'shimmer-border')]);
3302
+ register(registry, rainbowButton, [buildMetadataId('button', 'rainbow-button')]);
3303
+ register(registry, sketchButton, [buildMetadataId('button', 'sketch-button')]);
3304
+ register(registry, confettiButton, [buildMetadataId('button', 'confetti-button')]);
3305
+ register(registry, glowCta, [buildMetadataId('button', 'glow-cta')]);
3306
+ register(registry, bubbleButton, [buildMetadataId('button', 'bubble-button')]);
3307
+ register(registry, bounceElastic, [buildMetadataId('button', 'bounce-elastic')]);
3308
+ register(registry, pulse, [buildMetadataId('button', 'pulse')]);
3309
+ register(registry, blurFadeIn, [buildMetadataId('button', 'blur-fade-in')]);
3310
+ register(registry, flip3d, [buildMetadataId('button', '3d-flip')]);
3311
+
3312
+ register(registry, floatIdle, [buildMetadataId('card', 'float-idle')]);
3313
+ register(registry, tiltedCard, [buildMetadataId('card', 'tilted-card')]);
3314
+ register(registry, cardFlip, [buildMetadataId('card', 'card-flip')]);
3315
+ register(registry, imageZoomRotate, [buildMetadataId('card', 'image-zoom-rotate')]);
3316
+ register(registry, rgbSplitGlitch, [buildMetadataId('card', 'rgb-split-glitch')]);
3317
+ register(registry, cardFanSpread, [buildMetadataId('card', 'card-fan-spread')]);
3318
+ register(registry, imageMagnifier, [buildMetadataId('card', 'image-magnifier')]);
3319
+ register(registry, popInStack, [buildMetadataId('card', 'pop-in-stack')]);
3320
+ register(registry, bounceInBottom, [buildMetadataId('card', 'bounce-in-bottom')]);
3321
+ register(registry, revealFromTop, [buildMetadataId('card', 'reveal-from-top')]);
3322
+ register(registry, magicUiBorderBeam, [buildMetadataId('card', 'magic-ui-border-beam')]);
3189
3323
 
3190
3324
  return registry;
3191
3325