{ "name": "banner-stacked-demo", "type": "registry:example", "dependencies": [ "lucide-react" ], "registryDependencies": [ "banner", "button" ], "files": [ { "path": "examples/banner-stacked-demo.tsx", "type": "registry:example", "content": "\"use client\";\n\nimport {\n AlertCircle,\n AlertTriangle,\n CheckCircle,\n Info,\n ServerCrash,\n Sparkles,\n} from \"lucide-react\";\nimport * as React from \"react\";\nimport {\n BannerActions,\n BannerClose,\n BannerContent,\n BannerDescription,\n BannerIcon,\n Banners,\n BannerTitle,\n useBanners,\n} from \"@/registry/bases/base/ui/banner\";\nimport { Button } from \"@/registry/bases/base/ui/button\";\n\nexport default function BannerStackedDemo() {\n return (\n \n \n \n );\n}\n\nfunction BannerControls() {\n const { onBannerAdd, banners } = useBanners();\n\n const onInfoBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"info\",\n content: (\n <>\n \n \n \n \n Information\n \n This is an informational message.\n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n const onSuccessBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"success\",\n content: (\n <>\n \n \n \n \n Success!\n \n Your changes have been saved successfully.\n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n const onWarningBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"warning\",\n content: ({ onClose }) => (\n <>\n \n \n \n \n Warning\n \n Please review your changes before continuing.\n \n \n \n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n const onDestructiveBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"destructive\",\n content: (\n <>\n \n \n \n \n Action required\n \n Your session is about to expire. Please save your work.\n \n \n \n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n const onAppVersionBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"info\",\n priority: 0,\n content: (\n <>\n \n \n \n \n New version available\n \n Version 2.0 is now available with exciting new features.\n \n \n \n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n const onSystemHealthBannerAdd = React.useCallback(() => {\n onBannerAdd({\n variant: \"destructive\",\n priority: 10,\n content: (\n <>\n \n \n \n \n System outage\n \n Some services are currently unavailable. We're working on it.\n \n \n \n \n ),\n });\n }, [onBannerAdd]);\n\n return (\n
\n
\n

\n Stacked Banners ({banners.length} in queue)\n

\n
\n \n \n \n \n
\n
\n
\n

Priority

\n
\n \n \n
\n
\n Higher priority banners jump ahead in the queue.\n
\n Try adding the app version banner first, then the system health\n banner.\n
\n
\n
\n );\n}\n", "target": "" } ] }