| import { useEffect, useState, type ReactNode } from 'react'
|
|
|
|
|
|
|
|
|
| export function FloatingBar({ show, children }: { show: boolean; children: ReactNode }) {
|
| const [render, setRender] = useState(show)
|
| useEffect(() => {
|
| if (show) {
|
| setRender(true)
|
| return
|
| }
|
| const t = setTimeout(() => setRender(false), 300)
|
| return () => clearTimeout(t)
|
| }, [show])
|
| if (!render) return null
|
| return (
|
| <div
|
| className={`fixed inset-x-0 bottom-6 z-50 flex justify-center px-6 pointer-events-none duration-300 ${
|
| show
|
| ? 'animate-in slide-in-from-bottom-4 fade-in'
|
| : 'animate-out slide-out-to-bottom-4 fade-out fill-mode-forwards'
|
| }`}
|
| >
|
| <div className="pointer-events-auto flex items-center gap-3 rounded-full border bg-card px-4 py-2 shadow-lg">
|
| {children}
|
| </div>
|
| </div>
|
| )
|
| }
|
|
|