Back to Component Explorer
Minimal Button
buttonsClean, subtle button with smooth dynamic focus ring and modern press feedback.
#button#minimal#clean#interactive
Live Interactive Preview
Component Source Code
Select language in the dropdownMinimalButton.tsx
1'use client';23import React, { useState } from 'react';4import { ArrowRight } from 'lucide-react';56export default function MinimalButton() {7 const [clicked, setClicked] = useState(false);89 return (10 <button11 onClick={() => {12 setClicked(true);13 setTimeout(() => setClicked(false), 300);14 }}15 className={`group relative inline-flex items-center gap-2 rounded-xl border border-slate-300 dark:border-slate-700 bg-white dark:bg-slate-900 px-5 sm:px-6 py-2.5 sm:py-3 text-sm font-semibold text-slate-900 dark:text-slate-100 shadow-sm transition-all duration-200 hover:border-slate-400 dark:hover:border-slate-500 hover:bg-slate-50 dark:hover:bg-slate-850 hover:shadow active:scale-95 ${16 clicked ? 'ring-2 ring-blue-500/40' : ''17 }`}18 >19 <span>Get Started</span>20 <ArrowRight className="h-4 w-4 transition-transform duration-200 group-hover:translate-x-1" />21 </button>22 );23}Installation & Integration Guide
Step 1: Tailwind CSS v4 Setup
Tailwind DocsIf you do not have Tailwind installed yet, run this installation command:
Terminal
npm install tailwindcss @tailwindcss/postcss postcss
Then add the Tailwind directive to your main stylesheet (globals.css):
@import "tailwindcss";
Step 2: Install Icon Dependencies
npm install lucide-react react-icons
Step 3: Add Component File
Create a new file in your project at src/components/buttons/MinimalButton.tsx and paste the copied code from the source viewer above.
Step 4: Usage Example
ExamplePage.tsx
1import MinimalButton from '@/components/buttons/MinimalButton';23export default function ExamplePage() {4 return (5 <main className="p-8 flex items-center justify-center min-h-screen">6 <MinimalButton />7 </main>8 );9}