loopwind 0.23.0 → 0.24.1
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.
- package/README.md +13 -117
- package/dist/cli.js +16 -10
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +6 -10
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/agent.d.ts +8 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +101 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +17 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/render.d.ts.map +1 -1
- package/dist/commands/render.js +17 -19
- package/dist/commands/render.js.map +1 -1
- package/dist/default-templates/AGENTS.md +10 -24
- package/dist/lib/config.d.ts +2 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +4 -9
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/constants.d.ts +1 -3
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +2 -4
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/installer.d.ts +2 -0
- package/dist/lib/installer.d.ts.map +1 -1
- package/dist/lib/installer.js +6 -7
- package/dist/lib/installer.js.map +1 -1
- package/dist/lib/renderer.d.ts.map +1 -1
- package/dist/lib/renderer.js +4 -1
- package/dist/lib/renderer.js.map +1 -1
- package/dist/lib/utils.d.ts +13 -29
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +45 -155
- package/dist/lib/utils.js.map +1 -1
- package/dist/types/config.d.ts +0 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +1 -15
- package/REGISTRY_SETUP.md +0 -363
- package/dist/default-templates/image/template.d.ts +0 -20
- package/dist/default-templates/image/template.d.ts.map +0 -1
- package/dist/default-templates/image/template.js +0 -18
- package/dist/default-templates/image/template.js.map +0 -1
- package/dist/default-templates/image/template.tsx +0 -20
- package/dist/default-templates/kitchen-sink/template.tsx +0 -64
- package/dist/default-templates/page/template.tsx +0 -37
- package/dist/default-templates/video/template.d.ts +0 -26
- package/dist/default-templates/video/template.d.ts.map +0 -1
- package/dist/default-templates/video/template.js +0 -33
- package/dist/default-templates/video/template.js.map +0 -1
- package/dist/default-templates/video/template.tsx +0 -37
- package/dist/default-templates/website/pages/home.tsx +0 -17
- package/dist/default-templates/website/parts/footer.tsx +0 -17
- package/dist/default-templates/website/parts/header.tsx +0 -17
- package/dist/default-templates/website/template.tsx +0 -17
- package/dist/default-templates/website-template/pages/home.tsx +0 -13
- package/dist/default-templates/website-template/parts/footer.tsx +0 -15
- package/dist/default-templates/website-template/parts/header.tsx +0 -15
- package/dist/default-templates/website-template/template.tsx +0 -32
- package/dist/lib/encode-worker.d.ts +0 -2
- package/dist/lib/encode-worker.d.ts.map +0 -1
- package/dist/lib/encode-worker.js +0 -29
- package/dist/lib/encode-worker.js.map +0 -1
- package/dist/lib/mjpeg-muxer.d.ts +0 -46
- package/dist/lib/mjpeg-muxer.d.ts.map +0 -1
- package/dist/lib/mjpeg-muxer.js +0 -513
- package/dist/lib/mjpeg-muxer.js.map +0 -1
- package/dist/lib/render-core.d.ts +0 -63
- package/dist/lib/render-core.d.ts.map +0 -1
- package/dist/lib/render-core.js +0 -65
- package/dist/lib/render-core.js.map +0 -1
- package/dist/lib/tailwind-browser.d.ts +0 -27
- package/dist/lib/tailwind-browser.d.ts.map +0 -1
- package/dist/lib/tailwind-browser.js +0 -853
- package/dist/lib/tailwind-browser.js.map +0 -1
- package/dist/lib/video-player.d.ts +0 -25
- package/dist/lib/video-player.d.ts.map +0 -1
- package/dist/lib/video-player.js +0 -392
- package/dist/lib/video-player.js.map +0 -1
- package/dist/sdk/compiler.d.ts +0 -94
- package/dist/sdk/compiler.d.ts.map +0 -1
- package/dist/sdk/compiler.js +0 -122
- package/dist/sdk/compiler.js.map +0 -1
- package/dist/sdk/edge/index.d.ts +0 -91
- package/dist/sdk/edge/index.d.ts.map +0 -1
- package/dist/sdk/edge/index.js +0 -187
- package/dist/sdk/edge/index.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -62
- package/dist/sdk/index.d.ts.map +0 -1
- package/dist/sdk/index.js +0 -141
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/preview.d.ts +0 -65
- package/dist/sdk/preview.d.ts.map +0 -1
- package/dist/sdk/preview.js +0 -262
- package/dist/sdk/preview.js.map +0 -1
- package/dist/sdk/template.d.ts +0 -162
- package/dist/sdk/template.d.ts.map +0 -1
- package/dist/sdk/template.js +0 -231
- package/dist/sdk/template.js.map +0 -1
- package/dist/sdk/workers/index.d.ts +0 -135
- package/dist/sdk/workers/index.d.ts.map +0 -1
- package/dist/sdk/workers/index.js +0 -271
- package/dist/sdk/workers/index.js.map +0 -1
- package/dist/sdk/workers/tailwind-config.d.ts +0 -48
- package/dist/sdk/workers/tailwind-config.d.ts.map +0 -1
- package/dist/sdk/workers/tailwind-config.js +0 -187
- package/dist/sdk/workers/tailwind-config.js.map +0 -1
- package/dist/sdk/workers/tailwind.d.ts +0 -9
- package/dist/sdk/workers/tailwind.d.ts.map +0 -1
- package/dist/sdk/workers/tailwind.js +0 -8
- package/dist/sdk/workers/tailwind.js.map +0 -1
- package/examples/code-editor-templates.ts +0 -173
- package/examples/nextjs-api/README.md +0 -180
- package/examples/nextjs-api/package.json +0 -21
- package/examples/nextjs-api/pages/api/intro-video.ts +0 -53
- package/examples/nextjs-api/pages/api/og-image.ts +0 -50
- package/examples/nextjs-template-import.ts +0 -58
- package/examples/sdk-video-preview.tsx +0 -120
- package/examples/template-compiler-workflow.ts +0 -251
- package/examples/visual-builder-templates.ts +0 -336
- package/render-examples-600x400.mjs +0 -161
- package/render-spring-variants-fixed.mjs +0 -60
- package/render-staggered-text.mjs +0 -56
- package/test-cloudflare-worker/README.md +0 -64
- package/test-cloudflare-worker/dist/README.md +0 -1
- package/test-cloudflare-worker/dist/index.js +0 -23743
- package/test-cloudflare-worker/dist/index.js.map +0 -8
- package/test-cloudflare-worker/package-lock.json +0 -1773
- package/test-cloudflare-worker/package.json +0 -25
- package/test-cloudflare-worker/test-sdk.mjs +0 -75
- package/test-cloudflare-worker/wrangler.toml +0 -14
- package/test-font-files.mjs +0 -72
- package/test-jsx-support.mjs +0 -146
- package/test-sdk-config.mjs +0 -454
- package/test-sdk-source-config.mjs +0 -427
- package/test-sdk-user-templates.mjs +0 -469
- package/test-static-debug.tsx +0 -19
- package/test-templates/TESTS.md +0 -63
- package/test-templates/config-test.mjs +0 -17
- package/test-templates/demo-intro-props.json +0 -4
- package/test-templates/run-tests.sh +0 -44
- package/test-templates/test-sdk.mjs +0 -139
- package/test-video-720p.mjs +0 -96
- package/test-video-breakdown.mjs +0 -98
- package/test-video-perf-1080.mjs +0 -67
- package/test-video-perf.mjs +0 -56
- package/test-video-props.json +0 -3
- package/test-worker-1080p.mjs +0 -103
- package/test-worker-viability.mjs +0 -140
- package/website/.astro/content.db +0 -0
- package/website/.astro/integrations/_inox-tools_astro-when/types.d.ts +0 -1
- package/website/.astro/integrations/astro_db/db.d.ts +0 -15
- package/website/.astro/settings.json +0 -5
- package/website/.astro/types.d.ts +0 -2
- package/website/DEPLOYMENT.md +0 -143
- package/website/OG_IMAGES.md +0 -142
- package/website/README.md +0 -158
- package/website/astro.config.mjs +0 -41
- package/website/dist/.gitkeep +0 -5
- package/website/dist/_astro/PlaygroundEditor.DzFavsm8.js +0 -26
- package/website/dist/_astro/VideoPreviewClient.BrajhYmh.js +0 -1
- package/website/dist/_astro/agents.CZXv4DCM.css +0 -1
- package/website/dist/_astro/client.BHSq4mdQ.js +0 -33
- package/website/dist/_astro/index.CTbGshLK.js +0 -9
- package/website/dist/_astro/jsx-runtime.BjG_zV1W.js +0 -9
- package/website/dist/_routes.json +0 -31
- package/website/dist/_worker.js/_@astrojs-ssr-adapter.mjs +0 -1033
- package/website/dist/_worker.js/_astro-internal_middleware.mjs +0 -40
- package/website/dist/_worker.js/chunks/Logo_Cud5QvBJ.mjs +0 -22
- package/website/dist/_worker.js/chunks/_@astro-renderers_-YVK7NHa.mjs +0 -15015
- package/website/dist/_worker.js/chunks/abap_BTmsHiP5.mjs +0 -1
- package/website/dist/_worker.js/chunks/actionscript-3_DmBelb1E.mjs +0 -1
- package/website/dist/_worker.js/chunks/ada_8-E0ahCN.mjs +0 -1
- package/website/dist/_worker.js/chunks/andromeeda_XI-CXx50.mjs +0 -1
- package/website/dist/_worker.js/chunks/angular-html_DKGh3gGH.mjs +0 -1
- package/website/dist/_worker.js/chunks/angular-ts_-qZGsJoA.mjs +0 -1
- package/website/dist/_worker.js/chunks/apache_ijTUt0Ee.mjs +0 -1
- package/website/dist/_worker.js/chunks/apex_agu1c6Sh.mjs +0 -1
- package/website/dist/_worker.js/chunks/apl_Bj2f7Art.mjs +0 -1
- package/website/dist/_worker.js/chunks/applescript_B_vXrOh3.mjs +0 -1
- package/website/dist/_worker.js/chunks/ara_DCEQ2rnh.mjs +0 -1
- package/website/dist/_worker.js/chunks/asciidoc_CGN_EkYS.mjs +0 -1
- package/website/dist/_worker.js/chunks/asm_BBWZgnDp.mjs +0 -1
- package/website/dist/_worker.js/chunks/astro/assets-service_j52rQLzU.mjs +0 -721
- package/website/dist/_worker.js/chunks/astro/server_CsUrSZgd.mjs +0 -2512
- package/website/dist/_worker.js/chunks/astro-designed-error-pages_1ELXm5Tt.mjs +0 -542
- package/website/dist/_worker.js/chunks/astro_Dr_hht3h.mjs +0 -1
- package/website/dist/_worker.js/chunks/aurora-x_9GHG8nSq.mjs +0 -1
- package/website/dist/_worker.js/chunks/awk_DHRvhXot.mjs +0 -1
- package/website/dist/_worker.js/chunks/ayu-dark_CcvqmEHE.mjs +0 -1
- package/website/dist/_worker.js/chunks/ballerina_C7SdeSZb.mjs +0 -1
- package/website/dist/_worker.js/chunks/bat_Dv4A3u45.mjs +0 -1
- package/website/dist/_worker.js/chunks/beancount_BfPf9Luv.mjs +0 -1
- package/website/dist/_worker.js/chunks/berry_B8rfM3lL.mjs +0 -1
- package/website/dist/_worker.js/chunks/bibtex_TcjYgtJM.mjs +0 -1
- package/website/dist/_worker.js/chunks/bicep_CrlFWCdN.mjs +0 -1
- package/website/dist/_worker.js/chunks/blade_lanKVYID.mjs +0 -1
- package/website/dist/_worker.js/chunks/bsl_BhppzXMB.mjs +0 -1
- package/website/dist/_worker.js/chunks/c_6FBALJTK.mjs +0 -1
- package/website/dist/_worker.js/chunks/cadence_2txU9LVE.mjs +0 -1
- package/website/dist/_worker.js/chunks/cairo_BkrFAIlP.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-frappe_CkEqIYhU.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-latte_DG4Gx_-v.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-macchiato_Cwi3vCXf.mjs +0 -1
- package/website/dist/_worker.js/chunks/catppuccin-mocha_L9_OPlFX.mjs +0 -1
- package/website/dist/_worker.js/chunks/clarity_BEAe4Ulu.mjs +0 -1
- package/website/dist/_worker.js/chunks/clojure_VnUX6p2g.mjs +0 -1
- package/website/dist/_worker.js/chunks/cmake_0-SGkZEj.mjs +0 -1
- package/website/dist/_worker.js/chunks/cobol_92M_KGaE.mjs +0 -1
- package/website/dist/_worker.js/chunks/codeowners_CzMwskBv.mjs +0 -1
- package/website/dist/_worker.js/chunks/codeql_DWJZNHv1.mjs +0 -1
- package/website/dist/_worker.js/chunks/coffee_CQjKU2fh.mjs +0 -1
- package/website/dist/_worker.js/chunks/common-lisp_BBLWDpS5.mjs +0 -1
- package/website/dist/_worker.js/chunks/coq_hedRFV3D.mjs +0 -1
- package/website/dist/_worker.js/chunks/cpp_DlS1i6Zs.mjs +0 -1
- package/website/dist/_worker.js/chunks/crystal_D6n65fKV.mjs +0 -1
- package/website/dist/_worker.js/chunks/csharp_C6FCVFzc.mjs +0 -1
- package/website/dist/_worker.js/chunks/css_C5uJEgmJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/csv_CtMYuuJl.mjs +0 -1
- package/website/dist/_worker.js/chunks/cue_BsPexqx6.mjs +0 -1
- package/website/dist/_worker.js/chunks/cypher_apzf6OBi.mjs +0 -1
- package/website/dist/_worker.js/chunks/d_DcvIRcgm.mjs +0 -1
- package/website/dist/_worker.js/chunks/dark-plus_C01ONtzj.mjs +0 -1
- package/website/dist/_worker.js/chunks/dart_WkzM5WrV.mjs +0 -1
- package/website/dist/_worker.js/chunks/dax_DjXAO5V4.mjs +0 -1
- package/website/dist/_worker.js/chunks/desktop_C92LCxdc.mjs +0 -1
- package/website/dist/_worker.js/chunks/diff_CVwM_9XJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/docker_DPzgJf6Z.mjs +0 -1
- package/website/dist/_worker.js/chunks/dotenv_D_vgANvA.mjs +0 -1
- package/website/dist/_worker.js/chunks/dracula-soft_CLnUBwFm.mjs +0 -1
- package/website/dist/_worker.js/chunks/dracula_lBVpb6Lb.mjs +0 -1
- package/website/dist/_worker.js/chunks/dream-maker_DTLbzd_J.mjs +0 -1
- package/website/dist/_worker.js/chunks/edge_i54JYm3_.mjs +0 -1
- package/website/dist/_worker.js/chunks/elixir_BJCIjTu4.mjs +0 -1
- package/website/dist/_worker.js/chunks/elm_BbXD39-_.mjs +0 -1
- package/website/dist/_worker.js/chunks/emacs-lisp_pxa5cXaN.mjs +0 -1
- package/website/dist/_worker.js/chunks/erb_Ccjijeee.mjs +0 -1
- package/website/dist/_worker.js/chunks/erlang_B2VM_hi7.mjs +0 -1
- package/website/dist/_worker.js/chunks/everforest-dark_BxvIPBim.mjs +0 -1
- package/website/dist/_worker.js/chunks/everforest-light_B7VoyaJM.mjs +0 -1
- package/website/dist/_worker.js/chunks/fennel_D-uo7X6c.mjs +0 -1
- package/website/dist/_worker.js/chunks/fish_BjePoK3m.mjs +0 -1
- package/website/dist/_worker.js/chunks/fluent_C8fgkzLX.mjs +0 -1
- package/website/dist/_worker.js/chunks/fortran-fixed-form_D1pu5zrc.mjs +0 -1
- package/website/dist/_worker.js/chunks/fortran-free-form_CSGOhJD6.mjs +0 -1
- package/website/dist/_worker.js/chunks/fsharp_B0xy-A4Y.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdresource_CWppjlHq.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdscript_eQCHchcS.mjs +0 -1
- package/website/dist/_worker.js/chunks/gdshader_C4kxepX7.mjs +0 -1
- package/website/dist/_worker.js/chunks/genie_ACtQLcDW.mjs +0 -1
- package/website/dist/_worker.js/chunks/gherkin_BFp2uKUd.mjs +0 -1
- package/website/dist/_worker.js/chunks/git-commit_CLg9ZwMV.mjs +0 -1
- package/website/dist/_worker.js/chunks/git-rebase_DG8A80Nt.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-default_BI0EP2Kv.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-dimmed_a_NIC0Xb.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark-high-contrast_jZGqT7hk.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-dark_CHCDNd2O.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light-default_DRbOW5RG.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light-high-contrast_tn_kWutM.mjs +0 -1
- package/website/dist/_worker.js/chunks/github-light_D9brYzot.mjs +0 -1
- package/website/dist/_worker.js/chunks/gleam_Dmhu1oxW.mjs +0 -1
- package/website/dist/_worker.js/chunks/glimmer-js_BfZbXy8A.mjs +0 -1
- package/website/dist/_worker.js/chunks/glimmer-ts_B9QVICrD.mjs +0 -1
- package/website/dist/_worker.js/chunks/glsl_DD2PPwOs.mjs +0 -1
- package/website/dist/_worker.js/chunks/gnuplot_D2OYChUX.mjs +0 -1
- package/website/dist/_worker.js/chunks/go_DYGFTe3h.mjs +0 -1
- package/website/dist/_worker.js/chunks/graphql_B7XsT3nH.mjs +0 -1
- package/website/dist/_worker.js/chunks/groovy_BO12Uwkl.mjs +0 -1
- package/website/dist/_worker.js/chunks/hack_CB2_ztCP.mjs +0 -1
- package/website/dist/_worker.js/chunks/haml_CyfDcDD3.mjs +0 -1
- package/website/dist/_worker.js/chunks/handlebars_CfpxpWm2.mjs +0 -1
- package/website/dist/_worker.js/chunks/haskell_jUeC5uN5.mjs +0 -1
- package/website/dist/_worker.js/chunks/haxe_B6GxP1WB.mjs +0 -1
- package/website/dist/_worker.js/chunks/hcl_DwoHV2oh.mjs +0 -1
- package/website/dist/_worker.js/chunks/hjson_DV7cJRk4.mjs +0 -1
- package/website/dist/_worker.js/chunks/hlsl_BlFCscPI.mjs +0 -1
- package/website/dist/_worker.js/chunks/houston_COBFG1Mx.mjs +0 -1
- package/website/dist/_worker.js/chunks/html-derivative_C9pJ337h.mjs +0 -1
- package/website/dist/_worker.js/chunks/html_D1OkrZS5.mjs +0 -1
- package/website/dist/_worker.js/chunks/http_DIGXRqvJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/hxml_DEwh9i-c.mjs +0 -1
- package/website/dist/_worker.js/chunks/hy_DDoIgW1K.mjs +0 -1
- package/website/dist/_worker.js/chunks/imba_B00zbHo4.mjs +0 -1
- package/website/dist/_worker.js/chunks/index_BDWR1Q-q.mjs +0 -1861
- package/website/dist/_worker.js/chunks/ini_D7XQA_p8.mjs +0 -1
- package/website/dist/_worker.js/chunks/java_B9wdFd8K.mjs +0 -1
- package/website/dist/_worker.js/chunks/javascript_CLsPGOON.mjs +0 -1
- package/website/dist/_worker.js/chunks/jinja_jarBCAN1.mjs +0 -1
- package/website/dist/_worker.js/chunks/jison_oGg3J708.mjs +0 -1
- package/website/dist/_worker.js/chunks/json5_DlZ1Kyaa.mjs +0 -1
- package/website/dist/_worker.js/chunks/json_DaYk_FMp.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonc_DlwgfSDs.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonl_BbCCVaZF.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsonnet_Dt-G75xe.mjs +0 -1
- package/website/dist/_worker.js/chunks/jssm_BtKFTj2A.mjs +0 -1
- package/website/dist/_worker.js/chunks/jsx_DDx_xAZ8.mjs +0 -1
- package/website/dist/_worker.js/chunks/julia_CK0lv68l.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-dragon_BldAK3Oo.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-lotus_DVM8FX9_.mjs +0 -1
- package/website/dist/_worker.js/chunks/kanagawa-wave_Dpih0AKP.mjs +0 -1
- package/website/dist/_worker.js/chunks/kotlin_kWneB9V_.mjs +0 -1
- package/website/dist/_worker.js/chunks/kusto_BKVATd95.mjs +0 -1
- package/website/dist/_worker.js/chunks/laserwave_BqatxsVl.mjs +0 -1
- package/website/dist/_worker.js/chunks/latex_LVDcGBbc.mjs +0 -1
- package/website/dist/_worker.js/chunks/lean_W7qo-5M2.mjs +0 -1
- package/website/dist/_worker.js/chunks/less_DFNwJnBH.mjs +0 -1
- package/website/dist/_worker.js/chunks/light-plus_Dp0AoWsO.mjs +0 -1
- package/website/dist/_worker.js/chunks/liquid_D24qs0pc.mjs +0 -1
- package/website/dist/_worker.js/chunks/log_IPWMXriF.mjs +0 -1
- package/website/dist/_worker.js/chunks/logo_C6KaatrQ.mjs +0 -1
- package/website/dist/_worker.js/chunks/lua_CwnEf-T7.mjs +0 -1
- package/website/dist/_worker.js/chunks/luau_Br3-CXjS.mjs +0 -1
- package/website/dist/_worker.js/chunks/make_UBNG-kOo.mjs +0 -1
- package/website/dist/_worker.js/chunks/markdown_C7mhJFCm.mjs +0 -1
- package/website/dist/_worker.js/chunks/marko_4tchUvI7.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-darker_SKtaNEPn.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-lighter_zOX_DZCH.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-ocean_BN9WbhdC.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme-palenight_DT_covjH.mjs +0 -1
- package/website/dist/_worker.js/chunks/material-theme_6RpeM3kc.mjs +0 -1
- package/website/dist/_worker.js/chunks/matlab_DCOXsPKR.mjs +0 -1
- package/website/dist/_worker.js/chunks/mdc_B9gb2UFP.mjs +0 -1
- package/website/dist/_worker.js/chunks/mdx_DGU7Nu9u.mjs +0 -1
- package/website/dist/_worker.js/chunks/mermaid_B69URzsZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/min-dark_BgxifOMI.mjs +0 -1
- package/website/dist/_worker.js/chunks/min-light_BrPjXxUp.mjs +0 -1
- package/website/dist/_worker.js/chunks/mipsasm_9U-4_t7k.mjs +0 -1
- package/website/dist/_worker.js/chunks/mojo_B0wt7ug3.mjs +0 -1
- package/website/dist/_worker.js/chunks/monokai_B6Pxpoyi.mjs +0 -1
- package/website/dist/_worker.js/chunks/move_1eid4CyR.mjs +0 -1
- package/website/dist/_worker.js/chunks/narrat_Ds6-p5JZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/nextflow_v2N1Qlqa.mjs +0 -1
- package/website/dist/_worker.js/chunks/nginx_Bp9Ab2NH.mjs +0 -1
- package/website/dist/_worker.js/chunks/night-owl_CdwOw_sc.mjs +0 -1
- package/website/dist/_worker.js/chunks/nim_BXGDUe53.mjs +0 -1
- package/website/dist/_worker.js/chunks/nix_CUig1nJH.mjs +0 -1
- package/website/dist/_worker.js/chunks/noop-middleware_B8fH5jha.mjs +0 -10
- package/website/dist/_worker.js/chunks/nord_SPoG1iae.mjs +0 -1
- package/website/dist/_worker.js/chunks/nushell_DJw1Lca8.mjs +0 -1
- package/website/dist/_worker.js/chunks/objective-c_Bktzl_CO.mjs +0 -1
- package/website/dist/_worker.js/chunks/objective-cpp_CP4DWdDp.mjs +0 -1
- package/website/dist/_worker.js/chunks/ocaml_CeEAs7bZ.mjs +0 -1
- package/website/dist/_worker.js/chunks/one-dark-pro_-hIwCNMi.mjs +0 -1
- package/website/dist/_worker.js/chunks/one-light_DSmYvJ05.mjs +0 -1
- package/website/dist/_worker.js/chunks/pascal_C-S_Ms_o.mjs +0 -1
- package/website/dist/_worker.js/chunks/perl_CKamvo15.mjs +0 -1
- package/website/dist/_worker.js/chunks/php_BlmcX_F3.mjs +0 -1
- package/website/dist/_worker.js/chunks/plastic_Ryt8tVoA.mjs +0 -1
- package/website/dist/_worker.js/chunks/plsql_Cb3v7cBj.mjs +0 -1
- package/website/dist/_worker.js/chunks/po_DZbdNRlo.mjs +0 -1
- package/website/dist/_worker.js/chunks/poimandres_bYmE3_5d.mjs +0 -1
- package/website/dist/_worker.js/chunks/polar_pJkMGwoW.mjs +0 -1
- package/website/dist/_worker.js/chunks/postcss_BAXSOKgk.mjs +0 -1
- package/website/dist/_worker.js/chunks/powerquery_oITMGN4x.mjs +0 -1
- package/website/dist/_worker.js/chunks/powershell_6306-xIF.mjs +0 -1
- package/website/dist/_worker.js/chunks/prisma_DSDxnZGz.mjs +0 -1
- package/website/dist/_worker.js/chunks/prolog_CxG7tjZR.mjs +0 -1
- package/website/dist/_worker.js/chunks/proto_CS9ByXm1.mjs +0 -1
- package/website/dist/_worker.js/chunks/pug_BMtLJo6U.mjs +0 -1
- package/website/dist/_worker.js/chunks/puppet_BfeeSzee.mjs +0 -1
- package/website/dist/_worker.js/chunks/purescript_BFfueNaH.mjs +0 -1
- package/website/dist/_worker.js/chunks/python_Cc4Faapv.mjs +0 -1
- package/website/dist/_worker.js/chunks/qml_C1CTJTK8.mjs +0 -1
- package/website/dist/_worker.js/chunks/qmldir_nG1KaqKR.mjs +0 -1
- package/website/dist/_worker.js/chunks/qss_Cncxk263.mjs +0 -1
- package/website/dist/_worker.js/chunks/r_ChR54Ihi.mjs +0 -1
- package/website/dist/_worker.js/chunks/racket_BDrhptDs.mjs +0 -1
- package/website/dist/_worker.js/chunks/raku_07OUHa0P.mjs +0 -1
- package/website/dist/_worker.js/chunks/razor_DIP3INLa.mjs +0 -1
- package/website/dist/_worker.js/chunks/red_DOPXfj-6.mjs +0 -1
- package/website/dist/_worker.js/chunks/reg_B64SwEDj.mjs +0 -1
- package/website/dist/_worker.js/chunks/regexp_ButFGoB5.mjs +0 -1
- package/website/dist/_worker.js/chunks/rel_BWJAWqZD.mjs +0 -1
- package/website/dist/_worker.js/chunks/riscv_79gXlbsF.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine-dawn_DHIjVGd3.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine-moon_t86aEbs0.mjs +0 -1
- package/website/dist/_worker.js/chunks/rose-pine_BHgrcDCs.mjs +0 -1
- package/website/dist/_worker.js/chunks/rst_D3F4Fcpj.mjs +0 -1
- package/website/dist/_worker.js/chunks/ruby_Cs7vM9iv.mjs +0 -1
- package/website/dist/_worker.js/chunks/rust_DpyRVatH.mjs +0 -1
- package/website/dist/_worker.js/chunks/sas_DW45xZXN.mjs +0 -1
- package/website/dist/_worker.js/chunks/sass_C6SiMwN_.mjs +0 -1
- package/website/dist/_worker.js/chunks/scala_DlZOjNZk.mjs +0 -1
- package/website/dist/_worker.js/chunks/scheme_D2ezSJXu.mjs +0 -1
- package/website/dist/_worker.js/chunks/scss_DG5Spjqu.mjs +0 -1
- package/website/dist/_worker.js/chunks/sdbl_ZCYaj4VN.mjs +0 -1
- package/website/dist/_worker.js/chunks/shaderlab_CAcRkg1_.mjs +0 -1
- package/website/dist/_worker.js/chunks/shellscript_BWwhkDVh.mjs +0 -1
- package/website/dist/_worker.js/chunks/shellsession_BfEA3juK.mjs +0 -1
- package/website/dist/_worker.js/chunks/slack-dark_CL3lSpCc.mjs +0 -1
- package/website/dist/_worker.js/chunks/slack-ochin_DdZKOQVh.mjs +0 -1
- package/website/dist/_worker.js/chunks/smalltalk_DgilzSui.mjs +0 -1
- package/website/dist/_worker.js/chunks/snazzy-light_eJU08Pz_.mjs +0 -1
- package/website/dist/_worker.js/chunks/solarized-dark_Dg_YQywx.mjs +0 -1
- package/website/dist/_worker.js/chunks/solarized-light_BnIsrA6p.mjs +0 -1
- package/website/dist/_worker.js/chunks/solidity_DkseH8pQ.mjs +0 -1
- package/website/dist/_worker.js/chunks/soy_DU7bOYoG.mjs +0 -1
- package/website/dist/_worker.js/chunks/sparql_BuI1DBDH.mjs +0 -1
- package/website/dist/_worker.js/chunks/splunk_B8Ha9Pkg.mjs +0 -1
- package/website/dist/_worker.js/chunks/sql_BniHwea5.mjs +0 -1
- package/website/dist/_worker.js/chunks/ssh-config_CkE1GuVe.mjs +0 -1
- package/website/dist/_worker.js/chunks/stata_Dtqpbd_l.mjs +0 -1
- package/website/dist/_worker.js/chunks/stylus_CXTtglzO.mjs +0 -1
- package/website/dist/_worker.js/chunks/svelte_BjWYcUCN.mjs +0 -1
- package/website/dist/_worker.js/chunks/swift_BzHql_rM.mjs +0 -1
- package/website/dist/_worker.js/chunks/synthwave-84_DLRNhxNA.mjs +0 -1
- package/website/dist/_worker.js/chunks/system-verilog_ChyInPph.mjs +0 -1
- package/website/dist/_worker.js/chunks/systemd_Bi9Qa2qD.mjs +0 -1
- package/website/dist/_worker.js/chunks/talonscript_B3sH_Y-V.mjs +0 -1
- package/website/dist/_worker.js/chunks/tasl_BJ5yipRs.mjs +0 -1
- package/website/dist/_worker.js/chunks/tcl_CoJQjNoP.mjs +0 -1
- package/website/dist/_worker.js/chunks/templ_CrU7Ffil.mjs +0 -1
- package/website/dist/_worker.js/chunks/terraform_DT9JSFpC.mjs +0 -1
- package/website/dist/_worker.js/chunks/tex_5PKu2yA0.mjs +0 -1
- package/website/dist/_worker.js/chunks/tokyo-night_Buo8OK7-.mjs +0 -1
- package/website/dist/_worker.js/chunks/toml_CPuXX3oc.mjs +0 -1
- package/website/dist/_worker.js/chunks/ts-tags_D0M_1VSH.mjs +0 -1
- package/website/dist/_worker.js/chunks/tsv_CuivVNot.mjs +0 -1
- package/website/dist/_worker.js/chunks/tsx_MkuGr8MY.mjs +0 -1
- package/website/dist/_worker.js/chunks/turtle_BqgEPK7f.mjs +0 -1
- package/website/dist/_worker.js/chunks/twig_r1G9rpYJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/typescript_Au5buqzM.mjs +0 -1
- package/website/dist/_worker.js/chunks/typespec_47rhBK_z.mjs +0 -1
- package/website/dist/_worker.js/chunks/typst_BAtuQLh-.mjs +0 -1
- package/website/dist/_worker.js/chunks/v_BIvWImHg.mjs +0 -1
- package/website/dist/_worker.js/chunks/vala_DYEacj30.mjs +0 -1
- package/website/dist/_worker.js/chunks/vb_CikQuqGJ.mjs +0 -1
- package/website/dist/_worker.js/chunks/verilog_BQRENwI-.mjs +0 -1
- package/website/dist/_worker.js/chunks/vesper_DA0kvTmj.mjs +0 -1
- package/website/dist/_worker.js/chunks/vhdl_DHscJIyg.mjs +0 -1
- package/website/dist/_worker.js/chunks/viml_F2pvMwvG.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-black_D9tjNzd0.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-dark_Bnm5d0hd.mjs +0 -1
- package/website/dist/_worker.js/chunks/vitesse-light_CHwbyjNR.mjs +0 -1
- package/website/dist/_worker.js/chunks/vue-html_DyYtbbMK.mjs +0 -1
- package/website/dist/_worker.js/chunks/vue_DofN6juy.mjs +0 -1
- package/website/dist/_worker.js/chunks/vyper_CiR0m-OV.mjs +0 -1
- package/website/dist/_worker.js/chunks/wasm_CwIGgRGf.mjs +0 -1
- package/website/dist/_worker.js/chunks/wasm_jKWhg0J0.mjs +0 -1
- package/website/dist/_worker.js/chunks/wenyan_DKvVZKXW.mjs +0 -1
- package/website/dist/_worker.js/chunks/wgsl_BOWZY7yw.mjs +0 -1
- package/website/dist/_worker.js/chunks/wikitext_CXDhhHPy.mjs +0 -1
- package/website/dist/_worker.js/chunks/wolfram_ChkmGnW0.mjs +0 -1
- package/website/dist/_worker.js/chunks/xml_DXH3hHIu.mjs +0 -1
- package/website/dist/_worker.js/chunks/xsl_DuP2mFjg.mjs +0 -1
- package/website/dist/_worker.js/chunks/yaml_IGiEkTge.mjs +0 -1
- package/website/dist/_worker.js/chunks/zenscript_59iXGyNw.mjs +0 -1
- package/website/dist/_worker.js/chunks/zig_DKzb0zdT.mjs +0 -1
- package/website/dist/_worker.js/index.js +0 -61
- package/website/dist/_worker.js/manifest_Bk6136-u.mjs +0 -98
- package/website/dist/_worker.js/pages/_image.astro.mjs +0 -24
- package/website/dist/_worker.js/pages/agents.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/animation.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/api/playground/render.astro.mjs +0 -25562
- package/website/dist/_worker.js/pages/api/playground/templates.astro.mjs +0 -92
- package/website/dist/_worker.js/pages/api/raw-markdown/_---path_.astro.mjs +0 -44
- package/website/dist/_worker.js/pages/config.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/fonts.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/getting-started.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/helpers.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/images.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/index.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/llm.txt.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/playground/_example_.astro.mjs +0 -95
- package/website/dist/_worker.js/pages/playground.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/preview.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/sdk.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/sitemap.xml.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/styling.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/templates.astro.mjs +0 -1
- package/website/dist/_worker.js/pages/video.astro.mjs +0 -1
- package/website/dist/_worker.js/renderers.mjs +0 -2
- package/website/dist/agents/index.html +0 -54
- package/website/dist/animation/index.html +0 -1505
- package/website/dist/config/index.html +0 -186
- package/website/dist/fonts/index.html +0 -200
- package/website/dist/getting-started/index.html +0 -109
- package/website/dist/helpers/index.html +0 -350
- package/website/dist/images/index.html +0 -337
- package/website/dist/index.html +0 -141
- package/website/dist/llm.txt +0 -3626
- package/website/dist/playground/index.html +0 -6
- package/website/dist/preview/index.html +0 -113
- package/website/dist/robots.txt +0 -40
- package/website/dist/sdk/index.html +0 -1588
- package/website/dist/sitemap.xml +0 -76
- package/website/dist/styling/index.html +0 -368
- package/website/dist/templates/index.html +0 -76
- package/website/dist/video/index.html +0 -354
- package/website/package-lock.json +0 -8099
- package/website/package.json +0 -43
- package/website/public/.gitkeep +0 -5
- package/website/public/robots.txt +0 -40
- package/website/templates/og-image.tsx +0 -60
- package/website/wrangler.toml +0 -9
package/REGISTRY_SETUP.md
DELETED
|
@@ -1,363 +0,0 @@
|
|
|
1
|
-
# Setting Up the Template Registry
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
The registry is a simple HTTP endpoint that serves template JSON files. Users run `loopwind add template-name` and it fetches from `https://loopwind.dev/r/template-name`.
|
|
6
|
-
|
|
7
|
-
## Quick Solutions
|
|
8
|
-
|
|
9
|
-
### Option 1: Static JSON Files (Simplest)
|
|
10
|
-
|
|
11
|
-
Host static JSON files on any static hosting:
|
|
12
|
-
|
|
13
|
-
**1. Create template JSON files:**
|
|
14
|
-
|
|
15
|
-
```
|
|
16
|
-
loopwind.dev/
|
|
17
|
-
└── r/
|
|
18
|
-
├── banner-hero.json
|
|
19
|
-
├── product-card.json
|
|
20
|
-
└── social-og.json
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**2. Each JSON file contains:**
|
|
24
|
-
|
|
25
|
-
```json
|
|
26
|
-
{
|
|
27
|
-
"name": "banner-hero",
|
|
28
|
-
"version": "1.0.0",
|
|
29
|
-
"description": "Hero banner with gradient background",
|
|
30
|
-
"files": [
|
|
31
|
-
{
|
|
32
|
-
"path": "template.tsx",
|
|
33
|
-
"content": "export const meta = {...};\n\nexport default function BannerHero({...}) {...}"
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**3. Configure your web server:**
|
|
40
|
-
|
|
41
|
-
```nginx
|
|
42
|
-
# nginx
|
|
43
|
-
location /r/ {
|
|
44
|
-
# Rewrite /r/banner-hero to /r/banner-hero.json
|
|
45
|
-
rewrite ^/r/(.+)$ /r/$1.json break;
|
|
46
|
-
}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**4. Host on:**
|
|
50
|
-
- Vercel/Netlify (free)
|
|
51
|
-
- Cloudflare Pages (free)
|
|
52
|
-
- GitHub Pages (free)
|
|
53
|
-
- Any static host
|
|
54
|
-
|
|
55
|
-
### Option 2: Serverless API (Recommended)
|
|
56
|
-
|
|
57
|
-
Create a simple API with Vercel/Netlify functions:
|
|
58
|
-
|
|
59
|
-
**File: `api/templates/[name].js`**
|
|
60
|
-
|
|
61
|
-
```javascript
|
|
62
|
-
// Vercel/Next.js API route
|
|
63
|
-
export default function handler(req, res) {
|
|
64
|
-
const { name } = req.query;
|
|
65
|
-
|
|
66
|
-
// Load template from database or files
|
|
67
|
-
const template = getTemplate(name);
|
|
68
|
-
|
|
69
|
-
if (!template) {
|
|
70
|
-
return res.status(404).json({ error: 'Template not found' });
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
res.json(template);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function getTemplate(name) {
|
|
77
|
-
// Option A: From database
|
|
78
|
-
// return db.templates.findOne({ name });
|
|
79
|
-
|
|
80
|
-
// Option B: From static files
|
|
81
|
-
const templates = {
|
|
82
|
-
'banner-hero': {
|
|
83
|
-
name: 'banner-hero',
|
|
84
|
-
version: '1.0.0',
|
|
85
|
-
description: 'Hero banner',
|
|
86
|
-
files: [
|
|
87
|
-
{
|
|
88
|
-
path: 'template.tsx',
|
|
89
|
-
content: require('./templates/banner-hero.tsx.txt')
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
}
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
return templates[name];
|
|
96
|
-
}
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
**Deploy:**
|
|
100
|
-
|
|
101
|
-
```bash
|
|
102
|
-
vercel deploy
|
|
103
|
-
# or
|
|
104
|
-
netlify deploy
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Creating Template JSON Files
|
|
108
|
-
|
|
109
|
-
### Script to Convert Local Templates
|
|
110
|
-
|
|
111
|
-
```javascript
|
|
112
|
-
// scripts/create-registry-json.js
|
|
113
|
-
const fs = require('fs');
|
|
114
|
-
const path = require('path');
|
|
115
|
-
|
|
116
|
-
const templatesDir = './design-templates';
|
|
117
|
-
const outputDir = './registry';
|
|
118
|
-
|
|
119
|
-
// Read all templates
|
|
120
|
-
const templates = fs.readdirSync(templatesDir);
|
|
121
|
-
|
|
122
|
-
templates.forEach(name => {
|
|
123
|
-
const templatePath = path.join(templatesDir, name);
|
|
124
|
-
const files = [];
|
|
125
|
-
|
|
126
|
-
// Read all files in template
|
|
127
|
-
const entries = fs.readdirSync(templatePath);
|
|
128
|
-
entries.forEach(file => {
|
|
129
|
-
const filePath = path.join(templatePath, file);
|
|
130
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
131
|
-
files.push({
|
|
132
|
-
path: file,
|
|
133
|
-
content: content
|
|
134
|
-
});
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
// Create registry JSON
|
|
138
|
-
const registryJson = {
|
|
139
|
-
name: name,
|
|
140
|
-
version: '1.0.0',
|
|
141
|
-
description: `Template: ${name}`,
|
|
142
|
-
files: files
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
// Write to output
|
|
146
|
-
const outputPath = path.join(outputDir, `${name}.json`);
|
|
147
|
-
fs.writeFileSync(outputPath, JSON.stringify(registryJson, null, 2));
|
|
148
|
-
|
|
149
|
-
console.log(`Created: ${outputPath}`);
|
|
150
|
-
});
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
**Run:**
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
node scripts/create-registry-json.js
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
This creates:
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
registry/
|
|
163
|
-
├── banner-hero.json
|
|
164
|
-
├── product-card.json
|
|
165
|
-
└── social-og.json
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Upload these to `loopwind.dev/r/`
|
|
169
|
-
|
|
170
|
-
## Example Hosting Setups
|
|
171
|
-
|
|
172
|
-
### Vercel (Recommended)
|
|
173
|
-
|
|
174
|
-
**1. Create Next.js project:**
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
npx create-next-app@latest loopwind-registry
|
|
178
|
-
cd loopwind-registry
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
**2. Create API route:**
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
// pages/api/r/[template].ts
|
|
185
|
-
import { NextApiRequest, NextApiResponse } from 'next';
|
|
186
|
-
import templates from '../../../data/templates.json';
|
|
187
|
-
|
|
188
|
-
export default function handler(req: NextApiRequest, res: NextApiResponse) {
|
|
189
|
-
const { template } = req.query;
|
|
190
|
-
|
|
191
|
-
const templateData = templates[template as string];
|
|
192
|
-
|
|
193
|
-
if (!templateData) {
|
|
194
|
-
return res.status(404).json({ error: 'Template not found' });
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
res.json(templateData);
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
**3. Deploy:**
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
vercel
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
**4. Configure domain:**
|
|
208
|
-
|
|
209
|
-
Set `loopwind.dev` to point to your Vercel project.
|
|
210
|
-
|
|
211
|
-
### Cloudflare Workers
|
|
212
|
-
|
|
213
|
-
```javascript
|
|
214
|
-
// worker.js
|
|
215
|
-
const templates = {
|
|
216
|
-
'banner-hero': {
|
|
217
|
-
name: 'banner-hero',
|
|
218
|
-
version: '1.0.0',
|
|
219
|
-
files: [...]
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
export default {
|
|
224
|
-
async fetch(request) {
|
|
225
|
-
const url = new URL(request.url);
|
|
226
|
-
const templateName = url.pathname.replace('/r/', '');
|
|
227
|
-
|
|
228
|
-
const template = templates[templateName];
|
|
229
|
-
|
|
230
|
-
if (!template) {
|
|
231
|
-
return new Response('Not found', { status: 404 });
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return new Response(JSON.stringify(template), {
|
|
235
|
-
headers: { 'Content-Type': 'application/json' }
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### Static Files on Vercel
|
|
242
|
-
|
|
243
|
-
**1. Create JSON files:**
|
|
244
|
-
|
|
245
|
-
```
|
|
246
|
-
public/
|
|
247
|
-
└── r/
|
|
248
|
-
├── banner-hero.json
|
|
249
|
-
├── product-card.json
|
|
250
|
-
└── index.json (list of all templates)
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
**2. Add to `vercel.json`:**
|
|
254
|
-
|
|
255
|
-
```json
|
|
256
|
-
{
|
|
257
|
-
"rewrites": [
|
|
258
|
-
{ "source": "/r/:template", "destination": "/r/:template.json" }
|
|
259
|
-
]
|
|
260
|
-
}
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
**3. Deploy:**
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
vercel deploy
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
## Database-Backed Registry (Advanced)
|
|
270
|
-
|
|
271
|
-
For a production registry with versioning, search, etc.:
|
|
272
|
-
|
|
273
|
-
```typescript
|
|
274
|
-
// API endpoint
|
|
275
|
-
app.get('/r/:name', async (req, res) => {
|
|
276
|
-
const { name } = req.params;
|
|
277
|
-
const { version } = req.query;
|
|
278
|
-
|
|
279
|
-
const template = await db.templates.findOne({
|
|
280
|
-
name,
|
|
281
|
-
version: version || 'latest'
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
if (!template) {
|
|
285
|
-
return res.status(404).json({ error: 'Template not found' });
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
res.json(template);
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
// Users can install specific versions
|
|
292
|
-
// loopwind add banner-hero@1.2.0
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
## Testing Your Registry
|
|
296
|
-
|
|
297
|
-
Once deployed, test it:
|
|
298
|
-
|
|
299
|
-
```bash
|
|
300
|
-
# Test the endpoint
|
|
301
|
-
curl https://loopwind.dev/r/banner-hero
|
|
302
|
-
|
|
303
|
-
# Should return JSON like:
|
|
304
|
-
{
|
|
305
|
-
"name": "banner-hero",
|
|
306
|
-
"version": "1.0.0",
|
|
307
|
-
"files": [...]
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
# Test with CLI
|
|
311
|
-
loopwind add banner-hero
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
## Until Registry is Ready
|
|
315
|
-
|
|
316
|
-
Ship with bundled templates in the CLI package itself (see below).
|
|
317
|
-
|
|
318
|
-
## Bundled Templates (Alternative)
|
|
319
|
-
|
|
320
|
-
Include templates directly in the npm package:
|
|
321
|
-
|
|
322
|
-
**1. Create templates folder:**
|
|
323
|
-
|
|
324
|
-
```
|
|
325
|
-
loopwind/
|
|
326
|
-
├── dist/
|
|
327
|
-
└── bundled-templates/
|
|
328
|
-
├── banner-hero.json
|
|
329
|
-
├── product-card.json
|
|
330
|
-
└── social-og.json
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
**2. Update installer to check bundled first:**
|
|
334
|
-
|
|
335
|
-
```typescript
|
|
336
|
-
export async function fetchTemplate(name: string) {
|
|
337
|
-
// Try bundled templates first
|
|
338
|
-
const bundledPath = path.join(__dirname, '../bundled-templates', `${name}.json`);
|
|
339
|
-
|
|
340
|
-
try {
|
|
341
|
-
const content = await fs.readFile(bundledPath, 'utf-8');
|
|
342
|
-
return JSON.parse(content);
|
|
343
|
-
} catch {
|
|
344
|
-
// Fall back to registry
|
|
345
|
-
return fetchFromRegistry(name);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
**3. Users get core templates immediately:**
|
|
351
|
-
|
|
352
|
-
```bash
|
|
353
|
-
npm install -g loopwind
|
|
354
|
-
loopwind add banner-hero # Works offline!
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
## Recommended Approach
|
|
358
|
-
|
|
359
|
-
1. **Short term:** Bundle 3-5 core templates with the CLI
|
|
360
|
-
2. **Medium term:** Set up static JSON hosting on Vercel/Cloudflare
|
|
361
|
-
3. **Long term:** Build proper registry with database, versioning, search
|
|
362
|
-
|
|
363
|
-
This way users can use it immediately while you build out the full registry!
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export declare const meta: {
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
type: string;
|
|
6
|
-
size: {
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
};
|
|
10
|
-
props: {
|
|
11
|
-
title: string;
|
|
12
|
-
description: string;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
export default function Template({ title, description, tw }: {
|
|
16
|
-
title: any;
|
|
17
|
-
description: any;
|
|
18
|
-
tw: any;
|
|
19
|
-
}): React.JSX.Element;
|
|
20
|
-
//# sourceMappingURL=template.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/default-templates/image/template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,IAAI;;;;;;;;;;;;CAShB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;;;;CAAA,qBAe1D"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export const meta = {
|
|
3
|
-
name: "image",
|
|
4
|
-
description: "Simple image starter template",
|
|
5
|
-
type: "image",
|
|
6
|
-
size: { width: 1200, height: 630 },
|
|
7
|
-
props: {
|
|
8
|
-
title: "string",
|
|
9
|
-
description: "string?"
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
export default function Template({ title, description, tw }) {
|
|
13
|
-
return (React.createElement("div", { style: tw('w-full h-full flex flex-col justify-center items-center bg-background p-16') },
|
|
14
|
-
React.createElement("div", { style: tw('bg-card border rounded-xl p-12 flex flex-col max-w-4xl') },
|
|
15
|
-
React.createElement("h1", { style: tw('text-7xl font-bold text-foreground mb-4') }, title),
|
|
16
|
-
description && (React.createElement("p", { style: tw('text-3xl text-muted-foreground') }, description)))));
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/default-templates/image/template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,+BAA+B;IAC5C,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAClC,KAAK,EAAE;QACL,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,SAAS;KACvB;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;IACzD,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,CAAC,4EAA4E,CAAC;QAC1F,6BAAK,KAAK,EAAE,EAAE,CAAC,wDAAwD,CAAC;YACtE,4BAAI,KAAK,EAAE,EAAE,CAAC,yCAAyC,CAAC,IACrD,KAAK,CACH;YACJ,WAAW,IAAI,CACd,2BAAG,KAAK,EAAE,EAAE,CAAC,gCAAgC,CAAC,IAC3C,WAAW,CACV,CACL,CACG,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description, tw }) {
|
|
6
|
-
return (
|
|
7
|
-
<div style={tw('w-full h-full flex flex-col justify-center items-center bg-background p-16')}>
|
|
8
|
-
<div style={tw('bg-card border rounded-xl p-12 flex flex-col max-w-4xl')}>
|
|
9
|
-
<h1 style={tw('text-7xl font-bold text-foreground mb-4')}>
|
|
10
|
-
{title}
|
|
11
|
-
</h1>
|
|
12
|
-
{description && (
|
|
13
|
-
<p style={tw('text-3xl text-muted-foreground')}>
|
|
14
|
-
{description}
|
|
15
|
-
</p>
|
|
16
|
-
)}
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
);
|
|
20
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, subtitle, tw }) {
|
|
6
|
-
return (
|
|
7
|
-
<div style={tw('w-full h-full flex flex-col bg-gradient-to-br from-indigo-500 via-purple-500 to-pink-500 p-8')}>
|
|
8
|
-
{/* Header Card with Shadow */}
|
|
9
|
-
<div style={tw('bg-white rounded-2xl shadow-2xl p-8 mb-4 max-w-5xl flex flex-col')}>
|
|
10
|
-
<h1 style={tw('text-6xl font-extrabold text-indigo-600 mb-3 uppercase tracking-wide')}>
|
|
11
|
-
{title}
|
|
12
|
-
</h1>
|
|
13
|
-
{subtitle && (
|
|
14
|
-
<p style={tw('text-2xl text-gray-600 italic leading-relaxed')}>
|
|
15
|
-
{subtitle}
|
|
16
|
-
</p>
|
|
17
|
-
)}
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
{/* Feature Cards Grid */}
|
|
21
|
-
<div style={tw('flex flex-wrap gap-4 max-w-6xl flex-1')}>
|
|
22
|
-
{/* Card 1: Gradients & Shadows */}
|
|
23
|
-
<div style={tw('bg-gradient-to-br from-cyan-400 to-blue-500 rounded-xl shadow-lg p-6 flex-1 min-w-0 flex flex-col')}>
|
|
24
|
-
<h2 style={tw('text-2xl font-bold text-white mb-2 tracking-wider')}>
|
|
25
|
-
Gradients
|
|
26
|
-
</h2>
|
|
27
|
-
<p style={tw('text-sm text-white text-opacity-90 leading-normal')}>
|
|
28
|
-
Full gradient support
|
|
29
|
-
</p>
|
|
30
|
-
</div>
|
|
31
|
-
|
|
32
|
-
{/* Card 2: Borders & Transforms */}
|
|
33
|
-
<div style={tw('bg-white rounded-lg border-4 border-emerald-500 p-6 flex-1 min-w-0 flex flex-col shadow-md rotate-1')}>
|
|
34
|
-
<h2 style={tw('text-2xl font-semibold text-emerald-700 mb-2')}>
|
|
35
|
-
Transforms
|
|
36
|
-
</h2>
|
|
37
|
-
<p style={tw('text-sm text-gray-600 leading-tight')}>
|
|
38
|
-
Rotation supported!
|
|
39
|
-
</p>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
{/* Card 3: Typography */}
|
|
43
|
-
<div style={tw('bg-gray-900 rounded-xl shadow-xl p-6 flex-1 min-w-0 flex flex-col')}>
|
|
44
|
-
<h2 style={tw('text-2xl font-black text-yellow-400 mb-2 uppercase letter-spacing-wide')}>
|
|
45
|
-
TYPOGRAPHY
|
|
46
|
-
</h2>
|
|
47
|
-
<p style={tw('text-xs text-gray-300 tracking-tight leading-loose')}>
|
|
48
|
-
All text styles work
|
|
49
|
-
</p>
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
{/* Bottom Info Bar */}
|
|
54
|
-
<div style={tw('mt-4 bg-white bg-opacity-20 rounded-lg px-6 py-3 max-w-5xl flex flex-row justify-between items-center')}>
|
|
55
|
-
<p style={tw('text-sm font-medium text-white')}>
|
|
56
|
-
Kitchen Sink Template
|
|
57
|
-
</p>
|
|
58
|
-
<p style={tw('text-xs text-white text-opacity-75 tracking-wide')}>
|
|
59
|
-
All features demonstrated
|
|
60
|
-
</p>
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description, frame, progress, tw }) {
|
|
6
|
-
// Fade in animation
|
|
7
|
-
const opacity = Math.min(1, progress * 2);
|
|
8
|
-
|
|
9
|
-
// Slide up animation
|
|
10
|
-
const translateY = 20 - (progress * 20);
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<div style={tw('w-full h-full flex flex-col justify-center items-center bg-background p-16')}>
|
|
14
|
-
<div style={tw('bg-card border rounded-xl p-12 flex flex-col max-w-4xl')}>
|
|
15
|
-
<h1
|
|
16
|
-
style={{
|
|
17
|
-
...tw('text-7xl font-bold text-foreground mb-4'),
|
|
18
|
-
opacity,
|
|
19
|
-
transform: `translateY(${translateY}px)`
|
|
20
|
-
}}
|
|
21
|
-
>
|
|
22
|
-
{title}
|
|
23
|
-
</h1>
|
|
24
|
-
{description && (
|
|
25
|
-
<p
|
|
26
|
-
style={{
|
|
27
|
-
...tw('text-3xl text-muted-foreground'),
|
|
28
|
-
opacity: Math.min(1, (progress - 0.3) * 2)
|
|
29
|
-
}}
|
|
30
|
-
>
|
|
31
|
-
{description}
|
|
32
|
-
</p>
|
|
33
|
-
)}
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
);
|
|
37
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export declare const meta: {
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
type: string;
|
|
6
|
-
size: {
|
|
7
|
-
width: number;
|
|
8
|
-
height: number;
|
|
9
|
-
};
|
|
10
|
-
props: {
|
|
11
|
-
title: string;
|
|
12
|
-
description: string;
|
|
13
|
-
};
|
|
14
|
-
video: {
|
|
15
|
-
fps: number;
|
|
16
|
-
duration: number;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
export default function Template({ title, description, frame, progress, tw }: {
|
|
20
|
-
title: any;
|
|
21
|
-
description: any;
|
|
22
|
-
frame: any;
|
|
23
|
-
progress: any;
|
|
24
|
-
tw: any;
|
|
25
|
-
}): React.JSX.Element;
|
|
26
|
-
//# sourceMappingURL=template.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/default-templates/video/template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;CAahB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;;;;;;CAAA,qBAgC3E"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export const meta = {
|
|
3
|
-
name: "video",
|
|
4
|
-
description: "Animated video starter template",
|
|
5
|
-
type: "video",
|
|
6
|
-
size: { width: 1200, height: 630 },
|
|
7
|
-
props: {
|
|
8
|
-
title: "string",
|
|
9
|
-
description: "string?"
|
|
10
|
-
},
|
|
11
|
-
video: {
|
|
12
|
-
fps: 30,
|
|
13
|
-
duration: 3
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
export default function Template({ title, description, frame, progress, tw }) {
|
|
17
|
-
// Fade in animation
|
|
18
|
-
const opacity = Math.min(1, progress * 2);
|
|
19
|
-
// Slide up animation
|
|
20
|
-
const translateY = 20 - (progress * 20);
|
|
21
|
-
return (React.createElement("div", { style: tw('w-full h-full flex flex-col justify-center items-center bg-background p-16') },
|
|
22
|
-
React.createElement("div", { style: tw('bg-card border rounded-xl p-12 flex flex-col max-w-4xl') },
|
|
23
|
-
React.createElement("h1", { style: {
|
|
24
|
-
...tw('text-7xl font-bold text-foreground mb-4'),
|
|
25
|
-
opacity,
|
|
26
|
-
transform: `translateY(${translateY}px)`
|
|
27
|
-
} }, title),
|
|
28
|
-
description && (React.createElement("p", { style: {
|
|
29
|
-
...tw('text-3xl text-muted-foreground'),
|
|
30
|
-
opacity: Math.min(1, (progress - 0.3) * 2)
|
|
31
|
-
} }, description)))));
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/default-templates/video/template.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,iCAAiC;IAC9C,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAClC,KAAK,EAAE;QACL,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,SAAS;KACvB;IACD,KAAK,EAAE;QACL,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,CAAC;KACZ;CACF,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC1E,oBAAoB;IACpB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE1C,qBAAqB;IACrB,MAAM,UAAU,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;IAExC,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,CAAC,4EAA4E,CAAC;QAC1F,6BAAK,KAAK,EAAE,EAAE,CAAC,wDAAwD,CAAC;YACtE,4BACE,KAAK,EAAE;oBACL,GAAG,EAAE,CAAC,yCAAyC,CAAC;oBAChD,OAAO;oBACP,SAAS,EAAE,cAAc,UAAU,KAAK;iBACzC,IAEA,KAAK,CACH;YACJ,WAAW,IAAI,CACd,2BACE,KAAK,EAAE;oBACL,GAAG,EAAE,CAAC,gCAAgC,CAAC;oBACvC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC3C,IAEA,WAAW,CACV,CACL,CACG,CACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description, frame, progress, tw }) {
|
|
6
|
-
// Fade in animation
|
|
7
|
-
const opacity = Math.min(1, progress * 2);
|
|
8
|
-
|
|
9
|
-
// Slide up animation
|
|
10
|
-
const translateY = 20 - (progress * 20);
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<div style={tw('w-full h-full flex flex-col justify-center items-center bg-background p-16')}>
|
|
14
|
-
<div style={tw('bg-card border rounded-xl p-12 flex flex-col max-w-4xl')}>
|
|
15
|
-
<h1
|
|
16
|
-
style={{
|
|
17
|
-
...tw('text-7xl font-bold text-foreground mb-4'),
|
|
18
|
-
opacity,
|
|
19
|
-
transform: `translateY(${translateY}px)`
|
|
20
|
-
}}
|
|
21
|
-
>
|
|
22
|
-
{title}
|
|
23
|
-
</h1>
|
|
24
|
-
{description && (
|
|
25
|
-
<p
|
|
26
|
-
style={{
|
|
27
|
-
...tw('text-3xl text-muted-foreground'),
|
|
28
|
-
opacity: Math.min(1, (progress - 0.3) * 2)
|
|
29
|
-
}}
|
|
30
|
-
>
|
|
31
|
-
{description}
|
|
32
|
-
</p>
|
|
33
|
-
)}
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
);
|
|
37
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description}) {
|
|
6
|
-
return (
|
|
7
|
-
<html>
|
|
8
|
-
<head>
|
|
9
|
-
<title>{title}</title>
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<h1>{title}</h1>
|
|
13
|
-
<p>{description}</p>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|
|
16
|
-
);
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description}) {
|
|
6
|
-
return (
|
|
7
|
-
<html>
|
|
8
|
-
<head>
|
|
9
|
-
<title>{title}</title>
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<h1>{title}</h1>
|
|
13
|
-
<p>{description}</p>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|
|
16
|
-
);
|
|
17
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
// Template metadata is defined in meta.json
|
|
4
|
-
|
|
5
|
-
export default function Template({ title, description}) {
|
|
6
|
-
return (
|
|
7
|
-
<html>
|
|
8
|
-
<head>
|
|
9
|
-
<title>{title}</title>
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
<h1>{title}</h1>
|
|
13
|
-
<p>{description}</p>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|
|
16
|
-
);
|
|
17
|
-
}
|