Mischief
Good interfaces deserve a little mischief.
Browse the live components and documentation at
Mischief is a small collection of playful, production-ready React components. The components use Base UI where behavior is complex, Tailwind CSS for styling, and shadcn theme tokens so they fit the project that receives them.
Install
Give Mischief to your agent
Install the catalog as an agent skill:
Then ask for what you need:
Add it yourself
Mischief is a public GitHub registry for shadcn CLI v4. Install a component directly from this repository:
Every component is listed at
Use pnpm dlx, yarn dlx, or bunx if that is what your project uses. The shadcn CLI reads components.json and places the source in the configured UI directory.
Mischief is also available as mischief-ui
Import mischief-ui/styles.css in your Tailwind CSS entry file, then use a direct entry such as mischief-ui/magnetic-tabs. The root export remains available when one import path is more convenient. The registry remains the recommended path when you want to own and adapt the source.
Components
Magnetic Tabs
The component supports controlled and uncontrolled selection through value, defaultValue, and onValueChange.
Elastic Slider
Use value and onValueChange for a controlled slider. min, max, step, formatValue, and onValueCommitted are available for common form needs.
Hold Button
Pointer users hold for 900ms by default. Keyboard and assistive technology users activate the native button once. Set duration to change the hold time, with a minimum of 500ms.
Signature Footer
Pass ordinary React nodes for the action, navigation, compact brand, and metadata. The footer owns the composition while your app owns its links and language.
Impossible Checkbox
The bear always turns it back off. Use it for demos and harmless jokes, never for consent or a setting someone needs to change.
Floating Index
The index tracks page progress and the active section. Pass containerRef when the content scrolls inside an element instead of the page.
Shift Button
The component uses Base UI so the same interaction can remain a button or render as a real link.
Scroll to Top Button
Pass containerRef to target a scroll area instead of the page. The button appears after scrolling down and switches to immediate scrolling when reduced motion is preferred.
Ask AI
The default destinations are ChatGPT, Claude, Perplexity, and Grok. Pass targets to provide another set. The copy action keeps the same prompt available for any other assistant.
File Upload
The component validates file type, size, count, and duplicates before adding anything to its queue. Pass uploadFile to connect storage and enable progress, cancel, and retry behavior. Its return value is stored on the completed entry and passed to onUploadComplete. Use value and onValueChange when the queue belongs to application state.
Repeat file type, size, and authorization checks on the server. Browser validation is user feedback, not a security boundary.
File Thumbnail
Pass a browser image File to preview it directly, or use previewImageUrl for an image that already lives elsewhere. Loading and failed images have clear fallback states.
Blocks
Image Gallery
The lightbox traps focus, locks page scroll, restores focus on close, and supports Left Arrow, Right Arrow, and Escape.
Compatibility
- React 18 and 19 through component dependencies
- Tailwind CSS 4
- shadcn CLI 4 and GitHub registries
- Base UI 1.7 or newer
- Next.js, Vite, React Router, TanStack Start, and other React projects supported by shadcn
- Light and dark themes through semantic shadcn tokens
- Left-to-right and right-to-left document direction through logical layout and Base UI behavior
For reproducible GitHub installs, append a release tag or full commit SHA to the item address. Unpinned commands intentionally install the current version from main.
Local development
Use Node 24 or any supported Node release from 20.18.1 onward.
Before committing:
The check formats, lints, type-checks, validates the registry build, and creates a production Next.js build.
Design and contribution
Read
License
MIT