x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2"> <div data-controller="midwest-motion" data-midwest-motion-threshold-value="0.15" data-midwest-motion-once-value="true" class="midwest-motion motion-slide motion-blur from-up trigger-reveal"> <article data-controller="midwest-card" class="midwest-card"> <div class="wrap"> <section> <h4>Slide + blur</h4> <p><code>animation: [:slide, :blur]</code></p> </section> </div> </article> </div> <div data-controller="midwest-motion" data-midwest-motion-threshold-value="0.15" data-midwest-motion-once-value="true" class="midwest-motion motion-scale motion-blur from-up trigger-reveal"> <article data-controller="midwest-card" class="midwest-card"> <div class="wrap"> <section> <h4>Scale + blur</h4> <p><code>animation: [:scale, :blur]</code></p> </section> </div> </article> </div> <div data-controller="midwest-motion" data-midwest-motion-threshold-value="0.15" data-midwest-motion-once-value="true" class="midwest-motion motion-slide motion-scale from-left trigger-reveal"> <article data-controller="midwest-card" class="midwest-card"> <div class="wrap"> <section> <h4>Slide + scale</h4> <p><code>animation: [:slide, :scale]</code></p> </section> </div> </article> </div> <div data-controller="midwest-motion" data-midwest-motion-threshold-value="0.15" data-midwest-motion-once-value="true" class="midwest-motion motion-rotate motion-scale motion-blur from-up trigger-reveal"> <article data-controller="midwest-card" class="midwest-card"> <div class="wrap"> <section> <h4>Rotate + scale + blur</h4> <p><code>animation: [:rotate, :scale, :blur]</code></p> </section> </div> </article> </div></div>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2"> <%= midwest_motion(animation: %i[slide blur], direction: :up) do %> <%= midwest_card do %> <h4>Slide + blur</h4> <p><code>animation: [:slide, :blur]</code></p> <% end %> <% end %> <%= midwest_motion(animation: %i[scale blur]) do %> <%= midwest_card do %> <h4>Scale + blur</h4> <p><code>animation: [:scale, :blur]</code></p> <% end %> <% end %> <%= midwest_motion(animation: %i[slide scale], direction: :left) do %> <%= midwest_card do %> <h4>Slide + scale</h4> <p><code>animation: [:slide, :scale]</code></p> <% end %> <% end %> <%= midwest_motion(animation: %i[rotate scale blur]) do %> <%= midwest_card do %> <h4>Rotate + scale + blur</h4> <p><code>animation: [:rotate, :scale, :blur]</code></p> <% end %> <% end %></div>Compound
Pass animation: an array to layer primitives. Each drives an independent
CSS property (opacity, translate/scale/rotate, filter), so they
combine cleanly — e.g. [:slide, :blur] slides up while sharpening.
No params configured.
No assets to display.
Add a .js or .css file alongside the component to see it here.
Figma embed for Motion/compound
Annotate a preview to embed its Figma design here:
@figma "https://figma.com/..."