@editframe/create 0.43.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 (99) hide show
  1. package/README.md +11 -0
  2. package/dist/index.js +16 -28
  3. package/dist/index.js.map +1 -1
  4. package/dist/skills/editframe-brand-video-generator/README.md +155 -0
  5. package/dist/skills/editframe-brand-video-generator/SKILL.md +207 -0
  6. package/dist/skills/editframe-brand-video-generator/references/brand-examples.md +178 -0
  7. package/dist/skills/editframe-brand-video-generator/references/color-psychology.md +227 -0
  8. package/dist/skills/editframe-brand-video-generator/references/composition-patterns.md +383 -0
  9. package/dist/skills/editframe-brand-video-generator/references/editing.md +66 -0
  10. package/dist/skills/editframe-brand-video-generator/references/emotional-arcs.md +496 -0
  11. package/dist/skills/editframe-brand-video-generator/references/genre-selection.md +135 -0
  12. package/dist/skills/editframe-brand-video-generator/references/transition-styles.md +611 -0
  13. package/dist/skills/editframe-brand-video-generator/references/typography-personalities.md +326 -0
  14. package/dist/skills/editframe-brand-video-generator/references/video-archetypes.md +86 -0
  15. package/dist/skills/editframe-brand-video-generator/references/video-fundamentals.md +169 -0
  16. package/dist/skills/editframe-brand-video-generator/references/visual-metaphors.md +50 -0
  17. package/dist/skills/editframe-composition/SKILL.md +169 -0
  18. package/dist/skills/editframe-composition/references/audio.md +483 -0
  19. package/dist/skills/editframe-composition/references/captions.md +844 -0
  20. package/dist/skills/editframe-composition/references/composition-model.md +73 -0
  21. package/dist/skills/editframe-composition/references/configuration.md +403 -0
  22. package/dist/skills/editframe-composition/references/css-parts.md +105 -0
  23. package/dist/skills/editframe-composition/references/css-variables.md +640 -0
  24. package/dist/skills/editframe-composition/references/entry-points.md +810 -0
  25. package/dist/skills/editframe-composition/references/events.md +499 -0
  26. package/dist/skills/editframe-composition/references/getting-started.md +259 -0
  27. package/dist/skills/editframe-composition/references/hooks.md +234 -0
  28. package/dist/skills/editframe-composition/references/image.md +241 -0
  29. package/dist/skills/editframe-composition/references/r3f.md +580 -0
  30. package/dist/skills/editframe-composition/references/render-api.md +484 -0
  31. package/dist/skills/editframe-composition/references/render-strategies.md +119 -0
  32. package/dist/skills/editframe-composition/references/render-to-video.md +1101 -0
  33. package/dist/skills/editframe-composition/references/scripting.md +606 -0
  34. package/dist/skills/editframe-composition/references/sequencing.md +116 -0
  35. package/dist/skills/editframe-composition/references/server-rendering.md +753 -0
  36. package/dist/skills/editframe-composition/references/surface.md +329 -0
  37. package/dist/skills/editframe-composition/references/text.md +627 -0
  38. package/dist/skills/editframe-composition/references/time-model.md +99 -0
  39. package/dist/skills/editframe-composition/references/timegroup-modes.md +102 -0
  40. package/dist/skills/editframe-composition/references/timegroup.md +457 -0
  41. package/dist/skills/editframe-composition/references/timeline-root.md +398 -0
  42. package/dist/skills/editframe-composition/references/transcription.md +47 -0
  43. package/dist/skills/editframe-composition/references/transitions.md +608 -0
  44. package/dist/skills/editframe-composition/references/use-media-info.md +357 -0
  45. package/dist/skills/editframe-composition/references/video.md +506 -0
  46. package/dist/skills/editframe-composition/references/waveform.md +327 -0
  47. package/dist/skills/editframe-editor-gui/SKILL.md +152 -0
  48. package/dist/skills/editframe-editor-gui/references/active-root-temporal.md +657 -0
  49. package/dist/skills/editframe-editor-gui/references/canvas.md +947 -0
  50. package/dist/skills/editframe-editor-gui/references/controls.md +366 -0
  51. package/dist/skills/editframe-editor-gui/references/dial.md +756 -0
  52. package/dist/skills/editframe-editor-gui/references/editor-toolkit.md +587 -0
  53. package/dist/skills/editframe-editor-gui/references/filmstrip.md +460 -0
  54. package/dist/skills/editframe-editor-gui/references/fit-scale.md +772 -0
  55. package/dist/skills/editframe-editor-gui/references/focus-overlay.md +561 -0
  56. package/dist/skills/editframe-editor-gui/references/hierarchy.md +544 -0
  57. package/dist/skills/editframe-editor-gui/references/overlay-item.md +634 -0
  58. package/dist/skills/editframe-editor-gui/references/overlay-layer.md +429 -0
  59. package/dist/skills/editframe-editor-gui/references/pan-zoom.md +568 -0
  60. package/dist/skills/editframe-editor-gui/references/pause.md +397 -0
  61. package/dist/skills/editframe-editor-gui/references/play.md +370 -0
  62. package/dist/skills/editframe-editor-gui/references/preview.md +391 -0
  63. package/dist/skills/editframe-editor-gui/references/resizable-box.md +749 -0
  64. package/dist/skills/editframe-editor-gui/references/scrubber.md +588 -0
  65. package/dist/skills/editframe-editor-gui/references/thumbnail-strip.md +566 -0
  66. package/dist/skills/editframe-editor-gui/references/time-display.md +492 -0
  67. package/dist/skills/editframe-editor-gui/references/timeline-ruler.md +489 -0
  68. package/dist/skills/editframe-editor-gui/references/timeline.md +604 -0
  69. package/dist/skills/editframe-editor-gui/references/toggle-loop.md +618 -0
  70. package/dist/skills/editframe-editor-gui/references/toggle-play.md +526 -0
  71. package/dist/skills/editframe-editor-gui/references/transform-handles.md +924 -0
  72. package/dist/skills/editframe-editor-gui/references/trim-handles.md +725 -0
  73. package/dist/skills/editframe-editor-gui/references/workbench.md +453 -0
  74. package/dist/skills/editframe-motion-design/SKILL.md +101 -0
  75. package/dist/skills/editframe-motion-design/references/0-editframe.md +299 -0
  76. package/dist/skills/editframe-motion-design/references/1-intent.md +201 -0
  77. package/dist/skills/editframe-motion-design/references/2-physics-model.md +405 -0
  78. package/dist/skills/editframe-motion-design/references/3-attention.md +350 -0
  79. package/dist/skills/editframe-motion-design/references/4-process.md +418 -0
  80. package/dist/skills/editframe-vite-plugin/SKILL.md +75 -0
  81. package/dist/skills/editframe-vite-plugin/references/file-api.md +111 -0
  82. package/dist/skills/editframe-vite-plugin/references/getting-started.md +96 -0
  83. package/dist/skills/editframe-vite-plugin/references/jit-transcoding.md +91 -0
  84. package/dist/skills/editframe-vite-plugin/references/local-assets.md +75 -0
  85. package/dist/skills/editframe-vite-plugin/references/visual-testing.md +136 -0
  86. package/dist/skills/editframe-webhooks/SKILL.md +126 -0
  87. package/dist/skills/editframe-webhooks/references/events.md +382 -0
  88. package/dist/skills/editframe-webhooks/references/getting-started.md +232 -0
  89. package/dist/skills/editframe-webhooks/references/security.md +418 -0
  90. package/dist/skills/editframe-webhooks/references/testing.md +409 -0
  91. package/dist/skills/editframe-webhooks/references/troubleshooting.md +457 -0
  92. package/dist/templates/html/AGENTS.md +13 -0
  93. package/dist/templates/react/AGENTS.md +13 -0
  94. package/dist/utils.js +15 -16
  95. package/dist/utils.js.map +1 -1
  96. package/package.json +2 -2
  97. package/tsdown.config.ts +4 -0
  98. package/dist/detectAgent.js +0 -89
  99. package/dist/detectAgent.js.map +0 -1
@@ -0,0 +1,366 @@
1
+ ---
2
+ title: Controls Element
3
+ description: Context bridge that routes playback control actions to non-ancestor timeline elements in complex, nested editor layouts.
4
+ type: reference
5
+ nav:
6
+ parent: "Playback Controls"
7
+ priority: 10
8
+ api:
9
+ attributes:
10
+ - name: target
11
+ type: string
12
+ required: true
13
+ description: ID of the target element to control
14
+ react:
15
+ generate: true
16
+ componentName: Controls
17
+ importPath: "@editframe/react"
18
+ additionalProps:
19
+ - name: className
20
+ type: string
21
+ description: CSS classes for styling
22
+ nav:
23
+ parent: "Tools"
24
+ priority: 41
25
+ related: ["preview", "workbench"]
26
+ ---
27
+
28
+ <!-- html-only -->
29
+ # ef-controls
30
+ <!-- /html-only -->
31
+ <!-- react-only -->
32
+ # Controls
33
+ <!-- /react-only -->
34
+
35
+ <!-- html-only -->
36
+ Bridges playback contexts from a target element to its children, enabling controls that don't share a common ancestor with the composition.
37
+ <!-- /html-only -->
38
+ <!-- react-only -->
39
+ Playback controls for timeline navigation.
40
+ <!-- /react-only -->
41
+
42
+ <!-- react-only -->
43
+ ## Import
44
+
45
+ ```tsx
46
+ import { Controls } from "@editframe/react";
47
+ ```
48
+
49
+ ## Individual Control Components
50
+
51
+ ```tsx
52
+ import {
53
+ Play,
54
+ Pause,
55
+ TogglePlay,
56
+ ToggleLoop,
57
+ Scrubber,
58
+ TimeDisplay,
59
+ } from "@editframe/react";
60
+ ```
61
+ <!-- /react-only -->
62
+
63
+ ## Basic Usage
64
+
65
+ <!-- html-only -->
66
+ Control a composition from outside its DOM tree:
67
+
68
+ ```html
69
+ <ef-timegroup id="my-composition" mode="sequence" class="w-[720px] h-[480px] bg-black">
70
+ <ef-video src="https://assets.editframe.com/bars-n-tone.mp4" class="size-full object-contain"></ef-video>
71
+ </ef-timegroup>
72
+
73
+ <ef-controls target="my-composition" class="flex gap-2 mt-4">
74
+ <ef-toggle-play>
75
+ <button slot="play" class="px-4 py-2 bg-blue-600 text-white rounded">Play</button>
76
+ <button slot="pause" class="px-4 py-2 bg-gray-600 text-white rounded">Pause</button>
77
+ </ef-toggle-play>
78
+ <ef-time-display class="text-gray-300"></ef-time-display>
79
+ </ef-controls>
80
+ ```
81
+ <!-- /html-only -->
82
+ <!-- react-only -->
83
+ ```tsx
84
+ import { Controls, Preview } from "@editframe/react";
85
+
86
+ <div className="flex flex-col">
87
+ <Preview className="w-full h-[600px]" />
88
+ <Controls className="w-full bg-gray-800 p-2" />
89
+ </div>
90
+ ```
91
+ <!-- /react-only -->
92
+
93
+ <!-- html-only -->
94
+ ## Context Bridging
95
+
96
+ `ef-controls` provides these contexts to its children:
97
+
98
+ - **playing** - Current playback state (boolean)
99
+ - **loop** - Loop state (boolean)
100
+ - **currentTimeMs** - Current playhead position (number)
101
+ - **durationMs** - Total duration (number)
102
+ - **targetTemporal** - Reference to the controlled element
103
+ - **focusedElement** - Currently focused element
104
+
105
+ Child elements like `ef-play`, `ef-pause`, `ef-toggle-play`, `ef-scrubber`, and `ef-time-display` automatically consume these contexts.
106
+
107
+ ## Non-Adjacent Controls
108
+
109
+ Use `ef-controls` when your playback controls are not descendants of the composition:
110
+
111
+ ```html
112
+ <!-- Composition in one part of the page -->
113
+ <div class="video-area">
114
+ <ef-timegroup id="video-player" mode="contain" class="w-full aspect-video">
115
+ <ef-video src="video.mp4" class="size-full"></ef-video>
116
+ </ef-timegroup>
117
+ </div>
118
+
119
+ <!-- Controls in a fixed toolbar -->
120
+ <div class="fixed bottom-0 left-0 right-0 bg-black p-4">
121
+ <ef-controls target="video-player" class="flex justify-center gap-4">
122
+ <ef-toggle-play>
123
+ <button slot="play">▶</button>
124
+ <button slot="pause">⏸</button>
125
+ </ef-toggle-play>
126
+ <ef-scrubber class="flex-1"></ef-scrubber>
127
+ <ef-time-display></ef-time-display>
128
+ </ef-controls>
129
+ </div>
130
+ ```
131
+
132
+ ## Target Types
133
+
134
+ `ef-controls` supports targeting:
135
+
136
+ - **ef-timegroup** - Control a composition directly
137
+ - **ef-video** - Control a single video element
138
+ - **ef-audio** - Control a single audio element
139
+ - **ef-preview** - Control via preview's context (if preview wraps the target)
140
+
141
+ ## Multiple Control Sets
142
+
143
+ Multiple `ef-controls` elements can target the same composition:
144
+
145
+ ```html
146
+ <ef-timegroup id="main" mode="contain">
147
+ <!-- composition -->
148
+ </ef-timegroup>
149
+
150
+ <!-- Desktop controls -->
151
+ <ef-controls target="main" class="desktop-only">
152
+ <ef-toggle-play>
153
+ <button slot="play">Play</button>
154
+ <button slot="pause">Pause</button>
155
+ </ef-toggle-play>
156
+ </ef-controls>
157
+
158
+ <!-- Mobile controls -->
159
+ <ef-controls target="main" class="mobile-only">
160
+ <ef-toggle-play>
161
+ <button slot="play">▶</button>
162
+ <button slot="pause">⏸</button>
163
+ </ef-toggle-play>
164
+ </ef-controls>
165
+ ```
166
+
167
+ ## Without ef-controls
168
+
169
+ If controls are direct descendants of a timegroup, you don't need `ef-controls`:
170
+
171
+ ```html
172
+ <ef-timegroup mode="contain">
173
+ <ef-video src="video.mp4"></ef-video>
174
+
175
+ <!-- These controls work without ef-controls because they're descendants -->
176
+ <div class="absolute bottom-4 left-4 flex gap-2">
177
+ <ef-toggle-play>
178
+ <button slot="play">Play</button>
179
+ <button slot="pause">Pause</button>
180
+ </ef-toggle-play>
181
+ </div>
182
+ </ef-timegroup>
183
+ ```
184
+
185
+ Use `ef-controls` when the target is **not** an ancestor of the control elements.
186
+ <!-- /html-only -->
187
+
188
+ <!-- react-only -->
189
+ ## Individual Controls
190
+
191
+ Build custom control layouts:
192
+
193
+ ```tsx
194
+ import { TogglePlay, ToggleLoop, Scrubber, TimeDisplay } from "@editframe/react";
195
+
196
+ <div className="flex items-center gap-4 bg-gray-800 p-4">
197
+ <TogglePlay className="w-10 h-10" />
198
+ <TimeDisplay className="text-white text-sm font-mono" />
199
+ <Scrubber className="flex-1" />
200
+ <ToggleLoop className="w-10 h-10" />
201
+ </div>
202
+ ```
203
+
204
+ ## Styled Controls
205
+
206
+ ```tsx
207
+ <div className="flex items-center gap-3 bg-gradient-to-r from-slate-800 to-slate-900 p-4 rounded-lg shadow-lg">
208
+ <TogglePlay className="text-white hover:text-blue-400 transition" />
209
+ <Scrubber className="flex-1 h-2" />
210
+ <TimeDisplay className="text-white text-xs font-mono bg-black/30 px-2 py-1 rounded" />
211
+ <ToggleLoop className="text-white hover:text-green-400 transition" />
212
+ </div>
213
+ ```
214
+
215
+ ## Full Editor Controls
216
+
217
+ ```tsx
218
+ import {
219
+ Preview,
220
+ TogglePlay,
221
+ ToggleLoop,
222
+ Scrubber,
223
+ TimeDisplay
224
+ } from "@editframe/react";
225
+
226
+ export const VideoEditor = () => {
227
+ return (
228
+ <div className="h-screen flex flex-col bg-gray-900">
229
+ {/* Preview */}
230
+ <div className="flex-1 flex items-center justify-center p-8">
231
+ <Preview className="w-full max-w-[1280px] aspect-video bg-black rounded-lg" />
232
+ </div>
233
+
234
+ {/* Controls Bar */}
235
+ <div className="bg-gray-800 border-t border-gray-700">
236
+ <div className="flex items-center gap-4 px-6 py-3">
237
+ {/* Play/Pause */}
238
+ <TogglePlay className="w-8 h-8 text-white hover:text-blue-400" />
239
+
240
+ {/* Time Display */}
241
+ <TimeDisplay className="text-white text-sm font-mono min-w-[120px]" />
242
+
243
+ {/* Scrubber */}
244
+ <div className="flex-1">
245
+ <Scrubber className="w-full h-2" />
246
+ </div>
247
+
248
+ {/* Loop Toggle */}
249
+ <ToggleLoop className="w-8 h-8 text-white hover:text-green-400" />
250
+ </div>
251
+ </div>
252
+ </div>
253
+ );
254
+ };
255
+ ```
256
+
257
+ ## Minimal Controls
258
+
259
+ ```tsx
260
+ <div className="flex items-center gap-2 p-2 bg-black/80 rounded">
261
+ <TogglePlay className="w-6 h-6 text-white" />
262
+ <Scrubber className="flex-1" />
263
+ </div>
264
+ ```
265
+
266
+ ## Scrubber Component
267
+
268
+ The timeline scrubber for seeking:
269
+
270
+ ```tsx
271
+ import { Scrubber } from "@editframe/react";
272
+
273
+ <Scrubber
274
+ className="w-full h-2 bg-gray-700 rounded cursor-pointer"
275
+ />
276
+ ```
277
+
278
+ ### CSS Custom Properties
279
+
280
+ | Property | Default | Description |
281
+ |----------|---------|-------------|
282
+ | `--ef-scrubber-height` | `4px` | Track height |
283
+ | `--ef-scrubber-background` | `rgba(255, 255, 255, 0.2)` | Track background color |
284
+ | `--ef-scrubber-progress-color` | `#fff` | Progress bar and handle color |
285
+ | `--ef-scrubber-handle-size` | `12px` | Handle diameter |
286
+
287
+ ### CSS Shadow Parts
288
+
289
+ Style internal elements from the outside using `::part()`:
290
+
291
+ | Part | Description |
292
+ |------|-------------|
293
+ | `scrubber` | The track container |
294
+ | `progress` | The filled progress bar |
295
+ | `handle` | The draggable seek handle |
296
+
297
+ ```tsx
298
+ <Scrubber
299
+ className={`
300
+ w-full h-1.5 bg-white/20 rounded-full cursor-pointer
301
+ [&::part(progress)]:bg-red-500
302
+ [&::part(progress)]:rounded-full
303
+ [&::part(handle)]:bg-white
304
+ [&::part(handle)]:w-3
305
+ [&::part(handle)]:h-3
306
+ [&::part(handle)]:rounded-full
307
+ `}
308
+ />
309
+ ```
310
+
311
+ ## TimeDisplay Component
312
+
313
+ Shows current time and duration:
314
+
315
+ ```tsx
316
+ import { TimeDisplay } from "@editframe/react";
317
+
318
+ <TimeDisplay className="text-white text-sm font-mono" />
319
+ // Displays: "00:05 / 00:30"
320
+ ```
321
+
322
+ ## TogglePlay Component
323
+
324
+ Play/pause button:
325
+
326
+ ```tsx
327
+ import { TogglePlay } from "@editframe/react";
328
+
329
+ <TogglePlay className="w-10 h-10 text-white hover:text-blue-400" />
330
+ ```
331
+
332
+ ## ToggleLoop Component
333
+
334
+ Enable/disable looping:
335
+
336
+ ```tsx
337
+ import { ToggleLoop } from "@editframe/react";
338
+
339
+ <ToggleLoop className="w-10 h-10 text-white hover:text-green-400" />
340
+ ```
341
+
342
+ ## Custom Control Bar
343
+
344
+ ```tsx
345
+ const CustomControls = () => {
346
+ return (
347
+ <div className="fixed bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-6">
348
+ <div className="max-w-4xl mx-auto">
349
+ {/* Scrubber on top */}
350
+ <Scrubber className="w-full h-1 mb-4" />
351
+
352
+ {/* Buttons below */}
353
+ <div className="flex items-center justify-between">
354
+ <div className="flex items-center gap-4">
355
+ <TogglePlay className="w-12 h-12 text-white" />
356
+ <TimeDisplay className="text-white text-lg font-mono" />
357
+ </div>
358
+
359
+ <ToggleLoop className="w-10 h-10 text-white" />
360
+ </div>
361
+ </div>
362
+ </div>
363
+ );
364
+ };
365
+ ```
366
+ <!-- /react-only -->