@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,19 +0,0 @@
1
- import{createRequire as RH}from"node:module";var cH=RH(import.meta.url);import{Easing as w}from"remotion";var M={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))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},lH={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 C}from"@contractspec/lib.design-system";var h={canvasBackground:C.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:C.colors.accent,gradientStart:C.colors.primary,gradientEnd:C.colors.accent},P={...C,video:h};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as YH,useVideoConfig as ZH}from"remotion";import{jsx as _H}from"react/jsx-runtime";var B=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:W="left"})=>{let X=YH(),{width:q}=ZH(),L=b[H],Y={...F(L,q),...K},U=S(X,[Q,Q+V.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(U,[0,1],[0,1],{easing:M.entrance}),G=S(U,[0,1],[30,0],{easing:M.entrance}),Z=1,k=0;if(z!==void 0){let n=S(X,[z,z+V.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(n,[0,1],[1,0],{easing:M.exit}),k=S(n,[0,1],[0,-20],{easing:M.exit})}let E=N*Z,o=G+k;return _H("div",{style:{fontSize:Y.fontSize,lineHeight:Y.lineHeight,fontWeight:Y.fontWeight,letterSpacing:Y.letterSpacing,color:$,textAlign:W,opacity:E,transform:`translateY(${o}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as s}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var KJ=30,u={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function HH(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(u.horizontal*H),vertical:Math.round(u.vertical*K),contentWidth:Math.round(u.contentWidth*H),contentHeight:Math.round(u.contentHeight*K)}}var QJ={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 $J(){return[s.landscape,s.square,s.portrait]}import{interpolate as JH,useCurrentFrame as IH,useVideoConfig as BH}from"remotion";import{jsx as r,jsxs as DH}from"react/jsx-runtime";var T=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=IH(),{width:W,height:X}=BH(),q=P,L=HH({type:"custom",width:W,height:X}),R=J?.primaryColor??q.colors.primary,Y=J?.accentColor??q.colors.accent,U=J?.darkMode??!0,N;switch(Q){case"solid":N=U?"#0a0a0a":q.colors.background;break;case"gradient":N=U?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${q.colors.background} 0%, ${q.colors.muted} 100%)`;break;case"dark":N="#000000";break}let G=K?JH($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?JH($,[V.brandReveal,V.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return DH("div",{style:{width:W,height:X,background:N,position:"relative",overflow:"hidden",opacity:G},children:[Q==="gradient"&&r("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${R}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),r("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&r("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:U?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as KH,useCurrentFrame as wH,useVideoConfig as VH}from"remotion";import{jsx as A,jsxs as x}from"react/jsx-runtime";var QH=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=h.codeBackground,textColor:$="#abb2bf",filename:W})=>{let X=wH(),{width:q}=VH(),L=F(b.code,q),R=J.length,Y=R*V.codeTypingPerChar,U=Q?Math.floor(KH(X,[K,K+Y],[0,R],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):R,N=J.slice(0,U),G=KH(X,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&U<R&&X%16<10;return x("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:G,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),A("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:W??H})]}),A("div",{style:{padding:"24px 32px"},children:x("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&A("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:" "})]})})]})};import{useCurrentFrame as PH,useVideoConfig as OH}from"remotion";import{jsx as $H}from"react/jsx-runtime";var v=({height:J=4,color:H=P.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=PH(),{durationInFrames:$,width:W}=OH(),X=z/$;return $H("div",{style:{position:"absolute",[Q]:0,left:0,width:W,height:J,backgroundColor:K,zIndex:100},children:$H("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as kH,interpolate as f,Sequence as a,useCurrentFrame as zH,useVideoConfig as EH}from"remotion";import{jsx as _,jsxs as y}from"react/jsx-runtime";var GH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:W}=EH(),X=P,q=60,L=45,R=210,Y=180,U=W-90;return y(kH,{children:[y(T,{variant:"gradient",showBranding:!0,children:[_(a,{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:[_(bH,{method:H,enterAt:10}),_(B,{text:K,variant:"subheading",enterAt:15,color:X.colors.mutedForeground})]}),_(B,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(QH,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(a,{from:180,durationInFrames:W-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"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,G)=>_(FH,{label:N,index:G,startFrame:20+G*8},N))}),_(a,{from:U-180,children:_("div",{style:{marginTop:48},children:_(B,{text:$,variant:"heading",enterAt:0,color:X.colors.accent,align:"center"})})})]})})]}),_(v,{})]})},bH=({method:J,enterAt:H})=>{let K=zH(),Q=f(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=f(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},FH=({label:J,startFrame:H})=>{let K=zH(),Q=f(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=f(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=f(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as i,useCurrentFrame as SH,useVideoConfig as TH}from"remotion";import{jsx as O,jsxs as p}from"react/jsx-runtime";var WH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},UH=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=h.terminalBackground,typingSpeed:$=V.codeTypingPerChar})=>{let W=SH(),{width:X}=TH(),q=F(b.code,X),L=[],R=H;for(let U of J){let N=U.delay??10,G=R+N;if(U.type==="command"){let Z=U.text.length*$;L.push({startFrame:G,endFrame:G+Z}),R=G+Z}else L.push({startFrame:G,endFrame:G+5}),R=G+5}let Y=i(W,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return p("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:Y,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[p("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[p("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:q.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((U,N)=>{let G=L[N];if(!G||W<G.startFrame)return null;let Z=U.type==="command",k=WH[U.type],E=U.text;if(Z){let qH=i(W,[G.startFrame,G.endFrame],[0,U.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});E=U.text.slice(0,Math.floor(qH))}let o=Z?1:i(W,[G.startFrame,G.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),NH=Z&&W>=G.startFrame&&W<=G.endFrame&&W%16<10;return p("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:q.fontSize,lineHeight:1.8,color:k,opacity:o,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),U.type==="comment"&&O("span",{style:{color:WH.comment},children:"# "}),E,NH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:" "})]},`${N}-${U.text.slice(0,20)}`)})})]})};import{AbsoluteFill as AH,interpolate as d,Sequence as c,useCurrentFrame as XH,useVideoConfig as vH}from"remotion";import{jsx as I,jsxs as m}from"react/jsx-runtime";var l=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:W,width:X,height:q}=vH(),R=$??P.colors.accent,Y=q>X,U=75,N=60,G=120,Z=W-90;return m(AH,{children:[I(T,{variant:"gradient",showBranding:!0,children:m("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:Y?48:32,textAlign:"center",padding:Y?"0 20px":0},children:[I(c,{from:0,durationInFrames:105,children:I("div",{style:{width:"100%"},children:I(B,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),I(c,{from:60,children:I("div",{style:{width:"100%"},children:I(B,{text:H,variant:Y?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&I(c,{from:120,children:I("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:Y?"flex-start":"center",width:"100%",maxWidth:Y?"100%":"80%",marginTop:16},children:K.map((k,E)=>I(CH,{text:k,index:E,startFrame:E*15,accent:R},k))})}),I(c,{from:Z,children:I(hH,{cta:Q,url:z,accent:R})})]})}),I(v,{color:R})]})},CH=({text:J,startFrame:H,accent:K})=>{let Q=XH(),z=d(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return m("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[I("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},hH=({cta:J,url:H,accent:K})=>{let Q=XH(),z=d(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return m("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[I("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),I("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as yH,Sequence as LH,useVideoConfig as fH}from"remotion";import{jsx as D,jsxs as t}from"react/jsx-runtime";var MH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:W}=fH(),X=P,q=40,L=W-90;return t(yH,{children:[D(T,{variant:"dark",showBranding:!0,children:t("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[t("div",{children:[D(B,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&D("div",{style:{marginTop:8},children:D(B,{text:H,variant:"body",enterAt:15,color:X.colors.mutedForeground})})]}),D(LH,{from:40,children:D("div",{style:{flex:1},children:D(UH,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&D(LH,{from:L,children:D("div",{style:{marginTop:"auto",paddingTop:24},children:D(B,{text:$,variant:"subheading",enterAt:0,color:X.colors.accent,align:"center"})})})]})}),D(v,{})]})};import{Composition as j}from"remotion";import{jsx as g,jsxs as xH,Fragment as uH}from"react/jsx-runtime";var jH={specName:"CreateUser",method:"POST",endpoint:"/api/users",specCode:`export const createUser = defineCommand({
2
- meta: {
3
- name: 'CreateUser',
4
- version: '1.0.0',
5
- stability: 'Stable',
6
- },
7
- io: {
8
- input: z.object({
9
- email: z.string().email(),
10
- name: z.string(),
11
- role: z.enum(['admin', 'user']),
12
- }),
13
- output: z.object({
14
- id: z.string().uuid(),
15
- email: z.string(),
16
- createdAt: z.date(),
17
- }),
18
- },
19
- });`,generatedOutputs:["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:"One spec. Every surface."},e={hook:"Stop rewriting the same API logic.",message:"ContractSpec generates REST, GraphQL, DB, SDK, and MCP from a single spec.",points:["Deterministic output","Fully ejectable","Standard tech, no lock-in"],cta:"Try ContractSpec",ctaUrl:"contractspec.dev"},gH={title:"Getting Started with ContractSpec",subtitle:"Define once, generate everything.",lines:[{type:"comment",text:"Initialize a new ContractSpec project"},{type:"command",text:"npx contractspec init my-api"},{type:"output",text:"Created my-api/ with 3 sample contracts"},{type:"command",text:"cd my-api && npx contractspec build"},{type:"success",text:"Built 3 contracts -> 18 generated files"},{type:"output",text:" REST endpoints: 3"},{type:"output",text:" GraphQL types: 3"},{type:"output",text:" Prisma models: 3"},{type:"output",text:" TypeScript SDK: 3"},{type:"output",text:" MCP tools: 3"},{type:"output",text:" OpenAPI specs: 3"},{type:"command",text:"npx contractspec validate"},{type:"success",text:"All contracts valid. 0 warnings."}],terminalTitle:"contractspec",summary:"Ship faster. Stay coherent."},QK=()=>{return xH(uH,{children:[g(j,{id:"ApiOverview",component:GH,durationInFrames:450,fps:30,width:1920,height:1080,defaultProps:jH}),g(j,{id:"SocialClip",component:l,durationInFrames:300,fps:30,width:1920,height:1080,defaultProps:e}),g(j,{id:"SocialClipSquare",component:l,durationInFrames:300,fps:30,width:1080,height:1080,defaultProps:e}),g(j,{id:"SocialClipPortrait",component:l,durationInFrames:300,fps:30,width:1080,height:1920,defaultProps:e}),g(j,{id:"TerminalDemo",component:MH,durationInFrames:600,fps:30,width:1920,height:1080,defaultProps:gH})]})};export{QK as RemotionRoot};
@@ -1,19 +0,0 @@
1
- import{createRequire as YH}from"node:module";var mH=YH(import.meta.url);import{Easing as w}from"remotion";var M={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))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},nH={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 C}from"@contractspec/lib.design-system";var h={canvasBackground:C.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:C.colors.accent,gradientStart:C.colors.primary,gradientEnd:C.colors.accent},P={...C,video:h};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as ZH,useVideoConfig as _H}from"remotion";import{jsx as IH}from"react/jsx-runtime";var B=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:W="left"})=>{let X=ZH(),{width:R}=_H(),L=b[H],Y={...F(L,R),...K},U=S(X,[Q,Q+V.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(U,[0,1],[0,1],{easing:M.entrance}),G=S(U,[0,1],[30,0],{easing:M.entrance}),Z=1,k=0;if(z!==void 0){let n=S(X,[z,z+V.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(n,[0,1],[1,0],{easing:M.exit}),k=S(n,[0,1],[0,-20],{easing:M.exit})}let E=N*Z,o=G+k;return IH("div",{style:{fontSize:Y.fontSize,lineHeight:Y.lineHeight,fontWeight:Y.fontWeight,letterSpacing:Y.letterSpacing,color:$,textAlign:W,opacity:E,transform:`translateY(${o}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as s}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var $J=30,u={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function HH(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(u.horizontal*H),vertical:Math.round(u.vertical*K),contentWidth:Math.round(u.contentWidth*H),contentHeight:Math.round(u.contentHeight*K)}}var zJ={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 GJ(){return[s.landscape,s.square,s.portrait]}import{interpolate as JH,useCurrentFrame as BH,useVideoConfig as DH}from"remotion";import{jsx as r,jsxs as wH}from"react/jsx-runtime";var T=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=BH(),{width:W,height:X}=DH(),R=P,L=HH({type:"custom",width:W,height:X}),q=J?.primaryColor??R.colors.primary,Y=J?.accentColor??R.colors.accent,U=J?.darkMode??!0,N;switch(Q){case"solid":N=U?"#0a0a0a":R.colors.background;break;case"gradient":N=U?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${R.colors.background} 0%, ${R.colors.muted} 100%)`;break;case"dark":N="#000000";break}let G=K?JH($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?JH($,[V.brandReveal,V.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return wH("div",{style:{width:W,height:X,background:N,position:"relative",overflow:"hidden",opacity:G},children:[Q==="gradient"&&r("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"}}),r("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&r("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:U?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as KH,useCurrentFrame as VH,useVideoConfig as PH}from"remotion";import{jsx as A,jsxs as x}from"react/jsx-runtime";var QH=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=h.codeBackground,textColor:$="#abb2bf",filename:W})=>{let X=VH(),{width:R}=PH(),L=F(b.code,R),q=J.length,Y=q*V.codeTypingPerChar,U=Q?Math.floor(KH(X,[K,K+Y],[0,q],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):q,N=J.slice(0,U),G=KH(X,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&U<q&&X%16<10;return x("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:G,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),A("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:W??H})]}),A("div",{style:{padding:"24px 32px"},children:x("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&A("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:" "})]})})]})};import{useCurrentFrame as OH,useVideoConfig as kH}from"remotion";import{jsx as $H}from"react/jsx-runtime";var v=({height:J=4,color:H=P.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=OH(),{durationInFrames:$,width:W}=kH(),X=z/$;return $H("div",{style:{position:"absolute",[Q]:0,left:0,width:W,height:J,backgroundColor:K,zIndex:100},children:$H("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as EH,interpolate as f,Sequence as a,useCurrentFrame as zH,useVideoConfig as bH}from"remotion";import{jsx as _,jsxs as y}from"react/jsx-runtime";var GH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:W}=bH(),X=P,R=60,L=45,q=210,Y=180,U=W-90;return y(EH,{children:[y(T,{variant:"gradient",showBranding:!0,children:[_(a,{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:[_(FH,{method:H,enterAt:10}),_(B,{text:K,variant:"subheading",enterAt:15,color:X.colors.mutedForeground})]}),_(B,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(QH,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(a,{from:180,durationInFrames:W-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"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,G)=>_(SH,{label:N,index:G,startFrame:20+G*8},N))}),_(a,{from:U-180,children:_("div",{style:{marginTop:48},children:_(B,{text:$,variant:"heading",enterAt:0,color:X.colors.accent,align:"center"})})})]})})]}),_(v,{})]})},FH=({method:J,enterAt:H})=>{let K=zH(),Q=f(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=f(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},SH=({label:J,startFrame:H})=>{let K=zH(),Q=f(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=f(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=f(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as i,useCurrentFrame as TH,useVideoConfig as AH}from"remotion";import{jsx as O,jsxs as p}from"react/jsx-runtime";var WH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},UH=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=h.terminalBackground,typingSpeed:$=V.codeTypingPerChar})=>{let W=TH(),{width:X}=AH(),R=F(b.code,X),L=[],q=H;for(let U of J){let N=U.delay??10,G=q+N;if(U.type==="command"){let Z=U.text.length*$;L.push({startFrame:G,endFrame:G+Z}),q=G+Z}else L.push({startFrame:G,endFrame:G+5}),q=G+5}let Y=i(W,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return p("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:Y,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[p("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[p("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:R.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((U,N)=>{let G=L[N];if(!G||W<G.startFrame)return null;let Z=U.type==="command",k=WH[U.type],E=U.text;if(Z){let qH=i(W,[G.startFrame,G.endFrame],[0,U.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});E=U.text.slice(0,Math.floor(qH))}let o=Z?1:i(W,[G.startFrame,G.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),RH=Z&&W>=G.startFrame&&W<=G.endFrame&&W%16<10;return p("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:R.fontSize,lineHeight:1.8,color:k,opacity:o,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),U.type==="comment"&&O("span",{style:{color:WH.comment},children:"# "}),E,RH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:" "})]},`${N}-${U.text.slice(0,20)}`)})})]})};import{AbsoluteFill as vH,interpolate as d,Sequence as c,useCurrentFrame as XH,useVideoConfig as CH}from"remotion";import{jsx as I,jsxs as m}from"react/jsx-runtime";var l=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:W,width:X,height:R}=CH(),q=$??P.colors.accent,Y=R>X,U=75,N=60,G=120,Z=W-90;return m(vH,{children:[I(T,{variant:"gradient",showBranding:!0,children:m("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:Y?48:32,textAlign:"center",padding:Y?"0 20px":0},children:[I(c,{from:0,durationInFrames:105,children:I("div",{style:{width:"100%"},children:I(B,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),I(c,{from:60,children:I("div",{style:{width:"100%"},children:I(B,{text:H,variant:Y?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&I(c,{from:120,children:I("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:Y?"flex-start":"center",width:"100%",maxWidth:Y?"100%":"80%",marginTop:16},children:K.map((k,E)=>I(hH,{text:k,index:E,startFrame:E*15,accent:q},k))})}),I(c,{from:Z,children:I(yH,{cta:Q,url:z,accent:q})})]})}),I(v,{color:q})]})},hH=({text:J,startFrame:H,accent:K})=>{let Q=XH(),z=d(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return m("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[I("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},yH=({cta:J,url:H,accent:K})=>{let Q=XH(),z=d(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return m("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[I("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),I("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as fH,Sequence as LH,useVideoConfig as jH}from"remotion";import{jsx as D,jsxs as t}from"react/jsx-runtime";var MH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:W}=jH(),X=P,R=40,L=W-90;return t(fH,{children:[D(T,{variant:"dark",showBranding:!0,children:t("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[t("div",{children:[D(B,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&D("div",{style:{marginTop:8},children:D(B,{text:H,variant:"body",enterAt:15,color:X.colors.mutedForeground})})]}),D(LH,{from:40,children:D("div",{style:{flex:1},children:D(UH,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&D(LH,{from:L,children:D("div",{style:{marginTop:"auto",paddingTop:24},children:D(B,{text:$,variant:"subheading",enterAt:0,color:X.colors.accent,align:"center"})})})]})}),D(v,{})]})};import{Composition as j}from"remotion";import{jsx as g,jsxs as pH,Fragment as xH}from"react/jsx-runtime";var gH={specName:"CreateUser",method:"POST",endpoint:"/api/users",specCode:`export const createUser = defineCommand({
2
- meta: {
3
- name: 'CreateUser',
4
- version: '1.0.0',
5
- stability: 'Stable',
6
- },
7
- io: {
8
- input: z.object({
9
- email: z.string().email(),
10
- name: z.string(),
11
- role: z.enum(['admin', 'user']),
12
- }),
13
- output: z.object({
14
- id: z.string().uuid(),
15
- email: z.string(),
16
- createdAt: z.date(),
17
- }),
18
- },
19
- });`,generatedOutputs:["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:"One spec. Every surface."},e={hook:"Stop rewriting the same API logic.",message:"ContractSpec generates REST, GraphQL, DB, SDK, and MCP from a single spec.",points:["Deterministic output","Fully ejectable","Standard tech, no lock-in"],cta:"Try ContractSpec",ctaUrl:"contractspec.dev"},uH={title:"Getting Started with ContractSpec",subtitle:"Define once, generate everything.",lines:[{type:"comment",text:"Initialize a new ContractSpec project"},{type:"command",text:"npx contractspec init my-api"},{type:"output",text:"Created my-api/ with 3 sample contracts"},{type:"command",text:"cd my-api && npx contractspec build"},{type:"success",text:"Built 3 contracts -> 18 generated files"},{type:"output",text:" REST endpoints: 3"},{type:"output",text:" GraphQL types: 3"},{type:"output",text:" Prisma models: 3"},{type:"output",text:" TypeScript SDK: 3"},{type:"output",text:" MCP tools: 3"},{type:"output",text:" OpenAPI specs: 3"},{type:"command",text:"npx contractspec validate"},{type:"success",text:"All contracts valid. 0 warnings."}],terminalTitle:"contractspec",summary:"Ship faster. Stay coherent."},NH=()=>{return pH(xH,{children:[g(j,{id:"ApiOverview",component:GH,durationInFrames:450,fps:30,width:1920,height:1080,defaultProps:gH}),g(j,{id:"SocialClip",component:l,durationInFrames:300,fps:30,width:1920,height:1080,defaultProps:e}),g(j,{id:"SocialClipSquare",component:l,durationInFrames:300,fps:30,width:1080,height:1080,defaultProps:e}),g(j,{id:"SocialClipPortrait",component:l,durationInFrames:300,fps:30,width:1080,height:1920,defaultProps:e}),g(j,{id:"TerminalDemo",component:MH,durationInFrames:600,fps:30,width:1920,height:1080,defaultProps:uH})]})};import{registerRoot as cH}from"remotion";cH(NH);
@@ -1 +0,0 @@
1
- import{createRequire as m}from"node:module";var A=m(import.meta.url);var v={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},D={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},x={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function E(j,b){let k=b?x[b]:{};return{...v,...k,...j}}export{E as resolveRenderConfig,x as qualityPresets,v as defaultRenderConfig,D as codecFormatMap};
@@ -1 +0,0 @@
1
- import{createRequire as _}from"node:module";var Y=_(import.meta.url);import{VIDEO_FORMATS as H}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var b=30,G={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function F(y){let Q=y.width/1920,x=y.height/1080;return{horizontal:Math.round(G.horizontal*Q),vertical:Math.round(G.vertical*x),contentWidth:Math.round(G.contentWidth*Q),contentHeight:Math.round(G.contentHeight*x)}}var O={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 h(){return[H.landscape,H.square,H.portrait]}var k={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},A={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},L={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function J(y,Q){let x=Q?L[Q]:{};return{...k,...x,...y}}class P{entryPoint;constructor(y){this.entryPoint=y.entryPoint}async render(y,Q){let x=J(Q),{bundle:D}=await import("@remotion/bundler"),{renderMedia:K,selectComposition:N}=await import("@remotion/renderer"),B=await D({entryPoint:this.entryPoint}),U=y.scenes[0],W=y.scenes.length===1&&U?U.compositionId:"Master",E=await N({serveUrl:B,id:W,inputProps:{project:y}});await K({composition:E,serveUrl:B,codec:x.codec,outputLocation:x.outputPath,inputProps:{project:y},...x.crf&&{crf:x.crf},...x.concurrency&&{concurrency:x.concurrency}});let $={outputPath:x.outputPath,format:x.outputFormat??k.outputFormat,codec:x.codec??k.codec,durationSeconds:y.totalDurationInFrames/y.fps,fileSizeBytes:0,dimensions:{width:y.format.width,height:y.format.height}};if(Q.autoVariants){let T=h().filter((z)=>z.type!==y.format.type),q=[];for(let z of T){let w=x.outputPath.replace(/(\.[^.]+)$/,`-${z.type}$1`),X={...y,format:z},Z=await N({serveUrl:B,id:W,inputProps:{project:X}});await K({composition:Z,serveUrl:B,codec:x.codec,outputLocation:w,inputProps:{project:X},...x.crf&&{crf:x.crf}}),q.push({outputPath:w,format:x.outputFormat??k.outputFormat,codec:x.codec??k.codec,durationSeconds:y.totalDurationInFrames/y.fps,fileSizeBytes:0,dimensions:{width:z.width,height:z.height}})}$.variants=q}return $}}export{J as resolveRenderConfig,L as qualityPresets,k as defaultRenderConfig,A as codecFormatMap,P as LocalRenderer};
@@ -1 +0,0 @@
1
- import{createRequire as Z}from"node:module";var X=Z(import.meta.url);import{VIDEO_FORMATS as K}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var b=30,J={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function M(x){let z=x.width/1920,k=x.height/1080;return{horizontal:Math.round(J.horizontal*z),vertical:Math.round(J.vertical*k),contentWidth:Math.round(J.contentWidth*z),contentHeight:Math.round(J.contentHeight*k)}}var O={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 Y(){return[K.landscape,K.square,K.portrait]}var G={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},S={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},_={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function h(x,z){let k=z?_[z]:{};return{...G,...k,...x}}class P{entryPoint;constructor(x){this.entryPoint=x.entryPoint}async render(x,z){let k=h(z),{bundle:D}=await import("@remotion/bundler"),{renderMedia:N,selectComposition:Q}=await import("@remotion/renderer"),H=await D({entryPoint:this.entryPoint}),U=x.scenes[0],W=x.scenes.length===1&&U?U.compositionId:"Master",E=await Q({serveUrl:H,id:W,inputProps:{project:x}});await N({composition:E,serveUrl:H,codec:k.codec,outputLocation:k.outputPath,inputProps:{project:x},...k.crf&&{crf:k.crf},...k.concurrency&&{concurrency:k.concurrency}});let $={outputPath:k.outputPath,format:k.outputFormat??G.outputFormat,codec:k.codec??G.codec,durationSeconds:x.totalDurationInFrames/x.fps,fileSizeBytes:0,dimensions:{width:x.format.width,height:x.format.height}};if(z.autoVariants){let L=Y().filter((B)=>B.type!==x.format.type),w=[];for(let B of L){let q=k.outputPath.replace(/(\.[^.]+)$/,`-${B.type}$1`),y={...x,format:B},T=await Q({serveUrl:H,id:W,inputProps:{project:y}});await N({composition:T,serveUrl:H,codec:k.codec,outputLocation:q,inputProps:{project:y},...k.crf&&{crf:k.crf}}),w.push({outputPath:q,format:k.outputFormat??G.outputFormat,codec:k.codec??G.codec,durationSeconds:x.totalDurationInFrames/x.fps,fileSizeBytes:0,dimensions:{width:B.width,height:B.height}})}$.variants=w}return $}}export{P as LocalRenderer};
@@ -1 +0,0 @@
1
- import{createRequire as f}from"node:module";var j=f(import.meta.url);import{VIDEO_FORMATS as u}from"@contractspec/lib.contracts-integrations/integrations/providers/video";export{u as VIDEO_FORMATS};
@@ -1 +0,0 @@
1
- import{createRequire as g}from"node:module";var k=g(import.meta.url);import{defineFeature as h}from"@contractspec/lib.contracts-spec/features";var v=h({meta:{key:"libs.video-gen",version:"1.0.0",title:"Video Gen",description:"ContractSpec package declaration for @contractspec/lib.video-gen.",domain:"video-gen",owners:["@contractspec-core"],tags:["package","libs","video-gen"],stability:"experimental"},operations:[{key:"createUser",version:"1.0.0"}]});export{v as VideoGenFeature};
@@ -1,55 +0,0 @@
1
- import React from 'react';
2
- import type { ApiOverviewProps } from '../compositions/api-overview';
3
- import type { SocialClipProps } from '../compositions/social-clip';
4
- import type { TerminalDemoProps } from '../compositions/terminal-demo';
5
- /**
6
- * Available compositions for the player.
7
- */
8
- export type DemoCompositionId = 'ApiOverview' | 'SocialClip' | 'TerminalDemo';
9
- export interface DemoCompositionProps {
10
- ApiOverview: ApiOverviewProps;
11
- SocialClip: SocialClipProps;
12
- TerminalDemo: TerminalDemoProps;
13
- }
14
- export interface DemoPlayerProps<T extends DemoCompositionId> {
15
- /** Which composition to play */
16
- compositionId: T;
17
- /** Props for the composition */
18
- inputProps: DemoCompositionProps[T];
19
- /** Show player controls */
20
- controls?: boolean;
21
- /** Autoplay on mount */
22
- autoPlay?: boolean;
23
- /** Loop playback */
24
- loop?: boolean;
25
- /** Player width (CSS value or number in px) */
26
- width?: string | number;
27
- /** Player height (CSS value). Defaults to auto (aspect ratio maintained). */
28
- height?: string | number;
29
- /** Additional CSS styles for the container */
30
- style?: React.CSSProperties;
31
- /** CSS class name */
32
- className?: string;
33
- /** Click to play behavior */
34
- clickToPlay?: boolean;
35
- /** Double click to fullscreen */
36
- doubleClickToFullscreen?: boolean;
37
- }
38
- /**
39
- * Embeddable video demo player.
40
- *
41
- * @example
42
- * ```tsx
43
- * <DemoPlayer
44
- * compositionId="ApiOverview"
45
- * inputProps={{
46
- * specName: "CreateUser",
47
- * specCode: "...",
48
- * }}
49
- * controls
50
- * autoPlay
51
- * loop
52
- * />
53
- * ```
54
- */
55
- export declare function DemoPlayer<T extends DemoCompositionId>({ compositionId, inputProps, controls, autoPlay, loop, width, height, style, className, clickToPlay, doubleClickToFullscreen, }: DemoPlayerProps<T>): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var yH=import.meta.require;import{Easing as V}from"remotion";var M={entrance:V.out(V.exp),exit:V.in(V.exp),emphasis:V.out(V.back(1.4)),linear:V.linear,gentle:V.bezier(0.25,0.1,0.25,1),spring:V.out(V.back(1.7))},w={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},uH={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 v}from"@contractspec/lib.design-system";var f={canvasBackground:v.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:v.colors.accent,gradientStart:v.colors.primary,gradientEnd:v.colors.accent},P={...v,video:f};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as MH,useVideoConfig as RH}from"remotion";import{jsx as YH}from"react/jsx-runtime";var D=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:G="left"})=>{let U=MH(),{width:R}=RH(),L=b[H],q={...F(L,R),...K},W=S(U,[Q,Q+w.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(W,[0,1],[0,1],{easing:M.entrance}),X=S(W,[0,1],[30,0],{easing:M.entrance}),Z=1,E=0;if(z!==void 0){let m=S(U,[z,z+w.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(m,[0,1],[1,0],{easing:M.exit}),E=S(m,[0,1],[0,-20],{easing:M.exit})}let k=N*Z,d=X+E;return YH("div",{style:{fontSize:q.fontSize,lineHeight:q.lineHeight,fontWeight:q.fontWeight,letterSpacing:q.letterSpacing,color:$,textAlign:G,opacity:k,transform:`translateY(${d}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as l}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var iH=30,y={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function a(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(y.horizontal*H),vertical:Math.round(y.vertical*K),contentWidth:Math.round(y.contentWidth*H),contentHeight:Math.round(y.contentHeight*K)}}var tH={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 eH(){return[l.landscape,l.square,l.portrait]}import{interpolate as i,useCurrentFrame as NH,useVideoConfig as ZH}from"remotion";import{jsx as n,jsxs as _H}from"react/jsx-runtime";var A=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=NH(),{width:G,height:U}=ZH(),R=P,L=a({type:"custom",width:G,height:U}),Y=J?.primaryColor??R.colors.primary,q=J?.accentColor??R.colors.accent,W=J?.darkMode??!0,N;switch(Q){case"solid":N=W?"#0a0a0a":R.colors.background;break;case"gradient":N=W?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${R.colors.background} 0%, ${R.colors.muted} 100%)`;break;case"dark":N="#000000";break}let X=K?i($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?i($,[w.brandReveal,w.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return _H("div",{style:{width:G,height:U,background:N,position:"relative",overflow:"hidden",opacity:X},children:[Q==="gradient"&&n("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"}}),n("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&n("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:W?"#ffffff":"#000000",fontSize:Math.round(16*(G/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as t,useCurrentFrame as BH,useVideoConfig as DH}from"remotion";import{jsx as T,jsxs as g}from"react/jsx-runtime";var e=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=f.codeBackground,textColor:$="#abb2bf",filename:G})=>{let U=BH(),{width:R}=DH(),L=F(b.code,R),Y=J.length,q=Y*w.codeTypingPerChar,W=Q?Math.floor(t(U,[K,K+q],[0,Y],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):Y,N=J.slice(0,W),X=t(U,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&W<Y&&U%16<10;return g("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:X,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[g("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[g("div",{style:{display:"flex",gap:8},children:[T("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),T("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),T("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),T("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:G??H})]}),T("div",{style:{padding:"24px 32px"},children:g("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&T("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as IH,useVideoConfig as VH}from"remotion";import{jsx as HH}from"react/jsx-runtime";var C=({height:J=4,color:H=P.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=IH(),{durationInFrames:$,width:G}=VH(),U=z/$;return HH("div",{style:{position:"absolute",[Q]:0,left:0,width:G,height:J,backgroundColor:K,zIndex:100},children:HH("div",{style:{width:`${U*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as wH,interpolate as j,Sequence as o,useCurrentFrame as JH,useVideoConfig as PH}from"remotion";import{jsx as _,jsxs as h}from"react/jsx-runtime";var KH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:G}=PH(),U=P,R=60,L=45,Y=210,q=180,W=G-90;return h(wH,{children:[h(A,{variant:"gradient",showBranding:!0,children:[_(o,{from:0,durationInFrames:210,children:h("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:16},children:[h("div",{style:{display:"flex",alignItems:"center",gap:16},children:[_(OH,{method:H,enterAt:10}),_(D,{text:K,variant:"subheading",enterAt:15,color:U.colors.mutedForeground})]}),_(D,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(e,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(o,{from:180,durationInFrames:G-180,children:h("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:24},children:[_(D,{text:"Generates:",variant:"heading",enterAt:0,color:"#ffffff",align:"center"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,X)=>_(EH,{label:N,index:X,startFrame:20+X*8},N))}),_(o,{from:W-180,children:_("div",{style:{marginTop:48},children:_(D,{text:$,variant:"heading",enterAt:0,color:U.colors.accent,align:"center"})})})]})})]}),_(C,{})]})},OH=({method:J,enterAt:H})=>{let K=JH(),Q=j(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=j(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},EH=({label:J,startFrame:H})=>{let K=JH(),Q=j(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=j(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=j(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as s,useCurrentFrame as kH,useVideoConfig as bH}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"},$H=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=f.terminalBackground,typingSpeed:$=w.codeTypingPerChar})=>{let G=kH(),{width:U}=bH(),R=F(b.code,U),L=[],Y=H;for(let W of J){let N=W.delay??10,X=Y+N;if(W.type==="command"){let Z=W.text.length*$;L.push({startFrame:X,endFrame:X+Z}),Y=X+Z}else L.push({startFrame:X,endFrame:X+5}),Y=X+5}let q=s(G,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return x("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:q,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:R.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((W,N)=>{let X=L[N];if(!X||G<X.startFrame)return null;let Z=W.type==="command",E=QH[W.type],k=W.text;if(Z){let qH=s(G,[X.startFrame,X.endFrame],[0,W.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});k=W.text.slice(0,Math.floor(qH))}let d=Z?1:s(G,[X.startFrame,X.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),LH=Z&&G>=X.startFrame&&G<=X.endFrame&&G%16<10;return x("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:R.fontSize,lineHeight:1.8,color:E,opacity:d,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),W.type==="comment"&&O("span",{style:{color:QH.comment},children:"# "}),k,LH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${N}-${W.text.slice(0,20)}`)})})]})};import{AbsoluteFill as FH,interpolate as p,Sequence as u,useCurrentFrame as zH,useVideoConfig as SH}from"remotion";import{jsx as B,jsxs as c}from"react/jsx-runtime";var GH=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:G,width:U,height:R}=SH(),Y=$??P.colors.accent,q=R>U,W=75,N=60,X=120,Z=G-90;return c(FH,{children:[B(A,{variant:"gradient",showBranding:!0,children:c("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:q?48:32,textAlign:"center",padding:q?"0 20px":0},children:[B(u,{from:0,durationInFrames:105,children:B("div",{style:{width:"100%"},children:B(D,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),B(u,{from:60,children:B("div",{style:{width:"100%"},children:B(D,{text:H,variant:q?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&B(u,{from:120,children:B("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:q?"flex-start":"center",width:"100%",maxWidth:q?"100%":"80%",marginTop:16},children:K.map((E,k)=>B(AH,{text:E,index:k,startFrame:k*15,accent:Y},E))})}),B(u,{from:Z,children:B(TH,{cta:Q,url:z,accent:Y})})]})}),B(C,{color:Y})]})},AH=({text:J,startFrame:H,accent:K})=>{let Q=zH(),z=p(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=p(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return c("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[B("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},TH=({cta:J,url:H,accent:K})=>{let Q=zH(),z=p(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=p(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return c("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[B("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),B("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as CH,Sequence as WH,useVideoConfig as vH}from"remotion";import{jsx as I,jsxs as r}from"react/jsx-runtime";var XH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:G}=vH(),U=P,R=40,L=G-90;return r(CH,{children:[I(A,{variant:"dark",showBranding:!0,children:r("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[r("div",{children:[I(D,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&I("div",{style:{marginTop:8},children:I(D,{text:H,variant:"body",enterAt:15,color:U.colors.mutedForeground})})]}),I(WH,{from:40,children:I("div",{style:{flex:1},children:I($H,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&I(WH,{from:L,children:I("div",{style:{marginTop:"auto",paddingTop:24},children:I(D,{text:$,variant:"subheading",enterAt:0,color:U.colors.accent,align:"center"})})})]})}),I(C,{})]})};import{Player as fH}from"@remotion/player";import{useMemo as hH}from"react";import{jsx as UH}from"react/jsx-runtime";var jH={ApiOverview:{component:KH,durationInFrames:450,fps:30,width:1920,height:1080},SocialClip:{component:GH,durationInFrames:300,fps:30,width:1920,height:1080},TerminalDemo:{component:XH,durationInFrames:600,fps:30,width:1920,height:1080}};function HK({compositionId:J,inputProps:H,controls:K=!0,autoPlay:Q=!1,loop:z=!1,width:$="100%",height:G,style:U,className:R,clickToPlay:L=!0,doubleClickToFullscreen:Y=!0}){let q=jH[J],W=hH(()=>({width:$,height:G??"auto",borderRadius:12,overflow:"hidden",...U}),[$,G,U]);return UH("div",{className:R,children:UH(fH,{component:q.component,durationInFrames:q.durationInFrames,fps:q.fps,compositionWidth:q.width,compositionHeight:q.height,inputProps:H,controls:K,autoPlay:Q,loop:z,style:W,clickToPlay:L,doubleClickToFullscreen:Y})})}export{HK as DemoPlayer};
@@ -1,2 +0,0 @@
1
- export type { DemoCompositionId, DemoCompositionProps, DemoPlayerProps, } from './demo-player';
2
- export { DemoPlayer } from './demo-player';
@@ -1,2 +0,0 @@
1
- // @bun
2
- var xH=import.meta.require;import{Easing as V}from"remotion";var M={entrance:V.out(V.exp),exit:V.in(V.exp),emphasis:V.out(V.back(1.4)),linear:V.linear,gentle:V.bezier(0.25,0.1,0.25,1),spring:V.out(V.back(1.7))},P={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},pH={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 v}from"@contractspec/lib.design-system";var f={canvasBackground:v.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:v.colors.accent,gradientStart:v.colors.primary,gradientEnd:v.colors.accent},w={...v,video:f};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as MH,useVideoConfig as RH}from"remotion";import{jsx as YH}from"react/jsx-runtime";var B=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:G="left"})=>{let U=MH(),{width:R}=RH(),L=b[H],q={...F(L,R),...K},W=S(U,[Q,Q+P.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(W,[0,1],[0,1],{easing:M.entrance}),X=S(W,[0,1],[30,0],{easing:M.entrance}),Z=1,E=0;if(z!==void 0){let m=S(U,[z,z+P.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(m,[0,1],[1,0],{easing:M.exit}),E=S(m,[0,1],[0,-20],{easing:M.exit})}let k=N*Z,d=X+E;return YH("div",{style:{fontSize:q.fontSize,lineHeight:q.lineHeight,fontWeight:q.fontWeight,letterSpacing:q.letterSpacing,color:$,textAlign:G,opacity:k,transform:`translateY(${d}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as l}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var tH=30,j={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function a(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(j.horizontal*H),vertical:Math.round(j.vertical*K),contentWidth:Math.round(j.contentWidth*H),contentHeight:Math.round(j.contentHeight*K)}}var eH={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 HJ(){return[l.landscape,l.square,l.portrait]}import{interpolate as i,useCurrentFrame as NH,useVideoConfig as ZH}from"remotion";import{jsx as o,jsxs as _H}from"react/jsx-runtime";var A=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=NH(),{width:G,height:U}=ZH(),R=w,L=a({type:"custom",width:G,height:U}),Y=J?.primaryColor??R.colors.primary,q=J?.accentColor??R.colors.accent,W=J?.darkMode??!0,N;switch(Q){case"solid":N=W?"#0a0a0a":R.colors.background;break;case"gradient":N=W?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${R.colors.background} 0%, ${R.colors.muted} 100%)`;break;case"dark":N="#000000";break}let X=K?i($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?i($,[P.brandReveal,P.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return _H("div",{style:{width:G,height:U,background:N,position:"relative",overflow:"hidden",opacity:X},children:[Q==="gradient"&&o("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"}}),o("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&o("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:W?"#ffffff":"#000000",fontSize:Math.round(16*(G/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as t,useCurrentFrame as DH,useVideoConfig as BH}from"remotion";import{jsx as C,jsxs as x}from"react/jsx-runtime";var e=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=f.codeBackground,textColor:$="#abb2bf",filename:G})=>{let U=DH(),{width:R}=BH(),L=F(b.code,R),Y=J.length,q=Y*P.codeTypingPerChar,W=Q?Math.floor(t(U,[K,K+q],[0,Y],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):Y,N=J.slice(0,W),X=t(U,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&W<Y&&U%16<10;return x("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:X,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[C("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),C("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),C("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),C("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:G??H})]}),C("div",{style:{padding:"24px 32px"},children:x("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&C("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as IH,useVideoConfig as VH}from"remotion";import{jsx as HH}from"react/jsx-runtime";var T=({height:J=4,color:H=w.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=IH(),{durationInFrames:$,width:G}=VH(),U=z/$;return HH("div",{style:{position:"absolute",[Q]:0,left:0,width:G,height:J,backgroundColor:K,zIndex:100},children:HH("div",{style:{width:`${U*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as PH,interpolate as y,Sequence as n,useCurrentFrame as JH,useVideoConfig as wH}from"remotion";import{jsx as _,jsxs as h}from"react/jsx-runtime";var KH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:G}=wH(),U=w,R=60,L=45,Y=210,q=180,W=G-90;return h(PH,{children:[h(A,{variant:"gradient",showBranding:!0,children:[_(n,{from:0,durationInFrames:210,children:h("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:16},children:[h("div",{style:{display:"flex",alignItems:"center",gap:16},children:[_(OH,{method:H,enterAt:10}),_(B,{text:K,variant:"subheading",enterAt:15,color:U.colors.mutedForeground})]}),_(B,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(e,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(n,{from:180,durationInFrames:G-180,children:h("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"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,X)=>_(EH,{label:N,index:X,startFrame:20+X*8},N))}),_(n,{from:W-180,children:_("div",{style:{marginTop:48},children:_(B,{text:$,variant:"heading",enterAt:0,color:U.colors.accent,align:"center"})})})]})})]}),_(T,{})]})},OH=({method:J,enterAt:H})=>{let K=JH(),Q=y(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=y(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},EH=({label:J,startFrame:H})=>{let K=JH(),Q=y(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=y(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=y(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as r,useCurrentFrame as kH,useVideoConfig as bH}from"remotion";import{jsx as O,jsxs as g}from"react/jsx-runtime";var QH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},$H=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=f.terminalBackground,typingSpeed:$=P.codeTypingPerChar})=>{let G=kH(),{width:U}=bH(),R=F(b.code,U),L=[],Y=H;for(let W of J){let N=W.delay??10,X=Y+N;if(W.type==="command"){let Z=W.text.length*$;L.push({startFrame:X,endFrame:X+Z}),Y=X+Z}else L.push({startFrame:X,endFrame:X+5}),Y=X+5}let q=r(G,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return g("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:q,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[g("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[g("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:R.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((W,N)=>{let X=L[N];if(!X||G<X.startFrame)return null;let Z=W.type==="command",E=QH[W.type],k=W.text;if(Z){let qH=r(G,[X.startFrame,X.endFrame],[0,W.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});k=W.text.slice(0,Math.floor(qH))}let d=Z?1:r(G,[X.startFrame,X.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),LH=Z&&G>=X.startFrame&&G<=X.endFrame&&G%16<10;return g("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:R.fontSize,lineHeight:1.8,color:E,opacity:d,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),W.type==="comment"&&O("span",{style:{color:QH.comment},children:"# "}),k,LH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${N}-${W.text.slice(0,20)}`)})})]})};import{AbsoluteFill as FH,interpolate as p,Sequence as u,useCurrentFrame as zH,useVideoConfig as SH}from"remotion";import{jsx as D,jsxs as c}from"react/jsx-runtime";var GH=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:G,width:U,height:R}=SH(),Y=$??w.colors.accent,q=R>U,W=75,N=60,X=120,Z=G-90;return c(FH,{children:[D(A,{variant:"gradient",showBranding:!0,children:c("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:q?48:32,textAlign:"center",padding:q?"0 20px":0},children:[D(u,{from:0,durationInFrames:105,children:D("div",{style:{width:"100%"},children:D(B,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),D(u,{from:60,children:D("div",{style:{width:"100%"},children:D(B,{text:H,variant:q?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&D(u,{from:120,children:D("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:q?"flex-start":"center",width:"100%",maxWidth:q?"100%":"80%",marginTop:16},children:K.map((E,k)=>D(AH,{text:E,index:k,startFrame:k*15,accent:Y},E))})}),D(u,{from:Z,children:D(CH,{cta:Q,url:z,accent:Y})})]})}),D(T,{color:Y})]})},AH=({text:J,startFrame:H,accent:K})=>{let Q=zH(),z=p(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=p(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return c("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[D("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},CH=({cta:J,url:H,accent:K})=>{let Q=zH(),z=p(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=p(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return c("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[D("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),D("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as TH,Sequence as WH,useVideoConfig as vH}from"remotion";import{jsx as I,jsxs as s}from"react/jsx-runtime";var XH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:G}=vH(),U=w,R=40,L=G-90;return s(TH,{children:[I(A,{variant:"dark",showBranding:!0,children:s("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[s("div",{children:[I(B,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&I("div",{style:{marginTop:8},children:I(B,{text:H,variant:"body",enterAt:15,color:U.colors.mutedForeground})})]}),I(WH,{from:40,children:I("div",{style:{flex:1},children:I($H,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&I(WH,{from:L,children:I("div",{style:{marginTop:"auto",paddingTop:24},children:I(B,{text:$,variant:"subheading",enterAt:0,color:U.colors.accent,align:"center"})})})]})}),I(T,{})]})};import{Player as fH}from"@remotion/player";import{useMemo as hH}from"react";import{jsx as UH}from"react/jsx-runtime";var yH={ApiOverview:{component:KH,durationInFrames:450,fps:30,width:1920,height:1080},SocialClip:{component:GH,durationInFrames:300,fps:30,width:1920,height:1080},TerminalDemo:{component:XH,durationInFrames:600,fps:30,width:1920,height:1080}};function jH({compositionId:J,inputProps:H,controls:K=!0,autoPlay:Q=!1,loop:z=!1,width:$="100%",height:G,style:U,className:R,clickToPlay:L=!0,doubleClickToFullscreen:Y=!0}){let q=yH[J],W=hH(()=>({width:$,height:G??"auto",borderRadius:12,overflow:"hidden",...U}),[$,G,U]);return UH("div",{className:R,children:UH(fH,{component:q.component,durationInFrames:q.durationInFrames,fps:q.fps,compositionWidth:q.width,compositionHeight:q.height,inputProps:H,controls:K,autoPlay:Q,loop:z,style:W,clickToPlay:L,doubleClickToFullscreen:Y})})}export{jH as DemoPlayer};
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const RemotionRoot: React.FC;
@@ -1,20 +0,0 @@
1
- // @bun
2
- var xH=import.meta.require;import{Easing as w}from"remotion";var M={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))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},dH={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 C}from"@contractspec/lib.design-system";var h={canvasBackground:C.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:C.colors.accent,gradientStart:C.colors.primary,gradientEnd:C.colors.accent},P={...C,video:h};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as RH,useVideoConfig as YH}from"remotion";import{jsx as ZH}from"react/jsx-runtime";var B=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:W="left"})=>{let X=RH(),{width:q}=YH(),L=b[H],Y={...F(L,q),...K},U=S(X,[Q,Q+V.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(U,[0,1],[0,1],{easing:M.entrance}),G=S(U,[0,1],[30,0],{easing:M.entrance}),Z=1,k=0;if(z!==void 0){let n=S(X,[z,z+V.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(n,[0,1],[1,0],{easing:M.exit}),k=S(n,[0,1],[0,-20],{easing:M.exit})}let E=N*Z,o=G+k;return ZH("div",{style:{fontSize:Y.fontSize,lineHeight:Y.lineHeight,fontWeight:Y.fontWeight,letterSpacing:Y.letterSpacing,color:$,textAlign:W,opacity:E,transform:`translateY(${o}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as s}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var HJ=30,u={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function HH(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(u.horizontal*H),vertical:Math.round(u.vertical*K),contentWidth:Math.round(u.contentWidth*H),contentHeight:Math.round(u.contentHeight*K)}}var JJ={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 KJ(){return[s.landscape,s.square,s.portrait]}import{interpolate as JH,useCurrentFrame as _H,useVideoConfig as IH}from"remotion";import{jsx as r,jsxs as BH}from"react/jsx-runtime";var T=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=_H(),{width:W,height:X}=IH(),q=P,L=HH({type:"custom",width:W,height:X}),R=J?.primaryColor??q.colors.primary,Y=J?.accentColor??q.colors.accent,U=J?.darkMode??!0,N;switch(Q){case"solid":N=U?"#0a0a0a":q.colors.background;break;case"gradient":N=U?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${q.colors.background} 0%, ${q.colors.muted} 100%)`;break;case"dark":N="#000000";break}let G=K?JH($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?JH($,[V.brandReveal,V.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return BH("div",{style:{width:W,height:X,background:N,position:"relative",overflow:"hidden",opacity:G},children:[Q==="gradient"&&r("div",{style:{position:"absolute",top:"-20%",right:"-10%",width:"50%",height:"50%",background:`radial-gradient(circle, ${R}15 0%, transparent 70%)`,borderRadius:"50%",pointerEvents:"none"}}),r("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&r("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:U?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as KH,useCurrentFrame as DH,useVideoConfig as wH}from"remotion";import{jsx as A,jsxs as x}from"react/jsx-runtime";var QH=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=h.codeBackground,textColor:$="#abb2bf",filename:W})=>{let X=DH(),{width:q}=wH(),L=F(b.code,q),R=J.length,Y=R*V.codeTypingPerChar,U=Q?Math.floor(KH(X,[K,K+Y],[0,R],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):R,N=J.slice(0,U),G=KH(X,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&U<R&&X%16<10;return x("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:G,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),A("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:W??H})]}),A("div",{style:{padding:"24px 32px"},children:x("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&A("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as VH,useVideoConfig as PH}from"remotion";import{jsx as $H}from"react/jsx-runtime";var v=({height:J=4,color:H=P.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=VH(),{durationInFrames:$,width:W}=PH(),X=z/$;return $H("div",{style:{position:"absolute",[Q]:0,left:0,width:W,height:J,backgroundColor:K,zIndex:100},children:$H("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as OH,interpolate as f,Sequence as a,useCurrentFrame as zH,useVideoConfig as kH}from"remotion";import{jsx as _,jsxs as y}from"react/jsx-runtime";var GH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:W}=kH(),X=P,q=60,L=45,R=210,Y=180,U=W-90;return y(OH,{children:[y(T,{variant:"gradient",showBranding:!0,children:[_(a,{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:[_(EH,{method:H,enterAt:10}),_(B,{text:K,variant:"subheading",enterAt:15,color:X.colors.mutedForeground})]}),_(B,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(QH,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(a,{from:180,durationInFrames:W-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"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,G)=>_(bH,{label:N,index:G,startFrame:20+G*8},N))}),_(a,{from:U-180,children:_("div",{style:{marginTop:48},children:_(B,{text:$,variant:"heading",enterAt:0,color:X.colors.accent,align:"center"})})})]})})]}),_(v,{})]})},EH=({method:J,enterAt:H})=>{let K=zH(),Q=f(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=f(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},bH=({label:J,startFrame:H})=>{let K=zH(),Q=f(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=f(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=f(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as i,useCurrentFrame as FH,useVideoConfig as SH}from"remotion";import{jsx as O,jsxs as p}from"react/jsx-runtime";var WH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},UH=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=h.terminalBackground,typingSpeed:$=V.codeTypingPerChar})=>{let W=FH(),{width:X}=SH(),q=F(b.code,X),L=[],R=H;for(let U of J){let N=U.delay??10,G=R+N;if(U.type==="command"){let Z=U.text.length*$;L.push({startFrame:G,endFrame:G+Z}),R=G+Z}else L.push({startFrame:G,endFrame:G+5}),R=G+5}let Y=i(W,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return p("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:Y,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[p("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[p("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:q.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((U,N)=>{let G=L[N];if(!G||W<G.startFrame)return null;let Z=U.type==="command",k=WH[U.type],E=U.text;if(Z){let qH=i(W,[G.startFrame,G.endFrame],[0,U.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});E=U.text.slice(0,Math.floor(qH))}let o=Z?1:i(W,[G.startFrame,G.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),NH=Z&&W>=G.startFrame&&W<=G.endFrame&&W%16<10;return p("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:q.fontSize,lineHeight:1.8,color:k,opacity:o,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),U.type==="comment"&&O("span",{style:{color:WH.comment},children:"# "}),E,NH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${N}-${U.text.slice(0,20)}`)})})]})};import{AbsoluteFill as TH,interpolate as d,Sequence as c,useCurrentFrame as XH,useVideoConfig as AH}from"remotion";import{jsx as I,jsxs as m}from"react/jsx-runtime";var l=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:W,width:X,height:q}=AH(),R=$??P.colors.accent,Y=q>X,U=75,N=60,G=120,Z=W-90;return m(TH,{children:[I(T,{variant:"gradient",showBranding:!0,children:m("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:Y?48:32,textAlign:"center",padding:Y?"0 20px":0},children:[I(c,{from:0,durationInFrames:105,children:I("div",{style:{width:"100%"},children:I(B,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),I(c,{from:60,children:I("div",{style:{width:"100%"},children:I(B,{text:H,variant:Y?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&I(c,{from:120,children:I("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:Y?"flex-start":"center",width:"100%",maxWidth:Y?"100%":"80%",marginTop:16},children:K.map((k,E)=>I(vH,{text:k,index:E,startFrame:E*15,accent:R},k))})}),I(c,{from:Z,children:I(CH,{cta:Q,url:z,accent:R})})]})}),I(v,{color:R})]})},vH=({text:J,startFrame:H,accent:K})=>{let Q=XH(),z=d(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return m("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[I("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},CH=({cta:J,url:H,accent:K})=>{let Q=XH(),z=d(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return m("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[I("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),I("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as hH,Sequence as LH,useVideoConfig as yH}from"remotion";import{jsx as D,jsxs as t}from"react/jsx-runtime";var MH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:W}=yH(),X=P,q=40,L=W-90;return t(hH,{children:[D(T,{variant:"dark",showBranding:!0,children:t("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[t("div",{children:[D(B,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&D("div",{style:{marginTop:8},children:D(B,{text:H,variant:"body",enterAt:15,color:X.colors.mutedForeground})})]}),D(LH,{from:40,children:D("div",{style:{flex:1},children:D(UH,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&D(LH,{from:L,children:D("div",{style:{marginTop:"auto",paddingTop:24},children:D(B,{text:$,variant:"subheading",enterAt:0,color:X.colors.accent,align:"center"})})})]})}),D(v,{})]})};import{Composition as j}from"remotion";import{jsx as g,jsxs as uH,Fragment as gH}from"react/jsx-runtime";var fH={specName:"CreateUser",method:"POST",endpoint:"/api/users",specCode:`export const createUser = defineCommand({
3
- meta: {
4
- name: 'CreateUser',
5
- version: '1.0.0',
6
- stability: 'Stable',
7
- },
8
- io: {
9
- input: z.object({
10
- email: z.string().email(),
11
- name: z.string(),
12
- role: z.enum(['admin', 'user']),
13
- }),
14
- output: z.object({
15
- id: z.string().uuid(),
16
- email: z.string(),
17
- createdAt: z.date(),
18
- }),
19
- },
20
- });`,generatedOutputs:["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:"One spec. Every surface."},e={hook:"Stop rewriting the same API logic.",message:"ContractSpec generates REST, GraphQL, DB, SDK, and MCP from a single spec.",points:["Deterministic output","Fully ejectable","Standard tech, no lock-in"],cta:"Try ContractSpec",ctaUrl:"contractspec.dev"},jH={title:"Getting Started with ContractSpec",subtitle:"Define once, generate everything.",lines:[{type:"comment",text:"Initialize a new ContractSpec project"},{type:"command",text:"npx contractspec init my-api"},{type:"output",text:"Created my-api/ with 3 sample contracts"},{type:"command",text:"cd my-api && npx contractspec build"},{type:"success",text:"Built 3 contracts -> 18 generated files"},{type:"output",text:" REST endpoints: 3"},{type:"output",text:" GraphQL types: 3"},{type:"output",text:" Prisma models: 3"},{type:"output",text:" TypeScript SDK: 3"},{type:"output",text:" MCP tools: 3"},{type:"output",text:" OpenAPI specs: 3"},{type:"command",text:"npx contractspec validate"},{type:"success",text:"All contracts valid. 0 warnings."}],terminalTitle:"contractspec",summary:"Ship faster. Stay coherent."},JK=()=>{return uH(gH,{children:[g(j,{id:"ApiOverview",component:GH,durationInFrames:450,fps:30,width:1920,height:1080,defaultProps:fH}),g(j,{id:"SocialClip",component:l,durationInFrames:300,fps:30,width:1920,height:1080,defaultProps:e}),g(j,{id:"SocialClipSquare",component:l,durationInFrames:300,fps:30,width:1080,height:1080,defaultProps:e}),g(j,{id:"SocialClipPortrait",component:l,durationInFrames:300,fps:30,width:1080,height:1920,defaultProps:e}),g(j,{id:"TerminalDemo",component:MH,durationInFrames:600,fps:30,width:1920,height:1080,defaultProps:jH})]})};export{JK as RemotionRoot};
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- // @bun
2
- var cH=import.meta.require;import{Easing as w}from"remotion";var M={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))},V={sceneTransition:20,textEntrance:15,textExit:12,codeTypingPerChar:2,sectionPause:30,emphasisPause:15,brandReveal:25,minScene:60,shortScene:60,mediumScene:120,longScene:240},lH={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 C}from"@contractspec/lib.design-system";var h={canvasBackground:C.colors.background,codeBackground:"#1e1e2e",terminalBackground:"#0d1117",terminalForeground:"#c9d1d9",highlight:C.colors.accent,gradientStart:C.colors.primary,gradientEnd:C.colors.accent},P={...C,video:h};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 F(J,H){let K=H/1920;return{...J,fontSize:Math.round(J.fontSize*K),letterSpacing:J.letterSpacing?Math.round(J.letterSpacing*K*10)/10:void 0}}import{interpolate as S,useCurrentFrame as YH,useVideoConfig as ZH}from"remotion";import{jsx as _H}from"react/jsx-runtime";var B=({text:J,variant:H="body",style:K,enterAt:Q=0,exitAt:z,color:$="#ffffff",align:W="left"})=>{let X=YH(),{width:R}=ZH(),L=b[H],Y={...F(L,R),...K},U=S(X,[Q,Q+V.textEntrance],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),N=S(U,[0,1],[0,1],{easing:M.entrance}),G=S(U,[0,1],[30,0],{easing:M.entrance}),Z=1,k=0;if(z!==void 0){let n=S(X,[z,z+V.textExit],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});Z=S(n,[0,1],[1,0],{easing:M.exit}),k=S(n,[0,1],[0,-20],{easing:M.exit})}let E=N*Z,o=G+k;return _H("div",{style:{fontSize:Y.fontSize,lineHeight:Y.lineHeight,fontWeight:Y.fontWeight,letterSpacing:Y.letterSpacing,color:$,textAlign:W,opacity:E,transform:`translateY(${o}px)`,willChange:"opacity, transform"},children:J})};import{VIDEO_FORMATS as s}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var KJ=30,u={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function HH(J){let H=J.width/1920,K=J.height/1080;return{horizontal:Math.round(u.horizontal*H),vertical:Math.round(u.vertical*K),contentWidth:Math.round(u.contentWidth*H),contentHeight:Math.round(u.contentHeight*K)}}var QJ={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 $J(){return[s.landscape,s.square,s.portrait]}import{interpolate as JH,useCurrentFrame as IH,useVideoConfig as BH}from"remotion";import{jsx as r,jsxs as DH}from"react/jsx-runtime";var T=({styleOverrides:J,showBranding:H=!0,animateEntrance:K=!0,variant:Q="gradient",children:z})=>{let $=IH(),{width:W,height:X}=BH(),R=P,L=HH({type:"custom",width:W,height:X}),q=J?.primaryColor??R.colors.primary,Y=J?.accentColor??R.colors.accent,U=J?.darkMode??!0,N;switch(Q){case"solid":N=U?"#0a0a0a":R.colors.background;break;case"gradient":N=U?"linear-gradient(135deg, #0a0a14 0%, #0f172a 50%, #0a0a14 100%)":`linear-gradient(135deg, ${R.colors.background} 0%, ${R.colors.muted} 100%)`;break;case"dark":N="#000000";break}let G=K?JH($,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}):1,Z=H?JH($,[V.brandReveal,V.brandReveal+15],[0,0.3],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}):0;return DH("div",{style:{width:W,height:X,background:N,position:"relative",overflow:"hidden",opacity:G},children:[Q==="gradient"&&r("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"}}),r("div",{style:{position:"absolute",left:L.horizontal,top:L.vertical,width:L.contentWidth,height:L.contentHeight,display:"flex",flexDirection:"column"},children:z}),H&&r("div",{style:{position:"absolute",bottom:L.vertical/2,right:L.horizontal,opacity:Z,color:U?"#ffffff":"#000000",fontSize:Math.round(16*(W/1920)),fontWeight:500,letterSpacing:1},children:"ContractSpec"})]})};import{interpolate as KH,useCurrentFrame as wH,useVideoConfig as VH}from"remotion";import{jsx as A,jsxs as x}from"react/jsx-runtime";var QH=({code:J,language:H="typescript",startAt:K=0,typeAnimation:Q=!0,backgroundColor:z=h.codeBackground,textColor:$="#abb2bf",filename:W})=>{let X=wH(),{width:R}=VH(),L=F(b.code,R),q=J.length,Y=q*V.codeTypingPerChar,U=Q?Math.floor(KH(X,[K,K+Y],[0,q],{extrapolateLeft:"clamp",extrapolateRight:"clamp"})):q,N=J.slice(0,U),G=KH(X,[K,K+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),Z=Q&&U<q&&X%16<10;return x("div",{style:{backgroundColor:z,borderRadius:16,padding:0,opacity:G,overflow:"hidden",boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[x("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(0,0,0,0.2)",gap:8},children:[x("div",{style:{display:"flex",gap:8},children:[A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#ff5f57"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#febc2e"}}),A("div",{style:{width:12,height:12,borderRadius:"50%",backgroundColor:"#28c840"}})]}),A("div",{style:{flex:1,textAlign:"center",color:"#666",fontSize:L.fontSize*0.7,fontFamily:"monospace"},children:W??H})]}),A("div",{style:{padding:"24px 32px"},children:x("pre",{style:{margin:0,fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:L.fontSize,lineHeight:L.lineHeight,color:$,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[N,Z&&A("span",{style:{backgroundColor:$,width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]})})]})};import{useCurrentFrame as PH,useVideoConfig as OH}from"remotion";import{jsx as $H}from"react/jsx-runtime";var v=({height:J=4,color:H=P.colors.primary,backgroundColor:K="rgba(255,255,255,0.1)",position:Q="bottom"})=>{let z=PH(),{durationInFrames:$,width:W}=OH(),X=z/$;return $H("div",{style:{position:"absolute",[Q]:0,left:0,width:W,height:J,backgroundColor:K,zIndex:100},children:$H("div",{style:{width:`${X*100}%`,height:"100%",backgroundColor:H,transition:"none"}})})};import{AbsoluteFill as kH,interpolate as f,Sequence as a,useCurrentFrame as zH,useVideoConfig as EH}from"remotion";import{jsx as _,jsxs as y}from"react/jsx-runtime";var GH=({specName:J,method:H="POST",endpoint:K="/api/users",specCode:Q,generatedOutputs:z=["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:$="One spec. Every surface."})=>{let{durationInFrames:W}=EH(),X=P,R=60,L=45,q=210,Y=180,U=W-90;return y(kH,{children:[y(T,{variant:"gradient",showBranding:!0,children:[_(a,{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:[_(bH,{method:H,enterAt:10}),_(B,{text:K,variant:"subheading",enterAt:15,color:X.colors.mutedForeground})]}),_(B,{text:J,variant:"title",enterAt:5,color:"#ffffff"}),_("div",{style:{flex:1,marginTop:24},children:_(QH,{code:Q,language:"typescript",filename:`${J.toLowerCase()}.contract.ts`,startAt:45,typeAnimation:!0})})]})}),_(a,{from:180,durationInFrames:W-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"}),_("div",{style:{display:"flex",flexWrap:"wrap",gap:16,justifyContent:"center",maxWidth:"80%",marginTop:32},children:z.map((N,G)=>_(FH,{label:N,index:G,startFrame:20+G*8},N))}),_(a,{from:U-180,children:_("div",{style:{marginTop:48},children:_(B,{text:$,variant:"heading",enterAt:0,color:X.colors.accent,align:"center"})})})]})})]}),_(v,{})]})},bH=({method:J,enterAt:H})=>{let K=zH(),Q=f(K,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance}),z=f(K,[H,H+12],[0.8,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$={GET:"#61afef",POST:"#98c379",PUT:"#e5c07b",PATCH:"#d19a66",DELETE:"#e06c75"};return _("div",{style:{opacity:Q,transform:`scale(${z})`,backgroundColor:$[J]??"#61afef",color:"#000",padding:"8px 20px",borderRadius:8,fontSize:24,fontWeight:700,fontFamily:"monospace",letterSpacing:1},children:J})},FH=({label:J,startFrame:H})=>{let K=zH(),Q=f(K,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),z=f(K,[H,H+15],[20,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis}),$=f(K,[H,H+15],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return _("div",{style:{opacity:Q,transform:`translateY(${z}px) scale(${$})`,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:J})};import{interpolate as i,useCurrentFrame as SH,useVideoConfig as TH}from"remotion";import{jsx as O,jsxs as p}from"react/jsx-runtime";var WH={command:"#c9d1d9",output:"#8b949e",error:"#f85149",success:"#3fb950",comment:"#6e7681"},UH=({lines:J,startAt:H=0,prompt:K="$ ",title:Q="Terminal",backgroundColor:z=h.terminalBackground,typingSpeed:$=V.codeTypingPerChar})=>{let W=SH(),{width:X}=TH(),R=F(b.code,X),L=[],q=H;for(let U of J){let N=U.delay??10,G=q+N;if(U.type==="command"){let Z=U.text.length*$;L.push({startFrame:G,endFrame:G+Z}),q=G+Z}else L.push({startFrame:G,endFrame:G+5}),q=G+5}let Y=i(W,[H,H+10],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return p("div",{style:{backgroundColor:z,borderRadius:16,overflow:"hidden",opacity:Y,boxShadow:"0 8px 32px rgba(0,0,0,0.3)"},children:[p("div",{style:{display:"flex",alignItems:"center",padding:"12px 20px",backgroundColor:"rgba(255,255,255,0.05)",gap:8},children:[p("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:R.fontSize*0.7,fontFamily:"monospace"},children:Q})]}),O("div",{style:{padding:"24px 32px",minHeight:200},children:J.map((U,N)=>{let G=L[N];if(!G||W<G.startFrame)return null;let Z=U.type==="command",k=WH[U.type],E=U.text;if(Z){let qH=i(W,[G.startFrame,G.endFrame],[0,U.text.length],{extrapolateLeft:"clamp",extrapolateRight:"clamp"});E=U.text.slice(0,Math.floor(qH))}let o=Z?1:i(W,[G.startFrame,G.startFrame+5],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),RH=Z&&W>=G.startFrame&&W<=G.endFrame&&W%16<10;return p("div",{style:{fontFamily:"'SF Mono', 'Fira Code', 'JetBrains Mono', monospace",fontSize:R.fontSize,lineHeight:1.8,color:k,opacity:o,whiteSpace:"pre-wrap"},children:[Z&&O("span",{style:{color:"#3fb950"},children:K}),U.type==="comment"&&O("span",{style:{color:WH.comment},children:"# "}),E,RH&&O("span",{style:{backgroundColor:"#c9d1d9",width:"2px",display:"inline-block",height:"1.2em",verticalAlign:"text-bottom"},children:"\xA0"})]},`${N}-${U.text.slice(0,20)}`)})})]})};import{AbsoluteFill as AH,interpolate as d,Sequence as c,useCurrentFrame as XH,useVideoConfig as vH}from"remotion";import{jsx as I,jsxs as m}from"react/jsx-runtime";var l=({hook:J,message:H,points:K=[],cta:Q="Learn more",ctaUrl:z="contractspec.dev",accentColor:$})=>{let{durationInFrames:W,width:X,height:R}=vH(),q=$??P.colors.accent,Y=R>X,U=75,N=60,G=120,Z=W-90;return m(AH,{children:[I(T,{variant:"gradient",showBranding:!0,children:m("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:Y?48:32,textAlign:"center",padding:Y?"0 20px":0},children:[I(c,{from:0,durationInFrames:105,children:I("div",{style:{width:"100%"},children:I(B,{text:J,variant:"title",enterAt:5,exitAt:75,color:"#ffffff",align:"center"})})}),I(c,{from:60,children:I("div",{style:{width:"100%"},children:I(B,{text:H,variant:Y?"subheading":"heading",enterAt:0,color:"#ffffff",align:"center"})})}),K.length>0&&I(c,{from:120,children:I("div",{style:{display:"flex",flexDirection:"column",gap:16,alignItems:Y?"flex-start":"center",width:"100%",maxWidth:Y?"100%":"80%",marginTop:16},children:K.map((k,E)=>I(CH,{text:k,index:E,startFrame:E*15,accent:q},k))})}),I(c,{from:Z,children:I(hH,{cta:Q,url:z,accent:q})})]})}),I(v,{color:q})]})},CH=({text:J,startFrame:H,accent:K})=>{let Q=XH(),z=d(Q,[H,H+12],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[H,H+15],[-30,0],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.entrance});return m("div",{style:{opacity:z,transform:`translateX(${$}px)`,display:"flex",alignItems:"center",gap:16,fontSize:28,color:"#ffffff"},children:[I("div",{style:{width:8,height:8,borderRadius:"50%",backgroundColor:K,flexShrink:0}}),J]})},hH=({cta:J,url:H,accent:K})=>{let Q=XH(),z=d(Q,[0,15],[0,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp"}),$=d(Q,[0,18],[0.9,1],{extrapolateLeft:"clamp",extrapolateRight:"clamp",easing:M.emphasis});return m("div",{style:{opacity:z,transform:`scale(${$})`,display:"flex",flexDirection:"column",alignItems:"center",gap:12,marginTop:24},children:[I("div",{style:{backgroundColor:K,color:"#ffffff",padding:"16px 48px",borderRadius:12,fontSize:28,fontWeight:600},children:J}),I("div",{style:{color:"rgba(255,255,255,0.5)",fontSize:20},children:H})]})};import{AbsoluteFill as yH,Sequence as LH,useVideoConfig as fH}from"remotion";import{jsx as D,jsxs as t}from"react/jsx-runtime";var MH=({title:J,subtitle:H,lines:K,terminalTitle:Q="Terminal",prompt:z="$ ",summary:$})=>{let{durationInFrames:W}=fH(),X=P,R=40,L=W-90;return t(yH,{children:[D(T,{variant:"dark",showBranding:!0,children:t("div",{style:{flex:1,display:"flex",flexDirection:"column",gap:24},children:[t("div",{children:[D(B,{text:J,variant:"heading",enterAt:5,color:"#ffffff"}),H&&D("div",{style:{marginTop:8},children:D(B,{text:H,variant:"body",enterAt:15,color:X.colors.mutedForeground})})]}),D(LH,{from:40,children:D("div",{style:{flex:1},children:D(UH,{lines:K,startAt:0,prompt:z,title:Q})})}),$&&D(LH,{from:L,children:D("div",{style:{marginTop:"auto",paddingTop:24},children:D(B,{text:$,variant:"subheading",enterAt:0,color:X.colors.accent,align:"center"})})})]})}),D(v,{})]})};import{Composition as j}from"remotion";import{jsx as g,jsxs as xH,Fragment as uH}from"react/jsx-runtime";var jH={specName:"CreateUser",method:"POST",endpoint:"/api/users",specCode:`export const createUser = defineCommand({
3
- meta: {
4
- name: 'CreateUser',
5
- version: '1.0.0',
6
- stability: 'Stable',
7
- },
8
- io: {
9
- input: z.object({
10
- email: z.string().email(),
11
- name: z.string(),
12
- role: z.enum(['admin', 'user']),
13
- }),
14
- output: z.object({
15
- id: z.string().uuid(),
16
- email: z.string(),
17
- createdAt: z.date(),
18
- }),
19
- },
20
- });`,generatedOutputs:["REST Endpoint","GraphQL Mutation","Prisma Model","TypeScript SDK","MCP Tool","OpenAPI Spec"],tagline:"One spec. Every surface."},e={hook:"Stop rewriting the same API logic.",message:"ContractSpec generates REST, GraphQL, DB, SDK, and MCP from a single spec.",points:["Deterministic output","Fully ejectable","Standard tech, no lock-in"],cta:"Try ContractSpec",ctaUrl:"contractspec.dev"},gH={title:"Getting Started with ContractSpec",subtitle:"Define once, generate everything.",lines:[{type:"comment",text:"Initialize a new ContractSpec project"},{type:"command",text:"npx contractspec init my-api"},{type:"output",text:"Created my-api/ with 3 sample contracts"},{type:"command",text:"cd my-api && npx contractspec build"},{type:"success",text:"Built 3 contracts -> 18 generated files"},{type:"output",text:" REST endpoints: 3"},{type:"output",text:" GraphQL types: 3"},{type:"output",text:" Prisma models: 3"},{type:"output",text:" TypeScript SDK: 3"},{type:"output",text:" MCP tools: 3"},{type:"output",text:" OpenAPI specs: 3"},{type:"command",text:"npx contractspec validate"},{type:"success",text:"All contracts valid. 0 warnings."}],terminalTitle:"contractspec",summary:"Ship faster. Stay coherent."},NH=()=>{return xH(uH,{children:[g(j,{id:"ApiOverview",component:GH,durationInFrames:450,fps:30,width:1920,height:1080,defaultProps:jH}),g(j,{id:"SocialClip",component:l,durationInFrames:300,fps:30,width:1920,height:1080,defaultProps:e}),g(j,{id:"SocialClipSquare",component:l,durationInFrames:300,fps:30,width:1080,height:1080,defaultProps:e}),g(j,{id:"SocialClipPortrait",component:l,durationInFrames:300,fps:30,width:1080,height:1920,defaultProps:e}),g(j,{id:"TerminalDemo",component:MH,durationInFrames:600,fps:30,width:1920,height:1080,defaultProps:gH})]})};import{registerRoot as pH}from"remotion";pH(NH);
@@ -1,28 +0,0 @@
1
- import type { RenderConfig, VideoCodec, VideoOutputFormat } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
2
- /** Default render configuration for local rendering. */
3
- export declare const defaultRenderConfig: Required<Pick<RenderConfig, 'codec' | 'outputFormat' | 'crf' | 'pixelFormat'>>;
4
- /** Codec-to-output-format mapping. */
5
- export declare const codecFormatMap: Record<VideoCodec, VideoOutputFormat>;
6
- /** Quality presets. */
7
- export declare const qualityPresets: {
8
- /** Fastest render, lower quality (previews) */
9
- readonly draft: {
10
- readonly crf: 28;
11
- readonly concurrency: 1;
12
- };
13
- /** Balanced quality/speed */
14
- readonly standard: {
15
- readonly crf: 18;
16
- readonly concurrency: undefined;
17
- };
18
- /** Highest quality (final output) */
19
- readonly high: {
20
- readonly crf: 12;
21
- readonly concurrency: undefined;
22
- };
23
- };
24
- export type QualityPreset = keyof typeof qualityPresets;
25
- /**
26
- * Merge user config with defaults.
27
- */
28
- export declare function resolveRenderConfig(userConfig: RenderConfig, preset?: QualityPreset): RenderConfig;
@@ -1,2 +0,0 @@
1
- // @bun
2
- var x=import.meta.require;var m={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},A={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},v={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function B(j,b){let k=b?v[b]:{};return{...m,...k,...j}}export{B as resolveRenderConfig,v as qualityPresets,m as defaultRenderConfig,A as codecFormatMap};
@@ -1,3 +0,0 @@
1
- export type { QualityPreset } from './config';
2
- export { codecFormatMap, defaultRenderConfig, qualityPresets, resolveRenderConfig, } from './config';
3
- export { LocalRenderer } from './local';
@@ -1,2 +0,0 @@
1
- // @bun
2
- var Y=import.meta.require;import{VIDEO_FORMATS as H}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var M=30,G={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function V(y){let Q=y.width/1920,x=y.height/1080;return{horizontal:Math.round(G.horizontal*Q),vertical:Math.round(G.vertical*x),contentWidth:Math.round(G.contentWidth*Q),contentHeight:Math.round(G.contentHeight*x)}}var b={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 h(){return[H.landscape,H.square,H.portrait]}var k={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},_={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},L={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function J(y,Q){let x=Q?L[Q]:{};return{...k,...x,...y}}class P{entryPoint;constructor(y){this.entryPoint=y.entryPoint}async render(y,Q){let x=J(Q),{bundle:D}=await import("@remotion/bundler"),{renderMedia:K,selectComposition:N}=await import("@remotion/renderer"),B=await D({entryPoint:this.entryPoint}),U=y.scenes[0],W=y.scenes.length===1&&U?U.compositionId:"Master",E=await N({serveUrl:B,id:W,inputProps:{project:y}});await K({composition:E,serveUrl:B,codec:x.codec,outputLocation:x.outputPath,inputProps:{project:y},...x.crf&&{crf:x.crf},...x.concurrency&&{concurrency:x.concurrency}});let $={outputPath:x.outputPath,format:x.outputFormat??k.outputFormat,codec:x.codec??k.codec,durationSeconds:y.totalDurationInFrames/y.fps,fileSizeBytes:0,dimensions:{width:y.format.width,height:y.format.height}};if(Q.autoVariants){let T=h().filter((z)=>z.type!==y.format.type),q=[];for(let z of T){let w=x.outputPath.replace(/(\.[^.]+)$/,`-${z.type}$1`),X={...y,format:z},Z=await N({serveUrl:B,id:W,inputProps:{project:X}});await K({composition:Z,serveUrl:B,codec:x.codec,outputLocation:w,inputProps:{project:X},...x.crf&&{crf:x.crf}}),q.push({outputPath:w,format:x.outputFormat??k.outputFormat,codec:x.codec??k.codec,durationSeconds:y.totalDurationInFrames/y.fps,fileSizeBytes:0,dimensions:{width:z.width,height:z.height}})}$.variants=q}return $}}export{J as resolveRenderConfig,L as qualityPresets,k as defaultRenderConfig,_ as codecFormatMap,P as LocalRenderer};
@@ -1,17 +0,0 @@
1
- import type { RenderConfig, RenderResult, VideoProject, VideoProvider } from '@contractspec/lib.contracts-integrations/integrations/providers/video';
2
- /**
3
- * Local video renderer using @remotion/renderer.
4
- *
5
- * Usage:
6
- * ```ts
7
- * const renderer = new LocalRenderer({ entryPoint: './src/remotion/index.ts' });
8
- * const result = await renderer.render(project, { outputPath: 'out/video.mp4' });
9
- * ```
10
- */
11
- export declare class LocalRenderer implements VideoProvider {
12
- private readonly entryPoint;
13
- constructor(options: {
14
- entryPoint: string;
15
- });
16
- render(project: VideoProject, config: RenderConfig): Promise<RenderResult>;
17
- }
@@ -1,2 +0,0 @@
1
- // @bun
2
- var X=import.meta.require;import{VIDEO_FORMATS as K}from"@contractspec/lib.contracts-integrations/integrations/providers/video";var I=30,J={horizontal:120,vertical:80,contentWidth:1680,contentHeight:920};function V(x){let z=x.width/1920,k=x.height/1080;return{horizontal:Math.round(J.horizontal*z),vertical:Math.round(J.vertical*k),contentWidth:Math.round(J.contentWidth*z),contentHeight:Math.round(J.contentHeight*k)}}var b={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 Y(){return[K.landscape,K.square,K.portrait]}var G={codec:"h264",outputFormat:"mp4",crf:18,pixelFormat:"yuv420p"},O={h264:"mp4",h265:"mp4",vp8:"webm",vp9:"webm"},Z={draft:{crf:28,concurrency:1},standard:{crf:18,concurrency:void 0},high:{crf:12,concurrency:void 0}};function h(x,z){let k=z?Z[z]:{};return{...G,...k,...x}}class _{entryPoint;constructor(x){this.entryPoint=x.entryPoint}async render(x,z){let k=h(z),{bundle:D}=await import("@remotion/bundler"),{renderMedia:N,selectComposition:Q}=await import("@remotion/renderer"),H=await D({entryPoint:this.entryPoint}),U=x.scenes[0],W=x.scenes.length===1&&U?U.compositionId:"Master",E=await Q({serveUrl:H,id:W,inputProps:{project:x}});await N({composition:E,serveUrl:H,codec:k.codec,outputLocation:k.outputPath,inputProps:{project:x},...k.crf&&{crf:k.crf},...k.concurrency&&{concurrency:k.concurrency}});let $={outputPath:k.outputPath,format:k.outputFormat??G.outputFormat,codec:k.codec??G.codec,durationSeconds:x.totalDurationInFrames/x.fps,fileSizeBytes:0,dimensions:{width:x.format.width,height:x.format.height}};if(z.autoVariants){let L=Y().filter((B)=>B.type!==x.format.type),w=[];for(let B of L){let q=k.outputPath.replace(/(\.[^.]+)$/,`-${B.type}$1`),y={...x,format:B},T=await Q({serveUrl:H,id:W,inputProps:{project:y}});await N({composition:T,serveUrl:H,codec:k.codec,outputLocation:q,inputProps:{project:y},...k.crf&&{crf:k.crf}}),w.push({outputPath:q,format:k.outputFormat??G.outputFormat,codec:k.codec??G.codec,durationSeconds:x.totalDurationInFrames/x.fps,fileSizeBytes:0,dimensions:{width:B.width,height:B.height}})}$.variants=w}return $}}export{_ as LocalRenderer};