@editframe/create 0.44.0 → 0.45.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 (98) hide show
  1. package/dist/index.js +16 -28
  2. package/dist/index.js.map +1 -1
  3. package/dist/skills/editframe-brand-video-generator/README.md +155 -0
  4. package/dist/skills/editframe-brand-video-generator/SKILL.md +207 -0
  5. package/dist/skills/editframe-brand-video-generator/references/brand-examples.md +178 -0
  6. package/dist/skills/editframe-brand-video-generator/references/color-psychology.md +227 -0
  7. package/dist/skills/editframe-brand-video-generator/references/composition-patterns.md +383 -0
  8. package/dist/skills/editframe-brand-video-generator/references/editing.md +66 -0
  9. package/dist/skills/editframe-brand-video-generator/references/emotional-arcs.md +496 -0
  10. package/dist/skills/editframe-brand-video-generator/references/genre-selection.md +135 -0
  11. package/dist/skills/editframe-brand-video-generator/references/transition-styles.md +611 -0
  12. package/dist/skills/editframe-brand-video-generator/references/typography-personalities.md +326 -0
  13. package/dist/skills/editframe-brand-video-generator/references/video-archetypes.md +86 -0
  14. package/dist/skills/editframe-brand-video-generator/references/video-fundamentals.md +169 -0
  15. package/dist/skills/editframe-brand-video-generator/references/visual-metaphors.md +50 -0
  16. package/dist/skills/editframe-composition/SKILL.md +169 -0
  17. package/dist/skills/editframe-composition/references/audio.md +483 -0
  18. package/dist/skills/editframe-composition/references/captions.md +844 -0
  19. package/dist/skills/editframe-composition/references/composition-model.md +73 -0
  20. package/dist/skills/editframe-composition/references/configuration.md +403 -0
  21. package/dist/skills/editframe-composition/references/css-parts.md +105 -0
  22. package/dist/skills/editframe-composition/references/css-variables.md +640 -0
  23. package/dist/skills/editframe-composition/references/entry-points.md +810 -0
  24. package/dist/skills/editframe-composition/references/events.md +499 -0
  25. package/dist/skills/editframe-composition/references/getting-started.md +259 -0
  26. package/dist/skills/editframe-composition/references/hooks.md +234 -0
  27. package/dist/skills/editframe-composition/references/image.md +241 -0
  28. package/dist/skills/editframe-composition/references/r3f.md +580 -0
  29. package/dist/skills/editframe-composition/references/render-api.md +484 -0
  30. package/dist/skills/editframe-composition/references/render-strategies.md +119 -0
  31. package/dist/skills/editframe-composition/references/render-to-video.md +1101 -0
  32. package/dist/skills/editframe-composition/references/scripting.md +606 -0
  33. package/dist/skills/editframe-composition/references/sequencing.md +116 -0
  34. package/dist/skills/editframe-composition/references/server-rendering.md +753 -0
  35. package/dist/skills/editframe-composition/references/surface.md +329 -0
  36. package/dist/skills/editframe-composition/references/text.md +627 -0
  37. package/dist/skills/editframe-composition/references/time-model.md +99 -0
  38. package/dist/skills/editframe-composition/references/timegroup-modes.md +102 -0
  39. package/dist/skills/editframe-composition/references/timegroup.md +457 -0
  40. package/dist/skills/editframe-composition/references/timeline-root.md +398 -0
  41. package/dist/skills/editframe-composition/references/transcription.md +47 -0
  42. package/dist/skills/editframe-composition/references/transitions.md +608 -0
  43. package/dist/skills/editframe-composition/references/use-media-info.md +357 -0
  44. package/dist/skills/editframe-composition/references/video.md +506 -0
  45. package/dist/skills/editframe-composition/references/waveform.md +327 -0
  46. package/dist/skills/editframe-editor-gui/SKILL.md +152 -0
  47. package/dist/skills/editframe-editor-gui/references/active-root-temporal.md +657 -0
  48. package/dist/skills/editframe-editor-gui/references/canvas.md +947 -0
  49. package/dist/skills/editframe-editor-gui/references/controls.md +366 -0
  50. package/dist/skills/editframe-editor-gui/references/dial.md +756 -0
  51. package/dist/skills/editframe-editor-gui/references/editor-toolkit.md +587 -0
  52. package/dist/skills/editframe-editor-gui/references/filmstrip.md +460 -0
  53. package/dist/skills/editframe-editor-gui/references/fit-scale.md +772 -0
  54. package/dist/skills/editframe-editor-gui/references/focus-overlay.md +561 -0
  55. package/dist/skills/editframe-editor-gui/references/hierarchy.md +544 -0
  56. package/dist/skills/editframe-editor-gui/references/overlay-item.md +634 -0
  57. package/dist/skills/editframe-editor-gui/references/overlay-layer.md +429 -0
  58. package/dist/skills/editframe-editor-gui/references/pan-zoom.md +568 -0
  59. package/dist/skills/editframe-editor-gui/references/pause.md +397 -0
  60. package/dist/skills/editframe-editor-gui/references/play.md +370 -0
  61. package/dist/skills/editframe-editor-gui/references/preview.md +391 -0
  62. package/dist/skills/editframe-editor-gui/references/resizable-box.md +749 -0
  63. package/dist/skills/editframe-editor-gui/references/scrubber.md +588 -0
  64. package/dist/skills/editframe-editor-gui/references/thumbnail-strip.md +566 -0
  65. package/dist/skills/editframe-editor-gui/references/time-display.md +492 -0
  66. package/dist/skills/editframe-editor-gui/references/timeline-ruler.md +489 -0
  67. package/dist/skills/editframe-editor-gui/references/timeline.md +604 -0
  68. package/dist/skills/editframe-editor-gui/references/toggle-loop.md +618 -0
  69. package/dist/skills/editframe-editor-gui/references/toggle-play.md +526 -0
  70. package/dist/skills/editframe-editor-gui/references/transform-handles.md +924 -0
  71. package/dist/skills/editframe-editor-gui/references/trim-handles.md +725 -0
  72. package/dist/skills/editframe-editor-gui/references/workbench.md +453 -0
  73. package/dist/skills/editframe-motion-design/SKILL.md +101 -0
  74. package/dist/skills/editframe-motion-design/references/0-editframe.md +299 -0
  75. package/dist/skills/editframe-motion-design/references/1-intent.md +201 -0
  76. package/dist/skills/editframe-motion-design/references/2-physics-model.md +405 -0
  77. package/dist/skills/editframe-motion-design/references/3-attention.md +350 -0
  78. package/dist/skills/editframe-motion-design/references/4-process.md +418 -0
  79. package/dist/skills/editframe-vite-plugin/SKILL.md +75 -0
  80. package/dist/skills/editframe-vite-plugin/references/file-api.md +111 -0
  81. package/dist/skills/editframe-vite-plugin/references/getting-started.md +96 -0
  82. package/dist/skills/editframe-vite-plugin/references/jit-transcoding.md +91 -0
  83. package/dist/skills/editframe-vite-plugin/references/local-assets.md +75 -0
  84. package/dist/skills/editframe-vite-plugin/references/visual-testing.md +136 -0
  85. package/dist/skills/editframe-webhooks/SKILL.md +126 -0
  86. package/dist/skills/editframe-webhooks/references/events.md +382 -0
  87. package/dist/skills/editframe-webhooks/references/getting-started.md +232 -0
  88. package/dist/skills/editframe-webhooks/references/security.md +418 -0
  89. package/dist/skills/editframe-webhooks/references/testing.md +409 -0
  90. package/dist/skills/editframe-webhooks/references/troubleshooting.md +457 -0
  91. package/dist/templates/html/AGENTS.md +13 -0
  92. package/dist/templates/react/AGENTS.md +13 -0
  93. package/dist/utils.js +15 -16
  94. package/dist/utils.js.map +1 -1
  95. package/package.json +1 -1
  96. package/tsdown.config.ts +4 -0
  97. package/dist/detectAgent.js +0 -89
  98. package/dist/detectAgent.js.map +0 -1
@@ -0,0 +1,429 @@
1
+ ---
2
+ title: Overlay Layer Element
3
+ description: Container that positions overlay items absolutely over a composition, anchoring them to their target elements during playback.
4
+ type: reference
5
+ nav:
6
+ parent: "Overlay System"
7
+ priority: 10
8
+ api:
9
+ attributes:
10
+ - name: panZoomTransform
11
+ type: "{ x: number, y: number, scale: number }"
12
+ description: Pan/zoom transform (fallback when context unavailable)
13
+ methods:
14
+ - name: registerOverlayItem(item)
15
+ signature: "registerOverlayItem(item: EFOverlayItem): void"
16
+ description: Register an overlay item for coordinated updates
17
+ - name: unregisterOverlayItem(item)
18
+ signature: "unregisterOverlayItem(item: EFOverlayItem): void"
19
+ description: Unregister an overlay item
20
+ react:
21
+ generate: true
22
+ componentName: OverlayLayer
23
+ importPath: "@editframe/react"
24
+ additionalProps:
25
+ - name: className
26
+ type: string
27
+ description: CSS classes for styling
28
+ - name: children
29
+ type: ReactNode
30
+ description: OverlayItem children to render
31
+ nav:
32
+ parent: "Components / Overlay System"
33
+ priority: 50
34
+ related: ["overlay-item", "preview"]
35
+ ---
36
+
37
+ <!-- html-only -->
38
+ # ef-overlay-layer
39
+ <!-- /html-only -->
40
+ <!-- react-only -->
41
+ # OverlayLayer
42
+ <!-- /react-only -->
43
+
44
+ Container for positioned overlays that track element positions in a canvas or composition.
45
+
46
+ <!-- react-only -->
47
+ ## Import
48
+
49
+ ```tsx
50
+ import { OverlayLayer } from "@editframe/react";
51
+ ```
52
+ <!-- /react-only -->
53
+
54
+ ## Basic Usage
55
+
56
+ <!-- html-only -->
57
+ Overlay layer provides a coordinate system for overlays:
58
+
59
+ ```html live
60
+ <div class="relative w-[600px] h-[400px] border border-gray-300 rounded overflow-hidden">
61
+ <ef-overlay-layer class="absolute inset-0 pointer-events-none">
62
+ <ef-overlay-item target="#target-box" class="border-2 border-blue-500 pointer-events-auto">
63
+ <div class="absolute -top-6 left-0 bg-blue-500 text-white text-xs px-2 py-1 rounded">Label</div>
64
+ </ef-overlay-item>
65
+ </ef-overlay-layer>
66
+
67
+ <div id="target-box" class="absolute top-8 left-8 w-32 h-24 bg-gray-200 rounded"></div>
68
+ </div>
69
+ ```
70
+ <!-- /html-only -->
71
+ <!-- react-only -->
72
+ ```tsx
73
+ import { OverlayLayer, OverlayItem, Preview, Timegroup, Video } from "@editframe/react";
74
+
75
+ export const App = () => {
76
+ return (
77
+ <div className="relative w-full h-screen">
78
+ <Preview className="w-full h-full" />
79
+
80
+ <OverlayLayer className="absolute inset-0 pointer-events-none">
81
+ <OverlayItem elementId="video-1">
82
+ <div className="border-2 border-blue-500" />
83
+ </OverlayItem>
84
+ </OverlayLayer>
85
+
86
+ <Timegroup mode="contain" className="w-[1920px] h-[1080px]">
87
+ <Video id="video-1" src="/assets/video.mp4" className="size-full" />
88
+ </Timegroup>
89
+ </div>
90
+ );
91
+ };
92
+ ```
93
+ <!-- /react-only -->
94
+
95
+ ## With Pan/Zoom
96
+
97
+ <!-- html-only -->
98
+ Overlay layer automatically syncs with ef-pan-zoom transforms:
99
+
100
+ ```html live
101
+ <div class="relative w-[600px] h-[400px] border border-gray-300 rounded overflow-hidden">
102
+ <ef-pan-zoom class="w-full h-full">
103
+ <div class="w-[1200px] h-[800px] bg-gray-100">
104
+ <div id="element-1" class="absolute top-12 left-12 w-40 h-32 bg-blue-500 text-white flex items-center justify-center rounded">
105
+ Element 1
106
+ </div>
107
+ <div id="element-2" class="absolute top-48 left-48 w-40 h-32 bg-green-500 text-white flex items-center justify-center rounded">
108
+ Element 2
109
+ </div>
110
+ </div>
111
+ </ef-pan-zoom>
112
+
113
+ <ef-overlay-layer class="absolute inset-0 pointer-events-none">
114
+ <ef-overlay-item target="#element-1" class="border-2 border-blue-600"></ef-overlay-item>
115
+ <ef-overlay-item target="#element-2" class="border-2 border-green-600"></ef-overlay-item>
116
+ </ef-overlay-layer>
117
+ </div>
118
+ ```
119
+
120
+ Pan and zoom the canvas - overlays stay perfectly positioned on their targets.
121
+ <!-- /html-only -->
122
+ <!-- react-only -->
123
+ ```tsx
124
+ import { PanZoom, OverlayLayer, OverlayItem } from "@editframe/react";
125
+
126
+ export const ZoomableEditor = () => {
127
+ return (
128
+ <div className="relative w-full h-screen">
129
+ <PanZoom className="w-full h-full" autoFit>
130
+ <Preview className="w-[1920px] h-[1080px]" />
131
+
132
+ {/* OverlayLayer automatically syncs with PanZoom transform */}
133
+ <OverlayLayer className="absolute inset-0">
134
+ <OverlayItem elementId="text-1">
135
+ <div className="border-2 border-green-500" />
136
+ </OverlayItem>
137
+ </OverlayLayer>
138
+
139
+ <Timegroup mode="fixed" duration="5s" className="w-[1920px] h-[1080px]">
140
+ <Text
141
+ id="text-1"
142
+ duration="5s"
143
+ className="absolute top-20 left-20 text-white text-4xl"
144
+ >
145
+ Title Text
146
+ </Text>
147
+ </Timegroup>
148
+ </PanZoom>
149
+ </div>
150
+ );
151
+ };
152
+ ```
153
+ <!-- /react-only -->
154
+
155
+ ## Architecture
156
+
157
+ Overlay layer runs a single RAF loop that:
158
+
159
+ 1. Reads the current pan/zoom transform
160
+ 2. Applies transform to the layer container
161
+ 3. Updates all registered overlay items
162
+ 4. Schedules next frame
163
+
164
+ This ensures all overlays update synchronously without individual RAF loops.
165
+
166
+ ## Transform Context
167
+
168
+ <!-- html-only -->
169
+ Overlay layer consumes pan/zoom transform from context when nested inside ef-pan-zoom:
170
+
171
+ ```html
172
+ <ef-pan-zoom>
173
+ <!-- Transform provided via context -->
174
+ <ef-overlay-layer>
175
+ <ef-overlay-item target="#element"></ef-overlay-item>
176
+ </ef-overlay-layer>
177
+ </ef-pan-zoom>
178
+ ```
179
+
180
+ For sibling relationships, overlay layer reads transform directly from the DOM:
181
+
182
+ ```html
183
+ <div class="relative">
184
+ <ef-pan-zoom>
185
+ <!-- Pan/zoom content -->
186
+ </ef-pan-zoom>
187
+
188
+ <!-- Sibling overlay layer reads transform from ef-pan-zoom -->
189
+ <ef-overlay-layer class="absolute inset-0">
190
+ <ef-overlay-item target="#element"></ef-overlay-item>
191
+ </ef-overlay-layer>
192
+ </div>
193
+ ```
194
+ <!-- /html-only -->
195
+ <!-- react-only -->
196
+ OverlayLayer automatically discovers and syncs with PanZoom transforms via Lit context. When placed inside a PanZoom component, no manual transform wiring is needed.
197
+ <!-- /react-only -->
198
+
199
+ <!-- html-only -->
200
+ ## Fallback Transform
201
+
202
+ Provide transform as property for testing or standalone usage:
203
+
204
+ ```javascript
205
+ const overlayLayer = document.querySelector('ef-overlay-layer');
206
+ overlayLayer.panZoomTransform = { x: 0, y: 0, scale: 1 };
207
+ ```
208
+ <!-- /html-only -->
209
+
210
+ ## Coordinate System
211
+
212
+ Overlay layer creates a coordinate space that:
213
+
214
+ - Matches the transformed canvas position
215
+ - Allows overlay items to use absolute positioning
216
+ - Updates every frame via RAF loop
217
+ - Supports pointer events through `pointer-events: auto` on overlay items
218
+
219
+ <!-- html-only -->
220
+ ## Registration
221
+
222
+ Overlay items auto-register with their parent layer:
223
+
224
+ ```javascript
225
+ // Registration happens automatically in connectedCallback
226
+ const item = document.createElement('ef-overlay-item');
227
+ item.target = '#my-element';
228
+ overlayLayer.appendChild(item); // Item registers itself
229
+
230
+ // Unregistration happens in disconnectedCallback
231
+ item.remove(); // Item unregisters itself
232
+ ```
233
+
234
+ Manual registration is possible but not required:
235
+
236
+ ```javascript
237
+ const overlayLayer = document.querySelector('ef-overlay-layer');
238
+ const overlayItem = document.querySelector('ef-overlay-item');
239
+
240
+ overlayLayer.registerOverlayItem(overlayItem);
241
+ // Later...
242
+ overlayLayer.unregisterOverlayItem(overlayItem);
243
+ ```
244
+ <!-- /html-only -->
245
+
246
+ ## Pointer Events
247
+
248
+ <!-- html-only -->
249
+ Overlay layer has `pointer-events: none` by default. Enable pointer events on individual items:
250
+
251
+ ```html
252
+ <ef-overlay-layer>
253
+ <ef-overlay-item target="#element" class="pointer-events-auto cursor-pointer">
254
+ <button>Click me</button>
255
+ </ef-overlay-item>
256
+ </ef-overlay-layer>
257
+ ```
258
+ <!-- /html-only -->
259
+ <!-- react-only -->
260
+ OverlayLayer has `pointer-events: none` by default. Child elements should set `pointer-events: auto` to receive interactions.
261
+ <!-- /react-only -->
262
+
263
+ <!-- react-only -->
264
+ ## With Transform Handles
265
+
266
+ ```tsx
267
+ import { OverlayLayer, OverlayItem, TransformHandles } from "@editframe/react";
268
+
269
+ export const Editor = () => {
270
+ const [bounds, setBounds] = useState({ x: 100, y: 100, width: 400, height: 300 });
271
+
272
+ return (
273
+ <div className="relative w-full h-screen">
274
+ <Preview className="w-full h-full" />
275
+
276
+ <OverlayLayer className="absolute inset-0">
277
+ <OverlayItem elementId="selected-element">
278
+ <TransformHandles
279
+ bounds={bounds}
280
+ enableRotation
281
+ onBoundsChange={(e) => setBounds(e.detail)}
282
+ />
283
+ </OverlayItem>
284
+ </OverlayLayer>
285
+
286
+ <Timegroup mode="contain" className="w-[1920px] h-[1080px]">
287
+ <Video
288
+ id="selected-element"
289
+ src="/assets/video.mp4"
290
+ className="absolute"
291
+ style={{
292
+ left: bounds.x,
293
+ top: bounds.y,
294
+ width: bounds.width,
295
+ height: bounds.height
296
+ }}
297
+ />
298
+ </Timegroup>
299
+ </div>
300
+ );
301
+ };
302
+ ```
303
+
304
+ ## Multiple Overlays
305
+
306
+ ```tsx
307
+ import { OverlayLayer, OverlayItem } from "@editframe/react";
308
+
309
+ export const MultiOverlay = () => {
310
+ return (
311
+ <div className="relative w-full h-screen">
312
+ <Preview className="w-full h-full" />
313
+
314
+ <OverlayLayer className="absolute inset-0">
315
+ {/* Selection highlight */}
316
+ <OverlayItem elementId="element-1">
317
+ <div className="border-2 border-blue-500 bg-blue-500/10" />
318
+ </OverlayItem>
319
+
320
+ {/* Hover highlight */}
321
+ <OverlayItem elementId="element-2">
322
+ <div className="border-2 border-yellow-500 bg-yellow-500/10" />
323
+ </OverlayItem>
324
+
325
+ {/* Label */}
326
+ <OverlayItem elementId="element-1">
327
+ <div className="absolute -top-6 left-0 bg-black text-white px-2 py-1 text-xs rounded">
328
+ Video Layer
329
+ </div>
330
+ </OverlayItem>
331
+ </OverlayLayer>
332
+
333
+ <Timegroup mode="sequence" className="w-[1920px] h-[1080px]">
334
+ <Video id="element-1" src="/assets/video1.mp4" />
335
+ <Video id="element-2" src="/assets/video2.mp4" />
336
+ </Timegroup>
337
+ </div>
338
+ );
339
+ };
340
+ ```
341
+
342
+ ## Custom Overlay Styling
343
+
344
+ ```tsx
345
+ import { OverlayLayer, OverlayItem } from "@editframe/react";
346
+
347
+ export const StyledOverlays = () => {
348
+ return (
349
+ <OverlayLayer className="absolute inset-0">
350
+ {/* Dashed border overlay */}
351
+ <OverlayItem elementId="element-1">
352
+ <div className="border-2 border-dashed border-purple-500" />
353
+ </OverlayItem>
354
+
355
+ {/* Gradient border overlay */}
356
+ <OverlayItem elementId="element-2">
357
+ <div
358
+ className="border-4"
359
+ style={{
360
+ borderImage: "linear-gradient(45deg, #ff0080, #00ff80) 1"
361
+ }}
362
+ />
363
+ </OverlayItem>
364
+
365
+ {/* Shadow overlay */}
366
+ <OverlayItem elementId="element-3">
367
+ <div className="border-2 border-white shadow-2xl" />
368
+ </OverlayItem>
369
+ </OverlayLayer>
370
+ );
371
+ };
372
+ ```
373
+ <!-- /react-only -->
374
+
375
+ ## Performance
376
+
377
+ Single RAF loop ensures:
378
+
379
+ - No RAF proliferation (one loop for all overlays)
380
+ - No change detection overhead
381
+ - No delay between transform and overlay updates
382
+ - Synchronized updates across all overlay items
383
+
384
+ ## Positioning
385
+
386
+ <!-- html-only -->
387
+ Overlay layer uses `position: absolute` and `inset: 0` to fill its container:
388
+
389
+ ```html
390
+ <div class="relative w-full h-full">
391
+ <!-- Overlay layer fills parent -->
392
+ <ef-overlay-layer></ef-overlay-layer>
393
+ </div>
394
+ ```
395
+ <!-- /html-only -->
396
+ <!-- react-only -->
397
+ OverlayLayer must be positioned with `position: absolute` or `fixed` to properly overlay content.
398
+ <!-- /react-only -->
399
+
400
+ ## Transform Origin
401
+
402
+ Overlay layer uses `transform-origin: 0 0` to match canvas transform behavior.
403
+
404
+ <!-- react-only -->
405
+ ## Architecture Notes
406
+
407
+ - OverlayLayer runs a single RAF loop that updates all child OverlayItems synchronously
408
+ - Automatically discovers and syncs with PanZoom transforms via Lit context
409
+ - Overlays track element positions in real-time using `getBoundingClientRect()`
410
+ - No change detection - updates happen every frame for smooth tracking
411
+ - Child elements should set `pointer-events: auto` to receive interactions
412
+ <!-- /react-only -->
413
+
414
+ ## Important Notes
415
+
416
+ <!-- html-only -->
417
+ - Must be positioned with `position: absolute` or `fixed`
418
+ - Use with ef-overlay-item children to track specific elements
419
+ - Automatically handles pan/zoom transforms when inside ef-pan-zoom
420
+ - Updates continuously - no manual refresh needed
421
+ - All overlay items update in sync to prevent visual glitches
422
+ <!-- /html-only -->
423
+ <!-- react-only -->
424
+ - Must be positioned with `position: absolute` or `fixed`
425
+ - Use with OverlayItem children to track specific elements
426
+ - Automatically handles pan/zoom transforms when inside PanZoom
427
+ - Updates continuously - no manual refresh needed
428
+ - All OverlayItems update in sync to prevent visual glitches
429
+ <!-- /react-only -->