@cueframe/kernel 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/LICENSE +661 -0
  2. package/dist/_members/composition/ops/compositionOps.d.ts +1 -0
  3. package/dist/_members/composition/projection/behind-readiness.d.ts +127 -0
  4. package/dist/_members/composition/projection/index.d.ts +2 -0
  5. package/dist/_members/composition/projection/reframe-readiness.d.ts +156 -0
  6. package/dist/_members/composition/validators/composition.d.ts +42 -25
  7. package/dist/_members/composition/validators/render.d.ts +32 -0
  8. package/dist/_members/core/render/compositionRender.d.ts +17 -1
  9. package/dist/_members/core/render/types.d.ts +31 -0
  10. package/dist/authoring/build-tools.js +6 -6
  11. package/dist/authoring/context.js +4 -4
  12. package/dist/authoring/tools.js +5 -5
  13. package/dist/authoring.js +11 -9
  14. package/dist/{chunk-ZB3C3HM7.js → chunk-7FO3ZJ43.js} +3 -0
  15. package/dist/{chunk-ODL7GQJG.js → chunk-AP6ZIVAV.js} +2 -2
  16. package/dist/{chunk-IBYQG46O.js → chunk-AQBREB5O.js} +1 -1
  17. package/dist/{chunk-YIOY2XEO.js → chunk-DK2ODBNT.js} +15 -5
  18. package/dist/{chunk-JRQVPFLF.js → chunk-HY3RIEZW.js} +1 -1
  19. package/dist/{chunk-GEA7E2FL.js → chunk-JJ6XD7NG.js} +151 -1
  20. package/dist/{chunk-COYMZ76S.js → chunk-MBCXCJOE.js} +1 -1
  21. package/dist/{chunk-37NJ27UU.js → chunk-OCFDUCF4.js} +3 -0
  22. package/dist/{chunk-VOO5FQSS.js → chunk-PDYO3DOJ.js} +5 -5
  23. package/dist/{chunk-MXFAADCQ.js → chunk-PODIYN2K.js} +9 -2
  24. package/dist/{chunk-NFEGPWGS.js → chunk-TOJEXFXL.js} +1 -1
  25. package/dist/{chunk-LM4WDUQJ.js → chunk-UHGSZZDI.js} +1 -1
  26. package/dist/{chunk-XWKZB5U5.js → chunk-ZWMV6DD2.js} +24 -1
  27. package/dist/compose/renderer.js +3 -3
  28. package/dist/compose.js +6 -6
  29. package/dist/composition/graphics-plan.js +1 -1
  30. package/dist/composition/ops.js +3 -3
  31. package/dist/composition/primitive-catalog.js +1 -1
  32. package/dist/composition/projection.js +19 -3
  33. package/dist/composition/validators.js +6 -4
  34. package/dist/composition-ops.js +8 -6
  35. package/dist/composition.js +24 -6
  36. package/dist/{context-OKX3HHFS.js → context-YWUZDG5X.js} +4 -4
  37. package/dist/core/render.js +3 -3
  38. package/dist/core/select.js +2 -2
  39. package/dist/core.js +3 -3
  40. package/dist/errors.js +1 -1
  41. package/dist/mcp/adapter.js +1 -0
  42. package/dist/media-model/testing.js +1071 -718
  43. package/dist/nle-export/server.js +328 -130
  44. package/dist/nle-export.js +7 -6
  45. package/package.json +13 -14
  46. package/dist/_members/account-model/index.js +0 -4
  47. package/dist/_members/account-model/testing/conversationStoreContract.js +0 -168
  48. package/dist/_members/account-model/testing/index.js +0 -7
  49. package/dist/_members/account-model/testing/restorePointStoreContract.js +0 -69
  50. package/dist/_members/account-model/types/index.js +0 -1
  51. package/dist/_members/account-model/validators/contextFile.js +0 -18
  52. package/dist/_members/account-model/validators/conversation.js +0 -95
  53. package/dist/_members/account-model/validators/dashboardInsight.js +0 -16
  54. package/dist/_members/account-model/validators/index.js +0 -7
  55. package/dist/_members/account-model/validators/sessionToken.js +0 -49
  56. package/dist/_members/account-model/validators/uploadToken.js +0 -16
  57. package/dist/_members/account-model/validators/userSettings.js +0 -12
  58. package/dist/_members/account-model/validators/workingComposition.js +0 -20
  59. package/dist/_members/brand-derivation/constants.js +0 -20
  60. package/dist/_members/brand-derivation/contrastSafe.js +0 -114
  61. package/dist/_members/brand-derivation/index.js +0 -1
  62. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js +0 -162
  63. package/dist/_members/cloud-import/chunk-XKO6ZSWI.js.map +0 -1
  64. package/dist/_members/cloud-import/index.js +0 -241
  65. package/dist/_members/cloud-import/index.js.map +0 -1
  66. package/dist/_members/cloud-import/multipartUpload.js +0 -7
  67. package/dist/_members/cloud-import/multipartUpload.js.map +0 -1
  68. package/dist/_members/composition/audio/audioMix.js +0 -61
  69. package/dist/_members/composition/audio/index.js +0 -5
  70. package/dist/_members/composition/audio/mixStaging.js +0 -195
  71. package/dist/_members/composition/audio/musicPack.generated.js +0 -136
  72. package/dist/_members/composition/audio/musicPack.js +0 -36
  73. package/dist/_members/composition/audio/pack.generated.js +0 -603
  74. package/dist/_members/composition/audio/pack.js +0 -48
  75. package/dist/_members/composition/audio/palette.js +0 -134
  76. package/dist/_members/composition/autozoom/index.js +0 -83
  77. package/dist/_members/composition/brand-kit.js +0 -45
  78. package/dist/_members/composition/brief/contract.js +0 -209
  79. package/dist/_members/composition/color-grade.js +0 -80
  80. package/dist/_members/composition/depth.js +0 -8
  81. package/dist/_members/composition/fixtures/index.js +0 -143
  82. package/dist/_members/composition/fixtures/vaayaErrored.d.ts +0 -25
  83. package/dist/_members/composition/fixtures/vaayaErrored.js +0 -203
  84. package/dist/_members/composition/fonts.js +0 -162
  85. package/dist/_members/composition/graphics-plan/compile.js +0 -221
  86. package/dist/_members/composition/graphics-plan/index.js +0 -10
  87. package/dist/_members/composition/graphics-plan/instantiateMotif.js +0 -44
  88. package/dist/_members/composition/graphics-plan/motion.js +0 -66
  89. package/dist/_members/composition/graphics-plan/schemas.js +0 -261
  90. package/dist/_members/composition/graphics-plan/solve.js +0 -145
  91. package/dist/_members/composition/index.js +0 -5
  92. package/dist/_members/composition/invariants/clipPlacement.js +0 -69
  93. package/dist/_members/composition/invariants/composition.js +0 -28
  94. package/dist/_members/composition/invariants/errors.js +0 -10
  95. package/dist/_members/composition/invariants/etag.js +0 -38
  96. package/dist/_members/composition/invariants/ids.js +0 -33
  97. package/dist/_members/composition/invariants/index.js +0 -9
  98. package/dist/_members/composition/invariants/keyframes.js +0 -45
  99. package/dist/_members/composition/invariants/markers.js +0 -29
  100. package/dist/_members/composition/invariants/time.js +0 -20
  101. package/dist/_members/composition/invariants/tracks.js +0 -304
  102. package/dist/_members/composition/ops/compositionOps.js +0 -1056
  103. package/dist/_members/composition/ops/headlessStore.js +0 -94
  104. package/dist/_members/composition/ops/index.js +0 -4
  105. package/dist/_members/composition/ops/selectors.js +0 -118
  106. package/dist/_members/composition/ops/timeline-word.js +0 -1
  107. package/dist/_members/composition/ops/transcript.js +0 -77
  108. package/dist/_members/composition/ops/types.js +0 -16
  109. package/dist/_members/composition/primitive-catalog/catalogQuery.js +0 -150
  110. package/dist/_members/composition/primitive-catalog/disabled.js +0 -32
  111. package/dist/_members/composition/primitive-catalog/generated/meta.js +0 -15161
  112. package/dist/_members/composition/primitive-catalog/index.js +0 -46
  113. package/dist/_members/composition/primitive-catalog/paramValidation.js +0 -231
  114. package/dist/_members/composition/primitive-catalog/projection.js +0 -164
  115. package/dist/_members/composition/primitive-catalog/types.js +0 -14
  116. package/dist/_members/composition/projection/behind-placement.js +0 -62
  117. package/dist/_members/composition/projection/brandKit.js +0 -482
  118. package/dist/_members/composition/projection/cardTokens.js +0 -209
  119. package/dist/_members/composition/projection/composition-floor.js +0 -582
  120. package/dist/_members/composition/projection/cropProjection.js +0 -257
  121. package/dist/_members/composition/projection/index.js +0 -7
  122. package/dist/_members/composition/projection/occlusion-budget.js +0 -104
  123. package/dist/_members/composition/projection/safe-zones.js +0 -99
  124. package/dist/_members/composition/reframe/aspectLoss.js +0 -115
  125. package/dist/_members/composition/reframe/coverage.js +0 -62
  126. package/dist/_members/composition/reframe/derive.js +0 -73
  127. package/dist/_members/composition/reframe/index.js +0 -109
  128. package/dist/_members/composition/reframe/kenBurns.js +0 -64
  129. package/dist/_members/composition/reframe/shotScale.js +0 -176
  130. package/dist/_members/composition/reframe/trajectory.js +0 -124
  131. package/dist/_members/composition/timeline/compound.js +0 -134
  132. package/dist/_members/composition/timeline/index.js +0 -9
  133. package/dist/_members/composition/timeline/intent.js +0 -228
  134. package/dist/_members/composition/timeline/keyframes.js +0 -121
  135. package/dist/_members/composition/timeline/link.js +0 -59
  136. package/dist/_members/composition/timeline/occupancy.js +0 -36
  137. package/dist/_members/composition/timeline/placement.js +0 -74
  138. package/dist/_members/composition/timeline/plan.js +0 -31
  139. package/dist/_members/composition/timeline/resolve.js +0 -170
  140. package/dist/_members/composition/timeline/trims.js +0 -278
  141. package/dist/_members/composition/types/index.js +0 -1
  142. package/dist/_members/composition/validators/brandKit.js +0 -295
  143. package/dist/_members/composition/validators/composePlan.js +0 -113
  144. package/dist/_members/composition/validators/composition.js +0 -703
  145. package/dist/_members/composition/validators/font.js +0 -34
  146. package/dist/_members/composition/validators/graphicKinds.js +0 -30
  147. package/dist/_members/composition/validators/index.js +0 -9
  148. package/dist/_members/composition/validators/project.js +0 -29
  149. package/dist/_members/composition/validators/registry.js +0 -41
  150. package/dist/_members/composition/validators/render.js +0 -139
  151. package/dist/_members/composition/validators/session.js +0 -37
  152. package/dist/_members/composition/validators/webhook.js +0 -72
  153. package/dist/_members/composition-ops/alphaLayers.js +0 -141
  154. package/dist/_members/composition-ops/index.js +0 -637
  155. package/dist/_members/composition-ops/materializeGrid.js +0 -99
  156. package/dist/_members/composition-ops/opRecorder.js +0 -196
  157. package/dist/_members/composition-ops/recordingStore.js +0 -14
  158. package/dist/_members/composition-ops/replaceRegion.js +0 -102
  159. package/dist/_members/composition-ops/testFixtures.js +0 -19
  160. package/dist/_members/core/index.js +0 -5
  161. package/dist/_members/core/render/bookends.js +0 -53
  162. package/dist/_members/core/render/captions.js +0 -127
  163. package/dist/_members/core/render/compositionRender.js +0 -1249
  164. package/dist/_members/core/render/deriveTrajectory.js +0 -889
  165. package/dist/_members/core/render/emphasis.js +0 -16
  166. package/dist/_members/core/render/eval/cropBox.js +0 -139
  167. package/dist/_members/core/render/eval/inclusion.js +0 -96
  168. package/dist/_members/core/render/eval/index.js +0 -146
  169. package/dist/_members/core/render/eval/metrics.js +0 -94
  170. package/dist/_members/core/render/exportSettings.js +0 -65
  171. package/dist/_members/core/render/index.js +0 -20
  172. package/dist/_members/core/render/mapFaceToPerson.js +0 -73
  173. package/dist/_members/core/render/types.js +0 -8
  174. package/dist/_members/core/render/vcam/cameraPath.js +0 -248
  175. package/dist/_members/core/render/vcam/constants.js +0 -115
  176. package/dist/_members/core/render/vcam/errorCodes.js +0 -39
  177. package/dist/_members/core/render/vcam/framing.js +0 -136
  178. package/dist/_members/core/render/vcam/requiredRegion.js +0 -137
  179. package/dist/_members/core/render/vcam/shots.js +0 -53
  180. package/dist/_members/core/render/vcam/subjectSet.js +0 -388
  181. package/dist/_members/core/select/errorCodes.js +0 -38
  182. package/dist/_members/core/select/index.js +0 -26
  183. package/dist/_members/core/select/model.js +0 -18
  184. package/dist/_members/core/select/select.js +0 -244
  185. package/dist/_members/core/select/stabilize.js +0 -242
  186. package/dist/_members/core/types.js +0 -7
  187. package/dist/_members/errors/index.js +0 -1
  188. package/dist/_members/errors/registry.js +0 -560
  189. package/dist/_members/foundation/codes/index.js +0 -31
  190. package/dist/_members/foundation/index.js +0 -2
  191. package/dist/_members/foundation/primitives/index.js +0 -5
  192. package/dist/_members/mcp/adapter.js +0 -771
  193. package/dist/_members/mcp/burnedNames.js +0 -73
  194. package/dist/_members/mcp/core.js +0 -390
  195. package/dist/_members/mcp/curation.js +0 -792
  196. package/dist/_members/mcp/executor.js +0 -142
  197. package/dist/_members/mcp/format.js +0 -9
  198. package/dist/_members/mcp/generated/catalogPreviews.js +0 -95
  199. package/dist/_members/mcp/generated/harness.js +0 -81
  200. package/dist/_members/mcp/generated/operations.js +0 -131
  201. package/dist/_members/mcp/index.js +0 -50
  202. package/dist/_members/mcp/internalLoopTools.js +0 -109
  203. package/dist/_members/mcp/prompts.js +0 -45
  204. package/dist/_members/mcp/resources.js +0 -166
  205. package/dist/_members/mcp/server.js +0 -340
  206. package/dist/_members/mcp/wait.js +0 -378
  207. package/dist/_members/mcp/x402Meta.js +0 -66
  208. package/dist/_members/media-model/api.js +0 -175
  209. package/dist/_members/media-model/index.js +0 -1
  210. package/dist/_members/media-model/media-kind.js +0 -116
  211. package/dist/_members/media-model/testing/index.js +0 -1
  212. package/dist/_members/media-model/testing/mediaStoreContract.js +0 -82
  213. package/dist/_members/media-model/transcriptSearch.js +0 -70
  214. package/dist/_members/media-model/transcriptSearchCases.json +0 -79
  215. package/dist/_members/nle-export/compact-timeline.js +0 -73
  216. package/dist/_members/nle-export/compact-timeline.js.map +0 -1
  217. package/dist/_members/nle-export/composition-to-input.js +0 -147
  218. package/dist/_members/nle-export/composition-to-input.js.map +0 -1
  219. package/dist/_members/nle-export/fcpxml.js +0 -159
  220. package/dist/_members/nle-export/fcpxml.js.map +0 -1
  221. package/dist/_members/nle-export/index.js +0 -12
  222. package/dist/_members/nle-export/index.js.map +0 -1
  223. package/dist/_members/nle-export/premiere.js +0 -161
  224. package/dist/_members/nle-export/premiere.js.map +0 -1
  225. package/dist/_members/nle-export/server/index.js +0 -2
  226. package/dist/_members/nle-export/server/index.js.map +0 -1
  227. package/dist/_members/nle-export/server/pack-zip.js +0 -38
  228. package/dist/_members/nle-export/server/pack-zip.js.map +0 -1
  229. package/dist/_members/nle-export/srt.js +0 -50
  230. package/dist/_members/nle-export/srt.js.map +0 -1
  231. package/dist/_members/nle-export/types.js +0 -9
  232. package/dist/_members/nle-export/types.js.map +0 -1
  233. package/dist/_members/nle-export/xml/index.js +0 -11
  234. package/dist/_members/nle-export/xml/index.js.map +0 -1
  235. package/dist/_members/nle-export/xml-utils.js +0 -48
  236. package/dist/_members/nle-export/xml-utils.js.map +0 -1
  237. package/dist/_members/perception/activeSpeaker.js +0 -103
  238. package/dist/_members/perception/audioQuality.js +0 -76
  239. package/dist/_members/perception/energyBeat.js +0 -99
  240. package/dist/_members/perception/identityMatch.js +0 -91
  241. package/dist/_members/perception/index.js +0 -48
  242. package/dist/_members/perception/visualQuality.js +0 -95
  243. package/dist/_members/plane/conformance.js +0 -90
  244. package/dist/_members/plane/contract.js +0 -49
  245. package/dist/_members/plane/index.js +0 -16
  246. package/dist/_members/primitives/backgrounds/index.js +0 -32
  247. package/dist/_members/primitives/backgrounds/index.js.map +0 -1
  248. package/dist/_members/primitives/captions/index.js +0 -398
  249. package/dist/_members/primitives/captions/index.js.map +0 -1
  250. package/dist/_members/primitives/chunk-2LVE4UIT.js +0 -139
  251. package/dist/_members/primitives/chunk-2LVE4UIT.js.map +0 -1
  252. package/dist/_members/primitives/chunk-3IQUH6KK.js +0 -20
  253. package/dist/_members/primitives/chunk-3IQUH6KK.js.map +0 -1
  254. package/dist/_members/primitives/chunk-3OMURV6Q.js +0 -112
  255. package/dist/_members/primitives/chunk-3OMURV6Q.js.map +0 -1
  256. package/dist/_members/primitives/chunk-4IS6TMEG.js +0 -21
  257. package/dist/_members/primitives/chunk-4IS6TMEG.js.map +0 -1
  258. package/dist/_members/primitives/chunk-5MWGAEGQ.js +0 -1644
  259. package/dist/_members/primitives/chunk-5MWGAEGQ.js.map +0 -1
  260. package/dist/_members/primitives/chunk-7RRPFPQK.js +0 -15
  261. package/dist/_members/primitives/chunk-7RRPFPQK.js.map +0 -1
  262. package/dist/_members/primitives/chunk-DH5TRZK2.js +0 -125
  263. package/dist/_members/primitives/chunk-DH5TRZK2.js.map +0 -1
  264. package/dist/_members/primitives/chunk-E3KNUSFG.js +0 -2337
  265. package/dist/_members/primitives/chunk-E3KNUSFG.js.map +0 -1
  266. package/dist/_members/primitives/chunk-G2B3G4HK.js +0 -47
  267. package/dist/_members/primitives/chunk-G2B3G4HK.js.map +0 -1
  268. package/dist/_members/primitives/chunk-HFPFGZXT.js +0 -1494
  269. package/dist/_members/primitives/chunk-HFPFGZXT.js.map +0 -1
  270. package/dist/_members/primitives/chunk-HIWVFZVH.js +0 -19
  271. package/dist/_members/primitives/chunk-HIWVFZVH.js.map +0 -1
  272. package/dist/_members/primitives/chunk-IDAL6G3Y.js +0 -134
  273. package/dist/_members/primitives/chunk-IDAL6G3Y.js.map +0 -1
  274. package/dist/_members/primitives/chunk-KNC6JP5F.js +0 -34
  275. package/dist/_members/primitives/chunk-KNC6JP5F.js.map +0 -1
  276. package/dist/_members/primitives/chunk-KYRDVZST.js +0 -459
  277. package/dist/_members/primitives/chunk-KYRDVZST.js.map +0 -1
  278. package/dist/_members/primitives/chunk-LWLHS2NS.js +0 -3410
  279. package/dist/_members/primitives/chunk-LWLHS2NS.js.map +0 -1
  280. package/dist/_members/primitives/chunk-QAQ3P7DR.js +0 -8855
  281. package/dist/_members/primitives/chunk-QAQ3P7DR.js.map +0 -1
  282. package/dist/_members/primitives/chunk-ROV2ODWC.js +0 -81
  283. package/dist/_members/primitives/chunk-ROV2ODWC.js.map +0 -1
  284. package/dist/_members/primitives/chunk-TCRC2FH3.js +0 -183
  285. package/dist/_members/primitives/chunk-TCRC2FH3.js.map +0 -1
  286. package/dist/_members/primitives/chunk-US4YEDAA.js +0 -96
  287. package/dist/_members/primitives/chunk-US4YEDAA.js.map +0 -1
  288. package/dist/_members/primitives/chunk-UVKRO5ER.js +0 -13
  289. package/dist/_members/primitives/chunk-UVKRO5ER.js.map +0 -1
  290. package/dist/_members/primitives/chunk-W4EIIF2I.js +0 -10
  291. package/dist/_members/primitives/chunk-W4EIIF2I.js.map +0 -1
  292. package/dist/_members/primitives/chunk-WPGKIPCO.js +0 -3563
  293. package/dist/_members/primitives/chunk-WPGKIPCO.js.map +0 -1
  294. package/dist/_members/primitives/chunk-WZFLEGMD.js +0 -1435
  295. package/dist/_members/primitives/chunk-WZFLEGMD.js.map +0 -1
  296. package/dist/_members/primitives/chunk-XHU3WBEI.js +0 -33
  297. package/dist/_members/primitives/chunk-XHU3WBEI.js.map +0 -1
  298. package/dist/_members/primitives/chunk-YN7WTZZ7.js +0 -46
  299. package/dist/_members/primitives/chunk-YN7WTZZ7.js.map +0 -1
  300. package/dist/_members/primitives/effects/index.js +0 -30
  301. package/dist/_members/primitives/effects/index.js.map +0 -1
  302. package/dist/_members/primitives/hero-text/index.js +0 -14
  303. package/dist/_members/primitives/hero-text/index.js.map +0 -1
  304. package/dist/_members/primitives/index.js +0 -64
  305. package/dist/_members/primitives/index.js.map +0 -1
  306. package/dist/_members/primitives/layouts/index.js +0 -24
  307. package/dist/_members/primitives/layouts/index.js.map +0 -1
  308. package/dist/_members/primitives/lib/easings.js +0 -26
  309. package/dist/_members/primitives/lib/easings.js.map +0 -1
  310. package/dist/_members/primitives/lib/index.js +0 -74
  311. package/dist/_members/primitives/lib/index.js.map +0 -1
  312. package/dist/_members/primitives/lib/palette.js +0 -72
  313. package/dist/_members/primitives/lib/palette.js.map +0 -1
  314. package/dist/_members/primitives/lib/preview.js +0 -8
  315. package/dist/_members/primitives/lib/preview.js.map +0 -1
  316. package/dist/_members/primitives/lib/schema.js +0 -12
  317. package/dist/_members/primitives/lib/schema.js.map +0 -1
  318. package/dist/_members/primitives/lib/seeded-random.js +0 -14
  319. package/dist/_members/primitives/lib/seeded-random.js.map +0 -1
  320. package/dist/_members/primitives/lib/text/contrast.js +0 -12
  321. package/dist/_members/primitives/lib/text/contrast.js.map +0 -1
  322. package/dist/_members/primitives/lib/text/fill.js +0 -8
  323. package/dist/_members/primitives/lib/text/fill.js.map +0 -1
  324. package/dist/_members/primitives/lib/text/fitText.js +0 -10
  325. package/dist/_members/primitives/lib/text/fitText.js.map +0 -1
  326. package/dist/_members/primitives/lib/text/marker.js +0 -8
  327. package/dist/_members/primitives/lib/text/marker.js.map +0 -1
  328. package/dist/_members/primitives/lib/text/motion.js +0 -16
  329. package/dist/_members/primitives/lib/text/motion.js.map +0 -1
  330. package/dist/_members/primitives/lib/text/recolor.js +0 -8
  331. package/dist/_members/primitives/lib/text/recolor.js.map +0 -1
  332. package/dist/_members/primitives/lib/text/spec.js +0 -1
  333. package/dist/_members/primitives/lib/text/spec.js.map +0 -1
  334. package/dist/_members/primitives/lib/text/stage.js +0 -8
  335. package/dist/_members/primitives/lib/text/stage.js.map +0 -1
  336. package/dist/_members/primitives/lib/text/typeface.js +0 -8
  337. package/dist/_members/primitives/lib/text/typeface.js.map +0 -1
  338. package/dist/_members/primitives/lib/tokens.js +0 -24
  339. package/dist/_members/primitives/lib/tokens.js.map +0 -1
  340. package/dist/_members/primitives/lib/types.js +0 -1
  341. package/dist/_members/primitives/lib/types.js.map +0 -1
  342. package/dist/_members/primitives/params-required.json +0 -153
  343. package/dist/_members/primitives/scenes/index.js +0 -25
  344. package/dist/_members/primitives/scenes/index.js.map +0 -1
  345. package/dist/_members/primitives/subject-foreground/index.js +0 -30
  346. package/dist/_members/primitives/subject-foreground/index.js.map +0 -1
  347. package/dist/_members/primitives/text/index.js +0 -57
  348. package/dist/_members/primitives/text/index.js.map +0 -1
  349. package/dist/_members/primitives/transitions/index.js +0 -67
  350. package/dist/_members/primitives/transitions/index.js.map +0 -1
  351. package/dist/_members/primitives/ui-blocks/index.js +0 -76
  352. package/dist/_members/primitives/ui-blocks/index.js.map +0 -1
  353. package/dist/_members/primitives/version-map.json +0 -105
  354. package/dist/_members/primitives/workspace.js +0 -60
  355. package/dist/_members/primitives/workspace.js.map +0 -1
@@ -1,1494 +0,0 @@
1
- import {
2
- ACCENT,
3
- BG,
4
- BG_DEEP,
5
- BLUE,
6
- BORDER,
7
- BORDER_SOFT,
8
- MAC_GREEN,
9
- MAC_RED,
10
- MAC_YELLOW,
11
- SURFACE,
12
- SURFACE_HI,
13
- SYN_KEYWORD,
14
- SYN_NUMBER,
15
- SYN_PROP,
16
- SYN_TEXT,
17
- TEXT,
18
- TEXT_HI,
19
- TEXT_MUTED,
20
- VIOLET
21
- } from "./chunk-3OMURV6Q.js";
22
- import {
23
- FitText
24
- } from "./chunk-ROV2ODWC.js";
25
-
26
- // src/layouts/chat-to-preview-layout/index.tsx
27
- import { Easing, interpolate, useCurrentFrame, useVideoConfig } from "remotion";
28
- import { jsx, jsxs } from "react/jsx-runtime";
29
- var FONT_FAMILY = "inherit";
30
- function DefaultChat() {
31
- const messages = [
32
- { from: "user", text: "Build me a landing page" },
33
- { from: "ai", text: "Sure \u2014 what should it feature?" },
34
- { from: "user", text: "Hero, pricing, footer." },
35
- { from: "ai", text: "On it. Generating now..." }
36
- ];
37
- return /* @__PURE__ */ jsxs(
38
- "div",
39
- {
40
- style: {
41
- position: "absolute",
42
- inset: 0,
43
- padding: 24,
44
- display: "flex",
45
- flexDirection: "column",
46
- gap: 12,
47
- fontFamily: FONT_FAMILY,
48
- background: BG
49
- },
50
- children: [
51
- /* @__PURE__ */ jsx(
52
- "div",
53
- {
54
- style: {
55
- color: TEXT_MUTED,
56
- fontSize: 12,
57
- fontWeight: 600,
58
- letterSpacing: "0.08em",
59
- textTransform: "uppercase",
60
- marginBottom: 8
61
- },
62
- children: "Chat"
63
- }
64
- ),
65
- messages.map((m, i) => /* @__PURE__ */ jsx(
66
- "div",
67
- {
68
- style: {
69
- alignSelf: m.from === "user" ? "flex-end" : "flex-start",
70
- background: m.from === "user" ? ACCENT : SURFACE_HI,
71
- color: TEXT_HI,
72
- padding: "10px 14px",
73
- borderRadius: 14,
74
- fontSize: 14,
75
- maxWidth: "85%"
76
- },
77
- children: m.text
78
- },
79
- i
80
- ))
81
- ]
82
- }
83
- );
84
- }
85
- function DefaultPreview() {
86
- return /* @__PURE__ */ jsxs(
87
- "div",
88
- {
89
- style: {
90
- position: "absolute",
91
- inset: 0,
92
- background: TEXT_HI,
93
- display: "flex",
94
- flexDirection: "column",
95
- fontFamily: FONT_FAMILY
96
- },
97
- children: [
98
- /* @__PURE__ */ jsxs(
99
- "div",
100
- {
101
- style: {
102
- height: 36,
103
- background: TEXT,
104
- borderBottom: `1px solid ${BORDER_SOFT}`,
105
- display: "flex",
106
- alignItems: "center",
107
- gap: 6,
108
- padding: "0 12px"
109
- },
110
- children: [
111
- /* @__PURE__ */ jsx(
112
- "div",
113
- {
114
- style: {
115
- width: 10,
116
- height: 10,
117
- borderRadius: 999,
118
- background: MAC_RED
119
- }
120
- }
121
- ),
122
- /* @__PURE__ */ jsx(
123
- "div",
124
- {
125
- style: {
126
- width: 10,
127
- height: 10,
128
- borderRadius: 999,
129
- background: MAC_YELLOW
130
- }
131
- }
132
- ),
133
- /* @__PURE__ */ jsx(
134
- "div",
135
- {
136
- style: {
137
- width: 10,
138
- height: 10,
139
- borderRadius: 999,
140
- background: MAC_GREEN
141
- }
142
- }
143
- )
144
- ]
145
- }
146
- ),
147
- /* @__PURE__ */ jsxs(
148
- "div",
149
- {
150
- style: {
151
- flex: 1,
152
- padding: 32,
153
- display: "flex",
154
- flexDirection: "column",
155
- gap: 16
156
- },
157
- children: [
158
- /* @__PURE__ */ jsx(
159
- "div",
160
- {
161
- style: {
162
- fontSize: 36,
163
- fontWeight: 700,
164
- letterSpacing: "-0.03em",
165
- color: BG
166
- },
167
- children: "Ship faster."
168
- }
169
- ),
170
- /* @__PURE__ */ jsx("div", { style: { fontSize: 16, color: TEXT_MUTED, maxWidth: 360 }, children: "The fastest way to launch your idea. Built with Remotion." }),
171
- /* @__PURE__ */ jsx(
172
- "div",
173
- {
174
- style: {
175
- marginTop: 12,
176
- display: "inline-flex",
177
- background: BG,
178
- color: TEXT_HI,
179
- padding: "10px 18px",
180
- borderRadius: 10,
181
- alignSelf: "flex-start",
182
- fontSize: 14,
183
- fontWeight: 600
184
- },
185
- children: "Get started"
186
- }
187
- )
188
- ]
189
- }
190
- )
191
- ]
192
- }
193
- );
194
- }
195
- function ChatToPreviewLayout({
196
- chat,
197
- preview,
198
- startChatRatio = 0.5,
199
- endChatRatio = 0.25,
200
- background = BG,
201
- speed = 1,
202
- className
203
- }) {
204
- const frame = useCurrentFrame() * speed;
205
- const { durationInFrames } = useVideoConfig();
206
- const APPLE_EASE = Easing.bezier(0.16, 1, 0.3, 1);
207
- const morphStart = durationInFrames * 0.1;
208
- const morphEnd = durationInFrames * 0.7;
209
- const ratio = interpolate(
210
- frame,
211
- [morphStart, morphEnd],
212
- [startChatRatio, endChatRatio],
213
- {
214
- extrapolateLeft: "clamp",
215
- extrapolateRight: "clamp",
216
- easing: APPLE_EASE
217
- }
218
- );
219
- const previewOpacity = interpolate(frame, [morphStart, morphEnd], [0, 1], {
220
- extrapolateLeft: "clamp",
221
- extrapolateRight: "clamp",
222
- easing: APPLE_EASE
223
- });
224
- const previewTx = interpolate(frame, [morphStart, morphEnd], [40, 0], {
225
- extrapolateLeft: "clamp",
226
- extrapolateRight: "clamp",
227
- easing: APPLE_EASE
228
- });
229
- const chatBasis = `${ratio * 100}%`;
230
- const previewBasis = `${(1 - ratio) * 100}%`;
231
- const CHAT_INNER_MIN = 520;
232
- const PREVIEW_INNER_MIN = 720;
233
- return /* @__PURE__ */ jsxs(
234
- "div",
235
- {
236
- className,
237
- style: {
238
- position: "absolute",
239
- inset: 0,
240
- background,
241
- padding: 32,
242
- display: "flex",
243
- gap: 16
244
- },
245
- children: [
246
- /* @__PURE__ */ jsx(
247
- "div",
248
- {
249
- style: {
250
- flexBasis: chatBasis,
251
- flexGrow: 0,
252
- flexShrink: 0,
253
- position: "relative",
254
- overflow: "hidden",
255
- borderRadius: 16,
256
- border: `1px solid ${BORDER_SOFT}`
257
- },
258
- children: /* @__PURE__ */ jsx(
259
- "div",
260
- {
261
- style: {
262
- position: "absolute",
263
- inset: 0,
264
- minWidth: CHAT_INNER_MIN
265
- },
266
- children: chat ?? /* @__PURE__ */ jsx(DefaultChat, {})
267
- }
268
- )
269
- }
270
- ),
271
- /* @__PURE__ */ jsx(
272
- "div",
273
- {
274
- style: {
275
- flexBasis: previewBasis,
276
- flexGrow: 0,
277
- flexShrink: 0,
278
- position: "relative",
279
- overflow: "hidden",
280
- borderRadius: 16,
281
- border: `1px solid ${BORDER_SOFT}`,
282
- opacity: previewOpacity,
283
- transform: `translateX(${previewTx}px)`
284
- },
285
- children: /* @__PURE__ */ jsx(
286
- "div",
287
- {
288
- style: {
289
- position: "absolute",
290
- inset: 0,
291
- minWidth: PREVIEW_INNER_MIN
292
- },
293
- children: preview ?? /* @__PURE__ */ jsx(DefaultPreview, {})
294
- }
295
- )
296
- }
297
- )
298
- ]
299
- }
300
- );
301
- }
302
-
303
- // src/layouts/infinite-bento-pan/index.tsx
304
- import { interpolate as interpolate2, useCurrentFrame as useCurrentFrame2, useVideoConfig as useVideoConfig2 } from "remotion";
305
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
306
- var FONT_FAMILY2 = "inherit";
307
- var SUPER_W = 3500;
308
- var SUPER_H = 2500;
309
- var CARDS = [
310
- { x: 80, y: 80, w: 480, h: 280, kind: "chart", hue: 220, label: "Revenue" },
311
- { x: 600, y: 80, w: 280, h: 280, kind: "counter", hue: 280, label: "MRR" },
312
- { x: 920, y: 80, w: 360, h: 180, kind: "gradient", hue: 200 },
313
- { x: 1320, y: 80, w: 480, h: 280, kind: "code", hue: 0, label: "deploy.ts" },
314
- { x: 1840, y: 80, w: 280, h: 280, kind: "logo", hue: 320 },
315
- { x: 2160, y: 80, w: 380, h: 180, kind: "stat", hue: 160, label: "Uptime" },
316
- { x: 2580, y: 80, w: 360, h: 280, kind: "bars", hue: 40, label: "Visits" },
317
- { x: 920, y: 300, w: 360, h: 200, kind: "counter", hue: 180, label: "Users" },
318
- {
319
- x: 2160,
320
- y: 300,
321
- w: 380,
322
- h: 200,
323
- kind: "chart",
324
- hue: 100,
325
- label: "Latency"
326
- },
327
- { x: 80, y: 400, w: 280, h: 280, kind: "gradient", hue: 340 },
328
- { x: 400, y: 400, w: 480, h: 280, kind: "code", hue: 0, label: "api.ts" },
329
- { x: 1320, y: 420, w: 280, h: 280, kind: "stat", hue: 60, label: "P95" },
330
- { x: 1640, y: 420, w: 380, h: 280, kind: "bars", hue: 260, label: "Builds" },
331
- { x: 2580, y: 420, w: 360, h: 280, kind: "logo", hue: 200 },
332
- { x: 80, y: 720, w: 480, h: 240, kind: "chart", hue: 290, label: "Errors" },
333
- { x: 600, y: 720, w: 280, h: 240, kind: "stat", hue: 20, label: "RPS" },
334
- { x: 920, y: 740, w: 380, h: 220, kind: "gradient", hue: 240 },
335
- {
336
- x: 1320,
337
- y: 740,
338
- w: 360,
339
- h: 220,
340
- kind: "counter",
341
- hue: 140,
342
- label: "Active"
343
- },
344
- { x: 1720, y: 740, w: 480, h: 240, kind: "code", hue: 0, label: "worker.ts" },
345
- { x: 2240, y: 740, w: 360, h: 240, kind: "bars", hue: 320, label: "Queue" },
346
- { x: 80, y: 1e3, w: 360, h: 220, kind: "logo", hue: 180 },
347
- { x: 460, y: 1e3, w: 380, h: 220, kind: "stat", hue: 80, label: "Cache" },
348
- { x: 880, y: 1e3, w: 480, h: 220, kind: "chart", hue: 200, label: "CPU" },
349
- {
350
- x: 1400,
351
- y: 1e3,
352
- w: 280,
353
- h: 220,
354
- kind: "counter",
355
- hue: 360,
356
- label: "Jobs"
357
- },
358
- { x: 1720, y: 1020, w: 360, h: 220, kind: "gradient", hue: 120 },
359
- { x: 2120, y: 1020, w: 380, h: 220, kind: "code", hue: 0, label: "db.sql" },
360
- { x: 2540, y: 1020, w: 400, h: 220, kind: "bars", hue: 280, label: "Tasks" },
361
- { x: 80, y: 1280, w: 480, h: 260, kind: "code", hue: 0, label: "edge.ts" },
362
- { x: 600, y: 1280, w: 360, h: 260, kind: "chart", hue: 240, label: "TTFB" },
363
- { x: 1e3, y: 1280, w: 280, h: 260, kind: "logo", hue: 60 },
364
- { x: 1320, y: 1280, w: 380, h: 260, kind: "stat", hue: 200, label: "Hits" },
365
- {
366
- x: 1740,
367
- y: 1280,
368
- w: 360,
369
- h: 260,
370
- kind: "counter",
371
- hue: 300,
372
- label: "Bytes"
373
- },
374
- { x: 2140, y: 1280, w: 380, h: 260, kind: "gradient", hue: 160 },
375
- { x: 2560, y: 1280, w: 380, h: 260, kind: "bars", hue: 0, label: "Errors" },
376
- { x: 80, y: 1600, w: 380, h: 220, kind: "stat", hue: 280, label: "Saved" },
377
- { x: 500, y: 1600, w: 480, h: 220, kind: "chart", hue: 40, label: "Net Out" },
378
- { x: 1020, y: 1600, w: 360, h: 220, kind: "code", hue: 0, label: "auth.ts" },
379
- { x: 1420, y: 1600, w: 280, h: 220, kind: "logo", hue: 220 },
380
- {
381
- x: 1740,
382
- y: 1620,
383
- w: 380,
384
- h: 220,
385
- kind: "counter",
386
- hue: 100,
387
- label: "Hooks"
388
- },
389
- { x: 2160, y: 1620, w: 360, h: 220, kind: "bars", hue: 340, label: "Runs" },
390
- { x: 2560, y: 1620, w: 380, h: 220, kind: "gradient", hue: 200 },
391
- { x: 80, y: 1880, w: 480, h: 240, kind: "bars", hue: 180, label: "Edges" },
392
- { x: 600, y: 1880, w: 380, h: 240, kind: "gradient", hue: 320 },
393
- { x: 1020, y: 1880, w: 360, h: 240, kind: "logo", hue: 80 },
394
- {
395
- x: 1420,
396
- y: 1880,
397
- w: 480,
398
- h: 240,
399
- kind: "chart",
400
- hue: 260,
401
- label: "Tokens"
402
- },
403
- {
404
- x: 1940,
405
- y: 1880,
406
- w: 280,
407
- h: 240,
408
- kind: "counter",
409
- hue: 20,
410
- label: "Calls"
411
- },
412
- { x: 2260, y: 1880, w: 380, h: 240, kind: "stat", hue: 140, label: "Score" },
413
- { x: 2680, y: 1880, w: 260, h: 240, kind: "code", hue: 0, label: "ws.ts" }
414
- ];
415
- function noise(i, frame) {
416
- return Math.sin(frame / 30 + i) * 0.5 + 0.5;
417
- }
418
- function ChartCard({ accent, t }) {
419
- const points = [];
420
- for (let i = 0; i < 12; i++) {
421
- const x = i / 11 * 100;
422
- const y = 50 - (Math.sin(i * 0.7 + t) * 18 + Math.cos(i * 0.4 + t * 0.6) * 8);
423
- points.push(`${x},${y}`);
424
- }
425
- return /* @__PURE__ */ jsxs2(
426
- "svg",
427
- {
428
- viewBox: "0 0 100 60",
429
- preserveAspectRatio: "none",
430
- style: { width: "100%", height: "100%" },
431
- children: [
432
- /* @__PURE__ */ jsx2(
433
- "polyline",
434
- {
435
- points: points.join(" "),
436
- fill: "none",
437
- stroke: accent,
438
- strokeWidth: 1.4,
439
- strokeLinecap: "round",
440
- strokeLinejoin: "round"
441
- }
442
- ),
443
- /* @__PURE__ */ jsx2(
444
- "polyline",
445
- {
446
- points: `${points.join(" ")} 100,60 0,60`,
447
- fill: `${accent}22`,
448
- stroke: "none"
449
- }
450
- )
451
- ]
452
- }
453
- );
454
- }
455
- function BarsCard({ accent, t }) {
456
- return /* @__PURE__ */ jsx2(
457
- "div",
458
- {
459
- style: {
460
- display: "flex",
461
- alignItems: "flex-end",
462
- gap: 6,
463
- height: "100%",
464
- width: "100%"
465
- },
466
- children: Array.from({ length: 10 }).map((_, i) => {
467
- const h = 25 + (Math.sin(i * 0.8 + t) * 0.5 + 0.5) * 70;
468
- return /* @__PURE__ */ jsx2(
469
- "div",
470
- {
471
- style: {
472
- flex: 1,
473
- height: `${h}%`,
474
- background: `linear-gradient(180deg, ${accent} 0%, ${accent}55 100%)`,
475
- borderRadius: 4
476
- }
477
- },
478
- i
479
- );
480
- })
481
- }
482
- );
483
- }
484
- function CodeCard() {
485
- const lines = [
486
- { indent: 0, w: 60, c: SYN_PROP },
487
- { indent: 1, w: 80, c: `${SYN_TEXT}cc` },
488
- { indent: 1, w: 50, c: SYN_KEYWORD },
489
- { indent: 2, w: 70, c: `${SYN_TEXT}cc` },
490
- { indent: 2, w: 40, c: SYN_NUMBER },
491
- { indent: 1, w: 30, c: `${SYN_TEXT}99` },
492
- { indent: 0, w: 20, c: `${SYN_TEXT}99` }
493
- ];
494
- return /* @__PURE__ */ jsx2(
495
- "div",
496
- {
497
- style: {
498
- display: "flex",
499
- flexDirection: "column",
500
- gap: 8,
501
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace"
502
- },
503
- children: lines.map((l, i) => /* @__PURE__ */ jsx2(
504
- "div",
505
- {
506
- style: {
507
- marginLeft: l.indent * 14,
508
- width: `${l.w}%`,
509
- height: 8,
510
- borderRadius: 3,
511
- background: l.c,
512
- opacity: 0.7
513
- }
514
- },
515
- i
516
- ))
517
- }
518
- );
519
- }
520
- function LogoCard({ accent, hue }) {
521
- return /* @__PURE__ */ jsx2(
522
- "div",
523
- {
524
- style: {
525
- width: "100%",
526
- height: "100%",
527
- display: "flex",
528
- alignItems: "center",
529
- justifyContent: "center"
530
- },
531
- children: /* @__PURE__ */ jsx2(
532
- "div",
533
- {
534
- style: {
535
- width: 80,
536
- height: 80,
537
- borderRadius: 20,
538
- background: `linear-gradient(135deg, ${accent} 0%, hsl(${hue},70%,55%) 100%)`
539
- }
540
- }
541
- )
542
- }
543
- );
544
- }
545
- function GradientCard({ hue }) {
546
- return /* @__PURE__ */ jsx2(
547
- "div",
548
- {
549
- style: {
550
- width: "100%",
551
- height: "100%",
552
- background: `radial-gradient(circle at 30% 30%, hsl(${hue},80%,60%) 0%, hsl(${(hue + 60) % 360},70%,40%) 50%, ${BG} 100%)`
553
- }
554
- }
555
- );
556
- }
557
- function Card({
558
- card,
559
- accent,
560
- index,
561
- frame
562
- }) {
563
- const t = noise(index, frame) * 6.28;
564
- const baseStyle = {
565
- position: "absolute",
566
- left: card.x,
567
- top: card.y,
568
- width: card.w,
569
- height: card.h,
570
- borderRadius: 18,
571
- background: `linear-gradient(180deg, ${SURFACE} 0%, ${BG} 100%)`,
572
- border: `1px solid ${BORDER_SOFT}`,
573
- overflow: "hidden",
574
- padding: 18,
575
- color: TEXT_HI,
576
- display: "flex",
577
- flexDirection: "column"
578
- };
579
- const labelEl = card.label ? /* @__PURE__ */ jsx2(
580
- "div",
581
- {
582
- style: {
583
- fontSize: 12,
584
- fontWeight: 600,
585
- color: TEXT_MUTED,
586
- letterSpacing: "0.04em",
587
- textTransform: "uppercase",
588
- marginBottom: 8
589
- },
590
- children: card.label
591
- }
592
- ) : null;
593
- if (card.kind === "chart") {
594
- return /* @__PURE__ */ jsxs2("div", { style: baseStyle, children: [
595
- labelEl,
596
- /* @__PURE__ */ jsx2("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx2(ChartCard, { accent, t }) })
597
- ] });
598
- }
599
- if (card.kind === "bars") {
600
- return /* @__PURE__ */ jsxs2("div", { style: baseStyle, children: [
601
- labelEl,
602
- /* @__PURE__ */ jsx2("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx2(BarsCard, { accent, t }) })
603
- ] });
604
- }
605
- if (card.kind === "counter") {
606
- const v = Math.floor(1200 + noise(index, frame) * 800);
607
- return /* @__PURE__ */ jsxs2("div", { style: baseStyle, children: [
608
- labelEl,
609
- /* @__PURE__ */ jsx2(
610
- "div",
611
- {
612
- style: {
613
- flex: 1,
614
- display: "flex",
615
- alignItems: "center",
616
- justifyContent: "flex-start",
617
- fontSize: 56,
618
- fontWeight: 700,
619
- letterSpacing: "-0.04em",
620
- color: TEXT_HI
621
- },
622
- children: v.toLocaleString()
623
- }
624
- ),
625
- /* @__PURE__ */ jsxs2("div", { style: { fontSize: 12, color: accent, fontWeight: 600 }, children: [
626
- "+",
627
- (noise(index + 1, frame) * 12).toFixed(1),
628
- "%"
629
- ] })
630
- ] });
631
- }
632
- if (card.kind === "stat") {
633
- const v = (95 + noise(index, frame) * 5).toFixed(2);
634
- return /* @__PURE__ */ jsxs2("div", { style: baseStyle, children: [
635
- labelEl,
636
- /* @__PURE__ */ jsxs2(
637
- "div",
638
- {
639
- style: {
640
- flex: 1,
641
- display: "flex",
642
- alignItems: "center",
643
- fontSize: 48,
644
- fontWeight: 700,
645
- letterSpacing: "-0.03em"
646
- },
647
- children: [
648
- v,
649
- /* @__PURE__ */ jsx2(
650
- "span",
651
- {
652
- style: {
653
- fontSize: 20,
654
- color: TEXT_MUTED,
655
- marginLeft: 4
656
- },
657
- children: "%"
658
- }
659
- )
660
- ]
661
- }
662
- )
663
- ] });
664
- }
665
- if (card.kind === "code") {
666
- return /* @__PURE__ */ jsxs2("div", { style: baseStyle, children: [
667
- labelEl,
668
- /* @__PURE__ */ jsx2("div", { style: { flex: 1, display: "flex", alignItems: "center" }, children: /* @__PURE__ */ jsx2("div", { style: { width: "100%" }, children: /* @__PURE__ */ jsx2(CodeCard, {}) }) })
669
- ] });
670
- }
671
- if (card.kind === "logo") {
672
- return /* @__PURE__ */ jsx2("div", { style: { ...baseStyle, padding: 0 }, children: /* @__PURE__ */ jsx2(LogoCard, { accent, hue: card.hue }) });
673
- }
674
- return /* @__PURE__ */ jsx2("div", { style: { ...baseStyle, padding: 0 }, children: /* @__PURE__ */ jsx2(GradientCard, { hue: card.hue }) });
675
- }
676
- function InfiniteBentoPan({
677
- panSpeed = 1,
678
- accentColor = VIOLET,
679
- speed = 1,
680
- className
681
- }) {
682
- const frame = useCurrentFrame2() * speed;
683
- const { durationInFrames, width, height } = useVideoConfig2();
684
- const maxX = SUPER_W - width;
685
- const maxY = SUPER_H - height;
686
- const t = interpolate2(frame, [0, durationInFrames], [0, 1], {
687
- extrapolateLeft: "clamp",
688
- extrapolateRight: "clamp"
689
- });
690
- const px = t * maxX * Math.min(1, panSpeed);
691
- const py = t * maxY * Math.min(1, panSpeed);
692
- return /* @__PURE__ */ jsxs2(
693
- "div",
694
- {
695
- className,
696
- style: {
697
- position: "absolute",
698
- inset: 0,
699
- background: BG_DEEP,
700
- overflow: "hidden",
701
- fontFamily: FONT_FAMILY2
702
- },
703
- children: [
704
- /* @__PURE__ */ jsx2(
705
- "div",
706
- {
707
- style: {
708
- position: "absolute",
709
- left: 0,
710
- top: 0,
711
- width: SUPER_W,
712
- height: SUPER_H,
713
- transform: `translate(${-px}px, ${-py}px)`,
714
- willChange: "transform"
715
- },
716
- children: CARDS.map((c, i) => /* @__PURE__ */ jsx2(Card, { card: c, accent: accentColor, index: i, frame }, i))
717
- }
718
- ),
719
- /* @__PURE__ */ jsx2(
720
- "div",
721
- {
722
- style: {
723
- position: "absolute",
724
- inset: 0,
725
- background: "radial-gradient(circle at center, transparent 30%, rgba(0,0,0,0.85) 80%, #000 100%)",
726
- pointerEvents: "none"
727
- }
728
- }
729
- )
730
- ]
731
- }
732
- );
733
- }
734
-
735
- // src/layouts/letterbox/index.tsx
736
- import { useCurrentFrame as useCurrentFrame3, useVideoConfig as useVideoConfig3, spring, interpolate as interpolate3, AbsoluteFill } from "remotion";
737
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
738
- var Letterbox = ({
739
- ratio = 2.35,
740
- color = "#000000",
741
- animated = true,
742
- children
743
- }) => {
744
- const frame = useCurrentFrame3();
745
- const { fps, width, height } = useVideoConfig3();
746
- const currentRatio = width / height;
747
- const targetHeight = width / ratio;
748
- const rawBarHeight = Math.max(0, (height - targetHeight) / 2);
749
- let barHeight;
750
- if (animated) {
751
- const spr = spring({
752
- fps,
753
- frame,
754
- config: { damping: 18, stiffness: 80 }
755
- });
756
- barHeight = interpolate3(spr, [0, 1], [0, rawBarHeight]);
757
- } else {
758
- barHeight = rawBarHeight;
759
- }
760
- if (currentRatio >= ratio && rawBarHeight <= 0) {
761
- return /* @__PURE__ */ jsx3(AbsoluteFill, { children });
762
- }
763
- return /* @__PURE__ */ jsxs3(AbsoluteFill, { children: [
764
- children,
765
- /* @__PURE__ */ jsx3(
766
- "div",
767
- {
768
- style: {
769
- position: "absolute",
770
- top: 0,
771
- left: 0,
772
- width: "100%",
773
- height: barHeight,
774
- backgroundColor: color
775
- }
776
- }
777
- ),
778
- /* @__PURE__ */ jsx3(
779
- "div",
780
- {
781
- style: {
782
- position: "absolute",
783
- bottom: 0,
784
- left: 0,
785
- width: "100%",
786
- height: barHeight,
787
- backgroundColor: color
788
- }
789
- }
790
- )
791
- ] });
792
- };
793
-
794
- // src/layouts/photo-grid/index.tsx
795
- import { useCurrentFrame as useCurrentFrame4, useVideoConfig as useVideoConfig4, spring as spring2, interpolate as interpolate4, AbsoluteFill as AbsoluteFill2, Img } from "remotion";
796
- import { jsx as jsx4 } from "react/jsx-runtime";
797
- var PhotoGrid = ({
798
- images,
799
- columns = 2,
800
- gap = 8,
801
- stagger = 0.15
802
- }) => {
803
- const frame = useCurrentFrame4();
804
- const { fps } = useVideoConfig4();
805
- const staggerFrames = Math.round(stagger * fps);
806
- return /* @__PURE__ */ jsx4(
807
- AbsoluteFill2,
808
- {
809
- style: {
810
- display: "grid",
811
- gridTemplateColumns: `repeat(${columns}, 1fr)`,
812
- gap,
813
- padding: gap
814
- },
815
- children: images.map((src, i) => {
816
- const delay = i * staggerFrames;
817
- const spr = spring2({
818
- fps,
819
- frame: Math.max(0, frame - delay),
820
- config: { damping: 14, stiffness: 100 }
821
- });
822
- const opacity = interpolate4(spr, [0, 1], [0, 1]);
823
- const scale = interpolate4(spr, [0, 1], [0.85, 1]);
824
- const translateY = interpolate4(spr, [0, 1], [20, 0]);
825
- return /* @__PURE__ */ jsx4(
826
- "div",
827
- {
828
- style: {
829
- overflow: "hidden",
830
- borderRadius: 4,
831
- opacity,
832
- transform: `scale(${scale}) translateY(${translateY}px)`
833
- },
834
- children: /* @__PURE__ */ jsx4(
835
- Img,
836
- {
837
- src,
838
- style: {
839
- width: "100%",
840
- height: "100%",
841
- objectFit: "cover"
842
- }
843
- }
844
- )
845
- },
846
- i
847
- );
848
- })
849
- }
850
- );
851
- };
852
-
853
- // src/layouts/picture-in-picture/index.tsx
854
- import { useCurrentFrame as useCurrentFrame5, useVideoConfig as useVideoConfig5, spring as spring3, interpolate as interpolate5, AbsoluteFill as AbsoluteFill3 } from "remotion";
855
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
856
- var PictureInPicture = ({
857
- position = "bottom-right",
858
- size = 0.3,
859
- borderRadius = 12,
860
- shadow = "none",
861
- children,
862
- main
863
- }) => {
864
- const frame = useCurrentFrame5();
865
- const { fps, width, height } = useVideoConfig5();
866
- const spr = spring3({
867
- fps,
868
- frame,
869
- config: { damping: 16, stiffness: 120 }
870
- });
871
- const scale = interpolate5(spr, [0, 1], [0, 1]);
872
- const pipWidth = width * size;
873
- const pipHeight = height * size;
874
- const margin = 20;
875
- const positionStyle = {};
876
- if (position.includes("top")) {
877
- positionStyle.top = margin;
878
- } else {
879
- positionStyle.bottom = margin;
880
- }
881
- if (position.includes("left")) {
882
- positionStyle.left = margin;
883
- } else {
884
- positionStyle.right = margin;
885
- }
886
- const originX = position.includes("left") ? "0%" : "100%";
887
- const originY = position.includes("top") ? "0%" : "100%";
888
- return /* @__PURE__ */ jsxs4(AbsoluteFill3, { children: [
889
- main,
890
- /* @__PURE__ */ jsx5(
891
- "div",
892
- {
893
- style: {
894
- position: "absolute",
895
- ...positionStyle,
896
- width: pipWidth,
897
- height: pipHeight,
898
- borderRadius,
899
- overflow: "hidden",
900
- border: `1px solid ${BORDER}`,
901
- boxShadow: shadow,
902
- transform: `scale(${scale})`,
903
- transformOrigin: `${originX} ${originY}`
904
- },
905
- children
906
- }
907
- )
908
- ] });
909
- };
910
-
911
- // src/layouts/split-screen/index.tsx
912
- import React from "react";
913
- import { useCurrentFrame as useCurrentFrame6, useVideoConfig as useVideoConfig6, spring as spring4, interpolate as interpolate6, AbsoluteFill as AbsoluteFill4 } from "remotion";
914
- import { jsx as jsx6 } from "react/jsx-runtime";
915
- var SplitScreen = ({
916
- columns = 2,
917
- gap = 4,
918
- children
919
- }) => {
920
- const frame = useCurrentFrame6();
921
- const { fps } = useVideoConfig6();
922
- const childArray = React.Children.toArray(children);
923
- const staggerFrames = 4;
924
- return /* @__PURE__ */ jsx6(
925
- AbsoluteFill4,
926
- {
927
- style: {
928
- display: "flex",
929
- flexDirection: "row",
930
- gap
931
- },
932
- children: childArray.map((child, i) => {
933
- const delay = i * staggerFrames;
934
- const spr = spring4({
935
- fps,
936
- frame: Math.max(0, frame - delay),
937
- config: { damping: 14, stiffness: 100 }
938
- });
939
- const opacity = interpolate6(spr, [0, 1], [0, 1]);
940
- const scale = interpolate6(spr, [0, 1], [0.92, 1]);
941
- return /* @__PURE__ */ jsx6(
942
- "div",
943
- {
944
- style: {
945
- flex: `1 1 ${100 / columns}%`,
946
- overflow: "hidden",
947
- opacity,
948
- transform: `scale(${scale})`
949
- },
950
- children: child
951
- },
952
- i
953
- );
954
- })
955
- }
956
- );
957
- };
958
-
959
- // src/layouts/staggered-bento-grid/index.tsx
960
- import { Sequence, spring as spring5, useCurrentFrame as useCurrentFrame7, useVideoConfig as useVideoConfig7 } from "remotion";
961
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
962
- var FONT_FAMILY3 = "inherit";
963
- var DEFAULT_ITEMS = [
964
- { title: "Fast", body: "Built on Remotion", span: 2 },
965
- { title: "Animated", body: "Spring physics" },
966
- { title: "Composable", body: "Drop-in blocks" },
967
- { title: "Themed", body: "Tailwind ready" },
968
- { title: "Typed", body: "First-class TS" },
969
- { title: "Open", body: "MIT licensed", span: 2 },
970
- { title: "Tiny", body: "Zero runtime cost" }
971
- ];
972
- var GRID_MAX_WIDTH = 1100;
973
- var GRID_GAP = 20;
974
- var CARD_PADDING = 24;
975
- function Card2({
976
- item,
977
- cardColor,
978
- textColor,
979
- speed,
980
- columns
981
- }) {
982
- const frame = useCurrentFrame7() * speed;
983
- const { fps } = useVideoConfig7();
984
- const span = item.span ?? 1;
985
- const cellWidth = (GRID_MAX_WIDTH - GRID_GAP * (columns - 1)) / columns;
986
- const contentWidth = Math.max(
987
- 80,
988
- cellWidth * span + GRID_GAP * (span - 1) - CARD_PADDING * 2
989
- );
990
- const progress = spring5({
991
- frame,
992
- fps,
993
- durationInFrames: Math.round(0.6 * fps),
994
- config: { damping: 12 }
995
- });
996
- return /* @__PURE__ */ jsxs5(
997
- "div",
998
- {
999
- style: {
1000
- gridColumn: `span ${item.span ?? 1}`,
1001
- background: cardColor,
1002
- borderRadius: 16,
1003
- padding: 24,
1004
- opacity: progress,
1005
- transform: `scale(${0.85 + progress * 0.15})`,
1006
- transformOrigin: "center center",
1007
- willChange: "transform, opacity",
1008
- display: "flex",
1009
- flexDirection: "column",
1010
- justifyContent: "flex-end",
1011
- minHeight: 140,
1012
- border: `1px solid ${BORDER_SOFT}`
1013
- },
1014
- children: [
1015
- /* @__PURE__ */ jsx7(
1016
- FitText,
1017
- {
1018
- maxFontSize: 28,
1019
- maxWidth: contentWidth,
1020
- maxLines: 2,
1021
- fontFamily: FONT_FAMILY3,
1022
- fontWeight: 700,
1023
- letterSpacing: "-0.03em",
1024
- style: { color: textColor, marginBottom: 4 },
1025
- children: item.title
1026
- }
1027
- ),
1028
- item.body ? /* @__PURE__ */ jsx7(
1029
- FitText,
1030
- {
1031
- maxFontSize: 16,
1032
- maxWidth: contentWidth,
1033
- maxLines: 3,
1034
- fontFamily: FONT_FAMILY3,
1035
- fontWeight: 400,
1036
- style: { color: textColor, opacity: 0.6 },
1037
- children: item.body
1038
- }
1039
- ) : null
1040
- ]
1041
- }
1042
- );
1043
- }
1044
- function StaggeredBentoGrid({
1045
- items = DEFAULT_ITEMS,
1046
- staggerDelay = 8,
1047
- columns = 3,
1048
- background = BG,
1049
- cardColor = SURFACE,
1050
- textColor = TEXT_HI,
1051
- speed = 1,
1052
- className
1053
- }) {
1054
- return /* @__PURE__ */ jsx7(
1055
- "div",
1056
- {
1057
- className,
1058
- style: {
1059
- position: "absolute",
1060
- inset: 0,
1061
- background,
1062
- padding: 64,
1063
- display: "flex",
1064
- alignItems: "center",
1065
- justifyContent: "center"
1066
- },
1067
- children: /* @__PURE__ */ jsx7(
1068
- "div",
1069
- {
1070
- style: {
1071
- display: "grid",
1072
- gridTemplateColumns: `repeat(${columns}, 1fr)`,
1073
- gap: 20,
1074
- width: "100%",
1075
- maxWidth: 1100
1076
- },
1077
- children: items.map((item, index) => /* @__PURE__ */ jsx7(
1078
- Sequence,
1079
- {
1080
- from: Math.round(index * staggerDelay / speed),
1081
- layout: "none",
1082
- children: /* @__PURE__ */ jsx7(
1083
- Card2,
1084
- {
1085
- item,
1086
- cardColor,
1087
- textColor,
1088
- speed,
1089
- columns
1090
- }
1091
- )
1092
- },
1093
- index
1094
- ))
1095
- }
1096
- )
1097
- }
1098
- );
1099
- }
1100
-
1101
- // src/layouts/chat-to-preview-layout/config.ts
1102
- import { z } from "zod";
1103
- var paramsSchema = z.object({
1104
- startChatRatio: z.number().min(0).max(1).default(0.55).describe("Initial width ratio of the chat pane (0\u20131)."),
1105
- endChatRatio: z.number().min(0).max(1).default(0.35).describe("Final width ratio of the chat pane."),
1106
- background: z.string().default(BG).describe("Frame background."),
1107
- speed: z.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
1108
- }).passthrough();
1109
- var config = {
1110
- id: "chat-to-preview-layout",
1111
- component: ChatToPreviewLayout,
1112
- name: "Chat to Preview Layout",
1113
- category: "layouts",
1114
- kind: "component",
1115
- version: "0.1.1",
1116
- intent: "split-screen",
1117
- description: 'Two-pane layout with a chat panel on the left and a preview canvas on the right. The chat pane animates from a wider start ratio to a narrower end ratio, simulating the "chat conversation produces a result" pattern.',
1118
- useWhen: 'AI/agent demo videos, "chat \u2192 output" walkthroughs, cueframe self-promo. Pass actual chat + preview ReactNodes for content. Avoid for non-AI workflows \u2014 the framing is specific.',
1119
- pairsWith: ["typewriter", "glass-code-block", "success-confetti"],
1120
- avoidWith: ["split-screen"],
1121
- tier: "standard",
1122
- useCase: ["full-scene"],
1123
- tags: ["layout", "split", "chat", "preview", "ai-demo"],
1124
- mood: ["tech-demo", "corporate"],
1125
- paramsSchema,
1126
- propDefaults: { startChatRatio: 0.55, endChatRatio: 0.35, background: BG, speed: 1 },
1127
- examples: [
1128
- { name: "agent-demo", mood: ["tech-demo"], params: { startChatRatio: 0.55, endChatRatio: 0.35, background: BG, speed: 1 } }
1129
- ],
1130
- textParam: null,
1131
- subtextParam: null,
1132
- tokens: [
1133
- { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" }
1134
- ],
1135
- durationInFrames: 180,
1136
- fps: 30,
1137
- width: 1920,
1138
- height: 1080,
1139
- preview: { thumbnailFrame: 90, mode: "oneshot", defaultExample: "agent-demo" }
1140
- };
1141
-
1142
- // src/layouts/infinite-bento-pan/config.ts
1143
- import { z as z2 } from "zod";
1144
- var paramsSchema2 = z2.object({
1145
- panSpeed: z2.number().min(0.25).max(2).default(1).describe(
1146
- 'How aggressively the camera pans across the supergrid. 0.5 feels languid; 1 reads as "tour"; >1.5 starts blurring cards.'
1147
- ),
1148
- accentColor: z2.string().default(VIOLET).describe(
1149
- "Highlight color for chart lines, bars, and counter deltas. Dial to brand accent."
1150
- ),
1151
- speed: z2.number().min(0.25).max(4).default(1).describe("Global playback speed multiplier (compounds with panSpeed).")
1152
- }).passthrough();
1153
- var config2 = {
1154
- id: "infinite-bento-pan",
1155
- component: InfiniteBentoPan,
1156
- name: "Infinite Bento Pan",
1157
- category: "layouts",
1158
- kind: "component",
1159
- version: "0.1.1",
1160
- intent: "pan-grid",
1161
- description: 'A 3500\xD72500 supergrid of pre-baked bento cards (charts, counters, code snippets, gradients, logos, stats, bars) with a slow diagonal camera pan and a vignette mask. The "platform overview" hero shot \u2014 gives the impression of a vast, dense product surface without needing real data.',
1162
- useWhen: 'Top-of-funnel marketing intros, "look how much this platform does" beats, opening titles for product demos, B-roll under VO. Avoid when you need the audience to read specific cards (the pan is constant \u2014 use staggered-bento-grid instead) or when the brand is minimalist (this primitive is intentionally maximal).',
1163
- pairsWith: ["cinematic-title", "kinetic-type", "grain", "volumetric-rays"],
1164
- avoidWith: ["staggered-bento-grid", "split-screen", "picture-in-picture"],
1165
- tier: "niche",
1166
- useCase: ["background"],
1167
- tags: ["layout", "bento", "pan", "infinite", "supergrid", "b-roll", "platform-overview"],
1168
- mood: ["tech-demo", "cinematic", "corporate"],
1169
- paramsSchema: paramsSchema2,
1170
- propDefaults: { panSpeed: 1, accentColor: VIOLET, speed: 1 },
1171
- examples: [
1172
- {
1173
- name: "platform-overview",
1174
- mood: ["tech-demo", "cinematic"],
1175
- params: { panSpeed: 1, accentColor: VIOLET },
1176
- description: "Default purple-accent pan for hero intros."
1177
- },
1178
- {
1179
- name: "slow-tour",
1180
- mood: ["cinematic", "corporate"],
1181
- params: { panSpeed: 0.5, accentColor: BLUE },
1182
- description: "Half-speed pan, blue accent \u2014 calmer, more corporate."
1183
- }
1184
- ],
1185
- textParam: null,
1186
- subtextParam: null,
1187
- tokens: [
1188
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: VIOLET, brandKitPath: "colors.accent" }
1189
- ],
1190
- durationInFrames: 300,
1191
- fps: 30,
1192
- width: 1920,
1193
- height: 1080,
1194
- preview: { thumbnailFrame: 150, mode: "loop", defaultExample: "platform-overview" }
1195
- };
1196
-
1197
- // src/layouts/letterbox/config.ts
1198
- import { z as z3 } from "zod";
1199
- var paramsSchema3 = z3.object({
1200
- ratio: z3.number().min(1).max(3.5).default(2.35).describe("Target aspect ratio for the bars. 2.35 = cinemascope; 1.85 = academy widescreen."),
1201
- color: z3.string().default("#000000").describe("Bar color."),
1202
- animated: z3.boolean().default(true).describe("Spring-animate the bars opening.")
1203
- }).passthrough();
1204
- var config3 = {
1205
- id: "letterbox",
1206
- component: Letterbox,
1207
- name: "Letterbox",
1208
- category: "layouts",
1209
- kind: "component",
1210
- version: "0.1.0",
1211
- intent: "letterbox",
1212
- description: "Cinematic letterbox bars overlay. Calculates bar height from current vs target aspect ratio and optionally spring-animates the bars in.",
1213
- useWhen: 'Establishing shots, dramatic moments, signaling "this is a film". Pair with cinematic-title for the full intro feel. Avoid for already-cropped content (no bars to add).',
1214
- pairsWith: ["cinematic-title", "parallax", "color-grade", "grain"],
1215
- avoidWith: [],
1216
- tier: "standard",
1217
- useCase: ["title-over-footage"],
1218
- tags: ["layout", "letterbox", "cinemascope", "bars", "cinematic"],
1219
- mood: ["cinematic"],
1220
- paramsSchema: paramsSchema3,
1221
- propDefaults: { ratio: 2.35, color: "#000000", animated: true },
1222
- examples: [
1223
- { name: "cinemascope", mood: ["cinematic"], params: { ratio: 2.35, color: "#000000", animated: true } },
1224
- { name: "widescreen", mood: ["cinematic"], params: { ratio: 1.85, color: "#000000", animated: true } }
1225
- ],
1226
- textParam: null,
1227
- subtextParam: null,
1228
- tokens: [],
1229
- durationInFrames: 90,
1230
- fps: 30,
1231
- width: 1920,
1232
- height: 1080,
1233
- preview: { thumbnailFrame: 60, mode: "oneshot", defaultExample: "cinemascope" }
1234
- };
1235
-
1236
- // src/layouts/photo-grid/config.ts
1237
- import { z as z4 } from "zod";
1238
- var paramsSchema4 = z4.object({
1239
- images: z4.array(z4.string().url()).min(1).describe("Array of image URLs to display."),
1240
- columns: z4.number().int().min(1).max(6).default(2).describe("Grid columns."),
1241
- gap: z4.number().min(0).max(40).default(8).describe("Gap between cells in pixels."),
1242
- stagger: z4.number().min(0).max(2).default(0.15).describe("Seconds between each cell's reveal. 0.1\u20130.25 reads natural.")
1243
- }).passthrough();
1244
- var config4 = {
1245
- id: "photo-grid",
1246
- component: PhotoGrid,
1247
- name: "Photo Grid",
1248
- category: "layouts",
1249
- kind: "component",
1250
- version: "0.1.0",
1251
- intent: "split-screen",
1252
- description: "CSS-grid photo gallery with spring-animated staggered entry. Each cell fades in, scales up from 0.85, and translates from slight Y offset.",
1253
- useWhen: 'Photo collages, image-driven montages, "look at all these" reels. 4\u20138 images at 2 columns is the sweet spot. Avoid for non-photo content \u2014 the cell framing is photo-shaped.',
1254
- pairsWith: ["parallax", "cinematic-title", "mesh-gradient-bg"],
1255
- avoidWith: [],
1256
- tier: "standard",
1257
- useCase: ["full-scene"],
1258
- tags: ["layout", "grid", "photos", "gallery", "staggered"],
1259
- mood: ["editorial", "cinematic", "soft"],
1260
- paramsSchema: paramsSchema4,
1261
- propDefaults: { columns: 2, gap: 8, stagger: 0.15 },
1262
- examples: [
1263
- {
1264
- name: "four-up",
1265
- mood: ["editorial"],
1266
- params: {
1267
- images: ["https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=800", "https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800", "https://images.unsplash.com/photo-1465146344425-f00d5f5c8f07?w=800", "https://images.unsplash.com/photo-1501785888041-af3ef285b470?w=800"],
1268
- columns: 2,
1269
- gap: 8,
1270
- stagger: 0.15
1271
- }
1272
- }
1273
- ],
1274
- textParam: null,
1275
- subtextParam: null,
1276
- tokens: [],
1277
- durationInFrames: 120,
1278
- fps: 30,
1279
- width: 1920,
1280
- height: 1080,
1281
- preview: { thumbnailFrame: 90, mode: "oneshot", defaultExample: "four-up" }
1282
- };
1283
-
1284
- // src/layouts/picture-in-picture/config.ts
1285
- import { z as z5 } from "zod";
1286
- var paramsSchema5 = z5.object({
1287
- position: z5.enum(["top-left", "top-right", "bottom-left", "bottom-right"]).default("bottom-right").describe("Corner for the PiP overlay."),
1288
- size: z5.number().min(0.1).max(0.6).default(0.3).describe("PiP size as fraction of video width (0\u20131)."),
1289
- borderRadius: z5.number().min(0).max(60).default(12).describe("Border radius in pixels."),
1290
- shadow: z5.string().default("none").describe("CSS box-shadow. Defaults to none; a hairline border provides separation.")
1291
- }).passthrough();
1292
- var config5 = {
1293
- id: "picture-in-picture",
1294
- component: PictureInPicture,
1295
- name: "Picture-in-Picture",
1296
- category: "layouts",
1297
- kind: "component",
1298
- version: "0.1.1",
1299
- intent: "picture-in-picture",
1300
- description: "Floating PiP overlay layout. Renders main content full-screen with a spring-animated PiP window in a chosen corner. Pass `main` and `children` ReactNodes.",
1301
- useWhen: "Speaker overlay on top of presentation/screen-share, reaction inset on top of video, dual-feed podcasts. Avoid stacking multiple PiPs.",
1302
- pairsWith: ["lower-third", "parallax", "pulsing-indicator"],
1303
- avoidWith: ["split-screen"],
1304
- tier: "standard",
1305
- useCase: ["title-over-footage"],
1306
- tags: ["layout", "pip", "picture-in-picture", "overlay", "corner"],
1307
- mood: ["tech-demo", "editorial", "breaking-news"],
1308
- paramsSchema: paramsSchema5,
1309
- propDefaults: { position: "bottom-right", size: 0.3, borderRadius: 12, shadow: "none" },
1310
- examples: [
1311
- { name: "speaker-overlay", mood: ["tech-demo"], params: { position: "bottom-right", size: 0.25, borderRadius: 12, shadow: "none" } },
1312
- { name: "reaction-inset", mood: ["editorial"], params: { position: "top-right", size: 0.2, borderRadius: 8, shadow: "none" } }
1313
- ],
1314
- textParam: null,
1315
- subtextParam: null,
1316
- tokens: [],
1317
- durationInFrames: 60,
1318
- fps: 30,
1319
- width: 1920,
1320
- height: 1080,
1321
- preview: { thumbnailFrame: 30, mode: "loop", defaultExample: "speaker-overlay" }
1322
- };
1323
-
1324
- // src/layouts/split-screen/config.ts
1325
- import { z as z6 } from "zod";
1326
- var paramsSchema6 = z6.object({
1327
- columns: z6.number().int().min(1).max(6).default(2).describe("Number of equal columns. 2 is the canonical split."),
1328
- gap: z6.number().min(0).max(40).default(4).describe("Gap between panels in pixels.")
1329
- }).passthrough();
1330
- var config6 = {
1331
- id: "split-screen",
1332
- component: SplitScreen,
1333
- name: "Split Screen",
1334
- category: "layouts",
1335
- kind: "component",
1336
- version: "0.1.0",
1337
- intent: "split-screen",
1338
- description: "Multi-panel split-screen layout. Arranges children into equal-width columns with spring-animated stagger. Each panel scales-and-fades in with a 4-frame delay between them.",
1339
- useWhen: "Side-by-side comparisons, multi-feed podcasts (interviewer + interviewee), photo grids. Avoid for >4 columns at 1920\xD71080 \u2014 content gets cramped.",
1340
- pairsWith: ["lower-third", "photo-grid"],
1341
- avoidWith: ["picture-in-picture"],
1342
- tier: "standard",
1343
- useCase: ["full-scene"],
1344
- tags: ["layout", "split", "columns", "comparison", "multi-feed"],
1345
- mood: ["editorial", "corporate", "tech-demo"],
1346
- paramsSchema: paramsSchema6,
1347
- propDefaults: { columns: 2, gap: 4 },
1348
- examples: [
1349
- { name: "two-up", mood: ["editorial"], params: { columns: 2, gap: 4 } },
1350
- { name: "three-grid", mood: ["corporate"], params: { columns: 3, gap: 6 } }
1351
- ],
1352
- textParam: null,
1353
- subtextParam: null,
1354
- tokens: [],
1355
- durationInFrames: 60,
1356
- fps: 30,
1357
- width: 1920,
1358
- height: 1080,
1359
- preview: { thumbnailFrame: 30, mode: "oneshot", defaultExample: "two-up" }
1360
- };
1361
-
1362
- // src/layouts/staggered-bento-grid/config.ts
1363
- import { z as z7 } from "zod";
1364
- var itemSchema = z7.object({
1365
- title: z7.string().min(1).max(80).describe("Bento card title. 1\u20133 words. The visual hero. Auto-fits (shrinks + wraps to 2 lines) to the cell."),
1366
- body: z7.string().max(160).optional().describe("Optional subtitle beneath the title. Auto-fits (shrinks + wraps to 3 lines) to the cell."),
1367
- span: z7.union([z7.literal(1), z7.literal(2)]).optional().describe("Column span. 2 doubles the card width \u2014 use for 1\u20132 anchor cards in the grid.")
1368
- });
1369
- var paramsSchema7 = z7.object({
1370
- items: z7.array(itemSchema).min(1).max(16).default([
1371
- { title: "Fast", body: "Built on Remotion", span: 2 },
1372
- { title: "Animated", body: "Spring physics" },
1373
- { title: "Composable", body: "Drop-in blocks" },
1374
- { title: "Themed", body: "Tailwind ready" },
1375
- { title: "Typed", body: "First-class TS" },
1376
- { title: "Open", body: "MIT licensed", span: 2 },
1377
- { title: "Tiny", body: "Zero runtime cost" }
1378
- ]).describe(
1379
- "Cards to render. Order = stagger order (top-left first). Mix span:1 / span:2 for a varied bento rhythm; 6\u20139 cards reads best."
1380
- ),
1381
- staggerDelay: z7.number().int().min(2).max(20).default(8).describe(
1382
- "Frames between each card's entrance. 6\u201310 feels intentional; <4 is chaotic; >12 makes the audience wait."
1383
- ),
1384
- columns: z7.number().int().min(2).max(5).default(3).describe(
1385
- "Grid column count. 3 is the canonical bento."
1386
- ),
1387
- background: z7.string().default(BG).describe("Frame background behind the grid."),
1388
- cardColor: z7.string().default(SURFACE).describe("Bento card fill. Should be one step lighter than background."),
1389
- textColor: z7.string().default(TEXT_HI).describe("Title and body text color."),
1390
- speed: z7.number().min(0.25).max(4).default(1).describe("Playback speed multiplier across all card entrances.")
1391
- }).passthrough();
1392
- var config7 = {
1393
- id: "staggered-bento-grid",
1394
- component: StaggeredBentoGrid,
1395
- name: "Staggered Bento Grid",
1396
- category: "layouts",
1397
- kind: "component",
1398
- version: "0.1.1",
1399
- intent: "arrange-grid",
1400
- description: `Bento-style feature grid where each card pops in on a spring with a staggered delay. Mixed-span cards (1\xD7 / 2\xD7 columns) create the asymmetric "Apple keynote" rhythm that's become the default for feature recaps and product capability tours.`,
1401
- useWhen: `Feature lists, "what's new", capability summaries, anything that needs to communicate 5\u20139 discrete points without overwhelming the viewer. Avoid for 1\u20133 items (use a single hero card) or >12 items (text becomes unreadable; consider infinite-bento-pan instead).`,
1402
- pairsWith: ["mesh-gradient-bg", "kinetic-type", "cinematic-title", "spring-pop-in"],
1403
- avoidWith: ["split-screen", "picture-in-picture"],
1404
- tier: "standard",
1405
- useCase: ["full-scene"],
1406
- tags: ["layout", "bento", "grid", "features", "stagger", "spring", "apple", "keynote"],
1407
- mood: ["tech-demo", "minimal", "corporate", "editorial"],
1408
- paramsSchema: paramsSchema7,
1409
- propDefaults: {
1410
- items: [
1411
- { title: "Fast", body: "Built on Remotion", span: 2 },
1412
- { title: "Animated", body: "Spring physics" },
1413
- { title: "Composable", body: "Drop-in blocks" },
1414
- { title: "Themed", body: "Tailwind ready" },
1415
- { title: "Typed", body: "First-class TS" },
1416
- { title: "Open", body: "MIT licensed", span: 2 },
1417
- { title: "Tiny", body: "Zero runtime cost" }
1418
- ],
1419
- staggerDelay: 8,
1420
- columns: 3,
1421
- background: BG,
1422
- cardColor: SURFACE,
1423
- textColor: TEXT_HI,
1424
- speed: 1
1425
- },
1426
- examples: [
1427
- {
1428
- name: "feature-recap",
1429
- mood: ["tech-demo"],
1430
- params: {
1431
- items: [
1432
- { title: "Streaming", body: "Sub-100ms first token", span: 2 },
1433
- { title: "Caching", body: "90% prompt reuse" },
1434
- { title: "Tools", body: "Native function calls" },
1435
- { title: "Eval", body: "Built-in scoring" },
1436
- { title: "OSS", body: "MIT licensed", span: 2 }
1437
- ],
1438
- columns: 3
1439
- },
1440
- description: "Five-card mixed-span recap."
1441
- },
1442
- {
1443
- name: "capability-tour",
1444
- mood: ["corporate", "minimal"],
1445
- params: {
1446
- items: [
1447
- { title: "SOC 2" },
1448
- { title: "GDPR" },
1449
- { title: "HIPAA" },
1450
- { title: "ISO 27001" }
1451
- ],
1452
- columns: 4,
1453
- staggerDelay: 6,
1454
- cardColor: SURFACE
1455
- },
1456
- description: "Compact compliance grid."
1457
- }
1458
- ],
1459
- textParam: null,
1460
- subtextParam: null,
1461
- tokens: [
1462
- { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" },
1463
- { propPath: "cardColor", cssVar: "--cf-surface", fallback: SURFACE, brandKitPath: "colors.surface" },
1464
- { propPath: "textColor", cssVar: "--cf-fg", fallback: TEXT_HI, brandKitPath: "colors.textOnSurface" }
1465
- ],
1466
- durationInFrames: 120,
1467
- fps: 30,
1468
- width: 1920,
1469
- height: 1080,
1470
- preview: { thumbnailFrame: 90, mode: "oneshot", defaultExample: "feature-recap" }
1471
- };
1472
-
1473
- // src/layouts/index.ts
1474
- var catalog = [
1475
- config,
1476
- config2,
1477
- config3,
1478
- config4,
1479
- config5,
1480
- config6,
1481
- config7
1482
- ];
1483
-
1484
- export {
1485
- ChatToPreviewLayout,
1486
- InfiniteBentoPan,
1487
- Letterbox,
1488
- PhotoGrid,
1489
- PictureInPicture,
1490
- SplitScreen,
1491
- StaggeredBentoGrid,
1492
- catalog
1493
- };
1494
- //# sourceMappingURL=chunk-HFPFGZXT.js.map