Measured entry
fancy-drag-elements
hover-effectspatialmotion on file
A client-side React wrapper that turns each child into an absolutely positioned, freely draggable Motion element inside a constrained container. It ships as a shadcn registry TypeScript file, depends on Motion for gestures and inertia, and assumes utility classes for sizing and positioning.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 0 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 58.1 KB (123.5 KB build, 65.4 KB baseline) |
| Bare mode | OK |
| Provider required | NO |
| Demo used | written from the component source API |
Verdict
A focused free-drag primitive with sensible containment and stacking controls. It builds and mounts cleanly without framework scaffolding, but it leaves positioning, persistence, keyboard interaction, and semantic reordering to the host application.
Use it if
- You are building a moodboard, playful canvas, or spatial cluster where items can be moved freely.
- You want optional momentum, elastic dragging, containment, and bring-to-front behavior behind a small API.
- Your parent layout can provide explicit space for absolutely positioned children.
Skip it if
- You need a sortable list that updates order, persists positions, or emits drag results.
- Keyboard users must be able to perform the same rearrangement without a pointer.
- Children need to remain in normal document flow or must not begin from the same origin.
- Adding Motion is too much dependency weight for a minor decorative interaction.
Install
| Declared dependencies | motion |
|---|---|
| Missing on install | none |
| Bare install | builds and mounts without the shadcn-style helpers |
| Provider | no provider required in the harness |
Install Motion, copy the client component into the project, and provide equivalents for its relative, full-size, and absolute utility classes if Tailwind is unavailable. Give the container a defined size, set initial child placement as needed, and add keyboard controls plus state persistence when dragging changes meaningful data.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/danielpetho/fancyAlternatives
Other published entries for the hover-effect pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- eldora-card-flip-hover3d
- Renders
- YES
- A11y
- 0
- Gzip
- 17.5KB
- Bare
- pass
- Prov
- NO
- uilayouts-btn-hover-left-flip3d
- Renders
- YES
- A11y
- 0
- Gzip
- 17.5KB
- Bare
- pass
- Prov
- NO
- uilayouts-btn-hover-down3d
- Renders
- YES
- A11y
- 0
- Gzip
- 17.6KB
- Bare
- pass
- Prov
- NO
- uilayouts-btn-hover-multiplegradient-glow
- Renders
- YES
- A11y
- 0
- Gzip
- 17.9KB
- Bare
- pass
- Prov
- NO
- magicui-cool-modespatial
- Renders
- YES
- A11y
- 0
- Gzip
- 21.8KB
- Bare
- pass
- Prov
- NO
- uilayouts-hovercard2gradient-glow
- Renders
- YES
- A11y
- 0
- Gzip
- 24.0KB
- Bare
- pass
- Prov
- NO