{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "banner-announcement-sticky",
  "title": "Banner Announcement Sticky",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/banner-announcement-sticky/banner-announcement-sticky.component.ts",
      "content": "// Sticky release announcement banner with version badge and dismiss trigger.\n// Port of the Vue/React block 1:1 — same v2.4.0 copy, same release-notes link.\n// Deprecated alias of the announcement broadcast center (use ui-announcement).\nimport { ChangeDetectionStrategy, Component, Input, signal } from '@angular/core'\nimport { ArrowRight, LucideAngularModule, Megaphone, X } from 'lucide-angular'\nimport { UiBadgeComponent } from '@/ui/badge/badge.component'\nimport { cn } from '@/lib/utils'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-banner-announcement-sticky, [ui-banner-announcement-sticky]',\n  standalone: true,\n  // The block renders its own root <aside>: keep this wrapper out of the layout.\n  host: { '[attr.class]': '\"contents\"' },\n  imports: [LucideAngularModule, UiBadgeComponent],\n  template: `\n    @if (isVisible()) {\n      <aside data-slot=\"banner-announcement-sticky\" [class]=\"rootClass\">\n        <div class=\"mx-auto flex max-w-7xl items-center justify-between gap-4 font-mono text-xs\">\n          <!-- Left / Center Content -->\n          <div class=\"flex min-w-0 flex-1 items-center justify-center gap-3 sm:justify-start\">\n            <span\n              ui-badge\n              variant=\"secondary\"\n              class=\"bg-primary/10 text-primary border-primary/20 shrink-0 px-2 py-0.5 text-xs font-bold tracking-wider uppercase\"\n            >\n              v2.4.0 Release\n            </span>\n\n            <p class=\"text-foreground flex items-center gap-1.5 truncate\">\n              <lucide-icon [img]=\"Megaphone\" class=\"text-primary hidden size-3 shrink-0 sm:inline\" />\n              <span>Announcing 450+ Marketing &amp; SaaS Blocks with Tailwind v4 OKLCH token engine.</span>\n            </p>\n\n            <a href=\"#\" class=\"text-primary inline-flex shrink-0 items-center gap-1 font-bold hover:underline\">\n              <span>Read Release Notes</span>\n              <lucide-icon [img]=\"ArrowRight\" class=\"size-3\" />\n            </a>\n          </div>\n\n          <!-- Dismiss Trigger Button -->\n          <button\n            type=\"button\"\n            class=\"hover:bg-muted text-muted-foreground hover:text-foreground flex size-6 shrink-0 items-center justify-center rounded-md transition-colors\"\n            aria-label=\"Dismiss banner\"\n            (click)=\"dismissBanner()\"\n          >\n            <lucide-icon [img]=\"X\" class=\"size-3.5\" />\n          </button>\n        </div>\n      </aside>\n    }\n  `,\n})\nexport class UiBannerAnnouncementStickyComponent {\n  protected readonly ArrowRight = ArrowRight\n  protected readonly Megaphone = Megaphone\n  protected readonly X = X\n\n  @Input('class') className?: string\n\n  readonly isVisible = signal(true)\n\n  get rootClass(): string {\n    return cn(\n      'border-border bg-card/90 relative z-50 border-b px-4 py-2.5 backdrop-blur-md transition-colors sm:px-6',\n      this.className,\n    )\n  }\n\n  dismissBanner(): void {\n    this.isVisible.set(false)\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/banner-announcement-sticky/banner-announcement-sticky.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/banner-announcement-sticky/index.ts",
      "content": "export { UiBannerAnnouncementStickyComponent } from './banner-announcement-sticky.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/banner-announcement-sticky/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/badge.json"
  ],
  "description": "Sticky release announcement banner with version pill, call-to-action link, and dismiss trigger.",
  "categories": [
    "marketing"
  ],
  "deprecated": true,
  "replacedBy": "announcement"
}