motion-brew 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (663) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +106 -2
  3. package/dist/account-menu.d.ts +1 -0
  4. package/dist/account-menu.js +16 -0
  5. package/dist/action-menu.d.ts +1 -0
  6. package/dist/action-menu.js +10 -0
  7. package/dist/activity-grid.d.ts +1 -0
  8. package/dist/activity-grid.js +14 -0
  9. package/dist/add-card.d.ts +1 -0
  10. package/dist/add-card.js +11 -0
  11. package/dist/amount-slider.d.ts +1 -0
  12. package/dist/amount-slider.js +10 -0
  13. package/dist/annotation-text.d.ts +1 -0
  14. package/dist/annotation-text.js +8 -0
  15. package/dist/aura-card.d.ts +1 -0
  16. package/dist/aura-card.js +19 -0
  17. package/dist/auth-card.d.ts +1 -0
  18. package/dist/auth-card.js +15 -0
  19. package/dist/avatar-testimonial.d.ts +1 -0
  20. package/dist/avatar-testimonial.js +8 -0
  21. package/dist/backspace-text.d.ts +1 -0
  22. package/dist/backspace-text.js +8 -0
  23. package/dist/bell-toggle.d.ts +1 -0
  24. package/dist/bell-toggle.js +8 -0
  25. package/dist/bill-list.d.ts +1 -0
  26. package/dist/bill-list.js +15 -0
  27. package/dist/binary-text.d.ts +1 -0
  28. package/dist/binary-text.js +8 -0
  29. package/dist/blur-accordion.d.ts +1 -0
  30. package/dist/blur-accordion.js +8 -0
  31. package/dist/blur-text.d.ts +1 -0
  32. package/dist/blur-text.js +8 -0
  33. package/dist/booking-card.d.ts +1 -0
  34. package/dist/booking-card.js +11 -0
  35. package/dist/brand-bridge.d.ts +1 -0
  36. package/dist/brand-bridge.js +12 -0
  37. package/dist/calendar-agenda.d.ts +1 -0
  38. package/dist/calendar-agenda.js +12 -0
  39. package/dist/channel-mix.d.ts +1 -0
  40. package/dist/channel-mix.js +11 -0
  41. package/dist/chunk-25254AZA.js +141 -0
  42. package/dist/chunk-2CIJ5TVW.js +59 -0
  43. package/dist/chunk-2GXY54MP.js +247 -0
  44. package/dist/chunk-2IMPUH4H.js +135 -0
  45. package/dist/chunk-2NRXP4HM.js +371 -0
  46. package/dist/chunk-2QCWELWT.js +120 -0
  47. package/dist/chunk-2TQSHVXA.js +12 -0
  48. package/dist/chunk-327TGRS5.js +75 -0
  49. package/dist/chunk-3B2RYSTL.js +867 -0
  50. package/dist/chunk-3RKCLFY5.js +634 -0
  51. package/dist/chunk-4BVCRIR4.js +51 -0
  52. package/dist/chunk-4CKKTOJK.js +366 -0
  53. package/dist/chunk-4IGMH34C.js +319 -0
  54. package/dist/chunk-4PI6UNIZ.js +464 -0
  55. package/dist/chunk-4RHQKP2P.js +664 -0
  56. package/dist/chunk-5MP5QNFG.js +560 -0
  57. package/dist/chunk-62RBYLIN.js +128 -0
  58. package/dist/chunk-6GAKTS3D.js +329 -0
  59. package/dist/chunk-6GRDT3OE.js +124 -0
  60. package/dist/chunk-6JQY7AX5.js +307 -0
  61. package/dist/chunk-6LOUA6XB.js +237 -0
  62. package/dist/chunk-6V6OTHNE.js +299 -0
  63. package/dist/chunk-6VZIT62Q.js +142 -0
  64. package/dist/chunk-6WSY725U.js +387 -0
  65. package/dist/chunk-6XSJC7M7.js +764 -0
  66. package/dist/chunk-75DEIDBX.js +129 -0
  67. package/dist/chunk-7FQ4XU7E.js +127 -0
  68. package/dist/chunk-7IL5WRJR.js +615 -0
  69. package/dist/chunk-7MPC3RUE.js +1462 -0
  70. package/dist/chunk-7PS2W7PU.js +112 -0
  71. package/dist/chunk-AATJOPNH.js +86 -0
  72. package/dist/chunk-ADXWPWJR.js +209 -0
  73. package/dist/chunk-ANNDITUM.js +47 -0
  74. package/dist/chunk-AQN6BHWC.js +325 -0
  75. package/dist/chunk-AVOS73MR.js +537 -0
  76. package/dist/chunk-B4LNE6YK.js +473 -0
  77. package/dist/chunk-BHUNLG6S.js +142 -0
  78. package/dist/chunk-BN4MA5UY.js +127 -0
  79. package/dist/chunk-BPE43MTT.js +183 -0
  80. package/dist/chunk-BPF3FQRS.js +590 -0
  81. package/dist/chunk-BRTZFUFR.js +503 -0
  82. package/dist/chunk-BS4ZFJKW.js +121 -0
  83. package/dist/chunk-BXAKCY6X.js +86 -0
  84. package/dist/chunk-CEQ56RF6.js +129 -0
  85. package/dist/chunk-CGDKH6BB.js +902 -0
  86. package/dist/chunk-CMTGYFT7.js +395 -0
  87. package/dist/chunk-COKBF5PG.js +3291 -0
  88. package/dist/chunk-DD55JZOI.js +257 -0
  89. package/dist/chunk-DQUXBNSH.js +412 -0
  90. package/dist/chunk-DR4DUSNF.js +265 -0
  91. package/dist/chunk-EDPCK6VU.js +419 -0
  92. package/dist/chunk-EEQ2WHTN.js +142 -0
  93. package/dist/chunk-ERVE5RSN.js +793 -0
  94. package/dist/chunk-FFUBTMDC.js +303 -0
  95. package/dist/chunk-FK4TZ5OW.js +29 -0
  96. package/dist/chunk-FXI6NHNR.js +1033 -0
  97. package/dist/chunk-G3XH7YT2.js +122 -0
  98. package/dist/chunk-G7KDH7ME.js +559 -0
  99. package/dist/chunk-GRUDTDLX.js +534 -0
  100. package/dist/chunk-GUQINNWS.js +770 -0
  101. package/dist/chunk-GV3Q4D2N.js +320 -0
  102. package/dist/chunk-GVWOJJ3T.js +129 -0
  103. package/dist/chunk-GYDTIVOY.js +934 -0
  104. package/dist/chunk-H2JOCJWM.js +125 -0
  105. package/dist/chunk-H7XKIWHA.js +135 -0
  106. package/dist/chunk-HHXK3NAH.js +1382 -0
  107. package/dist/chunk-HK34LPY6.js +112 -0
  108. package/dist/chunk-HLJXNSMM.js +320 -0
  109. package/dist/chunk-HPJJAQ5L.js +406 -0
  110. package/dist/chunk-HYSXVKZB.js +213 -0
  111. package/dist/chunk-I45D4XV4.js +124 -0
  112. package/dist/chunk-I7KTTOOJ.js +113 -0
  113. package/dist/chunk-IDJOKV6S.js +67 -0
  114. package/dist/chunk-IGI6OLRX.js +138 -0
  115. package/dist/chunk-IKM7EEYN.js +117 -0
  116. package/dist/chunk-INV5FI6O.js +394 -0
  117. package/dist/chunk-IUBUAIQZ.js +321 -0
  118. package/dist/chunk-IYZOANPX.js +159 -0
  119. package/dist/chunk-JFTD3YAL.js +163 -0
  120. package/dist/chunk-JGEV462J.js +235 -0
  121. package/dist/chunk-JHT6RCGY.js +127 -0
  122. package/dist/chunk-JJEWOQYQ.js +141 -0
  123. package/dist/chunk-JT2EIO5M.js +129 -0
  124. package/dist/chunk-K3HQEHJ6.js +663 -0
  125. package/dist/chunk-K6ET254T.js +398 -0
  126. package/dist/chunk-KE563QS4.js +425 -0
  127. package/dist/chunk-LBRMNY72.js +159 -0
  128. package/dist/chunk-LNBTWX4J.js +114 -0
  129. package/dist/chunk-LS4FP6SI.js +37 -0
  130. package/dist/chunk-M22UY764.js +135 -0
  131. package/dist/chunk-M4YMNHPI.js +204 -0
  132. package/dist/chunk-MGBS5LRY.js +412 -0
  133. package/dist/chunk-MKJOBHPQ.js +215 -0
  134. package/dist/chunk-MQDOFNKI.js +818 -0
  135. package/dist/chunk-MUDKP3LK.js +120 -0
  136. package/dist/chunk-N4ZNBWKO.js +118 -0
  137. package/dist/chunk-NB5CB65C.js +137 -0
  138. package/dist/chunk-NCEAUODT.js +172 -0
  139. package/dist/chunk-NGX34WJO.js +335 -0
  140. package/dist/chunk-NIQFSLPC.js +114 -0
  141. package/dist/chunk-NJWTPRGJ.js +806 -0
  142. package/dist/chunk-NNKC6NEH.js +128 -0
  143. package/dist/chunk-NY7M42KC.js +112 -0
  144. package/dist/chunk-O7G4ISAC.js +277 -0
  145. package/dist/chunk-O7QYPA6X.js +700 -0
  146. package/dist/chunk-OEDHLZ4T.js +651 -0
  147. package/dist/chunk-OGQQ2FZZ.js +114 -0
  148. package/dist/chunk-OINRQUYT.js +186 -0
  149. package/dist/chunk-OMJBDFEW.js +506 -0
  150. package/dist/chunk-ONUWTWKP.js +345 -0
  151. package/dist/chunk-OS6REIBR.js +154 -0
  152. package/dist/chunk-OUVP5VKH.js +702 -0
  153. package/dist/chunk-OVEBMZHA.js +573 -0
  154. package/dist/chunk-PFEHD3A2.js +409 -0
  155. package/dist/chunk-PJ5EVDNN.js +157 -0
  156. package/dist/chunk-PKM6B4JJ.js +108 -0
  157. package/dist/chunk-PV3OYTMT.js +596 -0
  158. package/dist/chunk-RBSLSNMW.js +444 -0
  159. package/dist/chunk-RE74K7KI.js +370 -0
  160. package/dist/chunk-RP22J4NX.js +247 -0
  161. package/dist/chunk-RU2Q2XVP.js +287 -0
  162. package/dist/chunk-RWUARRFZ.js +267 -0
  163. package/dist/chunk-RZ2UCZ3C.js +212 -0
  164. package/dist/chunk-SBDTC4UY.js +367 -0
  165. package/dist/chunk-SKEE23KW.js +137 -0
  166. package/dist/chunk-SOW7S7ET.js +1103 -0
  167. package/dist/chunk-SQ7F3VBU.js +1069 -0
  168. package/dist/chunk-SSWKGVRI.js +172 -0
  169. package/dist/chunk-T2TSMDP3.js +1022 -0
  170. package/dist/chunk-TAFVHTWV.js +607 -0
  171. package/dist/chunk-TNLY4CSA.js +523 -0
  172. package/dist/chunk-TP3XIHL5.js +787 -0
  173. package/dist/chunk-TQ6KSDDE.js +682 -0
  174. package/dist/chunk-TRWXLGL7.js +885 -0
  175. package/dist/chunk-TTNORJF5.js +908 -0
  176. package/dist/chunk-UD5OQ2T3.js +117 -0
  177. package/dist/chunk-UDFBQWUH.js +333 -0
  178. package/dist/chunk-USRMXCZD.js +625 -0
  179. package/dist/chunk-VAPHE4G4.js +442 -0
  180. package/dist/chunk-VEC5QAOY.js +104 -0
  181. package/dist/chunk-VIR5NV5W.js +118 -0
  182. package/dist/chunk-VT2FNWQF.js +240 -0
  183. package/dist/chunk-VX4XEYQN.js +837 -0
  184. package/dist/chunk-WE7VCUOA.js +130 -0
  185. package/dist/chunk-WFWO2EIW.js +120 -0
  186. package/dist/chunk-WGIT4MMH.js +350 -0
  187. package/dist/chunk-WOR2GMMN.js +114 -0
  188. package/dist/chunk-WTTDB475.js +54 -0
  189. package/dist/chunk-WWWKMU4Y.js +184 -0
  190. package/dist/chunk-XDR4FO6Q.js +124 -0
  191. package/dist/chunk-XH6YNONO.js +112 -0
  192. package/dist/chunk-XL4L2J6N.js +129 -0
  193. package/dist/chunk-Y6MTC46Q.js +684 -0
  194. package/dist/chunk-YFLQ4HPJ.js +119 -0
  195. package/dist/chunk-YGONLKWH.js +180 -0
  196. package/dist/chunk-YLSWBUDC.js +373 -0
  197. package/dist/chunk-YU6B7YRO.js +128 -0
  198. package/dist/chunk-YURGXJSP.js +102 -0
  199. package/dist/chunk-YVYYDPE2.js +124 -0
  200. package/dist/chunk-ZPGAMYOQ.js +1 -0
  201. package/dist/chunk-ZWGOAY27.js +234 -0
  202. package/dist/column-card.d.ts +1 -0
  203. package/dist/column-card.js +8 -0
  204. package/dist/components/account-menu/account-menu.d.ts +56 -0
  205. package/dist/components/account-menu/index.d.ts +1 -0
  206. package/dist/components/action-menu/action-menu.d.ts +45 -0
  207. package/dist/components/action-menu/index.d.ts +1 -0
  208. package/dist/components/activity-grid/activity-grid.d.ts +54 -0
  209. package/dist/components/activity-grid/index.d.ts +1 -0
  210. package/dist/components/add-card/add-card.d.ts +41 -0
  211. package/dist/components/add-card/index.d.ts +1 -0
  212. package/dist/components/amount-slider/amount-slider.d.ts +43 -0
  213. package/dist/components/amount-slider/index.d.ts +1 -0
  214. package/dist/components/annotation-text/annotation-text.d.ts +27 -0
  215. package/dist/components/annotation-text/index.d.ts +1 -0
  216. package/dist/components/aura-card/aura-card.d.ts +63 -0
  217. package/dist/components/aura-card/index.d.ts +1 -0
  218. package/dist/components/auth-card/auth-card.d.ts +51 -0
  219. package/dist/components/auth-card/index.d.ts +1 -0
  220. package/dist/components/avatar-testimonial/avatar-testimonial.d.ts +39 -0
  221. package/dist/components/avatar-testimonial/index.d.ts +1 -0
  222. package/dist/components/backspace-text/backspace-text.d.ts +27 -0
  223. package/dist/components/backspace-text/index.d.ts +1 -0
  224. package/dist/components/bell-toggle/bell-toggle.d.ts +33 -0
  225. package/dist/components/bell-toggle/index.d.ts +1 -0
  226. package/dist/components/bill-list/bill-list.d.ts +49 -0
  227. package/dist/components/bill-list/index.d.ts +1 -0
  228. package/dist/components/binary-text/binary-text.d.ts +24 -0
  229. package/dist/components/binary-text/index.d.ts +1 -0
  230. package/dist/components/blur-accordion/blur-accordion.d.ts +35 -0
  231. package/dist/components/blur-accordion/index.d.ts +1 -0
  232. package/dist/components/blur-text/blur-text.d.ts +33 -0
  233. package/dist/components/blur-text/index.d.ts +1 -0
  234. package/dist/components/booking-card/booking-card.d.ts +56 -0
  235. package/dist/components/booking-card/index.d.ts +1 -0
  236. package/dist/components/brand-bridge/brand-bridge.d.ts +63 -0
  237. package/dist/components/brand-bridge/index.d.ts +1 -0
  238. package/dist/components/calendar-agenda/calendar-agenda.d.ts +64 -0
  239. package/dist/components/calendar-agenda/index.d.ts +1 -0
  240. package/dist/components/channel-mix/channel-mix.d.ts +63 -0
  241. package/dist/components/channel-mix/index.d.ts +1 -0
  242. package/dist/components/column-card/column-card.d.ts +39 -0
  243. package/dist/components/column-card/index.d.ts +1 -0
  244. package/dist/components/contact-card/contact-card.d.ts +44 -0
  245. package/dist/components/contact-card/index.d.ts +1 -0
  246. package/dist/components/context-menu/context-menu.d.ts +59 -0
  247. package/dist/components/context-menu/index.d.ts +1 -0
  248. package/dist/components/contour-feature-card/contour-feature-card.d.ts +36 -0
  249. package/dist/components/contour-feature-card/index.d.ts +1 -0
  250. package/dist/components/contour-lines/contour-lines.d.ts +34 -0
  251. package/dist/components/contour-lines/index.d.ts +1 -0
  252. package/dist/components/decay-card/decay-card.d.ts +44 -0
  253. package/dist/components/decay-card/index.d.ts +1 -0
  254. package/dist/components/deploy-streak/deploy-streak.d.ts +30 -0
  255. package/dist/components/deploy-streak/index.d.ts +1 -0
  256. package/dist/components/depth-carousel/depth-carousel.d.ts +42 -0
  257. package/dist/components/depth-carousel/index.d.ts +1 -0
  258. package/dist/components/device-traffic/device-traffic.d.ts +59 -0
  259. package/dist/components/device-traffic/index.d.ts +1 -0
  260. package/dist/components/download-button/download-button.d.ts +36 -0
  261. package/dist/components/download-button/index.d.ts +1 -0
  262. package/dist/components/event-card/event-card.d.ts +55 -0
  263. package/dist/components/event-card/index.d.ts +1 -0
  264. package/dist/components/file-drop/file-drop.d.ts +46 -0
  265. package/dist/components/file-drop/index.d.ts +1 -0
  266. package/dist/components/flip-words/flip-words.d.ts +26 -0
  267. package/dist/components/flip-words/index.d.ts +1 -0
  268. package/dist/components/flux-card/flux-card.d.ts +56 -0
  269. package/dist/components/flux-card/index.d.ts +1 -0
  270. package/dist/components/fuse-button/fuse-button.d.ts +75 -0
  271. package/dist/components/fuse-button/index.d.ts +1 -0
  272. package/dist/components/globe-card/globe-card.d.ts +46 -0
  273. package/dist/components/globe-card/index.d.ts +1 -0
  274. package/dist/components/goal-gauge/goal-gauge.d.ts +47 -0
  275. package/dist/components/goal-gauge/index.d.ts +1 -0
  276. package/dist/components/gradient-card/gradient-card.d.ts +56 -0
  277. package/dist/components/gradient-card/index.d.ts +1 -0
  278. package/dist/components/gradient-text/gradient-text.d.ts +22 -0
  279. package/dist/components/gradient-text/index.d.ts +1 -0
  280. package/dist/components/gravity-tag-pile/gravity-tag-pile.d.ts +69 -0
  281. package/dist/components/gravity-tag-pile/index.d.ts +1 -0
  282. package/dist/components/growth-stream/growth-stream.d.ts +47 -0
  283. package/dist/components/growth-stream/index.d.ts +1 -0
  284. package/dist/components/highlight-text/highlight-text.d.ts +22 -0
  285. package/dist/components/highlight-text/index.d.ts +1 -0
  286. package/dist/components/hold-to-confirm/hold-to-confirm.d.ts +32 -0
  287. package/dist/components/hold-to-confirm/index.d.ts +1 -0
  288. package/dist/components/infinite-gallery/index.d.ts +1 -0
  289. package/dist/components/infinite-gallery/infinite-gallery.d.ts +73 -0
  290. package/dist/components/integration-hub/index.d.ts +1 -0
  291. package/dist/components/integration-hub/integration-hub.d.ts +40 -0
  292. package/dist/components/liquid-card/index.d.ts +1 -0
  293. package/dist/components/liquid-card/liquid-card.d.ts +66 -0
  294. package/dist/components/liquid-metal-card/index.d.ts +1 -0
  295. package/dist/components/liquid-metal-card/liquid-metal-card.d.ts +45 -0
  296. package/dist/components/liquid-tabs/index.d.ts +1 -0
  297. package/dist/components/liquid-tabs/liquid-tabs.d.ts +47 -0
  298. package/dist/components/magnetic-button/index.d.ts +1 -0
  299. package/dist/components/magnetic-button/magnetic-button.d.ts +46 -0
  300. package/dist/components/magnetic-flow/index.d.ts +1 -0
  301. package/dist/components/magnetic-flow/magnetic-flow.d.ts +35 -0
  302. package/dist/components/message-composer/index.d.ts +1 -0
  303. package/dist/components/message-composer/message-composer.d.ts +79 -0
  304. package/dist/components/metal-card-stack/index.d.ts +1 -0
  305. package/dist/components/metal-card-stack/metal-card-stack.d.ts +49 -0
  306. package/dist/components/metric-split/index.d.ts +1 -0
  307. package/dist/components/metric-split/metric-split.d.ts +45 -0
  308. package/dist/components/mix-chart/index.d.ts +1 -0
  309. package/dist/components/mix-chart/mix-chart.d.ts +59 -0
  310. package/dist/components/month-calendar/index.d.ts +1 -0
  311. package/dist/components/month-calendar/month-calendar.d.ts +34 -0
  312. package/dist/components/morph-search/index.d.ts +1 -0
  313. package/dist/components/morph-search/morph-search.d.ts +33 -0
  314. package/dist/components/orbit-card/index.d.ts +1 -0
  315. package/dist/components/orbit-card/orbit-card.d.ts +50 -0
  316. package/dist/components/otp-code/index.d.ts +1 -0
  317. package/dist/components/otp-code/otp-code.d.ts +61 -0
  318. package/dist/components/particle-card/index.d.ts +1 -0
  319. package/dist/components/particle-card/particle-card.d.ts +57 -0
  320. package/dist/components/payment-form/index.d.ts +1 -0
  321. package/dist/components/payment-form/payment-form.d.ts +54 -0
  322. package/dist/components/pill-tabs/index.d.ts +1 -0
  323. package/dist/components/pill-tabs/pill-tabs.d.ts +39 -0
  324. package/dist/components/pixel-blast/index.d.ts +1 -0
  325. package/dist/components/pixel-blast/pixel-blast.d.ts +41 -0
  326. package/dist/components/pixel-feature-card/index.d.ts +1 -0
  327. package/dist/components/pixel-feature-card/pixel-feature-card.d.ts +43 -0
  328. package/dist/components/pixel-scroll/index.d.ts +1 -0
  329. package/dist/components/pixel-scroll/pixel-scroll.d.ts +64 -0
  330. package/dist/components/pricing-card/index.d.ts +1 -0
  331. package/dist/components/pricing-card/pricing-card.d.ts +60 -0
  332. package/dist/components/prism-carousel/index.d.ts +1 -0
  333. package/dist/components/prism-carousel/prism-carousel.d.ts +54 -0
  334. package/dist/components/prism-flow/index.d.ts +1 -0
  335. package/dist/components/prism-flow/prism-flow.d.ts +41 -0
  336. package/dist/components/privacy-banner/index.d.ts +1 -0
  337. package/dist/components/privacy-banner/privacy-banner.d.ts +41 -0
  338. package/dist/components/profile-card/index.d.ts +1 -0
  339. package/dist/components/profile-card/profile-card.d.ts +52 -0
  340. package/dist/components/profile-menu/index.d.ts +1 -0
  341. package/dist/components/profile-menu/profile-menu.d.ts +43 -0
  342. package/dist/components/project-index/index.d.ts +1 -0
  343. package/dist/components/project-index/project-index.d.ts +65 -0
  344. package/dist/components/prompt-input/index.d.ts +1 -0
  345. package/dist/components/prompt-input/prompt-input.d.ts +49 -0
  346. package/dist/components/quota-gauge/index.d.ts +1 -0
  347. package/dist/components/quota-gauge/quota-gauge.d.ts +30 -0
  348. package/dist/components/range-chart/index.d.ts +1 -0
  349. package/dist/components/range-chart/range-chart.d.ts +47 -0
  350. package/dist/components/reaction-card/index.d.ts +1 -0
  351. package/dist/components/reaction-card/reaction-card.d.ts +60 -0
  352. package/dist/components/recap-card/index.d.ts +1 -0
  353. package/dist/components/recap-card/recap-card.d.ts +61 -0
  354. package/dist/components/receipt-button/index.d.ts +1 -0
  355. package/dist/components/receipt-button/receipt-button.d.ts +53 -0
  356. package/dist/components/ribbon-gallery/index.d.ts +1 -0
  357. package/dist/components/ribbon-gallery/ribbon-gallery.d.ts +61 -0
  358. package/dist/components/roadmap-card/index.d.ts +1 -0
  359. package/dist/components/roadmap-card/roadmap-card.d.ts +38 -0
  360. package/dist/components/rolling-card-stack/index.d.ts +1 -0
  361. package/dist/components/rolling-card-stack/rolling-card-stack.d.ts +53 -0
  362. package/dist/components/rolling-stepper/index.d.ts +1 -0
  363. package/dist/components/rolling-stepper/rolling-stepper.d.ts +33 -0
  364. package/dist/components/rotating-text/index.d.ts +1 -0
  365. package/dist/components/rotating-text/rotating-text.d.ts +25 -0
  366. package/dist/components/score-card/index.d.ts +1 -0
  367. package/dist/components/score-card/score-card.d.ts +40 -0
  368. package/dist/components/search-modal/index.d.ts +1 -0
  369. package/dist/components/search-modal/search-modal.d.ts +62 -0
  370. package/dist/components/shimmer-text/index.d.ts +1 -0
  371. package/dist/components/shimmer-text/shimmer-text.d.ts +22 -0
  372. package/dist/components/sidebar-nav/index.d.ts +1 -0
  373. package/dist/components/sidebar-nav/sidebar-nav.d.ts +71 -0
  374. package/dist/components/slide-commit/index.d.ts +1 -0
  375. package/dist/components/slide-commit/slide-commit.d.ts +39 -0
  376. package/dist/components/spatial-gallery/index.d.ts +1 -0
  377. package/dist/components/spatial-gallery/spatial-gallery.d.ts +88 -0
  378. package/dist/components/spending-meter/index.d.ts +1 -0
  379. package/dist/components/spending-meter/spending-meter.d.ts +41 -0
  380. package/dist/components/tab-bar/index.d.ts +1 -0
  381. package/dist/components/tab-bar/tab-bar.d.ts +44 -0
  382. package/dist/components/team-member-card/index.d.ts +1 -0
  383. package/dist/components/team-member-card/team-member-card.d.ts +66 -0
  384. package/dist/components/team-morph/index.d.ts +1 -0
  385. package/dist/components/team-morph/team-morph.d.ts +38 -0
  386. package/dist/components/tilt-card/index.d.ts +1 -0
  387. package/dist/components/tilt-card/tilt-card.d.ts +27 -0
  388. package/dist/components/tilt-carousel/index.d.ts +1 -0
  389. package/dist/components/tilt-carousel/tilt-carousel.d.ts +43 -0
  390. package/dist/components/toast-stack/index.d.ts +1 -0
  391. package/dist/components/toast-stack/toast-stack.d.ts +57 -0
  392. package/dist/components/usage-ring/index.d.ts +1 -0
  393. package/dist/components/usage-ring/usage-ring.d.ts +40 -0
  394. package/dist/components/verify-flow/index.d.ts +1 -0
  395. package/dist/components/verify-flow/verify-flow.d.ts +49 -0
  396. package/dist/components/voice-prompt/index.d.ts +1 -0
  397. package/dist/components/voice-prompt/voice-prompt.d.ts +55 -0
  398. package/dist/components/wallet-card/index.d.ts +1 -0
  399. package/dist/components/wallet-card/wallet-card.d.ts +54 -0
  400. package/dist/components/wave-text/index.d.ts +1 -0
  401. package/dist/components/wave-text/wave-text.d.ts +27 -0
  402. package/dist/contact-card.d.ts +1 -0
  403. package/dist/contact-card.js +12 -0
  404. package/dist/context-menu.d.ts +1 -0
  405. package/dist/context-menu.js +17 -0
  406. package/dist/contour-feature-card.d.ts +1 -0
  407. package/dist/contour-feature-card.js +9 -0
  408. package/dist/contour-lines.d.ts +1 -0
  409. package/dist/contour-lines.js +8 -0
  410. package/dist/decay-card.d.ts +1 -0
  411. package/dist/decay-card.js +8 -0
  412. package/dist/deploy-streak.d.ts +1 -0
  413. package/dist/deploy-streak.js +9 -0
  414. package/dist/depth-carousel.d.ts +1 -0
  415. package/dist/depth-carousel.js +8 -0
  416. package/dist/device-traffic.d.ts +1 -0
  417. package/dist/device-traffic.js +12 -0
  418. package/dist/download-button.d.ts +1 -0
  419. package/dist/download-button.js +8 -0
  420. package/dist/event-card.d.ts +1 -0
  421. package/dist/event-card.js +12 -0
  422. package/dist/file-drop.d.ts +1 -0
  423. package/dist/file-drop.js +12 -0
  424. package/dist/flip-words.d.ts +1 -0
  425. package/dist/flip-words.js +8 -0
  426. package/dist/flux-card.d.ts +1 -0
  427. package/dist/flux-card.js +13 -0
  428. package/dist/fuse-button.d.ts +1 -0
  429. package/dist/fuse-button.js +9 -0
  430. package/dist/globe-card.d.ts +1 -0
  431. package/dist/globe-card.js +8 -0
  432. package/dist/goal-gauge.d.ts +1 -0
  433. package/dist/goal-gauge.js +9 -0
  434. package/dist/gradient-card.d.ts +1 -0
  435. package/dist/gradient-card.js +8 -0
  436. package/dist/gradient-text.d.ts +1 -0
  437. package/dist/gradient-text.js +8 -0
  438. package/dist/gravity-tag-pile.d.ts +1 -0
  439. package/dist/gravity-tag-pile.js +9 -0
  440. package/dist/growth-stream.d.ts +1 -0
  441. package/dist/growth-stream.js +10 -0
  442. package/dist/highlight-text.d.ts +1 -0
  443. package/dist/highlight-text.js +8 -0
  444. package/dist/hold-to-confirm.d.ts +1 -0
  445. package/dist/hold-to-confirm.js +8 -0
  446. package/dist/icons/activity.d.ts +15 -0
  447. package/dist/icons/archive.d.ts +15 -0
  448. package/dist/icons/arrow-down-right.d.ts +15 -0
  449. package/dist/icons/arrow-down.d.ts +15 -0
  450. package/dist/icons/arrow-right.d.ts +15 -0
  451. package/dist/icons/arrow-up-right.d.ts +15 -0
  452. package/dist/icons/arrow-up.d.ts +15 -0
  453. package/dist/icons/at-sign.d.ts +15 -0
  454. package/dist/icons/attach-file.d.ts +15 -0
  455. package/dist/icons/badge-alert.d.ts +15 -0
  456. package/dist/icons/bell.d.ts +15 -0
  457. package/dist/icons/bold.d.ts +15 -0
  458. package/dist/icons/bookmark.d.ts +15 -0
  459. package/dist/icons/bot.d.ts +15 -0
  460. package/dist/icons/calendar-check-2.d.ts +15 -0
  461. package/dist/icons/calendar-check.d.ts +15 -0
  462. package/dist/icons/calendar-days.d.ts +15 -0
  463. package/dist/icons/chart-line.d.ts +15 -0
  464. package/dist/icons/chart-pie.d.ts +15 -0
  465. package/dist/icons/check.d.ts +15 -0
  466. package/dist/icons/chevron-down.d.ts +15 -0
  467. package/dist/icons/chevron-left.d.ts +15 -0
  468. package/dist/icons/chevron-right.d.ts +15 -0
  469. package/dist/icons/circle-check.d.ts +15 -0
  470. package/dist/icons/circle-dollar-sign.d.ts +15 -0
  471. package/dist/icons/clipboard-check.d.ts +15 -0
  472. package/dist/icons/clock.d.ts +15 -0
  473. package/dist/icons/cloud-upload.d.ts +15 -0
  474. package/dist/icons/compass.d.ts +15 -0
  475. package/dist/icons/contrast.d.ts +15 -0
  476. package/dist/icons/copy.d.ts +15 -0
  477. package/dist/icons/credit-card.d.ts +15 -0
  478. package/dist/icons/delete.d.ts +15 -0
  479. package/dist/icons/download.d.ts +15 -0
  480. package/dist/icons/dribbble.d.ts +15 -0
  481. package/dist/icons/earth.d.ts +15 -0
  482. package/dist/icons/eye-off.d.ts +15 -0
  483. package/dist/icons/eye.d.ts +15 -0
  484. package/dist/icons/feather.d.ts +15 -0
  485. package/dist/icons/figma.d.ts +15 -0
  486. package/dist/icons/file-text.d.ts +16 -0
  487. package/dist/icons/flame.d.ts +15 -0
  488. package/dist/icons/folder-input.d.ts +15 -0
  489. package/dist/icons/folder-open.d.ts +15 -0
  490. package/dist/icons/folders.d.ts +15 -0
  491. package/dist/icons/github.d.ts +15 -0
  492. package/dist/icons/hand-coins.d.ts +15 -0
  493. package/dist/icons/heart.d.ts +15 -0
  494. package/dist/icons/history.d.ts +15 -0
  495. package/dist/icons/home.d.ts +15 -0
  496. package/dist/icons/hourglass.d.ts +15 -0
  497. package/dist/icons/instagram.d.ts +15 -0
  498. package/dist/icons/italic.d.ts +15 -0
  499. package/dist/icons/layout-grid.d.ts +15 -0
  500. package/dist/icons/link.d.ts +15 -0
  501. package/dist/icons/linkedin.d.ts +15 -0
  502. package/dist/icons/loader-circle.d.ts +15 -0
  503. package/dist/icons/lock-keyhole-open.d.ts +15 -0
  504. package/dist/icons/lock-keyhole.d.ts +15 -0
  505. package/dist/icons/lock.d.ts +15 -0
  506. package/dist/icons/logout.d.ts +15 -0
  507. package/dist/icons/mail-check.d.ts +15 -0
  508. package/dist/icons/map-pin.d.ts +15 -0
  509. package/dist/icons/message-circle.d.ts +15 -0
  510. package/dist/icons/mic.d.ts +15 -0
  511. package/dist/icons/monitor-check.d.ts +15 -0
  512. package/dist/icons/moon.d.ts +15 -0
  513. package/dist/icons/palette.d.ts +15 -0
  514. package/dist/icons/panel-left-close.d.ts +15 -0
  515. package/dist/icons/panel-left-open.d.ts +15 -0
  516. package/dist/icons/plug-zap.d.ts +15 -0
  517. package/dist/icons/plus.d.ts +15 -0
  518. package/dist/icons/radio.d.ts +15 -0
  519. package/dist/icons/receipt.d.ts +15 -0
  520. package/dist/icons/refresh-cw.d.ts +15 -0
  521. package/dist/icons/rotate-ccw.d.ts +15 -0
  522. package/dist/icons/search.d.ts +15 -0
  523. package/dist/icons/send.d.ts +15 -0
  524. package/dist/icons/settings.d.ts +15 -0
  525. package/dist/icons/shield-check.d.ts +15 -0
  526. package/dist/icons/smartphone-nfc.d.ts +15 -0
  527. package/dist/icons/smile.d.ts +15 -0
  528. package/dist/icons/sparkles.d.ts +15 -0
  529. package/dist/icons/square-pen.d.ts +15 -0
  530. package/dist/icons/sun.d.ts +15 -0
  531. package/dist/icons/terminal.d.ts +15 -0
  532. package/dist/icons/timer.d.ts +15 -0
  533. package/dist/icons/trending-up.d.ts +15 -0
  534. package/dist/icons/twitter.d.ts +15 -0
  535. package/dist/icons/underline.d.ts +15 -0
  536. package/dist/icons/undo.d.ts +15 -0
  537. package/dist/icons/user-check.d.ts +15 -0
  538. package/dist/icons/user-plus.d.ts +15 -0
  539. package/dist/icons/user-round-plus.d.ts +15 -0
  540. package/dist/icons/user.d.ts +15 -0
  541. package/dist/icons/users.d.ts +15 -0
  542. package/dist/icons/wifi.d.ts +15 -0
  543. package/dist/icons/workflow.d.ts +15 -0
  544. package/dist/icons/x.d.ts +15 -0
  545. package/dist/icons/zap.d.ts +15 -0
  546. package/dist/index.d.ts +100 -0
  547. package/dist/index.js +472 -0
  548. package/dist/infinite-gallery.d.ts +1 -0
  549. package/dist/infinite-gallery.js +9 -0
  550. package/dist/integration-hub.d.ts +1 -0
  551. package/dist/integration-hub.js +8 -0
  552. package/dist/lib/cn.d.ts +3 -0
  553. package/dist/liquid-card.d.ts +1 -0
  554. package/dist/liquid-card.js +10 -0
  555. package/dist/liquid-metal-card.d.ts +1 -0
  556. package/dist/liquid-metal-card.js +8 -0
  557. package/dist/liquid-tabs.d.ts +1 -0
  558. package/dist/liquid-tabs.js +14 -0
  559. package/dist/magnetic-button.d.ts +1 -0
  560. package/dist/magnetic-button.js +8 -0
  561. package/dist/magnetic-flow.d.ts +1 -0
  562. package/dist/magnetic-flow.js +8 -0
  563. package/dist/message-composer.d.ts +1 -0
  564. package/dist/message-composer.js +20 -0
  565. package/dist/metal-card-stack.d.ts +1 -0
  566. package/dist/metal-card-stack.js +8 -0
  567. package/dist/metric-split.d.ts +1 -0
  568. package/dist/metric-split.js +9 -0
  569. package/dist/mix-chart.d.ts +1 -0
  570. package/dist/mix-chart.js +9 -0
  571. package/dist/month-calendar.d.ts +1 -0
  572. package/dist/month-calendar.js +10 -0
  573. package/dist/morph-search.d.ts +1 -0
  574. package/dist/morph-search.js +10 -0
  575. package/dist/orbit-card.d.ts +1 -0
  576. package/dist/orbit-card.js +8 -0
  577. package/dist/otp-code.d.ts +1 -0
  578. package/dist/otp-code.js +17 -0
  579. package/dist/particle-card.d.ts +1 -0
  580. package/dist/particle-card.js +8 -0
  581. package/dist/payment-form.d.ts +1 -0
  582. package/dist/payment-form.js +8 -0
  583. package/dist/pill-tabs.d.ts +1 -0
  584. package/dist/pill-tabs.js +9 -0
  585. package/dist/pixel-blast.d.ts +1 -0
  586. package/dist/pixel-blast.js +8 -0
  587. package/dist/pixel-feature-card.d.ts +1 -0
  588. package/dist/pixel-feature-card.js +9 -0
  589. package/dist/pixel-scroll.d.ts +1 -0
  590. package/dist/pixel-scroll.js +8 -0
  591. package/dist/pricing-card.d.ts +1 -0
  592. package/dist/pricing-card.js +14 -0
  593. package/dist/prism-carousel.d.ts +1 -0
  594. package/dist/prism-carousel.js +8 -0
  595. package/dist/prism-flow.d.ts +1 -0
  596. package/dist/prism-flow.js +8 -0
  597. package/dist/privacy-banner.d.ts +1 -0
  598. package/dist/privacy-banner.js +8 -0
  599. package/dist/profile-card.d.ts +1 -0
  600. package/dist/profile-card.js +13 -0
  601. package/dist/profile-menu.d.ts +1 -0
  602. package/dist/profile-menu.js +21 -0
  603. package/dist/project-index.d.ts +1 -0
  604. package/dist/project-index.js +9 -0
  605. package/dist/prompt-input.d.ts +1 -0
  606. package/dist/prompt-input.js +14 -0
  607. package/dist/quota-gauge.d.ts +1 -0
  608. package/dist/quota-gauge.js +9 -0
  609. package/dist/range-chart.d.ts +1 -0
  610. package/dist/range-chart.js +8 -0
  611. package/dist/reaction-card.d.ts +1 -0
  612. package/dist/reaction-card.js +8 -0
  613. package/dist/recap-card.d.ts +1 -0
  614. package/dist/recap-card.js +15 -0
  615. package/dist/receipt-button.d.ts +1 -0
  616. package/dist/receipt-button.js +8 -0
  617. package/dist/ribbon-gallery.d.ts +1 -0
  618. package/dist/ribbon-gallery.js +8 -0
  619. package/dist/roadmap-card.d.ts +1 -0
  620. package/dist/roadmap-card.js +11 -0
  621. package/dist/rolling-card-stack.d.ts +1 -0
  622. package/dist/rolling-card-stack.js +8 -0
  623. package/dist/rolling-stepper.d.ts +1 -0
  624. package/dist/rolling-stepper.js +8 -0
  625. package/dist/rotating-text.d.ts +1 -0
  626. package/dist/rotating-text.js +9 -0
  627. package/dist/score-card.d.ts +1 -0
  628. package/dist/score-card.js +10 -0
  629. package/dist/search-modal.d.ts +1 -0
  630. package/dist/search-modal.js +16 -0
  631. package/dist/shimmer-text.d.ts +1 -0
  632. package/dist/shimmer-text.js +8 -0
  633. package/dist/sidebar-nav.d.ts +1 -0
  634. package/dist/sidebar-nav.js +19 -0
  635. package/dist/slide-commit.d.ts +1 -0
  636. package/dist/slide-commit.js +9 -0
  637. package/dist/spatial-gallery.d.ts +1 -0
  638. package/dist/spatial-gallery.js +8 -0
  639. package/dist/spending-meter.d.ts +1 -0
  640. package/dist/spending-meter.js +9 -0
  641. package/dist/tab-bar.d.ts +1 -0
  642. package/dist/tab-bar.js +18 -0
  643. package/dist/team-member-card.d.ts +1 -0
  644. package/dist/team-member-card.js +14 -0
  645. package/dist/team-morph.d.ts +1 -0
  646. package/dist/team-morph.js +11 -0
  647. package/dist/tilt-card.d.ts +1 -0
  648. package/dist/tilt-card.js +8 -0
  649. package/dist/tilt-carousel.d.ts +1 -0
  650. package/dist/tilt-carousel.js +8 -0
  651. package/dist/toast-stack.d.ts +1 -0
  652. package/dist/toast-stack.js +13 -0
  653. package/dist/usage-ring.d.ts +1 -0
  654. package/dist/usage-ring.js +9 -0
  655. package/dist/verify-flow.d.ts +1 -0
  656. package/dist/verify-flow.js +10 -0
  657. package/dist/voice-prompt.d.ts +1 -0
  658. package/dist/voice-prompt.js +14 -0
  659. package/dist/wallet-card.d.ts +1 -0
  660. package/dist/wallet-card.js +15 -0
  661. package/dist/wave-text.d.ts +1 -0
  662. package/dist/wave-text.js +8 -0
  663. package/package.json +111 -4
@@ -0,0 +1,793 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-2TQSHVXA.js";
5
+
6
+ // src/components/spatial-gallery/spatial-gallery.tsx
7
+ import * as React from "react";
8
+ import {
9
+ AnimatePresence,
10
+ motion,
11
+ useInView,
12
+ useReducedMotion
13
+ } from "motion/react";
14
+ import gsap from "gsap";
15
+ import { jsx, jsxs } from "react/jsx-runtime";
16
+ var u = (id) => `https://images.unsplash.com/${id}?w=720&q=70&auto=format&fit=crop`;
17
+ var DEFAULT_ITEMS = [
18
+ {
19
+ src: u("photo-1501785888041-af3ef285b470"),
20
+ alt: "A lake under mountains at dawn"
21
+ },
22
+ { src: u("photo-1487014679447-9f8336841d58"), alt: "A white curved facade" },
23
+ {
24
+ src: u("photo-1506905925346-21bda4d32df4"),
25
+ alt: "Peaks above a sea of cloud"
26
+ },
27
+ {
28
+ src: "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
29
+ type: "video",
30
+ poster: u("photo-1490750967868-88aa4486c946"),
31
+ alt: "A flower opening, video"
32
+ },
33
+ {
34
+ src: u("photo-1517694712202-14dd9538aa97"),
35
+ alt: "A laptop on a wooden desk"
36
+ },
37
+ {
38
+ src: u("photo-1518837695005-2083093ee35b"),
39
+ alt: "A wave breaking from below"
40
+ },
41
+ {
42
+ src: u("photo-1486406146926-c627a92ad1ab"),
43
+ alt: "Glass towers from the street"
44
+ },
45
+ { src: u("photo-1441974231531-c6227db76b6e"), alt: "Sun through a forest" },
46
+ {
47
+ src: u("photo-1460925895917-afdab827c52f"),
48
+ alt: "Charts on a laptop screen"
49
+ },
50
+ {
51
+ src: u("photo-1519681393784-d120267933ba"),
52
+ alt: "Stars over snowy mountains"
53
+ },
54
+ { src: u("photo-1507525428034-b723cf961d3e"), alt: "A quiet beach at noon" },
55
+ {
56
+ src: u("photo-1534528741775-53994a69daeb"),
57
+ alt: "A portrait in soft light"
58
+ },
59
+ {
60
+ src: u("photo-1469474968028-56623f02e42e"),
61
+ alt: "A valley in morning sun"
62
+ },
63
+ { src: u("photo-1505761671935-60b3a7427bad"), alt: "A bridge in the fog" }
64
+ ];
65
+ var GLIDE = [0.22, 1, 0.36, 1];
66
+ var FOV = 55 * Math.PI / 180;
67
+ var NEAR = 0.4;
68
+ var THRESHOLD = 6;
69
+ var VERTEX = `attribute vec2 a;
70
+ uniform mat4 uPV;uniform vec3 uPos;uniform vec3 uRight;uniform vec3 uUp;uniform vec2 uSize;
71
+ varying vec2 vUv;
72
+ void main(){vUv=a+.5;vec3 w=uPos+uRight*(a.x*uSize.x)+uUp*(a.y*uSize.y);gl_Position=uPV*vec4(w,1.);}`;
73
+ var FRAGMENT = `precision highp float;
74
+ varying vec2 vUv;
75
+ uniform sampler2D uTex;uniform float uReady;uniform vec2 uCrop;uniform float uAspect;uniform float uRadius;
76
+ uniform float uAA;uniform float uAlpha;uniform float uFog;uniform vec3 uBlank;
77
+ void main(){
78
+ vec2 p=(vUv-.5)*vec2(uAspect,1.);vec2 b=vec2(uAspect,1.)*.5;float r=min(uRadius,.5*min(uAspect,1.));
79
+ vec2 q=abs(p)-b+r;float sd=length(max(q,0.))+min(max(q.x,q.y),0.)-r;
80
+ float m=1.-smoothstep(-uAA,uAA,sd);
81
+ vec2 uv=(vUv-.5)*uCrop+.5;uv.y=1.-uv.y;
82
+ vec3 c=mix(uBlank,texture2D(uTex,uv).rgb,uReady);
83
+ float al=m*uAlpha*(1.-uFog);gl_FragColor=vec4(c*al,al);}`;
84
+ var mul = (a, b) => {
85
+ const o = new Float32Array(16);
86
+ for (let c = 0; c < 4; c++)
87
+ for (let r = 0; r < 4; r++) {
88
+ let s = 0;
89
+ for (let k = 0; k < 4; k++) s += a[k * 4 + r] * b[c * 4 + k];
90
+ o[c * 4 + r] = s;
91
+ }
92
+ return o;
93
+ };
94
+ var perspective = (aspect, near, far) => {
95
+ const f = 1 / Math.tan(FOV / 2);
96
+ return new Float32Array([
97
+ f / aspect,
98
+ 0,
99
+ 0,
100
+ 0,
101
+ 0,
102
+ f,
103
+ 0,
104
+ 0,
105
+ 0,
106
+ 0,
107
+ (far + near) / (near - far),
108
+ -1,
109
+ 0,
110
+ 0,
111
+ 2 * far * near / (near - far),
112
+ 0
113
+ ]);
114
+ };
115
+ var rotX = (a) => {
116
+ const c = Math.cos(a);
117
+ const s = Math.sin(a);
118
+ return new Float32Array([1, 0, 0, 0, 0, c, s, 0, 0, -s, c, 0, 0, 0, 0, 1]);
119
+ };
120
+ var rotY = (a) => {
121
+ const c = Math.cos(a);
122
+ const s = Math.sin(a);
123
+ return new Float32Array([c, 0, -s, 0, 0, 1, 0, 0, s, 0, c, 0, 0, 0, 0, 1]);
124
+ };
125
+ var translate = (x, y, z) => new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, x, y, z, 1]);
126
+ var hash = (i) => {
127
+ const x = Math.sin(i * 127.1 + 311.7) * 43758.5453;
128
+ return x - Math.floor(x);
129
+ };
130
+ var norm = (v) => {
131
+ const l = Math.hypot(v[0], v[1], v[2]) || 1;
132
+ return [v[0] / l, v[1] / l, v[2] / l];
133
+ };
134
+ var cross = (a, b) => [
135
+ a[1] * b[2] - a[2] * b[1],
136
+ a[2] * b[0] - a[0] * b[2],
137
+ a[0] * b[1] - a[1] * b[0]
138
+ ];
139
+ var smooth = (e0, e1, x) => {
140
+ const t = Math.max(0, Math.min(1, (x - e0) / (e1 - e0)));
141
+ return t * t * (3 - 2 * t);
142
+ };
143
+ var SpatialGallery = React.forwardRef(function SpatialGallery2({
144
+ items = DEFAULT_ITEMS,
145
+ count = 124,
146
+ radius = 4.1,
147
+ core = 0.8,
148
+ spacing = 0.2,
149
+ size = 0.95,
150
+ facing = "funnel",
151
+ funnel = 0.78,
152
+ spiral = true,
153
+ twist = 0.3,
154
+ autoMove = true,
155
+ speed = 0.8,
156
+ scrollSpeed = 2.1,
157
+ captureScroll = true,
158
+ followPageScroll = true,
159
+ drag = true,
160
+ parallax = 0.5,
161
+ corner = 0.22,
162
+ fog = 0.8,
163
+ roll = 0,
164
+ caption = true,
165
+ linkTarget = "_self",
166
+ children,
167
+ className
168
+ }, ref) {
169
+ const still = !!useReducedMotion();
170
+ const root = React.useRef(null);
171
+ React.useImperativeHandle(ref, () => root.current);
172
+ const canvas = React.useRef(null);
173
+ const visible = useInView(root, { amount: 0.05 });
174
+ const [epoch, setEpoch] = React.useState(0);
175
+ const [hovered, setHovered] = React.useState(null);
176
+ const [moved, setMoved] = React.useState(false);
177
+ const params = React.useRef({
178
+ count,
179
+ radius,
180
+ core,
181
+ spacing,
182
+ size,
183
+ facing,
184
+ funnel,
185
+ spiral,
186
+ twist,
187
+ autoMove,
188
+ speed,
189
+ scrollSpeed,
190
+ captureScroll,
191
+ followPageScroll,
192
+ drag,
193
+ parallax,
194
+ corner,
195
+ fog,
196
+ roll,
197
+ linkTarget,
198
+ still
199
+ });
200
+ params.current = {
201
+ count,
202
+ radius,
203
+ core,
204
+ spacing,
205
+ size,
206
+ facing,
207
+ funnel,
208
+ spiral,
209
+ twist,
210
+ autoMove,
211
+ speed,
212
+ scrollSpeed,
213
+ captureScroll,
214
+ followPageScroll,
215
+ drag,
216
+ parallax,
217
+ corner,
218
+ fog,
219
+ roll,
220
+ linkTarget,
221
+ still
222
+ };
223
+ const motionState = React.useRef({ T: 0, V: 0 });
224
+ const pointer = React.useRef({
225
+ x: 0,
226
+ y: 0,
227
+ px: 0,
228
+ py: 0,
229
+ inside: false,
230
+ down: false,
231
+ sx: 0,
232
+ sy: 0,
233
+ dragging: false,
234
+ lastY: 0,
235
+ lastAt: 0,
236
+ dragV: 0
237
+ });
238
+ const pick = React.useRef(null);
239
+ const itemsRef = React.useRef(items);
240
+ itemsRef.current = items;
241
+ const frameRef = React.useRef(null);
242
+ const itemsKey = items.map((i) => `${i.type ?? "image"}:${i.src}:${i.poster ?? ""}`).join("|");
243
+ const push = React.useCallback((units) => {
244
+ const m = motionState.current;
245
+ if (params.current.still) m.T += units * 0.25;
246
+ else m.V += units;
247
+ setMoved(true);
248
+ }, []);
249
+ React.useEffect(() => {
250
+ const el = root.current;
251
+ if (!el) return;
252
+ let pending = 0;
253
+ let wheelAt = 0;
254
+ let scrolledAt = 0;
255
+ let timer = 0;
256
+ const onWheel = (e) => {
257
+ const k = 6e-3 * params.current.scrollSpeed;
258
+ const d = (Math.abs(e.deltaY) > Math.abs(e.deltaX) ? e.deltaY : e.deltaX) * (e.deltaMode === 1 ? 16 : 1);
259
+ if (params.current.captureScroll) {
260
+ e.preventDefault();
261
+ push(d * k);
262
+ return;
263
+ }
264
+ pending += d * k;
265
+ wheelAt = performance.now();
266
+ window.clearTimeout(timer);
267
+ timer = window.setTimeout(() => {
268
+ if (scrolledAt < wheelAt) push(pending);
269
+ pending = 0;
270
+ }, 60);
271
+ };
272
+ const last = /* @__PURE__ */ new WeakMap();
273
+ const onScroll = (e) => {
274
+ const t = e.target;
275
+ const top = t === document || t === document.documentElement ? window.scrollY : t.scrollTop ?? 0;
276
+ const key = t === document.documentElement ? document : t;
277
+ const prev = last.get(key);
278
+ last.set(key, top);
279
+ scrolledAt = performance.now();
280
+ if (prev === void 0 || !params.current.followPageScroll) return;
281
+ if (key !== document && !t.contains?.(el)) return;
282
+ push((top - prev) * 6e-3 * params.current.scrollSpeed);
283
+ };
284
+ el.addEventListener("wheel", onWheel, { passive: false });
285
+ window.addEventListener("scroll", onScroll, {
286
+ passive: true,
287
+ capture: true
288
+ });
289
+ return () => {
290
+ el.removeEventListener("wheel", onWheel);
291
+ window.removeEventListener("scroll", onScroll, { capture: true });
292
+ window.clearTimeout(timer);
293
+ };
294
+ }, [push]);
295
+ React.useEffect(() => {
296
+ const el = canvas.current;
297
+ const host = root.current;
298
+ if (!el || !host) return;
299
+ const gl = el.getContext("webgl", {
300
+ antialias: true,
301
+ premultipliedAlpha: true,
302
+ alpha: true
303
+ });
304
+ if (!gl) return;
305
+ let lost = false;
306
+ const onLost = (e) => {
307
+ e.preventDefault();
308
+ lost = true;
309
+ };
310
+ const onRestored = () => setEpoch((n) => n + 1);
311
+ el.addEventListener("webglcontextlost", onLost);
312
+ el.addEventListener("webglcontextrestored", onRestored);
313
+ const compile = (type, src) => {
314
+ const s = gl.createShader(type);
315
+ gl.shaderSource(s, src);
316
+ gl.compileShader(s);
317
+ return s;
318
+ };
319
+ const prog = gl.createProgram();
320
+ gl.attachShader(prog, compile(gl.VERTEX_SHADER, VERTEX));
321
+ gl.attachShader(prog, compile(gl.FRAGMENT_SHADER, FRAGMENT));
322
+ gl.linkProgram(prog);
323
+ gl.useProgram(prog);
324
+ gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
325
+ gl.bufferData(
326
+ gl.ARRAY_BUFFER,
327
+ new Float32Array([-0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, 0.5]),
328
+ gl.STATIC_DRAW
329
+ );
330
+ const loc = gl.getAttribLocation(prog, "a");
331
+ gl.enableVertexAttribArray(loc);
332
+ gl.vertexAttribPointer(loc, 2, gl.FLOAT, false, 0, 0);
333
+ const U = Object.fromEntries(
334
+ [
335
+ "uPV",
336
+ "uPos",
337
+ "uRight",
338
+ "uUp",
339
+ "uSize",
340
+ "uTex",
341
+ "uReady",
342
+ "uCrop",
343
+ "uAspect",
344
+ "uRadius",
345
+ "uAA",
346
+ "uAlpha",
347
+ "uFog",
348
+ "uBlank"
349
+ ].map((n) => [n, gl.getUniformLocation(prog, n)])
350
+ );
351
+ gl.enable(gl.BLEND);
352
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
353
+ gl.uniform1i(U.uTex, 0);
354
+ const makeTex = () => {
355
+ const tex = gl.createTexture();
356
+ gl.bindTexture(gl.TEXTURE_2D, tex);
357
+ gl.texImage2D(
358
+ gl.TEXTURE_2D,
359
+ 0,
360
+ gl.RGBA,
361
+ 1,
362
+ 1,
363
+ 0,
364
+ gl.RGBA,
365
+ gl.UNSIGNED_BYTE,
366
+ new Uint8Array([236, 236, 234, 255])
367
+ );
368
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
369
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
370
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
371
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
372
+ return tex;
373
+ };
374
+ const upload = (t, src, w, h) => {
375
+ gl.bindTexture(gl.TEXTURE_2D, t.tex);
376
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, src);
377
+ t.ready = true;
378
+ t.aspect = w / h;
379
+ };
380
+ const list = itemsRef.current;
381
+ const texes = list.map((it) => {
382
+ const t = { tex: makeTex(), ready: false, aspect: 1.4, shown: 0 };
383
+ const first = it.type === "video" ? it.poster : it.src;
384
+ if (first) {
385
+ const img = new Image();
386
+ img.crossOrigin = "anonymous";
387
+ img.decoding = "async";
388
+ img.onload = () => !lost && upload(t, img, img.naturalWidth, img.naturalHeight);
389
+ img.src = first;
390
+ }
391
+ return t;
392
+ });
393
+ const video = document.createElement("video");
394
+ video.muted = true;
395
+ video.loop = true;
396
+ video.playsInline = true;
397
+ video.crossOrigin = "anonymous";
398
+ video.preload = "none";
399
+ const live = { tex: makeTex(), ready: false, aspect: 1.4, shown: 0 };
400
+ let fresh = false;
401
+ let lastTime = -1;
402
+ const hasRvfc = typeof video.requestVideoFrameCallback === "function";
403
+ const onVideoFrame = () => {
404
+ fresh = true;
405
+ video.requestVideoFrameCallback(onVideoFrame);
406
+ };
407
+ if (hasRvfc) video.requestVideoFrameCallback(onVideoFrame);
408
+ let playing = null;
409
+ let release = 0;
410
+ const playVideo = (i) => {
411
+ const it = i === null ? null : list[i];
412
+ if (it?.type === "video") {
413
+ window.clearTimeout(release);
414
+ if (playing !== i) {
415
+ playing = i;
416
+ live.ready = false;
417
+ fresh = false;
418
+ lastTime = -1;
419
+ video.src = it.src;
420
+ void video.play().catch(() => {
421
+ });
422
+ }
423
+ } else if (playing !== null) {
424
+ window.clearTimeout(release);
425
+ release = window.setTimeout(() => {
426
+ video.pause();
427
+ video.removeAttribute("src");
428
+ video.load();
429
+ playing = null;
430
+ live.ready = false;
431
+ }, 400);
432
+ }
433
+ };
434
+ const hover = new Float32Array(160);
435
+ let picked = null;
436
+ let videoMix = 0;
437
+ let videoPlane = null;
438
+ const frame = (time, deltaMs) => {
439
+ if (lost) return;
440
+ const p = params.current;
441
+ const dt = Math.min(0.05, deltaMs / 1e3);
442
+ const m = motionState.current;
443
+ const ptr = pointer.current;
444
+ if (!p.still) {
445
+ m.T += ((p.autoMove ? p.speed * 1.6 : 0) + m.V) * dt;
446
+ m.V *= Math.exp(-dt * 2.4);
447
+ }
448
+ const lean = p.still ? 0 : p.parallax;
449
+ const k = 1 - Math.exp(-dt * 4);
450
+ ptr.px += ((ptr.inside ? ptr.x : 0) * lean - ptr.px) * k;
451
+ ptr.py += ((ptr.inside ? ptr.y : 0) * lean - ptr.py) * k;
452
+ const dpr = Math.min(2, window.devicePixelRatio || 1);
453
+ const w = Math.max(1, Math.round(el.clientWidth * dpr));
454
+ const h = Math.max(1, Math.round(el.clientHeight * dpr));
455
+ if (el.width !== w || el.height !== h) {
456
+ el.width = w;
457
+ el.height = h;
458
+ }
459
+ const aspect = w / h;
460
+ const n = Math.max(8, Math.min(160, Math.round(p.count)));
461
+ const span = n * p.spacing;
462
+ const proj = perspective(aspect, 0.05, span + 10);
463
+ const view = mul(
464
+ mul(rotX(ptr.py * 0.07), rotY(ptr.px * 0.1)),
465
+ translate(-ptr.px * 0.8, ptr.py * 0.55, 0)
466
+ );
467
+ const pv = mul(proj, view);
468
+ gl.viewport(0, 0, w, h);
469
+ gl.clearColor(0, 0, 0, 0);
470
+ gl.clear(gl.COLOR_BUFFER_BIT);
471
+ gl.uniformMatrix4fv(U.uPV, false, pv);
472
+ gl.uniform3f(U.uBlank, 0.925, 0.925, 0.918);
473
+ const rx = p.radius * Math.max(1, Math.min(1.6, aspect * 0.75));
474
+ const ry = rx;
475
+ const planes = [];
476
+ for (let i = 0; i < n; i++) {
477
+ let d = (i * p.spacing - m.T) % span;
478
+ if (d < 0) d += span;
479
+ const item2 = i % list.length;
480
+ const theta = i * 2.39996 + (p.spiral ? p.twist * (d * 0.75 + m.T * 0.18) : 0);
481
+ const r = p.core + (1 - p.core) * hash(i);
482
+ const c = Math.cos(theta);
483
+ const s = Math.sin(theta);
484
+ const pos = [c * rx * r, s * ry * r, -(NEAR + d)];
485
+ let right = [1, 0, 0];
486
+ let up = [0, 1, 0];
487
+ if (p.facing === "funnel" && p.funnel > 0) {
488
+ const b = p.funnel * 0.85;
489
+ const inward = norm([-c * ry, -s * rx, 0]);
490
+ const tangent = norm([-s * rx, c * ry, 0]);
491
+ const nrm = norm([inward[0] * b, inward[1] * b, 1 - b]);
492
+ const rt = norm([1 - b + tangent[0] * b, tangent[1] * b, 0]);
493
+ up = norm(cross(nrm, rt));
494
+ right = norm(cross(up, nrm));
495
+ }
496
+ if (p.roll > 0) {
497
+ const phi = (hash(i + 17) - 0.5) * 1.8 * p.roll;
498
+ const cr = Math.cos(phi);
499
+ const sr = Math.sin(phi);
500
+ const r2 = [
501
+ right[0] * cr + up[0] * sr,
502
+ right[1] * cr + up[1] * sr,
503
+ right[2] * cr + up[2] * sr
504
+ ];
505
+ up = [
506
+ up[0] * cr - right[0] * sr,
507
+ up[1] * cr - right[1] * sr,
508
+ up[2] * cr - right[2] * sr
509
+ ];
510
+ right = r2;
511
+ }
512
+ const tex = texes[item2];
513
+ const a = Math.max(0.7, Math.min(1.6, tex.aspect));
514
+ const grow = 1 + 0.07 * hover[i];
515
+ const sw = p.size * Math.sqrt(a) * grow;
516
+ const sh = p.size / Math.sqrt(a) * grow;
517
+ const alpha = smooth(span, span * 0.82, d) * smooth(0, 1, d);
518
+ if (alpha < 5e-3) continue;
519
+ planes.push({
520
+ i,
521
+ d,
522
+ pos,
523
+ right,
524
+ up,
525
+ sw,
526
+ sh,
527
+ tex,
528
+ item: item2,
529
+ alpha,
530
+ fogv: p.fog * smooth(span * 0.2, span, d)
531
+ });
532
+ }
533
+ planes.sort((a, b) => b.d - a.d);
534
+ const project = (v) => {
535
+ const x = pv[0] * v[0] + pv[4] * v[1] + pv[8] * v[2] + pv[12];
536
+ const y = pv[1] * v[0] + pv[5] * v[1] + pv[9] * v[2] + pv[13];
537
+ const wv = pv[3] * v[0] + pv[7] * v[1] + pv[11] * v[2] + pv[15];
538
+ return [
539
+ (x / wv * 0.5 + 0.5) * el.clientWidth,
540
+ (1 - (y / wv * 0.5 + 0.5)) * el.clientHeight,
541
+ wv
542
+ ];
543
+ };
544
+ const corner2 = (pl, sx, sy) => project([
545
+ pl.pos[0] + pl.right[0] * sx * pl.sw + pl.up[0] * sy * pl.sh,
546
+ pl.pos[1] + pl.right[1] * sx * pl.sw + pl.up[1] * sy * pl.sh,
547
+ pl.pos[2] + pl.right[2] * sx * pl.sw + pl.up[2] * sy * pl.sh
548
+ ]);
549
+ let hit = null;
550
+ const mx = (ptr.x + 1) / 2 * el.clientWidth;
551
+ const my = (1 - ptr.y) / 2 * el.clientHeight;
552
+ for (const pl of planes) {
553
+ const q = [
554
+ corner2(pl, -0.5, -0.5),
555
+ corner2(pl, 0.5, -0.5),
556
+ corner2(pl, 0.5, 0.5),
557
+ corner2(pl, -0.5, 0.5)
558
+ ];
559
+ pl.px = Math.abs(q[3][1] - q[0][1]);
560
+ if (!ptr.inside || ptr.dragging || q.some((c) => c[2] <= 0) || pl.alpha < 0.5)
561
+ continue;
562
+ let sign = 0;
563
+ let inside = true;
564
+ for (let e = 0; e < 4; e++) {
565
+ const a = q[e];
566
+ const b = q[(e + 1) % 4];
567
+ const cr = (b[0] - a[0]) * (my - a[1]) - (b[1] - a[1]) * (mx - a[0]);
568
+ const sgn = Math.sign(cr);
569
+ if (sgn === 0) continue;
570
+ if (sign === 0) sign = sgn;
571
+ else if (sgn !== sign) {
572
+ inside = false;
573
+ break;
574
+ }
575
+ }
576
+ if (inside) hit = pl.i;
577
+ }
578
+ for (let i = 0; i < n; i++)
579
+ hover[i] += ((i === hit ? 1 : 0) - hover[i]) * (p.still ? 1 : 1 - Math.exp(-dt * 10));
580
+ if (hit !== picked) {
581
+ picked = hit;
582
+ const item2 = hit === null ? null : hit % list.length;
583
+ pick.current = item2;
584
+ setHovered(item2);
585
+ playVideo(item2);
586
+ host.style.cursor = item2 !== null && list[item2]?.href ? "pointer" : p.drag ? "grab" : "";
587
+ }
588
+ if (playing !== null && video.readyState >= 2 && video.videoWidth) {
589
+ const changed = hasRvfc ? fresh : video.currentTime !== lastTime;
590
+ if (changed || !live.ready) {
591
+ upload(live, video, video.videoWidth, video.videoHeight);
592
+ fresh = false;
593
+ lastTime = video.currentTime;
594
+ }
595
+ }
596
+ const wantVideo = picked !== null && playing === picked % list.length && live.ready;
597
+ if (wantVideo) videoPlane = picked;
598
+ videoMix += ((wantVideo ? 1 : 0) - videoMix) * (p.still ? 1 : 1 - Math.exp(-dt * 9));
599
+ if (videoMix < 0.01 && !wantVideo) videoPlane = null;
600
+ for (const t of texes)
601
+ if (t.ready && t.shown < 1)
602
+ t.shown = p.still ? 1 : Math.min(1, t.shown + dt * 4);
603
+ for (const pl of planes) {
604
+ const a = pl.sw / pl.sh;
605
+ const ta = pl.tex.aspect;
606
+ gl.bindTexture(gl.TEXTURE_2D, pl.tex.tex);
607
+ gl.uniform3fv(U.uPos, pl.pos);
608
+ gl.uniform3fv(U.uRight, pl.right);
609
+ gl.uniform3fv(U.uUp, pl.up);
610
+ gl.uniform2f(U.uSize, pl.sw, pl.sh);
611
+ gl.uniform1f(
612
+ U.uReady,
613
+ pl.tex.shown * pl.tex.shown * (3 - 2 * pl.tex.shown)
614
+ );
615
+ gl.uniform2f(U.uCrop, ta > a ? a / ta : 1, ta > a ? 1 : ta / a);
616
+ gl.uniform1f(U.uAspect, a);
617
+ gl.uniform1f(U.uRadius, p.corner);
618
+ gl.uniform1f(
619
+ U.uAA,
620
+ 1.5 / Math.max(4, (pl.px ?? 100) * dpr)
621
+ );
622
+ gl.uniform1f(U.uAlpha, pl.alpha);
623
+ gl.uniform1f(U.uFog, pl.fogv);
624
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
625
+ if (pl.i === videoPlane && videoMix > 0.01 && live.ready) {
626
+ const va = live.aspect;
627
+ gl.bindTexture(gl.TEXTURE_2D, live.tex);
628
+ gl.uniform1f(U.uReady, 1);
629
+ gl.uniform2f(U.uCrop, va > a ? a / va : 1, va > a ? 1 : va / a);
630
+ gl.uniform1f(U.uAlpha, pl.alpha * videoMix);
631
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
632
+ }
633
+ }
634
+ void time;
635
+ };
636
+ frame(0, 16);
637
+ frameRef.current = frame;
638
+ return () => {
639
+ frameRef.current = null;
640
+ el.removeEventListener("webglcontextlost", onLost);
641
+ el.removeEventListener("webglcontextrestored", onRestored);
642
+ window.clearTimeout(release);
643
+ video.pause();
644
+ video.removeAttribute("src");
645
+ video.load();
646
+ if (!lost) {
647
+ texes.forEach((t) => gl.deleteTexture(t.tex));
648
+ gl.deleteTexture(live.tex);
649
+ gl.deleteProgram(prog);
650
+ }
651
+ };
652
+ }, [itemsKey, epoch]);
653
+ React.useEffect(() => {
654
+ if (!visible) return;
655
+ const tick = (t, d) => {
656
+ if (!document.hidden) frameRef.current?.(t, d);
657
+ };
658
+ gsap.ticker.add(tick);
659
+ return () => gsap.ticker.remove(tick);
660
+ }, [visible]);
661
+ const toLocal = (e) => {
662
+ const r = e.currentTarget.getBoundingClientRect();
663
+ return {
664
+ x: (e.clientX - r.left) / r.width * 2 - 1,
665
+ y: -((e.clientY - r.top) / r.height * 2 - 1)
666
+ };
667
+ };
668
+ const item = hovered === null ? null : items[hovered];
669
+ return /* @__PURE__ */ jsxs(
670
+ "div",
671
+ {
672
+ ref: root,
673
+ role: "region",
674
+ "aria-roledescription": "gallery",
675
+ "aria-label": "Media gallery. Scroll, drag or use the arrow keys to travel.",
676
+ tabIndex: 0,
677
+ onKeyDown: (e) => {
678
+ if (e.key === "ArrowDown" || e.key === "ArrowRight") push(1.2);
679
+ else if (e.key === "ArrowUp" || e.key === "ArrowLeft") push(-1.2);
680
+ else return;
681
+ e.preventDefault();
682
+ },
683
+ onPointerMove: (e) => {
684
+ const p = toLocal(e);
685
+ const ptr = pointer.current;
686
+ ptr.x = p.x;
687
+ ptr.y = p.y;
688
+ ptr.inside = true;
689
+ if (!ptr.down || !params.current.drag) return;
690
+ if (!ptr.dragging && Math.hypot(e.clientX - ptr.sx, e.clientY - ptr.sy) > THRESHOLD) {
691
+ ptr.dragging = true;
692
+ e.currentTarget.setPointerCapture(e.pointerId);
693
+ e.currentTarget.style.cursor = "grabbing";
694
+ }
695
+ if (ptr.dragging) {
696
+ const now = performance.now();
697
+ const dy = ptr.lastY - e.clientY;
698
+ const units = dy * 0.02;
699
+ motionState.current.T += units;
700
+ ptr.dragV = units / Math.max(8e-3, (now - ptr.lastAt) / 1e3) * 0.6;
701
+ ptr.lastY = e.clientY;
702
+ ptr.lastAt = now;
703
+ setMoved(true);
704
+ }
705
+ },
706
+ onPointerEnter: () => {
707
+ pointer.current.inside = true;
708
+ },
709
+ onPointerLeave: () => {
710
+ const ptr = pointer.current;
711
+ ptr.inside = false;
712
+ if (!ptr.dragging) ptr.down = false;
713
+ },
714
+ onPointerDown: (e) => {
715
+ const ptr = pointer.current;
716
+ ptr.down = true;
717
+ ptr.dragging = false;
718
+ ptr.sx = e.clientX;
719
+ ptr.sy = e.clientY;
720
+ ptr.lastY = e.clientY;
721
+ ptr.lastAt = performance.now();
722
+ ptr.dragV = 0;
723
+ },
724
+ onPointerUp: (e) => {
725
+ const ptr = pointer.current;
726
+ const wasDrag = ptr.dragging;
727
+ ptr.down = false;
728
+ ptr.dragging = false;
729
+ e.currentTarget.style.cursor = "";
730
+ if (wasDrag) {
731
+ if (!params.current.still)
732
+ motionState.current.V += Math.max(-12, Math.min(12, ptr.dragV));
733
+ return;
734
+ }
735
+ const i = pick.current;
736
+ const href = i === null ? void 0 : items[i]?.href;
737
+ if (href)
738
+ window.open(
739
+ href,
740
+ params.current.linkTarget,
741
+ params.current.linkTarget === "_blank" ? "noopener" : void 0
742
+ );
743
+ },
744
+ className: cn(
745
+ "relative isolate h-[560px] w-full touch-none select-none overflow-hidden outline-none focus-visible:ring-2 focus-visible:ring-[#242423]/30",
746
+ className
747
+ ),
748
+ children: [
749
+ /* @__PURE__ */ jsx(
750
+ "canvas",
751
+ {
752
+ ref: canvas,
753
+ "aria-hidden": true,
754
+ className: "absolute inset-0 -z-10 size-full"
755
+ }
756
+ ),
757
+ children,
758
+ caption && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-x-0 bottom-6 flex justify-center", children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "popLayout", initial: false, children: item ? /* @__PURE__ */ jsxs(
759
+ motion.span,
760
+ {
761
+ initial: { opacity: 0, y: 8, filter: "blur(4px)" },
762
+ animate: { opacity: 1, y: 0, filter: "blur(0px)" },
763
+ exit: { opacity: 0, y: -6, filter: "blur(4px)" },
764
+ transition: { duration: 0.3, ease: GLIDE },
765
+ className: "inline-flex h-9 items-center gap-2 rounded-full bg-white/85 px-4 text-[14px] font-medium text-[#242423] shadow-[0_1px_2px_rgba(0,0,0,0.06),0_10px_24px_-14px_rgba(0,0,0,0.3)] ring-1 ring-black/5 backdrop-blur-md",
766
+ children: [
767
+ item.type === "video" && /* @__PURE__ */ jsx("span", { className: "size-1.5 animate-pulse rounded-full bg-[#d64545]" }),
768
+ item.alt,
769
+ item.href && /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "text-[#242423]/45", children: "\u2197" })
770
+ ]
771
+ },
772
+ `item-${hovered}`
773
+ ) : !moved ? /* @__PURE__ */ jsx(
774
+ motion.span,
775
+ {
776
+ initial: { opacity: 0, y: 8, filter: "blur(4px)" },
777
+ animate: { opacity: 1, y: 0, filter: "blur(0px)" },
778
+ exit: { opacity: 0, y: -6, filter: "blur(4px)" },
779
+ transition: { duration: 0.3, ease: GLIDE },
780
+ className: "inline-flex h-9 items-center rounded-full bg-white/85 px-4 text-[14px] font-medium text-[#242423]/70 shadow-[0_1px_2px_rgba(0,0,0,0.06)] ring-1 ring-black/5 backdrop-blur-md",
781
+ children: "Scroll or drag to travel"
782
+ },
783
+ "hint"
784
+ ) : null }) }),
785
+ /* @__PURE__ */ jsx("ul", { className: "sr-only", children: items.map((it, i) => /* @__PURE__ */ jsx("li", { children: it.href ? /* @__PURE__ */ jsx("a", { href: it.href, children: it.alt }) : /* @__PURE__ */ jsx("span", { children: it.alt }) }, `${it.src}-${i}`)) })
786
+ ]
787
+ }
788
+ );
789
+ });
790
+
791
+ export {
792
+ SpatialGallery
793
+ };