flomotion 0.2.0 → 0.4.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 (129) hide show
  1. package/CHANGELOG.md +58 -2
  2. package/LICENSE +1 -1
  3. package/README.md +29 -20
  4. package/dist/bin.mjs +6279 -2582
  5. package/dist/chunks/{chunk-QG2MOGKO.mjs → chunk-IGG2VZB6.mjs} +178 -14
  6. package/dist/chunks/{chunk-AVP5XX4G.mjs → chunk-PEC2UVQY.mjs} +138 -108
  7. package/dist/chunks/{chunk-IUSYVGP6.mjs → chunk-TTHAZGRG.mjs} +7 -7
  8. package/dist/chunks/{chunk-JCLRAREG.mjs → chunk-XWY6CUY6.mjs} +16 -16
  9. package/dist/chunks/{lock-MLQUU7X3.mjs → lock-WGPR7CJ2.mjs} +3 -3
  10. package/dist/components.mjs +19 -13
  11. package/dist/core.mjs +12 -12
  12. package/dist/hooks.mjs +8 -12
  13. package/dist/jsx-dev-runtime.mjs +1 -1
  14. package/dist/jsx-runtime.mjs +1 -1
  15. package/docs/components/Adjustment.md +2 -2
  16. package/docs/components/Audio.md +2 -2
  17. package/docs/components/B.md +3 -3
  18. package/docs/components/Captions.md +2 -2
  19. package/docs/components/Card.md +2 -2
  20. package/docs/components/Center.md +2 -2
  21. package/docs/components/Chart.md +2 -2
  22. package/docs/components/Chip.md +2 -2
  23. package/docs/components/Circle.md +2 -2
  24. package/docs/components/Clip.md +2 -2
  25. package/docs/components/CodeBlock.md +2 -2
  26. package/docs/components/Composition.md +2 -2
  27. package/docs/components/Counter.md +2 -2
  28. package/docs/components/Cursor.md +2 -2
  29. package/docs/components/Fonts.md +2 -2
  30. package/docs/components/GlassCard.md +2 -2
  31. package/docs/components/Grid.md +2 -2
  32. package/docs/components/Group.md +2 -2
  33. package/docs/components/Highlight.md +3 -3
  34. package/docs/components/I.md +3 -3
  35. package/docs/components/Image.md +2 -2
  36. package/docs/components/Line.md +2 -2
  37. package/docs/components/Marker.md +2 -2
  38. package/docs/components/Path.md +2 -2
  39. package/docs/components/Polygon.md +2 -2
  40. package/docs/components/Precomp.md +2 -2
  41. package/docs/components/ProgressRing.md +2 -2
  42. package/docs/components/Rect.md +2 -2
  43. package/docs/components/RoundRect.md +2 -2
  44. package/docs/components/SafeArea.md +2 -2
  45. package/docs/components/Scene.md +2 -2
  46. package/docs/components/Sequence.md +2 -2
  47. package/docs/components/Span.md +3 -3
  48. package/docs/components/SplitText.md +2 -2
  49. package/docs/components/Stack.md +2 -2
  50. package/docs/components/Stagger.md +2 -2
  51. package/docs/components/Strike.md +3 -3
  52. package/docs/components/Svg.md +2 -2
  53. package/docs/components/Text.md +2 -2
  54. package/docs/components/Title.md +2 -2
  55. package/docs/components/Track.md +2 -2
  56. package/docs/components/UIMock.md +2 -2
  57. package/docs/components/Underline.md +3 -3
  58. package/docs/components/Video.md +2 -2
  59. package/docs/gate2-manual-checklist.md +10 -9
  60. package/docs/hyperframes-notes.md +20 -20
  61. package/docs/later.md +23 -16
  62. package/docs/spec.md +83 -22
  63. package/package.json +1 -2
  64. package/skills/flomotion-studio/CHANGELOG.md +39 -0
  65. package/skills/flomotion-studio/README.md +81 -0
  66. package/skills/flomotion-studio/SKILL.md +90 -0
  67. package/skills/flomotion-studio/config/thresholds.md +191 -0
  68. package/skills/flomotion-studio/dataset/annotations/ansarada.md +53 -0
  69. package/skills/flomotion-studio/dataset/annotations/canva.md +49 -0
  70. package/skills/flomotion-studio/dataset/annotations/clickup.md +60 -0
  71. package/skills/flomotion-studio/dataset/annotations/gemini-stub.md +39 -0
  72. package/skills/flomotion-studio/dataset/annotations/monday.md +51 -0
  73. package/skills/flomotion-studio/dataset/annotations/phantom.md +53 -0
  74. package/skills/flomotion-studio/dataset/annotations/slack.md +54 -0
  75. package/skills/flomotion-studio/dataset/annotations/unknown-7.md +39 -0
  76. package/skills/flomotion-studio/dataset/annotations/vaylens.md +53 -0
  77. package/skills/flomotion-studio/dataset/brief-template.md +110 -0
  78. package/skills/flomotion-studio/dataset/rating-sheet.md +28 -0
  79. package/skills/flomotion-studio/dataset/schema.md +44 -0
  80. package/skills/flomotion-studio/evals/README.md +33 -0
  81. package/skills/flomotion-studio/evals/briefs/briefs.md +25 -0
  82. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/kinetic.scene.tsx +1 -1
  83. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/minimal.scene.tsx +1 -1
  84. package/skills/{motion-studio/looks → flomotion-studio/examples/engine-looks}/sketch.scene.tsx +1 -1
  85. package/skills/flomotion-studio/examples/flomotion-ad/LOG.md +39 -0
  86. package/skills/flomotion-studio/examples/flomotion-ad/brief.md +41 -0
  87. package/skills/flomotion-studio/examples/flomotion-ad/ideas.md +12 -0
  88. package/skills/flomotion-studio/examples/flomotion-ad/project.tsx +1694 -0
  89. package/skills/flomotion-studio/examples/flomotion-ad/script.md +28 -0
  90. package/skills/flomotion-studio/examples/flomotion-ad/storyboard.md +93 -0
  91. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/README.md +1 -1
  92. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/make-assets.sh +1 -1
  93. package/skills/{motion-studio → flomotion-studio}/examples/saas-promo/project.tsx +3 -3
  94. package/skills/flomotion-studio/looks/bold-kinetic.md +122 -0
  95. package/skills/flomotion-studio/looks/clean-light.md +122 -0
  96. package/skills/flomotion-studio/looks/dark-product.md +120 -0
  97. package/skills/flomotion-studio/references/anti-patterns.md +36 -0
  98. package/skills/flomotion-studio/references/assets.md +42 -0
  99. package/skills/flomotion-studio/references/block-recipes.md +249 -0
  100. package/skills/flomotion-studio/references/blocks.md +114 -0
  101. package/skills/flomotion-studio/references/catalogue.md +53 -0
  102. package/skills/flomotion-studio/references/checks.md +87 -0
  103. package/skills/flomotion-studio/references/clean-styles.md +56 -0
  104. package/skills/{motion-studio → flomotion-studio}/references/components.md +94 -94
  105. package/skills/flomotion-studio/references/copywriting.md +64 -0
  106. package/skills/flomotion-studio/references/decision-tables.md +80 -0
  107. package/skills/flomotion-studio/references/interview.md +145 -0
  108. package/skills/flomotion-studio/references/looks.md +45 -0
  109. package/skills/flomotion-studio/references/mcp-tools.md +70 -0
  110. package/skills/flomotion-studio/references/motion.md +68 -0
  111. package/skills/flomotion-studio/references/patterns.md +45 -0
  112. package/skills/flomotion-studio/references/review.md +56 -0
  113. package/skills/flomotion-studio/references/script-craft.md +59 -0
  114. package/skills/flomotion-studio/references/sound.md +57 -0
  115. package/skills/flomotion-studio/references/story-templates.md +52 -0
  116. package/skills/flomotion-studio/references/storyboard.md +62 -0
  117. package/skills/flomotion-studio/references/styles.md +70 -0
  118. package/skills/flomotion-studio/references/transitions.md +62 -0
  119. package/skills/flomotion-studio/references/typography.md +46 -0
  120. package/skills/flomotion-studio/references/workflow.md +96 -0
  121. package/skills/motion-studio/SKILL.md +0 -87
  122. package/skills/motion-studio/looks/kinetic.json +0 -89
  123. package/skills/motion-studio/looks/minimal.json +0 -91
  124. package/skills/motion-studio/looks/sketch.json +0 -83
  125. package/skills/motion-studio/references/motion.md +0 -73
  126. package/skills/motion-studio/references/review.md +0 -32
  127. package/skills/motion-studio/references/saas-promo.md +0 -29
  128. package/skills/motion-studio/references/sound.md +0 -47
  129. package/skills/motion-studio/references/typography.md +0 -50
@@ -41,7 +41,7 @@ import {
41
41
  time,
42
42
  toCss,
43
43
  vec2
44
- } from "./chunk-AVP5XX4G.mjs";
44
+ } from "./chunk-PEC2UVQY.mjs";
45
45
 
46
46
  // packages/components/src/util.ts
47
47
  var round = (n, d = 3) => {
@@ -745,7 +745,7 @@ var Vignette = defineEffect("Vignette", {
745
745
  const amount = sig(rc, "amount");
746
746
  return {
747
747
  overlay: {
748
- html: `<div id="${id}" class="cc-vignette" style="position:absolute;inset:0;pointer-events:none;opacity:${round(evalSignal(amount, a))};background:radial-gradient(${p.roundness > 0.5 ? "circle" : "ellipse"} at 50% 50%, rgba(0,0,0,0) ${Math.max(0, inner)}%, ${p.color} ${outer}%)"></div>`,
748
+ html: `<div id="${id}" class="fm-vignette" style="position:absolute;inset:0;pointer-events:none;opacity:${round(evalSignal(amount, a))};background:radial-gradient(${p.roundness > 0.5 ? "circle" : "ellipse"} at 50% 50%, rgba(0,0,0,0) ${Math.max(0, inner)}%, ${p.color} ${outer}%)"></div>`,
749
749
  channels: [
750
750
  {
751
751
  target: `#${id}`,
@@ -1002,7 +1002,7 @@ var Grain = defineEffect("Grain", {
1002
1002
  const fps = rc.fps;
1003
1003
  const seedAt = (t) => Math.floor(mulberry32(p.seed * 7919 + Math.floor((t - a) * fps / p.hold))() * 1e5);
1004
1004
  const freq = round(0.9 / p.size, 3);
1005
- const html = `<svg id="${id}" class="cc-grain" width="100%" height="100%" style="position:absolute;inset:0;pointer-events:none;mix-blend-mode:${p.blend};opacity:${round(evalSignal(amount, a))}"><filter id="${id}-f" x="0" y="0" width="100%" height="100%" color-interpolation-filters="sRGB"><feTurbulence id="${id}-t" type="fractalNoise" baseFrequency="${freq}" numOctaves="2" seed="${seedAt(a)}" stitchTiles="stitch"/>${p.mono ? '<feColorMatrix type="saturate" values="0"/>' : ""}</filter><rect width="100%" height="100%" filter="url(#${id}-f)"/></svg>`;
1005
+ const html = `<svg id="${id}" class="fm-grain" width="100%" height="100%" style="position:absolute;inset:0;pointer-events:none;mix-blend-mode:${p.blend};opacity:${round(evalSignal(amount, a))}"><filter id="${id}-f" x="0" y="0" width="100%" height="100%" color-interpolation-filters="sRGB"><feTurbulence id="${id}-t" type="fractalNoise" baseFrequency="${freq}" numOctaves="2" seed="${seedAt(a)}" stitchTiles="stitch"/>${p.mono ? '<feColorMatrix type="saturate" values="0"/>' : ""}</filter><rect width="100%" height="100%" filter="url(#${id}-f)"/></svg>`;
1006
1006
  return {
1007
1007
  overlay: {
1008
1008
  html,
@@ -2173,7 +2173,7 @@ function parseMarkup(src) {
2173
2173
  [/(?<![\w])_([^_]+)_(?![\w])/, "<i>", "</i>"],
2174
2174
  [
2175
2175
  /==([^=]+)==/,
2176
- '<span class="cc-mark" style="background:linear-gradient(#ffe14d,#ffe14d) no-repeat 0 85%/100% 45%">',
2176
+ '<span class="fm-mark" style="background:linear-gradient(#ffe14d,#ffe14d) no-repeat 0 85%/100% 45%">',
2177
2177
  "</span>"
2178
2178
  ],
2179
2179
  [/~~([^~]+)~~/, "<s>", "</s>"]
@@ -2451,17 +2451,17 @@ function renderText(p, rc, split) {
2451
2451
  table.target.char.push(cid);
2452
2452
  table.charText.push(c.g);
2453
2453
  const col = charColor ? `;color:${charColor(srcIndex.get(c))}` : "";
2454
- return `${c.open}<span id="${cid}" class="cc-c" style="display:inline-block;white-space:pre${col}">${esc(c.g)}</span>${c.close}`;
2454
+ return `${c.open}<span id="${cid}" class="fm-c" style="display:inline-block;white-space:pre${col}">${esc(c.g)}</span>${c.close}`;
2455
2455
  }).join("");
2456
2456
  const sep = k < words.length - 1 || false ? " " : "";
2457
- return `<span id="${wid}" class="cc-w" style="display:inline-block;white-space:nowrap">${chars}</span>${sep}`;
2457
+ return `<span id="${wid}" class="fm-w" style="display:inline-block;white-space:nowrap">${chars}</span>${sep}`;
2458
2458
  });
2459
2459
  if (needLine) {
2460
2460
  const lid = `${id}-l${li}`;
2461
2461
  table.line.push(lid);
2462
2462
  table.target.line.push(`${lid}-in`);
2463
2463
  htmlLines.push(
2464
- `<span id="${lid}" class="cc-l" style="display:block;${mask ? "overflow:hidden;" : ""}white-space:nowrap"><span id="${lid}-in" style="display:block">${wordHtml.join("")}</span></span>`
2464
+ `<span id="${lid}" class="fm-l" style="display:block;${mask ? "overflow:hidden;" : ""}white-space:nowrap"><span id="${lid}-in" style="display:block">${wordHtml.join("")}</span></span>`
2465
2465
  );
2466
2466
  } else htmlLines.push(wordHtml.join(""));
2467
2467
  });
@@ -2649,7 +2649,7 @@ function renderText(p, rc, split) {
2649
2649
  const sid = `${id}-${kind}`;
2650
2650
  const pos = kind === "underline" ? "0 100%" : "0 52%";
2651
2651
  decoOpen.push(
2652
- `<span id="${sid}" class="cc-deco" style="background:linear-gradient(${c},${c}) no-repeat ${pos}/${round((d.progress ?? 1) * 100, 2)}% ${th}px;padding-bottom:${kind === "underline" ? d.offset ?? 6 : 0}px">`
2652
+ `<span id="${sid}" class="fm-deco" style="background:linear-gradient(${c},${c}) no-repeat ${pos}/${round((d.progress ?? 1) * 100, 2)}% ${th}px;padding-bottom:${kind === "underline" ? d.offset ?? 6 : 0}px">`
2653
2653
  );
2654
2654
  decoClose.unshift("</span>");
2655
2655
  if (animatedP)
@@ -2674,7 +2674,7 @@ function renderText(p, rc, split) {
2674
2674
  const raw = rc.node.props.highlight?.progress;
2675
2675
  const col = withAlphaColor(hl.color ?? "#ffe14d", hl.opacity ?? 1);
2676
2676
  decoOpen.push(
2677
- `<span id="${sid}" class="cc-hl" style="background:linear-gradient(${col},${col}) no-repeat 0 0/${round((hl.progress ?? 1) * 100, 2)}% 100%;padding:${hl.padding ?? 8}px;margin:-${hl.padding ?? 8}px;border-radius:${hl.radius ?? 6}px;-webkit-box-decoration-break:clone;box-decoration-break:clone">`
2677
+ `<span id="${sid}" class="fm-hl" style="background:linear-gradient(${col},${col}) no-repeat 0 0/${round((hl.progress ?? 1) * 100, 2)}% 100%;padding:${hl.padding ?? 8}px;margin:-${hl.padding ?? 8}px;border-radius:${hl.radius ?? 6}px;-webkit-box-decoration-break:clone;box-decoration-break:clone">`
2678
2678
  );
2679
2679
  decoClose.unshift("</span>");
2680
2680
  if (dyn(raw))
@@ -2725,7 +2725,7 @@ function renderText(p, rc, split) {
2725
2725
  box.width = "max-content";
2726
2726
  box["max-width"] = `${round(maxW)}px`;
2727
2727
  }
2728
- let html = `<div id="${tid}" class="cc-text" ${s.lang ? `lang="${esc(s.lang)}" ` : ""}${s.direction === "rtl" ? 'dir="rtl" ' : ""}style="${css(style)}">${content}</div>`;
2728
+ let html = `<div id="${tid}" class="fm-text" ${s.lang ? `lang="${esc(s.lang)}" ` : ""}${s.direction === "rtl" ? 'dir="rtl" ' : ""}style="${css(style)}">${content}</div>`;
2729
2729
  if (s.box?.height !== void 0 && s.valign !== "top") {
2730
2730
  html = `<div style="display:flex;width:100%;height:100%;align-items:${s.valign === "middle" ? "center" : "flex-end"}">${html}</div>`;
2731
2731
  }
@@ -2828,7 +2828,7 @@ var inline = (name, description, controls, open, channels) => defineComponent(na
2828
2828
  description,
2829
2829
  traits: ["inline"],
2830
2830
  children: "any",
2831
- controls,
2831
+ controls: { id: text({ label: "Id", description: "Stable unique id." }), ...controls },
2832
2832
  render: (p, rc) => ({
2833
2833
  html: `${open(p, rc)}{{children}}</span>`,
2834
2834
  visual: false,
@@ -2880,7 +2880,7 @@ var Highlight = inline(
2880
2880
  },
2881
2881
  (p, rc) => {
2882
2882
  const prog = rc.at("progress", rc.node.start);
2883
- return `<span id="${rc.id}" class="cc-hl" style="background:linear-gradient(${p.color},${p.color}) no-repeat 0 0/${round(prog * 100, 2)}% 100%;padding:0 ${p.padding}px;margin:0 -${p.padding}px;border-radius:${p.radius}px;-webkit-box-decoration-break:clone;box-decoration-break:clone">`;
2883
+ return `<span id="${rc.id}" class="fm-hl" style="background:linear-gradient(${p.color},${p.color}) no-repeat 0 0/${round(prog * 100, 2)}% 100%;padding:0 ${p.padding}px;margin:0 -${p.padding}px;border-radius:${p.radius}px;-webkit-box-decoration-break:clone;box-decoration-break:clone">`;
2884
2884
  },
2885
2885
  (p, rc) => {
2886
2886
  const sg = rc.node.props.progress;
@@ -2909,7 +2909,7 @@ var decoInline = (name, pos, label) => inline(
2909
2909
  },
2910
2910
  (p, rc) => {
2911
2911
  const prog = rc.at("progress", rc.node.start);
2912
- return `<span id="${rc.id}" class="cc-deco" style="background:linear-gradient(${p.color},${p.color}) no-repeat ${pos}/${round(prog * 100, 2)}% ${p.thickness}px;padding-bottom:${name === "Underline" ? p.offset : 0}px">`;
2912
+ return `<span id="${rc.id}" class="fm-deco" style="background:linear-gradient(${p.color},${p.color}) no-repeat ${pos}/${round(prog * 100, 2)}% ${p.thickness}px;padding-bottom:${name === "Underline" ? p.offset : 0}px">`;
2913
2913
  },
2914
2914
  (p, rc) => {
2915
2915
  const sg = rc.node.props.progress;
@@ -3909,6 +3909,167 @@ var mediaComponents = [
3909
3909
  ];
3910
3910
 
3911
3911
  // packages/components/src/looks.ts
3912
+ var CleanLight = defineLook({
3913
+ id: "clean-light",
3914
+ name: "Clean light",
3915
+ description: "Calm and credible. Pale background, white cards, one blue accent, soft shadows, card-slide transition. Inter Tight over Inter.",
3916
+ palette: {
3917
+ bg: "#F6F7FB",
3918
+ surface: "#FFFFFF",
3919
+ text: "#0F1222",
3920
+ textMuted: "#5B6075",
3921
+ accent: "#4B5CFF",
3922
+ signal: "#FF7A45",
3923
+ positive: "#2FBF71",
3924
+ negative: "#E5484D",
3925
+ block1: "#4B5CFF",
3926
+ block2: "#FF7A45",
3927
+ block3: "#2FBF71",
3928
+ block4: "#FFC933",
3929
+ // engine-wide aliases so components that ask for fg / muted / primary work in every look
3930
+ fg: "#0F1222",
3931
+ muted: "#5B6075",
3932
+ primary: "#4B5CFF"
3933
+ },
3934
+ background: "#F6F7FB",
3935
+ fonts: [
3936
+ {
3937
+ id: "display",
3938
+ family: "Inter Tight",
3939
+ source: "google",
3940
+ weights: [700, 800],
3941
+ subsets: ["latin"]
3942
+ },
3943
+ { id: "body", family: "Inter", source: "google", weights: [400, 500, 600], subsets: ["latin"] },
3944
+ { id: "mono", family: "JetBrains Mono", source: "google", weights: [500], subsets: ["latin"] }
3945
+ ],
3946
+ type: {
3947
+ display: { font: "display", size: 120, weight: 800, tracking: -20, leading: 1.02 },
3948
+ title: { font: "display", size: 74, weight: 700, tracking: -20, leading: 1.05 },
3949
+ body: { font: "body", size: 44, weight: 500, tracking: 0, leading: 1.3 },
3950
+ caption: { font: "body", size: 40, weight: 500, tracking: 0, leading: 1.3 },
3951
+ mono: { font: "mono", size: 34, weight: 500, tracking: 0, leading: 1.5 },
3952
+ numerals: { font: "display", size: 170, weight: 800, tracking: -25, leading: 1 }
3953
+ },
3954
+ easing: {
3955
+ in: "expo.out",
3956
+ out: "power3.in",
3957
+ move: "power3.inOut",
3958
+ pop: "back.out(1.2)",
3959
+ settle: "power3.out",
3960
+ spring: "spring(220,24)"
3961
+ },
3962
+ transition: { type: "slide", duration: 0.5 },
3963
+ grain: 0.03,
3964
+ sound: {}
3965
+ });
3966
+ var DarkProduct = defineLook({
3967
+ id: "dark-product",
3968
+ name: "Dark product",
3969
+ description: "Focused and premium. Near-black background, violet accent, mint signal, glow edges, glow-wipe transition. Sora over Inter.",
3970
+ palette: {
3971
+ bg: "#0B0D14",
3972
+ surface: "#151826",
3973
+ text: "#F4F5F9",
3974
+ textMuted: "#9AA0B8",
3975
+ accent: "#7C5CFF",
3976
+ signal: "#3DDC97",
3977
+ positive: "#3DDC97",
3978
+ negative: "#FF6B6B",
3979
+ block1: "#0B0D14",
3980
+ block2: "#7C5CFF",
3981
+ block3: "#151826",
3982
+ block4: "#3DDC97",
3983
+ fg: "#F4F5F9",
3984
+ muted: "#9AA0B8",
3985
+ primary: "#7C5CFF"
3986
+ },
3987
+ background: "#0B0D14",
3988
+ fonts: [
3989
+ { id: "display", family: "Sora", source: "google", weights: [600, 700], subsets: ["latin"] },
3990
+ { id: "body", family: "Inter", source: "google", weights: [400, 500], subsets: ["latin"] },
3991
+ { id: "mono", family: "JetBrains Mono", source: "google", weights: [500], subsets: ["latin"] }
3992
+ ],
3993
+ type: {
3994
+ display: { font: "display", size: 116, weight: 700, tracking: -20, leading: 1.05 },
3995
+ title: { font: "display", size: 72, weight: 600, tracking: -20, leading: 1.08 },
3996
+ body: { font: "body", size: 44, weight: 500, tracking: 0, leading: 1.35 },
3997
+ caption: { font: "body", size: 40, weight: 500, tracking: 0, leading: 1.35 },
3998
+ mono: { font: "mono", size: 34, weight: 500, tracking: 0, leading: 1.5 },
3999
+ numerals: { font: "display", size: 170, weight: 700, tracking: -25, leading: 1 }
4000
+ },
4001
+ easing: {
4002
+ in: "expo.out",
4003
+ out: "power2.in",
4004
+ move: "power3.inOut",
4005
+ pop: "back.out(1.2)",
4006
+ settle: "power3.out",
4007
+ spring: "spring(200,22)"
4008
+ },
4009
+ transition: { type: "wipe", duration: 0.5 },
4010
+ grain: 0.06,
4011
+ sound: {}
4012
+ });
4013
+ var BoldKinetic = defineLook({
4014
+ id: "bold-kinetic",
4015
+ name: "Bold kinetic",
4016
+ description: "Energetic and confident. White or flat saturated colour blocks, heavy display type, key word in the contrast colour, colour-block wipes. Plus Jakarta Sans.",
4017
+ palette: {
4018
+ bg: "#FFFFFF",
4019
+ surface: "#FFFFFF",
4020
+ text: "#1A1020",
4021
+ textMuted: "#5A4A66",
4022
+ accent: "#FF3D81",
4023
+ signal: "#FFC933",
4024
+ positive: "#22B573",
4025
+ negative: "#E5484D",
4026
+ block1: "#FF8FB1",
4027
+ block2: "#7BD389",
4028
+ block3: "#6CB8FF",
4029
+ block4: "#FFD35C",
4030
+ block5: "#9B6BFF",
4031
+ fg: "#1A1020",
4032
+ muted: "#5A4A66",
4033
+ primary: "#FF3D81"
4034
+ },
4035
+ background: "#FFFFFF",
4036
+ fonts: [
4037
+ {
4038
+ id: "display",
4039
+ family: "Plus Jakarta Sans",
4040
+ source: "google",
4041
+ weights: [800],
4042
+ subsets: ["latin"]
4043
+ },
4044
+ {
4045
+ id: "body",
4046
+ family: "Plus Jakarta Sans",
4047
+ source: "google",
4048
+ weights: [500, 600],
4049
+ subsets: ["latin"]
4050
+ },
4051
+ { id: "mono", family: "JetBrains Mono", source: "google", weights: [500], subsets: ["latin"] }
4052
+ ],
4053
+ type: {
4054
+ display: { font: "display", size: 144, weight: 800, tracking: -30, leading: 0.98 },
4055
+ title: { font: "display", size: 84, weight: 800, tracking: -30, leading: 1 },
4056
+ body: { font: "body", size: 46, weight: 600, tracking: 0, leading: 1.25 },
4057
+ caption: { font: "body", size: 40, weight: 600, tracking: 0, leading: 1.25 },
4058
+ mono: { font: "mono", size: 34, weight: 500, tracking: 0, leading: 1.5 },
4059
+ numerals: { font: "display", size: 200, weight: 800, tracking: -35, leading: 1 }
4060
+ },
4061
+ easing: {
4062
+ in: "back.out(1.4)",
4063
+ out: "power4.in",
4064
+ move: "expo.inOut",
4065
+ pop: "back.out(1.4)",
4066
+ settle: "power3.out",
4067
+ spring: "spring(260,18)"
4068
+ },
4069
+ transition: { type: "wipe", duration: 0.4 },
4070
+ grain: 0,
4071
+ sound: {}
4072
+ });
3912
4073
  var Kinetic = defineLook({
3913
4074
  id: "kinetic",
3914
4075
  name: "Kinetic",
@@ -4045,7 +4206,7 @@ var Sketch = defineLook({
4045
4206
  grain: 0.18,
4046
4207
  sound: { "ui/pop": "freesound:pop", "move/whip": "freesound:whoosh" }
4047
4208
  });
4048
- var looks = [Kinetic, Minimal, Sketch];
4209
+ var looks = [CleanLight, DarkProduct, BoldKinetic, Kinetic, Minimal, Sketch];
4049
4210
  var themeControls = () => ({
4050
4211
  id: text({ required: true }),
4051
4212
  palette: json({}, external_exports.record(external_exports.string(), external_exports.string())),
@@ -4184,6 +4345,9 @@ export {
4184
4345
  toVtt,
4185
4346
  Captions,
4186
4347
  mediaComponents,
4348
+ CleanLight,
4349
+ DarkProduct,
4350
+ BoldKinetic,
4187
4351
  Kinetic,
4188
4352
  Minimal,
4189
4353
  Sketch,