loopwind 0.23.0 → 0.24.0

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 (497) hide show
  1. package/README.md +13 -117
  2. package/dist/cli.js +16 -10
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/add.d.ts.map +1 -1
  5. package/dist/commands/add.js +6 -10
  6. package/dist/commands/add.js.map +1 -1
  7. package/dist/commands/agent.d.ts +8 -0
  8. package/dist/commands/agent.d.ts.map +1 -0
  9. package/dist/commands/agent.js +101 -0
  10. package/dist/commands/agent.js.map +1 -0
  11. package/dist/commands/init.d.ts.map +1 -1
  12. package/dist/commands/init.js +17 -7
  13. package/dist/commands/init.js.map +1 -1
  14. package/dist/commands/render.d.ts.map +1 -1
  15. package/dist/commands/render.js +17 -19
  16. package/dist/commands/render.js.map +1 -1
  17. package/dist/default-templates/AGENTS.md +10 -24
  18. package/dist/lib/config.d.ts +2 -3
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +4 -9
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/constants.d.ts +1 -3
  23. package/dist/lib/constants.d.ts.map +1 -1
  24. package/dist/lib/constants.js +2 -4
  25. package/dist/lib/constants.js.map +1 -1
  26. package/dist/lib/installer.d.ts +2 -0
  27. package/dist/lib/installer.d.ts.map +1 -1
  28. package/dist/lib/installer.js +6 -7
  29. package/dist/lib/installer.js.map +1 -1
  30. package/dist/lib/renderer.d.ts.map +1 -1
  31. package/dist/lib/renderer.js +4 -1
  32. package/dist/lib/renderer.js.map +1 -1
  33. package/dist/lib/utils.d.ts +13 -29
  34. package/dist/lib/utils.d.ts.map +1 -1
  35. package/dist/lib/utils.js +45 -155
  36. package/dist/lib/utils.js.map +1 -1
  37. package/dist/types/config.d.ts +0 -2
  38. package/dist/types/config.d.ts.map +1 -1
  39. package/dist/types/config.js.map +1 -1
  40. package/package.json +1 -15
  41. package/REGISTRY_SETUP.md +0 -363
  42. package/dist/default-templates/image/template.d.ts +0 -20
  43. package/dist/default-templates/image/template.d.ts.map +0 -1
  44. package/dist/default-templates/image/template.js +0 -18
  45. package/dist/default-templates/image/template.js.map +0 -1
  46. package/dist/default-templates/image/template.tsx +0 -20
  47. package/dist/default-templates/kitchen-sink/template.tsx +0 -64
  48. package/dist/default-templates/page/template.tsx +0 -37
  49. package/dist/default-templates/video/template.d.ts +0 -26
  50. package/dist/default-templates/video/template.d.ts.map +0 -1
  51. package/dist/default-templates/video/template.js +0 -33
  52. package/dist/default-templates/video/template.js.map +0 -1
  53. package/dist/default-templates/video/template.tsx +0 -37
  54. package/dist/default-templates/website/pages/home.tsx +0 -17
  55. package/dist/default-templates/website/parts/footer.tsx +0 -17
  56. package/dist/default-templates/website/parts/header.tsx +0 -17
  57. package/dist/default-templates/website/template.tsx +0 -17
  58. package/dist/default-templates/website-template/pages/home.tsx +0 -13
  59. package/dist/default-templates/website-template/parts/footer.tsx +0 -15
  60. package/dist/default-templates/website-template/parts/header.tsx +0 -15
  61. package/dist/default-templates/website-template/template.tsx +0 -32
  62. package/dist/lib/encode-worker.d.ts +0 -2
  63. package/dist/lib/encode-worker.d.ts.map +0 -1
  64. package/dist/lib/encode-worker.js +0 -29
  65. package/dist/lib/encode-worker.js.map +0 -1
  66. package/dist/lib/mjpeg-muxer.d.ts +0 -46
  67. package/dist/lib/mjpeg-muxer.d.ts.map +0 -1
  68. package/dist/lib/mjpeg-muxer.js +0 -513
  69. package/dist/lib/mjpeg-muxer.js.map +0 -1
  70. package/dist/lib/render-core.d.ts +0 -63
  71. package/dist/lib/render-core.d.ts.map +0 -1
  72. package/dist/lib/render-core.js +0 -65
  73. package/dist/lib/render-core.js.map +0 -1
  74. package/dist/lib/tailwind-browser.d.ts +0 -27
  75. package/dist/lib/tailwind-browser.d.ts.map +0 -1
  76. package/dist/lib/tailwind-browser.js +0 -853
  77. package/dist/lib/tailwind-browser.js.map +0 -1
  78. package/dist/lib/video-player.d.ts +0 -25
  79. package/dist/lib/video-player.d.ts.map +0 -1
  80. package/dist/lib/video-player.js +0 -392
  81. package/dist/lib/video-player.js.map +0 -1
  82. package/dist/sdk/compiler.d.ts +0 -94
  83. package/dist/sdk/compiler.d.ts.map +0 -1
  84. package/dist/sdk/compiler.js +0 -122
  85. package/dist/sdk/compiler.js.map +0 -1
  86. package/dist/sdk/edge/index.d.ts +0 -91
  87. package/dist/sdk/edge/index.d.ts.map +0 -1
  88. package/dist/sdk/edge/index.js +0 -187
  89. package/dist/sdk/edge/index.js.map +0 -1
  90. package/dist/sdk/index.d.ts +0 -62
  91. package/dist/sdk/index.d.ts.map +0 -1
  92. package/dist/sdk/index.js +0 -141
  93. package/dist/sdk/index.js.map +0 -1
  94. package/dist/sdk/preview.d.ts +0 -65
  95. package/dist/sdk/preview.d.ts.map +0 -1
  96. package/dist/sdk/preview.js +0 -262
  97. package/dist/sdk/preview.js.map +0 -1
  98. package/dist/sdk/template.d.ts +0 -162
  99. package/dist/sdk/template.d.ts.map +0 -1
  100. package/dist/sdk/template.js +0 -231
  101. package/dist/sdk/template.js.map +0 -1
  102. package/dist/sdk/workers/index.d.ts +0 -135
  103. package/dist/sdk/workers/index.d.ts.map +0 -1
  104. package/dist/sdk/workers/index.js +0 -271
  105. package/dist/sdk/workers/index.js.map +0 -1
  106. package/dist/sdk/workers/tailwind-config.d.ts +0 -48
  107. package/dist/sdk/workers/tailwind-config.d.ts.map +0 -1
  108. package/dist/sdk/workers/tailwind-config.js +0 -187
  109. package/dist/sdk/workers/tailwind-config.js.map +0 -1
  110. package/dist/sdk/workers/tailwind.d.ts +0 -9
  111. package/dist/sdk/workers/tailwind.d.ts.map +0 -1
  112. package/dist/sdk/workers/tailwind.js +0 -8
  113. package/dist/sdk/workers/tailwind.js.map +0 -1
  114. package/examples/code-editor-templates.ts +0 -173
  115. package/examples/nextjs-api/README.md +0 -180
  116. package/examples/nextjs-api/package.json +0 -21
  117. package/examples/nextjs-api/pages/api/intro-video.ts +0 -53
  118. package/examples/nextjs-api/pages/api/og-image.ts +0 -50
  119. package/examples/nextjs-template-import.ts +0 -58
  120. package/examples/sdk-video-preview.tsx +0 -120
  121. package/examples/template-compiler-workflow.ts +0 -251
  122. package/examples/visual-builder-templates.ts +0 -336
  123. package/render-examples-600x400.mjs +0 -161
  124. package/render-spring-variants-fixed.mjs +0 -60
  125. package/render-staggered-text.mjs +0 -56
  126. package/test-cloudflare-worker/README.md +0 -64
  127. package/test-cloudflare-worker/dist/README.md +0 -1
  128. package/test-cloudflare-worker/dist/index.js +0 -23743
  129. package/test-cloudflare-worker/dist/index.js.map +0 -8
  130. package/test-cloudflare-worker/package-lock.json +0 -1773
  131. package/test-cloudflare-worker/package.json +0 -25
  132. package/test-cloudflare-worker/test-sdk.mjs +0 -75
  133. package/test-cloudflare-worker/wrangler.toml +0 -14
  134. package/test-font-files.mjs +0 -72
  135. package/test-jsx-support.mjs +0 -146
  136. package/test-sdk-config.mjs +0 -454
  137. package/test-sdk-source-config.mjs +0 -427
  138. package/test-sdk-user-templates.mjs +0 -469
  139. package/test-static-debug.tsx +0 -19
  140. package/test-templates/TESTS.md +0 -63
  141. package/test-templates/config-test.mjs +0 -17
  142. package/test-templates/demo-intro-props.json +0 -4
  143. package/test-templates/run-tests.sh +0 -44
  144. package/test-templates/test-sdk.mjs +0 -139
  145. package/test-video-720p.mjs +0 -96
  146. package/test-video-breakdown.mjs +0 -98
  147. package/test-video-perf-1080.mjs +0 -67
  148. package/test-video-perf.mjs +0 -56
  149. package/test-video-props.json +0 -3
  150. package/test-worker-1080p.mjs +0 -103
  151. package/test-worker-viability.mjs +0 -140
  152. package/website/.astro/content.db +0 -0
  153. package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +0 -1
  154. package/website/.astro/integrations/astro_db/db.d.ts +0 -15
  155. package/website/.astro/settings.json +0 -5
  156. package/website/.astro/types.d.ts +0 -2
  157. package/website/DEPLOYMENT.md +0 -143
  158. package/website/OG_IMAGES.md +0 -142
  159. package/website/README.md +0 -158
  160. package/website/astro.config.mjs +0 -41
  161. package/website/dist/.gitkeep +0 -5
  162. package/website/dist/_astro/PlaygroundEditor.DzFavsm8.js +0 -26
  163. package/website/dist/_astro/VideoPreviewClient.BrajhYmh.js +0 -1
  164. package/website/dist/_astro/agents.CZXv4DCM.css +0 -1
  165. package/website/dist/_astro/client.BHSq4mdQ.js +0 -33
  166. package/website/dist/_astro/index.CTbGshLK.js +0 -9
  167. package/website/dist/_astro/jsx-runtime.BjG_zV1W.js +0 -9
  168. package/website/dist/_routes.json +0 -31
  169. package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +0 -1033
  170. package/website/dist/_worker.js/_astro-internal_middleware.mjs +0 -40
  171. package/website/dist/_worker.js/chunks/Logo_Cud5QvBJ.mjs +0 -22
  172. package/website/dist/_worker.js/chunks/_@astro-renderers_-YVK7NHa.mjs +0 -15015
  173. package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +0 -1
  174. package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +0 -1
  175. package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +0 -1
  176. package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +0 -1
  177. package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +0 -1
  178. package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +0 -1
  179. package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +0 -1
  180. package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +0 -1
  181. package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +0 -1
  182. package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +0 -1
  183. package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +0 -1
  184. package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +0 -1
  185. package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +0 -1
  186. package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +0 -721
  187. package/website/dist/_worker.js/chunks/astro/server_CsUrSZgd.mjs +0 -2512
  188. package/website/dist/_worker.js/chunks/astro-designed-error-pages_1ELXm5Tt.mjs +0 -542
  189. package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +0 -1
  190. package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +0 -1
  191. package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +0 -1
  192. package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +0 -1
  193. package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +0 -1
  194. package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +0 -1
  195. package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +0 -1
  196. package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +0 -1
  197. package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +0 -1
  198. package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +0 -1
  199. package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +0 -1
  200. package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +0 -1
  201. package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +0 -1
  202. package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +0 -1
  203. package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +0 -1
  204. package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +0 -1
  205. package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +0 -1
  206. package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +0 -1
  207. package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +0 -1
  208. package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +0 -1
  209. package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +0 -1
  210. package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +0 -1
  211. package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +0 -1
  212. package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +0 -1
  213. package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +0 -1
  214. package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +0 -1
  215. package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +0 -1
  216. package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +0 -1
  217. package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +0 -1
  218. package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +0 -1
  219. package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +0 -1
  220. package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +0 -1
  221. package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +0 -1
  222. package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +0 -1
  223. package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +0 -1
  224. package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +0 -1
  225. package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +0 -1
  226. package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +0 -1
  227. package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +0 -1
  228. package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +0 -1
  229. package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +0 -1
  230. package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +0 -1
  231. package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +0 -1
  232. package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +0 -1
  233. package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +0 -1
  234. package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +0 -1
  235. package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +0 -1
  236. package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +0 -1
  237. package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +0 -1
  238. package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +0 -1
  239. package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +0 -1
  240. package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +0 -1
  241. package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +0 -1
  242. package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +0 -1
  243. package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +0 -1
  244. package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +0 -1
  245. package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +0 -1
  246. package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +0 -1
  247. package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +0 -1
  248. package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +0 -1
  249. package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +0 -1
  250. package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +0 -1
  251. package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +0 -1
  252. package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +0 -1
  253. package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +0 -1
  254. package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +0 -1
  255. package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +0 -1
  256. package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +0 -1
  257. package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +0 -1
  258. package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +0 -1
  259. package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +0 -1
  260. package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +0 -1
  261. package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +0 -1
  262. package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +0 -1
  263. package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +0 -1
  264. package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +0 -1
  265. package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +0 -1
  266. package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +0 -1
  267. package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +0 -1
  268. package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +0 -1
  269. package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +0 -1
  270. package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +0 -1
  271. package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +0 -1
  272. package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +0 -1
  273. package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +0 -1
  274. package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +0 -1
  275. package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +0 -1
  276. package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +0 -1
  277. package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +0 -1
  278. package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +0 -1
  279. package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +0 -1
  280. package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +0 -1
  281. package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +0 -1
  282. package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +0 -1
  283. package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +0 -1
  284. package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +0 -1
  285. package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +0 -1
  286. package/website/dist/_worker.js/chunks/index_BDWR1Q-q.mjs +0 -1861
  287. package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +0 -1
  288. package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +0 -1
  289. package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +0 -1
  290. package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +0 -1
  291. package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +0 -1
  292. package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +0 -1
  293. package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +0 -1
  294. package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +0 -1
  295. package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +0 -1
  296. package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +0 -1
  297. package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +0 -1
  298. package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +0 -1
  299. package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +0 -1
  300. package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +0 -1
  301. package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +0 -1
  302. package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +0 -1
  303. package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +0 -1
  304. package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +0 -1
  305. package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +0 -1
  306. package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +0 -1
  307. package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +0 -1
  308. package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +0 -1
  309. package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +0 -1
  310. package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +0 -1
  311. package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +0 -1
  312. package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +0 -1
  313. package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +0 -1
  314. package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +0 -1
  315. package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +0 -1
  316. package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +0 -1
  317. package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +0 -1
  318. package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +0 -1
  319. package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +0 -1
  320. package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +0 -1
  321. package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +0 -1
  322. package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +0 -1
  323. package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +0 -1
  324. package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +0 -1
  325. package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +0 -1
  326. package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +0 -1
  327. package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +0 -1
  328. package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +0 -1
  329. package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +0 -1
  330. package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +0 -1
  331. package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +0 -1
  332. package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +0 -1
  333. package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +0 -1
  334. package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +0 -1
  335. package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +0 -1
  336. package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +0 -1
  337. package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +0 -1
  338. package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +0 -1
  339. package/website/dist/_worker.js/chunks/noop-middleware_B8fH5jha.mjs +0 -10
  340. package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +0 -1
  341. package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +0 -1
  342. package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +0 -1
  343. package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +0 -1
  344. package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +0 -1
  345. package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +0 -1
  346. package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +0 -1
  347. package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +0 -1
  348. package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +0 -1
  349. package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +0 -1
  350. package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +0 -1
  351. package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +0 -1
  352. package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +0 -1
  353. package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +0 -1
  354. package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +0 -1
  355. package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +0 -1
  356. package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +0 -1
  357. package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +0 -1
  358. package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +0 -1
  359. package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +0 -1
  360. package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +0 -1
  361. package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +0 -1
  362. package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +0 -1
  363. package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +0 -1
  364. package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +0 -1
  365. package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +0 -1
  366. package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +0 -1
  367. package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +0 -1
  368. package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +0 -1
  369. package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +0 -1
  370. package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +0 -1
  371. package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +0 -1
  372. package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +0 -1
  373. package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +0 -1
  374. package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +0 -1
  375. package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +0 -1
  376. package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +0 -1
  377. package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +0 -1
  378. package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +0 -1
  379. package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +0 -1
  380. package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +0 -1
  381. package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +0 -1
  382. package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +0 -1
  383. package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +0 -1
  384. package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +0 -1
  385. package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +0 -1
  386. package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +0 -1
  387. package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +0 -1
  388. package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +0 -1
  389. package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +0 -1
  390. package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +0 -1
  391. package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +0 -1
  392. package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +0 -1
  393. package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +0 -1
  394. package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +0 -1
  395. package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +0 -1
  396. package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +0 -1
  397. package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +0 -1
  398. package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +0 -1
  399. package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +0 -1
  400. package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +0 -1
  401. package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +0 -1
  402. package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +0 -1
  403. package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +0 -1
  404. package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +0 -1
  405. package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +0 -1
  406. package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +0 -1
  407. package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +0 -1
  408. package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +0 -1
  409. package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +0 -1
  410. package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +0 -1
  411. package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +0 -1
  412. package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +0 -1
  413. package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +0 -1
  414. package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +0 -1
  415. package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +0 -1
  416. package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +0 -1
  417. package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +0 -1
  418. package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +0 -1
  419. package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +0 -1
  420. package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +0 -1
  421. package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +0 -1
  422. package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +0 -1
  423. package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +0 -1
  424. package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +0 -1
  425. package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +0 -1
  426. package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +0 -1
  427. package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +0 -1
  428. package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +0 -1
  429. package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +0 -1
  430. package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +0 -1
  431. package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +0 -1
  432. package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +0 -1
  433. package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +0 -1
  434. package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +0 -1
  435. package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +0 -1
  436. package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +0 -1
  437. package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +0 -1
  438. package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +0 -1
  439. package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +0 -1
  440. package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +0 -1
  441. package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +0 -1
  442. package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +0 -1
  443. package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +0 -1
  444. package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +0 -1
  445. package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +0 -1
  446. package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +0 -1
  447. package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +0 -1
  448. package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +0 -1
  449. package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +0 -1
  450. package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +0 -1
  451. package/website/dist/_worker.js/index.js +0 -61
  452. package/website/dist/_worker.js/manifest_Bk6136-u.mjs +0 -98
  453. package/website/dist/_worker.js/pages/_image.astro.mjs +0 -24
  454. package/website/dist/_worker.js/pages/agents.astro.mjs +0 -1
  455. package/website/dist/_worker.js/pages/animation.astro.mjs +0 -1
  456. package/website/dist/_worker.js/pages/api/playground/render.astro.mjs +0 -25562
  457. package/website/dist/_worker.js/pages/api/playground/templates.astro.mjs +0 -92
  458. package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +0 -44
  459. package/website/dist/_worker.js/pages/config.astro.mjs +0 -1
  460. package/website/dist/_worker.js/pages/fonts.astro.mjs +0 -1
  461. package/website/dist/_worker.js/pages/getting-started.astro.mjs +0 -1
  462. package/website/dist/_worker.js/pages/helpers.astro.mjs +0 -1
  463. package/website/dist/_worker.js/pages/images.astro.mjs +0 -1
  464. package/website/dist/_worker.js/pages/index.astro.mjs +0 -1
  465. package/website/dist/_worker.js/pages/llm.txt.astro.mjs +0 -1
  466. package/website/dist/_worker.js/pages/playground/_example_.astro.mjs +0 -95
  467. package/website/dist/_worker.js/pages/playground.astro.mjs +0 -1
  468. package/website/dist/_worker.js/pages/preview.astro.mjs +0 -1
  469. package/website/dist/_worker.js/pages/sdk.astro.mjs +0 -1
  470. package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +0 -1
  471. package/website/dist/_worker.js/pages/styling.astro.mjs +0 -1
  472. package/website/dist/_worker.js/pages/templates.astro.mjs +0 -1
  473. package/website/dist/_worker.js/pages/video.astro.mjs +0 -1
  474. package/website/dist/_worker.js/renderers.mjs +0 -2
  475. package/website/dist/agents/index.html +0 -54
  476. package/website/dist/animation/index.html +0 -1505
  477. package/website/dist/config/index.html +0 -186
  478. package/website/dist/fonts/index.html +0 -200
  479. package/website/dist/getting-started/index.html +0 -109
  480. package/website/dist/helpers/index.html +0 -350
  481. package/website/dist/images/index.html +0 -337
  482. package/website/dist/index.html +0 -141
  483. package/website/dist/llm.txt +0 -3626
  484. package/website/dist/playground/index.html +0 -6
  485. package/website/dist/preview/index.html +0 -113
  486. package/website/dist/robots.txt +0 -40
  487. package/website/dist/sdk/index.html +0 -1588
  488. package/website/dist/sitemap.xml +0 -76
  489. package/website/dist/styling/index.html +0 -368
  490. package/website/dist/templates/index.html +0 -76
  491. package/website/dist/video/index.html +0 -354
  492. package/website/package-lock.json +0 -8099
  493. package/website/package.json +0 -43
  494. package/website/public/.gitkeep +0 -5
  495. package/website/public/robots.txt +0 -40
  496. package/website/templates/og-image.tsx +0 -60
  497. package/website/wrangler.toml +0 -9
@@ -1,336 +0,0 @@
1
- /**
2
- * Example: Visual Builder - Templates from JSON schemas
3
- *
4
- * Use case: Building a drag-and-drop template builder where users
5
- * construct templates visually without writing code.
6
- *
7
- * Safe for user-generated content - no code execution!
8
- */
9
-
10
- import {
11
- defineTemplateFromSchema,
12
- renderImage,
13
- renderVideo,
14
- type TemplateSchema,
15
- } from 'loopwind/sdk';
16
- import fs from 'fs/promises';
17
-
18
- // Example 1: Simple card template
19
- const cardSchema: TemplateSchema = {
20
- name: 'simple-card',
21
- size: { width: 1200, height: 630 },
22
- config: {
23
- colors: {
24
- primary: '#3b82f6',
25
- background: '#ffffff',
26
- text: '#1f2937',
27
- },
28
- },
29
- elements: [
30
- {
31
- type: 'div',
32
- className: 'flex flex-col w-full h-full bg-background p-12 justify-center',
33
- children: [
34
- {
35
- type: 'h1',
36
- className: 'text-6xl font-bold text-primary mb-4',
37
- content: '{{title}}',
38
- },
39
- {
40
- type: 'p',
41
- className: 'text-2xl text-text',
42
- content: '{{description}}',
43
- },
44
- ],
45
- },
46
- ],
47
- };
48
-
49
- async function renderSimpleCard() {
50
- const template = defineTemplateFromSchema(cardSchema);
51
-
52
- const png = await renderImage(template, {
53
- title: 'Visual Builder',
54
- description: 'No code required!',
55
- });
56
-
57
- await fs.writeFile('simple-card.png', png);
58
- console.log('✓ Rendered simple-card.png');
59
- }
60
-
61
- // Example 2: Complex layout with multiple sections
62
- const complexSchema: TemplateSchema = {
63
- name: 'complex-layout',
64
- size: { width: 1200, height: 630 },
65
- config: {
66
- colors: {
67
- primary: '#8b5cf6',
68
- secondary: '#ec4899',
69
- background: '#fafafa',
70
- text: '#0f172a',
71
- },
72
- },
73
- elements: [
74
- {
75
- type: 'div',
76
- className: 'flex w-full h-full bg-background',
77
- children: [
78
- // Left sidebar
79
- {
80
- type: 'div',
81
- className: 'flex flex-col w-1/3 bg-primary p-8 justify-between',
82
- children: [
83
- {
84
- type: 'h2',
85
- className: 'text-3xl font-bold text-white',
86
- content: '{{category}}',
87
- },
88
- {
89
- type: 'p',
90
- className: 'text-lg text-white/80',
91
- content: '{{subtitle}}',
92
- },
93
- ],
94
- },
95
- // Right content area
96
- {
97
- type: 'div',
98
- className: 'flex flex-col flex-1 p-12 justify-center',
99
- children: [
100
- {
101
- type: 'h1',
102
- className: 'text-6xl font-bold text-text mb-6',
103
- content: '{{title}}',
104
- },
105
- {
106
- type: 'div',
107
- className: 'w-24 h-2 bg-secondary mb-6',
108
- },
109
- {
110
- type: 'p',
111
- className: 'text-2xl text-text/70',
112
- content: '{{description}}',
113
- },
114
- ],
115
- },
116
- ],
117
- },
118
- ],
119
- };
120
-
121
- async function renderComplexLayout() {
122
- const template = defineTemplateFromSchema(complexSchema);
123
-
124
- const png = await renderImage(template, {
125
- category: 'TECHNOLOGY',
126
- subtitle: 'Innovation Series',
127
- title: 'The Future of AI',
128
- description: 'Exploring the next generation of artificial intelligence',
129
- });
130
-
131
- await fs.writeFile('complex-layout.png', png);
132
- console.log('✓ Rendered complex-layout.png');
133
- }
134
-
135
- // Example 3: Template with dynamic branding
136
- const brandedSchema: TemplateSchema = {
137
- name: 'branded-template',
138
- size: { width: 1200, height: 630 },
139
- elements: [
140
- {
141
- type: 'div',
142
- className: 'flex flex-col w-full h-full bg-brand-bg p-12 justify-between',
143
- children: [
144
- {
145
- type: 'div',
146
- className: 'flex items-center gap-4',
147
- children: [
148
- {
149
- type: 'div',
150
- className: 'w-16 h-16 rounded-full bg-brand-primary',
151
- },
152
- {
153
- type: 'span',
154
- className: 'text-2xl font-bold text-brand-text',
155
- content: '{{companyName}}',
156
- },
157
- ],
158
- },
159
- {
160
- type: 'div',
161
- children: [
162
- {
163
- type: 'h1',
164
- className: 'text-6xl font-bold text-brand-text mb-4',
165
- content: '{{title}}',
166
- },
167
- {
168
- type: 'p',
169
- className: 'text-2xl text-brand-text/80',
170
- content: '{{tagline}}',
171
- },
172
- ],
173
- },
174
- ],
175
- },
176
- ],
177
- };
178
-
179
- async function renderWithBranding(brandColors: any, props: any) {
180
- const template = defineTemplateFromSchema({
181
- ...brandedSchema,
182
- config: { colors: brandColors },
183
- });
184
-
185
- const png = await renderImage(template, props);
186
- return png;
187
- }
188
-
189
- async function renderMultipleBrands() {
190
- // Brand 1: Blue theme
191
- const brand1 = await renderWithBranding(
192
- {
193
- 'brand-primary': '#3b82f6',
194
- 'brand-bg': '#eff6ff',
195
- 'brand-text': '#1e3a8a',
196
- },
197
- {
198
- companyName: 'TechCorp',
199
- title: 'Innovation Summit 2024',
200
- tagline: 'Building the Future Together',
201
- }
202
- );
203
- await fs.writeFile('brand-1.png', brand1);
204
- console.log('✓ Rendered brand-1.png');
205
-
206
- // Brand 2: Purple theme
207
- const brand2 = await renderWithBranding(
208
- {
209
- 'brand-primary': '#8b5cf6',
210
- 'brand-bg': '#faf5ff',
211
- 'brand-text': '#581c87',
212
- },
213
- {
214
- companyName: 'DesignStudio',
215
- title: 'Creative Workshop',
216
- tagline: 'Unleash Your Creativity',
217
- }
218
- );
219
- await fs.writeFile('brand-2.png', brand2);
220
- console.log('✓ Rendered brand-2.png');
221
- }
222
-
223
- // Example 4: User interface builder output
224
- // This simulates what a drag-and-drop builder would generate
225
- interface BuilderElement {
226
- id: string;
227
- type: string;
228
- className: string;
229
- content?: string;
230
- children?: BuilderElement[];
231
- }
232
-
233
- function convertBuilderToSchema(
234
- name: string,
235
- elements: BuilderElement[],
236
- config?: any
237
- ): TemplateSchema {
238
- // Remove IDs and convert to schema format
239
- const cleanElements = (els: BuilderElement[]) => {
240
- return els.map((el) => ({
241
- type: el.type as any,
242
- className: el.className,
243
- content: el.content,
244
- children: el.children ? cleanElements(el.children) : undefined,
245
- }));
246
- };
247
-
248
- return {
249
- name,
250
- size: { width: 1200, height: 630 },
251
- config,
252
- elements: cleanElements(elements),
253
- };
254
- }
255
-
256
- async function renderFromBuilder() {
257
- // Simulated output from visual builder
258
- const builderOutput: BuilderElement[] = [
259
- {
260
- id: 'root-1',
261
- type: 'div',
262
- className: 'flex items-center justify-center w-full h-full bg-gradient-to-br from-indigo-500 to-purple-600',
263
- children: [
264
- {
265
- id: 'text-1',
266
- type: 'h1',
267
- className: 'text-8xl font-bold text-white',
268
- content: '{{message}}',
269
- },
270
- ],
271
- },
272
- ];
273
-
274
- const schema = convertBuilderToSchema('builder-output', builderOutput);
275
- const template = defineTemplateFromSchema(schema);
276
-
277
- const png = await renderImage(template, {
278
- message: 'Built Visually!',
279
- });
280
-
281
- await fs.writeFile('builder-output.png', png);
282
- console.log('✓ Rendered builder-output.png');
283
- }
284
-
285
- // Example 5: Video schema (for animated templates)
286
- const videoSchema: TemplateSchema = {
287
- name: 'animated-card',
288
- type: 'video',
289
- size: { width: 1920, height: 1080 },
290
- video: { fps: 30, duration: 3 },
291
- config: {
292
- colors: {
293
- background: '#000000',
294
- text: '#ffffff',
295
- },
296
- },
297
- elements: [
298
- {
299
- type: 'div',
300
- className: 'flex items-center justify-center w-full h-full bg-background',
301
- children: [
302
- {
303
- type: 'h1',
304
- className: 'text-8xl font-bold text-text enter-fade-in/0/1500 exit-fade-out/2500/3000',
305
- content: '{{title}}',
306
- },
307
- ],
308
- },
309
- ],
310
- };
311
-
312
- async function renderVideoSchema() {
313
- const template = defineTemplateFromSchema(videoSchema);
314
-
315
- const mp4 = await renderVideo(template, {
316
- title: 'Schema Video',
317
- });
318
-
319
- await fs.writeFile('animated-card.mp4', mp4);
320
- console.log('✓ Rendered animated-card.mp4');
321
- }
322
-
323
- // Run all examples
324
- async function main() {
325
- console.log('Visual Builder Examples\n');
326
-
327
- await renderSimpleCard();
328
- await renderComplexLayout();
329
- await renderMultipleBrands();
330
- await renderFromBuilder();
331
- await renderVideoSchema();
332
-
333
- console.log('\n✅ All visual builder examples completed!');
334
- }
335
-
336
- main().catch(console.error);
@@ -1,161 +0,0 @@
1
- import { defineTemplate, renderVideo } from './dist/sdk/index.js';
2
- import fs from 'fs/promises';
3
- import React from 'react';
4
-
5
- const { createElement: h } = React;
6
-
7
- function createTemplateModule(meta, render) {
8
- return { meta, default: render };
9
- }
10
-
11
- const templates = [
12
- // 1. Bouncing ball with spring
13
- createTemplateModule(
14
- {
15
- name: 'bouncing-ball',
16
- description: 'Bouncing ball with spring easing animation',
17
- type: 'video',
18
- size: { width: 600, height: 400 },
19
- video: { fps: 60, duration: 4 },
20
- },
21
- ({ tw }) =>
22
- h('div', { style: tw('flex items-center justify-center w-full h-full bg-gradient-to-br from-blue-900 to-purple-900') },
23
- h('div', { style: tw('w-48 h-48 rounded-full bg-gradient-to-br from-yellow-400 to-orange-500 shadow-2xl spring loop-translate-y-16/1000') })
24
- )
25
- ),
26
-
27
- // 2. Linear easing
28
- createTemplateModule(
29
- {
30
- name: 'easing-linear',
31
- description: 'Bouncing ball with linear easing (constant speed)',
32
- type: 'video',
33
- size: { width: 600, height: 400 },
34
- video: { fps: 60, duration: 4 },
35
- },
36
- ({ tw }) =>
37
- h('div', { style: tw('flex flex-col items-center justify-center gap-6 w-full h-full bg-gradient-to-br from-slate-900 to-slate-800') },
38
- h('div', { style: tw('w-32 h-32 rounded-full bg-gradient-to-br from-cyan-400 to-blue-500 shadow-2xl linear loop-translate-y-12/1000') }),
39
- h('div', { style: tw('text-white text-2xl font-bold') }, 'Linear Easing'),
40
- h('div', { style: tw('text-white/60 text-sm text-center max-w-md px-4') }, 'Constant speed')
41
- )
42
- ),
43
-
44
- // 3. Ease-in
45
- createTemplateModule(
46
- {
47
- name: 'easing-ease-in',
48
- description: 'Bouncing ball with ease-in (accelerating)',
49
- type: 'video',
50
- size: { width: 600, height: 400 },
51
- video: { fps: 60, duration: 4 },
52
- },
53
- ({ tw }) =>
54
- h('div', { style: tw('flex flex-col items-center justify-center gap-6 w-full h-full bg-gradient-to-br from-emerald-900 to-teal-800') },
55
- h('div', { style: tw('w-32 h-32 rounded-full bg-gradient-to-br from-emerald-400 to-green-500 shadow-2xl ease-in loop-translate-y-12/1000') }),
56
- h('div', { style: tw('text-white text-2xl font-bold') }, 'Ease In'),
57
- h('div', { style: tw('text-white/60 text-sm text-center max-w-md px-4') }, 'Slow start, fast end')
58
- )
59
- ),
60
-
61
- // 4. Ease-out
62
- createTemplateModule(
63
- {
64
- name: 'easing-ease-out',
65
- description: 'Bouncing ball with ease-out (decelerating)',
66
- type: 'video',
67
- size: { width: 600, height: 400 },
68
- video: { fps: 60, duration: 4 },
69
- },
70
- ({ tw }) =>
71
- h('div', { style: tw('flex flex-col items-center justify-center gap-6 w-full h-full bg-gradient-to-br from-rose-900 to-pink-800') },
72
- h('div', { style: tw('w-32 h-32 rounded-full bg-gradient-to-br from-rose-400 to-pink-500 shadow-2xl ease-out loop-translate-y-12/1000') }),
73
- h('div', { style: tw('text-white text-2xl font-bold') }, 'Ease Out'),
74
- h('div', { style: tw('text-white/60 text-sm text-center max-w-md px-4') }, 'Fast start, slow end')
75
- )
76
- ),
77
-
78
- // 5. Easing comparison (3 balls)
79
- createTemplateModule(
80
- {
81
- name: 'easing-comparison',
82
- description: 'Three balls with different easings side-by-side',
83
- type: 'video',
84
- size: { width: 600, height: 400 },
85
- video: { fps: 60, duration: 4 },
86
- },
87
- ({ tw }) =>
88
- h('div', { style: tw('flex items-center justify-center gap-8 w-full h-full bg-gradient-to-br from-slate-900 to-gray-900 px-8') },
89
- h('div', { style: tw('flex flex-col items-center gap-4') },
90
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-cyan-400 to-blue-500 shadow-2xl linear loop-translate-y-10/800') }),
91
- h('div', { style: tw('text-white text-sm font-bold') }, 'Linear'),
92
- h('div', { style: tw('text-white/50 text-xs') }, '800ms')
93
- ),
94
- h('div', { style: tw('flex flex-col items-center gap-4') },
95
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-pink-400 to-rose-500 shadow-2xl ease-out loop-translate-y-10/1000') }),
96
- h('div', { style: tw('text-white text-sm font-bold') }, 'Ease Out'),
97
- h('div', { style: tw('text-white/50 text-xs') }, '1000ms')
98
- ),
99
- h('div', { style: tw('flex flex-col items-center gap-4') },
100
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-yellow-400 to-orange-500 shadow-2xl spring loop-translate-y-10/1200') }),
101
- h('div', { style: tw('text-white text-sm font-bold') }, 'Spring'),
102
- h('div', { style: tw('text-white/50 text-xs') }, '1200ms')
103
- )
104
- )
105
- ),
106
-
107
- // 6. Spring variants
108
- createTemplateModule(
109
- {
110
- name: 'spring-variants',
111
- description: 'Different spring configurations with varying bounce',
112
- type: 'video',
113
- size: { width: 600, height: 400 },
114
- video: { fps: 60, duration: 4 },
115
- },
116
- ({ tw }) =>
117
- h('div', { style: tw('flex items-center justify-center gap-6 w-full h-full bg-gradient-to-br from-indigo-900 to-purple-900 px-6') },
118
- h('div', { style: tw('flex flex-col items-center gap-3') },
119
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-blue-400 to-cyan-500 shadow-2xl spring/1/100/10 loop-translate-y-10/1000') }),
120
- h('div', { style: tw('text-white text-xs font-bold') }, 'Gentle'),
121
- h('div', { style: tw('text-white/50 text-[10px]') }, '1/100/10')
122
- ),
123
- h('div', { style: tw('flex flex-col items-center gap-3') },
124
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-pink-400 to-rose-500 shadow-2xl spring/1/170/8 loop-translate-y-10/1000') }),
125
- h('div', { style: tw('text-white text-xs font-bold') }, 'Bouncy'),
126
- h('div', { style: tw('text-white/50 text-[10px]') }, '1/170/8')
127
- ),
128
- h('div', { style: tw('flex flex-col items-center gap-3') },
129
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-emerald-400 to-green-500 shadow-2xl spring/1/200/15 loop-translate-y-10/1000') }),
130
- h('div', { style: tw('text-white text-xs font-bold') }, 'Snappy'),
131
- h('div', { style: tw('text-white/50 text-[10px]') }, '1/200/15')
132
- )
133
- )
134
- ),
135
- ];
136
-
137
- async function renderAll() {
138
- console.log('Rendering all examples at 600x400...\n');
139
-
140
- for (let i = 0; i < templates.length; i++) {
141
- const templateModule = templates[i];
142
- const template = defineTemplate(templateModule);
143
- const outputName = `example-${templateModule.meta.name}.mp4`;
144
- const outputPath = `output/${outputName}`;
145
-
146
- console.log(`📹 Rendering ${outputName}...`);
147
-
148
- try {
149
- const buffer = await renderVideo(template, {}, { quality: 20 });
150
- await fs.writeFile(outputPath, buffer);
151
- console.log(` ✔ ${outputName} (${(buffer.length / 1024).toFixed(1)}KB)\n`);
152
- } catch (err) {
153
- console.log(` ✖ Failed: ${err.message}\n`);
154
- console.error(err);
155
- }
156
- }
157
-
158
- console.log('✅ All examples rendered at 600x400!');
159
- }
160
-
161
- renderAll().catch(console.error);
@@ -1,60 +0,0 @@
1
- import { defineTemplate, renderVideo } from './dist/sdk/index.js';
2
- import fs from 'fs/promises';
3
- import React from 'react';
4
-
5
- const { createElement: h } = React;
6
-
7
- function createTemplateModule(meta, render) {
8
- return { meta, default: render };
9
- }
10
-
11
- // Spring variants with enter animations to show the bounce better
12
- const springVariantsTemplate = createTemplateModule(
13
- {
14
- name: 'spring-variants',
15
- description: 'Different spring configurations with varying bounce',
16
- type: 'video',
17
- size: { width: 600, height: 400 },
18
- video: { fps: 60, duration: 3 },
19
- },
20
- ({ tw }) =>
21
- h('div', { style: tw('flex items-center justify-center gap-6 w-full h-full bg-gradient-to-br from-indigo-900 to-purple-900 px-6') },
22
- h('div', { style: tw('flex flex-col items-center gap-3') },
23
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-blue-400 to-cyan-500 shadow-2xl opacity-0 enter-ease-spring/1/100/10 enter-fade-in/0/1500 enter--translate-y-32/0/1500') }),
24
- h('div', { style: tw('text-white text-xs font-bold opacity-0 enter-fade-in/0/800') }, 'Gentle'),
25
- h('div', { style: tw('text-white/50 text-[10px] opacity-0 enter-fade-in/0/800') }, '1/100/10')
26
- ),
27
- h('div', { style: tw('flex flex-col items-center gap-3') },
28
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-pink-400 to-rose-500 shadow-2xl opacity-0 enter-ease-spring/1/170/8 enter-fade-in/0/1500 enter--translate-y-32/0/1500') }),
29
- h('div', { style: tw('text-white text-xs font-bold opacity-0 enter-fade-in/200/800') }, 'Bouncy'),
30
- h('div', { style: tw('text-white/50 text-[10px] opacity-0 enter-fade-in/200/800') }, '1/170/8')
31
- ),
32
- h('div', { style: tw('flex flex-col items-center gap-3') },
33
- h('div', { style: tw('w-24 h-24 rounded-full bg-gradient-to-br from-emerald-400 to-green-500 shadow-2xl opacity-0 enter-ease-spring/1/200/15 enter-fade-in/0/1500 enter--translate-y-32/0/1500') }),
34
- h('div', { style: tw('text-white text-xs font-bold opacity-0 enter-fade-in/400/800') }, 'Snappy'),
35
- h('div', { style: tw('text-white/50 text-[10px] opacity-0 enter-fade-in/400/800') }, '1/200/15')
36
- )
37
- )
38
- );
39
-
40
- async function render() {
41
- console.log('Rendering spring-variants with enter animations...\n');
42
-
43
- const template = defineTemplate(springVariantsTemplate);
44
- const outputPath = 'output/example-spring-variants.mp4';
45
-
46
- try {
47
- const buffer = await renderVideo(template, {}, { quality: 20 });
48
- await fs.writeFile(outputPath, buffer);
49
- console.log(`✔ example-spring-variants.mp4 (${(buffer.length / 1024).toFixed(1)}KB)\n`);
50
- console.log('✅ Now you can see the spring differences!');
51
- console.log(' - Gentle: smooth drop with slight overshoot bounce');
52
- console.log(' - Bouncy: exaggerated drop with lots of bounce');
53
- console.log(' - Snappy: fast drop with minimal/no bounce');
54
- } catch (err) {
55
- console.log(`✖ Failed: ${err.message}\n`);
56
- console.error(err);
57
- }
58
- }
59
-
60
- render().catch(console.error);
@@ -1,56 +0,0 @@
1
- import { defineTemplate, renderVideo } from './dist/sdk/index.js';
2
- import fs from 'fs/promises';
3
- import React from 'react';
4
-
5
- const { createElement: h } = React;
6
-
7
- function createTemplateModule(meta, render) {
8
- return { meta, default: render };
9
- }
10
-
11
- const staggeredTextTemplate = createTemplateModule(
12
- {
13
- name: 'staggered-text',
14
- description: 'Staggered text animation with spring easing',
15
- type: 'video',
16
- size: { width: 600, height: 400 },
17
- video: { fps: 60, duration: 3 },
18
- },
19
- ({ tw }) => {
20
- const text = 'loopwind';
21
- const letters = text.split('');
22
- const staggerDelay = 80; // ms between each letter
23
-
24
- return h('div', { style: tw('flex items-center justify-center w-full h-full bg-gradient-to-br from-violet-900 via-purple-900 to-fuchsia-900') },
25
- h('div', { style: tw('flex items-center justify-center gap-1') },
26
- ...letters.map((letter, i) =>
27
- h('span', {
28
- key: i,
29
- style: tw(`text-8xl font-black bg-clip-text text-transparent bg-gradient-to-br from-cyan-400 via-blue-400 to-purple-400 opacity-0 enter-ease-spring enter-fade-in/${i * staggerDelay}/600 enter--translate-y-12/${i * staggerDelay}/600`)
30
- }, letter)
31
- )
32
- )
33
- );
34
- }
35
- );
36
-
37
- async function render() {
38
- console.log('Rendering staggered-text animation...\n');
39
-
40
- const template = defineTemplate(staggeredTextTemplate);
41
- const outputPath = 'output/example-staggered-text.mp4';
42
-
43
- try {
44
- const buffer = await renderVideo(template, {}, { quality: 20 });
45
- await fs.writeFile(outputPath, buffer);
46
- console.log(`✔ example-staggered-text.mp4 (${(buffer.length / 1024).toFixed(1)}KB)\n`);
47
- console.log('✅ Staggered text animation complete!');
48
- console.log(' Each letter animates in with spring easing');
49
- console.log(' 80ms delay between each letter');
50
- } catch (err) {
51
- console.log(`✖ Failed: ${err.message}\n`);
52
- console.error(err);
53
- }
54
- }
55
-
56
- render().catch(console.error);
@@ -1,64 +0,0 @@
1
- # Loopwind Cloudflare Workers Test
2
-
3
- This project tests the loopwind SDK in a Cloudflare Workers environment.
4
-
5
- ## Quick Start
6
-
7
- ```bash
8
- # Install dependencies
9
- npm install
10
-
11
- # Test locally with Node.js (recommended)
12
- node test-sdk.mjs
13
-
14
- # Deploy to Cloudflare production
15
- npm run deploy
16
- ```
17
-
18
- ## Local Development Limitations
19
-
20
- **Note:** Local development with `wrangler dev` has WASM limitations that prevent full functionality. This is a known limitation of the local workerd runtime.
21
-
22
- For local testing, use:
23
- 1. **Node.js test script:** `node test-sdk.mjs` (works fully)
24
- 2. **SVG format only:** `http://localhost:8787/?format=svg&title=Hello` (in wrangler dev)
25
-
26
- ## Production
27
-
28
- When deployed to Cloudflare production, all features work:
29
- - SVG rendering
30
- - PNG rendering (with WASM)
31
-
32
- ## API
33
-
34
- ### GET /
35
-
36
- Generate an image with query parameters:
37
- - `title` - Main title text (default: "Hello from Loopwind!")
38
- - `subtitle` - Subtitle text (default: "Running in Cloudflare Workers")
39
- - `format` - Output format: `svg` or `png` (default: `svg`)
40
-
41
- ### GET /health
42
-
43
- Health check endpoint returning JSON status.
44
-
45
- ## Example Usage
46
-
47
- ```bash
48
- # Generate SVG
49
- curl "https://your-worker.workers.dev/?title=Hello&format=svg" > image.svg
50
-
51
- # Generate PNG
52
- curl "https://your-worker.workers.dev/?title=Hello&format=png" > image.png
53
- ```
54
-
55
- ## Project Structure
56
-
57
- ```
58
- test-cloudflare-worker/
59
- ├── src/
60
- │ └── index.ts # Worker entry point
61
- ├── test-sdk.mjs # Node.js test script
62
- ├── wrangler.toml # Wrangler configuration
63
- └── README.md
64
- ```
@@ -1 +0,0 @@
1
- This folder contains the built output assets for the worker "loopwind-worker-test" generated at 2025-12-10T07:43:03.352Z.