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,148 @@
1
+ {% extends "base.html.jinja" %}
2
+
3
+ {%- block title %}Core Concepts — move.gl{%- endblock %}
4
+
5
+ {%- block header %}
6
+ <p class="eyebrow">Documentation</p>
7
+ <h1>Core Concepts</h1>
8
+ {%- endblock %}
9
+
10
+ {%- block content %}
11
+
12
+ <section>
13
+ <h2>Animation Categories</h2>
14
+ <p>move.gl organizes animations into logical categories:</p>
15
+
16
+ <div class="feature-grid">
17
+ <div class="feature-card">
18
+ <h3 class="feature-card__title">Keyframes</h3>
19
+ <p class="feature-card__desc">Pre-defined @keyframes for common animation patterns like fade, slide, bounce,
20
+ zoom, and flip.</p>
21
+ </div>
22
+ <div class="feature-card">
23
+ <h3 class="feature-card__title">Transitions</h3>
24
+ <p class="feature-card__desc">Smooth property transitions between states with customizable timing functions.
25
+ </p>
26
+ </div>
27
+ <div class="feature-card">
28
+ <h3 class="feature-card__title">Transforms</h3>
29
+ <p class="feature-card__desc">2D and 3D transform utilities for rotation, scaling, skewing, and translation.
30
+ </p>
31
+ </div>
32
+ <div class="feature-card">
33
+ <h3 class="feature-card__title">Loaders</h3>
34
+ <p class="feature-card__desc">Animated loading indicators including spinners, dots, bars, and pulse effects.
35
+ </p>
36
+ </div>
37
+ </div>
38
+ </section>
39
+
40
+ <section>
41
+ <h2>Timing Functions</h2>
42
+ <p>Built-in easing functions for natural motion:</p>
43
+
44
+ <div class="code-block"><span class="comment">// Standard easings</span>
45
+ $ease-linear: linear;
46
+ $ease-in: cubic-bezier(0.4, 0, 1, 1);
47
+ $ease-out: cubic-bezier(0, 0, 0.2, 1);
48
+ $ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
49
+
50
+ <span class="comment">// Custom spring-like easings</span>
51
+ $ease-bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
52
+ $ease-elastic: cubic-bezier(0.68, -0.6, 0.32, 1.6);
53
+
54
+ <span class="comment">// Usage</span>
55
+ .element {
56
+ @include fade-in($timing: $ease-bounce);
57
+ }
58
+ </div>
59
+ </section>
60
+
61
+ <section>
62
+ <h2>Duration Scale</h2>
63
+ <p>Consistent duration values for animations:</p>
64
+
65
+ <div class="code-block"><span class="comment">// Duration scale</span>
66
+ $duration-instant: 75ms; <span class="comment">// Nearly instant</span>
67
+ $duration-fast: 150ms; <span class="comment">// Quick interactions</span>
68
+ $duration-normal: 300ms; <span class="comment">// Default</span>
69
+ $duration-slow: 500ms; <span class="comment">// Deliberate motion</span>
70
+ $duration-slower: 700ms; <span class="comment">// Dramatic effect</span>
71
+ $duration-slowest: 1000ms; <span class="comment">// Very slow</span>
72
+ </div>
73
+ </section>
74
+
75
+ <section>
76
+ <h2>Accessibility</h2>
77
+ <p>move.gl respects user preferences for reduced motion:</p>
78
+
79
+ <div class="code-block"><span class="comment">// The motion-safe mixin only applies animations when safe</span>
80
+ .element {
81
+ @include motion-safe {
82
+ @include fade-in;
83
+ }
84
+ }
85
+
86
+ <span class="comment">// Alternative: motion-reduced for fallback styles</span>
87
+ .element {
88
+ @include fade-in;
89
+
90
+ @include motion-reduced {
91
+ animation: none;
92
+ opacity: 1;
93
+ }
94
+ }
95
+ </div>
96
+
97
+ <p>Users with <code>prefers-reduced-motion: reduce</code> set in their system preferences will see static content or
98
+ minimal transitions.</p>
99
+ </section>
100
+
101
+ <section>
102
+ <h2>Performance</h2>
103
+ <p>move.gl uses GPU-accelerated properties for smooth 60fps animations:</p>
104
+
105
+ <ul>
106
+ <li><strong>transform</strong> — For position, rotation, and scale changes</li>
107
+ <li><strong>opacity</strong> — For visibility transitions</li>
108
+ <li><strong>will-change</strong> — Applied automatically for complex animations</li>
109
+ </ul>
110
+
111
+ <div class="code-block"><span class="comment">// GPU-accelerated animation</span>
112
+ @keyframes slide-up {
113
+ from {
114
+ transform: translateY(20px); <span class="comment">// GPU-accelerated</span>
115
+ opacity: 0; <span class="comment">// GPU-accelerated</span>
116
+ }
117
+ to {
118
+ transform: translateY(0);
119
+ opacity: 1;
120
+ }
121
+ }
122
+
123
+ <span class="comment">// Avoid animating these properties (triggers layout):</span>
124
+ <span class="comment">// - width, height</span>
125
+ <span class="comment">// - margin, padding</span>
126
+ <span class="comment">// - top, left, right, bottom</span>
127
+ </div>
128
+ </section>
129
+
130
+ <section>
131
+ <h2>Composing Animations</h2>
132
+ <p>Combine multiple animations for complex effects:</p>
133
+
134
+ <div class="code-block"><span class="comment">// Combine fade + slide</span>
135
+ .card-enter {
136
+ @include fade-in($duration: 0.5s);
137
+ @include slide-up($duration: 0.5s);
138
+ }
139
+
140
+ <span class="comment">// Sequential animations with delays</span>
141
+ .stagger-1 { animation-delay: 0ms; }
142
+ .stagger-2 { animation-delay: 100ms; }
143
+ .stagger-3 { animation-delay: 200ms; }
144
+ .stagger-4 { animation-delay: 300ms; }
145
+ </div>
146
+ </section>
147
+
148
+ {%- endblock %}
@@ -0,0 +1,114 @@
1
+ {# ============================================================================
2
+ move.gl | Draggable Demo
3
+ ============================================================================
4
+ Interactive demo for the draggable component
5
+ ============================================================================ #}
6
+ {%- extends "_base.html.jinja" -%}
7
+
8
+ {%- set title = "Draggable Demo — move.gl" -%}
9
+ {%- set description = "Draggable Component Demo — Make any element draggable with mouse and touch support." -%}
10
+ {%- set current_demo = "draggable" -%}
11
+
12
+ {%- block header %}
13
+ <header class="page-header">
14
+ <div class="page-header__badge">TypeScript Component</div>
15
+ <h1 class="page-header__title">Draggable</h1>
16
+ <p class="page-header__description">
17
+ Make any HTML element draggable with full mouse and touch support.
18
+ Perfect for creating interactive interfaces, drag-and-drop features, and movable widgets.
19
+ </p>
20
+ </header>
21
+ {%- endblock -%}
22
+
23
+ {%- block content %}
24
+ <section class="section">
25
+ <h2 class="section__title">Interactive Demo</h2>
26
+ <p class="section__description">Try dragging the boxes around the container. Works with both mouse and touch!</p>
27
+
28
+ <div class="drag-container" id="dragContainer">
29
+ <div class="draggable-box" id="box1" style="top: 50px; left: 50px;">Drag Me!</div>
30
+ <div class="draggable-box draggable-box--pink" id="box2" style="top: 50px; right: 50px;">Me Too!</div>
31
+ <div class="draggable-box draggable-box--cyan" id="box3"
32
+ style="bottom: 50px; left: 50%; transform: translateX(-50%); width: 150px; height: 80px;">And Me!</div>
33
+ </div>
34
+
35
+ <div class="controls">
36
+ <button class="btn btn-primary" onclick="resetPositions()">Reset Positions</button>
37
+ <button class="btn btn-secondary" onclick="clearLog()">Clear Log</button>
38
+ </div>
39
+
40
+ <div class="log-output" id="logOutput">
41
+ <div class="log-entry"><span class="timestamp">[--:--:--]</span> Drag events will appear here...</div>
42
+ </div>
43
+ </section>
44
+
45
+ <section class="section">
46
+ <h2 class="section__title">Features</h2>
47
+ <div class="feature-grid">
48
+ <div class="feature-card">
49
+ <h4>🖱️ Mouse Support</h4>
50
+ <p>Full mouse drag support with mousedown, mousemove, and mouseup events.</p>
51
+ </div>
52
+ <div class="feature-card">
53
+ <h4>📱 Touch Support</h4>
54
+ <p>Native touch event handling for mobile devices and tablets.</p>
55
+ </div>
56
+ <div class="feature-card">
57
+ <h4>📦 Boundary Constraints</h4>
58
+ <p>Elements are constrained within their parent container bounds.</p>
59
+ </div>
60
+ <div class="feature-card">
61
+ <h4>🎯 Event Callbacks</h4>
62
+ <p>Hook into drag events with onDragStart, onDrag, and onDragEnd callbacks.</p>
63
+ </div>
64
+ </div>
65
+ </section>
66
+
67
+ <section class="section">
68
+ <h2 class="section__title">Usage</h2>
69
+
70
+ <h3>Basic Usage</h3>
71
+ <div class="code-block">
72
+ <code><span class="keyword">import</span> { Draggable } <span class="keyword">from</span> <span class="string">'move.gl'</span>;
73
+
74
+ <span class="comment">// Make an element draggable</span>
75
+ <span class="keyword">const</span> draggable = <span class="keyword">new</span> <span class="function">Draggable</span>(<span class="string">'myElement'</span>);
76
+
77
+ <span class="comment">// Clean up when done</span>
78
+ draggable.<span class="function">destroy</span>();</code>
79
+ </div>
80
+
81
+ <h3>HTML Structure</h3>
82
+ <div class="code-block">
83
+ <code><span class="comment">&lt;!-- Parent container defines boundaries --&gt;</span>
84
+ &lt;<span class="keyword">div</span> <span class="string">class</span>=<span class="string">"container"</span>&gt;
85
+ &lt;<span class="keyword">div</span> <span class="string">id</span>=<span class="string">"myElement"</span> <span class="string">class</span>=<span class="string">"draggable"</span>&gt;
86
+ Drag me!
87
+ &lt;/<span class="keyword">div</span>&gt;
88
+ &lt;/<span class="keyword">div</span>&gt;</code>
89
+ </div>
90
+ </section>
91
+
92
+ <section class="section">
93
+ <h2 class="section__title">API Reference</h2>
94
+
95
+ <h3>Constructor</h3>
96
+ <div class="code-block">
97
+ <code><span class="keyword">new</span> <span class="function">Draggable</span>(elementId: <span class="keyword">string</span>)</code>
98
+ </div>
99
+
100
+ <h3>Methods</h3>
101
+ <table class="api-table">
102
+ <tr>
103
+ <th>Method</th>
104
+ <th>Description</th>
105
+ </tr>
106
+ <tr>
107
+ <td><code>destroy()</code></td>
108
+ <td>Removes all event listeners and cleans up the instance</td>
109
+ </tr>
110
+ </table>
111
+ </section>
112
+
113
+ {%- include "partials/_demo_links.html.jinja" %}
114
+ {%- endblock -%}
@@ -0,0 +1,128 @@
1
+ {# ============================================================================
2
+ move.gl | Gesture Demo
3
+ ============================================================================
4
+ Interactive demo for the gesture handler component
5
+ ============================================================================ #}
6
+ {%- extends "_base.html.jinja" -%}
7
+
8
+ {%- set title = "Gesture Demo — move.gl" -%}
9
+ {%- set description = "Touch Gesture Demo — Detect taps, swipes, pinches, and rotations." -%}
10
+ {%- set current_demo = "gesture" -%}
11
+
12
+ {%- block header %}
13
+ <header class="page-header">
14
+ <div class="page-header__badge">TypeScript Component</div>
15
+ <h1 class="page-header__title">Gesture Handler</h1>
16
+ <p class="page-header__description">
17
+ Detect and respond to touch gestures including taps, swipes, pinches, and rotations.
18
+ Works with both touch devices and mouse input.
19
+ </p>
20
+ </header>
21
+ {%- endblock -%}
22
+
23
+ {%- block content %}
24
+ <section class="section">
25
+ <h2 class="section__title">Interactive Demo</h2>
26
+ <p class="section__description">
27
+ <strong>Touch/Mobile:</strong> Use one finger to tap or swipe, two fingers to pinch.<br>
28
+ <strong>Desktop:</strong> Click to tap, click and drag to swipe.
29
+ </p>
30
+
31
+ <div class="gesture-area" id="gestureArea">
32
+ <div class="direction-indicator left" id="dirLeft">←</div>
33
+ <div class="direction-indicator right" id="dirRight">→</div>
34
+ <div class="direction-indicator up" id="dirUp">↑</div>
35
+ <div class="direction-indicator down" id="dirDown">↓</div>
36
+
37
+ <div class="gesture-icon" id="gestureIcon">👆</div>
38
+ <div class="gesture-label" id="gestureLabel">Touch or Click Here</div>
39
+ <div class="gesture-hint" id="gestureHint">Try tapping, swiping, or pinching</div>
40
+ <div class="gesture-feedback" id="gestureFeedback">Tap detected!</div>
41
+ </div>
42
+
43
+ <div class="stats-grid">
44
+ <div class="stat-card">
45
+ <div class="stat-card__value" id="tapCount">0</div>
46
+ <div class="stat-card__label">Taps</div>
47
+ </div>
48
+ <div class="stat-card">
49
+ <div class="stat-card__value" id="swipeCount">0</div>
50
+ <div class="stat-card__label">Swipes</div>
51
+ </div>
52
+ <div class="stat-card">
53
+ <div class="stat-card__value" id="pinchCount">0</div>
54
+ <div class="stat-card__label">Pinches</div>
55
+ </div>
56
+ <div class="stat-card">
57
+ <div class="stat-card__value" id="lastDirection">—</div>
58
+ <div class="stat-card__label">Last Direction</div>
59
+ </div>
60
+ </div>
61
+
62
+ <div class="controls">
63
+ <button class="btn btn-secondary" onclick="resetStats()">Reset Stats</button>
64
+ <button class="btn btn-secondary" onclick="clearLog()">Clear Log</button>
65
+ </div>
66
+
67
+ <div class="gesture-log" id="gestureLog">
68
+ <div class="entry">
69
+ <span class="timestamp">--:--:--</span>
70
+ <span class="type">INIT</span>
71
+ <span class="details">Gesture handler ready</span>
72
+ </div>
73
+ </div>
74
+ </section>
75
+
76
+ <section class="section">
77
+ <h2 class="section__title">Supported Gestures</h2>
78
+ <div class="feature-grid">
79
+ <div class="feature-card">
80
+ <h4>👆 Tap</h4>
81
+ <p>Single touch/click without movement. Fires onTap callback.</p>
82
+ </div>
83
+ <div class="feature-card">
84
+ <h4>👋 Swipe</h4>
85
+ <p>Touch and drag in any direction. Detects left, right, up, down.</p>
86
+ </div>
87
+ <div class="feature-card">
88
+ <h4>🤏 Pinch</h4>
89
+ <p>Two-finger pinch gesture. Returns scale factor for zoom effects.</p>
90
+ </div>
91
+ <div class="feature-card">
92
+ <h4>🔄 Rotate</h4>
93
+ <p>Two-finger rotation gesture. Returns angle for rotation effects.</p>
94
+ </div>
95
+ </div>
96
+ </section>
97
+
98
+ <section class="section">
99
+ <h2 class="section__title">Usage</h2>
100
+
101
+ <h3>TouchGestureHandler</h3>
102
+ <div class="code-block">
103
+ <code><span class="keyword">import</span> { TouchGestureHandler } <span class="keyword">from</span> <span class="string">'move.gl'</span>;
104
+
105
+ <span class="keyword">const</span> gesture = <span class="keyword">new</span> <span class="function">TouchGestureHandler</span>(<span class="string">'myElement'</span>, {
106
+ <span class="function">onTap</span>: () => console.<span class="function">log</span>(<span class="string">'Tapped!'</span>),
107
+ <span class="function">onSwipe</span>: (direction, deltaX, deltaY) => {
108
+ console.<span class="function">log</span>(<span class="string">`Swiped ${direction}`</span>);
109
+ },
110
+ <span class="function">onPinch</span>: (scale) => console.<span class="function">log</span>(<span class="string">`Scale: ${scale}`</span>)
111
+ });</code>
112
+ </div>
113
+
114
+ <h3>GestureCallbacks Interface</h3>
115
+ <div class="code-block">
116
+ <code><span class="keyword">interface</span> GestureCallbacks {
117
+ onTap?: () => <span class="keyword">void</span>;
118
+ onSwipe?: (direction: SwipeDirection, deltaX: <span class="keyword">number</span>, deltaY: <span class="keyword">number</span>) => <span class="keyword">void</span>;
119
+ onPinch?: (scale: <span class="keyword">number</span>) => <span class="keyword">void</span>;
120
+ onRotate?: (angle: <span class="keyword">number</span>) => <span class="keyword">void</span>;
121
+ }
122
+
123
+ <span class="keyword">type</span> SwipeDirection = <span class="string">'left'</span> | <span class="string">'right'</span> | <span class="string">'up'</span> | <span class="string">'down'</span>;</code>
124
+ </div>
125
+ </section>
126
+
127
+ {%- include "partials/_demo_links.html.jinja" %}
128
+ {%- endblock -%}
@@ -0,0 +1,88 @@
1
+ {# ============================================================================
2
+ move.gl | Virtual Keyboard Demo
3
+ ============================================================================
4
+ Interactive demo for the virtual keyboard component
5
+ ============================================================================ #}
6
+ {%- extends "_base.html.jinja" -%}
7
+
8
+ {%- set title = "Virtual Keyboard Demo — move.gl" -%}
9
+ {%- set description = "Virtual Keyboard Demo — Customizable on-screen keyboard with multiple layouts." -%}
10
+ {%- set current_demo = "keyboard" -%}
11
+
12
+ {%- block header %}
13
+ <header class="page-header">
14
+ <div class="page-header__badge">TypeScript Component</div>
15
+ <h1 class="page-header__title">Virtual Keyboard</h1>
16
+ <p class="page-header__description">
17
+ A fully customizable on-screen virtual keyboard with support for multiple layouts,
18
+ shift modes, and special character modes. Perfect for kiosks and touch interfaces.
19
+ </p>
20
+ </header>
21
+ {%- endblock -%}
22
+
23
+ {%- block content %}
24
+ <section class="section">
25
+ <h2 class="section__title">Interactive Demo</h2>
26
+ <p class="section__description">Click keys on the virtual keyboard to type. Use mode buttons to switch layouts.</p>
27
+
28
+ <div class="keyboard-demo">
29
+ <input type="text" class="keyboard__input" id="keyboardInput" placeholder="Click keys to type..." readonly>
30
+
31
+ <div class="mode-buttons">
32
+ <button class="mode-btn active" onclick="switchMode('default')">ABC</button>
33
+ <button class="mode-btn" onclick="switchMode('shift')">⇧ SHIFT</button>
34
+ <button class="mode-btn" onclick="switchMode('special')">123</button>
35
+ </div>
36
+
37
+ <div class="keyboard" id="keyboard"></div>
38
+
39
+ <div class="keyboard__stats">
40
+ <div>Characters: <span id="charCount">0</span></div>
41
+ <div>Words: <span id="wordCount">0</span></div>
42
+ <div>Keypresses: <span id="keypressCount">0</span></div>
43
+ </div>
44
+ </div>
45
+ </section>
46
+
47
+ <section class="section">
48
+ <h2 class="section__title">Features</h2>
49
+ <div class="feature-grid">
50
+ <div class="feature-card">
51
+ <h4>⌨️ Full Keyboard</h4>
52
+ <p>Complete QWERTY layout with all letters, numbers, and common symbols.</p>
53
+ </div>
54
+ <div class="feature-card">
55
+ <h4>⇧ Shift Mode</h4>
56
+ <p>Toggle uppercase letters with shift key support.</p>
57
+ </div>
58
+ <div class="feature-card">
59
+ <h4>🔢 Special Characters</h4>
60
+ <p>Dedicated mode for numbers and special symbols.</p>
61
+ </div>
62
+ <div class="feature-card">
63
+ <h4>🎨 Customizable</h4>
64
+ <p>Easily customize layouts, styles, and key mappings.</p>
65
+ </div>
66
+ </div>
67
+ </section>
68
+
69
+ <section class="section">
70
+ <h2 class="section__title">Usage</h2>
71
+ <div class="code-block">
72
+ <code><span class="keyword">import</span> { VirtualKeyboard } <span class="keyword">from</span> <span class="string">'move.gl'</span>;
73
+
74
+ <span class="keyword">const</span> keyboard = <span class="keyword">new</span> <span class="function">VirtualKeyboard</span>({
75
+ containerId: <span class="string">'keyboard-container'</span>,
76
+ inputId: <span class="string">'text-input'</span>,
77
+ <span class="function">onKeyPress</span>: (key) => console.<span class="function">log</span>(<span class="string">`Key: ${key}`</span>)
78
+ });
79
+
80
+ <span class="comment">// Switch keyboard mode</span>
81
+ keyboard.<span class="function">switchMode</span>(<span class="string">'shift'</span>);
82
+ keyboard.<span class="function">switchMode</span>(<span class="string">'special'</span>);
83
+ keyboard.<span class="function">switchMode</span>(<span class="string">'default'</span>);</code>
84
+ </div>
85
+ </section>
86
+
87
+ {%- include "partials/_demo_links.html.jinja" %}
88
+ {%- endblock -%}
@@ -0,0 +1,122 @@
1
+ {# ============================================================================
2
+ move.gl | Screensaver Demo
3
+ ============================================================================
4
+ Interactive demo for the screensaver component
5
+ ============================================================================ #}
6
+ {%- extends "_base.html.jinja" -%}
7
+
8
+ {%- set title = "Screensaver Demo — move.gl" -%}
9
+ {%- set description = "Screensaver Demo — Inactivity-based screensaver with video and audio support." -%}
10
+ {%- set current_demo = "screensaver" -%}
11
+
12
+ {%- block header %}
13
+ <header class="page-header">
14
+ <div class="page-header__badge">TypeScript Component</div>
15
+ <h1 class="page-header__title">Screensaver</h1>
16
+ <p class="page-header__description">
17
+ An inactivity-based screensaver system with video and audio support.
18
+ Perfect for kiosk displays, digital signage, and interactive installations.
19
+ </p>
20
+ </header>
21
+ {%- endblock -%}
22
+
23
+ {%- block content %}
24
+ <section class="section">
25
+ <h2 class="section__title">Interactive Demo</h2>
26
+ <p class="section__description">
27
+ The screensaver activates after a period of inactivity. Move your mouse or press any key to reset the timer.
28
+ </p>
29
+
30
+ <div class="demo-container" style="background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); color: white;">
31
+ <div class="screensaver-preview">
32
+ <div class="preview-placeholder" id="placeholder">
33
+ <div class="icon">🖥️</div>
34
+ <div>Normal content view</div>
35
+ </div>
36
+ <div class="screensaver-content" id="screensaverContent">
37
+ <div class="icon">🌙</div>
38
+ <div class="text">Screensaver Active</div>
39
+ <div class="subtext">Move mouse or press any key to dismiss</div>
40
+ </div>
41
+ </div>
42
+
43
+ <div class="status-bar">
44
+ <div class="status-indicator">
45
+ <div class="status-dot" id="statusDot"></div>
46
+ <span id="statusText">Monitoring activity</span>
47
+ </div>
48
+ <div class="countdown" id="countdown">10s</div>
49
+ </div>
50
+
51
+ <div class="controls-panel">
52
+ <div class="control-group">
53
+ <label>Timeout (seconds)</label>
54
+ <div class="value" id="timeoutValue">10</div>
55
+ <input type="range" id="timeoutSlider" min="5" max="30" value="10">
56
+ </div>
57
+ <div class="control-group">
58
+ <label>Fade Duration (ms)</label>
59
+ <div class="value" id="fadeValue">500</div>
60
+ <input type="range" id="fadeSlider" min="100" max="2000" step="100" value="500">
61
+ </div>
62
+ <div class="control-group">
63
+ <label>Activity Events</label>
64
+ <div class="value" id="eventCount">0</div>
65
+ </div>
66
+ </div>
67
+
68
+ <div class="button-row">
69
+ <button class="btn btn-primary" onclick="forceActivate()">Force Screensaver</button>
70
+ <button class="btn btn-danger" onclick="forceDeactivate()">Force Deactivate</button>
71
+ <button class="btn btn-secondary" onclick="resetDemo()">Reset Demo</button>
72
+ </div>
73
+
74
+ <div class="activity-log" id="activityLog">
75
+ <div class="entry">[--:--:--] Demo initialized</div>
76
+ </div>
77
+ </div>
78
+ </section>
79
+
80
+ <section class="section">
81
+ <h2 class="section__title">Features</h2>
82
+ <div class="feature-grid">
83
+ <div class="feature-card">
84
+ <h4>⏱️ Configurable Timeout</h4>
85
+ <p>Set custom inactivity periods before screensaver activation.</p>
86
+ </div>
87
+ <div class="feature-card">
88
+ <h4>🎬 Video Support</h4>
89
+ <p>Display videos during screensaver mode with automatic playback.</p>
90
+ </div>
91
+ <div class="feature-card">
92
+ <h4>🔊 Audio Support</h4>
93
+ <p>Play audio tracks with volume control during screensaver.</p>
94
+ </div>
95
+ <div class="feature-card">
96
+ <h4>🎯 Activity Detection</h4>
97
+ <p>Monitors mouse movement, keyboard input, and touch events.</p>
98
+ </div>
99
+ </div>
100
+ </section>
101
+
102
+ <section class="section">
103
+ <h2 class="section__title">Usage</h2>
104
+ <div class="code-block">
105
+ <code><span class="keyword">import</span> { Screensaver } <span class="keyword">from</span> <span class="string">'move.gl'</span>;
106
+
107
+ <span class="keyword">const</span> screensaver = <span class="keyword">new</span> <span class="function">Screensaver</span>({
108
+ timeout: <span class="number">300000</span>, <span class="comment">// 5 minutes</span>
109
+ videoUrl: <span class="string">'path/to/video.mp4'</span>,
110
+ audioUrl: <span class="string">'path/to/audio.mp3'</span>,
111
+ containerId: <span class="string">'screensaver'</span>
112
+ });
113
+
114
+ screensaver.<span class="function">setVolume</span>(<span class="number">0.5</span>);
115
+ screensaver.<span class="function">activate</span>();
116
+ screensaver.<span class="function">deactivate</span>();
117
+ screensaver.<span class="function">destroy</span>();</code>
118
+ </div>
119
+ </section>
120
+
121
+ {%- include "partials/_demo_links.html.jinja" %}
122
+ {%- endblock -%}