About
Here is Buttons Components
Built with React and Tailwind. Copy the prompt and paste it into Claude Code, Cursor or Lovable: your agent adds Buttons to your project and fits it to your theme.
Code
How Buttons is used: the demo's code. The component's own source comes with a free account.
Usage.tsx
'use client'
import { useState } from 'react'
import { LoaderCircleIcon } from 'lucide-react'
import { Button } from '@/components/ui/button'
import { cn } from '@/lib/utils'
const ButtonPromiseDemo = () => {
const [isLoading, setIsLoading] = useState(false)
const [status, setStatus] = useState<undefined | string>(undefined)
const handleClick = async () => {
setIsLoading(true)
setStatus(undefined)
try {
await new Promise(resolve => setTimeout(resolve, 1000))
setStatus(Math.random() > 0.5 ? 'Submitted!' : 'Rejected!')
} catch (error) {
setStatus('Rejected!')
console.error(error)
} finally {
setIsLoading(false)
}
}
return (
<Button
variant='link'
onClick={handleClick}
disabled={isLoading}
className={cn('btn cursor-pointer hover:no-underline', {
'text-green-600 dark:text-green-400': status === 'Submitted!',
'text-destructive': status === 'Rejected!'
})}
>
{isLoading ? (
<>
<LoaderCircleIcon className='icon animate-spin' />
Loading
</>
) : status ? (
status
) : (
'Click me'
)}
</Button>
)
}
export default ButtonPromiseDemo














