@imgly/codesign-mcp 0.1.0

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 (816) hide show
  1. package/LICENSE.md +16 -0
  2. package/README.md +158 -0
  3. package/assets/docs/api/SKILL.md +49 -0
  4. package/assets/docs/api/index.d.ts +10518 -0
  5. package/assets/docs/guide/SKILL.md +142 -0
  6. package/assets/docs/guide/actions.md +1038 -0
  7. package/assets/docs/guide/animation/create/base.md +467 -0
  8. package/assets/docs/guide/animation/create/text.md +453 -0
  9. package/assets/docs/guide/animation/create.md +558 -0
  10. package/assets/docs/guide/animation/edit.md +501 -0
  11. package/assets/docs/guide/animation/overview.md +22 -0
  12. package/assets/docs/guide/animation/types.md +430 -0
  13. package/assets/docs/guide/animation.md +23 -0
  14. package/assets/docs/guide/api/AssetAPI.md +602 -0
  15. package/assets/docs/guide/api/BlockAPI.md +6152 -0
  16. package/assets/docs/guide/api/CreativeEngine.md +180 -0
  17. package/assets/docs/guide/api/EditorAPI.md +1261 -0
  18. package/assets/docs/guide/api/EventAPI.md +25 -0
  19. package/assets/docs/guide/api/SceneAPI.md +729 -0
  20. package/assets/docs/guide/api/VariableAPI.md +59 -0
  21. package/assets/docs/guide/api/types.md +71 -0
  22. package/assets/docs/guide/api-reference/overview.md +20 -0
  23. package/assets/docs/guide/automation/auto-resize.md +412 -0
  24. package/assets/docs/guide/automation/batch-processing.md +474 -0
  25. package/assets/docs/guide/automation/data-merge.md +406 -0
  26. package/assets/docs/guide/automation/design-generation.md +107 -0
  27. package/assets/docs/guide/automation/overview.md +16 -0
  28. package/assets/docs/guide/automation.md +24 -0
  29. package/assets/docs/guide/browser-support.md +38 -0
  30. package/assets/docs/guide/capabilities.md +18 -0
  31. package/assets/docs/guide/colors/adjust.md +551 -0
  32. package/assets/docs/guide/colors/apply.md +349 -0
  33. package/assets/docs/guide/colors/basics.md +440 -0
  34. package/assets/docs/guide/colors/conversion.md +504 -0
  35. package/assets/docs/guide/colors/create-color-palette.md +426 -0
  36. package/assets/docs/guide/colors/for-print/cmyk.md +577 -0
  37. package/assets/docs/guide/colors/for-print/spot.md +751 -0
  38. package/assets/docs/guide/colors/for-print.md +21 -0
  39. package/assets/docs/guide/colors/for-screen/p3.md +60 -0
  40. package/assets/docs/guide/colors/for-screen/srgb.md +463 -0
  41. package/assets/docs/guide/colors/for-screen.md +21 -0
  42. package/assets/docs/guide/colors/overview.md +20 -0
  43. package/assets/docs/guide/colors/replace.md +535 -0
  44. package/assets/docs/guide/colors.md +28 -0
  45. package/assets/docs/guide/compatibility.md +27 -0
  46. package/assets/docs/guide/concepts/architecture.md +99 -0
  47. package/assets/docs/guide/concepts/assets.md +360 -0
  48. package/assets/docs/guide/concepts/blocks.md +750 -0
  49. package/assets/docs/guide/concepts/buffers.md +546 -0
  50. package/assets/docs/guide/concepts/design-units.md +333 -0
  51. package/assets/docs/guide/concepts/edit-modes.md +431 -0
  52. package/assets/docs/guide/concepts/editing-workflow.md +303 -0
  53. package/assets/docs/guide/concepts/events.md +466 -0
  54. package/assets/docs/guide/concepts/headless-mode/browser.md +291 -0
  55. package/assets/docs/guide/concepts/pages.md +396 -0
  56. package/assets/docs/guide/concepts/resources.md +496 -0
  57. package/assets/docs/guide/concepts/scenes.md +443 -0
  58. package/assets/docs/guide/concepts/templating.md +194 -0
  59. package/assets/docs/guide/concepts/terminology.md +296 -0
  60. package/assets/docs/guide/concepts/undo-and-history.md +461 -0
  61. package/assets/docs/guide/concepts.md +38 -0
  62. package/assets/docs/guide/configuration.md +469 -0
  63. package/assets/docs/guide/conversion/overview.md +22 -0
  64. package/assets/docs/guide/conversion/to-base64.md +234 -0
  65. package/assets/docs/guide/conversion/to-pdf.md +616 -0
  66. package/assets/docs/guide/conversion/to-png.md +290 -0
  67. package/assets/docs/guide/conversion.md +23 -0
  68. package/assets/docs/guide/create-audio/audio/add-music.md +430 -0
  69. package/assets/docs/guide/create-audio/audio/add-sound-effects.md +664 -0
  70. package/assets/docs/guide/create-audio/audio/loop.md +370 -0
  71. package/assets/docs/guide/create-audio/audio.md +336 -0
  72. package/assets/docs/guide/create-composition/add-background.md +395 -0
  73. package/assets/docs/guide/create-composition/blend-modes.md +372 -0
  74. package/assets/docs/guide/create-composition/collage.md +432 -0
  75. package/assets/docs/guide/create-composition/group-and-ungroup.md +388 -0
  76. package/assets/docs/guide/create-composition/layer-management.md +503 -0
  77. package/assets/docs/guide/create-composition/layout.md +396 -0
  78. package/assets/docs/guide/create-composition/lock-design.md +362 -0
  79. package/assets/docs/guide/create-composition/multi-page.md +204 -0
  80. package/assets/docs/guide/create-composition/overview.md +18 -0
  81. package/assets/docs/guide/create-composition/programmatic.md +593 -0
  82. package/assets/docs/guide/create-composition.md +30 -0
  83. package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +688 -0
  84. package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +600 -0
  85. package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +647 -0
  86. package/assets/docs/guide/create-templates/add-dynamic-content.md +307 -0
  87. package/assets/docs/guide/create-templates/add-to-template-library.md +297 -0
  88. package/assets/docs/guide/create-templates/edit-or-remove.md +441 -0
  89. package/assets/docs/guide/create-templates/from-scratch.md +558 -0
  90. package/assets/docs/guide/create-templates/import/from-scene-file.md +440 -0
  91. package/assets/docs/guide/create-templates/import.md +244 -0
  92. package/assets/docs/guide/create-templates/lock.md +325 -0
  93. package/assets/docs/guide/create-templates/overview.md +16 -0
  94. package/assets/docs/guide/create-templates.md +32 -0
  95. package/assets/docs/guide/create-video/audio/adjust-speed.md +302 -0
  96. package/assets/docs/guide/create-video/audio/adjust-volume.md +346 -0
  97. package/assets/docs/guide/create-video/control.md +285 -0
  98. package/assets/docs/guide/create-video/limitations.md +396 -0
  99. package/assets/docs/guide/create-video/overview.md +224 -0
  100. package/assets/docs/guide/create-video/timeline-editor.md +622 -0
  101. package/assets/docs/guide/create-video/update-caption-presets.md +676 -0
  102. package/assets/docs/guide/create-video.md +32 -0
  103. package/assets/docs/guide/edit-image/add-watermark.md +497 -0
  104. package/assets/docs/guide/edit-image/overview.md +22 -0
  105. package/assets/docs/guide/edit-image/remove-bg.md +420 -0
  106. package/assets/docs/guide/edit-image/replace-colors.md +680 -0
  107. package/assets/docs/guide/edit-image/transform/crop.md +523 -0
  108. package/assets/docs/guide/edit-image/transform/move.md +279 -0
  109. package/assets/docs/guide/edit-image/transform/resize.md +301 -0
  110. package/assets/docs/guide/edit-image/transform/rotate.md +408 -0
  111. package/assets/docs/guide/edit-image/transform/scale.md +278 -0
  112. package/assets/docs/guide/edit-image/transform.md +24 -0
  113. package/assets/docs/guide/edit-image/vectorize.md +204 -0
  114. package/assets/docs/guide/edit-image.md +25 -0
  115. package/assets/docs/guide/edit-video/add-captions.md +589 -0
  116. package/assets/docs/guide/edit-video/add-watermark.md +429 -0
  117. package/assets/docs/guide/edit-video/join-and-arrange.md +540 -0
  118. package/assets/docs/guide/edit-video/redaction.md +544 -0
  119. package/assets/docs/guide/edit-video/split.md +634 -0
  120. package/assets/docs/guide/edit-video/transform/crop.md +380 -0
  121. package/assets/docs/guide/edit-video/transform/flip.md +182 -0
  122. package/assets/docs/guide/edit-video/transform/move.md +413 -0
  123. package/assets/docs/guide/edit-video/transform/resize.md +534 -0
  124. package/assets/docs/guide/edit-video/transform/rotate.md +312 -0
  125. package/assets/docs/guide/edit-video/transform/scale.md +603 -0
  126. package/assets/docs/guide/edit-video/transform.md +25 -0
  127. package/assets/docs/guide/edit-video/trim.md +773 -0
  128. package/assets/docs/guide/engine-interface.md +108 -0
  129. package/assets/docs/guide/export-save-publish/create-thumbnail.md +292 -0
  130. package/assets/docs/guide/export-save-publish/export/compress.md +639 -0
  131. package/assets/docs/guide/export-save-publish/export/overview.md +576 -0
  132. package/assets/docs/guide/export-save-publish/export/partial-export.md +694 -0
  133. package/assets/docs/guide/export-save-publish/export/size-limits.md +401 -0
  134. package/assets/docs/guide/export-save-publish/export/to-html5.md +474 -0
  135. package/assets/docs/guide/export-save-publish/export/to-jpeg.md +312 -0
  136. package/assets/docs/guide/export-save-publish/export/to-mp4.md +364 -0
  137. package/assets/docs/guide/export-save-publish/export/to-pdf.md +389 -0
  138. package/assets/docs/guide/export-save-publish/export/to-png.md +255 -0
  139. package/assets/docs/guide/export-save-publish/export/to-raw-data.md +303 -0
  140. package/assets/docs/guide/export-save-publish/export/to-webp.md +261 -0
  141. package/assets/docs/guide/export-save-publish/export/with-color-mask.md +278 -0
  142. package/assets/docs/guide/export-save-publish/export.md +36 -0
  143. package/assets/docs/guide/export-save-publish/for-printing.md +423 -0
  144. package/assets/docs/guide/export-save-publish/for-social-media.md +318 -0
  145. package/assets/docs/guide/export-save-publish/pre-export-validation.md +698 -0
  146. package/assets/docs/guide/export-save-publish/save.md +340 -0
  147. package/assets/docs/guide/export-save-publish/store-custom-metadata.md +367 -0
  148. package/assets/docs/guide/file-format-support.md +34 -0
  149. package/assets/docs/guide/fills/color.md +678 -0
  150. package/assets/docs/guide/fills/image.md +539 -0
  151. package/assets/docs/guide/fills/overview.md +144 -0
  152. package/assets/docs/guide/fills/video.md +641 -0
  153. package/assets/docs/guide/fills.md +24 -0
  154. package/assets/docs/guide/filters-and-effects/apply.md +1019 -0
  155. package/assets/docs/guide/filters-and-effects/blur.md +382 -0
  156. package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +445 -0
  157. package/assets/docs/guide/filters-and-effects/create-custom-filters.md +614 -0
  158. package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +426 -0
  159. package/assets/docs/guide/filters-and-effects/distortion.md +527 -0
  160. package/assets/docs/guide/filters-and-effects/duotone.md +602 -0
  161. package/assets/docs/guide/filters-and-effects/gradients.md +1311 -0
  162. package/assets/docs/guide/filters-and-effects/overview.md +22 -0
  163. package/assets/docs/guide/filters-and-effects/support.md +623 -0
  164. package/assets/docs/guide/filters-and-effects.md +28 -0
  165. package/assets/docs/guide/get-started/agent-skills.md +119 -0
  166. package/assets/docs/guide/get-started/build-with-ai.md +45 -0
  167. package/assets/docs/guide/get-started/mcp-server.md +119 -0
  168. package/assets/docs/guide/get-started/overview.md +28 -0
  169. package/assets/docs/guide/get-started/vanilla-js/quickstart.md +175 -0
  170. package/assets/docs/guide/grid-and-rulers.md +222 -0
  171. package/assets/docs/guide/guides/export-save-publish/export/audio.md +224 -0
  172. package/assets/docs/guide/guides/text/rendering-internals.md +796 -0
  173. package/assets/docs/guide/guides.md +49 -0
  174. package/assets/docs/guide/import-media/asset-library.md +23 -0
  175. package/assets/docs/guide/import-media/asset-panel/basics.md +324 -0
  176. package/assets/docs/guide/import-media/asset-panel/customize.md +478 -0
  177. package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +415 -0
  178. package/assets/docs/guide/import-media/asset-panel/thumbnails.md +633 -0
  179. package/assets/docs/guide/import-media/capture-from-camera/record-video.md +137 -0
  180. package/assets/docs/guide/import-media/capture-from-camera.md +20 -0
  181. package/assets/docs/guide/import-media/concepts.md +173 -0
  182. package/assets/docs/guide/import-media/content-json-schema.md +615 -0
  183. package/assets/docs/guide/import-media/default-assets.md +381 -0
  184. package/assets/docs/guide/import-media/edit-or-remove-assets.md +489 -0
  185. package/assets/docs/guide/import-media/file-format-support.md +178 -0
  186. package/assets/docs/guide/import-media/from-local-source/user-upload.md +438 -0
  187. package/assets/docs/guide/import-media/from-local-source.md +20 -0
  188. package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +390 -0
  189. package/assets/docs/guide/import-media/from-remote-source/getty-images.md +627 -0
  190. package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +625 -0
  191. package/assets/docs/guide/import-media/from-remote-source/pexels.md +692 -0
  192. package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +473 -0
  193. package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +497 -0
  194. package/assets/docs/guide/import-media/from-remote-source/third-party.md +51 -0
  195. package/assets/docs/guide/import-media/from-remote-source/unsplash.md +914 -0
  196. package/assets/docs/guide/import-media/from-remote-source/your-server.md +764 -0
  197. package/assets/docs/guide/import-media/from-remote-source.md +28 -0
  198. package/assets/docs/guide/import-media/overview.md +32 -0
  199. package/assets/docs/guide/import-media/retrieve-mimetype.md +274 -0
  200. package/assets/docs/guide/import-media/size-limits.md +20 -0
  201. package/assets/docs/guide/import-media/source-sets.md +476 -0
  202. package/assets/docs/guide/import-media.md +32 -0
  203. package/assets/docs/guide/insert-media/audio.md +291 -0
  204. package/assets/docs/guide/insert-media/images.md +380 -0
  205. package/assets/docs/guide/insert-media/position-and-align.md +734 -0
  206. package/assets/docs/guide/insert-media/shapes-or-stickers.md +799 -0
  207. package/assets/docs/guide/insert-media/videos.md +308 -0
  208. package/assets/docs/guide/insert-media.md +24 -0
  209. package/assets/docs/guide/key-capabilities.md +24 -0
  210. package/assets/docs/guide/key-concepts.md +83 -0
  211. package/assets/docs/guide/licensing.md +45 -0
  212. package/assets/docs/guide/llms-txt.md +53 -0
  213. package/assets/docs/guide/open-the-editor/blank-canvas.md +124 -0
  214. package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +228 -0
  215. package/assets/docs/guide/open-the-editor/from-image.md +205 -0
  216. package/assets/docs/guide/open-the-editor/from-template.md +189 -0
  217. package/assets/docs/guide/open-the-editor/from-video.md +274 -0
  218. package/assets/docs/guide/open-the-editor/import-design/from-archive.md +504 -0
  219. package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +680 -0
  220. package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +865 -0
  221. package/assets/docs/guide/open-the-editor/import-design.md +481 -0
  222. package/assets/docs/guide/open-the-editor/load-scene.md +178 -0
  223. package/assets/docs/guide/open-the-editor/overview.md +20 -0
  224. package/assets/docs/guide/open-the-editor/set-zoom-level.md +303 -0
  225. package/assets/docs/guide/open-the-editor/uri-resolver.md +347 -0
  226. package/assets/docs/guide/open-the-editor.md +29 -0
  227. package/assets/docs/guide/outlines/overview.md +14 -0
  228. package/assets/docs/guide/outlines/shadows-and-glows.md +515 -0
  229. package/assets/docs/guide/outlines/strokes.md +292 -0
  230. package/assets/docs/guide/outlines.md +22 -0
  231. package/assets/docs/guide/overview.md +22 -0
  232. package/assets/docs/guide/performance.md +217 -0
  233. package/assets/docs/guide/plugins/asset-sources.md +553 -0
  234. package/assets/docs/guide/plugins/print-ready-pdf.md +549 -0
  235. package/assets/docs/guide/plugins.md +36 -0
  236. package/assets/docs/guide/rules/asset-handling.md +180 -0
  237. package/assets/docs/guide/rules/common-pitfalls.md +272 -0
  238. package/assets/docs/guide/rules/content-fill-mode.md +29 -0
  239. package/assets/docs/guide/rules/enforce-brand-guidelines.md +672 -0
  240. package/assets/docs/guide/rules/lock-content.md +478 -0
  241. package/assets/docs/guide/rules/moderate-content.md +761 -0
  242. package/assets/docs/guide/rules/overview.md +514 -0
  243. package/assets/docs/guide/rules/silent-init-errors.md +137 -0
  244. package/assets/docs/guide/rules/verify-properties-before-use.md +78 -0
  245. package/assets/docs/guide/rules.md +23 -0
  246. package/assets/docs/guide/security.md +199 -0
  247. package/assets/docs/guide/serve-assets.md +332 -0
  248. package/assets/docs/guide/settings.md +199 -0
  249. package/assets/docs/guide/shapes.md +23 -0
  250. package/assets/docs/guide/starterkits/3d-mockup-editor.md +748 -0
  251. package/assets/docs/guide/starterkits/advanced-editor.md +698 -0
  252. package/assets/docs/guide/starterkits/advanced-video-editor.md +696 -0
  253. package/assets/docs/guide/starterkits/ai-editor.md +749 -0
  254. package/assets/docs/guide/starterkits/airtable-image-editor.md +672 -0
  255. package/assets/docs/guide/starterkits/apparel-ui.md +188 -0
  256. package/assets/docs/guide/starterkits/assets.md +27 -0
  257. package/assets/docs/guide/starterkits/auto-resize.md +586 -0
  258. package/assets/docs/guide/starterkits/automated-video-generation.md +692 -0
  259. package/assets/docs/guide/starterkits/background-removal-editor.md +480 -0
  260. package/assets/docs/guide/starterkits/content-moderation.md +863 -0
  261. package/assets/docs/guide/starterkits/creative-automation.md +28 -0
  262. package/assets/docs/guide/starterkits/custom-built-uis.md +26 -0
  263. package/assets/docs/guide/starterkits/customization.md +29 -0
  264. package/assets/docs/guide/starterkits/cutout-lines-editor.md +470 -0
  265. package/assets/docs/guide/starterkits/data-merge.md +850 -0
  266. package/assets/docs/guide/starterkits/design-editor.md +698 -0
  267. package/assets/docs/guide/starterkits/design-generation.md +719 -0
  268. package/assets/docs/guide/starterkits/design-validation.md +808 -0
  269. package/assets/docs/guide/starterkits/editor-ui-configurations.md +14 -0
  270. package/assets/docs/guide/starterkits/export-options.md +724 -0
  271. package/assets/docs/guide/starterkits/export-using-renderer.md +708 -0
  272. package/assets/docs/guide/starterkits/extensibility.md +28 -0
  273. package/assets/docs/guide/starterkits/force-crop-editor.md +675 -0
  274. package/assets/docs/guide/starterkits/form-based-template-adoption.md +522 -0
  275. package/assets/docs/guide/starterkits/getty-images-editor.md +700 -0
  276. package/assets/docs/guide/starterkits/html5-ads-exporter.md +719 -0
  277. package/assets/docs/guide/starterkits/indesign-template-import.md +580 -0
  278. package/assets/docs/guide/starterkits/layouts-editor.md +724 -0
  279. package/assets/docs/guide/starterkits/mobile-ui.md +185 -0
  280. package/assets/docs/guide/starterkits/mockup-editor.md +745 -0
  281. package/assets/docs/guide/starterkits/multi-image-generation.md +542 -0
  282. package/assets/docs/guide/starterkits/page-sizes-editor.md +657 -0
  283. package/assets/docs/guide/starterkits/pexels-image-editor.md +665 -0
  284. package/assets/docs/guide/starterkits/photo-editor.md +755 -0
  285. package/assets/docs/guide/starterkits/photo-ui.md +186 -0
  286. package/assets/docs/guide/starterkits/photobook-ui.md +188 -0
  287. package/assets/docs/guide/starterkits/placeholders.md +678 -0
  288. package/assets/docs/guide/starterkits/player.md +405 -0
  289. package/assets/docs/guide/starterkits/plugins.md +25 -0
  290. package/assets/docs/guide/starterkits/postcard-editor.md +202 -0
  291. package/assets/docs/guide/starterkits/pptx-template-import.md +581 -0
  292. package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +746 -0
  293. package/assets/docs/guide/starterkits/product-editor.md +773 -0
  294. package/assets/docs/guide/starterkits/psd-template-import.md +580 -0
  295. package/assets/docs/guide/starterkits/qr-code-editor.md +470 -0
  296. package/assets/docs/guide/starterkits/single-page-editor.md +661 -0
  297. package/assets/docs/guide/starterkits/start-with-image.md +684 -0
  298. package/assets/docs/guide/starterkits/start-with-video.md +651 -0
  299. package/assets/docs/guide/starterkits/t-shirt-designer.md +742 -0
  300. package/assets/docs/guide/starterkits/templating.md +23 -0
  301. package/assets/docs/guide/starterkits/theming.md +662 -0
  302. package/assets/docs/guide/starterkits/translation-internationalization.md +662 -0
  303. package/assets/docs/guide/starterkits/unsplash-editor.md +839 -0
  304. package/assets/docs/guide/starterkits/vectorizer-editor.md +466 -0
  305. package/assets/docs/guide/starterkits/version-history.md +745 -0
  306. package/assets/docs/guide/starterkits/video-animations.md +853 -0
  307. package/assets/docs/guide/starterkits/video-captions.md +884 -0
  308. package/assets/docs/guide/starterkits/video-editing.md +25 -0
  309. package/assets/docs/guide/starterkits/video-editor.md +696 -0
  310. package/assets/docs/guide/starterkits/video-export-options.md +676 -0
  311. package/assets/docs/guide/starterkits/viewer.md +400 -0
  312. package/assets/docs/guide/starterkits.md +41 -0
  313. package/assets/docs/guide/stickers-and-shapes/combine.md +743 -0
  314. package/assets/docs/guide/stickers-and-shapes/create-cutout.md +425 -0
  315. package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +794 -0
  316. package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +290 -0
  317. package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +211 -0
  318. package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +362 -0
  319. package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +208 -0
  320. package/assets/docs/guide/stickers.md +21 -0
  321. package/assets/docs/guide/text/add.md +641 -0
  322. package/assets/docs/guide/text/adjust-spacing.md +288 -0
  323. package/assets/docs/guide/text/auto-size.md +404 -0
  324. package/assets/docs/guide/text/custom-fonts.md +401 -0
  325. package/assets/docs/guide/text/decorations.md +330 -0
  326. package/assets/docs/guide/text/edit.md +458 -0
  327. package/assets/docs/guide/text/effects.md +244 -0
  328. package/assets/docs/guide/text/emojis.md +310 -0
  329. package/assets/docs/guide/text/enumerations.md +258 -0
  330. package/assets/docs/guide/text/language-support.md +604 -0
  331. package/assets/docs/guide/text/overview.md +14 -0
  332. package/assets/docs/guide/text/styling.md +390 -0
  333. package/assets/docs/guide/text/text-designs.md +834 -0
  334. package/assets/docs/guide/text.md +33 -0
  335. package/assets/docs/guide/to-v1-10.md +131 -0
  336. package/assets/docs/guide/to-v1-13.md +165 -0
  337. package/assets/docs/guide/to-v1-19.md +315 -0
  338. package/assets/docs/guide/to-v1-32.md +110 -0
  339. package/assets/docs/guide/to-v1-69.md +468 -0
  340. package/assets/docs/guide/to-v1-72.md +193 -0
  341. package/assets/docs/guide/upgrade.md +25 -0
  342. package/assets/docs/guide/use-templates/apply-template.md +279 -0
  343. package/assets/docs/guide/use-templates/generate.md +405 -0
  344. package/assets/docs/guide/use-templates/library.md +450 -0
  345. package/assets/docs/guide/use-templates/overview.md +20 -0
  346. package/assets/docs/guide/use-templates/programmatic.md +482 -0
  347. package/assets/docs/guide/use-templates/replace-content.md +399 -0
  348. package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +428 -0
  349. package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +337 -0
  350. package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +853 -0
  351. package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +1045 -0
  352. package/assets/docs/guide/user-interface/ai-integration/image-generation.md +641 -0
  353. package/assets/docs/guide/user-interface/ai-integration/integrate.md +966 -0
  354. package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +99 -0
  355. package/assets/docs/guide/user-interface/ai-integration/text-generation.md +498 -0
  356. package/assets/docs/guide/user-interface/ai-integration/video-generation.md +493 -0
  357. package/assets/docs/guide/user-interface/ai-integration.md +30 -0
  358. package/assets/docs/guide/user-interface/appearance/change-ui-font.md +316 -0
  359. package/assets/docs/guide/user-interface/appearance/custom-labels.md +509 -0
  360. package/assets/docs/guide/user-interface/appearance/icons.md +373 -0
  361. package/assets/docs/guide/user-interface/appearance/theming.md +665 -0
  362. package/assets/docs/guide/user-interface/appearance.md +23 -0
  363. package/assets/docs/guide/user-interface/build-your-own-ui.md +620 -0
  364. package/assets/docs/guide/user-interface/customization/canvas-menu.md +412 -0
  365. package/assets/docs/guide/user-interface/customization/canvas.md +281 -0
  366. package/assets/docs/guide/user-interface/customization/color-palette.md +413 -0
  367. package/assets/docs/guide/user-interface/customization/crop-presets.md +384 -0
  368. package/assets/docs/guide/user-interface/customization/disable-or-enable.md +676 -0
  369. package/assets/docs/guide/user-interface/customization/dock.md +399 -0
  370. package/assets/docs/guide/user-interface/customization/force-crop.md +289 -0
  371. package/assets/docs/guide/user-interface/customization/inspector-bar.md +371 -0
  372. package/assets/docs/guide/user-interface/customization/navigation-bar.md +516 -0
  373. package/assets/docs/guide/user-interface/customization/page-format.md +436 -0
  374. package/assets/docs/guide/user-interface/customization/panel.md +605 -0
  375. package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +531 -0
  376. package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +358 -0
  377. package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +374 -0
  378. package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +323 -0
  379. package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +294 -0
  380. package/assets/docs/guide/user-interface/customization/quick-start.md +12 -0
  381. package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +519 -0
  382. package/assets/docs/guide/user-interface/customization/reference/component-reference.md +333 -0
  383. package/assets/docs/guide/user-interface/customization/reference.md +12 -0
  384. package/assets/docs/guide/user-interface/customization.md +39 -0
  385. package/assets/docs/guide/user-interface/localization.md +633 -0
  386. package/assets/docs/guide/user-interface/overview.md +167 -0
  387. package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +411 -0
  388. package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +721 -0
  389. package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +331 -0
  390. package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +553 -0
  391. package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +672 -0
  392. package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +415 -0
  393. package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +521 -0
  394. package/assets/docs/guide/user-interface/ui-extensions.md +26 -0
  395. package/assets/docs/guide/user-interface.md +25 -0
  396. package/assets/docs/guide/what-is-cesdk.md +319 -0
  397. package/assets/docs/handbook/SKILL.md +521 -0
  398. package/assets/prompts/evals-assetGenerate.md +12 -0
  399. package/assets/prompts/evals-brutalistCore.md +34 -0
  400. package/assets/prompts/evals-danskCatalogue.md +31 -0
  401. package/assets/prompts/evals-exportRoundTrip.md +12 -0
  402. package/assets/prompts/evals-inspectPriorCode.md +16 -0
  403. package/assets/prompts/evals-listProjectFiles.md +6 -0
  404. package/assets/prompts/evals-readAndExplainScript.md +6 -0
  405. package/assets/prompts/evals-resumeAcrossRestart.md +15 -0
  406. package/assets/prompts/evals-rewindRecovery.md +10 -0
  407. package/assets/prompts/evals-searchAcrossFiles.md +6 -0
  408. package/assets/prompts/evals-weddingCard.md +20 -0
  409. package/assets/prompts/explain.md +6 -0
  410. package/assets/prompts/review.md +6 -0
  411. package/dist/assets/inline.generated.d.ts +2 -0
  412. package/dist/assets/inline.generated.d.ts.map +1 -0
  413. package/dist/assets/inline.generated.js +413 -0
  414. package/dist/assets/inline.generated.js.map +1 -0
  415. package/dist/assets/load-browser.d.ts +8 -0
  416. package/dist/assets/load-browser.d.ts.map +1 -0
  417. package/dist/assets/load-browser.js +11 -0
  418. package/dist/assets/load-browser.js.map +1 -0
  419. package/dist/assets/load-node.d.ts +8 -0
  420. package/dist/assets/load-node.d.ts.map +1 -0
  421. package/dist/assets/load-node.js +11 -0
  422. package/dist/assets/load-node.js.map +1 -0
  423. package/dist/cli/http.d.ts +2 -0
  424. package/dist/cli/http.d.ts.map +1 -0
  425. package/dist/cli/http.js +231 -0
  426. package/dist/cli/http.js.map +1 -0
  427. package/dist/cli/redirect-console.d.ts +10 -0
  428. package/dist/cli/redirect-console.d.ts.map +1 -0
  429. package/dist/cli/redirect-console.js +18 -0
  430. package/dist/cli/redirect-console.js.map +1 -0
  431. package/dist/cli/resolve-license.d.ts +2 -0
  432. package/dist/cli/resolve-license.d.ts.map +1 -0
  433. package/dist/cli/resolve-license.js +13 -0
  434. package/dist/cli/resolve-license.js.map +1 -0
  435. package/dist/cli/stdio.d.ts +2 -0
  436. package/dist/cli/stdio.d.ts.map +1 -0
  437. package/dist/cli/stdio.js +124 -0
  438. package/dist/cli/stdio.js.map +1 -0
  439. package/dist/cli/trial-license.generated.d.ts +2 -0
  440. package/dist/cli/trial-license.generated.d.ts.map +1 -0
  441. package/dist/cli/trial-license.generated.js +4 -0
  442. package/dist/cli/trial-license.generated.js.map +1 -0
  443. package/dist/cli.d.ts +3 -0
  444. package/dist/cli.d.ts.map +1 -0
  445. package/dist/cli.js +64 -0
  446. package/dist/cli.js.map +1 -0
  447. package/dist/config.d.ts +61 -0
  448. package/dist/config.d.ts.map +1 -0
  449. package/dist/config.js +102 -0
  450. package/dist/config.js.map +1 -0
  451. package/dist/cross-ref.d.ts +2 -0
  452. package/dist/cross-ref.d.ts.map +1 -0
  453. package/dist/cross-ref.js +31 -0
  454. package/dist/cross-ref.js.map +1 -0
  455. package/dist/dashboard/router.d.ts +3 -0
  456. package/dist/dashboard/router.d.ts.map +1 -0
  457. package/dist/dashboard/router.js +19 -0
  458. package/dist/dashboard/router.js.map +1 -0
  459. package/dist/dashboard/spa-assets.generated.d.ts +2 -0
  460. package/dist/dashboard/spa-assets.generated.d.ts.map +1 -0
  461. package/dist/dashboard/spa-assets.generated.js +220 -0
  462. package/dist/dashboard/spa-assets.generated.js.map +1 -0
  463. package/dist/engine/asset-sources.d.ts +17 -0
  464. package/dist/engine/asset-sources.d.ts.map +1 -0
  465. package/dist/engine/asset-sources.js +75 -0
  466. package/dist/engine/asset-sources.js.map +1 -0
  467. package/dist/engine/cesdk-adapter.d.ts +10 -0
  468. package/dist/engine/cesdk-adapter.d.ts.map +1 -0
  469. package/dist/engine/cesdk-adapter.js +19 -0
  470. package/dist/engine/cesdk-adapter.js.map +1 -0
  471. package/dist/engine/index.d.ts +3 -0
  472. package/dist/engine/index.d.ts.map +1 -0
  473. package/dist/engine/index.js +3 -0
  474. package/dist/engine/index.js.map +1 -0
  475. package/dist/engine/mutex.d.ts +5 -0
  476. package/dist/engine/mutex.d.ts.map +1 -0
  477. package/dist/engine/mutex.js +42 -0
  478. package/dist/engine/mutex.js.map +1 -0
  479. package/dist/engine/session.d.ts +50 -0
  480. package/dist/engine/session.d.ts.map +1 -0
  481. package/dist/engine/session.js +95 -0
  482. package/dist/engine/session.js.map +1 -0
  483. package/dist/engine/uri-resolver.d.ts +14 -0
  484. package/dist/engine/uri-resolver.d.ts.map +1 -0
  485. package/dist/engine/uri-resolver.js +12 -0
  486. package/dist/engine/uri-resolver.js.map +1 -0
  487. package/dist/frontmatter.d.ts +15 -0
  488. package/dist/frontmatter.d.ts.map +1 -0
  489. package/dist/frontmatter.js +46 -0
  490. package/dist/frontmatter.js.map +1 -0
  491. package/dist/gateway/hosted-stub.d.ts +6 -0
  492. package/dist/gateway/hosted-stub.d.ts.map +1 -0
  493. package/dist/gateway/hosted-stub.js +11 -0
  494. package/dist/gateway/hosted-stub.js.map +1 -0
  495. package/dist/gateway/index.d.ts +4 -0
  496. package/dist/gateway/index.d.ts.map +1 -0
  497. package/dist/gateway/index.js +4 -0
  498. package/dist/gateway/index.js.map +1 -0
  499. package/dist/gateway/local.d.ts +14 -0
  500. package/dist/gateway/local.d.ts.map +1 -0
  501. package/dist/gateway/local.js +41 -0
  502. package/dist/gateway/local.js.map +1 -0
  503. package/dist/gateway/types.d.ts +24 -0
  504. package/dist/gateway/types.d.ts.map +1 -0
  505. package/dist/gateway/types.js +7 -0
  506. package/dist/gateway/types.js.map +1 -0
  507. package/dist/http/server.d.ts +80 -0
  508. package/dist/http/server.d.ts.map +1 -0
  509. package/dist/http/server.js +183 -0
  510. package/dist/http/server.js.map +1 -0
  511. package/dist/http/session-manager.d.ts +42 -0
  512. package/dist/http/session-manager.d.ts.map +1 -0
  513. package/dist/http/session-manager.js +82 -0
  514. package/dist/http/session-manager.js.map +1 -0
  515. package/dist/http/workspace-auth.d.ts +9 -0
  516. package/dist/http/workspace-auth.d.ts.map +1 -0
  517. package/dist/http/workspace-auth.js +29 -0
  518. package/dist/http/workspace-auth.js.map +1 -0
  519. package/dist/index.d.ts +10 -0
  520. package/dist/index.d.ts.map +1 -0
  521. package/dist/index.js +10 -0
  522. package/dist/index.js.map +1 -0
  523. package/dist/metrics/mount.d.ts +11 -0
  524. package/dist/metrics/mount.d.ts.map +1 -0
  525. package/dist/metrics/mount.js +13 -0
  526. package/dist/metrics/mount.js.map +1 -0
  527. package/dist/metrics/recorder.d.ts +55 -0
  528. package/dist/metrics/recorder.d.ts.map +1 -0
  529. package/dist/metrics/recorder.js +97 -0
  530. package/dist/metrics/recorder.js.map +1 -0
  531. package/dist/revisions/hash.d.ts +7 -0
  532. package/dist/revisions/hash.d.ts.map +1 -0
  533. package/dist/revisions/hash.js +24 -0
  534. package/dist/revisions/hash.js.map +1 -0
  535. package/dist/revisions/index.d.ts +4 -0
  536. package/dist/revisions/index.d.ts.map +1 -0
  537. package/dist/revisions/index.js +4 -0
  538. package/dist/revisions/index.js.map +1 -0
  539. package/dist/revisions/store.d.ts +69 -0
  540. package/dist/revisions/store.d.ts.map +1 -0
  541. package/dist/revisions/store.js +196 -0
  542. package/dist/revisions/store.js.map +1 -0
  543. package/dist/revisions/types.d.ts +39 -0
  544. package/dist/revisions/types.d.ts.map +1 -0
  545. package/dist/revisions/types.js +2 -0
  546. package/dist/revisions/types.js.map +1 -0
  547. package/dist/server.d.ts +51 -0
  548. package/dist/server.d.ts.map +1 -0
  549. package/dist/server.js +175 -0
  550. package/dist/server.js.map +1 -0
  551. package/dist/skill-tools.d.ts +3 -0
  552. package/dist/skill-tools.d.ts.map +1 -0
  553. package/dist/skill-tools.js +105 -0
  554. package/dist/skill-tools.js.map +1 -0
  555. package/dist/test/test/cli/dispatcher.test.d.ts +2 -0
  556. package/dist/test/test/cli/dispatcher.test.d.ts.map +1 -0
  557. package/dist/test/test/cli/dispatcher.test.js +47 -0
  558. package/dist/test/test/cli/dispatcher.test.js.map +1 -0
  559. package/dist/test/test/cross-ref.test.d.ts +2 -0
  560. package/dist/test/test/cross-ref.test.d.ts.map +1 -0
  561. package/dist/test/test/cross-ref.test.js +39 -0
  562. package/dist/test/test/cross-ref.test.js.map +1 -0
  563. package/dist/test/test/engine/session.test.d.ts +2 -0
  564. package/dist/test/test/engine/session.test.d.ts.map +1 -0
  565. package/dist/test/test/engine/session.test.js +144 -0
  566. package/dist/test/test/engine/session.test.js.map +1 -0
  567. package/dist/test/test/engine/uri-resolver.test.d.ts +2 -0
  568. package/dist/test/test/engine/uri-resolver.test.d.ts.map +1 -0
  569. package/dist/test/test/engine/uri-resolver.test.js +38 -0
  570. package/dist/test/test/engine/uri-resolver.test.js.map +1 -0
  571. package/dist/test/test/frontmatter.test.d.ts +2 -0
  572. package/dist/test/test/frontmatter.test.d.ts.map +1 -0
  573. package/dist/test/test/frontmatter.test.js +55 -0
  574. package/dist/test/test/frontmatter.test.js.map +1 -0
  575. package/dist/test/test/gateway/hosted-stub.test.d.ts +2 -0
  576. package/dist/test/test/gateway/hosted-stub.test.d.ts.map +1 -0
  577. package/dist/test/test/gateway/hosted-stub.test.js +11 -0
  578. package/dist/test/test/gateway/hosted-stub.test.js.map +1 -0
  579. package/dist/test/test/gateway/local.test.d.ts +2 -0
  580. package/dist/test/test/gateway/local.test.d.ts.map +1 -0
  581. package/dist/test/test/gateway/local.test.js +29 -0
  582. package/dist/test/test/gateway/local.test.js.map +1 -0
  583. package/dist/test/test/handbook-contract.test.d.ts +2 -0
  584. package/dist/test/test/handbook-contract.test.d.ts.map +1 -0
  585. package/dist/test/test/handbook-contract.test.js +71 -0
  586. package/dist/test/test/handbook-contract.test.js.map +1 -0
  587. package/dist/test/test/http/server.test.d.ts +2 -0
  588. package/dist/test/test/http/server.test.d.ts.map +1 -0
  589. package/dist/test/test/http/server.test.js +245 -0
  590. package/dist/test/test/http/server.test.js.map +1 -0
  591. package/dist/test/test/http/session-manager.test.d.ts +2 -0
  592. package/dist/test/test/http/session-manager.test.d.ts.map +1 -0
  593. package/dist/test/test/http/session-manager.test.js +83 -0
  594. package/dist/test/test/http/session-manager.test.js.map +1 -0
  595. package/dist/test/test/revisions/hash.test.d.ts +2 -0
  596. package/dist/test/test/revisions/hash.test.d.ts.map +1 -0
  597. package/dist/test/test/revisions/hash.test.js +33 -0
  598. package/dist/test/test/revisions/hash.test.js.map +1 -0
  599. package/dist/test/test/revisions/store.test.d.ts +2 -0
  600. package/dist/test/test/revisions/store.test.d.ts.map +1 -0
  601. package/dist/test/test/revisions/store.test.js +245 -0
  602. package/dist/test/test/revisions/store.test.js.map +1 -0
  603. package/dist/test/test/server.test.d.ts +2 -0
  604. package/dist/test/test/server.test.d.ts.map +1 -0
  605. package/dist/test/test/server.test.js +157 -0
  606. package/dist/test/test/server.test.js.map +1 -0
  607. package/dist/test/test/skill-tools.test.d.ts +2 -0
  608. package/dist/test/test/skill-tools.test.d.ts.map +1 -0
  609. package/dist/test/test/skill-tools.test.js +84 -0
  610. package/dist/test/test/skill-tools.test.js.map +1 -0
  611. package/dist/test/test/smoke.test.d.ts +2 -0
  612. package/dist/test/test/smoke.test.d.ts.map +1 -0
  613. package/dist/test/test/smoke.test.js +8 -0
  614. package/dist/test/test/smoke.test.js.map +1 -0
  615. package/dist/test/test/tools/asset-generate.test.d.ts +2 -0
  616. package/dist/test/test/tools/asset-generate.test.d.ts.map +1 -0
  617. package/dist/test/test/tools/asset-generate.test.js +66 -0
  618. package/dist/test/test/tools/asset-generate.test.js.map +1 -0
  619. package/dist/test/test/tools/edit.test.d.ts +2 -0
  620. package/dist/test/test/tools/edit.test.d.ts.map +1 -0
  621. package/dist/test/test/tools/edit.test.js +205 -0
  622. package/dist/test/test/tools/edit.test.js.map +1 -0
  623. package/dist/test/test/tools/export.test.d.ts +2 -0
  624. package/dist/test/test/tools/export.test.d.ts.map +1 -0
  625. package/dist/test/test/tools/export.test.js +144 -0
  626. package/dist/test/test/tools/export.test.js.map +1 -0
  627. package/dist/test/test/tools/history.test.d.ts +2 -0
  628. package/dist/test/test/tools/history.test.d.ts.map +1 -0
  629. package/dist/test/test/tools/history.test.js +29 -0
  630. package/dist/test/test/tools/history.test.js.map +1 -0
  631. package/dist/test/test/tools/inspect.test.d.ts +2 -0
  632. package/dist/test/test/tools/inspect.test.d.ts.map +1 -0
  633. package/dist/test/test/tools/inspect.test.js +62 -0
  634. package/dist/test/test/tools/inspect.test.js.map +1 -0
  635. package/dist/test/test/tools/list.test.d.ts +2 -0
  636. package/dist/test/test/tools/list.test.d.ts.map +1 -0
  637. package/dist/test/test/tools/list.test.js +23 -0
  638. package/dist/test/test/tools/list.test.js.map +1 -0
  639. package/dist/test/test/tools/open-editor.test.d.ts +2 -0
  640. package/dist/test/test/tools/open-editor.test.d.ts.map +1 -0
  641. package/dist/test/test/tools/open-editor.test.js +53 -0
  642. package/dist/test/test/tools/open-editor.test.js.map +1 -0
  643. package/dist/test/test/tools/preview.test.d.ts +2 -0
  644. package/dist/test/test/tools/preview.test.d.ts.map +1 -0
  645. package/dist/test/test/tools/preview.test.js +73 -0
  646. package/dist/test/test/tools/preview.test.js.map +1 -0
  647. package/dist/test/test/tools/rename.test.d.ts +2 -0
  648. package/dist/test/test/tools/rename.test.d.ts.map +1 -0
  649. package/dist/test/test/tools/rename.test.js +17 -0
  650. package/dist/test/test/tools/rename.test.js.map +1 -0
  651. package/dist/test/test/viewer/broadcaster.test.d.ts +2 -0
  652. package/dist/test/test/viewer/broadcaster.test.d.ts.map +1 -0
  653. package/dist/test/test/viewer/broadcaster.test.js +53 -0
  654. package/dist/test/test/viewer/broadcaster.test.js.map +1 -0
  655. package/dist/test/test/viewer/resource-route.test.d.ts +2 -0
  656. package/dist/test/test/viewer/resource-route.test.d.ts.map +1 -0
  657. package/dist/test/test/viewer/resource-route.test.js +70 -0
  658. package/dist/test/test/viewer/resource-route.test.js.map +1 -0
  659. package/dist/test/test/viewer/router.test.d.ts +2 -0
  660. package/dist/test/test/viewer/router.test.d.ts.map +1 -0
  661. package/dist/test/test/viewer/router.test.js +171 -0
  662. package/dist/test/test/viewer/router.test.js.map +1 -0
  663. package/dist/test/test/viewer/url-builder.test.d.ts +2 -0
  664. package/dist/test/test/viewer/url-builder.test.d.ts.map +1 -0
  665. package/dist/test/test/viewer/url-builder.test.js +31 -0
  666. package/dist/test/test/viewer/url-builder.test.js.map +1 -0
  667. package/dist/test/test/workspace/hosted-stub.test.d.ts +2 -0
  668. package/dist/test/test/workspace/hosted-stub.test.d.ts.map +1 -0
  669. package/dist/test/test/workspace/hosted-stub.test.js +30 -0
  670. package/dist/test/test/workspace/hosted-stub.test.js.map +1 -0
  671. package/dist/test/test/workspace/in-memory.test.d.ts +2 -0
  672. package/dist/test/test/workspace/in-memory.test.d.ts.map +1 -0
  673. package/dist/test/test/workspace/in-memory.test.js +4 -0
  674. package/dist/test/test/workspace/in-memory.test.js.map +1 -0
  675. package/dist/test/test/workspace/node-fs.test.d.ts +2 -0
  676. package/dist/test/test/workspace/node-fs.test.d.ts.map +1 -0
  677. package/dist/test/test/workspace/node-fs.test.js +20 -0
  678. package/dist/test/test/workspace/node-fs.test.js.map +1 -0
  679. package/dist/test/test/workspace/shared-contract.d.ts +3 -0
  680. package/dist/test/test/workspace/shared-contract.d.ts.map +1 -0
  681. package/dist/test/test/workspace/shared-contract.js +92 -0
  682. package/dist/test/test/workspace/shared-contract.js.map +1 -0
  683. package/dist/test/tsconfig.test.tsbuildinfo +1 -0
  684. package/dist/test/vitest.config.d.ts +3 -0
  685. package/dist/test/vitest.config.d.ts.map +1 -0
  686. package/dist/test/vitest.config.js +8 -0
  687. package/dist/test/vitest.config.js.map +1 -0
  688. package/dist/tools/asset-generate.d.ts +12 -0
  689. package/dist/tools/asset-generate.d.ts.map +1 -0
  690. package/dist/tools/asset-generate.js +112 -0
  691. package/dist/tools/asset-generate.js.map +1 -0
  692. package/dist/tools/asset-search.d.ts +10 -0
  693. package/dist/tools/asset-search.d.ts.map +1 -0
  694. package/dist/tools/asset-search.js +120 -0
  695. package/dist/tools/asset-search.js.map +1 -0
  696. package/dist/tools/content-types.d.ts +11 -0
  697. package/dist/tools/content-types.d.ts.map +1 -0
  698. package/dist/tools/content-types.js +2 -0
  699. package/dist/tools/content-types.js.map +1 -0
  700. package/dist/tools/edit.d.ts +29 -0
  701. package/dist/tools/edit.d.ts.map +1 -0
  702. package/dist/tools/edit.js +165 -0
  703. package/dist/tools/edit.js.map +1 -0
  704. package/dist/tools/engine.d.ts +31 -0
  705. package/dist/tools/engine.d.ts.map +1 -0
  706. package/dist/tools/engine.js +59 -0
  707. package/dist/tools/engine.js.map +1 -0
  708. package/dist/tools/export.d.ts +19 -0
  709. package/dist/tools/export.d.ts.map +1 -0
  710. package/dist/tools/export.js +179 -0
  711. package/dist/tools/export.js.map +1 -0
  712. package/dist/tools/history.d.ts +7 -0
  713. package/dist/tools/history.d.ts.map +1 -0
  714. package/dist/tools/history.js +54 -0
  715. package/dist/tools/history.js.map +1 -0
  716. package/dist/tools/index.d.ts +35 -0
  717. package/dist/tools/index.d.ts.map +1 -0
  718. package/dist/tools/index.js +72 -0
  719. package/dist/tools/index.js.map +1 -0
  720. package/dist/tools/inspect.d.ts +7 -0
  721. package/dist/tools/inspect.d.ts.map +1 -0
  722. package/dist/tools/inspect.js +80 -0
  723. package/dist/tools/inspect.js.map +1 -0
  724. package/dist/tools/list.d.ts +7 -0
  725. package/dist/tools/list.d.ts.map +1 -0
  726. package/dist/tools/list.js +18 -0
  727. package/dist/tools/list.js.map +1 -0
  728. package/dist/tools/metrics.d.ts +11 -0
  729. package/dist/tools/metrics.d.ts.map +1 -0
  730. package/dist/tools/metrics.js +28 -0
  731. package/dist/tools/metrics.js.map +1 -0
  732. package/dist/tools/open-editor.d.ts +10 -0
  733. package/dist/tools/open-editor.d.ts.map +1 -0
  734. package/dist/tools/open-editor.js +62 -0
  735. package/dist/tools/open-editor.js.map +1 -0
  736. package/dist/tools/preview.d.ts +12 -0
  737. package/dist/tools/preview.d.ts.map +1 -0
  738. package/dist/tools/preview.js +104 -0
  739. package/dist/tools/preview.js.map +1 -0
  740. package/dist/tools/rename.d.ts +7 -0
  741. package/dist/tools/rename.d.ts.map +1 -0
  742. package/dist/tools/rename.js +39 -0
  743. package/dist/tools/rename.js.map +1 -0
  744. package/dist/tools/result.d.ts +12 -0
  745. package/dist/tools/result.d.ts.map +1 -0
  746. package/dist/tools/result.js +55 -0
  747. package/dist/tools/result.js.map +1 -0
  748. package/dist/tools/save.d.ts +19 -0
  749. package/dist/tools/save.d.ts.map +1 -0
  750. package/dist/tools/save.js +117 -0
  751. package/dist/tools/save.js.map +1 -0
  752. package/dist/viewer/broadcaster.d.ts +13 -0
  753. package/dist/viewer/broadcaster.d.ts.map +1 -0
  754. package/dist/viewer/broadcaster.js +44 -0
  755. package/dist/viewer/broadcaster.js.map +1 -0
  756. package/dist/viewer/index.d.ts +7 -0
  757. package/dist/viewer/index.d.ts.map +1 -0
  758. package/dist/viewer/index.js +7 -0
  759. package/dist/viewer/index.js.map +1 -0
  760. package/dist/viewer/listener.d.ts +16 -0
  761. package/dist/viewer/listener.d.ts.map +1 -0
  762. package/dist/viewer/listener.js +30 -0
  763. package/dist/viewer/listener.js.map +1 -0
  764. package/dist/viewer/presigned-r2-url-builder.d.ts +30 -0
  765. package/dist/viewer/presigned-r2-url-builder.d.ts.map +1 -0
  766. package/dist/viewer/presigned-r2-url-builder.js +40 -0
  767. package/dist/viewer/presigned-r2-url-builder.js.map +1 -0
  768. package/dist/viewer/resource-route.d.ts +9 -0
  769. package/dist/viewer/resource-route.d.ts.map +1 -0
  770. package/dist/viewer/resource-route.js +59 -0
  771. package/dist/viewer/resource-route.js.map +1 -0
  772. package/dist/viewer/router.d.ts +20 -0
  773. package/dist/viewer/router.d.ts.map +1 -0
  774. package/dist/viewer/router.js +142 -0
  775. package/dist/viewer/router.js.map +1 -0
  776. package/dist/viewer/session-mount.d.ts +10 -0
  777. package/dist/viewer/session-mount.d.ts.map +1 -0
  778. package/dist/viewer/session-mount.js +24 -0
  779. package/dist/viewer/session-mount.js.map +1 -0
  780. package/dist/viewer/spa-assets.generated.d.ts +2 -0
  781. package/dist/viewer/spa-assets.generated.d.ts.map +1 -0
  782. package/dist/viewer/spa-assets.generated.js +989 -0
  783. package/dist/viewer/spa-assets.generated.js.map +1 -0
  784. package/dist/viewer/url-builder.d.ts +48 -0
  785. package/dist/viewer/url-builder.d.ts.map +1 -0
  786. package/dist/viewer/url-builder.js +38 -0
  787. package/dist/viewer/url-builder.js.map +1 -0
  788. package/dist/workspace/hosted-stub.d.ts +28 -0
  789. package/dist/workspace/hosted-stub.d.ts.map +1 -0
  790. package/dist/workspace/hosted-stub.js +44 -0
  791. package/dist/workspace/hosted-stub.js.map +1 -0
  792. package/dist/workspace/in-memory.d.ts +23 -0
  793. package/dist/workspace/in-memory.d.ts.map +1 -0
  794. package/dist/workspace/in-memory.js +161 -0
  795. package/dist/workspace/in-memory.js.map +1 -0
  796. package/dist/workspace/index.d.ts +6 -0
  797. package/dist/workspace/index.d.ts.map +1 -0
  798. package/dist/workspace/index.js +6 -0
  799. package/dist/workspace/index.js.map +1 -0
  800. package/dist/workspace/node-fs.d.ts +23 -0
  801. package/dist/workspace/node-fs.d.ts.map +1 -0
  802. package/dist/workspace/node-fs.js +90 -0
  803. package/dist/workspace/node-fs.js.map +1 -0
  804. package/dist/workspace/s3.d.ts +32 -0
  805. package/dist/workspace/s3.d.ts.map +1 -0
  806. package/dist/workspace/s3.js +191 -0
  807. package/dist/workspace/s3.js.map +1 -0
  808. package/dist/workspace/scoped.d.ts +32 -0
  809. package/dist/workspace/scoped.d.ts.map +1 -0
  810. package/dist/workspace/scoped.js +76 -0
  811. package/dist/workspace/scoped.js.map +1 -0
  812. package/dist/workspace/types.d.ts +75 -0
  813. package/dist/workspace/types.d.ts.map +1 -0
  814. package/dist/workspace/types.js +18 -0
  815. package/dist/workspace/types.js.map +1 -0
  816. package/package.json +80 -0
@@ -0,0 +1,1311 @@
1
+ > This is one page of the CE.SDK Vanilla JS/TS documentation. For a complete overview, see the [Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
2
+
3
+ **Navigation:** [Guides](./guides.md) > [Fills](./fills.md) > [Gradient](./filters-and-effects/gradients.md)
4
+
5
+ ---
6
+
7
+ Create smooth color transitions in shapes, text, and design blocks using
8
+ CE.SDK's gradient fill system with support for linear, radial, and conical
9
+ gradients.
10
+
11
+ ![Gradient Fills example showing linear, radial, and conical gradient transitions](https://img.ly/docs/cesdk/./assets/browser.hero.webp)
12
+
13
+ > **Reading time:** 20 minutes
14
+ >
15
+ > **Resources:**
16
+ >
17
+ > - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
18
+ > - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-fills-gradient-browser)
19
+ > - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-fills-gradient-browser)
20
+ > - [Live demo](https://img.ly/docs/cesdk/examples/guides-fills-gradient-browser/)
21
+
22
+ Gradient fills are one of the fundamental fill types in CE.SDK, allowing you to paint design blocks with smooth color transitions. Unlike solid color fills that apply a uniform color or image fills that display photo content, gradient fills create dynamic visual effects with depth and visual interest. The gradient fill system supports three types: linear gradients that transition along a straight line, radial gradients that emanate from a center point, and conical gradients that rotate around a center point like a color wheel.
23
+
24
+ ```typescript file=@cesdk_web_examples/guides-fills-gradient-browser/browser.ts reference-only
25
+ import type { EditorPlugin, EditorPluginContext } from '@cesdk/cesdk-js';
26
+ import {
27
+ BlurAssetSource,
28
+ ColorPaletteAssetSource,
29
+ CropPresetsAssetSource,
30
+ DemoAssetSources,
31
+ EffectsAssetSource,
32
+ FiltersAssetSource,
33
+ PagePresetsAssetSource,
34
+ StickerAssetSource,
35
+ TextAssetSource,
36
+ TextComponentAssetSource,
37
+ TypefaceAssetSource,
38
+ UploadAssetSources,
39
+ VectorShapeAssetSource
40
+ } from '@cesdk/cesdk-js/plugins';
41
+ import { DesignEditorConfig } from './design-editor/plugin';
42
+ import packageJson from './package.json';
43
+ import { calculateGridLayout } from './utils';
44
+
45
+ /**
46
+ * CE.SDK Plugin: Gradient Fills Guide
47
+ *
48
+ * This example demonstrates:
49
+ * - Creating linear, radial, and conical gradient fills
50
+ * - Configuring gradient color stops
51
+ * - Positioning gradients
52
+ * - Using different color spaces in gradients
53
+ * - Advanced gradient techniques
54
+ */
55
+ class Example implements EditorPlugin {
56
+ name = packageJson.name;
57
+
58
+ version = packageJson.version;
59
+
60
+ async initialize({ cesdk }: EditorPluginContext): Promise<void> {
61
+ if (!cesdk) {
62
+ throw new Error('CE.SDK instance is required for this plugin');
63
+ }
64
+
65
+ await cesdk.addPlugin(new DesignEditorConfig());
66
+ // Add asset source plugins
67
+ await cesdk.addPlugin(new BlurAssetSource());
68
+ await cesdk.addPlugin(new ColorPaletteAssetSource());
69
+ await cesdk.addPlugin(new CropPresetsAssetSource());
70
+ await cesdk.addPlugin(
71
+ new UploadAssetSources({ include: ['ly.img.image.upload'] })
72
+ );
73
+ await cesdk.addPlugin(
74
+ new DemoAssetSources({
75
+ include: [
76
+ 'ly.img.templates.blank.*',
77
+ 'ly.img.templates.presentation.*',
78
+ 'ly.img.templates.print.*',
79
+ 'ly.img.templates.social.*',
80
+ 'ly.img.image.*'
81
+ ]
82
+ })
83
+ );
84
+ await cesdk.addPlugin(new EffectsAssetSource());
85
+ await cesdk.addPlugin(new FiltersAssetSource());
86
+ await cesdk.addPlugin(new PagePresetsAssetSource());
87
+ await cesdk.addPlugin(new StickerAssetSource());
88
+ await cesdk.addPlugin(new TextAssetSource());
89
+ await cesdk.addPlugin(new TextComponentAssetSource());
90
+ await cesdk.addPlugin(new TypefaceAssetSource());
91
+ await cesdk.addPlugin(new VectorShapeAssetSource());
92
+
93
+ // Fill features are enabled by default in CE.SDK
94
+ // You can check and control fill feature availability:
95
+ const engine = cesdk.engine;
96
+ const isFillEnabled = cesdk.feature.isEnabled('ly.img.fill', { engine });
97
+ console.log('Fill feature enabled:', isFillEnabled);
98
+
99
+ // Create a design scene using CE.SDK cesdk method
100
+ await cesdk.actions.run('scene.create', {
101
+ page: { width: 1200, height: 900, unit: 'Pixel' }
102
+ });
103
+
104
+ // Get the page
105
+ const pages = engine.block.findByType('page');
106
+ const page = pages[0];
107
+ if (!page) {
108
+ throw new Error('No page found');
109
+ }
110
+
111
+ // Set page background to light gray
112
+ const pageFill = engine.block.getFill(page);
113
+ engine.block.setColor(pageFill, 'fill/color/value', {
114
+ r: 0.95,
115
+ g: 0.95,
116
+ b: 0.95,
117
+ a: 1.0
118
+ });
119
+
120
+ // Calculate responsive grid layout based on page dimensions
121
+ const pageWidth = engine.block.getWidth(page);
122
+ const pageHeight = engine.block.getHeight(page);
123
+ const layout = calculateGridLayout(pageWidth, pageHeight, 15);
124
+ const { blockWidth, blockHeight, getPosition } = layout;
125
+
126
+ // Helper function to create a shape with a fill
127
+ const createShapeWithFill = (
128
+ fillType: 'gradient/linear' | 'gradient/radial' | 'gradient/conical'
129
+ ): { block: number; fill: number } => {
130
+ const block = engine.block.create('graphic');
131
+ const shape = engine.block.createShape('rect');
132
+ engine.block.setShape(block, shape);
133
+
134
+ // Set size
135
+ engine.block.setWidth(block, blockWidth);
136
+ engine.block.setHeight(block, blockHeight);
137
+
138
+ // Append to page
139
+ engine.block.appendChild(page, block);
140
+
141
+ // Check if block supports fills
142
+ const canHaveFill = engine.block.supportsFill(block);
143
+ if (!canHaveFill) {
144
+ throw new Error('Block does not support fills');
145
+ }
146
+
147
+ // Create gradient fill
148
+ const gradientFill = engine.block.createFill(fillType);
149
+
150
+ // Apply the fill to the block
151
+ engine.block.setFill(block, gradientFill);
152
+
153
+ return { block, fill: gradientFill };
154
+ };
155
+
156
+ // =============================================================================
157
+ // Example 1: Linear Gradient (Vertical)
158
+ // =============================================================================
159
+ const { block: linearVerticalBlock, fill: linearVertical } =
160
+ createShapeWithFill('gradient/linear');
161
+
162
+ engine.block.setGradientColorStops(linearVertical, 'fill/gradient/colors', [
163
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1.0 }, stop: 0 },
164
+ { color: { r: 0.3, g: 0.4, b: 0.7, a: 1.0 }, stop: 1 }
165
+ ]);
166
+
167
+ // Set vertical gradient (top to bottom)
168
+ engine.block.setFloat(
169
+ linearVertical,
170
+ 'fill/gradient/linear/startPointX',
171
+ 0.5
172
+ );
173
+ engine.block.setFloat(
174
+ linearVertical,
175
+ 'fill/gradient/linear/startPointY',
176
+ 0
177
+ );
178
+ engine.block.setFloat(
179
+ linearVertical,
180
+ 'fill/gradient/linear/endPointX',
181
+ 0.5
182
+ );
183
+ engine.block.setFloat(linearVertical, 'fill/gradient/linear/endPointY', 1);
184
+
185
+ // =============================================================================
186
+ // Example 2: Linear Gradient (Horizontal)
187
+ // =============================================================================
188
+ const { block: linearHorizontalBlock, fill: linearHorizontal } =
189
+ createShapeWithFill('gradient/linear');
190
+
191
+ engine.block.setGradientColorStops(
192
+ linearHorizontal,
193
+ 'fill/gradient/colors',
194
+ [
195
+ { color: { r: 0.8, g: 0.2, b: 0.4, a: 1.0 }, stop: 0 },
196
+ { color: { r: 0.2, g: 0.8, b: 0.6, a: 1.0 }, stop: 1 }
197
+ ]
198
+ );
199
+
200
+ // Set horizontal gradient (left to right)
201
+ engine.block.setFloat(
202
+ linearHorizontal,
203
+ 'fill/gradient/linear/startPointX',
204
+ 0
205
+ );
206
+ engine.block.setFloat(
207
+ linearHorizontal,
208
+ 'fill/gradient/linear/startPointY',
209
+ 0.5
210
+ );
211
+ engine.block.setFloat(
212
+ linearHorizontal,
213
+ 'fill/gradient/linear/endPointX',
214
+ 1
215
+ );
216
+ engine.block.setFloat(
217
+ linearHorizontal,
218
+ 'fill/gradient/linear/endPointY',
219
+ 0.5
220
+ );
221
+
222
+ // =============================================================================
223
+ // Example 3: Linear Gradient (Diagonal)
224
+ // =============================================================================
225
+ const { block: linearDiagonalBlock, fill: linearDiagonal } =
226
+ createShapeWithFill('gradient/linear');
227
+
228
+ engine.block.setGradientColorStops(linearDiagonal, 'fill/gradient/colors', [
229
+ { color: { r: 0.5, g: 0.2, b: 0.8, a: 1.0 }, stop: 0 },
230
+ { color: { r: 0.9, g: 0.6, b: 0.2, a: 1.0 }, stop: 1 }
231
+ ]);
232
+
233
+ // Set diagonal gradient (top-left to bottom-right)
234
+ engine.block.setFloat(
235
+ linearDiagonal,
236
+ 'fill/gradient/linear/startPointX',
237
+ 0
238
+ );
239
+ engine.block.setFloat(
240
+ linearDiagonal,
241
+ 'fill/gradient/linear/startPointY',
242
+ 0
243
+ );
244
+ engine.block.setFloat(linearDiagonal, 'fill/gradient/linear/endPointX', 1);
245
+ engine.block.setFloat(linearDiagonal, 'fill/gradient/linear/endPointY', 1);
246
+
247
+ // =============================================================================
248
+ // Example 4: Multi-Stop Linear Gradient (Aurora Effect)
249
+ // =============================================================================
250
+ const { block: auroraGradientBlock, fill: auroraGradient } =
251
+ createShapeWithFill('gradient/linear');
252
+
253
+ engine.block.setGradientColorStops(auroraGradient, 'fill/gradient/colors', [
254
+ { color: { r: 0.4, g: 0.1, b: 0.8, a: 1 }, stop: 0 },
255
+ { color: { r: 0.8, g: 0.2, b: 0.6, a: 1 }, stop: 0.3 },
256
+ { color: { r: 1.0, g: 0.5, b: 0.3, a: 1 }, stop: 0.6 },
257
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1 }, stop: 1 }
258
+ ]);
259
+
260
+ engine.block.setFloat(
261
+ auroraGradient,
262
+ 'fill/gradient/linear/startPointX',
263
+ 0
264
+ );
265
+ engine.block.setFloat(
266
+ auroraGradient,
267
+ 'fill/gradient/linear/startPointY',
268
+ 0.5
269
+ );
270
+ engine.block.setFloat(auroraGradient, 'fill/gradient/linear/endPointX', 1);
271
+ engine.block.setFloat(
272
+ auroraGradient,
273
+ 'fill/gradient/linear/endPointY',
274
+ 0.5
275
+ );
276
+
277
+ // =============================================================================
278
+ // Example 5: Radial Gradient (Centered)
279
+ // =============================================================================
280
+ const { block: radialCenteredBlock, fill: radialCentered } =
281
+ createShapeWithFill('gradient/radial');
282
+
283
+ engine.block.setGradientColorStops(radialCentered, 'fill/gradient/colors', [
284
+ { color: { r: 1.0, g: 1.0, b: 1.0, a: 0.3 }, stop: 0 },
285
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1.0 }, stop: 1 }
286
+ ]);
287
+
288
+ // Set center point (middle of block)
289
+ engine.block.setFloat(
290
+ radialCentered,
291
+ 'fill/gradient/radial/centerPointX',
292
+ 0.5
293
+ );
294
+ engine.block.setFloat(
295
+ radialCentered,
296
+ 'fill/gradient/radial/centerPointY',
297
+ 0.5
298
+ );
299
+ engine.block.setFloat(radialCentered, 'fill/gradient/radial/radius', 0.8);
300
+
301
+ // =============================================================================
302
+ // Example 6: Radial Gradient (Top-Left Highlight)
303
+ // =============================================================================
304
+ const { block: radialHighlightBlock, fill: radialHighlight } =
305
+ createShapeWithFill('gradient/radial');
306
+
307
+ engine.block.setGradientColorStops(
308
+ radialHighlight,
309
+ 'fill/gradient/colors',
310
+ [
311
+ { color: { r: 1.0, g: 1.0, b: 1.0, a: 0.3 }, stop: 0 },
312
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1.0 }, stop: 1 }
313
+ ]
314
+ );
315
+
316
+ // Set top-left highlight
317
+ engine.block.setFloat(
318
+ radialHighlight,
319
+ 'fill/gradient/radial/centerPointX',
320
+ 0
321
+ );
322
+ engine.block.setFloat(
323
+ radialHighlight,
324
+ 'fill/gradient/radial/centerPointY',
325
+ 0
326
+ );
327
+ engine.block.setFloat(radialHighlight, 'fill/gradient/radial/radius', 1.0);
328
+
329
+ // =============================================================================
330
+ // Example 7: Radial Gradient (Vignette Effect)
331
+ // =============================================================================
332
+ const { block: radialVignetteBlock, fill: radialVignette } =
333
+ createShapeWithFill('gradient/radial');
334
+
335
+ engine.block.setGradientColorStops(radialVignette, 'fill/gradient/colors', [
336
+ { color: { r: 0.9, g: 0.9, b: 0.9, a: 1.0 }, stop: 0 },
337
+ { color: { r: 0.1, g: 0.1, b: 0.1, a: 1.0 }, stop: 1 }
338
+ ]);
339
+
340
+ // Centered vignette
341
+ engine.block.setFloat(
342
+ radialVignette,
343
+ 'fill/gradient/radial/centerPointX',
344
+ 0.5
345
+ );
346
+ engine.block.setFloat(
347
+ radialVignette,
348
+ 'fill/gradient/radial/centerPointY',
349
+ 0.5
350
+ );
351
+ engine.block.setFloat(radialVignette, 'fill/gradient/radial/radius', 0.6);
352
+
353
+ // =============================================================================
354
+ // Example 8: Conical Gradient (Color Wheel)
355
+ // =============================================================================
356
+ const { block: conicalColorWheelBlock, fill: conicalColorWheel } =
357
+ createShapeWithFill('gradient/conical');
358
+
359
+ engine.block.setGradientColorStops(
360
+ conicalColorWheel,
361
+ 'fill/gradient/colors',
362
+ [
363
+ { color: { r: 1.0, g: 0.0, b: 0.0, a: 1 }, stop: 0 },
364
+ { color: { r: 1.0, g: 1.0, b: 0.0, a: 1 }, stop: 0.25 },
365
+ { color: { r: 0.0, g: 1.0, b: 0.0, a: 1 }, stop: 0.5 },
366
+ { color: { r: 0.0, g: 0.0, b: 1.0, a: 1 }, stop: 0.75 },
367
+ { color: { r: 1.0, g: 0.0, b: 0.0, a: 1 }, stop: 1 }
368
+ ]
369
+ );
370
+
371
+ // Set center point (middle of block)
372
+ engine.block.setFloat(
373
+ conicalColorWheel,
374
+ 'fill/gradient/conical/centerPointX',
375
+ 0.5
376
+ );
377
+ engine.block.setFloat(
378
+ conicalColorWheel,
379
+ 'fill/gradient/conical/centerPointY',
380
+ 0.5
381
+ );
382
+
383
+ // =============================================================================
384
+ // Example 9: Conical Gradient (Loading Spinner)
385
+ // =============================================================================
386
+ const { block: conicalSpinnerBlock, fill: conicalSpinner } =
387
+ createShapeWithFill('gradient/conical');
388
+
389
+ engine.block.setGradientColorStops(conicalSpinner, 'fill/gradient/colors', [
390
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1 }, stop: 0 },
391
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 0 }, stop: 0.75 },
392
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1 }, stop: 1 }
393
+ ]);
394
+
395
+ engine.block.setFloat(
396
+ conicalSpinner,
397
+ 'fill/gradient/conical/centerPointX',
398
+ 0.5
399
+ );
400
+ engine.block.setFloat(
401
+ conicalSpinner,
402
+ 'fill/gradient/conical/centerPointY',
403
+ 0.5
404
+ );
405
+
406
+ // =============================================================================
407
+ // Example 10: Gradient with CMYK Colors
408
+ // =============================================================================
409
+ const { block: cmykGradientBlock, fill: cmykGradient } =
410
+ createShapeWithFill('gradient/linear');
411
+
412
+ // CMYK color stops for print
413
+ engine.block.setGradientColorStops(cmykGradient, 'fill/gradient/colors', [
414
+ { color: { c: 0.0, m: 1.0, y: 1.0, k: 0.0, tint: 1.0 }, stop: 0 },
415
+ { color: { c: 1.0, m: 0.0, y: 1.0, k: 0.0, tint: 1.0 }, stop: 1 }
416
+ ]);
417
+
418
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/startPointX', 0);
419
+ engine.block.setFloat(
420
+ cmykGradient,
421
+ 'fill/gradient/linear/startPointY',
422
+ 0.5
423
+ );
424
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/endPointX', 1);
425
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/endPointY', 0.5);
426
+
427
+ // =============================================================================
428
+ // Example 11: Gradient with Spot Colors
429
+ // =============================================================================
430
+ // First define spot colors
431
+ engine.editor.setSpotColorRGB('BrandPrimary', 0.2, 0.4, 0.8);
432
+ engine.editor.setSpotColorRGB('BrandSecondary', 1.0, 0.6, 0.0);
433
+
434
+ const { block: spotGradientBlock, fill: spotGradient } =
435
+ createShapeWithFill('gradient/linear');
436
+
437
+ engine.block.setGradientColorStops(spotGradient, 'fill/gradient/colors', [
438
+ {
439
+ color: { name: 'BrandPrimary', tint: 1.0, externalReference: '' },
440
+ stop: 0
441
+ },
442
+ {
443
+ color: { name: 'BrandSecondary', tint: 1.0, externalReference: '' },
444
+ stop: 1
445
+ }
446
+ ]);
447
+
448
+ engine.block.setFloat(spotGradient, 'fill/gradient/linear/startPointX', 0);
449
+ engine.block.setFloat(spotGradient, 'fill/gradient/linear/startPointY', 0);
450
+ engine.block.setFloat(spotGradient, 'fill/gradient/linear/endPointX', 1);
451
+ engine.block.setFloat(spotGradient, 'fill/gradient/linear/endPointY', 1);
452
+
453
+ // =============================================================================
454
+ // Example 12: Transparency Overlay Gradient
455
+ // =============================================================================
456
+ const { block: overlayGradientBlock, fill: overlayGradient } =
457
+ createShapeWithFill('gradient/linear');
458
+
459
+ engine.block.setGradientColorStops(
460
+ overlayGradient,
461
+ 'fill/gradient/colors',
462
+ [
463
+ { color: { r: 0.0, g: 0.0, b: 0.0, a: 0 }, stop: 0 },
464
+ { color: { r: 0.0, g: 0.0, b: 0.0, a: 0.7 }, stop: 1 }
465
+ ]
466
+ );
467
+
468
+ engine.block.setFloat(
469
+ overlayGradient,
470
+ 'fill/gradient/linear/startPointX',
471
+ 0.5
472
+ );
473
+ engine.block.setFloat(
474
+ overlayGradient,
475
+ 'fill/gradient/linear/startPointY',
476
+ 0
477
+ );
478
+ engine.block.setFloat(
479
+ overlayGradient,
480
+ 'fill/gradient/linear/endPointX',
481
+ 0.5
482
+ );
483
+ engine.block.setFloat(overlayGradient, 'fill/gradient/linear/endPointY', 1);
484
+
485
+ // =============================================================================
486
+ // Example 13: Duotone Gradient
487
+ // =============================================================================
488
+ const { block: duotoneGradientBlock, fill: duotoneGradient } =
489
+ createShapeWithFill('gradient/linear');
490
+
491
+ engine.block.setGradientColorStops(
492
+ duotoneGradient,
493
+ 'fill/gradient/colors',
494
+ [
495
+ { color: { r: 0.8, g: 0.2, b: 0.9, a: 1 }, stop: 0 },
496
+ { color: { r: 0.2, g: 0.9, b: 0.8, a: 1 }, stop: 1 }
497
+ ]
498
+ );
499
+
500
+ engine.block.setFloat(
501
+ duotoneGradient,
502
+ 'fill/gradient/linear/startPointX',
503
+ 0
504
+ );
505
+ engine.block.setFloat(
506
+ duotoneGradient,
507
+ 'fill/gradient/linear/startPointY',
508
+ 0
509
+ );
510
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/endPointX', 1);
511
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/endPointY', 1);
512
+
513
+ // =============================================================================
514
+ // Example 14: Shared Gradient Fill
515
+ // =============================================================================
516
+ const block1 = engine.block.create('graphic');
517
+ const shape1 = engine.block.createShape('rect');
518
+ engine.block.setShape(block1, shape1);
519
+ engine.block.setWidth(block1, blockWidth);
520
+ engine.block.setHeight(block1, blockHeight / 2 - 5);
521
+ engine.block.appendChild(page, block1);
522
+
523
+ const block2 = engine.block.create('graphic');
524
+ const shape2 = engine.block.createShape('rect');
525
+ engine.block.setShape(block2, shape2);
526
+ engine.block.setWidth(block2, blockWidth);
527
+ engine.block.setHeight(block2, blockHeight / 2 - 5);
528
+ engine.block.appendChild(page, block2);
529
+
530
+ // Create one gradient fill
531
+ const sharedGradient = engine.block.createFill('gradient/linear');
532
+ engine.block.setGradientColorStops(sharedGradient, 'fill/gradient/colors', [
533
+ { color: { r: 1, g: 0, b: 0, a: 1 }, stop: 0 },
534
+ { color: { r: 0, g: 0, b: 1, a: 1 }, stop: 1 }
535
+ ]);
536
+
537
+ engine.block.setFloat(
538
+ sharedGradient,
539
+ 'fill/gradient/linear/startPointX',
540
+ 0
541
+ );
542
+ engine.block.setFloat(
543
+ sharedGradient,
544
+ 'fill/gradient/linear/startPointY',
545
+ 0.5
546
+ );
547
+ engine.block.setFloat(sharedGradient, 'fill/gradient/linear/endPointX', 1);
548
+ engine.block.setFloat(
549
+ sharedGradient,
550
+ 'fill/gradient/linear/endPointY',
551
+ 0.5
552
+ );
553
+
554
+ // Apply to both blocks
555
+ engine.block.setFill(block1, sharedGradient);
556
+ engine.block.setFill(block2, sharedGradient);
557
+
558
+ // Change gradient after a delay to show it affects both
559
+ setTimeout(() => {
560
+ engine.block.setGradientColorStops(
561
+ sharedGradient,
562
+ 'fill/gradient/colors',
563
+ [
564
+ { color: { r: 0, g: 1, b: 0, a: 1 }, stop: 0 },
565
+ { color: { r: 1, g: 1, b: 0, a: 1 }, stop: 1 }
566
+ ]
567
+ );
568
+ }, 2000);
569
+
570
+ // =============================================================================
571
+ // Example 15: Get Gradient Properties
572
+ // =============================================================================
573
+ const { block: inspectGradientBlock, fill: inspectGradient } =
574
+ createShapeWithFill('gradient/linear');
575
+
576
+ engine.block.setGradientColorStops(
577
+ inspectGradient,
578
+ 'fill/gradient/colors',
579
+ [
580
+ { color: { r: 0.6, g: 0.3, b: 0.7, a: 1.0 }, stop: 0 },
581
+ { color: { r: 0.3, g: 0.7, b: 0.6, a: 1.0 }, stop: 1 }
582
+ ]
583
+ );
584
+
585
+ // Get current fill from block
586
+ const fillId = engine.block.getFill(block1);
587
+ const fillType = engine.block.getType(fillId);
588
+ // eslint-disable-next-line no-console
589
+ console.log('Fill type:', fillType); // '//ly.img.ubq/fill/gradient/linear'
590
+
591
+ // Get gradient color stops
592
+ const colorStops = engine.block.getGradientColorStops(
593
+ inspectGradient,
594
+ 'fill/gradient/colors'
595
+ );
596
+ // eslint-disable-next-line no-console
597
+ console.log('Color stops:', colorStops);
598
+
599
+ // Get linear gradient position
600
+ const startX = engine.block.getFloat(
601
+ inspectGradient,
602
+ 'fill/gradient/linear/startPointX'
603
+ );
604
+ const startY = engine.block.getFloat(
605
+ inspectGradient,
606
+ 'fill/gradient/linear/startPointY'
607
+ );
608
+ const endX = engine.block.getFloat(
609
+ inspectGradient,
610
+ 'fill/gradient/linear/endPointX'
611
+ );
612
+ const endY = engine.block.getFloat(
613
+ inspectGradient,
614
+ 'fill/gradient/linear/endPointY'
615
+ );
616
+ // eslint-disable-next-line no-console
617
+ console.log('Linear gradient position:', { startX, startY, endX, endY });
618
+
619
+ // ===== Position all blocks in grid layout =====
620
+ const blocks = [
621
+ linearVerticalBlock, // Position 0
622
+ linearHorizontalBlock, // Position 1
623
+ linearDiagonalBlock, // Position 2
624
+ auroraGradientBlock, // Position 3
625
+ radialCenteredBlock, // Position 4
626
+ radialHighlightBlock, // Position 5
627
+ radialVignetteBlock, // Position 6
628
+ conicalColorWheelBlock, // Position 7
629
+ conicalSpinnerBlock, // Position 8
630
+ cmykGradientBlock, // Position 9
631
+ spotGradientBlock, // Position 10
632
+ overlayGradientBlock, // Position 11
633
+ duotoneGradientBlock, // Position 12
634
+ block1, // Position 13 (top half)
635
+ inspectGradientBlock // Position 14
636
+ ];
637
+
638
+ blocks.forEach((block, index) => {
639
+ const pos = getPosition(index);
640
+ engine.block.setPositionX(block, pos.x);
641
+ engine.block.setPositionY(block, pos.y);
642
+ });
643
+
644
+ // Position block2 below block1 in the same grid cell
645
+ const block1Pos = getPosition(13);
646
+ engine.block.setPositionX(block2, block1Pos.x);
647
+ engine.block.setPositionY(block2, block1Pos.y + blockHeight / 2 + 5);
648
+
649
+ // Zoom to fit all content
650
+ await engine.scene.zoomToBlock(page, {
651
+ padding: {
652
+ left: 40,
653
+ top: 40,
654
+ right: 40,
655
+ bottom: 40
656
+ }
657
+ });
658
+ }
659
+ }
660
+
661
+ export default Example;
662
+ ```
663
+
664
+ This guide demonstrates how to create, apply, and configure gradient fills programmatically, work with color stops, position gradients, and create modern visual effects like aurora gradients and button highlights.
665
+
666
+ ## Understanding Gradient Fills
667
+
668
+ ### What is a Gradient Fill?
669
+
670
+ A gradient fill is a fill object that paints a design block with smooth color transitions. Gradient fills are part of the broader fill system in CE.SDK and come in three types, each identified by a unique type string:
671
+
672
+ - **Linear**: `'//ly.img.ubq/fill/gradient/linear'` or `'gradient/linear'`
673
+ - **Radial**: `'//ly.img.ubq/fill/gradient/radial'` or `'gradient/radial'`
674
+ - **Conical**: `'//ly.img.ubq/fill/gradient/conical'` or `'gradient/conical'`
675
+
676
+ Each gradient type contains color stops that define colors at specific positions and positioning properties that control the gradient's direction and coverage.
677
+
678
+ ### Gradient Types Comparison
679
+
680
+ #### Linear Gradients
681
+
682
+ Linear gradients transition colors along a straight line defined by start and end points. They're the most common gradient type and create clean, modern looks. Common use cases include hero sections, call-to-action buttons, headers, and banners.
683
+
684
+ ```typescript highlight-linear-gradient
685
+ const { block: linearVerticalBlock, fill: linearVertical } =
686
+ createShapeWithFill('gradient/linear');
687
+
688
+ engine.block.setGradientColorStops(linearVertical, 'fill/gradient/colors', [
689
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1.0 }, stop: 0 },
690
+ { color: { r: 0.3, g: 0.4, b: 0.7, a: 1.0 }, stop: 1 }
691
+ ]);
692
+ ```
693
+
694
+ #### Radial Gradients
695
+
696
+ Radial gradients emanate from a central point outward, creating circular or elliptical color transitions. They add depth and create focal points or spotlight effects. Common use cases include button highlights, card shadows, vignettes, and circular badges.
697
+
698
+ ```typescript highlight-radial-gradient
699
+ engine.block.setGradientColorStops(radialCentered, 'fill/gradient/colors', [
700
+ { color: { r: 1.0, g: 1.0, b: 1.0, a: 0.3 }, stop: 0 },
701
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1.0 }, stop: 1 }
702
+ ]);
703
+ ```
704
+
705
+ #### Conical Gradients
706
+
707
+ Conical gradients transition colors around a center point like a color wheel, starting at the top (12 o'clock) and rotating clockwise. Colors are specified by position rather than angle. Common use cases include pie charts, loading spinners, circular progress indicators, and color picker wheels.
708
+
709
+ ```typescript highlight-conical-gradient
710
+ engine.block.setGradientColorStops(conicalColorWheel, 'fill/gradient/colors', [
711
+ { color: { r: 1.0, g: 0.0, b: 0.0, a: 1 }, stop: 0 },
712
+ { color: { r: 1.0, g: 1.0, b: 0.0, a: 1 }, stop: 0.25 },
713
+ { color: { r: 0.0, g: 1.0, b: 0.0, a: 1 }, stop: 0.5 },
714
+ { color: { r: 0.0, g: 0.0, b: 1.0, a: 1 }, stop: 0.75 },
715
+ { color: { r: 1.0, g: 0.0, b: 0.0, a: 1 }, stop: 1 }
716
+ ]);
717
+ ```
718
+
719
+ ### Gradient vs Other Fill Types
720
+
721
+ Understanding how gradients differ from other fill types helps you choose the right fill for your design:
722
+
723
+ - **Gradient fills**: Smooth color transitions (linear, radial, conical)
724
+ - **Color fills**: Solid, uniform color
725
+ - **Image fills**: Photo or raster content
726
+ - **Video fills**: Animated video content
727
+
728
+ ### Color Stops Explained
729
+
730
+ Color stops define the colors at specific positions in the gradient. Each stop consists of:
731
+
732
+ - `color`: An RGB, CMYK, or Spot color value
733
+ - `stop`: Position value between 0.0 and 1.0 (0% to 100%)
734
+
735
+ A gradient requires a minimum of two color stops. You can add multiple stops to create complex color transitions. Color stops can use any color space supported by CE.SDK, including RGB for screen display, CMYK for print, and Spot Colors for brand consistency.
736
+
737
+ ```typescript highlight-color-stops
738
+ engine.block.setGradientColorStops(auroraGradient, 'fill/gradient/colors', [
739
+ { color: { r: 0.4, g: 0.1, b: 0.8, a: 1 }, stop: 0 },
740
+ { color: { r: 0.8, g: 0.2, b: 0.6, a: 1 }, stop: 0.3 },
741
+ { color: { r: 1.0, g: 0.5, b: 0.3, a: 1 }, stop: 0.6 },
742
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1 }, stop: 1 }
743
+ ]);
744
+ ```
745
+
746
+ ## Using the Built-in Gradient UI
747
+
748
+ CE.SDK provides built-in UI controls for working with gradients through the **inspector bar** and **advanced inspector**. Users can switch between solid color and gradient fills, select gradient type (linear, radial, conical), add and remove color stops visually, adjust individual stop colors, and drag gradient control points for positioning.
749
+
750
+ **Note**: Currently, only **linear gradients** are fully supported in the built-in UI. Radial and conical gradients are available programmatically.
751
+
752
+ ### Enabling Fill Features
753
+
754
+ Gradient controls are part of the fill feature system. You can check if the fill feature is enabled and control it programmatically:
755
+
756
+ ```typescript highlight-enable-fill-feature
757
+ // Fill features are enabled by default in CE.SDK
758
+ // You can check and control fill feature availability:
759
+ const engine = cesdk.engine;
760
+ const isFillEnabled = cesdk.feature.isEnabled('ly.img.fill', { engine });
761
+ console.log('Fill feature enabled:', isFillEnabled);
762
+ ```
763
+
764
+ ## Checking Gradient Fill Support
765
+
766
+ ### Verifying Block Compatibility
767
+
768
+ Before applying gradient fills, verify that the block type supports fills. Not all blocks support fills—for example, scenes and pages typically don't.
769
+
770
+ ```typescript highlight-check-fill-support
771
+ // Check if block supports fills
772
+ const canHaveFill = engine.block.supportsFill(block);
773
+ if (!canHaveFill) {
774
+ throw new Error('Block does not support fills');
775
+ }
776
+ ```
777
+
778
+ Always check `supportsFill()` before accessing fill APIs. Graphic blocks, shapes, and text typically support fills.
779
+
780
+ ## Creating Gradient Fills
781
+
782
+ ### Creating a New Linear Gradient
783
+
784
+ Create a new linear gradient fill using the `createFill()` method with the type `'gradient/linear'`:
785
+
786
+ ```typescript highlight-create-linear
787
+ const { block: linearVerticalBlock, fill: linearVertical } =
788
+ createShapeWithFill('gradient/linear');
789
+ ```
790
+
791
+ ### Creating a Radial Gradient
792
+
793
+ Create a radial gradient using the type `'gradient/radial'`:
794
+
795
+ ```typescript highlight-create-radial
796
+ const { block: radialCenteredBlock, fill: radialCentered } =
797
+ createShapeWithFill('gradient/radial');
798
+ ```
799
+
800
+ ### Creating a Conical Gradient
801
+
802
+ Create a conical gradient using the type `'gradient/conical'`:
803
+
804
+ ```typescript highlight-create-conical
805
+ const { block: conicalColorWheelBlock, fill: conicalColorWheel } =
806
+ createShapeWithFill('gradient/conical');
807
+ ```
808
+
809
+ The `createFill()` method returns a numeric fill ID. The fill exists independently until you attach it to a block. If you create a fill but don't attach it to a block, you must destroy it manually to prevent memory leaks.
810
+
811
+ ## Applying Gradient Fills
812
+
813
+ ### Setting a Gradient Fill on a Block
814
+
815
+ Once you've created a gradient fill, attach it to a block using `setFill()`:
816
+
817
+ ```typescript highlight-apply-gradient
818
+ // Create gradient fill
819
+ const gradientFill = engine.block.createFill(fillType);
820
+
821
+ // Apply the fill to the block
822
+ engine.block.setFill(block, gradientFill);
823
+ ```
824
+
825
+ ### Getting the Current Fill
826
+
827
+ Retrieve the current fill attached to a block and inspect its type:
828
+
829
+ ```typescript highlight-get-fill
830
+ const { block: inspectGradientBlock, fill: inspectGradient } =
831
+ createShapeWithFill('gradient/linear');
832
+
833
+ engine.block.setGradientColorStops(inspectGradient, 'fill/gradient/colors', [
834
+ { color: { r: 0.6, g: 0.3, b: 0.7, a: 1.0 }, stop: 0 },
835
+ { color: { r: 0.3, g: 0.7, b: 0.6, a: 1.0 }, stop: 1 }
836
+ ]);
837
+
838
+ // Get current fill from block
839
+ const fillId = engine.block.getFill(block1);
840
+ const fillType = engine.block.getType(fillId);
841
+ // eslint-disable-next-line no-console
842
+ console.log('Fill type:', fillType); // '//ly.img.ubq/fill/gradient/linear'
843
+ ```
844
+
845
+ ## Configuring Gradient Color Stops
846
+
847
+ ### Setting Color Stops
848
+
849
+ Set color stops using the `setGradientColorStops()` method with an array of color and position pairs:
850
+
851
+ ```typescript highlight-set-color-stops
852
+ engine.block.setGradientColorStops(linearVertical, 'fill/gradient/colors', [
853
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1.0 }, stop: 0 },
854
+ { color: { r: 0.3, g: 0.4, b: 0.7, a: 1.0 }, stop: 1 }
855
+ ]);
856
+ ```
857
+
858
+ RGB values are normalized floats from 0.0 to 1.0. Stop positions are normalized where 0.0 represents the start and 1.0 represents the end. The alpha channel controls opacity per color stop.
859
+
860
+ ### Getting Color Stops
861
+
862
+ Retrieve the current color stops from a gradient fill:
863
+
864
+ ```typescript highlight-get-color-stops
865
+ // Get gradient color stops
866
+ const colorStops = engine.block.getGradientColorStops(
867
+ inspectGradient,
868
+ 'fill/gradient/colors'
869
+ );
870
+ // eslint-disable-next-line no-console
871
+ console.log('Color stops:', colorStops);
872
+ ```
873
+
874
+ ### Using Different Color Spaces
875
+
876
+ Gradient color stops support multiple color spaces:
877
+
878
+ ```typescript highlight-color-spaces
879
+ const { block: cmykGradientBlock, fill: cmykGradient } =
880
+ createShapeWithFill('gradient/linear');
881
+
882
+ // CMYK color stops for print
883
+ engine.block.setGradientColorStops(cmykGradient, 'fill/gradient/colors', [
884
+ { color: { c: 0.0, m: 1.0, y: 1.0, k: 0.0, tint: 1.0 }, stop: 0 },
885
+ { color: { c: 1.0, m: 0.0, y: 1.0, k: 0.0, tint: 1.0 }, stop: 1 }
886
+ ]);
887
+
888
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/startPointX', 0);
889
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/startPointY', 0.5);
890
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/endPointX', 1);
891
+ engine.block.setFloat(cmykGradient, 'fill/gradient/linear/endPointY', 0.5);
892
+ ```
893
+
894
+ ## Positioning Linear Gradients
895
+
896
+ ### Setting Start and End Points
897
+
898
+ Linear gradients are positioned using start and end points with normalized coordinates (0.0 to 1.0) relative to block dimensions:
899
+
900
+ ```typescript highlight-linear-position
901
+ // Set vertical gradient (top to bottom)
902
+ engine.block.setFloat(linearVertical, 'fill/gradient/linear/startPointX', 0.5);
903
+ engine.block.setFloat(linearVertical, 'fill/gradient/linear/startPointY', 0);
904
+ engine.block.setFloat(linearVertical, 'fill/gradient/linear/endPointX', 0.5);
905
+ engine.block.setFloat(linearVertical, 'fill/gradient/linear/endPointY', 1);
906
+ ```
907
+
908
+ Coordinates are normalized where (0, 0) represents the top-left corner and (1, 1) represents the bottom-right corner.
909
+
910
+ ### Common Linear Gradient Directions
911
+
912
+ **Horizontal (Left to Right):**
913
+
914
+ ```typescript
915
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/startPointX', 0);
916
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/startPointY', 0.5);
917
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/endPointX', 1);
918
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/endPointY', 0.5);
919
+ ```
920
+
921
+ **Diagonal (Top-Left to Bottom-Right):**
922
+
923
+ ```typescript
924
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/startPointX', 0);
925
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/startPointY', 0);
926
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/endPointX', 1);
927
+ engine.block.setFloat(linearGradient, 'fill/gradient/linear/endPointY', 1);
928
+ ```
929
+
930
+ ### Getting Current Position
931
+
932
+ Retrieve the current position values:
933
+
934
+ ```typescript highlight-get-linear-position
935
+ // Get linear gradient position
936
+ const startX = engine.block.getFloat(
937
+ inspectGradient,
938
+ 'fill/gradient/linear/startPointX'
939
+ );
940
+ const startY = engine.block.getFloat(
941
+ inspectGradient,
942
+ 'fill/gradient/linear/startPointY'
943
+ );
944
+ const endX = engine.block.getFloat(
945
+ inspectGradient,
946
+ 'fill/gradient/linear/endPointX'
947
+ );
948
+ const endY = engine.block.getFloat(
949
+ inspectGradient,
950
+ 'fill/gradient/linear/endPointY'
951
+ );
952
+ // eslint-disable-next-line no-console
953
+ console.log('Linear gradient position:', { startX, startY, endX, endY });
954
+ ```
955
+
956
+ ## Positioning Radial Gradients
957
+
958
+ ### Setting Center Point and Radius
959
+
960
+ Radial gradients are positioned using a center point and radius:
961
+
962
+ ```typescript highlight-radial-position
963
+ // Set center point (middle of block)
964
+ engine.block.setFloat(radialCentered, 'fill/gradient/radial/centerPointX', 0.5);
965
+ engine.block.setFloat(radialCentered, 'fill/gradient/radial/centerPointY', 0.5);
966
+ engine.block.setFloat(radialCentered, 'fill/gradient/radial/radius', 0.8);
967
+ ```
968
+
969
+ The `centerPointX/Y` properties use normalized coordinates (0.0 to 1.0) relative to block dimensions. The `radius` property is relative to the smaller side of the block frame, where 1.0 equals full coverage. Default values are centerX = 0.0, centerY = 0.0, and radius = 1.0.
970
+
971
+ ### Common Radial Patterns
972
+
973
+ **Centered Circle:**
974
+
975
+ ```typescript
976
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointX', 0.5);
977
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointY', 0.5);
978
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/radius', 0.7);
979
+ ```
980
+
981
+ **Top-Left Highlight:**
982
+
983
+ ```typescript
984
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointX', 0);
985
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointY', 0);
986
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/radius', 1.0);
987
+ ```
988
+
989
+ **Bottom-Right Vignette:**
990
+
991
+ ```typescript
992
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointX', 1);
993
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/centerPointY', 1);
994
+ engine.block.setFloat(radialGradient, 'fill/gradient/radial/radius', 1.5);
995
+ ```
996
+
997
+ ## Positioning Conical Gradients
998
+
999
+ ### Setting Center Point
1000
+
1001
+ Conical gradients are positioned using a center point. The rotation starts at the top (12 o'clock) and proceeds clockwise:
1002
+
1003
+ ```typescript highlight-conical-position
1004
+ // Set center point (middle of block)
1005
+ engine.block.setFloat(
1006
+ conicalColorWheel,
1007
+ 'fill/gradient/conical/centerPointX',
1008
+ 0.5
1009
+ );
1010
+ engine.block.setFloat(
1011
+ conicalColorWheel,
1012
+ 'fill/gradient/conical/centerPointY',
1013
+ 0.5
1014
+ );
1015
+ ```
1016
+
1017
+ The `centerPointX/Y` properties use normalized coordinates (0.0 to 1.0) relative to block dimensions. There is no separate rotation or angle property—the gradient always starts at the top. Default values are centerX = 0.0 and centerY = 0.0.
1018
+
1019
+ ## Additional Techniques
1020
+
1021
+ ### Sharing Gradient Fills
1022
+
1023
+ You can share a single gradient fill between multiple blocks. Changes to the shared gradient affect all blocks using it:
1024
+
1025
+ ```typescript highlight-share-gradient
1026
+ const block1 = engine.block.create('graphic');
1027
+ const shape1 = engine.block.createShape('rect');
1028
+ engine.block.setShape(block1, shape1);
1029
+ engine.block.setWidth(block1, blockWidth);
1030
+ engine.block.setHeight(block1, blockHeight / 2 - 5);
1031
+ engine.block.appendChild(page, block1);
1032
+
1033
+ const block2 = engine.block.create('graphic');
1034
+ const shape2 = engine.block.createShape('rect');
1035
+ engine.block.setShape(block2, shape2);
1036
+ engine.block.setWidth(block2, blockWidth);
1037
+ engine.block.setHeight(block2, blockHeight / 2 - 5);
1038
+ engine.block.appendChild(page, block2);
1039
+
1040
+ // Create one gradient fill
1041
+ const sharedGradient = engine.block.createFill('gradient/linear');
1042
+ engine.block.setGradientColorStops(sharedGradient, 'fill/gradient/colors', [
1043
+ { color: { r: 1, g: 0, b: 0, a: 1 }, stop: 0 },
1044
+ { color: { r: 0, g: 0, b: 1, a: 1 }, stop: 1 }
1045
+ ]);
1046
+
1047
+ engine.block.setFloat(sharedGradient, 'fill/gradient/linear/startPointX', 0);
1048
+ engine.block.setFloat(sharedGradient, 'fill/gradient/linear/startPointY', 0.5);
1049
+ engine.block.setFloat(sharedGradient, 'fill/gradient/linear/endPointX', 1);
1050
+ engine.block.setFloat(sharedGradient, 'fill/gradient/linear/endPointY', 0.5);
1051
+
1052
+ // Apply to both blocks
1053
+ engine.block.setFill(block1, sharedGradient);
1054
+ engine.block.setFill(block2, sharedGradient);
1055
+
1056
+ // Change gradient after a delay to show it affects both
1057
+ setTimeout(() => {
1058
+ engine.block.setGradientColorStops(sharedGradient, 'fill/gradient/colors', [
1059
+ { color: { r: 0, g: 1, b: 0, a: 1 }, stop: 0 },
1060
+ { color: { r: 1, g: 1, b: 0, a: 1 }, stop: 1 }
1061
+ ]);
1062
+ }, 2000);
1063
+ ```
1064
+
1065
+ ### Duplicating Gradient Fills
1066
+
1067
+ When you duplicate a block, its gradient fill is automatically duplicated, creating an independent copy. Each duplicate has its own fill instance that can be modified independently without affecting the original.
1068
+
1069
+ ## Common Use Cases
1070
+
1071
+ ### Modern Hero Background (Aurora Effect)
1072
+
1073
+ Create dreamy multi-color gradient backgrounds for hero sections:
1074
+
1075
+ ```typescript highlight-aurora-gradient
1076
+ const { block: auroraGradientBlock, fill: auroraGradient } =
1077
+ createShapeWithFill('gradient/linear');
1078
+
1079
+ engine.block.setGradientColorStops(auroraGradient, 'fill/gradient/colors', [
1080
+ { color: { r: 0.4, g: 0.1, b: 0.8, a: 1 }, stop: 0 },
1081
+ { color: { r: 0.8, g: 0.2, b: 0.6, a: 1 }, stop: 0.3 },
1082
+ { color: { r: 1.0, g: 0.5, b: 0.3, a: 1 }, stop: 0.6 },
1083
+ { color: { r: 1.0, g: 0.8, b: 0.2, a: 1 }, stop: 1 }
1084
+ ]);
1085
+
1086
+ engine.block.setFloat(auroraGradient, 'fill/gradient/linear/startPointX', 0);
1087
+ engine.block.setFloat(auroraGradient, 'fill/gradient/linear/startPointY', 0.5);
1088
+ engine.block.setFloat(auroraGradient, 'fill/gradient/linear/endPointX', 1);
1089
+ engine.block.setFloat(auroraGradient, 'fill/gradient/linear/endPointY', 0.5);
1090
+ ```
1091
+
1092
+ ### Button Highlight Effect
1093
+
1094
+ Use radial gradients to add depth and highlight effects to buttons:
1095
+
1096
+ ```typescript highlight-button-gradient
1097
+ const { block: radialHighlightBlock, fill: radialHighlight } =
1098
+ createShapeWithFill('gradient/radial');
1099
+
1100
+ engine.block.setGradientColorStops(radialHighlight, 'fill/gradient/colors', [
1101
+ { color: { r: 1.0, g: 1.0, b: 1.0, a: 0.3 }, stop: 0 },
1102
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1.0 }, stop: 1 }
1103
+ ]);
1104
+
1105
+ // Set top-left highlight
1106
+ engine.block.setFloat(radialHighlight, 'fill/gradient/radial/centerPointX', 0);
1107
+ engine.block.setFloat(radialHighlight, 'fill/gradient/radial/centerPointY', 0);
1108
+ engine.block.setFloat(radialHighlight, 'fill/gradient/radial/radius', 1.0);
1109
+ ```
1110
+
1111
+ ### Loading Spinner (Conical)
1112
+
1113
+ Create circular progress indicators and loading animations with conical gradients:
1114
+
1115
+ ```typescript highlight-spinner-gradient
1116
+ const { block: conicalSpinnerBlock, fill: conicalSpinner } =
1117
+ createShapeWithFill('gradient/conical');
1118
+
1119
+ engine.block.setGradientColorStops(conicalSpinner, 'fill/gradient/colors', [
1120
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1 }, stop: 0 },
1121
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 0 }, stop: 0.75 },
1122
+ { color: { r: 0.2, g: 0.4, b: 0.8, a: 1 }, stop: 1 }
1123
+ ]);
1124
+
1125
+ engine.block.setFloat(
1126
+ conicalSpinner,
1127
+ 'fill/gradient/conical/centerPointX',
1128
+ 0.5
1129
+ );
1130
+ engine.block.setFloat(
1131
+ conicalSpinner,
1132
+ 'fill/gradient/conical/centerPointY',
1133
+ 0.5
1134
+ );
1135
+ ```
1136
+
1137
+ ### Transparency Overlay
1138
+
1139
+ Create smooth transparency effects with alpha channel transitions:
1140
+
1141
+ ```typescript highlight-overlay-gradient
1142
+ const { block: overlayGradientBlock, fill: overlayGradient } =
1143
+ createShapeWithFill('gradient/linear');
1144
+
1145
+ engine.block.setGradientColorStops(overlayGradient, 'fill/gradient/colors', [
1146
+ { color: { r: 0.0, g: 0.0, b: 0.0, a: 0 }, stop: 0 },
1147
+ { color: { r: 0.0, g: 0.0, b: 0.0, a: 0.7 }, stop: 1 }
1148
+ ]);
1149
+
1150
+ engine.block.setFloat(overlayGradient, 'fill/gradient/linear/startPointX', 0.5);
1151
+ engine.block.setFloat(overlayGradient, 'fill/gradient/linear/startPointY', 0);
1152
+ engine.block.setFloat(overlayGradient, 'fill/gradient/linear/endPointX', 0.5);
1153
+ engine.block.setFloat(overlayGradient, 'fill/gradient/linear/endPointY', 1);
1154
+ ```
1155
+
1156
+ ### Duotone Effect
1157
+
1158
+ Create modern two-color gradient overlays:
1159
+
1160
+ ```typescript highlight-duotone-gradient
1161
+ const { block: duotoneGradientBlock, fill: duotoneGradient } =
1162
+ createShapeWithFill('gradient/linear');
1163
+
1164
+ engine.block.setGradientColorStops(duotoneGradient, 'fill/gradient/colors', [
1165
+ { color: { r: 0.8, g: 0.2, b: 0.9, a: 1 }, stop: 0 },
1166
+ { color: { r: 0.2, g: 0.9, b: 0.8, a: 1 }, stop: 1 }
1167
+ ]);
1168
+
1169
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/startPointX', 0);
1170
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/startPointY', 0);
1171
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/endPointX', 1);
1172
+ engine.block.setFloat(duotoneGradient, 'fill/gradient/linear/endPointY', 1);
1173
+ ```
1174
+
1175
+ ## Troubleshooting
1176
+
1177
+ ### Gradient Not Visible
1178
+
1179
+ If your gradient doesn't appear:
1180
+
1181
+ - Check if fill is enabled: `engine.block.isFillEnabled(block)`
1182
+ - Verify color stops have visible colors (check alpha channels)
1183
+ - Ensure block has valid dimensions (width and height > 0)
1184
+ - Confirm block is in the scene hierarchy
1185
+ - Check if color stops are properly ordered by stop position
1186
+
1187
+ ### Gradient Looks Different Than Expected
1188
+
1189
+ If the gradient doesn't look right:
1190
+
1191
+ - Verify color stop positions are between 0.0 and 1.0
1192
+ - Check gradient direction and positioning properties
1193
+ - Ensure correct gradient type is used (linear vs radial vs conical)
1194
+ - Review color space (RGB vs CMYK) for output medium
1195
+ - Confirm alpha values for transparency effects
1196
+
1197
+ ### Gradient Direction Wrong
1198
+
1199
+ If the gradient direction is incorrect:
1200
+
1201
+ - For linear gradients, check `startPointX/Y` and `endPointX/Y` values
1202
+ - Remember coordinates are normalized (0.0 to 1.0), not pixels
1203
+ - Verify the block's coordinate system and transformations
1204
+ - Test with simple horizontal or vertical gradients first
1205
+
1206
+ ### Memory Leaks
1207
+
1208
+ To prevent memory leaks:
1209
+
1210
+ - Always destroy replaced gradients: `engine.block.destroy(oldFill)`
1211
+ - Don't create gradient fills without attaching them to blocks
1212
+ - Clean up shared gradients when no longer needed
1213
+
1214
+ ### Cannot Apply Gradient to Block
1215
+
1216
+ If you can't apply a gradient fill:
1217
+
1218
+ - Verify block supports fills: `engine.block.supportsFill(block)`
1219
+ - Check if block has a shape: Some blocks require shapes
1220
+ - Ensure gradient fill object is valid and not already destroyed
1221
+
1222
+ ### Color Stops Not Updating
1223
+
1224
+ If color stops don't update:
1225
+
1226
+ - Verify you're calling `setGradientColorStops()` not `setColor()`
1227
+ - Ensure property name is exactly `'fill/gradient/colors'`
1228
+ - Check that color stop array is properly formatted
1229
+ - Confirm fill ID is correct and still valid
1230
+
1231
+ ## API Reference
1232
+
1233
+ ### Core Methods
1234
+
1235
+ | Method | Description |
1236
+ | ---------------------------------------------- | --------------------------------------- |
1237
+ | `createFill('gradient/linear')` | Create a new linear gradient fill |
1238
+ | `createFill('gradient/radial')` | Create a new radial gradient fill |
1239
+ | `createFill('gradient/conical')` | Create a new conical gradient fill |
1240
+ | `setFill(block, fill)` | Assign gradient fill to a block |
1241
+ | `getFill(block)` | Get the fill ID from a block |
1242
+ | `setGradientColorStops(fill, property, stops)` | Set gradient color stops array |
1243
+ | `getGradientColorStops(fill, property)` | Get current gradient color stops |
1244
+ | `setFloat(fill, property, value)` | Set gradient position/radius properties |
1245
+ | `getFloat(fill, property)` | Get gradient position/radius values |
1246
+ | `setFillEnabled(block, enabled)` | Enable or disable fill rendering |
1247
+ | `isFillEnabled(block)` | Check if fill is enabled |
1248
+ | `supportsFill(block)` | Check if block supports fills |
1249
+
1250
+ ### Linear Gradient Properties
1251
+
1252
+ | Property | Type | Default | Description |
1253
+ | ---------------------------------- | -------------------- | ------- | ------------------------- |
1254
+ | `fill/gradient/colors` | GradientColorStop\[] | - | Array of color stops |
1255
+ | `fill/gradient/linear/startPointX` | Float (0.0-1.0) | 0.5 | Horizontal start position |
1256
+ | `fill/gradient/linear/startPointY` | Float (0.0-1.0) | 0.0 | Vertical start position |
1257
+ | `fill/gradient/linear/endPointX` | Float (0.0-1.0) | 0.5 | Horizontal end position |
1258
+ | `fill/gradient/linear/endPointY` | Float (0.0-1.0) | 1.0 | Vertical end position |
1259
+
1260
+ ### Radial Gradient Properties
1261
+
1262
+ | Property | Type | Default | Description |
1263
+ | ----------------------------------- | -------------------- | ------- | ------------------------------- |
1264
+ | `fill/gradient/colors` | GradientColorStop\[] | - | Array of color stops |
1265
+ | `fill/gradient/radial/centerPointX` | Float (0.0-1.0) | 0.0 | Horizontal center position |
1266
+ | `fill/gradient/radial/centerPointY` | Float (0.0-1.0) | 0.0 | Vertical center position |
1267
+ | `fill/gradient/radial/radius` | Float | 1.0 | Radius relative to smaller side |
1268
+
1269
+ ### Conical Gradient Properties
1270
+
1271
+ | Property | Type | Default | Description |
1272
+ | ------------------------------------ | -------------------- | ------- | -------------------------- |
1273
+ | `fill/gradient/colors` | GradientColorStop\[] | - | Array of color stops |
1274
+ | `fill/gradient/conical/centerPointX` | Float (0.0-1.0) | 0.0 | Horizontal center position |
1275
+ | `fill/gradient/conical/centerPointY` | Float (0.0-1.0) | 0.0 | Vertical center position |
1276
+
1277
+ **Note**: Conical gradients rotate clockwise starting from the top (12 o'clock). There is no rotation or angle property.
1278
+
1279
+ ### GradientColorStop Interface
1280
+
1281
+ ```typescript
1282
+ interface GradientColorStop {
1283
+ color: Color; // RGB, CMYK, or Spot color
1284
+ stop: number; // Position (0.0 to 1.0)
1285
+ }
1286
+
1287
+ // Color formats supported:
1288
+ type Color =
1289
+ | { r: number; g: number; b: number; a: number } // RGB
1290
+ | { c: number; m: number; y: number; k: number; tint: number } // CMYK
1291
+ | { name: string; tint: number; externalReference: string }; // Spot
1292
+ ```
1293
+
1294
+ ## Next Steps
1295
+
1296
+ Now that you understand gradient fills, explore other fill types and color management features:
1297
+
1298
+ - Learn about Color Fills for solid colors
1299
+ - Explore Image Fills for photo content
1300
+ - Understand Fill Overview for the comprehensive fill system
1301
+ - Review Apply Colors for color management across properties
1302
+ - Study Blocks Concept for understanding the block system
1303
+
1304
+ ---
1305
+
1306
+ ## More Resources
1307
+
1308
+ - **[Vanilla JS/TS Documentation Index](https://img.ly/docs/cesdk/js.md)** - Browse all Vanilla JS/TS documentation
1309
+ - **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
1310
+ - **[Web Documentation](./js.md)** - Interactive documentation with examples
1311
+ - **[Support](mailto:support@img.ly)** - Contact IMG.LY support