primocode 10.17.1 → 11.0.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/LICENSES/opencode-MIT.txt +24 -0
- package/LICENSES/pptxgenjs-MIT.txt +31 -0
- package/README.md +50 -20
- package/agentes/acessibilidade.md +10 -0
- package/agentes/ambiente.md +10 -0
- package/agentes/api.md +10 -0
- package/agentes/backend.md +10 -0
- package/agentes/copy.md +10 -0
- package/agentes/css-layout.md +10 -0
- package/agentes/dados.md +10 -0
- package/agentes/depuracao.md +10 -0
- package/agentes/design.md +10 -0
- package/agentes/docs.md +10 -0
- package/agentes/frontend.md +10 -0
- package/agentes/geral/capacidades/arquivos.json +132 -0
- package/agentes/geral/capacidades/codigo.json +132 -0
- package/agentes/geral/capacidades/dados.json +126 -0
- package/agentes/geral/capacidades/depuracao.json +126 -0
- package/agentes/geral/capacidades/escrita.json +126 -0
- package/agentes/geral/capacidades/git.json +126 -0
- package/agentes/geral/capacidades/pesquisa.json +126 -0
- package/agentes/geral/capacidades/seguranca.json +132 -0
- package/agentes/geral/capacidades/shell.json +132 -0
- package/agentes/geral/capacidades/web.json +126 -0
- package/agentes/git-pr.md +10 -0
- package/agentes/indice.md +86 -0
- package/agentes/nextjs.md +10 -0
- package/agentes/node.md +10 -0
- package/agentes/performance.md +10 -0
- package/agentes/pesquisa.md +10 -0
- package/agentes/python.md +10 -0
- package/agentes/react.md +10 -0
- package/agentes/refatoracao.md +10 -0
- package/agentes/revisor.md +10 -0
- package/agentes/seguranca.md +10 -0
- package/agentes/sql.md +10 -0
- package/agentes/testes.md +10 -0
- package/agentes/typescript.md +10 -0
- package/agentes/ux.md +10 -0
- package/bin/primocode.js +1112 -275
- package/editor/THIRD_PARTY_NOTICES.md +3 -3
- package/editor/assets/baixar.json +8 -0
- package/editor/helpers/camera_viva.py +67 -4
- 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 +464 -26
- package/lib/afirmacoes.js +56 -0
- package/lib/agendar.js +124 -0
- package/lib/agentes/index.js +146 -0
- package/lib/agentes/nucleo.js +18 -0
- package/lib/backup-banco.js +121 -0
- package/lib/boas-vindas.js +4 -3
- package/lib/catalogo.js +20 -4
- package/lib/chave-exposta.js +61 -0
- package/lib/checkpoint-git.js +7 -4
- package/lib/checkpoint.js +120 -3
- package/lib/cli/review.js +64 -0
- package/lib/cli/subcomandos.js +34 -0
- package/lib/cli/tentativas.js +107 -0
- package/lib/cli/util.js +51 -0
- package/lib/comandos-extra.js +73 -4
- 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-maquina.js +165 -0
- package/lib/editor-pro.js +167 -23
- package/lib/encolheu.js +33 -0
- package/lib/entrada.js +1 -1
- package/lib/entregaveis/cli.js +26 -0
- package/lib/entregaveis/especialistas.js +50 -0
- package/lib/entregaveis/nucleo.js +111 -0
- package/lib/entregaveis/slides.js +221 -0
- 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/materiais.js +172 -0
- 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 +232 -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 +1084 -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 +257 -0
- package/lib/partes.js +39 -0
- package/lib/passagem.js +30 -1
- package/lib/perigo.js +74 -6
- package/lib/placar.js +173 -0
- package/lib/plano-previo.js +53 -0
- package/lib/planos.js +1 -1
- package/lib/plugin/autoteste.js +99 -0
- package/lib/plugin/edicao-visual.js +133 -0
- package/lib/plugin/pesquisar.js +92 -0
- package/lib/plugin/preview-cli.js +38 -0
- package/lib/plugin/preview.js +89 -0
- package/lib/plugin/tunel.js +27 -0
- 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/review.js +134 -0
- package/lib/saida.js +83 -0
- package/lib/segredos.js +103 -0
- package/lib/session/compactacao.js +124 -0
- package/lib/statusline.js +52 -0
- package/lib/team.js +317 -0
- package/lib/tool/diagnostico.js +100 -0
- package/lib/tool/perguntar.js +60 -0
- package/lib/tool/reparar-entrada.js +66 -0
- package/lib/tool/web.js +102 -0
- package/lib/tools.js +104 -22
- package/lib/trava.js +155 -0
- package/lib/ui.js +43 -6
- 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/materiais/saas-linear/base.ts +84 -0
- package/materiais/saas-linear/camera/Camera.tsx +38 -0
- package/materiais/saas-linear/fontes/OFL-Inter.txt +93 -0
- package/materiais/saas-linear/fontes/OFL-Newsreader.txt +93 -0
- package/materiais/saas-linear/fontes/inter-400.woff2 +0 -0
- package/materiais/saas-linear/fontes/inter-600.woff2 +0 -0
- package/materiais/saas-linear/fontes/newsreader-400.woff2 +0 -0
- package/materiais/saas-linear/formas/Agenda.tsx +46 -0
- package/materiais/saas-linear/formas/CaixaPrompt.tsx +41 -0
- package/materiais/saas-linear/formas/CartoesIntegracao.tsx +57 -0
- package/materiais/saas-linear/formas/Cursor.tsx +40 -0
- package/materiais/saas-linear/formas/Menu.tsx +46 -0
- package/materiais/saas-linear/formas/Monitor.tsx +28 -0
- package/materiais/saas-linear/paleta.json +18 -0
- package/materiais/saas-linear/pecas.json +590 -0
- package/materiais/saas-linear/regras.md +40 -0
- package/materiais/saas-linear/sons/Som.tsx +39 -0
- package/materiais/saas-linear/sons/assinatura.mp3 +0 -0
- package/materiais/saas-linear/sons/clique.mp3 +0 -0
- package/materiais/saas-linear/sons/impacto.mp3 +0 -0
- package/materiais/saas-linear/sons/pop-cartao.mp3 +0 -0
- package/materiais/saas-linear/sons/pop-palavra.mp3 +0 -0
- package/materiais/saas-linear/sons/subida.mp3 +0 -0
- package/materiais/saas-linear/sons/swoosh.mp3 +0 -0
- package/materiais/saas-linear/sons/trilha.mp3 +0 -0
- package/materiais/saas-linear/sons/whoosh-entra.mp3 +0 -0
- package/materiais/saas-linear/sons/whoosh-sai.mp3 +0 -0
- package/materiais/saas-linear/texturas/Fundo.tsx +18 -0
- package/materiais/saas-linear/texturas/Particulas.tsx +22 -0
- package/materiais/saas-linear/tipografia/FraseSerifa.tsx +25 -0
- package/materiais/saas-linear/tipografia/Marca.tsx +20 -0
- package/materiais/saas-linear/tipografia/MarcaFinal.tsx +22 -0
- package/materiais/saas-linear/tipografia/Saudacao.tsx +27 -0
- package/materiais/saas-linear/transicoes/Cena.tsx +38 -0
- package/materiais/saas-linear/transicoes/CorteImpacto.tsx +16 -0
- package/package.json +6 -1
- package/skills/deck-conferido/SKILL.md +29 -0
- 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/vendor/pptxgenjs/carregar.js +12 -0
- package/vendor/pptxgenjs/jszip.min.js +13 -0
- package/vendor/pptxgenjs/pptxgen.cjs.js +7370 -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,23 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# motioncraft bootstrap check (Mac/Linux). Works without Node. Detects only - never installs.
|
|
3
|
+
say() { printf '%s\n' "$*"; }
|
|
4
|
+
ok() { printf ' \342\234\224 %-10s %s\n' "$1" "$2"; }
|
|
5
|
+
miss() { printf ' \342\234\226 %-10s missing -> %s\n' "$1" "$2"; }
|
|
6
|
+
OS=$(uname -s); PM=""
|
|
7
|
+
if [ "$OS" = "Darwin" ]; then command -v brew >/dev/null 2>&1 && PM=brew; else
|
|
8
|
+
for p in apt-get dnf pacman; do command -v $p >/dev/null 2>&1 && PM=$p && break; done; fi
|
|
9
|
+
inst() { case "$PM:$1" in
|
|
10
|
+
brew:node) echo "brew install node";; brew:ffmpeg) echo "brew install ffmpeg";;
|
|
11
|
+
apt-get:node) echo "see https://nodejs.org (or: sudo apt-get install -y nodejs npm)";; apt-get:ffmpeg) echo "sudo apt-get install -y ffmpeg";;
|
|
12
|
+
dnf:node) echo "sudo dnf install nodejs";; dnf:ffmpeg) echo "sudo dnf install ffmpeg";;
|
|
13
|
+
pacman:node) echo "sudo pacman -S nodejs npm";; pacman:ffmpeg) echo "sudo pacman -S ffmpeg";;
|
|
14
|
+
*) [ "$1" = node ] && echo "https://nodejs.org (LTS)" || echo "https://ffmpeg.org/download.html";; esac; }
|
|
15
|
+
say "motioncraft bootstrap ($OS, package manager: ${PM:-none})"
|
|
16
|
+
if command -v node >/dev/null 2>&1; then
|
|
17
|
+
V=$(node -v); MAJ=$(echo "$V" | sed 's/v\([0-9]*\).*/\1/')
|
|
18
|
+
if [ "$MAJ" -ge 18 ]; then ok node "$V"; else miss node "$(inst node) (found $V, need 18+)"; fi
|
|
19
|
+
else miss node "$(inst node)"; fi
|
|
20
|
+
command -v ffmpeg >/dev/null 2>&1 && ok ffmpeg "$(ffmpeg -version | head -1 | cut -c1-40)" || miss ffmpeg "$(inst ffmpeg) (optional: Remotion ships its own)"
|
|
21
|
+
say ""
|
|
22
|
+
say "Nothing was installed. Ask the user before running any install command above."
|
|
23
|
+
if command -v node >/dev/null 2>&1; then say "Full check: node \"$(dirname "$0")/motioncraft.mjs\" doctor"; fi
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// Pure-JS audio analysis: loudness, true peak, BPM + beat grid, onsets, key, drop, silences.
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import * as D from './dsp.mjs';
|
|
4
|
+
|
|
5
|
+
function fft(re, im) { // in-place radix-2
|
|
6
|
+
const n = re.length; for (let i = 1, j = 0; i < n; i++) { let b = n >> 1; for (; j & b; b >>= 1) j ^= b; j ^= b; if (i < j) { [re[i], re[j]] = [re[j], re[i]]; [im[i], im[j]] = [im[j], im[i]]; } }
|
|
7
|
+
for (let len = 2; len <= n; len <<= 1) { const a = -2 * Math.PI / len, wr = Math.cos(a), wi = Math.sin(a);
|
|
8
|
+
for (let i = 0; i < n; i += len) { let cr = 1, ci = 0; for (let k = 0; k < len / 2; k++) { const ur = re[i + k], ui = im[i + k], vr = re[i + k + len / 2] * cr - im[i + k + len / 2] * ci, vi = re[i + k + len / 2] * ci + im[i + k + len / 2] * cr;
|
|
9
|
+
re[i + k] = ur + vr; im[i + k] = ui + vi; re[i + k + len / 2] = ur - vr; im[i + k + len / 2] = ui - vi; const t = cr * wr - ci * wi; ci = cr * wi + ci * wr; cr = t; } } }
|
|
10
|
+
}
|
|
11
|
+
function spectrogram(mono, sr, N = 2048, hop = 512) {
|
|
12
|
+
const win = new Float32Array(N).map((_, i) => 0.5 - 0.5 * Math.cos(2 * Math.PI * i / N)); const frames = [];
|
|
13
|
+
for (let s = 0; s + N <= mono.length; s += hop) { const re = new Float64Array(N), im = new Float64Array(N); for (let i = 0; i < N; i++) re[i] = mono[s + i] * win[i]; fft(re, im);
|
|
14
|
+
const mag = new Float32Array(N / 2); for (let k = 0; k < N / 2; k++) mag[k] = Math.hypot(re[k], im[k]); frames.push(mag); }
|
|
15
|
+
return { frames, hop, N, sr };
|
|
16
|
+
}
|
|
17
|
+
function onsetEnvelope(sp) { // spectral flux on log magnitude
|
|
18
|
+
const env = new Float32Array(sp.frames.length); let prev = null;
|
|
19
|
+
sp.frames.forEach((m, i) => { const lm = m.map((v) => Math.log1p(v * 10)); if (prev) { let s = 0; for (let k = 1; k < lm.length; k++) { const d = lm[k] - prev[k]; if (d > 0) s += d; } env[i] = s; } prev = lm; });
|
|
20
|
+
const mx = Math.max(...env) || 1; return env.map((v) => v / mx);
|
|
21
|
+
}
|
|
22
|
+
function tempo(env, fr) { // autocorrelation over 60-180 bpm, weighted toward 90-120
|
|
23
|
+
let best = 0, bestBpm = 100; const scores = [];
|
|
24
|
+
for (let bpm = 60; bpm <= 180; bpm += 0.25) { const lag = 60 * fr / bpm; let s = 0; for (let i = Math.ceil(lag); i < env.length; i++) { const j = i - lag, k = Math.floor(j), f = j - k; s += env[i] * (env[k] * (1 - f) + env[k + 1] * f); }
|
|
25
|
+
const w = Math.exp(-0.5 * Math.pow(Math.log2(bpm / 105) / 0.6, 2)); scores.push([bpm, s * w]); if (s * w > best) { best = s * w; bestBpm = bpm; } }
|
|
26
|
+
return bestBpm;
|
|
27
|
+
}
|
|
28
|
+
function beatPhase(env, fr, bpm) { const period = 60 * fr / bpm; let best = 0, bp = 0; for (let ph = 0; ph < period; ph += 0.5) { let s = 0; for (let t = ph; t < env.length; t += period) s += env[Math.round(t)] || 0; if (s > best) { best = s; bp = ph; } } return bp / fr; }
|
|
29
|
+
function pickOnsets(env, fr) { const out = []; const w = 3; for (let i = w; i < env.length - w; i++) { let mean = 0; for (let k = i - 8; k <= i + 8; k++) mean += env[Math.max(0, Math.min(env.length - 1, k))]; mean /= 17; let isMax = true; for (let k = i - w; k <= i + w; k++) if (env[k] > env[i]) isMax = false; if (isMax && env[i] > mean + 0.08 && env[i] > 0.12) out.push(+(i / fr).toFixed(3)); } return out; }
|
|
30
|
+
const MAJ = [6.35, 2.23, 3.48, 2.33, 4.38, 4.09, 2.52, 5.19, 2.39, 3.66, 2.29, 2.88], MIN = [6.33, 2.68, 3.52, 5.38, 2.6, 3.53, 2.54, 4.75, 3.98, 2.69, 3.34, 3.17];
|
|
31
|
+
const NAMES = ['C', 'C#', 'D', 'Eb', 'E', 'F', 'F#', 'G', 'Ab', 'A', 'Bb', 'B'];
|
|
32
|
+
function key(sp) { // Krumhansl-Schmuckler on a chroma average
|
|
33
|
+
const ch = new Float64Array(12); const bin = sp.sr / sp.N;
|
|
34
|
+
for (const m of sp.frames) for (let k = 3; k < m.length; k++) { const f = k * bin; if (f < 60 || f > 2000) continue; const pc = ((Math.round(12 * Math.log2(f / 440)) % 12) + 12 + 9) % 12; ch[pc] += m[k]; }
|
|
35
|
+
const corr = (p, r) => { const x = [...Array(12)].map((_, i) => ch[(i + r) % 12]); const mx = x.reduce((a, b) => a + b) / 12, mp = p.reduce((a, b) => a + b) / 12; let n = 0, dx = 0, dp = 0; for (let i = 0; i < 12; i++) { n += (x[i] - mx) * (p[i] - mp); dx += (x[i] - mx) ** 2; dp += (p[i] - mp) ** 2; } return n / Math.sqrt(dx * dp + 1e-12); };
|
|
36
|
+
let best = { c: -2 }; for (let r = 0; r < 12; r++) { const a = corr(MAJ, r), b = corr(MIN, r); if (a > best.c) best = { c: a, key: NAMES[r] + ' major' }; if (b > best.c) best = { c: b, key: NAMES[r] + ' minor' }; }
|
|
37
|
+
return { key: best.key, confidence: +best.c.toFixed(2) };
|
|
38
|
+
}
|
|
39
|
+
function rmsCurve(mono, sr, win = 0.5) { const n = Math.round(win * sr), out = []; for (let s = 0; s + n <= mono.length; s += n) { let e = 0; for (let i = s; i < s + n; i++) e += mono[i] * mono[i]; out.push(D.toDb(Math.sqrt(e / n))); } return out; }
|
|
40
|
+
export function silences(mono, sr, thrDb = -38, minDur = 0.25) { const hop = Math.round(0.01 * sr), out = []; let st = null;
|
|
41
|
+
for (let s = 0; s + hop <= mono.length; s += hop) { let e = 0; for (let i = s; i < s + hop; i++) e += mono[i] * mono[i]; const dbv = D.toDb(Math.sqrt(e / hop)); const t = s / sr;
|
|
42
|
+
if (dbv < thrDb) { if (st == null) st = t; } else if (st != null) { if (t - st >= minDur) out.push([+st.toFixed(3), +t.toFixed(3)]); st = null; } }
|
|
43
|
+
if (st != null && mono.length / sr - st >= minDur) out.push([+st.toFixed(3), +(mono.length / sr).toFixed(3)]); return out; }
|
|
44
|
+
|
|
45
|
+
export function analyze(wavPath, { withKey = true } = {}) {
|
|
46
|
+
const { buf, sr } = D.readWav(wavPath, fs); const n = buf.L.length; const mono = new Float32Array(n); for (let i = 0; i < n; i++) mono[i] = (buf.L[i] + buf.R[i]) / 2;
|
|
47
|
+
const dur = n / sr; const lufs = sr === 48000 ? D.lufs(buf) : null; const tp = D.truePeakDb(buf);
|
|
48
|
+
// downsample to ~22 kHz for rhythm/key work
|
|
49
|
+
const step = Math.max(1, Math.round(sr / 22050)); const ds = new Float32Array(Math.floor(n / step)); for (let i = 0; i < ds.length; i++) ds[i] = mono[i * step]; const dsr = sr / step;
|
|
50
|
+
const sp = spectrogram(ds, dsr); const fr = dsr / sp.hop; const env = onsetEnvelope(sp);
|
|
51
|
+
const bpm = +tempo(env, fr).toFixed(2); const phase = beatPhase(env, fr, bpm); const beat = 60 / bpm; const beats = []; for (let t = phase; t < dur; t += beat) beats.push(+t.toFixed(3));
|
|
52
|
+
const onsets = pickOnsets(env, fr); const rms = rmsCurve(mono, sr);
|
|
53
|
+
let drop = null, bestJump = 0; for (let i = 4; i < rms.length - 2; i++) { const before = (rms[i - 4] + rms[i - 3] + rms[i - 2] + rms[i - 1]) / 4, after = (rms[i] + rms[i + 1]) / 2; if (after - before > bestJump) { bestJump = after - before; drop = i * 0.5; } }
|
|
54
|
+
const res = { file: wavPath, duration: +dur.toFixed(3), sampleRate: sr, lufs: lufs == null ? null : +lufs.toFixed(2), truePeakDb: +tp.toFixed(2), bpm, beatSeconds: +beat.toFixed(4), firstBeat: +phase.toFixed(3),
|
|
55
|
+
beats, bars: beats.filter((_, i) => i % 4 === 0), onsets, drop: drop == null ? null : { t: +drop.toFixed(2), jumpDb: +bestJump.toFixed(1) }, silences: silences(mono, sr), energyDbPerHalfSecond: rms.map((v) => +v.toFixed(1)) };
|
|
56
|
+
if (withKey) Object.assign(res, key(sp));
|
|
57
|
+
return res;
|
|
58
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import https from 'node:https';
|
|
4
|
+
import {SKILL_DIR} from './util.mjs';
|
|
5
|
+
|
|
6
|
+
const API = 'https://api.github.com/repos/ahmdd4vd/MotionCraft';
|
|
7
|
+
const RELEASES = 'https://github.com/ahmdd4vd/MotionCraft/releases';
|
|
8
|
+
export function installedVersion(skillDir = SKILL_DIR) {
|
|
9
|
+
const file = fs.readFileSync(path.join(skillDir, 'SKILL.md'), 'utf8');
|
|
10
|
+
const match = file.match(/^metadata:\s*\n(?:^[ \t]+.*\n)*?^[ \t]+version:\s*["']?([^\s"']+)/m);
|
|
11
|
+
if (!match) throw Error('Installed SKILL.md has no metadata.version; cannot compare versions');
|
|
12
|
+
return match[1];
|
|
13
|
+
}
|
|
14
|
+
export function parseVersion(value) {
|
|
15
|
+
const m = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?$/.exec(value);
|
|
16
|
+
if (!m) throw Error(`Unsupported version: ${value}`);
|
|
17
|
+
return {parts: m.slice(1,4).map(Number), pre: m[4] || null};
|
|
18
|
+
}
|
|
19
|
+
export function compareVersions(a,b) {
|
|
20
|
+
const x=parseVersion(a),y=parseVersion(b);
|
|
21
|
+
for(let i=0;i<3;i++) if(x.parts[i]!==y.parts[i]) return Math.sign(x.parts[i]-y.parts[i]);
|
|
22
|
+
if(x.pre===y.pre)return 0;
|
|
23
|
+
if(!x.pre)return 1;if(!y.pre)return -1;
|
|
24
|
+
const xa=x.pre.split('.'),ya=y.pre.split('.');
|
|
25
|
+
for(let i=0;i<Math.max(xa.length,ya.length);i++){
|
|
26
|
+
if(xa[i]===undefined)return -1;if(ya[i]===undefined)return 1;
|
|
27
|
+
if(xa[i]===ya[i])continue;
|
|
28
|
+
const xn=/^\d+$/.test(xa[i]),yn=/^\d+$/.test(ya[i]);
|
|
29
|
+
if(xn&&yn)return Math.sign(Number(xa[i])-Number(ya[i]));
|
|
30
|
+
if(xn!==yn)return xn?-1:1;
|
|
31
|
+
return xa[i]<ya[i]?-1:1;
|
|
32
|
+
}
|
|
33
|
+
return 0;
|
|
34
|
+
}
|
|
35
|
+
export function getJson(url) {
|
|
36
|
+
return new Promise((resolve,reject)=>{
|
|
37
|
+
const req=https.get(url,{headers:{'User-Agent':'MotionCraft-update-check','Accept':'application/vnd.github+json'},timeout:8000},res=>{
|
|
38
|
+
let data='';res.setEncoding('utf8');
|
|
39
|
+
res.on('data',part=>{data+=part;if(data.length>1024*1024)res.destroy(Error('GitHub response too large'));});
|
|
40
|
+
res.on('end',()=>{
|
|
41
|
+
if(res.statusCode!==200)return reject(Error(`GitHub API returned HTTP ${res.statusCode}`));
|
|
42
|
+
try{resolve(JSON.parse(data));}catch{reject(Error('Invalid GitHub response'));}
|
|
43
|
+
});
|
|
44
|
+
});req.on('timeout',()=>req.destroy(Error('GitHub request timed out')));req.on('error',reject);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export async function checkUpdate({skillDir=SKILL_DIR,fetchJson=getJson}={}){
|
|
48
|
+
const installed=installedVersion(skillDir);
|
|
49
|
+
parseVersion(installed);
|
|
50
|
+
let tag,source;
|
|
51
|
+
try {
|
|
52
|
+
const release=await fetchJson(`${API}/releases/latest`);
|
|
53
|
+
if(!release.tag_name||release.draft||release.prerelease)throw Error('No stable release');
|
|
54
|
+
tag=release.tag_name;source='release';
|
|
55
|
+
} catch(err){
|
|
56
|
+
if(!/HTTP 404|No stable release/.test(err.message))throw err;
|
|
57
|
+
// No published release: use the newest stable semantic tag, not API creation order.
|
|
58
|
+
const tags=await fetchJson(`${API}/tags?per_page=100`);
|
|
59
|
+
const stable=tags.map(t=>t.name).filter(t=>/^v?\d+\.\d+\.\d+$/.test(t));
|
|
60
|
+
if(!stable.length)throw Error('No stable release or tag found');
|
|
61
|
+
stable.sort(compareVersions);tag=stable.at(-1);source='tag';
|
|
62
|
+
}
|
|
63
|
+
parseVersion(tag);
|
|
64
|
+
const updateAvailable=compareVersions(installed,tag)<0;
|
|
65
|
+
return {installed,latest:tag,source,updateAvailable,latestUrl:`${RELEASES}/tag/${encodeURIComponent(tag)}`,instruction:updateAvailable?'From your agent environment, run: npx skills add ahmdd4vd/motioncraft (then re-run check-update).':'Already up to date. The version in SKILL.md is the installed version; unreleased changes on main are not counted.'};
|
|
66
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import * as D from './dsp.mjs';
|
|
5
|
+
import { renderMusic, varietyCheck, validateSpec, resolveSpec, PRESETS, PROGRESSIONS } from './music.mjs';
|
|
6
|
+
import { renderSfx, SFX_TYPES, PACKS } from './sfx.mjs';
|
|
7
|
+
import { analyze, silences } from './audio.mjs';
|
|
8
|
+
import { ff, probe, toWav48, has, run, die, log, readJson, writeJson, mkdirp, workDir, stateDir, SKILL_DIR, ffmpeg } from './util.mjs';
|
|
9
|
+
|
|
10
|
+
import {geometry, FORMATS} from '../../assets/template/src/lib/format.mjs';
|
|
11
|
+
|
|
12
|
+
// ---------------- project
|
|
13
|
+
export function cmdNew(a) {
|
|
14
|
+
const dest = path.resolve(a._[0] || 'my-video'); if (fs.existsSync(dest) && fs.readdirSync(dest).length) die(`${dest} is not empty`);
|
|
15
|
+
fs.cpSync(path.join(SKILL_DIR, 'assets', 'template'), dest, { recursive: true });
|
|
16
|
+
const style = a.style || 'pi-v2'; const sp = path.join(SKILL_DIR, 'styles', style, 'tokens.json'); if (!fs.existsSync(sp)) die(`unknown style ${style}`, `choose one of: ${fs.readdirSync(path.join(SKILL_DIR, 'styles')).join(', ')}`);
|
|
17
|
+
fs.copyFileSync(sp, path.join(dest, 'src', 'style.json'));
|
|
18
|
+
const format=a.format || (a.vertical?'9:16':'16:9');const g=geometry(format,a.platform);
|
|
19
|
+
{ const j=readJson(path.join(dest,'src','style.json'));j.canvas={...j.canvas,width:g.width,height:g.height};writeJson(path.join(dest,'src','style.json'),j); }
|
|
20
|
+
{ const t = readJson(path.join(dest, 'src', 'style.json')); const mod = (n) => n.replace(/[^A-Za-z0-9]/g, ''); // load the style's Google Fonts
|
|
21
|
+
const wts = [...new Set(Object.values(t.font.weights || {}).map(String).concat(['400', '500']))].sort();
|
|
22
|
+
fs.writeFileSync(path.join(dest, 'src', 'lib', 'fonts.ts'), `// Generated by motioncraft new from style.json. To change fonts: import another family from @remotion/google-fonts
|
|
23
|
+
// (or use @remotion/fonts with a local file in public/fonts) AND update style.json font.display / font.mono.
|
|
24
|
+
import {loadFont as loadDisplay} from '@remotion/google-fonts/${mod(t.font.display)}';
|
|
25
|
+
import {loadFont as loadMono} from '@remotion/google-fonts/${mod(t.font.mono)}';
|
|
26
|
+
loadDisplay('normal', {weights: ${JSON.stringify(wts)}, subsets: ['latin']});
|
|
27
|
+
loadMono('normal', {weights: ['400', '500'], subsets: ['latin']});
|
|
28
|
+
`); }
|
|
29
|
+
writeJson(path.join(dest, 'mc.config.json'), { title: a.title || path.basename(dest), style, handle: a.handle || '@yourhandle', format, platform:g.platform, fps: 30 });
|
|
30
|
+
return { created: dest, style, next: [`cd ${dest}`, 'ASK the user, then: npm install', 'npm run studio (preview)'] };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// ---------------- music / sfx / mix
|
|
34
|
+
export function cmdMusic(a) {
|
|
35
|
+
const sub = a._[0];
|
|
36
|
+
if (sub === 'presets') return { presets: PRESETS, progressions: Object.fromEntries(Object.entries(PROGRESSIONS).map(([k, v]) => [k, v.mood])) };
|
|
37
|
+
const spec = a.spec ? readJson(path.resolve(a.spec)) : {}; if (a.preset) spec.preset = a.preset;
|
|
38
|
+
for (const k of ['bpm', 'duration', 'drop', 'swing', 'seed']) if (a[k] != null) spec[k] = +a[k];
|
|
39
|
+
for (const k of ['key', 'lead', 'comp', 'drums', 'progression']) if (a[k] != null) spec[k] = a[k];
|
|
40
|
+
const s = resolveSpec(spec); const issues = validateSpec(s); if (issues.length) die('music spec rejected:\n - ' + issues.join('\n - '), 'fix the values or pick a preset: node scripts/motioncraft.mjs music presets');
|
|
41
|
+
const hist = path.join(os.homedir(), '.motioncraft', 'music-history.json'); const H = readJson(hist, []);
|
|
42
|
+
const v = varietyCheck(s, H[H.length - 1]); if (!v.ok && !a.force) die(`too similar to the last track (${v.why.join(', ')}). Change at least 2 of key / bpm (>=6) / progression / lead.`, 'or pass --force if the user explicitly wants the same vibe');
|
|
43
|
+
const outDir = path.resolve(a.out || 'audio'); mkdirp(outDir);
|
|
44
|
+
if (sub === 'audition') { // 3 short variations
|
|
45
|
+
const res = []; const keys = ['C', 'D', 'F', 'G', 'A', 'Bb']; const progs = Object.keys(PROGRESSIONS);
|
|
46
|
+
for (let i = 0; i < 3; i++) { const vs = { ...spec, duration: 16, drop: 5, key: keys[(keys.indexOf(s.key) + 1 + i * 2) % keys.length], progression: progs[(progs.indexOf(s.progression) + 1 + i) % progs.length], bpm: s.bpm + [-4, 0, 5][i], chords: undefined, seed: 7 + i };
|
|
47
|
+
const r = renderMusic(vs); const m = D.master(r.mix); const f = path.join(outDir, `audition_${i + 1}.wav`); D.writeWav(f, m.buf, 16, fs); res.push({ file: f, key: r.spec.key, bpm: r.spec.bpm, progression: r.spec.progression }); }
|
|
48
|
+
return { auditions: res, next: 'let the user pick one, then run `music make` with those values' };
|
|
49
|
+
}
|
|
50
|
+
const r = renderMusic(s); const m = D.master(r.mix, a.lufs ? +a.lufs : -14, -1);
|
|
51
|
+
D.writeWav(path.join(outDir, 'music.wav'), m.buf, 24, fs);
|
|
52
|
+
if (a.stems) for (const [k, b] of Object.entries(r.stems)) D.writeWav(path.join(outDir, `stem_${k}.wav`), b, 16, fs);
|
|
53
|
+
const grid = { bpm: r.spec.bpm, beatSeconds: 60 / r.spec.bpm, beats: r.beats, sections: r.markers, duration: r.dur };
|
|
54
|
+
writeJson(path.join(outDir, 'beatgrid.json'), grid);
|
|
55
|
+
mkdirp(path.dirname(hist)); H.push({ key: s.key, bpm: s.bpm, chords: s.chords, lead: s.lead, at: new Date().toISOString() }); writeJson(hist, H.slice(-20));
|
|
56
|
+
return { music: path.join(outDir, 'music.wav'), beatgrid: path.join(outDir, 'beatgrid.json'), lufs: +m.lufs.toFixed(2), truePeak: +m.truePeak.toFixed(2), duration: +r.dur.toFixed(2), sections: r.markers, spec: { preset: s.preset, bpm: s.bpm, key: s.key, progression: s.progression, lead: s.lead } };
|
|
57
|
+
}
|
|
58
|
+
export function cmdSfx(a) {
|
|
59
|
+
if (a._[0] === 'list') return { types: SFX_TYPES, packs: Object.keys(PACKS) };
|
|
60
|
+
const cuesFile = a.cues || (a.timeline ? null : 'sfx.json'); let cues = [], dur = +a.duration || 0, bpm = a.bpm ? +a.bpm : null;
|
|
61
|
+
if (a.timeline) { const tl = readJson(path.resolve(a.timeline)); cues = tl.sfx || []; dur = dur || tl.duration; bpm = bpm || tl.bpm; }
|
|
62
|
+
else { const j = readJson(path.resolve(cuesFile)); if (!j) die(`cannot read ${cuesFile}`, 'pass --cues file.json ([{type,t}]) or --timeline timeline.json'); cues = Array.isArray(j) ? j : j.cues; dur = dur || j.duration || Math.max(...cues.map((c) => c.t)) + 3; }
|
|
63
|
+
const r = renderSfx(cues, dur, { bpm, pack: a.pack || 'soft-pop', density: a.density ? +a.density : 1 });
|
|
64
|
+
const o = path.resolve(a.out || 'audio/sfx.wav'); mkdirp(path.dirname(o)); D.writeWav(o, r.buf, 24, fs);
|
|
65
|
+
return { sfx: o, cues: cues.length, perMinute: Math.round(cues.length / (dur / 60)), warnings: r.warnings };
|
|
66
|
+
}
|
|
67
|
+
export function cmdMix(a) {
|
|
68
|
+
const load = (p) => p ? D.readWav(toWav48(path.resolve(p), path.basename(p) + '.wav'), fs).buf : null;
|
|
69
|
+
const vo = load(a.vo), music = load(a.music), sfx = load(a.sfx); if (!vo && !music) die('need at least --vo or --music');
|
|
70
|
+
const n = Math.max(...[vo, music, sfx].filter(Boolean).map((b) => b.L.length)); const mix = D.stereo(n);
|
|
71
|
+
let voP = null; if (vo) { voP = D.compress(D.filt(vo, 'hp', 80), -20, 3, 5, 120); D.mixInto(mix, voP); }
|
|
72
|
+
if (music) { let m = D.gain(D.clone(music), D.db(a.musicDb ? +a.musicDb : -6));
|
|
73
|
+
if (voP) { // duck music under VO + dip 1-4 kHz so words stay clear
|
|
74
|
+
const env = new Float32Array(n); const at = Math.exp(-1 / (0.01 * D.SR)), rt = Math.exp(-1 / (0.35 * D.SR)); let e = 0;
|
|
75
|
+
for (let i = 0; i < n; i++) { const l = i < voP.L.length ? Math.abs(voP.L[i]) + Math.abs(voP.R[i]) : 0; e = l > e ? at * e + (1 - at) * l : rt * e + (1 - rt) * l; env[i] = e; }
|
|
76
|
+
const dip = D.filt(m, 'peak', 2500, 0.8, -3);
|
|
77
|
+
for (let i = 0; i < m.L.length; i++) { const k = Math.min(1, env[i] * 12); const g = 1 - k * (1 - D.db(-7)); m.L[i] = (m.L[i] * (1 - k) + dip.L[i] * k) * g; m.R[i] = (m.R[i] * (1 - k) + dip.R[i] * k) * g; } }
|
|
78
|
+
D.mixInto(mix, m); }
|
|
79
|
+
if (sfx) D.mixInto(mix, sfx, D.db(a.sfxDb ? +a.sfxDb : -4));
|
|
80
|
+
let finalMix=mix;
|
|
81
|
+
if (a.duration != null) { const seconds=Number(a.duration); if(!Number.isFinite(seconds)||seconds<=0)die('--duration needs positive seconds');
|
|
82
|
+
const samples=Math.round(seconds*D.SR);if(mix.L.length<samples)die(`mix sources too short for ${seconds}s (${(mix.L.length/D.SR).toFixed(2)}s); extend music/VO before mixing`);
|
|
83
|
+
finalMix=D.stereo(samples);finalMix.L.set(mix.L.subarray(0,samples));finalMix.R.set(mix.R.subarray(0,samples));
|
|
84
|
+
const fade=Math.min(samples,Math.round(0.35*D.SR));for(let i=0;i<fade;i++){const g=(fade-i-1)/fade;finalMix.L[samples-fade+i]*=g;finalMix.R[samples-fade+i]*=g;}
|
|
85
|
+
}
|
|
86
|
+
const M = D.master(finalMix, a.lufs ? +a.lufs : -14, -1.5); const o = path.resolve(a.out || 'audio/final.wav'); mkdirp(path.dirname(o)); D.writeWav(o, M.buf, 24, fs);
|
|
87
|
+
return { final: o, lufs: +M.lufs.toFixed(2), truePeak: +M.truePeak.toFixed(2), duration: +(finalMix.L.length / D.SR).toFixed(2) };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ---------------- analysis
|
|
91
|
+
export function cmdAudio(a) { const f = a._[1] || a._[0]; if (!f) die('usage: audio analyze <file>'); const w = toWav48(path.resolve(f)); const r = analyze(w); if (a.out) writeJson(path.resolve(a.out), r); return a.full ? r : { ...r, beats: `${r.beats.length} beats`, onsets: `${r.onsets.length} onsets`, energyDbPerHalfSecond: undefined, note: 'use --full or --out file.json for all beat/onset times; key is an estimate (see confidence)' }; }
|
|
92
|
+
export function cmdBeat(a) {
|
|
93
|
+
const sub = a._[0];
|
|
94
|
+
if (sub === 'grid') { const bpm = +a.bpm, dur = +a.dur, off = +(a.offset || 0), fps = +(a.fps || 30); if (!bpm || !dur) die('usage: beat grid --bpm 93 --dur 52.6 [--offset 0] [--fps 30]'); const beats = []; for (let t = off; t < dur; t += 60 / bpm) beats.push(+t.toFixed(4)); return { bpm, beats, bars: beats.filter((_, i) => i % 4 === 0), frames: beats.map((t) => Math.round(t * fps)) }; }
|
|
95
|
+
if (sub === 'snap') { const cues = readJson(path.resolve(a._[1])); const grid = readJson(path.resolve(a.grid || 'audio/beatgrid.json')); const max = (+a.maxMs || 80) / 1000;
|
|
96
|
+
const snapped = cues.map((c) => { let best = grid.beats[0]; for (const b of grid.beats) if (Math.abs(b - c.t) < Math.abs(best - c.t)) best = b; return Math.abs(best - c.t) <= max ? { ...c, t: best, snapped: true } : c; });
|
|
97
|
+
if (a.out) writeJson(path.resolve(a.out), snapped); return { snapped: snapped.filter((c) => c.snapped).length, total: cues.length, cues: snapped }; }
|
|
98
|
+
die('usage: beat grid|snap');
|
|
99
|
+
}
|
|
100
|
+
export function cmdVo(a) {
|
|
101
|
+
const sub = a._[0]; const f = path.resolve(a._[1] || 'audio/vo.wav');
|
|
102
|
+
if (sub === 'clean') { const o = path.resolve(a.out || f.replace(/\.\w+$/, '_clean.wav')); ff(['-i', f, '-af', 'highpass=f=80,afftdn=nf=-25,loudnorm=I=-16:TP=-1.5:LRA=7', '-ar', '48000', o]); return { cleaned: o }; }
|
|
103
|
+
if (sub === 'align') { // word timings via Whisper if present, else phrase timings from silences
|
|
104
|
+
const o = path.resolve(a.out || 'audio/words.json'); const py = has('python3') ? 'python3' : has('python') ? 'python' : null;
|
|
105
|
+
if (py && run(py, ['-c', 'import faster_whisper']).status === 0) {
|
|
106
|
+
const r = run(py, [path.join(SKILL_DIR, 'scripts', 'py', 'whisper_words.py'), f, o, a.lang || 'auto', a.model || 'small']); if (r.status !== 0) die('whisper failed: ' + r.stderr.slice(-400));
|
|
107
|
+
const j = readJson(o); return { words: j.words.length, text: j.text, file: o, mode: 'word', check: 'Compare `text` with the script. Names are often misheard; if a segment looks wrong, cut it with ffmpeg and transcribe that piece alone.' };
|
|
108
|
+
}
|
|
109
|
+
const w = D.readWav(toWav48(f), fs); const mono = w.buf.L; const sil = silences(mono, 48000, -40, 0.18); const dur = mono.length / 48000; const phrases = []; let st = 0;
|
|
110
|
+
for (const [s0, s1] of sil) { if (s0 - st > 0.2) phrases.push({ start: +st.toFixed(3), end: +s0.toFixed(3) }); st = s1; } if (dur - st > 0.2) phrases.push({ start: +st.toFixed(3), end: +dur.toFixed(3) });
|
|
111
|
+
const script = a.script ? fs.readFileSync(path.resolve(a.script), 'utf8').split(/(?<=[.!?])\s+|\n+/).map((x) => x.trim()).filter(Boolean) : [];
|
|
112
|
+
writeJson(o, { mode: 'phrase', phrases: phrases.map((p, i) => ({ ...p, text: script[i] || null })), words: [] });
|
|
113
|
+
return { file: o, mode: 'phrase', phrases: phrases.length, scriptSentences: script.length, warning: script.length && script.length !== phrases.length ? 'phrase count differs from script sentences: check the pauses by ear or adjust --script line breaks' : undefined, note: 'Whisper not found: word-level sync unavailable. Words are spread evenly inside each phrase by `timeline build`.' };
|
|
114
|
+
}
|
|
115
|
+
die('usage: vo clean|align <file>');
|
|
116
|
+
}
|
|
117
|
+
export function cmdTimeline(a) {
|
|
118
|
+
const words = readJson(path.resolve(a.words || 'audio/words.json'), { words: [], phrases: [] }); const grid = readJson(path.resolve(a.grid || 'audio/beatgrid.json'), { beats: [] });
|
|
119
|
+
let W = words.words || [];
|
|
120
|
+
if (!W.length && words.phrases?.length) for (const p of words.phrases) { const ws = (p.text || '').split(/\s+/).filter(Boolean); ws.forEach((w, i) => W.push({ w, start: +(p.start + (p.end - p.start) * i / ws.length).toFixed(3), end: +(p.start + (p.end - p.start) * (i + 1) / ws.length).toFixed(3) })); }
|
|
121
|
+
const dur = +(a.duration || Math.max(grid.duration || 0, W.length ? W[W.length - 1].end + 2.5 : 0));
|
|
122
|
+
const tl = { duration: +dur.toFixed(3), bpm: grid.bpm || null, words: W, beats: grid.beats || [], sections: grid.sections || [], scenes: [], events: [] };
|
|
123
|
+
const o = path.resolve(a.out || 'public/timeline.json'); writeJson(o, tl); return { timeline: o, words: W.length, beats: tl.beats.length, duration: tl.duration };
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// ---------------- reference breakdown
|
|
127
|
+
export function cmdRef(a) {
|
|
128
|
+
const sub = a._[0]; const dir = path.resolve(a.dir || 'ref'); mkdirp(dir); const vid = path.join(dir, 'ref.mp4');
|
|
129
|
+
if (sub === 'get') { const src = a._[1]; if (!src) die('usage: ref get <url|file>');
|
|
130
|
+
if (/^https?:/.test(src)) { if (!has('yt-dlp')) die('yt-dlp not installed', 'ask the user to install it (see doctor) or to download the video and run `ref get <file>`'); const r = run('yt-dlp', ['-f', 'bv*[height<=1080]+ba/b', '--merge-output-format', 'mp4', '-o', vid, src], { stdio: 'inherit' }); if (r.status !== 0) die('download failed'); }
|
|
131
|
+
else ff(['-i', path.resolve(src), '-c:v', 'libx264', '-crf', '18', '-c:a', 'aac', vid]);
|
|
132
|
+
const p = probe(vid); const v = p.streams.find((s) => s.codec_type === 'video'); return { file: vid, duration: +(+p.format.duration).toFixed(2), size: `${v.width}x${v.height}`, fps: v.r_frame_rate }; }
|
|
133
|
+
if (!fs.existsSync(vid)) die(`${vid} not found`, 'run `ref get <url|file>` first');
|
|
134
|
+
if (sub === 'scenes') { const r = ff(['-i', vid, '-vf', `select='gt(scene,${a.threshold || 0.3})',showinfo`, '-f', 'null', '-']); const cuts = [...r.stderr.matchAll(/pts_time:([\d.]+)/g)].map((m) => +(+m[1]).toFixed(2)); writeJson(path.join(dir, 'scenes.json'), cuts); return { cuts, count: cuts.length, file: path.join(dir, 'scenes.json') }; }
|
|
135
|
+
if (sub === 'frames') { const fd = path.join(dir, 'frames'); mkdirp(fd); const every = +(a.every || 0.5); ff(['-i', vid, '-vf', `fps=1/${every},scale=640:-2`, '-q:v', '3', path.join(fd, 'f_%04d.jpg')]); const n = fs.readdirSync(fd).length; return { dir: fd, frames: n, every }; }
|
|
136
|
+
if (sub === 'sheet') { const fd = path.join(dir, 'frames'); if (!fs.existsSync(fd)) die('run `ref frames` first'); const files = fs.readdirSync(fd).filter((f) => f.endsWith('.jpg')).sort(); const every = +(a.every || 0.5); const per = 20; const sheets = [];
|
|
137
|
+
for (let s = 0; s * per < files.length; s++) { const o = path.join(dir, `sheet_${s + 1}.jpg`); ff(['-start_number', String(s * per + 1), '-i', path.join(fd, 'f_%04d.jpg'), '-frames:v', '1', '-vf', `drawtext=text='%{eif\\:(n+${s * per})*${every}\\:d}s':x=8:y=8:fontsize=22:fontcolor=white:box=1:boxcolor=black@0.5,tile=5x4:padding=6:margin=6`, o]); sheets.push(o); }
|
|
138
|
+
return { sheets, note: 'Open each sheet image and describe: layout, type sizes, color, motion between frames, where cuts land.' }; }
|
|
139
|
+
if (sub === 'motion') { const r = ff(['-i', vid, '-vf', 'scale=320:-2,tblend=all_mode=difference,signalstats,metadata=print:key=lavfi.signalstats.YAVG', '-f', 'null', '-']); const v = [...r.stderr.matchAll(/YAVG=([\d.]+)/g)].map((m) => +m[1]); const fps = 30; const perSec = []; for (let i = 0; i < v.length; i += fps) perSec.push(+(v.slice(i, i + fps).reduce((x, y) => x + y, 0) / Math.min(fps, v.length - i)).toFixed(2)); return { motionPerSecond: perSec, note: 'higher = more movement; flat low = holds; spikes = transitions' }; }
|
|
140
|
+
if (sub === 'colors') { const o = path.join(dir, 'palette.png'); ff(['-i', vid, '-vf', 'fps=1,scale=160:-2,palettegen=max_colors=12:stats_mode=full', o]); return { palette: o, note: 'open the image; the swatches are the dominant colors' }; }
|
|
141
|
+
if (sub === 'audio') { const w = toWav48(vid, 'ref.wav'); const r = analyze(w); writeJson(path.join(dir, 'audio.json'), r); return { ...r, beats: `${r.beats.length} beats`, onsets: `${r.onsets.length}`, energyDbPerHalfSecond: undefined, file: path.join(dir, 'audio.json') }; }
|
|
142
|
+
if (sub === 'text') { if (!has('tesseract')) die('tesseract not installed', 'optional: skip OCR, read text from the sheets instead'); const fd = path.join(dir, 'frames'); const res = []; for (const f of fs.readdirSync(fd).filter((x) => x.endsWith('.jpg')).sort().filter((_, i) => i % 2 === 0)) { const r = run('tesseract', [path.join(fd, f), '-', '--psm', '11']); const t = (r.stdout || '').replace(/\s+/g, ' ').trim(); if (t) res.push({ frame: f, text: t }); } writeJson(path.join(dir, 'text.json'), res); return { found: res.length, file: path.join(dir, 'text.json') }; }
|
|
143
|
+
if (sub === 'report') { const out = []; for (const s of ['scenes', 'frames', 'sheet', 'motion', 'colors', 'audio']) { try { out.push([s, cmdRef({ ...a, _: [s] })]); } catch (e) { out.push([s, { error: String(e) }]); } }
|
|
144
|
+
const R = Object.fromEntries(out); const md = [`# Reference report`, '', `Video: ${vid}`, '', `## Cuts (${R.scenes.count})`, R.scenes.cuts.join(', '), '', `## Music`, `BPM ${R.audio.bpm}, key ${R.audio.key} (conf ${R.audio.confidence}), LUFS ${R.audio.lufs}, drop ${JSON.stringify(R.audio.drop)}`, '', `## Motion per second`, R.motion.motionPerSecond.join(' '), '', `## Contact sheets`, ...R.sheet.sheets.map((s) => `- ${s}`), '', `Palette: ${R.colors.palette}`, '', '## TODO for the agent', '- open every sheet and fill: typography (font feel, sizes, weights), layout, color use, motion vocabulary, transitions, how text syncs to VO, how cuts sit on the beat', '- write findings into styles/<new>/style.md and tokens.json (see references/customization.md)'].join('\n');
|
|
145
|
+
fs.writeFileSync(path.join(dir, 'ref_report.md'), md); return { report: path.join(dir, 'ref_report.md') }; }
|
|
146
|
+
die('usage: ref get|scenes|frames|sheet|motion|colors|audio|text|report');
|
|
147
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Environment preflight. Detects, reports, and suggests - it NEVER installs anything.
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { has, run, writeJson, stateDir, SKILL_DIR, readJson } from './util.mjs';
|
|
6
|
+
|
|
7
|
+
const OS = process.platform === 'darwin' ? 'mac' : process.platform === 'win32' ? 'windows' : 'linux';
|
|
8
|
+
const pm = OS === 'mac' ? (has('brew') ? 'brew' : null) : OS === 'windows' ? (has('winget', ['--version']) ? 'winget' : has('choco') ? 'choco' : null) : (has('apt-get', ['--version']) ? 'apt' : has('dnf') ? 'dnf' : has('pacman', ['--version']) ? 'pacman' : null);
|
|
9
|
+
const INSTALL = {
|
|
10
|
+
node: { brew: 'brew install node', winget: 'winget install OpenJS.NodeJS.LTS', choco: 'choco install nodejs-lts', apt: 'curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - && sudo apt-get install -y nodejs', dnf: 'sudo dnf install nodejs', pacman: 'sudo pacman -S nodejs npm', any: 'https://nodejs.org (LTS)' },
|
|
11
|
+
ffmpeg: { brew: 'brew install ffmpeg', winget: 'winget install Gyan.FFmpeg', choco: 'choco install ffmpeg', apt: 'sudo apt-get install -y ffmpeg', dnf: 'sudo dnf install ffmpeg', pacman: 'sudo pacman -S ffmpeg', any: 'https://ffmpeg.org/download.html' },
|
|
12
|
+
python: { brew: 'brew install python', winget: 'winget install Python.Python.3.12', choco: 'choco install python', apt: 'sudo apt-get install -y python3 python3-pip', dnf: 'sudo dnf install python3', pacman: 'sudo pacman -S python', any: 'https://python.org' },
|
|
13
|
+
pylibs: { any: 'python3 -m pip install --user numpy scipy librosa soundfile pyloudnorm' },
|
|
14
|
+
ytdlp: { brew: 'brew install yt-dlp', winget: 'winget install yt-dlp.yt-dlp', choco: 'choco install yt-dlp', apt: 'python3 -m pip install --user yt-dlp', dnf: 'python3 -m pip install --user yt-dlp', pacman: 'sudo pacman -S yt-dlp', any: 'python3 -m pip install --user yt-dlp' },
|
|
15
|
+
whisper: { any: 'python3 -m pip install --user faster-whisper (or build whisper.cpp: https://github.com/ggml-org/whisper.cpp)' },
|
|
16
|
+
tesseract: { brew: 'brew install tesseract', winget: 'winget install UB-Mannheim.TesseractOCR', apt: 'sudo apt-get install -y tesseract-ocr', dnf: 'sudo dnf install tesseract', pacman: 'sudo pacman -S tesseract', any: 'https://github.com/tesseract-ocr/tesseract' },
|
|
17
|
+
remotion: { any: 'node scripts/motioncraft.mjs new <folder> (copies the template, then asks before running npm install)' },
|
|
18
|
+
};
|
|
19
|
+
const cmdFor = (k) => INSTALL[k][pm] || INSTALL[k].any;
|
|
20
|
+
|
|
21
|
+
export function doctor(a) {
|
|
22
|
+
const quick = a.quick; const cacheP = path.join(stateDir(a), 'env.json');
|
|
23
|
+
if (quick) { const c = readJson(cacheP); if (c && Date.now() - c.checkedAt < 7 * 864e5) return c; }
|
|
24
|
+
const items = []; const add = (id, tier, ok, detail, fix, fallback) => items.push({ id, tier, ok: !!ok, detail: detail || '', fix: ok ? null : fix, fallback: ok ? null : fallback || null });
|
|
25
|
+
const nodeV = process.versions.node; const major = +nodeV.split('.')[0];
|
|
26
|
+
add('node', 'required', major >= 18, `v${nodeV}`, cmdFor('node'), 'none - Node 18+ is required');
|
|
27
|
+
const npm = has('npm', ['--version']); add('npm', 'required', npm, npm ? `v${npm}` : 'missing', 'comes with Node.js', null);
|
|
28
|
+
const proj = findProject(a.dir || process.cwd());
|
|
29
|
+
let remV = null; if (proj) { try { remV = JSON.parse(fs.readFileSync(path.join(proj, 'node_modules', 'remotion', 'package.json'), 'utf8')).version; } catch {} }
|
|
30
|
+
add('remotion', 'required', remV, remV ? `v${remV} in ${proj}` : proj ? `project at ${proj} but dependencies not installed` : 'no Remotion project here yet', proj ? `cd ${proj} && npm install` : cmdFor('remotion'), null);
|
|
31
|
+
const ffv = has('ffmpeg', ['-version']); const ffBundled = !ffv && proj && remV && has('npx', ['--no-install', 'remotion', 'ffmpeg', '-version']);
|
|
32
|
+
add('ffmpeg', 'recommended', ffv || ffBundled, ffv ? ffv.split('\n')[0] : ffBundled ? 'using Remotion bundled ffmpeg (H.264/H.265/VP8/VP9/ProRes only)' : 'missing', cmdFor('ffmpeg'), 'Remotion bundled ffmpeg (npx remotion ffmpeg) once the project is installed');
|
|
33
|
+
const py = has('python3') || has('python'); add('python', 'optional', py, py || 'missing', cmdFor('python'), 'pure-Node analyzers (slightly less accurate BPM/key)');
|
|
34
|
+
let libs = null; if (py) { const r = run(has('python3') ? 'python3' : 'python', ['-c', 'import numpy,scipy,librosa,soundfile,pyloudnorm;print("ok")']); libs = r.status === 0; }
|
|
35
|
+
add('python-libs', 'optional', libs, libs ? 'numpy scipy librosa soundfile pyloudnorm' : 'missing', cmdFor('pylibs'), 'pure-Node analyzers');
|
|
36
|
+
const yt = has('yt-dlp'); add('yt-dlp', 'recommended', yt, yt ? `v${yt}` : 'missing', cmdFor('ytdlp'), 'ask the user to download the reference video and pass the file');
|
|
37
|
+
let wh = null; if (py) { const r = run(has('python3') ? 'python3' : 'python', ['-c', 'import faster_whisper;print("ok")']); if (r.status === 0) wh = 'faster-whisper'; }
|
|
38
|
+
if (!wh && (has('whisper-cli', ['-h']) || has('whisper-cpp', ['-h']))) wh = 'whisper.cpp';
|
|
39
|
+
if (!wh && has('whisper', ['--help'])) wh = 'openai-whisper';
|
|
40
|
+
add('whisper', 'recommended', wh, wh || 'missing', cmdFor('whisper'), 'sentence-level sync from silence detection (less precise than word-level)');
|
|
41
|
+
const tess = has('tesseract'); add('tesseract', 'optional', tess, tess ? tess.split('\n')[0] : 'missing', cmdFor('tesseract'), 'skip on-screen text OCR in reference analysis');
|
|
42
|
+
const gpu = detectGpu(); add('gpu', 'optional', gpu.ok, gpu.detail, 'no action needed', 'render 3D with --gl=swangle (software, slower) or pre-render 3D to PNG');
|
|
43
|
+
const disk = freeDiskGb(a.dir || process.cwd()); add('disk', 'recommended', disk == null || disk > 5, disk == null ? 'unknown' : `${disk.toFixed(1)} GB free`, 'free up space (renders need ~2-5 GB)', null);
|
|
44
|
+
const res = { checkedAt: Date.now(), os: OS, arch: process.arch, cpus: os.cpus().length, ramGb: +(os.totalmem() / 1073741824).toFixed(1), packageManager: pm, project: proj, items,
|
|
45
|
+
mode: { audioAnalysis: libs ? 'python' : 'node', sync: wh ? 'word' : 'sentence', ffmpeg: ffv ? 'system' : ffBundled ? 'remotion' : 'none', gl: gpu.ok ? 'angle' : 'swangle', reference: yt ? 'download' : 'manual' } };
|
|
46
|
+
writeJson(cacheP, res); return res;
|
|
47
|
+
}
|
|
48
|
+
function findProject(dir) { let d = path.resolve(dir); for (let i = 0; i < 4; i++) { const p = path.join(d, 'package.json'); if (fs.existsSync(p)) { const j = JSON.parse(fs.readFileSync(p, 'utf8')); if ((j.dependencies || {}).remotion) return d; } const up = path.dirname(d); if (up === d) break; d = up; } return null; }
|
|
49
|
+
function detectGpu() {
|
|
50
|
+
if (process.platform === 'darwin') return { ok: true, detail: 'macOS (Metal via ANGLE)' };
|
|
51
|
+
if (process.platform === 'win32') return { ok: true, detail: 'Windows (ANGLE/D3D)' };
|
|
52
|
+
if (has('nvidia-smi', ['-L'])) return { ok: true, detail: 'NVIDIA GPU' };
|
|
53
|
+
if (fs.existsSync('/dev/dri')) return { ok: true, detail: '/dev/dri present' };
|
|
54
|
+
return { ok: false, detail: 'no GPU detected (server/container)' };
|
|
55
|
+
}
|
|
56
|
+
function freeDiskGb(dir) { try { const s = fs.statfsSync(dir); return s.bavail * s.bsize / 1073741824; } catch { return null; } }
|
|
57
|
+
|
|
58
|
+
export function printDoctor(r) {
|
|
59
|
+
const icon = (it) => it.ok ? '✔' : it.tier === 'required' ? '✖' : '•';
|
|
60
|
+
const lines = [`motioncraft doctor - ${r.os}/${r.arch}, ${r.cpus} CPU, ${r.ramGb} GB RAM, package manager: ${r.packageManager || 'none found'}`, ''];
|
|
61
|
+
for (const tier of ['required', 'recommended', 'optional']) { lines.push(tier.toUpperCase());
|
|
62
|
+
for (const it of r.items.filter((x) => x.tier === tier)) { lines.push(` ${icon(it)} ${it.id.padEnd(12)} ${it.detail}`); if (!it.ok) { lines.push(` install : ${it.fix}`); if (it.fallback) lines.push(` fallback: ${it.fallback}`); } } lines.push(''); }
|
|
63
|
+
const missing = r.items.filter((x) => !x.ok && x.tier !== 'optional');
|
|
64
|
+
lines.push(missing.length ? 'AGENT: show this list to the user and ASK before installing anything. If they skip, use the fallback.' : 'All required and recommended tools are present.');
|
|
65
|
+
lines.push(`modes: ${JSON.stringify(r.mode)}`);
|
|
66
|
+
return lines.join('\n');
|
|
67
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// motioncraft DSP core - pure Node, no dependencies.
|
|
2
|
+
// Stereo buffers are {L: Float32Array, R: Float32Array}.
|
|
3
|
+
export const SR = 48000;
|
|
4
|
+
|
|
5
|
+
let seed = 7;
|
|
6
|
+
export function setSeed(s) { seed = s >>> 0 || 7; }
|
|
7
|
+
export function rand() { // mulberry32
|
|
8
|
+
seed |= 0; seed = (seed + 0x6D2B79F5) | 0;
|
|
9
|
+
let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
|
|
10
|
+
t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
|
|
11
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
12
|
+
}
|
|
13
|
+
export const randn = () => { let u = 0, v = 0; while (!u) u = rand(); v = rand(); return Math.sqrt(-2 * Math.log(u)) * Math.cos(2 * Math.PI * v); };
|
|
14
|
+
export const db = (x) => Math.pow(10, x / 20);
|
|
15
|
+
export const toDb = (x) => 20 * Math.log10(Math.max(1e-12, x));
|
|
16
|
+
export const midiHz = (m) => 440 * Math.pow(2, (m - 69) / 12);
|
|
17
|
+
export const NOTE = { C: 0, 'C#': 1, Db: 1, D: 2, 'D#': 3, Eb: 3, E: 4, F: 5, 'F#': 6, Gb: 6, G: 7, 'G#': 8, Ab: 8, A: 9, 'A#': 10, Bb: 10, B: 11 };
|
|
18
|
+
|
|
19
|
+
export function stereo(n) { return { L: new Float32Array(n), R: new Float32Array(n) }; }
|
|
20
|
+
export function fromMono(x) { return { L: x, R: Float32Array.from(x) }; }
|
|
21
|
+
export function len(b) { return b.L.length; }
|
|
22
|
+
export function clone(b) { return { L: Float32Array.from(b.L), R: Float32Array.from(b.R) }; }
|
|
23
|
+
|
|
24
|
+
export function place(buf, x, t, g = 1, panPos = 0) {
|
|
25
|
+
const i0 = Math.round(t * SR); const n = len(buf);
|
|
26
|
+
if (i0 >= n) return;
|
|
27
|
+
const l = Math.cos((panPos + 1) * Math.PI / 4) * Math.SQRT2, r = Math.sin((panPos + 1) * Math.PI / 4) * Math.SQRT2;
|
|
28
|
+
const xl = x.L || x, xr = x.R || x;
|
|
29
|
+
for (let k = Math.max(0, -i0); k < xl.length && i0 + k < n; k++) {
|
|
30
|
+
buf.L[i0 + k] += xl[k] * g * l; buf.R[i0 + k] += xr[k] * g * r;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function mixInto(dst, src, g = 1) { const n = Math.min(len(dst), len(src)); for (let i = 0; i < n; i++) { dst.L[i] += src.L[i] * g; dst.R[i] += src.R[i] * g; } }
|
|
34
|
+
export function gain(b, g) { for (let i = 0; i < len(b); i++) { b.L[i] *= g; b.R[i] *= g; } return b; }
|
|
35
|
+
export function peak(b) { let p = 0; for (let i = 0; i < len(b); i++) { p = Math.max(p, Math.abs(b.L[i]), Math.abs(b.R[i])); } return p; }
|
|
36
|
+
|
|
37
|
+
export function adsr(n, a, d, s, r, hold = null) {
|
|
38
|
+
const A = Math.max(1, Math.round(a * SR)), D = Math.max(1, Math.round(d * SR)), Rl = Math.max(1, Math.round(r * SR));
|
|
39
|
+
let H = hold == null ? n - A - D - Rl : Math.round(hold * SR); H = Math.max(0, H);
|
|
40
|
+
const e = new Float32Array(n); let i = 0;
|
|
41
|
+
for (let k = 0; k < A && i < n; k++) e[i++] = k / A;
|
|
42
|
+
for (let k = 0; k < D && i < n; k++) e[i++] = 1 + (s - 1) * k / D;
|
|
43
|
+
for (let k = 0; k < H && i < n; k++) e[i++] = s;
|
|
44
|
+
for (let k = 0; k < Rl && i < n; k++) e[i++] = s * (1 - k / Rl);
|
|
45
|
+
return e;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ---------- biquad (RBJ cookbook)
|
|
49
|
+
export function biquadCoefs(type, f, q = 0.707, gainDb = 0) {
|
|
50
|
+
f = Math.min(f, SR / 2.2);
|
|
51
|
+
const w = 2 * Math.PI * f / SR, c = Math.cos(w), s = Math.sin(w), al = s / (2 * q), A = Math.pow(10, gainDb / 40);
|
|
52
|
+
let b0, b1, b2, a0, a1, a2;
|
|
53
|
+
switch (type) {
|
|
54
|
+
case 'lp': b0 = (1 - c) / 2; b1 = 1 - c; b2 = (1 - c) / 2; a0 = 1 + al; a1 = -2 * c; a2 = 1 - al; break;
|
|
55
|
+
case 'hp': b0 = (1 + c) / 2; b1 = -(1 + c); b2 = (1 + c) / 2; a0 = 1 + al; a1 = -2 * c; a2 = 1 - al; break;
|
|
56
|
+
case 'bp': b0 = al; b1 = 0; b2 = -al; a0 = 1 + al; a1 = -2 * c; a2 = 1 - al; break;
|
|
57
|
+
case 'peak': b0 = 1 + al * A; b1 = -2 * c; b2 = 1 - al * A; a0 = 1 + al / A; a1 = -2 * c; a2 = 1 - al / A; break;
|
|
58
|
+
case 'lowshelf': { const sq = 2 * Math.sqrt(A) * al;
|
|
59
|
+
b0 = A * ((A + 1) - (A - 1) * c + sq); b1 = 2 * A * ((A - 1) - (A + 1) * c); b2 = A * ((A + 1) - (A - 1) * c - sq);
|
|
60
|
+
a0 = (A + 1) + (A - 1) * c + sq; a1 = -2 * ((A - 1) + (A + 1) * c); a2 = (A + 1) + (A - 1) * c - sq; break; }
|
|
61
|
+
case 'highshelf': { const sq = 2 * Math.sqrt(A) * al;
|
|
62
|
+
b0 = A * ((A + 1) + (A - 1) * c + sq); b1 = -2 * A * ((A - 1) + (A + 1) * c); b2 = A * ((A + 1) + (A - 1) * c - sq);
|
|
63
|
+
a0 = (A + 1) - (A - 1) * c + sq; a1 = 2 * ((A - 1) - (A + 1) * c); a2 = (A + 1) - (A - 1) * c - sq; break; }
|
|
64
|
+
default: throw new Error('biquad type ' + type);
|
|
65
|
+
}
|
|
66
|
+
return [b0 / a0, b1 / a0, b2 / a0, a1 / a0, a2 / a0];
|
|
67
|
+
}
|
|
68
|
+
export function biquadMono(x, co) {
|
|
69
|
+
const [b0, b1, b2, a1, a2] = co; let x1 = 0, x2 = 0, y1 = 0, y2 = 0; const y = new Float32Array(x.length);
|
|
70
|
+
for (let i = 0; i < x.length; i++) { const v = b0 * x[i] + b1 * x1 + b2 * x2 - a1 * y1 - a2 * y2; x2 = x1; x1 = x[i]; y2 = y1; y1 = v; y[i] = v; }
|
|
71
|
+
return y;
|
|
72
|
+
}
|
|
73
|
+
export function filt(b, type, f, q, g) { const co = biquadCoefs(type, f, q, g); return { L: biquadMono(b.L, co), R: biquadMono(b.R, co) }; }
|
|
74
|
+
|
|
75
|
+
// ---------- compressor (feed-forward, peak detector, stereo linked)
|
|
76
|
+
export function compress(b, thrDb = -18, ratio = 3, attMs = 5, relMs = 100, makeupDb = 0) {
|
|
77
|
+
const at = Math.exp(-1 / (attMs * SR / 1000)), rt = Math.exp(-1 / (relMs * SR / 1000));
|
|
78
|
+
let env = 0; const out = clone(b); const mk = db(makeupDb);
|
|
79
|
+
for (let i = 0; i < len(b); i++) {
|
|
80
|
+
const lv = Math.max(Math.abs(b.L[i]), Math.abs(b.R[i]));
|
|
81
|
+
env = lv > env ? at * env + (1 - at) * lv : rt * env + (1 - rt) * lv;
|
|
82
|
+
const e = toDb(env); const over = e - thrDb; const gr = over > 0 ? over * (1 - 1 / ratio) : 0;
|
|
83
|
+
const g = db(-gr) * mk; out.L[i] *= g; out.R[i] *= g;
|
|
84
|
+
}
|
|
85
|
+
return out;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ---------- Freeverb-style reverb (wet only)
|
|
89
|
+
const CombT = [1116, 1188, 1277, 1356, 1422, 1491, 1557, 1617], APT = [556, 441, 341, 225];
|
|
90
|
+
export function reverb(b, room = 0.5, damp = 0.5, wet = 0.25, width = 1) {
|
|
91
|
+
const n = len(b), scale = SR / 44100, fb = 0.7 + room * 0.28, out = stereo(n);
|
|
92
|
+
for (const [ch, spread] of [['L', 0], ['R', 23]]) {
|
|
93
|
+
const input = ch === 'L' ? b.L : b.R; const acc = new Float32Array(n);
|
|
94
|
+
for (const ct of CombT) {
|
|
95
|
+
const L = Math.round((ct + spread) * scale); const buf = new Float32Array(L); let idx = 0, store = 0;
|
|
96
|
+
for (let i = 0; i < n; i++) { const o = buf[idx]; store = o * (1 - damp) + store * damp; buf[idx] = input[i] * 0.015 + store * fb; acc[i] += o; idx = (idx + 1) % L; }
|
|
97
|
+
}
|
|
98
|
+
for (const at of APT) {
|
|
99
|
+
const L = Math.round((at + spread) * scale); const buf = new Float32Array(L); let idx = 0;
|
|
100
|
+
for (let i = 0; i < n; i++) { const bo = buf[idx]; const o = -acc[i] + bo; buf[idx] = acc[i] + bo * 0.5; acc[i] = o; idx = (idx + 1) % L; }
|
|
101
|
+
}
|
|
102
|
+
out[ch] = acc;
|
|
103
|
+
}
|
|
104
|
+
const w1 = wet * (width / 2 + 0.5), w2 = wet * ((1 - width) / 2);
|
|
105
|
+
const res = stereo(n);
|
|
106
|
+
for (let i = 0; i < n; i++) { res.L[i] = out.L[i] * w1 + out.R[i] * w2; res.R[i] = out.R[i] * w1 + out.L[i] * w2; }
|
|
107
|
+
return res;
|
|
108
|
+
}
|
|
109
|
+
export function withReverb(b, room, damp, wet, dry = 1) { const w = reverb(b, room, damp, wet); const o = clone(b); gain(o, dry); mixInto(o, w); return o; }
|
|
110
|
+
|
|
111
|
+
export function delay(b, timeS, fbk = 0.3, mix = 0.2) {
|
|
112
|
+
const d = Math.round(timeS * SR), n = len(b), o = clone(b);
|
|
113
|
+
for (const ch of ['L', 'R']) { const y = new Float32Array(n); for (let i = 0; i < n; i++) { y[i] = b[ch][i] + (i >= d ? y[i - d] * fbk : 0); } for (let i = 0; i < n; i++) o[ch][i] += (i >= d ? y[i - d] : 0) * mix; }
|
|
114
|
+
return o;
|
|
115
|
+
}
|
|
116
|
+
export function chorus(b, rate = 0.9, depthMs = 3, mix = 0.35) {
|
|
117
|
+
const n = len(b), o = clone(b), base = 0.012 * SR, dep = depthMs / 1000 * SR;
|
|
118
|
+
for (const [ch, ph] of [['L', 0], ['R', Math.PI / 2]]) {
|
|
119
|
+
const x = b[ch];
|
|
120
|
+
for (let i = 0; i < n; i++) { const d = base + dep * Math.sin(2 * Math.PI * rate * i / SR + ph); const p = i - d; const k = Math.floor(p); const fr = p - k; const v = k >= 1 ? x[k] * (1 - fr) + x[k + 1] * fr : 0; o[ch][i] = x[i] * (1 - mix) + v * mix; }
|
|
121
|
+
}
|
|
122
|
+
return o;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// ---------- loudness (ITU-R BS.1770-4, gated integrated LUFS)
|
|
126
|
+
export function lufs(b) {
|
|
127
|
+
const pre = biquadCoefsRaw([1.53512485958697, -2.69169618940638, 1.19839281085285], [1, -1.69065929318241, 0.73248077421585]);
|
|
128
|
+
const rlb = biquadCoefsRaw([1, -2, 1], [1, -1.99004745483398, 0.99007225036621]);
|
|
129
|
+
const kw = (x) => biquadMono(biquadMono(resampleTo48(x), pre), rlb);
|
|
130
|
+
const l = kw(b.L), r = kw(b.R); const blk = Math.round(0.4 * SR), hop = Math.round(0.1 * SR); const zs = [];
|
|
131
|
+
for (let s = 0; s + blk <= l.length; s += hop) { let z = 0; for (let i = s; i < s + blk; i++) z += l[i] * l[i] + r[i] * r[i]; zs.push(z / blk); }
|
|
132
|
+
if (!zs.length) return -70;
|
|
133
|
+
const L = (z) => -0.691 + 10 * Math.log10(Math.max(z, 1e-12));
|
|
134
|
+
let g = zs.filter((z) => L(z) > -70); if (!g.length) return -70;
|
|
135
|
+
const rel = L(g.reduce((a, c) => a + c, 0) / g.length) - 10; g = g.filter((z) => L(z) > rel);
|
|
136
|
+
return L(g.reduce((a, c) => a + c, 0) / g.length);
|
|
137
|
+
}
|
|
138
|
+
function biquadCoefsRaw(bb, aa) { return [bb[0], bb[1], bb[2], aa[1], aa[2]]; }
|
|
139
|
+
function resampleTo48(x) { return x; } // engine always runs at 48 kHz
|
|
140
|
+
export function truePeakDb(b) { // 4x linear-interp oversample estimate
|
|
141
|
+
let p = 0; for (const ch of ['L', 'R']) { const x = b[ch]; for (let i = 0; i < x.length - 1; i++) { for (let k = 0; k < 4; k++) { const v = Math.abs(x[i] + (x[i + 1] - x[i]) * k / 4); if (v > p) p = v; } } }
|
|
142
|
+
return toDb(p);
|
|
143
|
+
}
|
|
144
|
+
export function master(b, target = -14, tp = -1) {
|
|
145
|
+
let x = compress(filt(b, 'hp', 30), -16, 2, 20, 200);
|
|
146
|
+
for (let it = 0; it < 5; it++) {
|
|
147
|
+
gain(x, db(target - lufs(x)));
|
|
148
|
+
if (truePeakDb(x) <= tp) break;
|
|
149
|
+
const c = db(tp - 0.3), k = c * 0.7, w = c * 0.3;
|
|
150
|
+
for (const ch of ['L', 'R']) { const y = x[ch]; for (let i = 0; i < y.length; i++) { const a = Math.abs(y[i]); if (a > k) y[i] = Math.sign(y[i]) * (k + w * Math.tanh((a - k) / w)); } }
|
|
151
|
+
}
|
|
152
|
+
const pk = truePeakDb(x); if (pk > tp) gain(x, db(tp - pk));
|
|
153
|
+
return { buf: x, lufs: lufs(x), truePeak: truePeakDb(x) };
|
|
154
|
+
}
|
|
155
|
+
export function fadeOut(b, sec) { const n = len(b), f = Math.min(n, Math.round(sec * SR)); for (let i = 0; i < f; i++) { const g = 1 - i / f; b.L[n - f + i] *= g; b.R[n - f + i] *= g; } }
|
|
156
|
+
|
|
157
|
+
// ---------- WAV io
|
|
158
|
+
export function writeWav(path, b, bits = 24, fs) {
|
|
159
|
+
const { writeFileSync } = fs; const n = len(b), bps = bits / 8, data = n * 2 * bps; const buf = Buffer.alloc(44 + data);
|
|
160
|
+
buf.write('RIFF', 0); buf.writeUInt32LE(36 + data, 4); buf.write('WAVE', 8); buf.write('fmt ', 12); buf.writeUInt32LE(16, 16);
|
|
161
|
+
buf.writeUInt16LE(1, 20); buf.writeUInt16LE(2, 22); buf.writeUInt32LE(SR, 24); buf.writeUInt32LE(SR * 2 * bps, 28); buf.writeUInt16LE(2 * bps, 32); buf.writeUInt16LE(bits, 34);
|
|
162
|
+
buf.write('data', 36); buf.writeUInt32LE(data, 40); let o = 44; const mx = bits === 24 ? 8388607 : 32767;
|
|
163
|
+
for (let i = 0; i < n; i++) for (const v of [b.L[i], b.R[i]]) { const s = Math.max(-1, Math.min(1, v)); const q = Math.round(s * mx); if (bits === 24) buf.writeIntLE(q, o, 3); else buf.writeInt16LE(q, o); o += bps; }
|
|
164
|
+
writeFileSync(path, buf);
|
|
165
|
+
}
|
|
166
|
+
export function readWav(path, fs) {
|
|
167
|
+
const buf = fs.readFileSync(path); let p = 12, fmt = null, dataOff = 0, dataLen = 0;
|
|
168
|
+
while (p + 8 <= buf.length) { const id = buf.toString('ascii', p, p + 4), sz = buf.readUInt32LE(p + 4);
|
|
169
|
+
if (id === 'fmt ') fmt = { fmt: buf.readUInt16LE(p + 8), ch: buf.readUInt16LE(p + 10), sr: buf.readUInt32LE(p + 12), bits: buf.readUInt16LE(p + 22) };
|
|
170
|
+
if (id === 'data') { dataOff = p + 8; dataLen = Math.min(sz, buf.length - dataOff); break; } p += 8 + sz + (sz & 1); }
|
|
171
|
+
if (!fmt) throw new Error('not a WAV file: ' + path);
|
|
172
|
+
const bps = fmt.bits / 8, fr = Math.floor(dataLen / (bps * fmt.ch)); const L = new Float32Array(fr), R = new Float32Array(fr);
|
|
173
|
+
for (let i = 0; i < fr; i++) for (let c = 0; c < Math.min(2, fmt.ch); c++) { const o = dataOff + (i * fmt.ch + c) * bps; let v;
|
|
174
|
+
if (fmt.fmt === 3) v = buf.readFloatLE(o); else if (fmt.bits === 16) v = buf.readInt16LE(o) / 32768; else if (fmt.bits === 24) v = buf.readIntLE(o, 3) / 8388608; else if (fmt.bits === 32) v = buf.readInt32LE(o) / 2147483648; else v = (buf[o] - 128) / 128;
|
|
175
|
+
(c === 0 ? L : R)[i] = v; }
|
|
176
|
+
if (fmt.ch === 1) R.set(L);
|
|
177
|
+
return { buf: { L, R }, sr: fmt.sr };
|
|
178
|
+
}
|