{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "banner", "title": "Banner", "description": "Polaris-styled Banner component.", "dependencies": [], "devDependencies": [ "@shopify/polaris-types" ], "registryDependencies": [ "@polaris-shadcn/theme", "@polaris-shadcn/utils" ], "files": [ { "path": "registry/templates/components/ui/banner.tsx", "content": "import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\ntype SBannerProps = React.ComponentPropsWithoutRef<\"s-banner\">;\n\nexport type BannerTone =\n | \"default\"\n | \"info\"\n | \"success\"\n | \"warning\"\n | \"destructive\"\n | \"critical\";\n\nexport interface BannerProps extends Omit {\n className?: string;\n tone?: BannerTone;\n secondaryActions?:\n | React.ReactElement<{ slot?: string }>\n | React.ReactElement<{ slot?: string }>[];\n}\n\nconst toneMap: Record = {\n default: \"info\",\n info: \"info\",\n success: \"success\",\n warning: \"warning\",\n destructive: \"critical\",\n critical: \"critical\",\n};\n\nconst Banner = React.forwardRef(\n (\n {\n className,\n heading,\n tone = \"default\",\n dismissible = false,\n hidden = false,\n children,\n secondaryActions,\n onDismiss,\n onAfterHide,\n ...props\n },\n ref,\n ) => {\n const resolvedTone = toneMap[tone] ?? toneMap.default;\n\n const handleDismiss = React.useCallback<\n NonNullable\n >(\n (event) => {\n onDismiss?.(event);\n },\n [onDismiss],\n );\n\n const handleAfterHide = React.useCallback<\n NonNullable\n >(\n (event) => {\n onAfterHide?.(event);\n },\n [onAfterHide],\n );\n\n return (\n