loopwind 0.17.0 โ†’ 0.18.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 (352) hide show
  1. package/REGISTRY_SETUP.md +55 -1
  2. package/dist/commands/add.d.ts.map +1 -1
  3. package/dist/commands/add.js +3 -0
  4. package/dist/commands/add.js.map +1 -1
  5. package/dist/lib/installer.d.ts +8 -0
  6. package/dist/lib/installer.d.ts.map +1 -1
  7. package/dist/lib/installer.js +48 -1
  8. package/dist/lib/installer.js.map +1 -1
  9. package/dist/sdk/index.d.ts +2 -2
  10. package/dist/sdk/index.d.ts.map +1 -1
  11. package/dist/sdk/index.js +1 -1
  12. package/dist/sdk/index.js.map +1 -1
  13. package/dist/sdk/template.d.ts +133 -0
  14. package/dist/sdk/template.d.ts.map +1 -1
  15. package/dist/sdk/template.js +198 -0
  16. package/dist/sdk/template.js.map +1 -1
  17. package/examples/code-editor-templates.ts +173 -0
  18. package/examples/nextjs-template-import.ts +58 -0
  19. package/examples/visual-builder-templates.ts +336 -0
  20. package/package.json +1 -1
  21. package/test-sdk-user-templates.mjs +469 -0
  22. package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +1 -0
  23. package/website/.astro/types.d.ts +1 -0
  24. package/website/DEPLOYMENT.md +142 -0
  25. package/website/OG_IMAGES.md +141 -0
  26. package/website/astro.config.mjs +0 -2
  27. package/website/deploy.sh +19 -0
  28. package/website/dist/.gitkeep +1 -0
  29. package/website/dist/_astro/agents.Yx-L_igG.css +1 -0
  30. package/website/dist/_routes.json +30 -0
  31. package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +1033 -0
  32. package/website/dist/_worker.js/_astro-internal_middleware.mjs +40 -0
  33. package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +1 -0
  34. package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +1 -0
  35. package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +1 -0
  36. package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +1 -0
  37. package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +1 -0
  38. package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +1 -0
  39. package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +1 -0
  40. package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +1 -0
  41. package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +1 -0
  42. package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +1 -0
  43. package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +1 -0
  44. package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +1 -0
  45. package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +1 -0
  46. package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +721 -0
  47. package/website/dist/_worker.js/chunks/astro/server_Y5_QHO8v.mjs +2401 -0
  48. package/website/dist/_worker.js/chunks/astro-designed-error-pages_BNTLO-TA.mjs +542 -0
  49. package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +1 -0
  50. package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +1 -0
  51. package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +1 -0
  52. package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +1 -0
  53. package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +1 -0
  54. package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +1 -0
  55. package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +1 -0
  56. package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +1 -0
  57. package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +1 -0
  58. package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +1 -0
  59. package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +1 -0
  60. package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +1 -0
  61. package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +1 -0
  62. package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +1 -0
  63. package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +1 -0
  64. package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +1 -0
  65. package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +1 -0
  66. package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +1 -0
  67. package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +1 -0
  68. package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +1 -0
  69. package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +1 -0
  70. package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +1 -0
  71. package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +1 -0
  72. package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +1 -0
  73. package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +1 -0
  74. package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +1 -0
  75. package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +1 -0
  76. package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +1 -0
  77. package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +1 -0
  78. package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +1 -0
  79. package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +1 -0
  80. package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +1 -0
  81. package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +1 -0
  82. package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +1 -0
  83. package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +1 -0
  84. package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +1 -0
  85. package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +1 -0
  86. package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +1 -0
  87. package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +1 -0
  88. package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +1 -0
  89. package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +1 -0
  90. package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +1 -0
  91. package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +1 -0
  92. package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +1 -0
  93. package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +1 -0
  94. package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +1 -0
  95. package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +1 -0
  96. package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +1 -0
  97. package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +1 -0
  98. package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +1 -0
  99. package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +1 -0
  100. package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +1 -0
  101. package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +1 -0
  102. package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +1 -0
  103. package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +1 -0
  104. package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +1 -0
  105. package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +1 -0
  106. package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +1 -0
  107. package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +1 -0
  108. package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +1 -0
  109. package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +1 -0
  110. package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +1 -0
  111. package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +1 -0
  112. package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +1 -0
  113. package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +1 -0
  114. package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +1 -0
  115. package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +1 -0
  116. package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +1 -0
  117. package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +1 -0
  118. package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +1 -0
  119. package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +1 -0
  120. package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +1 -0
  121. package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +1 -0
  122. package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +1 -0
  123. package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +1 -0
  124. package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +1 -0
  125. package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +1 -0
  126. package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +1 -0
  127. package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +1 -0
  128. package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +1 -0
  129. package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +1 -0
  130. package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +1 -0
  131. package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +1 -0
  132. package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +1 -0
  133. package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +1 -0
  134. package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +1 -0
  135. package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +1 -0
  136. package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +1 -0
  137. package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +1 -0
  138. package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +1 -0
  139. package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +1 -0
  140. package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +1 -0
  141. package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +1 -0
  142. package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +1 -0
  143. package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +1 -0
  144. package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +1 -0
  145. package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +1 -0
  146. package/website/dist/_worker.js/chunks/index_C1UTDwYg.mjs +1861 -0
  147. package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +1 -0
  148. package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +1 -0
  149. package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +1 -0
  150. package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +1 -0
  151. package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +1 -0
  152. package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +1 -0
  153. package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +1 -0
  154. package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +1 -0
  155. package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +1 -0
  156. package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +1 -0
  157. package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +1 -0
  158. package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +1 -0
  159. package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +1 -0
  160. package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +1 -0
  161. package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +1 -0
  162. package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +1 -0
  163. package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +1 -0
  164. package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +1 -0
  165. package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +1 -0
  166. package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +1 -0
  167. package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +1 -0
  168. package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +1 -0
  169. package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +1 -0
  170. package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +1 -0
  171. package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +1 -0
  172. package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +1 -0
  173. package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +1 -0
  174. package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +1 -0
  175. package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +1 -0
  176. package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +1 -0
  177. package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +1 -0
  178. package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +1 -0
  179. package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +1 -0
  180. package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +1 -0
  181. package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +1 -0
  182. package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +1 -0
  183. package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +1 -0
  184. package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +1 -0
  185. package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +1 -0
  186. package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +1 -0
  187. package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +1 -0
  188. package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +1 -0
  189. package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +1 -0
  190. package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +1 -0
  191. package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +1 -0
  192. package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +1 -0
  193. package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +1 -0
  194. package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +1 -0
  195. package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +1 -0
  196. package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +1 -0
  197. package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +1 -0
  198. package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +1 -0
  199. package/website/dist/_worker.js/chunks/noop-middleware_DlWGj5t5.mjs +10 -0
  200. package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +1 -0
  201. package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +1 -0
  202. package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +1 -0
  203. package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +1 -0
  204. package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +1 -0
  205. package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +1 -0
  206. package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +1 -0
  207. package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +1 -0
  208. package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +1 -0
  209. package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +1 -0
  210. package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +1 -0
  211. package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +1 -0
  212. package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +1 -0
  213. package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +1 -0
  214. package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +1 -0
  215. package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +1 -0
  216. package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +1 -0
  217. package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +1 -0
  218. package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +1 -0
  219. package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +1 -0
  220. package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +1 -0
  221. package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +1 -0
  222. package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +1 -0
  223. package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +1 -0
  224. package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +1 -0
  225. package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +1 -0
  226. package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +1 -0
  227. package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +1 -0
  228. package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +1 -0
  229. package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +1 -0
  230. package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +1 -0
  231. package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +1 -0
  232. package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +1 -0
  233. package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +1 -0
  234. package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +1 -0
  235. package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +1 -0
  236. package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +1 -0
  237. package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +1 -0
  238. package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +1 -0
  239. package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +1 -0
  240. package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +1 -0
  241. package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +1 -0
  242. package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +1 -0
  243. package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +1 -0
  244. package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +1 -0
  245. package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +1 -0
  246. package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +1 -0
  247. package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +1 -0
  248. package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +1 -0
  249. package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +1 -0
  250. package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +1 -0
  251. package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +1 -0
  252. package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +1 -0
  253. package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +1 -0
  254. package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +1 -0
  255. package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +1 -0
  256. package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +1 -0
  257. package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +1 -0
  258. package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +1 -0
  259. package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +1 -0
  260. package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +1 -0
  261. package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +1 -0
  262. package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +1 -0
  263. package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +1 -0
  264. package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +1 -0
  265. package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +1 -0
  266. package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +1 -0
  267. package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +1 -0
  268. package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +1 -0
  269. package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +1 -0
  270. package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +1 -0
  271. package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +1 -0
  272. package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +1 -0
  273. package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +1 -0
  274. package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +1 -0
  275. package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +1 -0
  276. package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +1 -0
  277. package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +1 -0
  278. package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +1 -0
  279. package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +1 -0
  280. package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +1 -0
  281. package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +1 -0
  282. package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +1 -0
  283. package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +1 -0
  284. package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +1 -0
  285. package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +1 -0
  286. package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +1 -0
  287. package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +1 -0
  288. package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +1 -0
  289. package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +1 -0
  290. package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +1 -0
  291. package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +1 -0
  292. package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +1 -0
  293. package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +1 -0
  294. package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +1 -0
  295. package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +1 -0
  296. package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +1 -0
  297. package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +1 -0
  298. package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +1 -0
  299. package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +1 -0
  300. package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +1 -0
  301. package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +1 -0
  302. package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +1 -0
  303. package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +1 -0
  304. package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +1 -0
  305. package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +1 -0
  306. package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +1 -0
  307. package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +1 -0
  308. package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +1 -0
  309. package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +1 -0
  310. package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +1 -0
  311. package/website/dist/_worker.js/index.js +53 -0
  312. package/website/dist/_worker.js/manifest_BAAoOzaU.mjs +98 -0
  313. package/website/dist/_worker.js/pages/_image.astro.mjs +24 -0
  314. package/website/dist/_worker.js/pages/agents.astro.mjs +1 -0
  315. package/website/dist/_worker.js/pages/animation.astro.mjs +1 -0
  316. package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +44 -0
  317. package/website/dist/_worker.js/pages/config.astro.mjs +1 -0
  318. package/website/dist/_worker.js/pages/fonts.astro.mjs +1 -0
  319. package/website/dist/_worker.js/pages/getting-started.astro.mjs +1 -0
  320. package/website/dist/_worker.js/pages/helpers.astro.mjs +1 -0
  321. package/website/dist/_worker.js/pages/images.astro.mjs +1 -0
  322. package/website/dist/_worker.js/pages/index.astro.mjs +1 -0
  323. package/website/dist/_worker.js/pages/llm.txt.astro.mjs +1 -0
  324. package/website/dist/_worker.js/pages/preview.astro.mjs +1 -0
  325. package/website/dist/_worker.js/pages/sdk.astro.mjs +1 -0
  326. package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +1 -0
  327. package/website/dist/_worker.js/pages/styling.astro.mjs +1 -0
  328. package/website/dist/_worker.js/pages/templates.astro.mjs +1 -0
  329. package/website/dist/_worker.js/pages/video.astro.mjs +1 -0
  330. package/website/dist/_worker.js/renderers.mjs +57 -0
  331. package/website/dist/agents/index.html +3 -2
  332. package/website/dist/animation/index.html +402 -128
  333. package/website/dist/config/index.html +184 -0
  334. package/website/dist/fonts/index.html +56 -52
  335. package/website/dist/getting-started/index.html +107 -0
  336. package/website/dist/helpers/index.html +8 -8
  337. package/website/dist/images/index.html +50 -23
  338. package/website/dist/index.html +114 -148
  339. package/website/dist/llm.txt +751 -1055
  340. package/website/dist/preview/index.html +111 -0
  341. package/website/dist/robots.txt +35 -0
  342. package/website/dist/sdk/index.html +390 -52
  343. package/website/dist/sitemap.xml +76 -0
  344. package/website/dist/styling/index.html +10 -7
  345. package/website/dist/templates/index.html +11 -59
  346. package/website/dist/video/index.html +106 -537
  347. package/website/package.json +1 -5
  348. package/website/public/.assetsignore +3 -0
  349. package/website/public/.gitkeep +0 -1
  350. package/website/templates/og-image.tsx +61 -0
  351. package/website/wrangler.toml +12 -0
  352. package/website/dist/_astro/agents.I1-fN38o.css +0 -1
@@ -1,174 +1,140 @@
1
- <!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><meta name="generator" content="Astro v4.16.19"><link rel="canonical" href="https://loopwind.dev/"><!-- Primary Meta Tags --><title></title><meta name="title"><meta name="description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta name="keywords" content="loopwind, image generation, video generation, React, Tailwind CSS, Satori, CLI tool, templates, shadcn/ui, AI agents, Cursor, automation"><meta name="author" content="loopwind"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://loopwind.dev/"><meta property="og:title"><meta property="og:description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta property="og:image" content="https://loopwind.dev/og-image.png"><meta property="og:site_name" content="loopwind"><!-- Twitter --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:url" content="https://loopwind.dev/"><meta name="twitter:title"><meta name="twitter:description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta name="twitter:image" content="https://loopwind.dev/og-image.png"><!-- Theme Color --><meta name="theme-color" content="#0a0a0a"><!-- Additional SEO --><meta name="robots" content="index, follow"><meta name="language" content="English"><link rel="stylesheet" href="/_astro/agents.I1-fN38o.css">
1
+ <!DOCTYPE html><html lang="en" data-astro-cid-mw7aashj> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><meta name="generator" content="Astro v4.16.19"><link rel="canonical" href="https://loopwind.dev/"><!-- Primary Meta Tags --><title></title><meta name="title"><meta name="description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta name="keywords" content="loopwind, image generation, video generation, React, Tailwind CSS, Satori, CLI tool, templates, shadcn/ui, AI agents, Cursor, automation, serverless, WASM, Open Graph, social media, marketing automation"><meta name="author" content="loopwind"><!-- Open Graph / Facebook --><meta property="og:type" content="website"><meta property="og:url" content="https://loopwind.dev/"><meta property="og:title"><meta property="og:description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta property="og:image" content="https://loopwind.dev/api/og/index"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt"><meta property="og:site_name" content="loopwind"><meta property="og:locale" content="en_US"><!-- Twitter --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:url" content="https://loopwind.dev/"><meta name="twitter:title"><meta name="twitter:description" content="CLI-based Image &#38; Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates."><meta name="twitter:image" content="https://loopwind.dev/api/og/index"><meta name="twitter:image:alt"><meta name="twitter:creator" content="@loopwind"><meta name="twitter:site" content="@loopwind"><!-- Theme Color --><meta name="theme-color" content="#0a0a0a"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#0a0a0a"><meta name="theme-color" media="(prefers-color-scheme: light)" content="#fafafa"><!-- Additional SEO --><meta name="robots" content="index, follow"><meta name="googlebot" content="index, follow"><meta name="language" content="English"><meta name="revisit-after" content="7 days"><meta name="rating" content="general"><!-- Mobile Web App --><meta name="mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"><meta name="apple-mobile-web-app-title" content="loopwind"><!-- Structured Data (JSON-LD) --><script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"loopwind","applicationCategory":"DeveloperApplication","operatingSystem":"Cross-platform","description":"CLI-based Image & Video Generator for developers and AI Agents. Generate stunning visuals from React + Tailwind templates.","url":"https://loopwind.dev/","author":{"@type":"Organization","name":"loopwind","url":"https://loopwind.dev/"},"offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"softwareVersion":"0.11.0","releaseNotes":"https://github.com/loopwind/loopwind/releases","screenshot":"https://loopwind.dev/api/og/index","featureList":["Image generation from React templates","Video generation with animations","Tailwind CSS support","shadcn/ui design system","CLI-based workflow","Serverless rendering","TypeScript support","AI Agent friendly"]}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"loopwind","url":"https://loopwind.dev/","logo":"https://loopwind.dev/favicon.svg","sameAs":["https://github.com/loopwind/loopwind","https://www.npmjs.com/package/loopwind"]}</script><script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://loopwind.dev/"}]}</script><link rel="stylesheet" href="/_astro/agents.Yx-L_igG.css">
2
2
  <style>.code-video-demo[data-astro-cid-hwce6zkj]{margin-top:2rem;margin-bottom:2rem}
3
- </style></head> <body class="antialiased"> <div class="min-h-screen" data-astro-cid-mw7aashj> <!-- Sidebar --> <aside class="fixed top-0 left-0 h-screen w-64 border-r border-border bg-card overflow-y-auto z-10" data-astro-cid-mw7aashj> <div class="p-6" data-astro-cid-mw7aashj> <a href="/" class="block mb-8 no-underline" data-astro-cid-mw7aashj> <h1 class="text-3xl flex items-center gap-2 bg-gradient-to-r from-[var(--color-brand-from)] to-[var(--color-brand-to)] bg-clip-text text-transparent" data-astro-cid-mw7aashj> <span class="text-5xl" data-astro-cid-mw7aashj>โ†ซ</span> <span data-astro-cid-mw7aashj>loopwind</span> </h1> </a> <nav data-astro-cid-mw7aashj> <ul class="space-y-1" data-astro-cid-mw7aashj> <li data-astro-cid-mw7aashj> <a href="/" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline bg-accent text-accent-foreground font-medium" data-astro-cid-mw7aashj> Getting Started </a> </li><li data-astro-cid-mw7aashj> <a href="/templates" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Templates </a> </li><li data-astro-cid-mw7aashj> <a href="/images" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Images </a> </li><li data-astro-cid-mw7aashj> <a href="/video" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Video </a> </li><li data-astro-cid-mw7aashj> <a href="/animation" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Animation </a> </li><li data-astro-cid-mw7aashj> <a href="/helpers" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Helpers </a> </li><li data-astro-cid-mw7aashj> <a href="/styling" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Styling </a> </li><li data-astro-cid-mw7aashj> <a href="/fonts" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Fonts </a> </li><li data-astro-cid-mw7aashj> <a href="/agents" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Agents </a> </li><li data-astro-cid-mw7aashj> <a href="/sdk" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> SDK </a> </li><li data-astro-cid-mw7aashj> <a href="/llm.txt" class="block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> llm.txt </a> </li> </ul> </nav> </div> </aside> <!-- Main content --> <main class="ml-64" data-astro-cid-mw7aashj> <div class="hero relative overflow-hidden bg-gradient-to-br from-background via-muted/30 to-background border-b border-border mb-8" data-astro-cid-bbe6dxrz> <div class="px-8 md:px-12 py-12 md:py-16" data-astro-cid-bbe6dxrz> <div class="max-w-3xl mb-4" data-astro-cid-bbe6dxrz> <!-- Badge -->
3
+ </style><script type="module">const p=document.getElementById("mobile-menu-button"),l=document.getElementById("mobile-menu"),g=document.querySelectorAll(".mobile-menu-link");p?.addEventListener("click",()=>{l?.classList.toggle("hidden")});l?.addEventListener("click",o=>{o.target===l&&l.classList.add("hidden")});g.forEach(o=>{o.addEventListener("click",()=>{l?.classList.add("hidden")})});function m(){const o=document.getElementById("toc-nav");if(!o){console.log("TOC: No toc-nav element found");return}const n=document.querySelector("article");if(!n){console.log("TOC: No article element found");return}const c=n.querySelectorAll("h2, h3");if(c.length===0){console.log("TOC: No headings found");return}console.log(`TOC: Found ${c.length} headings`);const a=document.createElement("ul");a.className="space-y-0 text-sm border-l border-border/50",c.forEach(e=>{const t=e.tagName==="H2"?2:3,r=e.id||e.textContent?.toLowerCase().replace(/[^\w]+/g,"-");!e.id&&r&&(e.id=r);const s=document.createElement("li"),d=document.createElement("a");d.href=`#${r}`,d.textContent=e.textContent,d.className=`toc-link block py-1 px-3 -ml-px border-l-2 border-transparent transition-all no-underline ${t===3?"pl-6 text-xs text-muted-foreground/70":"text-sm text-muted-foreground"} hover:text-foreground hover:border-muted-foreground/50`,s.appendChild(d),a.appendChild(s)}),o.appendChild(a);const i=new IntersectionObserver(e=>{e.forEach(t=>{const r=t.target.id,s=o.querySelector(`a[href="#${r}"]`);t.isIntersecting&&(document.querySelectorAll(".toc-link").forEach(d=>{d.classList.remove("text-foreground","border-accent","font-medium")}),s?.classList.add("text-foreground","border-accent","font-medium"))})},{rootMargin:"-100px 0px -66%",threshold:0});c.forEach(e=>{i.observe(e)})}document.addEventListener("DOMContentLoaded",m);document.addEventListener("astro:page-load",m);function u(){const o=document.getElementById("copy-to-llm-btn"),n=document.getElementById("copy-btn-text");if(!o||!n){console.log("Copy to LLM: Button not found on this page");return}console.log("Copy to LLM: Initialized"),o.addEventListener("click",async()=>{const c=window.location.pathname,a=c.replace(/^\//,"").replace(/\/$/,""),e=`/api/raw-markdown/${a===""?"index":a}`;console.log("Copy to LLM clicked: pathname=",c,"apiUrl=",e);try{n.textContent="Copying...";const t=await fetch(e);if(console.log("Response status:",t.status),!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const r=await t.text();console.log("Got markdown, length:",r.length),await navigator.clipboard.writeText(r),n.textContent="Copied!",setTimeout(()=>{n.textContent="Copy to LLM"},2e3)}catch(t){console.error("Copy failed:",t),n.textContent="Failed",setTimeout(()=>{n.textContent="Copy to LLM"},2e3)}})}document.addEventListener("DOMContentLoaded",u);document.addEventListener("astro:page-load",u);
4
+ </script></head> <body class="antialiased" data-astro-cid-mw7aashj> <div class="min-h-screen" data-astro-cid-mw7aashj> <!-- Mobile Header --> <header class="mobile-header fixed top-0 left-0 right-0 h-16 bg-card border-b border-border z-50 md:hidden" data-astro-cid-mw7aashj> <div class="flex items-center justify-between h-full px-4" data-astro-cid-mw7aashj> <a href="/" class="no-underline"> <h1 class="text-xl flex items-center gap-2 bg-linear-to-r from-brand-from to-brand-to bg-clip-text text-transparent"> <span class="text-2xl">โžฐ</span> <span>loopwind</span> </h1> </a> <button id="mobile-menu-button" class="p-2 text-foreground hover:bg-accent rounded-md transition-colors" aria-label="Toggle menu" data-astro-cid-mw7aashj> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-mw7aashj> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" data-astro-cid-mw7aashj></path> </svg> </button> </div> </header> <!-- Mobile Menu Overlay --> <div id="mobile-menu" class="mobile-menu fixed inset-0 bg-background/80 backdrop-blur-sm z-40 md:hidden hidden" data-astro-cid-mw7aashj> <div class="fixed top-0 left-0 h-screen w-64 bg-card border-r border-border overflow-y-auto" data-astro-cid-mw7aashj> <div class="p-6 pt-20" data-astro-cid-mw7aashj> <nav data-astro-cid-mw7aashj> <ul class="space-y-1" data-astro-cid-mw7aashj> <li data-astro-cid-mw7aashj> <a href="/" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline bg-accent text-accent-foreground font-medium" data-astro-cid-mw7aashj> Home </a> </li><li data-astro-cid-mw7aashj> <a href="/getting-started" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Getting Started </a> </li><li data-astro-cid-mw7aashj> <a href="/templates" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Templates </a> </li><li data-astro-cid-mw7aashj> <a href="/images" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Images </a> </li><li data-astro-cid-mw7aashj> <a href="/video" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Video </a> </li><li data-astro-cid-mw7aashj> <a href="/preview" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Preview </a> </li><li data-astro-cid-mw7aashj> <a href="/animation" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Animation </a> </li><li data-astro-cid-mw7aashj> <a href="/helpers" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Helpers </a> </li><li data-astro-cid-mw7aashj> <a href="/styling" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Styling </a> </li><li data-astro-cid-mw7aashj> <a href="/fonts" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Fonts </a> </li><li data-astro-cid-mw7aashj> <a href="/config" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> loopwind.json </a> </li><li data-astro-cid-mw7aashj> <a href="/sdk" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> SDK </a> </li><li data-astro-cid-mw7aashj> <a href="/agents" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Use with AI Agents </a> </li><li data-astro-cid-mw7aashj> <a href="/llm.txt" class="mobile-menu-link block px-3 py-2 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> llm.txt โ‡ฑ </a> </li> </ul> </nav> </div> </div> </div> <!-- Desktop Sidebar --> <aside class="desktop-sidebar fixed top-0 left-0 h-screen w-64 border-r border-border bg-card overflow-y-auto z-10" data-astro-cid-mw7aashj> <div class="p-6" data-astro-cid-mw7aashj> <div class="block mb-3" data-astro-cid-mw7aashj> <a href="/" class="no-underline"> <h1 class="text-3xl flex items-center gap-2 bg-linear-to-r from-brand-from to-brand-to bg-clip-text text-transparent"> <span class="text-4xl">โžฐ</span> <span>loopwind</span> </h1> </a> </div> <nav data-astro-cid-mw7aashj> <ul class="space-y-0" data-astro-cid-mw7aashj> <li data-astro-cid-mw7aashj> <a href="/" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline bg-accent text-accent-foreground font-medium" data-astro-cid-mw7aashj> Home </a> </li><li data-astro-cid-mw7aashj> <a href="/getting-started" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Getting Started </a> </li><li data-astro-cid-mw7aashj> <a href="/templates" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Templates </a> </li><li data-astro-cid-mw7aashj> <a href="/images" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Images </a> </li><li data-astro-cid-mw7aashj> <a href="/video" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Video </a> </li><li data-astro-cid-mw7aashj> <a href="/preview" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Preview </a> </li><li data-astro-cid-mw7aashj> <a href="/animation" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Animation </a> </li><li data-astro-cid-mw7aashj> <a href="/helpers" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Helpers </a> </li><li data-astro-cid-mw7aashj> <a href="/styling" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Styling </a> </li><li data-astro-cid-mw7aashj> <a href="/fonts" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Fonts </a> </li><li data-astro-cid-mw7aashj> <a href="/config" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> loopwind.json </a> </li><li data-astro-cid-mw7aashj> <a href="/sdk" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> SDK </a> </li><li data-astro-cid-mw7aashj> <a href="/agents" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> Use with AI Agents </a> </li><li data-astro-cid-mw7aashj> <a href="/llm.txt" class="block px-3 py-1.5 rounded-md text-sm transition-colors no-underline text-muted-foreground hover:text-foreground hover:bg-accent/50" data-astro-cid-mw7aashj> llm.txt โ‡ฑ </a> </li> </ul> </nav> </div> </aside> <!-- Main content --> <main class="ml-64" data-astro-cid-mw7aashj> <div class="hero relative overflow-hidden bg-linear-to-br from-background to-primary/10 border-b border-border mb-8" data-astro-cid-bbe6dxrz> <div class="px-8 md:px-12 py-12 md:py-16" data-astro-cid-bbe6dxrz> <div class="max-w-3xl mb-4" data-astro-cid-bbe6dxrz> <!-- Badge -->
4
5
  The shadcn/ui for design & marketing
5
6
  </div> <!-- Title --> <h1 class="text-2xl md:text-4xl font-bold text-foreground mb-4 leading-tight text-balance" data-astro-cid-bbe6dxrz>
6
- CLI-based dynamic image & video generator for developers and AI Agents
7
+ Programmatic marketing & storytelling automation for developers and AI Agents
7
8
  </h1> <!-- Description --> <p class="text-base md:text-lg text-muted-foreground mb-6 leading-relaxed text-balance" data-astro-cid-bbe6dxrz>
8
- Generate images and videos with React, Tailwind and Shadcn/ui classes.
9
+ Generate images and videos with React, Tailwind and Shadcn/ui utility classes.
9
10
  Perfect for template-based marketing automation, social media, and dynamic
10
11
  content generation. Lives alongside your codebase in a <code class="text-xs bg-muted px-1.5 py-0.5 rounded" data-astro-cid-bbe6dxrz>_loopwind</code> directory.
11
- </p> <!-- CTA Buttons --> <div class="flex flex-wrap gap-3" data-astro-cid-bbe6dxrz> <a href="#quick-start" class="inline-flex items-center gap-2 px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-semibold hover:bg-primary/90 transition-colors no-underline" data-astro-cid-bbe6dxrz> <span data-astro-cid-bbe6dxrz>Get Started</span> <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-bbe6dxrz> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6" data-astro-cid-bbe6dxrz></path> </svg> </a> <a href="/templates" class="inline-flex items-center gap-2 px-4 py-2 rounded-md bg-muted text-foreground text-sm font-semibold hover:bg-muted/80 transition-colors no-underline" data-astro-cid-bbe6dxrz> <span data-astro-cid-bbe6dxrz>Browse Templates</span> </a> </div> </div> </div> <!-- Subtle gradient orbs --> <div class="absolute top-0 right-0 w-64 h-64 bg-primary/5 rounded-full blur-3xl -z-10" data-astro-cid-bbe6dxrz></div> <div class="absolute bottom-0 left-0 w-64 h-64 bg-accent/5 rounded-full blur-3xl -z-10" data-astro-cid-bbe6dxrz></div> <div class="p-12 pt-0" data-astro-cid-mw7aashj> <article class="home-prose prose-invert max-w-4xl" data-astro-cid-mw7aashj> <h2 id="video-templates">Video Templates</h2>
12
- <div class="code-video-demo not-prose my-8" data-astro-cid-hwce6zkj> <h3 class="text-xl font-semibold text-foreground mb-4" data-astro-cid-hwce6zkj>Animated Intro Example</h3> <div class="grid md:grid-cols-2 gap-6" data-astro-cid-hwce6zkj> <!-- Code Side --> <div class="order-2 md:order-1" data-astro-cid-hwce6zkj> <div class="text-xs text-muted-foreground mb-2 font-mono" data-astro-cid-hwce6zkj>Template Code</div> <pre class="bg-muted border border-border rounded-lg p-4 overflow-x-auto text-sm" data-astro-cid-hwce6zkj> <code class="text-foreground font-mono" data-astro-cid-hwce6zkj>export default function VideoIntro({ tw, title, subtitle }) {
13
- return (
14
- &lt;div style={tw(&#39;flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-blue-600 to-purple-700 gap-4&#39;)}&gt;
15
- &lt;h1 style={tw(&#39;text-8xl font-bold text-white ease-out animate-bounce-in/0/0.4&#39;)}&gt;
16
- {title}
17
- &lt;/h1&gt;
18
- &lt;p style={tw(&#39;text-2xl text-white/80 ease-out animate-fade-in-up/0.3/0.7&#39;)}&gt;
19
- {subtitle}
20
- &lt;/p&gt;
21
- &lt;/div&gt;
22
- );
23
- }</code>
24
- </pre> </div> <!-- Video Side --> <div class="order-1 md:order-2" data-astro-cid-hwce6zkj> <div class="text-xs text-muted-foreground mb-2 font-mono" data-astro-cid-hwce6zkj>Live Preview</div> <div class="relative bg-muted border border-border rounded-lg overflow-hidden aspect-video" data-astro-cid-hwce6zkj> <video src="/demo-intro.mp4" autoplay loop muted playsinline class="w-full h-full object-contain" data-astro-cid-hwce6zkj>
12
+ </p> <!-- CTA Buttons --> <div class="flex flex-wrap gap-3" data-astro-cid-bbe6dxrz> <a href="/getting-started" class="inline-flex items-center gap-2 px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-semibold hover:bg-primary/90 transition-colors no-underline" data-astro-cid-bbe6dxrz> <span data-astro-cid-bbe6dxrz>Get Started</span> <svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24" data-astro-cid-bbe6dxrz> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7l5 5m0 0l-5 5m5-5H6" data-astro-cid-bbe6dxrz></path> </svg> </a> </div> </div> </div> <!-- Subtle gradient orbs --> <div class="absolute top-0 right-0 w-64 h-64 bg-primary/5 rounded-full blur-3xl -z-10" data-astro-cid-bbe6dxrz></div> <div class="absolute bottom-0 left-0 w-64 h-64 bg-accent/5 rounded-full blur-3xl -z-10" data-astro-cid-bbe6dxrz></div> <div class="p-12 pt-0" data-astro-cid-mw7aashj> <article class="home-prose prose-invert max-w-4xl" data-astro-cid-mw7aashj> <h2 id="generate-images-and-videos-with-code">Generate Images and Videos with Code</h2>
13
+ <p>Write React components, render them as images or videos. No design tools needed.</p>
14
+ <div class="code-video-demo not-prose my-8" data-astro-cid-hwce6zkj> <h3 class="text-xl font-semibold text-foreground mb-4" data-astro-cid-hwce6zkj>Video Templates</h3> <div class="flex flex-col gap-6" data-astro-cid-hwce6zkj> <!-- Video Below --> <div data-astro-cid-hwce6zkj> <div class="relative bg-muted border border-border rounded-lg overflow-hidden aspect-video" data-astro-cid-hwce6zkj> <video src="/demo-intro.mp4" autoplay loop muted playsinline class="w-full h-full object-contain" data-astro-cid-hwce6zkj>
25
15
  Your browser doesn't support video.
26
- </video> </div> </div> </div> </div>
27
- <p><strong>Render it:</strong></p>
28
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> video-intro</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Welcome!&quot;,&quot;subtitle&quot;:&quot;Built with loopwind&quot;}&#39;</span><span style="color:#79B8FF"> --out</span><span style="color:#9ECBFF"> intro.mp4</span></span>
29
- <span class="line"></span></code></pre>
30
- <p><strong>Output:</strong> <code>_loopwind/outputs/intro.mp4</code> (1920ร—1080px, 3 seconds @ 30fps)</p>
31
- <p><strong>Perfect for:</strong> Social media intros, animated logos, tutorial overlays, and product showcases.</p>
32
- <h2 id="image-templates">Image Templates</h2>
33
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="tsx"><code><span class="line"><span style="color:#6A737D">// Social media card template</span></span>
34
- <span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> default</span><span style="color:#F97583"> function</span><span style="color:#B392F0"> OGImage</span><span style="color:#E1E4E8">({ </span><span style="color:#FFAB70">tw</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">image</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">title</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">description</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">logo</span><span style="color:#E1E4E8"> }) {</span></span>
35
- <span class="line"><span style="color:#F97583"> return</span><span style="color:#E1E4E8"> (</span></span>
36
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;flex w-full h-full bg-white&#39;</span><span style="color:#E1E4E8">)}&gt;</span></span>
37
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;flex-1 flex flex-col justify-between p-12&#39;</span><span style="color:#E1E4E8">)}&gt;</span></span>
38
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">img</span><span style="color:#B392F0"> src</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">image</span><span style="color:#E1E4E8">(logo)} </span><span style="color:#B392F0">style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;h-12 w-auto&#39;</span><span style="color:#E1E4E8">)} /&gt;</span></span>
16
+ </video> </div> </div> <!-- Code --> <div data-astro-cid-hwce6zkj> <div class="overflow-hidden rounded-lg border border-border" data-astro-cid-hwce6zkj> <pre class="astro-code github-dark !m-0 p-0" style="background-color:#24292e;color:#e1e4e8; overflow-x: auto;" tabindex="0" data-astro-cid-hwce6zkj data-language="tsx"><code><span class="line"><span style="color:#6A737D">// _loopwind/templates/video-intro.tsx</span></span>
17
+ <span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> const</span><span style="color:#79B8FF"> meta</span><span style="color:#F97583"> =</span><span style="color:#E1E4E8"> {</span></span>
18
+ <span class="line"><span style="color:#E1E4E8"> name: </span><span style="color:#9ECBFF">'video-intro'</span><span style="color:#E1E4E8">,</span></span>
19
+ <span class="line"><span style="color:#E1E4E8"> type: </span><span style="color:#9ECBFF">'video'</span><span style="color:#E1E4E8">,</span></span>
20
+ <span class="line"><span style="color:#E1E4E8"> size: { width: </span><span style="color:#79B8FF">1200</span><span style="color:#E1E4E8">, height: </span><span style="color:#79B8FF">676</span><span style="color:#E1E4E8"> },</span></span>
21
+ <span class="line"><span style="color:#E1E4E8"> video: { fps: </span><span style="color:#79B8FF">30</span><span style="color:#E1E4E8">, duration: </span><span style="color:#79B8FF">3</span><span style="color:#E1E4E8"> },</span></span>
22
+ <span class="line"><span style="color:#E1E4E8"> props: {</span></span>
23
+ <span class="line"><span style="color:#E1E4E8"> title: </span><span style="color:#9ECBFF">'string'</span><span style="color:#E1E4E8">,</span></span>
24
+ <span class="line"><span style="color:#E1E4E8"> subtitle: </span><span style="color:#9ECBFF">'string'</span></span>
25
+ <span class="line"><span style="color:#E1E4E8"> }</span></span>
26
+ <span class="line"><span style="color:#E1E4E8">};</span></span>
39
27
  <span class="line"></span>
40
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">&gt;</span></span>
41
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">h1</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;text-5xl font-bold text-gray-900 mb-4&#39;</span><span style="color:#E1E4E8">)}&gt;</span></span>
42
- <span class="line"><span style="color:#E1E4E8"> {title}</span></span>
43
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">h1</span><span style="color:#E1E4E8">&gt;</span></span>
44
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">p</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;text-xl text-gray-600&#39;</span><span style="color:#E1E4E8">)}&gt;</span></span>
45
- <span class="line"><span style="color:#E1E4E8"> {description}</span></span>
46
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">p</span><span style="color:#E1E4E8">&gt;</span></span>
47
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">&gt;</span></span>
48
- <span class="line"></span>
49
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">p</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;text-gray-400&#39;</span><span style="color:#E1E4E8">)}&gt;yoursite.com&lt;/</span><span style="color:#85E89D">p</span><span style="color:#E1E4E8">&gt;</span></span>
50
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">&gt;</span></span>
51
- <span class="line"></span>
52
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;flex-1&#39;</span><span style="color:#E1E4E8">)}&gt;</span></span>
53
- <span class="line"><span style="color:#E1E4E8"> &lt;</span><span style="color:#85E89D">img</span></span>
54
- <span class="line"><span style="color:#B392F0"> src</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">image</span><span style="color:#E1E4E8">(featuredImage)}</span></span>
55
- <span class="line"><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">&#39;w-full h-full object-cover&#39;</span><span style="color:#E1E4E8">)}</span></span>
56
- <span class="line"><span style="color:#E1E4E8"> /&gt;</span></span>
57
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">&gt;</span></span>
58
- <span class="line"><span style="color:#E1E4E8"> &lt;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">&gt;</span></span>
28
+ <span class="line"><span style="color:#F97583">export</span><span style="color:#F97583"> default</span><span style="color:#F97583"> function</span><span style="color:#B392F0"> VideoIntro</span><span style="color:#E1E4E8">({ </span><span style="color:#FFAB70">tw</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">title</span><span style="color:#E1E4E8">, </span><span style="color:#FFAB70">subtitle</span><span style="color:#E1E4E8"> }) {</span></span>
29
+ <span class="line"><span style="color:#F97583"> return</span><span style="color:#E1E4E8"> (</span></span>
30
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'flex flex-col items-center justify-center w-full h-full bg-gradient-to-br from-blue-600 to-purple-700 gap-4'</span><span style="color:#E1E4E8">)}></span></span>
31
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'relative flex flex-row items-center gap-2 ease-out'</span><span style="color:#E1E4E8">)}></span></span>
32
+ <span class="line"><span style="color:#E1E4E8"> {</span><span style="color:#6A737D">/* loop-ping/500: scale up + fade out every 500ms (radar effect) */</span><span style="color:#E1E4E8">}</span></span>
33
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'w-3 h-3 bg-white rounded-full loop-ping/500'</span><span style="color:#E1E4E8">)} /></span></span>
34
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">div</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'text-white'</span><span style="color:#E1E4E8">)}>Label&#x3C;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">></span></span>
35
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">></span></span>
36
+ <span class="line"><span style="color:#E1E4E8"> {</span><span style="color:#6A737D">/* enter-fade-in/0/1200: fade in starting at 0ms, lasting 1200ms */</span><span style="color:#E1E4E8">}</span></span>
37
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">h1</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'text-7xl font-bold text-white enter-fade-in/0/1200'</span><span style="color:#E1E4E8">)}></span></span>
38
+ <span class="line"><span style="color:#E1E4E8"> {title}</span></span>
39
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;/</span><span style="color:#85E89D">h1</span><span style="color:#E1E4E8">></span></span>
40
+ <span class="line"><span style="color:#E1E4E8"> {</span><span style="color:#6A737D">/* enter-fade-in/300/1200: fade in starting at 300ms, lasting 1200ms */</span><span style="color:#E1E4E8">}</span></span>
41
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;</span><span style="color:#85E89D">p</span><span style="color:#B392F0"> style</span><span style="color:#F97583">=</span><span style="color:#E1E4E8">{</span><span style="color:#B392F0">tw</span><span style="color:#E1E4E8">(</span><span style="color:#9ECBFF">'text-2xl text-white/80 ease-out enter-fade-in/300/1200'</span><span style="color:#E1E4E8">)}></span></span>
42
+ <span class="line"><span style="color:#E1E4E8"> {subtitle}</span></span>
43
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;/</span><span style="color:#85E89D">p</span><span style="color:#E1E4E8">></span></span>
44
+ <span class="line"><span style="color:#E1E4E8"> &#x3C;/</span><span style="color:#85E89D">div</span><span style="color:#E1E4E8">></span></span>
59
45
  <span class="line"><span style="color:#E1E4E8"> );</span></span>
60
46
  <span class="line"><span style="color:#E1E4E8">}</span></span>
47
+ <span class="line"></span></code></pre> </div> </div> </div> </div>
48
+ <p><strong>Render it in one command:</strong></p>
49
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> video-intro</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Welcome!&quot;,&quot;subtitle&quot;:&quot;Built with loopwind&quot;}&#39;</span></span>
50
+ <span class="line"></span></code></pre>
51
+ <p><strong>Perfect for:</strong> Social media intros, animated logos, product demos, tutorial overlays.</p>
52
+ <hr/>
53
+ <h2 id="image-templates">Image Templates</h2>
54
+ <p>Generate Open Graph images, Twitter cards, and more:</p>
55
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="tsx"><code><span class="line"><span style="color:#E1E4E8">{imageCode}</span></span>
61
56
  <span class="line"></span></code></pre>
62
57
  <p><strong>Render it:</strong></p>
63
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> og-image</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello World&quot;,&quot;description&quot;:&quot;My awesome blog post&quot;}&#39;</span></span>
58
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> og-image</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello World&quot;,&quot;description&quot;:&quot;My awesome post&quot;}&#39;</span></span>
64
59
  <span class="line"></span></code></pre>
65
60
  <p><strong>Output:</strong> <code>_loopwind/outputs/og-image.png</code> (1200ร—630px)</p>
66
- <p><strong>Perfect for:</strong> Open Graph images, Twitter cards, blog headers, product cards, and quote graphics.</p>
67
- <h2 id="features">Features</h2>
61
+ <hr/>
62
+ <h2 id="why-loopwind">Why loopwind?</h2>
63
+ <h3 id="-beautiful-by-default">๐ŸŽจ Beautiful by Default</h3>
64
+ <p>Built on shadcn/ui design system with semantic colors (<code>text-primary</code>, <code>bg-card</code>) and Tailwind CSS utilities. Your templates look professional out of the box.</p>
65
+ <h3 id="-blazing-fast-rendering">โšก Blazing Fast Rendering</h3>
68
66
  <ul>
69
- <li>๐ŸŽจ <strong>shadcn/ui Design System</strong>: Beautiful, semantic colors out of the box (<code>text-primary</code>, <code>bg-card</code>, etc.)</li>
70
- <li>โœจ <strong>Template-based</strong>: Install design templates like you install UI components</li>
71
- <li>๐Ÿ–ผ๏ธ <strong>Serverless Image Rendering</strong>: Pure JavaScript rendering with Satori - works on Vercel, Netlify, Cloudflare Workers</li>
72
- <li>๐ŸŽฌ <strong>Serverless Video Rendering</strong>: WASM-based MP4 encoding - 12x faster than traditional approaches</li>
73
- <li>๐ŸŽจ <strong>Tailwind CSS Support</strong>: Style templates with Tailwind utility classes + opacity modifiers (<code>bg-primary/50</code>)</li>
74
- <li>๐Ÿ“ฑ <strong>Built-in Helpers</strong>: QR codes, image embedding, video backgrounds, template composition</li>
75
- <li>โœ… <strong>Smart Validation</strong>: Automatic prop and template validation with helpful error messages</li>
76
- <li>๐Ÿš€ <strong>Framework-agnostic</strong>: Works with Node, Bun, Deno, Laravel, Python, and more</li>
77
- <li>๐Ÿค– <strong>Agent-friendly</strong>: Machine-readable metadata for LLMs</li>
78
- <li>๐Ÿ“ฆ <strong>Easy installation</strong>: <code>npx loopwind add template-name</code></li>
79
- <li>๐ŸŒ <strong>Pure JavaScript/WASM</strong>: No native dependencies, works everywhere</li>
67
+ <li><strong>Serverless-ready</strong>: Pure JavaScript rendering with Satori - works on Vercel, Netlify, Cloudflare Workers</li>
68
+ <li><strong>WASM-powered video</strong>: MP4 encoding thatโ€™s 12x faster than traditional approaches</li>
69
+ <li><strong>No dependencies</strong>: No FFmpeg, no Chrome, no Docker. Just JavaScript.</li>
80
70
  </ul>
81
- <h2 id="quick-start">Quick Start</h2>
82
- <h3 id="installation">Installation</h3>
83
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npm</span><span style="color:#9ECBFF"> install</span><span style="color:#79B8FF"> -g</span><span style="color:#9ECBFF"> loopwind</span></span>
84
- <span class="line"></span></code></pre>
85
- <p>Or use with npx:</p>
86
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npx</span><span style="color:#9ECBFF"> loopwind</span><span style="color:#79B8FF"> --help</span></span>
87
- <span class="line"></span></code></pre>
88
- <h3 id="initialize-in-your-project">Initialize in Your Project</h3>
89
- <p>Navigate to any project folder and run:</p>
90
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> init</span></span>
71
+ <h3 id="-template-marketplace-coming-soon">๐Ÿ“ฆ Template Marketplace (coming soon)</h3>
72
+ <p>Install templates like UI components. Browse, add, and customize in seconds:</p>
73
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> banner-hero</span></span>
74
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> video-intro</span></span>
75
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> product-card</span></span>
91
76
  <span class="line"></span></code></pre>
92
- <p>This creates a <code>_loopwind/</code> folder where templates and outputs will be located.</p>
93
- <h3 id="install-a-template">Install a Template</h3>
94
- <h4 id="1-official-templates">1. Official Templates</h4>
95
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> image-template</span></span>
96
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> video-template</span></span>
77
+ <h3 id="-built-for-ai-agents">๐Ÿค– Built for AI Agents</h3>
78
+ <p>Machine-readable metadata and simple CLI make it perfect for automation:</p>
79
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6A737D"># Generate social media content programmatically</span></span>
80
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> og-image</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;&#39;</span><span style="color:#E1E4E8">$TITLE</span><span style="color:#9ECBFF">&#39;&quot;,&quot;description&quot;:&quot;&#39;</span><span style="color:#E1E4E8">$DESC</span><span style="color:#9ECBFF">&#39;&quot;}&#39;</span></span>
97
81
  <span class="line"></span></code></pre>
98
- <p>Templates are installed to: <code>_loopwind/templates/&lt;template&gt;/</code> (customizable in <code>loopwind.json</code>)</p>
99
- <p><strong>Benefits:</strong></p>
82
+ <h3 id="-framework-agnostic">๐Ÿš€ Framework Agnostic</h3>
83
+ <p>Works everywhere: Node.js, Bun, Deno, Python, PHP, Go. If it can run a CLI command, it can use loopwind.</p>
84
+ <hr/>
85
+ <h2 id="key-features">Key Features</h2>
100
86
  <ul>
101
- <li>Templates are local to your project</li>
102
- <li>Version controlled with your project</li>
103
- <li>Easy to share within your team</li>
87
+ <li>โœจ <strong>Template-based workflow</strong> - Install and customize design templates</li>
88
+ <li>๐ŸŽฌ <strong>Animation classes</strong> - <code>enter-fade-in/0/500</code>, <code>loop-spin/1000</code> - no manual calculations</li>
89
+ <li>๐Ÿ“ฑ <strong>Built-in helpers</strong> - QR codes, image embedding, video backgrounds, template composition</li>
90
+ <li>โœ… <strong>Smart validation</strong> - Automatic prop and template validation with helpful errors</li>
91
+ <li>๐ŸŽจ <strong>Full Tailwind support</strong> - Including opacity modifiers (<code>bg-primary/50</code>)</li>
92
+ <li>๐Ÿ”ง <strong>Zero config</strong> - Works out of the box, customize when you need to</li>
93
+ <li>๐Ÿ“ <strong>Type-safe</strong> - Full TypeScript support with prop validation</li>
94
+ <li>๐ŸŒ <strong>Edge-ready</strong> - Runs anywhere JavaScript runs</li>
104
95
  </ul>
105
- <h3 id="output-a-template">Output a Template</h3>
106
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> template-name</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello World&quot;,&quot;subtitle&quot;:&quot;Built with loopwind&quot;}&#39;</span></span>
107
- <span class="line"></span></code></pre>
108
- <h2 id="commands">Commands</h2>
109
- <h3 id="loopwind-add-source"><code>loopwind add &lt;source&gt;</code></h3>
110
- <p>Install a template from various sources:</p>
111
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6A737D"># From registry</span></span>
112
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> banner-hero</span></span>
113
- <span class="line"></span>
114
- <span class="line"><span style="color:#6A737D"># From GitHub</span></span>
115
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> github:username/repo/path/to/template</span></span>
116
- <span class="line"></span>
117
- <span class="line"><span style="color:#6A737D"># From URL</span></span>
118
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> https://example.com/my-template.json</span></span>
119
- <span class="line"></span>
120
- <span class="line"><span style="color:#6A737D"># From local path</span></span>
121
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> ./my-templates/custom-banner</span></span>
122
- <span class="line"></span></code></pre>
123
- <h3 id="loopwind-list"><code>loopwind list</code></h3>
124
- <p>List all installed templates:</p>
125
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> list</span></span>
126
- <span class="line"></span></code></pre>
127
- <h3 id="loopwind-render-template-props-options"><code>loopwind render &lt;template&gt; &lt;props&gt; [options]</code></h3>
128
- <p>Render an image or video:</p>
129
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#6A737D"># Image with inline props</span></span>
130
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> banner-hero</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello World&quot;}&#39;</span></span>
131
- <span class="line"></span>
132
- <span class="line"><span style="color:#6A737D"># Video with inline props</span></span>
133
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> video-intro</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Welcome&quot;}&#39;</span><span style="color:#79B8FF"> --out</span><span style="color:#9ECBFF"> intro.mp4</span></span>
134
- <span class="line"></span>
135
- <span class="line"><span style="color:#6A737D"># Using a props file</span></span>
136
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> banner-hero</span><span style="color:#9ECBFF"> props.json</span></span>
137
- <span class="line"></span>
138
- <span class="line"><span style="color:#6A737D"># Custom output</span></span>
139
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> banner-hero</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello&quot;}&#39;</span><span style="color:#79B8FF"> --out</span><span style="color:#9ECBFF"> custom-name.png</span></span>
140
- <span class="line"></span>
141
- <span class="line"><span style="color:#6A737D"># Different format</span></span>
142
- <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> banner-hero</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello&quot;}&#39;</span><span style="color:#79B8FF"> --format</span><span style="color:#9ECBFF"> jpeg</span></span>
143
- <span class="line"></span></code></pre>
144
- <p>Options:</p>
96
+ <hr/>
97
+ <h2 id="use-cases">Use Cases</h2>
98
+ <p><strong>Marketing Automation</strong></p>
145
99
  <ul>
146
- <li><code>--out, -o</code> - Output filename (default: <code>_loopwind/outputs/&lt;template&gt;.&lt;ext&gt;</code>)</li>
147
- <li><code>--format</code> - Output format: <code>png</code>, <code>jpeg</code>, <code>svg</code> (images only)</li>
148
- <li><code>--quality</code> - JPEG quality 1-100 (default: 92)</li>
100
+ <li>Generate personalized email headers</li>
101
+ <li>Create dynamic social media posts</li>
102
+ <li>Automate Open Graph images</li>
149
103
  </ul>
150
- <h3 id="loopwind-validate-template"><code>loopwind validate &lt;template&gt;</code></h3>
151
- <p>Validate a template:</p>
152
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> validate</span><span style="color:#9ECBFF"> banner-hero</span></span>
153
- <span class="line"></span></code></pre>
154
- <p>Checks:</p>
104
+ <p><strong>Content Creation</strong></p>
105
+ <ul>
106
+ <li>Produce video intros and outros</li>
107
+ <li>Generate thumbnail variations</li>
108
+ <li>Create branded graphics at scale</li>
109
+ </ul>
110
+ <p><strong>Developer Tools</strong></p>
155
111
  <ul>
156
- <li>Template file exists and is valid React</li>
157
- <li><code>export const meta</code> exists and is valid</li>
158
- <li>Required props are defined</li>
159
- <li>Fonts exist (if specified)</li>
112
+ <li>Build dynamic README badges</li>
113
+ <li>Generate documentation images</li>
114
+ <li>Create automated reports</li>
160
115
  </ul>
161
- <h3 id="loopwind-init"><code>loopwind init</code></h3>
162
- <p>Initialize loopwind in a project:</p>
163
- <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> init</span></span>
116
+ <p><strong>E-commerce</strong></p>
117
+ <ul>
118
+ <li>Product card generation</li>
119
+ <li>Sale announcement videos</li>
120
+ <li>Dynamic pricing graphics</li>
121
+ </ul>
122
+ <hr/>
123
+ <h2 id="get-started">Get Started</h2>
124
+ <pre class="astro-code github-dark" style="background-color:#24292e;color:#e1e4e8;overflow-x:auto" tabindex="0" data-language="bash"><code><span class="line"><span style="color:#B392F0">npm</span><span style="color:#9ECBFF"> install</span><span style="color:#79B8FF"> -g</span><span style="color:#9ECBFF"> loopwind</span></span>
125
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> init</span></span>
126
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> add</span><span style="color:#9ECBFF"> video-intro</span></span>
127
+ <span class="line"><span style="color:#B392F0">loopwind</span><span style="color:#9ECBFF"> render</span><span style="color:#9ECBFF"> video-intro</span><span style="color:#9ECBFF"> &#39;{&quot;title&quot;:&quot;Hello World&quot;}&#39;</span></span>
164
128
  <span class="line"></span></code></pre>
165
- <p>Creates <code>loopwind.json</code> configuration file.</p>
166
- <h2 id="next-steps">Next Steps</h2>
129
+ <p><a href="/getting-started">View Full Documentation</a> ยท <a href="/templates">Browse Templates</a> ยท <a href="/images">See Examples</a></p>
130
+ <hr/>
131
+ <h2 id="learn-more">Learn More</h2>
167
132
  <ul>
168
- <li><a href="/templates">Learn about Templates</a></li>
169
- <li><a href="/images">Image Rendering</a></li>
170
- <li><a href="/video">Video Rendering</a></li>
171
- <li><a href="/helpers">Helpers (QR, Template Composition)</a></li>
172
- <li><a href="/styling">Styling with Tailwind &amp; shadcn/ui</a></li>
173
- <li><a href="/fonts">Custom Fonts</a></li>
174
- </ul> </article> </div> </main> </div> </body></html>
133
+ <li><a href="/getting-started">Getting Started Guide</a> - Installation and first steps</li>
134
+ <li><a href="/templates">Templates</a> - Create and customize templates</li>
135
+ <li><a href="/images">Images</a> - Static image generation</li>
136
+ <li><a href="/video">Video</a> - Animated video rendering</li>
137
+ <li><a href="/styling">Styling</a> - Tailwind &amp; shadcn/ui integration</li>
138
+ <li><a href="/sdk">SDK</a> - Programmatic usage</li>
139
+ <li><a href="/agents">AI Agents</a> - Integration guide for LLMs</li>
140
+ </ul> </article> </div> </main> <!-- Table of Contents Sidebar (Desktop only) --> </div> </body></html>