Skip to content

Tailwind hover effects, blocks and pages for React

Everything, as it was written. Blocks and pages are React source; effects convert to a self-contained function component.

  • React 19
  • Next.js
  • Vite
  • Remix

An effect, in React

This is the Gradient Shift Button effect, run through the converter when this page was built — not a sample of what the output is meant to look like. All 1,126 effects convert the same way, because every one of them is markup plus a stylesheet.

BtnGradient.tsx
/**
 * BtnGradient — Gradient Shift Button
 * A button whose multi-color gradient slides across on hover, paired with a soft drop shadow that intensifies.
 *
 * Generated by Hoverlab from the "btn-gradient" effect. Drop this file into any React app (Next.js, Vite,
 * CRA, Remix) and import it — no extra dependencies, no build
 * configuration.
 *
 * The CSS ships in a <style> tag so the class selectors resolve exactly as
 * they do in the original. If you render this component many times on one
 * page, lift the <style> into a global stylesheet instead so the rules are
 * only parsed once.
 */
export function BtnGradient() {
  return (
    <>
      <style>{`
.fx-btn-gradient {
  position: relative;
  padding: 0.75rem 1.75rem;
  border: none;
  border-radius: 0.625rem;
  font-weight: 600;
  font-size: 0.95rem;
  color: #fff;
  cursor: pointer;
  background: linear-gradient(120deg, #f43f5e, #f59e0b, #10b981, #6366f1);
  background-size: 300% 300%;
  background-position: 0% 50%;
  transition: background-position 0.6s ease, transform 0.2s ease, box-shadow 0.3s ease;
  box-shadow: 0 6px 18px -6px rgba(244, 63, 94, 0.5);
}
.fx-btn-gradient:hover {
  background-position: 100% 50%;
  transform: translateY(-2px);
  box-shadow: 0 12px 28px -8px rgba(99, 102, 241, 0.55);
}
.fx-btn-gradient:active { transform: translateY(0); }
      `}</style>
      <button className="fx-btn-gradient">Get Started</button>
    </>
  )
}

export default BtnGradient

What to know before you paste it

  • Valid as both .tsx and .jsx — there are no type annotations to strip.
  • Inputs render uncontrolled (defaultChecked) so React does not warn about a value without an onChange handler.

Blocks and pages

All 433 blocks and pages are React and Tailwind, and they ship as written — there is nothing to convert for React, because that is already what they are.

Getting it into your project

terminal
npx hoverlab add btn-gradient

No flag. The CLI reads your package.json and emits React because react is a dependency. It also picks the folder — an existing components directory rather than a new top-level one.

In a monorepo where detection has nothing to go on, say it outright: npx hoverlab add btn-gradient --framework react

  1. Drop the file in your components folder. It is valid as .tsx and as .jsx — there are no type annotations to strip.
  2. Import it and render it. The styles travel inside the component, so there is no stylesheet to register.
  3. Blocks and pages arrive as the React source they were written in, with their Tailwind classes and their hooks intact.

Where the licence comes into it

React output is not gated anywhere — not in the export panel, not in the API, not in the CLI. What Pro sells is the licence to ship it, which is a separate question from reaching it.

Also targeted