motionrender 0.2.3 → 0.2.5

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.
package/studio/index.html CHANGED
@@ -7,7 +7,7 @@
7
7
  <script>try{var t=localStorage.getItem('ove-theme')||'dark';if(t==='system')t=matchMedia('(prefers-color-scheme: light)').matches?'light':'dark';document.documentElement.dataset.theme=t}catch(e){document.documentElement.dataset.theme='dark'}</script>
8
8
  <title>OVE AI studio</title>
9
9
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3 22 21H2z' fill='%23ededed'/%3E%3C/svg%3E" />
10
- <script type="module" crossorigin src="/assets/index-n3DJI_GV.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-BGdqA-kT.js"></script>
11
11
  <link rel="stylesheet" crossorigin href="/assets/index-DmZj9wTZ.css">
12
12
  </head>
13
13
  <body>
@@ -12,16 +12,23 @@
12
12
  "from": [0, 0],
13
13
  "to": [1080, 1080],
14
14
  "stops": [
15
- { "offset": 0, "color": "#0b1020" },
16
- { "offset": 1, "color": "#211308" }
15
+ { "offset": 0, "color": "{{bg}}" },
16
+ { "offset": 1, "color": "{{surface}}" }
17
17
  ]
18
18
  },
19
19
  "variables": {
20
+ "bg": { "type": "color", "default": "#0b1020", "description": "Theme: bg" },
21
+ "surface": { "type": "color", "default": "#211308", "description": "Theme: surface" },
22
+ "text": { "type": "color", "default": "#ffffff", "description": "Theme: text" },
23
+ "muted": { "type": "color", "default": "#c4b5fd", "description": "Theme: muted" },
24
+ "accent": { "type": "color", "default": "#f97316", "description": "Theme: accent" },
25
+ "accent2": { "type": "color", "default": "#fbbf24", "description": "Theme: accent2" },
26
+ "radius": { "type": "number", "default": 24, "description": "Theme: radius" },
27
+ "headWeight": { "type": "number", "default": 800, "description": "Theme: headWeight" },
20
28
  "product": { "type": "string", "default": "Everyday Mug" },
21
29
  "price": { "type": "string", "default": "$18" },
22
30
  "badge": { "type": "string", "default": "NEW", "description": "Pill in the top-left corner" },
23
- "caption": { "type": "string", "default": "Stoneware · 350 ml" },
24
- "accent": { "type": "color", "default": "#f97316" }
31
+ "caption": { "type": "string", "default": "Stoneware · 350 ml" }
25
32
  },
26
33
  "scenes": [
27
34
  {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "Product card",
3
- "description": "A square product card with a drawn mug, badge, name and price. Its variables make it a ready batch template.",
4
- "tags": ["product", "ecommerce", "1:1", "batch"],
3
+ "description": "A square product card with badge, product name, caption and price. Themeable and ready for batch generation.",
4
+ "tags": ["product", "ecommerce", "1:1", "batch", "themed"],
5
5
  "order": 2,
6
6
  "previewFrame": 120,
7
- "brief": "An 8-second square product card for a stoneware mug: warm dark background, a simple drawn mug, a NEW badge, the product name, a short caption and the price."
7
+ "brief": "An 8-second square product card: badge, product name, short caption and price."
8
8
  }
@@ -12,20 +12,27 @@
12
12
  "from": [0, 0],
13
13
  "to": [1080, 1920],
14
14
  "stops": [
15
- { "offset": 0, "color": "#071018" },
16
- { "offset": 0.55, "color": "#0a1a20" },
17
- { "offset": 1, "color": "#06121a" }
15
+ { "offset": 0, "color": "{{bg}}" },
16
+ { "offset": 0.55, "color": "{{surface}}" },
17
+ { "offset": 1, "color": "{{bg}}" }
18
18
  ]
19
19
  },
20
20
  "variables": {
21
+ "bg": { "type": "color", "default": "#071018", "description": "Theme: bg" },
22
+ "surface": { "type": "color", "default": "#0a1a20", "description": "Theme: surface" },
23
+ "text": { "type": "color", "default": "#f8fafc", "description": "Theme: text" },
24
+ "muted": { "type": "color", "default": "#9fb0c6", "description": "Theme: muted" },
25
+ "accent": { "type": "color", "default": "#2dd4bf", "description": "Theme: accent" },
26
+ "accent2": { "type": "color", "default": "#38bdf8", "description": "Theme: accent2" },
27
+ "radius": { "type": "number", "default": 24, "description": "Theme: radius" },
28
+ "headWeight": { "type": "number", "default": 800, "description": "Theme: headWeight" },
21
29
  "stepsTitle": { "type": "string", "default": "HOW IT WORKS", "description": "Label above the three steps" },
22
30
  "steps": { "type": "string", "default": "01 BRIEF\n02 VALIDATE\n03 RENDER", "description": "Three short steps, one per line, numbered like the example" },
23
31
  "footer": { "type": "string", "default": "Generated from a brief. Rendered deterministically.", "description": "Small line at the bottom" },
24
32
  "kicker": { "type": "string", "default": "MAKE IT MOVE", "description": "Small label above the headline" },
25
33
  "title": { "type": "string", "default": "One brief.\nOne video.", "description": "Headline; a line break starts a new line" },
26
34
  "detail": { "type": "string", "default": "Describe the video. OVE writes a composition, checks it against the same schema as a hand-written one, and renders every frame the same way, every time." },
27
- "cta": { "type": "string", "default": "Try OVE" },
28
- "accent": { "type": "color", "default": "#2dd4bf", "description": "Glow, rule and button colour" }
35
+ "cta": { "type": "string", "default": "Try OVE" }
29
36
  },
30
37
  "scenes": [
31
38
  {
@@ -81,7 +88,7 @@
81
88
  "maxWidth": 900,
82
89
  "maxLines": 3,
83
90
  "minFontSize": 88,
84
- "color": "#f8fafc",
91
+ "color": "{{text}}",
85
92
  "split": { "by": "words", "preset": "rise", "stagger": 5, "duration": 24 }
86
93
  },
87
94
  {
@@ -107,7 +114,7 @@
107
114
  "lineHeight": 1.45,
108
115
  "maxWidth": 790,
109
116
  "maxLines": 6,
110
- "color": "#9fb0c6",
117
+ "color": "{{muted}}",
111
118
  "animations": [
112
119
  { "property": "opacity", "keyframes": [{ "frame": 30, "value": 0 }, { "frame": 55, "value": 1 }] }
113
120
  ]
@@ -118,7 +125,7 @@
118
125
  "x": 880,
119
126
  "y": 1650,
120
127
  "width": 120,
121
- "fill": "{{accent}}",
128
+ "fill": "{{accent2}}",
122
129
  "originX": "center",
123
130
  "originY": "center",
124
131
  "animations": [
@@ -173,7 +180,7 @@
173
180
  "letterSpacing": -2,
174
181
  "maxWidth": 900,
175
182
  "maxLines": 3,
176
- "color": "#f8fafc"
183
+ "color": "{{text}}"
177
184
  },
178
185
  {
179
186
  "id": "steps-detail",
@@ -185,7 +192,7 @@
185
192
  "lineHeight": 1.5,
186
193
  "maxWidth": 820,
187
194
  "maxLines": 6,
188
- "color": "#9fb0c6"
195
+ "color": "{{muted}}"
189
196
  },
190
197
  {
191
198
  "id": "steps-rule",
@@ -235,7 +242,7 @@
235
242
  "maxWidth": 880,
236
243
  "maxLines": 2,
237
244
  "minFontSize": 72,
238
- "color": "#f8fafc"
245
+ "color": "{{text}}"
239
246
  },
240
247
  {
241
248
  "id": "cta-rule",
@@ -259,7 +266,7 @@
259
266
  "fontSize": 32,
260
267
  "textAlign": "center",
261
268
  "maxWidth": 760,
262
- "color": "#9fb0c6"
269
+ "color": "{{muted}}"
263
270
  }
264
271
  ]
265
272
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "Social reel",
3
- "description": "A 20-second vertical reel: a hook, three steps, and a call to action. Good for launches and social posts.",
4
- "tags": ["reel", "social", "9:16", "launch"],
3
+ "description": "A 20-second vertical reel: a hook, three steps, and a call to action. Good for launches and social posts. Themeable.",
4
+ "tags": ["reel", "social", "9:16", "launch", "themed"],
5
5
  "order": 1,
6
6
  "previewFrame": 70,
7
- "brief": "A 20-second vertical social reel for a product launch: a bold hook, three quick steps (brief, validate, render) and a clear call to action, in a dark teal palette."
7
+ "brief": "A 20-second vertical social reel for a product launch: a bold hook, three quick steps and a clear call to action."
8
8
  }