@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.
- package/dist/index.js +16 -28
- package/dist/index.js.map +1 -1
- package/dist/skills/editframe-brand-video-generator/README.md +155 -0
- package/dist/skills/editframe-brand-video-generator/SKILL.md +207 -0
- package/dist/skills/editframe-brand-video-generator/references/brand-examples.md +178 -0
- package/dist/skills/editframe-brand-video-generator/references/color-psychology.md +227 -0
- package/dist/skills/editframe-brand-video-generator/references/composition-patterns.md +383 -0
- package/dist/skills/editframe-brand-video-generator/references/editing.md +66 -0
- package/dist/skills/editframe-brand-video-generator/references/emotional-arcs.md +496 -0
- package/dist/skills/editframe-brand-video-generator/references/genre-selection.md +135 -0
- package/dist/skills/editframe-brand-video-generator/references/transition-styles.md +611 -0
- package/dist/skills/editframe-brand-video-generator/references/typography-personalities.md +326 -0
- package/dist/skills/editframe-brand-video-generator/references/video-archetypes.md +86 -0
- package/dist/skills/editframe-brand-video-generator/references/video-fundamentals.md +169 -0
- package/dist/skills/editframe-brand-video-generator/references/visual-metaphors.md +50 -0
- package/dist/skills/editframe-composition/SKILL.md +169 -0
- package/dist/skills/editframe-composition/references/audio.md +483 -0
- package/dist/skills/editframe-composition/references/captions.md +844 -0
- package/dist/skills/editframe-composition/references/composition-model.md +73 -0
- package/dist/skills/editframe-composition/references/configuration.md +403 -0
- package/dist/skills/editframe-composition/references/css-parts.md +105 -0
- package/dist/skills/editframe-composition/references/css-variables.md +640 -0
- package/dist/skills/editframe-composition/references/entry-points.md +810 -0
- package/dist/skills/editframe-composition/references/events.md +499 -0
- package/dist/skills/editframe-composition/references/getting-started.md +259 -0
- package/dist/skills/editframe-composition/references/hooks.md +234 -0
- package/dist/skills/editframe-composition/references/image.md +241 -0
- package/dist/skills/editframe-composition/references/r3f.md +580 -0
- package/dist/skills/editframe-composition/references/render-api.md +484 -0
- package/dist/skills/editframe-composition/references/render-strategies.md +119 -0
- package/dist/skills/editframe-composition/references/render-to-video.md +1101 -0
- package/dist/skills/editframe-composition/references/scripting.md +606 -0
- package/dist/skills/editframe-composition/references/sequencing.md +116 -0
- package/dist/skills/editframe-composition/references/server-rendering.md +753 -0
- package/dist/skills/editframe-composition/references/surface.md +329 -0
- package/dist/skills/editframe-composition/references/text.md +627 -0
- package/dist/skills/editframe-composition/references/time-model.md +99 -0
- package/dist/skills/editframe-composition/references/timegroup-modes.md +102 -0
- package/dist/skills/editframe-composition/references/timegroup.md +457 -0
- package/dist/skills/editframe-composition/references/timeline-root.md +398 -0
- package/dist/skills/editframe-composition/references/transcription.md +47 -0
- package/dist/skills/editframe-composition/references/transitions.md +608 -0
- package/dist/skills/editframe-composition/references/use-media-info.md +357 -0
- package/dist/skills/editframe-composition/references/video.md +506 -0
- package/dist/skills/editframe-composition/references/waveform.md +327 -0
- package/dist/skills/editframe-editor-gui/SKILL.md +152 -0
- package/dist/skills/editframe-editor-gui/references/active-root-temporal.md +657 -0
- package/dist/skills/editframe-editor-gui/references/canvas.md +947 -0
- package/dist/skills/editframe-editor-gui/references/controls.md +366 -0
- package/dist/skills/editframe-editor-gui/references/dial.md +756 -0
- package/dist/skills/editframe-editor-gui/references/editor-toolkit.md +587 -0
- package/dist/skills/editframe-editor-gui/references/filmstrip.md +460 -0
- package/dist/skills/editframe-editor-gui/references/fit-scale.md +772 -0
- package/dist/skills/editframe-editor-gui/references/focus-overlay.md +561 -0
- package/dist/skills/editframe-editor-gui/references/hierarchy.md +544 -0
- package/dist/skills/editframe-editor-gui/references/overlay-item.md +634 -0
- package/dist/skills/editframe-editor-gui/references/overlay-layer.md +429 -0
- package/dist/skills/editframe-editor-gui/references/pan-zoom.md +568 -0
- package/dist/skills/editframe-editor-gui/references/pause.md +397 -0
- package/dist/skills/editframe-editor-gui/references/play.md +370 -0
- package/dist/skills/editframe-editor-gui/references/preview.md +391 -0
- package/dist/skills/editframe-editor-gui/references/resizable-box.md +749 -0
- package/dist/skills/editframe-editor-gui/references/scrubber.md +588 -0
- package/dist/skills/editframe-editor-gui/references/thumbnail-strip.md +566 -0
- package/dist/skills/editframe-editor-gui/references/time-display.md +492 -0
- package/dist/skills/editframe-editor-gui/references/timeline-ruler.md +489 -0
- package/dist/skills/editframe-editor-gui/references/timeline.md +604 -0
- package/dist/skills/editframe-editor-gui/references/toggle-loop.md +618 -0
- package/dist/skills/editframe-editor-gui/references/toggle-play.md +526 -0
- package/dist/skills/editframe-editor-gui/references/transform-handles.md +924 -0
- package/dist/skills/editframe-editor-gui/references/trim-handles.md +725 -0
- package/dist/skills/editframe-editor-gui/references/workbench.md +453 -0
- package/dist/skills/editframe-motion-design/SKILL.md +101 -0
- package/dist/skills/editframe-motion-design/references/0-editframe.md +299 -0
- package/dist/skills/editframe-motion-design/references/1-intent.md +201 -0
- package/dist/skills/editframe-motion-design/references/2-physics-model.md +405 -0
- package/dist/skills/editframe-motion-design/references/3-attention.md +350 -0
- package/dist/skills/editframe-motion-design/references/4-process.md +418 -0
- package/dist/skills/editframe-vite-plugin/SKILL.md +75 -0
- package/dist/skills/editframe-vite-plugin/references/file-api.md +111 -0
- package/dist/skills/editframe-vite-plugin/references/getting-started.md +96 -0
- package/dist/skills/editframe-vite-plugin/references/jit-transcoding.md +91 -0
- package/dist/skills/editframe-vite-plugin/references/local-assets.md +75 -0
- package/dist/skills/editframe-vite-plugin/references/visual-testing.md +136 -0
- package/dist/skills/editframe-webhooks/SKILL.md +126 -0
- package/dist/skills/editframe-webhooks/references/events.md +382 -0
- package/dist/skills/editframe-webhooks/references/getting-started.md +232 -0
- package/dist/skills/editframe-webhooks/references/security.md +418 -0
- package/dist/skills/editframe-webhooks/references/testing.md +409 -0
- package/dist/skills/editframe-webhooks/references/troubleshooting.md +457 -0
- package/dist/templates/html/AGENTS.md +13 -0
- package/dist/templates/react/AGENTS.md +13 -0
- package/dist/utils.js +15 -16
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/tsdown.config.ts +4 -0
- package/dist/detectAgent.js +0 -89
- package/dist/detectAgent.js.map +0 -1
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Surface Element
|
|
3
|
+
description: Mirror or duplicate another element's canvas output into a new position, useful for picture-in-picture and reflection effects.
|
|
4
|
+
type: reference
|
|
5
|
+
nav:
|
|
6
|
+
parent: "Layout & Timing"
|
|
7
|
+
priority: 20
|
|
8
|
+
related: ["timegroup"]
|
|
9
|
+
api:
|
|
10
|
+
attributes:
|
|
11
|
+
- name: target
|
|
12
|
+
type: string
|
|
13
|
+
required: true
|
|
14
|
+
description: ID of element to mirror (e.g., ef-video)
|
|
15
|
+
react:
|
|
16
|
+
generate: true
|
|
17
|
+
componentName: Surface
|
|
18
|
+
importPath: "@editframe/react"
|
|
19
|
+
additionalProps:
|
|
20
|
+
- name: className
|
|
21
|
+
type: string
|
|
22
|
+
description: CSS classes for styling
|
|
23
|
+
nav:
|
|
24
|
+
parent: "Components / Layout"
|
|
25
|
+
priority: 21
|
|
26
|
+
related: ["timegroup"]
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
<!-- html-only -->
|
|
30
|
+
# ef-surface
|
|
31
|
+
<!-- /html-only -->
|
|
32
|
+
<!-- react-only -->
|
|
33
|
+
# Surface
|
|
34
|
+
<!-- /react-only -->
|
|
35
|
+
|
|
36
|
+
Mirror/duplicate of another element's canvas output.
|
|
37
|
+
|
|
38
|
+
<!-- react-only -->
|
|
39
|
+
## Import
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { Surface } from "@editframe/react";
|
|
43
|
+
```
|
|
44
|
+
<!-- /react-only -->
|
|
45
|
+
|
|
46
|
+
## Basic Usage
|
|
47
|
+
|
|
48
|
+
<!-- html-only -->
|
|
49
|
+
```html
|
|
50
|
+
<ef-video id="main-video" src="video.mp4" class="size-full"></ef-video>
|
|
51
|
+
<ef-surface target="main-video" class="absolute top-4 right-4 w-32 h-20 rounded-lg"></ef-surface>
|
|
52
|
+
```
|
|
53
|
+
<!-- /html-only -->
|
|
54
|
+
<!-- react-only -->
|
|
55
|
+
```tsx
|
|
56
|
+
import { Text, Surface } from "@editframe/react";
|
|
57
|
+
|
|
58
|
+
<Timegroup mode="fixed" duration="5s" className="absolute w-full h-full">
|
|
59
|
+
<Text id="title" duration="5s" className="text-white text-4xl">
|
|
60
|
+
Original Text
|
|
61
|
+
</Text>
|
|
62
|
+
|
|
63
|
+
<Surface
|
|
64
|
+
for="title"
|
|
65
|
+
className="absolute top-32 blur-sm opacity-50"
|
|
66
|
+
/>
|
|
67
|
+
</Timegroup>
|
|
68
|
+
```
|
|
69
|
+
<!-- /react-only -->
|
|
70
|
+
|
|
71
|
+
## Picture-in-Picture Effect
|
|
72
|
+
|
|
73
|
+
<!-- html-only -->
|
|
74
|
+
Mirror video in a small preview corner.
|
|
75
|
+
|
|
76
|
+
```html live
|
|
77
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] bg-black">
|
|
78
|
+
<ef-video id="main" src="https://assets.editframe.com/bars-n-tone.mp4" class="size-full object-cover"></ef-video>
|
|
79
|
+
|
|
80
|
+
<!-- PiP using surface -->
|
|
81
|
+
<ef-surface target="main" class="absolute bottom-4 right-4 w-48 h-28 rounded-lg border-2 border-white shadow-lg"></ef-surface>
|
|
82
|
+
</ef-timegroup>
|
|
83
|
+
```
|
|
84
|
+
<!-- /html-only -->
|
|
85
|
+
<!-- react-only -->
|
|
86
|
+
```tsx
|
|
87
|
+
import { Video, Surface } from "@editframe/react";
|
|
88
|
+
|
|
89
|
+
<Timegroup mode="contain" className="absolute w-full h-full">
|
|
90
|
+
{/* Main video */}
|
|
91
|
+
<Video
|
|
92
|
+
id="main"
|
|
93
|
+
src="/assets/main.mp4"
|
|
94
|
+
className="size-full object-cover"
|
|
95
|
+
/>
|
|
96
|
+
|
|
97
|
+
{/* PiP using surface */}
|
|
98
|
+
<Surface
|
|
99
|
+
for="main"
|
|
100
|
+
className="absolute bottom-4 right-4 w-64 h-36 border-2 border-white rounded shadow-lg"
|
|
101
|
+
/>
|
|
102
|
+
</Timegroup>
|
|
103
|
+
```
|
|
104
|
+
<!-- /react-only -->
|
|
105
|
+
|
|
106
|
+
## Video Wall Effect
|
|
107
|
+
|
|
108
|
+
<!-- html-only -->
|
|
109
|
+
Create grid layouts with multiple mirrors showing different filters.
|
|
110
|
+
|
|
111
|
+
```html live
|
|
112
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] grid grid-cols-3 grid-rows-3 gap-2 p-4 bg-black">
|
|
113
|
+
<ef-video id="source" src="https://assets.editframe.com/bars-n-tone.mp4" class="col-span-2 row-span-2 object-cover"></ef-video>
|
|
114
|
+
|
|
115
|
+
<!-- Mirror to other grid cells with different effects -->
|
|
116
|
+
<ef-surface target="source" class="object-cover opacity-60"></ef-surface>
|
|
117
|
+
<ef-surface target="source" class="object-cover opacity-40 grayscale"></ef-surface>
|
|
118
|
+
<ef-surface target="source" class="object-cover opacity-60 blur-sm"></ef-surface>
|
|
119
|
+
<ef-surface target="source" class="object-cover opacity-40"></ef-surface>
|
|
120
|
+
<ef-surface target="source" class="object-cover opacity-60 hue-rotate-90"></ef-surface>
|
|
121
|
+
<ef-surface target="source" class="object-cover opacity-40 saturate-0"></ef-surface>
|
|
122
|
+
</ef-timegroup>
|
|
123
|
+
```
|
|
124
|
+
<!-- /html-only -->
|
|
125
|
+
<!-- react-only -->
|
|
126
|
+
```tsx
|
|
127
|
+
import { Video, Surface } from "@editframe/react";
|
|
128
|
+
|
|
129
|
+
<Timegroup mode="contain" className="absolute w-full h-full grid grid-cols-3 grid-rows-3 gap-2 p-4">
|
|
130
|
+
<Video
|
|
131
|
+
id="source"
|
|
132
|
+
src="/assets/video.mp4"
|
|
133
|
+
className="col-span-2 row-span-2 object-cover"
|
|
134
|
+
/>
|
|
135
|
+
|
|
136
|
+
{/* Mirror to other grid cells */}
|
|
137
|
+
<Surface for="source" className="object-cover opacity-60" />
|
|
138
|
+
<Surface for="source" className="object-cover opacity-40 grayscale" />
|
|
139
|
+
<Surface for="source" className="object-cover opacity-60 blur-sm" />
|
|
140
|
+
<Surface for="source" className="object-cover opacity-40" />
|
|
141
|
+
<Surface for="source" className="object-cover opacity-60 hue-rotate-90" />
|
|
142
|
+
<Surface for="source" className="object-cover opacity-40 saturate-0" />
|
|
143
|
+
</Timegroup>
|
|
144
|
+
```
|
|
145
|
+
<!-- /react-only -->
|
|
146
|
+
|
|
147
|
+
## Reflection Effect
|
|
148
|
+
|
|
149
|
+
<!-- html-only -->
|
|
150
|
+
Create mirror reflection with vertical flip and fade.
|
|
151
|
+
|
|
152
|
+
```html live
|
|
153
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] bg-black flex flex-col items-center justify-center">
|
|
154
|
+
<ef-video id="main-video" src="https://assets.editframe.com/bars-n-tone.mp4" class="w-1/2"></ef-video>
|
|
155
|
+
|
|
156
|
+
<!-- Reflection below -->
|
|
157
|
+
<ef-surface target="main-video" class="w-1/2 -scale-y-100 opacity-30 blur-sm" style="margin-top: 1rem;"></ef-surface>
|
|
158
|
+
</ef-timegroup>
|
|
159
|
+
```
|
|
160
|
+
<!-- /html-only -->
|
|
161
|
+
<!-- react-only -->
|
|
162
|
+
```tsx
|
|
163
|
+
import { Video, Surface } from "@editframe/react";
|
|
164
|
+
|
|
165
|
+
<Timegroup mode="contain" className="absolute w-full h-full bg-black flex items-center justify-center">
|
|
166
|
+
<Video
|
|
167
|
+
id="main-video"
|
|
168
|
+
src="/assets/clip.mp4"
|
|
169
|
+
className="w-1/2"
|
|
170
|
+
/>
|
|
171
|
+
|
|
172
|
+
{/* Reflection below */}
|
|
173
|
+
<Surface
|
|
174
|
+
for="main-video"
|
|
175
|
+
className="w-1/2 scale-y-[-1] opacity-30 blur-sm"
|
|
176
|
+
style={{ marginTop: '2rem' }}
|
|
177
|
+
/>
|
|
178
|
+
</Timegroup>
|
|
179
|
+
```
|
|
180
|
+
<!-- /react-only -->
|
|
181
|
+
|
|
182
|
+
## Blurred Background Effect
|
|
183
|
+
|
|
184
|
+
<!-- html-only -->
|
|
185
|
+
Use enlarged, blurred surface behind main video for cinematic look.
|
|
186
|
+
|
|
187
|
+
```html live
|
|
188
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] bg-black">
|
|
189
|
+
<!-- Blurred background fill -->
|
|
190
|
+
<ef-surface target="main-video" class="absolute inset-0 blur-3xl opacity-30 scale-110"></ef-surface>
|
|
191
|
+
|
|
192
|
+
<!-- Main video centered -->
|
|
193
|
+
<ef-video id="main-video" src="https://assets.editframe.com/bars-n-tone.mp4" class="absolute inset-0 w-2/3 h-2/3 m-auto object-contain z-10"></ef-video>
|
|
194
|
+
</ef-timegroup>
|
|
195
|
+
```
|
|
196
|
+
<!-- /html-only -->
|
|
197
|
+
<!-- react-only -->
|
|
198
|
+
```tsx
|
|
199
|
+
import { Image, Surface } from "@editframe/react";
|
|
200
|
+
|
|
201
|
+
<Timegroup mode="fixed" duration="5s" className="absolute w-full h-full">
|
|
202
|
+
{/* Blurred background */}
|
|
203
|
+
<Surface
|
|
204
|
+
for="main-image"
|
|
205
|
+
className="absolute inset-0 blur-2xl opacity-30 scale-110"
|
|
206
|
+
/>
|
|
207
|
+
|
|
208
|
+
{/* Main image */}
|
|
209
|
+
<Image
|
|
210
|
+
id="main-image"
|
|
211
|
+
src="/assets/photo.jpg"
|
|
212
|
+
className="absolute inset-0 w-2/3 h-2/3 m-auto object-contain z-10"
|
|
213
|
+
/>
|
|
214
|
+
</Timegroup>
|
|
215
|
+
```
|
|
216
|
+
<!-- /react-only -->
|
|
217
|
+
|
|
218
|
+
## CSS Filter Effects
|
|
219
|
+
|
|
220
|
+
<!-- html-only -->
|
|
221
|
+
Apply different CSS filters to surfaces while keeping original unchanged.
|
|
222
|
+
|
|
223
|
+
```html live
|
|
224
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] grid grid-cols-2 grid-rows-2 gap-4 p-4 bg-black">
|
|
225
|
+
<!-- Original -->
|
|
226
|
+
<ef-video id="filter-demo" src="https://assets.editframe.com/bars-n-tone.mp4" class="object-cover"></ef-video>
|
|
227
|
+
|
|
228
|
+
<!-- Grayscale -->
|
|
229
|
+
<ef-surface target="filter-demo" class="object-cover grayscale"></ef-surface>
|
|
230
|
+
|
|
231
|
+
<!-- Hue rotate -->
|
|
232
|
+
<ef-surface target="filter-demo" class="object-cover hue-rotate-180"></ef-surface>
|
|
233
|
+
|
|
234
|
+
<!-- Blur + Brightness -->
|
|
235
|
+
<ef-surface target="filter-demo" class="object-cover blur-md brightness-150"></ef-surface>
|
|
236
|
+
</ef-timegroup>
|
|
237
|
+
```
|
|
238
|
+
<!-- /html-only -->
|
|
239
|
+
|
|
240
|
+
## Multiple Shadow Layers
|
|
241
|
+
|
|
242
|
+
<!-- html-only -->
|
|
243
|
+
Stack surfaces with offsets to create depth and shadow effects.
|
|
244
|
+
|
|
245
|
+
```html live
|
|
246
|
+
<ef-timegroup mode="contain" class="w-[720px] h-[480px] bg-black flex items-center justify-center">
|
|
247
|
+
<!-- Shadow layers -->
|
|
248
|
+
<ef-surface target="logo" class="absolute w-32 h-32 blur-md" style="transform: translate(-4px, -4px); filter: hue-rotate(180deg) blur(4px);"></ef-surface>
|
|
249
|
+
<ef-surface target="logo" class="absolute w-32 h-32 blur-md" style="transform: translate(4px, 4px); filter: hue-rotate(90deg) blur(4px);"></ef-surface>
|
|
250
|
+
|
|
251
|
+
<!-- Main image -->
|
|
252
|
+
<ef-image id="logo" src="https://assets.editframe.com/editframe-logo.png" class="w-32 h-32 z-10"></ef-image>
|
|
253
|
+
</ef-timegroup>
|
|
254
|
+
```
|
|
255
|
+
<!-- /html-only -->
|
|
256
|
+
<!-- react-only -->
|
|
257
|
+
```tsx
|
|
258
|
+
import { Image, Surface } from "@editframe/react";
|
|
259
|
+
|
|
260
|
+
<Timegroup mode="fixed" duration="5s" className="absolute w-full h-full">
|
|
261
|
+
<Image
|
|
262
|
+
id="logo"
|
|
263
|
+
src="/assets/logo.png"
|
|
264
|
+
className="absolute top-8 left-8 w-32 h-32"
|
|
265
|
+
/>
|
|
266
|
+
|
|
267
|
+
{/* Blurred background */}
|
|
268
|
+
<Surface
|
|
269
|
+
for="logo"
|
|
270
|
+
className="absolute inset-0 blur-3xl opacity-20 scale-150"
|
|
271
|
+
/>
|
|
272
|
+
|
|
273
|
+
{/* Shadow effect */}
|
|
274
|
+
<Surface
|
|
275
|
+
for="logo"
|
|
276
|
+
className="absolute top-10 left-10 w-32 h-32 blur-md opacity-50"
|
|
277
|
+
/>
|
|
278
|
+
</Timegroup>
|
|
279
|
+
```
|
|
280
|
+
<!-- /react-only -->
|
|
281
|
+
|
|
282
|
+
<!-- react-only -->
|
|
283
|
+
## Animated Text Copies
|
|
284
|
+
|
|
285
|
+
```tsx
|
|
286
|
+
import { Text, Surface } from "@editframe/react";
|
|
287
|
+
|
|
288
|
+
<Timegroup mode="fixed" duration="5s" className="absolute w-full h-full bg-black flex items-center justify-center">
|
|
289
|
+
{/* Original */}
|
|
290
|
+
<Text
|
|
291
|
+
id="title"
|
|
292
|
+
duration="5s"
|
|
293
|
+
className="text-white text-6xl font-bold z-10"
|
|
294
|
+
>
|
|
295
|
+
IMPACT
|
|
296
|
+
</Text>
|
|
297
|
+
|
|
298
|
+
{/* Shadow layers */}
|
|
299
|
+
<Surface
|
|
300
|
+
for="title"
|
|
301
|
+
className="absolute text-red-500 blur-sm"
|
|
302
|
+
style={{ transform: 'translate(-4px, -4px)' }}
|
|
303
|
+
/>
|
|
304
|
+
<Surface
|
|
305
|
+
for="title"
|
|
306
|
+
className="absolute text-blue-500 blur-sm"
|
|
307
|
+
style={{ transform: 'translate(4px, 4px)' }}
|
|
308
|
+
/>
|
|
309
|
+
</Timegroup>
|
|
310
|
+
```
|
|
311
|
+
<!-- /react-only -->
|
|
312
|
+
|
|
313
|
+
## Use Cases
|
|
314
|
+
|
|
315
|
+
- **Picture-in-picture** -- Show same source in preview corner
|
|
316
|
+
- **Video walls** -- Grid layouts with multiple mirrors
|
|
317
|
+
- **Reflections** -- Flip and fade for water/glass effects
|
|
318
|
+
- **Backgrounds** -- Blurred enlarged version behind content
|
|
319
|
+
- **Filter effects** -- Apply CSS filters to surfaces independently
|
|
320
|
+
- **Shadow layers** -- Stack offset surfaces for depth
|
|
321
|
+
|
|
322
|
+
<!-- react-only -->
|
|
323
|
+
## Important Notes
|
|
324
|
+
|
|
325
|
+
- The `for` prop must match the `id` of another element
|
|
326
|
+
- Surface elements mirror content in real-time
|
|
327
|
+
- Surfaces don't affect performance significantly
|
|
328
|
+
- Use transforms and filters for creative effects
|
|
329
|
+
<!-- /react-only -->
|