{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "banner-cookie", "type": "registry:ui", "title": "Banner Cookie", "description": "A frosted-glass cookie consent card with rise entrance and shrink-drop dismiss.", "files": [ { "path": "registry/ruixenui/banner-cookie.tsx", "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface BannerCookieProps {\n description?: string;\n onAccept?: () => void;\n onDecline?: () => void;\n className?: string;\n}\n\nexport function BannerCookie({\n description = \"This site uses cookies to improve your experience.\",\n onAccept,\n onDecline,\n className,\n}: BannerCookieProps) {\n const [leaving, setLeaving] = React.useState(false);\n const [gone, setGone] = React.useState(false);\n\n const dismiss = (cb?: () => void) => {\n setLeaving(true);\n setTimeout(() => {\n setGone(true);\n cb?.();\n }, 300);\n };\n\n if (gone) return null;\n\n return (\n
\n {description}\n
\n\n