@cueframe/kernel 0.2.2 → 0.2.4

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 (335) 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/compose/primitiveRegistry.d.ts +2 -6
  118. package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
  119. package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
  120. package/dist/_members/composition/fonts.d.ts +11 -4
  121. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  122. package/dist/_members/composition/ops/types.d.ts +1 -1
  123. package/dist/_members/composition/primitive-catalog/index.d.ts +4 -0
  124. package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
  125. package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
  126. package/dist/_members/composition/projection/brandKit.d.ts +6 -0
  127. package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
  128. package/dist/_members/composition/scene/animation.d.ts +25 -0
  129. package/dist/_members/composition/scene/budget.d.ts +29 -0
  130. package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
  131. package/dist/_members/composition/scene/clipRules.d.ts +119 -0
  132. package/dist/_members/composition/scene/constraints.d.ts +61 -0
  133. package/dist/_members/composition/scene/device.d.ts +21 -0
  134. package/dist/_members/composition/scene/examples.d.ts +11 -0
  135. package/dist/_members/composition/scene/index.d.ts +11 -0
  136. package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
  137. package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
  138. package/dist/_members/composition/scene/resolution.d.ts +178 -0
  139. package/dist/_members/composition/scene/schema.d.ts +351 -0
  140. package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
  141. package/dist/_members/composition/validators/brandKit.d.ts +1 -0
  142. package/dist/_members/composition/validators/render.d.ts +2 -0
  143. package/dist/_members/composition-ops/index.d.ts +45 -0
  144. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  145. package/dist/_members/core/render/compositionRender.d.ts +41 -9
  146. package/dist/_members/core/render/index.d.ts +9 -2
  147. package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
  148. package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
  149. package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
  150. package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
  151. package/dist/_members/core/render/trackProjection.d.ts +33 -0
  152. package/dist/_members/core/render/types.d.ts +142 -0
  153. package/dist/_members/errors/registry.d.ts +6 -0
  154. package/dist/_members/mcp/adapter.d.ts +5 -0
  155. package/dist/_members/mcp/generated/harness.d.ts +1 -1
  156. package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
  157. package/dist/_members/mcp/sceneShot.d.ts +38 -0
  158. package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
  159. package/dist/_members/media-model/api.d.ts +1 -0
  160. package/dist/_members/media-model/media-kind.d.ts +1 -1
  161. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
  162. package/dist/_members/primitives/effects/index.d.ts +1 -0
  163. package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
  164. package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
  165. package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
  166. package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
  167. package/dist/_members/primitives/layouts/index.d.ts +1 -0
  168. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
  169. package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
  170. package/dist/_members/primitives/lib/index.d.ts +1 -0
  171. package/dist/_members/primitives/lib/palette.d.ts +30 -30
  172. package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
  173. package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
  174. package/dist/_members/primitives/lib/types.d.ts +2 -0
  175. package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
  176. package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
  177. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
  178. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
  179. package/dist/_members/primitives/scenes/index.d.ts +1 -0
  180. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
  181. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
  182. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
  183. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
  184. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
  185. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  186. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  187. package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
  188. package/dist/_members/render-harness/extractSegments.d.ts +1 -0
  189. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  190. package/dist/_members/render-harness/imageHeader.d.ts +14 -0
  191. package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
  192. package/dist/_members/render-harness/index.d.ts +6 -0
  193. package/dist/_members/render-harness/index.d.ts.map +1 -1
  194. package/dist/_members/render-harness/materializeSources.d.ts +46 -2
  195. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  196. package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
  197. package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
  198. package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
  199. package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
  200. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  201. package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
  202. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  203. package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
  204. package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
  205. package/dist/animate/preparation-facts.d.ts +1 -0
  206. package/dist/animate/preparation-facts.js +22 -0
  207. package/dist/animate.js +336 -1005
  208. package/dist/authoring/build-tools.js +7 -6
  209. package/dist/authoring/context.js +5 -4
  210. package/dist/authoring/prompts.js +1 -1
  211. package/dist/authoring/scene.d.ts +1 -0
  212. package/dist/authoring/scene.js +50 -0
  213. package/dist/authoring/tools.js +6 -5
  214. package/dist/authoring.js +49 -29
  215. package/dist/chunk-2L7PYYJK.js +23 -0
  216. package/dist/chunk-5DJ3IEJR.js +4424 -0
  217. package/dist/chunk-6BVVCRRD.js +26488 -0
  218. package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
  219. package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
  220. package/dist/{chunk-C5SEPOWD.js → chunk-7AZLFN26.js} +1798 -702
  221. package/dist/{chunk-6ID2J64H.js → chunk-7W6ZIKWV.js} +162 -25
  222. package/dist/{chunk-RETQFTGY.js → chunk-A74FZCPY.js} +42 -5
  223. package/dist/chunk-BVA3537Z.js +63 -0
  224. package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
  225. package/dist/chunk-DQLYWNLC.js +2063 -0
  226. package/dist/{chunk-HXKTZPRH.js → chunk-E7GIZEPS.js} +1 -1
  227. package/dist/chunk-EBIBLL7E.js +3619 -0
  228. package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
  229. package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
  230. package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
  231. package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
  232. package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
  233. package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
  234. package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
  235. package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
  236. package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
  237. package/dist/chunk-MH3UPKWR.js +3415 -0
  238. package/dist/{chunk-RFXR7ATW.js → chunk-MN6D3U5N.js} +13 -1
  239. package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
  240. package/dist/chunk-QAGGJHAF.js +16 -0
  241. package/dist/chunk-QS36DMFG.js +332 -0
  242. package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
  243. package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
  244. package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
  245. package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
  246. package/dist/chunk-TARKDVP6.js +430 -0
  247. package/dist/{chunk-XVBOSPZI.js → chunk-TBNTAQJA.js} +6 -6
  248. package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
  249. package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
  250. package/dist/{chunk-ZN6P3KOJ.js → chunk-UN6NY2E6.js} +3 -3
  251. package/dist/{chunk-WQSGVRFU.js → chunk-UY77TMKD.js} +31 -44
  252. package/dist/chunk-VKATKWWR.js +1462 -0
  253. package/dist/{chunk-U5LBYS3N.js → chunk-VLJOIUHL.js} +341 -274
  254. package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
  255. package/dist/{chunk-GEGRJKKO.js → chunk-W6B7BMLO.js} +1 -1
  256. package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
  257. package/dist/chunk-WIHXXF3X.js +221 -0
  258. package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
  259. package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
  260. package/dist/{chunk-D43J23QX.js → chunk-YFSBFCXO.js} +1018 -42
  261. package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
  262. package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
  263. package/dist/component-runtime/browserOptions.js +14 -3
  264. package/dist/component-runtime/contracts.js +35 -3
  265. package/dist/component-runtime/identity/browser.js +1 -1
  266. package/dist/component-runtime/identity.js +2 -2
  267. package/dist/component-runtime/importPolicy.js +2 -2
  268. package/dist/component-runtime/mediaResolution.d.ts +1 -0
  269. package/dist/component-runtime/mediaResolution.js +11 -0
  270. package/dist/component-runtime/render.js +38 -5
  271. package/dist/component-runtime.js +118 -14
  272. package/dist/compose.js +192 -33
  273. package/dist/composition/fonts.js +64 -67
  274. package/dist/composition/graphics-plan.js +3 -2
  275. package/dist/composition/ops.js +4 -3
  276. package/dist/composition/primitive-catalog.js +3 -1
  277. package/dist/composition/projection.js +10 -3
  278. package/dist/composition/scene/budget-policy.d.ts +1 -0
  279. package/dist/composition/scene/budget-policy.js +17 -0
  280. package/dist/composition/scene/schema.json +2757 -0
  281. package/dist/composition/scene.d.ts +1 -0
  282. package/dist/composition/scene.js +275 -0
  283. package/dist/composition/validators.js +3 -2
  284. package/dist/composition-ops.js +103 -13
  285. package/dist/composition.js +12 -5
  286. package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
  287. package/dist/core/render.js +54 -3
  288. package/dist/core/select.js +2 -2
  289. package/dist/core.js +6 -3
  290. package/dist/director/ai-sdk.js +3 -3
  291. package/dist/director/domain.js +2 -2
  292. package/dist/director.js +3 -3
  293. package/dist/errors.js +1 -1
  294. package/dist/mcp/adapter.js +4 -4
  295. package/dist/mcp/core.js +1 -1
  296. package/dist/mcp/curation.js +1 -1
  297. package/dist/mcp/server.js +4 -4
  298. package/dist/mcp.js +4 -4
  299. package/dist/media-model/media-kind.js +2 -0
  300. package/dist/media-model/testing.js +16 -11
  301. package/dist/media-model.js +1 -1
  302. package/dist/nle-export.js +1 -27
  303. package/dist/primitives/backgrounds.js +2 -2
  304. package/dist/primitives/captions.js +21 -11
  305. package/dist/primitives/effects.js +14 -4
  306. package/dist/primitives/graphics.json +3 -0
  307. package/dist/primitives/hero-text.js +4 -3
  308. package/dist/primitives/layouts.js +9 -2
  309. package/dist/primitives/lib/frameScale.d.ts +1 -0
  310. package/dist/primitives/lib/frameScale.js +11 -0
  311. package/dist/primitives/lib/index.js +18 -10
  312. package/dist/primitives/lib/palette.js +1 -1
  313. package/dist/primitives/lib/text/contrast.js +2 -1
  314. package/dist/primitives/lib/text/typeface.js +1 -1
  315. package/dist/primitives/lib.js +18 -10
  316. package/dist/primitives/params-required.json +3 -0
  317. package/dist/primitives/scenes.js +12 -3
  318. package/dist/primitives/text.js +5 -5
  319. package/dist/primitives/transitions.js +2 -2
  320. package/dist/primitives/ui-blocks.js +7 -6
  321. package/dist/primitives/version-map.json +5 -2
  322. package/dist/primitives.js +23 -16
  323. package/dist/render-harness/cardAssetAdmission.js +2 -2
  324. package/dist/render-harness/renderInputAssets.js +2 -2
  325. package/dist/render-harness.js +874 -124
  326. package/package.json +48 -14
  327. package/dist/_members/animate/three/drei.d.ts +0 -6
  328. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
  329. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
  330. package/dist/chunk-5OTQ7M43.js +0 -718
  331. package/dist/chunk-7REW2MW3.js +0 -202
  332. package/dist/chunk-CGHTMZNC.js +0 -6
  333. package/dist/chunk-KVMVYRXX.js +0 -9527
  334. package/dist/chunk-WYQX4QIK.js +0 -544
  335. /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
@@ -1,16 +1,19 @@
1
+ import {
2
+ DashboardPopulate
3
+ } from "./chunk-S5H6GH6M.js";
4
+ import {
5
+ useFrameScale
6
+ } from "./chunk-QAGGJHAF.js";
1
7
  import {
2
8
  resolveTypeface
3
- } from "./chunk-BDMTUEEZ.js";
9
+ } from "./chunk-LT4PWSR2.js";
4
10
  import {
5
11
  FLOOR_SHADOW
6
- } from "./chunk-EMGFZ3PR.js";
12
+ } from "./chunk-FWSJLHSV.js";
7
13
  import {
8
14
  FitText,
9
15
  resolveFitFontSize
10
16
  } from "./chunk-XHGZ2E77.js";
11
- import {
12
- DashboardPopulate
13
- } from "./chunk-ZSZABOE5.js";
14
17
  import {
15
18
  ACCENT,
16
19
  ACCENT_DEEP,
@@ -40,7 +43,7 @@ import {
40
43
  TEXT_MUTED,
41
44
  VIOLET,
42
45
  WARNING
43
- } from "./chunk-CX2IIQ4R.js";
46
+ } from "./chunk-W2245F6G.js";
44
47
 
45
48
  // ../execution/primitives/src/ui-blocks/glass-code-block/index.tsx
46
49
  import { Sequence, interpolate, useCurrentFrame } from "remotion";
@@ -117,7 +120,9 @@ function GlassCodeBlock({
117
120
  speed = 1,
118
121
  className
119
122
  }) {
123
+ const s = useFrameScale();
120
124
  const lines = code.split("\n");
125
+ const scaledFontSize = fontSize * s;
121
126
  return /* @__PURE__ */ React.createElement(
122
127
  "div",
123
128
  {
@@ -137,11 +142,11 @@ function GlassCodeBlock({
137
142
  {
138
143
  style: {
139
144
  position: "relative",
140
- padding: 1,
141
- borderRadius: 16,
145
+ padding: 1 * s,
146
+ borderRadius: 16 * s,
142
147
  background: "linear-gradient(180deg, rgba(255,255,255,0.18) 0%, rgba(255,255,255,0) 100%)",
143
- width,
144
- height
148
+ width: width * s,
149
+ height: height * s
145
150
  }
146
151
  },
147
152
  /* @__PURE__ */ React.createElement(
@@ -150,10 +155,10 @@ function GlassCodeBlock({
150
155
  style: {
151
156
  width: "100%",
152
157
  height: "100%",
153
- borderRadius: 15,
158
+ borderRadius: 15 * s,
154
159
  background: glassColor,
155
- backdropFilter: "blur(16px)",
156
- WebkitBackdropFilter: "blur(16px)",
160
+ backdropFilter: `blur(${16 * s}px)`,
161
+ WebkitBackdropFilter: `blur(${16 * s}px)`,
157
162
  display: "flex",
158
163
  flexDirection: "column",
159
164
  overflow: "hidden",
@@ -164,15 +169,15 @@ function GlassCodeBlock({
164
169
  "div",
165
170
  {
166
171
  style: {
167
- height: 40,
172
+ height: 40 * s,
168
173
  display: "flex",
169
174
  alignItems: "center",
170
- gap: 8,
171
- padding: "0 16px",
175
+ gap: 8 * s,
176
+ padding: `0 ${16 * s}px`,
172
177
  borderBottom: "1px solid rgba(255,255,255,0.06)"
173
178
  }
174
179
  },
175
- showTrafficLights && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Light, { color: MAC_RED }), /* @__PURE__ */ React.createElement(Light, { color: MAC_YELLOW }), /* @__PURE__ */ React.createElement(Light, { color: MAC_GREEN })),
180
+ showTrafficLights && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Light, { color: MAC_RED, size: 12 * s }), /* @__PURE__ */ React.createElement(Light, { color: MAC_YELLOW, size: 12 * s }), /* @__PURE__ */ React.createElement(Light, { color: MAC_GREEN, size: 12 * s })),
176
181
  /* @__PURE__ */ React.createElement(
177
182
  "div",
178
183
  {
@@ -180,7 +185,7 @@ function GlassCodeBlock({
180
185
  flex: 1,
181
186
  textAlign: "center",
182
187
  color: TEXT_MUTED,
183
- fontSize: 12,
188
+ fontSize: 12 * s,
184
189
  letterSpacing: "0.02em"
185
190
  }
186
191
  },
@@ -192,11 +197,11 @@ function GlassCodeBlock({
192
197
  {
193
198
  style: {
194
199
  flex: 1,
195
- padding: "20px 24px",
200
+ padding: `${20 * s}px ${24 * s}px`,
196
201
  display: "flex",
197
202
  flexDirection: "column",
198
- gap: 4,
199
- fontSize,
203
+ gap: 4 * s,
204
+ fontSize: scaledFontSize,
200
205
  lineHeight: 1.55
201
206
  }
202
207
  },
@@ -207,20 +212,28 @@ function GlassCodeBlock({
207
212
  from: Math.round(i * staggerFrames / speed),
208
213
  layout: "none"
209
214
  },
210
- /* @__PURE__ */ React.createElement(CodeLine, { line, index: i, fontSize })
215
+ /* @__PURE__ */ React.createElement(
216
+ CodeLine,
217
+ {
218
+ line,
219
+ index: i,
220
+ fontSize: scaledFontSize,
221
+ gutterWidth: 28 * s
222
+ }
223
+ )
211
224
  ))
212
225
  )
213
226
  )
214
227
  )
215
228
  );
216
229
  }
217
- function Light({ color }) {
230
+ function Light({ color, size }) {
218
231
  return /* @__PURE__ */ React.createElement(
219
232
  "div",
220
233
  {
221
234
  style: {
222
- width: 12,
223
- height: 12,
235
+ width: size,
236
+ height: size,
224
237
  borderRadius: "50%",
225
238
  background: color,
226
239
  opacity: 0.6
@@ -231,7 +244,8 @@ function Light({ color }) {
231
244
  function CodeLine({
232
245
  line,
233
246
  index,
234
- fontSize
247
+ fontSize,
248
+ gutterWidth
235
249
  }) {
236
250
  const frame = useCurrentFrame();
237
251
  const opacity = interpolate(frame, [0, 8], [0, 1], {
@@ -257,7 +271,17 @@ function CodeLine({
257
271
  gap: 0
258
272
  }
259
273
  },
260
- /* @__PURE__ */ React.createElement("span", { style: { width: 28, color: TEXT_FAINT, userSelect: "none" } }, String(index + 1).padStart(2, " ")),
274
+ /* @__PURE__ */ React.createElement(
275
+ "span",
276
+ {
277
+ style: {
278
+ width: gutterWidth,
279
+ color: TEXT_FAINT,
280
+ userSelect: "none"
281
+ }
282
+ },
283
+ String(index + 1).padStart(2, " ")
284
+ ),
261
285
  /* @__PURE__ */ React.createElement("span", null, tokens.map((t, i) => /* @__PURE__ */ React.createElement("span", { key: i, style: { color: TOKEN_COLORS[t.kind] } }, t.text)))
262
286
  );
263
287
  }
@@ -321,10 +345,12 @@ function TerminalSimulator({
321
345
  }) {
322
346
  const frame = useCurrentFrame2() * speed;
323
347
  const { fps } = useVideoConfig();
324
- const lineHeight = Math.round(fontSize * 1.6);
348
+ const s = useFrameScale();
349
+ const scaledFontSize = fontSize * s;
350
+ const lineHeight = Math.round(scaledFontSize * 1.6);
325
351
  const visibleLines = 8;
326
- const windowWidth = 900;
327
- const windowHeight = 480;
352
+ const windowWidth = 900 * s;
353
+ const windowHeight = 480 * s;
328
354
  const starts = [];
329
355
  let acc = 10;
330
356
  for (let i = 0; i < lines.length; i++) {
@@ -362,7 +388,7 @@ function TerminalSimulator({
362
388
  width: windowWidth,
363
389
  height: windowHeight,
364
390
  background,
365
- borderRadius: 12,
391
+ borderRadius: 12 * s,
366
392
  overflow: "hidden",
367
393
  border: `1px solid ${BORDER}`,
368
394
  display: "flex",
@@ -374,18 +400,18 @@ function TerminalSimulator({
374
400
  "div",
375
401
  {
376
402
  style: {
377
- height: 40,
403
+ height: 40 * s,
378
404
  background: chromeColor,
379
405
  display: "flex",
380
406
  alignItems: "center",
381
- padding: "0 16px",
382
- gap: 8,
407
+ padding: `0 ${16 * s}px`,
408
+ gap: 8 * s,
383
409
  borderBottom: `1px solid ${BORDER_SOFT}`
384
410
  }
385
411
  },
386
- /* @__PURE__ */ React.createElement(Light2, { color: MAC_RED }),
387
- /* @__PURE__ */ React.createElement(Light2, { color: MAC_YELLOW }),
388
- /* @__PURE__ */ React.createElement(Light2, { color: MAC_GREEN }),
412
+ /* @__PURE__ */ React.createElement(Light2, { color: MAC_RED, size: 12 * s }),
413
+ /* @__PURE__ */ React.createElement(Light2, { color: MAC_YELLOW, size: 12 * s }),
414
+ /* @__PURE__ */ React.createElement(Light2, { color: MAC_GREEN, size: 12 * s }),
389
415
  /* @__PURE__ */ React.createElement(
390
416
  "div",
391
417
  {
@@ -393,7 +419,7 @@ function TerminalSimulator({
393
419
  flex: 1,
394
420
  textAlign: "center",
395
421
  color: TEXT_MUTED,
396
- fontSize: 13
422
+ fontSize: 13 * s
397
423
  }
398
424
  },
399
425
  title
@@ -404,7 +430,7 @@ function TerminalSimulator({
404
430
  {
405
431
  style: {
406
432
  flex: 1,
407
- padding: 20,
433
+ padding: 20 * s,
408
434
  overflow: "hidden",
409
435
  position: "relative"
410
436
  }
@@ -414,9 +440,9 @@ function TerminalSimulator({
414
440
  {
415
441
  style: {
416
442
  position: "absolute",
417
- left: 20,
418
- right: 20,
419
- top: 20,
443
+ left: 20 * s,
444
+ right: 20 * s,
445
+ top: 20 * s,
420
446
  transform: `translateY(${translateY}px)`
421
447
  }
422
448
  },
@@ -432,8 +458,9 @@ function TerminalSimulator({
432
458
  {
433
459
  line,
434
460
  prompt,
435
- fontSize,
461
+ fontSize: scaledFontSize,
436
462
  lineHeight,
463
+ scale: s,
437
464
  charsPerFrame,
438
465
  chunkSize,
439
466
  fps,
@@ -446,13 +473,13 @@ function TerminalSimulator({
446
473
  )
447
474
  );
448
475
  }
449
- function Light2({ color }) {
476
+ function Light2({ color, size }) {
450
477
  return /* @__PURE__ */ React.createElement(
451
478
  "div",
452
479
  {
453
480
  style: {
454
- width: 12,
455
- height: 12,
481
+ width: size,
482
+ height: size,
456
483
  borderRadius: "50%",
457
484
  background: color,
458
485
  opacity: 0.85
@@ -468,7 +495,8 @@ function TerminalLineRow({
468
495
  charsPerFrame,
469
496
  chunkSize,
470
497
  fps,
471
- speed
498
+ speed,
499
+ scale
472
500
  }) {
473
501
  const localFrame = useCurrentFrame2() * speed;
474
502
  const totalChars = line.text.length;
@@ -497,7 +525,7 @@ function TerminalLineRow({
497
525
  whiteSpace: "pre"
498
526
  }
499
527
  },
500
- line.type === "command" && /* @__PURE__ */ React.createElement("span", { style: { color: SUCCESS, marginRight: 8 } }, prompt),
528
+ line.type === "command" && /* @__PURE__ */ React.createElement("span", { style: { color: SUCCESS, marginRight: 8 * scale } }, prompt),
501
529
  /* @__PURE__ */ React.createElement("span", null, visible),
502
530
  !typingDone && cursorVisible && /* @__PURE__ */ React.createElement(
503
531
  "span",
@@ -507,7 +535,7 @@ function TerminalLineRow({
507
535
  width: fontSize * 0.55,
508
536
  height: fontSize,
509
537
  background: TYPE_COLORS[line.type],
510
- marginLeft: 2
538
+ marginLeft: 2 * scale
511
539
  }
512
540
  }
513
541
  )
@@ -1162,31 +1190,37 @@ function BrowserFlow({
1162
1190
  }
1163
1191
 
1164
1192
  // ../execution/primitives/src/ui-blocks/device-mockup-zoom/index.tsx
1165
- import { Easing, interpolate as interpolate5, useCurrentFrame as useCurrentFrame5, useVideoConfig as useVideoConfig4 } from "remotion";
1166
- var FONT_FAMILY2 = "inherit";
1167
- function DefaultScreen() {
1193
+ import { Easing, Img, interpolate as interpolate5, useCurrentFrame as useCurrentFrame5, useVideoConfig as useVideoConfig4 } from "remotion";
1194
+ function DefaultScreen({ src }) {
1195
+ if (src) {
1196
+ return /* @__PURE__ */ React.createElement(
1197
+ Img,
1198
+ {
1199
+ src,
1200
+ style: {
1201
+ position: "absolute",
1202
+ inset: 0,
1203
+ width: "100%",
1204
+ height: "100%",
1205
+ objectFit: "cover"
1206
+ }
1207
+ }
1208
+ );
1209
+ }
1168
1210
  return /* @__PURE__ */ React.createElement(
1169
1211
  "div",
1170
1212
  {
1171
1213
  style: {
1172
1214
  position: "absolute",
1173
1215
  inset: 0,
1174
- background: `linear-gradient(135deg, ${ACCENT} 0%, ${VIOLET} 100%)`,
1175
- display: "flex",
1176
- alignItems: "center",
1177
- justifyContent: "center",
1178
- color: TEXT_HI,
1179
- fontFamily: FONT_FAMILY2,
1180
- fontSize: 32,
1181
- fontWeight: 700,
1182
- letterSpacing: "-0.03em"
1216
+ background: `linear-gradient(135deg, ${SURFACE_HI} 0%, ${BG} 100%)`
1183
1217
  }
1184
- },
1185
- "Your UI"
1218
+ }
1186
1219
  );
1187
1220
  }
1188
1221
  function DeviceMockupZoom({
1189
1222
  children,
1223
+ screenSrc,
1190
1224
  device = "laptop",
1191
1225
  frameColor = SURFACE,
1192
1226
  screenColor = BG,
@@ -1196,11 +1230,12 @@ function DeviceMockupZoom({
1196
1230
  }) {
1197
1231
  const frame = useCurrentFrame5() * speed;
1198
1232
  const { durationInFrames } = useVideoConfig4();
1233
+ const s = useFrameScale();
1199
1234
  const scale = interpolate5(frame, [0, durationInFrames], [2, 1], {
1200
1235
  extrapolateRight: "clamp",
1201
1236
  easing: Easing.bezier(0.22, 1, 0.36, 1)
1202
1237
  });
1203
- const screen = children ?? /* @__PURE__ */ React.createElement(DefaultScreen, null);
1238
+ const screen = children ?? /* @__PURE__ */ React.createElement(DefaultScreen, { src: screenSrc });
1204
1239
  return /* @__PURE__ */ React.createElement(
1205
1240
  "div",
1206
1241
  {
@@ -1219,7 +1254,7 @@ function DeviceMockupZoom({
1219
1254
  "div",
1220
1255
  {
1221
1256
  style: {
1222
- transform: `scale(${scale})`,
1257
+ transform: `scale(${scale * s})`,
1223
1258
  transformOrigin: "center center",
1224
1259
  willChange: "transform"
1225
1260
  }
@@ -1490,7 +1525,7 @@ function SimulatedCursor({
1490
1525
 
1491
1526
  // ../execution/primitives/src/ui-blocks/cursor-flow/index.tsx
1492
1527
  import { interpolate as interpolate7, spring as spring4, useCurrentFrame as useCurrentFrame7, useVideoConfig as useVideoConfig6 } from "remotion";
1493
- var FONT_FAMILY3 = "inherit";
1528
+ var FONT_FAMILY2 = "inherit";
1494
1529
  var LABEL_TEXT_WIDTH = 200;
1495
1530
  var DEFAULT_WAYPOINTS = [
1496
1531
  { x: 200, y: 180 },
@@ -1574,7 +1609,7 @@ function CursorFlow({
1574
1609
  position: "absolute",
1575
1610
  inset: 0,
1576
1611
  background,
1577
- fontFamily: FONT_FAMILY3
1612
+ fontFamily: FONT_FAMILY2
1578
1613
  }
1579
1614
  },
1580
1615
  showTargets && waypoints.map((wp, i) => {
@@ -1717,7 +1752,7 @@ function ClickTarget({
1717
1752
  maxFontSize: 14,
1718
1753
  maxWidth: LABEL_TEXT_WIDTH,
1719
1754
  maxLines: 1,
1720
- fontFamily: FONT_FAMILY3,
1755
+ fontFamily: FONT_FAMILY2,
1721
1756
  fontWeight: 600
1722
1757
  },
1723
1758
  label ?? "Click"
@@ -1727,7 +1762,7 @@ function ClickTarget({
1727
1762
 
1728
1763
  // ../execution/primitives/src/ui-blocks/morphing-modal/index.tsx
1729
1764
  import { interpolate as interpolate8, spring as spring5, useCurrentFrame as useCurrentFrame8, useVideoConfig as useVideoConfig7 } from "remotion";
1730
- var FONT_FAMILY4 = "inherit";
1765
+ var FONT_FAMILY3 = "inherit";
1731
1766
  var VIEWPORT_W = 1280;
1732
1767
  var VIEWPORT_H = 720;
1733
1768
  var DEFAULT_FROM = {
@@ -1794,7 +1829,7 @@ function MorphingModal({
1794
1829
  position: "absolute",
1795
1830
  inset: 0,
1796
1831
  background,
1797
- fontFamily: FONT_FAMILY4,
1832
+ fontFamily: FONT_FAMILY3,
1798
1833
  overflow: "hidden"
1799
1834
  }
1800
1835
  },
@@ -1845,7 +1880,7 @@ function MorphingModal({
1845
1880
  maxFontSize: 20,
1846
1881
  maxWidth: 304,
1847
1882
  maxLines: 2,
1848
- fontFamily: FONT_FAMILY4,
1883
+ fontFamily: FONT_FAMILY3,
1849
1884
  fontWeight: 700,
1850
1885
  letterSpacing: "-0.01em",
1851
1886
  style: { color: textColor }
@@ -1857,7 +1892,7 @@ function MorphingModal({
1857
1892
  maxFontSize: 14,
1858
1893
  maxWidth: 304,
1859
1894
  maxLines: 4,
1860
- fontFamily: FONT_FAMILY4,
1895
+ fontFamily: FONT_FAMILY3,
1861
1896
  style: { color: mutedColor }
1862
1897
  },
1863
1898
  sourceBody
@@ -1883,7 +1918,7 @@ function MorphingModal({
1883
1918
  maxFontSize: 56,
1884
1919
  maxWidth: 720,
1885
1920
  maxLines: 2,
1886
- fontFamily: FONT_FAMILY4,
1921
+ fontFamily: FONT_FAMILY3,
1887
1922
  fontWeight: 700,
1888
1923
  letterSpacing: "-0.03em",
1889
1924
  style: { color: textColor, lineHeight: 1.05 }
@@ -1895,7 +1930,7 @@ function MorphingModal({
1895
1930
  maxFontSize: 20,
1896
1931
  maxWidth: 720,
1897
1932
  maxLines: 6,
1898
- fontFamily: FONT_FAMILY4,
1933
+ fontFamily: FONT_FAMILY3,
1899
1934
  style: { lineHeight: 1.55, color: mutedColor }
1900
1935
  },
1901
1936
  modalBody
@@ -3442,7 +3477,7 @@ var BeforeAfterSlider = ({
3442
3477
 
3443
3478
  // ../execution/primitives/src/ui-blocks/bounding-box-selector/index.tsx
3444
3479
  import { spring as spring15, useCurrentFrame as useCurrentFrame20, useVideoConfig as useVideoConfig19 } from "remotion";
3445
- var FONT_FAMILY5 = "inherit";
3480
+ var FONT_FAMILY4 = "inherit";
3446
3481
  function DefaultPlaceholder() {
3447
3482
  return /* @__PURE__ */ React.createElement(
3448
3483
  "div",
@@ -3457,7 +3492,7 @@ function DefaultPlaceholder() {
3457
3492
  alignItems: "center",
3458
3493
  justifyContent: "center",
3459
3494
  color: TEXT_MUTED,
3460
- fontFamily: FONT_FAMILY5,
3495
+ fontFamily: FONT_FAMILY4,
3461
3496
  fontSize: 24,
3462
3497
  fontWeight: 600,
3463
3498
  letterSpacing: "-0.02em"
@@ -3577,7 +3612,7 @@ import {
3577
3612
  useCurrentFrame as useCurrentFrame21,
3578
3613
  useVideoConfig as useVideoConfig20
3579
3614
  } from "remotion";
3580
- var FONT_FAMILY6 = "inherit";
3615
+ var FONT_FAMILY5 = "inherit";
3581
3616
  var ICON_GLYPHS = ["B", "S", "C", "P", "E", "T", "M", "L"];
3582
3617
  var PANEL_SLIDE_DURATION = 22;
3583
3618
  function ToolMenuSlideIn({
@@ -3620,7 +3655,7 @@ function ToolMenuSlideIn({
3620
3655
  inset: 0,
3621
3656
  overflow: "hidden",
3622
3657
  background,
3623
- fontFamily: FONT_FAMILY6,
3658
+ fontFamily: FONT_FAMILY5,
3624
3659
  backgroundImage: "radial-gradient(rgba(255,255,255,0.045) 1px, transparent 1px)",
3625
3660
  backgroundSize: "22px 22px"
3626
3661
  }
@@ -3850,8 +3885,13 @@ function CodeAccordion({
3850
3885
  }) {
3851
3886
  const frame = useCurrentFrame22() * speed;
3852
3887
  const { fps } = useVideoConfig21();
3853
- const lineHeight = Math.round(fontSize * 1.55);
3854
- const titleMaxWidth = Math.max(80, width - 96);
3888
+ const s = useFrameScale();
3889
+ const scaledFontSize = fontSize * s;
3890
+ const scaledWidth = width * s;
3891
+ const gutterWidth = 56 * s;
3892
+ const gutterPadding = 16 * s;
3893
+ const lineHeight = Math.round(scaledFontSize * 1.55);
3894
+ const titleMaxWidth = Math.max(80 * s, scaledWidth - 96 * s);
3855
3895
  const [start, end] = collapseRange;
3856
3896
  const collapsedCount = Math.max(0, end - start + 1);
3857
3897
  const collapseProgress = spring17({
@@ -3894,9 +3934,9 @@ function CodeAccordion({
3894
3934
  "div",
3895
3935
  {
3896
3936
  style: {
3897
- width,
3937
+ width: scaledWidth,
3898
3938
  background: cardColor,
3899
- borderRadius: 14,
3939
+ borderRadius: 14 * s,
3900
3940
  overflow: "hidden",
3901
3941
  border: "1px solid rgba(255,255,255,0.06)"
3902
3942
  }
@@ -3905,17 +3945,17 @@ function CodeAccordion({
3905
3945
  "div",
3906
3946
  {
3907
3947
  style: {
3908
- height: 38,
3948
+ height: 38 * s,
3909
3949
  display: "flex",
3910
3950
  alignItems: "center",
3911
- gap: 8,
3912
- padding: "0 14px",
3951
+ gap: 8 * s,
3952
+ padding: `0 ${14 * s}px`,
3913
3953
  borderBottom: "1px solid rgba(255,255,255,0.05)"
3914
3954
  }
3915
3955
  },
3916
- /* @__PURE__ */ React.createElement(Light3, { color: MAC_RED }),
3917
- /* @__PURE__ */ React.createElement(Light3, { color: MAC_YELLOW }),
3918
- /* @__PURE__ */ React.createElement(Light3, { color: MAC_GREEN }),
3956
+ /* @__PURE__ */ React.createElement(Light3, { color: MAC_RED, size: 11 * s }),
3957
+ /* @__PURE__ */ React.createElement(Light3, { color: MAC_YELLOW, size: 11 * s }),
3958
+ /* @__PURE__ */ React.createElement(Light3, { color: MAC_GREEN, size: 11 * s }),
3919
3959
  /* @__PURE__ */ React.createElement(
3920
3960
  "div",
3921
3961
  {
@@ -3929,7 +3969,7 @@ function CodeAccordion({
3929
3969
  /* @__PURE__ */ React.createElement(
3930
3970
  FitText,
3931
3971
  {
3932
- maxFontSize: 12,
3972
+ maxFontSize: 12 * s,
3933
3973
  maxWidth: titleMaxWidth,
3934
3974
  maxLines: 1,
3935
3975
  fontFamily: FONT_MONO2,
@@ -3939,79 +3979,101 @@ function CodeAccordion({
3939
3979
  )
3940
3980
  )
3941
3981
  ),
3942
- /* @__PURE__ */ React.createElement("div", { style: { padding: "16px 0", fontSize, lineHeight: 1.55 } }, before.map((line, i) => /* @__PURE__ */ React.createElement(
3943
- Line,
3944
- {
3945
- key: `b-${i}`,
3946
- line,
3947
- index: i,
3948
- lineHeight,
3949
- textColor,
3950
- mutedColor
3951
- }
3952
- )), /* @__PURE__ */ React.createElement(
3982
+ /* @__PURE__ */ React.createElement(
3953
3983
  "div",
3954
3984
  {
3955
3985
  style: {
3956
- position: "relative",
3957
- height: collapsedHeight,
3958
- overflow: "hidden",
3959
- transition: "none"
3986
+ padding: `${16 * s}px 0`,
3987
+ fontSize: scaledFontSize,
3988
+ lineHeight: 1.55
3960
3989
  }
3961
3990
  },
3962
- /* @__PURE__ */ React.createElement("div", { style: { opacity: collapsedOpacity } }, collapsed.map((line, i) => /* @__PURE__ */ React.createElement(
3991
+ before.map((line, i) => /* @__PURE__ */ React.createElement(
3963
3992
  Line,
3964
3993
  {
3965
- key: `c-${i}`,
3994
+ key: `b-${i}`,
3966
3995
  line,
3967
- index: start + i,
3996
+ index: i,
3968
3997
  lineHeight,
3998
+ gutterWidth,
3999
+ gutterPadding,
3969
4000
  textColor,
3970
4001
  mutedColor
3971
4002
  }
3972
- ))),
4003
+ )),
3973
4004
  /* @__PURE__ */ React.createElement(
3974
4005
  "div",
3975
4006
  {
3976
4007
  style: {
3977
- position: "absolute",
3978
- left: 0,
3979
- right: 0,
3980
- bottom: 0,
3981
- height: lineHeight,
3982
- display: "flex",
3983
- alignItems: "center",
3984
- paddingLeft: 56,
3985
- color: mutedColor,
3986
- fontStyle: "italic",
3987
- opacity: placeholderOpacity
4008
+ position: "relative",
4009
+ height: collapsedHeight,
4010
+ overflow: "hidden",
4011
+ transition: "none"
3988
4012
  }
3989
4013
  },
3990
- "\u22EF ",
3991
- collapsedCount,
3992
- " lines collapsed"
3993
- )
3994
- ), after.map((line, i) => /* @__PURE__ */ React.createElement(
3995
- Line,
3996
- {
3997
- key: `a-${i}`,
3998
- line,
3999
- index: end + 1 + i,
4000
- lineHeight,
4001
- textColor,
4002
- mutedColor
4003
- }
4004
- )))
4014
+ /* @__PURE__ */ React.createElement("div", { style: { opacity: collapsedOpacity } }, collapsed.map((line, i) => /* @__PURE__ */ React.createElement(
4015
+ Line,
4016
+ {
4017
+ key: `c-${i}`,
4018
+ line,
4019
+ index: start + i,
4020
+ lineHeight,
4021
+ gutterWidth,
4022
+ gutterPadding,
4023
+ textColor,
4024
+ mutedColor
4025
+ }
4026
+ ))),
4027
+ /* @__PURE__ */ React.createElement(
4028
+ "div",
4029
+ {
4030
+ style: {
4031
+ position: "absolute",
4032
+ left: 0,
4033
+ right: 0,
4034
+ bottom: 0,
4035
+ height: lineHeight,
4036
+ display: "flex",
4037
+ alignItems: "center",
4038
+ paddingLeft: gutterWidth,
4039
+ color: mutedColor,
4040
+ // No italic here. This row inherits FONT_MONO (Space Mono), which ships one
4041
+ // upright file per weight and no italic binary, so `fontStyle: "italic"` asked the
4042
+ // browser to slant the upright face — a synthesised oblique, not the typeface, and
4043
+ // not reproducible across engines. The row is already set apart by the muted
4044
+ // colour and the reduced opacity.
4045
+ opacity: placeholderOpacity
4046
+ }
4047
+ },
4048
+ "\u22EF ",
4049
+ collapsedCount,
4050
+ " lines collapsed"
4051
+ )
4052
+ ),
4053
+ after.map((line, i) => /* @__PURE__ */ React.createElement(
4054
+ Line,
4055
+ {
4056
+ key: `a-${i}`,
4057
+ line,
4058
+ index: end + 1 + i,
4059
+ lineHeight,
4060
+ gutterWidth,
4061
+ gutterPadding,
4062
+ textColor,
4063
+ mutedColor
4064
+ }
4065
+ ))
4066
+ )
4005
4067
  )
4006
4068
  );
4007
4069
  }
4008
- function Light3({ color }) {
4070
+ function Light3({ color, size }) {
4009
4071
  return /* @__PURE__ */ React.createElement(
4010
4072
  "div",
4011
4073
  {
4012
4074
  style: {
4013
- width: 11,
4014
- height: 11,
4075
+ width: size,
4076
+ height: size,
4015
4077
  borderRadius: "50%",
4016
4078
  background: color,
4017
4079
  opacity: 0.6
@@ -4023,6 +4085,8 @@ function Line({
4023
4085
  line,
4024
4086
  index,
4025
4087
  lineHeight,
4088
+ gutterWidth,
4089
+ gutterPadding,
4026
4090
  textColor,
4027
4091
  mutedColor
4028
4092
  }) {
@@ -4041,9 +4105,9 @@ function Line({
4041
4105
  "span",
4042
4106
  {
4043
4107
  style: {
4044
- width: 56,
4108
+ width: gutterWidth,
4045
4109
  textAlign: "right",
4046
- paddingRight: 16,
4110
+ paddingRight: gutterPadding,
4047
4111
  color: mutedColor,
4048
4112
  userSelect: "none"
4049
4113
  }
@@ -4056,7 +4120,7 @@ function Line({
4056
4120
 
4057
4121
  // ../execution/primitives/src/ui-blocks/ai-generation-canvas/index.tsx
4058
4122
  import { interpolate as interpolate21, spring as spring18, useCurrentFrame as useCurrentFrame23, useVideoConfig as useVideoConfig22 } from "remotion";
4059
- var FONT_FAMILY7 = "inherit";
4123
+ var FONT_FAMILY6 = "inherit";
4060
4124
  function MiniBarChart({ accentColor }) {
4061
4125
  const bars = [0.4, 0.7, 0.55, 0.85, 0.5, 0.95, 0.65];
4062
4126
  return /* @__PURE__ */ React.createElement(
@@ -4122,7 +4186,7 @@ function StatBlock({
4122
4186
  fontWeight: 700,
4123
4187
  color: TEXT_HI,
4124
4188
  letterSpacing: "-0.03em",
4125
- fontFamily: FONT_FAMILY7
4189
+ fontFamily: FONT_FAMILY6
4126
4190
  }
4127
4191
  },
4128
4192
  value
@@ -4160,7 +4224,7 @@ function CardContent({
4160
4224
  fontSize: 12,
4161
4225
  color: "rgba(255,255,255,0.55)",
4162
4226
  fontWeight: 500,
4163
- fontFamily: FONT_FAMILY7,
4227
+ fontFamily: FONT_FAMILY6,
4164
4228
  letterSpacing: "0.02em",
4165
4229
  textTransform: "uppercase"
4166
4230
  }
@@ -4238,7 +4302,7 @@ function AIGenerationCanvas({
4238
4302
  inset: 0,
4239
4303
  background: BG,
4240
4304
  overflow: "hidden",
4241
- fontFamily: FONT_FAMILY7
4305
+ fontFamily: FONT_FAMILY6
4242
4306
  }
4243
4307
  },
4244
4308
  /* @__PURE__ */ React.createElement(
@@ -4427,7 +4491,7 @@ function AIGenerationCanvas({
4427
4491
  maxFontSize: inputFontSize,
4428
4492
  maxWidth: Math.max(1, inputW - 72),
4429
4493
  maxLines: 3,
4430
- fontFamily: FONT_FAMILY7,
4494
+ fontFamily: FONT_FAMILY6,
4431
4495
  fontWeight: 500,
4432
4496
  letterSpacing: "-0.01em",
4433
4497
  style: { color: TEXT_HI }
@@ -4489,7 +4553,7 @@ function AIGenerationCanvas({
4489
4553
 
4490
4554
  // ../execution/primitives/src/ui-blocks/ai-generate-overlay/index.tsx
4491
4555
  import { interpolate as interpolate22, spring as spring19, useCurrentFrame as useCurrentFrame24, useVideoConfig as useVideoConfig23 } from "remotion";
4492
- var FONT_FAMILY8 = "inherit";
4556
+ var FONT_FAMILY7 = "inherit";
4493
4557
  var PILL_TEXT_WIDTH = 360;
4494
4558
  var DEFAULT_SOURCE_BG = `linear-gradient(135deg, ${BG_DEEP} 0%, ${BLUE} 50%, ${SURFACE} 100%)`;
4495
4559
  var DEFAULT_GENERATED_BG = `radial-gradient(ellipse at center, ${ACCENT_SOFT} 0%, ${ACCENT_DEEP} 22%, ${BG_DEEP} 42%), linear-gradient(180deg, ${BG} 0%, ${BG_DEEP} 50%, ${BG} 100%)`;
@@ -4557,7 +4621,7 @@ function AIGenerateOverlay({
4557
4621
  position: "absolute",
4558
4622
  inset: 0,
4559
4623
  background,
4560
- fontFamily: FONT_FAMILY8,
4624
+ fontFamily: FONT_FAMILY7,
4561
4625
  overflow: "hidden"
4562
4626
  }
4563
4627
  },
@@ -4675,7 +4739,7 @@ function AIGenerateOverlay({
4675
4739
  {
4676
4740
  maxFontSize: 18,
4677
4741
  maxWidth: PILL_TEXT_WIDTH,
4678
- fontFamily: FONT_FAMILY8,
4742
+ fontFamily: FONT_FAMILY7,
4679
4743
  fontWeight: 500,
4680
4744
  letterSpacing: "-0.01em"
4681
4745
  },
@@ -4939,7 +5003,7 @@ function DragAndDropFlow({
4939
5003
 
4940
5004
  // ../execution/primitives/src/ui-blocks/data-flow-pipes/index.tsx
4941
5005
  import { interpolate as interpolate24, useCurrentFrame as useCurrentFrame26 } from "remotion";
4942
- var FONT_FAMILY9 = "inherit";
5006
+ var FONT_FAMILY8 = "inherit";
4943
5007
  var NODE_LABEL_WIDTH = 104;
4944
5008
  var DEFAULT_NODES = [
4945
5009
  { id: "client", x: 140, y: 360, label: "Client" },
@@ -5008,7 +5072,7 @@ function DataFlowPipes({
5008
5072
  position: "absolute",
5009
5073
  inset: 0,
5010
5074
  background,
5011
- fontFamily: FONT_FAMILY9
5075
+ fontFamily: FONT_FAMILY8
5012
5076
  }
5013
5077
  },
5014
5078
  /* @__PURE__ */ React.createElement(
@@ -5113,7 +5177,7 @@ function DataFlowPipes({
5113
5177
  maxFontSize: 14,
5114
5178
  maxWidth: NODE_LABEL_WIDTH,
5115
5179
  maxLines: 1,
5116
- fontFamily: FONT_FAMILY9,
5180
+ fontFamily: FONT_FAMILY8,
5117
5181
  fontWeight: 600,
5118
5182
  letterSpacing: "-0.01em"
5119
5183
  },
@@ -5125,7 +5189,7 @@ function DataFlowPipes({
5125
5189
 
5126
5190
  // ../execution/primitives/src/ui-blocks/pipeline-journey/index.tsx
5127
5191
  import { interpolate as interpolate25, spring as spring20, useCurrentFrame as useCurrentFrame27, useVideoConfig as useVideoConfig25 } from "remotion";
5128
- var FONT_FAMILY10 = "inherit";
5192
+ var FONT_FAMILY9 = "inherit";
5129
5193
  var MONO_FAMILY2 = "monospace";
5130
5194
  var COLUMNS = [
5131
5195
  { id: "todo", title: "Todo", count: 3 },
@@ -5298,7 +5362,7 @@ function PipelineJourney({
5298
5362
  position: "absolute",
5299
5363
  inset: 0,
5300
5364
  background: BG,
5301
- fontFamily: FONT_FAMILY10,
5365
+ fontFamily: FONT_FAMILY9,
5302
5366
  color: TEXT_HI,
5303
5367
  overflow: "hidden"
5304
5368
  }
@@ -5435,7 +5499,7 @@ function PipelineJourney({
5435
5499
  maxFontSize: 16,
5436
5500
  maxWidth: CARD_W - 32,
5437
5501
  maxLines: 2,
5438
- fontFamily: FONT_FAMILY10,
5502
+ fontFamily: FONT_FAMILY9,
5439
5503
  fontWeight: 600,
5440
5504
  letterSpacing: "-0.01em"
5441
5505
  },
@@ -5522,7 +5586,7 @@ import {
5522
5586
  useCurrentFrame as useCurrentFrame28,
5523
5587
  useVideoConfig as useVideoConfig26
5524
5588
  } from "remotion";
5525
- var FONT_FAMILY11 = "inherit";
5589
+ var FONT_FAMILY10 = "inherit";
5526
5590
  var SOFT = Easing8.bezier(0.16, 1, 0.3, 1);
5527
5591
  var BROWSER = {
5528
5592
  left: 100,
@@ -5633,7 +5697,7 @@ function VisualDocsSnippet({
5633
5697
  className,
5634
5698
  style: {
5635
5699
  background,
5636
- fontFamily: FONT_FAMILY11
5700
+ fontFamily: FONT_FAMILY10
5637
5701
  }
5638
5702
  },
5639
5703
  /* @__PURE__ */ React.createElement(
@@ -5741,7 +5805,7 @@ function VisualDocsSnippet({
5741
5805
  {
5742
5806
  maxFontSize: 17,
5743
5807
  maxWidth: BUTTON.width - 32,
5744
- fontFamily: FONT_FAMILY11,
5808
+ fontFamily: FONT_FAMILY10,
5745
5809
  fontWeight: 600,
5746
5810
  style: { color: BG_DEEP }
5747
5811
  },
@@ -5941,7 +6005,7 @@ function Tooltip({
5941
6005
  backdropFilter: "blur(14px)",
5942
6006
  WebkitBackdropFilter: "blur(14px)",
5943
6007
  opacity: settle,
5944
- fontFamily: FONT_FAMILY11
6008
+ fontFamily: FONT_FAMILY10
5945
6009
  }
5946
6010
  },
5947
6011
  /* @__PURE__ */ React.createElement(
@@ -5949,7 +6013,7 @@ function Tooltip({
5949
6013
  {
5950
6014
  maxFontSize: 17,
5951
6015
  maxWidth: 276,
5952
- fontFamily: FONT_FAMILY11,
6016
+ fontFamily: FONT_FAMILY10,
5953
6017
  fontWeight: 600,
5954
6018
  letterSpacing: "-0.01em",
5955
6019
  style: {
@@ -5967,7 +6031,7 @@ function Tooltip({
5967
6031
  maxFontSize: 14,
5968
6032
  maxWidth: 276,
5969
6033
  maxLines: 4,
5970
- fontFamily: FONT_FAMILY11,
6034
+ fontFamily: FONT_FAMILY10,
5971
6035
  style: {
5972
6036
  opacity: bodyT,
5973
6037
  transform: `translateY(${(1 - bodyT) * 12}px)`,
@@ -6013,7 +6077,7 @@ function lerp(a, b, t) {
6013
6077
 
6014
6078
  // ../execution/primitives/src/ui-blocks/brush-stroke-simulator/index.tsx
6015
6079
  import { interpolate as interpolate27, spring as spring22, useCurrentFrame as useCurrentFrame29, useVideoConfig as useVideoConfig27 } from "remotion";
6016
- var FONT_FAMILY12 = "inherit";
6080
+ var FONT_FAMILY11 = "inherit";
6017
6081
  var STAGE_W = 1280;
6018
6082
  var STAGE_H = 720;
6019
6083
  var WAYPOINTS = [
@@ -6116,7 +6180,7 @@ function BrushStrokeSimulator({
6116
6180
  inset: 0,
6117
6181
  overflow: "hidden",
6118
6182
  background,
6119
- fontFamily: FONT_FAMILY12,
6183
+ fontFamily: FONT_FAMILY11,
6120
6184
  opacity: introOpacity
6121
6185
  }
6122
6186
  },
@@ -6196,7 +6260,7 @@ function BrushStrokeSimulator({
6196
6260
 
6197
6261
  // ../execution/primitives/src/ui-blocks/image-expand-to-fullscreen/index.tsx
6198
6262
  import { interpolate as interpolate28, spring as spring23, useCurrentFrame as useCurrentFrame30, useVideoConfig as useVideoConfig28 } from "remotion";
6199
- var FONT_FAMILY13 = "inherit";
6263
+ var FONT_FAMILY12 = "inherit";
6200
6264
  var DEFAULT_FROM2 = {
6201
6265
  left: 460,
6202
6266
  top: 280,
@@ -6267,7 +6331,7 @@ function ImageExpandToFullscreen({
6267
6331
  position: "absolute",
6268
6332
  inset: 0,
6269
6333
  overflow: "hidden",
6270
- fontFamily: FONT_FAMILY13
6334
+ fontFamily: FONT_FAMILY12
6271
6335
  }
6272
6336
  },
6273
6337
  /* @__PURE__ */ React.createElement(
@@ -6325,7 +6389,7 @@ function ImageExpandToFullscreen({
6325
6389
  {
6326
6390
  maxFontSize: 15,
6327
6391
  maxWidth: 416,
6328
- fontFamily: FONT_FAMILY13,
6392
+ fontFamily: FONT_FAMILY12,
6329
6393
  fontWeight: 600,
6330
6394
  letterSpacing: "-0.005em",
6331
6395
  style: { color: BG }
@@ -6338,7 +6402,7 @@ function ImageExpandToFullscreen({
6338
6402
  maxFontSize: 14,
6339
6403
  maxWidth: 472,
6340
6404
  maxLines: 4,
6341
- fontFamily: FONT_FAMILY13,
6405
+ fontFamily: FONT_FAMILY12,
6342
6406
  style: { lineHeight: 1.5, color: SURFACE_HI }
6343
6407
  },
6344
6408
  postBody
@@ -6483,9 +6547,9 @@ import { z } from "zod";
6483
6547
  var paramsSchema = z.object({
6484
6548
  code: z.string().default('// Example\nimport { Typewriter } from "@cueframe/primitives/text";\n\nexport const App = () => <Typewriter text="Hello" />;').describe("Code content. Newlines preserved; basic syntax highlighting applied."),
6485
6549
  title: z.string().default("App.tsx").describe("Filename in the window chrome."),
6486
- width: z.number().int().min(200).max(2e3).optional().describe("Block width in pixels. Defaults to fit container."),
6487
- height: z.number().int().min(120).max(1400).optional().describe("Block height in pixels. Defaults to fit content."),
6488
- fontSize: z.number().min(10).max(48).default(16).describe("Code font size in pixels."),
6550
+ width: z.number().int().min(200).max(2e3).optional().describe("Block width in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640. Defaults to fit container."),
6551
+ height: z.number().int().min(120).max(1400).optional().describe("Block height in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640. Defaults to fit content."),
6552
+ fontSize: z.number().min(10).max(48).default(16).describe("Code font size in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640."),
6489
6553
  background: z.string().default("rgba(20, 20, 30, 0.7)").describe("Glass tint color (low alpha for the glassmorphism look)."),
6490
6554
  glassColor: z.string().default("rgba(255, 255, 255, 0.05)").describe("Highlight gradient over the glass."),
6491
6555
  staggerFrames: z.number().int().min(0).max(20).default(3).describe("Frames between each line's entrance."),
@@ -6544,7 +6608,7 @@ var paramsSchema2 = z2.object({
6544
6608
  title: z2.string().default("Terminal").describe("Window title in the chrome."),
6545
6609
  background: z2.string().default("#0a0a0a").describe("Window background."),
6546
6610
  chromeColor: z2.string().default("#1f2937").describe("Window chrome (title-bar) color."),
6547
- fontSize: z2.number().min(10).max(48).default(18).describe("Font size in pixels."),
6611
+ fontSize: z2.number().min(10).max(48).default(18).describe("Font size in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640."),
6548
6612
  charsPerFrame: z2.number().min(0.5).max(20).default(2).describe("Reveal rate (cps multiplier on the underlying chunk timer)."),
6549
6613
  chunkSize: z2.number().int().min(1).max(40).default(3).describe("Characters revealed per step. Higher = burstier output."),
6550
6614
  speed: z2.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
@@ -6634,8 +6698,8 @@ var config3 = {
6634
6698
  textParam: "title",
6635
6699
  subtextParam: "message",
6636
6700
  tokens: [
6637
- { propPath: "cardColor", cssVar: "--cf-card", fallback: "#1c1611", brandKitPath: "colors.card" },
6638
- { propPath: "textColor", cssVar: "--cf-text", fallback: "#f4ece0", brandKitPath: "colors.textOnSurface" }
6701
+ { propPath: "cardColor", cssVar: "--cf-card", fallback: SURFACE, brandKitPath: "colors.card" },
6702
+ { propPath: "textColor", cssVar: "--cf-text", fallback: TEXT_HI, brandKitPath: "colors.textOnSurface" }
6639
6703
  ],
6640
6704
  durationInFrames: 120,
6641
6705
  fps: 30,
@@ -6702,6 +6766,9 @@ var paramsSchema5 = z5.object({
6702
6766
  device: z5.enum(["laptop", "phone"]).default("laptop").describe(
6703
6767
  "Device chrome shell. `laptop` for product/web demos; `phone` for mobile-app reveals."
6704
6768
  ),
6769
+ screenSrc: z5.string().url().meta({ cueframeAsset: true }).optional().describe(
6770
+ "Screenshot to show on the screen (object-fit cover). Omitted: a neutral gradient."
6771
+ ),
6705
6772
  frameColor: z5.string().default(SURFACE).describe("Bezel/frame color of the device chrome."),
6706
6773
  screenColor: z5.string().default(BG).describe("Inner screen background behind any children."),
6707
6774
  background: z5.string().default(TEXT_HI).describe("Outer page background behind the device."),
@@ -6713,10 +6780,10 @@ var config5 = {
6713
6780
  name: "Device Mockup Zoom",
6714
6781
  category: "ui-blocks",
6715
6782
  kind: "component",
6716
- version: "0.1.1",
6783
+ version: "0.1.2",
6717
6784
  intent: "mock-device",
6718
6785
  description: 'Laptop or phone bezel that starts at 2\xD7 zoom and eases down to 1\xD7 over the duration. Wraps any child content as the screen, so it doubles as a "this is your UI" reveal frame.',
6719
- useWhen: 'App/product reveal hooks, hero shots, "the new dashboard" intros, mockup heroes for marketing. Pair with a dashboard or static screen as children. Avoid for kinetic browser navigation flows (use browser-flow) or when the screen content needs cursor interaction (use a separate component composed inside).',
6786
+ useWhen: 'App/product reveal hooks, hero shots, "the new dashboard" intros, mockup heroes for marketing. Pair with a dashboard or static screen as children, or pass a real screenshot as `screenSrc` when there is nothing to compose inside \u2014 with neither, the screen is only a neutral gradient. Avoid for kinetic browser navigation flows (use browser-flow) or when the screen content needs cursor interaction (use a separate component composed inside).',
6720
6787
  pairsWith: ["browser-flow", "mesh-gradient-bg", "glass-code-block", "dashboard-populate"],
6721
6788
  avoidWith: [],
6722
6789
  tier: "standard",
@@ -6755,8 +6822,8 @@ var config5 = {
6755
6822
  // ../execution/primitives/src/ui-blocks/simulated-cursor/config.ts
6756
6823
  import { z as z6 } from "zod";
6757
6824
  var cursorPointSchema = z6.object({
6758
- x: z6.number().describe("X coordinate in pixels (canonical 1280-wide stage)."),
6759
- y: z6.number().describe("Y coordinate in pixels (canonical 720-tall stage)."),
6825
+ x: z6.number().describe("X in absolute frame pixels, not rescaled: 0 is the left edge and the frame width is the right one. The centre of a 1920-wide render is 960, not 640."),
6826
+ y: z6.number().describe("Y in absolute frame pixels, not rescaled: 0 is the top edge and the frame height is the bottom one. The centre of a 1080-tall render is 540, not 360."),
6760
6827
  hold: z6.number().int().min(0).max(120).optional().describe("Frames to hold here before moving on. Defaults to 15."),
6761
6828
  click: z6.boolean().optional().describe("Fire a click ripple + dip when arriving at this point.")
6762
6829
  }).passthrough();
@@ -6764,9 +6831,9 @@ var paramsSchema6 = z6.object({
6764
6831
  points: z6.array(cursorPointSchema).min(1).optional().describe(
6765
6832
  "Ordered cursor waypoints. Each leg takes ~24 frames to traverse plus the destination's `hold`. Defaults to a 3-point sample path."
6766
6833
  ),
6767
- color: z6.string().default("#f4ece0").describe("Cursor fill color."),
6834
+ color: z6.string().default(TEXT_HI).describe("Cursor fill color."),
6768
6835
  size: z6.number().int().min(12).max(96).default(32).describe("Cursor SVG size in pixels."),
6769
- background: z6.string().default("#14100c").describe("Stage background \u2014 typically a dark canvas the cursor traverses."),
6836
+ background: z6.string().default(BG).describe("Stage background \u2014 typically a dark canvas the cursor traverses."),
6770
6837
  speed: z6.number().min(0.25).max(4).default(1).describe("Playback speed multiplier on the entire path.")
6771
6838
  }).passthrough();
6772
6839
  var config6 = {
@@ -6786,7 +6853,7 @@ var config6 = {
6786
6853
  tags: ["ui", "cursor", "pointer", "click", "overlay"],
6787
6854
  mood: ["tech-demo", "minimal"],
6788
6855
  paramsSchema: paramsSchema6,
6789
- propDefaults: { color: "#f4ece0", size: 32, background: "#14100c", speed: 1 },
6856
+ propDefaults: { color: TEXT_HI, size: 32, background: BG, speed: 1 },
6790
6857
  examples: [
6791
6858
  {
6792
6859
  name: "three-stop-tour",
@@ -6797,7 +6864,7 @@ var config6 = {
6797
6864
  { x: 800, y: 360, hold: 25, click: true },
6798
6865
  { x: 1050, y: 560, hold: 20 }
6799
6866
  ],
6800
- color: "#f4ece0"
6867
+ color: TEXT_HI
6801
6868
  },
6802
6869
  description: "Default 3-point tour with one click in the middle."
6803
6870
  },
@@ -6810,7 +6877,7 @@ var config6 = {
6810
6877
  { x: 640, y: 360, hold: 30, click: true },
6811
6878
  { x: 1180, y: 100, hold: 5 }
6812
6879
  ],
6813
- color: "#f4ece0",
6880
+ color: TEXT_HI,
6814
6881
  size: 28
6815
6882
  },
6816
6883
  description: "Enter, click center, exit upper-right."
@@ -6819,8 +6886,8 @@ var config6 = {
6819
6886
  textParam: null,
6820
6887
  subtextParam: null,
6821
6888
  tokens: [
6822
- { propPath: "color", cssVar: "--cf-fg", fallback: "#f4ece0", brandKitPath: "colors.text" },
6823
- { propPath: "background", cssVar: "--cf-bg", fallback: "#14100c", brandKitPath: "colors.background" }
6889
+ { propPath: "color", cssVar: "--cf-fg", fallback: TEXT_HI, brandKitPath: "colors.text" },
6890
+ { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" }
6824
6891
  ],
6825
6892
  durationInFrames: 150,
6826
6893
  fps: 30,
@@ -6924,10 +6991,10 @@ var paramsSchema8 = z8.object({
6924
6991
  borderRadiusFrom: z8.number().min(0).max(80).default(24).describe("Corner radius before morph."),
6925
6992
  borderRadiusTo: z8.number().min(0).max(80).default(0).describe("Corner radius after morph (0 for sheet/full-bleed)."),
6926
6993
  morphAt: z8.number().int().min(0).max(300).default(30).describe("Frame at which the morph spring fires."),
6927
- background: z8.string().default("#14100c").describe("Stage background behind the modal + bento grid."),
6928
- cardColor: z8.string().default("#1c1611").describe("Card/modal fill color."),
6929
- textColor: z8.string().default("#f4ece0").describe("Title text color."),
6930
- mutedColor: z8.string().default("#b8a894").describe("Body / supporting text color."),
6994
+ background: z8.string().default(BG).describe("Stage background behind the modal + bento grid."),
6995
+ cardColor: z8.string().default(SURFACE).describe("Card/modal fill color."),
6996
+ textColor: z8.string().default(TEXT_HI).describe("Title text color."),
6997
+ mutedColor: z8.string().default(TEXT_MUTED).describe("Body / supporting text color."),
6931
6998
  sourceTitle: z8.string().max(120).default("Compose video").describe("Title shown on the source card (pre-morph). Auto-fits (shrinks + wraps to 2 lines)."),
6932
6999
  sourceBody: z8.string().max(220).default("Click to start a new project").describe("Body shown on the source card. Auto-fits (shrinks + wraps to 4 lines)."),
6933
7000
  modalTitle: z8.string().max(140).default("New project").describe("Hero title shown in the modal (post-morph). Auto-fits (shrinks + wraps to 2 lines)."),
@@ -6955,10 +7022,10 @@ var config8 = {
6955
7022
  borderRadiusFrom: 24,
6956
7023
  borderRadiusTo: 0,
6957
7024
  morphAt: 30,
6958
- background: "#14100c",
6959
- cardColor: "#1c1611",
6960
- textColor: "#f4ece0",
6961
- mutedColor: "#b8a894",
7025
+ background: BG,
7026
+ cardColor: SURFACE,
7027
+ textColor: TEXT_HI,
7028
+ mutedColor: TEXT_MUTED,
6962
7029
  sourceTitle: "Compose video",
6963
7030
  sourceBody: "Click to start a new project",
6964
7031
  modalTitle: "New project",
@@ -6994,9 +7061,9 @@ var config8 = {
6994
7061
  textParam: "modalTitle",
6995
7062
  subtextParam: "modalBody",
6996
7063
  tokens: [
6997
- { propPath: "cardColor", cssVar: "--cf-bg", fallback: "#1c1611", brandKitPath: "colors.background" },
6998
- { propPath: "textColor", cssVar: "--cf-fg", fallback: "#f4ece0", brandKitPath: "colors.textOnSurface" },
6999
- { propPath: "mutedColor", cssVar: "--cf-muted", fallback: "#b8a894", brandKitPath: "colors.textMuted" }
7064
+ { propPath: "cardColor", cssVar: "--cf-bg", fallback: SURFACE, brandKitPath: "colors.background" },
7065
+ { propPath: "textColor", cssVar: "--cf-fg", fallback: TEXT_HI, brandKitPath: "colors.textOnSurface" },
7066
+ { propPath: "mutedColor", cssVar: "--cf-muted", fallback: TEXT_MUTED, brandKitPath: "colors.textMuted" }
7000
7067
  ],
7001
7068
  durationInFrames: 150,
7002
7069
  fps: 30,
@@ -7015,10 +7082,10 @@ var paramsSchema9 = z9.object({
7015
7082
  "Ordered list of steps. Each activates sequentially with a check-mark pop, color fade, and connecting-line fill."
7016
7083
  ),
7017
7084
  orientation: z9.enum(["horizontal", "vertical"]).default("horizontal").describe("Layout direction."),
7018
- activeColor: z9.string().default("#7fae7a").describe("Color of completed nodes + connecting line fill."),
7019
- inactiveColor: z9.string().default("#241d16").describe("Color of pending nodes + background track."),
7020
- background: z9.string().default("#14100c").describe("Stage background."),
7021
- textColor: z9.string().default("#f4ece0").describe("Step label color."),
7085
+ activeColor: z9.string().default(SUCCESS).describe("Color of completed nodes + connecting line fill."),
7086
+ inactiveColor: z9.string().default(SURFACE_HI).describe("Color of pending nodes + background track."),
7087
+ background: z9.string().default(BG).describe("Stage background."),
7088
+ textColor: z9.string().default(TEXT_HI).describe("Step label color."),
7022
7089
  stepDuration: z9.number().int().min(10).max(120).default(30).describe("Frames between successive step activations."),
7023
7090
  speed: z9.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
7024
7091
  }).passthrough();
@@ -7039,7 +7106,7 @@ var config9 = {
7039
7106
  tags: ["ui", "steps", "progress", "stepper", "workflow", "check", "sequential"],
7040
7107
  mood: ["tech-demo", "corporate", "minimal"],
7041
7108
  paramsSchema: paramsSchema9,
7042
- propDefaults: { orientation: "horizontal", activeColor: "#7fae7a", inactiveColor: "#241d16", background: "#14100c", textColor: "#f4ece0", stepDuration: 30, speed: 1 },
7109
+ propDefaults: { orientation: "horizontal", activeColor: SUCCESS, inactiveColor: SURFACE_HI, background: BG, textColor: TEXT_HI, stepDuration: 30, speed: 1 },
7043
7110
  examples: [
7044
7111
  {
7045
7112
  name: "three-step-deploy",
@@ -7047,7 +7114,7 @@ var config9 = {
7047
7114
  params: {
7048
7115
  steps: [{ label: "Connect" }, { label: "Process" }, { label: "Deploy" }],
7049
7116
  orientation: "horizontal",
7050
- activeColor: "#7fae7a"
7117
+ activeColor: SUCCESS
7051
7118
  },
7052
7119
  description: "Default deploy workflow stepper."
7053
7120
  },
@@ -7057,7 +7124,7 @@ var config9 = {
7057
7124
  params: {
7058
7125
  steps: [{ label: "Sign up" }, { label: "Verify" }, { label: "Invite team" }, { label: "Launch" }],
7059
7126
  orientation: "vertical",
7060
- activeColor: "#7b93b0",
7127
+ activeColor: BLUE,
7061
7128
  stepDuration: 40
7062
7129
  },
7063
7130
  description: "Vertical onboarding chain in blue."
@@ -7066,10 +7133,10 @@ var config9 = {
7066
7133
  textParam: null,
7067
7134
  subtextParam: null,
7068
7135
  tokens: [
7069
- { propPath: "activeColor", cssVar: "--cf-accent", fallback: "#7fae7a", brandKitPath: "colors.accent" },
7070
- { propPath: "inactiveColor", cssVar: "--cf-muted", fallback: "#241d16", brandKitPath: "colors.textMuted" },
7071
- { propPath: "background", cssVar: "--cf-bg", fallback: "#14100c", brandKitPath: "colors.background" },
7072
- { propPath: "textColor", cssVar: "--cf-fg", fallback: "#f4ece0", brandKitPath: "colors.text" }
7136
+ { propPath: "activeColor", cssVar: "--cf-accent", fallback: SUCCESS, brandKitPath: "colors.accent" },
7137
+ { propPath: "inactiveColor", cssVar: "--cf-muted", fallback: SURFACE_HI, brandKitPath: "colors.textMuted" },
7138
+ { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" },
7139
+ { propPath: "textColor", cssVar: "--cf-fg", fallback: TEXT_HI, brandKitPath: "colors.text" }
7073
7140
  ],
7074
7141
  durationInFrames: 150,
7075
7142
  fps: 30,
@@ -7309,7 +7376,7 @@ var paramsSchema14 = z14.object({
7309
7376
  ]).describe("Eval rows with 0\u20131 scores."),
7310
7377
  threshold: z14.number().min(0).max(1).default(0.9).describe("Pass threshold \u2014 at/above gets a green PASS badge, below an amber NEAR."),
7311
7378
  title: z14.string().max(40).default("Eval suite").describe("Uppercase card header."),
7312
- accentColor: z14.string().default("#7fae7a").describe("Pass accent.")
7379
+ accentColor: z14.string().default(SUCCESS).describe("Pass accent.")
7313
7380
  }).passthrough();
7314
7381
  var config14 = {
7315
7382
  id: "eval-scorecard",
@@ -7337,15 +7404,15 @@ var config14 = {
7337
7404
  ],
7338
7405
  threshold: 0.9,
7339
7406
  title: "Eval suite",
7340
- accentColor: "#7fae7a"
7407
+ accentColor: SUCCESS
7341
7408
  },
7342
7409
  examples: [
7343
- { name: "receipts", mood: ["tech-demo"], params: { title: "Eval suite", threshold: 0.9, accentColor: "#7fae7a", rows: [{ name: "Instruction following", score: 0.97 }, { name: "Tool-use accuracy", score: 0.94 }, { name: "Long-context recall", score: 0.92 }, { name: "Refusal calibration", score: 0.88 }] } }
7410
+ { name: "receipts", mood: ["tech-demo"], params: { title: "Eval suite", threshold: 0.9, accentColor: SUCCESS, rows: [{ name: "Instruction following", score: 0.97 }, { name: "Tool-use accuracy", score: 0.94 }, { name: "Long-context recall", score: 0.92 }, { name: "Refusal calibration", score: 0.88 }] } }
7344
7411
  ],
7345
7412
  textParam: "title",
7346
7413
  subtextParam: null,
7347
7414
  tokens: [
7348
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#7fae7a", brandKitPath: "colors.accent" }
7415
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: SUCCESS, brandKitPath: "colors.accent" }
7349
7416
  ],
7350
7417
  durationInFrames: 180,
7351
7418
  fps: 30,
@@ -7362,7 +7429,7 @@ var paramsSchema15 = z15.object({
7362
7429
  label: z15.string().max(48).default("TIME TO FIRST TOKEN").describe("Uppercase label under the readout."),
7363
7430
  min: z15.number().default(0).describe("Gauge scale minimum."),
7364
7431
  max: z15.number().default(500).describe('Gauge scale maximum. Put value in the lower third for a "fast" read.'),
7365
- accentColor: z15.string().default("#f2913c").describe("Arc fill + unit accent."),
7432
+ accentColor: z15.string().default(ACCENT).describe("Arc fill + unit accent."),
7366
7433
  decimals: z15.number().int().min(0).max(2).default(0).describe("Decimal places on the readout.")
7367
7434
  }).passthrough().superRefine((v, ctx) => {
7368
7435
  if (v.max <= v.min) {
@@ -7396,17 +7463,17 @@ var config15 = {
7396
7463
  label: "TIME TO FIRST TOKEN",
7397
7464
  min: 0,
7398
7465
  max: 500,
7399
- accentColor: "#f2913c",
7466
+ accentColor: ACCENT,
7400
7467
  decimals: 0
7401
7468
  },
7402
7469
  examples: [
7403
- { name: "ttft", mood: ["tech-demo"], params: { value: 87, unit: "ms", label: "TIME TO FIRST TOKEN", min: 0, max: 500, accentColor: "#f2913c" } },
7404
- { name: "throughput", mood: ["tech-demo"], params: { value: 412, unit: "tok/s", label: "THROUGHPUT PER GPU", min: 0, max: 500, accentColor: "#7fae7a" } }
7470
+ { name: "ttft", mood: ["tech-demo"], params: { value: 87, unit: "ms", label: "TIME TO FIRST TOKEN", min: 0, max: 500, accentColor: ACCENT } },
7471
+ { name: "throughput", mood: ["tech-demo"], params: { value: 412, unit: "tok/s", label: "THROUGHPUT PER GPU", min: 0, max: 500, accentColor: SUCCESS } }
7405
7472
  ],
7406
7473
  textParam: "label",
7407
7474
  subtextParam: null,
7408
7475
  tokens: [
7409
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#f2913c", brandKitPath: "colors.accent" }
7476
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" }
7410
7477
  ],
7411
7478
  durationInFrames: 120,
7412
7479
  fps: 30,
@@ -7420,7 +7487,7 @@ import { z as z16 } from "zod";
7420
7487
  var paramsSchema16 = z16.object({
7421
7488
  steps: z16.array(z16.string().min(1).max(60)).min(2).max(7).default(["Reading the thread", "Pulling related tickets", "Drafting a fix plan", "Ready for review"]).describe("Trace steps in order. Present-tense verbs read as live work."),
7422
7489
  title: z16.string().max(40).default("Working on it").describe("Uppercase card header."),
7423
- accentColor: z16.string().default("#f2913c").describe("Spinner + final-step accent."),
7490
+ accentColor: z16.string().default(ACCENT).describe("Spinner + final-step accent."),
7424
7491
  stepFrames: z16.number().int().min(12).max(60).default(26).describe("Frames each step runs before its check lands.")
7425
7492
  }).passthrough();
7426
7493
  var config16 = {
@@ -7443,17 +7510,17 @@ var config16 = {
7443
7510
  propDefaults: {
7444
7511
  steps: ["Reading the thread", "Pulling related tickets", "Drafting a fix plan", "Ready for review"],
7445
7512
  title: "Working on it",
7446
- accentColor: "#f2913c",
7513
+ accentColor: ACCENT,
7447
7514
  stepFrames: 26
7448
7515
  },
7449
7516
  examples: [
7450
- { name: "agent-at-work", mood: ["tech-demo"], params: { steps: ["Reading the thread", "Pulling related tickets", "Drafting a fix plan", "Ready for review"], title: "Working on it", accentColor: "#f2913c" } },
7451
- { name: "research-run", mood: ["tech-demo"], params: { steps: ["Scanning 214 sources", "Ranking by relevance", "Cross-checking claims", "Writing the brief"], title: "Deep research", accentColor: "#9b8bb0", stepFrames: 22 } }
7517
+ { name: "agent-at-work", mood: ["tech-demo"], params: { steps: ["Reading the thread", "Pulling related tickets", "Drafting a fix plan", "Ready for review"], title: "Working on it", accentColor: ACCENT } },
7518
+ { name: "research-run", mood: ["tech-demo"], params: { steps: ["Scanning 214 sources", "Ranking by relevance", "Cross-checking claims", "Writing the brief"], title: "Deep research", accentColor: VIOLET, stepFrames: 22 } }
7452
7519
  ],
7453
7520
  textParam: "title",
7454
7521
  subtextParam: null,
7455
7522
  tokens: [
7456
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#f2913c", brandKitPath: "colors.accent" }
7523
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" }
7457
7524
  ],
7458
7525
  durationInFrames: 180,
7459
7526
  fps: 30,
@@ -7474,7 +7541,7 @@ var paramsSchema17 = z17.object({
7474
7541
  { name: "read_logs", args: '{ service: "auth", last: "1h" }', result: "stack trace found" },
7475
7542
  { name: "open_pr", args: '{ fix: "token refresh race" }', result: "PR #482 opened" }
7476
7543
  ]).describe("Function calls in execution order: name(args) types in, then the result chip pops."),
7477
- accentColor: z17.string().default("#f2913c").describe("Function-name + active-border accent."),
7544
+ accentColor: z17.string().default(ACCENT).describe("Function-name + active-border accent."),
7478
7545
  callFrames: z17.number().int().min(16).max(80).default(34).describe("Frames between call arrivals.")
7479
7546
  }).passthrough();
7480
7547
  var config17 = {
@@ -7500,16 +7567,16 @@ var config17 = {
7500
7567
  { name: "read_logs", args: '{ service: "auth", last: "1h" }', result: "stack trace found" },
7501
7568
  { name: "open_pr", args: '{ fix: "token refresh race" }', result: "PR #482 opened" }
7502
7569
  ],
7503
- accentColor: "#f2913c",
7570
+ accentColor: ACCENT,
7504
7571
  callFrames: 34
7505
7572
  },
7506
7573
  examples: [
7507
- { name: "bug-hunt", mood: ["tech-demo"], params: { accentColor: "#f2913c", calls: [{ name: "search_issues", args: '{ query: "login 500" }', result: "14 matches" }, { name: "read_logs", args: '{ service: "auth", last: "1h" }', result: "stack trace found" }, { name: "open_pr", args: '{ fix: "token refresh race" }', result: "PR #482 opened" }] } }
7574
+ { name: "bug-hunt", mood: ["tech-demo"], params: { accentColor: ACCENT, calls: [{ name: "search_issues", args: '{ query: "login 500" }', result: "14 matches" }, { name: "read_logs", args: '{ service: "auth", last: "1h" }', result: "stack trace found" }, { name: "open_pr", args: '{ fix: "token refresh race" }', result: "PR #482 opened" }] } }
7508
7575
  ],
7509
7576
  textParam: null,
7510
7577
  subtextParam: null,
7511
7578
  tokens: [
7512
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#f2913c", brandKitPath: "colors.accent" }
7579
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" }
7513
7580
  ],
7514
7581
  durationInFrames: 180,
7515
7582
  fps: 30,
@@ -7522,7 +7589,7 @@ var config17 = {
7522
7589
  import { z as z18 } from "zod";
7523
7590
  var paramsSchema18 = z18.object({
7524
7591
  barCount: z18.number().int().min(12).max(72).default(36).describe("Bars in the waveform."),
7525
- accentColor: z18.string().default("#f2913c").describe("Waveform accent."),
7592
+ accentColor: z18.string().default(ACCENT).describe("Waveform accent."),
7526
7593
  mode: z18.enum(["speaking", "listening"]).default("speaking").describe("'speaking' = phrase bursts with breaths \xB7 'listening' = gentle uniform breathing."),
7527
7594
  label: z18.string().max(48).default("Assistant is speaking").describe("Uppercase label under the waveform. Empty hides it."),
7528
7595
  seed: z18.number().int().min(0).max(9999).default(7).describe("Pattern seed \u2014 different phrase rhythms.")
@@ -7546,19 +7613,19 @@ var config18 = {
7546
7613
  paramsSchema: paramsSchema18,
7547
7614
  propDefaults: {
7548
7615
  barCount: 36,
7549
- accentColor: "#f2913c",
7616
+ accentColor: ACCENT,
7550
7617
  mode: "speaking",
7551
7618
  label: "Assistant is speaking",
7552
7619
  seed: 7
7553
7620
  },
7554
7621
  examples: [
7555
- { name: "agent-speaking", mood: ["tech-demo"], params: { barCount: 36, accentColor: "#f2913c", mode: "speaking", label: "Assistant is speaking", seed: 7 } },
7556
- { name: "listening", mood: ["minimal"], params: { barCount: 36, accentColor: "#9b8bb0", mode: "listening", label: "Listening", seed: 3 } }
7622
+ { name: "agent-speaking", mood: ["tech-demo"], params: { barCount: 36, accentColor: ACCENT, mode: "speaking", label: "Assistant is speaking", seed: 7 } },
7623
+ { name: "listening", mood: ["minimal"], params: { barCount: 36, accentColor: VIOLET, mode: "listening", label: "Listening", seed: 3 } }
7557
7624
  ],
7558
7625
  textParam: "label",
7559
7626
  subtextParam: null,
7560
7627
  tokens: [
7561
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#f2913c", brandKitPath: "colors.accent" }
7628
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: ACCENT, brandKitPath: "colors.accent" }
7562
7629
  ],
7563
7630
  durationInFrames: 192,
7564
7631
  fps: 30,
@@ -7675,10 +7742,10 @@ var paramsSchema21 = z21.object({
7675
7742
  panelStartFrame: z21.number().int().min(0).max(120).default(18).describe("Frame at which the floating tool panel slides up from the bottom."),
7676
7743
  iconStagger: z21.number().int().min(0).max(30).default(4).describe("Frames between successive icon pop-ins after the panel arrives."),
7677
7744
  iconCount: z21.number().int().min(1).max(8).default(5).describe("How many icons to render (clamped 1\u20138). The first is shown as active."),
7678
- accent: z21.string().default("#9b8bb0").describe("Accent color used by the active icon glow + gradient fill."),
7679
- panelColor: z21.string().default("#14100cb8").describe("Glassmorphic panel fill (low alpha for the blur to read)."),
7680
- background: z21.string().default("#14100c").describe("Stage background \u2014 also receives a subtle dot grid."),
7681
- iconBg: z21.string().default("#241d16").describe("Background of inactive icons."),
7745
+ accent: z21.string().default(VIOLET).describe("Accent color used by the active icon glow + gradient fill."),
7746
+ panelColor: z21.string().default(`${BG}b8`).describe("Glassmorphic panel fill (low alpha for the blur to read)."),
7747
+ background: z21.string().default(BG).describe("Stage background \u2014 also receives a subtle dot grid."),
7748
+ iconBg: z21.string().default(SURFACE_HI).describe("Background of inactive icons."),
7682
7749
  speed: z21.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
7683
7750
  }).passthrough();
7684
7751
  var config21 = {
@@ -7702,31 +7769,31 @@ var config21 = {
7702
7769
  panelStartFrame: 18,
7703
7770
  iconStagger: 4,
7704
7771
  iconCount: 5,
7705
- accent: "#9b8bb0",
7706
- panelColor: "#14100cb8",
7707
- background: "#14100c",
7708
- iconBg: "#241d16",
7772
+ accent: VIOLET,
7773
+ panelColor: `${BG}b8`,
7774
+ background: BG,
7775
+ iconBg: SURFACE_HI,
7709
7776
  speed: 1
7710
7777
  },
7711
7778
  examples: [
7712
7779
  {
7713
7780
  name: "violet-palette",
7714
7781
  mood: ["tech-demo"],
7715
- params: { panelStartFrame: 18, iconStagger: 4, iconCount: 5, accent: "#9b8bb0" },
7782
+ params: { panelStartFrame: 18, iconStagger: 4, iconCount: 5, accent: VIOLET },
7716
7783
  description: "Default violet 5-tool palette."
7717
7784
  },
7718
7785
  {
7719
7786
  name: "dense-tools",
7720
7787
  mood: ["minimal"],
7721
- params: { panelStartFrame: 12, iconStagger: 3, iconCount: 8, accent: "#5fa5a0" },
7788
+ params: { panelStartFrame: 12, iconStagger: 3, iconCount: 8, accent: TEAL },
7722
7789
  description: "Cyan accent, all 8 icons, fast stagger."
7723
7790
  }
7724
7791
  ],
7725
7792
  textParam: null,
7726
7793
  subtextParam: null,
7727
7794
  tokens: [
7728
- { propPath: "accent", cssVar: "--cf-accent", fallback: "#9b8bb0", brandKitPath: "colors.accent" },
7729
- { propPath: "background", cssVar: "--cf-bg", fallback: "#14100c", brandKitPath: "colors.background" }
7795
+ { propPath: "accent", cssVar: "--cf-accent", fallback: VIOLET, brandKitPath: "colors.accent" },
7796
+ { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" }
7730
7797
  ],
7731
7798
  durationInFrames: 150,
7732
7799
  fps: 30,
@@ -7744,8 +7811,8 @@ var paramsSchema22 = z22.object({
7744
7811
  ),
7745
7812
  collapseAt: z22.number().int().min(0).max(300).default(30).describe("Frame at which the collapse spring fires."),
7746
7813
  title: z22.string().max(120).default("process-orders.ts").describe("Filename in the window chrome. Auto-fits (shrinks) to the chrome bar."),
7747
- fontSize: z22.number().min(10).max(36).default(16).describe("Code font size in pixels."),
7748
- width: z22.number().min(360).max(1600).default(720).describe("Card width in pixels."),
7814
+ fontSize: z22.number().min(10).max(36).default(16).describe("Code font size in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640."),
7815
+ width: z22.number().min(360).max(1600).default(720).describe("Card width in pixels on the 1280-wide authoring frame. Scaled with the frame: every px value here is multiplied by max(0.5, frameWidth/1280), so a 1920-wide render draws it 1.5x larger, and the 0.5x floor pins anything narrower than 640."),
7749
7816
  background: z22.string().default(BG).describe("Stage background."),
7750
7817
  cardColor: z22.string().default(BG_DEEP).describe("Code window fill color."),
7751
7818
  textColor: z22.string().default(TEXT).describe("Code text color."),
@@ -8052,8 +8119,8 @@ var config26 = {
8052
8119
  import { z as z27 } from "zod";
8053
8120
  var nodeSchema = z27.object({
8054
8121
  id: z27.string().min(1).describe("Unique node id, referenced by edge `from`/`to`."),
8055
- x: z27.number().describe("X coordinate in pixels (canonical 1280-wide stage)."),
8056
- y: z27.number().describe("Y coordinate in pixels."),
8122
+ x: z27.number().describe("X of the node, authored against a 1280x720 frame. Two coordinate spaces resolve it and they diverge as the frame grows: the pipes are drawn inside an SVG viewBox of 0 0 1280 720 fitted to the frame, so a pipe endpoint at 640 lands on the horizontal centre of any render, while the node card is a plain absolutely-positioned div at left = x - 60 in raw frame pixels and stays at 640. They agree only on a 1280-wide render; above that the cards sit left of the pipe ends they belong to. Known layout defect, not yet fixed \u2014 author and render at 1280x720 to avoid it."),
8123
+ y: z27.number().describe("Y of the node, in the same 1280x720 authoring space and split the same way: the pipe endpoint is fitted to the frame height, the node card is placed at raw top = y - 24 in frame pixels. They agree on a 720-tall render and drift apart as the frame grows."),
8057
8124
  label: z27.string().max(80).optional().describe("Display label. Falls back to `id`. Auto-fits (shrinks) to the node card.")
8058
8125
  }).passthrough();
8059
8126
  var edgeSchema = z27.object({
@@ -8143,7 +8210,7 @@ var config27 = {
8143
8210
  import { z as z28 } from "zod";
8144
8211
  var paramsSchema28 = z28.object({
8145
8212
  cardLabel: z28.string().min(1).max(120).default("Build pipeline").describe("Title text on the flying ticket card. Auto-fits (shrinks + wraps to 2 lines)."),
8146
- accentColor: z28.string().default("#7fae7a").describe("Accent for card border, status dot, timer, and one of the confetti colors."),
8213
+ accentColor: z28.string().default(SUCCESS).describe("Accent for card border, status dot, timer, and one of the confetti colors."),
8147
8214
  speed: z28.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
8148
8215
  }).passthrough();
8149
8216
  var config28 = {
@@ -8163,25 +8230,25 @@ var config28 = {
8163
8230
  tags: ["ui", "kanban", "pipeline", "workflow", "ticket", "journey", "confetti"],
8164
8231
  mood: ["tech-demo", "corporate", "playful"],
8165
8232
  paramsSchema: paramsSchema28,
8166
- propDefaults: { cardLabel: "Build pipeline", accentColor: "#7fae7a", speed: 1 },
8233
+ propDefaults: { cardLabel: "Build pipeline", accentColor: SUCCESS, speed: 1 },
8167
8234
  examples: [
8168
8235
  {
8169
8236
  name: "build-pipeline",
8170
8237
  mood: ["tech-demo"],
8171
- params: { cardLabel: "Build pipeline", accentColor: "#7fae7a" },
8238
+ params: { cardLabel: "Build pipeline", accentColor: SUCCESS },
8172
8239
  description: "Default green-accent build ticket."
8173
8240
  },
8174
8241
  {
8175
8242
  name: "feature-shipped",
8176
8243
  mood: ["playful"],
8177
- params: { cardLabel: "Ship onboarding v2", accentColor: "#9b8bb0" },
8244
+ params: { cardLabel: "Ship onboarding v2", accentColor: VIOLET },
8178
8245
  description: "Violet feature ticket with confetti payoff."
8179
8246
  }
8180
8247
  ],
8181
8248
  textParam: "cardLabel",
8182
8249
  subtextParam: null,
8183
8250
  tokens: [
8184
- { propPath: "accentColor", cssVar: "--cf-accent", fallback: "#7fae7a", brandKitPath: "colors.accent" }
8251
+ { propPath: "accentColor", cssVar: "--cf-accent", fallback: SUCCESS, brandKitPath: "colors.accent" }
8185
8252
  ],
8186
8253
  durationInFrames: 240,
8187
8254
  fps: 30,
@@ -8203,8 +8270,8 @@ var paramsSchema29 = z29.object({
8203
8270
  tooltipTitle: z29.string().min(1).max(120).default("Generate runs").describe("Tooltip heading shown right of the bounding box. Auto-fits (shrinks) to the tooltip."),
8204
8271
  tooltipBody: z29.string().min(1).max(320).default("Click to start a new generation. The job will appear in the sidebar.").describe("Tooltip body copy explaining the action. Auto-fits (shrinks + wraps to 4 lines)."),
8205
8272
  buttonLabel: z29.string().min(1).max(80).default("Generate").describe("Label on the call-to-action button. Auto-fits (shrinks) to the button."),
8206
- accent: z29.string().default("#ffb38e").describe("Accent for the bounding box stroke, ripple, and tooltip border."),
8207
- background: z29.string().default("#14100c").describe("Stage background behind the browser."),
8273
+ accent: z29.string().default(ACCENT_SOFT).describe("Accent for the bounding box stroke, ripple, and tooltip border."),
8274
+ background: z29.string().default(BG).describe("Stage background behind the browser."),
8208
8275
  speed: z29.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
8209
8276
  }).passthrough();
8210
8277
  var config29 = {
@@ -8229,8 +8296,8 @@ var config29 = {
8229
8296
  tooltipTitle: "Generate runs",
8230
8297
  tooltipBody: "Click to start a new generation. The job will appear in the sidebar.",
8231
8298
  buttonLabel: "Generate",
8232
- accent: "#ffb38e",
8233
- background: "#14100c",
8299
+ accent: ACCENT_SOFT,
8300
+ background: BG,
8234
8301
  speed: 1
8235
8302
  },
8236
8303
  examples: [
@@ -8241,7 +8308,7 @@ var config29 = {
8241
8308
  tooltipTitle: "Generate runs",
8242
8309
  tooltipBody: "Click to start a new generation. The job will appear in the sidebar.",
8243
8310
  buttonLabel: "Generate",
8244
- accent: "#ffb38e"
8311
+ accent: ACCENT_SOFT
8245
8312
  },
8246
8313
  description: "Default docs annotation for a Generate button."
8247
8314
  },
@@ -8252,7 +8319,7 @@ var config29 = {
8252
8319
  tooltipTitle: "Deploy your project",
8253
8320
  tooltipBody: "Pushes your build to production. Roll back any time from the dashboard.",
8254
8321
  buttonLabel: "Deploy",
8255
- accent: "#7fae7a",
8322
+ accent: SUCCESS,
8256
8323
  clickFrame: 130
8257
8324
  },
8258
8325
  description: "Deploy-button explainer in green."
@@ -8261,8 +8328,8 @@ var config29 = {
8261
8328
  textParam: "tooltipTitle",
8262
8329
  subtextParam: "tooltipBody",
8263
8330
  tokens: [
8264
- { propPath: "accent", cssVar: "--cf-accent", fallback: "#ffb38e", brandKitPath: "colors.accent" },
8265
- { propPath: "background", cssVar: "--cf-bg", fallback: "#14100c", brandKitPath: "colors.background" }
8331
+ { propPath: "accent", cssVar: "--cf-accent", fallback: ACCENT_SOFT, brandKitPath: "colors.accent" },
8332
+ { propPath: "background", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" }
8266
8333
  ],
8267
8334
  durationInFrames: 240,
8268
8335
  fps: 30,
@@ -8353,12 +8420,12 @@ var paramsSchema31 = z31.object({
8353
8420
  borderRadiusFrom: z31.number().min(0).max(60).default(12).describe("Corner radius before morph."),
8354
8421
  borderRadiusTo: z31.number().min(0).max(60).default(16).describe("Corner radius after morph."),
8355
8422
  morphAt: z31.number().int().min(0).max(300).default(30).describe("Frame at which the morph spring fires."),
8356
- imageColorA: z31.string().default("#d1685e").describe("First gradient stop for the simulated image."),
8357
- imageColorB: z31.string().default("#9b8bb0").describe("Second gradient stop for the simulated image."),
8358
- imageColorC: z31.string().default("#7b93b0").describe("Third gradient stop for the simulated image."),
8359
- feedBackground: z31.string().default("#e4dccf").describe("Light feed/page background that fades out during morph."),
8360
- editorBackground: z31.string().default("#14100c").describe("Dark editor canvas background that fades in during morph."),
8361
- accent: z31.string().default("#f4ece0").describe("Toolbar accent (active tool tile + Editor label color)."),
8423
+ imageColorA: z31.string().default(DANGER).describe("First gradient stop for the simulated image."),
8424
+ imageColorB: z31.string().default(VIOLET).describe("Second gradient stop for the simulated image."),
8425
+ imageColorC: z31.string().default(BLUE).describe("Third gradient stop for the simulated image."),
8426
+ feedBackground: z31.string().default(TEXT).describe("Light feed/page background that fades out during morph."),
8427
+ editorBackground: z31.string().default(BG).describe("Dark editor canvas background that fades in during morph."),
8428
+ accent: z31.string().default(TEXT_HI).describe("Toolbar accent (active tool tile + Editor label color)."),
8362
8429
  postAuthor: z31.string().min(1).max(120).default("Maya Larsson").describe("Feed-card author name shown pre-morph. Auto-fits (shrinks) to the card."),
8363
8430
  postBody: z31.string().min(1).max(320).default("Sunset over the old harbor \u2014 color graded straight out of camera.").describe("Feed-card body copy shown pre-morph. Auto-fits (shrinks + wraps to 4 lines)."),
8364
8431
  speed: z31.number().min(0.25).max(4).default(1).describe("Playback speed multiplier.")
@@ -8384,12 +8451,12 @@ var config31 = {
8384
8451
  borderRadiusFrom: 12,
8385
8452
  borderRadiusTo: 16,
8386
8453
  morphAt: 30,
8387
- imageColorA: "#d1685e",
8388
- imageColorB: "#9b8bb0",
8389
- imageColorC: "#7b93b0",
8390
- feedBackground: "#e4dccf",
8391
- editorBackground: "#14100c",
8392
- accent: "#f4ece0",
8454
+ imageColorA: DANGER,
8455
+ imageColorB: VIOLET,
8456
+ imageColorC: BLUE,
8457
+ feedBackground: TEXT,
8458
+ editorBackground: BG,
8459
+ accent: TEXT_HI,
8393
8460
  postAuthor: "Maya Larsson",
8394
8461
  postBody: "Sunset over the old harbor \u2014 color graded straight out of camera.",
8395
8462
  speed: 1
@@ -8403,15 +8470,15 @@ var config31 = {
8403
8470
  postBody: "Sunset over the old harbor \u2014 color graded straight out of camera.",
8404
8471
  morphAt: 30
8405
8472
  },
8406
- description: "Default warm-gradient sunset post \u2192 editor."
8473
+ description: "Default coral-to-blue gradient post \u2192 editor."
8407
8474
  },
8408
8475
  {
8409
8476
  name: "cool-portrait",
8410
8477
  mood: ["tech-demo"],
8411
8478
  params: {
8412
- imageColorA: "#5fa5a0",
8413
- imageColorB: "#7b93b0",
8414
- imageColorC: "#9b8bb0",
8479
+ imageColorA: TEAL,
8480
+ imageColorB: BLUE,
8481
+ imageColorC: VIOLET,
8415
8482
  postAuthor: "Renji Tanaka",
8416
8483
  postBody: "Studio portrait, midday light.",
8417
8484
  morphAt: 24
@@ -8422,8 +8489,8 @@ var config31 = {
8422
8489
  textParam: "postBody",
8423
8490
  subtextParam: "postAuthor",
8424
8491
  tokens: [
8425
- { propPath: "editorBackground", cssVar: "--cf-bg", fallback: "#14100c", brandKitPath: "colors.background" },
8426
- { propPath: "accent", cssVar: "--cf-accent", fallback: "#f4ece0", brandKitPath: "colors.accent" }
8492
+ { propPath: "editorBackground", cssVar: "--cf-bg", fallback: BG, brandKitPath: "colors.background" },
8493
+ { propPath: "accent", cssVar: "--cf-accent", fallback: TEXT_HI, brandKitPath: "colors.accent" }
8427
8494
  ],
8428
8495
  durationInFrames: 180,
8429
8496
  fps: 30,