Generate 3D Button

A button that sparkles when hovered.

Tags: Html & css, Next js, Figma

React Code

"use client";

import React from "react";
import { motion, useReducedMotion } from "framer-motion";

export function GenerateButton() {
  const shouldReduceMotion = useReducedMotion();

  return (
    <div className="relative cursor-pointer select-none">
      {/* 3D Base Shadow in Deep Blue — always static */}
      <div className="absolute inset-0 bg-[#0E3067] rounded-[79px] translate-y-[3px] w-[120px] h-[43px]" />

      {/* Top Pill Surface — moves down on press */}
      <motion.div
        whileTap={shouldReduceMotion ? {} : { y: 3 }}
        transition={{ duration: 0.1, ease: "easeInOut" }}
        className="relative bg-white border border-[#E7E7E7] rounded-[79px] w-[120px] h-[43px] flex items-center justify-center font-work font-medium text-[16px] text-[#1F2123] leading-[1.2] shadow-xs"
      >
        Generate
      </motion.div>
    </div>
  );
}