@cueframe/kernel 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/dist/_members/animate/index.d.ts +8 -2
  2. package/dist/_members/animate/layout/FlexLayout.d.ts +69 -0
  3. package/dist/_members/animate/layout/fit.d.ts +44 -0
  4. package/dist/_members/animate/layout/index.d.ts +3 -0
  5. package/dist/_members/animate/layout/solveFlex.d.ts +70 -0
  6. package/dist/_members/animate/media/MediaTileScene.d.ts +65 -0
  7. package/dist/_members/animate/media/recipes.d.ts +61 -0
  8. package/dist/_members/animate/scene/FocusPass.d.ts +76 -0
  9. package/dist/_members/animate/scene/UnlitPlane.d.ts +45 -0
  10. package/dist/_members/animate/scene/__oracle__/cssProjection.d.ts +24 -0
  11. package/dist/_members/animate/scene/assets.d.ts +21 -0
  12. package/dist/_members/animate/scene/backdrop.d.ts +7 -0
  13. package/dist/_members/animate/scene/coordinates.d.ts +58 -0
  14. package/dist/_members/animate/scene/deviceOpacity.d.ts +18 -0
  15. package/dist/_members/animate/scene/errors.d.ts +14 -0
  16. package/dist/_members/animate/scene/finishing.d.ts +69 -0
  17. package/dist/_members/animate/scene/finishingMath.d.ts +60 -0
  18. package/dist/_members/animate/scene/finishingPass.d.ts +35 -0
  19. package/dist/_members/animate/scene/focusBlur.d.ts +56 -0
  20. package/dist/_members/animate/scene/focusResources.d.ts +190 -0
  21. package/dist/_members/animate/scene/focusShaders.d.ts +68 -0
  22. package/dist/_members/animate/scene/fontReadiness.d.ts +27 -0
  23. package/dist/_members/animate/scene/grainNoise.d.ts +118 -0
  24. package/dist/_members/animate/scene/index.d.ts +19 -0
  25. package/dist/_members/animate/scene/internal.d.ts +29 -0
  26. package/dist/_members/animate/scene/planeFit.d.ts +46 -0
  27. package/dist/_members/animate/scene/preparedWorldText.d.ts +25 -0
  28. package/dist/_members/animate/scene/rasterCache.d.ts +30 -0
  29. package/dist/_members/animate/scene/rasterReadiness.d.ts +33 -0
  30. package/dist/_members/animate/scene/readiness.d.ts +69 -0
  31. package/dist/_members/animate/scene/redraw.d.ts +10 -0
  32. package/dist/_members/animate/scene/render.d.ts +9 -0
  33. package/dist/_members/animate/scene/scaling.d.ts +13 -0
  34. package/dist/_members/animate/scene/text.d.ts +40 -0
  35. package/dist/_members/animate/scene/textLayout.d.ts +78 -0
  36. package/dist/_members/animate/scene/textureImageSize.d.ts +4 -0
  37. package/dist/_members/animate/scene/useSceneImageTexture.d.ts +21 -0
  38. package/dist/_members/animate/scene/useWorldTextTexture.d.ts +21 -0
  39. package/dist/_members/animate/scene/v2/MeasuredPlaneGeometry.d.ts +7 -0
  40. package/dist/_members/animate/scene/v2/PhotographicStudioRig.d.ts +11 -0
  41. package/dist/_members/animate/scene/v2/PreparedSceneShotV1.d.ts +12 -0
  42. package/dist/_members/animate/scene/v2/SceneShotV2.d.ts +59 -0
  43. package/dist/_members/animate/scene/v2/builders.d.ts +170 -0
  44. package/dist/_members/animate/scene/v2/finishes.d.ts +152 -0
  45. package/dist/_members/animate/scene/v2/lighting.d.ts +119 -0
  46. package/dist/_members/animate/scene/v2/observePmremTargets.d.ts +4 -0
  47. package/dist/_members/animate/scene/v2/preparationFacts.d.ts +32 -0
  48. package/dist/_members/animate/scene/v2/preparedSurface.d.ts +17 -0
  49. package/dist/_members/animate/scene/v2/projectedResolution.d.ts +2 -0
  50. package/dist/_members/animate/scene/v2/renderTargetObserver.d.ts +5 -0
  51. package/dist/_members/animate/scene/v2/runtimeAllocations.d.ts +55 -0
  52. package/dist/_members/animate/scene/v2/shadow.d.ts +23 -0
  53. package/dist/_members/animate/scene/v2/slabGeometry.d.ts +134 -0
  54. package/dist/_members/animate/scene/v2/slots.d.ts +73 -0
  55. package/dist/_members/animate/scene/v2/videoBinding.d.ts +39 -0
  56. package/dist/_members/animate/scene/worldBounds.d.ts +19 -0
  57. package/dist/_members/animate/scene/worldTextRaster.d.ts +87 -0
  58. package/dist/_members/animate/scene/worldTextTexture.d.ts +32 -0
  59. package/dist/_members/animate/stage/PerspectiveStage.d.ts +73 -0
  60. package/dist/_members/animate/stage/camera.d.ts +143 -0
  61. package/dist/_members/animate/stage/dof.d.ts +9 -0
  62. package/dist/_members/animate/stage/index.d.ts +6 -0
  63. package/dist/_members/animate/stage/presets.d.ts +17 -0
  64. package/dist/_members/animate/three/DeviceMesh.d.ts +256 -0
  65. package/dist/_members/animate/three/SceneCameraRig.d.ts +12 -0
  66. package/dist/_members/animate/three/StageCameraRig.d.ts +7 -0
  67. package/dist/_members/animate/three/StudioRig.d.ts +228 -0
  68. package/dist/_members/animate/three/ThreeCanvas.d.ts +22 -0
  69. package/dist/_members/animate/three/defaultScreen.d.ts +23 -0
  70. package/dist/_members/animate/three/index.d.ts +7 -1
  71. package/dist/_members/animate/three/textureLifecycle.d.ts +29 -0
  72. package/dist/_members/animate/three/toneMapping.d.ts +113 -0
  73. package/dist/_members/animate/three/useImageTexture.d.ts +17 -0
  74. package/dist/_members/authoring/index.d.ts +2 -0
  75. package/dist/_members/authoring/scene/index.d.ts +6 -0
  76. package/dist/_members/authoring/scene/materialize.d.ts +47 -0
  77. package/dist/_members/authoring/scene/validate.d.ts +80 -0
  78. package/dist/_members/authoring/scene/wrapper.d.ts +41 -0
  79. package/dist/_members/component-runtime/allowedImports.d.ts +3 -0
  80. package/dist/_members/component-runtime/allowedImports.d.ts.map +1 -0
  81. package/dist/_members/component-runtime/bake.d.ts +8 -0
  82. package/dist/_members/component-runtime/bake.d.ts.map +1 -1
  83. package/dist/_members/component-runtime/browserFirewall.d.ts +7 -1
  84. package/dist/_members/component-runtime/browserFirewall.d.ts.map +1 -1
  85. package/dist/_members/component-runtime/browserOptions.d.ts +59 -3
  86. package/dist/_members/component-runtime/browserOptions.d.ts.map +1 -1
  87. package/dist/_members/component-runtime/canonicalIdentity.d.ts +14 -0
  88. package/dist/_members/component-runtime/canonicalIdentity.d.ts.map +1 -1
  89. package/dist/_members/component-runtime/contracts.d.ts +341 -1
  90. package/dist/_members/component-runtime/contracts.d.ts.map +1 -1
  91. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts +5 -0
  92. package/dist/_members/component-runtime/fixtures/imageTileDriftWall.d.ts.map +1 -0
  93. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts +5 -0
  94. package/dist/_members/component-runtime/fixtures/mediaTileMixed.d.ts.map +1 -0
  95. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts +8 -0
  96. package/dist/_members/component-runtime/fixtures/mediaTileVideo.d.ts.map +1 -0
  97. package/dist/_members/component-runtime/importPolicy.d.ts +3 -2
  98. package/dist/_members/component-runtime/importPolicy.d.ts.map +1 -1
  99. package/dist/_members/component-runtime/index.d.ts +3 -0
  100. package/dist/_members/component-runtime/index.d.ts.map +1 -1
  101. package/dist/_members/component-runtime/livePreviewProxy.d.ts +7 -0
  102. package/dist/_members/component-runtime/livePreviewProxy.d.ts.map +1 -0
  103. package/dist/_members/component-runtime/localRoot.d.ts +37 -0
  104. package/dist/_members/component-runtime/localRoot.d.ts.map +1 -0
  105. package/dist/_members/component-runtime/mediaResolution.d.ts +25 -0
  106. package/dist/_members/component-runtime/mediaResolution.d.ts.map +1 -0
  107. package/dist/_members/component-runtime/render.d.ts +151 -13
  108. package/dist/_members/component-runtime/render.d.ts.map +1 -1
  109. package/dist/_members/component-runtime/renderDiagnostics.d.ts +14 -0
  110. package/dist/_members/component-runtime/renderDiagnostics.d.ts.map +1 -0
  111. package/dist/_members/component-runtime/sceneAdmission.d.ts +47 -0
  112. package/dist/_members/component-runtime/sceneAdmission.d.ts.map +1 -0
  113. package/dist/_members/component-runtime/sourceWorkspace.d.ts +8 -0
  114. package/dist/_members/component-runtime/sourceWorkspace.d.ts.map +1 -1
  115. package/dist/_members/component-runtime/webglProbe.d.ts +191 -0
  116. package/dist/_members/component-runtime/webglProbe.d.ts.map +1 -0
  117. package/dist/_members/composition/fonts/bundledFaces.d.ts +150 -0
  118. package/dist/_members/composition/fonts/captionFaces.d.ts +268 -0
  119. package/dist/_members/composition/fonts.d.ts +11 -4
  120. package/dist/_members/composition/graphics-plan/schemas.d.ts +4 -4
  121. package/dist/_members/composition/ops/types.d.ts +1 -1
  122. package/dist/_members/composition/primitive-catalog/types.d.ts +1 -0
  123. package/dist/_members/composition/projection/behind-readiness.d.ts +3 -0
  124. package/dist/_members/composition/projection/brandKit.d.ts +6 -0
  125. package/dist/_members/composition/projection/composition-floor.d.ts +2 -1
  126. package/dist/_members/composition/scene/animation.d.ts +25 -0
  127. package/dist/_members/composition/scene/budget.d.ts +29 -0
  128. package/dist/_members/composition/scene/budgetPolicy.d.mts +13 -0
  129. package/dist/_members/composition/scene/clipRules.d.ts +119 -0
  130. package/dist/_members/composition/scene/constraints.d.ts +61 -0
  131. package/dist/_members/composition/scene/device.d.ts +21 -0
  132. package/dist/_members/composition/scene/examples.d.ts +11 -0
  133. package/dist/_members/composition/scene/index.d.ts +11 -0
  134. package/dist/_members/composition/scene/photographicRig.d.ts +242 -0
  135. package/dist/_members/composition/scene/preparedRender.d.ts +239 -0
  136. package/dist/_members/composition/scene/resolution.d.ts +178 -0
  137. package/dist/_members/composition/scene/schema.d.ts +351 -0
  138. package/dist/_members/composition/scene/videoSchedule.d.ts +43 -0
  139. package/dist/_members/composition/validators/brandKit.d.ts +1 -0
  140. package/dist/_members/composition/validators/render.d.ts +2 -0
  141. package/dist/_members/composition-ops/index.d.ts +45 -0
  142. package/dist/_members/composition-ops/opRecorder.d.ts +1 -1
  143. package/dist/_members/core/render/compositionRender.d.ts +41 -9
  144. package/dist/_members/core/render/index.d.ts +9 -2
  145. package/dist/_members/core/render/sceneCaptureIdentity.d.ts +14 -0
  146. package/dist/_members/core/render/sceneShotPlan.d.ts +142 -0
  147. package/dist/_members/core/render/sceneShotPreparation.d.ts +57 -0
  148. package/dist/_members/core/render/slabDescriptor.d.ts +21 -0
  149. package/dist/_members/core/render/trackProjection.d.ts +33 -0
  150. package/dist/_members/core/render/types.d.ts +142 -0
  151. package/dist/_members/errors/registry.d.ts +6 -0
  152. package/dist/_members/mcp/adapter.d.ts +5 -0
  153. package/dist/_members/mcp/generated/sceneContract.d.ts +155 -0
  154. package/dist/_members/mcp/sceneShot.d.ts +38 -0
  155. package/dist/_members/mcp/sceneShotExample.d.ts +22 -0
  156. package/dist/_members/media-model/api.d.ts +1 -0
  157. package/dist/_members/media-model/media-kind.d.ts +1 -1
  158. package/dist/_members/media-model/testing/mediaStoreContract.d.ts +1 -1
  159. package/dist/_members/primitives/effects/index.d.ts +1 -0
  160. package/dist/_members/primitives/effects/stage-camera/config.d.ts +50 -0
  161. package/dist/_members/primitives/effects/stage-camera/index.d.ts +31 -0
  162. package/dist/_members/primitives/layouts/flex-layout/config.d.ts +73 -0
  163. package/dist/_members/primitives/layouts/flex-layout/index.d.ts +4 -0
  164. package/dist/_members/primitives/layouts/index.d.ts +1 -0
  165. package/dist/_members/primitives/layouts/picture-in-picture/config.d.ts +1 -1
  166. package/dist/_members/primitives/lib/frameScale.d.ts +4 -0
  167. package/dist/_members/primitives/lib/index.d.ts +1 -0
  168. package/dist/_members/primitives/lib/palette.d.ts +30 -30
  169. package/dist/_members/primitives/lib/text/contrast.d.ts +2 -1
  170. package/dist/_members/primitives/lib/text/spec.d.ts +0 -8
  171. package/dist/_members/primitives/lib/types.d.ts +2 -0
  172. package/dist/_members/primitives/scenes/device-showcase/config.d.ts +41 -0
  173. package/dist/_members/primitives/scenes/device-showcase/index.d.ts +36 -0
  174. package/dist/_members/primitives/scenes/hero-device-assemble/config.d.ts +1 -0
  175. package/dist/_members/primitives/scenes/hero-device-assemble/index.d.ts +2 -1
  176. package/dist/_members/primitives/scenes/index.d.ts +1 -0
  177. package/dist/_members/primitives/ui-blocks/badge-pop/config.d.ts +1 -1
  178. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/config.d.ts +1 -0
  179. package/dist/_members/primitives/ui-blocks/device-mockup-zoom/index.d.ts +2 -1
  180. package/dist/_members/primitives/ui-blocks/terminal-simulator/config.d.ts +1 -1
  181. package/dist/_members/primitives/ui-blocks/toast-notification/config.d.ts +1 -1
  182. package/dist/_members/render-harness/cardAssetAdmission.d.ts.map +1 -1
  183. package/dist/_members/render-harness/cardRender.d.ts.map +1 -1
  184. package/dist/_members/render-harness/css-tree-subpaths.d.ts +11 -0
  185. package/dist/_members/render-harness/extractSegments.d.ts +1 -0
  186. package/dist/_members/render-harness/extractSegments.d.ts.map +1 -1
  187. package/dist/_members/render-harness/imageHeader.d.ts +14 -0
  188. package/dist/_members/render-harness/imageHeader.d.ts.map +1 -0
  189. package/dist/_members/render-harness/index.d.ts +6 -0
  190. package/dist/_members/render-harness/index.d.ts.map +1 -1
  191. package/dist/_members/render-harness/materializeSources.d.ts +46 -2
  192. package/dist/_members/render-harness/materializeSources.d.ts.map +1 -1
  193. package/dist/_members/render-harness/nodeScenePreparation.d.ts +97 -0
  194. package/dist/_members/render-harness/nodeScenePreparation.d.ts.map +1 -0
  195. package/dist/_members/render-harness/remotion-runtime.d.ts +16 -2
  196. package/dist/_members/render-harness/renderInputAssets.d.ts +1 -1
  197. package/dist/_members/render-harness/renderInputAssets.d.ts.map +1 -1
  198. package/dist/_members/render-harness/resolveAssets.d.ts +2 -2
  199. package/dist/_members/render-harness/resolveAssets.d.ts.map +1 -1
  200. package/dist/_members/render-harness/sceneShotAssets.d.ts +17 -0
  201. package/dist/_members/render-harness/sceneShotAssets.d.ts.map +1 -0
  202. package/dist/animate/preparation-facts.d.ts +1 -0
  203. package/dist/animate/preparation-facts.js +22 -0
  204. package/dist/animate.js +336 -1005
  205. package/dist/authoring/build-tools.js +7 -6
  206. package/dist/authoring/context.js +5 -4
  207. package/dist/authoring/prompts.js +1 -1
  208. package/dist/authoring/scene.d.ts +1 -0
  209. package/dist/authoring/scene.js +50 -0
  210. package/dist/authoring/tools.js +6 -5
  211. package/dist/authoring.js +49 -29
  212. package/dist/chunk-2L7PYYJK.js +23 -0
  213. package/dist/{chunk-ZN6P3KOJ.js → chunk-32TH76H3.js} +2 -2
  214. package/dist/chunk-5DJ3IEJR.js +4424 -0
  215. package/dist/chunk-6BVVCRRD.js +26488 -0
  216. package/dist/{chunk-DQKSCHFC.js → chunk-6EWRIAZA.js} +187 -66
  217. package/dist/{chunk-YQ7FFW3G.js → chunk-6VWICHOZ.js} +26 -5
  218. package/dist/{chunk-2PGLNTB7.js → chunk-A74FZCPY.js} +45 -5
  219. package/dist/{chunk-C5SEPOWD.js → chunk-AS5EXBNS.js} +1792 -707
  220. package/dist/{chunk-BKHGL4MB.js → chunk-B3GSTQLR.js} +341 -274
  221. package/dist/chunk-BVA3537Z.js +63 -0
  222. package/dist/{chunk-DHKQ47Q6.js → chunk-DAARYRNT.js} +6 -1
  223. package/dist/chunk-DQLYWNLC.js +2063 -0
  224. package/dist/chunk-E6WHXIDF.js +3619 -0
  225. package/dist/{chunk-NOEBAV2G.js → chunk-E7GIZEPS.js} +1 -1
  226. package/dist/{chunk-M2TLRXEO.js → chunk-EXY4JJPH.js} +1 -1
  227. package/dist/{chunk-GEGRJKKO.js → chunk-F2DJL7P7.js} +1 -1
  228. package/dist/{chunk-AWT3P5ZN.js → chunk-FVDFPJHT.js} +1 -1
  229. package/dist/{chunk-EMGFZ3PR.js → chunk-FWSJLHSV.js} +5 -1
  230. package/dist/{chunk-TMIBBD5E.js → chunk-I5QWBM3M.js} +280 -113
  231. package/dist/{chunk-IBMJ33EL.js → chunk-I5RX2QZT.js} +1 -1
  232. package/dist/{chunk-4FOOBSEE.js → chunk-J3DIUG24.js} +1 -0
  233. package/dist/{chunk-AD5HWBCE.js → chunk-JX53CVJV.js} +14 -5
  234. package/dist/{chunk-LNBVTDFR.js → chunk-L2AHS3AW.js} +1 -1
  235. package/dist/{chunk-BDMTUEEZ.js → chunk-LT4PWSR2.js} +2 -2
  236. package/dist/chunk-MH3UPKWR.js +3415 -0
  237. package/dist/{chunk-RFXR7ATW.js → chunk-NUKDEOK6.js} +13 -1
  238. package/dist/{chunk-IJ7PVJTK.js → chunk-ODUWCQI3.js} +3 -2
  239. package/dist/chunk-QAGGJHAF.js +16 -0
  240. package/dist/chunk-QS36DMFG.js +332 -0
  241. package/dist/{chunk-G5BFI32U.js → chunk-RAXHCRVV.js} +1 -1
  242. package/dist/{chunk-BIBYZJL3.js → chunk-RL5SO653.js} +3 -3
  243. package/dist/{chunk-ZSZABOE5.js → chunk-S5H6GH6M.js} +1 -1
  244. package/dist/{chunk-EEXCDFY5.js → chunk-SD25VQDE.js} +1 -1
  245. package/dist/{chunk-Y3QGYASW.js → chunk-SX523NDS.js} +14 -14
  246. package/dist/chunk-TARKDVP6.js +430 -0
  247. package/dist/{chunk-IHFREGFA.js → chunk-TCHPRGC5.js} +18 -2
  248. package/dist/{chunk-ZCAQHNPI.js → chunk-UKGNHZS4.js} +1 -1
  249. package/dist/{chunk-KU376ELE.js → chunk-UY77TMKD.js} +31 -44
  250. package/dist/chunk-VKATKWWR.js +1462 -0
  251. package/dist/{chunk-CX2IIQ4R.js → chunk-W2245F6G.js} +29 -29
  252. package/dist/{chunk-XHUYWVYK.js → chunk-WBNFSG6T.js} +1 -1
  253. package/dist/chunk-WIHXXF3X.js +221 -0
  254. package/dist/{chunk-XVBOSPZI.js → chunk-X74EEFXV.js} +6 -6
  255. package/dist/{chunk-7KEUL3FI.js → chunk-XF2QMKRG.js} +9 -1
  256. package/dist/{chunk-HFC3MKXA.js → chunk-Y4HPN4BC.js} +1 -0
  257. package/dist/{chunk-6XI57FZZ.js → chunk-YFSBFCXO.js} +1022 -46
  258. package/dist/{chunk-6ID2J64H.js → chunk-YHC3RXS7.js} +162 -25
  259. package/dist/{chunk-KKEY5MIW.js → chunk-ZS3A3QUM.js} +16 -16
  260. package/dist/{chunk-LQUWKBST.js → chunk-ZVG446DJ.js} +139 -10
  261. package/dist/component-runtime/browserOptions.js +14 -3
  262. package/dist/component-runtime/contracts.js +35 -3
  263. package/dist/component-runtime/identity/browser.js +1 -1
  264. package/dist/component-runtime/identity.js +2 -2
  265. package/dist/component-runtime/importPolicy.js +2 -2
  266. package/dist/component-runtime/mediaResolution.d.ts +1 -0
  267. package/dist/component-runtime/mediaResolution.js +11 -0
  268. package/dist/component-runtime/render.js +38 -5
  269. package/dist/component-runtime.js +118 -14
  270. package/dist/compose.js +27 -21
  271. package/dist/composition/fonts.js +64 -67
  272. package/dist/composition/graphics-plan.js +3 -2
  273. package/dist/composition/ops.js +4 -3
  274. package/dist/composition/primitive-catalog.js +1 -1
  275. package/dist/composition/projection.js +10 -3
  276. package/dist/composition/scene/budget-policy.d.ts +1 -0
  277. package/dist/composition/scene/budget-policy.js +17 -0
  278. package/dist/composition/scene/schema.json +2757 -0
  279. package/dist/composition/scene.d.ts +1 -0
  280. package/dist/composition/scene.js +275 -0
  281. package/dist/composition/validators.js +3 -2
  282. package/dist/composition-ops.js +103 -13
  283. package/dist/composition.js +12 -5
  284. package/dist/{context-4GSDBFT3.js → context-IUPQ54V4.js} +5 -4
  285. package/dist/core/render.js +54 -3
  286. package/dist/core/select.js +2 -2
  287. package/dist/core.js +6 -3
  288. package/dist/director/ai-sdk.js +3 -3
  289. package/dist/director/domain.js +2 -2
  290. package/dist/director.js +3 -3
  291. package/dist/errors.js +1 -1
  292. package/dist/mcp/adapter.js +4 -4
  293. package/dist/mcp/core.js +1 -1
  294. package/dist/mcp/curation.js +1 -1
  295. package/dist/mcp/server.js +4 -4
  296. package/dist/mcp.js +4 -4
  297. package/dist/media-model/media-kind.js +2 -0
  298. package/dist/media-model/testing.js +16 -11
  299. package/dist/media-model.js +1 -1
  300. package/dist/nle-export.js +27 -21
  301. package/dist/primitives/backgrounds.js +2 -2
  302. package/dist/primitives/captions.js +21 -11
  303. package/dist/primitives/effects.js +14 -4
  304. package/dist/primitives/graphics.json +3 -0
  305. package/dist/primitives/hero-text.js +4 -3
  306. package/dist/primitives/layouts.js +9 -2
  307. package/dist/primitives/lib/frameScale.d.ts +1 -0
  308. package/dist/primitives/lib/frameScale.js +11 -0
  309. package/dist/primitives/lib/index.js +18 -10
  310. package/dist/primitives/lib/palette.js +1 -1
  311. package/dist/primitives/lib/text/contrast.js +2 -1
  312. package/dist/primitives/lib/text/typeface.js +1 -1
  313. package/dist/primitives/lib.js +18 -10
  314. package/dist/primitives/params-required.json +3 -0
  315. package/dist/primitives/scenes.js +12 -3
  316. package/dist/primitives/text.js +5 -5
  317. package/dist/primitives/transitions.js +2 -2
  318. package/dist/primitives/ui-blocks.js +7 -6
  319. package/dist/primitives/version-map.json +5 -2
  320. package/dist/primitives.js +27 -20
  321. package/dist/render-harness/cardAssetAdmission.js +2 -2
  322. package/dist/render-harness/renderInputAssets.js +2 -2
  323. package/dist/render-harness.js +876 -126
  324. package/package.json +51 -17
  325. package/dist/_members/animate/three/drei.d.ts +0 -6
  326. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts +0 -9
  327. package/dist/_members/component-runtime/fixtures/webgpuTiledRefraction.d.ts.map +0 -1
  328. package/dist/chunk-4JRUGT2Y.js +0 -544
  329. package/dist/chunk-5OTQ7M43.js +0 -718
  330. package/dist/chunk-CGHTMZNC.js +0 -6
  331. package/dist/chunk-QBKDEO7J.js +0 -9521
  332. /package/dist/{chunk-H5LMJKZU.js → chunk-JVDUSOYG.js} +0 -0
@@ -0,0 +1,150 @@
1
+ /**
2
+ * WHAT FONT FILES THIS BUILD ACTUALLY SHIPS, and the questions a refusal asks of them.
3
+ *
4
+ * The renderer draws a face only where bytes exist for that exact family, weight and style; it
5
+ * never lets the browser substitute a nearby file or slant an upright one. Everything that
6
+ * decision needs is here: the vendored and aliased families, the file-by-file weight declarations
7
+ * they were checked in with, the lookups over them, and the resolution of a CSS font STACK to the
8
+ * one bundled family (if any) it names.
9
+ *
10
+ * Split out of `fonts.ts` so the facts sit apart from the caption policy built on them
11
+ * (`fonts/captionFaces.ts`) — a move, not a rewrite. `../fonts.ts` re-exports both, so every
12
+ * existing `@cueframe/composition/fonts` import is unchanged.
13
+ */
14
+ export declare const VENDORED_FONT_FAMILIES: readonly ["Inter", "Space Mono", "Montserrat", "Roboto", "Poppins", "Oswald", "Playfair Display", "Bebas Neue", "Instrument Serif", "National Park", "Bricolage Grotesque", "Schibsted Grotesk"];
15
+ export type VendoredFontFamily = (typeof VENDORED_FONT_FAMILIES)[number];
16
+ export declare const ALIASED_FONT_FAMILIES: readonly ["Georgia"];
17
+ export type AliasedFontFamily = (typeof ALIASED_FONT_FAMILIES)[number];
18
+ /** One bundled file, and the weights it actually carries. */
19
+ export interface BundledFontFace {
20
+ /**
21
+ * The CSS `font-weight` descriptor the file is registered under: a single weight for a static
22
+ * face, or `"<lo> <hi>"` for a variable font's declared `wght` axis range.
23
+ */
24
+ readonly weight: string;
25
+ /** The `-<file>.woff2` suffix that carries it, i.e. `public/fonts/<slug>-<file>.woff2`. */
26
+ readonly file: "400" | "700";
27
+ }
28
+ /**
29
+ * The weights a caption run is drawn at when the style names none.
30
+ *
31
+ * DECLARED per family, not derived: there is no runtime nearest-weight search anywhere in this
32
+ * file. A family that ships 400 and 700 declares 400/700; a variable family that carries the
33
+ * house pair declares 600/800 so its look does not change. The invariant the table exists for is
34
+ * that every declared default has bytes behind it — `fonts.test.ts` asserts exactly that — so
35
+ * `{ fontFamily: "Poppins" }` alone names a face the render can draw.
36
+ */
37
+ export interface CaptionFaceDefaults {
38
+ /** The ordinary run's weight. */
39
+ readonly base: number;
40
+ /** The weight an emphasised word is drawn at. */
41
+ readonly emphasis: number;
42
+ }
43
+ /** The files behind one bundled family. */
44
+ export interface BundledFontFamilyFaces {
45
+ /**
46
+ * The `public/fonts` filename stem. It is the family lowercased with spaces hyphenated for every
47
+ * vendored family; an aliased family is the one case where the registered family name differs
48
+ * from the file stem (Georgia is served by the metric-compatible Gelasio binary).
49
+ */
50
+ readonly slug: string;
51
+ readonly faces: readonly BundledFontFace[];
52
+ /** What a caption drawn in this family weighs when the style leaves the weight unset. */
53
+ readonly captionDefaults: CaptionFaceDefaults;
54
+ }
55
+ /**
56
+ * What bytes actually ship with the render bundle, per family.
57
+ *
58
+ * This is the single source for the two facts every font gate needs before it may claim a face is
59
+ * reproducible: which weights a bundled or aliased family's file declares, and that no bundled or
60
+ * aliased family ships an italic file at all. Both gates read this one table — render-entry's
61
+ * loader (`packages/execution/render-entry/src/fonts.ts`) derives its face table and its
62
+ * `staticFile('fonts/<slug>-<file>.woff2')` URLs from it, and core's scene-shot sealing
63
+ * (`sealSceneShotFonts`) admits a bundled face by it — so the host-side seal and the page-side
64
+ * admission agree by construction rather than by two hand-kept copies.
65
+ *
66
+ * A declared weight range must not exceed what the file carries: outside it the browser
67
+ * synthesises the face, which is a silent substitution, not a render. `fonts.test.ts` in
68
+ * render-entry asserts every face here has bytes on disk and that no italic file exists, so these
69
+ * facts cannot drift away from the bytes.
70
+ */
71
+ export declare const BUNDLED_FONT_FACES: Readonly<Record<VendoredFontFamily | AliasedFontFamily, BundledFontFamilyFaces>>;
72
+ /**
73
+ * The only style a bundled or aliased family can be rendered in. There is no italic file in
74
+ * `public/fonts` for any of them, so an italic request against one has no bytes behind it: the
75
+ * browser would slant the upright face, which is neither the typeface the author asked for nor
76
+ * reproducible across engines. A real italic comes from a sealed brand font asset.
77
+ */
78
+ export declare const BUNDLED_FONT_STYLE: "normal";
79
+ /** The files behind a bundled or aliased family, or `undefined` when nothing ships for it. */
80
+ export declare function bundledFontFamilyFaces(family: string): BundledFontFamilyFaces | undefined;
81
+ /** True when a bundled file declares this weight, whether as a single value or a variable range. */
82
+ export declare function bundledFaceCoversWeight(face: BundledFontFace, weight: number): boolean;
83
+ /**
84
+ * Whether bytes ship for exactly this (family, weight, style). This is the whole bundled-face
85
+ * rule: the family must be bundled or aliased, the style must be upright because no italic file
86
+ * exists, and some file must declare the weight.
87
+ */
88
+ export declare function bundledFontFaceExists(family: string, weight: number, style: "normal" | "italic"): boolean;
89
+ /** The weights a bundled family covers, phrased for an error message ("400-900", "400, 700"). */
90
+ export declare function describeBundledFontWeights(family: string): string;
91
+ /** The field a refused (family, weight, style) belongs to. */
92
+ export type UnrenderableFaceField = "fontFamily" | "fontWeight" | "fontStyle";
93
+ /** What a render's sealed brand font manifest carries, as the two questions a refusal asks it. */
94
+ export interface SealedFontManifestFacts {
95
+ /** Whether the manifest seals any face of this family. */
96
+ hasFamily(family: string): boolean;
97
+ /** Whether it seals this family at this weight, in any style. */
98
+ hasWeight(family: string, weight: number): boolean;
99
+ }
100
+ /**
101
+ * Which field an author has to change for a face that cannot be drawn.
102
+ *
103
+ * This is one decision with two callers that must agree to the letter. Host-side sealing
104
+ * (`sealSceneShotFonts` in `@cueframe/core`) reports `layers.N.<field>` when it refuses to seal a
105
+ * scene layer's face; the render page reports the same path when the same face is refused at
106
+ * admission — because a marker that reached the page unsealed, or a render input edited after the
107
+ * seal, must not be described differently from the same defect caught an hour earlier. The order
108
+ * below is sealing's order: sealed manifest, then bundled bytes, then the family's own coverage.
109
+ *
110
+ * `fontStyle` when the family has bytes but not in this style; `fontWeight` when the style is
111
+ * available but the weight is not; `fontFamily` when nothing anywhere ships the family.
112
+ */
113
+ export declare function unrenderableFaceField(family: string, weight: number, style: "normal" | "italic", sealed: SealedFontManifestFacts): UnrenderableFaceField;
114
+ /** `"Inter", 'Helvetica Neue', sans-serif` → the family names, unquoted and trimmed. */
115
+ export declare function parseFontStack(value: string): string[];
116
+ /**
117
+ * True when a stack names ONLY CSS generic families — `sans-serif`, `serif, system-ui`.
118
+ *
119
+ * A generic names a CATEGORY the engine picks from, never a file: no font bundle carries one and
120
+ * no brand kit can seal one, because the names are reserved. So a caption authored with such a
121
+ * stack has no admissible face at any weight, and the render page refuses it at its family
122
+ * (`render-entry/src/fonts.ts`, which admits `use.stack` against the sealed manifest).
123
+ *
124
+ * It is deliberately NOT one of `captionFaceIssues`' issues: those name a weight or a style that
125
+ * has no file, and this is a family that has no file at ANY weight, which is a different field and
126
+ * a different sentence. Surfaces that must agree with the page — the editor preview gate — ask
127
+ * this as well. An absent or empty stack is not generic-only: that is the built-in default stack,
128
+ * which leads with a bundled family.
129
+ */
130
+ export declare function isGenericOnlyStack(stack: string | undefined | null): boolean;
131
+ /**
132
+ * Which bundled family a font stack will actually render with.
133
+ *
134
+ * - `{ kind: "bundled" }` — the stack names bundled families (and CSS generics) only, so the face
135
+ * must come from a file this table describes.
136
+ * - `{ kind: "default" }` — no stack at all, so the render falls back to a bundled face; which one
137
+ * is not knowable here, but every one of them is upright.
138
+ * - `{ kind: "unknown" }` — the stack names a family that is not bundled. It can only render from
139
+ * a brand font asset sealed for the render, whose faces a schema cannot see, so nothing about
140
+ * its weights or styles can be decided at edit time.
141
+ */
142
+ export type StackFontFamily = {
143
+ kind: "bundled";
144
+ family: string;
145
+ } | {
146
+ kind: "default";
147
+ } | {
148
+ kind: "unknown";
149
+ };
150
+ export declare function bundledFamilyForStack(stack: string | undefined | null): StackFontFamily;
@@ -0,0 +1,268 @@
1
+ /**
2
+ * THE CAPTION FACE RULE: which faces a caption style causes the renderer to draw, whether or not
3
+ * it names them, and which of those have no file behind them.
4
+ *
5
+ * Built on the file facts in `./bundledFaces` and used by four surfaces that must agree — the
6
+ * primitive that draws captions, the render page that admits them, the composition and brand-kit
7
+ * validators, and the Studio designer that offers the choices. Every one of them reads the same
8
+ * resolver here, so a defaulted face is valid by construction and visible in the UI.
9
+ *
10
+ * Split out of `fonts.ts` — a move, not a rewrite. `../fonts.ts` re-exports it, so every existing
11
+ * `@cueframe/composition/fonts` import is unchanged.
12
+ */
13
+ import { type CaptionFaceDefaults, type StackFontFamily } from "./bundledFaces.js";
14
+ /** The caption-style fields whose face has to exist before the render will draw it. */
15
+ export interface CaptionFaceFields {
16
+ fontFamily?: string;
17
+ fontWeight?: number;
18
+ emphasisFontFamily?: string;
19
+ emphasisFontWeight?: number;
20
+ emphasisFontStyle?: "normal" | "italic";
21
+ }
22
+ /**
23
+ * The face a caption run is drawn with when its style leaves the field unset.
24
+ *
25
+ * `fontFamily` is a STACK, not a family: it is what the primitive falls back to when a style names
26
+ * no font at all. `CAPTION_DEFAULT_FAMILY` below names the bundled family that stack actually
27
+ * draws from.
28
+ *
29
+ * The two weights here are the LAST resort — the pair used for a family whose files this module
30
+ * cannot see, i.e. a custom face sealed in the brand font manifest. A bundled or aliased family
31
+ * declares its own pair in `BUNDLED_FONT_FACES[family].captionDefaults`, because 600/800 is not a
32
+ * weight seven of the thirteen bundled families ship: judging a defaulted weight (which is right —
33
+ * the renderer draws no differently for having been left to its defaults) against a global pair
34
+ * turned the defaults into an accidental family allowlist.
35
+ */
36
+ export declare const CAPTION_FACE_DEFAULTS: Readonly<{
37
+ readonly fontFamily: "Inter, 'Helvetica Neue', Helvetica, Arial, sans-serif";
38
+ readonly fontWeight: 600;
39
+ readonly emphasisFontWeight: 800;
40
+ readonly emphasisFontStyle: "normal";
41
+ }>;
42
+ /**
43
+ * The bundled family the default stack draws from.
44
+ *
45
+ * Declared, not searched: `CAPTION_FACE_DEFAULTS.fontFamily` leads with Inter and the render
46
+ * bundle always loads Inter, so Inter is the family a caption with no `fontFamily` is drawn in —
47
+ * the later entries in that stack are there for a browser that has no webfont at all.
48
+ * `fonts.test.ts` pins this to the head of that stack, so the two cannot drift apart.
49
+ */
50
+ export declare const CAPTION_DEFAULT_FAMILY: "Inter";
51
+ /**
52
+ * Which family a caption font stack is drawn in.
53
+ *
54
+ * The one difference from `bundledFamilyForStack` is the absent stack: a caption that names no
55
+ * family is not undecidable, it is drawn in the default stack's family. A stack of pure CSS
56
+ * generics stays undecidable — `sans-serif` is whatever the engine picks, which is exactly what
57
+ * nothing here may guess.
58
+ */
59
+ export declare function captionStackFamily(stack: string | undefined | null): StackFontFamily;
60
+ /** The weights a caption in this family is drawn at when the style names none. */
61
+ export declare function captionDefaultWeights(resolved: StackFontFamily): CaptionFaceDefaults;
62
+ /** One face a caption style will actually be drawn with, and the field that chose it. */
63
+ export interface CaptionFaceUse {
64
+ /** `base` is the ordinary run; `emphasis` is the run an emphasised word is drawn with. */
65
+ readonly role: "base" | "emphasis";
66
+ /** The field an author changes to change this face. */
67
+ readonly field: keyof CaptionFaceFields;
68
+ /** The font stack this face is drawn from — the default stack when the style names none. */
69
+ readonly stack: string;
70
+ /** Which bundled family (if any) the stack resolves to. */
71
+ readonly resolved: StackFontFamily;
72
+ /** The weight this run is EFFECTIVELY drawn at, authored or declared. */
73
+ readonly weight: number;
74
+ readonly style: "normal" | "italic";
75
+ /** True when `weight`/`style` was declared rather than authored on the style. */
76
+ readonly fromDefault: boolean;
77
+ }
78
+ /** Both faces a caption style causes the renderer to draw, whether or not it names them. */
79
+ export interface CaptionFaces {
80
+ readonly base: CaptionFaceUse;
81
+ readonly emphasis: CaptionFaceUse;
82
+ }
83
+ /**
84
+ * THE resolver: the faces a caption style is actually drawn with.
85
+ *
86
+ * Family stack → that family's declared facts → the declared defaults → the authored overrides,
87
+ * in that order, once. Every surface that needs to know what a caption weighs reads this and only
88
+ * this: the primitive draws these weights (`Captions.tsx`), the render page admits them
89
+ * (`assertCaptionFontsAdmitted`), the schema judges them (`captionFaceIssues`) and the caption
90
+ * designer displays them. Two copies of this resolution is how the page came to admit `Poppins
91
+ * 400` for a run the primitive drew at 800.
92
+ *
93
+ * The emphasis face is always resolved, even when the style names no emphasis field, because the
94
+ * primitive draws an emphasised word whether or not the style mentions one.
95
+ */
96
+ export declare function resolveCaptionFaces(style: CaptionFaceFields): CaptionFaces;
97
+ /**
98
+ * The DISTINCT faces a caption style causes the renderer to draw, defaults included.
99
+ *
100
+ * This is `resolveCaptionFaces` with the emphasis run dropped when it is byte-for-byte the base
101
+ * run: a style whose emphasis face equals its base face asks the render for one face, so admitting
102
+ * or reporting it twice would name a second face that does not exist. Everything else — including
103
+ * `{ fontFamily: "Poppins" }`, whose emphasis run is drawn at Poppins' declared 700 — yields both.
104
+ *
105
+ * This is the list the render page admits and the list the schema judges, so neither can consider
106
+ * a face the other does not.
107
+ */
108
+ export declare function captionFaceUses(style: CaptionFaceFields): CaptionFaceUse[];
109
+ /** The caption fields a face refusal can name. Every schema carrying a caption style declares
110
+ * all of them, so an issue always has a path to sit on; `brandKit.test.ts` and
111
+ * `composition.test.ts` assert that against the schema shapes. */
112
+ export declare const CAPTION_FACE_ISSUE_FIELDS: readonly (keyof CaptionFaceFields)[];
113
+ export interface CaptionFaceIssue {
114
+ readonly field: keyof CaptionFaceFields;
115
+ readonly message: string;
116
+ /** The face that cannot be drawn. Two edits refuse the same face iff this is equal. */
117
+ readonly face: {
118
+ readonly family: string;
119
+ readonly weight: number;
120
+ readonly style: "normal" | "italic";
121
+ };
122
+ }
123
+ /**
124
+ * The caption faces that cannot be drawn, with the field an author has to change.
125
+ *
126
+ * The renderer admits a face only where bytes exist for that exact family, weight and style, so an
127
+ * italic of a bundled family or a weight outside its file's declared range fails before capture.
128
+ * Deciding it here means the author learns at edit time, with a field path, instead of watching a
129
+ * render die. It is deliberately silent about a family that is not bundled: that face can only
130
+ * come from a brand font asset sealed for the render, and this schema cannot see the manifest.
131
+ *
132
+ * It judges `captionFaceUses`, so a defaulted weight or style counts exactly as an authored one
133
+ * does — the renderer draws no differently for having been left to its defaults.
134
+ */
135
+ export declare function captionFaceIssues(style: CaptionFaceFields): CaptionFaceIssue[];
136
+ /**
137
+ * The unrenderable faces an edit INTRODUCES.
138
+ *
139
+ * An edit boundary judges this rather than the whole result. A caption style saved before these
140
+ * rules existed carries faces with no bytes, and judging the merged style refused every control in
141
+ * the drawer — including the ones that would repair it — because the violation the edit was trying
142
+ * to fix was still there when the edit was judged. So the rule is the delta: an edit may not name
143
+ * a face the style did not already name, and an edit that leaves the violation set unchanged or
144
+ * smaller goes through. The pre-existing violation is reported where a project's other load-time
145
+ * defects are reported, not by refusing the repair.
146
+ *
147
+ * Identity is the FACE, not the field: swapping Poppins 800 for Bebas Neue 800 leaves one issue at
148
+ * `fontWeight` either way, but it is a different face with no bytes and is refused as new.
149
+ */
150
+ export declare function introducedCaptionFaceIssues(base: CaptionFaceFields, next: CaptionFaceFields): CaptionFaceIssue[];
151
+ /**
152
+ * The caption-face fields a MERGE has to carry, in the order a merge resolves them.
153
+ *
154
+ * Only these five decide a face. Everything else on a caption style — colour, plate, entrance —
155
+ * cannot make the renderer ask for a file that does not exist.
156
+ */
157
+ export declare const CAPTION_FACE_MERGE_FIELDS: readonly (keyof CaptionFaceFields)[];
158
+ /** One brand kit font slot, as much of it as the caption face rule reads. */
159
+ export interface CaptionFamilyRef {
160
+ readonly family?: string | undefined;
161
+ }
162
+ /** A brand kit's font block. `heading` is required exactly as the kit schema requires it. */
163
+ export interface CaptionKitFonts<T extends CaptionFamilyRef = CaptionFamilyRef> {
164
+ readonly heading: T;
165
+ readonly body?: T | undefined;
166
+ readonly caption?: T | undefined;
167
+ }
168
+ /** Which of a kit's three font slots supplies the caption face. */
169
+ export type CaptionFontSlot = "caption" | "body" | "heading";
170
+ /**
171
+ * THE caption font slot: the ref a kit's captions are drawn from.
172
+ *
173
+ * `resolveBrandKit` reads this and so does every gate that judges a kit, because the chain picks a
174
+ * REF and then reads that ref's family — not the first family among the three. An uploaded caption
175
+ * ref carrying no family name leaves the caption family unset even when the body slot has one, and
176
+ * a second copy of this chain is how a validator came to judge a family the projection never drew.
177
+ */
178
+ export declare function captionFontSource<T extends CaptionFamilyRef>(fonts: CaptionKitFonts<T>): {
179
+ readonly ref: T;
180
+ readonly slot: CaptionFontSlot;
181
+ };
182
+ /** The family a kit's captions are drawn in, and the kit field that supplied it. */
183
+ export interface EffectiveCaptionFamily {
184
+ /** Undefined when no slot names a family: the caption then falls back to the default stack. */
185
+ readonly family: string | undefined;
186
+ /** The kit path that chose it — `captionProfile.fontFamily` or `fonts.<slot>`. */
187
+ readonly path: string;
188
+ }
189
+ /** What a brand kit has to expose for the caption face rule to judge it. */
190
+ export interface CaptionFaceKit {
191
+ readonly fonts: CaptionKitFonts;
192
+ readonly captionProfile?: CaptionFaceFields | null | undefined;
193
+ }
194
+ /**
195
+ * The family a kit's caption profile is EFFECTIVELY drawn in.
196
+ *
197
+ * A profile that names no `fontFamily` does not draw in the default stack: `resolveBrandKit` fills
198
+ * the caption family from the kit's own font slots, so the face the render draws is that family at
199
+ * the profile's weights. Judging the profile on its own defaulted the family to Inter and let a kit
200
+ * project two faces with no bytes behind them.
201
+ */
202
+ export declare function effectiveCaptionFamily(kit: CaptionFaceKit): EffectiveCaptionFamily;
203
+ /** A face refusal against a whole brand kit, at the kit field an author edits. */
204
+ export interface BrandKitCaptionFaceIssue extends CaptionFaceIssue {
205
+ /** `captionProfile.<field>` when the profile authored the offending value, else `fonts.<slot>`. */
206
+ readonly path: string;
207
+ }
208
+ /**
209
+ * The faces a brand kit's caption profile causes the renderer to draw and cannot.
210
+ *
211
+ * The profile is judged at `effectiveCaptionFamily`, which is what `resolveBrandKit` projects, so
212
+ * `{ fonts: { caption: Poppins }, captionProfile: { fontWeight: 600 } }` is refused here rather
213
+ * than validating clean and dying at capture. A kit whose effective family ships the defaults
214
+ * passes with nothing authored: every bundled family declares a base and an emphasis weight it has
215
+ * files for.
216
+ */
217
+ export declare function brandKitCaptionFaceIssues(kit: CaptionFaceKit): BrandKitCaptionFaceIssue[];
218
+ /** The two authoring surfaces a merged caption face value can have come from. */
219
+ export type CaptionFaceOrigin = "captions.style" | "brandKit.captionProfile";
220
+ /** A face refusal against the merged style, at the surface the offending value came from. */
221
+ export interface MergedCaptionFaceIssue extends CaptionFaceIssue {
222
+ readonly origin: CaptionFaceOrigin;
223
+ /** `<origin>.<field>` — the path an author edits to change this face. */
224
+ readonly path: string;
225
+ }
226
+ /**
227
+ * The caption style the renderer is actually handed: the kit's caption block over the
228
+ * composition's own style, field by field, exactly as render-input assembly merges them.
229
+ */
230
+ export declare function mergeCaptionFaceFields(style: CaptionFaceFields | null | undefined, brandCaption: CaptionFaceFields | null | undefined): CaptionFaceFields;
231
+ /**
232
+ * The faces the MERGE cannot draw, each at the surface that supplied the offending value.
233
+ *
234
+ * Neither half is decidable alone: a kit naming only a family and a composition naming only a
235
+ * weight each validate, and together they name Poppins 800, which has no file. This judges what
236
+ * the renderer is handed and points the author at the half they authored — `captions.style.<field>`
237
+ * or `brandKit.captionProfile.<field>`.
238
+ */
239
+ export declare function mergedCaptionFaceIssues(style: CaptionFaceFields | null | undefined, brandCaption: CaptionFaceFields | null | undefined): MergedCaptionFaceIssue[];
240
+ /**
241
+ * One line per refused face, prefixed with the path an author edits.
242
+ *
243
+ * `field` is typed as a plain string rather than `keyof CaptionFaceFields` so a caller may add an
244
+ * issue this module does not raise — the editor's preview gate refuses a pure generic CSS stack at
245
+ * `fontFamily`, which the page refuses too and which is not a face issue — without either casting
246
+ * or growing a second formatter. Every field this module itself produces is still a caption field.
247
+ */
248
+ export declare function describeCaptionFaceIssues(issues: readonly {
249
+ field: string;
250
+ message: string;
251
+ }[], pathPrefix?: string): string;
252
+ /** The CSS weights a caption UI offers; a family narrows this to the ones it has files for. */
253
+ export declare const CAPTION_WEIGHT_CHOICES: readonly number[];
254
+ /**
255
+ * The weights an editing surface may offer for a caption font stack.
256
+ *
257
+ * A bundled family is narrowed to the weights its files declare — offering 500 for a family that
258
+ * ships 400 and 700 is offering a face the render will refuse. A stack that resolves to no bundled
259
+ * family (a custom brand face, or the built-in fallback) is not decidable here, so the full list
260
+ * stands and the sealed manifest decides at render time.
261
+ */
262
+ export declare function captionWeightChoices(stack: string | undefined): readonly number[];
263
+ /**
264
+ * The styles an editing surface may offer for a caption font stack. Every bundled and aliased
265
+ * family is upright-only, so italic is offered only for a stack whose face comes from the brand
266
+ * kit's sealed font manifest.
267
+ */
268
+ export declare function captionStyleChoices(stack: string | undefined): readonly ("normal" | "italic")[];
@@ -1,6 +1,13 @@
1
- export declare const VENDORED_FONT_FAMILIES: readonly ["Inter", "Space Mono", "Montserrat", "Roboto", "Poppins", "Oswald", "Playfair Display", "Bebas Neue", "Instrument Serif", "National Park", "Bricolage Grotesque", "Schibsted Grotesk"];
2
- export type VendoredFontFamily = (typeof VENDORED_FONT_FAMILIES)[number];
3
- export declare const ALIASED_FONT_FAMILIES: readonly ["Georgia"];
1
+ /**
2
+ * `@cueframe/composition/fonts`: the font surface, in three parts.
3
+ *
4
+ * `./fonts/bundledFaces` carries what files this build ships and the lookups over them;
5
+ * `./fonts/captionFaces` carries the caption face rule built on those facts. Both are re-exported
6
+ * here, so this module path stays the single import for all of it. What remains inline is the
7
+ * third part — deciding whether an arbitrary CSS font stack, anywhere in an authored document,
8
+ * names a family this build can draw at all.
9
+ */
10
+ export * from "./fonts/bundledFaces.js";
11
+ export * from "./fonts/captionFaces.js";
4
12
  export declare function isAvailableFontFamily(family: string): boolean;
5
- export declare function parseFontStack(value: string): string[];
6
13
  export declare function detectUnavailableFonts(value: unknown): string[];
@@ -105,8 +105,8 @@ export declare const ElementRole: z.ZodEnum<{
105
105
  }>;
106
106
  export type ElementRole = z.infer<typeof ElementRole>;
107
107
  export declare const StyleRole: z.ZodEnum<{
108
- heading: "heading";
109
108
  body: "body";
109
+ heading: "heading";
110
110
  accent: "accent";
111
111
  surface: "surface";
112
112
  "on-accent": "on-accent";
@@ -136,8 +136,8 @@ export declare const LayoutElement: z.ZodObject<{
136
136
  h: z.ZodNumber;
137
137
  }, z.core.$strip>;
138
138
  styleRole: z.ZodEnum<{
139
- heading: "heading";
140
139
  body: "body";
140
+ heading: "heading";
141
141
  accent: "accent";
142
142
  surface: "surface";
143
143
  "on-accent": "on-accent";
@@ -186,8 +186,8 @@ export declare const LayoutPlan: z.ZodObject<{
186
186
  h: z.ZodNumber;
187
187
  }, z.core.$strip>;
188
188
  styleRole: z.ZodEnum<{
189
- heading: "heading";
190
189
  body: "body";
190
+ heading: "heading";
191
191
  accent: "accent";
192
192
  surface: "surface";
193
193
  "on-accent": "on-accent";
@@ -425,8 +425,8 @@ export declare const GraphicsPlan: z.ZodObject<{
425
425
  h: z.ZodNumber;
426
426
  }, z.core.$strip>;
427
427
  styleRole: z.ZodEnum<{
428
- heading: "heading";
429
428
  body: "body";
429
+ heading: "heading";
430
430
  accent: "accent";
431
431
  surface: "surface";
432
432
  "on-accent": "on-accent";
@@ -60,7 +60,7 @@ export interface TransitionConfig {
60
60
  [key: string]: unknown;
61
61
  }
62
62
  export interface LayoutConfig {
63
- type: 'letterbox' | 'split-screen' | 'picture-in-picture' | 'photo-grid';
63
+ type: 'letterbox' | 'split-screen' | 'picture-in-picture' | 'photo-grid' | 'flex-layout';
64
64
  [key: string]: unknown;
65
65
  }
66
66
  export interface GlobalEffects {
@@ -20,6 +20,7 @@ export interface PrimitiveCatalogMeta {
20
20
  name: string;
21
21
  category: PrimitiveCategory;
22
22
  kind: PrimitiveKind;
23
+ graphics?: 'webgl';
23
24
  version: string;
24
25
  intent?: string;
25
26
  description?: string;
@@ -1,3 +1,6 @@
1
+ /** The only packed co-view generation the current renderer may consume. */
2
+ export declare const CURRENT_MATTE_BAKE_VERSION = "birefnet-portrait-coview-h264-v14-rvm-2026.08.27";
3
+ export declare function isCurrentMatteBakeVersion(version: string | undefined): boolean;
1
4
  export interface MatteIntentLike {
2
5
  startSec: number;
3
6
  endSec: number;
@@ -23,6 +23,11 @@ export interface ResolvedBrandKit {
23
23
  primary: string;
24
24
  secondary: string;
25
25
  accent: string;
26
+ accentStrong: string;
27
+ accentSoft: string;
28
+ success: string;
29
+ warning: string;
30
+ danger: string;
26
31
  background: string;
27
32
  text: string;
28
33
  textMuted: string;
@@ -46,6 +51,7 @@ export interface ResolvedBrandKit {
46
51
  entranceStaggerMs?: number;
47
52
  exitMs?: number;
48
53
  fontFamily?: string;
54
+ fontWeight?: number;
49
55
  emphasisFontFamily?: string;
50
56
  emphasisScale?: number;
51
57
  emphasisFontWeight?: number;
@@ -1,5 +1,5 @@
1
1
  export { apcaLc } from "../../brand-derivation/index.js";
2
- export declare const FLOOR_VERSION = "floor-v6-2026.06.09";
2
+ export declare const FLOOR_VERSION = "floor-v7-2026.09.09";
3
3
  export interface Rect {
4
4
  x: number;
5
5
  y: number;
@@ -144,6 +144,7 @@ interface Blockers {
144
144
  faceKeepOut: Rect[];
145
145
  safeZones: Rect[];
146
146
  }
147
+ export declare const CAPTION_BOTTOM_INSET = 0.06;
147
148
  export declare function placeInLegalArea(el: PlaceReq, b: Blockers): Rect | null;
148
149
  export declare function resolveCaptionRegion(input: {
149
150
  aspect: string;
@@ -0,0 +1,25 @@
1
+ import type { SceneCameraV2, SceneChannelV2, SceneObjectV2, SceneRigV2, SceneShotSpecV2, SceneTransformV2 } from './schema.js';
2
+ export type SceneMatrix4V2 = readonly [number, number, number, number, number, number, number, number, number, number, number, number, number, number, number, number];
3
+ export type EvaluatedSceneObjectV2 = SceneObjectV2 & {
4
+ /** Product of every world ancestor and this object's local transform. Null for screen text. */
5
+ worldMatrix: SceneMatrix4V2 | null;
6
+ /** Product of every ancestor opacity and this object's evaluated local opacity. */
7
+ worldOpacity: number;
8
+ children?: EvaluatedSceneObjectV2[];
9
+ };
10
+ export interface EvaluatedSceneV2 {
11
+ u: number;
12
+ contentFrame: number;
13
+ camera: SceneCameraV2;
14
+ environment: SceneRigV2;
15
+ focus: SceneShotSpecV2['post']['focus'];
16
+ layers: EvaluatedSceneObjectV2[];
17
+ }
18
+ export declare function contentFrame(frame: number, durationInFrames: number): number;
19
+ export declare function normalizedTime(frame: number, durationInFrames: number): number;
20
+ /** CSS-compatible cubic bezier: solve x(u)=t, then return y(u). */
21
+ export declare function cubicBezierEase(x1: number, y1: number, x2: number, y2: number): (t: number) => number;
22
+ export declare function evaluateChannel(keyframes: SceneChannelV2['keyframes'], t: number): number;
23
+ /** Three-native T * Rx * Ry * Rz * S, column-major. */
24
+ export declare function sceneTransformMatrix(transform: SceneTransformV2): SceneMatrix4V2;
25
+ export declare function evaluateScene(spec: SceneShotSpecV2, requestedFrame: number, durationInFrames: number): EvaluatedSceneV2;
@@ -0,0 +1,29 @@
1
+ /** Pure Decision 5 allocation accounting shared by preparation and runtime admission. */
2
+ import { MIB, SCENE_SURFACE_TEXTURE_BUDGET_BYTES, SCENE_CONTEXT_GL_BUDGET_BYTES, SCENE_RENDER_JOB_BUDGET_BYTES, SCENE_MAX_TRIANGLES } from './budgetPolicy.mjs';
3
+ export { MIB, SCENE_SURFACE_TEXTURE_BUDGET_BYTES, SCENE_CONTEXT_GL_BUDGET_BYTES, SCENE_RENDER_JOB_BUDGET_BYTES, SCENE_MAX_TRIANGLES, };
4
+ export declare const STUDIO_SHADOW_MAP_BUDGET = 4096;
5
+ export declare const SCENE_TESSELLATION_VERSION = 1;
6
+ export declare const SCENE_SLAB_BODY_TRIANGLES = 5484;
7
+ export declare const SCENE_SLAB_CONTENT_FACE_TRIANGLES = 2;
8
+ export declare const SCENE_SLAB_CONTENT_OFFSET = 0.6;
9
+ export declare const SCENE_PRESET_TRIANGLES: Readonly<{
10
+ readonly laptop: 1954;
11
+ readonly phone: 3136;
12
+ readonly slab: 5486;
13
+ readonly page: 2;
14
+ }>;
15
+ export type ScenePreset = keyof typeof SCENE_PRESET_TRIANGLES;
16
+ export type SceneTextureFormat = 'rgba8' | 'rgba16f' | 'rgba32f' | 'depth24';
17
+ export interface SceneTextureAllocation {
18
+ width: number;
19
+ height: number;
20
+ format: SceneTextureFormat;
21
+ mipLevels: number;
22
+ faces?: number;
23
+ layers?: number;
24
+ samples?: number;
25
+ }
26
+ export declare function sceneFullMipLevels(width: number, height: number): number;
27
+ export declare function sceneMipTexels(width: number, height: number, mipLevels: number): number;
28
+ export declare function sceneTextureBytes(allocation: SceneTextureAllocation): number;
29
+ export declare function sceneTriangleCount(presets: readonly ScenePreset[]): number;
@@ -0,0 +1,13 @@
1
+ export declare const MIB: number;
2
+ export declare const SCENE_SURFACE_TEXTURE_BUDGET_BYTES: number;
3
+ export declare const SCENE_CONTEXT_GL_BUDGET_BYTES: number;
4
+ export declare const SCENE_RENDER_JOB_BUDGET_BYTES: number;
5
+ export declare const SCENE_MAX_TRIANGLES: number;
6
+ export declare const I0_ORIGINAL_BUDGET_FIXTURE: Readonly<{
7
+ face2xBytes: number;
8
+ face3xBytes: number;
9
+ generatedRigAndFocusBaselineBytes: number;
10
+ transitionOverlapBytes: number;
11
+ corrective2x: Readonly<{bakeScale: null; layoutWidth: number; layoutHeight: number}>;
12
+ corrective3x: Readonly<{bakeScale: 2; layoutWidth: number; layoutHeight: number}>;
13
+ }>;