@cueframe/kernel 0.2.1 → 0.2.3

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 (332) hide show
  1. package/dist/_members/animate/index.d.ts +8 -2
  2. package/dist/_members/animate/layout/FlexLayout.d.ts +69 -0
  3. package/dist/_members/animate/layout/fit.d.ts +44 -0
  4. package/dist/_members/animate/layout/index.d.ts +3 -0
  5. package/dist/_members/animate/layout/solveFlex.d.ts +70 -0
  6. package/dist/_members/animate/media/MediaTileScene.d.ts +65 -0
  7. package/dist/_members/animate/media/recipes.d.ts +61 -0
  8. package/dist/_members/animate/scene/FocusPass.d.ts +76 -0
  9. package/dist/_members/animate/scene/UnlitPlane.d.ts +45 -0
  10. package/dist/_members/animate/scene/__oracle__/cssProjection.d.ts +24 -0
  11. package/dist/_members/animate/scene/assets.d.ts +21 -0
  12. package/dist/_members/animate/scene/backdrop.d.ts +7 -0
  13. package/dist/_members/animate/scene/coordinates.d.ts +58 -0
  14. package/dist/_members/animate/scene/deviceOpacity.d.ts +18 -0
  15. package/dist/_members/animate/scene/errors.d.ts +14 -0
  16. package/dist/_members/animate/scene/finishing.d.ts +69 -0
  17. package/dist/_members/animate/scene/finishingMath.d.ts +60 -0
  18. package/dist/_members/animate/scene/finishingPass.d.ts +35 -0
  19. package/dist/_members/animate/scene/focusBlur.d.ts +56 -0
  20. package/dist/_members/animate/scene/focusResources.d.ts +190 -0
  21. package/dist/_members/animate/scene/focusShaders.d.ts +68 -0
  22. package/dist/_members/animate/scene/fontReadiness.d.ts +27 -0
  23. package/dist/_members/animate/scene/grainNoise.d.ts +118 -0
  24. package/dist/_members/animate/scene/index.d.ts +19 -0
  25. package/dist/_members/animate/scene/internal.d.ts +29 -0
  26. package/dist/_members/animate/scene/planeFit.d.ts +46 -0
  27. package/dist/_members/animate/scene/preparedWorldText.d.ts +25 -0
  28. package/dist/_members/animate/scene/rasterCache.d.ts +30 -0
  29. package/dist/_members/animate/scene/rasterReadiness.d.ts +33 -0
  30. package/dist/_members/animate/scene/readiness.d.ts +69 -0
  31. package/dist/_members/animate/scene/redraw.d.ts +10 -0
  32. package/dist/_members/animate/scene/render.d.ts +9 -0
  33. package/dist/_members/animate/scene/scaling.d.ts +13 -0
  34. package/dist/_members/animate/scene/text.d.ts +40 -0
  35. package/dist/_members/animate/scene/textLayout.d.ts +78 -0
  36. package/dist/_members/animate/scene/textureImageSize.d.ts +4 -0
  37. package/dist/_members/animate/scene/useSceneImageTexture.d.ts +21 -0
  38. package/dist/_members/animate/scene/useWorldTextTexture.d.ts +21 -0
  39. package/dist/_members/animate/scene/v2/MeasuredPlaneGeometry.d.ts +7 -0
  40. package/dist/_members/animate/scene/v2/PhotographicStudioRig.d.ts +11 -0
  41. package/dist/_members/animate/scene/v2/PreparedSceneShotV1.d.ts +12 -0
  42. package/dist/_members/animate/scene/v2/SceneShotV2.d.ts +59 -0
  43. package/dist/_members/animate/scene/v2/builders.d.ts +170 -0
  44. package/dist/_members/animate/scene/v2/finishes.d.ts +152 -0
  45. package/dist/_members/animate/scene/v2/lighting.d.ts +119 -0
  46. package/dist/_members/animate/scene/v2/observePmremTargets.d.ts +4 -0
  47. package/dist/_members/animate/scene/v2/preparationFacts.d.ts +32 -0
  48. package/dist/_members/animate/scene/v2/preparedSurface.d.ts +17 -0
  49. package/dist/_members/animate/scene/v2/projectedResolution.d.ts +2 -0
  50. package/dist/_members/animate/scene/v2/renderTargetObserver.d.ts +5 -0
  51. package/dist/_members/animate/scene/v2/runtimeAllocations.d.ts +55 -0
  52. package/dist/_members/animate/scene/v2/shadow.d.ts +23 -0
  53. package/dist/_members/animate/scene/v2/slabGeometry.d.ts +134 -0
  54. package/dist/_members/animate/scene/v2/slots.d.ts +73 -0
  55. package/dist/_members/animate/scene/v2/videoBinding.d.ts +39 -0
  56. package/dist/_members/animate/scene/worldBounds.d.ts +19 -0
  57. package/dist/_members/animate/scene/worldTextRaster.d.ts +87 -0
  58. package/dist/_members/animate/scene/worldTextTexture.d.ts +32 -0
  59. package/dist/_members/animate/stage/PerspectiveStage.d.ts +73 -0
  60. package/dist/_members/animate/stage/camera.d.ts +143 -0
  61. package/dist/_members/animate/stage/dof.d.ts +9 -0
  62. package/dist/_members/animate/stage/index.d.ts +6 -0
  63. package/dist/_members/animate/stage/presets.d.ts +17 -0
  64. package/dist/_members/animate/three/DeviceMesh.d.ts +256 -0
  65. package/dist/_members/animate/three/SceneCameraRig.d.ts +12 -0
  66. package/dist/_members/animate/three/StageCameraRig.d.ts +7 -0
  67. package/dist/_members/animate/three/StudioRig.d.ts +228 -0
  68. package/dist/_members/animate/three/ThreeCanvas.d.ts +22 -0
  69. package/dist/_members/animate/three/defaultScreen.d.ts +23 -0
  70. package/dist/_members/animate/three/index.d.ts +7 -1
  71. package/dist/_members/animate/three/textureLifecycle.d.ts +29 -0
  72. package/dist/_members/animate/three/toneMapping.d.ts +113 -0
  73. package/dist/_members/animate/three/useImageTexture.d.ts +17 -0
  74. package/dist/_members/authoring/index.d.ts +2 -0
  75. package/dist/_members/authoring/scene/index.d.ts +6 -0
  76. package/dist/_members/authoring/scene/materialize.d.ts +47 -0
  77. package/dist/_members/authoring/scene/validate.d.ts +80 -0
  78. package/dist/_members/authoring/scene/wrapper.d.ts +41 -0
  79. package/dist/_members/component-runtime/allowedImports.d.ts +3 -0
  80. package/dist/_members/component-runtime/allowedImports.d.ts.map +1 -0
  81. package/dist/_members/component-runtime/bake.d.ts +8 -0
  82. package/dist/_members/component-runtime/bake.d.ts.map +1 -1
  83. package/dist/_members/component-runtime/browserFirewall.d.ts +7 -1
  84. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -1
  85. package/dist/_members/component-runtime/browserOptions.d.ts +59 -3
  86. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -1
  87. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  88. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -1
  89. package/dist/_members/component-runtime/contracts.d.ts +341 -1
  90. package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
  91. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts +5 -0
  92. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts.map +1 -0
  93. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts +5 -0
  94. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts.map +1 -0
  95. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts +8 -0
  96. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts.map +1 -0
  97. package/dist/_members/component-runtime/importPolicy.d.ts +3 -2
  98. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -1
  99. package/dist/_members/component-runtime/index.d.ts +3 -0
  100. package/dist/_members/component-runtime/index.d.ts.map +1 -1
  101. package/dist/_members/component-runtime/livePreviewProxy.d.ts +7 -0
  102. package/dist/_members/component-runtime/livePreviewProxy.d.ts.map +1 -0
  103. package/dist/_members/component-runtime/localRoot.d.ts +37 -0
  104. package/dist/_members/component-runtime/localRoot.d.ts.map +1 -0
  105. package/dist/_members/component-runtime/mediaResolution.d.ts +25 -0
  106. package/dist/_members/component-runtime/mediaResolution.d.ts.map +1 -0
  107. package/dist/_members/component-runtime/render.d.ts +151 -13
  108. package/dist/_members/component-runtime/render.d.ts.map +1 -1
  109. package/dist/_members/component-runtime/renderDiagnostics.d.ts +14 -0
  110. package/dist/_members/component-runtime/renderDiagnostics.d.ts.map +1 -0
  111. package/dist/_members/component-runtime/sceneAdmission.d.ts +47 -0
  112. package/dist/_members/component-runtime/sceneAdmission.d.ts.map +1 -0
  113. package/dist/_members/component-runtime/sourceWorkspace.d.ts +8 -0
  114. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -1
  115. package/dist/_members/component-runtime/webglProbe.d.ts +191 -0
  116. package/dist/_members/component-runtime/webglProbe.d.ts.map +1 -0
  117. package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
  118. package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
  119. package/dist/_members/composition/fonts.d.ts +11 -4
  120. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  121. package/dist/_members/composition/ops/types.d.ts +1 -1
  122. package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
  123. package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
  124. package/dist/_members/composition/projection/brandKit.d.ts +6 -0
  125. package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
  126. package/dist/_members/composition/scene/animation.d.ts +25 -0
  127. package/dist/_members/composition/scene/budget.d.ts +29 -0
  128. package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
  129. package/dist/_members/composition/scene/clipRules.d.ts +119 -0
  130. package/dist/_members/composition/scene/constraints.d.ts +61 -0
  131. package/dist/_members/composition/scene/device.d.ts +21 -0
  132. package/dist/_members/composition/scene/examples.d.ts +11 -0
  133. package/dist/_members/composition/scene/index.d.ts +11 -0
  134. package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
  135. package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
  136. package/dist/_members/composition/scene/resolution.d.ts +178 -0
  137. package/dist/_members/composition/scene/schema.d.ts +351 -0
  138. package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
  139. package/dist/_members/composition/validators/brandKit.d.ts +1 -0
  140. package/dist/_members/composition/validators/render.d.ts +2 -0
  141. package/dist/_members/composition-ops/index.d.ts +45 -0
  142. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  143. package/dist/_members/core/render/compositionRender.d.ts +41 -9
  144. package/dist/_members/core/render/index.d.ts +9 -2
  145. package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
  146. package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
  147. package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
  148. package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
  149. package/dist/_members/core/render/trackProjection.d.ts +33 -0
  150. package/dist/_members/core/render/types.d.ts +142 -0
  151. package/dist/_members/errors/registry.d.ts +6 -0
  152. package/dist/_members/mcp/adapter.d.ts +5 -0
  153. package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
  154. package/dist/_members/mcp/sceneShot.d.ts +38 -0
  155. package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
  156. package/dist/_members/media-model/api.d.ts +1 -0
  157. package/dist/_members/media-model/media-kind.d.ts +1 -1
  158. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
  159. package/dist/_members/primitives/effects/index.d.ts +1 -0
  160. package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
  161. package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
  162. package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
  163. package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
  164. package/dist/_members/primitives/layouts/index.d.ts +1 -0
  165. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
  166. package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
  167. package/dist/_members/primitives/lib/index.d.ts +1 -0
  168. package/dist/_members/primitives/lib/palette.d.ts +30 -30
  169. package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
  170. package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
  171. package/dist/_members/primitives/lib/types.d.ts +2 -0
  172. package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
  173. package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
  174. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
  175. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
  176. package/dist/_members/primitives/scenes/index.d.ts +1 -0
  177. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
  178. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
  179. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
  180. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
  181. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
  182. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  183. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  184. package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
  185. package/dist/_members/render-harness/extractSegments.d.ts +1 -0
  186. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  187. package/dist/_members/render-harness/imageHeader.d.ts +14 -0
  188. package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
  189. package/dist/_members/render-harness/index.d.ts +6 -0
  190. package/dist/_members/render-harness/index.d.ts.map +1 -1
  191. package/dist/_members/render-harness/materializeSources.d.ts +46 -2
  192. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  193. package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
  194. package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
  195. package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
  196. package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
  197. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  198. package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
  199. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  200. package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
  201. package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
  202. package/dist/animate/preparation-facts.d.ts +1 -0
  203. package/dist/animate/preparation-facts.js +22 -0
  204. package/dist/animate.js +336 -1005
  205. package/dist/authoring/build-tools.js +7 -6
  206. package/dist/authoring/context.js +5 -4
  207. package/dist/authoring/prompts.js +1 -1
  208. package/dist/authoring/scene.d.ts +1 -0
  209. package/dist/authoring/scene.js +50 -0
  210. package/dist/authoring/tools.js +6 -5
  211. package/dist/authoring.js +49 -29
  212. package/dist/chunk-2L7PYYJK.js +23 -0
  213. package/dist/{chunk-ZN6P3KOJ.js → chunk-32TH76H3.js} +2 -2
  214. package/dist/chunk-5DJ3IEJR.js +4424 -0
  215. package/dist/chunk-6BVVCRRD.js +26488 -0
  216. package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
  217. package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
  218. package/dist/{chunk-2PGLNTB7.js → chunk-A74FZCPY.js} +45 -5
  219. package/dist/{chunk-C5SEPOWD.js → chunk-AS5EXBNS.js} +1792 -707
  220. package/dist/{chunk-BKHGL4MB.js → chunk-B3GSTQLR.js} +341 -274
  221. package/dist/chunk-BVA3537Z.js +63 -0
  222. package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
  223. package/dist/chunk-DQLYWNLC.js +2063 -0
  224. package/dist/chunk-E6WHXIDF.js +3619 -0
  225. package/dist/{chunk-NOEBAV2G.js → chunk-E7GIZEPS.js} +1 -1
  226. package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
  227. package/dist/{chunk-GEGRJKKO.js → chunk-F2DJL7P7.js} +1 -1
  228. package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
  229. package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
  230. package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
  231. package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
  232. package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
  233. package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
  234. package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
  235. package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
  236. package/dist/chunk-MH3UPKWR.js +3415 -0
  237. package/dist/{chunk-RFXR7ATW.js → chunk-NUKDEOK6.js} +13 -1
  238. package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
  239. package/dist/chunk-QAGGJHAF.js +16 -0
  240. package/dist/chunk-QS36DMFG.js +332 -0
  241. package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
  242. package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
  243. package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
  244. package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
  245. package/dist/{chunk-Y3QGYASW.js → chunk-SX523NDS.js} +14 -14
  246. package/dist/chunk-TARKDVP6.js +430 -0
  247. package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
  248. package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
  249. package/dist/{chunk-KU376ELE.js → chunk-UY77TMKD.js} +31 -44
  250. package/dist/chunk-VKATKWWR.js +1462 -0
  251. package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
  252. package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
  253. package/dist/chunk-WIHXXF3X.js +221 -0
  254. package/dist/{chunk-XVBOSPZI.js → chunk-X74EEFXV.js} +6 -6
  255. package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
  256. package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
  257. package/dist/{chunk-6XI57FZZ.js → chunk-YFSBFCXO.js} +1022 -46
  258. package/dist/{chunk-6ID2J64H.js → chunk-YHC3RXS7.js} +162 -25
  259. package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
  260. package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
  261. package/dist/component-runtime/browserOptions.js +14 -3
  262. package/dist/component-runtime/contracts.js +35 -3
  263. package/dist/component-runtime/identity/browser.js +1 -1
  264. package/dist/component-runtime/identity.js +2 -2
  265. package/dist/component-runtime/importPolicy.js +2 -2
  266. package/dist/component-runtime/mediaResolution.d.ts +1 -0
  267. package/dist/component-runtime/mediaResolution.js +11 -0
  268. package/dist/component-runtime/render.js +38 -5
  269. package/dist/component-runtime.js +118 -14
  270. package/dist/compose.js +27 -21
  271. package/dist/composition/fonts.js +64 -67
  272. package/dist/composition/graphics-plan.js +3 -2
  273. package/dist/composition/ops.js +4 -3
  274. package/dist/composition/primitive-catalog.js +1 -1
  275. package/dist/composition/projection.js +10 -3
  276. package/dist/composition/scene/budget-policy.d.ts +1 -0
  277. package/dist/composition/scene/budget-policy.js +17 -0
  278. package/dist/composition/scene/schema.json +2757 -0
  279. package/dist/composition/scene.d.ts +1 -0
  280. package/dist/composition/scene.js +275 -0
  281. package/dist/composition/validators.js +3 -2
  282. package/dist/composition-ops.js +103 -13
  283. package/dist/composition.js +12 -5
  284. package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
  285. package/dist/core/render.js +54 -3
  286. package/dist/core/select.js +2 -2
  287. package/dist/core.js +6 -3
  288. package/dist/director/ai-sdk.js +3 -3
  289. package/dist/director/domain.js +2 -2
  290. package/dist/director.js +3 -3
  291. package/dist/errors.js +1 -1
  292. package/dist/mcp/adapter.js +4 -4
  293. package/dist/mcp/core.js +1 -1
  294. package/dist/mcp/curation.js +1 -1
  295. package/dist/mcp/server.js +4 -4
  296. package/dist/mcp.js +4 -4
  297. package/dist/media-model/media-kind.js +2 -0
  298. package/dist/media-model/testing.js +16 -11
  299. package/dist/media-model.js +1 -1
  300. package/dist/nle-export.js +27 -21
  301. package/dist/primitives/backgrounds.js +2 -2
  302. package/dist/primitives/captions.js +21 -11
  303. package/dist/primitives/effects.js +14 -4
  304. package/dist/primitives/graphics.json +3 -0
  305. package/dist/primitives/hero-text.js +4 -3
  306. package/dist/primitives/layouts.js +9 -2
  307. package/dist/primitives/lib/frameScale.d.ts +1 -0
  308. package/dist/primitives/lib/frameScale.js +11 -0
  309. package/dist/primitives/lib/index.js +18 -10
  310. package/dist/primitives/lib/palette.js +1 -1
  311. package/dist/primitives/lib/text/contrast.js +2 -1
  312. package/dist/primitives/lib/text/typeface.js +1 -1
  313. package/dist/primitives/lib.js +18 -10
  314. package/dist/primitives/params-required.json +3 -0
  315. package/dist/primitives/scenes.js +12 -3
  316. package/dist/primitives/text.js +5 -5
  317. package/dist/primitives/transitions.js +2 -2
  318. package/dist/primitives/ui-blocks.js +7 -6
  319. package/dist/primitives/version-map.json +5 -2
  320. package/dist/primitives.js +27 -20
  321. package/dist/render-harness/cardAssetAdmission.js +2 -2
  322. package/dist/render-harness/renderInputAssets.js +2 -2
  323. package/dist/render-harness.js +876 -126
  324. package/package.json +51 -17
  325. package/dist/_members/animate/three/drei.d.ts +0 -6
  326. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
  327. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
  328. package/dist/chunk-4JRUGT2Y.js +0 -544
  329. package/dist/chunk-5OTQ7M43.js +0 -718
  330. package/dist/chunk-CGHTMZNC.js +0 -6
  331. package/dist/chunk-QBKDEO7J.js +0 -9521
  332. /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
@@ -21,7 +21,10 @@ import {
21
21
  TEXT_HI,
22
22
  TEXT_MUTED,
23
23
  VIOLET
24
- } from "./chunk-CX2IIQ4R.js";
24
+ } from "./chunk-W2245F6G.js";
25
+ import {
26
+ FlexLayout
27
+ } from "./chunk-5DJ3IEJR.js";
25
28
 
26
29
  // ../execution/primitives/src/layouts/chat-to-preview-layout/index.tsx
27
30
  import { Easing, interpolate, useCurrentFrame, useVideoConfig } from "remotion";
@@ -289,6 +292,10 @@ function ChatToPreviewLayout({
289
292
  );
290
293
  }
291
294
 
295
+ // ../execution/primitives/src/layouts/flex-layout/index.tsx
296
+ import React2 from "react";
297
+ var FlexLayout2 = (props) => /* @__PURE__ */ React2.createElement(FlexLayout, { outlineColor: BORDER_SOFT, ...props });
298
+
292
299
  // ../execution/primitives/src/layouts/infinite-bento-pan/index.tsx
293
300
  import { interpolate as interpolate2, useCurrentFrame as useCurrentFrame2, useVideoConfig as useVideoConfig2 } from "remotion";
294
301
  var FONT_FAMILY2 = "inherit";
@@ -695,7 +702,7 @@ function InfiniteBentoPan({
695
702
  }
696
703
 
697
704
  // ../execution/primitives/src/layouts/letterbox/index.tsx
698
- import React2 from "react";
705
+ import React3 from "react";
699
706
  import { useCurrentFrame as useCurrentFrame3, useVideoConfig as useVideoConfig3, spring, interpolate as interpolate3, AbsoluteFill } from "remotion";
700
707
  var Letterbox = ({
701
708
  ratio = 2.35,
@@ -720,9 +727,9 @@ var Letterbox = ({
720
727
  barHeight = rawBarHeight;
721
728
  }
722
729
  if (currentRatio >= ratio && rawBarHeight <= 0) {
723
- return /* @__PURE__ */ React2.createElement(AbsoluteFill, null, children);
730
+ return /* @__PURE__ */ React3.createElement(AbsoluteFill, null, children);
724
731
  }
725
- return /* @__PURE__ */ React2.createElement(AbsoluteFill, null, children, /* @__PURE__ */ React2.createElement(
732
+ return /* @__PURE__ */ React3.createElement(AbsoluteFill, null, children, /* @__PURE__ */ React3.createElement(
726
733
  "div",
727
734
  {
728
735
  style: {
@@ -734,7 +741,7 @@ var Letterbox = ({
734
741
  backgroundColor: color
735
742
  }
736
743
  }
737
- ), /* @__PURE__ */ React2.createElement(
744
+ ), /* @__PURE__ */ React3.createElement(
738
745
  "div",
739
746
  {
740
747
  style: {
@@ -750,7 +757,7 @@ var Letterbox = ({
750
757
  };
751
758
 
752
759
  // ../execution/primitives/src/layouts/photo-grid/index.tsx
753
- import React3 from "react";
760
+ import React4 from "react";
754
761
  import { useCurrentFrame as useCurrentFrame4, useVideoConfig as useVideoConfig4, spring as spring2, interpolate as interpolate4, AbsoluteFill as AbsoluteFill2, Img } from "remotion";
755
762
  var PhotoGrid = ({
756
763
  images,
@@ -761,7 +768,7 @@ var PhotoGrid = ({
761
768
  const frame = useCurrentFrame4();
762
769
  const { fps } = useVideoConfig4();
763
770
  const staggerFrames = Math.round(stagger * fps);
764
- return /* @__PURE__ */ React3.createElement(
771
+ return /* @__PURE__ */ React4.createElement(
765
772
  AbsoluteFill2,
766
773
  {
767
774
  style: {
@@ -781,7 +788,7 @@ var PhotoGrid = ({
781
788
  const opacity = interpolate4(spr, [0, 1], [0, 1]);
782
789
  const scale = interpolate4(spr, [0, 1], [0.85, 1]);
783
790
  const translateY = interpolate4(spr, [0, 1], [20, 0]);
784
- return /* @__PURE__ */ React3.createElement(
791
+ return /* @__PURE__ */ React4.createElement(
785
792
  "div",
786
793
  {
787
794
  key: i,
@@ -792,7 +799,7 @@ var PhotoGrid = ({
792
799
  transform: `scale(${scale}) translateY(${translateY}px)`
793
800
  }
794
801
  },
795
- /* @__PURE__ */ React3.createElement(
802
+ /* @__PURE__ */ React4.createElement(
796
803
  Img,
797
804
  {
798
805
  src,
@@ -809,7 +816,7 @@ var PhotoGrid = ({
809
816
  };
810
817
 
811
818
  // ../execution/primitives/src/layouts/picture-in-picture/index.tsx
812
- import React4 from "react";
819
+ import React5 from "react";
813
820
  import { useCurrentFrame as useCurrentFrame5, useVideoConfig as useVideoConfig5, spring as spring3, interpolate as interpolate5, AbsoluteFill as AbsoluteFill3 } from "remotion";
814
821
  var PictureInPicture = ({
815
822
  position = "bottom-right",
@@ -843,7 +850,7 @@ var PictureInPicture = ({
843
850
  }
844
851
  const originX = position.includes("left") ? "0%" : "100%";
845
852
  const originY = position.includes("top") ? "0%" : "100%";
846
- return /* @__PURE__ */ React4.createElement(AbsoluteFill3, null, main, /* @__PURE__ */ React4.createElement(
853
+ return /* @__PURE__ */ React5.createElement(AbsoluteFill3, null, main, /* @__PURE__ */ React5.createElement(
847
854
  "div",
848
855
  {
849
856
  style: {
@@ -864,7 +871,7 @@ var PictureInPicture = ({
864
871
  };
865
872
 
866
873
  // ../execution/primitives/src/layouts/split-screen/index.tsx
867
- import React5 from "react";
874
+ import React6 from "react";
868
875
  import { useCurrentFrame as useCurrentFrame6, useVideoConfig as useVideoConfig6, spring as spring4, interpolate as interpolate6, AbsoluteFill as AbsoluteFill4 } from "remotion";
869
876
  var SplitScreen = ({
870
877
  columns = 2,
@@ -873,9 +880,9 @@ var SplitScreen = ({
873
880
  }) => {
874
881
  const frame = useCurrentFrame6();
875
882
  const { fps } = useVideoConfig6();
876
- const childArray = React5.Children.toArray(children);
883
+ const childArray = React6.Children.toArray(children);
877
884
  const staggerFrames = 4;
878
- return /* @__PURE__ */ React5.createElement(
885
+ return /* @__PURE__ */ React6.createElement(
879
886
  AbsoluteFill4,
880
887
  {
881
888
  style: {
@@ -893,7 +900,7 @@ var SplitScreen = ({
893
900
  });
894
901
  const opacity = interpolate6(spr, [0, 1], [0, 1]);
895
902
  const scale = interpolate6(spr, [0, 1], [0.92, 1]);
896
- return /* @__PURE__ */ React5.createElement(
903
+ return /* @__PURE__ */ React6.createElement(
897
904
  "div",
898
905
  {
899
906
  key: i,
@@ -1090,18 +1097,130 @@ var config = {
1090
1097
  preview: { thumbnailFrame: 90, mode: "oneshot", defaultExample: "agent-demo" }
1091
1098
  };
1092
1099
 
1093
- // ../execution/primitives/src/layouts/infinite-bento-pan/config.ts
1100
+ // ../execution/primitives/src/layouts/flex-layout/config.ts
1094
1101
  import { z as z2 } from "zod";
1102
+ var sizing = {
1103
+ weight: z2.number().min(0).describe("Share of the free space along the main axis. 0 = content-sized (uses basis / min)."),
1104
+ basis: z2.number().min(0).optional().describe("Declared size in px along the main axis. With weight 0 the track takes exactly this and pushes its neighbours."),
1105
+ min: z2.number().min(0).optional().describe("Minimum px along the main axis."),
1106
+ max: z2.number().min(0).optional().describe("Maximum px along the main axis."),
1107
+ shrink: z2.number().min(0).max(1).optional().describe("0 keeps a declared size even when it overflows (default for weight 0); 1 lets it shrink.")
1108
+ };
1109
+ var leaf = z2.object(sizing).strict();
1110
+ var container = z2.object({
1111
+ ...sizing,
1112
+ split: z2.array(z2.union([z2.number().min(0), leaf])).min(1).max(8).describe("Cells nested across the other axis, each a weight or a sizing object.")
1113
+ }).strict();
1114
+ var track = z2.union([z2.number().min(0).describe("Leaf weight along the main axis."), container, leaf]);
1115
+ var fit = z2.object({
1116
+ mode: z2.enum(["stretch", "contain", "cover", "position", "scale", "matte"]).describe("stretch fills the cell; contain/cover fit an aspect; position keeps natural size; scale fits an authored size; matte clips instead of resizing."),
1117
+ aspect: z2.number().positive().optional().describe("Content w/h for contain, cover, matte."),
1118
+ size: z2.object({ w: z2.number().positive(), h: z2.number().positive() }).optional().describe("Authored px size for scale."),
1119
+ anchor: z2.object({ x: z2.number().min(0).max(1), y: z2.number().min(0).max(1) }).optional().describe("0..1 position of the content inside the cell. Default centre.")
1120
+ }).strict();
1095
1121
  var paramsSchema2 = z2.object({
1096
- panSpeed: z2.number().min(0.25).max(2).default(1).describe(
1122
+ direction: z2.enum(["row", "column"]).default("row").describe("Main axis for the top-level tracks."),
1123
+ gap: z2.number().min(0).max(120).default(24).describe("Gap between cells in pixels."),
1124
+ padding: z2.number().min(0).max(200).default(0).describe("Padding inside the frame in pixels."),
1125
+ tracks: z2.array(track).min(1).max(8).default([1, 1]).describe("Main-axis tracks. A number is a weight; an object adds declared sizing and may `split` into nested cells. Children fill the leaves depth-first."),
1126
+ tracksEnd: z2.array(track).min(1).max(8).optional().describe("End state. Weights ease from tracks to tracksEnd across the clip and every cell reflows. Shapes may differ: a cell present on one side only enters from, or exits to, zero."),
1127
+ fits: z2.array(fit).max(64).optional().describe("Per-leaf fit rule in leaf order. Omitted leaves stretch."),
1128
+ outline: z2.boolean().default(false).describe("Draw thin outlines on every cell. Reads as a design element, not debug UI.")
1129
+ }).passthrough();
1130
+ var config2 = {
1131
+ id: "flex-layout",
1132
+ component: FlexLayout2,
1133
+ name: "Flex Layout",
1134
+ category: "layouts",
1135
+ kind: "component",
1136
+ version: "0.1.0",
1137
+ intent: "flex-layout",
1138
+ description: "Weighted flexbox layout that reflows. Tracks are weights, not pixels, so the same layout fits any frame and any content count; a track with weight 0 and a basis is content-sized and pushes its neighbours. Set tracksEnd to animate the weights \u2014 cells that exist on only one side enter or exit \u2014 and everything re-solves every frame. Per-leaf fit rules (stretch, contain, cover, position, scale, matte) decide how content sits in its cell. One solve positions everything, so cells never drift against each other.",
1139
+ useWhen: "Any multi-cell arrangement whose proportions should be data, not hand-nudged pixels \u2014 dashboards, feature grids, side-by-sides, fixed sidebars beside fluid content, and any layout that should visibly reflow as a beat. Prefer over split-screen when columns are unequal, content-sized or animated. Not for a single floating box (use picture-in-picture) or bars (letterbox). Never CSS-scale the whole primitive; size the container instead. Like the other layouts it takes children, so use it inside an authored component (import FlexLayout from @cueframe/animate); as a bare composition overlay it draws only the rig outlines.",
1140
+ pairsWith: ["lower-third", "split-screen", "photo-grid"],
1141
+ avoidWith: ["picture-in-picture", "letterbox"],
1142
+ tier: "standard",
1143
+ useCase: ["full-scene", "explainer"],
1144
+ tags: ["layout", "flex", "flexbox", "grid", "reflow", "weights", "cells", "responsive", "matte", "fit"],
1145
+ mood: ["editorial", "tech-demo", "minimal", "corporate"],
1146
+ paramsSchema: paramsSchema2,
1147
+ propDefaults: { direction: "row", gap: 24, padding: 0, tracks: [1, 1], outline: false },
1148
+ examples: [
1149
+ { name: "three-up", mood: ["editorial"], params: { tracks: [1, 1, 1], gap: 24 } },
1150
+ { name: "sidebar", mood: ["tech-demo"], params: { tracks: [1, 3], gap: 16, padding: 32 } },
1151
+ {
1152
+ name: "content-sized",
1153
+ mood: ["corporate"],
1154
+ description: "A fixed 520px rail and a fixed 360px panel; the middle takes whatever is left.",
1155
+ params: {
1156
+ tracks: [{ weight: 0, basis: 520 }, 1, { weight: 0, basis: 360 }],
1157
+ fits: [{ mode: "stretch" }, { mode: "position" }, { mode: "stretch" }],
1158
+ gap: 16,
1159
+ padding: 24,
1160
+ outline: true
1161
+ }
1162
+ },
1163
+ {
1164
+ name: "reflow",
1165
+ mood: ["minimal"],
1166
+ description: "A cast column, a type cell, and a nested block grid; weights ease so the whole rig reflows.",
1167
+ params: {
1168
+ tracks: [{ weight: 1, split: [1, 1, 1, 1] }, 1, { weight: 3, split: [1, 1] }],
1169
+ tracksEnd: [{ weight: 3, split: [1, 1.6, 1, 1] }, 1, { weight: 1, split: [2, 1] }],
1170
+ fits: [
1171
+ { mode: "stretch" },
1172
+ { mode: "stretch" },
1173
+ { mode: "stretch" },
1174
+ { mode: "stretch" },
1175
+ { mode: "position" },
1176
+ { mode: "stretch" },
1177
+ { mode: "stretch" }
1178
+ ],
1179
+ gap: 16,
1180
+ padding: 24,
1181
+ outline: true
1182
+ }
1183
+ },
1184
+ {
1185
+ name: "enter-exit",
1186
+ mood: ["tech-demo"],
1187
+ description: "Two cells become three: the third enters from zero and takes its share.",
1188
+ params: { tracks: [1, 1], tracksEnd: [1, 1, 1], gap: 24, padding: 24, outline: true }
1189
+ },
1190
+ {
1191
+ name: "mattes",
1192
+ mood: ["editorial"],
1193
+ description: "Square and 16:9 mattes over stretched content \u2014 the art is never resized.",
1194
+ params: {
1195
+ tracks: [1, 1, 1],
1196
+ gap: 24,
1197
+ padding: 48,
1198
+ fits: [{ mode: "matte", aspect: 1 }, { mode: "contain", aspect: 16 / 9 }, { mode: "cover", aspect: 1 }]
1199
+ }
1200
+ }
1201
+ ],
1202
+ textParam: null,
1203
+ subtextParam: null,
1204
+ tokens: [],
1205
+ durationInFrames: 90,
1206
+ fps: 30,
1207
+ width: 1920,
1208
+ height: 1080,
1209
+ preview: { thumbnailFrame: 45, mode: "oneshot", defaultExample: "reflow" }
1210
+ };
1211
+
1212
+ // ../execution/primitives/src/layouts/infinite-bento-pan/config.ts
1213
+ import { z as z3 } from "zod";
1214
+ var paramsSchema3 = z3.object({
1215
+ panSpeed: z3.number().min(0.25).max(2).default(1).describe(
1097
1216
  'How aggressively the camera pans across the supergrid. 0.5 feels languid; 1 reads as "tour"; >1.5 starts blurring cards.'
1098
1217
  ),
1099
- accentColor: z2.string().default(VIOLET).describe(
1218
+ accentColor: z3.string().default(VIOLET).describe(
1100
1219
  "Highlight color for chart lines, bars, and counter deltas. Dial to brand accent."
1101
1220
  ),
1102
- speed: z2.number().min(0.25).max(4).default(1).describe("Global playback speed multiplier (compounds with panSpeed).")
1221
+ speed: z3.number().min(0.25).max(4).default(1).describe("Global playback speed multiplier (compounds with panSpeed).")
1103
1222
  }).passthrough();
1104
- var config2 = {
1223
+ var config3 = {
1105
1224
  id: "infinite-bento-pan",
1106
1225
  component: InfiniteBentoPan,
1107
1226
  name: "Infinite Bento Pan",
@@ -1117,7 +1236,7 @@ var config2 = {
1117
1236
  useCase: ["background"],
1118
1237
  tags: ["layout", "bento", "pan", "infinite", "supergrid", "b-roll", "platform-overview"],
1119
1238
  mood: ["tech-demo", "cinematic", "corporate"],
1120
- paramsSchema: paramsSchema2,
1239
+ paramsSchema: paramsSchema3,
1121
1240
  propDefaults: { panSpeed: 1, accentColor: VIOLET, speed: 1 },
1122
1241
  examples: [
1123
1242
  {
@@ -1146,13 +1265,13 @@ var config2 = {
1146
1265
  };
1147
1266
 
1148
1267
  // ../execution/primitives/src/layouts/letterbox/config.ts
1149
- import { z as z3 } from "zod";
1150
- var paramsSchema3 = z3.object({
1151
- 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."),
1152
- color: z3.string().default("#000000").describe("Bar color."),
1153
- animated: z3.boolean().default(true).describe("Spring-animate the bars opening.")
1268
+ import { z as z4 } from "zod";
1269
+ var paramsSchema4 = z4.object({
1270
+ ratio: z4.number().min(1).max(3.5).default(2.35).describe("Target aspect ratio for the bars. 2.35 = cinemascope; 1.85 = academy widescreen."),
1271
+ color: z4.string().default("#000000").describe("Bar color."),
1272
+ animated: z4.boolean().default(true).describe("Spring-animate the bars opening.")
1154
1273
  }).passthrough();
1155
- var config3 = {
1274
+ var config4 = {
1156
1275
  id: "letterbox",
1157
1276
  component: Letterbox,
1158
1277
  name: "Letterbox",
@@ -1168,7 +1287,7 @@ var config3 = {
1168
1287
  useCase: ["title-over-footage"],
1169
1288
  tags: ["layout", "letterbox", "cinemascope", "bars", "cinematic"],
1170
1289
  mood: ["cinematic"],
1171
- paramsSchema: paramsSchema3,
1290
+ paramsSchema: paramsSchema4,
1172
1291
  propDefaults: { ratio: 2.35, color: "#000000", animated: true },
1173
1292
  examples: [
1174
1293
  { name: "cinemascope", mood: ["cinematic"], params: { ratio: 2.35, color: "#000000", animated: true } },
@@ -1185,14 +1304,14 @@ var config3 = {
1185
1304
  };
1186
1305
 
1187
1306
  // ../execution/primitives/src/layouts/photo-grid/config.ts
1188
- import { z as z4 } from "zod";
1189
- var paramsSchema4 = z4.object({
1190
- images: z4.array(z4.string().url().meta({ cueframeAsset: true })).min(1).describe("Array of image URLs to display."),
1191
- columns: z4.number().int().min(1).max(6).default(2).describe("Grid columns."),
1192
- gap: z4.number().min(0).max(40).default(8).describe("Gap between cells in pixels."),
1193
- stagger: z4.number().min(0).max(2).default(0.15).describe("Seconds between each cell's reveal. 0.1\u20130.25 reads natural.")
1307
+ import { z as z5 } from "zod";
1308
+ var paramsSchema5 = z5.object({
1309
+ images: z5.array(z5.string().url().meta({ cueframeAsset: true })).min(1).describe("Array of image URLs to display."),
1310
+ columns: z5.number().int().min(1).max(6).default(2).describe("Grid columns."),
1311
+ gap: z5.number().min(0).max(40).default(8).describe("Gap between cells in pixels."),
1312
+ stagger: z5.number().min(0).max(2).default(0.15).describe("Seconds between each cell's reveal. 0.1\u20130.25 reads natural.")
1194
1313
  }).passthrough();
1195
- var config4 = {
1314
+ var config5 = {
1196
1315
  id: "photo-grid",
1197
1316
  component: PhotoGrid,
1198
1317
  name: "Photo Grid",
@@ -1208,7 +1327,7 @@ var config4 = {
1208
1327
  useCase: ["full-scene"],
1209
1328
  tags: ["layout", "grid", "photos", "gallery", "staggered"],
1210
1329
  mood: ["editorial", "cinematic", "soft"],
1211
- paramsSchema: paramsSchema4,
1330
+ paramsSchema: paramsSchema5,
1212
1331
  propDefaults: { columns: 2, gap: 8, stagger: 0.15 },
1213
1332
  examples: [
1214
1333
  {
@@ -1233,14 +1352,14 @@ var config4 = {
1233
1352
  };
1234
1353
 
1235
1354
  // ../execution/primitives/src/layouts/picture-in-picture/config.ts
1236
- import { z as z5 } from "zod";
1237
- var paramsSchema5 = z5.object({
1238
- position: z5.enum(["top-left", "top-right", "bottom-left", "bottom-right"]).default("bottom-right").describe("Corner for the PiP overlay."),
1239
- size: z5.number().min(0.1).max(0.6).default(0.3).describe("PiP size as fraction of video width (0\u20131)."),
1240
- borderRadius: z5.number().min(0).max(60).default(12).describe("Border radius in pixels."),
1241
- shadow: z5.string().default("none").describe("CSS box-shadow. Defaults to none; a hairline border provides separation.")
1355
+ import { z as z6 } from "zod";
1356
+ var paramsSchema6 = z6.object({
1357
+ position: z6.enum(["top-left", "top-right", "bottom-left", "bottom-right"]).default("bottom-right").describe("Corner for the PiP overlay."),
1358
+ size: z6.number().min(0.1).max(0.6).default(0.3).describe("PiP size as fraction of video width (0\u20131)."),
1359
+ borderRadius: z6.number().min(0).max(60).default(12).describe("Border radius in pixels."),
1360
+ shadow: z6.string().default("none").describe("CSS box-shadow. Defaults to none; a hairline border provides separation.")
1242
1361
  }).passthrough();
1243
- var config5 = {
1362
+ var config6 = {
1244
1363
  id: "picture-in-picture",
1245
1364
  component: PictureInPicture,
1246
1365
  name: "Picture-in-Picture",
@@ -1256,7 +1375,7 @@ var config5 = {
1256
1375
  useCase: ["title-over-footage"],
1257
1376
  tags: ["layout", "pip", "picture-in-picture", "overlay", "corner"],
1258
1377
  mood: ["tech-demo", "editorial", "breaking-news"],
1259
- paramsSchema: paramsSchema5,
1378
+ paramsSchema: paramsSchema6,
1260
1379
  propDefaults: { position: "bottom-right", size: 0.3, borderRadius: 12, shadow: "none" },
1261
1380
  examples: [
1262
1381
  { name: "speaker-overlay", mood: ["tech-demo"], params: { position: "bottom-right", size: 0.25, borderRadius: 12, shadow: "none" } },
@@ -1273,12 +1392,12 @@ var config5 = {
1273
1392
  };
1274
1393
 
1275
1394
  // ../execution/primitives/src/layouts/split-screen/config.ts
1276
- import { z as z6 } from "zod";
1277
- var paramsSchema6 = z6.object({
1278
- columns: z6.number().int().min(1).max(6).default(2).describe("Number of equal columns. 2 is the canonical split."),
1279
- gap: z6.number().min(0).max(40).default(4).describe("Gap between panels in pixels.")
1395
+ import { z as z7 } from "zod";
1396
+ var paramsSchema7 = z7.object({
1397
+ columns: z7.number().int().min(1).max(6).default(2).describe("Number of equal columns. 2 is the canonical split."),
1398
+ gap: z7.number().min(0).max(40).default(4).describe("Gap between panels in pixels.")
1280
1399
  }).passthrough();
1281
- var config6 = {
1400
+ var config7 = {
1282
1401
  id: "split-screen",
1283
1402
  component: SplitScreen,
1284
1403
  name: "Split Screen",
@@ -1294,7 +1413,7 @@ var config6 = {
1294
1413
  useCase: ["full-scene"],
1295
1414
  tags: ["layout", "split", "columns", "comparison", "multi-feed"],
1296
1415
  mood: ["editorial", "corporate", "tech-demo"],
1297
- paramsSchema: paramsSchema6,
1416
+ paramsSchema: paramsSchema7,
1298
1417
  propDefaults: { columns: 2, gap: 4 },
1299
1418
  examples: [
1300
1419
  { name: "two-up", mood: ["editorial"], params: { columns: 2, gap: 4 } },
@@ -1311,14 +1430,14 @@ var config6 = {
1311
1430
  };
1312
1431
 
1313
1432
  // ../execution/primitives/src/layouts/staggered-bento-grid/config.ts
1314
- import { z as z7 } from "zod";
1315
- var itemSchema = z7.object({
1316
- 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."),
1317
- body: z7.string().max(160).optional().describe("Optional subtitle beneath the title. Auto-fits (shrinks + wraps to 3 lines) to the cell."),
1318
- 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.")
1433
+ import { z as z8 } from "zod";
1434
+ var itemSchema = z8.object({
1435
+ title: z8.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."),
1436
+ body: z8.string().max(160).optional().describe("Optional subtitle beneath the title. Auto-fits (shrinks + wraps to 3 lines) to the cell."),
1437
+ span: z8.union([z8.literal(1), z8.literal(2)]).optional().describe("Column span. 2 doubles the card width \u2014 use for 1\u20132 anchor cards in the grid.")
1319
1438
  });
1320
- var paramsSchema7 = z7.object({
1321
- items: z7.array(itemSchema).min(1).max(16).default([
1439
+ var paramsSchema8 = z8.object({
1440
+ items: z8.array(itemSchema).min(1).max(16).default([
1322
1441
  { title: "Fast", body: "Built on Remotion", span: 2 },
1323
1442
  { title: "Animated", body: "Spring physics" },
1324
1443
  { title: "Composable", body: "Drop-in blocks" },
@@ -1329,18 +1448,18 @@ var paramsSchema7 = z7.object({
1329
1448
  ]).describe(
1330
1449
  "Cards to render. Order = stagger order (top-left first). Mix span:1 / span:2 for a varied bento rhythm; 6\u20139 cards reads best."
1331
1450
  ),
1332
- staggerDelay: z7.number().int().min(2).max(20).default(8).describe(
1451
+ staggerDelay: z8.number().int().min(2).max(20).default(8).describe(
1333
1452
  "Frames between each card's entrance. 6\u201310 feels intentional; <4 is chaotic; >12 makes the audience wait."
1334
1453
  ),
1335
- columns: z7.number().int().min(2).max(5).default(3).describe(
1454
+ columns: z8.number().int().min(2).max(5).default(3).describe(
1336
1455
  "Grid column count. 3 is the canonical bento."
1337
1456
  ),
1338
- background: z7.string().default(BG).describe("Frame background behind the grid."),
1339
- cardColor: z7.string().default(SURFACE).describe("Bento card fill. Should be one step lighter than background."),
1340
- textColor: z7.string().default(TEXT_HI).describe("Title and body text color."),
1341
- speed: z7.number().min(0.25).max(4).default(1).describe("Playback speed multiplier across all card entrances.")
1457
+ background: z8.string().default(BG).describe("Frame background behind the grid."),
1458
+ cardColor: z8.string().default(SURFACE).describe("Bento card fill. Should be one step lighter than background."),
1459
+ textColor: z8.string().default(TEXT_HI).describe("Title and body text color."),
1460
+ speed: z8.number().min(0.25).max(4).default(1).describe("Playback speed multiplier across all card entrances.")
1342
1461
  }).passthrough();
1343
- var config7 = {
1462
+ var config8 = {
1344
1463
  id: "staggered-bento-grid",
1345
1464
  component: StaggeredBentoGrid,
1346
1465
  name: "Staggered Bento Grid",
@@ -1356,7 +1475,7 @@ var config7 = {
1356
1475
  useCase: ["full-scene"],
1357
1476
  tags: ["layout", "bento", "grid", "features", "stagger", "spring", "apple", "keynote"],
1358
1477
  mood: ["tech-demo", "minimal", "corporate", "editorial"],
1359
- paramsSchema: paramsSchema7,
1478
+ paramsSchema: paramsSchema8,
1360
1479
  propDefaults: {
1361
1480
  items: [
1362
1481
  { title: "Fast", body: "Built on Remotion", span: 2 },
@@ -1429,11 +1548,13 @@ var catalog = [
1429
1548
  config4,
1430
1549
  config5,
1431
1550
  config6,
1432
- config7
1551
+ config7,
1552
+ config8
1433
1553
  ];
1434
1554
 
1435
1555
  export {
1436
1556
  ChatToPreviewLayout,
1557
+ FlexLayout2 as FlexLayout,
1437
1558
  InfiniteBentoPan,
1438
1559
  Letterbox,
1439
1560
  PhotoGrid,
@@ -7,6 +7,10 @@ import {
7
7
  import {
8
8
  FLOORS
9
9
  } from "./chunk-JF4JJAFP.js";
10
+ import {
11
+ captionFontSource,
12
+ effectiveCaptionFamily
13
+ } from "./chunk-TARKDVP6.js";
10
14
 
11
15
  // ../composition/src/projection/brandKit.ts
12
16
  var LOGO_DEFAULT_PLACEMENT = "br";
@@ -35,6 +39,11 @@ function resolveBrandKit(kit, compositionWidth) {
35
39
  primary: kit.colors.primary ?? kit.colors.accent,
36
40
  secondary: kit.colors.secondary ?? kit.colors.accent,
37
41
  accent: kit.colors.accent,
42
+ accentStrong: kit.colors.primary ?? kit.colors.accent,
43
+ accentSoft: kit.colors.accentMuted ?? safe.accentMuted,
44
+ success: "#22c55e",
45
+ warning: "#f59e0b",
46
+ danger: "#ef4444",
38
47
  background: safe.background,
39
48
  text: safe.text,
40
49
  textMuted: kit.colors.textMuted ?? clampToFloor(colorMix(safe.text, safe.background, 0.4), safe.background, FLOORS.nonBody),
@@ -50,7 +59,10 @@ function resolveBrandKit(kit, compositionWidth) {
50
59
  const fonts = {
51
60
  heading: kit.fonts.heading,
52
61
  body: kit.fonts.body ?? kit.fonts.heading,
53
- caption: kit.fonts.caption ?? kit.fonts.body ?? kit.fonts.heading
62
+ // The slot chain lives in `../fonts` because the kit validator judges the profile at the
63
+ // family this line picks. Two copies of it is how a kit came to validate against Inter and
64
+ // project Poppins.
65
+ caption: captionFontSource(kit.fonts).ref
54
66
  };
55
67
  const spacing = {
56
68
  base: kit.spacing?.base ?? compositionWidth * 0.03,
@@ -70,7 +82,7 @@ function resolveBrandKit(kit, compositionWidth) {
70
82
  staggerMs: kit.motion?.staggerMs ?? 90,
71
83
  exitMs: kit.motion?.exitMs ?? 0
72
84
  };
73
- const captionBaseFamily = kit.captionProfile?.fontFamily ?? fonts.caption.family;
85
+ const captionBaseFamily = effectiveCaptionFamily(kit).family;
74
86
  const cp = kit.captionProfile;
75
87
  const caption = {
76
88
  fg: cp?.emphasisColor ? clampToFloor(cp.emphasisColor, safe.captionScrim, FLOORS.body) : safe.captionFg,
@@ -83,6 +95,7 @@ function resolveBrandKit(kit, compositionWidth) {
83
95
  ...cp?.entranceStaggerMs != null ? { entranceStaggerMs: cp.entranceStaggerMs } : {},
84
96
  ...cp?.exitMs != null ? { exitMs: cp.exitMs } : {},
85
97
  ...captionBaseFamily ? { fontFamily: captionBaseFamily } : {},
98
+ ...cp?.fontWeight != null ? { fontWeight: cp.fontWeight } : {},
86
99
  ...cp?.emphasisFontFamily ? { emphasisFontFamily: cp.emphasisFontFamily } : {},
87
100
  ...cp?.emphasisScale != null ? { emphasisScale: cp.emphasisScale } : {},
88
101
  ...cp?.emphasisFontWeight != null ? { emphasisFontWeight: cp.emphasisFontWeight } : {},
@@ -347,7 +360,7 @@ function unionExclusionsForAspect(aspect) {
347
360
  }
348
361
 
349
362
  // ../composition/src/projection/composition-floor.ts
350
- var FLOOR_VERSION = "floor-v6-2026.06.09";
363
+ var FLOOR_VERSION = "floor-v7-2026.09.09";
351
364
  var FACE_PADDING = { top: 0.6, bottom: 0.3, side: 0.25 };
352
365
  var CAPTION_LC_FLOOR = 60;
353
366
  var MIN_ZOOM = 0.4;
@@ -456,6 +469,7 @@ function captionsBehindEligible(input) {
456
469
  }
457
470
  var CENTER = 0.5;
458
471
  var MIN_CAPTION_WIDTH = 0.5;
472
+ var CAPTION_BOTTOM_INSET = 0.06;
459
473
  var straddlesCentre = (r) => r.x < CENTER && r.x + r.w > CENTER;
460
474
  function placeInLegalArea(el, b) {
461
475
  const all = [...b.faceKeepOut, ...b.safeZones];
@@ -496,11 +510,17 @@ function placeInLegalArea(el, b) {
496
510
  function resolveCaptionRegion(input) {
497
511
  const sz = lookupSafeZones(input.platform ?? "", input.aspect);
498
512
  const ext = input.captionExtent ?? { w: 0.8, h: 0.15 };
513
+ const bottomInset = { x: 0, y: 1 - CAPTION_BOTTOM_INSET, w: 1, h: CAPTION_BOTTOM_INSET };
499
514
  const region = placeInLegalArea(
500
515
  { id: "captions", anchor: input.anchor ?? "lower-third", minH: ext.h, minW: ext.w },
501
- { faceKeepOut: [], safeZones: sz.exclusions }
516
+ { faceKeepOut: [], safeZones: [...sz.exclusions, bottomInset] }
502
517
  );
503
- return region ?? { x: 0.1, y: clamp01(1 - ext.h), w: ext.w, h: ext.h };
518
+ return region ?? {
519
+ x: 0.1,
520
+ y: clamp01(1 - CAPTION_BOTTOM_INSET - ext.h),
521
+ w: ext.w,
522
+ h: ext.h
523
+ };
504
524
  }
505
525
  function resolveOverlayRegion(input) {
506
526
  const sz = lookupSafeZones(input.platform ?? "", input.aspect);
@@ -664,6 +684,7 @@ export {
664
684
  COVIEW_MIN_BAND_COVERAGE,
665
685
  COVIEW_MAX_BAND_COVERAGE,
666
686
  captionsBehindEligible,
687
+ CAPTION_BOTTOM_INSET,
667
688
  placeInLegalArea,
668
689
  resolveCaptionRegion,
669
690
  resolveOverlayRegion,
@@ -1,13 +1,15 @@
1
1
  import {
2
2
  ComponentRuntimeError
3
- } from "./chunk-LQUWKBST.js";
3
+ } from "./chunk-ZVG446DJ.js";
4
4
 
5
- // ../execution/component-runtime/src/importPolicy.ts
6
- import { parse } from "@babel/parser";
5
+ // ../execution/component-runtime/src/allowedImports.ts
7
6
  var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
8
7
  "react",
8
+ "react/jsx-runtime",
9
9
  "remotion",
10
10
  "@remotion/media",
11
+ "@remotion/layout-utils",
12
+ "@remotion/transitions",
11
13
  "@remotion/motion-blur",
12
14
  "@remotion/noise",
13
15
  "@remotion/paths",
@@ -17,10 +19,12 @@ var COMPONENT_IMPORT_ALLOWLIST = Object.freeze([
17
19
  "three/webgpu",
18
20
  "three/tsl",
19
21
  "@react-three/fiber",
20
- "@react-three/drei",
21
22
  "@cueframe/animate",
22
23
  "gsap"
23
24
  ]);
25
+
26
+ // ../execution/component-runtime/src/importPolicy.ts
27
+ import { parse } from "@babel/parser";
24
28
  var ALLOWED_IMPORTS = new Set(COMPONENT_IMPORT_ALLOWLIST);
25
29
  var DENIED_NONDETERMINISTIC_MEMBERS = /* @__PURE__ */ new Set([
26
30
  "Math.random",
@@ -35,6 +39,14 @@ var DENIED_AMBIENT_CALLS = /* @__PURE__ */ new Set([
35
39
  "setTimeout",
36
40
  "setInterval"
37
41
  ]);
42
+ var GUARDED_MEDIA_EXPORTS = /* @__PURE__ */ new Set(["Audio", "Html5Audio", "Html5Video", "OffthreadVideo", "Video"]);
43
+ function importedName(specifier) {
44
+ const imported = specifier.imported;
45
+ if (specifier.type !== "ImportSpecifier" || !imported) return null;
46
+ if (imported.type === "Identifier" && typeof imported.name === "string") return imported.name;
47
+ if (imported.type === "StringLiteral" && typeof imported.value === "string") return imported.value;
48
+ return null;
49
+ }
38
50
  function staticMemberPath(value) {
39
51
  if (!value || typeof value !== "object") return null;
40
52
  const node = value;
@@ -55,8 +67,9 @@ function denied(specifier) {
55
67
  `Component import is not allowed: ${JSON.stringify(specifier)}.`
56
68
  );
57
69
  }
58
- function assertComponentImportsAllowed(tsxSource) {
70
+ function assertComponentImportsAllowed(tsxSource, graphicsApi) {
59
71
  let root;
72
+ let usesMediaTileScene = false;
60
73
  try {
61
74
  root = parse(tsxSource, {
62
75
  sourceType: "module",
@@ -80,6 +93,15 @@ function assertComponentImportsAllowed(tsxSource) {
80
93
  if ((type === "ImportDeclaration" || type === "ExportNamedDeclaration" || type === "ExportAllDeclaration") && node.source && typeof node.source === "object") {
81
94
  const specifier = node.source.value;
82
95
  if (typeof specifier === "string" && !ALLOWED_IMPORTS.has(specifier)) denied(specifier);
96
+ if ((specifier === "remotion" || specifier === "@remotion/media") && type === "ImportDeclaration") {
97
+ const specifiers = Array.isArray(node.specifiers) ? node.specifiers : [];
98
+ const mediaExport = specifiers.map(importedName).find((name) => name !== null && GUARDED_MEDIA_EXPORTS.has(name));
99
+ if (mediaExport) denied(`${specifier}.${mediaExport}; use @cueframe/animate MediaTileScene`);
100
+ }
101
+ if (specifier === "@cueframe/animate" && type === "ImportDeclaration") {
102
+ const specifiers = Array.isArray(node.specifiers) ? node.specifiers : [];
103
+ usesMediaTileScene ||= specifiers.map(importedName).some((name) => name === "MediaTileScene" || name === "ImageTileScene");
104
+ }
83
105
  }
84
106
  if (type === "ImportExpression") denied("dynamic import()");
85
107
  if (type === "CallExpression") {
@@ -89,6 +111,18 @@ function assertComponentImportsAllowed(tsxSource) {
89
111
  if (callee?.type === "Identifier" && typeof callee.name === "string" && DENIED_AMBIENT_CALLS.has(callee.name)) {
90
112
  denied(`ambient ${callee.name}`);
91
113
  }
114
+ const member = normalizedAmbientPath(node.callee);
115
+ const args = Array.isArray(node.arguments) ? node.arguments : [];
116
+ const tag = args[0]?.type === "StringLiteral" ? args[0].value : void 0;
117
+ if (member === "document.createElement" && (tag === "video" || tag === "audio")) {
118
+ denied(`raw ${tag} element; use @cueframe/animate MediaTileScene`);
119
+ }
120
+ }
121
+ if (type === "JSXOpeningElement") {
122
+ const name = node.name;
123
+ if (name?.type === "JSXIdentifier" && (name.name === "video" || name.name === "audio")) {
124
+ denied(`raw <${String(name.name)}> element; use @cueframe/animate MediaTileScene`);
125
+ }
92
126
  }
93
127
  if (type === "NewExpression") {
94
128
  const callee = node.callee;
@@ -124,6 +158,12 @@ function assertComponentImportsAllowed(tsxSource) {
124
158
  }
125
159
  };
126
160
  visit(root);
161
+ if (usesMediaTileScene && graphicsApi !== void 0 && graphicsApi !== "webgl2") {
162
+ throw new ComponentRuntimeError(
163
+ "component_graphics_mismatch",
164
+ "MediaTileScene requires manifest.graphics.api to be webgl2."
165
+ );
166
+ }
127
167
  }
128
168
 
129
169
  export {