primocode 10.17.1 → 10.19.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.
- package/LICENSES/fontes-OFL.txt +95 -0
- package/README.md +37 -20
- package/bin/primocode.js +1047 -267
- package/editor/THIRD_PARTY_NOTICES.md +3 -3
- package/editor/assets/baixar.json +8 -0
- package/editor/helpers/camera_viva.py +39 -2
- package/editor/modelo-projeto/assets/fontes/OFL-Inter.txt +93 -0
- package/editor/modelo-projeto/assets/fontes/larguras.json +1 -1
- package/editor/modelo-projeto/build.py +164 -19
- package/editor/modelo-projeto/ferramentas/medir_fontes.py +1 -1
- package/kits/CATALOGO.md +65 -0
- package/kits/KITS.md +179 -0
- package/kits/adesivos/SKILL.md +53 -0
- package/kits/adesivos/assets/ASSETS.md +22 -0
- package/kits/adesivos/assets/fontes/OFL-BowlbyOne.txt +92 -0
- package/kits/adesivos/assets/fontes/OFL-Nunito.txt +92 -0
- package/kits/adesivos/assets/fontes/bowlby-latin.woff2 +0 -0
- package/kits/adesivos/assets/fontes/nunito-latin.woff2 +0 -0
- package/kits/adesivos/assets/sons/assinatura.mp3 +0 -0
- package/kits/adesivos/assets/sons/cola.mp3 +0 -0
- package/kits/adesivos/assets/sons/confete.mp3 +0 -0
- package/kits/adesivos/assets/sons/impacto.mp3 +0 -0
- package/kits/adesivos/assets/sons/palavra.mp3 +0 -0
- package/kits/adesivos/assets/sons/pop.mp3 +0 -0
- package/kits/adesivos/assets/sons/swipe.mp3 +0 -0
- package/kits/adesivos/assets/sons/whoosh.mp3 +0 -0
- package/kits/adesivos/assets/trilha/pop-colorido-112bpm.mp3 +0 -0
- package/kits/adesivos/capa.jpg +0 -0
- package/kits/adesivos/elementos/AdesivoForma.tsx +42 -0
- package/kits/adesivos/elementos/AdesivoFoto.tsx +36 -0
- package/kits/adesivos/elementos/AdesivoTexto.tsx +35 -0
- package/kits/adesivos/elementos/AssinaturaMarca.tsx +36 -0
- package/kits/adesivos/elementos/Camera.tsx +22 -0
- package/kits/adesivos/elementos/Cena.tsx +48 -0
- package/kits/adesivos/elementos/ChuvaDeAdesivos.tsx +29 -0
- package/kits/adesivos/elementos/Fundo.tsx +21 -0
- package/kits/adesivos/elementos/Montagem.tsx +68 -0
- package/kits/adesivos/elementos/SeloPreco.tsx +38 -0
- package/kits/adesivos/elementos/Som.tsx +33 -0
- package/kits/adesivos/elementos/TituloEtiquetas.tsx +33 -0
- package/kits/adesivos/elementos/base.ts +101 -0
- package/kits/adesivos/elementos/index.ts +16 -0
- package/kits/adesivos/exemplos/fotos/foto-01.jpg +0 -0
- package/kits/adesivos/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/adesivos/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/adesivos/exemplos/logo-grude.svg +1 -0
- package/kits/adesivos/exemplos/plano.json +328 -0
- package/kits/adesivos/exemplos/roteiro.md +21 -0
- package/kits/adesivos/preview.tsx +15 -0
- package/kits/adesivos/receita.json +212 -0
- package/kits/adesivos/regras/area-segura.md +17 -0
- package/kits/adesivos/regras/cor.md +23 -0
- package/kits/adesivos/regras/movimento.md +17 -0
- package/kits/adesivos/regras/ritmo.md +16 -0
- package/kits/adesivos/regras/som.md +20 -0
- package/kits/adesivos/regras/tipografia.md +16 -0
- package/kits/antes-depois/SKILL.md +57 -0
- package/kits/antes-depois/assets/ASSETS.md +23 -0
- package/kits/antes-depois/assets/fontes/OFL-ArchivoBlack.txt +93 -0
- package/kits/antes-depois/assets/fontes/OFL-Manrope.txt +93 -0
- package/kits/antes-depois/assets/fontes/archivoblack.woff2 +0 -0
- package/kits/antes-depois/assets/fontes/manrope.woff2 +0 -0
- package/kits/antes-depois/assets/sons/assinatura.mp3 +0 -0
- package/kits/antes-depois/assets/sons/clique.mp3 +0 -0
- package/kits/antes-depois/assets/sons/impacto.mp3 +0 -0
- package/kits/antes-depois/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/antes-depois/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/antes-depois/assets/sons/subida.mp3 +0 -0
- package/kits/antes-depois/assets/sons/swoosh.mp3 +0 -0
- package/kits/antes-depois/assets/sons/tick.mp3 +0 -0
- package/kits/antes-depois/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/antes-depois/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/antes-depois/assets/trilha/corte-118bpm.mp3 +0 -0
- package/kits/antes-depois/capa.jpg +0 -0
- package/kits/antes-depois/elementos/BarraMedidor.tsx +43 -0
- package/kits/antes-depois/elementos/Camera.tsx +21 -0
- package/kits/antes-depois/elementos/Cena.tsx +41 -0
- package/kits/antes-depois/elementos/FaixaMarquee.tsx +35 -0
- package/kits/antes-depois/elementos/Fundo.tsx +24 -0
- package/kits/antes-depois/elementos/ListaMudancas.tsx +37 -0
- package/kits/antes-depois/elementos/Montagem.tsx +59 -0
- package/kits/antes-depois/elementos/NumeroDelta.tsx +36 -0
- package/kits/antes-depois/elementos/RotuloAntesDepois.tsx +26 -0
- package/kits/antes-depois/elementos/Som.tsx +40 -0
- package/kits/antes-depois/elementos/TelaDividida.tsx +68 -0
- package/kits/antes-depois/elementos/base.ts +82 -0
- package/kits/antes-depois/elementos/index.ts +15 -0
- package/kits/antes-depois/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/antes-depois/exemplos/fotos/foto-08.jpg +0 -0
- package/kits/antes-depois/exemplos/plano.json +276 -0
- package/kits/antes-depois/exemplos/roteiro.md +19 -0
- package/kits/antes-depois/preview.tsx +13 -0
- package/kits/antes-depois/receita.json +21 -0
- package/kits/antes-depois/regras/area-segura.md +21 -0
- package/kits/antes-depois/regras/cor.md +15 -0
- package/kits/antes-depois/regras/movimento.md +23 -0
- package/kits/antes-depois/regras/ritmo.md +15 -0
- package/kits/antes-depois/regras/som.md +20 -0
- package/kits/antes-depois/regras/tipografia.md +18 -0
- package/kits/apple-tipografico/SKILL.md +73 -0
- package/kits/apple-tipografico/assets/ASSETS.md +23 -0
- package/kits/apple-tipografico/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/apple-tipografico/assets/fontes/inter-latin-500-800.woff2 +0 -0
- package/kits/apple-tipografico/assets/sons/assinatura.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/clique.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/impacto.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/subida.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/swoosh.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/apple-tipografico/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/apple-tipografico/assets/trilha/tech-claro-125bpm.mp3 +0 -0
- package/kits/apple-tipografico/capa.jpg +0 -0
- package/kits/apple-tipografico/elementos/AssinaturaPreta.tsx +33 -0
- package/kits/apple-tipografico/elementos/Camera.tsx +23 -0
- package/kits/apple-tipografico/elementos/CartaoRadial.tsx +41 -0
- package/kits/apple-tipografico/elementos/Cena.tsx +55 -0
- package/kits/apple-tipografico/elementos/Fundo.tsx +21 -0
- package/kits/apple-tipografico/elementos/LegendaCurta.tsx +51 -0
- package/kits/apple-tipografico/elementos/Montagem.tsx +55 -0
- package/kits/apple-tipografico/elementos/Produto3D.tsx +140 -0
- package/kits/apple-tipografico/elementos/ProdutoFoto.tsx +47 -0
- package/kits/apple-tipografico/elementos/Som.tsx +40 -0
- package/kits/apple-tipografico/elementos/base.ts +111 -0
- package/kits/apple-tipografico/elementos/index.ts +18 -0
- package/kits/apple-tipografico/elementos/modelos.ts +108 -0
- package/kits/apple-tipografico/elementos/raymarch.ts +249 -0
- package/kits/apple-tipografico/exemplos/logo-lume.svg +1 -0
- package/kits/apple-tipografico/exemplos/plano.json +56 -0
- package/kits/apple-tipografico/exemplos/roteiro.md +19 -0
- package/kits/apple-tipografico/preview.tsx +12 -0
- package/kits/apple-tipografico/receita.json +22 -0
- package/kits/apple-tipografico/regras/area-segura.md +19 -0
- package/kits/apple-tipografico/regras/cor.md +24 -0
- package/kits/apple-tipografico/regras/movimento.md +29 -0
- package/kits/apple-tipografico/regras/ritmo.md +29 -0
- package/kits/apple-tipografico/regras/som.md +20 -0
- package/kits/apple-tipografico/regras/tipografia.md +21 -0
- package/kits/aquarela/SKILL.md +52 -0
- package/kits/aquarela/assets/ASSETS.md +21 -0
- package/kits/aquarela/assets/fontes/OFL-Caveat.txt +92 -0
- package/kits/aquarela/assets/fontes/OFL-Fraunces.txt +92 -0
- package/kits/aquarela/assets/fontes/caveat-latin.woff2 +0 -0
- package/kits/aquarela/assets/fontes/fraunces-latin.woff2 +0 -0
- package/kits/aquarela/assets/sons/assinatura.mp3 +0 -0
- package/kits/aquarela/assets/sons/gota.mp3 +0 -0
- package/kits/aquarela/assets/sons/impacto.mp3 +0 -0
- package/kits/aquarela/assets/sons/palavra.mp3 +0 -0
- package/kits/aquarela/assets/sons/papel-cai.mp3 +0 -0
- package/kits/aquarela/assets/sons/pop-mancha.mp3 +0 -0
- package/kits/aquarela/assets/sons/risco.mp3 +0 -0
- package/kits/aquarela/assets/sons/whoosh-pincel.mp3 +0 -0
- package/kits/aquarela/assets/trilha/calma-com-punch-108bpm.mp3 +0 -0
- package/kits/aquarela/capa.jpg +0 -0
- package/kits/aquarela/elementos/AnotacaoManual.tsx +40 -0
- package/kits/aquarela/elementos/AssinaturaMarca.tsx +33 -0
- package/kits/aquarela/elementos/Camera.tsx +22 -0
- package/kits/aquarela/elementos/Cena.tsx +48 -0
- package/kits/aquarela/elementos/Fundo.tsx +24 -0
- package/kits/aquarela/elementos/ManchaTinta.tsx +46 -0
- package/kits/aquarela/elementos/Montagem.tsx +60 -0
- package/kits/aquarela/elementos/PapelRasgado.tsx +50 -0
- package/kits/aquarela/elementos/Pincelada.tsx +43 -0
- package/kits/aquarela/elementos/Pingos.tsx +31 -0
- package/kits/aquarela/elementos/Som.tsx +33 -0
- package/kits/aquarela/elementos/TituloPincel.tsx +51 -0
- package/kits/aquarela/elementos/base.ts +97 -0
- package/kits/aquarela/elementos/index.ts +16 -0
- package/kits/aquarela/exemplos/logo-mare.svg +1 -0
- package/kits/aquarela/exemplos/plano.json +62 -0
- package/kits/aquarela/exemplos/roteiro.md +21 -0
- package/kits/aquarela/preview.tsx +12 -0
- package/kits/aquarela/receita.json +213 -0
- package/kits/aquarela/regras/area-segura.md +17 -0
- package/kits/aquarela/regras/cor.md +23 -0
- package/kits/aquarela/regras/movimento.md +19 -0
- package/kits/aquarela/regras/ritmo.md +17 -0
- package/kits/aquarela/regras/som.md +20 -0
- package/kits/aquarela/regras/tipografia.md +16 -0
- package/kits/aurora/SKILL.md +52 -0
- package/kits/aurora/assets/ASSETS.md +21 -0
- package/kits/aurora/assets/fontes/OFL-InstrumentSerif.txt +92 -0
- package/kits/aurora/assets/fontes/OFL-Manrope.txt +92 -0
- package/kits/aurora/assets/fontes/instrument-latin.woff2 +0 -0
- package/kits/aurora/assets/fontes/manrope-latin.woff2 +0 -0
- package/kits/aurora/assets/sons/assinatura.mp3 +0 -0
- package/kits/aurora/assets/sons/brilho.mp3 +0 -0
- package/kits/aurora/assets/sons/meteoro.mp3 +0 -0
- package/kits/aurora/assets/sons/onda.mp3 +0 -0
- package/kits/aurora/assets/sons/sino.mp3 +0 -0
- package/kits/aurora/assets/sons/sopro.mp3 +0 -0
- package/kits/aurora/assets/sons/subida.mp3 +0 -0
- package/kits/aurora/assets/sons/toque.mp3 +0 -0
- package/kits/aurora/assets/trilha/suave-88bpm.mp3 +0 -0
- package/kits/aurora/capa.jpg +0 -0
- package/kits/aurora/elementos/AssinaturaMarca.tsx +24 -0
- package/kits/aurora/elementos/Camera.tsx +22 -0
- package/kits/aurora/elementos/CartaoVidro.tsx +29 -0
- package/kits/aurora/elementos/Cena.tsx +48 -0
- package/kits/aurora/elementos/CeuEstrelado.tsx +22 -0
- package/kits/aurora/elementos/CortinaDeLuz.tsx +36 -0
- package/kits/aurora/elementos/Fundo.tsx +35 -0
- package/kits/aurora/elementos/Legenda.tsx +23 -0
- package/kits/aurora/elementos/Montagem.tsx +68 -0
- package/kits/aurora/elementos/Montanhas.tsx +24 -0
- package/kits/aurora/elementos/Som.tsx +33 -0
- package/kits/aurora/elementos/TituloSerif.tsx +36 -0
- package/kits/aurora/elementos/base.ts +93 -0
- package/kits/aurora/elementos/index.ts +16 -0
- package/kits/aurora/exemplos/logo-boreal.svg +1 -0
- package/kits/aurora/exemplos/plano.json +204 -0
- package/kits/aurora/exemplos/roteiro.md +19 -0
- package/kits/aurora/preview.tsx +12 -0
- package/kits/aurora/receita.json +146 -0
- package/kits/aurora/regras/area-segura.md +18 -0
- package/kits/aurora/regras/cor.md +24 -0
- package/kits/aurora/regras/movimento.md +20 -0
- package/kits/aurora/regras/ritmo.md +14 -0
- package/kits/aurora/regras/som.md +20 -0
- package/kits/aurora/regras/tipografia.md +15 -0
- package/kits/bauhaus/SKILL.md +52 -0
- package/kits/bauhaus/assets/ASSETS.md +18 -0
- package/kits/bauhaus/assets/fontes/OFL-bebas-neue.txt +93 -0
- package/kits/bauhaus/assets/fontes/OFL-jost-900.txt +93 -0
- package/kits/bauhaus/assets/fontes/bebas-neue.woff2 +0 -0
- package/kits/bauhaus/assets/fontes/jost-900.woff2 +0 -0
- package/kits/bauhaus/assets/sons/assinatura.mp3 +0 -0
- package/kits/bauhaus/assets/sons/clique.mp3 +0 -0
- package/kits/bauhaus/assets/sons/impacto.mp3 +0 -0
- package/kits/bauhaus/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/bauhaus/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/bauhaus/assets/sons/subida.mp3 +0 -0
- package/kits/bauhaus/assets/sons/swoosh.mp3 +0 -0
- package/kits/bauhaus/assets/sons/tick.mp3 +0 -0
- package/kits/bauhaus/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/bauhaus/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/bauhaus/assets/trilha/trilha.mp3 +0 -0
- package/kits/bauhaus/capa.jpg +0 -0
- package/kits/bauhaus/elementos/AssinaturaMarca.tsx +26 -0
- package/kits/bauhaus/elementos/BarraDiagonal.tsx +20 -0
- package/kits/bauhaus/elementos/Camera.tsx +21 -0
- package/kits/bauhaus/elementos/Cena.tsx +36 -0
- package/kits/bauhaus/elementos/ComposicaoGeometrica.tsx +54 -0
- package/kits/bauhaus/elementos/Fundo.tsx +13 -0
- package/kits/bauhaus/elementos/ListaFaixas.tsx +27 -0
- package/kits/bauhaus/elementos/Montagem.tsx +55 -0
- package/kits/bauhaus/elementos/NumeroBauhaus.tsx +21 -0
- package/kits/bauhaus/elementos/Overlay.tsx +18 -0
- package/kits/bauhaus/elementos/Som.tsx +30 -0
- package/kits/bauhaus/elementos/TituloBauhaus.tsx +32 -0
- package/kits/bauhaus/elementos/base.ts +74 -0
- package/kits/bauhaus/elementos/index.ts +16 -0
- package/kits/bauhaus/exemplos/plano.json +221 -0
- package/kits/bauhaus/exemplos/roteiro.md +20 -0
- package/kits/bauhaus/preview.tsx +12 -0
- package/kits/bauhaus/receita.json +174 -0
- package/kits/bauhaus/regras/area-segura.md +15 -0
- package/kits/bauhaus/regras/cor.md +13 -0
- package/kits/bauhaus/regras/movimento.md +17 -0
- package/kits/bauhaus/regras/ritmo.md +15 -0
- package/kits/bauhaus/regras/som.md +18 -0
- package/kits/bauhaus/regras/tipografia.md +20 -0
- package/kits/brutalista/SKILL.md +54 -0
- package/kits/brutalista/assets/ASSETS.md +23 -0
- package/kits/brutalista/assets/fontes/OFL-ArchivoBlack.txt +93 -0
- package/kits/brutalista/assets/fontes/OFL-JetBrainsMono.txt +93 -0
- package/kits/brutalista/assets/fontes/archivo-black.woff2 +0 -0
- package/kits/brutalista/assets/fontes/jetbrains-mono.woff2 +0 -0
- package/kits/brutalista/assets/sons/assinatura.mp3 +0 -0
- package/kits/brutalista/assets/sons/clique.mp3 +0 -0
- package/kits/brutalista/assets/sons/impacto.mp3 +0 -0
- package/kits/brutalista/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/brutalista/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/brutalista/assets/sons/subida.mp3 +0 -0
- package/kits/brutalista/assets/sons/swoosh.mp3 +0 -0
- package/kits/brutalista/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/brutalista/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/brutalista/assets/trilha/bruta-108bpm.mp3 +0 -0
- package/kits/brutalista/capa.jpg +0 -0
- package/kits/brutalista/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/brutalista/elementos/BlocoSombra.tsx +18 -0
- package/kits/brutalista/elementos/Camera.tsx +23 -0
- package/kits/brutalista/elementos/CartaoFotoBruto.tsx +19 -0
- package/kits/brutalista/elementos/Cena.tsx +41 -0
- package/kits/brutalista/elementos/ContadorGrande.tsx +21 -0
- package/kits/brutalista/elementos/FitaAlerta.tsx +20 -0
- package/kits/brutalista/elementos/Fundo.tsx +9 -0
- package/kits/brutalista/elementos/ListaBruta.tsx +23 -0
- package/kits/brutalista/elementos/MonoEnorme.tsx +43 -0
- package/kits/brutalista/elementos/Montagem.tsx +62 -0
- package/kits/brutalista/elementos/QuadroCor.tsx +14 -0
- package/kits/brutalista/elementos/Som.tsx +38 -0
- package/kits/brutalista/elementos/Terminal.tsx +25 -0
- package/kits/brutalista/elementos/base.ts +71 -0
- package/kits/brutalista/elementos/index.ts +18 -0
- package/kits/brutalista/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/brutalista/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/brutalista/exemplos/fotos/foto-05.jpg +0 -0
- package/kits/brutalista/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/brutalista/exemplos/fotos/foto-08.jpg +0 -0
- package/kits/brutalista/exemplos/logo-bloco.svg +1 -0
- package/kits/brutalista/exemplos/plano.json +52 -0
- package/kits/brutalista/exemplos/roteiro.md +19 -0
- package/kits/brutalista/preview.tsx +20 -0
- package/kits/brutalista/receita.json +195 -0
- package/kits/brutalista/regras/area-segura.md +18 -0
- package/kits/brutalista/regras/cor.md +12 -0
- package/kits/brutalista/regras/movimento.md +16 -0
- package/kits/brutalista/regras/ritmo.md +16 -0
- package/kits/brutalista/regras/som.md +21 -0
- package/kits/brutalista/regras/tipografia.md +16 -0
- package/kits/campos-de-cor/SKILL.md +55 -0
- package/kits/campos-de-cor/assets/ASSETS.md +19 -0
- package/kits/campos-de-cor/assets/fontes/OFL-Archivo-Black.txt +93 -0
- package/kits/campos-de-cor/assets/fontes/OFL-DM-Mono.txt +93 -0
- package/kits/campos-de-cor/assets/fontes/OFL-Playfair-Italic.txt +93 -0
- package/kits/campos-de-cor/assets/fontes/archivo-black.woff2 +0 -0
- package/kits/campos-de-cor/assets/fontes/dm-mono.woff2 +0 -0
- package/kits/campos-de-cor/assets/fontes/playfair-italic.woff2 +0 -0
- package/kits/campos-de-cor/assets/sons/assinatura.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/clique.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/impacto.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/subida.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/swoosh.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/campos-de-cor/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/campos-de-cor/assets/trilha/trilha.mp3 +0 -0
- package/kits/campos-de-cor/capa.jpg +0 -0
- package/kits/campos-de-cor/elementos/AssinaturaMarca.tsx +18 -0
- package/kits/campos-de-cor/elementos/Asterisco.tsx +26 -0
- package/kits/campos-de-cor/elementos/Camera.tsx +23 -0
- package/kits/campos-de-cor/elementos/CampoDeCor.tsx +39 -0
- package/kits/campos-de-cor/elementos/Cena.tsx +46 -0
- package/kits/campos-de-cor/elementos/FitaDeTexto.tsx +24 -0
- package/kits/campos-de-cor/elementos/FormaGeometrica.tsx +37 -0
- package/kits/campos-de-cor/elementos/Fundo.tsx +11 -0
- package/kits/campos-de-cor/elementos/LegendaItalica.tsx +12 -0
- package/kits/campos-de-cor/elementos/ListaRegua.tsx +30 -0
- package/kits/campos-de-cor/elementos/Montagem.tsx +62 -0
- package/kits/campos-de-cor/elementos/PalavraGigante.tsx +44 -0
- package/kits/campos-de-cor/elementos/Som.tsx +39 -0
- package/kits/campos-de-cor/elementos/base.ts +87 -0
- package/kits/campos-de-cor/elementos/index.ts +17 -0
- package/kits/campos-de-cor/exemplos/logo-pulso.svg +1 -0
- package/kits/campos-de-cor/exemplos/plano.json +258 -0
- package/kits/campos-de-cor/exemplos/roteiro.md +19 -0
- package/kits/campos-de-cor/preview.tsx +12 -0
- package/kits/campos-de-cor/receita.json +174 -0
- package/kits/campos-de-cor/regras/area-segura.md +15 -0
- package/kits/campos-de-cor/regras/cor.md +14 -0
- package/kits/campos-de-cor/regras/movimento.md +15 -0
- package/kits/campos-de-cor/regras/ritmo.md +15 -0
- package/kits/campos-de-cor/regras/som.md +18 -0
- package/kits/campos-de-cor/regras/tipografia.md +13 -0
- package/kits/cartaz-cinetico/SKILL.md +52 -0
- package/kits/cartaz-cinetico/assets/ASSETS.md +22 -0
- package/kits/cartaz-cinetico/assets/fontes/OFL-Anton.txt +93 -0
- package/kits/cartaz-cinetico/assets/fontes/OFL-Archivo.txt +93 -0
- package/kits/cartaz-cinetico/assets/fontes/anton.woff2 +0 -0
- package/kits/cartaz-cinetico/assets/fontes/archivo.woff2 +0 -0
- package/kits/cartaz-cinetico/assets/sons/assinatura.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/clique.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/impacto.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/subida.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/swoosh.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/cartaz-cinetico/assets/trilha/cartaz-124bpm.mp3 +0 -0
- package/kits/cartaz-cinetico/capa.jpg +0 -0
- package/kits/cartaz-cinetico/elementos/AssinaturaMarca.tsx +31 -0
- package/kits/cartaz-cinetico/elementos/Camera.tsx +22 -0
- package/kits/cartaz-cinetico/elementos/CartazPalavra.tsx +40 -0
- package/kits/cartaz-cinetico/elementos/Cena.tsx +41 -0
- package/kits/cartaz-cinetico/elementos/CirculoPoster.tsx +22 -0
- package/kits/cartaz-cinetico/elementos/EcoPalavra.tsx +27 -0
- package/kits/cartaz-cinetico/elementos/Fundo.tsx +16 -0
- package/kits/cartaz-cinetico/elementos/Montagem.tsx +59 -0
- package/kits/cartaz-cinetico/elementos/PilhaCartaz.tsx +40 -0
- package/kits/cartaz-cinetico/elementos/RoletaPalavras.tsx +30 -0
- package/kits/cartaz-cinetico/elementos/Selo.tsx +25 -0
- package/kits/cartaz-cinetico/elementos/Som.tsx +38 -0
- package/kits/cartaz-cinetico/elementos/base.ts +72 -0
- package/kits/cartaz-cinetico/elementos/index.ts +16 -0
- package/kits/cartaz-cinetico/exemplos/logo-feira.svg +1 -0
- package/kits/cartaz-cinetico/exemplos/plano.json +55 -0
- package/kits/cartaz-cinetico/exemplos/roteiro.md +20 -0
- package/kits/cartaz-cinetico/preview.tsx +16 -0
- package/kits/cartaz-cinetico/receita.json +209 -0
- package/kits/cartaz-cinetico/regras/area-segura.md +19 -0
- package/kits/cartaz-cinetico/regras/cor.md +13 -0
- package/kits/cartaz-cinetico/regras/movimento.md +16 -0
- package/kits/cartaz-cinetico/regras/ritmo.md +17 -0
- package/kits/cartaz-cinetico/regras/som.md +21 -0
- package/kits/cartaz-cinetico/regras/tipografia.md +16 -0
- package/kits/colagem/SKILL.md +53 -0
- package/kits/colagem/assets/ASSETS.md +25 -0
- package/kits/colagem/assets/fontes/OFL-abril-fatface.txt +93 -0
- package/kits/colagem/assets/fontes/OFL-special-elite.txt +93 -0
- package/kits/colagem/assets/fontes/abril-fatface.woff2 +0 -0
- package/kits/colagem/assets/fontes/special-elite.woff2 +0 -0
- package/kits/colagem/assets/sons/assinatura.mp3 +0 -0
- package/kits/colagem/assets/sons/clique.mp3 +0 -0
- package/kits/colagem/assets/sons/impacto.mp3 +0 -0
- package/kits/colagem/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/colagem/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/colagem/assets/sons/subida.mp3 +0 -0
- package/kits/colagem/assets/sons/swoosh.mp3 +0 -0
- package/kits/colagem/assets/sons/tick.mp3 +0 -0
- package/kits/colagem/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/colagem/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/colagem/assets/trilha/trilha.mp3 +0 -0
- package/kits/colagem/capa.jpg +0 -0
- package/kits/colagem/elementos/AssinaturaMarca.tsx +17 -0
- package/kits/colagem/elementos/Camera.tsx +21 -0
- package/kits/colagem/elementos/Cena.tsx +36 -0
- package/kits/colagem/elementos/FitaAdesiva.tsx +11 -0
- package/kits/colagem/elementos/FotoRasgada.tsx +26 -0
- package/kits/colagem/elementos/Fundo.tsx +16 -0
- package/kits/colagem/elementos/ListaRecortes.tsx +23 -0
- package/kits/colagem/elementos/Montagem.tsx +56 -0
- package/kits/colagem/elementos/NotaDatilografada.tsx +35 -0
- package/kits/colagem/elementos/Overlay.tsx +8 -0
- package/kits/colagem/elementos/RecorteForma.tsx +23 -0
- package/kits/colagem/elementos/Som.tsx +30 -0
- package/kits/colagem/elementos/TituloRecorte.tsx +34 -0
- package/kits/colagem/elementos/base.ts +77 -0
- package/kits/colagem/elementos/index.ts +17 -0
- package/kits/colagem/elementos/rasgado.ts +16 -0
- package/kits/colagem/exemplos/fotos/foto-01.jpg +0 -0
- package/kits/colagem/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/colagem/exemplos/plano.json +228 -0
- package/kits/colagem/exemplos/roteiro.md +20 -0
- package/kits/colagem/preview.tsx +13 -0
- package/kits/colagem/receita.json +171 -0
- package/kits/colagem/regras/area-segura.md +15 -0
- package/kits/colagem/regras/cor.md +16 -0
- package/kits/colagem/regras/movimento.md +18 -0
- package/kits/colagem/regras/ritmo.md +15 -0
- package/kits/colagem/regras/som.md +18 -0
- package/kits/colagem/regras/tipografia.md +18 -0
- package/kits/contagem/SKILL.md +52 -0
- package/kits/contagem/assets/ASSETS.md +20 -0
- package/kits/contagem/assets/fontes/OFL-BigShouldersDisplay.txt +93 -0
- package/kits/contagem/assets/fontes/OFL-SpaceMono.txt +93 -0
- package/kits/contagem/assets/fontes/bigshoulders.woff2 +0 -0
- package/kits/contagem/assets/fontes/spacemono.woff2 +0 -0
- package/kits/contagem/assets/sons/assinatura.mp3 +0 -0
- package/kits/contagem/assets/sons/clique.mp3 +0 -0
- package/kits/contagem/assets/sons/confete.mp3 +0 -0
- package/kits/contagem/assets/sons/impacto.mp3 +0 -0
- package/kits/contagem/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/contagem/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/contagem/assets/sons/subida.mp3 +0 -0
- package/kits/contagem/assets/sons/swoosh.mp3 +0 -0
- package/kits/contagem/assets/sons/tick.mp3 +0 -0
- package/kits/contagem/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/contagem/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/contagem/assets/trilha/pulso-128bpm.mp3 +0 -0
- package/kits/contagem/capa.jpg +0 -0
- package/kits/contagem/elementos/AnelTempo.tsx +36 -0
- package/kits/contagem/elementos/BarraDias.tsx +41 -0
- package/kits/contagem/elementos/Camera.tsx +21 -0
- package/kits/contagem/elementos/CarimboData.tsx +37 -0
- package/kits/contagem/elementos/Cena.tsx +39 -0
- package/kits/contagem/elementos/Fundo.tsx +27 -0
- package/kits/contagem/elementos/Montagem.tsx +58 -0
- package/kits/contagem/elementos/NumeroRolando.tsx +49 -0
- package/kits/contagem/elementos/RelogioFlip.tsx +51 -0
- package/kits/contagem/elementos/Som.tsx +41 -0
- package/kits/contagem/elementos/base.ts +79 -0
- package/kits/contagem/elementos/index.ts +14 -0
- package/kits/contagem/exemplos/plano.json +48 -0
- package/kits/contagem/exemplos/roteiro.md +19 -0
- package/kits/contagem/preview.tsx +9 -0
- package/kits/contagem/receita.json +21 -0
- package/kits/contagem/regras/area-segura.md +16 -0
- package/kits/contagem/regras/cor.md +14 -0
- package/kits/contagem/regras/movimento.md +23 -0
- package/kits/contagem/regras/ritmo.md +15 -0
- package/kits/contagem/regras/som.md +21 -0
- package/kits/contagem/regras/tipografia.md +16 -0
- package/kits/convite-evento/SKILL.md +53 -0
- package/kits/convite-evento/assets/ASSETS.md +19 -0
- package/kits/convite-evento/assets/fontes/OFL-InstrumentSerif.txt +93 -0
- package/kits/convite-evento/assets/fontes/OFL-Unbounded.txt +93 -0
- package/kits/convite-evento/assets/fontes/instrumentserif-i.woff2 +0 -0
- package/kits/convite-evento/assets/fontes/unbounded.woff2 +0 -0
- package/kits/convite-evento/assets/sons/assinatura.mp3 +0 -0
- package/kits/convite-evento/assets/sons/clique.mp3 +0 -0
- package/kits/convite-evento/assets/sons/confete.mp3 +0 -0
- package/kits/convite-evento/assets/sons/impacto.mp3 +0 -0
- package/kits/convite-evento/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/convite-evento/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/convite-evento/assets/sons/subida.mp3 +0 -0
- package/kits/convite-evento/assets/sons/swoosh.mp3 +0 -0
- package/kits/convite-evento/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/convite-evento/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/convite-evento/assets/trilha/festa-112bpm.mp3 +0 -0
- package/kits/convite-evento/capa.jpg +0 -0
- package/kits/convite-evento/elementos/BotaoInscricao.tsx +36 -0
- package/kits/convite-evento/elementos/Camera.tsx +21 -0
- package/kits/convite-evento/elementos/Cena.tsx +39 -0
- package/kits/convite-evento/elementos/DataGigante.tsx +37 -0
- package/kits/convite-evento/elementos/Fundo.tsx +30 -0
- package/kits/convite-evento/elementos/IngressoBilhete.tsx +40 -0
- package/kits/convite-evento/elementos/LugarGigante.tsx +38 -0
- package/kits/convite-evento/elementos/Montagem.tsx +59 -0
- package/kits/convite-evento/elementos/SeloRotativo.tsx +32 -0
- package/kits/convite-evento/elementos/Som.tsx +40 -0
- package/kits/convite-evento/elementos/TituloEvento.tsx +33 -0
- package/kits/convite-evento/elementos/base.ts +82 -0
- package/kits/convite-evento/elementos/index.ts +15 -0
- package/kits/convite-evento/exemplos/plano.json +49 -0
- package/kits/convite-evento/exemplos/roteiro.md +19 -0
- package/kits/convite-evento/preview.tsx +9 -0
- package/kits/convite-evento/receita.json +21 -0
- package/kits/convite-evento/regras/area-segura.md +20 -0
- package/kits/convite-evento/regras/cor.md +13 -0
- package/kits/convite-evento/regras/movimento.md +20 -0
- package/kits/convite-evento/regras/ritmo.md +15 -0
- package/kits/convite-evento/regras/som.md +20 -0
- package/kits/convite-evento/regras/tipografia.md +18 -0
- package/kits/corte-podcast/SKILL.md +53 -0
- package/kits/corte-podcast/assets/ASSETS.md +19 -0
- package/kits/corte-podcast/assets/fontes/OFL-Anton.txt +93 -0
- package/kits/corte-podcast/assets/fontes/OFL-IBMPlexMono.txt +93 -0
- package/kits/corte-podcast/assets/fontes/anton.woff2 +0 -0
- package/kits/corte-podcast/assets/fontes/plexmono.woff2 +0 -0
- package/kits/corte-podcast/assets/sons/assinatura.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/clique.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/impacto.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/subida.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/swoosh.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/tick.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/corte-podcast/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/corte-podcast/assets/trilha/lofi-pulso-100bpm.mp3 +0 -0
- package/kits/corte-podcast/capa.jpg +0 -0
- package/kits/corte-podcast/elementos/BarraEpisodio.tsx +43 -0
- package/kits/corte-podcast/elementos/Camera.tsx +21 -0
- package/kits/corte-podcast/elementos/CartaoConvidado.tsx +32 -0
- package/kits/corte-podcast/elementos/Cena.tsx +41 -0
- package/kits/corte-podcast/elementos/CitacaoGrande.tsx +42 -0
- package/kits/corte-podcast/elementos/Fundo.tsx +27 -0
- package/kits/corte-podcast/elementos/LegendaKaraoke.tsx +32 -0
- package/kits/corte-podcast/elementos/Montagem.tsx +59 -0
- package/kits/corte-podcast/elementos/OndaAudio.tsx +41 -0
- package/kits/corte-podcast/elementos/SeloEpisodio.tsx +33 -0
- package/kits/corte-podcast/elementos/Som.tsx +40 -0
- package/kits/corte-podcast/elementos/base.ts +82 -0
- package/kits/corte-podcast/elementos/index.ts +15 -0
- package/kits/corte-podcast/exemplos/plano.json +62 -0
- package/kits/corte-podcast/exemplos/roteiro.md +20 -0
- package/kits/corte-podcast/preview.tsx +9 -0
- package/kits/corte-podcast/receita.json +21 -0
- package/kits/corte-podcast/regras/area-segura.md +18 -0
- package/kits/corte-podcast/regras/cor.md +15 -0
- package/kits/corte-podcast/regras/movimento.md +18 -0
- package/kits/corte-podcast/regras/ritmo.md +16 -0
- package/kits/corte-podcast/regras/som.md +20 -0
- package/kits/corte-podcast/regras/tipografia.md +16 -0
- package/kits/cubos/SKILL.md +51 -0
- package/kits/cubos/assets/ASSETS.md +21 -0
- package/kits/cubos/assets/fontes/OFL-ArchivoBlack.txt +92 -0
- package/kits/cubos/assets/fontes/OFL-DMSans.txt +92 -0
- package/kits/cubos/assets/fontes/archivoblack-latin.woff2 +0 -0
- package/kits/cubos/assets/fontes/dmsans-latin.woff2 +0 -0
- package/kits/cubos/assets/sons/assinatura.mp3 +0 -0
- package/kits/cubos/assets/sons/bloco.mp3 +0 -0
- package/kits/cubos/assets/sons/desmonta.mp3 +0 -0
- package/kits/cubos/assets/sons/encaixa.mp3 +0 -0
- package/kits/cubos/assets/sons/estala.mp3 +0 -0
- package/kits/cubos/assets/sons/gira.mp3 +0 -0
- package/kits/cubos/assets/sons/queda.mp3 +0 -0
- package/kits/cubos/assets/sons/whoosh.mp3 +0 -0
- package/kits/cubos/assets/trilha/calma-com-punch-108bpm.mp3 +0 -0
- package/kits/cubos/capa.jpg +0 -0
- package/kits/cubos/elementos/AssinaturaMarca.tsx +29 -0
- package/kits/cubos/elementos/Camera.tsx +22 -0
- package/kits/cubos/elementos/Cena.tsx +48 -0
- package/kits/cubos/elementos/Cubo.tsx +40 -0
- package/kits/cubos/elementos/CuboGiratorio.tsx +37 -0
- package/kits/cubos/elementos/Fundo.tsx +15 -0
- package/kits/cubos/elementos/Montagem.tsx +67 -0
- package/kits/cubos/elementos/MontagemDeCubos.tsx +58 -0
- package/kits/cubos/elementos/PlacaBloco.tsx +29 -0
- package/kits/cubos/elementos/Som.tsx +33 -0
- package/kits/cubos/elementos/TorreDeCubos.tsx +39 -0
- package/kits/cubos/elementos/base.ts +97 -0
- package/kits/cubos/elementos/index.ts +15 -0
- package/kits/cubos/exemplos/logo-encaixa.svg +1 -0
- package/kits/cubos/exemplos/plano.json +45 -0
- package/kits/cubos/exemplos/roteiro.md +20 -0
- package/kits/cubos/preview.tsx +12 -0
- package/kits/cubos/receita.json +151 -0
- package/kits/cubos/regras/area-segura.md +18 -0
- package/kits/cubos/regras/cor.md +23 -0
- package/kits/cubos/regras/movimento.md +17 -0
- package/kits/cubos/regras/ritmo.md +14 -0
- package/kits/cubos/regras/som.md +20 -0
- package/kits/cubos/regras/tipografia.md +15 -0
- package/kits/dashboard-dados/SKILL.md +51 -0
- package/kits/dashboard-dados/assets/ASSETS.md +18 -0
- package/kits/dashboard-dados/assets/fontes/OFL-IBM-Plex-Mono.txt +93 -0
- package/kits/dashboard-dados/assets/fontes/OFL-Montserrat.txt +93 -0
- package/kits/dashboard-dados/assets/fontes/montserrat.woff2 +0 -0
- package/kits/dashboard-dados/assets/fontes/plex-mono.woff2 +0 -0
- package/kits/dashboard-dados/assets/sons/assinatura.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/clique.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/impacto.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/subida.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/swoosh.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/dashboard-dados/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/dashboard-dados/assets/trilha/trilha.mp3 +0 -0
- package/kits/dashboard-dados/capa.jpg +0 -0
- package/kits/dashboard-dados/elementos/AssinaturaMarca.tsx +19 -0
- package/kits/dashboard-dados/elementos/BarrasCrescendo.tsx +27 -0
- package/kits/dashboard-dados/elementos/Camera.tsx +23 -0
- package/kits/dashboard-dados/elementos/Cena.tsx +46 -0
- package/kits/dashboard-dados/elementos/Fundo.tsx +12 -0
- package/kits/dashboard-dados/elementos/LinhaTendencia.tsx +29 -0
- package/kits/dashboard-dados/elementos/Montagem.tsx +60 -0
- package/kits/dashboard-dados/elementos/NumeroGigante.tsx +21 -0
- package/kits/dashboard-dados/elementos/RankingBarras.tsx +27 -0
- package/kits/dashboard-dados/elementos/RoscaDados.tsx +39 -0
- package/kits/dashboard-dados/elementos/Som.tsx +39 -0
- package/kits/dashboard-dados/elementos/base.ts +87 -0
- package/kits/dashboard-dados/elementos/index.ts +16 -0
- package/kits/dashboard-dados/exemplos/logo-radar.svg +1 -0
- package/kits/dashboard-dados/exemplos/plano.json +325 -0
- package/kits/dashboard-dados/exemplos/roteiro.md +20 -0
- package/kits/dashboard-dados/preview.tsx +12 -0
- package/kits/dashboard-dados/receita.json +173 -0
- package/kits/dashboard-dados/regras/area-segura.md +13 -0
- package/kits/dashboard-dados/regras/cor.md +17 -0
- package/kits/dashboard-dados/regras/movimento.md +17 -0
- package/kits/dashboard-dados/regras/ritmo.md +14 -0
- package/kits/dashboard-dados/regras/som.md +18 -0
- package/kits/dashboard-dados/regras/tipografia.md +16 -0
- package/kits/depoimento/SKILL.md +54 -0
- package/kits/depoimento/assets/ASSETS.md +20 -0
- package/kits/depoimento/assets/fontes/OFL-Newsreader.txt +93 -0
- package/kits/depoimento/assets/fontes/OFL-SpaceGrotesk.txt +93 -0
- package/kits/depoimento/assets/fontes/newsreader-i.woff2 +0 -0
- package/kits/depoimento/assets/fontes/spacegrotesk.woff2 +0 -0
- package/kits/depoimento/assets/sons/assinatura.mp3 +0 -0
- package/kits/depoimento/assets/sons/clique.mp3 +0 -0
- package/kits/depoimento/assets/sons/estrela.mp3 +0 -0
- package/kits/depoimento/assets/sons/impacto.mp3 +0 -0
- package/kits/depoimento/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/depoimento/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/depoimento/assets/sons/subida.mp3 +0 -0
- package/kits/depoimento/assets/sons/swoosh.mp3 +0 -0
- package/kits/depoimento/assets/sons/verificado.mp3 +0 -0
- package/kits/depoimento/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/depoimento/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/depoimento/assets/trilha/calor-104bpm.mp3 +0 -0
- package/kits/depoimento/capa.jpg +0 -0
- package/kits/depoimento/elementos/Avatar.tsx +37 -0
- package/kits/depoimento/elementos/Camera.tsx +21 -0
- package/kits/depoimento/elementos/CartaoDepoimento.tsx +69 -0
- package/kits/depoimento/elementos/Cena.tsx +39 -0
- package/kits/depoimento/elementos/Estrelas.tsx +34 -0
- package/kits/depoimento/elementos/FaixaAvatares.tsx +41 -0
- package/kits/depoimento/elementos/Fundo.tsx +23 -0
- package/kits/depoimento/elementos/Montagem.tsx +60 -0
- package/kits/depoimento/elementos/NotaGigante.tsx +38 -0
- package/kits/depoimento/elementos/PilhaCartoes.tsx +37 -0
- package/kits/depoimento/elementos/SeloVerificado.tsx +29 -0
- package/kits/depoimento/elementos/Som.tsx +41 -0
- package/kits/depoimento/elementos/base.ts +83 -0
- package/kits/depoimento/elementos/index.ts +16 -0
- package/kits/depoimento/exemplos/plano.json +57 -0
- package/kits/depoimento/exemplos/roteiro.md +19 -0
- package/kits/depoimento/preview.tsx +9 -0
- package/kits/depoimento/receita.json +21 -0
- package/kits/depoimento/regras/area-segura.md +17 -0
- package/kits/depoimento/regras/cor.md +16 -0
- package/kits/depoimento/regras/movimento.md +20 -0
- package/kits/depoimento/regras/ritmo.md +15 -0
- package/kits/depoimento/regras/som.md +21 -0
- package/kits/depoimento/regras/tipografia.md +17 -0
- package/kits/estudio/package.json +13 -0
- package/kits/estudio/render.mjs +48 -0
- package/kits/infografico/SKILL.md +54 -0
- package/kits/infografico/assets/ASSETS.md +19 -0
- package/kits/infografico/assets/fontes/OFL-Caveat.txt +93 -0
- package/kits/infografico/assets/fontes/OFL-Outfit.txt +93 -0
- package/kits/infografico/assets/fontes/caveat.woff2 +0 -0
- package/kits/infografico/assets/fontes/outfit.woff2 +0 -0
- package/kits/infografico/assets/sons/assinatura.mp3 +0 -0
- package/kits/infografico/assets/sons/clique.mp3 +0 -0
- package/kits/infografico/assets/sons/impacto.mp3 +0 -0
- package/kits/infografico/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/infografico/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/infografico/assets/sons/subida.mp3 +0 -0
- package/kits/infografico/assets/sons/swoosh.mp3 +0 -0
- package/kits/infografico/assets/sons/traco.mp3 +0 -0
- package/kits/infografico/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/infografico/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/infografico/assets/trilha/explica-100bpm.mp3 +0 -0
- package/kits/infografico/capa.jpg +0 -0
- package/kits/infografico/elementos/Anotacao.tsx +34 -0
- package/kits/infografico/elementos/CadeiaPassos.tsx +49 -0
- package/kits/infografico/elementos/Camera.tsx +21 -0
- package/kits/infografico/elementos/Cena.tsx +39 -0
- package/kits/infografico/elementos/Fundo.tsx +23 -0
- package/kits/infografico/elementos/GraficoBarras.tsx +41 -0
- package/kits/infografico/elementos/Icone.tsx +35 -0
- package/kits/infografico/elementos/Montagem.tsx +60 -0
- package/kits/infografico/elementos/NoProcesso.tsx +33 -0
- package/kits/infografico/elementos/NumeroDestaque.tsx +35 -0
- package/kits/infografico/elementos/SetaCurva.tsx +33 -0
- package/kits/infografico/elementos/Som.tsx +40 -0
- package/kits/infografico/elementos/base.ts +80 -0
- package/kits/infografico/elementos/index.ts +16 -0
- package/kits/infografico/exemplos/plano.json +49 -0
- package/kits/infografico/exemplos/roteiro.md +19 -0
- package/kits/infografico/preview.tsx +9 -0
- package/kits/infografico/receita.json +21 -0
- package/kits/infografico/regras/area-segura.md +17 -0
- package/kits/infografico/regras/cor.md +15 -0
- package/kits/infografico/regras/movimento.md +20 -0
- package/kits/infografico/regras/ritmo.md +15 -0
- package/kits/infografico/regras/som.md +20 -0
- package/kits/infografico/regras/tipografia.md +16 -0
- package/kits/isometrico/SKILL.md +52 -0
- package/kits/isometrico/assets/ASSETS.md +18 -0
- package/kits/isometrico/assets/fontes/OFL-Archivo.txt +93 -0
- package/kits/isometrico/assets/fontes/OFL-Jost.txt +93 -0
- package/kits/isometrico/assets/fontes/archivo.woff2 +0 -0
- package/kits/isometrico/assets/fontes/jost.woff2 +0 -0
- package/kits/isometrico/assets/sons/assinatura.mp3 +0 -0
- package/kits/isometrico/assets/sons/clique.mp3 +0 -0
- package/kits/isometrico/assets/sons/impacto.mp3 +0 -0
- package/kits/isometrico/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/isometrico/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/isometrico/assets/sons/subida.mp3 +0 -0
- package/kits/isometrico/assets/sons/swoosh.mp3 +0 -0
- package/kits/isometrico/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/isometrico/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/isometrico/assets/trilha/trilha.mp3 +0 -0
- package/kits/isometrico/capa.jpg +0 -0
- package/kits/isometrico/elementos/AssinaturaMarca.tsx +24 -0
- package/kits/isometrico/elementos/BlocosMontando.tsx +36 -0
- package/kits/isometrico/elementos/Camera.tsx +23 -0
- package/kits/isometrico/elementos/Cena.tsx +46 -0
- package/kits/isometrico/elementos/CidadeDeDados.tsx +33 -0
- package/kits/isometrico/elementos/Fundo.tsx +13 -0
- package/kits/isometrico/elementos/LegendaPlaca.tsx +18 -0
- package/kits/isometrico/elementos/Montagem.tsx +60 -0
- package/kits/isometrico/elementos/RedeDeBlocos.tsx +41 -0
- package/kits/isometrico/elementos/Som.tsx +39 -0
- package/kits/isometrico/elementos/TextoNoChao.tsx +28 -0
- package/kits/isometrico/elementos/base.ts +86 -0
- package/kits/isometrico/elementos/index.ts +16 -0
- package/kits/isometrico/elementos/iso.tsx +49 -0
- package/kits/isometrico/exemplos/logo-nodo.svg +1 -0
- package/kits/isometrico/exemplos/plano.json +433 -0
- package/kits/isometrico/exemplos/roteiro.md +20 -0
- package/kits/isometrico/preview.tsx +12 -0
- package/kits/isometrico/receita.json +155 -0
- package/kits/isometrico/regras/area-segura.md +13 -0
- package/kits/isometrico/regras/cor.md +18 -0
- package/kits/isometrico/regras/movimento.md +16 -0
- package/kits/isometrico/regras/ritmo.md +13 -0
- package/kits/isometrico/regras/som.md +18 -0
- package/kits/isometrico/regras/tipografia.md +12 -0
- package/kits/jornal/SKILL.md +54 -0
- package/kits/jornal/assets/ASSETS.md +24 -0
- package/kits/jornal/assets/fontes/OFL-PlayfairDisplay.txt +93 -0
- package/kits/jornal/assets/fontes/OFL-UnifrakturMaguntia.txt +93 -0
- package/kits/jornal/assets/fontes/playfair-italic.woff2 +0 -0
- package/kits/jornal/assets/fontes/playfair.woff2 +0 -0
- package/kits/jornal/assets/fontes/unifraktur.woff2 +0 -0
- package/kits/jornal/assets/sons/assinatura.mp3 +0 -0
- package/kits/jornal/assets/sons/clique.mp3 +0 -0
- package/kits/jornal/assets/sons/impacto.mp3 +0 -0
- package/kits/jornal/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/jornal/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/jornal/assets/sons/subida.mp3 +0 -0
- package/kits/jornal/assets/sons/swoosh.mp3 +0 -0
- package/kits/jornal/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/jornal/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/jornal/assets/trilha/redacao-96bpm.mp3 +0 -0
- package/kits/jornal/capa.jpg +0 -0
- package/kits/jornal/elementos/AssinaturaMarca.tsx +25 -0
- package/kits/jornal/elementos/Cabecalho.tsx +21 -0
- package/kits/jornal/elementos/Camera.tsx +22 -0
- package/kits/jornal/elementos/Carimbo.tsx +18 -0
- package/kits/jornal/elementos/Cena.tsx +41 -0
- package/kits/jornal/elementos/Colunas.tsx +24 -0
- package/kits/jornal/elementos/FotoMeiaTinta.tsx +20 -0
- package/kits/jornal/elementos/Fundo.tsx +18 -0
- package/kits/jornal/elementos/JornalGirando.tsx +27 -0
- package/kits/jornal/elementos/Manchete.tsx +30 -0
- package/kits/jornal/elementos/Montagem.tsx +61 -0
- package/kits/jornal/elementos/Som.tsx +38 -0
- package/kits/jornal/elementos/Ticker.tsx +19 -0
- package/kits/jornal/elementos/base.ts +76 -0
- package/kits/jornal/elementos/index.ts +17 -0
- package/kits/jornal/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/jornal/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/jornal/exemplos/logo-esquina.svg +1 -0
- package/kits/jornal/exemplos/plano.json +48 -0
- package/kits/jornal/exemplos/roteiro.md +19 -0
- package/kits/jornal/preview.tsx +17 -0
- package/kits/jornal/receita.json +170 -0
- package/kits/jornal/regras/area-segura.md +19 -0
- package/kits/jornal/regras/cor.md +14 -0
- package/kits/jornal/regras/movimento.md +16 -0
- package/kits/jornal/regras/ritmo.md +15 -0
- package/kits/jornal/regras/som.md +21 -0
- package/kits/jornal/regras/tipografia.md +17 -0
- package/kits/legenda-viva/SKILL.md +52 -0
- package/kits/legenda-viva/assets/ASSETS.md +23 -0
- package/kits/legenda-viva/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/legenda-viva/assets/fontes/OFL-Montserrat.txt +93 -0
- package/kits/legenda-viva/assets/fontes/inter.woff2 +0 -0
- package/kits/legenda-viva/assets/fontes/montserrat.woff2 +0 -0
- package/kits/legenda-viva/assets/sons/assinatura.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/clique.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/impacto.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/subida.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/swoosh.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/legenda-viva/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/legenda-viva/assets/trilha/voz-118bpm.mp3 +0 -0
- package/kits/legenda-viva/capa.jpg +0 -0
- package/kits/legenda-viva/elementos/AssinaturaMarca.tsx +29 -0
- package/kits/legenda-viva/elementos/Camera.tsx +22 -0
- package/kits/legenda-viva/elementos/Cena.tsx +41 -0
- package/kits/legenda-viva/elementos/ChipTema.tsx +19 -0
- package/kits/legenda-viva/elementos/Fundo.tsx +6 -0
- package/kits/legenda-viva/elementos/LegendaCaixa.tsx +36 -0
- package/kits/legenda-viva/elementos/LegendaPalavra.tsx +32 -0
- package/kits/legenda-viva/elementos/Montagem.tsx +59 -0
- package/kits/legenda-viva/elementos/OndaVoz.tsx +23 -0
- package/kits/legenda-viva/elementos/PalavraGigante.tsx +18 -0
- package/kits/legenda-viva/elementos/QuadroFalante.tsx +17 -0
- package/kits/legenda-viva/elementos/Som.tsx +38 -0
- package/kits/legenda-viva/elementos/base.ts +73 -0
- package/kits/legenda-viva/elementos/index.ts +16 -0
- package/kits/legenda-viva/exemplos/fotos/foto-01.jpg +0 -0
- package/kits/legenda-viva/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/legenda-viva/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/legenda-viva/exemplos/fotos/foto-05.jpg +0 -0
- package/kits/legenda-viva/exemplos/logo-dica.svg +1 -0
- package/kits/legenda-viva/exemplos/plano.json +45 -0
- package/kits/legenda-viva/exemplos/roteiro.md +18 -0
- package/kits/legenda-viva/preview.tsx +19 -0
- package/kits/legenda-viva/receita.json +171 -0
- package/kits/legenda-viva/regras/area-segura.md +19 -0
- package/kits/legenda-viva/regras/cor.md +14 -0
- package/kits/legenda-viva/regras/movimento.md +16 -0
- package/kits/legenda-viva/regras/ritmo.md +15 -0
- package/kits/legenda-viva/regras/som.md +21 -0
- package/kits/legenda-viva/regras/tipografia.md +16 -0
- package/kits/luxo/SKILL.md +55 -0
- package/kits/luxo/assets/ASSETS.md +20 -0
- package/kits/luxo/assets/fontes/OFL-CormorantGaramond.txt +93 -0
- package/kits/luxo/assets/fontes/OFL-Jost.txt +93 -0
- package/kits/luxo/assets/fontes/cormorant-i.woff2 +0 -0
- package/kits/luxo/assets/fontes/cormorant.woff2 +0 -0
- package/kits/luxo/assets/fontes/jost.woff2 +0 -0
- package/kits/luxo/assets/sons/assinatura.mp3 +0 -0
- package/kits/luxo/assets/sons/clique.mp3 +0 -0
- package/kits/luxo/assets/sons/impacto.mp3 +0 -0
- package/kits/luxo/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/luxo/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/luxo/assets/sons/sino.mp3 +0 -0
- package/kits/luxo/assets/sons/subida.mp3 +0 -0
- package/kits/luxo/assets/sons/swoosh.mp3 +0 -0
- package/kits/luxo/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/luxo/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/luxo/assets/trilha/ambar-78bpm.mp3 +0 -0
- package/kits/luxo/capa.jpg +0 -0
- package/kits/luxo/elementos/Camera.tsx +21 -0
- package/kits/luxo/elementos/Cena.tsx +36 -0
- package/kits/luxo/elementos/ConviteOuro.tsx +34 -0
- package/kits/luxo/elementos/Fundo.tsx +26 -0
- package/kits/luxo/elementos/LegendaFina.tsx +25 -0
- package/kits/luxo/elementos/LinhaOuro.tsx +24 -0
- package/kits/luxo/elementos/MolduraArco.tsx +36 -0
- package/kits/luxo/elementos/Monograma.tsx +35 -0
- package/kits/luxo/elementos/Montagem.tsx +59 -0
- package/kits/luxo/elementos/Som.tsx +40 -0
- package/kits/luxo/elementos/TituloSerifa.tsx +35 -0
- package/kits/luxo/elementos/base.ts +85 -0
- package/kits/luxo/elementos/index.ts +15 -0
- package/kits/luxo/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/luxo/exemplos/fotos/foto-08.jpg +0 -0
- package/kits/luxo/exemplos/plano.json +145 -0
- package/kits/luxo/exemplos/roteiro.md +18 -0
- package/kits/luxo/preview.tsx +13 -0
- package/kits/luxo/receita.json +18 -0
- package/kits/luxo/regras/area-segura.md +16 -0
- package/kits/luxo/regras/cor.md +16 -0
- package/kits/luxo/regras/movimento.md +19 -0
- package/kits/luxo/regras/ritmo.md +14 -0
- package/kits/luxo/regras/som.md +21 -0
- package/kits/luxo/regras/tipografia.md +17 -0
- package/kits/manifest.json +552 -0
- package/kits/mapa/SKILL.md +54 -0
- package/kits/mapa/assets/ASSETS.md +20 -0
- package/kits/mapa/assets/fontes/OFL-DMMono.txt +93 -0
- package/kits/mapa/assets/fontes/OFL-DMSans.txt +93 -0
- package/kits/mapa/assets/fontes/dmmono.woff2 +0 -0
- package/kits/mapa/assets/fontes/dmsans.woff2 +0 -0
- package/kits/mapa/assets/sons/assinatura.mp3 +0 -0
- package/kits/mapa/assets/sons/clique.mp3 +0 -0
- package/kits/mapa/assets/sons/impacto.mp3 +0 -0
- package/kits/mapa/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/mapa/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/mapa/assets/sons/quique.mp3 +0 -0
- package/kits/mapa/assets/sons/subida.mp3 +0 -0
- package/kits/mapa/assets/sons/swoosh.mp3 +0 -0
- package/kits/mapa/assets/sons/traco.mp3 +0 -0
- package/kits/mapa/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/mapa/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/mapa/assets/trilha/rota-100bpm.mp3 +0 -0
- package/kits/mapa/capa.jpg +0 -0
- package/kits/mapa/elementos/Camera.tsx +21 -0
- package/kits/mapa/elementos/CartaoEndereco.tsx +40 -0
- package/kits/mapa/elementos/Cena.tsx +41 -0
- package/kits/mapa/elementos/ChipTempo.tsx +29 -0
- package/kits/mapa/elementos/Fundo.tsx +25 -0
- package/kits/mapa/elementos/MapaBase.tsx +63 -0
- package/kits/mapa/elementos/Montagem.tsx +59 -0
- package/kits/mapa/elementos/Pino.tsx +38 -0
- package/kits/mapa/elementos/RotaAnimada.tsx +38 -0
- package/kits/mapa/elementos/Som.tsx +41 -0
- package/kits/mapa/elementos/TituloLocal.tsx +38 -0
- package/kits/mapa/elementos/base.ts +89 -0
- package/kits/mapa/elementos/index.ts +15 -0
- package/kits/mapa/exemplos/plano.json +48 -0
- package/kits/mapa/exemplos/roteiro.md +19 -0
- package/kits/mapa/preview.tsx +9 -0
- package/kits/mapa/receita.json +21 -0
- package/kits/mapa/regras/area-segura.md +15 -0
- package/kits/mapa/regras/cor.md +18 -0
- package/kits/mapa/regras/movimento.md +21 -0
- package/kits/mapa/regras/ritmo.md +15 -0
- package/kits/mapa/regras/som.md +21 -0
- package/kits/mapa/regras/tipografia.md +16 -0
- package/kits/massinha/SKILL.md +53 -0
- package/kits/massinha/assets/ASSETS.md +18 -0
- package/kits/massinha/assets/fontes/OFL-chewy.txt +93 -0
- package/kits/massinha/assets/fontes/OFL-nunito-800.txt +93 -0
- package/kits/massinha/assets/fontes/chewy.woff2 +0 -0
- package/kits/massinha/assets/fontes/nunito-800.woff2 +0 -0
- package/kits/massinha/assets/sons/assinatura.mp3 +0 -0
- package/kits/massinha/assets/sons/clique.mp3 +0 -0
- package/kits/massinha/assets/sons/impacto.mp3 +0 -0
- package/kits/massinha/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/massinha/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/massinha/assets/sons/subida.mp3 +0 -0
- package/kits/massinha/assets/sons/swoosh.mp3 +0 -0
- package/kits/massinha/assets/sons/tick.mp3 +0 -0
- package/kits/massinha/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/massinha/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/massinha/assets/trilha/trilha.mp3 +0 -0
- package/kits/massinha/capa.jpg +0 -0
- package/kits/massinha/elementos/AssinaturaMarca.tsx +20 -0
- package/kits/massinha/elementos/BichinhoMassa.tsx +30 -0
- package/kits/massinha/elementos/BolasMassa.tsx +25 -0
- package/kits/massinha/elementos/Camera.tsx +21 -0
- package/kits/massinha/elementos/Cena.tsx +36 -0
- package/kits/massinha/elementos/FormaMassa.tsx +23 -0
- package/kits/massinha/elementos/Fundo.tsx +12 -0
- package/kits/massinha/elementos/ListaMassa.tsx +19 -0
- package/kits/massinha/elementos/Montagem.tsx +56 -0
- package/kits/massinha/elementos/Overlay.tsx +11 -0
- package/kits/massinha/elementos/PlacaMassa.tsx +24 -0
- package/kits/massinha/elementos/Som.tsx +30 -0
- package/kits/massinha/elementos/TituloMassa.tsx +31 -0
- package/kits/massinha/elementos/argila.ts +21 -0
- package/kits/massinha/elementos/base.ts +79 -0
- package/kits/massinha/elementos/index.ts +17 -0
- package/kits/massinha/exemplos/plano.json +220 -0
- package/kits/massinha/exemplos/roteiro.md +20 -0
- package/kits/massinha/preview.tsx +12 -0
- package/kits/massinha/receita.json +170 -0
- package/kits/massinha/regras/area-segura.md +15 -0
- package/kits/massinha/regras/cor.md +18 -0
- package/kits/massinha/regras/movimento.md +17 -0
- package/kits/massinha/regras/ritmo.md +15 -0
- package/kits/massinha/regras/som.md +17 -0
- package/kits/massinha/regras/tipografia.md +18 -0
- package/kits/memphis/SKILL.md +52 -0
- package/kits/memphis/assets/ASSETS.md +18 -0
- package/kits/memphis/assets/fontes/OFL-bowlby-one.txt +93 -0
- package/kits/memphis/assets/fontes/OFL-dm-sans-800.txt +93 -0
- package/kits/memphis/assets/fontes/bowlby-one.woff2 +0 -0
- package/kits/memphis/assets/fontes/dm-sans-800.woff2 +0 -0
- package/kits/memphis/assets/sons/assinatura.mp3 +0 -0
- package/kits/memphis/assets/sons/clique.mp3 +0 -0
- package/kits/memphis/assets/sons/impacto.mp3 +0 -0
- package/kits/memphis/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/memphis/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/memphis/assets/sons/subida.mp3 +0 -0
- package/kits/memphis/assets/sons/swoosh.mp3 +0 -0
- package/kits/memphis/assets/sons/tick.mp3 +0 -0
- package/kits/memphis/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/memphis/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/memphis/assets/trilha/trilha.mp3 +0 -0
- package/kits/memphis/capa.jpg +0 -0
- package/kits/memphis/elementos/AssinaturaMarca.tsx +20 -0
- package/kits/memphis/elementos/Camera.tsx +21 -0
- package/kits/memphis/elementos/CartaoMemphis.tsx +16 -0
- package/kits/memphis/elementos/Cena.tsx +36 -0
- package/kits/memphis/elementos/FitaMarquee.tsx +21 -0
- package/kits/memphis/elementos/FormasMemphis.tsx +46 -0
- package/kits/memphis/elementos/Fundo.tsx +15 -0
- package/kits/memphis/elementos/ListaPilulas.tsx +17 -0
- package/kits/memphis/elementos/Montagem.tsx +56 -0
- package/kits/memphis/elementos/NumeroGigante.tsx +19 -0
- package/kits/memphis/elementos/Overlay.tsx +23 -0
- package/kits/memphis/elementos/Som.tsx +30 -0
- package/kits/memphis/elementos/TituloMemphis.tsx +28 -0
- package/kits/memphis/elementos/base.ts +78 -0
- package/kits/memphis/elementos/index.ts +17 -0
- package/kits/memphis/exemplos/plano.json +314 -0
- package/kits/memphis/exemplos/roteiro.md +20 -0
- package/kits/memphis/preview.tsx +12 -0
- package/kits/memphis/receita.json +174 -0
- package/kits/memphis/regras/area-segura.md +14 -0
- package/kits/memphis/regras/cor.md +17 -0
- package/kits/memphis/regras/movimento.md +18 -0
- package/kits/memphis/regras/ritmo.md +15 -0
- package/kits/memphis/regras/som.md +18 -0
- package/kits/memphis/regras/tipografia.md +19 -0
- package/kits/metal-liquido/SKILL.md +51 -0
- package/kits/metal-liquido/assets/ASSETS.md +21 -0
- package/kits/metal-liquido/assets/fontes/OFL-SpaceGrotesk.txt +92 -0
- package/kits/metal-liquido/assets/fontes/OFL-Unbounded.txt +92 -0
- package/kits/metal-liquido/assets/fontes/grotesk-latin.woff2 +0 -0
- package/kits/metal-liquido/assets/fontes/unbounded-latin.woff2 +0 -0
- package/kits/metal-liquido/assets/sons/assinatura.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/clique.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/cromo.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/liquido.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/quique.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/subida.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/varre.mp3 +0 -0
- package/kits/metal-liquido/assets/sons/whoosh.mp3 +0 -0
- package/kits/metal-liquido/assets/trilha/sombrio-114bpm.mp3 +0 -0
- package/kits/metal-liquido/capa.jpg +0 -0
- package/kits/metal-liquido/elementos/AnelCromo.tsx +28 -0
- package/kits/metal-liquido/elementos/AssinaturaMarca.tsx +26 -0
- package/kits/metal-liquido/elementos/BolhasCromadas.tsx +53 -0
- package/kits/metal-liquido/elementos/Camera.tsx +22 -0
- package/kits/metal-liquido/elementos/Cena.tsx +48 -0
- package/kits/metal-liquido/elementos/EsferaCromo.tsx +32 -0
- package/kits/metal-liquido/elementos/Fundo.tsx +20 -0
- package/kits/metal-liquido/elementos/Montagem.tsx +67 -0
- package/kits/metal-liquido/elementos/PilulaCromo.tsx +23 -0
- package/kits/metal-liquido/elementos/Som.tsx +33 -0
- package/kits/metal-liquido/elementos/TituloCromo.tsx +32 -0
- package/kits/metal-liquido/elementos/base.ts +94 -0
- package/kits/metal-liquido/elementos/index.ts +15 -0
- package/kits/metal-liquido/exemplos/logo-mercurio.svg +1 -0
- package/kits/metal-liquido/exemplos/plano.json +48 -0
- package/kits/metal-liquido/exemplos/roteiro.md +20 -0
- package/kits/metal-liquido/preview.tsx +12 -0
- package/kits/metal-liquido/receita.json +173 -0
- package/kits/metal-liquido/regras/area-segura.md +16 -0
- package/kits/metal-liquido/regras/cor.md +23 -0
- package/kits/metal-liquido/regras/movimento.md +18 -0
- package/kits/metal-liquido/regras/ritmo.md +14 -0
- package/kits/metal-liquido/regras/som.md +20 -0
- package/kits/metal-liquido/regras/tipografia.md +15 -0
- package/kits/minimal/SKILL.md +54 -0
- package/kits/minimal/assets/ASSETS.md +19 -0
- package/kits/minimal/assets/fontes/OFL-HankenGrotesk.txt +93 -0
- package/kits/minimal/assets/fontes/OFL-SplineSansMono.txt +93 -0
- package/kits/minimal/assets/fontes/hanken.woff2 +0 -0
- package/kits/minimal/assets/fontes/splinemono.woff2 +0 -0
- package/kits/minimal/assets/sons/assinatura.mp3 +0 -0
- package/kits/minimal/assets/sons/clique.mp3 +0 -0
- package/kits/minimal/assets/sons/impacto.mp3 +0 -0
- package/kits/minimal/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/minimal/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/minimal/assets/sons/subida.mp3 +0 -0
- package/kits/minimal/assets/sons/swoosh.mp3 +0 -0
- package/kits/minimal/assets/sons/toque.mp3 +0 -0
- package/kits/minimal/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/minimal/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/minimal/assets/trilha/vazio-90bpm.mp3 +0 -0
- package/kits/minimal/capa.jpg +0 -0
- package/kits/minimal/elementos/Camera.tsx +21 -0
- package/kits/minimal/elementos/Cena.tsx +39 -0
- package/kits/minimal/elementos/FormaMorph.tsx +44 -0
- package/kits/minimal/elementos/FraseUnica.tsx +33 -0
- package/kits/minimal/elementos/Fundo.tsx +20 -0
- package/kits/minimal/elementos/LinhaFina.tsx +24 -0
- package/kits/minimal/elementos/Montagem.tsx +59 -0
- package/kits/minimal/elementos/NumeroSolo.tsx +33 -0
- package/kits/minimal/elementos/PontoMovel.tsx +27 -0
- package/kits/minimal/elementos/RodapeMinimal.tsx +26 -0
- package/kits/minimal/elementos/Som.tsx +40 -0
- package/kits/minimal/elementos/base.ts +80 -0
- package/kits/minimal/elementos/index.ts +15 -0
- package/kits/minimal/exemplos/plano.json +48 -0
- package/kits/minimal/exemplos/roteiro.md +19 -0
- package/kits/minimal/preview.tsx +9 -0
- package/kits/minimal/receita.json +21 -0
- package/kits/minimal/regras/area-segura.md +15 -0
- package/kits/minimal/regras/cor.md +12 -0
- package/kits/minimal/regras/movimento.md +20 -0
- package/kits/minimal/regras/ritmo.md +15 -0
- package/kits/minimal/regras/som.md +21 -0
- package/kits/minimal/regras/tipografia.md +15 -0
- package/kits/neon-cidade/SKILL.md +51 -0
- package/kits/neon-cidade/assets/ASSETS.md +21 -0
- package/kits/neon-cidade/assets/fontes/OFL-BarlowCondensed.txt +92 -0
- package/kits/neon-cidade/assets/fontes/OFL-TiltNeon.txt +92 -0
- package/kits/neon-cidade/assets/fontes/barlow-latin.woff2 +0 -0
- package/kits/neon-cidade/assets/fontes/tiltneon-latin.woff2 +0 -0
- package/kits/neon-cidade/assets/sons/assinatura.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/balanca.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/clique.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/impacto.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/liga.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/tick.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/whoosh.mp3 +0 -0
- package/kits/neon-cidade/assets/sons/zumbido.mp3 +0 -0
- package/kits/neon-cidade/assets/trilha/noite-100bpm.mp3 +0 -0
- package/kits/neon-cidade/capa.jpg +0 -0
- package/kits/neon-cidade/elementos/AssinaturaMarca.tsx +24 -0
- package/kits/neon-cidade/elementos/CaixaLuminosa.tsx +40 -0
- package/kits/neon-cidade/elementos/Camera.tsx +22 -0
- package/kits/neon-cidade/elementos/Cena.tsx +48 -0
- package/kits/neon-cidade/elementos/Chuva.tsx +23 -0
- package/kits/neon-cidade/elementos/FormaNeon.tsx +42 -0
- package/kits/neon-cidade/elementos/Fundo.tsx +18 -0
- package/kits/neon-cidade/elementos/Horizonte.tsx +34 -0
- package/kits/neon-cidade/elementos/LetreiroNeon.tsx +46 -0
- package/kits/neon-cidade/elementos/Montagem.tsx +67 -0
- package/kits/neon-cidade/elementos/Som.tsx +33 -0
- package/kits/neon-cidade/elementos/base.ts +100 -0
- package/kits/neon-cidade/elementos/index.ts +15 -0
- package/kits/neon-cidade/exemplos/logo-fenix.svg +1 -0
- package/kits/neon-cidade/exemplos/plano.json +50 -0
- package/kits/neon-cidade/exemplos/roteiro.md +20 -0
- package/kits/neon-cidade/preview.tsx +12 -0
- package/kits/neon-cidade/receita.json +151 -0
- package/kits/neon-cidade/regras/area-segura.md +18 -0
- package/kits/neon-cidade/regras/cor.md +23 -0
- package/kits/neon-cidade/regras/movimento.md +18 -0
- package/kits/neon-cidade/regras/ritmo.md +14 -0
- package/kits/neon-cidade/regras/som.md +20 -0
- package/kits/neon-cidade/regras/tipografia.md +15 -0
- package/kits/notion-editorial/SKILL.md +51 -0
- package/kits/notion-editorial/assets/ASSETS.md +19 -0
- package/kits/notion-editorial/assets/fontes/OFL-Cormorant-Italic.txt +93 -0
- package/kits/notion-editorial/assets/fontes/OFL-Cormorant.txt +93 -0
- package/kits/notion-editorial/assets/fontes/OFL-Jost.txt +93 -0
- package/kits/notion-editorial/assets/fontes/cormorant-italic.woff2 +0 -0
- package/kits/notion-editorial/assets/fontes/cormorant.woff2 +0 -0
- package/kits/notion-editorial/assets/fontes/jost.woff2 +0 -0
- package/kits/notion-editorial/assets/sons/assinatura.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/clique.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/impacto.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/subida.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/swoosh.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/notion-editorial/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/notion-editorial/assets/trilha/trilha.mp3 +0 -0
- package/kits/notion-editorial/capa.jpg +0 -0
- package/kits/notion-editorial/elementos/AssinaturaMarca.tsx +20 -0
- package/kits/notion-editorial/elementos/BlocoNota.tsx +38 -0
- package/kits/notion-editorial/elementos/Camera.tsx +23 -0
- package/kits/notion-editorial/elementos/Cena.tsx +46 -0
- package/kits/notion-editorial/elementos/Diagrama.tsx +29 -0
- package/kits/notion-editorial/elementos/Fundo.tsx +12 -0
- package/kits/notion-editorial/elementos/Montagem.tsx +60 -0
- package/kits/notion-editorial/elementos/PassosNumerados.tsx +23 -0
- package/kits/notion-editorial/elementos/RabiscoIcone.tsx +33 -0
- package/kits/notion-editorial/elementos/Som.tsx +39 -0
- package/kits/notion-editorial/elementos/TextoSerifa.tsx +53 -0
- package/kits/notion-editorial/elementos/base.ts +87 -0
- package/kits/notion-editorial/elementos/desenho.tsx +36 -0
- package/kits/notion-editorial/elementos/index.ts +16 -0
- package/kits/notion-editorial/exemplos/logo-pauta.svg +1 -0
- package/kits/notion-editorial/exemplos/plano.json +254 -0
- package/kits/notion-editorial/exemplos/roteiro.md +20 -0
- package/kits/notion-editorial/preview.tsx +12 -0
- package/kits/notion-editorial/receita.json +165 -0
- package/kits/notion-editorial/regras/area-segura.md +13 -0
- package/kits/notion-editorial/regras/cor.md +15 -0
- package/kits/notion-editorial/regras/movimento.md +16 -0
- package/kits/notion-editorial/regras/ritmo.md +14 -0
- package/kits/notion-editorial/regras/som.md +18 -0
- package/kits/notion-editorial/regras/tipografia.md +15 -0
- package/kits/papel-recortado/SKILL.md +57 -0
- package/kits/papel-recortado/assets/ASSETS.md +18 -0
- package/kits/papel-recortado/assets/fontes/OFL-fredoka-700.txt +93 -0
- package/kits/papel-recortado/assets/fontes/OFL-nunito-700.txt +93 -0
- package/kits/papel-recortado/assets/fontes/fredoka-700.woff2 +0 -0
- package/kits/papel-recortado/assets/fontes/nunito-700.woff2 +0 -0
- package/kits/papel-recortado/assets/sons/assinatura.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/clique.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/impacto.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/subida.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/swoosh.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/tick.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/papel-recortado/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/papel-recortado/assets/trilha/trilha.mp3 +0 -0
- package/kits/papel-recortado/capa.jpg +0 -0
- package/kits/papel-recortado/elementos/CamadaPapel.tsx +81 -0
- package/kits/papel-recortado/elementos/Camera.tsx +28 -0
- package/kits/papel-recortado/elementos/CartaoCamadas.tsx +38 -0
- package/kits/papel-recortado/elementos/Cena.tsx +29 -0
- package/kits/papel-recortado/elementos/EtiquetaPapel.tsx +40 -0
- package/kits/papel-recortado/elementos/Filtros.tsx +33 -0
- package/kits/papel-recortado/elementos/Fita.tsx +21 -0
- package/kits/papel-recortado/elementos/FolhaPopUp.tsx +49 -0
- package/kits/papel-recortado/elementos/Fundo.tsx +10 -0
- package/kits/papel-recortado/elementos/LetrasRecortadas.tsx +48 -0
- package/kits/papel-recortado/elementos/MolduraPapel.tsx +12 -0
- package/kits/papel-recortado/elementos/Montagem.tsx +42 -0
- package/kits/papel-recortado/elementos/Som.tsx +30 -0
- package/kits/papel-recortado/elementos/base.ts +51 -0
- package/kits/papel-recortado/elementos/index.ts +15 -0
- package/kits/papel-recortado/exemplos/plano.json +410 -0
- package/kits/papel-recortado/exemplos/roteiro.md +13 -0
- package/kits/papel-recortado/preview.tsx +9 -0
- package/kits/papel-recortado/receita.json +14 -0
- package/kits/papel-recortado/regras/area-segura.md +13 -0
- package/kits/papel-recortado/regras/cor.md +16 -0
- package/kits/papel-recortado/regras/movimento.md +17 -0
- package/kits/papel-recortado/regras/ritmo.md +13 -0
- package/kits/papel-recortado/regras/som.md +17 -0
- package/kits/papel-recortado/regras/tipografia.md +12 -0
- package/kits/pixel/SKILL.md +52 -0
- package/kits/pixel/assets/ASSETS.md +18 -0
- package/kits/pixel/assets/fontes/OFL-pressstart2p.txt +93 -0
- package/kits/pixel/assets/fontes/OFL-vt323.txt +93 -0
- package/kits/pixel/assets/fontes/pressstart2p.woff2 +0 -0
- package/kits/pixel/assets/fontes/vt323.woff2 +0 -0
- package/kits/pixel/assets/sons/assinatura.mp3 +0 -0
- package/kits/pixel/assets/sons/clique.mp3 +0 -0
- package/kits/pixel/assets/sons/impacto.mp3 +0 -0
- package/kits/pixel/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/pixel/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/pixel/assets/sons/subida.mp3 +0 -0
- package/kits/pixel/assets/sons/swoosh.mp3 +0 -0
- package/kits/pixel/assets/sons/tick.mp3 +0 -0
- package/kits/pixel/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/pixel/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/pixel/assets/trilha/trilha.mp3 +0 -0
- package/kits/pixel/capa.jpg +0 -0
- package/kits/pixel/elementos/AssinaturaMarca.tsx +18 -0
- package/kits/pixel/elementos/CaixaDialogo.tsx +22 -0
- package/kits/pixel/elementos/Camera.tsx +21 -0
- package/kits/pixel/elementos/Cena.tsx +36 -0
- package/kits/pixel/elementos/ChuvaDeSprites.tsx +15 -0
- package/kits/pixel/elementos/Fundo.tsx +23 -0
- package/kits/pixel/elementos/HudPlacar.tsx +19 -0
- package/kits/pixel/elementos/MenuPixel.tsx +19 -0
- package/kits/pixel/elementos/Montagem.tsx +56 -0
- package/kits/pixel/elementos/Overlay.tsx +14 -0
- package/kits/pixel/elementos/Som.tsx +30 -0
- package/kits/pixel/elementos/Sprite.tsx +33 -0
- package/kits/pixel/elementos/TituloPixel.tsx +31 -0
- package/kits/pixel/elementos/base.ts +79 -0
- package/kits/pixel/elementos/index.ts +17 -0
- package/kits/pixel/exemplos/plano.json +309 -0
- package/kits/pixel/exemplos/roteiro.md +20 -0
- package/kits/pixel/preview.tsx +12 -0
- package/kits/pixel/receita.json +175 -0
- package/kits/pixel/regras/area-segura.md +14 -0
- package/kits/pixel/regras/cor.md +17 -0
- package/kits/pixel/regras/movimento.md +18 -0
- package/kits/pixel/regras/ritmo.md +15 -0
- package/kits/pixel/regras/som.md +18 -0
- package/kits/pixel/regras/tipografia.md +18 -0
- package/kits/pontos-3d/SKILL.md +51 -0
- package/kits/pontos-3d/assets/ASSETS.md +21 -0
- package/kits/pontos-3d/assets/fontes/OFL-JetBrainsMono.txt +92 -0
- package/kits/pontos-3d/assets/fontes/OFL-Sora.txt +92 -0
- package/kits/pontos-3d/assets/fontes/jetbrains-latin.woff2 +0 -0
- package/kits/pontos-3d/assets/fontes/sora-latin.woff2 +0 -0
- package/kits/pontos-3d/assets/sons/assinatura.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/clique.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/impacto.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/pop.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/subida.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/tick.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/varre.mp3 +0 -0
- package/kits/pontos-3d/assets/sons/whoosh.mp3 +0 -0
- package/kits/pontos-3d/assets/trilha/tech-120bpm.mp3 +0 -0
- package/kits/pontos-3d/capa.jpg +0 -0
- package/kits/pontos-3d/elementos/AssinaturaMarca.tsx +23 -0
- package/kits/pontos-3d/elementos/Camera.tsx +22 -0
- package/kits/pontos-3d/elementos/Cena.tsx +48 -0
- package/kits/pontos-3d/elementos/Contador.tsx +32 -0
- package/kits/pontos-3d/elementos/Fundo.tsx +20 -0
- package/kits/pontos-3d/elementos/Montagem.tsx +67 -0
- package/kits/pontos-3d/elementos/NuvemDePontos.tsx +84 -0
- package/kits/pontos-3d/elementos/RotuloPonto.tsx +32 -0
- package/kits/pontos-3d/elementos/Som.tsx +33 -0
- package/kits/pontos-3d/elementos/TextoDePontos.tsx +55 -0
- package/kits/pontos-3d/elementos/TituloSora.tsx +36 -0
- package/kits/pontos-3d/elementos/base.ts +92 -0
- package/kits/pontos-3d/elementos/index.ts +15 -0
- package/kits/pontos-3d/exemplos/logo-malha.svg +1 -0
- package/kits/pontos-3d/exemplos/plano.json +46 -0
- package/kits/pontos-3d/exemplos/roteiro.md +20 -0
- package/kits/pontos-3d/preview.tsx +12 -0
- package/kits/pontos-3d/receita.json +153 -0
- package/kits/pontos-3d/regras/area-segura.md +17 -0
- package/kits/pontos-3d/regras/cor.md +21 -0
- package/kits/pontos-3d/regras/movimento.md +19 -0
- package/kits/pontos-3d/regras/ritmo.md +14 -0
- package/kits/pontos-3d/regras/som.md +20 -0
- package/kits/pontos-3d/regras/tipografia.md +16 -0
- package/kits/produto-3d/SKILL.md +59 -0
- package/kits/produto-3d/assets/ASSETS.md +18 -0
- package/kits/produto-3d/assets/fontes/OFL-IBMPlexMono.txt +93 -0
- package/kits/produto-3d/assets/fontes/OFL-Syncopate.txt +92 -0
- package/kits/produto-3d/assets/fontes/plex-mono.woff2 +0 -0
- package/kits/produto-3d/assets/fontes/syncopate-latin.woff2 +0 -0
- package/kits/produto-3d/assets/sons/assinatura.mp3 +0 -0
- package/kits/produto-3d/assets/sons/clique.mp3 +0 -0
- package/kits/produto-3d/assets/sons/impacto.mp3 +0 -0
- package/kits/produto-3d/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/produto-3d/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/produto-3d/assets/sons/subida.mp3 +0 -0
- package/kits/produto-3d/assets/sons/swoosh.mp3 +0 -0
- package/kits/produto-3d/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/produto-3d/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/produto-3d/assets/trilha/trilha.mp3 +0 -0
- package/kits/produto-3d/capa.jpg +0 -0
- package/kits/produto-3d/elementos/AssinaturaMarca.tsx +28 -0
- package/kits/produto-3d/elementos/Camera.tsx +23 -0
- package/kits/produto-3d/elementos/Cena.tsx +55 -0
- package/kits/produto-3d/elementos/Fundo.tsx +45 -0
- package/kits/produto-3d/elementos/Montagem.tsx +53 -0
- package/kits/produto-3d/elementos/NumeroDestaque.tsx +35 -0
- package/kits/produto-3d/elementos/Produto3D.tsx +144 -0
- package/kits/produto-3d/elementos/RotuloChamada.tsx +43 -0
- package/kits/produto-3d/elementos/Som.tsx +39 -0
- package/kits/produto-3d/elementos/TituloMinimo.tsx +45 -0
- package/kits/produto-3d/elementos/VarreduraLuz.tsx +22 -0
- package/kits/produto-3d/elementos/base.ts +109 -0
- package/kits/produto-3d/elementos/index.ts +13 -0
- package/kits/produto-3d/elementos/modelos.ts +92 -0
- package/kits/produto-3d/elementos/raymarch.ts +295 -0
- package/kits/produto-3d/exemplos/plano.json +53 -0
- package/kits/produto-3d/exemplos/roteiro.md +15 -0
- package/kits/produto-3d/preview.tsx +9 -0
- package/kits/produto-3d/receita.json +16 -0
- package/kits/produto-3d/regras/area-segura.md +14 -0
- package/kits/produto-3d/regras/cor.md +20 -0
- package/kits/produto-3d/regras/movimento.md +19 -0
- package/kits/produto-3d/regras/ritmo.md +15 -0
- package/kits/produto-3d/regras/som.md +18 -0
- package/kits/produto-3d/regras/tipografia.md +13 -0
- package/kits/quadro-giz/SKILL.md +52 -0
- package/kits/quadro-giz/assets/ASSETS.md +18 -0
- package/kits/quadro-giz/assets/fontes/OFL-patrick-hand.txt +93 -0
- package/kits/quadro-giz/assets/fontes/OFL-schoolbell.txt +93 -0
- package/kits/quadro-giz/assets/fontes/patrick-hand.woff2 +0 -0
- package/kits/quadro-giz/assets/fontes/schoolbell.woff2 +0 -0
- package/kits/quadro-giz/assets/sons/assinatura.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/clique.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/impacto.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/subida.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/swoosh.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/tick.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/quadro-giz/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/quadro-giz/assets/trilha/trilha.mp3 +0 -0
- package/kits/quadro-giz/capa.jpg +0 -0
- package/kits/quadro-giz/elementos/ApagadorVarrendo.tsx +32 -0
- package/kits/quadro-giz/elementos/AssinaturaMarca.tsx +20 -0
- package/kits/quadro-giz/elementos/Camera.tsx +21 -0
- package/kits/quadro-giz/elementos/CartaoGiz.tsx +25 -0
- package/kits/quadro-giz/elementos/Cena.tsx +36 -0
- package/kits/quadro-giz/elementos/ContaNoQuadro.tsx +34 -0
- package/kits/quadro-giz/elementos/DesenhoGiz.tsx +29 -0
- package/kits/quadro-giz/elementos/Fundo.tsx +21 -0
- package/kits/quadro-giz/elementos/ListaGiz.tsx +21 -0
- package/kits/quadro-giz/elementos/Montagem.tsx +56 -0
- package/kits/quadro-giz/elementos/Overlay.tsx +12 -0
- package/kits/quadro-giz/elementos/Som.tsx +30 -0
- package/kits/quadro-giz/elementos/TituloGiz.tsx +29 -0
- package/kits/quadro-giz/elementos/base.ts +78 -0
- package/kits/quadro-giz/elementos/index.ts +17 -0
- package/kits/quadro-giz/elementos/traco.ts +9 -0
- package/kits/quadro-giz/exemplos/plano.json +237 -0
- package/kits/quadro-giz/exemplos/roteiro.md +20 -0
- package/kits/quadro-giz/preview.tsx +12 -0
- package/kits/quadro-giz/receita.json +193 -0
- package/kits/quadro-giz/regras/area-segura.md +15 -0
- package/kits/quadro-giz/regras/cor.md +17 -0
- package/kits/quadro-giz/regras/movimento.md +18 -0
- package/kits/quadro-giz/regras/ritmo.md +16 -0
- package/kits/quadro-giz/regras/som.md +18 -0
- package/kits/quadro-giz/regras/tipografia.md +19 -0
- package/kits/rabisco/SKILL.md +51 -0
- package/kits/rabisco/assets/ASSETS.md +18 -0
- package/kits/rabisco/assets/fontes/OFL-caveat-700.txt +93 -0
- package/kits/rabisco/assets/fontes/OFL-permanent-marker.txt +93 -0
- package/kits/rabisco/assets/fontes/caveat-700.woff2 +0 -0
- package/kits/rabisco/assets/fontes/permanent-marker.woff2 +0 -0
- package/kits/rabisco/assets/sons/assinatura.mp3 +0 -0
- package/kits/rabisco/assets/sons/clique.mp3 +0 -0
- package/kits/rabisco/assets/sons/impacto.mp3 +0 -0
- package/kits/rabisco/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/rabisco/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/rabisco/assets/sons/subida.mp3 +0 -0
- package/kits/rabisco/assets/sons/swoosh.mp3 +0 -0
- package/kits/rabisco/assets/sons/tick.mp3 +0 -0
- package/kits/rabisco/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/rabisco/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/rabisco/assets/trilha/trilha.mp3 +0 -0
- package/kits/rabisco/capa.jpg +0 -0
- package/kits/rabisco/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/rabisco/elementos/Bonequinho.tsx +31 -0
- package/kits/rabisco/elementos/Camera.tsx +21 -0
- package/kits/rabisco/elementos/CartaoRabiscado.tsx +27 -0
- package/kits/rabisco/elementos/Cena.tsx +36 -0
- package/kits/rabisco/elementos/Fundo.tsx +17 -0
- package/kits/rabisco/elementos/ListaRabiscada.tsx +23 -0
- package/kits/rabisco/elementos/Montagem.tsx +55 -0
- package/kits/rabisco/elementos/Overlay.tsx +8 -0
- package/kits/rabisco/elementos/Som.tsx +30 -0
- package/kits/rabisco/elementos/TituloRabisco.tsx +28 -0
- package/kits/rabisco/elementos/TracoDesenhando.tsx +31 -0
- package/kits/rabisco/elementos/base.ts +76 -0
- package/kits/rabisco/elementos/index.ts +16 -0
- package/kits/rabisco/elementos/traco.ts +10 -0
- package/kits/rabisco/exemplos/plano.json +238 -0
- package/kits/rabisco/exemplos/roteiro.md +20 -0
- package/kits/rabisco/preview.tsx +12 -0
- package/kits/rabisco/receita.json +171 -0
- package/kits/rabisco/regras/area-segura.md +14 -0
- package/kits/rabisco/regras/cor.md +15 -0
- package/kits/rabisco/regras/movimento.md +18 -0
- package/kits/rabisco/regras/ritmo.md +15 -0
- package/kits/rabisco/regras/som.md +17 -0
- package/kits/rabisco/regras/tipografia.md +18 -0
- package/kits/retro-70/SKILL.md +53 -0
- package/kits/retro-70/assets/ASSETS.md +23 -0
- package/kits/retro-70/assets/fontes/OFL-Fredoka.txt +93 -0
- package/kits/retro-70/assets/fontes/OFL-Shrikhand.txt +93 -0
- package/kits/retro-70/assets/fontes/fredoka.woff2 +0 -0
- package/kits/retro-70/assets/fontes/shrikhand.woff2 +0 -0
- package/kits/retro-70/assets/sons/assinatura.mp3 +0 -0
- package/kits/retro-70/assets/sons/clique.mp3 +0 -0
- package/kits/retro-70/assets/sons/impacto.mp3 +0 -0
- package/kits/retro-70/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/retro-70/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/retro-70/assets/sons/subida.mp3 +0 -0
- package/kits/retro-70/assets/sons/swoosh.mp3 +0 -0
- package/kits/retro-70/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/retro-70/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/retro-70/assets/trilha/solar-104bpm.mp3 +0 -0
- package/kits/retro-70/capa.jpg +0 -0
- package/kits/retro-70/elementos/ArcoListras.tsx +25 -0
- package/kits/retro-70/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/retro-70/elementos/Camera.tsx +22 -0
- package/kits/retro-70/elementos/CartaoData.tsx +24 -0
- package/kits/retro-70/elementos/Cena.tsx +41 -0
- package/kits/retro-70/elementos/FaixaOnda.tsx +27 -0
- package/kits/retro-70/elementos/Flor70.tsx +25 -0
- package/kits/retro-70/elementos/FotoArredondada.tsx +19 -0
- package/kits/retro-70/elementos/Fundo.tsx +11 -0
- package/kits/retro-70/elementos/Montagem.tsx +60 -0
- package/kits/retro-70/elementos/RaiosDeSol.tsx +27 -0
- package/kits/retro-70/elementos/Som.tsx +38 -0
- package/kits/retro-70/elementos/TituloGordo.tsx +28 -0
- package/kits/retro-70/elementos/base.ts +73 -0
- package/kits/retro-70/elementos/index.ts +17 -0
- package/kits/retro-70/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/retro-70/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/retro-70/exemplos/logo-girassol.svg +1 -0
- package/kits/retro-70/exemplos/plano.json +50 -0
- package/kits/retro-70/exemplos/roteiro.md +19 -0
- package/kits/retro-70/preview.tsx +17 -0
- package/kits/retro-70/receita.json +172 -0
- package/kits/retro-70/regras/area-segura.md +20 -0
- package/kits/retro-70/regras/cor.md +14 -0
- package/kits/retro-70/regras/movimento.md +16 -0
- package/kits/retro-70/regras/ritmo.md +15 -0
- package/kits/retro-70/regras/som.md +21 -0
- package/kits/retro-70/regras/tipografia.md +17 -0
- package/kits/revista/SKILL.md +52 -0
- package/kits/revista/assets/ASSETS.md +24 -0
- package/kits/revista/assets/fontes/OFL-CormorantGaramond.txt +93 -0
- package/kits/revista/assets/fontes/OFL-Jost.txt +93 -0
- package/kits/revista/assets/fontes/cormorant-italic.woff2 +0 -0
- package/kits/revista/assets/fontes/cormorant.woff2 +0 -0
- package/kits/revista/assets/fontes/jost.woff2 +0 -0
- package/kits/revista/assets/sons/assinatura.mp3 +0 -0
- package/kits/revista/assets/sons/clique.mp3 +0 -0
- package/kits/revista/assets/sons/impacto.mp3 +0 -0
- package/kits/revista/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/revista/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/revista/assets/sons/subida.mp3 +0 -0
- package/kits/revista/assets/sons/swoosh.mp3 +0 -0
- package/kits/revista/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/revista/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/revista/assets/trilha/editorial-100bpm.mp3 +0 -0
- package/kits/revista/capa.jpg +0 -0
- package/kits/revista/elementos/AssinaturaMarca.tsx +23 -0
- package/kits/revista/elementos/Camera.tsx +22 -0
- package/kits/revista/elementos/Cena.tsx +41 -0
- package/kits/revista/elementos/CitacaoGrande.tsx +27 -0
- package/kits/revista/elementos/ColagemFotos.tsx +22 -0
- package/kits/revista/elementos/Folio.tsx +19 -0
- package/kits/revista/elementos/FotoSangrando.tsx +24 -0
- package/kits/revista/elementos/Fundo.tsx +11 -0
- package/kits/revista/elementos/Montagem.tsx +59 -0
- package/kits/revista/elementos/PaginaDupla.tsx +36 -0
- package/kits/revista/elementos/Som.tsx +38 -0
- package/kits/revista/elementos/TituloEditorial.tsx +31 -0
- package/kits/revista/elementos/base.ts +76 -0
- package/kits/revista/elementos/index.ts +16 -0
- package/kits/revista/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/revista/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/revista/exemplos/fotos/foto-05.jpg +0 -0
- package/kits/revista/exemplos/fotos/foto-06.jpg +0 -0
- package/kits/revista/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/revista/exemplos/fotos/foto-08.jpg +0 -0
- package/kits/revista/exemplos/logo-linho.svg +1 -0
- package/kits/revista/exemplos/plano.json +44 -0
- package/kits/revista/exemplos/roteiro.md +19 -0
- package/kits/revista/preview.tsx +21 -0
- package/kits/revista/receita.json +168 -0
- package/kits/revista/regras/area-segura.md +19 -0
- package/kits/revista/regras/cor.md +14 -0
- package/kits/revista/regras/movimento.md +15 -0
- package/kits/revista/regras/ritmo.md +15 -0
- package/kits/revista/regras/som.md +21 -0
- package/kits/revista/regras/tipografia.md +17 -0
- package/kits/risografia/SKILL.md +53 -0
- package/kits/risografia/assets/ASSETS.md +18 -0
- package/kits/risografia/assets/fontes/OFL-bricolage-800.txt +93 -0
- package/kits/risografia/assets/fontes/OFL-space-mono-700.txt +93 -0
- package/kits/risografia/assets/fontes/bricolage-800.woff2 +0 -0
- package/kits/risografia/assets/fontes/space-mono-700.woff2 +0 -0
- package/kits/risografia/assets/sons/assinatura.mp3 +0 -0
- package/kits/risografia/assets/sons/clique.mp3 +0 -0
- package/kits/risografia/assets/sons/impacto.mp3 +0 -0
- package/kits/risografia/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/risografia/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/risografia/assets/sons/subida.mp3 +0 -0
- package/kits/risografia/assets/sons/swoosh.mp3 +0 -0
- package/kits/risografia/assets/sons/tick.mp3 +0 -0
- package/kits/risografia/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/risografia/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/risografia/assets/trilha/trilha.mp3 +0 -0
- package/kits/risografia/capa.jpg +0 -0
- package/kits/risografia/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/risografia/elementos/BolaReticula.tsx +26 -0
- package/kits/risografia/elementos/Camera.tsx +21 -0
- package/kits/risografia/elementos/Cena.tsx +36 -0
- package/kits/risografia/elementos/FormaRiso.tsx +24 -0
- package/kits/risografia/elementos/Fundo.tsx +12 -0
- package/kits/risografia/elementos/ListaRiso.tsx +22 -0
- package/kits/risografia/elementos/Montagem.tsx +56 -0
- package/kits/risografia/elementos/NumeroRiso.tsx +21 -0
- package/kits/risografia/elementos/Overlay.tsx +18 -0
- package/kits/risografia/elementos/Som.tsx +30 -0
- package/kits/risografia/elementos/TarjaCarimbo.tsx +20 -0
- package/kits/risografia/elementos/TituloRiso.tsx +26 -0
- package/kits/risografia/elementos/base.ts +73 -0
- package/kits/risografia/elementos/index.ts +17 -0
- package/kits/risografia/exemplos/plano.json +209 -0
- package/kits/risografia/exemplos/roteiro.md +20 -0
- package/kits/risografia/preview.tsx +12 -0
- package/kits/risografia/receita.json +169 -0
- package/kits/risografia/regras/area-segura.md +14 -0
- package/kits/risografia/regras/cor.md +12 -0
- package/kits/risografia/regras/movimento.md +18 -0
- package/kits/risografia/regras/ritmo.md +15 -0
- package/kits/risografia/regras/som.md +17 -0
- package/kits/risografia/regras/tipografia.md +18 -0
- package/kits/saas-linear/SKILL.md +60 -0
- package/kits/saas-linear/assets/ASSETS.md +19 -0
- package/kits/saas-linear/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/saas-linear/assets/fontes/OFL-Newsreader.txt +93 -0
- package/kits/saas-linear/assets/fontes/inter-400.woff2 +0 -0
- package/kits/saas-linear/assets/fontes/inter-600.woff2 +0 -0
- package/kits/saas-linear/assets/fontes/newsreader-400.woff2 +0 -0
- package/kits/saas-linear/assets/sons/assinatura.mp3 +0 -0
- package/kits/saas-linear/assets/sons/clique.mp3 +0 -0
- package/kits/saas-linear/assets/sons/impacto.mp3 +0 -0
- package/kits/saas-linear/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/saas-linear/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/saas-linear/assets/sons/subida.mp3 +0 -0
- package/kits/saas-linear/assets/sons/swoosh.mp3 +0 -0
- package/kits/saas-linear/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/saas-linear/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/saas-linear/assets/trilha/trilha.mp3 +0 -0
- package/kits/saas-linear/capa.jpg +0 -0
- package/kits/saas-linear/elementos/Agenda.tsx +46 -0
- package/kits/saas-linear/elementos/CaixaPrompt.tsx +41 -0
- package/kits/saas-linear/elementos/Camera.tsx +38 -0
- package/kits/saas-linear/elementos/CartoesIntegracao.tsx +57 -0
- package/kits/saas-linear/elementos/Cena.tsx +38 -0
- package/kits/saas-linear/elementos/Cursor.tsx +40 -0
- package/kits/saas-linear/elementos/FraseSerifa.tsx +25 -0
- package/kits/saas-linear/elementos/Fundo.tsx +18 -0
- package/kits/saas-linear/elementos/Marca.tsx +20 -0
- package/kits/saas-linear/elementos/MarcaFinal.tsx +22 -0
- package/kits/saas-linear/elementos/Menu.tsx +46 -0
- package/kits/saas-linear/elementos/Monitor.tsx +28 -0
- package/kits/saas-linear/elementos/Montagem.tsx +67 -0
- package/kits/saas-linear/elementos/Saudacao.tsx +27 -0
- package/kits/saas-linear/elementos/Som.tsx +39 -0
- package/kits/saas-linear/elementos/base.ts +84 -0
- package/kits/saas-linear/elementos/index.ts +21 -0
- package/kits/saas-linear/exemplos/plano.json +459 -0
- package/kits/saas-linear/exemplos/roteiro.md +15 -0
- package/kits/saas-linear/preview.tsx +9 -0
- package/kits/saas-linear/receita.json +32 -0
- package/kits/saas-linear/regras/area-segura.md +17 -0
- package/kits/saas-linear/regras/cor.md +19 -0
- package/kits/saas-linear/regras/movimento.md +20 -0
- package/kits/saas-linear/regras/ritmo.md +14 -0
- package/kits/saas-linear/regras/som.md +16 -0
- package/kits/saas-linear/regras/tipografia.md +17 -0
- package/kits/stripe-ondas/SKILL.md +52 -0
- package/kits/stripe-ondas/assets/ASSETS.md +18 -0
- package/kits/stripe-ondas/assets/fontes/OFL-DM-Mono.txt +93 -0
- package/kits/stripe-ondas/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/stripe-ondas/assets/fontes/dm-mono.woff2 +0 -0
- package/kits/stripe-ondas/assets/fontes/inter.woff2 +0 -0
- package/kits/stripe-ondas/assets/sons/assinatura.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/clique.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/impacto.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/subida.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/swoosh.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/stripe-ondas/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/stripe-ondas/assets/trilha/trilha.mp3 +0 -0
- package/kits/stripe-ondas/capa.jpg +0 -0
- package/kits/stripe-ondas/elementos/AssinaturaMarca.tsx +18 -0
- package/kits/stripe-ondas/elementos/Camera.tsx +23 -0
- package/kits/stripe-ondas/elementos/CartaoPagamento.tsx +35 -0
- package/kits/stripe-ondas/elementos/Cena.tsx +46 -0
- package/kits/stripe-ondas/elementos/FaixaDeOndas.tsx +49 -0
- package/kits/stripe-ondas/elementos/Fundo.tsx +11 -0
- package/kits/stripe-ondas/elementos/GraficoOnda.tsx +34 -0
- package/kits/stripe-ondas/elementos/Montagem.tsx +61 -0
- package/kits/stripe-ondas/elementos/PainelCodigo.tsx +36 -0
- package/kits/stripe-ondas/elementos/SelosDeMetodo.tsx +27 -0
- package/kits/stripe-ondas/elementos/Som.tsx +39 -0
- package/kits/stripe-ondas/elementos/TituloLimpo.tsx +27 -0
- package/kits/stripe-ondas/elementos/base.ts +85 -0
- package/kits/stripe-ondas/elementos/index.ts +16 -0
- package/kits/stripe-ondas/exemplos/logo-cais.svg +1 -0
- package/kits/stripe-ondas/exemplos/plano.json +366 -0
- package/kits/stripe-ondas/exemplos/roteiro.md +20 -0
- package/kits/stripe-ondas/preview.tsx +12 -0
- package/kits/stripe-ondas/receita.json +177 -0
- package/kits/stripe-ondas/regras/area-segura.md +16 -0
- package/kits/stripe-ondas/regras/cor.md +17 -0
- package/kits/stripe-ondas/regras/movimento.md +16 -0
- package/kits/stripe-ondas/regras/ritmo.md +14 -0
- package/kits/stripe-ondas/regras/som.md +18 -0
- package/kits/stripe-ondas/regras/tipografia.md +15 -0
- package/kits/suica/SKILL.md +56 -0
- package/kits/suica/assets/ASSETS.md +23 -0
- package/kits/suica/assets/fontes/OFL-IBMPlexMono.txt +93 -0
- package/kits/suica/assets/fontes/OFL-InterTight.txt +93 -0
- package/kits/suica/assets/fontes/inter-tight.woff2 +0 -0
- package/kits/suica/assets/fontes/plex-mono.woff2 +0 -0
- package/kits/suica/assets/sons/assinatura.mp3 +0 -0
- package/kits/suica/assets/sons/clique.mp3 +0 -0
- package/kits/suica/assets/sons/impacto.mp3 +0 -0
- package/kits/suica/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/suica/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/suica/assets/sons/subida.mp3 +0 -0
- package/kits/suica/assets/sons/swoosh.mp3 +0 -0
- package/kits/suica/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/suica/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/suica/assets/trilha/frio-120bpm.mp3 +0 -0
- package/kits/suica/capa.jpg +0 -0
- package/kits/suica/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/suica/elementos/Camera.tsx +22 -0
- package/kits/suica/elementos/Cena.tsx +41 -0
- package/kits/suica/elementos/DiscoFoto.tsx +20 -0
- package/kits/suica/elementos/Fundo.tsx +16 -0
- package/kits/suica/elementos/GradeFotos.tsx +21 -0
- package/kits/suica/elementos/Indice.tsx +17 -0
- package/kits/suica/elementos/ListaIndice.tsx +25 -0
- package/kits/suica/elementos/Montagem.tsx +60 -0
- package/kits/suica/elementos/NumeroGigante.tsx +21 -0
- package/kits/suica/elementos/Regua.tsx +20 -0
- package/kits/suica/elementos/Som.tsx +38 -0
- package/kits/suica/elementos/TituloGrade.tsx +38 -0
- package/kits/suica/elementos/base.ts +76 -0
- package/kits/suica/elementos/index.ts +17 -0
- package/kits/suica/exemplos/fotos/foto-01.jpg +0 -0
- package/kits/suica/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/suica/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/suica/exemplos/fotos/foto-05.jpg +0 -0
- package/kits/suica/exemplos/fotos/foto-06.jpg +0 -0
- package/kits/suica/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/suica/exemplos/logo-ponto.svg +1 -0
- package/kits/suica/exemplos/plano.json +268 -0
- package/kits/suica/exemplos/roteiro.md +19 -0
- package/kits/suica/preview.tsx +21 -0
- package/kits/suica/receita.json +197 -0
- package/kits/suica/regras/area-segura.md +18 -0
- package/kits/suica/regras/cor.md +13 -0
- package/kits/suica/regras/movimento.md +15 -0
- package/kits/suica/regras/ritmo.md +17 -0
- package/kits/suica/regras/som.md +21 -0
- package/kits/suica/regras/tipografia.md +16 -0
- package/kits/synthwave/SKILL.md +52 -0
- package/kits/synthwave/assets/ASSETS.md +22 -0
- package/kits/synthwave/assets/fontes/OFL-Orbitron.txt +93 -0
- package/kits/synthwave/assets/fontes/OFL-Rajdhani.txt +93 -0
- package/kits/synthwave/assets/fontes/orbitron.woff2 +0 -0
- package/kits/synthwave/assets/fontes/rajdhani.woff2 +0 -0
- package/kits/synthwave/assets/sons/assinatura.mp3 +0 -0
- package/kits/synthwave/assets/sons/clique.mp3 +0 -0
- package/kits/synthwave/assets/sons/impacto.mp3 +0 -0
- package/kits/synthwave/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/synthwave/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/synthwave/assets/sons/subida.mp3 +0 -0
- package/kits/synthwave/assets/sons/swoosh.mp3 +0 -0
- package/kits/synthwave/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/synthwave/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/synthwave/assets/trilha/noite-110bpm.mp3 +0 -0
- package/kits/synthwave/capa.jpg +0 -0
- package/kits/synthwave/elementos/AssinaturaMarca.tsx +26 -0
- package/kits/synthwave/elementos/Camera.tsx +22 -0
- package/kits/synthwave/elementos/Cena.tsx +41 -0
- package/kits/synthwave/elementos/Estrelas.tsx +27 -0
- package/kits/synthwave/elementos/Fundo.tsx +20 -0
- package/kits/synthwave/elementos/Montagem.tsx +59 -0
- package/kits/synthwave/elementos/Montanhas.tsx +27 -0
- package/kits/synthwave/elementos/Palmeiras.tsx +30 -0
- package/kits/synthwave/elementos/QuadroHUD.tsx +33 -0
- package/kits/synthwave/elementos/SolListrado.tsx +29 -0
- package/kits/synthwave/elementos/Som.tsx +38 -0
- package/kits/synthwave/elementos/TituloNeon.tsx +30 -0
- package/kits/synthwave/elementos/base.ts +75 -0
- package/kits/synthwave/elementos/index.ts +16 -0
- package/kits/synthwave/exemplos/logo-arcade.svg +1 -0
- package/kits/synthwave/exemplos/plano.json +50 -0
- package/kits/synthwave/exemplos/roteiro.md +19 -0
- package/kits/synthwave/preview.tsx +16 -0
- package/kits/synthwave/receita.json +170 -0
- package/kits/synthwave/regras/area-segura.md +19 -0
- package/kits/synthwave/regras/cor.md +16 -0
- package/kits/synthwave/regras/movimento.md +16 -0
- package/kits/synthwave/regras/ritmo.md +15 -0
- package/kits/synthwave/regras/som.md +21 -0
- package/kits/synthwave/regras/tipografia.md +16 -0
- package/kits/terminal/SKILL.md +57 -0
- package/kits/terminal/assets/ASSETS.md +20 -0
- package/kits/terminal/assets/fontes/OFL-jetbrains-mono-700.txt +93 -0
- package/kits/terminal/assets/fontes/OFL-vt323.txt +93 -0
- package/kits/terminal/assets/fontes/jetbrains-mono-700.woff2 +0 -0
- package/kits/terminal/assets/fontes/vt323.woff2 +0 -0
- package/kits/terminal/assets/sons/assinatura.mp3 +0 -0
- package/kits/terminal/assets/sons/clique.mp3 +0 -0
- package/kits/terminal/assets/sons/digitar.mp3 +0 -0
- package/kits/terminal/assets/sons/impacto.mp3 +0 -0
- package/kits/terminal/assets/sons/liga-crt.mp3 +0 -0
- package/kits/terminal/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/terminal/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/terminal/assets/sons/subida.mp3 +0 -0
- package/kits/terminal/assets/sons/swoosh.mp3 +0 -0
- package/kits/terminal/assets/sons/tick.mp3 +0 -0
- package/kits/terminal/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/terminal/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/terminal/assets/trilha/trilha.mp3 +0 -0
- package/kits/terminal/capa.jpg +0 -0
- package/kits/terminal/elementos/ArteAscii.tsx +61 -0
- package/kits/terminal/elementos/BarraProgresso.tsx +42 -0
- package/kits/terminal/elementos/BarraStatus.tsx +18 -0
- package/kits/terminal/elementos/BootBios.tsx +41 -0
- package/kits/terminal/elementos/Camera.tsx +23 -0
- package/kits/terminal/elementos/Cena.tsx +25 -0
- package/kits/terminal/elementos/Fundo.tsx +22 -0
- package/kits/terminal/elementos/LinhaComando.tsx +31 -0
- package/kits/terminal/elementos/Monitor.tsx +42 -0
- package/kits/terminal/elementos/Montagem.tsx +52 -0
- package/kits/terminal/elementos/PainelCaixa.tsx +35 -0
- package/kits/terminal/elementos/Som.tsx +32 -0
- package/kits/terminal/elementos/Tela.tsx +25 -0
- package/kits/terminal/elementos/TextoGrande.tsx +35 -0
- package/kits/terminal/elementos/base.ts +67 -0
- package/kits/terminal/elementos/index.ts +16 -0
- package/kits/terminal/exemplos/plano.json +330 -0
- package/kits/terminal/exemplos/roteiro.md +14 -0
- package/kits/terminal/preview.tsx +9 -0
- package/kits/terminal/receita.json +14 -0
- package/kits/terminal/regras/area-segura.md +18 -0
- package/kits/terminal/regras/cor.md +16 -0
- package/kits/terminal/regras/movimento.md +15 -0
- package/kits/terminal/regras/ritmo.md +14 -0
- package/kits/terminal/regras/som.md +17 -0
- package/kits/terminal/regras/tipografia.md +15 -0
- package/kits/tiktok-energia/SKILL.md +51 -0
- package/kits/tiktok-energia/assets/ASSETS.md +22 -0
- package/kits/tiktok-energia/assets/fontes/OFL-Anton.txt +92 -0
- package/kits/tiktok-energia/assets/fontes/OFL-Rubik.txt +92 -0
- package/kits/tiktok-energia/assets/fontes/anton-latin.woff2 +0 -0
- package/kits/tiktok-energia/assets/fontes/rubik-latin.woff2 +0 -0
- package/kits/tiktok-energia/assets/sons/assinatura.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/corte.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/palavra.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/pop.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/soco.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/subida.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/whoosh.mp3 +0 -0
- package/kits/tiktok-energia/assets/sons/zap.mp3 +0 -0
- package/kits/tiktok-energia/assets/trilha/tech-128bpm.mp3 +0 -0
- package/kits/tiktok-energia/capa.jpg +0 -0
- package/kits/tiktok-energia/elementos/AssinaturaMarca.tsx +25 -0
- package/kits/tiktok-energia/elementos/Camera.tsx +22 -0
- package/kits/tiktok-energia/elementos/Cena.tsx +48 -0
- package/kits/tiktok-energia/elementos/CorteDeCor.tsx +22 -0
- package/kits/tiktok-energia/elementos/EmojiSticker.tsx +21 -0
- package/kits/tiktok-energia/elementos/FotoSoco.tsx +27 -0
- package/kits/tiktok-energia/elementos/Fundo.tsx +8 -0
- package/kits/tiktok-energia/elementos/Montagem.tsx +67 -0
- package/kits/tiktok-energia/elementos/PalavraSoco.tsx +29 -0
- package/kits/tiktok-energia/elementos/Som.tsx +33 -0
- package/kits/tiktok-energia/elementos/TextoCaixa.tsx +25 -0
- package/kits/tiktok-energia/elementos/base.ts +92 -0
- package/kits/tiktok-energia/elementos/index.ts +15 -0
- package/kits/tiktok-energia/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/tiktok-energia/exemplos/logo-pulo.svg +1 -0
- package/kits/tiktok-energia/exemplos/plano.json +66 -0
- package/kits/tiktok-energia/exemplos/roteiro.md +22 -0
- package/kits/tiktok-energia/preview.tsx +13 -0
- package/kits/tiktok-energia/receita.json +166 -0
- package/kits/tiktok-energia/regras/area-segura.md +19 -0
- package/kits/tiktok-energia/regras/cor.md +20 -0
- package/kits/tiktok-energia/regras/movimento.md +17 -0
- package/kits/tiktok-energia/regras/ritmo.md +15 -0
- package/kits/tiktok-energia/regras/som.md +20 -0
- package/kits/tiktok-energia/regras/tipografia.md +15 -0
- package/kits/tunel/SKILL.md +51 -0
- package/kits/tunel/assets/ASSETS.md +21 -0
- package/kits/tunel/assets/fontes/OFL-ChakraPetch.txt +92 -0
- package/kits/tunel/assets/fontes/OFL-Syncopate.txt +92 -0
- package/kits/tunel/assets/fontes/chakra-latin.woff2 +0 -0
- package/kits/tunel/assets/fontes/syncopate-latin.woff2 +0 -0
- package/kits/tunel/assets/sons/assinatura.mp3 +0 -0
- package/kits/tunel/assets/sons/clique.mp3 +0 -0
- package/kits/tunel/assets/sons/impacto.mp3 +0 -0
- package/kits/tunel/assets/sons/passa.mp3 +0 -0
- package/kits/tunel/assets/sons/subida.mp3 +0 -0
- package/kits/tunel/assets/sons/tick.mp3 +0 -0
- package/kits/tunel/assets/sons/varre.mp3 +0 -0
- package/kits/tunel/assets/sons/whoosh.mp3 +0 -0
- package/kits/tunel/assets/trilha/tech-128bpm.mp3 +0 -0
- package/kits/tunel/capa.jpg +0 -0
- package/kits/tunel/elementos/AssinaturaMarca.tsx +22 -0
- package/kits/tunel/elementos/Camera.tsx +22 -0
- package/kits/tunel/elementos/Cena.tsx +48 -0
- package/kits/tunel/elementos/Fundo.tsx +13 -0
- package/kits/tunel/elementos/LinhasDeVelocidade.tsx +25 -0
- package/kits/tunel/elementos/Montagem.tsx +67 -0
- package/kits/tunel/elementos/NumeroGigante.tsx +28 -0
- package/kits/tunel/elementos/PlacaVoadora.tsx +28 -0
- package/kits/tunel/elementos/Som.tsx +33 -0
- package/kits/tunel/elementos/TituloTunel.tsx +32 -0
- package/kits/tunel/elementos/TunelDeFormas.tsx +52 -0
- package/kits/tunel/elementos/base.ts +97 -0
- package/kits/tunel/elementos/index.ts +15 -0
- package/kits/tunel/exemplos/logo-rota21.svg +1 -0
- package/kits/tunel/exemplos/plano.json +51 -0
- package/kits/tunel/exemplos/roteiro.md +20 -0
- package/kits/tunel/preview.tsx +12 -0
- package/kits/tunel/receita.json +153 -0
- package/kits/tunel/regras/area-segura.md +18 -0
- package/kits/tunel/regras/cor.md +21 -0
- package/kits/tunel/regras/movimento.md +17 -0
- package/kits/tunel/regras/ritmo.md +14 -0
- package/kits/tunel/regras/som.md +20 -0
- package/kits/tunel/regras/tipografia.md +15 -0
- package/kits/tutorial-tela/SKILL.md +55 -0
- package/kits/tutorial-tela/assets/ASSETS.md +20 -0
- package/kits/tutorial-tela/assets/fontes/OFL-JetBrainsMono.txt +93 -0
- package/kits/tutorial-tela/assets/fontes/OFL-PlusJakartaSans.txt +93 -0
- package/kits/tutorial-tela/assets/fontes/jakarta.woff2 +0 -0
- package/kits/tutorial-tela/assets/fontes/jbmono.woff2 +0 -0
- package/kits/tutorial-tela/assets/sons/assinatura.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/clique.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/digitar.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/impacto.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/subida.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/sucesso.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/swoosh.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/tutorial-tela/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/tutorial-tela/assets/trilha/passo-108bpm.mp3 +0 -0
- package/kits/tutorial-tela/capa.jpg +0 -0
- package/kits/tutorial-tela/elementos/CameraTela.tsx +29 -0
- package/kits/tutorial-tela/elementos/Cursor.tsx +36 -0
- package/kits/tutorial-tela/elementos/DestaqueCaixa.tsx +17 -0
- package/kits/tutorial-tela/elementos/Fundo.tsx +12 -0
- package/kits/tutorial-tela/elementos/JanelaApp.tsx +81 -0
- package/kits/tutorial-tela/elementos/Montagem.tsx +49 -0
- package/kits/tutorial-tela/elementos/PassoChamada.tsx +22 -0
- package/kits/tutorial-tela/elementos/Som.tsx +41 -0
- package/kits/tutorial-tela/elementos/TeclaAtalho.tsx +29 -0
- package/kits/tutorial-tela/elementos/TituloTela.tsx +30 -0
- package/kits/tutorial-tela/elementos/base.ts +65 -0
- package/kits/tutorial-tela/elementos/index.ts +12 -0
- package/kits/tutorial-tela/exemplos/plano.json +41 -0
- package/kits/tutorial-tela/exemplos/roteiro.md +14 -0
- package/kits/tutorial-tela/preview.tsx +9 -0
- package/kits/tutorial-tela/receita.json +15 -0
- package/kits/tutorial-tela/regras/area-segura.md +13 -0
- package/kits/tutorial-tela/regras/cor.md +17 -0
- package/kits/tutorial-tela/regras/movimento.md +20 -0
- package/kits/tutorial-tela/regras/ritmo.md +24 -0
- package/kits/tutorial-tela/regras/som.md +21 -0
- package/kits/tutorial-tela/regras/tipografia.md +15 -0
- package/kits/ugc-reels/SKILL.md +53 -0
- package/kits/ugc-reels/assets/ASSETS.md +22 -0
- package/kits/ugc-reels/assets/fontes/OFL-Caveat.txt +92 -0
- package/kits/ugc-reels/assets/fontes/OFL-Montserrat.txt +92 -0
- package/kits/ugc-reels/assets/fontes/caveat-latin.woff2 +0 -0
- package/kits/ugc-reels/assets/fontes/montserrat-latin.woff2 +0 -0
- package/kits/ugc-reels/assets/sons/assinatura.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/corte.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/impacto.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/notificacao.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/palavra.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/pop.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/toque.mp3 +0 -0
- package/kits/ugc-reels/assets/sons/whoosh.mp3 +0 -0
- package/kits/ugc-reels/assets/trilha/pop-120bpm.mp3 +0 -0
- package/kits/ugc-reels/capa.jpg +0 -0
- package/kits/ugc-reels/elementos/AssinaturaMarca.tsx +28 -0
- package/kits/ugc-reels/elementos/BotaoLink.tsx +24 -0
- package/kits/ugc-reels/elementos/CabecalhoPerfil.tsx +38 -0
- package/kits/ugc-reels/elementos/Camera.tsx +22 -0
- package/kits/ugc-reels/elementos/Cena.tsx +48 -0
- package/kits/ugc-reels/elementos/Comentario.tsx +29 -0
- package/kits/ugc-reels/elementos/Fundo.tsx +8 -0
- package/kits/ugc-reels/elementos/LegendaEmoji.tsx +43 -0
- package/kits/ugc-reels/elementos/Montagem.tsx +69 -0
- package/kits/ugc-reels/elementos/NotaDeMao.tsx +29 -0
- package/kits/ugc-reels/elementos/Reacoes.tsx +26 -0
- package/kits/ugc-reels/elementos/Som.tsx +33 -0
- package/kits/ugc-reels/elementos/VideoCelular.tsx +37 -0
- package/kits/ugc-reels/elementos/base.ts +92 -0
- package/kits/ugc-reels/elementos/index.ts +17 -0
- package/kits/ugc-reels/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/ugc-reels/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/ugc-reels/exemplos/fotos/foto-04.jpg +0 -0
- package/kits/ugc-reels/exemplos/fotos/foto-06.jpg +0 -0
- package/kits/ugc-reels/exemplos/logo-rotina.svg +1 -0
- package/kits/ugc-reels/exemplos/plano.json +54 -0
- package/kits/ugc-reels/exemplos/roteiro.md +20 -0
- package/kits/ugc-reels/preview.tsx +16 -0
- package/kits/ugc-reels/receita.json +147 -0
- package/kits/ugc-reels/regras/area-segura.md +18 -0
- package/kits/ugc-reels/regras/cor.md +22 -0
- package/kits/ugc-reels/regras/movimento.md +19 -0
- package/kits/ugc-reels/regras/ritmo.md +14 -0
- package/kits/ugc-reels/regras/som.md +20 -0
- package/kits/ugc-reels/regras/tipografia.md +16 -0
- package/kits/vercel-mono/SKILL.md +51 -0
- package/kits/vercel-mono/assets/ASSETS.md +18 -0
- package/kits/vercel-mono/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/vercel-mono/assets/fontes/OFL-JetBrains-Mono.txt +93 -0
- package/kits/vercel-mono/assets/fontes/inter.woff2 +0 -0
- package/kits/vercel-mono/assets/fontes/jetbrains-mono.woff2 +0 -0
- package/kits/vercel-mono/assets/sons/assinatura.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/clique.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/impacto.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/subida.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/swoosh.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/vercel-mono/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/vercel-mono/assets/trilha/trilha.mp3 +0 -0
- package/kits/vercel-mono/capa.jpg +0 -0
- package/kits/vercel-mono/elementos/AssinaturaMarca.tsx +18 -0
- package/kits/vercel-mono/elementos/Camera.tsx +23 -0
- package/kits/vercel-mono/elementos/Cena.tsx +46 -0
- package/kits/vercel-mono/elementos/FaixaOutline.tsx +25 -0
- package/kits/vercel-mono/elementos/Fundo.tsx +6 -0
- package/kits/vercel-mono/elementos/GradeDeNumeros.tsx +27 -0
- package/kits/vercel-mono/elementos/Montagem.tsx +61 -0
- package/kits/vercel-mono/elementos/PalavraMono.tsx +31 -0
- package/kits/vercel-mono/elementos/Quadro.tsx +28 -0
- package/kits/vercel-mono/elementos/Som.tsx +39 -0
- package/kits/vercel-mono/elementos/TerminalComando.tsx +33 -0
- package/kits/vercel-mono/elementos/TrianguloGigante.tsx +27 -0
- package/kits/vercel-mono/elementos/base.ts +82 -0
- package/kits/vercel-mono/elementos/index.ts +16 -0
- package/kits/vercel-mono/exemplos/logo-vetor.svg +1 -0
- package/kits/vercel-mono/exemplos/plano.json +318 -0
- package/kits/vercel-mono/exemplos/roteiro.md +20 -0
- package/kits/vercel-mono/preview.tsx +12 -0
- package/kits/vercel-mono/receita.json +156 -0
- package/kits/vercel-mono/regras/area-segura.md +13 -0
- package/kits/vercel-mono/regras/cor.md +12 -0
- package/kits/vercel-mono/regras/movimento.md +15 -0
- package/kits/vercel-mono/regras/ritmo.md +13 -0
- package/kits/vercel-mono/regras/som.md +18 -0
- package/kits/vercel-mono/regras/tipografia.md +14 -0
- package/kits/vhs-90/SKILL.md +52 -0
- package/kits/vhs-90/assets/ASSETS.md +23 -0
- package/kits/vhs-90/assets/fontes/OFL-BebasNeue.txt +93 -0
- package/kits/vhs-90/assets/fontes/OFL-VT323.txt +93 -0
- package/kits/vhs-90/assets/fontes/bebas.woff2 +0 -0
- package/kits/vhs-90/assets/fontes/vt323.woff2 +0 -0
- package/kits/vhs-90/assets/sons/assinatura.mp3 +0 -0
- package/kits/vhs-90/assets/sons/clique.mp3 +0 -0
- package/kits/vhs-90/assets/sons/impacto.mp3 +0 -0
- package/kits/vhs-90/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/vhs-90/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/vhs-90/assets/sons/subida.mp3 +0 -0
- package/kits/vhs-90/assets/sons/swoosh.mp3 +0 -0
- package/kits/vhs-90/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/vhs-90/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/vhs-90/assets/trilha/fita-88bpm.mp3 +0 -0
- package/kits/vhs-90/capa.jpg +0 -0
- package/kits/vhs-90/elementos/AssinaturaMarca.tsx +29 -0
- package/kits/vhs-90/elementos/BarrasRastreio.tsx +21 -0
- package/kits/vhs-90/elementos/Camera.tsx +22 -0
- package/kits/vhs-90/elementos/CapaVHS.tsx +28 -0
- package/kits/vhs-90/elementos/CarimboData.tsx +19 -0
- package/kits/vhs-90/elementos/Cena.tsx +41 -0
- package/kits/vhs-90/elementos/Fundo.tsx +27 -0
- package/kits/vhs-90/elementos/MenuOSD.tsx +27 -0
- package/kits/vhs-90/elementos/Montagem.tsx +60 -0
- package/kits/vhs-90/elementos/Som.tsx +38 -0
- package/kits/vhs-90/elementos/TelaAzul.tsx +29 -0
- package/kits/vhs-90/elementos/TituloFita.tsx +40 -0
- package/kits/vhs-90/elementos/base.ts +75 -0
- package/kits/vhs-90/elementos/index.ts +16 -0
- package/kits/vhs-90/exemplos/fotos/foto-05.jpg +0 -0
- package/kits/vhs-90/exemplos/fotos/foto-07.jpg +0 -0
- package/kits/vhs-90/exemplos/logo-rewind.svg +1 -0
- package/kits/vhs-90/exemplos/plano.json +47 -0
- package/kits/vhs-90/exemplos/roteiro.md +19 -0
- package/kits/vhs-90/preview.tsx +17 -0
- package/kits/vhs-90/receita.json +189 -0
- package/kits/vhs-90/regras/area-segura.md +18 -0
- package/kits/vhs-90/regras/cor.md +16 -0
- package/kits/vhs-90/regras/movimento.md +16 -0
- package/kits/vhs-90/regras/ritmo.md +16 -0
- package/kits/vhs-90/regras/som.md +21 -0
- package/kits/vhs-90/regras/tipografia.md +17 -0
- package/kits/vidro-ios/SKILL.md +52 -0
- package/kits/vidro-ios/assets/ASSETS.md +18 -0
- package/kits/vidro-ios/assets/fontes/OFL-DM-Mono.txt +93 -0
- package/kits/vidro-ios/assets/fontes/OFL-Inter.txt +93 -0
- package/kits/vidro-ios/assets/fontes/dm-mono.woff2 +0 -0
- package/kits/vidro-ios/assets/fontes/inter.woff2 +0 -0
- package/kits/vidro-ios/assets/sons/assinatura.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/clique.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/impacto.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/subida.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/swoosh.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/vidro-ios/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/vidro-ios/assets/trilha/trilha.mp3 +0 -0
- package/kits/vidro-ios/capa.jpg +0 -0
- package/kits/vidro-ios/elementos/AssinaturaMarca.tsx +21 -0
- package/kits/vidro-ios/elementos/Camera.tsx +23 -0
- package/kits/vidro-ios/elementos/Cena.tsx +46 -0
- package/kits/vidro-ios/elementos/Fundo.tsx +17 -0
- package/kits/vidro-ios/elementos/IlhaDinamica.tsx +24 -0
- package/kits/vidro-ios/elementos/Montagem.tsx +60 -0
- package/kits/vidro-ios/elementos/PainelControle.tsx +33 -0
- package/kits/vidro-ios/elementos/PilhaNotificacoes.tsx +29 -0
- package/kits/vidro-ios/elementos/Som.tsx +39 -0
- package/kits/vidro-ios/elementos/TituloVidro.tsx +22 -0
- package/kits/vidro-ios/elementos/WidgetsGrade.tsx +34 -0
- package/kits/vidro-ios/elementos/base.ts +87 -0
- package/kits/vidro-ios/elementos/index.ts +16 -0
- package/kits/vidro-ios/elementos/vidro.tsx +20 -0
- package/kits/vidro-ios/exemplos/logo-vento.svg +1 -0
- package/kits/vidro-ios/exemplos/plano.json +288 -0
- package/kits/vidro-ios/exemplos/roteiro.md +20 -0
- package/kits/vidro-ios/preview.tsx +12 -0
- package/kits/vidro-ios/receita.json +170 -0
- package/kits/vidro-ios/regras/area-segura.md +13 -0
- package/kits/vidro-ios/regras/cor.md +16 -0
- package/kits/vidro-ios/regras/movimento.md +16 -0
- package/kits/vidro-ios/regras/ritmo.md +14 -0
- package/kits/vidro-ios/regras/som.md +18 -0
- package/kits/vidro-ios/regras/tipografia.md +15 -0
- package/kits/y2k-cromado/SKILL.md +53 -0
- package/kits/y2k-cromado/assets/ASSETS.md +23 -0
- package/kits/y2k-cromado/assets/fontes/OFL-DMMono.txt +93 -0
- package/kits/y2k-cromado/assets/fontes/OFL-Unbounded.txt +93 -0
- package/kits/y2k-cromado/assets/fontes/dm-mono.woff2 +0 -0
- package/kits/y2k-cromado/assets/fontes/unbounded.woff2 +0 -0
- package/kits/y2k-cromado/assets/sons/assinatura.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/clique.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/impacto.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/pop-cartao.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/pop-palavra.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/subida.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/swoosh.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/whoosh-entra.mp3 +0 -0
- package/kits/y2k-cromado/assets/sons/whoosh-sai.mp3 +0 -0
- package/kits/y2k-cromado/assets/trilha/y2k-128bpm.mp3 +0 -0
- package/kits/y2k-cromado/capa.jpg +0 -0
- package/kits/y2k-cromado/elementos/AssinaturaMarca.tsx +25 -0
- package/kits/y2k-cromado/elementos/Bolhas.tsx +30 -0
- package/kits/y2k-cromado/elementos/Brilhos.tsx +28 -0
- package/kits/y2k-cromado/elementos/Camera.tsx +22 -0
- package/kits/y2k-cromado/elementos/CartaoGloss.tsx +26 -0
- package/kits/y2k-cromado/elementos/Cena.tsx +41 -0
- package/kits/y2k-cromado/elementos/FitaMarquee.tsx +20 -0
- package/kits/y2k-cromado/elementos/Fundo.tsx +18 -0
- package/kits/y2k-cromado/elementos/JanelaY2K.tsx +31 -0
- package/kits/y2k-cromado/elementos/Montagem.tsx +60 -0
- package/kits/y2k-cromado/elementos/OrbeCromo.tsx +20 -0
- package/kits/y2k-cromado/elementos/Som.tsx +38 -0
- package/kits/y2k-cromado/elementos/TextoCromo.tsx +34 -0
- package/kits/y2k-cromado/elementos/base.ts +75 -0
- package/kits/y2k-cromado/elementos/index.ts +17 -0
- package/kits/y2k-cromado/exemplos/fotos/foto-02.jpg +0 -0
- package/kits/y2k-cromado/exemplos/fotos/foto-03.jpg +0 -0
- package/kits/y2k-cromado/exemplos/logo-bolha.svg +1 -0
- package/kits/y2k-cromado/exemplos/plano.json +47 -0
- package/kits/y2k-cromado/exemplos/roteiro.md +19 -0
- package/kits/y2k-cromado/preview.tsx +17 -0
- package/kits/y2k-cromado/receita.json +174 -0
- package/kits/y2k-cromado/regras/area-segura.md +19 -0
- package/kits/y2k-cromado/regras/cor.md +16 -0
- package/kits/y2k-cromado/regras/movimento.md +16 -0
- package/kits/y2k-cromado/regras/ritmo.md +15 -0
- package/kits/y2k-cromado/regras/som.md +21 -0
- package/kits/y2k-cromado/regras/tipografia.md +17 -0
- package/lib/act.js +387 -18
- package/lib/afirmacoes.js +56 -0
- package/lib/agendar.js +124 -0
- package/lib/backup-banco.js +121 -0
- package/lib/boas-vindas.js +4 -3
- package/lib/catalogo.js +8 -2
- package/lib/chave-exposta.js +61 -0
- package/lib/checkpoint-git.js +7 -4
- package/lib/checkpoint.js +120 -3
- package/lib/comandos-extra.js +69 -2
- package/lib/comecar.js +56 -0
- package/lib/como-rodar.js +66 -0
- package/lib/conferir.js +117 -0
- package/lib/config.js +4 -2
- package/lib/editor-pro.js +162 -21
- package/lib/encolheu.js +33 -0
- package/lib/entrada.js +1 -1
- package/lib/entregaveis.js +67 -0
- package/lib/escopo.js +68 -0
- package/lib/especialistas.js +1 -1
- package/lib/estudio/conferencia.js +71 -6
- package/lib/estudio/gosto/tela.html +119 -4
- package/lib/estudio/gosto-descrever.js +87 -0
- package/lib/estudio/gosto-medir.js +204 -0
- package/lib/estudio/gosto-prova.js +52 -0
- package/lib/estudio/gosto.js +312 -9
- package/lib/estudio/index.js +2 -2
- package/lib/estudio/kits/tela.html +568 -0
- package/lib/estudio/kits-tela.js +199 -0
- package/lib/estudio/maquina-diretor.js +6 -2
- package/lib/estudio/regras-motion.js +69 -0
- package/lib/explicar.js +48 -0
- package/lib/exportar-conversa.js +49 -0
- package/lib/fundo.js +199 -0
- package/lib/guardar.js +118 -0
- package/lib/headless.js +20 -1
- package/lib/idioma.js +74 -0
- package/lib/kits-parecidos.js +99 -0
- package/lib/kits-plano.js +557 -0
- package/lib/kits.js +1045 -0
- package/lib/limite.js +99 -0
- package/lib/linha-do-tempo.js +130 -0
- package/lib/local/cerebro.json +118 -2
- package/lib/local/entrada.js +1 -1
- package/lib/mapa.js +94 -0
- package/lib/memoria-usuario.js +1 -1
- package/lib/mencoes.js +10 -0
- package/lib/mostrar.js +121 -0
- package/lib/motioncraft.js +67 -0
- package/lib/mudou.js +58 -0
- package/lib/nomes.js +251 -0
- package/lib/partes.js +39 -0
- package/lib/passagem.js +30 -1
- package/lib/perigo.js +74 -6
- package/lib/plano-previo.js +53 -0
- package/lib/planos.js +1 -1
- package/lib/porta.js +147 -0
- package/lib/publicar.js +112 -0
- package/lib/registro.js +38 -4
- package/lib/regras.js +88 -0
- package/lib/saida.js +83 -0
- package/lib/segredos.js +103 -0
- package/lib/team.js +317 -0
- package/lib/tools.js +84 -21
- package/lib/trava.js +155 -0
- package/lib/ui.js +42 -5
- package/lib/video/conferir-legenda.js +47 -0
- package/lib/video/ops.js +6 -1
- package/lib/video/transcript.js +1 -1
- package/lib/web-pagina.js +87 -0
- package/package.json +4 -1
- package/skills/motion-de-primeira/SKILL.md +1 -1
- package/skills/motion-motioncraft/SKILL.md +31 -0
- package/vendor/motioncraft/CREDITS.md +18 -0
- package/vendor/motioncraft/LICENSE +21 -0
- package/vendor/motioncraft/ORIGEM.txt +1 -0
- package/vendor/motioncraft/SKILL.md +178 -0
- package/vendor/motioncraft/assets/template/package-lock.json +2958 -0
- package/vendor/motioncraft/assets/template/package.json +27 -0
- package/vendor/motioncraft/assets/template/remotion.config.ts +4 -0
- package/vendor/motioncraft/assets/template/src/Root.tsx +27 -0
- package/vendor/motioncraft/assets/template/src/components/CachedFrames.tsx +11 -0
- package/vendor/motioncraft/assets/template/src/components/EndCard.tsx +17 -0
- package/vendor/motioncraft/assets/template/src/components/Headline.tsx +45 -0
- package/vendor/motioncraft/assets/template/src/components/MorphTransition.tsx +28 -0
- package/vendor/motioncraft/assets/template/src/components/Stage.tsx +52 -0
- package/vendor/motioncraft/assets/template/src/components/Three.tsx +134 -0
- package/vendor/motioncraft/assets/template/src/components/UI.tsx +103 -0
- package/vendor/motioncraft/assets/template/src/components/Word.tsx +46 -0
- package/vendor/motioncraft/assets/template/src/index.ts +3 -0
- package/vendor/motioncraft/assets/template/src/lib/anim.ts +17 -0
- package/vendor/motioncraft/assets/template/src/lib/beat.ts +23 -0
- package/vendor/motioncraft/assets/template/src/lib/debug.tsx +12 -0
- package/vendor/motioncraft/assets/template/src/lib/fonts.ts +6 -0
- package/vendor/motioncraft/assets/template/src/lib/format-context.tsx +5 -0
- package/vendor/motioncraft/assets/template/src/lib/format.d.mts +2 -0
- package/vendor/motioncraft/assets/template/src/lib/format.mjs +28 -0
- package/vendor/motioncraft/assets/template/src/lib/timeline.ts +29 -0
- package/vendor/motioncraft/assets/template/src/lib/tokens.ts +9 -0
- package/vendor/motioncraft/assets/template/src/scenes/Example.tsx +76 -0
- package/vendor/motioncraft/assets/template/src/scenes/Launch.tsx +26 -0
- package/vendor/motioncraft/assets/template/src/scenes/TimelineLegacy.tsx +24 -0
- package/vendor/motioncraft/assets/template/src/scenes/TimelineVideo.tsx +49 -0
- package/vendor/motioncraft/assets/template/src/scenes/Tutorial.tsx +37 -0
- package/vendor/motioncraft/assets/template/src/style.json +62 -0
- package/vendor/motioncraft/assets/template/tsconfig.json +7 -0
- package/vendor/motioncraft/references/animation-system.md +57 -0
- package/vendor/motioncraft/references/assets-and-licensing.md +21 -0
- package/vendor/motioncraft/references/customization.md +52 -0
- package/vendor/motioncraft/references/gpu-cloud-render.md +15 -0
- package/vendor/motioncraft/references/music.md +43 -0
- package/vendor/motioncraft/references/phase1-planning-and-preview.md +74 -0
- package/vendor/motioncraft/references/phase2-timeline-audio.md +33 -0
- package/vendor/motioncraft/references/phase3-pixel-review.md +13 -0
- package/vendor/motioncraft/references/phase4-templates.md +30 -0
- package/vendor/motioncraft/references/preflight.md +27 -0
- package/vendor/motioncraft/references/qa.md +53 -0
- package/vendor/motioncraft/references/reference-analysis.md +37 -0
- package/vendor/motioncraft/references/research-and-topic.md +25 -0
- package/vendor/motioncraft/references/script-and-structure.md +39 -0
- package/vendor/motioncraft/references/sfx.md +40 -0
- package/vendor/motioncraft/references/social-formats.md +18 -0
- package/vendor/motioncraft/references/taste.md +36 -0
- package/vendor/motioncraft/references/troubleshooting.md +19 -0
- package/vendor/motioncraft/references/typography.md +34 -0
- package/vendor/motioncraft/references/voiceover.md +37 -0
- package/vendor/motioncraft/references/workflow.md +40 -0
- package/vendor/motioncraft/scripts/assets/timeline-editor.js +24 -0
- package/vendor/motioncraft/scripts/doctor.ps1 +13 -0
- package/vendor/motioncraft/scripts/doctor.sh +23 -0
- package/vendor/motioncraft/scripts/lib/audio.mjs +58 -0
- package/vendor/motioncraft/scripts/lib/check-update.mjs +66 -0
- package/vendor/motioncraft/scripts/lib/commands.mjs +147 -0
- package/vendor/motioncraft/scripts/lib/doctor.mjs +67 -0
- package/vendor/motioncraft/scripts/lib/dsp.mjs +178 -0
- package/vendor/motioncraft/scripts/lib/music.mjs +162 -0
- package/vendor/motioncraft/scripts/lib/phase1.mjs +90 -0
- package/vendor/motioncraft/scripts/lib/phase2.mjs +89 -0
- package/vendor/motioncraft/scripts/lib/qa-full.mjs +24 -0
- package/vendor/motioncraft/scripts/lib/qa-pixels.mjs +47 -0
- package/vendor/motioncraft/scripts/lib/qa.mjs +66 -0
- package/vendor/motioncraft/scripts/lib/qa_full.py +45 -0
- package/vendor/motioncraft/scripts/lib/qa_pixels.py +50 -0
- package/vendor/motioncraft/scripts/lib/render-worker.mjs +37 -0
- package/vendor/motioncraft/scripts/lib/render.mjs +31 -0
- package/vendor/motioncraft/scripts/lib/retime-audio.mjs +49 -0
- package/vendor/motioncraft/scripts/lib/sfx.mjs +68 -0
- package/vendor/motioncraft/scripts/lib/style.mjs +44 -0
- package/vendor/motioncraft/scripts/lib/templates.mjs +34 -0
- package/vendor/motioncraft/scripts/lib/timeline-editor.mjs +74 -0
- package/vendor/motioncraft/scripts/lib/util.mjs +45 -0
- package/vendor/motioncraft/scripts/lib/voices.mjs +85 -0
- package/vendor/motioncraft/scripts/motioncraft.mjs +79 -0
- package/vendor/motioncraft/scripts/py/whisper_words.py +13 -0
- package/vendor/motioncraft/styles/mono-editorial/style.md +13 -0
- package/vendor/motioncraft/styles/mono-editorial/tokens.json +256 -0
- package/vendor/motioncraft/styles/pi-v2/style.md +15 -0
- package/vendor/motioncraft/styles/pi-v2/tokens.json +62 -0
- package/vendor/motioncraft/styles/pi-v2-dark/style.md +13 -0
- package/vendor/motioncraft/styles/pi-v2-dark/tokens.json +256 -0
- package/vendor/motioncraft/styles/tech-neon-soft/style.md +13 -0
- package/vendor/motioncraft/styles/tech-neon-soft/tokens.json +256 -0
- package/vendor/motioncraft/styles/warm-paper/style.md +13 -0
- package/vendor/motioncraft/styles/warm-paper/tokens.json +256 -0
- package/vendor/motioncraft/tests/beat.test.mjs +13 -0
- package/vendor/motioncraft/tests/camera3d.test.mjs +22 -0
- package/vendor/motioncraft/tests/check-update.test.mjs +19 -0
- package/vendor/motioncraft/tests/format.test.mjs +23 -0
- package/vendor/motioncraft/tests/kinetic.test.mjs +10 -0
- package/vendor/motioncraft/tests/morph.test.mjs +13 -0
- package/vendor/motioncraft/tests/phase1.test.mjs +27 -0
- package/vendor/motioncraft/tests/phase2.test.mjs +57 -0
- package/vendor/motioncraft/tests/phase3.test.mjs +25 -0
- package/vendor/motioncraft/tests/phase4.test.mjs +21 -0
- package/vendor/motioncraft/tests/qa-frame-rate.test.mjs +15 -0
- package/vendor/motioncraft/tests/qa-full.test.mjs +10 -0
- package/vendor/motioncraft/tests/render-worker.test.mjs +7 -0
- package/vendor/motioncraft/tests/retime-audio.test.mjs +23 -0
- package/vendor/motioncraft/tests/timeline-editor.test.mjs +45 -0
- package/voz/primo_voz/transcrever.py +34 -4
- /package/comandos/{explicar.md → explain.md} +0 -0
- /package/comandos/{revisar.md → review.md} +0 -0
- /package/comandos/{publicar.md → ship.md} +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import crypto from 'node:crypto';
|
|
4
|
+
import {spawnSync} from 'node:child_process';
|
|
5
|
+
import {readJson,writeJson,die} from './util.mjs';
|
|
6
|
+
|
|
7
|
+
const secretFile=/^(?:\.env(?:\..*)?|.*\.(?:pem|key|p12|pfx|asc)|id_(?:rsa|ed25519)|credentials(?:\..*)?|secrets?(?:\..*)?)$/i;
|
|
8
|
+
const sha=file=>crypto.createHash('sha256').update(fs.readFileSync(file)).digest('hex');
|
|
9
|
+
const permitted=new Set(['angle','swangle','egl']);
|
|
10
|
+
export function probeRenderer(a={}){
|
|
11
|
+
const project=path.resolve(a.dir||'.'),gl=String(a.gl||'angle');
|
|
12
|
+
if(!permitted.has(gl))throw Error('GL backend must be angle, egl, or swangle');
|
|
13
|
+
const entry=path.join(project,'src/index.ts');if(!fs.existsSync(entry))throw Error('missing Remotion src/index.ts');
|
|
14
|
+
const device=process.platform==='linux'?(fs.existsSync('/dev/dri')?'/dev/dri':null):process.platform==='win32'?'Windows graphics API':process.platform==='darwin'?'macOS Metal':null;
|
|
15
|
+
const nvidia=spawnSync('nvidia-smi',['-L'],{encoding:'utf8',timeout:5000});
|
|
16
|
+
const candidate=!!device||nvidia.status===0;
|
|
17
|
+
// Device presence is a lead, not proof that Chromium used hardware acceleration.
|
|
18
|
+
return {platform:process.platform,device,nvidia:nvidia.status===0?nvidia.stdout.trim():null,gpuCandidate:candidate,gl,requiresVisualAndTimingTest:true,note:candidate?'GPU device visible; this is not proof that Remotion uses hardware. Compare a short 3D render and inspect logs/output.':'No GPU device visible. Use software fallback or move the project to a configured GPU worker.'};
|
|
19
|
+
}
|
|
20
|
+
export function gpuPreflight(a){try{return probeRenderer(a)}catch(e){die(e.message)}}
|
|
21
|
+
export function workerManifest(a){
|
|
22
|
+
const root=path.resolve(a.dir||'.'),dest=path.resolve(a.out||'render-job.json');
|
|
23
|
+
const comp=String(a.comp||'Main'),gl=String(a.gl||'angle');if(!/^[A-Za-z0-9_-]+$/.test(comp)||!permitted.has(gl))die('invalid composition or GL mode');
|
|
24
|
+
const required=['package.json','src/index.ts'];for(const item of required)if(!fs.existsSync(path.join(root,item)))die(`project missing ${item}`);
|
|
25
|
+
const props=a.props?path.resolve(a.props):null;if(props&&!readJson(props))die('cannot read props JSON');
|
|
26
|
+
const files=[];function walk(dir){for(const name of fs.readdirSync(dir).sort()){if(['node_modules','.git','out','.motioncraft'].includes(name))continue;if(secretFile.test(name))die(`secret-looking file in project: ${name}; move it outside the render project before packaging`);const p=path.join(dir,name),rel=path.relative(root,p).replaceAll('\\','/'),st=fs.lstatSync(p);if(st.isSymbolicLink())die(`symlink not accepted in job: ${rel}`);if(st.isDirectory())walk(p);else if(st.isFile()){if(st.size>2*1024*1024*1024)die(`file too large: ${rel}`);files.push({path:rel,sha256:sha(p),bytes:st.size});}}}
|
|
27
|
+
walk(root);if(props&&!files.some(f=>f.path===path.relative(root,props).replaceAll('\\','/')))die('props file must be inside the project and included in the manifest');
|
|
28
|
+
if(!files.some(f=>f.path==='package-lock.json'))die('package-lock.json required: run npm install --package-lock-only before bundling a worker job');
|
|
29
|
+
const manifest={version:1,composition:comp,gl,createdAt:new Date().toISOString(),files,propsPath:props?(props.startsWith(root+path.sep)?path.relative(root,props).replaceAll('\\','/'):null):null,warning:'No GPU or cloud execution guaranteed. Worker must use matching source, media, fonts and Chromium; inspect a short 3D segment and final pixels.'};
|
|
30
|
+
if(props&&!manifest.propsPath)die('props file must be inside the project for portable worker jobs');
|
|
31
|
+
writeJson(dest,manifest);return {manifest:dest,fileCount:files.length,bytes:files.reduce((n,x)=>n+x.bytes,0),sha256:sha(dest),note:'Copy the complete project directory and this manifest to your chosen worker. Do not include secrets in the project; verify hashes on worker before rendering.'};
|
|
32
|
+
}
|
|
33
|
+
export function workerVerify(a){const root=path.resolve(a.dir||'.'),m=readJson(path.resolve(a.manifest||'render-job.json'));
|
|
34
|
+
if(m?.version!==1||!Array.isArray(m.files)||!m.files.length)die('invalid render-job manifest');
|
|
35
|
+
const failures=[];for(const f of m.files){const absolute=path.resolve(root,f.path);if(typeof f.path!=='string'||!absolute.startsWith(root+path.sep)||!fs.existsSync(absolute)||fs.lstatSync(absolute).isSymbolicLink()||sha(absolute)!==f.sha256)failures.push(f.path)}
|
|
36
|
+
return {pass:failures.length===0,checked:m.files.length,failures,composition:m.composition,gl:m.gl};
|
|
37
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { run, die, ff, probe, mkdirp, has, readJson, writeJson } from './util.mjs';
|
|
4
|
+
import {reviewHash} from './phase2.mjs';
|
|
5
|
+
import {geometry} from '../../assets/template/src/lib/format.mjs';
|
|
6
|
+
import {validateRenderBoard} from './timeline-editor.mjs';
|
|
7
|
+
import {probeRenderer} from './render-worker.mjs';
|
|
8
|
+
const PRESETS = { wa: { maxMb: 15.5, audioK: 128 }, ig: { maxMb: 95, audioK: 192 }, yt: { crf: 16, audioK: 192 }, master: { crf: 12, audioK: 256 } };
|
|
9
|
+
export function cmdRender(a) {
|
|
10
|
+
const proj = path.resolve(a.dir || '.'); const comp = a.comp || 'Main'; const preset = PRESETS[a.preset || 'yt'] || die(`unknown preset ${a.preset}`, 'wa | ig | yt | master');
|
|
11
|
+
if(a.audio){ const audio=path.resolve(a.audio), review=readJson(path.resolve(a.review||path.join(proj,'out/mix-review/review.json')));
|
|
12
|
+
if(!review?.approvedAt||review.source!==audio||review.sha256!==reviewHash(audio))die('mix review missing or stale; listen to full mix and cue clips, then run mix review --file <mix> --approve before export'); }
|
|
13
|
+
const g=geometry(a.format || '16:9',a.platform);
|
|
14
|
+
if((a['all-formats']||a.allFormats)) return ['1:1','4:5','9:16'].map(format=>cmdRender({...a,'all-formats':false,allFormats:false,format,platform:format==='9:16'?(a.platform==='reels'?'reels':'tiktok'):'ig-feed',out:`out/${comp}_${format.replace(':','x')}_${a.preset||'yt'}.mp4`}));
|
|
15
|
+
mkdirp(path.join(proj, 'out')); const raw = path.join(proj, 'out', `raw_${g.format.replace(':','x')}_${g.platform}.mp4`);
|
|
16
|
+
const propsPath=path.join(proj,'out',`props_${g.format.replace(':','x')}_${g.platform}.json`);const provided=a.props?readJson(path.resolve(a.props)):{};if(!provided || typeof provided!=='object'||Array.isArray(provided))die('invalid --props JSON');
|
|
17
|
+
let timeline=null,beats=[];if(a.timeline){try{timeline=validateRenderBoard(readJson(path.resolve(a.timeline)),comp==='TimelineLaunch'?'launch':comp==='TimelineTutorial'?'tutorial':comp==='Main'||comp==='MainVertical'?'main':comp==='ProductLaunch'?'product-launch':comp==='ScreenTutorial'?'screen-tutorial':'unsupported');}catch(e){die(e.message)}}
|
|
18
|
+
if(a.grid && !timeline)die('--grid needs a timeline-aware composition with --timeline');
|
|
19
|
+
if(a.grid){const grid=readJson(path.resolve(a.grid));if(!grid||!Array.isArray(grid.beats)||grid.beats.some(b=>typeof b!=='number'||!Number.isFinite(b)))die('invalid beat grid');beats=grid.beats;}
|
|
20
|
+
writeJson(propsPath,{...provided,...(timeline?{timeline}:{}),...(a.grid?{beats}:{}),format:g.format,platform:g.platform}); const gl = a.gl || (process.platform === 'linux' && !fs.existsSync('/dev/dri') ? 'swangle' : 'angle');
|
|
21
|
+
if(a['require-gpu']||a.requireGpu){const probe=probeRenderer({dir:proj,gl});if(!probe.gpuCandidate||gl==='swangle')die('GPU required but no candidate hardware device was found or software GL selected; no render started. Even a device candidate needs a test to prove acceleration.');}
|
|
22
|
+
const args = ['--no-install', 'remotion', 'render', 'src/index.ts', comp, raw, '--crf=14', `--gl=${gl}`]; args.push(`--props=${propsPath}`); if (a.concurrency) args.push(`--concurrency=${a.concurrency}`);
|
|
23
|
+
if (!a.skipRender) { const r = run('npx', args, { cwd: proj, stdio: 'inherit' }); if (r.status !== 0) die('render failed', 'common fixes: video clips that fail to decode -> convert to a JPG sequence (<Frames>); out of memory -> --concurrency 2; WebGL errors -> --gl swangle'); }
|
|
24
|
+
const outF = path.resolve(proj, a.out || `out/${comp}_${g.format.replace(':','x')}_${g.platform}_${a.preset || 'yt'}.mp4`); const dur = +probe(raw).format.duration; const audio = a.audio ? path.resolve(a.audio) : null;
|
|
25
|
+
const inA = audio ? ['-i', audio, '-map', '0:v', '-map', '1:a', '-shortest'] : [];
|
|
26
|
+
if (preset.maxMb) { const vk = Math.max(300, Math.floor(preset.maxMb * 8192 / dur - preset.audioK)); const pl = path.join(proj, 'out', 'pass');
|
|
27
|
+
ff(['-i', raw, '-c:v', 'libx264', '-preset', 'medium', '-b:v', `${vk}k`, '-pass', '1', '-passlogfile', pl, '-an', '-f', 'mp4', process.platform === 'win32' ? 'NUL' : '/dev/null']);
|
|
28
|
+
ff(['-i', raw, ...inA, '-c:v', 'libx264', '-preset', 'medium', '-b:v', `${vk}k`, '-pass', '2', '-passlogfile', pl, '-pix_fmt', 'yuv420p', '-movflags', '+faststart', '-c:a', 'aac', '-b:a', `${preset.audioK}k`, outF]); }
|
|
29
|
+
else ff(['-i', raw, ...inA, '-c:v', 'libx264', '-preset', 'slow', '-crf', String(preset.crf), '-pix_fmt', 'yuv420p', '-movflags', '+faststart', '-c:a', 'aac', '-b:a', `${preset.audioK}k`, outF]);
|
|
30
|
+
const p = probe(outF); return { output: outF, sizeMb: +(+p.format.size / 1048576).toFixed(2), duration: +(+p.format.duration).toFixed(2), format:g.format,platform:g.platform,dimensions:`${g.width}x${g.height}`,gl };
|
|
31
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import {ff,probe,readJson,mkdirp} from './util.mjs';
|
|
4
|
+
|
|
5
|
+
export function audioPlan(original,edited) {
|
|
6
|
+
const fps=original?.fps;
|
|
7
|
+
if(!Number.isInteger(fps)||fps<1||edited?.fps!==fps||!Array.isArray(original.scenes)||!original.scenes.length||!Array.isArray(edited.scenes))throw Error('Original and edited boards need matching fps and scenes');
|
|
8
|
+
const ids=new Map(original.scenes.map(s=>[s.id,s]));
|
|
9
|
+
if(ids.size!==original.scenes.length||edited.scenes.length!==ids.size||new Set(edited.scenes.map(s=>s.id)).size!==ids.size)throw Error('Both boards must contain each unique scene exactly once');
|
|
10
|
+
let sourceEnd=0,targetEnd=0;
|
|
11
|
+
const segments=edited.scenes.map(s=>{
|
|
12
|
+
const o=ids.get(s.id);
|
|
13
|
+
if(!o||!Number.isInteger(o.fromFrame)||!Number.isInteger(o.toFrame)||o.toFrame<=o.fromFrame||!Number.isInteger(s.fromFrame)||!Number.isInteger(s.toFrame)||s.fromFrame!==targetEnd||s.toFrame<=s.fromFrame)throw Error(`Invalid source or edited scene ${s.id}`);
|
|
14
|
+
targetEnd=s.toFrame;
|
|
15
|
+
return {id:s.id,start:o.fromFrame/fps,end:o.toFrame/fps,duration:(s.toFrame-s.fromFrame)/fps,ratio:(s.toFrame-s.fromFrame)/(o.toFrame-o.fromFrame)};
|
|
16
|
+
});
|
|
17
|
+
for(const s of original.scenes){if(s.fromFrame!==sourceEnd)throw Error('Original scenes must be contiguous');sourceEnd=s.toFrame;}
|
|
18
|
+
if(Math.abs(edited.duration*fps-targetEnd)>.01||Math.abs(original.duration*fps-sourceEnd)>.01)throw Error('Board duration does not match scene frames');
|
|
19
|
+
return {segments,duration:targetEnd/fps,sourceDuration:sourceEnd/fps};
|
|
20
|
+
}
|
|
21
|
+
// atempo takes speed, inverse of scene length ratio. Chain when outside ffmpeg's portable [0.5,2] range.
|
|
22
|
+
export function tempoFilters(ratio){if(!Number.isFinite(ratio)||ratio<=0)throw Error('Invalid stretch ratio');let speed=1/ratio,filters=[];
|
|
23
|
+
if(!Number.isFinite(speed)||speed<=0)throw Error('Invalid stretch ratio');
|
|
24
|
+
while(speed>2){filters.push('atempo=2');speed/=2;}
|
|
25
|
+
while(speed<.5){filters.push('atempo=0.5');speed*=2;}
|
|
26
|
+
filters.push(`atempo=${speed.toFixed(8)}`);return filters.join(',');
|
|
27
|
+
}
|
|
28
|
+
export function retimeAudio(a) {
|
|
29
|
+
if(!a.original||!a.edited||(!a.music&&!a.vo))throw Error('usage: timeline audio --original storyboard.json --edited storyboard.edited.json --music music.wav [--vo vo.wav] [--grid beatgrid.edited.json] --outDir audio/retimed');
|
|
30
|
+
const original=readJson(path.resolve(a.original)),edited=readJson(path.resolve(a.edited)),plan=audioPlan(original,edited);
|
|
31
|
+
const grid=a.grid?readJson(path.resolve(a.grid)):null;
|
|
32
|
+
const offset=Number(grid?.beatOffset??edited.beatOffset??0);
|
|
33
|
+
if(!Number.isFinite(offset)||Math.abs(offset)>60)throw Error('Invalid beat offset');
|
|
34
|
+
const dest=path.resolve(a.outDir||'audio/retimed');mkdirp(dest);
|
|
35
|
+
const outputs={};
|
|
36
|
+
for(const type of ['music','vo'])if(a[type]){
|
|
37
|
+
const input=path.resolve(a[type]);if(!fs.existsSync(input))throw Error(`Missing ${type}: ${input}`);
|
|
38
|
+
const info=probe(input),length=Number(info.format.duration);
|
|
39
|
+
if(!info.streams.some(s=>s.codec_type==='audio')||length+0.02<plan.sourceDuration)throw Error(`${type} must contain audio through the original board duration (${plan.sourceDuration}s)`);
|
|
40
|
+
// atrim/reset timestamps, stretch each scene, then force exact output sample counts
|
|
41
|
+
// so an imperfect tempo filter cannot drift between scenes or from the video.
|
|
42
|
+
const chains=plan.segments.map((s,i)=>`[0:a]atrim=start=${s.start}:end=${s.end},asetpts=PTS-STARTPTS,aresample=48000,${tempoFilters(s.ratio)},apad,atrim=duration=${s.duration},asetpts=PTS-STARTPTS[a${i}]`);
|
|
43
|
+
const n=plan.segments.length;let graph=`${chains.join(';')};${plan.segments.map((_,i)=>`[a${i}]`).join('')}concat=n=${n}:v=0:a=1`;
|
|
44
|
+
if(type==='music'&&offset){graph+=`,${offset>0?`adelay=${Math.round(offset*1000)}:all=1`:`atrim=start=${-offset},asetpts=PTS-STARTPTS`},apad,atrim=duration=${plan.duration}`;}
|
|
45
|
+
graph+=',aresample=48000[out]';
|
|
46
|
+
const output=path.join(dest,`${type}.wav`);ff(['-i',input,'-filter_complex',graph,'-map','[out]','-c:a','pcm_s24le',output]);outputs[type]=output;
|
|
47
|
+
}
|
|
48
|
+
return {files:outputs,duration:plan.duration,beatOffset:offset,segments:plan.segments,note:'Scene audio is reordered and tempo-stretched to edited timing. Music additionally follows beat offset. Listen to cuts and stretched voice; re-mix, approve a new mix review, then render with --audio. This does not change the original media files.'};
|
|
49
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SFX engine: 16 synthesized sounds, placed on timeline events, snapped to the beat grid.
|
|
2
|
+
import * as D from './dsp.mjs';
|
|
3
|
+
import * as V from './voices.mjs';
|
|
4
|
+
const { SR } = D;
|
|
5
|
+
|
|
6
|
+
// Default levels (dB) and high-pass (Hz). These are the tested pi-v2 values.
|
|
7
|
+
export const SFX_RULES = {
|
|
8
|
+
word_pop: [-17, 300], icon_pop: [-14, 250], letter_tick: [-18, 400], check: [-12, 300], success: [-10, 250], slot_tick: [-18, 500],
|
|
9
|
+
bubble: [-15, 250], type: [-22, 500], button: [-14, 300], whoosh_in: [-9, 150], whoosh_out: [-10, 150], swoosh: [-11, 150],
|
|
10
|
+
riser: [-8, 120], impact: [-6, 20], confetti: [-16, 400], logo_sting: [-8, 200],
|
|
11
|
+
};
|
|
12
|
+
export const SFX_TYPES = Object.keys(SFX_RULES);
|
|
13
|
+
|
|
14
|
+
// Packs change timbre, never the level table. pitch in semitones, bright = filter multiplier, decay = envelope multiplier.
|
|
15
|
+
export const PACKS = {
|
|
16
|
+
'soft-pop': { pitch: 0, bright: 1.0, decay: 1.0, room: 0.18 },
|
|
17
|
+
'glass': { pitch: 5, bright: 1.4, decay: 0.7, room: 0.26 },
|
|
18
|
+
'paper': { pitch: -3, bright: 0.7, decay: 1.4, room: 0.1 },
|
|
19
|
+
'digital-soft': { pitch: 2, bright: 1.2, decay: 1.2, room: 0.14 },
|
|
20
|
+
'organic-wood': { pitch: -5, bright: 0.8, decay: 1.1, room: 0.2 },
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
function bank(pk) {
|
|
24
|
+
const dk = pk.decay; const P = (x) => V.pitchShift(x, pk.pitch);
|
|
25
|
+
const B = {
|
|
26
|
+
word_pop: [0, 2, 4, 6].map((i) => V.sineBlip(1400 * 2 ** (i / 12), 700 * 2 ** (i / 12), 0.07, 55 * dk)),
|
|
27
|
+
icon_pop: [0, 1].map(() => { const a = V.sineBlip(900, 450, 0.12, 30 * dk); D.mixInto(a, V.chime([96], 0.12), 0.35); return a; }),
|
|
28
|
+
letter_tick: [V.sineBlip(2400, 1800, 0.03, 120), V.sineBlip(2600, 1900, 0.03, 120)],
|
|
29
|
+
check: [V.chime([84, 91], 0.9, 0.07)],
|
|
30
|
+
success: [V.chime([79, 84, 88, 91], 1.4, 0.06)],
|
|
31
|
+
slot_tick: [V.sineBlip(2000, 1500, 0.03, 150)],
|
|
32
|
+
bubble: [V.sineBlip(600, 1100, 0.09, 35 * dk, 0.05), V.sineBlip(700, 1250, 0.09, 35 * dk, 0.05)],
|
|
33
|
+
type: [0, 1, 2].map((i) => { const b = V.hat(); return D.gain(D.filt(b, 'bp', 3000 + i * 500, 1.2), 0.8); }),
|
|
34
|
+
button: [V.sineBlip(1200, 900, 0.05, 80)],
|
|
35
|
+
whoosh_in: [D.gain(V.noiseSweep(0.32, 400, 7000 * pk.bright, true, 0.8), 0.5)],
|
|
36
|
+
whoosh_out: [D.gain(V.noiseSweep(0.32, 7000 * pk.bright, 400, false, 0.8), 0.5)],
|
|
37
|
+
swoosh: [D.gain(V.noiseSweep(0.45, 2500 * pk.bright, 600, false, 1.5), 0.4)],
|
|
38
|
+
riser: [D.gain(V.noiseSweep(1.8, 250, 9000 * pk.bright, true, 1.0), 0.6)],
|
|
39
|
+
impact: [D.gain(V.deepKick(1.3), 0.9)],
|
|
40
|
+
confetti: [0, 1, 2].map((i) => V.chime([100 + i, 103 + i], 0.3, 0.02)),
|
|
41
|
+
logo_sting: [D.gain(V.chime([77, 84, 89, 96], 2.0, 0.05), 0.8)],
|
|
42
|
+
};
|
|
43
|
+
for (const k of Object.keys(B)) if (!['impact', 'riser', 'whoosh_in', 'whoosh_out', 'swoosh'].includes(k)) B[k] = B[k].map(P);
|
|
44
|
+
return B;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// cues: [{type, t, gain?, pitch?, pan?, end? (riser), snap?}]
|
|
48
|
+
export function renderSfx(cues, dur, { bpm = null, pack = 'soft-pop', density = 1, seed = 11 } = {}) {
|
|
49
|
+
D.setSeed(seed); const pk = PACKS[pack] || PACKS['soft-pop']; const B = bank(pk);
|
|
50
|
+
const n = Math.round(dur * SR), out = D.stereo(n), grid = bpm ? 60 / bpm / 4 : null; const count = {}; const warnings = []; let lastLoud = -1;
|
|
51
|
+
const sorted = [...cues].sort((a, b) => a.t - b.t);
|
|
52
|
+
for (const c of sorted) {
|
|
53
|
+
const typ = c.type; if (!B[typ]) { warnings.push(`unknown sfx type ${typ}`); continue; }
|
|
54
|
+
if (density < 1 && ['word_pop', 'letter_tick', 'type', 'slot_tick'].includes(typ) && D.rand() > density) continue;
|
|
55
|
+
let t = c.t;
|
|
56
|
+
if (typ === 'riser' && c.end != null) t = c.end - 1.8;
|
|
57
|
+
else if (grid && c.snap !== false) { const s = Math.round(t / grid) * grid; if (Math.abs(s - t) < 0.045) t = s; }
|
|
58
|
+
const [g0, hp] = SFX_RULES[typ]; const g = g0 + (c.gain || 0);
|
|
59
|
+
if (g > -12 && lastLoud >= 0 && t - lastLoud < 0.12) warnings.push(`two loud sfx within 120 ms at ${t.toFixed(2)}s`);
|
|
60
|
+
if (g > -12) lastLoud = t;
|
|
61
|
+
const i = count[typ] = (count[typ] || 0) + 1; let x = B[typ][(i - 1) % B[typ].length];
|
|
62
|
+
if (c.pitch) x = V.pitchShift(x, c.pitch);
|
|
63
|
+
x = D.filt(x, 'hp', hp);
|
|
64
|
+
D.place(out, x, Math.max(0, t), D.db(g), c.pan || 0);
|
|
65
|
+
}
|
|
66
|
+
const wet = D.reverb(out, 0.2, 0.6, pk.room); D.mixInto(out, wet);
|
|
67
|
+
return { buf: out, warnings };
|
|
68
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// Style validator: blocks combinations that look cheap, explains why, suggests a fix.
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { readJson, die, SKILL_DIR } from './util.mjs';
|
|
5
|
+
const SLOP_FONTS = ['inter', 'roboto', 'arial', 'helvetica', 'poppins', 'montserrat', 'open sans'];
|
|
6
|
+
const hex = (h) => [1, 3, 5].map((i) => parseInt(h.slice(i, i + 2), 16) / 255);
|
|
7
|
+
const lum = (h) => { const c = hex(h).map((v) => (v <= 0.03928 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4)); return 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2]; };
|
|
8
|
+
export const contrast = (a, b) => { const [x, y] = [lum(a), lum(b)].sort((p, q) => q - p); return (x + 0.05) / (y + 0.05); };
|
|
9
|
+
export function checkStyle(t) {
|
|
10
|
+
const E = [], Wn = []; const add = (arr, rule, why, fix) => arr.push({ rule, why, fix });
|
|
11
|
+
const bg = t.color.bg[t.color.bg.length - 1];
|
|
12
|
+
const ci = contrast(t.color.ink, bg); if (ci < 4.5) add(E, 'ink contrast', `ink on background is ${ci.toFixed(2)}:1, needs >= 4.5:1`, 'darken ink or lighten background');
|
|
13
|
+
const ca = contrast(t.color.accent, bg); if (ca < 3) add(E, 'accent contrast', `accent on background is ${ca.toFixed(2)}:1; accent words are large, so >= 3:1 is the floor`, 'pick a deeper accent');
|
|
14
|
+
const cm = contrast(t.color.muted, bg); if (cm < 2.8) add(Wn, 'muted contrast', `muted text is ${cm.toFixed(2)}:1 - captions may disappear on phones`, 'darken muted');
|
|
15
|
+
if (SLOP_FONTS.includes(t.font.display.toLowerCase())) add(Wn, 'default font', `${t.font.display} is the most common AI-default font; the video will look generic`, 'Figtree, Manrope, Satoshi, General Sans, Geist, or a brand font');
|
|
16
|
+
const s = t.font.size; if (s.h0[0] / s.h1[1] < 1.5) add(E, 'hierarchy', 'h0 must be >= 1.5x h1 so the big moment reads as big', 'raise h0 or lower h1');
|
|
17
|
+
if (s.h1[0] / s.h2[1] < 1.35) add(E, 'hierarchy', 'h1 must be >= 1.35x h2', 'separate the sizes');
|
|
18
|
+
if (t.font.maxLines > 2) add(E, 'max lines', 'more than 2 lines of text on screen turns into reading, not watching', 'keep maxLines at 2');
|
|
19
|
+
const m = t.motion, L = m.limits;
|
|
20
|
+
if (m.word.inFrames < L.minEnterFrames || m.word.inFrames > L.maxEnterFrames) add(E, 'word timing', `word enter ${m.word.inFrames}f outside ${L.minEnterFrames}-${L.maxEnterFrames}f`, 'use 10-14f');
|
|
21
|
+
if (m.word.stagger[0] < L.minStagger) add(E, 'stagger', 'stagger under 2 frames reads as one blob', 'use 3-5 frames');
|
|
22
|
+
if (m.word.blur > 16 || m.card.blur > 20) add(Wn, 'blur', 'very large blur makes motion feel mushy', 'keep word blur ~10, card blur ~12');
|
|
23
|
+
const eo = t.ease.out; if (eo[0] === eo[1] && eo[2] === eo[3]) add(E, 'easing', 'linear easing on UI motion looks robotic', 'use [0.22,1,0.36,1] for enters');
|
|
24
|
+
if (m.camera.maxZoom > 1.3) add(Wn, 'camera', 'zoom over 1.3x crops text and makes collisions likely', 'cap at 1.2');
|
|
25
|
+
if (t.layout.safe.min < 48) add(E, 'safe area', 'margins under 48px get cut by phone UIs', 'min 60');
|
|
26
|
+
if ((t.color.glow || []).length > 2) add(Wn, 'glow', 'more than 2 background glows starts to look like the colored-blob AI look', 'max 2, same hue family');
|
|
27
|
+
return { style: t.name, pass: E.length === 0, errors: E, warnings: Wn };
|
|
28
|
+
}
|
|
29
|
+
export function cmdStyle(a) {
|
|
30
|
+
const sub = a._[0];
|
|
31
|
+
if (sub === 'list') return { styles: fs.readdirSync(path.join(SKILL_DIR, 'styles')).map((s) => ({ id: s, description: readJson(path.join(SKILL_DIR, 'styles', s, 'tokens.json'))?.description })) };
|
|
32
|
+
if (sub === 'check') { const f = a._[1] ? path.resolve(a._[1]) : fs.existsSync('src/style.json') ? path.resolve('src/style.json') : path.join(SKILL_DIR, 'styles', 'pi-v2', 'tokens.json'); const t = readJson(f) || die(`cannot read ${f}`); return checkStyle(t); }
|
|
33
|
+
if (sub === 'knobs') { // apply knob values to a tokens file -> new tokens (never edits components)
|
|
34
|
+
const f = path.resolve(a._[1] || 'src/style.json'); const t = readJson(f) || die(`cannot read ${f}`); const k = { ...t.knobs }; for (const n of ['energy', 'density', 'warmth', 'roundness', 'depth']) if (a[n] != null) k[n] = Math.max(0, Math.min(1, +a[n])); if (a.camera) k.camera = a.camera;
|
|
35
|
+
const e = k.energy; const sp = 1.25 - e * 0.5; // energy 0 -> slower, 1 -> faster
|
|
36
|
+
t.motion.word.inFrames = Math.round(12 * sp); t.motion.word.stagger = [Math.max(2, Math.round(4.5 * sp)), Math.max(3, Math.round(5 * sp))]; t.motion.card.frames = Math.round(24 * sp); t.motion.scene.overlap = Math.round(17 * sp);
|
|
37
|
+
t.motion.word.spring.damping = +(11 + (0.5 - e) * 4).toFixed(1); t.motion.camera.drift = k.camera === 'still' ? 0 : k.camera === 'active' ? 12 : 8;
|
|
38
|
+
t.shape.cardRadius = Math.round(10 + k.roundness * 20); t.motion.card.rotateX = +(k.depth * 17).toFixed(1);
|
|
39
|
+
const warm = k.warmth; t.color.bg = warm > 0.6 ? ['#faf8f5', '#f8f5f0', '#f3ece2'] : warm < 0.25 ? ['#f6f8fb', '#f2f5fa', '#e6eef9'] : t.color.bg;
|
|
40
|
+
t.audio.sfxPerMinute = [Math.round(80 + e * 80), Math.round(120 + e * 100)]; t.knobs = k;
|
|
41
|
+
const o = path.resolve(a.out || f); fs.writeFileSync(o, JSON.stringify(t, null, 2)); return { written: o, knobs: k, check: checkStyle(t) };
|
|
42
|
+
}
|
|
43
|
+
die('usage: style list | check [tokens.json] | knobs [tokens.json] --energy 0.7 --warmth 0.5 ...');
|
|
44
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import {readJson,writeJson,die} from './util.mjs';
|
|
4
|
+
const launch={id:'ProductLaunch',duration:45,min:30,max:60,required:['product','problem','feature1','feature2','cta','handle','demoDir','demoCount','demoCredit'],asset:'demo'};
|
|
5
|
+
const tutorial={id:'ScreenTutorial',duration:60,min:30,max:90,required:['title','handle','captureDir','captureCount','sourceCredit','steps'],asset:'capture'};
|
|
6
|
+
export function templatePlan(a){
|
|
7
|
+
const kind=a._[0],model=kind==='launch'?launch:kind==='tutorial'?tutorial:null;if(!model)die('usage: template launch|tutorial --spec props.json --dir project');
|
|
8
|
+
if(a._[1]==='fields')return model;
|
|
9
|
+
const file=path.resolve(a.spec||`${kind}-props.json`),p=readJson(file);if(!p||typeof p!=='object')die(`read ${file} first`);
|
|
10
|
+
const issues=model.required.filter(k=>p[k]===undefined||p[k]===null||p[k]==='').map(k=>`missing ${k}`);
|
|
11
|
+
const duration=Number(a.duration??p.duration??model.duration);
|
|
12
|
+
if(!Number.isFinite(duration)||duration<model.min||duration>model.max)issues.push(`duration must be ${model.min}-${model.max}s`);
|
|
13
|
+
const dir=path.resolve(a.dir||'.');let data=null;
|
|
14
|
+
if(model===tutorial){if(!Array.isArray(p.steps)||!p.steps.length)issues.push('steps required');else{
|
|
15
|
+
let end=0;for(const [i,s] of p.steps.entries()){
|
|
16
|
+
if(typeof s.title!=='string'||!s.title.trim()||typeof s.caption!=='string'||!s.caption.trim())issues.push(`step ${i+1} needs title and caption`);
|
|
17
|
+
if(!Number.isFinite(s.from)||!Number.isFinite(s.to)||Math.abs(s.from-end)>0.001||s.to<=s.from||s.to>duration)issues.push(`step ${i+1} has invalid time; expected start ${end}`);
|
|
18
|
+
if(!Number.isFinite(s.x)||!Number.isFinite(s.y)||s.x<.12||s.x>.88||s.y<.12||s.y>.85)issues.push(`step ${i+1} pointer must be within safe fractional x/y bounds`);
|
|
19
|
+
if(s.zoom!=null&&(s.zoom<1||s.zoom>1.6))issues.push(`step ${i+1} zoom must be 1-1.6`);end=s.to;
|
|
20
|
+
}if(Math.abs(end-duration)>.001)issues.push(`steps must finish at duration ${duration}s`);
|
|
21
|
+
}}
|
|
22
|
+
if(p.audio){const audio=path.resolve(dir,'public',p.audio);if(!audio.startsWith(path.resolve(dir,'public')+path.sep)||!fs.existsSync(audio))issues.push('audio missing or outside public');}
|
|
23
|
+
const name=model===launch?p.demoDir:p.captureDir,count=model===launch?p.demoCount:p.captureCount;
|
|
24
|
+
if(name){const folder=path.resolve(dir,'public',name);if(!folder.startsWith(path.resolve(dir,'public')+path.sep))issues.push('frames path outside project public folder');
|
|
25
|
+
else if(!Number.isInteger(count)||count<1)issues.push('frame count needs a positive integer');
|
|
26
|
+
else if(!fs.existsSync(folder))issues.push(`frame folder missing: ${folder}`);
|
|
27
|
+
else for(let i=1;i<=count;i++)if(!fs.existsSync(path.join(folder,`${String(i).padStart(3,'0')}.jpg`))) {issues.push(`frame ${i} missing`);break;}
|
|
28
|
+
}
|
|
29
|
+
if(model===tutorial&&(!Number.isFinite(Number(p.captureFps??30))||Number(p.captureFps??30)<=0||Number(p.captureFps??30)>120))issues.push('captureFps must be 1-120');
|
|
30
|
+
if(model===tutorial&&Number.isFinite(duration)&&Number.isInteger(count)&&count<Math.ceil(duration*(Number(p.captureFps)||30)))issues.push('captureCount too short for duration * captureFps');
|
|
31
|
+
if(model===launch&&Number.isFinite(duration)&&Number.isInteger(count)&&count<Math.ceil(18*30))issues.push('demoCount too short for 18s demonstration at 30 fps');
|
|
32
|
+
if(a.out&&issues.length===0){const dest=path.resolve(a.out);writeJson(dest,{...p,duration});data=dest;}
|
|
33
|
+
return {template:model.id,duration,pass:issues.length===0,issues,props:data,note:'This checks fields and numbered JPGs only. It does not verify capture authenticity, source rights, readable UI, captions, visual motion, or factual claims. Preview final frames and listen to audio.'};
|
|
34
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import {readJson,die,writeJson} from './util.mjs';
|
|
4
|
+
|
|
5
|
+
// The exported board is an edit decision, not a mutation of a Remotion composition.
|
|
6
|
+
export function retimeBoard(board, edits) {
|
|
7
|
+
const fps=Number(board?.fps), scenes=board?.scenes;
|
|
8
|
+
if(!Number.isInteger(fps)||fps<1||!Array.isArray(scenes)||!scenes.length)throw Error('board needs fps and scenes');
|
|
9
|
+
const byId=new Map(scenes.map(s=>[s.id,s]));
|
|
10
|
+
if(byId.size!==scenes.length||scenes.some(s=>!s.id))throw Error('scene IDs must be unique');
|
|
11
|
+
if(edits.length!==scenes.length||new Set(edits.map(e=>e.id)).size!==scenes.length||edits.some(e=>!byId.has(e.id)))throw Error('edits must include every scene exactly once');
|
|
12
|
+
let frame=0;
|
|
13
|
+
const next=edits.map(e=>{
|
|
14
|
+
const original=byId.get(e.id), duration=Number(e.duration), frames=Math.round(duration*fps);
|
|
15
|
+
if(!Number.isFinite(duration)||duration<0.8||!Number.isSafeInteger(frames))throw Error(`invalid duration for ${e.id}`);
|
|
16
|
+
const oldStart=Number(original.start),oldEnd=Number(original.end),oldLength=oldEnd-oldStart;
|
|
17
|
+
if(!Number.isFinite(oldLength)||oldLength<=0)throw Error(`invalid original scene ${e.id}`);
|
|
18
|
+
const shift=t=>+(frame/fps+(Number(t)-oldStart)*frames/fps/oldLength).toFixed(3);
|
|
19
|
+
const shiftEvent=event=>{
|
|
20
|
+
const out={...event};
|
|
21
|
+
for(const k of ['at','t'])if(event[k]!=null)out[k]=shift(event[k]);
|
|
22
|
+
if(event.frame!=null)out.frame=Math.round(shift(Number(event.frame)/fps)*fps);
|
|
23
|
+
return out;
|
|
24
|
+
};
|
|
25
|
+
const oldPreview=Number(original.previewFrame), ratio=Number.isFinite(oldPreview)?(oldPreview-Number(original.fromFrame))/(Number(original.toFrame)-Number(original.fromFrame)):0.7;
|
|
26
|
+
const s={...original,fromFrame:frame,toFrame:frame+frames,start:+(frame/fps).toFixed(3),end:+((frame+frames)/fps).toFixed(3),previewFrame:frame+Math.min(frames-1,Math.max(0,Math.round(ratio*frames)))};
|
|
27
|
+
if(Array.isArray(s.events))s.events=s.events.map(shiftEvent);
|
|
28
|
+
if(Array.isArray(s.animations))s.animations=s.animations.map(shiftEvent);
|
|
29
|
+
frame+=frames; return s;
|
|
30
|
+
});
|
|
31
|
+
return {...board,duration:+(frame/fps).toFixed(3),scenes:next};
|
|
32
|
+
}
|
|
33
|
+
export function shiftBeatGrid(grid, offset, duration) {
|
|
34
|
+
const n=Number(offset);if(!Number.isFinite(n)||Math.abs(n)>60)throw Error('beat offset must be between -60 and 60 seconds');
|
|
35
|
+
const shift=a=>a.map(t=>+(Number(t)+n).toFixed(3)).filter(t=>Number.isFinite(t)&&t>=0&&t<duration);
|
|
36
|
+
return {...grid,duration,beatOffset:n,beats:shift(grid.beats||[]),sections:Array.isArray(grid.sections)?grid.sections.map(s=>typeof s==='number'?+(s+n).toFixed(3):{...s,t:s.t==null?s.t:+(Number(s.t)+n).toFixed(3)}):grid.sections};
|
|
37
|
+
}
|
|
38
|
+
export function timelineEditor(a){
|
|
39
|
+
const source=path.resolve(a.board||'storyboard.json'),board=readJson(source);
|
|
40
|
+
if(!board?.scenes?.length)die(`cannot read storyboard scenes: ${source}`);
|
|
41
|
+
const grid=a.grid?readJson(path.resolve(a.grid)):null;
|
|
42
|
+
if(a.grid && !grid)die(`cannot read beat grid: ${a.grid}`);
|
|
43
|
+
try{retimeBoard(board,board.scenes.map(s=>({id:s.id,duration:s.end-s.start})));}catch(e){die(e.message);}
|
|
44
|
+
const data=JSON.stringify({board,grid}).replace(/</g,'\\u003c');
|
|
45
|
+
const script=fs.readFileSync(new URL('../assets/timeline-editor.js',import.meta.url),'utf8');
|
|
46
|
+
const html=`<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>MotionCraft timeline editor</title><style>
|
|
47
|
+
:root{font-family:system-ui,sans-serif;color:#e8edf7;background:#111827}body{max-width:900px;margin:35px auto;padding:0 20px}h1{font-size:28px}p{color:#aab8ce;line-height:1.5}.row{display:flex;align-items:center;gap:14px;background:#243247;border:1px solid #465a76;padding:14px;margin:8px 0;border-radius:10px}.row.dragging{opacity:.45}.handle{cursor:grab;font-size:25px}.name{flex:1}.name small{display:block;color:#aab8ce}input{width:72px;padding:7px;background:#111827;color:white;border:1px solid #789;border-radius:5px}button{padding:10px 14px;margin:8px 8px 8px 0;background:#72bcf5;color:#102033;border:0;border-radius:6px;font-weight:700;cursor:pointer}button:focus,input:focus{outline:2px solid #ffa86c}#error{color:#ffaaa0}code{color:#b3dafa}</style>
|
|
48
|
+
<h1>MotionCraft timeline editor</h1><p>Drag scenes to reorder. Change each duration in seconds. Shift the beat grid by a signed offset. Export both files, then review the updated storyboard against your Remotion composition before rendering. Main, MainVertical, ProductLaunch, ScreenTutorial, TimelineLaunch and TimelineTutorial render this exported timing plan without code edits.</p>
|
|
49
|
+
<main id="list"></main><label>Beat offset (seconds) <input id="beat" type="number" step="0.01" value="0"></label><p id="summary"></p><p id="error" role="alert"></p><button id="export">Export storyboard and beat grid</button>
|
|
50
|
+
<p>Render with <code>--comp Main|ProductLaunch|ScreenTutorial|TimelineLaunch|TimelineTutorial --timeline storyboard.edited.json --grid beatgrid.edited.json</code>. Run timeline audio with original and edited boards; re-mix and review audio and footage.</p><script type="application/json" id="data">${data}</script><script>${script.replace(/<\/script/gi,'<\\/script')}</script></html>`;
|
|
51
|
+
const dest=path.resolve(a.out||'timeline-editor.html');fs.mkdirSync(path.dirname(dest),{recursive:true});fs.writeFileSync(dest,html);
|
|
52
|
+
return {editor:dest,scenes:board.scenes.length,note:'Open the HTML locally in a browser. Export JSON and render the matching composition with --timeline. Run timeline audio for scene-synced media and review cuts; other footage needs independent sync review.'};
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const presets={
|
|
56
|
+
main:[['hook',3.4],['reframe',4.2],['proof',4.4],['formula',3.2],['cta',2.4],['end',2.4]],
|
|
57
|
+
'product-launch':[['problem',8],['demo',19],['features',12],['cta',6]],
|
|
58
|
+
'screen-tutorial':[['step',20],['step',20],['step',20]],
|
|
59
|
+
launch:[['problem',8],['demo',19],['features',12],['cta',6]],
|
|
60
|
+
tutorial:[['intro',5],['step',10],['step',10],['outro',5]]
|
|
61
|
+
};
|
|
62
|
+
export function timelineInit(a){
|
|
63
|
+
const kind=String(a._[1]||a.kind||'');if(!presets[kind])die('timeline init needs main|product-launch|screen-tutorial|launch|tutorial');
|
|
64
|
+
const fps=30;let frame=0;const scenes=presets[kind].map(([role,seconds],i)=>{const begin=frame;frame+=seconds*fps;return {id:(kind==='tutorial'||kind==='screen-tutorial')&&role==='step'?`step-${i}`:role,role,headline:({problem:'A real problem',demo:'Product in action',features:'What changes',cta:'Try it',intro:'A clear tutorial',step:`Step ${i}`,outro:'Review',hook:'Make videos like this',reframe:'References',proof:'Give feedback until it fits',formula:'The formula',end:'Follow for more'})[role],fromFrame:begin,toFrame:frame,start:begin/fps,end:frame/fps,previewFrame:begin+Math.floor(seconds*fps*.7),sourceFromFrame:begin,sourceToFrame:frame}});
|
|
65
|
+
const file=path.resolve(a.out||`timeline-${kind}.json`);writeJson(file,{version:1,kind,fps,duration:frame/fps,scenes});return {board:file,kind,scenes:scenes.length};
|
|
66
|
+
}
|
|
67
|
+
export function validateRenderBoard(board,kind){
|
|
68
|
+
if(!['launch','tutorial','main','product-launch','screen-tutorial'].includes(kind))throw Error('unsupported timeline composition');
|
|
69
|
+
const allowed=kind==='launch'||kind==='product-launch'?new Set(['problem','demo','features','cta']):kind==='main'?new Set(['hook','reframe','proof','formula','cta','end']):new Set(['intro','step','outro']);
|
|
70
|
+
if(!board||board.fps!==30||!Array.isArray(board.scenes)||board.scenes.length<2||board.scenes.length>12)throw Error('timeline needs 30 fps and 2-12 scenes');
|
|
71
|
+
let end=0;const ids=new Set();for(const s of board.scenes){if(!s.id||ids.has(s.id)||!allowed.has(s.role)||s.fromFrame!==end||!Number.isInteger(s.toFrame)||s.toFrame-s.fromFrame<24 || (['main','product-launch','screen-tutorial'].includes(kind)&&(!Number.isInteger(s.sourceFromFrame)||!Number.isInteger(s.sourceToFrame)||s.sourceToFrame<=s.sourceFromFrame||s.sourceFromFrame<0||s.sourceToFrame>(kind==='main'?600:kind==='product-launch'?1350:1800))))throw Error(`invalid or noncontiguous timeline scene ${s.id||''}`);ids.add(s.id);end=s.toFrame;}
|
|
72
|
+
if(['main','product-launch','screen-tutorial'].includes(kind)){const sources=[...board.scenes].sort((a,b)=>a.sourceFromFrame-b.sourceFromFrame);let pos=0;for(const scene of sources){if(scene.sourceFromFrame!==pos)throw Error('legacy source scenes must cover original composition once, with no gaps or overlaps');pos=scene.sourceToFrame;}if(pos!==(kind==='main'?600:kind==='product-launch'?1350:1800))throw Error('legacy source scenes must cover the original composition duration');}
|
|
73
|
+
if(Math.abs(board.duration*30-end)>.01)throw Error('timeline duration differs from scene frames');return board;
|
|
74
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { spawnSync } from 'node:child_process';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
export const SKILL_DIR = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
8
|
+
export const log = (...a) => console.error('[motioncraft]', ...a);
|
|
9
|
+
export const out = (obj) => process.stdout.write(JSON.stringify(obj, null, 2) + '\n');
|
|
10
|
+
export function die(msg, hint) { console.error(`\n✖ ${msg}` + (hint ? `\n → ${hint}` : '')); process.exit(1); }
|
|
11
|
+
export function has(cmd, args = ['--version']) { try { const r = spawnSync(cmd, args, { encoding: 'utf8', shell: process.platform === 'win32', timeout: 20000 }); return r.status === 0 ? (r.stdout || r.stderr || '').trim() : null; } catch { return null; } }
|
|
12
|
+
export function run(cmd, args, opts = {}) {
|
|
13
|
+
const r = spawnSync(cmd, args, { encoding: 'utf8', maxBuffer: 1 << 28, shell: process.platform === 'win32', ...opts });
|
|
14
|
+
if (r.error) throw r.error; return r;
|
|
15
|
+
}
|
|
16
|
+
export function parseArgs(argv) {
|
|
17
|
+
const a = { _: [] };
|
|
18
|
+
for (let i = 0; i < argv.length; i++) { const t = argv[i];
|
|
19
|
+
if (t.startsWith('--')) { const [k, v] = t.slice(2).split('='); if (v !== undefined) a[k] = v; else if (argv[i + 1] && !argv[i + 1].startsWith('--')) a[k] = argv[++i]; else a[k] = true; }
|
|
20
|
+
else a._.push(t); }
|
|
21
|
+
return a;
|
|
22
|
+
}
|
|
23
|
+
export const readJson = (p, d) => { try { return JSON.parse(fs.readFileSync(p, 'utf8')); } catch { return d; } };
|
|
24
|
+
export const writeJson = (p, o) => { fs.mkdirSync(path.dirname(p), { recursive: true }); fs.writeFileSync(p, JSON.stringify(o, null, 2)); };
|
|
25
|
+
export const mkdirp = (p) => fs.mkdirSync(p, { recursive: true });
|
|
26
|
+
export const workDir = (a) => path.resolve(a.dir || process.cwd());
|
|
27
|
+
export const stateDir = (a) => { const d = path.join(workDir(a), '.motioncraft'); mkdirp(d); return d; };
|
|
28
|
+
|
|
29
|
+
// ffmpeg resolution: system binary first, then Remotion's bundled one (v4+, limited codecs).
|
|
30
|
+
let FF = null;
|
|
31
|
+
export function ffmpeg() {
|
|
32
|
+
if (FF) return FF;
|
|
33
|
+
if (has('ffmpeg', ['-version'])) FF = { ff: ['ffmpeg'], fp: ['ffprobe'], source: 'system' };
|
|
34
|
+
else if (has('npx', ['--no-install', 'remotion', 'ffmpeg', '-version'])) FF = { ff: ['npx', '--no-install', 'remotion', 'ffmpeg'], fp: ['npx', '--no-install', 'remotion', 'ffprobe'], source: 'remotion-bundled' };
|
|
35
|
+
else die('ffmpeg not found (neither system ffmpeg nor Remotion\'s bundled one).', 'Run `node scripts/motioncraft.mjs doctor` to see install options, or run this inside a Remotion project (npx remotion ffmpeg).');
|
|
36
|
+
return FF;
|
|
37
|
+
}
|
|
38
|
+
export function ff(args, opts) { const F = ffmpeg(); const r = run(F.ff[0], [...F.ff.slice(1), '-hide_banner', '-y', ...args], opts); if (r.status !== 0) die('ffmpeg failed: ' + (r.stderr || '').split('\n').slice(-6).join('\n')); return r; }
|
|
39
|
+
export function probe(file) {
|
|
40
|
+
const F = ffmpeg(); const r = run(F.fp[0], [...F.fp.slice(1), '-v', 'error', '-print_format', 'json', '-show_format', '-show_streams', file]);
|
|
41
|
+
if (r.status !== 0) die('ffprobe failed on ' + file); return JSON.parse(r.stdout);
|
|
42
|
+
}
|
|
43
|
+
// decode any audio to 48k stereo wav with ffmpeg (so the pure-JS analyzers only ever see one format)
|
|
44
|
+
export function toWav48(input, tmpName = 'a48.wav') { const o = path.join(os.tmpdir(), `mc-${process.pid}-${tmpName}`); ff(['-i', input, '-vn', '-ac', '2', '-ar', '48000', '-c:a', 'pcm_s16le', o]); return o; }
|
|
45
|
+
export const fmtTime = (s) => `${Math.floor(s / 60)}:${(s % 60).toFixed(2).padStart(5, '0')}`;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Synth voices - everything is generated here, no samples, no licensing questions.
|
|
2
|
+
import { SR, adsr, midiHz, rand, randn, fromMono, filt, biquadCoefs, biquadMono, stereo } from './dsp.mjs';
|
|
3
|
+
|
|
4
|
+
const N = (d) => Math.max(1, Math.round(d * SR));
|
|
5
|
+
|
|
6
|
+
export function epNote(midi, dur, vel = 0.8, bright = 1) { // FM electric piano
|
|
7
|
+
const n = N(dur), f = midiHz(midi), e = adsr(n, 0.002, 0.05, 1, 0.08), x = new Float32Array(n);
|
|
8
|
+
for (let i = 0; i < n; i++) { const t = i / SR;
|
|
9
|
+
const mod = Math.sin(2 * Math.PI * f * t) * (1.1 * bright * Math.exp(-t * 6) + 0.3) + Math.sin(2 * Math.PI * f * 7 * t) * 0.12 * bright * Math.exp(-t * 25);
|
|
10
|
+
x[i] = Math.sin(2 * Math.PI * f * t + mod) * Math.exp(-t * 2.2) * vel * e[i]; }
|
|
11
|
+
return fromMono(x);
|
|
12
|
+
}
|
|
13
|
+
export function supersaw(midis, dur, { voices = 3, spread = 0.007, bright = 1600, env = [0.4, 0.3, 0.8, 0.5] } = {}) {
|
|
14
|
+
const n = N(dur), L = new Float32Array(n), R = new Float32Array(n);
|
|
15
|
+
for (const m of midis) { const f = midiHz(m);
|
|
16
|
+
for (let v = 0; v < voices; v++) { const d = voices > 1 ? spread * (v - (voices - 1) / 2) / ((voices - 1) / 2) : 0; const p = voices > 1 ? (v / (voices - 1)) * 2 - 1 : 0; const ph = rand();
|
|
17
|
+
for (let i = 0; i < n; i++) { const s = 2 * ((f * (1 + d) * i / SR + ph) % 1) - 1; L[i] += s * (1 - p) / 2; R[i] += s * (1 + p) / 2; } } }
|
|
18
|
+
const k = 2.2 / (midis.length * voices); let b = { L, R }; b = filt(b, 'lp', bright, 0.707); b = filt(b, 'lp', bright * 1.3, 0.707);
|
|
19
|
+
const e = adsr(n, ...env); for (let i = 0; i < n; i++) { b.L[i] *= e[i] * k; b.R[i] *= e[i] * k; }
|
|
20
|
+
return b;
|
|
21
|
+
}
|
|
22
|
+
export function roundBass(freq, dur) {
|
|
23
|
+
const n = N(dur), e = adsr(n, 0.006, 0.15, 0.75, 0.06), x = new Float32Array(n);
|
|
24
|
+
for (let i = 0; i < n; i++) { const t = i / SR; const v = Math.sin(2 * Math.PI * freq * t) + 0.18 * Math.sin(4 * Math.PI * freq * t) + 0.06 * Math.sin(6 * Math.PI * freq * t); x[i] = Math.tanh(v * 1.1) * e[i]; }
|
|
25
|
+
return fromMono(x);
|
|
26
|
+
}
|
|
27
|
+
export function softKick(dur = 0.35, tone = 52) {
|
|
28
|
+
const n = N(dur), x = new Float32Array(n); let ph = 0;
|
|
29
|
+
for (let i = 0; i < n; i++) { const t = i / SR; const f = tone + 90 * Math.exp(-t * 45); ph += 2 * Math.PI * f / SR; x[i] = Math.tanh((Math.sin(ph) * Math.exp(-t * 11) + randn() * Math.exp(-t * 1200) * 0.12) * 1.3); }
|
|
30
|
+
return fromMono(x);
|
|
31
|
+
}
|
|
32
|
+
export function deepKick(dur = 0.6) { // for heavier presets / impact
|
|
33
|
+
const n = N(dur), x = new Float32Array(n); let ph = 0;
|
|
34
|
+
for (let i = 0; i < n; i++) { const t = i / SR; const f = 44 + 240 * Math.exp(-t * 38); ph += 2 * Math.PI * f / SR; x[i] = Math.tanh((Math.sin(ph) * Math.exp(-t * 5.5) + randn() * Math.exp(-t * 900) * 0.3) * 1.8) / Math.tanh(1.8); }
|
|
35
|
+
return fromMono(x);
|
|
36
|
+
}
|
|
37
|
+
function noiseBurst(dur, decay, type, f, q) { const n = N(dur), x = new Float32Array(n); for (let i = 0; i < n; i++) x[i] = randn() * Math.exp(-(i / SR) * decay); return biquadMono(x, biquadCoefs(type, f, q)); }
|
|
38
|
+
export function snap() { const a = noiseBurst(0.18, 38, 'bp', 1900, 1.4); const b = noiseBurst(0.18, 60, 'hp', 3500, 0.7); const x = new Float32Array(a.length); for (let i = 0; i < x.length; i++) x[i] = a[i] * 0.8 + b[i] * 0.4; return norm(fromMono(x)); }
|
|
39
|
+
export function clap() { // 3 fast bursts + tail
|
|
40
|
+
const n = N(0.3), x = new Float32Array(n);
|
|
41
|
+
for (const off of [0, 0.011, 0.022]) { const o = Math.round(off * SR); for (let i = 0; i + o < n; i++) x[i + o] += randn() * Math.exp(-(i / SR) * (off < 0.02 ? 180 : 22)); }
|
|
42
|
+
return norm(fromMono(biquadMono(x, biquadCoefs('bp', 1300, 0.9))));
|
|
43
|
+
}
|
|
44
|
+
export function hat(open = false) { const x = noiseBurst(open ? 0.35 : 0.06, open ? 9 : 70, 'hp', 7500, 0.7); return norm(fromMono(biquadMono(x, biquadCoefs('peak', 10000, 1, 4)))); }
|
|
45
|
+
export function shaker() { const n = N(0.09), x = new Float32Array(n); for (let i = 0; i < n; i++) { const t = i / SR; x[i] = randn() * Math.min(1, t * 300) * Math.exp(-t * 45); } return norm(fromMono(biquadMono(x, biquadCoefs('hp', 5000, 0.8)))); }
|
|
46
|
+
export function marimba(midi, dur = 0.8, vel = 0.7) {
|
|
47
|
+
const n = N(dur), f = midiHz(midi), e = adsr(n, 0.001, 0.02, 1, 0.05), x = new Float32Array(n);
|
|
48
|
+
for (let i = 0; i < n; i++) { const t = i / SR; x[i] = (Math.sin(2 * Math.PI * f * t + 0.8 * Math.exp(-t * 30) * Math.sin(2 * Math.PI * f * 4 * t)) * Math.exp(-t * 5.5) + 0.15 * Math.sin(2 * Math.PI * f * 3.99 * t) * Math.exp(-t * 18)) * vel * e[i]; }
|
|
49
|
+
return fromMono(x);
|
|
50
|
+
}
|
|
51
|
+
export function glock(midi, dur = 1.2, vel = 0.6) {
|
|
52
|
+
const n = N(dur), f = midiHz(midi), x = new Float32Array(n);
|
|
53
|
+
for (let i = 0; i < n; i++) { const t = i / SR; x[i] = (Math.sin(2 * Math.PI * f * t) + 0.3 * Math.sin(2 * Math.PI * f * 2.01 * t) * Math.exp(-t * 6) + 0.12 * Math.sin(2 * Math.PI * f * 3.98 * t) * Math.exp(-t * 10)) * Math.exp(-t * 3.5) * vel * Math.min(1, t * 2000); }
|
|
54
|
+
return fromMono(x);
|
|
55
|
+
}
|
|
56
|
+
export function pluck(midi, dur = 0.8, bright = 0.5) { // Karplus-Strong
|
|
57
|
+
const n = N(dur), f = midiHz(midi), P = Math.max(2, Math.round(SR / f)), buf = new Float32Array(P), x = new Float32Array(n), k = 0.5 + 0.49 * bright;
|
|
58
|
+
for (let i = 0; i < P; i++) buf[i] = rand() * 2 - 1;
|
|
59
|
+
for (let i = 0; i < n; i++) { const j = i % P; x[i] = buf[j]; buf[j] = (k * buf[j] + (1 - k) * buf[(j + 1) % P]) * 0.996; }
|
|
60
|
+
const e = adsr(n, 0.001, 0.05, 1, 0.03); for (let i = 0; i < n; i++) x[i] *= e[i];
|
|
61
|
+
return fromMono(x);
|
|
62
|
+
}
|
|
63
|
+
export function sineBlip(f0, f1, dur, decay = 40, harm = 0.15) {
|
|
64
|
+
const n = N(dur), x = new Float32Array(n), e = adsr(n, 0.001, 0.01, 1, 0.005); let ph = 0;
|
|
65
|
+
for (let i = 0; i < n; i++) { const t = i / SR; const f = f1 + (f0 - f1) * Math.exp(-t * 60); ph += 2 * Math.PI * f / SR; x[i] = (Math.sin(ph) + harm * Math.sin(2 * ph)) * Math.exp(-t * decay) * e[i]; }
|
|
66
|
+
return fromMono(x);
|
|
67
|
+
}
|
|
68
|
+
export function chime(midis, dur = 1.2, spacing = 0.06) {
|
|
69
|
+
const n = N(dur), out = stereo(n);
|
|
70
|
+
midis.forEach((m, k) => { const f = midiHz(m), o = Math.round(k * spacing * SR), p = midis.length > 1 ? -0.3 + 0.6 * k / (midis.length - 1) : 0;
|
|
71
|
+
const l = Math.cos((p + 1) * Math.PI / 4) * Math.SQRT2 * 0.5, r = Math.sin((p + 1) * Math.PI / 4) * Math.SQRT2 * 0.5;
|
|
72
|
+
for (let i = 0; i + o < n; i++) { const t = i / SR; const v = (Math.sin(2 * Math.PI * f * t) + 0.3 * Math.sin(2 * Math.PI * f * 2.01 * t) + 0.12 * Math.sin(2 * Math.PI * f * 3.98 * t)) * Math.exp(-t * 4.5); out.L[i + o] += v * l; out.R[i + o] += v * r; } });
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
export function noiseSweep(dur, f0, f1, rise = true, q = 1.2) {
|
|
76
|
+
const n = N(dur), L = new Float32Array(n), R = new Float32Array(n), blk = 256;
|
|
77
|
+
for (const X of [L, R]) { let x1 = 0, x2 = 0, y1 = 0, y2 = 0;
|
|
78
|
+
for (let s = 0; s < n; s += blk) { const fc = f0 * Math.pow(f1 / f0, s / n); const [b0, b1, b2, a1, a2] = biquadCoefs('bp', fc, q);
|
|
79
|
+
for (let i = s; i < Math.min(n, s + blk); i++) { const xin = randn(); const v = b0 * xin + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2; x2 = x1; x1 = xin; y2 = y1; y1 = v; X[i] = v; } } }
|
|
80
|
+
for (let i = 0; i < n; i++) { const fr = i / n; const e = rise ? fr * fr : Math.pow(1 - fr, 1.5); L[i] *= e; R[i] *= e; }
|
|
81
|
+
return norm({ L, R });
|
|
82
|
+
}
|
|
83
|
+
export function swell(dur, midis) { const b = supersaw(midis, dur, { voices: 3, spread: 0.006, bright: 1800, env: [dur * 0.9, 0.01, 1, dur * 0.08] }); const n = b.L.length; for (let i = 0; i < n; i++) { const g = (i / n) ** 2; b.L[i] *= g; b.R[i] *= g; } return b; }
|
|
84
|
+
export function norm(b, to = 1) { let p = 0; for (let i = 0; i < b.L.length; i++) p = Math.max(p, Math.abs(b.L[i]), Math.abs(b.R[i])); const g = to / (p + 1e-9); for (let i = 0; i < b.L.length; i++) { b.L[i] *= g; b.R[i] *= g; } return b; }
|
|
85
|
+
export function pitchShift(b, semis) { if (!semis) return b; const r = Math.pow(2, semis / 12), n = Math.floor(b.L.length / r), o = stereo(n); for (let i = 0; i < n; i++) { const p = i * r, k = Math.floor(p), f = p - k; for (const c of ['L', 'R']) o[c][i] = (b[c][k] || 0) * (1 - f) + (b[c][k + 1] || 0) * f; } return o; }
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// motioncraft - one entry point for every tool in the skill. Pure Node 18+, no npm install needed.
|
|
3
|
+
import { parseArgs, out, die } from './lib/util.mjs';
|
|
4
|
+
import { doctor, printDoctor } from './lib/doctor.mjs';
|
|
5
|
+
import * as C from './lib/commands.mjs';
|
|
6
|
+
import { qaFile, qaAudio, qaSheet, qaOverlap } from './lib/qa.mjs';
|
|
7
|
+
import {qaFull} from './lib/qa-full.mjs';
|
|
8
|
+
import {qaPixels} from './lib/qa-pixels.mjs';
|
|
9
|
+
import { cmdRender } from './lib/render.mjs';
|
|
10
|
+
import { cmdStyle } from './lib/style.mjs';
|
|
11
|
+
import {storyboard, preview, cache3d} from './lib/phase1.mjs';
|
|
12
|
+
import {autoCues,moodOptions,mixReview} from './lib/phase2.mjs';
|
|
13
|
+
import {templatePlan} from './lib/templates.mjs';
|
|
14
|
+
import {timelineEditor,timelineInit} from './lib/timeline-editor.mjs';
|
|
15
|
+
import {retimeAudio} from './lib/retime-audio.mjs';
|
|
16
|
+
import {checkUpdate} from './lib/check-update.mjs';
|
|
17
|
+
import {gpuPreflight,workerManifest,workerVerify} from './lib/render-worker.mjs';
|
|
18
|
+
|
|
19
|
+
const HELP = `motioncraft <command> [options] (all output is JSON unless noted)
|
|
20
|
+
|
|
21
|
+
check-update compare installed SKILL.md version with latest GitHub release
|
|
22
|
+
doctor [--quick] check the machine; never installs (prints a table)
|
|
23
|
+
new <folder> [--style pi-v2] [--format 1:1|4:5|9:16] [--platform ig-feed|reels|tiktok] [--handle @you] copy the Remotion template
|
|
24
|
+
style list | check [tokens.json] | knobs [tokens.json] --energy 0-1 --density 0-1 --warmth 0-1 --roundness 0-1 --depth 0-1 --camera still|smooth|active
|
|
25
|
+
ref get <url|file> | scenes | frames [--every 0.5] | sheet | motion | colors | audio | text | report [--dir ref]
|
|
26
|
+
audio analyze <file> [--out a.json] [--full] BPM, beats, onsets, key, LUFS, true peak, drop, silences
|
|
27
|
+
vo clean <file> | align <file> [--script script.txt] [--lang id] [--out audio/words.json]
|
|
28
|
+
music presets | make [--preset dreamy] [--duration 52] [--drop 12.9] [--key D] [--bpm 93] [--spec music.json] [--stems] [--out audio]
|
|
29
|
+
music audition [...same] 3 x 16 s variations to choose from
|
|
30
|
+
sfx list | make --cues sfx.json [--bpm 93] [--pack soft-pop] [--density 1] [--out audio/sfx.wav]
|
|
31
|
+
mix --vo vo.wav --music audio/music.wav --sfx audio/sfx.wav [--duration 52] [--out audio/final.wav]
|
|
32
|
+
beat grid --bpm 93 --dur 52.6 | snap cues.json [--grid audio/beatgrid.json] [--maxMs 80]
|
|
33
|
+
timeline init main|product-launch|screen-tutorial|launch|tutorial [--out timeline-launch.json]
|
|
34
|
+
timeline edit --board storyboard.json [--grid audio/beatgrid.json] [--out timeline-editor.html]
|
|
35
|
+
timeline audio --original original.json --edited storyboard.edited.json [--grid beatgrid.edited.json] --music music.wav [--vo vo.wav] [--outDir audio/retimed]
|
|
36
|
+
timeline build [--words audio/words.json] [--grid audio/beatgrid.json] [--out public/timeline.json]
|
|
37
|
+
template launch|tutorial --spec props.json [--dir project] [--duration 45] (validate real frames)
|
|
38
|
+
storyboard --brief brief.json [--out storyboard.json] [--md storyboard.md]
|
|
39
|
+
preview --board storyboard.json [--comp Main] [--scale 0.35] [--out out/preview-stills]
|
|
40
|
+
sfx auto --board storyboard.json [--timeline public/timeline.json] [--maxPerMin 24] [--out audio/auto-cues.json]
|
|
41
|
+
music moods --mood premium|calm|warm|focused|bright
|
|
42
|
+
mix review --file audio/final.wav [--cues audio/auto-cues.json] [--out out/mix-review]; after listening: --approve
|
|
43
|
+
cache3d --comp LogoOnly --start 0 --end 89 --sources src/scenes/Logo.tsx,src/style.json [--scale 1]
|
|
44
|
+
qa full <video> [--outDir out/qa-full] scan every decoded frame of real video for text issues
|
|
45
|
+
qa pixels <video> [--board storyboard.json] [--outDir out/qa-pixels] | overlap [--comp Main] | sheet <video> | audio <file> | file <video> [--maxMb 16] | all <video> [--comp Main] [--maxMb 16]
|
|
46
|
+
gpu probe --dir project [--gl angle|egl|swangle]
|
|
47
|
+
worker manifest --dir project --comp Main --gl angle --out render-job.json | verify --dir project --manifest render-job.json
|
|
48
|
+
render [--require-gpu --gl angle|egl] [--comp Main|MainVertical|ProductLaunch|ScreenTutorial|TimelineLaunch|TimelineTutorial --timeline storyboard.edited.json --grid beatgrid.edited.json --props props.json] [--review out/mix-review/review.json] [--comp Main] [--format 1:1|4:5|9:16] [--all-formats] [--platform ig-feed|reels|tiktok] [--preset wa|ig|yt|master] [--audio audio/final.wav] [--out out/final.mp4]
|
|
49
|
+
`;
|
|
50
|
+
const [cmd, ...rest] = process.argv.slice(2); const a = parseArgs(rest);
|
|
51
|
+
try {
|
|
52
|
+
switch (cmd) {
|
|
53
|
+
case 'check-update': out(await checkUpdate()); break;
|
|
54
|
+
case 'doctor': { const r = doctor(a); if (a.json) out(r); else console.log(printDoctor(r)); break; }
|
|
55
|
+
case 'new': out(C.cmdNew(a)); break;
|
|
56
|
+
case 'style': out(cmdStyle(a)); break;
|
|
57
|
+
case 'ref': out(C.cmdRef(a)); break;
|
|
58
|
+
case 'audio': out(C.cmdAudio(a)); break;
|
|
59
|
+
case 'vo': out(C.cmdVo(a)); break;
|
|
60
|
+
case 'music': out(a._[0]==='moods'?moodOptions(a):C.cmdMusic({ ...a, _: a._[0] === 'make' ? a._.slice(1) : a._ })); break;
|
|
61
|
+
case 'sfx': out(a._[0]==='auto'?autoCues(a):C.cmdSfx({ ...a, _: a._[0] === 'make' ? a._.slice(1) : a._ })); break;
|
|
62
|
+
case 'mix': out(a._[0]==='review'?mixReview(a):C.cmdMix(a)); break;
|
|
63
|
+
case 'beat': out(C.cmdBeat(a)); break;
|
|
64
|
+
case 'timeline': out(a._[0]==='edit'?timelineEditor(a):a._[0]==='init'?timelineInit(a):a._[0]==='audio'?retimeAudio(a):C.cmdTimeline(a)); break;
|
|
65
|
+
case 'render': out(cmdRender(a)); break;
|
|
66
|
+
case 'gpu': out(gpuPreflight(a)); break;
|
|
67
|
+
case 'worker': out(a._[0]==='manifest'?workerManifest(a):a._[0]==='verify'?workerVerify(a):die('worker manifest|verify')); break;
|
|
68
|
+
case 'storyboard': out(storyboard(a)); break;
|
|
69
|
+
case 'template': out(templatePlan(a)); break;
|
|
70
|
+
case 'preview': out(preview(a)); break;
|
|
71
|
+
case 'cache3d': out(cache3d(a)); break;
|
|
72
|
+
case 'qa': { const s = a._[0], f = a._[1];
|
|
73
|
+
if (s === 'full') out(qaFull(a)); else if (s === 'pixels') out(qaPixels(a)); else if (s === 'overlap') out(qaOverlap(a)); else if (s === 'sheet') out(qaSheet(f, a)); else if (s === 'audio') out(qaAudio(f)); else if (s === 'file') out(qaFile(f, a));
|
|
74
|
+
else if (s === 'all') { const r = { file: qaFile(f, a), audio: qaAudio(f), sheet: qaSheet(f, a), overlap: a.comp || a.dir ? qaOverlap(a) : 'skipped (pass --comp/--dir to run inside the project)' }; r.pass = r.file.pass && r.audio.pass && (typeof r.overlap === 'string' || r.overlap.pass); out(r); }
|
|
75
|
+
else die('usage: qa overlap|sheet|audio|file|all'); break; }
|
|
76
|
+
case undefined: case 'help': case '--help': case '-h': console.log(HELP); break;
|
|
77
|
+
default: die(`unknown command "${cmd}"`, 'run: node scripts/motioncraft.mjs help');
|
|
78
|
+
}
|
|
79
|
+
} catch (e) { die(e.message || String(e)); }
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"""Word timestamps with faster-whisper. Usage: whisper_words.py audio out.json [lang|auto] [model]"""
|
|
2
|
+
import json, sys
|
|
3
|
+
from faster_whisper import WhisperModel
|
|
4
|
+
audio, out = sys.argv[1], sys.argv[2]
|
|
5
|
+
lang = None if len(sys.argv) < 4 or sys.argv[3] == 'auto' else sys.argv[3]
|
|
6
|
+
model = WhisperModel(sys.argv[4] if len(sys.argv) > 4 else 'small', device='auto', compute_type='int8')
|
|
7
|
+
segs, info = model.transcribe(audio, language=lang, word_timestamps=True, vad_filter=True)
|
|
8
|
+
words, text = [], []
|
|
9
|
+
for s in segs:
|
|
10
|
+
text.append(s.text.strip())
|
|
11
|
+
for w in (s.words or []):
|
|
12
|
+
words.append({'w': w.word.strip(), 'start': round(w.start, 3), 'end': round(w.end, 3), 'p': round(w.probability, 2)})
|
|
13
|
+
json.dump({'mode': 'word', 'language': info.language, 'text': ' '.join(text), 'words': words}, open(out, 'w'), ensure_ascii=False, indent=1)
|