@lssm-tech/lib.video-gen 3.0.10 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/README.md +8 -8
  2. package/package.json +240 -328
  3. package/dist/browser/compositions/api-overview.js +0 -1
  4. package/dist/browser/compositions/index.js +0 -1
  5. package/dist/browser/compositions/primitives/animated-text.js +0 -1
  6. package/dist/browser/compositions/primitives/brand-frame.js +0 -1
  7. package/dist/browser/compositions/primitives/code-block.js +0 -1
  8. package/dist/browser/compositions/primitives/index.js +0 -1
  9. package/dist/browser/compositions/primitives/progress-bar.js +0 -1
  10. package/dist/browser/compositions/primitives/terminal.js +0 -1
  11. package/dist/browser/compositions/primitives/transition.js +0 -1
  12. package/dist/browser/compositions/social-clip.js +0 -1
  13. package/dist/browser/compositions/terminal-demo.js +0 -1
  14. package/dist/browser/design/index.js +0 -1
  15. package/dist/browser/design/layouts.js +0 -1
  16. package/dist/browser/design/motion.js +0 -1
  17. package/dist/browser/design/tokens.js +0 -1
  18. package/dist/browser/design/typography.js +0 -1
  19. package/dist/browser/docs/compositions.docblock.js +0 -1
  20. package/dist/browser/docs/design.docblock.js +0 -172
  21. package/dist/browser/docs/generators.docblock.js +0 -165
  22. package/dist/browser/docs/rendering.docblock.js +0 -175
  23. package/dist/browser/docs/video-gen.docblock.js +0 -126
  24. package/dist/browser/generators/index.js +0 -82
  25. package/dist/browser/generators/scene-planner.js +0 -82
  26. package/dist/browser/generators/script-generator.js +0 -82
  27. package/dist/browser/generators/video-generator.js +0 -82
  28. package/dist/browser/i18n/catalogs/en.js +0 -28
  29. package/dist/browser/i18n/catalogs/es.js +0 -28
  30. package/dist/browser/i18n/catalogs/fr.js +0 -28
  31. package/dist/browser/i18n/catalogs/index.js +0 -82
  32. package/dist/browser/i18n/index.js +0 -82
  33. package/dist/browser/i18n/keys.js +0 -1
  34. package/dist/browser/i18n/locale.js +0 -1
  35. package/dist/browser/i18n/messages.js +0 -82
  36. package/dist/browser/index.js +0 -82
  37. package/dist/browser/player/demo-player.js +0 -1
  38. package/dist/browser/player/index.js +0 -1
  39. package/dist/browser/remotion/Root.js +0 -19
  40. package/dist/browser/remotion/index.js +0 -19
  41. package/dist/browser/renderers/config.js +0 -1
  42. package/dist/browser/renderers/index.js +0 -1
  43. package/dist/browser/renderers/local.js +0 -1
  44. package/dist/browser/types.js +0 -1
  45. package/dist/browser/video-gen.feature.js +0 -1
  46. package/dist/compositions/api-overview.d.ts +0 -16
  47. package/dist/compositions/api-overview.js +0 -2
  48. package/dist/compositions/index.d.ts +0 -7
  49. package/dist/compositions/index.js +0 -2
  50. package/dist/compositions/primitives/animated-text.d.ts +0 -22
  51. package/dist/compositions/primitives/animated-text.js +0 -2
  52. package/dist/compositions/primitives/brand-frame.d.ts +0 -14
  53. package/dist/compositions/primitives/brand-frame.js +0 -2
  54. package/dist/compositions/primitives/code-block.d.ts +0 -18
  55. package/dist/compositions/primitives/code-block.js +0 -2
  56. package/dist/compositions/primitives/index.d.ts +0 -12
  57. package/dist/compositions/primitives/index.js +0 -2
  58. package/dist/compositions/primitives/progress-bar.d.ts +0 -12
  59. package/dist/compositions/primitives/progress-bar.js +0 -2
  60. package/dist/compositions/primitives/terminal.d.ts +0 -24
  61. package/dist/compositions/primitives/terminal.js +0 -2
  62. package/dist/compositions/primitives/transition.d.ts +0 -14
  63. package/dist/compositions/primitives/transition.js +0 -2
  64. package/dist/compositions/social-clip.d.ts +0 -16
  65. package/dist/compositions/social-clip.js +0 -2
  66. package/dist/compositions/terminal-demo.d.ts +0 -17
  67. package/dist/compositions/terminal-demo.js +0 -2
  68. package/dist/design/index.d.ts +0 -4
  69. package/dist/design/index.js +0 -2
  70. package/dist/design/layouts.d.ts +0 -69
  71. package/dist/design/layouts.js +0 -2
  72. package/dist/design/motion.d.ts +0 -72
  73. package/dist/design/motion.js +0 -2
  74. package/dist/design/tokens.d.ts +0 -31
  75. package/dist/design/tokens.js +0 -2
  76. package/dist/design/typography.d.ts +0 -61
  77. package/dist/design/typography.js +0 -2
  78. package/dist/docs/compositions.docblock.d.ts +0 -1
  79. package/dist/docs/compositions.docblock.js +0 -2
  80. package/dist/docs/design.docblock.d.ts +0 -1
  81. package/dist/docs/design.docblock.js +0 -173
  82. package/dist/docs/generators.docblock.d.ts +0 -1
  83. package/dist/docs/generators.docblock.js +0 -166
  84. package/dist/docs/rendering.docblock.d.ts +0 -1
  85. package/dist/docs/rendering.docblock.js +0 -176
  86. package/dist/docs/video-gen.docblock.d.ts +0 -1
  87. package/dist/docs/video-gen.docblock.js +0 -127
  88. package/dist/generators/index.d.ts +0 -3
  89. package/dist/generators/index.js +0 -83
  90. package/dist/generators/scene-planner.d.ts +0 -31
  91. package/dist/generators/scene-planner.js +0 -83
  92. package/dist/generators/script-generator.d.ts +0 -57
  93. package/dist/generators/script-generator.js +0 -83
  94. package/dist/generators/video-generator.d.ts +0 -21
  95. package/dist/generators/video-generator.js +0 -83
  96. package/dist/i18n/catalogs/en.d.ts +0 -8
  97. package/dist/i18n/catalogs/en.js +0 -29
  98. package/dist/i18n/catalogs/es.d.ts +0 -6
  99. package/dist/i18n/catalogs/es.js +0 -29
  100. package/dist/i18n/catalogs/fr.d.ts +0 -6
  101. package/dist/i18n/catalogs/fr.js +0 -29
  102. package/dist/i18n/catalogs/index.d.ts +0 -8
  103. package/dist/i18n/catalogs/index.js +0 -83
  104. package/dist/i18n/i18n.test.d.ts +0 -1
  105. package/dist/i18n/index.d.ts +0 -22
  106. package/dist/i18n/index.js +0 -83
  107. package/dist/i18n/keys.d.ts +0 -116
  108. package/dist/i18n/keys.js +0 -2
  109. package/dist/i18n/locale.d.ts +0 -8
  110. package/dist/i18n/locale.js +0 -2
  111. package/dist/i18n/messages.d.ts +0 -14
  112. package/dist/i18n/messages.js +0 -83
  113. package/dist/index.d.ts +0 -7
  114. package/dist/index.js +0 -83
  115. package/dist/node/compositions/api-overview.js +0 -1
  116. package/dist/node/compositions/index.js +0 -1
  117. package/dist/node/compositions/primitives/animated-text.js +0 -1
  118. package/dist/node/compositions/primitives/brand-frame.js +0 -1
  119. package/dist/node/compositions/primitives/code-block.js +0 -1
  120. package/dist/node/compositions/primitives/index.js +0 -1
  121. package/dist/node/compositions/primitives/progress-bar.js +0 -1
  122. package/dist/node/compositions/primitives/terminal.js +0 -1
  123. package/dist/node/compositions/primitives/transition.js +0 -1
  124. package/dist/node/compositions/social-clip.js +0 -1
  125. package/dist/node/compositions/terminal-demo.js +0 -1
  126. package/dist/node/design/index.js +0 -1
  127. package/dist/node/design/layouts.js +0 -1
  128. package/dist/node/design/motion.js +0 -1
  129. package/dist/node/design/tokens.js +0 -1
  130. package/dist/node/design/typography.js +0 -1
  131. package/dist/node/docs/compositions.docblock.js +0 -1
  132. package/dist/node/docs/design.docblock.js +0 -172
  133. package/dist/node/docs/generators.docblock.js +0 -165
  134. package/dist/node/docs/rendering.docblock.js +0 -175
  135. package/dist/node/docs/video-gen.docblock.js +0 -126
  136. package/dist/node/generators/index.js +0 -82
  137. package/dist/node/generators/scene-planner.js +0 -82
  138. package/dist/node/generators/script-generator.js +0 -82
  139. package/dist/node/generators/video-generator.js +0 -82
  140. package/dist/node/i18n/catalogs/en.js +0 -28
  141. package/dist/node/i18n/catalogs/es.js +0 -28
  142. package/dist/node/i18n/catalogs/fr.js +0 -28
  143. package/dist/node/i18n/catalogs/index.js +0 -82
  144. package/dist/node/i18n/index.js +0 -82
  145. package/dist/node/i18n/keys.js +0 -1
  146. package/dist/node/i18n/locale.js +0 -1
  147. package/dist/node/i18n/messages.js +0 -82
  148. package/dist/node/index.js +0 -82
  149. package/dist/node/player/demo-player.js +0 -1
  150. package/dist/node/player/index.js +0 -1
  151. package/dist/node/remotion/Root.js +0 -19
  152. package/dist/node/remotion/index.js +0 -19
  153. package/dist/node/renderers/config.js +0 -1
  154. package/dist/node/renderers/index.js +0 -1
  155. package/dist/node/renderers/local.js +0 -1
  156. package/dist/node/types.js +0 -1
  157. package/dist/node/video-gen.feature.js +0 -1
  158. package/dist/player/demo-player.d.ts +0 -55
  159. package/dist/player/demo-player.js +0 -2
  160. package/dist/player/index.d.ts +0 -2
  161. package/dist/player/index.js +0 -2
  162. package/dist/remotion/Root.d.ts +0 -2
  163. package/dist/remotion/Root.js +0 -20
  164. package/dist/remotion/index.d.ts +0 -1
  165. package/dist/remotion/index.js +0 -20
  166. package/dist/renderers/config.d.ts +0 -28
  167. package/dist/renderers/config.js +0 -2
  168. package/dist/renderers/index.d.ts +0 -3
  169. package/dist/renderers/index.js +0 -2
  170. package/dist/renderers/local.d.ts +0 -17
  171. package/dist/renderers/local.js +0 -2
  172. package/dist/types.d.ts +0 -85
  173. package/dist/types.js +0 -2
  174. package/dist/video-gen.feature.d.ts +0 -1
  175. package/dist/video-gen.feature.js +0 -2
@@ -1,2 +0,0 @@
1
- // @bun
2
- var xH=import.meta.require;import{Easing as w}from"remotion";var L={entrance:w.out(w.exp),exit:w.in(w.exp),emphasis:w.out(w.back(1.4)),linear:w.linear,gentle:w.bezier(0.25,0.1,0.25,1),spring:w.out(w.back(1.7))},I={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},cH={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as A}from"@contractspec/lib.design-system";var f={canvasBackground:A.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:A.colors.accent,gradientStart:A.colors.primary,gradientEnd:A.colors.accent},V={...A,video:f};var T={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function F(K,H){let J=H/1920;return{...K,fontSize:Math.round(K.fontSize*J),letterSpacing:K.letterSpacing?Math.round(K.letterSpacing*J*10)/10:void 0}}import{interpolate as C,useCurrentFrame as XH,useVideoConfig as LH}from"remotion";import{jsx as PH}from"react/jsx-runtime";var _=({text:K,variant:H="body",style:J,enterAt:Q=0,exitAt:$,color:z="#ffffff",align:G="left"})=>{let X=XH(),{width:N}=LH(),P=T[H],R={...F(P,N),...J},U=C(X,[Q,Q+I.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),M=C(U,[0,1],[0,1],{easing:L.entrance}),W=C(U,[0,1],[30,0],{easing:L.entrance}),Y=1,k=0;if($!==void 0){let d=C(X,[$,$+I.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Y=C(d,[0,1],[1,0],{easing:L.exit}),k=C(d,[0,1],[0,-20],{easing:L.exit})}let E=M*Y,m=W+k;return PH("div",{style:{fontSize:R.fontSize,lineHeight:R.lineHeight,fontWeight:R.fontWeight,letterSpacing:R.letterSpacing,color:z,textAlign:G,opacity:E,transform:`translateY(${m}px)`,willChange:"opacity, transform"},children:K})};import{VIDEO_FORMATS as l}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var eH=30,p={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function t(K){let H=K.width/1920,J=K.height/1080;return{horizontal:Math.round(p.horizontal*H),vertical:Math.round(p.vertical*J),contentWidth:Math.round(p.contentWidth*H),contentHeight:Math.round(p.contentHeight*J)}}var HJ={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function JJ(){return[l.landscape,l.square,l.portrait]}import{interpolate as e,useCurrentFrame as MH,useVideoConfig as NH}from"remotion";import{jsx as o,jsxs as qH}from"react/jsx-runtime";var b=({styleOverrides:K,showBranding:H=!0,animateEntrance:J=!0,variant:Q="gradient",children:$})=>{let z=MH(),{width:G,height:X}=NH(),N=V,P=t({type:"custom",width:G,height:X}),q=K?.primaryColor??N.colors.primary,R=K?.accentColor??N.colors.accent,U=K?.darkMode??!0,M;switch(Q){case"solid":M=U?"#0a0a0a":N.colors.background;break;case"gradient":M=U?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${N.colors.background} 0%, ${N.colors.muted} 100%)`;break;case"dark":M="#000000";break}let W=J?e(z,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.entrance}):1,Y=H?e(z,[I.brandReveal,I.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return qH("div",{style:{width:G,height:X,background:M,position:"relative",overflow:"hidden",opacity:W},children:[Q==="gradient"&&o("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${q}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),o("div",{style:{position:"absolute",left:P.horizontal,top:P.vertical,width:P.contentWidth,height:P.contentHeight,display:"flex",flexDirection:"column"},children:$}),H&&o("div",{style:{position:"absolute",bottom:P.vertical/2,right:P.horizontal,opacity:Y,color:U?"#ffffff":"#000000",fontSize:Math.round(16*(G/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as HH,useCurrentFrame as RH,useVideoConfig as YH}from"remotion";import{jsx as v,jsxs as j}from"react/jsx-runtime";var n=({code:K,language:H="typescript",startAt:J=0,typeAnimation:Q=!0,backgroundColor:$=f.codeBackground,textColor:z="#abb2bf",filename:G})=>{let X=RH(),{width:N}=YH(),P=F(T.code,N),q=K.length,R=q*I.codeTypingPerChar,U=Q?Math.floor(HH(X,[J,J+R],[0,q],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):q,M=K.slice(0,U),W=HH(X,[J,J+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.entrance}),Y=Q&&U<q&&X%16<10;return j("div",{style:{backgroundColor:$,borderRadius:16,padding:0,opacity:W,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[j("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[j("div",{style:{display:"flex",gap:8},children:[v("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),v("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),v("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),v("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:P.fontSize*0.7,fontFamily:"monospace"},children:G??H})]}),v("div",{style:{padding:"24px 32px"},children:j("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:P.fontSize,lineHeight:P.lineHeight,color:z,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[M,Y&&v("span",{style:{backgroundColor:z,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as BH,useVideoConfig as ZH}from"remotion";import{jsx as JH}from"react/jsx-runtime";var S=({height:K=4,color:H=V.colors.primary,backgroundColor:J="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let $=BH(),{durationInFrames:z,width:G}=ZH(),X=$/z;return JH("div",{style:{position:"absolute",[Q]:0,left:0,width:G,height:K,backgroundColor:J,zIndex:100},children:JH("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as _H,interpolate as h,Sequence as r,useCurrentFrame as KH,useVideoConfig as DH}from"remotion";import{jsx as B,jsxs as y}from"react/jsx-runtime";var wH=({specName:K,method:H="POST",endpoint:J="/api/users",specCode:Q,generatedOutputs:$=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:z="One spec. Every surface."})=>{let{durationInFrames:G}=DH(),X=V,N=60,P=45,q=210,R=180,U=G-90;return y(_H,{children:[y(b,{variant:"gradient",showBranding:!0,children:[B(r,{from:0,durationInFrames:210,children:y("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:16},children:[y("div",{style:{display:"flex",alignItems:"center",gap:16},children:[B(IH,{method:H,enterAt:10}),B(_,{text:J,variant:"subheading",enterAt:15,color:X.colors.mutedForeground})]}),B(_,{text:K,variant:"title",enterAt:5,color:"#ffffff"}),B("div",{style:{flex:1,marginTop:24},children:B(n,{code:Q,language:"typescript",filename:`${K.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),B(r,{from:180,durationInFrames:G-180,children:y("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:24},children:[B(_,{text:"Generates:",variant:"heading",enterAt:0,color:"#ffffff",align:"center"}),B("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:$.map((M,W)=>B(VH,{label:M,index:W,startFrame:20+W*8},M))}),B(r,{from:U-180,children:B("div",{style:{marginTop:48},children:B(_,{text:z,variant:"heading",enterAt:0,color:X.colors.accent,align:"center"})})})]})})]}),B(S,{})]})},IH=({method:K,enterAt:H})=>{let J=KH(),Q=h(J,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.entrance}),$=h(J,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.emphasis}),z={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return B("div",{style:{opacity:Q,transform:`scale(${$})`,backgroundColor:z[K]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:K})},VH=({label:K,startFrame:H})=>{let J=KH(),Q=h(J,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=h(J,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.emphasis}),z=h(J,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.emphasis});return B("div",{style:{opacity:Q,transform:`translateY(${$}px) scale(${z})`,backgroundColor:"rgba(255,255,255,0.08)",border:"1px solid rgba(255,255,255,0.15)",color:"#ffffff",padding:"16px 32px",borderRadius:12,fontSize:28,fontWeight:500},children:K})};import{interpolate as s,useCurrentFrame as OH,useVideoConfig as kH}from"remotion";import{jsx as O,jsxs as x}from"react/jsx-runtime";var QH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},a=({lines:K,startAt:H=0,prompt:J="$ ",title:Q="Terminal",backgroundColor:$=f.terminalBackground,typingSpeed:z=I.codeTypingPerChar})=>{let G=OH(),{width:X}=kH(),N=F(T.code,X),P=[],q=H;for(let U of K){let M=U.delay??10,W=q+M;if(U.type==="command"){let Y=U.text.length*z;P.push({startFrame:W,endFrame:W+Y}),q=W+Y}else P.push({startFrame:W,endFrame:W+5}),q=W+5}let R=s(G,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.entrance});return x("div",{style:{backgroundColor:$,borderRadius:16,overflow:"hidden",opacity:R,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[O("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),O("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),O("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),O("div",{style:{flex:1,textAlign:"center",color:"#484f58",fontSize:N.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:K.map((U,M)=>{let W=P[M];if(!W||G<W.startFrame)return null;let Y=U.type==="command",k=QH[U.type],E=U.text;if(Y){let UH=s(G,[W.startFrame,W.endFrame],[0,U.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});E=U.text.slice(0,Math.floor(UH))}let m=Y?1:s(G,[W.startFrame,W.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),WH=Y&&G>=W.startFrame&&G<=W.endFrame&&G%16<10;return x("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:N.fontSize,lineHeight:1.8,color:k,opacity:m,whiteSpace:"pre-wrap"},children:[Y&&O("span",{style:{color:"#3fb950"},children:J}),U.type==="comment"&&O("span",{style:{color:QH.comment},children:"# "}),E,WH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${M}-${U.text.slice(0,20)}`)})})]})};import{interpolate as EH,useCurrentFrame as bH}from"remotion";import{jsx as $H,Fragment as FH}from"react/jsx-runtime";var SH=({type:K,durationInFrames:H,direction:J,startAt:Q=0,children:$})=>{let z=bH();if(K==="none"||H===0)return $H(FH,{children:$});let G=EH(z,[Q,Q+H],J==="in"?[0,1]:[1,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),X=TH(K,G);return $H("div",{style:X,children:$})};function TH(K,H){let J=L.entrance(H);switch(K){case"fade":return{opacity:J,width:"100%",height:"100%"};case"slide-left":return{opacity:J,transform:`translateX(${(1-J)*100}%)`,width:"100%",height:"100%"};case"slide-right":return{opacity:J,transform:`translateX(${(1-J)*-100}%)`,width:"100%",height:"100%"};case"wipe":return{clipPath:`inset(0 ${(1-J)*100}% 0 0)`,width:"100%",height:"100%"};default:return{width:"100%",height:"100%"}}}import{AbsoluteFill as CH,interpolate as u,Sequence as g,useCurrentFrame as zH,useVideoConfig as vH}from"remotion";import{jsx as Z,jsxs as c}from"react/jsx-runtime";var AH=({hook:K,message:H,points:J=[],cta:Q="Learn more",ctaUrl:$="contractspec.dev",accentColor:z})=>{let{durationInFrames:G,width:X,height:N}=vH(),q=z??V.colors.accent,R=N>X,U=75,M=60,W=120,Y=G-90;return c(CH,{children:[Z(b,{variant:"gradient",showBranding:!0,children:c("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:R?48:32,textAlign:"center",padding:R?"0 20px":0},children:[Z(g,{from:0,durationInFrames:105,children:Z("div",{style:{width:"100%"},children:Z(_,{text:K,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),Z(g,{from:60,children:Z("div",{style:{width:"100%"},children:Z(_,{text:H,variant:R?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),J.length>0&&Z(g,{from:120,children:Z("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:R?"flex-start":"center",width:"100%",maxWidth:R?"100%":"80%",marginTop:16},children:J.map((k,E)=>Z(fH,{text:k,index:E,startFrame:E*15,accent:q},k))})}),Z(g,{from:Y,children:Z(yH,{cta:Q,url:$,accent:q})})]})}),Z(S,{color:q})]})},fH=({text:K,startFrame:H,accent:J})=>{let Q=zH(),$=u(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=u(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.entrance});return c("div",{style:{opacity:$,transform:`translateX(${z}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[Z("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:J,flexShrink:0}}),K]})},yH=({cta:K,url:H,accent:J})=>{let Q=zH(),$=u(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=u(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:L.emphasis});return c("div",{style:{opacity:$,transform:`scale(${z})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[Z("div",{style:{backgroundColor:J,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:K}),Z("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as hH,Sequence as GH,useVideoConfig as pH}from"remotion";import{jsx as D,jsxs as i}from"react/jsx-runtime";var jH=({title:K,subtitle:H,lines:J,terminalTitle:Q="Terminal",prompt:$="$ ",summary:z})=>{let{durationInFrames:G}=pH(),X=V,N=40,P=G-90;return i(hH,{children:[D(b,{variant:"dark",showBranding:!0,children:i("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[i("div",{children:[D(_,{text:K,variant:"heading",enterAt:5,color:"#ffffff"}),H&&D("div",{style:{marginTop:8},children:D(_,{text:H,variant:"body",enterAt:15,color:X.colors.mutedForeground})})]}),D(GH,{from:40,children:D("div",{style:{flex:1},children:D(a,{lines:J,startAt:0,prompt:$,title:Q})})}),z&&D(GH,{from:P,children:D("div",{style:{marginTop:"auto",paddingTop:24},children:D(_,{text:z,variant:"subheading",enterAt:0,color:X.colors.accent,align:"center"})})})]})}),D(S,{})]})};export{jH as TerminalDemo,a as Terminal,AH as SocialClip,SH as SceneTransitionWrapper,S as ProgressBar,n as CodeBlock,b as BrandFrame,wH as ApiOverview,_ as AnimatedText};
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import type { VideoTypeStyle } from '../../design/typography';
3
- import { videoTypography } from '../../design/typography';
4
- export interface AnimatedTextProps {
5
- /** The text content to display */
6
- text: string;
7
- /** Typography style key or custom style */
8
- variant?: keyof typeof videoTypography;
9
- /** Custom style override */
10
- style?: Partial<VideoTypeStyle>;
11
- /** Frame at which text enters (relative to composition start) */
12
- enterAt?: number;
13
- /** Frame at which text exits. Omit to keep visible. */
14
- exitAt?: number;
15
- /** Color */
16
- color?: string;
17
- /** Text alignment */
18
- align?: 'left' | 'center' | 'right';
19
- /** Additional CSS styles */
20
- className?: string;
21
- }
22
- export declare const AnimatedText: React.FC<AnimatedTextProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var P=import.meta.require;import{Easing as k}from"remotion";var B={entrance:k.out(k.exp),exit:k.in(k.exp),emphasis:k.out(k.back(1.4)),linear:k.linear,gentle:k.bezier(0.25,0.1,0.25,1),spring:k.out(k.back(1.7))},K={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},h={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};var X={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function Z(q,I){let G=I/1920;return{...q,fontSize:Math.round(q.fontSize*G),letterSpacing:q.letterSpacing?Math.round(q.letterSpacing*G*10)/10:void 0}}import{interpolate as z,useCurrentFrame as D,useVideoConfig as W}from"remotion";import{jsx as Y}from"react/jsx-runtime";var E=({text:q,variant:I="body",style:G,enterAt:L=0,exitAt:J,color:_="#ffffff",align:$="left"})=>{let M=D(),{width:F}=W(),V=X[I],H={...Z(V,F),...G},N=z(M,[L,L+K.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),b=z(N,[0,1],[0,1],{easing:B.entrance}),j=z(N,[0,1],[30,0],{easing:B.entrance}),Q=1,R=0;if(J!==void 0){let U=z(M,[J,J+K.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Q=z(U,[0,1],[1,0],{easing:B.exit}),R=z(U,[0,1],[0,-20],{easing:B.exit})}let w=b*Q,C=j+R;return Y("div",{style:{fontSize:H.fontSize,lineHeight:H.lineHeight,fontWeight:H.fontWeight,letterSpacing:H.letterSpacing,color:_,textAlign:$,opacity:w,transform:`translateY(${C}px)`,willChange:"opacity, transform"},children:q})};export{E as AnimatedText};
@@ -1,14 +0,0 @@
1
- import type { VideoStyleOverrides } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
2
- import React from 'react';
3
- export interface BrandFrameProps {
4
- /** Override style tokens */
5
- styleOverrides?: VideoStyleOverrides;
6
- /** Show the ContractSpec logo/brand in bottom-right */
7
- showBranding?: boolean;
8
- /** Animate entrance */
9
- animateEntrance?: boolean;
10
- /** Background variant */
11
- variant?: 'solid' | 'gradient' | 'dark';
12
- children: React.ReactNode;
13
- }
14
- export declare const BrandFrame: React.FC<BrandFrameProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var w=import.meta.require;import{Easing as q}from"remotion";var M={entrance:q.out(q.exp),exit:q.in(q.exp),emphasis:q.out(q.back(1.4)),linear:q.linear,gentle:q.bezier(0.25,0.1,0.25,1),spring:q.out(q.back(1.7))},z={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},Z={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as L}from"@contractspec/lib.design-system";var V={canvasBackground:L.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:L.colors.accent,gradientStart:L.colors.primary,gradientEnd:L.colors.accent},R={...L,video:V};import{VIDEO_FORMATS as P}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var h=30,U={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function _(G){let J=G.width/1920,N=G.height/1080;return{horizontal:Math.round(U.horizontal*J),vertical:Math.round(U.vertical*N),contentWidth:Math.round(U.contentWidth*J),contentHeight:Math.round(U.contentHeight*N)}}var u={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function m(){return[P.landscape,P.square,P.portrait]}import{interpolate as j,useCurrentFrame as p,useVideoConfig as D}from"remotion";import{jsx as X,jsxs as S}from"react/jsx-runtime";var r=({styleOverrides:G,showBranding:J=!0,animateEntrance:N=!0,variant:Y="gradient",children:B})=>{let A=p(),{width:W,height:I}=D(),K=R,H=_({type:"custom",width:W,height:I}),F=G?.primaryColor??K.colors.primary,b=G?.accentColor??K.colors.accent,$=G?.darkMode??!0,Q;switch(Y){case"solid":Q=$?"#0a0a0a":K.colors.background;break;case"gradient":Q=$?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${K.colors.background} 0%, ${K.colors.muted} 100%)`;break;case"dark":Q="#000000";break}let x=N?j(A,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,C=J?j(A,[z.brandReveal,z.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return S("div",{style:{width:W,height:I,background:Q,position:"relative",overflow:"hidden",opacity:x},children:[Y==="gradient"&&X("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${F}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),X("div",{style:{position:"absolute",left:H.horizontal,top:H.vertical,width:H.contentWidth,height:H.contentHeight,display:"flex",flexDirection:"column"},children:B}),J&&X("div",{style:{position:"absolute",bottom:H.vertical/2,right:H.horizontal,opacity:C,color:$?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};export{r as BrandFrame};
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- export interface CodeBlockProps {
3
- /** Code string to display */
4
- code: string;
5
- /** Language label shown in the top bar */
6
- language?: string;
7
- /** Frame at which typing starts */
8
- startAt?: number;
9
- /** Whether to animate typing or show all at once */
10
- typeAnimation?: boolean;
11
- /** Background color */
12
- backgroundColor?: string;
13
- /** Text color */
14
- textColor?: string;
15
- /** Filename to show in the title bar */
16
- filename?: string;
17
- }
18
- export declare const CodeBlock: React.FC<CodeBlockProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var b=import.meta.require;import{Easing as q}from"remotion";var U={entrance:q.out(q.exp),exit:q.in(q.exp),emphasis:q.out(q.back(1.4)),linear:q.linear,gentle:q.bezier(0.25,0.1,0.25,1),spring:q.out(q.back(1.7))},X={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},T={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as H}from"@contractspec/lib.design-system";var N={canvasBackground:H.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:H.colors.accent,gradientStart:H.colors.primary,gradientEnd:H.colors.accent},x={...H,video:N};var Y={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function Z(z,K){let B=K/1920;return{...z,fontSize:Math.round(z.fontSize*B),letterSpacing:z.letterSpacing?Math.round(z.letterSpacing*B*10)/10:void 0}}import{interpolate as _,useCurrentFrame as V,useVideoConfig as v}from"remotion";import{jsx as G,jsxs as J}from"react/jsx-runtime";var y=({code:z,language:K="typescript",startAt:B=0,typeAnimation:O=!0,backgroundColor:$=N.codeBackground,textColor:Q="#abb2bf",filename:P})=>{let L=V(),{width:D}=v(),M=Z(Y.code,D),I=z.length,F=I*X.codeTypingPerChar,R=O?Math.floor(_(L,[B,B+F],[0,I],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):I,W=z.slice(0,R),w=_(L,[B,B+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:U.entrance}),S=O&&R<I&&L%16<10;return J("div",{style:{backgroundColor:$,borderRadius:16,padding:0,opacity:w,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[J("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[J("div",{style:{display:"flex",gap:8},children:[G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),G("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:M.fontSize*0.7,fontFamily:"monospace"},children:P??K})]}),G("div",{style:{padding:"24px 32px"},children:J("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:M.fontSize,lineHeight:M.lineHeight,color:Q,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[W,S&&G("span",{style:{backgroundColor:Q,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};export{y as CodeBlock};
@@ -1,12 +0,0 @@
1
- export type { AnimatedTextProps } from './animated-text';
2
- export { AnimatedText } from './animated-text';
3
- export type { BrandFrameProps } from './brand-frame';
4
- export { BrandFrame } from './brand-frame';
5
- export type { CodeBlockProps } from './code-block';
6
- export { CodeBlock } from './code-block';
7
- export type { ProgressBarProps } from './progress-bar';
8
- export { ProgressBar } from './progress-bar';
9
- export type { TerminalLine, TerminalProps } from './terminal';
10
- export { Terminal } from './terminal';
11
- export type { SceneTransitionProps } from './transition';
12
- export { SceneTransitionWrapper } from './transition';
@@ -1,2 +0,0 @@
1
- // @bun
2
- var XG=import.meta.require;import{Easing as R}from"remotion";var X={entrance:R.out(R.exp),exit:R.in(R.exp),emphasis:R.out(R.back(1.4)),linear:R.linear,gentle:R.bezier(0.25,0.1,0.25,1),spring:R.out(R.back(1.7))},Y={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},RG={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as F}from"@contractspec/lib.design-system";var b={canvasBackground:F.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:F.colors.accent,gradientStart:F.colors.primary,gradientEnd:F.colors.accent},O={...F,video:b};var Z={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function D(H,J){let G=J/1920;return{...H,fontSize:Math.round(H.fontSize*G),letterSpacing:H.letterSpacing?Math.round(H.letterSpacing*G*10)/10:void 0}}import{interpolate as V,useCurrentFrame as l,useVideoConfig as o}from"remotion";import{jsx as s}from"react/jsx-runtime";var r=({text:H,variant:J="body",style:G,enterAt:q=0,exitAt:P,color:B="#ffffff",align:U="left"})=>{let z=l(),{width:L}=o(),$=Z[J],_={...D($,L),...G},K=V(z,[q,q+Y.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=V(K,[0,1],[0,1],{easing:X.entrance}),Q=V(K,[0,1],[30,0],{easing:X.entrance}),W=1,k=0;if(P!==void 0){let C=V(z,[P,P+Y.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});W=V(C,[0,1],[1,0],{easing:X.exit}),k=V(C,[0,1],[0,-20],{easing:X.exit})}let T=N*W,j=Q+k;return s("div",{style:{fontSize:_.fontSize,lineHeight:_.lineHeight,fontWeight:_.fontWeight,letterSpacing:_.letterSpacing,color:B,textAlign:U,opacity:T,transform:`translateY(${j}px)`,willChange:"opacity, transform"},children:H})};import{VIDEO_FORMATS as x}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var TG=30,S={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function p(H){let J=H.width/1920,G=H.height/1080;return{horizontal:Math.round(S.horizontal*J),vertical:Math.round(S.vertical*G),contentWidth:Math.round(S.contentWidth*J),contentHeight:Math.round(S.contentHeight*G)}}var OG={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function SG(){return[x.landscape,x.square,x.portrait]}import{interpolate as h,useCurrentFrame as n,useVideoConfig as a}from"remotion";import{jsx as v,jsxs as t}from"react/jsx-runtime";var i=({styleOverrides:H,showBranding:J=!0,animateEntrance:G=!0,variant:q="gradient",children:P})=>{let B=n(),{width:U,height:z}=a(),L=O,$=p({type:"custom",width:U,height:z}),M=H?.primaryColor??L.colors.primary,_=H?.accentColor??L.colors.accent,K=H?.darkMode??!0,N;switch(q){case"solid":N=K?"#0a0a0a":L.colors.background;break;case"gradient":N=K?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${L.colors.background} 0%, ${L.colors.muted} 100%)`;break;case"dark":N="#000000";break}let Q=G?h(B,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:X.entrance}):1,W=J?h(B,[Y.brandReveal,Y.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return t("div",{style:{width:U,height:z,background:N,position:"relative",overflow:"hidden",opacity:Q},children:[q==="gradient"&&v("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${M}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),v("div",{style:{position:"absolute",left:$.horizontal,top:$.vertical,width:$.contentWidth,height:$.contentHeight,display:"flex",flexDirection:"column"},children:P}),J&&v("div",{style:{position:"absolute",bottom:$.vertical/2,right:$.horizontal,opacity:W,color:K?"#ffffff":"#000000",fontSize:Math.round(16*(U/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as y,useCurrentFrame as e,useVideoConfig as GG}from"remotion";import{jsx as w,jsxs as E}from"react/jsx-runtime";var HG=({code:H,language:J="typescript",startAt:G=0,typeAnimation:q=!0,backgroundColor:P=b.codeBackground,textColor:B="#abb2bf",filename:U})=>{let z=e(),{width:L}=GG(),$=D(Z.code,L),M=H.length,_=M*Y.codeTypingPerChar,K=q?Math.floor(y(z,[G,G+_],[0,M],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):M,N=H.slice(0,K),Q=y(z,[G,G+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:X.entrance}),W=q&&K<M&&z%16<10;return E("div",{style:{backgroundColor:P,borderRadius:16,padding:0,opacity:Q,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[E("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[E("div",{style:{display:"flex",gap:8},children:[w("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),w("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),w("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),w("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:$.fontSize*0.7,fontFamily:"monospace"},children:U??J})]}),w("div",{style:{padding:"24px 32px"},children:E("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:$.fontSize,lineHeight:$.lineHeight,color:B,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,W&&w("span",{style:{backgroundColor:B,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as JG,useVideoConfig as KG}from"remotion";import{jsx as u}from"react/jsx-runtime";var QG=({height:H=4,color:J=O.colors.primary,backgroundColor:G="rgba(255,255,255,0.1)",position:q="bottom"})=>{let P=JG(),{durationInFrames:B,width:U}=KG(),z=P/B;return u("div",{style:{position:"absolute",[q]:0,left:0,width:U,height:H,backgroundColor:G,zIndex:100},children:u("div",{style:{width:`${z*100}%`,height:"100%",backgroundColor:J,transition:"none"}})})};import{interpolate as f,useCurrentFrame as UG,useVideoConfig as $G}from"remotion";import{jsx as I,jsxs as A}from"react/jsx-runtime";var m={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},qG=({lines:H,startAt:J=0,prompt:G="$ ",title:q="Terminal",backgroundColor:P=b.terminalBackground,typingSpeed:B=Y.codeTypingPerChar})=>{let U=UG(),{width:z}=$G(),L=D(Z.code,z),$=[],M=J;for(let K of H){let N=K.delay??10,Q=M+N;if(K.type==="command"){let W=K.text.length*B;$.push({startFrame:Q,endFrame:Q+W}),M=Q+W}else $.push({startFrame:Q,endFrame:Q+5}),M=Q+5}let _=f(U,[J,J+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:X.entrance});return A("div",{style:{backgroundColor:P,borderRadius:16,overflow:"hidden",opacity:_,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[A("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[A("div",{style:{display:"flex",gap:8},children:[I("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),I("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),I("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),I("div",{style:{flex:1,textAlign:"center",color:"#484f58",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:q})]}),I("div",{style:{padding:"24px 32px",minHeight:200},children:H.map((K,N)=>{let Q=$[N];if(!Q||U<Q.startFrame)return null;let W=K.type==="command",k=m[K.type],T=K.text;if(W){let d=f(U,[Q.startFrame,Q.endFrame],[0,K.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});T=K.text.slice(0,Math.floor(d))}let j=W?1:f(U,[Q.startFrame,Q.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),g=W&&U>=Q.startFrame&&U<=Q.endFrame&&U%16<10;return A("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:1.8,color:k,opacity:j,whiteSpace:"pre-wrap"},children:[W&&I("span",{style:{color:"#3fb950"},children:G}),K.type==="comment"&&I("span",{style:{color:m.comment},children:"# "}),T,g&&I("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${N}-${K.text.slice(0,20)}`)})})]})};import{interpolate as zG,useCurrentFrame as PG}from"remotion";import{jsx as c,Fragment as NG}from"react/jsx-runtime";var WG=({type:H,durationInFrames:J,direction:G,startAt:q=0,children:P})=>{let B=PG();if(H==="none"||J===0)return c(NG,{children:P});let U=zG(B,[q,q+J],G==="in"?[0,1]:[1,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=BG(H,U);return c("div",{style:z,children:P})};function BG(H,J){let G=X.entrance(J);switch(H){case"fade":return{opacity:G,width:"100%",height:"100%"};case"slide-left":return{opacity:G,transform:`translateX(${(1-G)*100}%)`,width:"100%",height:"100%"};case"slide-right":return{opacity:G,transform:`translateX(${(1-G)*-100}%)`,width:"100%",height:"100%"};case"wipe":return{clipPath:`inset(0 ${(1-G)*100}% 0 0)`,width:"100%",height:"100%"};default:return{width:"100%",height:"100%"}}}export{qG as Terminal,WG as SceneTransitionWrapper,QG as ProgressBar,HG as CodeBlock,i as BrandFrame,r as AnimatedText};
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- export interface ProgressBarProps {
3
- /** Bar height in pixels */
4
- height?: number;
5
- /** Bar color */
6
- color?: string;
7
- /** Background color */
8
- backgroundColor?: string;
9
- /** Position */
10
- position?: 'top' | 'bottom';
11
- }
12
- export declare const ProgressBar: React.FC<ProgressBarProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var R=import.meta.require;import{defaultTokens as q}from"@contractspec/lib.design-system";var N={canvasBackground:q.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:q.colors.accent,gradientStart:q.colors.primary,gradientEnd:q.colors.accent},z={...q,video:N};import{useCurrentFrame as O,useVideoConfig as Q}from"remotion";import{jsx as A}from"react/jsx-runtime";var Z=({height:D=4,color:E=z.colors.primary,backgroundColor:G="rgba(255,255,255,0.1)",position:H="bottom"})=>{let J=O(),{durationInFrames:K,width:L}=Q(),M=J/K;return A("div",{style:{position:"absolute",[H]:0,left:0,width:L,height:D,backgroundColor:G,zIndex:100},children:A("div",{style:{width:`${M*100}%`,height:"100%",backgroundColor:E,transition:"none"}})})};export{Z as ProgressBar};
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- export interface TerminalLine {
3
- /** The text content */
4
- text: string;
5
- /** Line type determines styling */
6
- type: 'command' | 'output' | 'error' | 'success' | 'comment';
7
- /** Delay in frames before this line appears (relative to previous line end) */
8
- delay?: number;
9
- }
10
- export interface TerminalProps {
11
- /** Lines to display in sequence */
12
- lines: TerminalLine[];
13
- /** Frame at which the terminal appears */
14
- startAt?: number;
15
- /** Terminal prompt string */
16
- prompt?: string;
17
- /** Terminal title */
18
- title?: string;
19
- /** Background color */
20
- backgroundColor?: string;
21
- /** Typing speed in frames per character (for command lines) */
22
- typingSpeed?: number;
23
- }
24
- export declare const Terminal: React.FC<TerminalProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var C=import.meta.require;import{Easing as B}from"remotion";var D={entrance:B.out(B.exp),exit:B.in(B.exp),emphasis:B.out(B.back(1.4)),linear:B.linear,gentle:B.bezier(0.25,0.1,0.25,1),spring:B.out(B.back(1.7))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},u={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as Q}from"@contractspec/lib.design-system";var N={canvasBackground:Q.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:Q.colors.accent,gradientStart:Q.colors.primary,gradientEnd:Q.colors.accent},c={...Q,video:N};var w={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function L(H,M){let U=M/1920;return{...H,fontSize:Math.round(H.fontSize*U),letterSpacing:H.letterSpacing?Math.round(H.letterSpacing*U*10)/10:void 0}}import{interpolate as R,useCurrentFrame as S,useVideoConfig as E}from"remotion";import{jsx as G,jsxs as Z}from"react/jsx-runtime";var P={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},a=({lines:H,startAt:M=0,prompt:U="$ ",title:_="Terminal",backgroundColor:O=N.terminalBackground,typingSpeed:A=V.codeTypingPerChar})=>{let J=S(),{width:F}=E(),W=L(w.code,F),$=[],I=M;for(let z of H){let X=z.delay??10,q=I+X;if(z.type==="command"){let K=z.text.length*A;$.push({startFrame:q,endFrame:q+K}),I=q+K}else $.push({startFrame:q,endFrame:q+5}),I=q+5}let b=R(J,[M,M+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:D.entrance});return Z("div",{style:{backgroundColor:O,borderRadius:16,overflow:"hidden",opacity:b,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[Z("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[Z("div",{style:{display:"flex",gap:8},children:[G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),G("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),G("div",{style:{flex:1,textAlign:"center",color:"#484f58",fontSize:W.fontSize*0.7,fontFamily:"monospace"},children:_})]}),G("div",{style:{padding:"24px 32px",minHeight:200},children:H.map((z,X)=>{let q=$[X];if(!q||J<q.startFrame)return null;let K=z.type==="command",v=P[z.type],Y=z.text;if(K){let j=R(J,[q.startFrame,q.endFrame],[0,z.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Y=z.text.slice(0,Math.floor(j))}let k=K?1:R(J,[q.startFrame,q.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),h=K&&J>=q.startFrame&&J<=q.endFrame&&J%16<10;return Z("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:W.fontSize,lineHeight:1.8,color:v,opacity:k,whiteSpace:"pre-wrap"},children:[K&&G("span",{style:{color:"#3fb950"},children:U}),z.type==="comment"&&G("span",{style:{color:P.comment},children:"# "}),Y,h&&G("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${X}-${z.text.slice(0,20)}`)})})]})};export{a as Terminal};
@@ -1,14 +0,0 @@
1
- import type { SceneTransitionType } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
2
- import React from 'react';
3
- export interface SceneTransitionProps {
4
- /** Transition type */
5
- type: SceneTransitionType;
6
- /** Duration of the transition in frames */
7
- durationInFrames: number;
8
- /** 'in' = entering, 'out' = exiting */
9
- direction: 'in' | 'out';
10
- /** Frame at which the transition starts (relative to sequence) */
11
- startAt?: number;
12
- children: React.ReactNode;
13
- }
14
- export declare const SceneTransitionWrapper: React.FC<SceneTransitionProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var V=import.meta.require;import{Easing as k}from"remotion";var J={entrance:k.out(k.exp),exit:k.in(k.exp),emphasis:k.out(k.back(1.4)),linear:k.linear,gentle:k.bezier(0.25,0.1,0.25,1),spring:k.out(k.back(1.7))},Y={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},Z={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{interpolate as O,useCurrentFrame as Q}from"remotion";import{jsx as K,Fragment as U}from"react/jsx-runtime";var q=({type:B,durationInFrames:D,direction:z,startAt:G=0,children:H})=>{let L=Q();if(B==="none"||D===0)return K(U,{children:H});let M=O(L,[G,G+D],z==="in"?[0,1]:[1,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=R(B,M);return K("div",{style:N,children:H})};function R(B,D){let z=J.entrance(D);switch(B){case"fade":return{opacity:z,width:"100%",height:"100%"};case"slide-left":return{opacity:z,transform:`translateX(${(1-z)*100}%)`,width:"100%",height:"100%"};case"slide-right":return{opacity:z,transform:`translateX(${(1-z)*-100}%)`,width:"100%",height:"100%"};case"wipe":return{clipPath:`inset(0 ${(1-z)*100}% 0 0)`,width:"100%",height:"100%"};default:return{width:"100%",height:"100%"}}}export{q as SceneTransitionWrapper};
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- export interface SocialClipProps {
3
- /** Hook line -- the attention grabber (first 3 seconds) */
4
- hook: string;
5
- /** Main message / value proposition */
6
- message: string;
7
- /** Supporting points (shown as a list) */
8
- points?: string[];
9
- /** Call to action */
10
- cta?: string;
11
- /** CTA URL (displayed, not clickable in video) */
12
- ctaUrl?: string;
13
- /** Accent color override */
14
- accentColor?: string;
15
- }
16
- export declare const SocialClip: React.FC<SocialClipProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var HG=import.meta.require;import{Easing as z}from"remotion";var U={entrance:z.out(z.exp),exit:z.in(z.exp),emphasis:z.out(z.back(1.4)),linear:z.linear,gentle:z.bezier(0.25,0.1,0.25,1),spring:z.out(z.back(1.7))},B={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},LG={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as P}from"@contractspec/lib.design-system";var g={canvasBackground:P.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:P.colors.accent,gradientStart:P.colors.primary,gradientEnd:P.colors.accent},D={...P,video:g};var j={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function v(G,H){let J=H/1920;return{...G,fontSize:Math.round(G.fontSize*J),letterSpacing:G.letterSpacing?Math.round(G.letterSpacing*J*10)/10:void 0}}import{interpolate as Z,useCurrentFrame as c,useVideoConfig as d}from"remotion";import{jsx as l}from"react/jsx-runtime";var S=({text:G,variant:H="body",style:J,enterAt:L=0,exitAt:N,color:Q="#ffffff",align:W="left"})=>{let X=c(),{width:q}=d(),M=j[H],$={...v(M,q),...J},R=Z(X,[L,L+B.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),_=Z(R,[0,1],[0,1],{easing:U.entrance}),w=Z(R,[0,1],[30,0],{easing:U.entrance}),I=1,V=0;if(N!==void 0){let T=Z(X,[N,N+B.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});I=Z(T,[0,1],[1,0],{easing:U.exit}),V=Z(T,[0,1],[0,-20],{easing:U.exit})}let b=_*I,m=w+V;return l("div",{style:{fontSize:$.fontSize,lineHeight:$.lineHeight,fontWeight:$.fontWeight,letterSpacing:$.letterSpacing,color:Q,textAlign:W,opacity:b,transform:`translateY(${m}px)`,willChange:"opacity, transform"},children:G})};import{VIDEO_FORMATS as k}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var _G=30,C={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function y(G){let H=G.width/1920,J=G.height/1080;return{horizontal:Math.round(C.horizontal*H),vertical:Math.round(C.vertical*J),contentWidth:Math.round(C.contentWidth*H),contentHeight:Math.round(C.contentHeight*J)}}var YG={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function IG(){return[k.landscape,k.square,k.portrait]}import{interpolate as h,useCurrentFrame as o,useVideoConfig as n}from"remotion";import{jsx as E,jsxs as s}from"react/jsx-runtime";var f=({styleOverrides:G,showBranding:H=!0,animateEntrance:J=!0,variant:L="gradient",children:N})=>{let Q=o(),{width:W,height:X}=n(),q=D,M=y({type:"custom",width:W,height:X}),Y=G?.primaryColor??q.colors.primary,$=G?.accentColor??q.colors.accent,R=G?.darkMode??!0,_;switch(L){case"solid":_=R?"#0a0a0a":q.colors.background;break;case"gradient":_=R?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${q.colors.background} 0%, ${q.colors.muted} 100%)`;break;case"dark":_="#000000";break}let w=J?h(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:U.entrance}):1,I=H?h(Q,[B.brandReveal,B.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return s("div",{style:{width:W,height:X,background:_,position:"relative",overflow:"hidden",opacity:w},children:[L==="gradient"&&E("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${Y}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),E("div",{style:{position:"absolute",left:M.horizontal,top:M.vertical,width:M.contentWidth,height:M.contentHeight,display:"flex",flexDirection:"column"},children:N}),H&&E("div",{style:{position:"absolute",bottom:M.vertical/2,right:M.horizontal,opacity:I,color:R?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{useCurrentFrame as r,useVideoConfig as i}from"remotion";import{jsx as p}from"react/jsx-runtime";var u=({height:G=4,color:H=D.colors.primary,backgroundColor:J="rgba(255,255,255,0.1)",position:L="bottom"})=>{let N=r(),{durationInFrames:Q,width:W}=i(),X=N/Q;return p("div",{style:{position:"absolute",[L]:0,left:0,width:W,height:G,backgroundColor:J,zIndex:100},children:p("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as a,interpolate as F,Sequence as A,useCurrentFrame as x,useVideoConfig as t}from"remotion";import{jsx as K,jsxs as O}from"react/jsx-runtime";var yG=({hook:G,message:H,points:J=[],cta:L="Learn more",ctaUrl:N="contractspec.dev",accentColor:Q})=>{let{durationInFrames:W,width:X,height:q}=t(),Y=Q??D.colors.accent,$=q>X,R=75,_=60,w=120,I=W-90;return O(a,{children:[K(f,{variant:"gradient",showBranding:!0,children:O("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:$?48:32,textAlign:"center",padding:$?"0 20px":0},children:[K(A,{from:0,durationInFrames:105,children:K("div",{style:{width:"100%"},children:K(S,{text:G,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),K(A,{from:60,children:K("div",{style:{width:"100%"},children:K(S,{text:H,variant:$?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),J.length>0&&K(A,{from:120,children:K("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:$?"flex-start":"center",width:"100%",maxWidth:$?"100%":"80%",marginTop:16},children:J.map((V,b)=>K(e,{text:V,index:b,startFrame:b*15,accent:Y},V))})}),K(A,{from:I,children:K(GG,{cta:L,url:N,accent:Y})})]})}),K(u,{color:Y})]})},e=({text:G,startFrame:H,accent:J})=>{let L=x(),N=F(L,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),Q=F(L,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:U.entrance});return O("div",{style:{opacity:N,transform:`translateX(${Q}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[K("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:J,flexShrink:0}}),G]})},GG=({cta:G,url:H,accent:J})=>{let L=x(),N=F(L,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),Q=F(L,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:U.emphasis});return O("div",{style:{opacity:N,transform:`scale(${Q})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[K("div",{style:{backgroundColor:J,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:G}),K("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};export{yG as SocialClip};
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import type { TerminalLine } from './primitives/terminal';
3
- export interface TerminalDemoProps {
4
- /** Title shown above the terminal */
5
- title: string;
6
- /** Subtitle / description */
7
- subtitle?: string;
8
- /** Terminal lines (commands + output) */
9
- lines: TerminalLine[];
10
- /** Terminal window title */
11
- terminalTitle?: string;
12
- /** Prompt string */
13
- prompt?: string;
14
- /** Summary text shown after terminal completes */
15
- summary?: string;
16
- }
17
- export declare const TerminalDemo: React.FC<TerminalDemoProps>;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var zG=import.meta.require;import{Easing as R}from"remotion";var Y={entrance:R.out(R.exp),exit:R.in(R.exp),emphasis:R.out(R.back(1.4)),linear:R.linear,gentle:R.bezier(0.25,0.1,0.25,1),spring:R.out(R.back(1.7))},_={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},NG={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as w}from"@contractspec/lib.design-system";var j={canvasBackground:w.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:w.colors.accent,gradientStart:w.colors.primary,gradientEnd:w.colors.accent},D={...w,video:j};var b={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function A(G,J){let $=J/1920;return{...G,fontSize:Math.round(G.fontSize*$),letterSpacing:G.letterSpacing?Math.round(G.letterSpacing*$*10)/10:void 0}}import{interpolate as V,useCurrentFrame as a,useVideoConfig as r}from"remotion";import{jsx as n}from"react/jsx-runtime";var O=({text:G,variant:J="body",style:$,enterAt:N=0,exitAt:W,color:X="#ffffff",align:Q="left"})=>{let U=a(),{width:L}=r(),z=b[J],P={...A(z,L),...$},K=V(U,[N,N+_.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),M=V(K,[0,1],[0,1],{easing:Y.entrance}),H=V(K,[0,1],[30,0],{easing:Y.entrance}),q=1,F=0;if(W!==void 0){let T=V(U,[W,W+_.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});q=V(T,[0,1],[1,0],{easing:Y.exit}),F=V(T,[0,1],[0,-20],{easing:Y.exit})}let k=M*q,S=H+F;return n("div",{style:{fontSize:P.fontSize,lineHeight:P.lineHeight,fontWeight:P.fontWeight,letterSpacing:P.letterSpacing,color:X,textAlign:Q,opacity:k,transform:`translateY(${S}px)`,willChange:"opacity, transform"},children:G})};import{VIDEO_FORMATS as v}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var ZG=30,C={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function x(G){let J=G.width/1920,$=G.height/1080;return{horizontal:Math.round(C.horizontal*J),vertical:Math.round(C.vertical*$),contentWidth:Math.round(C.contentWidth*J),contentHeight:Math.round(C.contentHeight*$)}}var DG={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function VG(){return[v.landscape,v.square,v.portrait]}import{interpolate as p,useCurrentFrame as i,useVideoConfig as t}from"remotion";import{jsx as h,jsxs as e}from"react/jsx-runtime";var u=({styleOverrides:G,showBranding:J=!0,animateEntrance:$=!0,variant:N="gradient",children:W})=>{let X=i(),{width:Q,height:U}=t(),L=D,z=x({type:"custom",width:Q,height:U}),Z=G?.primaryColor??L.colors.primary,P=G?.accentColor??L.colors.accent,K=G?.darkMode??!0,M;switch(N){case"solid":M=K?"#0a0a0a":L.colors.background;break;case"gradient":M=K?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${L.colors.background} 0%, ${L.colors.muted} 100%)`;break;case"dark":M="#000000";break}let H=$?p(X,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:Y.entrance}):1,q=J?p(X,[_.brandReveal,_.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return e("div",{style:{width:Q,height:U,background:M,position:"relative",overflow:"hidden",opacity:H},children:[N==="gradient"&&h("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${Z}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),h("div",{style:{position:"absolute",left:z.horizontal,top:z.vertical,width:z.contentWidth,height:z.contentHeight,display:"flex",flexDirection:"column"},children:W}),J&&h("div",{style:{position:"absolute",bottom:z.vertical/2,right:z.horizontal,opacity:q,color:K?"#ffffff":"#000000",fontSize:Math.round(16*(Q/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{useCurrentFrame as GG,useVideoConfig as HG}from"remotion";import{jsx as c}from"react/jsx-runtime";var g=({height:G=4,color:J=D.colors.primary,backgroundColor:$="rgba(255,255,255,0.1)",position:N="bottom"})=>{let W=GG(),{durationInFrames:X,width:Q}=HG(),U=W/X;return c("div",{style:{position:"absolute",[N]:0,left:0,width:Q,height:G,backgroundColor:$,zIndex:100},children:c("div",{style:{width:`${U*100}%`,height:"100%",backgroundColor:J,transition:"none"}})})};import{interpolate as f,useCurrentFrame as JG,useVideoConfig as KG}from"remotion";import{jsx as B,jsxs as E}from"react/jsx-runtime";var d={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},m=({lines:G,startAt:J=0,prompt:$="$ ",title:N="Terminal",backgroundColor:W=j.terminalBackground,typingSpeed:X=_.codeTypingPerChar})=>{let Q=JG(),{width:U}=KG(),L=A(b.code,U),z=[],Z=J;for(let K of G){let M=K.delay??10,H=Z+M;if(K.type==="command"){let q=K.text.length*X;z.push({startFrame:H,endFrame:H+q}),Z=H+q}else z.push({startFrame:H,endFrame:H+5}),Z=H+5}let P=f(Q,[J,J+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:Y.entrance});return E("div",{style:{backgroundColor:W,borderRadius:16,overflow:"hidden",opacity:P,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[E("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[E("div",{style:{display:"flex",gap:8},children:[B("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),B("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),B("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),B("div",{style:{flex:1,textAlign:"center",color:"#484f58",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:N})]}),B("div",{style:{padding:"24px 32px",minHeight:200},children:G.map((K,M)=>{let H=z[M];if(!H||Q<H.startFrame)return null;let q=K.type==="command",F=d[K.type],k=K.text;if(q){let s=f(Q,[H.startFrame,H.endFrame],[0,K.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});k=K.text.slice(0,Math.floor(s))}let S=q?1:f(Q,[H.startFrame,H.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),o=q&&Q>=H.startFrame&&Q<=H.endFrame&&Q%16<10;return E("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:1.8,color:F,opacity:S,whiteSpace:"pre-wrap"},children:[q&&B("span",{style:{color:"#3fb950"},children:$}),K.type==="comment"&&B("span",{style:{color:d.comment},children:"# "}),k,o&&B("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${M}-${K.text.slice(0,20)}`)})})]})};import{AbsoluteFill as QG,Sequence as l,useVideoConfig as $G}from"remotion";import{jsx as I,jsxs as y}from"react/jsx-runtime";var oG=({title:G,subtitle:J,lines:$,terminalTitle:N="Terminal",prompt:W="$ ",summary:X})=>{let{durationInFrames:Q}=$G(),U=D,L=40,z=Q-90;return y(QG,{children:[I(u,{variant:"dark",showBranding:!0,children:y("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[y("div",{children:[I(O,{text:G,variant:"heading",enterAt:5,color:"#ffffff"}),J&&I("div",{style:{marginTop:8},children:I(O,{text:J,variant:"body",enterAt:15,color:U.colors.mutedForeground})})]}),I(l,{from:40,children:I("div",{style:{flex:1},children:I(m,{lines:$,startAt:0,prompt:W,title:N})})}),X&&I(l,{from:z,children:I("div",{style:{marginTop:"auto",paddingTop:24},children:I(O,{text:X,variant:"subheading",enterAt:0,color:U.colors.accent,align:"center"})})})]})}),I(g,{})]})};export{oG as TerminalDemo};
@@ -1,4 +0,0 @@
1
- export * from './layouts';
2
- export * from './motion';
3
- export * from './tokens';
4
- export * from './typography';
@@ -1,2 +0,0 @@
1
- // @bun
2
- var K=import.meta.require;import{Easing as x}from"remotion";var Q={entrance:x.out(x.exp),exit:x.in(x.exp),emphasis:x.out(x.back(1.4)),linear:x.linear,gentle:x.bezier(0.25,0.1,0.25,1),spring:x.out(x.back(1.7))},U={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},$={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};import{defaultTokens as z}from"@contractspec/lib.design-system";var J={canvasBackground:z.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:z.colors.accent,gradientStart:z.colors.primary,gradientEnd:z.colors.accent},C={...z,video:J};var X={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function Y(j,B){let q=B/1920;return{...j,fontSize:Math.round(j.fontSize*q),letterSpacing:j.letterSpacing?Math.round(j.letterSpacing*q*10)/10:void 0}}import{VIDEO_FORMATS as H}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var A=30,G={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function D(j){let B=j.width/1920,q=j.height/1080;return{horizontal:Math.round(G.horizontal*B),vertical:Math.round(G.vertical*q),contentWidth:Math.round(G.contentWidth*B),contentHeight:Math.round(G.contentHeight*q)}}var F={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function I(){return[H.landscape,H.square,H.portrait]}export{X as videoTypography,$ as videoTransitions,G as videoSafeZone,F as videoPositions,Q as videoEasing,U as videoDurations,Y as scaleTypography,D as scaleSafeZone,I as getAllFormatVariants,C as defaultVideoTheme,J as defaultVideoColors,z as defaultTokens,H as VIDEO_FORMATS,A as DEFAULT_FPS};
@@ -1,69 +0,0 @@
1
- import type { VideoFormat } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
2
- import { VIDEO_FORMATS } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
3
- export { VIDEO_FORMATS };
4
- /** Standard FPS for all video output. */
5
- export declare const DEFAULT_FPS = 30;
6
- /**
7
- * Padding and safe zones for text content within video frames.
8
- * Values are in pixels for 1920x1080; scale proportionally for other formats.
9
- */
10
- export declare const videoSafeZone: {
11
- /** Horizontal padding from edges */
12
- readonly horizontal: 120;
13
- /** Vertical padding from edges */
14
- readonly vertical: 80;
15
- /** Content area width (1920 - 2 * 120) */
16
- readonly contentWidth: 1680;
17
- /** Content area height (1080 - 2 * 80) */
18
- readonly contentHeight: 920;
19
- };
20
- /**
21
- * Scale safe zone values for a target format.
22
- */
23
- export declare function scaleSafeZone(format: VideoFormat): {
24
- horizontal: number;
25
- vertical: number;
26
- contentWidth: number;
27
- contentHeight: number;
28
- };
29
- /**
30
- * Common layout positions within a 1920x1080 frame.
31
- * Use with absolute positioning in compositions.
32
- */
33
- export declare const videoPositions: {
34
- /** Centered content */
35
- readonly center: {
36
- readonly x: 960;
37
- readonly y: 540;
38
- };
39
- /** Top-left content area start */
40
- readonly topLeft: {
41
- readonly x: 120;
42
- readonly y: 80;
43
- };
44
- /** Top-right content area end */
45
- readonly topRight: {
46
- readonly x: 1800;
47
- readonly y: 80;
48
- };
49
- /** Bottom-left */
50
- readonly bottomLeft: {
51
- readonly x: 120;
52
- readonly y: 1000;
53
- };
54
- /** Bottom-right (for logos, watermarks) */
55
- readonly bottomRight: {
56
- readonly x: 1800;
57
- readonly y: 1000;
58
- };
59
- /** Bottom center (for captions) */
60
- readonly bottomCenter: {
61
- readonly x: 960;
62
- readonly y: 960;
63
- };
64
- };
65
- /**
66
- * Get all format variants for a given primary format.
67
- * Returns landscape, square, and portrait variants.
68
- */
69
- export declare function getAllFormatVariants(): VideoFormat[];
@@ -1,2 +0,0 @@
1
- // @bun
2
- var w=import.meta.require;import{VIDEO_FORMATS as j}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var z=30,h={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function B(k){let q=k.width/1920,u=k.height/1080;return{horizontal:Math.round(h.horizontal*q),vertical:Math.round(h.vertical*u),contentWidth:Math.round(h.contentWidth*q),contentHeight:Math.round(h.contentHeight*u)}}var C={center:{x:960,y:540},topLeft:{x:120,y:80},topRight:{x:1800,y:80},bottomLeft:{x:120,y:1000},bottomRight:{x:1800,y:1000},bottomCenter:{x:960,y:960}};function G(){return[j.landscape,j.square,j.portrait]}export{h as videoSafeZone,C as videoPositions,B as scaleSafeZone,G as getAllFormatVariants,j as VIDEO_FORMATS,z as DEFAULT_FPS};
@@ -1,72 +0,0 @@
1
- import { Easing } from 'remotion';
2
- /**
3
- * Easing functions for video animations.
4
- * Remotion's interpolate() accepts these directly.
5
- */
6
- export declare const videoEasing: {
7
- /** Smooth entrance -- objects appearing */
8
- readonly entrance: (t: number) => number;
9
- /** Smooth exit -- objects disappearing */
10
- readonly exit: (t: number) => number;
11
- /** Emphasis/bounce -- drawing attention */
12
- readonly emphasis: (t: number) => number;
13
- /** Linear -- constant speed (progress bars, typing) */
14
- readonly linear: typeof Easing.linear;
15
- /** Gentle ease -- subtle movements */
16
- readonly gentle: (t: number) => number;
17
- /** Spring-like -- playful movements */
18
- readonly spring: (t: number) => number;
19
- };
20
- /**
21
- * Standard durations in frames.
22
- * All values assume 30fps unless noted.
23
- */
24
- export declare const videoDurations: {
25
- /** Scene transition (fade, slide, etc.) */
26
- readonly sceneTransition: 20;
27
- /** Text entrance animation */
28
- readonly textEntrance: 15;
29
- /** Text exit animation */
30
- readonly textExit: 12;
31
- /** Code typing speed (frames per character) */
32
- readonly codeTypingPerChar: 2;
33
- /** Pause after a section/concept */
34
- readonly sectionPause: 30;
35
- /** Brief pause for emphasis */
36
- readonly emphasisPause: 15;
37
- /** Logo/brand reveal */
38
- readonly brandReveal: 25;
39
- /** Minimum scene duration */
40
- readonly minScene: 60;
41
- /** Standard short scene (2s) */
42
- readonly shortScene: 60;
43
- /** Standard medium scene (4s) */
44
- readonly mediumScene: 120;
45
- /** Standard long scene (8s) */
46
- readonly longScene: 240;
47
- };
48
- /**
49
- * Pre-built transition configurations for scene-to-scene transitions.
50
- */
51
- export declare const videoTransitions: {
52
- readonly fade: {
53
- readonly type: "fade";
54
- readonly durationInFrames: 20;
55
- };
56
- readonly slideLeft: {
57
- readonly type: "slide-left";
58
- readonly durationInFrames: 20;
59
- };
60
- readonly slideRight: {
61
- readonly type: "slide-right";
62
- readonly durationInFrames: 20;
63
- };
64
- readonly wipe: {
65
- readonly type: "wipe";
66
- readonly durationInFrames: 15;
67
- };
68
- readonly none: {
69
- readonly type: "none";
70
- readonly durationInFrames: 0;
71
- };
72
- };
@@ -1,2 +0,0 @@
1
- // @bun
2
- var h=import.meta.require;import{Easing as d}from"remotion";var p={entrance:d.out(d.exp),exit:d.in(d.exp),emphasis:d.out(d.back(1.4)),linear:d.linear,gentle:d.bezier(0.25,0.1,0.25,1),spring:d.out(d.back(1.7))},q={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},v={fade:{type:"fade",durationInFrames:20},slideLeft:{type:"slide-left",durationInFrames:20},slideRight:{type:"slide-right",durationInFrames:20},wipe:{type:"wipe",durationInFrames:15},none:{type:"none",durationInFrames:0}};export{v as videoTransitions,p as videoEasing,q as videoDurations};
@@ -1,31 +0,0 @@
1
- import type { ThemeTokens } from '@contractspec/lib.design-system';
2
- import { defaultTokens } from '@contractspec/lib.design-system';
3
- export type { ThemeTokens };
4
- export { defaultTokens };
5
- /**
6
- * Video-specific color extensions built on top of brand tokens.
7
- */
8
- export interface VideoColorTokens {
9
- /** Background for video frames (may differ from web background) */
10
- canvasBackground: string;
11
- /** Code block background */
12
- codeBackground: string;
13
- /** Terminal background */
14
- terminalBackground: string;
15
- /** Terminal text color */
16
- terminalForeground: string;
17
- /** Highlight / emphasis color */
18
- highlight: string;
19
- /** Gradient start (for branded backgrounds) */
20
- gradientStart: string;
21
- /** Gradient end */
22
- gradientEnd: string;
23
- }
24
- export declare const defaultVideoColors: VideoColorTokens;
25
- /**
26
- * Combine brand tokens with video color extensions.
27
- */
28
- export interface VideoThemeTokens extends ThemeTokens {
29
- video: VideoColorTokens;
30
- }
31
- export declare const defaultVideoTheme: VideoThemeTokens;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var z=import.meta.require;import{defaultTokens as j}from"@contractspec/lib.design-system";var q={canvasBackground:j.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:j.colors.accent,gradientStart:j.colors.primary,gradientEnd:j.colors.accent},D={...j,video:q};export{D as defaultVideoTheme,q as defaultVideoColors,j as defaultTokens};
@@ -1,61 +0,0 @@
1
- export interface VideoTypeStyle {
2
- fontSize: number;
3
- lineHeight: number;
4
- fontWeight: number;
5
- letterSpacing?: number;
6
- }
7
- /**
8
- * Typography scale for 1920x1080 (landscape) videos.
9
- * Scale down proportionally for smaller formats.
10
- */
11
- export declare const videoTypography: {
12
- /** Main title -- large, bold */
13
- readonly title: {
14
- readonly fontSize: 72;
15
- readonly lineHeight: 1.1;
16
- readonly fontWeight: 700;
17
- readonly letterSpacing: -1;
18
- };
19
- /** Section heading */
20
- readonly heading: {
21
- readonly fontSize: 56;
22
- readonly lineHeight: 1.2;
23
- readonly fontWeight: 600;
24
- readonly letterSpacing: -0.5;
25
- };
26
- /** Subheading */
27
- readonly subheading: {
28
- readonly fontSize: 40;
29
- readonly lineHeight: 1.25;
30
- readonly fontWeight: 500;
31
- };
32
- /** Body text */
33
- readonly body: {
34
- readonly fontSize: 32;
35
- readonly lineHeight: 1.5;
36
- readonly fontWeight: 400;
37
- };
38
- /** Code / monospace text */
39
- readonly code: {
40
- readonly fontSize: 28;
41
- readonly lineHeight: 1.6;
42
- readonly fontWeight: 400;
43
- };
44
- /** Small caption text */
45
- readonly caption: {
46
- readonly fontSize: 24;
47
- readonly lineHeight: 1.4;
48
- readonly fontWeight: 400;
49
- };
50
- /** Badge / label text */
51
- readonly label: {
52
- readonly fontSize: 20;
53
- readonly lineHeight: 1.3;
54
- readonly fontWeight: 600;
55
- readonly letterSpacing: 1;
56
- };
57
- };
58
- /**
59
- * Scale typography for a target width relative to 1920px landscape.
60
- */
61
- export declare function scaleTypography(style: VideoTypeStyle, targetWidth: number): VideoTypeStyle;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var m=import.meta.require;var u={title:{fontSize:72,lineHeight:1.1,fontWeight:700,letterSpacing:-1},heading:{fontSize:56,lineHeight:1.2,fontWeight:600,letterSpacing:-0.5},subheading:{fontSize:40,lineHeight:1.25,fontWeight:500},body:{fontSize:32,lineHeight:1.5,fontWeight:400},code:{fontSize:28,lineHeight:1.6,fontWeight:400},caption:{fontSize:24,lineHeight:1.4,fontWeight:400},label:{fontSize:20,lineHeight:1.3,fontWeight:600,letterSpacing:1}};function z(b,k){let j=k/1920;return{...b,fontSize:Math.round(b.fontSize*j),letterSpacing:b.letterSpacing?Math.round(b.letterSpacing*j*10)/10:void 0}}export{u as videoTypography,z as scaleTypography};
@@ -1 +0,0 @@
1
- export {};