Measured entry
ruixen-live-waveform
inputunclassifiedmotion on file
A client-side React waveform panel shipped as a shadcn registry component. It draws idle, processing, or microphone-driven bars on a canvas, requests audio through browser media APIs, and includes an optional stop button. It depends on Lucide, a cn utility backed by clsx and tailwind-merge, Tailwind theme classes, and ResizeObserver.



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 | flagged at 375 |
| Axe critical | 0 |
| Axe serious | 1 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 31.4 KB (96.9 KB build, 65.5 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 43.95s error during build: [vite:load-fallback] Could not load <sandbox>/src/lib/utils (imported by src/cut/components/ruixen/live-waveform.tsx): ENOENT: no such file or directory, open '<sandbox>/src/lib/utils'
Verdict
A focused, convincing voice-state visual for shadcn-based apps, with useful tuning props and clean microphone teardown. It needs a shadcn-style setup to build and mount, and teams should fix the narrow-layout overflow and contrast before shipping it.
Use it if
- You need a compact voice-input status surface with distinct idle, processing, and listening states.
- Your app already uses shadcn conventions and can grant microphone access in a secure browser context.
- You want a configurable canvas waveform without adopting a charting or audio visualization library.
Skip it if
- The component must fit narrow layouts without additional responsive work, since the verified mobile demo overflows.
- You need accessible colors out of the box, since the tested presentation has a serious contrast issue.
- Your product cannot request microphone permission or must support environments without browser media and canvas APIs.
- You need recording, playback, elapsed time, or audio persistence rather than a visual state indicator.
Install
| Declared dependencies | lucide-react, clsx, tailwind-merge |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
In a non-shadcn project, add Lucide React, clsx, and tailwind-merge; provide a compatible cn helper; map the Tailwind border, card, foreground, and background theme classes; and keep the component client-side where canvas, ResizeObserver, AudioContext, and mediaDevices are available.
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 input pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- clay-inputclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 17.9KB
- Bare
- pass
- Prov
- NO
- neu-search-inputneumorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.1KB
- Bare
- pass
- Prov
- NO
- clay-search-inputclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.3KB
- Bare
- pass
- Prov
- NO
- originui-comp-33minimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 20.7KB
- Bare
- pass
- Prov
- NO
- hextaui-labelminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 31.3KB
- Bare
- pass
- Prov
- NO
- ruixen-circular-stepper-inputliquid-glass
- Renders
- YES
- A11y
- 0
- Gzip
- 61.1KB
- Bare
- pass
- Prov
- NO