From 382a630d581d51c4abc421801b5f7b6d8d87f4b0 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Fri, 27 Mar 2026 15:58:36 -0700 Subject: [PATCH 1/3] feat: add templates --- .../compositions/decision_tree.html | 417 +++++++++++++ .../src/templates/decision-tree/index.html | 47 ++ packages/cli/src/templates/generators.ts | 19 +- .../compositions/main-graphics.html | 588 ++++++++++++++++++ .../cli/src/templates/kinetic-type/index.html | 66 ++ .../nyt-graph/compositions/nyt-chart.html | 447 +++++++++++++ .../cli/src/templates/nyt-graph/index.html | 52 ++ .../product-promo/assets/figma-cursors.svg | 30 + .../assets/figma-logo-pieces.svg | 15 + .../product-promo/assets/figma-logo-pills.svg | 6 + .../compositions/scene1-logo-intro.html | 189 ++++++ .../compositions/scene2-4-canvas.html | 570 +++++++++++++++++ .../compositions/scene5-logo-outro.html | 226 +++++++ .../src/templates/product-promo/index.html | 164 +++++ 14 files changed, 2835 insertions(+), 1 deletion(-) create mode 100644 packages/cli/src/templates/decision-tree/compositions/decision_tree.html create mode 100644 packages/cli/src/templates/decision-tree/index.html create mode 100644 packages/cli/src/templates/kinetic-type/compositions/main-graphics.html create mode 100644 packages/cli/src/templates/kinetic-type/index.html create mode 100644 packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html create mode 100644 packages/cli/src/templates/nyt-graph/index.html create mode 100644 packages/cli/src/templates/product-promo/assets/figma-cursors.svg create mode 100644 packages/cli/src/templates/product-promo/assets/figma-logo-pieces.svg create mode 100644 packages/cli/src/templates/product-promo/assets/figma-logo-pills.svg create mode 100644 packages/cli/src/templates/product-promo/compositions/scene1-logo-intro.html create mode 100644 packages/cli/src/templates/product-promo/compositions/scene2-4-canvas.html create mode 100644 packages/cli/src/templates/product-promo/compositions/scene5-logo-outro.html create mode 100644 packages/cli/src/templates/product-promo/index.html diff --git a/packages/cli/src/templates/decision-tree/compositions/decision_tree.html b/packages/cli/src/templates/decision-tree/compositions/decision_tree.html new file mode 100644 index 00000000000..1381f1343a6 --- /dev/null +++ b/packages/cli/src/templates/decision-tree/compositions/decision_tree.html @@ -0,0 +1,417 @@ + diff --git a/packages/cli/src/templates/decision-tree/index.html b/packages/cli/src/templates/decision-tree/index.html new file mode 100644 index 00000000000..fb6ca2a5775 --- /dev/null +++ b/packages/cli/src/templates/decision-tree/index.html @@ -0,0 +1,47 @@ + + + + + + Decision Tree + + + + + +
+ + + diff --git a/packages/cli/src/templates/generators.ts b/packages/cli/src/templates/generators.ts index 11e5396ca21..87e369e76d5 100644 --- a/packages/cli/src/templates/generators.ts +++ b/packages/cli/src/templates/generators.ts @@ -1,4 +1,13 @@ -export type TemplateId = "blank" | "warm-grain" | "play-mode" | "swiss-grid" | "vignelli"; +export type TemplateId = + | "blank" + | "warm-grain" + | "play-mode" + | "swiss-grid" + | "vignelli" + | "decision-tree" + | "kinetic-type" + | "product-promo" + | "nyt-graph"; export interface TemplateOption { id: TemplateId; @@ -12,4 +21,12 @@ export const TEMPLATES: TemplateOption[] = [ { id: "play-mode", label: "Play Mode", hint: "Playful elastic animations" }, { id: "swiss-grid", label: "Swiss Grid", hint: "Structured grid layout" }, { id: "vignelli", label: "Vignelli", hint: "Bold typography with red accents" }, + { id: "decision-tree", label: "Decision Tree", hint: "Animated flowchart with branching paths" }, + { id: "kinetic-type", label: "Kinetic Type", hint: "Bold kinetic typography promo" }, + { + id: "product-promo", + label: "Product Promo", + hint: "Multi-scene product showcase with SVG assets", + }, + { id: "nyt-graph", label: "NYT Graph", hint: "Animated data chart in print editorial style" }, ]; diff --git a/packages/cli/src/templates/kinetic-type/compositions/main-graphics.html b/packages/cli/src/templates/kinetic-type/compositions/main-graphics.html new file mode 100644 index 00000000000..988ed92c713 --- /dev/null +++ b/packages/cli/src/templates/kinetic-type/compositions/main-graphics.html @@ -0,0 +1,588 @@ + diff --git a/packages/cli/src/templates/kinetic-type/index.html b/packages/cli/src/templates/kinetic-type/index.html new file mode 100644 index 00000000000..9f76789f7ac --- /dev/null +++ b/packages/cli/src/templates/kinetic-type/index.html @@ -0,0 +1,66 @@ + + + + + + HyperFrames Promo + + + + + + + +
+ + + +
+ + +
+ + diff --git a/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html b/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html new file mode 100644 index 00000000000..ffc6e74d44d --- /dev/null +++ b/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html @@ -0,0 +1,447 @@ + diff --git a/packages/cli/src/templates/nyt-graph/index.html b/packages/cli/src/templates/nyt-graph/index.html new file mode 100644 index 00000000000..4de0bf5eee1 --- /dev/null +++ b/packages/cli/src/templates/nyt-graph/index.html @@ -0,0 +1,52 @@ + + + + + + NYT Print Chart + + + +
+
+ + + +
+ + diff --git a/packages/cli/src/templates/product-promo/assets/figma-cursors.svg b/packages/cli/src/templates/product-promo/assets/figma-cursors.svg new file mode 100644 index 00000000000..65d99f1b00a --- /dev/null +++ b/packages/cli/src/templates/product-promo/assets/figma-cursors.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + Designer + + + + + + Engineer + + + + + + PM + + \ No newline at end of file diff --git a/packages/cli/src/templates/product-promo/assets/figma-logo-pieces.svg b/packages/cli/src/templates/product-promo/assets/figma-logo-pieces.svg new file mode 100644 index 00000000000..c98cb21c2cb --- /dev/null +++ b/packages/cli/src/templates/product-promo/assets/figma-logo-pieces.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/cli/src/templates/product-promo/assets/figma-logo-pills.svg b/packages/cli/src/templates/product-promo/assets/figma-logo-pills.svg new file mode 100644 index 00000000000..0745b168330 --- /dev/null +++ b/packages/cli/src/templates/product-promo/assets/figma-logo-pills.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/cli/src/templates/product-promo/compositions/scene1-logo-intro.html b/packages/cli/src/templates/product-promo/compositions/scene1-logo-intro.html new file mode 100644 index 00000000000..3e957fb8a47 --- /dev/null +++ b/packages/cli/src/templates/product-promo/compositions/scene1-logo-intro.html @@ -0,0 +1,189 @@ + diff --git a/packages/cli/src/templates/product-promo/compositions/scene2-4-canvas.html b/packages/cli/src/templates/product-promo/compositions/scene2-4-canvas.html new file mode 100644 index 00000000000..7bba94f3fcb --- /dev/null +++ b/packages/cli/src/templates/product-promo/compositions/scene2-4-canvas.html @@ -0,0 +1,570 @@ + diff --git a/packages/cli/src/templates/product-promo/compositions/scene5-logo-outro.html b/packages/cli/src/templates/product-promo/compositions/scene5-logo-outro.html new file mode 100644 index 00000000000..85ed4c8eb46 --- /dev/null +++ b/packages/cli/src/templates/product-promo/compositions/scene5-logo-outro.html @@ -0,0 +1,226 @@ + diff --git a/packages/cli/src/templates/product-promo/index.html b/packages/cli/src/templates/product-promo/index.html new file mode 100644 index 00000000000..4666223c6e4 --- /dev/null +++ b/packages/cli/src/templates/product-promo/index.html @@ -0,0 +1,164 @@ + + + + + + Figma Promo - Collaborate + + + + +
+ +
+ + +
+ + +
+ + +
+
+
Starting with a blank canvas.
+
+ + +
+
+ + + + + From fd71d4d6c77d89cc4cc4869b8ce68d1bc9c8cddb Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Fri, 27 Mar 2026 17:07:49 -0700 Subject: [PATCH 2/3] fix(templates): gsap 3.14.2, composition structure, bundler compat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update GSAP from 3.12.2 to 3.14.2 across all templates - Fix new template index.html structure: proper root wrapper div with data-duration, sub-composition refs with data-composition-id and data-width/data-height - Fix nyt-chart: replace template literal variables with hardcoded string in querySelector β€” cheerio css-what parser crashes on them - Fix nyt-chart: add DOM readiness check for dynamic SVG elements - Remove external S3 audio URL from kinetic-type - Move GSAP script to head before usage in all templates --- .../src/templates/decision-tree/index.html | 51 +++++++----- .../cli/src/templates/kinetic-type/index.html | 43 +++++----- .../nyt-graph/compositions/nyt-chart.html | 26 ++++--- .../cli/src/templates/nyt-graph/index.html | 43 +++++----- .../cli/src/templates/play-mode/index.html | 2 +- .../src/templates/product-promo/index.html | 78 +++++++++---------- .../swiss-grid/compositions/graphics.html | 2 +- .../cli/src/templates/swiss-grid/index.html | 2 +- .../cli/src/templates/vignelli/index.html | 2 +- .../cli/src/templates/warm-grain/index.html | 2 +- 10 files changed, 126 insertions(+), 125 deletions(-) diff --git a/packages/cli/src/templates/decision-tree/index.html b/packages/cli/src/templates/decision-tree/index.html index fb6ca2a5775..4695aacaaf8 100644 --- a/packages/cli/src/templates/decision-tree/index.html +++ b/packages/cli/src/templates/decision-tree/index.html @@ -2,46 +2,55 @@ - + Decision Tree - + + -
+ > +
+ + diff --git a/packages/cli/src/templates/kinetic-type/index.html b/packages/cli/src/templates/kinetic-type/index.html index 9f76789f7ac..a00ea20108e 100644 --- a/packages/cli/src/templates/kinetic-type/index.html +++ b/packages/cli/src/templates/kinetic-type/index.html @@ -2,12 +2,13 @@ - - HyperFrames Promo + + Kinetic Type + -
- - -
- -
+ + diff --git a/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html b/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html index ffc6e74d44d..37a8e535b66 100644 --- a/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html +++ b/packages/cli/src/templates/nyt-graph/compositions/nyt-chart.html @@ -177,10 +177,15 @@

Monthly Revenue vs. Conversion Rate

} - diff --git a/packages/cli/src/templates/nyt-graph/index.html b/packages/cli/src/templates/nyt-graph/index.html index 4de0bf5eee1..70bcd666f81 100644 --- a/packages/cli/src/templates/nyt-graph/index.html +++ b/packages/cli/src/templates/nyt-graph/index.html @@ -3,50 +3,49 @@ - NYT Print Chart + NYT Graph +
- - -
+ + diff --git a/packages/cli/src/templates/play-mode/index.html b/packages/cli/src/templates/play-mode/index.html index 6b120786257..ba1f0b5ac11 100644 --- a/packages/cli/src/templates/play-mode/index.html +++ b/packages/cli/src/templates/play-mode/index.html @@ -4,7 +4,7 @@ Hyperframes - Play Mode - + -
+
- +
Starting with a blank canvas.
@@ -117,15 +121,10 @@ const tl = gsap.timeline({ paused: true }); const text = document.querySelector("#caption-text"); - // Scene 2 start - Slide up reveal tl.to(text, { opacity: 1, y: 0, duration: 0.8, ease: "power3.out" }, 0); - - // Scene 3 crossfade (at 3.5s into this comp, which is 5s total) tl.to(text, { opacity: 0, y: -20, duration: 0.3, ease: "power3.in" }, 3.2); tl.set(text, { innerText: "Three cursors. One file. Zero meetings.", y: 40 }, 3.5); tl.to(text, { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 3.5); - - // Scene 4 crossfade (at 8.0s into this comp, which is 9.5s total) tl.to(text, { opacity: 0, y: -20, duration: 0.3, ease: "power3.in" }, 7.7); tl.set( text, @@ -133,8 +132,6 @@ 8.0, ); tl.to(text, { opacity: 1, y: 0, duration: 0.6, ease: "power3.out" }, 8.0); - - // Exit tl.to(text, { opacity: 0, y: -20, duration: 0.4, ease: "power3.in" }, 12.1); window.__timelines = window.__timelines || {}; @@ -144,12 +141,10 @@
- diff --git a/packages/cli/src/templates/swiss-grid/compositions/graphics.html b/packages/cli/src/templates/swiss-grid/compositions/graphics.html index b1e48eb211e..11195546abc 100644 --- a/packages/cli/src/templates/swiss-grid/compositions/graphics.html +++ b/packages/cli/src/templates/swiss-grid/compositions/graphics.html @@ -132,7 +132,7 @@ } - + +