@mova-ui/react 0.4.10 → 0.4.11

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 (512) hide show
  1. package/dist/catalog/components/cards/CardTimeMachine.d.ts +7 -0
  2. package/dist/catalog/components/cards/CardTimeMachine.js +14 -11
  3. package/dist/catalog/components/dither-charts/DitherBook.d.ts +5 -2
  4. package/dist/catalog/components/dither-charts/DitherBook.js +35 -27
  5. package/dist/catalog/components/dither-charts/DitherChartsGrid.js +3 -3
  6. package/dist/catalog/components/simple-comp/DitherChartsGrid.js +3 -3
  7. package/dist/catalog/data/ditherCharts.js +3 -3
  8. package/dist/catalog/data/formElements.js +2 -2
  9. package/dist/catalog/data/installCommand.js +2 -2
  10. package/dist/catalog/data/metrics.js +2 -2
  11. package/dist/catalog/data/supportedRegistryIds.js +1 -1
  12. package/dist/catalog/data/textAnimations.js +2 -2
  13. package/dist/catalog/data/toggles.js +2 -2
  14. package/dist/catalog/data/transitions.js +2 -2
  15. package/dist/catalog-chunks/{chunk-YPZZOKH4.js → chunk-CQ7VYA46.js} +7 -0
  16. package/dist/catalog-chunks/{chunk-6NP66VN5.js → chunk-EYGZ2KK7.js} +1 -1
  17. package/dist/catalog-chunks/{chunk-WKFJSUM3.js → chunk-PMFHIVMP.js} +1 -1
  18. package/dist/index.d.ts +7 -0
  19. package/dist/index.js +2149 -143
  20. package/dist/styles.css +1 -1
  21. package/dist/ui/patterns/animated-mega-menu.d.ts +23 -0
  22. package/dist/ui/patterns/blur-carousel.d.ts +44 -0
  23. package/dist/ui/patterns/compare-slider.d.ts +15 -0
  24. package/dist/ui/patterns/fold-panel.d.ts +15 -0
  25. package/dist/ui/patterns/gesture-range-slider.d.ts +21 -0
  26. package/dist/ui/patterns/long-press-context-menu.d.ts +48 -0
  27. package/dist/ui/patterns/split-view.d.ts +17 -0
  28. package/package.json +1 -1
  29. package/registry/1.json +1 -1
  30. package/registry/10.json +1 -1
  31. package/registry/11.json +1 -1
  32. package/registry/12.json +1 -1
  33. package/registry/13.json +1 -1
  34. package/registry/14.json +1 -1
  35. package/registry/15.json +1 -1
  36. package/registry/16.json +1 -1
  37. package/registry/17.json +1 -1
  38. package/registry/18.json +1 -1
  39. package/registry/19.json +1 -1
  40. package/registry/2.json +1 -1
  41. package/registry/20.json +1 -1
  42. package/registry/21.json +1 -1
  43. package/registry/22.json +1 -1
  44. package/registry/23.json +1 -1
  45. package/registry/24.json +1 -1
  46. package/registry/25.json +1 -1
  47. package/registry/26.json +1 -1
  48. package/registry/27.json +1 -1
  49. package/registry/28.json +1 -1
  50. package/registry/29.json +1 -1
  51. package/registry/3.json +1 -1
  52. package/registry/30.json +1 -1
  53. package/registry/31.json +1 -1
  54. package/registry/32.json +1 -1
  55. package/registry/33.json +1 -1
  56. package/registry/34.json +1 -1
  57. package/registry/35.json +1 -1
  58. package/registry/36.json +1 -1
  59. package/registry/37.json +1 -1
  60. package/registry/4.json +1 -1
  61. package/registry/5.json +1 -1
  62. package/registry/6.json +1 -1
  63. package/registry/7.json +1 -1
  64. package/registry/8.json +1 -1
  65. package/registry/9.json +1 -1
  66. package/registry/LICENSE.third-party +52 -0
  67. package/registry/ab-segmented-tabs.json +1 -1
  68. package/registry/accordion-blind.json +1 -1
  69. package/registry/accordion-loader.json +1 -1
  70. package/registry/ai-approval-card.json +1 -1
  71. package/registry/ai-code-block.json +1 -1
  72. package/registry/ai-context-meter.json +1 -1
  73. package/registry/ai-fine-tune-card.json +1 -1
  74. package/registry/ai-prompt-bar.json +1 -1
  75. package/registry/ai-sidebar-nav.json +1 -1
  76. package/registry/ai-sources.json +1 -1
  77. package/registry/ai-suggestions.json +1 -1
  78. package/registry/ai-task-list.json +1 -1
  79. package/registry/ai-tool-call.json +1 -1
  80. package/registry/analyzing-image.json +1 -1
  81. package/registry/animated-mega-menu.json +21 -0
  82. package/registry/animated-sidebar.json +1 -1
  83. package/registry/animated-tags.json +1 -1
  84. package/registry/app-icon-load.json +1 -1
  85. package/registry/apple-breathe.json +1 -1
  86. package/registry/apple-equalizer.json +1 -1
  87. package/registry/apple-icon-morph.json +1 -1
  88. package/registry/apple-pulse-dots.json +1 -1
  89. package/registry/apple-scale-pulse.json +1 -1
  90. package/registry/apple-sound-wave.json +1 -1
  91. package/registry/apple-text-reveal.json +1 -1
  92. package/registry/apple-unlock.json +1 -1
  93. package/registry/arc-tracer.json +1 -1
  94. package/registry/balance-bar-chart-card.json +1 -1
  95. package/registry/bar-cascade.json +1 -1
  96. package/registry/bar-sweep.json +1 -1
  97. package/registry/blur-carousel.json +18 -0
  98. package/registry/blur-text.json +1 -1
  99. package/registry/blur-up-char.json +1 -1
  100. package/registry/blur-up-word.json +1 -1
  101. package/registry/bobbing-dots.json +1 -1
  102. package/registry/bookmark-corner-peel.json +1 -1
  103. package/registry/bookmark-save-pill.json +1 -1
  104. package/registry/bookmark-toggle.json +1 -1
  105. package/registry/border-trail-loading.json +1 -1
  106. package/registry/bounce-dots.json +1 -1
  107. package/registry/bounce-in-char.json +1 -1
  108. package/registry/bouncing-bars.json +1 -1
  109. package/registry/bouncing-dots.json +1 -1
  110. package/registry/bouncing-lines.json +1 -1
  111. package/registry/bouncing-square.json +1 -1
  112. package/registry/breathe-ring.json +1 -1
  113. package/registry/breathing-glow.json +1 -1
  114. package/registry/breathing-square.json +1 -1
  115. package/registry/btn-1.json +1 -1
  116. package/registry/btn-10.json +1 -1
  117. package/registry/btn-11.json +1 -1
  118. package/registry/btn-12.json +1 -1
  119. package/registry/btn-13.json +1 -1
  120. package/registry/btn-14.json +1 -1
  121. package/registry/btn-15.json +1 -1
  122. package/registry/btn-16.json +1 -1
  123. package/registry/btn-17.json +1 -1
  124. package/registry/btn-18.json +1 -1
  125. package/registry/btn-19.json +1 -1
  126. package/registry/btn-2.json +1 -1
  127. package/registry/btn-20.json +1 -1
  128. package/registry/btn-21.json +1 -1
  129. package/registry/btn-22.json +1 -1
  130. package/registry/btn-23.json +1 -1
  131. package/registry/btn-24.json +1 -1
  132. package/registry/btn-25.json +1 -1
  133. package/registry/btn-26.json +1 -1
  134. package/registry/btn-27.json +1 -1
  135. package/registry/btn-28.json +1 -1
  136. package/registry/btn-29.json +1 -1
  137. package/registry/btn-3.json +1 -1
  138. package/registry/btn-30.json +1 -1
  139. package/registry/btn-31.json +1 -1
  140. package/registry/btn-32.json +1 -1
  141. package/registry/btn-33.json +1 -1
  142. package/registry/btn-34.json +1 -1
  143. package/registry/btn-35.json +1 -1
  144. package/registry/btn-36.json +1 -1
  145. package/registry/btn-37.json +1 -1
  146. package/registry/btn-4.json +1 -1
  147. package/registry/btn-5.json +1 -1
  148. package/registry/btn-6.json +1 -1
  149. package/registry/btn-7.json +1 -1
  150. package/registry/btn-8.json +1 -1
  151. package/registry/btn-9.json +1 -1
  152. package/registry/button-slide-arrow.json +1 -1
  153. package/registry/cacheable-bandwidth-cost.json +1 -1
  154. package/registry/calendar-day-card.json +1 -1
  155. package/registry/card-arc-5.json +1 -1
  156. package/registry/card-arc-7.json +1 -1
  157. package/registry/card-carousel-mono.json +1 -1
  158. package/registry/card-carousel.json +1 -1
  159. package/registry/card-cascade-stagger.json +1 -1
  160. package/registry/card-corner-fan.json +1 -1
  161. package/registry/card-cover-flow-mono.json +1 -1
  162. package/registry/card-cover-flow.json +1 -1
  163. package/registry/card-deck-cascade.json +1 -1
  164. package/registry/card-glance-preview.json +1 -1
  165. package/registry/card-hover.json +1 -1
  166. package/registry/card-linear-spread.json +1 -1
  167. package/registry/card-long-arc-5.json +1 -1
  168. package/registry/card-scatter-spread.json +1 -1
  169. package/registry/card-stack-peel.json +1 -1
  170. package/registry/card-stamp-arc.json +1 -1
  171. package/registry/card-time-machine-mono.json +1 -1
  172. package/registry/card-time-machine.json +1 -1
  173. package/registry/card-wheel-fan.json +1 -1
  174. package/registry/category-select.json +1 -1
  175. package/registry/character-stagger.json +1 -1
  176. package/registry/checkbox-draw.json +1 -1
  177. package/registry/checkmark-draw.json +1 -1
  178. package/registry/circle-toggle.json +1 -1
  179. package/registry/circuit-trace-draw.json +1 -1
  180. package/registry/circular-bars.json +1 -1
  181. package/registry/circular-create-button.json +1 -1
  182. package/registry/classic-spinner.json +1 -1
  183. package/registry/classic-toggle.json +1 -1
  184. package/registry/clock-spinner.json +1 -1
  185. package/registry/comet-spinner.json +1 -1
  186. package/registry/compare-slider.json +19 -0
  187. package/registry/compass-needle-deflect.json +1 -1
  188. package/registry/concentric-pulse.json +1 -1
  189. package/registry/concentric-ring.json +1 -1
  190. package/registry/concentric-squares.json +1 -1
  191. package/registry/context-menu.json +1 -1
  192. package/registry/conveyor-loop.json +1 -1
  193. package/registry/credit-score-barcode-meter.json +1 -1
  194. package/registry/cross-spinner.json +1 -1
  195. package/registry/cube-flip-spring.json +1 -1
  196. package/registry/cursor-trail.json +1 -1
  197. package/registry/dash-ring.json +1 -1
  198. package/registry/dashed-spiral.json +1 -1
  199. package/registry/date-position-selector.json +1 -1
  200. package/registry/day-trading-order-ticket.json +1 -1
  201. package/registry/dia-text-reveal.json +1 -1
  202. package/registry/diamond-grid.json +1 -1
  203. package/registry/diamond-rotate-spring.json +1 -1
  204. package/registry/dislike-toggle.json +1 -1
  205. package/registry/dither-book.json +1 -1
  206. package/registry/domino-cascade.json +1 -1
  207. package/registry/dot-spinner.json +1 -1
  208. package/registry/dots-ring.json +1 -1
  209. package/registry/double-bounce-toggle.json +1 -1
  210. package/registry/double-ring.json +1 -1
  211. package/registry/download-icons.json +1 -1
  212. package/registry/drop-dot.json +1 -1
  213. package/registry/drop-in-char.json +1 -1
  214. package/registry/droplet-squish.json +1 -1
  215. package/registry/dual-arc.json +1 -1
  216. package/registry/dual-magnet-dipole.json +1 -1
  217. package/registry/dynamic-island.json +1 -1
  218. package/registry/elastic-bars.json +1 -1
  219. package/registry/elastic-square.json +1 -1
  220. package/registry/elastic-tag-snap.json +1 -1
  221. package/registry/error-shake.json +1 -1
  222. package/registry/expanding-cross.json +1 -1
  223. package/registry/expanding-icon-tabs.json +1 -1
  224. package/registry/face-id-scan.json +1 -1
  225. package/registry/fade-arc.json +1 -1
  226. package/registry/fade-dots.json +1 -1
  227. package/registry/fade-down.json +1 -1
  228. package/registry/fade-in-char.json +1 -1
  229. package/registry/fade-in-text.json +1 -1
  230. package/registry/fade-in-word.json +1 -1
  231. package/registry/fade-in.json +1 -1
  232. package/registry/fade-up.json +1 -1
  233. package/registry/file-upload-dropzone.json +1 -1
  234. package/registry/filter-tag-pill.json +1 -1
  235. package/registry/flip-square.json +1 -1
  236. package/registry/flip-x-char.json +1 -1
  237. package/registry/flip-y-char.json +1 -1
  238. package/registry/float-char.json +1 -1
  239. package/registry/float-word.json +1 -1
  240. package/registry/floating-diamonds.json +1 -1
  241. package/registry/floating-label-input.json +1 -1
  242. package/registry/fluid-bars.json +1 -1
  243. package/registry/fluid-diamond.json +1 -1
  244. package/registry/fluid-dot-orbit.json +1 -1
  245. package/registry/fluid-skeleton.json +1 -1
  246. package/registry/focus-blur.json +1 -1
  247. package/registry/fold-panel.json +19 -0
  248. package/registry/form-submit-button.json +1 -1
  249. package/registry/french-doors-3d.json +1 -1
  250. package/registry/gear-tooth-step.json +1 -1
  251. package/registry/gears.json +1 -1
  252. package/registry/gelatin-wobble.json +1 -1
  253. package/registry/geometric-iris-shutter.json +1 -1
  254. package/registry/gesture-range-slider.json +18 -0
  255. package/registry/glassmorphic-card.json +1 -1
  256. package/registry/glow-button.json +1 -1
  257. package/registry/glow-text.json +1 -1
  258. package/registry/gooey-popover.json +1 -1
  259. package/registry/gradient-arc.json +1 -1
  260. package/registry/gradient-shimmer.json +1 -1
  261. package/registry/grid-dots.json +1 -1
  262. package/registry/haptic-ring.json +1 -1
  263. package/registry/heartbeat.json +1 -1
  264. package/registry/hex-lattice-draw.json +1 -1
  265. package/registry/hexagon-spinner.json +1 -1
  266. package/registry/hourglass.json +1 -1
  267. package/registry/hover-lift-char.json +1 -1
  268. package/registry/hover-lift-word.json +1 -1
  269. package/registry/hover-link-card.json +1 -1
  270. package/registry/hover-scale-char.json +1 -1
  271. package/registry/hover-scale-word.json +1 -1
  272. package/registry/imessage-chat.json +1 -1
  273. package/registry/inertia-skid-stop.json +1 -1
  274. package/registry/infinity-path.json +1 -1
  275. package/registry/input-focus-glow.json +1 -1
  276. package/registry/inset-action-button.json +1 -1
  277. package/registry/inset-button.json +1 -1
  278. package/registry/intersecting-rings.json +1 -1
  279. package/registry/ios-spinner.json +1 -1
  280. package/registry/kinetic-metronome-tick.json +1 -1
  281. package/registry/kinetic-tension-capsule.json +1 -1
  282. package/registry/light-dark-morph.json +1 -1
  283. package/registry/like-toggle.json +1 -1
  284. package/registry/line-spinner.json +1 -1
  285. package/registry/liquid-dots.json +1 -1
  286. package/registry/liquid-glass-sheet.json +1 -1
  287. package/registry/long-press-context-menu.json +19 -0
  288. package/registry/mac-terminal.json +1 -1
  289. package/registry/magnetic-button.json +1 -1
  290. package/registry/magnetic-disks.json +1 -1
  291. package/registry/magnetic-dots.json +1 -1
  292. package/registry/magnetic-slide-btn.json +1 -1
  293. package/registry/manifest.json +785 -652
  294. package/registry/matrix-grid-loader.json +1 -1
  295. package/registry/minimal-triangle.json +1 -1
  296. package/registry/modular-tile-snap.json +1 -1
  297. package/registry/mono-activity-blue.json +1 -1
  298. package/registry/mono-activity-green.json +1 -1
  299. package/registry/mono-activity-purple.json +1 -1
  300. package/registry/mono-heatmap.json +1 -1
  301. package/registry/mono-rounded-area.json +1 -1
  302. package/registry/mono-rounded-bar.json +1 -1
  303. package/registry/mono-rounded-bubble.json +1 -1
  304. package/registry/mono-rounded-bullet.json +1 -1
  305. package/registry/mono-rounded-candlestick.json +1 -1
  306. package/registry/mono-rounded-composed.json +1 -1
  307. package/registry/mono-rounded-donut.json +1 -1
  308. package/registry/mono-rounded-funnel.json +1 -1
  309. package/registry/mono-rounded-gauge-arc.json +1 -1
  310. package/registry/mono-rounded-heatmap.json +1 -1
  311. package/registry/mono-rounded-kpi.json +1 -1
  312. package/registry/mono-rounded-line.json +1 -1
  313. package/registry/mono-rounded-meter.json +1 -1
  314. package/registry/mono-rounded-polar.json +1 -1
  315. package/registry/mono-rounded-pyramid.json +1 -1
  316. package/registry/mono-rounded-radar.json +1 -1
  317. package/registry/mono-rounded-radial-gauge.json +1 -1
  318. package/registry/mono-rounded-radial-group.json +1 -1
  319. package/registry/mono-rounded-range.json +1 -1
  320. package/registry/mono-rounded-sankey.json +1 -1
  321. package/registry/mono-rounded-scatter.json +1 -1
  322. package/registry/mono-rounded-sparkline.json +1 -1
  323. package/registry/mono-rounded-stacked-bar.json +1 -1
  324. package/registry/mono-rounded-step.json +1 -1
  325. package/registry/mono-rounded-stream.json +1 -1
  326. package/registry/mono-rounded-treemap.json +1 -1
  327. package/registry/mono-rounded-waterfall.json +1 -1
  328. package/registry/mono-stock.json +1 -1
  329. package/registry/morph-action-pill.json +1 -1
  330. package/registry/morph-dot-ring.json +1 -1
  331. package/registry/morph-loader.json +1 -1
  332. package/registry/morph-toggle.json +1 -1
  333. package/registry/morphing-bars.json +1 -1
  334. package/registry/morphing-infinity.json +1 -1
  335. package/registry/morphing-ring.json +1 -1
  336. package/registry/morphing-shape.json +1 -1
  337. package/registry/mouse-follow.json +1 -1
  338. package/registry/multi-select-chips.json +1 -1
  339. package/registry/multi-tab-bar.json +1 -1
  340. package/registry/neon-sign-draw.json +1 -1
  341. package/registry/nested-orbital-gimbal.json +1 -1
  342. package/registry/network-telemetry-matrix.json +1 -1
  343. package/registry/newtons-cradle.json +1 -1
  344. package/registry/noise-decibel-level.json +1 -1
  345. package/registry/obsidian-liquid-wave.json +1 -1
  346. package/registry/offset-rings.json +1 -1
  347. package/registry/orbiting-circles.json +1 -1
  348. package/registry/orbiting-dot.json +1 -1
  349. package/registry/origami-envelope-unfold.json +1 -1
  350. package/registry/origami-shape.json +1 -1
  351. package/registry/otp-input.json +1 -1
  352. package/registry/overview-bar-scrubber-card.json +1 -1
  353. package/registry/page-transition.json +1 -1
  354. package/registry/page-turn-curl.json +1 -1
  355. package/registry/password-toggle.json +1 -1
  356. package/registry/pendulum-bubble-level.json +1 -1
  357. package/registry/pendulum.json +1 -1
  358. package/registry/perspective-flip-stage.json +1 -1
  359. package/registry/perspective-flip.json +1 -1
  360. package/registry/perspective-layout-switcher.json +1 -1
  361. package/registry/physics-dock.json +1 -1
  362. package/registry/pill-tabs.json +1 -1
  363. package/registry/plus-minus-toggle.json +1 -1
  364. package/registry/presets.json +1 -1
  365. package/registry/prism-block-stack.json +1 -1
  366. package/registry/progress-indicator-piano.json +1 -1
  367. package/registry/progress-indicator.json +1 -1
  368. package/registry/progress-stepper.json +1 -1
  369. package/registry/pulsating-dots.json +1 -1
  370. package/registry/pulse-char.json +1 -1
  371. package/registry/pulse-dot.json +1 -1
  372. package/registry/pulse-dots.json +1 -1
  373. package/registry/pulse-square.json +1 -1
  374. package/registry/pulse-word.json +1 -1
  375. package/registry/pulse.json +1 -1
  376. package/registry/pumping-heart.json +1 -1
  377. package/registry/pyramid-block-build.json +1 -1
  378. package/registry/radar-sweep.json +1 -1
  379. package/registry/radial-iris-mask.json +1 -1
  380. package/registry/radial-spinner.json +1 -1
  381. package/registry/radio-scale.json +1 -1
  382. package/registry/range-slider.json +1 -1
  383. package/registry/receipt-tape-print.json +1 -1
  384. package/registry/rectangle-toggle.json +1 -1
  385. package/registry/repost-toggle.json +1 -1
  386. package/registry/reveal-text.json +1 -1
  387. package/registry/ribbon-banner-slide.json +1 -1
  388. package/registry/ring-sweep.json +1 -1
  389. package/registry/ripple-effect.json +1 -1
  390. package/registry/rise-up-word.json +1 -1
  391. package/registry/roller-blind-drop.json +1 -1
  392. package/registry/rolling-tumble.json +1 -1
  393. package/registry/rotate-in-char.json +1 -1
  394. package/registry/rotating-cross.json +1 -1
  395. package/registry/rotating-louvers.json +1 -1
  396. package/registry/rotating-triangle.json +1 -1
  397. package/registry/rudder-issue-board.json +1 -1
  398. package/registry/sales-analytics-dual-bars.json +1 -1
  399. package/registry/sales-overview-radial-dashboard.json +1 -1
  400. package/registry/sales-target-segmented-arc.json +1 -1
  401. package/registry/scale-in-char.json +1 -1
  402. package/registry/scale-in-text.json +1 -1
  403. package/registry/scale-in-word.json +1 -1
  404. package/registry/scale-in.json +1 -1
  405. package/registry/scramble-text.json +1 -1
  406. package/registry/scroll-canvas-unroll.json +1 -1
  407. package/registry/scroll-reveal.json +1 -1
  408. package/registry/search-expand.json +1 -1
  409. package/registry/segmented-arc-meter.json +1 -1
  410. package/registry/segmented-link-stretch.json +1 -1
  411. package/registry/segmented-step-bar.json +1 -1
  412. package/registry/segmented-stepper-dots.json +1 -1
  413. package/registry/select-dropdown.json +1 -1
  414. package/registry/server-performance-step-bars.json +1 -1
  415. package/registry/shape-shift-grid.json +1 -1
  416. package/registry/shimmer-line.json +1 -1
  417. package/registry/shimmer-text.json +1 -1
  418. package/registry/shutter-slide.json +1 -1
  419. package/registry/shutter-step-slices.json +1 -1
  420. package/registry/siri-wave.json +1 -1
  421. package/registry/skeleton-loader.json +1 -1
  422. package/registry/skeleton.json +1 -1
  423. package/registry/skew-x-char.json +1 -1
  424. package/registry/slide-down-char.json +1 -1
  425. package/registry/slide-down-word.json +1 -1
  426. package/registry/slide-left-char.json +1 -1
  427. package/registry/slide-left.json +1 -1
  428. package/registry/slide-right-char.json +1 -1
  429. package/registry/slide-right.json +1 -1
  430. package/registry/slide-up-char.json +1 -1
  431. package/registry/slide-up-text.json +1 -1
  432. package/registry/slide-up-word.json +1 -1
  433. package/registry/sliding-bars.json +1 -1
  434. package/registry/slinky-coil.json +1 -1
  435. package/registry/smart-card-dispenser.json +1 -1
  436. package/registry/smooth-dot-shift.json +1 -1
  437. package/registry/smooth-ring.json +1 -1
  438. package/registry/smooth-rounded-square.json +1 -1
  439. package/registry/solid-switch.json +1 -1
  440. package/registry/spatial-door-portal.json +1 -1
  441. package/registry/spinning-squares.json +1 -1
  442. package/registry/spiral-spinner.json +1 -1
  443. package/registry/split-gate-reveal.json +1 -1
  444. package/registry/split-view.json +18 -0
  445. package/registry/spotlight.json +1 -1
  446. package/registry/spring-bars.json +1 -1
  447. package/registry/spring-dot-matrix.json +1 -1
  448. package/registry/spring-hexagon.json +1 -1
  449. package/registry/spring-ring-expand.json +1 -1
  450. package/registry/spring-text-pop.json +1 -1
  451. package/registry/spring-text.json +1 -1
  452. package/registry/square-accordion.json +1 -1
  453. package/registry/square-grid.json +1 -1
  454. package/registry/square-snake.json +1 -1
  455. package/registry/square-spinner.json +1 -1
  456. package/registry/squash-sphere.json +1 -1
  457. package/registry/stacked-bar-pulse.json +1 -1
  458. package/registry/stagger-text.json +1 -1
  459. package/registry/staggered-glass-curtain.json +1 -1
  460. package/registry/sticky-note-peel.json +1 -1
  461. package/registry/sticky-reveal.json +1 -1
  462. package/registry/stretch-x-char.json +1 -1
  463. package/registry/stretch-y-char.json +1 -1
  464. package/registry/stroke-waveform.json +1 -1
  465. package/registry/submenu-flyout.json +1 -1
  466. package/registry/success-check.json +1 -1
  467. package/registry/sudden-brake.json +1 -1
  468. package/registry/swapping-dots.json +1 -1
  469. package/registry/swing-word.json +1 -1
  470. package/registry/swirling-spinner.json +1 -1
  471. package/registry/symmetric-wave.json +1 -1
  472. package/registry/terminal-loader.json +1 -1
  473. package/registry/text-blink.json +1 -1
  474. package/registry/text-dots.json +1 -1
  475. package/registry/text-morph.json +1 -1
  476. package/registry/text-reveal.json +1 -1
  477. package/registry/text-shimmer-wave.json +1 -1
  478. package/registry/text-shimmer.json +1 -1
  479. package/registry/textarea-auto-grow.json +1 -1
  480. package/registry/theme-toggle.json +1 -1
  481. package/registry/tilt-card.json +1 -1
  482. package/registry/timer-preparation-segmented.json +1 -1
  483. package/registry/tracking-in-text.json +1 -1
  484. package/registry/tracking-out-text.json +1 -1
  485. package/registry/trailing-dots.json +1 -1
  486. package/registry/triple-dot-spinner.json +1 -1
  487. package/registry/twin-orbit.json +1 -1
  488. package/registry/typewriter-text.json +1 -1
  489. package/registry/typing-indicator.json +1 -1
  490. package/registry/typing.json +1 -1
  491. package/registry/use-mouse-position.json +1 -1
  492. package/registry/use-reduced-motion.json +1 -1
  493. package/registry/use-scroll-progress.json +1 -1
  494. package/registry/use-stagger.json +1 -1
  495. package/registry/use-web-haptics.json +1 -1
  496. package/registry/users-growth-pill-progress.json +1 -1
  497. package/registry/utils.json +1 -1
  498. package/registry/vertical-wheel-counter.json +1 -1
  499. package/registry/views-hourly-wave-chart.json +1 -1
  500. package/registry/voice-assistant-card.json +1 -1
  501. package/registry/wandering-cube.json +1 -1
  502. package/registry/wandering-eyes.json +1 -1
  503. package/registry/watch-spinner.json +1 -1
  504. package/registry/wave-dots.json +1 -1
  505. package/registry/wave-physics-loader.json +1 -1
  506. package/registry/wave-reveal.json +1 -1
  507. package/registry/waveform-loader.json +1 -1
  508. package/registry/word-reveal.json +1 -1
  509. package/registry/zig-zag-pulse.json +1 -1
  510. package/registry/zoom-in-text.json +1 -1
  511. package/registry/zoom-in.json +1 -1
  512. package/registry/zoom-out-text.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "accordion-blind",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "accordion-blind.tsx",
6
6
  "sourcePath": "components/css-animations/whimsical/WhimsicalVariations.tsx",
7
7
  "registryFile": "accordion-blind.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "accordion-loader",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "accordion-loader.tsx",
6
6
  "sourcePath": "ui/loading/accordion-loader.tsx",
7
7
  "registryFile": "accordion-loader.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-approval-card",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-approval-card.tsx",
6
6
  "sourcePath": "ui/ai/ai-approval-card.tsx",
7
7
  "registryFile": "ai-approval-card.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-code-block",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-code-block.tsx",
6
6
  "sourcePath": "ui/ai/ai-code-block.tsx",
7
7
  "registryFile": "ai-code-block.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-context-meter",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-context-meter.tsx",
6
6
  "sourcePath": "ui/ai/ai-context-meter.tsx",
7
7
  "registryFile": "ai-context-meter.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-fine-tune-card",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-fine-tune-card.tsx",
6
6
  "sourcePath": "ui/ai/ai-fine-tune-card.tsx",
7
7
  "registryFile": "ai-fine-tune-card.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-prompt-bar",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-prompt-bar.tsx",
6
6
  "sourcePath": "ui/ai/ai-prompt-bar.tsx",
7
7
  "registryFile": "ai-prompt-bar.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-sidebar-nav",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-sidebar-nav.tsx",
6
6
  "sourcePath": "ui/ai/ai-sidebar-nav.tsx",
7
7
  "registryFile": "ai-sidebar-nav.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-sources",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-sources.tsx",
6
6
  "sourcePath": "ui/ai/ai-sources.tsx",
7
7
  "registryFile": "ai-sources.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-suggestions",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-suggestions.tsx",
6
6
  "sourcePath": "ui/ai/ai-suggestions.tsx",
7
7
  "registryFile": "ai-suggestions.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-task-list",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-task-list.tsx",
6
6
  "sourcePath": "ui/ai/ai-task-list.tsx",
7
7
  "registryFile": "ai-task-list.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "ai-tool-call",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "ai-tool-call.tsx",
6
6
  "sourcePath": "ui/ai/ai-tool-call.tsx",
7
7
  "registryFile": "ai-tool-call.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "analyzing-image",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "analyzing-image.tsx",
6
6
  "sourcePath": "ui/loading/analyzing-image.tsx",
7
7
  "registryFile": "analyzing-image.json",
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "animated-mega-menu",
3
+ "tier": "free",
4
+ "version": "0.4.11",
5
+ "file": "animated-mega-menu.tsx",
6
+ "sourcePath": "ui/patterns/animated-mega-menu.tsx",
7
+ "registryFile": "animated-mega-menu.json",
8
+ "exports": [
9
+ "AnimatedMegaMenu",
10
+ "AnimatedMegaMenuProps",
11
+ "MegaMenuItem",
12
+ "MegaMenuLink"
13
+ ],
14
+ "dependencies": [
15
+ "framer-motion",
16
+ "lucide-react"
17
+ ],
18
+ "license": "MIT",
19
+ "previewMode": "client",
20
+ "content": "\"use client\";\n/*\nReact web adaptation of the Reacticx navigation at https://reacticx.com/\n\nMIT License\n\nCopyright (c) 2026 rit3zh\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\nProject: reacticx\nAuthor: rit3zh\nYear: 2026\n\n*/\nimport {\n useCallback, useEffect, useId, useRef, useState,\n type CSSProperties, type KeyboardEvent, type PointerEvent as ReactPointerEvent, type ReactNode,\n} from 'react';\nimport { AnimatePresence, motion, useIsPresent, useReducedMotion, type HTMLMotionProps } from 'framer-motion';\nimport { ChevronDown, Menu, X } from 'lucide-react';\n\nexport interface MegaMenuLink {\n label: string;\n href: string;\n description?: string;\n icon?: ReactNode;\n}\n\nexport interface MegaMenuItem {\n label: string;\n href?: string;\n links?: readonly MegaMenuLink[];\n footer?: MegaMenuLink;\n}\n\nexport interface AnimatedMegaMenuProps {\n items: readonly MegaMenuItem[];\n brand?: ReactNode;\n actions?: ReactNode;\n label?: string;\n theme?: 'dark' | 'light';\n className?: string;\n style?: CSSProperties;\n}\n\nconst spring = { type: 'spring', stiffness: 350, damping: 32 } as const;\nconst menuStyles = `\n.mova-mega { position:relative; container-type:inline-size; width:100%; color:var(--mova-mega-text); font:inherit; }\n.mova-mega *, .mova-mega *::before { box-sizing:border-box; }\n.mova-mega-bar { height:56px; display:flex; align-items:center; gap:24px; padding:0 32px; }\n.mova-mega-brand, .mova-mega-actions { flex-shrink:0; display:flex; align-items:center; }\n.mova-mega-actions { margin-inline-start:auto; }\n.mova-mega-nav { display:flex; gap:2px; align-items:center; min-width:0; overflow:auto; scrollbar-width:none; }\n.mova-mega-trigger, .mova-mega-toggle, .mova-mega-link {\n appearance:none; border:0; background:none; color:inherit; font:inherit; text-decoration:none;\n position:relative; cursor:pointer; border-radius:8px; -webkit-tap-highlight-color:transparent;\n}\n.mova-mega :is(.mova-mega-trigger,.mova-mega-toggle,.mova-mega-link):focus-visible {\n outline:2px solid currentColor; outline-offset:-2px;\n}\n.mova-mega-trigger {\n display:flex; flex-shrink:0; align-items:center; gap:8px; height:36px; padding:0 14px;\n font-size:14px; white-space:nowrap; color:var(--mova-mega-muted);\n}\n.mova-mega-trigger[data-active=true] { color:var(--mova-mega-text); }\n.mova-mega-trigger > span { z-index:1; display:inline-flex; }\n.mova-mega-pill, .mova-mega-row-pill {\n position:absolute; inset:0; border-radius:inherit; background:var(--mova-mega-highlight); pointer-events:none;\n}\n.mova-mega-pill { z-index:0 !important; }\n.mova-mega-bridge { position:absolute; top:100%; left:0; right:0; height:8px; }\n.mova-mega-popup {\n position:absolute; left:0; top:calc(100% + 8px); z-index:2; overflow:hidden; border:1px solid var(--mova-mega-border);\n background:var(--mova-mega-surface); border-radius:16px; transform-origin:top center; box-shadow:0 14px 32px #0003;\n}\n.mova-mega-content { position:absolute; top:0; left:0; right:0; max-height:min(65vh,420px); overflow:auto; overscroll-behavior:contain; }\n.mova-mega-grid { padding:8px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:8px; }\n.mova-mega-link {\n display:flex; align-items:center; gap:10px; border-radius:12px; min-height:52px;\n padding:8px 16px; line-height:1.25; text-align:start; font-size:14px; min-width:0;\n}\n.mova-mega-link > span:not(.mova-mega-row-pill) { position:relative; min-width:0; overflow-wrap:anywhere; }\n.mova-mega-description { display:block; color:var(--mova-mega-muted); font-size:12px; margin-top:2px; }\n.mova-mega-footer { grid-column:1/-1; border-top:1px solid var(--mova-mega-border); padding-top:8px; margin-top:8px; }\n.mova-mega-toggle, .mova-mega-mobile { display:none; }\n.mova-mega-mobile { position:absolute; z-index:2; top:100%; inset-inline:0; padding:8px; max-height:min(65vh,430px);\n overflow:auto; overscroll-behavior:contain; background:var(--mova-mega-surface);\n border:1px solid var(--mova-mega-border); border-radius:16px; box-shadow:0 14px 32px #0003;\n}\n@container (max-width: 699px) {\n .mova-mega-bar { padding:0 16px; height:64px; gap:12px; }\n .mova-mega-nav, .mova-mega-popup, .mova-mega-bridge { display:none; }\n .mova-mega-toggle { display:grid; place-items:center; min-width:44px; height:44px; }\n .mova-mega-toggle:last-child { margin-inline-start:auto; }\n .mova-mega-mobile { display:block; }\n .mova-mega-mobile .mova-mega-trigger { width:100%; justify-content:space-between; min-height:44px; }\n .mova-mega-mobile .mova-mega-trigger[data-active=true] { background:var(--mova-mega-highlight); }\n}\n@container (max-width: 310px) { .mova-mega-grid { grid-template-columns:minmax(0,1fr); } }\n@container (min-width: 700px) and (max-width: 839px) {\n .mova-mega-bar { padding:0 16px; gap:12px; }\n .mova-mega-trigger { padding:0 10px; }\n}\n`;\n\nfunction PresencePanel({ as, onPresent, ...props }: HTMLMotionProps<'div'> & {\n as?: 'nav';\n onPresent?: (element: HTMLElement) => void;\n}) {\n const present = useIsPresent();\n const Element = as === 'nav' ? motion.nav : motion.div;\n const setRef = useCallback((element: HTMLElement | null) => {\n if (!element) return;\n element.inert = !present;\n if (present) onPresent?.(element);\n }, [onPresent, present]);\n return <Element {...props} data-present={present} aria-hidden={!present || undefined}\n style={{ ...props.style, pointerEvents: present ? props.style?.pointerEvents : 'none' }}\n ref={setRef} />;\n}\n\nfunction panelPosition(header: HTMLElement, trigger: HTMLElement, item: MegaMenuItem) {\n const bounds = header.getBoundingClientRect();\n const triggerBounds = trigger.getBoundingClientRect();\n const hasDescriptions = item.links?.some((link) => link.description);\n const width = Math.min(hasDescriptions ? 466 : 434, bounds.width - 32);\n const center = triggerBounds.left - bounds.left + triggerBounds.width / 2;\n const x = Math.max(16, Math.min(center - width / 2, bounds.width - width - 16));\n return { x, width };\n}\n\nfunction MegaMenuLinks({ item, layoutId, close }: { item: MegaMenuItem; layoutId: string; close: () => void }) {\n const [highlighted, setHighlighted] = useState<number | null>(null);\n const reduced = useReducedMotion();\n const links = item.links ?? [];\n\n const row = (link: MegaMenuLink, index: number) => (\n <a\n key={index}\n className=\"mova-mega-link\"\n href={link.href}\n onPointerEnter={(event) => { if (event.pointerType === 'mouse') setHighlighted(index); }}\n onFocus={() => setHighlighted(index)}\n onClick={close}\n >\n {highlighted === index && (\n <motion.span\n aria-hidden=\"true\"\n className=\"mova-mega-row-pill\"\n layoutId={reduced ? undefined : layoutId}\n transition={spring}\n />\n )}\n {link.icon != null && <span aria-hidden=\"true\">{link.icon}</span>}\n <span>\n {link.label}\n {link.description && <span className=\"mova-mega-description\">{link.description}</span>}\n </span>\n </a>\n );\n\n return (\n <div\n className=\"mova-mega-grid\"\n onPointerLeave={() => setHighlighted(null)}\n onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget)) setHighlighted(null);\n }}\n >\n {links.map(row)}\n {item.footer && <div className=\"mova-mega-footer\">{row(item.footer, links.length)}</div>}\n </div>\n );\n}\n\nexport function AnimatedMegaMenu({\n items, brand, actions, label = 'Main navigation', theme = 'dark', className, style,\n}: AnimatedMegaMenuProps) {\n const id = useId();\n const reduced = useReducedMotion();\n const root = useRef<HTMLElement>(null);\n const mobileToggle = useRef<HTMLButtonElement>(null);\n const triggers = useRef<(HTMLAnchorElement | HTMLButtonElement | null)[]>([]);\n const closeTimer = useRef<number | undefined>(undefined);\n const focusOnOpen = useRef(false);\n const [highlighted, setHighlighted] = useState<number | null>(null);\n const [active, setActive] = useState<number | null>(null);\n const [direction, setDirection] = useState(1);\n const [mobileOpen, setMobileOpen] = useState(false);\n const [mobileGroup, setMobileGroup] = useState<number | null>(null);\n const [currentPanel, setCurrentPanel] = useState<HTMLElement | null>(null);\n const [geometry, setGeometry] = useState({ x: 16, width: 434, height: 120 });\n const openItem = active === null ? undefined : items[active];\n const dark = theme === 'dark';\n const transition = reduced ? { duration: 0 } : spring;\n\n function currentContent() {\n return root.current?.querySelector<HTMLDivElement>('.mova-mega-content[data-present=\"true\"]');\n }\n\n function close() {\n window.clearTimeout(closeTimer.current);\n focusOnOpen.current = false;\n setCurrentPanel(null);\n setActive(null);\n setHighlighted(null);\n setMobileOpen(false);\n setMobileGroup(null);\n }\n\n function show(index: number, focusLinks = false) {\n window.clearTimeout(closeTimer.current);\n const item = items[index];\n if (!item) return;\n if (active !== null && index !== active) setDirection(index > active ? 1 : -1);\n setHighlighted(index);\n if (item.links?.length || item.footer) {\n const trigger = triggers.current[index];\n if (active !== index && root.current && trigger) {\n const position = panelPosition(root.current, trigger, item);\n setGeometry((previous) => ({ ...previous, ...position }));\n }\n setActive(index);\n if (focusLinks) {\n const first = active === index ? currentContent()?.querySelector('a') : null;\n if (first) first.focus();\n else focusOnOpen.current = true;\n }\n } else {\n setActive(null);\n }\n }\n\n useEffect(() => {\n if (active === null || !root.current || !currentPanel || currentPanel !== currentContent()) return;\n const header = root.current;\n const panel = currentPanel;\n const trigger = triggers.current[active];\n const item = items[active];\n if (!trigger || !item) return;\n\n const measure = () => {\n if (header.clientWidth < 700) return;\n const { x, width } = panelPosition(header, trigger, item);\n const height = panel.offsetHeight + 2;\n setGeometry((old) => old.x === x && old.width === width && old.height === height\n ? old : { x, width, height });\n };\n measure();\n const observer = new ResizeObserver(measure);\n observer.observe(header);\n observer.observe(panel);\n observer.observe(trigger);\n if (focusOnOpen.current) {\n focusOnOpen.current = false;\n panel.querySelector('a')?.focus();\n }\n return () => observer.disconnect();\n }, [active, currentPanel, items]);\n\n useEffect(() => {\n const header = root.current;\n if (!header) return;\n let compact = header.getBoundingClientRect().width < 700;\n const observer = new ResizeObserver(() => {\n const next = header.getBoundingClientRect().width < 700;\n if (compact === next) return;\n compact = next;\n close();\n });\n observer.observe(header);\n return () => observer.disconnect();\n }, []);\n\n useEffect(() => {\n if (!mobileOpen && active === null) return;\n const dismiss = (event: PointerEvent) => {\n if (!root.current?.contains(event.target as Node)) close();\n };\n document.addEventListener('pointerdown', dismiss);\n return () => document.removeEventListener('pointerdown', dismiss);\n }, [active, mobileOpen]);\n\n useEffect(() => () => window.clearTimeout(closeTimer.current), []);\n\n function handleTriggerKey(event: KeyboardEvent<HTMLElement>, index: number) {\n if (event.key === 'ArrowDown' && (items[index].links?.length || items[index].footer)) {\n event.preventDefault();\n show(index, true);\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {\n const next = (index + (event.key === 'ArrowRight' ? 1 : -1) + items.length) % items.length;\n event.preventDefault();\n triggers.current[next]?.focus();\n }\n }\n\n const variables = {\n '--mova-mega-text': dark ? '#ededed' : '#171717',\n '--mova-mega-muted': dark ? '#a1a1a1' : '#595959',\n '--mova-mega-highlight': dark ? '#ffffff0f' : '#0000000c',\n '--mova-mega-border': dark ? '#ffffff1a' : '#0000001a',\n '--mova-mega-surface': dark ? '#080808' : '#fff',\n ...style,\n } as CSSProperties;\n\n return (\n <header\n ref={root}\n className={`mova-mega ${className ?? ''}`}\n style={variables}\n onPointerEnter={() => window.clearTimeout(closeTimer.current)}\n onPointerLeave={(event) => {\n if (event.pointerType !== 'mouse' || root.current?.contains(document.activeElement) && document.activeElement?.matches(':focus-visible')) return;\n closeTimer.current = window.setTimeout(close, 120);\n }}\n onBlur={(event) => { if (!event.currentTarget.contains(event.relatedTarget)) close(); }}\n onKeyDown={(event) => {\n if (event.key !== 'Escape' || !openItem && !mobileOpen) return;\n event.preventDefault();\n if (mobileOpen) mobileToggle.current?.focus();\n else if (active !== null) triggers.current[active]?.focus();\n close();\n }}\n >\n <style>{menuStyles}</style>\n <div className=\"mova-mega-bar\">\n {brand && <div className=\"mova-mega-brand\">{brand}</div>}\n <nav className=\"mova-mega-nav\" aria-label={label}>\n {items.map((item, index) => {\n const hasMenu = Boolean(item.links?.length || item.footer);\n const common = {\n className: 'mova-mega-trigger',\n 'data-active': highlighted === index,\n onPointerEnter: (event: ReactPointerEvent) => {\n if (event.pointerType === 'mouse') show(index);\n },\n onFocus: () => {\n setHighlighted(index);\n if (active !== index) setActive(null);\n },\n onKeyDown: (event: KeyboardEvent<HTMLElement>) => handleTriggerKey(event, index),\n };\n const children = (\n <>\n {highlighted === index && (\n <motion.span aria-hidden=\"true\" className=\"mova-mega-pill\" layoutId={reduced ? undefined : `${id}-nav-pill`} transition={transition} />\n )}\n <span>{item.label}</span>\n {hasMenu && (\n <motion.span aria-hidden=\"true\" animate={{ rotate: active === index ? 180 : 0 }} transition={transition}>\n <ChevronDown size={14} />\n </motion.span>\n )}\n </>\n );\n return hasMenu ? (\n <button\n {...common}\n key={index}\n type=\"button\"\n ref={(element) => { triggers.current[index] = element; }}\n aria-expanded={active === index}\n aria-controls={active === index ? `${id}-panel` : undefined}\n onClick={() => show(index, true)}\n >{children}</button>\n ) : (\n <a\n {...common}\n key={index}\n href={item.href}\n ref={(element) => { triggers.current[index] = element; }}\n onClick={close}\n >{children}</a>\n );\n })}\n </nav>\n {actions && <div className=\"mova-mega-actions\">{actions}</div>}\n <button\n className=\"mova-mega-toggle\"\n ref={mobileToggle}\n type=\"button\"\n aria-label={mobileOpen ? 'Close navigation' : 'Open navigation'}\n aria-expanded={mobileOpen}\n aria-controls={mobileOpen ? `${id}-mobile` : undefined}\n onClick={() => {\n if (mobileOpen) close();\n else setMobileOpen(true);\n }}\n onKeyDown={(event) => {\n if (event.key === 'ArrowDown' && mobileOpen) {\n event.preventDefault();\n root.current?.querySelector<HTMLElement>('.mova-mega-mobile[data-present=\"true\"] :is(button,a[href])')?.focus();\n }\n }}\n >\n {mobileOpen ? <X size={20} /> : <Menu size={20} />}\n </button>\n </div>\n\n <AnimatePresence initial={false}>\n {openItem && (\n <PresencePanel\n key=\"panel\"\n id={`${id}-panel`}\n className=\"mova-mega-popup\"\n initial={{ opacity: 0, scale: reduced ? 1 : 0.96, ...geometry }}\n animate={{ opacity: 1, scale: 1, ...geometry }}\n exit={{ opacity: 0, scale: reduced ? 1 : 0.96 }}\n transition={transition}\n >\n <AnimatePresence initial={false} custom={direction} propagate>\n <PresencePanel\n key={active}\n className=\"mova-mega-content\"\n onPresent={setCurrentPanel}\n custom={direction}\n variants={{\n entering: (side: number) => ({ x: reduced ? 0 : side * 24, opacity: 0 }),\n visible: { x: 0, opacity: 1 },\n exiting: (side: number) => ({ x: reduced ? 0 : side * -24, opacity: 0, pointerEvents: 'none' }),\n }}\n initial=\"entering\"\n animate=\"visible\"\n exit=\"exiting\"\n transition={transition}\n onKeyDown={(event) => {\n const links = Array.from(event.currentTarget.querySelectorAll<HTMLAnchorElement>('a[href]'));\n const current = links.findIndex((link) => link === document.activeElement);\n if (current === -1 || active === null) return;\n if (event.key === 'Tab') {\n const next = event.shiftKey && current === 0 ? triggers.current[active]\n : !event.shiftKey && current === links.length - 1\n ? triggers.current[active + 1] ?? root.current?.querySelector<HTMLElement>('.mova-mega-actions :is(button,a[href])')\n : null;\n if (next) {\n event.preventDefault();\n next.focus();\n }\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const next = event.key === 'Home' ? 0 : event.key === 'End' ? links.length - 1\n : (current + (event.key === 'ArrowDown' ? 1 : -1) + links.length) % links.length;\n links[next].focus();\n }}\n >\n <MegaMenuLinks item={openItem} layoutId={`${id}-rows-${active}`} close={close} />\n </PresencePanel>\n </AnimatePresence>\n </PresencePanel>\n )}\n </AnimatePresence>\n {openItem && <span className=\"mova-mega-bridge\" aria-hidden=\"true\" />}\n <AnimatePresence initial={false}>\n {mobileOpen && (\n <PresencePanel\n as=\"nav\"\n id={`${id}-mobile`}\n aria-label={label}\n className=\"mova-mega-mobile\"\n initial={{ opacity: 0, y: reduced ? 0 : -6 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: reduced ? 0 : -6 }}\n transition={transition}\n >\n {items.map((item, index) => item.links?.length || item.footer ? (\n <div key={index}>\n <button\n className=\"mova-mega-trigger\"\n type=\"button\"\n aria-expanded={mobileGroup === index}\n data-active={mobileGroup === index}\n onClick={() => setMobileGroup(mobileGroup === index ? null : index)}\n >\n {item.label}\n <motion.span aria-hidden=\"true\" animate={{ rotate: mobileGroup === index ? 180 : 0 }} transition={transition}>\n <ChevronDown size={14} />\n </motion.span>\n </button>\n {mobileGroup === index && <MegaMenuLinks item={item} layoutId={`${id}-mobile-rows`} close={close} />}\n </div>\n ) : (\n <a className=\"mova-mega-trigger\" href={item.href} key={index} onClick={close}>{item.label}</a>\n ))}\n </PresencePanel>\n )}\n </AnimatePresence>\n </header>\n );\n}\n"
21
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "animated-sidebar",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "animated-sidebar.tsx",
6
6
  "sourcePath": "ui/animated-sidebar.tsx",
7
7
  "registryFile": "animated-sidebar.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "animated-tags",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "animated-tags.tsx",
6
6
  "sourcePath": "ui/patterns/animated-tags.tsx",
7
7
  "registryFile": "animated-tags.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "app-icon-load",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "app-icon-load.tsx",
6
6
  "sourcePath": "ui/loading/app-icon-load.tsx",
7
7
  "registryFile": "app-icon-load.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-breathe",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-breathe.tsx",
6
6
  "sourcePath": "ui/loading/apple-breathe.tsx",
7
7
  "registryFile": "apple-breathe.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-equalizer",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-equalizer.tsx",
6
6
  "sourcePath": "ui/loading/apple-equalizer.tsx",
7
7
  "registryFile": "apple-equalizer.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-icon-morph",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-icon-morph.tsx",
6
6
  "sourcePath": "ui/loading/apple-icon-morph.tsx",
7
7
  "registryFile": "apple-icon-morph.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-pulse-dots",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-pulse-dots.tsx",
6
6
  "sourcePath": "ui/loading/apple-pulse-dots.tsx",
7
7
  "registryFile": "apple-pulse-dots.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-scale-pulse",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-scale-pulse.tsx",
6
6
  "sourcePath": "ui/loading/apple-scale-pulse.tsx",
7
7
  "registryFile": "apple-scale-pulse.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-sound-wave",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-sound-wave.tsx",
6
6
  "sourcePath": "ui/loading/apple-sound-wave.tsx",
7
7
  "registryFile": "apple-sound-wave.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-text-reveal",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-text-reveal.tsx",
6
6
  "sourcePath": "ui/loading/apple-text-reveal.tsx",
7
7
  "registryFile": "apple-text-reveal.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "apple-unlock",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "apple-unlock.tsx",
6
6
  "sourcePath": "ui/loading/apple-unlock.tsx",
7
7
  "registryFile": "apple-unlock.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "arc-tracer",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "arc-tracer.tsx",
6
6
  "sourcePath": "ui/loading/arc-tracer.tsx",
7
7
  "registryFile": "arc-tracer.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "balance-bar-chart-card",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "balance-bar-chart-card.tsx",
6
6
  "sourcePath": "ui/cards/balance-bar-chart-card.tsx",
7
7
  "registryFile": "balance-bar-chart-card.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bar-cascade",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bar-cascade.tsx",
6
6
  "sourcePath": "ui/loading/bar-cascade.tsx",
7
7
  "registryFile": "bar-cascade.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bar-sweep",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bar-sweep.tsx",
6
6
  "sourcePath": "ui/loading/bar-sweep.tsx",
7
7
  "registryFile": "bar-sweep.json",
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "blur-carousel",
3
+ "tier": "free",
4
+ "version": "0.4.11",
5
+ "file": "blur-carousel.tsx",
6
+ "sourcePath": "ui/patterns/blur-carousel.tsx",
7
+ "registryFile": "blur-carousel.json",
8
+ "exports": [
9
+ "BlurCarousel",
10
+ "BlurCarouselProps"
11
+ ],
12
+ "dependencies": [
13
+ "framer-motion"
14
+ ],
15
+ "license": "MIT",
16
+ "previewMode": "client",
17
+ "content": "\"use client\";\n\"use client\";\n\n/**\n * Adapted from Reacticx's Blur Carousel.\n * https://reacticx.com/components/blur-carousel\n * https://github.com/rit3zh/reacticx/blob/main/src/components/molecules/blur-carousel/index.tsx\n *\n * MIT License\n *\n * Copyright (c) 2026 rit3zh\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport type { CSSProperties, KeyboardEvent, PointerEvent, ReactNode } from \"react\";\nimport { motion, useMotionValue, useReducedMotion, useTransform } from \"framer-motion\";\nimport type { MotionValue } from \"framer-motion\";\n\nexport type BlurCarouselProps<Item> = {\n data: readonly Item[];\n renderItem: (info: { item: Item; index: number }) => ReactNode;\n keyExtractor?: (item: Item, index: number) => string;\n spacing?: number;\n itemWidth?: number;\n horizontalSpacing?: number;\n className?: string;\n style?: CSSProperties;\n label?: string;\n};\n\ntype CarouselSlideProps = {\n children: ReactNode;\n index: number;\n total: number;\n position: MotionValue<number>;\n reducedMotion: boolean;\n};\n\nfunction CarouselSlide({ children, index, total, position, reducedMotion }: CarouselSlideProps) {\n const distance = useTransform(position, (value) => Math.min(1, Math.abs(value - index)));\n const scale = useTransform(distance, (value) => 1 - value * 0.15);\n const opacity = useTransform(distance, (value) => 1 - value * 0.5);\n const filter = useTransform(distance, (value) => `blur(${value * 7}px)`);\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n aria-label={`${index + 1} of ${total}`}\n data-mova-blur-slide={index}\n style={{\n flex: \"0 0 var(--mova-blur-width)\",\n minWidth: 0,\n boxSizing: \"border-box\",\n paddingInline: \"var(--mova-blur-gap)\",\n scrollSnapAlign: \"start\",\n display: \"grid\",\n alignItems: \"center\",\n }}\n >\n <motion.div\n style={{\n overflow: \"hidden\",\n minWidth: 0,\n borderRadius: 20,\n boxShadow: \"0 8px 12px rgb(0 0 0 / 20%)\",\n opacity,\n scale: reducedMotion ? 1 : scale,\n }}\n >\n <motion.div style={{ filter: reducedMotion ? \"none\" : filter }}>{children}</motion.div>\n </motion.div>\n </div>\n );\n}\n\ntype MouseDrag = {\n pointerId: number;\n startX: number;\n startLeft: number;\n moved: boolean;\n};\n\nconst carouselCss = `\n [data-mova-blur-viewport] { scroll-snap-type: x mandatory; }\n [data-mova-blur-viewport][data-dragging] { scroll-snap-type: none; }\n [data-mova-blur-viewport]::-webkit-scrollbar { display: none; }\n [data-mova-blur-viewport]:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: -2px;\n }\n @media (pointer: fine) {\n [data-mova-blur-viewport][tabindex] { cursor: grab; }\n [data-mova-blur-viewport][data-dragging] { cursor: grabbing; }\n }\n`;\n\nexport function BlurCarousel<Item>({\n data,\n renderItem,\n keyExtractor,\n spacing = 20,\n itemWidth,\n horizontalSpacing,\n className,\n style,\n label = \"Carousel\",\n}: BlurCarouselProps<Item>) {\n const viewportRef = useRef<HTMLDivElement>(null);\n const dragRef = useRef<MouseDrag | null>(null);\n const suppressClick = useRef(false);\n const targetIndex = useRef<number | null>(null);\n const settleTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const position = useMotionValue(0);\n const reducedMotion = useReducedMotion() ?? false;\n const [activeIndex, setActiveIndex] = useState(0);\n\n useEffect(() => {\n const viewport = viewportRef.current;\n const firstSlide = viewport?.querySelector(\"[data-mova-blur-slide]\");\n if (!viewport || !firstSlide) return;\n\n const sync = () => {\n const width = firstSlide.getBoundingClientRect().width;\n const current = width ? Math.abs(viewport.scrollLeft) / width : 0;\n position.set(current);\n setActiveIndex(Math.min(data.length - 1, Math.round(current)));\n };\n const observer = new ResizeObserver(sync);\n observer.observe(viewport);\n observer.observe(firstSlide);\n sync();\n\n return () => {\n observer.disconnect();\n if (settleTimer.current !== null) clearTimeout(settleTimer.current);\n };\n }, [data.length, itemWidth, horizontalSpacing, position]);\n\n const slideWidth = (viewport: HTMLDivElement) =>\n viewport.querySelector(\"[data-mova-blur-slide]\")?.getBoundingClientRect().width ?? 0;\n\n const direction = (viewport: HTMLDivElement) => getComputedStyle(viewport).direction === \"rtl\" ? -1 : 1;\n const clampIndex = (index: number) => Math.max(0, Math.min(data.length - 1, index));\n\n const scrollToSlide = (viewport: HTMLDivElement, index: number, instant = false) => {\n const next = clampIndex(index);\n const left = direction(viewport) * next * slideWidth(viewport);\n if (Math.abs(viewport.scrollLeft - left) < 1) return;\n targetIndex.current = next;\n viewport.scrollTo({ left, behavior: instant || reducedMotion ? \"instant\" : \"smooth\" });\n };\n\n const handleScroll = (viewport: HTMLDivElement) => {\n const width = slideWidth(viewport);\n if (!width) return;\n const current = Math.abs(viewport.scrollLeft) / width;\n position.set(current);\n if (settleTimer.current !== null) clearTimeout(settleTimer.current);\n settleTimer.current = setTimeout(() => {\n targetIndex.current = null;\n setActiveIndex(clampIndex(Math.round(position.get())));\n }, 150);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget || data.length < 2 || event.altKey || event.ctrlKey || event.metaKey) return;\n const viewport = event.currentTarget;\n const current = targetIndex.current ?? Math.round(position.get());\n let next: number;\n\n switch (event.key) {\n case \"ArrowLeft\": next = current - direction(viewport); break;\n case \"ArrowRight\": next = current + direction(viewport); break;\n case \"Home\": next = 0; break;\n case \"End\": next = data.length - 1; break;\n default: return;\n }\n\n event.preventDefault();\n scrollToSlide(viewport, next);\n };\n\n const handlePointerDown = (event: PointerEvent<HTMLDivElement>) => {\n suppressClick.current = false;\n targetIndex.current = null;\n if (data.length < 2 || event.pointerType !== \"mouse\" || event.button !== 0 || !event.isPrimary) return;\n if (event.target instanceof Element && event.target.closest(\"input, textarea, select, [contenteditable='true']\")) return;\n dragRef.current = {\n pointerId: event.pointerId,\n startX: event.clientX,\n startLeft: event.currentTarget.scrollLeft,\n moved: false,\n };\n };\n\n const handlePointerMove = (event: PointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n if (!drag || drag.pointerId !== event.pointerId) return;\n const delta = event.clientX - drag.startX;\n const viewport = event.currentTarget;\n if (!drag.moved) {\n if (Math.abs(delta) < 5) return;\n drag.moved = true;\n viewport.dataset.dragging = \"\";\n viewport.setPointerCapture(event.pointerId);\n }\n\n event.preventDefault();\n viewport.scrollLeft = drag.startLeft - delta;\n };\n\n const finishDrag = (event: PointerEvent<HTMLDivElement>) => {\n const drag = dragRef.current;\n if (!drag || drag.pointerId !== event.pointerId) return;\n dragRef.current = null;\n if (!drag.moved) return;\n\n const viewport = event.currentTarget;\n const width = slideWidth(viewport);\n suppressClick.current = true;\n delete viewport.dataset.dragging;\n if (width) scrollToSlide(viewport, Math.round(Math.abs(viewport.scrollLeft) / width));\n };\n\n if (!data.length) return null;\n\n const width = itemWidth === undefined ? \"75%\" : `min(100%, ${Math.max(1, itemWidth)}px)`;\n const sideSpace = horizontalSpacing === undefined\n ? \"calc((100% - var(--mova-blur-width)) / 2)\"\n : `min(${Math.max(0, horizontalSpacing)}px, calc(100% - var(--mova-blur-width)))`;\n const viewportStyle = {\n \"--mova-blur-width\": width,\n \"--mova-blur-side\": sideSpace,\n \"--mova-blur-gap\": `min(${Math.max(0, spacing)}px, calc(var(--mova-blur-width) / 4))`,\n display: \"flex\",\n width: \"100%\",\n minWidth: 0,\n overflowX: \"auto\",\n overscrollBehaviorX: \"contain\",\n scrollbarWidth: \"none\",\n paddingBlock: 12,\n scrollPaddingInlineStart: \"var(--mova-blur-side)\",\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n } satisfies CSSProperties & Record<`--${string}`, string>;\n\n return (\n <section aria-label={label} aria-roledescription=\"carousel\" className={className} style={style}>\n <style>{carouselCss}</style>\n <div\n ref={viewportRef}\n data-mova-blur-viewport=\"\"\n tabIndex={data.length > 1 ? 0 : undefined}\n aria-label={data.length > 1 ? \"Slides\" : undefined}\n aria-keyshortcuts={data.length > 1 ? \"ArrowLeft ArrowRight Home End\" : undefined}\n onKeyDown={handleKeyDown}\n onScroll={(event) => handleScroll(event.currentTarget)}\n onWheel={() => { targetIndex.current = null; }}\n onFocusCapture={(event) => {\n const slide = event.target.closest<HTMLElement>(\"[data-mova-blur-slide]\");\n if (slide) scrollToSlide(event.currentTarget, Number(slide.dataset.movaBlurSlide), true);\n }}\n onDragStart={(event) => {\n if (dragRef.current) event.preventDefault();\n }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={finishDrag}\n onPointerCancel={finishDrag}\n onLostPointerCapture={finishDrag}\n onPointerLeave={(event) => {\n if (!dragRef.current?.moved) finishDrag(event);\n }}\n onClickCapture={(event) => {\n if (!suppressClick.current || event.detail === 0) return;\n suppressClick.current = false;\n event.preventDefault();\n event.stopPropagation();\n }}\n style={viewportStyle}\n >\n <span aria-hidden=\"true\" style={{ flex: \"0 0 var(--mova-blur-side)\" }} />\n {data.map((item, index) => (\n <CarouselSlide\n key={keyExtractor?.(item, index) ?? index}\n index={index}\n total={data.length}\n position={position}\n reducedMotion={reducedMotion}\n >\n {renderItem({ item, index })}\n </CarouselSlide>\n ))}\n <span aria-hidden=\"true\" style={{ flex: \"0 0 calc(100% - var(--mova-blur-width) - var(--mova-blur-side))\" }} />\n </div>\n <span\n aria-live=\"polite\"\n aria-atomic=\"true\"\n style={{ position: \"absolute\", width: 1, height: 1, padding: 0, overflow: \"hidden\", clipPath: \"inset(50%)\", whiteSpace: \"nowrap\" }}\n >\n {Math.min(activeIndex + 1, data.length)} of {data.length}\n </span>\n </section>\n );\n}\n"
18
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "blur-text",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "blur-text.tsx",
6
6
  "sourcePath": "ui/text/blur-text.tsx",
7
7
  "registryFile": "blur-text.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "blur-up-char",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "blur-up-char.tsx",
6
6
  "registryFile": "blur-up-char.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "blur-up-word",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "blur-up-word.tsx",
6
6
  "registryFile": "blur-up-word.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bobbing-dots",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bobbing-dots.tsx",
6
6
  "sourcePath": "ui/loading/bobbing-dots.tsx",
7
7
  "registryFile": "bobbing-dots.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bookmark-corner-peel",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bookmark-corner-peel.tsx",
6
6
  "sourcePath": "components/css-animations/whimsical/ConceptTrios1.tsx",
7
7
  "registryFile": "bookmark-corner-peel.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bookmark-save-pill",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bookmark-save-pill.tsx",
6
6
  "sourcePath": "components/css-animations/yui-components/RedesignedUiTrios.tsx",
7
7
  "registryFile": "bookmark-save-pill.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bookmark-toggle",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bookmark-toggle.tsx",
6
6
  "registryFile": "bookmark-toggle.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "border-trail-loading",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "border-trail-loading.tsx",
6
6
  "sourcePath": "ui/loading/border-trail-loading.tsx",
7
7
  "registryFile": "border-trail-loading.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bounce-dots",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bounce-dots.tsx",
6
6
  "sourcePath": "ui/loading/bounce-dots.tsx",
7
7
  "registryFile": "bounce-dots.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bounce-in-char",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bounce-in-char.tsx",
6
6
  "registryFile": "bounce-in-char.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bouncing-bars",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bouncing-bars.tsx",
6
6
  "sourcePath": "ui/loading/bouncing-bars.tsx",
7
7
  "registryFile": "bouncing-bars.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bouncing-dots",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bouncing-dots.tsx",
6
6
  "sourcePath": "ui/loading/bouncing-dots.tsx",
7
7
  "registryFile": "bouncing-dots.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bouncing-lines",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bouncing-lines.tsx",
6
6
  "sourcePath": "ui/loading/bouncing-lines.tsx",
7
7
  "registryFile": "bouncing-lines.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "bouncing-square",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "bouncing-square.tsx",
6
6
  "sourcePath": "ui/loading/bouncing-square.tsx",
7
7
  "registryFile": "bouncing-square.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "breathe-ring",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "breathe-ring.tsx",
6
6
  "sourcePath": "ui/loading/breathe-ring.tsx",
7
7
  "registryFile": "breathe-ring.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "breathing-glow",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "breathing-glow.tsx",
6
6
  "sourcePath": "ui/loading/breathing-glow.tsx",
7
7
  "registryFile": "breathing-glow.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "breathing-square",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "breathing-square.tsx",
6
6
  "sourcePath": "ui/loading/breathing-square.tsx",
7
7
  "registryFile": "breathing-square.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "btn-1",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "btn-1.tsx",
6
6
  "registryFile": "btn-1.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "btn-10",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "btn-10.tsx",
6
6
  "registryFile": "btn-10.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "btn-11",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "btn-11.tsx",
6
6
  "registryFile": "btn-11.json",
7
7
  "exports": [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "id": "btn-12",
3
3
  "tier": "free",
4
- "version": "0.4.10",
4
+ "version": "0.4.11",
5
5
  "file": "btn-12.tsx",
6
6
  "registryFile": "btn-12.json",
7
7
  "exports": [