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,611 @@
1
+ ////
2
+ ///
3
+ /// Special Loader Mixins
4
+ /// ===========================================================================
5
+ ///
6
+ /// This module provides special/unique loading animation mixins including
7
+ /// morphing shapes, flip cards, folding squares, heartbeat, and more.
8
+ ///
9
+ /// @group Loaders
10
+ /// @author Scape Agency
11
+ /// @link https://move.gl
12
+ /// @since 0.1.0 initial release
13
+ /// @access public
14
+ ///
15
+ ////
16
+
17
+
18
+ @use "sass:color";
19
+
20
+ // ============================================================================
21
+ // Keyframes
22
+ // ============================================================================
23
+
24
+ /// Heartbeat animation keyframes
25
+ @keyframes loader-heartbeat {
26
+ 0%, 100% { transform: scale(1); }
27
+ 14% { transform: scale(1.3); }
28
+ 28% { transform: scale(1); }
29
+ 42% { transform: scale(1.3); }
30
+ 70% { transform: scale(1); }
31
+ }
32
+
33
+ /// Morph animation keyframes
34
+ @keyframes loader-morph {
35
+ 0%, 100% { border-radius: 0; transform: rotate(0deg); }
36
+ 25% { border-radius: 50% 0 50% 0; transform: rotate(90deg); }
37
+ 50% { border-radius: 50%; transform: rotate(180deg); }
38
+ 75% { border-radius: 0 50% 0 50%; transform: rotate(270deg); }
39
+ }
40
+
41
+ /// Flip card animation keyframes
42
+ @keyframes loader-flip-card {
43
+ 0% { transform: rotateX(0) rotateY(0); }
44
+ 25% { transform: rotateX(180deg) rotateY(0); }
45
+ 50% { transform: rotateX(180deg) rotateY(180deg); }
46
+ 75% { transform: rotateX(0) rotateY(180deg); }
47
+ 100% { transform: rotateX(0) rotateY(360deg); }
48
+ }
49
+
50
+ /// Square rotate animation keyframes
51
+ @keyframes loader-square-rotate {
52
+ 0% { transform: rotate(0deg); }
53
+ 25% { transform: rotate(90deg); }
54
+ 50% { transform: rotate(180deg); }
55
+ 75% { transform: rotate(270deg); }
56
+ 100% { transform: rotate(360deg); }
57
+ }
58
+
59
+ /// Cube flip animation keyframes
60
+ @keyframes loader-cube-flip {
61
+ 0% { transform: perspective(100px) rotateX(0) rotateY(0); }
62
+ 50% { transform: perspective(100px) rotateX(180deg) rotateY(0); }
63
+ 100% { transform: perspective(100px) rotateX(180deg) rotateY(180deg); }
64
+ }
65
+
66
+ /// Folding animation keyframes
67
+ @keyframes loader-folding {
68
+ 0%, 10% { transform: scale(1); opacity: 1; }
69
+ 20%, 100% { transform: scale(0); opacity: 0; }
70
+ }
71
+
72
+ /// Clock minute hand animation
73
+ @keyframes loader-clock-minute {
74
+ 0% { transform: translate(-50%, -100%) rotate(0deg); }
75
+ 100% { transform: translate(-50%, -100%) rotate(360deg); }
76
+ }
77
+
78
+ /// Clock hour hand animation
79
+ @keyframes loader-clock-hour {
80
+ 0% { transform: translate(-50%, -100%) rotate(0deg); }
81
+ 100% { transform: translate(-50%, -100%) rotate(360deg); }
82
+ }
83
+
84
+ /// Bounce loader animation
85
+ @keyframes loader-bounce {
86
+ 0% { transform: translateY(0); }
87
+ 100% { transform: translateY(-20px); }
88
+ }
89
+
90
+ /// Windmill rotation (uses spin from rings)
91
+ @keyframes loader-spin {
92
+ from { transform: rotate(0deg); }
93
+ to { transform: rotate(360deg); }
94
+ }
95
+
96
+ /// Battery charge animation
97
+ @keyframes loader-battery-charge {
98
+ 0% { width: 0%; }
99
+ 50% { width: calc(100% - 6px); }
100
+ 100% { width: 0%; }
101
+ }
102
+
103
+ /// Pendulum left animation
104
+ @keyframes loader-pendulum-left {
105
+ 0% { transform: translateX(-15px) translateY(-10px); }
106
+ 100% { transform: translateX(0) translateY(0); }
107
+ }
108
+
109
+ /// Pendulum right animation
110
+ @keyframes loader-pendulum-right {
111
+ 0% { transform: translateX(0) translateY(0); }
112
+ 100% { transform: translateX(15px) translateY(-10px); }
113
+ }
114
+
115
+ /// Seesaw animation
116
+ @keyframes loader-seesaw {
117
+ 0%, 100% { transform: rotate(-15deg); }
118
+ 50% { transform: rotate(15deg); }
119
+ }
120
+
121
+ /// Wifi pulse animation
122
+ @keyframes loader-wifi-pulse {
123
+ 0% { opacity: 0; }
124
+ 30% { opacity: 1; }
125
+ 60%, 100% { opacity: 0; }
126
+ }
127
+
128
+ /// DNA animation (top)
129
+ @keyframes loader-dna-top {
130
+ 0%, 100% { transform: translateX(-50%) scale(1); opacity: 1; }
131
+ 50% { transform: translateX(-50%) scale(0.5); opacity: 0.5; }
132
+ }
133
+
134
+ /// DNA animation (bottom)
135
+ @keyframes loader-dna-bottom {
136
+ 0%, 100% { transform: translateX(-50%) scale(0.5); opacity: 0.5; }
137
+ 50% { transform: translateX(-50%) scale(1); opacity: 1; }
138
+ }
139
+
140
+ /// Infinity left animation
141
+ @keyframes loader-infinity-left {
142
+ 0%, 100% { transform: translateY(-50%) translateX(0); }
143
+ 50% { transform: translateY(-50%) translateX(20px); }
144
+ }
145
+
146
+ /// Infinity right animation
147
+ @keyframes loader-infinity-right {
148
+ 0%, 100% { transform: translateY(-50%) translateX(0); }
149
+ 50% { transform: translateY(-50%) translateX(-20px); }
150
+ }
151
+
152
+
153
+ // ============================================================================
154
+ // Mixins
155
+ // ============================================================================
156
+
157
+ ///
158
+ /// Heartbeat loader mixin.
159
+ /// Creates a pulsing heartbeat animation.
160
+ ///
161
+ /// @param {Length} $size [40px] - Element size.
162
+ /// @param {Color} $color [currentColor] - Color.
163
+ /// @param {Time} $duration [1.2s] - Animation duration.
164
+ ///
165
+ @mixin loader_heartbeat($size: 40px, $color: currentColor, $duration: 1.2s) {
166
+ width: $size;
167
+ height: $size;
168
+ background: $color;
169
+ border-radius: 50%;
170
+ animation: loader-heartbeat $duration ease-in-out infinite;
171
+ }
172
+
173
+ ///
174
+ /// Morph loader mixin.
175
+ /// Creates a shape that morphs between square and circle.
176
+ ///
177
+ /// @param {Length} $size [40px] - Element size.
178
+ /// @param {Color} $color [currentColor] - Color.
179
+ /// @param {Time} $duration [2s] - Animation duration.
180
+ ///
181
+ @mixin loader_morph($size: 40px, $color: currentColor, $duration: 2s) {
182
+ width: $size;
183
+ height: $size;
184
+ background: $color;
185
+ animation: loader-morph $duration ease-in-out infinite;
186
+ }
187
+
188
+ ///
189
+ /// Flip card loader mixin.
190
+ /// Creates a flipping card animation.
191
+ ///
192
+ /// @param {Length} $size [40px] - Card size.
193
+ /// @param {Color} $color [currentColor] - Card color.
194
+ /// @param {Time} $duration [1.2s] - Animation duration.
195
+ ///
196
+ @mixin loader_flip_card($size: 40px, $color: currentColor, $duration: 1.2s) {
197
+ width: $size;
198
+ height: $size;
199
+ perspective: 100px;
200
+
201
+ > * {
202
+ width: 100%;
203
+ height: 100%;
204
+ display: block;
205
+ background: $color;
206
+ animation: loader-flip-card $duration ease-in-out infinite;
207
+ }
208
+ }
209
+
210
+ ///
211
+ /// Square rotate loader mixin.
212
+ /// Creates a rotating square animation.
213
+ ///
214
+ /// @param {Length} $size [30px] - Square size.
215
+ /// @param {Color} $color [currentColor] - Square color.
216
+ /// @param {Time} $duration [1.2s] - Animation duration.
217
+ ///
218
+ @mixin loader_square($size: 30px, $color: currentColor, $duration: 1.2s) {
219
+ width: $size;
220
+ height: $size;
221
+ background: $color;
222
+ animation: loader-square-rotate $duration ease-in-out infinite;
223
+ }
224
+
225
+ ///
226
+ /// Cube flip loader mixin.
227
+ /// Creates a 3D cube flipping animation.
228
+ ///
229
+ /// @param {Length} $size [30px] - Cube size.
230
+ /// @param {Color} $color [currentColor] - Cube color.
231
+ /// @param {Time} $duration [1.2s] - Animation duration.
232
+ ///
233
+ @mixin loader_cube($size: 30px, $color: currentColor, $duration: 1.2s) {
234
+ width: $size;
235
+ height: $size;
236
+ background: $color;
237
+ animation: loader-cube-flip $duration ease-in-out infinite;
238
+ perspective: 100px;
239
+ }
240
+
241
+ ///
242
+ /// Folding squares loader mixin.
243
+ /// Creates folding/collapsing squares animation.
244
+ ///
245
+ /// @param {Length} $size [40px] - Container size.
246
+ /// @param {Color} $color [currentColor] - Square color.
247
+ /// @param {Time} $duration [2s] - Animation duration.
248
+ ///
249
+ @mixin loader_folding($size: 40px, $color: currentColor, $duration: 2s) {
250
+ width: $size;
251
+ height: $size;
252
+ position: relative;
253
+
254
+ > * {
255
+ position: absolute;
256
+ width: ($size - 4px) * 0.5;
257
+ height: ($size - 4px) * 0.5;
258
+ background: $color;
259
+ animation: loader-folding $duration ease infinite;
260
+
261
+ &:nth-child(1) { top: 0; left: 0; animation-delay: 0s; }
262
+ &:nth-child(2) { top: 0; right: 0; animation-delay: 0.5s; }
263
+ &:nth-child(3) { bottom: 0; right: 0; animation-delay: 1s; }
264
+ &:nth-child(4) { bottom: 0; left: 0; animation-delay: 1.5s; }
265
+ }
266
+ }
267
+
268
+ ///
269
+ /// Clock loader mixin.
270
+ /// Creates a clock with animated hands.
271
+ ///
272
+ /// @param {Length} $size [40px] - Clock size.
273
+ /// @param {Length} $border-width [3px] - Border width.
274
+ /// @param {Color} $color [#333] - Hands color. Note: Cannot use currentColor as darken() requires a real color.
275
+ /// @param {Color} $bg [rgba(0,0,0,0.1)] - Clock face background.
276
+ ///
277
+ @mixin loader_clock($size: 40px, $border-width: 3px, $color: #333, $bg: rgba(0, 0, 0, 0.1)) {
278
+ width: $size;
279
+ height: $size;
280
+ border: $border-width solid $bg;
281
+ border-radius: 50%;
282
+ position: relative;
283
+
284
+ &::before {
285
+ content: '';
286
+ position: absolute;
287
+ top: 50%;
288
+ left: 50%;
289
+ width: 2px;
290
+ height: 14px;
291
+ background: $color;
292
+ transform-origin: center bottom;
293
+ transform: translate(-50%, -100%) rotate(0deg);
294
+ animation: loader-clock-minute 2s linear infinite;
295
+ }
296
+
297
+ &::after {
298
+ content: '';
299
+ position: absolute;
300
+ top: 50%;
301
+ left: 50%;
302
+ width: 2px;
303
+ height: 10px;
304
+ background: color.adjust($color, $lightness: -20%);
305
+ transform-origin: center bottom;
306
+ transform: translate(-50%, -100%) rotate(0deg);
307
+ animation: loader-clock-hour 24s linear infinite;
308
+ }
309
+ }
310
+
311
+ ///
312
+ /// Bounce loader mixin.
313
+ /// Creates bouncing dots animation.
314
+ ///
315
+ /// @param {Length} $dot-size [12px] - Dot size.
316
+ /// @param {Color} $color [currentColor] - Dot color.
317
+ /// @param {Time} $duration [0.6s] - Animation duration.
318
+ ///
319
+ @mixin loader_bounce($dot-size: 12px, $color: currentColor, $duration: 0.6s) {
320
+ display: flex;
321
+ gap: 8px;
322
+ align-items: flex-end;
323
+ height: 40px;
324
+
325
+ > * {
326
+ width: $dot-size;
327
+ height: $dot-size;
328
+ background: $color;
329
+ border-radius: 50%;
330
+ animation: loader-bounce $duration ease-in-out infinite alternate;
331
+
332
+ &:nth-child(2) { animation-delay: 0.2s; }
333
+ &:nth-child(3) { animation-delay: 0.4s; }
334
+ }
335
+ }
336
+
337
+ ///
338
+ /// Windmill loader mixin.
339
+ /// Creates rotating windmill blades.
340
+ ///
341
+ /// @param {Length} $size [40px] - Container size.
342
+ /// @param {Length} $blade-width [4px] - Blade width.
343
+ /// @param {Length} $blade-height [16px] - Blade height.
344
+ /// @param {Color} $color [currentColor] - Blade color.
345
+ /// @param {Time} $duration [1.5s] - Animation duration.
346
+ ///
347
+ @mixin loader_windmill($size: 40px, $blade-width: 4px, $blade-height: 16px, $color: currentColor, $duration: 1.5s) {
348
+ width: $size;
349
+ height: $size;
350
+ position: relative;
351
+ animation: loader-spin $duration linear infinite;
352
+
353
+ > * {
354
+ position: absolute;
355
+ width: $blade-width;
356
+ height: $blade-height;
357
+ background: $color;
358
+ left: 50%;
359
+ top: 50%;
360
+ transform-origin: center bottom;
361
+
362
+ &:nth-child(1) { transform: translate(-50%, -100%) rotate(0deg); }
363
+ &:nth-child(2) { transform: translate(-50%, -100%) rotate(90deg); }
364
+ &:nth-child(3) { transform: translate(-50%, -100%) rotate(180deg); }
365
+ &:nth-child(4) { transform: translate(-50%, -100%) rotate(270deg); }
366
+ }
367
+ }
368
+
369
+ ///
370
+ /// Gear loader mixin.
371
+ /// Creates a rotating gear animation.
372
+ ///
373
+ /// @param {Length} $size [40px] - Gear size.
374
+ /// @param {Length} $border-width [4px] - Border width.
375
+ /// @param {Color} $color [currentColor] - Gear color.
376
+ /// @param {Time} $duration [2s] - Animation duration.
377
+ ///
378
+ @mixin loader_gear($size: 40px, $border-width: 4px, $color: currentColor, $duration: 2s) {
379
+ width: $size;
380
+ height: $size;
381
+ border: $border-width solid $color;
382
+ border-radius: 50%;
383
+ position: relative;
384
+ animation: loader-spin $duration linear infinite;
385
+
386
+ &::before {
387
+ content: '';
388
+ position: absolute;
389
+ background: $color;
390
+ width: 6px;
391
+ height: 12px;
392
+ top: -8px;
393
+ left: 50%;
394
+ transform: translateX(-50%);
395
+ box-shadow:
396
+ 0 48px 0 $color,
397
+ -17px -9px 0 $color,
398
+ 17px -9px 0 $color,
399
+ -17px 41px 0 $color,
400
+ 17px 41px 0 $color;
401
+ }
402
+ }
403
+
404
+ ///
405
+ /// Battery loader mixin.
406
+ /// Creates a charging battery animation.
407
+ ///
408
+ /// @param {Length} $width [50px] - Battery width.
409
+ /// @param {Length} $height [24px] - Battery height.
410
+ /// @param {Color} $color [currentColor] - Fill color.
411
+ /// @param {Color} $bg [rgba(0,0,0,0.1)] - Border color.
412
+ /// @param {Time} $duration [2s] - Animation duration.
413
+ ///
414
+ @mixin loader_battery($width: 50px, $height: 24px, $color: currentColor, $bg: rgba(0, 0, 0, 0.1), $duration: 2s) {
415
+ width: $width;
416
+ height: $height;
417
+ border: 3px solid $bg;
418
+ border-radius: 4px;
419
+ position: relative;
420
+
421
+ &::before {
422
+ content: '';
423
+ position: absolute;
424
+ right: -6px;
425
+ top: 50%;
426
+ transform: translateY(-50%);
427
+ width: 4px;
428
+ height: 10px;
429
+ background: $bg;
430
+ border-radius: 0 2px 2px 0;
431
+ }
432
+
433
+ &::after {
434
+ content: '';
435
+ position: absolute;
436
+ left: 3px;
437
+ top: 3px;
438
+ bottom: 3px;
439
+ width: 0%;
440
+ background: $color;
441
+ border-radius: 2px;
442
+ animation: loader-battery-charge $duration ease-in-out infinite;
443
+ }
444
+ }
445
+
446
+ ///
447
+ /// Wifi loader mixin.
448
+ /// Creates wifi signal animation.
449
+ ///
450
+ /// @param {Length} $width [40px] - Container width.
451
+ /// @param {Length} $height [30px] - Container height.
452
+ /// @param {Color} $color [currentColor] - Signal color.
453
+ /// @param {Time} $duration [1.5s] - Animation duration.
454
+ ///
455
+ @mixin loader_wifi($width: 40px, $height: 30px, $color: currentColor, $duration: 1.5s) {
456
+ width: $width;
457
+ height: $height;
458
+ position: relative;
459
+
460
+ > * {
461
+ position: absolute;
462
+ bottom: 0;
463
+ left: 50%;
464
+ border: 3px solid transparent;
465
+ border-top-color: $color;
466
+ border-radius: 50%;
467
+ transform: translateX(-50%);
468
+ opacity: 0;
469
+ animation: loader-wifi-pulse $duration ease-out infinite;
470
+
471
+ &:nth-child(1) { width: 10px; height: 10px; animation-delay: 0s; }
472
+ &:nth-child(2) { width: 22px; height: 22px; animation-delay: 0.3s; }
473
+ &:nth-child(3) { width: 34px; height: 34px; animation-delay: 0.6s; }
474
+ }
475
+ }
476
+
477
+ ///
478
+ /// DNA helix loader mixin.
479
+ /// Creates a DNA helix animation.
480
+ ///
481
+ /// @param {Length} $size [40px] - Container size.
482
+ /// @param {Length} $dot-size [8px] - Dot size.
483
+ /// @param {Color} $color [currentColor] - Dot color.
484
+ /// @param {Time} $duration [1s] - Animation duration.
485
+ ///
486
+ @mixin loader_dna($size: 40px, $dot-size: 8px, $color: currentColor, $duration: 1s) {
487
+ width: $size;
488
+ height: $size;
489
+ position: relative;
490
+
491
+ > * {
492
+ position: absolute;
493
+ width: $dot-size;
494
+ height: $dot-size;
495
+ background: $color;
496
+ border-radius: 50%;
497
+ left: 50%;
498
+ transform: translateX(-50%);
499
+
500
+ &:nth-child(1) { top: 0; animation: loader-dna-top $duration ease-in-out infinite; }
501
+ &:nth-child(2) { bottom: 0; animation: loader-dna-bottom $duration ease-in-out infinite; }
502
+ }
503
+ }
504
+
505
+ ///
506
+ /// Infinity loader mixin.
507
+ /// Creates an infinity symbol animation.
508
+ ///
509
+ /// @param {Length} $width [60px] - Container width.
510
+ /// @param {Length} $height [30px] - Container height.
511
+ /// @param {Length} $circle-size [20px] - Circle size.
512
+ /// @param {Color} $color [currentColor] - Circle color.
513
+ /// @param {Time} $duration [1.5s] - Animation duration.
514
+ ///
515
+ @mixin loader_infinity($width: 60px, $height: 30px, $circle-size: 20px, $color: currentColor, $duration: 1.5s) {
516
+ width: $width;
517
+ height: $height;
518
+ position: relative;
519
+
520
+ &::before,
521
+ &::after {
522
+ content: '';
523
+ position: absolute;
524
+ width: $circle-size;
525
+ height: $circle-size;
526
+ border: 3px solid $color;
527
+ border-radius: 50%;
528
+ top: 50%;
529
+ transform: translateY(-50%);
530
+ }
531
+
532
+ &::before {
533
+ left: 0;
534
+ animation: loader-infinity-left $duration ease-in-out infinite;
535
+ }
536
+
537
+ &::after {
538
+ right: 0;
539
+ animation: loader-infinity-right $duration ease-in-out infinite;
540
+ }
541
+ }
542
+
543
+ ///
544
+ /// Pendulum loader mixin.
545
+ /// Creates a Newton's cradle pendulum animation.
546
+ ///
547
+ /// @param {Length} $width [50px] - Container width.
548
+ /// @param {Length} $height [40px] - Container height.
549
+ /// @param {Length} $ball-size [10px] - Ball size.
550
+ /// @param {Color} $color [currentColor] - Ball color.
551
+ /// @param {Time} $duration [0.6s] - Animation duration.
552
+ ///
553
+ @mixin loader_pendulum($width: 50px, $height: 40px, $ball-size: 10px, $color: currentColor, $duration: 0.6s) {
554
+ width: $width;
555
+ height: $height;
556
+ position: relative;
557
+
558
+ > * {
559
+ position: absolute;
560
+ bottom: 0;
561
+ width: $ball-size;
562
+ height: $ball-size;
563
+ background: $color;
564
+ border-radius: 50%;
565
+
566
+ &:nth-child(1) { left: 0; animation: loader-pendulum-left $duration ease-in-out infinite alternate; }
567
+ &:nth-child(2) { left: 13px; }
568
+ &:nth-child(3) { left: 26px; }
569
+ &:nth-child(4) { right: 0; animation: loader-pendulum-right $duration ease-in-out infinite alternate; }
570
+ }
571
+ }
572
+
573
+ ///
574
+ /// Seesaw loader mixin.
575
+ /// Creates a seesaw/balance animation.
576
+ ///
577
+ /// @param {Length} $width [50px] - Container width.
578
+ /// @param {Length} $height [20px] - Container height.
579
+ /// @param {Color} $color [currentColor] - Bar color.
580
+ /// @param {Color} $pivot-color [rgba(0,0,0,0.1)] - Pivot color.
581
+ /// @param {Time} $duration [1s] - Animation duration.
582
+ ///
583
+ @mixin loader_seesaw($width: 50px, $height: 20px, $color: currentColor, $pivot-color: rgba(0, 0, 0, 0.1), $duration: 1s) {
584
+ width: $width;
585
+ height: $height;
586
+ position: relative;
587
+
588
+ &::before {
589
+ content: '';
590
+ position: absolute;
591
+ bottom: 0;
592
+ left: 50%;
593
+ transform: translateX(-50%);
594
+ border-left: 8px solid transparent;
595
+ border-right: 8px solid transparent;
596
+ border-bottom: 10px solid $pivot-color;
597
+ }
598
+
599
+ &::after {
600
+ content: '';
601
+ position: absolute;
602
+ top: 5px;
603
+ left: 0;
604
+ right: 0;
605
+ height: 4px;
606
+ background: $color;
607
+ border-radius: 2px;
608
+ transform-origin: center center;
609
+ animation: loader-seesaw $duration ease-in-out infinite;
610
+ }
611
+ }