Metal Button
A pill button framed by a real-time liquid-metal ring. The ring is painted by `metal-fx` (Jakub Antalík, MIT, https://metal.jakubantalik.com): one shared WebGL shader drives every instance on the page, pauses offscreen and renders a transparent placeholder on the server. This wrapper adds the button surface, sizes, and class-based dark/light detection so the ring matches a shadcn-style `.dark`…

Build promptPaste into Claude, Cursor or v0 with the Niblet MCP connected
Build the "Metal Button" React component in this project using the Niblet MCP (connected with my Niblet API key).
1. Call get_ui_component {"id": "metal-button"} to fetch its source files and dependencies.
2. Write each returned file at its target path, adapting the `@/` imports to this project's aliases.
3. Install the npm dependencies it lists. Add unprefixed registry dependencies with `npx shadcn@latest add <name>`; fetch `@niblet/<id>` ones with get_ui_component.
4. Render it on a page, run the type check, and confirm it works the way the live preview does.
Live preview: https://niblet.pymodel.com/components/metal-button
If the Niblet MCP is not connected, stop and tell me to create an API key at https://niblet.pymodel.com/account and follow https://niblet.pymodel.com/docs.- Category
- uikit
- License
- MIT
Uses metal-fx by Jakub Antalík (MIT), https://metal.jakubantalik.com
- npm dependencies
- metal-fx
- Registry dependencies
- utils
- Files it installs
- components/uikit/metal-button.tsx
- components/uikit/use-surface-theme.ts
Get the source
The source is served to your agent through the hosted Niblet MCP. Have it run:
find_ui_materials {"query": "metal button", "kind": "component"}get_ui_component {"id": "metal-button"}
Needs an API key: get one on your account, then see the MCP setup docs.