move.gl 0.0.1 → 0.0.2

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 (463) hide show
  1. package/README.md +185 -11
  2. package/dist/LICENSE +21 -0
  3. package/dist/README.md +212 -0
  4. package/dist/css/move.gl.css +43859 -0
  5. package/dist/css/move.gl.min.css +19 -0
  6. package/dist/js/index.cjs +1171 -0
  7. package/dist/js/index.cjs.map +1 -0
  8. package/dist/js/index.d.cts +184 -0
  9. package/dist/js/index.d.ts +184 -0
  10. package/dist/js/index.mjs +1135 -0
  11. package/dist/js/index.mjs.map +1 -0
  12. package/dist/package.json +68 -0
  13. package/{scss → dist/scss}/classes/_animations.scss +33 -14
  14. package/dist/scss/classes/_controls.scss +314 -0
  15. package/dist/scss/classes/_effects.scss +283 -0
  16. package/dist/scss/classes/_index.scss +28 -0
  17. package/dist/scss/classes/_loaders.scss +779 -0
  18. package/dist/scss/classes/_transforms.scss +138 -0
  19. package/dist/scss/classes/_transitions.scss +264 -0
  20. package/{scss → dist/scss}/dev/_deprecation.scss +6 -3
  21. package/{scss → dist/scss}/dev/_modules.scss +5 -6
  22. package/dist/scss/docs.scss +2344 -0
  23. package/dist/scss/docs.scss.bak +3133 -0
  24. package/dist/scss/functions/_index.scss +22 -0
  25. package/dist/scss/functions/scenes/_bubble.scss +32 -0
  26. package/dist/scss/functions/scenes/_index.scss +21 -0
  27. package/dist/scss/index.scss +17 -0
  28. package/dist/scss/maps/_controls.scss +85 -0
  29. package/dist/scss/maps/_index.scss +22 -0
  30. package/{scss → dist/scss}/mixins/_accessibility.scss +24 -3
  31. package/{scss → dist/scss}/mixins/_boot.scss +4 -4
  32. package/dist/scss/mixins/_index.scss +41 -0
  33. package/dist/scss/mixins/_screensaver.scss +228 -0
  34. package/dist/scss/mixins/_shape.scss +315 -0
  35. package/dist/scss/mixins/animations/_base.scss +403 -0
  36. package/dist/scss/mixins/animations/_beat.scss +137 -0
  37. package/{scss → dist/scss}/mixins/animations/_blink.scss +60 -52
  38. package/dist/scss/mixins/animations/_bounce.scss +306 -0
  39. package/{scss → dist/scss}/mixins/animations/_elastic.scss +26 -22
  40. package/dist/scss/mixins/animations/_fade.scss +393 -0
  41. package/{scss → dist/scss}/mixins/animations/_flash.scss +53 -61
  42. package/dist/scss/mixins/animations/_flip.scss +251 -0
  43. package/{scss → dist/scss}/mixins/animations/_float.scss +47 -32
  44. package/{scss → dist/scss}/mixins/animations/_glow.scss +69 -58
  45. package/dist/scss/mixins/animations/_heartbeat.scss +195 -0
  46. package/dist/scss/mixins/animations/_hinge.scss +118 -0
  47. package/dist/scss/mixins/animations/_index.scss +97 -0
  48. package/dist/scss/mixins/animations/_jello.scss +123 -0
  49. package/dist/scss/mixins/animations/_jiggle.scss +162 -0
  50. package/dist/scss/mixins/animations/_lightspeed.scss +135 -0
  51. package/{scss → dist/scss}/mixins/animations/_nod.scss +57 -65
  52. package/dist/scss/mixins/animations/_pop.scss +153 -0
  53. package/dist/scss/mixins/animations/_pulse.scss +275 -0
  54. package/{scss → dist/scss}/mixins/animations/_ripple.scss +47 -55
  55. package/dist/scss/mixins/animations/_roll.scss +217 -0
  56. package/dist/scss/mixins/animations/_rotate.scss +728 -0
  57. package/dist/scss/mixins/animations/_rubber.scss +115 -0
  58. package/dist/scss/mixins/animations/_scale.scss +382 -0
  59. package/dist/scss/mixins/animations/_shake.scss +233 -0
  60. package/dist/scss/mixins/animations/_slide.scss +501 -0
  61. package/dist/scss/mixins/animations/_spin.scss +322 -0
  62. package/{scss → dist/scss}/mixins/animations/_sway.scss +32 -49
  63. package/{scss → dist/scss}/mixins/animations/_swing.scss +47 -49
  64. package/{scss → dist/scss}/mixins/animations/_tada.scss +44 -42
  65. package/{scss → dist/scss}/mixins/animations/_twist.scss +40 -55
  66. package/{scss → dist/scss}/mixins/animations/_wave.scss +36 -53
  67. package/dist/scss/mixins/animations/_wobble.scss +283 -0
  68. package/dist/scss/mixins/animations/_zoom.scss +394 -0
  69. package/{scss/mixins/mouse → dist/scss/mixins/controls}/_cursor.scss +60 -39
  70. package/dist/scss/mixins/controls/_hover.scss +625 -0
  71. package/dist/scss/mixins/controls/_index.scss +30 -0
  72. package/dist/scss/mixins/controls/_keyboard.scss +300 -0
  73. package/{scss/mixins/mouse → dist/scss/mixins/controls}/_pointer.scss +81 -72
  74. package/dist/scss/mixins/controls/_scroll.scss +460 -0
  75. package/{scss/mixins/scroll → dist/scss/mixins/controls}/_scrollbar.scss +50 -16
  76. package/dist/scss/mixins/controls/_selection.scss +208 -0
  77. package/dist/scss/mixins/controls/_touch.scss +401 -0
  78. package/dist/scss/mixins/effects/_blend.scss +128 -0
  79. package/dist/scss/mixins/effects/_filter.scss +470 -0
  80. package/dist/scss/mixins/effects/_focus.scss +83 -0
  81. package/dist/scss/mixins/effects/_gradient.scss +130 -0
  82. package/dist/scss/mixins/effects/_index.scss +28 -0
  83. package/dist/scss/mixins/effects/_mask.scss +76 -0
  84. package/dist/scss/mixins/effects/_opacity.scss +376 -0
  85. package/dist/scss/mixins/effects/_shadow.scss +429 -0
  86. package/dist/scss/mixins/keyframes/_base.scss +199 -0
  87. package/dist/scss/mixins/keyframes/_index.scss +24 -0
  88. package/dist/scss/mixins/keyframes/animations/_beat.scss +280 -0
  89. package/dist/scss/mixins/keyframes/animations/_blink.scss +82 -0
  90. package/dist/scss/mixins/keyframes/animations/_bounce.scss +292 -0
  91. package/dist/scss/mixins/keyframes/animations/_fade.scss +311 -0
  92. package/dist/scss/mixins/keyframes/animations/_flash.scss +165 -0
  93. package/dist/scss/mixins/keyframes/animations/_flip.scss +266 -0
  94. package/{scss/mixins → dist/scss/mixins/keyframes}/animations/_index.scss +19 -10
  95. package/dist/scss/mixins/keyframes/animations/_jiggle.scss +85 -0
  96. package/dist/scss/mixins/keyframes/animations/_lightspeed.scss +73 -0
  97. package/dist/scss/mixins/keyframes/animations/_nod.scss +79 -0
  98. package/dist/scss/mixins/keyframes/animations/_pop.scss +78 -0
  99. package/dist/scss/mixins/keyframes/animations/_pulse.scss +225 -0
  100. package/dist/scss/mixins/keyframes/animations/_ripple.scss +94 -0
  101. package/dist/scss/mixins/keyframes/animations/_roll.scss +124 -0
  102. package/dist/scss/mixins/keyframes/animations/_rotate.scss +360 -0
  103. package/dist/scss/mixins/keyframes/animations/_rubber.scss +81 -0
  104. package/dist/scss/mixins/keyframes/animations/_scale.scss +308 -0
  105. package/dist/scss/mixins/keyframes/animations/_shake.scss +270 -0
  106. package/dist/scss/mixins/keyframes/animations/_slide.scss +345 -0
  107. package/dist/scss/mixins/keyframes/animations/_spin.scss +270 -0
  108. package/dist/scss/mixins/keyframes/animations/_sway.scss +83 -0
  109. package/dist/scss/mixins/keyframes/animations/_twist.scss +89 -0
  110. package/dist/scss/mixins/keyframes/animations/_wave.scss +90 -0
  111. package/dist/scss/mixins/keyframes/animations/_wobble.scss +293 -0
  112. package/dist/scss/mixins/keyframes/animations/_zoom.scss +345 -0
  113. package/dist/scss/mixins/loaders/_bars.scss +128 -0
  114. package/dist/scss/mixins/loaders/_base.scss +39 -0
  115. package/dist/scss/mixins/loaders/_bubble.scss +395 -0
  116. package/dist/scss/mixins/loaders/_circle.scss +456 -0
  117. package/dist/scss/mixins/loaders/_dots.scss +248 -0
  118. package/dist/scss/mixins/loaders/_graph.scss +542 -0
  119. package/dist/scss/mixins/loaders/_index.scss +77 -0
  120. package/dist/scss/mixins/loaders/_line.scss +471 -0
  121. package/dist/scss/mixins/loaders/_objects.scss +563 -0
  122. package/dist/scss/mixins/loaders/_progress.scss +477 -0
  123. package/dist/scss/mixins/loaders/_rect.scss +480 -0
  124. package/dist/scss/mixins/loaders/_rings.scss +377 -0
  125. package/dist/scss/mixins/loaders/_skeleton.scss +461 -0
  126. package/dist/scss/mixins/loaders/_special.scss +611 -0
  127. package/dist/scss/mixins/loaders/_spinner.scss +175 -0
  128. package/dist/scss/mixins/loaders/_text.scss +446 -0
  129. package/{scss → dist/scss}/mixins/transforms/_flip.scss +16 -18
  130. package/dist/scss/mixins/transforms/_index.scss +28 -0
  131. package/dist/scss/mixins/transforms/_matrix.scss +18 -0
  132. package/{scss → dist/scss}/mixins/transforms/_perspective.scss +18 -1
  133. package/{scss → dist/scss}/mixins/transforms/_rotate.scss +9 -14
  134. package/{scss → dist/scss}/mixins/transforms/_scale.scss +16 -1
  135. package/{scss → dist/scss}/mixins/transforms/_skew.scss +16 -2
  136. package/{scss → dist/scss}/mixins/transforms/_translate.scss +16 -2
  137. package/dist/scss/mixins/transitions/_index.scss +22 -0
  138. package/dist/scss/mixins/transitions/_transition.scss +43 -0
  139. package/dist/scss/variables/_animations.scss +300 -0
  140. package/dist/scss/variables/_controls.scss +178 -0
  141. package/dist/scss/variables/_effects.scss +87 -0
  142. package/dist/scss/variables/_index.scss +27 -0
  143. package/dist/scss/variables/_keyframes.scss +28 -0
  144. package/dist/scss/variables/_loaders.scss +75 -0
  145. package/dist/scss/variables/_transforms.scss +85 -0
  146. package/dist/scss/variables/_transitions.scss +80 -0
  147. package/dist/ts/Draggable.ts +143 -0
  148. package/dist/ts/Gesture.ts +226 -0
  149. package/dist/ts/Keyboard.ts +195 -0
  150. package/dist/ts/LoaderManager.ts +662 -0
  151. package/dist/ts/Screensaver.ts +192 -0
  152. package/dist/ts/VideoOverlay.ts +205 -0
  153. package/dist/ts/demo.ts +1108 -0
  154. package/dist/ts/index.ts +58 -0
  155. package/package.json +90 -53
  156. package/src/html/_base.html +138 -0
  157. package/src/html/base.html +147 -0
  158. package/src/html/core-concepts.html +282 -0
  159. package/src/html/demo_base.html +171 -0
  160. package/src/html/demo_draggable.html +250 -0
  161. package/src/html/demo_gesture.html +264 -0
  162. package/src/html/demo_keyboard.html +224 -0
  163. package/src/html/demo_screensaver.html +258 -0
  164. package/src/html/demo_video_overlay.html +291 -0
  165. package/src/html/getting-started.html +242 -0
  166. package/src/html/index.html +400 -0
  167. package/src/html/keyboard.html +14 -0
  168. package/src/html/partials/_demo_links.html +21 -0
  169. package/src/html/partials/_footer.html +18 -0
  170. package/src/html/partials/_head.html +21 -0
  171. package/src/html/partials/_nav.html +84 -0
  172. package/src/html/partials/_theme_toggle.html +11 -0
  173. package/src/html/screensaver.html +20 -0
  174. package/src/html/test_animations.html +813 -0
  175. package/src/html/test_attention.html +281 -0
  176. package/src/html/test_bounce.html +201 -0
  177. package/src/html/test_effects.html +1348 -0
  178. package/src/html/test_fade.html +213 -0
  179. package/src/html/test_flip.html +208 -0
  180. package/src/html/test_keyframes.html +415 -0
  181. package/src/html/test_loaders.html +1489 -0
  182. package/src/html/test_mouse.html +516 -0
  183. package/src/html/test_overview.html +1444 -0
  184. package/src/html/test_pulse.html +212 -0
  185. package/src/html/test_scale.html +204 -0
  186. package/src/html/test_shake.html +232 -0
  187. package/src/html/test_slide.html +212 -0
  188. package/src/html/test_special.html +257 -0
  189. package/src/html/test_spin.html +216 -0
  190. package/src/html/test_transforms.html +332 -0
  191. package/src/html/test_transitions.html +245 -0
  192. package/src/html/test_zoom.html +188 -0
  193. package/src/html/video_overlay.html +27 -0
  194. package/src/jinja/_base.html.jinja +50 -0
  195. package/src/jinja/base.html.jinja +48 -0
  196. package/src/jinja/core-concepts.html.jinja +148 -0
  197. package/src/jinja/demo_draggable.html.jinja +114 -0
  198. package/src/jinja/demo_gesture.html.jinja +128 -0
  199. package/src/jinja/demo_keyboard.html.jinja +88 -0
  200. package/src/jinja/demo_screensaver.html.jinja +122 -0
  201. package/src/jinja/demo_video_overlay.html.jinja +155 -0
  202. package/src/jinja/getting-started.html.jinja +108 -0
  203. package/src/jinja/index.html.jinja +268 -0
  204. package/src/jinja/index.json +5 -0
  205. package/src/jinja/move.gl.css +7741 -0
  206. package/src/jinja/partials/_code_block.html.jinja +17 -0
  207. package/src/jinja/partials/_demo_links.html.jinja +41 -0
  208. package/src/jinja/partials/_feature_card.html.jinja +20 -0
  209. package/src/jinja/partials/_footer.html.jinja +22 -0
  210. package/src/jinja/partials/_head.html.jinja +27 -0
  211. package/src/jinja/partials/_nav.html.jinja +79 -0
  212. package/src/jinja/partials/_theme_toggle.html.jinja +15 -0
  213. package/src/jinja/test_animations.html.jinja +679 -0
  214. package/src/jinja/test_attention.html.jinja +147 -0
  215. package/src/jinja/test_bounce.html.jinja +67 -0
  216. package/src/jinja/test_effects.html.jinja +1218 -0
  217. package/src/jinja/test_fade.html.jinja +79 -0
  218. package/src/jinja/test_flip.html.jinja +74 -0
  219. package/src/jinja/test_keyframes.html.jinja +281 -0
  220. package/src/jinja/test_loaders.html.jinja +1358 -0
  221. package/src/jinja/test_mouse.html.jinja +382 -0
  222. package/src/jinja/test_overview.html.jinja +1313 -0
  223. package/src/jinja/test_pulse.html.jinja +78 -0
  224. package/src/jinja/test_scale.html.jinja +70 -0
  225. package/src/jinja/test_shake.html.jinja +98 -0
  226. package/src/jinja/test_slide.html.jinja +78 -0
  227. package/src/jinja/test_special.html.jinja +123 -0
  228. package/src/jinja/test_spin.html.jinja +82 -0
  229. package/src/jinja/test_transforms.html.jinja +198 -0
  230. package/src/jinja/test_transitions.html.jinja +111 -0
  231. package/src/jinja/test_zoom.html.jinja +54 -0
  232. package/src/scss/classes/_animations.scss +595 -0
  233. package/src/scss/classes/_controls.scss +314 -0
  234. package/src/scss/classes/_effects.scss +283 -0
  235. package/src/scss/classes/_index.scss +28 -0
  236. package/src/scss/classes/_loaders.scss +779 -0
  237. package/src/scss/classes/_transforms.scss +138 -0
  238. package/src/scss/classes/_transitions.scss +264 -0
  239. package/src/scss/dev/_banner.scss +36 -0
  240. package/src/scss/dev/_debug.scss +18 -0
  241. package/src/scss/dev/_deprecation.scss +13 -0
  242. package/src/scss/dev/_index.scss +8 -0
  243. package/src/scss/dev/_modules.scss +23 -0
  244. package/src/scss/docs.scss +2344 -0
  245. package/src/scss/docs.scss.bak +3133 -0
  246. package/src/scss/functions/_index.scss +22 -0
  247. package/src/scss/functions/scenes/_bubble.scss +32 -0
  248. package/src/scss/functions/scenes/_index.scss +21 -0
  249. package/src/scss/index.scss +17 -0
  250. package/src/scss/maps/_controls.scss +85 -0
  251. package/src/scss/maps/_index.scss +22 -0
  252. package/src/scss/mixins/_accessibility.scss +91 -0
  253. package/src/scss/mixins/_boot.scss +51 -0
  254. package/src/scss/mixins/_index.scss +41 -0
  255. package/src/scss/mixins/_screensaver.scss +228 -0
  256. package/src/scss/mixins/_shape.scss +315 -0
  257. package/src/scss/mixins/animations/_base.scss +403 -0
  258. package/src/scss/mixins/animations/_beat.scss +137 -0
  259. package/src/scss/mixins/animations/_blink.scss +159 -0
  260. package/src/scss/mixins/animations/_bounce.scss +306 -0
  261. package/src/scss/mixins/animations/_elastic.scss +69 -0
  262. package/src/scss/mixins/animations/_fade.scss +393 -0
  263. package/src/scss/mixins/animations/_flash.scss +169 -0
  264. package/src/scss/mixins/animations/_flip.scss +251 -0
  265. package/src/scss/mixins/animations/_float.scss +141 -0
  266. package/src/scss/mixins/animations/_glow.scss +190 -0
  267. package/src/scss/mixins/animations/_heartbeat.scss +195 -0
  268. package/src/scss/mixins/animations/_hinge.scss +118 -0
  269. package/src/scss/mixins/animations/_index.scss +97 -0
  270. package/src/scss/mixins/animations/_jello.scss +123 -0
  271. package/src/scss/mixins/animations/_jiggle.scss +162 -0
  272. package/src/scss/mixins/animations/_lightspeed.scss +135 -0
  273. package/src/scss/mixins/animations/_nod.scss +153 -0
  274. package/src/scss/mixins/animations/_pop.scss +153 -0
  275. package/src/scss/mixins/animations/_pulse.scss +275 -0
  276. package/src/scss/mixins/animations/_ripple.scss +161 -0
  277. package/src/scss/mixins/animations/_roll.scss +217 -0
  278. package/src/scss/mixins/animations/_rotate.scss +728 -0
  279. package/src/scss/mixins/animations/_rubber.scss +115 -0
  280. package/src/scss/mixins/animations/_scale.scss +382 -0
  281. package/src/scss/mixins/animations/_shake.scss +233 -0
  282. package/src/scss/mixins/animations/_slide.scss +501 -0
  283. package/src/scss/mixins/animations/_spin.scss +322 -0
  284. package/src/scss/mixins/animations/_sway.scss +150 -0
  285. package/src/scss/mixins/animations/_swing.scss +245 -0
  286. package/src/scss/mixins/animations/_tada.scss +235 -0
  287. package/src/scss/mixins/animations/_twist.scss +162 -0
  288. package/src/scss/mixins/animations/_wave.scss +149 -0
  289. package/src/scss/mixins/animations/_wobble.scss +283 -0
  290. package/src/scss/mixins/animations/_zoom.scss +394 -0
  291. package/src/scss/mixins/controls/_cursor.scss +203 -0
  292. package/src/scss/mixins/controls/_hover.scss +625 -0
  293. package/src/scss/mixins/controls/_index.scss +30 -0
  294. package/src/scss/mixins/controls/_keyboard.scss +300 -0
  295. package/src/scss/mixins/controls/_pointer.scss +267 -0
  296. package/src/scss/mixins/controls/_scroll.scss +460 -0
  297. package/src/scss/mixins/controls/_scrollbar.scss +283 -0
  298. package/src/scss/mixins/controls/_selection.scss +208 -0
  299. package/src/scss/mixins/controls/_touch.scss +401 -0
  300. package/src/scss/mixins/effects/_blend.scss +128 -0
  301. package/src/scss/mixins/effects/_filter.scss +470 -0
  302. package/src/scss/mixins/effects/_focus.scss +83 -0
  303. package/src/scss/mixins/effects/_gradient.scss +130 -0
  304. package/src/scss/mixins/effects/_index.scss +28 -0
  305. package/src/scss/mixins/effects/_mask.scss +76 -0
  306. package/src/scss/mixins/effects/_opacity.scss +376 -0
  307. package/src/scss/mixins/effects/_shadow.scss +429 -0
  308. package/src/scss/mixins/keyframes/_base.scss +199 -0
  309. package/src/scss/mixins/keyframes/_index.scss +24 -0
  310. package/src/scss/mixins/keyframes/animations/_beat.scss +280 -0
  311. package/src/scss/mixins/keyframes/animations/_blink.scss +82 -0
  312. package/src/scss/mixins/keyframes/animations/_bounce.scss +292 -0
  313. package/src/scss/mixins/keyframes/animations/_fade.scss +311 -0
  314. package/src/scss/mixins/keyframes/animations/_flash.scss +165 -0
  315. package/src/scss/mixins/keyframes/animations/_flip.scss +266 -0
  316. package/src/scss/mixins/keyframes/animations/_index.scss +46 -0
  317. package/src/scss/mixins/keyframes/animations/_jiggle.scss +85 -0
  318. package/src/scss/mixins/keyframes/animations/_lightspeed.scss +73 -0
  319. package/src/scss/mixins/keyframes/animations/_nod.scss +79 -0
  320. package/src/scss/mixins/keyframes/animations/_pop.scss +78 -0
  321. package/src/scss/mixins/keyframes/animations/_pulse.scss +225 -0
  322. package/src/scss/mixins/keyframes/animations/_ripple.scss +94 -0
  323. package/src/scss/mixins/keyframes/animations/_roll.scss +124 -0
  324. package/src/scss/mixins/keyframes/animations/_rotate.scss +360 -0
  325. package/src/scss/mixins/keyframes/animations/_rubber.scss +81 -0
  326. package/src/scss/mixins/keyframes/animations/_scale.scss +308 -0
  327. package/src/scss/mixins/keyframes/animations/_shake.scss +270 -0
  328. package/src/scss/mixins/keyframes/animations/_slide.scss +345 -0
  329. package/src/scss/mixins/keyframes/animations/_spin.scss +270 -0
  330. package/src/scss/mixins/keyframes/animations/_sway.scss +83 -0
  331. package/src/scss/mixins/keyframes/animations/_twist.scss +89 -0
  332. package/src/scss/mixins/keyframes/animations/_wave.scss +90 -0
  333. package/src/scss/mixins/keyframes/animations/_wobble.scss +293 -0
  334. package/src/scss/mixins/keyframes/animations/_zoom.scss +345 -0
  335. package/src/scss/mixins/loaders/_bars.scss +128 -0
  336. package/src/scss/mixins/loaders/_base.scss +39 -0
  337. package/src/scss/mixins/loaders/_bubble.scss +395 -0
  338. package/src/scss/mixins/loaders/_circle.scss +456 -0
  339. package/src/scss/mixins/loaders/_dots.scss +248 -0
  340. package/src/scss/mixins/loaders/_graph.scss +542 -0
  341. package/src/scss/mixins/loaders/_index.scss +77 -0
  342. package/src/scss/mixins/loaders/_line.scss +471 -0
  343. package/src/scss/mixins/loaders/_objects.scss +563 -0
  344. package/src/scss/mixins/loaders/_progress.scss +477 -0
  345. package/src/scss/mixins/loaders/_rect.scss +480 -0
  346. package/src/scss/mixins/loaders/_rings.scss +377 -0
  347. package/src/scss/mixins/loaders/_skeleton.scss +461 -0
  348. package/src/scss/mixins/loaders/_special.scss +611 -0
  349. package/src/scss/mixins/loaders/_spinner.scss +175 -0
  350. package/src/scss/mixins/loaders/_text.scss +446 -0
  351. package/src/scss/mixins/transforms/_flip.scss +74 -0
  352. package/src/scss/mixins/transforms/_index.scss +28 -0
  353. package/src/scss/mixins/transforms/_matrix.scss +18 -0
  354. package/src/scss/mixins/transforms/_perspective.scss +28 -0
  355. package/src/scss/mixins/transforms/_rotate.scss +96 -0
  356. package/src/scss/mixins/transforms/_scale.scss +26 -0
  357. package/src/scss/mixins/transforms/_skew.scss +27 -0
  358. package/src/scss/mixins/transforms/_translate.scss +27 -0
  359. package/src/scss/mixins/transitions/_index.scss +22 -0
  360. package/src/scss/mixins/transitions/_transition.scss +43 -0
  361. package/src/scss/variables/_animations.scss +300 -0
  362. package/src/scss/variables/_controls.scss +178 -0
  363. package/src/scss/variables/_effects.scss +87 -0
  364. package/src/scss/variables/_index.scss +27 -0
  365. package/src/scss/variables/_keyframes.scss +28 -0
  366. package/src/scss/variables/_loaders.scss +75 -0
  367. package/src/scss/variables/_transforms.scss +85 -0
  368. package/src/scss/variables/_transitions.scss +80 -0
  369. package/src/ts/Draggable.ts +143 -0
  370. package/src/ts/Gesture.ts +226 -0
  371. package/src/ts/Keyboard.ts +195 -0
  372. package/src/ts/LoaderManager.ts +662 -0
  373. package/src/ts/Screensaver.ts +192 -0
  374. package/src/ts/VideoOverlay.ts +205 -0
  375. package/src/ts/demo.ts +1108 -0
  376. package/src/ts/index.ts +58 -0
  377. package/css/move.gl.css +0 -2
  378. package/css/move.gl.min.css +0 -2
  379. package/scss/classes/_transforms.scss +0 -124
  380. package/scss/classes/keyboard.scss +0 -18
  381. package/scss/classes/screensaver.scss +0 -15
  382. package/scss/effects/_filter.scss +0 -176
  383. package/scss/effects/_index.scss +0 -23
  384. package/scss/effects/_opacity.scss +0 -62
  385. package/scss/effects/_shadow.scss +0 -175
  386. package/scss/functions/scenes/_bubble.scss +0 -19
  387. package/scss/functions/scenes/_index.scss +0 -20
  388. package/scss/index.scss +0 -0
  389. package/scss/keyframes/_beat.scss +0 -26
  390. package/scss/keyframes/_index.scss +0 -0
  391. package/scss/maps/_index.scss +0 -0
  392. package/scss/maps/_mouse.scss +0 -96
  393. package/scss/mixins/_hover.scss +0 -51
  394. package/scss/mixins/_index.scss +0 -0
  395. package/scss/mixins/_selection.scss +0 -321
  396. package/scss/mixins/_shape.scss +0 -44
  397. package/scss/mixins/_touch.scss +0 -95
  398. package/scss/mixins/animations/--hover.scss +0 -107
  399. package/scss/mixins/animations/_base.scss +0 -337
  400. package/scss/mixins/animations/_beat.scss +0 -119
  401. package/scss/mixins/animations/_bounce.scss +0 -192
  402. package/scss/mixins/animations/_fade.scss +0 -154
  403. package/scss/mixins/animations/_flip.scss +0 -72
  404. package/scss/mixins/animations/_heartbeat.scss +0 -175
  405. package/scss/mixins/animations/_hinge.scss +0 -119
  406. package/scss/mixins/animations/_jello.scss +0 -129
  407. package/scss/mixins/animations/_jiggle.scss +0 -163
  408. package/scss/mixins/animations/_lightspeed.scss +0 -130
  409. package/scss/mixins/animations/_pop.scss +0 -150
  410. package/scss/mixins/animations/_pulse.scss +0 -213
  411. package/scss/mixins/animations/_roll.scss +0 -261
  412. package/scss/mixins/animations/_rotate.scss +0 -428
  413. package/scss/mixins/animations/_rubber.scss +0 -116
  414. package/scss/mixins/animations/_scale.scss +0 -113
  415. package/scss/mixins/animations/_shake.scss +0 -182
  416. package/scss/mixins/animations/_slide.scss +0 -294
  417. package/scss/mixins/animations/_spin.scss +0 -219
  418. package/scss/mixins/animations/_wobble.scss +0 -254
  419. package/scss/mixins/animations/_zoom.scss +0 -166
  420. package/scss/mixins/effects/_filter.scss +0 -148
  421. package/scss/mixins/effects/_index.scss +0 -0
  422. package/scss/mixins/effects/_shadow.scss +0 -21
  423. package/scss/mixins/loaders/_index.scss +0 -0
  424. package/scss/mixins/loaders/_progress.scss +0 -174
  425. package/scss/mixins/loaders/_spinner.scss +0 -101
  426. package/scss/mixins/loaders/circle_01.scss +0 -22
  427. package/scss/mixins/loaders/circle_02.scss +0 -19
  428. package/scss/mixins/loaders/circle_03.scss +0 -29
  429. package/scss/mixins/loaders/circle_inner_01.scss +0 -33
  430. package/scss/mixins/loaders/circle_inner_02.scss +0 -33
  431. package/scss/mixins/loaders/circle_inner_03.scss +0 -34
  432. package/scss/mixins/mouse/_index.scss +0 -0
  433. package/scss/mixins/scroll/_index.scss +0 -0
  434. package/scss/mixins/scroll/_scroll.scss +0 -104
  435. package/scss/mixins/transforms/_index.scss +0 -23
  436. package/scss/mixins/transforms/_matrix.scss +0 -1
  437. package/scss/mixins/transitions/_index.scss +0 -0
  438. package/scss/mixins/transitions/_transition.scss +0 -13
  439. package/scss/variables/_animation.scss +0 -91
  440. package/scss/variables/_index.scss +0 -0
  441. package/ts/ARContent.ts +0 -27
  442. package/ts/ARInteraction.ts +0 -34
  443. package/ts/AdaptiveUI.ts +0 -25
  444. package/ts/ContentStreaming.ts +0 -20
  445. package/ts/Draggable.ts +0 -71
  446. package/ts/DynamicEnvironment.ts +0 -60
  447. package/ts/Gesture.ts +0 -168
  448. package/ts/ImmersiveAudio.ts +0 -40
  449. package/ts/InteractiveCanvas.ts +0 -177
  450. package/ts/InteractiveVideo.ts +0 -29
  451. package/ts/Keyboard.ts +0 -162
  452. package/ts/RealTimeCollaboration.ts +0 -25
  453. package/ts/Screensaver.ts +0 -140
  454. package/ts/SpatialNavigation.ts +0 -38
  455. package/ts/UserProfile.ts +0 -27
  456. package/ts/VRExperience.ts +0 -58
  457. package/ts/VideoOverlay.ts +0 -116
  458. package/ts/index.ts +0 -0
  459. /package/{scss → dist/scss}/dev/_banner.scss +0 -0
  460. /package/{scss → dist/scss}/dev/_debug.scss +0 -0
  461. /package/{scss → dist/scss}/dev/_index.scss +0 -0
  462. /package/{scss/classes/_index.scss → src/html/partials/_code_block.html} +0 -0
  463. /package/{scss/functions/_index.scss → src/html/partials/_feature_card.html} +0 -0
@@ -0,0 +1,542 @@
1
+ // ============================================================================
2
+ // move.gl | Graphic/Icon Loader Mixins
3
+ // ============================================================================
4
+ // Copyright 2025 Scape Agency BV
5
+ // Licensed under MIT License
6
+ // ============================================================================
7
+
8
+ ////
9
+ /// Graphic/Icon Loader Mixins
10
+ /// ===========================================================================
11
+ ///
12
+ /// This module provides mixins for graphic/icon-based loading animations
13
+ /// including clipboard, book, pencil, and other visual loaders.
14
+ ///
15
+ /// @group Loaders
16
+ /// @author Scape Agency
17
+ /// @link https://move.gl
18
+ /// @since 0.1.0
19
+ /// @access public
20
+ ////
21
+
22
+ @use "../../variables" as *;
23
+
24
+
25
+ // ============================================================================
26
+ // Keyframes
27
+ // ============================================================================
28
+
29
+ ///
30
+ /// Write down animation keyframes.
31
+ ///
32
+ @mixin keyframes_write_down {
33
+ @keyframes write-down {
34
+ 0% { height: 0%; opacity: 0; }
35
+ 20% { height: 0%; opacity: 1; }
36
+ 80% { height: 65%; opacity: 1; }
37
+ 100% { height: 65%; opacity: 0; }
38
+ }
39
+ }
40
+
41
+ ///
42
+ /// Book page turn animation keyframes.
43
+ ///
44
+ @mixin keyframes_page_turn {
45
+ @keyframes page-turn {
46
+ 0%, 100% { transform: rotateY(0deg); }
47
+ 50% { transform: rotateY(-180deg); }
48
+ }
49
+ }
50
+
51
+ ///
52
+ /// Pencil write animation keyframes.
53
+ ///
54
+ @mixin keyframes_pencil_write {
55
+ @keyframes pencil-write {
56
+ 0% { transform: translate(0, 0) rotate(-45deg); }
57
+ 25% { transform: translate(10px, 0) rotate(-45deg); }
58
+ 50% { transform: translate(20px, 0) rotate(-45deg); }
59
+ 75% { transform: translate(10px, 0) rotate(-45deg); }
60
+ 100% { transform: translate(0, 0) rotate(-45deg); }
61
+ }
62
+ }
63
+
64
+ ///
65
+ /// Checkmark draw animation keyframes.
66
+ ///
67
+ @mixin keyframes_checkmark {
68
+ @keyframes checkmark {
69
+ 0% { stroke-dashoffset: 100; }
70
+ 100% { stroke-dashoffset: 0; }
71
+ }
72
+ }
73
+
74
+ ///
75
+ /// Hourglass flip animation keyframes.
76
+ ///
77
+ @mixin keyframes_hourglass_flip {
78
+ @keyframes hourglass-flip {
79
+ 0% { transform: rotate(0deg); }
80
+ 50% { transform: rotate(180deg); }
81
+ 100% { transform: rotate(180deg); }
82
+ }
83
+ }
84
+
85
+ ///
86
+ /// Sand fall animation keyframes.
87
+ ///
88
+ @mixin keyframes_sand_fall {
89
+ @keyframes sand-fall {
90
+ 0% { clip-path: polygon(0 0, 100% 0, 100% 0%, 50% 50%, 0 0%); }
91
+ 50% { clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 50%, 0 100%); }
92
+ 100% { clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 50%, 0 100%); }
93
+ }
94
+ }
95
+
96
+ ///
97
+ /// Clock hand rotation animation keyframes.
98
+ ///
99
+ @mixin keyframes_clock_rotate {
100
+ @keyframes clock-rotate {
101
+ 0% { transform: rotate(0deg); }
102
+ 100% { transform: rotate(360deg); }
103
+ }
104
+ }
105
+
106
+
107
+ // ============================================================================
108
+ // Graphic Loader Mixins
109
+ // ============================================================================
110
+
111
+ ///
112
+ /// Clipboard writing loader.
113
+ ///
114
+ /// @param {Length} $width [100px] - Clipboard width.
115
+ /// @param {Length} $height [130px] - Clipboard height.
116
+ /// @param {Color} $bg-color [#FFF] - Clipboard background.
117
+ /// @param {Color} $clip-color [#FF3D00] - Clip color.
118
+ /// @param {Color} $line-color [rgba(255,255,255,0.3)] - Line color.
119
+ /// @param {Time} $duration [2s] - Animation duration.
120
+ ///
121
+ @mixin loader_clipboard(
122
+ $width: 100px,
123
+ $height: 130px,
124
+ $bg-color: $loader-color,
125
+ $clip-color: $loader-accent,
126
+ $line-color: rgba(0, 0, 0, 0.3),
127
+ $duration: 2s
128
+ ) {
129
+ position: relative;
130
+ width: $width;
131
+ height: $height;
132
+ background: var(--loader-bg, $bg-color);
133
+ border-radius: 4px;
134
+
135
+ &::before {
136
+ content: '';
137
+ position: absolute;
138
+ width: 54%;
139
+ height: 20%;
140
+ left: 50%;
141
+ top: 0;
142
+ background-image:
143
+ radial-gradient(ellipse at center, transparent 24%, var(--loader-accent, $clip-color) 25%, var(--loader-accent, $clip-color) 64%, transparent 65%),
144
+ linear-gradient(to bottom, transparent 34%, var(--loader-accent, $clip-color) 35%);
145
+ background-size: 12px 12px, 100% auto;
146
+ background-repeat: no-repeat;
147
+ background-position: center top;
148
+ transform: translate(-50%, -65%);
149
+ box-shadow: 0 -3px rgba(0, 0, 0, 0.25) inset;
150
+ }
151
+
152
+ &::after {
153
+ content: '';
154
+ position: absolute;
155
+ left: 50%;
156
+ top: 20%;
157
+ transform: translateX(-50%);
158
+ width: 66%;
159
+ height: 60%;
160
+ background: linear-gradient(to bottom, var(--loader-line, $line-color) 30%, transparent 31%);
161
+ background-size: 100% 16px;
162
+ animation: write-down $duration ease-out infinite;
163
+ }
164
+ }
165
+
166
+ ///
167
+ /// Book page flip loader.
168
+ ///
169
+ /// @param {Length} $width [200px] - Book width.
170
+ /// @param {Length} $height [140px] - Book height.
171
+ /// @param {Color} $cover-color [#979794] - Book cover color.
172
+ /// @param {Color} $page-color [#F5F5F5] - Page color.
173
+ /// @param {Color} $line-color [#DDD] - Line color.
174
+ /// @param {Time} $duration [2s] - Animation duration.
175
+ ///
176
+ @mixin loader_book(
177
+ $width: 200px,
178
+ $height: 140px,
179
+ $cover-color: #979794,
180
+ $page-color: #F5F5F5,
181
+ $line-color: #DDD,
182
+ $duration: 2s
183
+ ) {
184
+ width: $width;
185
+ height: $height;
186
+ background: var(--loader-cover, $cover-color);
187
+ box-sizing: border-box;
188
+ position: relative;
189
+ border-radius: 8px;
190
+ perspective: 1000px;
191
+
192
+ &::before {
193
+ content: '';
194
+ position: absolute;
195
+ left: 10px;
196
+ right: 10px;
197
+ top: 10px;
198
+ bottom: 10px;
199
+ border-radius: 8px;
200
+ background: var(--loader-page, $page-color) no-repeat;
201
+ background-size: 60px 10px;
202
+ background-image:
203
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
204
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
205
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
206
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
207
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
208
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0);
209
+ background-position: 15px 30px, 15px 60px, 15px 90px, 105px 30px, 105px 60px, 105px 90px;
210
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.25);
211
+ }
212
+
213
+ &::after {
214
+ content: '';
215
+ position: absolute;
216
+ width: calc(50% - 10px);
217
+ right: 10px;
218
+ top: 10px;
219
+ bottom: 10px;
220
+ border-radius: 8px;
221
+ background: var(--loader-page, #FFF) no-repeat;
222
+ background-size: 60px 10px;
223
+ background-image:
224
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
225
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0),
226
+ linear-gradient(var(--loader-line, $line-color) 100px, transparent 0);
227
+ background-position: 50% 30px, 50% 60px, 50% 90px;
228
+ transform: rotateY(0deg);
229
+ transform-origin: left center;
230
+ animation: page-turn $duration ease-in-out infinite;
231
+ }
232
+ }
233
+
234
+ ///
235
+ /// Hourglass loader.
236
+ ///
237
+ /// @param {Length} $size [48px] - Hourglass size.
238
+ /// @param {Color} $frame-color [#FFF] - Frame color.
239
+ /// @param {Color} $sand-color [#FF3D00] - Sand color.
240
+ /// @param {Time} $duration [2s] - Animation duration.
241
+ ///
242
+ @mixin loader_hourglass(
243
+ $size: 48px,
244
+ $frame-color: $loader-color,
245
+ $sand-color: $loader-accent,
246
+ $duration: 2s
247
+ ) {
248
+ width: $size;
249
+ height: calc($size * 1.5);
250
+ position: relative;
251
+ animation: hourglass-flip $duration ease-in-out infinite;
252
+
253
+ &::before,
254
+ &::after {
255
+ content: '';
256
+ position: absolute;
257
+ left: 0;
258
+ right: 0;
259
+ border: 3px solid var(--loader-frame, $frame-color);
260
+ }
261
+
262
+ &::before {
263
+ top: 0;
264
+ height: 45%;
265
+ border-radius: $size $size 0 0;
266
+ background: var(--loader-sand, $sand-color);
267
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 50%, 0 100%);
268
+ animation: sand-fall $duration ease-in-out infinite;
269
+ }
270
+
271
+ &::after {
272
+ bottom: 0;
273
+ height: 45%;
274
+ border-radius: 0 0 $size $size;
275
+ background: var(--loader-sand, $sand-color);
276
+ clip-path: polygon(50% 0, 100% 100%, 0 100%);
277
+ }
278
+ }
279
+
280
+ ///
281
+ /// Clock loader.
282
+ ///
283
+ /// @param {Length} $size [48px] - Clock size.
284
+ /// @param {Color} $face-color [rgba(255,255,255,0.1)] - Clock face color.
285
+ /// @param {Color} $frame-color [#FFF] - Frame/hand color.
286
+ /// @param {Length} $stroke [3px] - Border width.
287
+ /// @param {Time} $duration [2s] - Full rotation duration.
288
+ ///
289
+ @mixin loader_clock(
290
+ $size: 48px,
291
+ $face-color: rgba(255, 255, 255, 0.1),
292
+ $frame-color: $loader-color,
293
+ $stroke: 3px,
294
+ $duration: 2s
295
+ ) {
296
+ width: $size;
297
+ height: $size;
298
+ border: $stroke solid var(--loader-frame, $frame-color);
299
+ border-radius: 50%;
300
+ background: var(--loader-face, $face-color);
301
+ position: relative;
302
+
303
+ &::before,
304
+ &::after {
305
+ content: '';
306
+ position: absolute;
307
+ background: var(--loader-frame, $frame-color);
308
+ left: 50%;
309
+ top: 50%;
310
+ transform-origin: center bottom;
311
+ }
312
+
313
+ &::before {
314
+ width: 2px;
315
+ height: 35%;
316
+ margin-left: -1px;
317
+ margin-top: -35%;
318
+ animation: clock-rotate $duration linear infinite;
319
+ }
320
+
321
+ &::after {
322
+ width: 2px;
323
+ height: 25%;
324
+ margin-left: -1px;
325
+ margin-top: -25%;
326
+ animation: clock-rotate calc($duration * 12) linear infinite;
327
+ }
328
+ }
329
+
330
+ ///
331
+ /// Document loader with lines.
332
+ ///
333
+ /// @param {Length} $width [60px] - Document width.
334
+ /// @param {Length} $height [80px] - Document height.
335
+ /// @param {Color} $bg-color [#FFF] - Document background.
336
+ /// @param {Color} $line-color [#DDD] - Line color.
337
+ /// @param {Number} $border-radius [4px] - Border radius.
338
+ /// @param {Time} $duration [1.5s] - Animation duration.
339
+ ///
340
+ @mixin loader_document(
341
+ $width: 60px,
342
+ $height: 80px,
343
+ $bg-color: $loader-color,
344
+ $line-color: #DDD,
345
+ $border-radius: 4px,
346
+ $duration: 1.5s
347
+ ) {
348
+ width: $width;
349
+ height: $height;
350
+ background: var(--loader-bg, $bg-color);
351
+ border-radius: $border-radius;
352
+ position: relative;
353
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
354
+
355
+ &::before {
356
+ content: '';
357
+ position: absolute;
358
+ top: 20%;
359
+ left: 15%;
360
+ right: 15%;
361
+ height: 50%;
362
+ background:
363
+ repeating-linear-gradient(
364
+ to bottom,
365
+ var(--loader-line, $line-color) 0,
366
+ var(--loader-line, $line-color) 4px,
367
+ transparent 4px,
368
+ transparent 12px
369
+ );
370
+ animation: skeleton-pulse $duration ease-in-out infinite;
371
+ }
372
+
373
+ &::after {
374
+ content: '';
375
+ position: absolute;
376
+ top: 0;
377
+ right: 0;
378
+ width: 0;
379
+ height: 0;
380
+ border-left: 12px solid var(--loader-bg, $bg-color);
381
+ border-bottom: 12px solid rgba(0, 0, 0, 0.1);
382
+ border-right: 12px solid rgba(0, 0, 0, 0.1);
383
+ border-top: 12px solid transparent;
384
+ }
385
+ }
386
+
387
+ ///
388
+ /// Envelope loader.
389
+ ///
390
+ /// @param {Length} $width [60px] - Envelope width.
391
+ /// @param {Length} $height [40px] - Envelope height.
392
+ /// @param {Color} $bg-color [#FFF] - Envelope color.
393
+ /// @param {Color} $flap-color [#DDD] - Flap color.
394
+ /// @param {Time} $duration [2s] - Animation duration.
395
+ ///
396
+ @mixin loader_envelope(
397
+ $width: 60px,
398
+ $height: 40px,
399
+ $bg-color: $loader-color,
400
+ $flap-color: #DDD,
401
+ $duration: 2s
402
+ ) {
403
+ width: $width;
404
+ height: $height;
405
+ background: var(--loader-bg, $bg-color);
406
+ position: relative;
407
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
408
+
409
+ &::before {
410
+ content: '';
411
+ position: absolute;
412
+ top: 0;
413
+ left: 0;
414
+ right: 0;
415
+ height: 0;
416
+ border-left: calc($width / 2) solid transparent;
417
+ border-right: calc($width / 2) solid transparent;
418
+ border-top: calc($height * 0.6) solid var(--loader-flap, $flap-color);
419
+ transform-origin: top center;
420
+ animation: envelope-open $duration ease-in-out infinite;
421
+ }
422
+
423
+ &::after {
424
+ content: '';
425
+ position: absolute;
426
+ top: 30%;
427
+ left: 15%;
428
+ right: 15%;
429
+ height: 8px;
430
+ background: linear-gradient(
431
+ to bottom,
432
+ rgba(0, 0, 0, 0.1) 0,
433
+ rgba(0, 0, 0, 0.1) 2px,
434
+ transparent 2px,
435
+ transparent 4px,
436
+ rgba(0, 0, 0, 0.1) 4px,
437
+ rgba(0, 0, 0, 0.1) 6px,
438
+ transparent 6px
439
+ );
440
+ }
441
+ }
442
+
443
+ ///
444
+ /// Envelope open animation.
445
+ ///
446
+ @mixin keyframes_envelope_open {
447
+ @keyframes envelope-open {
448
+ 0%, 100% { transform: rotateX(0deg); }
449
+ 50% { transform: rotateX(-180deg); }
450
+ }
451
+ }
452
+
453
+ ///
454
+ /// Search/magnifying glass loader.
455
+ ///
456
+ /// @param {Length} $size [32px] - Glass size.
457
+ /// @param {Color} $color [#FFF] - Color.
458
+ /// @param {Length} $stroke [4px] - Border width.
459
+ /// @param {Time} $duration [1s] - Animation duration.
460
+ ///
461
+ @mixin loader_search(
462
+ $size: 32px,
463
+ $color: $loader-color,
464
+ $stroke: 4px,
465
+ $duration: $loader-speed
466
+ ) {
467
+ width: $size;
468
+ height: $size;
469
+ border: $stroke solid var(--loader-color, $color);
470
+ border-radius: 50%;
471
+ position: relative;
472
+
473
+ &::after {
474
+ content: '';
475
+ position: absolute;
476
+ width: $stroke;
477
+ height: calc($size * 0.5);
478
+ background: var(--loader-color, $color);
479
+ right: calc(#{-$stroke} / 2);
480
+ bottom: calc(#{-$size} * 0.35);
481
+ transform: rotate(-45deg);
482
+ transform-origin: top center;
483
+ }
484
+
485
+ animation: search-wobble $duration ease-in-out infinite;
486
+ }
487
+
488
+ ///
489
+ /// Search wobble animation.
490
+ ///
491
+ @mixin keyframes_search_wobble {
492
+ @keyframes search-wobble {
493
+ 0%, 100% { transform: rotate(-15deg); }
494
+ 50% { transform: rotate(15deg); }
495
+ }
496
+ }
497
+
498
+ ///
499
+ /// Gear/cog loader.
500
+ ///
501
+ /// @param {Length} $size [48px] - Gear size.
502
+ /// @param {Color} $color [#FFF] - Gear color.
503
+ /// @param {Number} $teeth [8] - Number of teeth.
504
+ /// @param {Time} $duration [2s] - Animation duration.
505
+ ///
506
+ @mixin loader_gear(
507
+ $size: 48px,
508
+ $color: $loader-color,
509
+ $teeth: 8,
510
+ $duration: 2s
511
+ ) {
512
+ width: $size;
513
+ height: $size;
514
+ position: relative;
515
+ animation: gear-rotate $duration linear infinite;
516
+
517
+ &::before {
518
+ content: '';
519
+ position: absolute;
520
+ inset: 25%;
521
+ background: var(--loader-color, $color);
522
+ border-radius: 50%;
523
+ }
524
+
525
+ &::after {
526
+ content: '';
527
+ position: absolute;
528
+ inset: 35%;
529
+ background: currentColor;
530
+ border-radius: 50%;
531
+ }
532
+ }
533
+
534
+ ///
535
+ /// Gear rotation animation.
536
+ ///
537
+ @mixin keyframes_gear_rotate {
538
+ @keyframes gear-rotate {
539
+ 0% { transform: rotate(0deg); }
540
+ 100% { transform: rotate(360deg); }
541
+ }
542
+ }
@@ -0,0 +1,77 @@
1
+ // ============================================================================
2
+ // move.gl | Loaders Mixin Index
3
+ // ============================================================================
4
+ // Copyright 2025 Scape Agency BV
5
+ // Licensed under MIT License
6
+ // ============================================================================
7
+
8
+ ////
9
+ /// Loaders Mixin Module
10
+ /// ===========================================================================
11
+ ///
12
+ /// This module provides loading animation mixins for spinners and progress.
13
+ ///
14
+ /// @group Loaders
15
+ /// @author Scape Agency
16
+ /// @link https://move.gl
17
+ /// @since 0.1.0 initial release
18
+ /// @access public
19
+ ////
20
+
21
+
22
+ // ============================================================================
23
+ // Use
24
+ // ============================================================================
25
+
26
+ @use "../../variables" as *;
27
+
28
+
29
+ // ============================================================================
30
+ // Base loader mixin
31
+ // ============================================================================
32
+
33
+ @forward "base";
34
+
35
+
36
+ // ============================================================================
37
+ // Legacy loaders
38
+ // ============================================================================
39
+
40
+ @forward "spinner";
41
+ @forward "progress";
42
+
43
+
44
+ // ============================================================================
45
+ // Animation-based loaders
46
+ // ============================================================================
47
+
48
+ @forward "dots";
49
+ @forward "bars";
50
+ @forward "rings" hide loader_hourglass;
51
+ @forward "special" hide loader_clock, loader_gear, loader_pendulum, loader_dna, loader_infinity;
52
+
53
+
54
+ // ============================================================================
55
+ // Shape-based loaders
56
+ // ============================================================================
57
+
58
+ @forward "bubble";
59
+ @forward "circle";
60
+ @forward "rect";
61
+ @forward "line";
62
+
63
+
64
+ // ============================================================================
65
+ // Content loaders
66
+ // ============================================================================
67
+
68
+ @forward "text";
69
+ @forward "skeleton";
70
+
71
+
72
+ // ============================================================================
73
+ // Graphic loaders
74
+ // ============================================================================
75
+
76
+ @forward "graph";
77
+ @forward "objects";