Measured entry
ruixen-glass-image-editor
imageliquid-glassmotion on file
A client-side React image picker and preview shell with drag-and-drop loading, thumbnails, zoom, pan, rotation, removal, and optional click sounds. It ships as one registry component with embedded styles and SVG icons, and depends on Motion plus browser FileReader and Web Audio APIs.



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 | 65.3 KB (130.8 KB build, 65.5 KB baseline) |
| Bare mode | OK |
| Provider required | NO |
| Demo used | written from the component source API |
Verdict
A credible, dependency-light picker and preview shell that builds and mounts without shadcn infrastructure. Treat it as interaction polish, not an image processor. The wide capture was classified as blank despite the initial upload state, so verify that presentation in your own layout before shipping.
Use it if
- You need a compact local-image preview flow with drag-and-drop and multi-image selection.
- Your interface needs lightweight zoom, pan, rotation, and removal before another step handles the files.
- You want a composable React component whose drop zone, canvas, strip, and toolbar can be arranged separately.
Skip it if
- You need real image output such as cropping, resizing, compression, filters, or exporting edits.
- You must persist transformed files, because rotation, zoom, and pan only affect the on-screen preview.
- Your upload surface must be keyboard-operable without modification, since the clickable drop zone is not exposed as a button.
- You cannot accept loading selected files into memory as data URLs.
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 |
Copy the client component into your React app, install Motion, and keep it in a browser-rendered boundary with FileReader available. Its styles and icons are embedded. Disable the sound option if Web Audio clicks are unwanted, then wire onChange into your own upload or persistence flow.
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/ruixenui/ruixen.comAlternatives
Other published entries for the image pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- magicui-androidskeuomorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 17.8KB
- Bare
- pass
- Prov
- NO
- magicui-iphoneskeuomorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.5KB
- Bare
- pass
- Prov
- NO
- magicui-safariskeuomorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 20.8KB
- Bare
- pass
- Prov
- NO
- kibo-image-zoomminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 36.6KB
- Bare
- pass
- Prov
- NO
- ruixen-scroll-tilted-gridunclassified
- Renders
- YES
- A11y
- 0
- Gzip
- 60.5KB
- Bare
- pass
- Prov
- NO
- magicui-lens3d
- Renders
- YES
- A11y
- 0
- Gzip
- 63.5KB
- Bare
- pass
- Prov
- NO