{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "bento-01",
  "title": "Telemetry Bento",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/bento-01/bento-01.component.ts",
      "content": "// High-density bento grid featuring an interactive AI query copilot workbench,\n// real-time edge network telemetry feed, live latency radar, and SOC 2 compliance\n// vault status. Port of the React block 1:1.\nimport { ChangeDetectionStrategy, Component, DestroyRef, Input, computed, inject, signal } from '@angular/core'\nimport {\n  Activity,\n  ArrowRight,\n  Bot,\n  CheckCircle2,\n  Globe2,\n  Layers,\n  LucideAngularModule,\n  ShieldCheck,\n  Terminal,\n  Zap,\n} from 'lucide-angular'\nimport { cn } from '@/lib/utils'\nimport { UiBadgeComponent } from '@/ui/badge/badge.component'\nimport { UiButtonComponent } from '@/ui/button/button.component'\nimport { UiCardComponent, UiCardContentComponent } from '@/ui/card/card.component'\nimport { UiProgressComponent } from '@/ui/progress/progress.component'\n\nexport type BentoEventFilter = 'all' | 'deploy' | 'security' | 'database'\n\nexport interface BentoTelemetryEvent {\n  id: number\n  type: Exclude<BentoEventFilter, 'all'>\n  title: string\n  latency: string\n  time: string\n  status: string\n}\n\nconst liveTelemetryEvents: BentoTelemetryEvent[] = [\n  {\n    id: 1,\n    type: 'deploy',\n    title: 'Edge worker edge-us-east-1 deployed',\n    latency: '18ms',\n    time: '12s ago',\n    status: 'healthy',\n  },\n  {\n    id: 2,\n    type: 'database',\n    title: 'CDC stream synced 42,800 records',\n    latency: '4ms',\n    time: '34s ago',\n    status: 'healthy',\n  },\n  {\n    id: 3,\n    type: 'security',\n    title: 'Automated mTLS key rotation complete',\n    latency: '120ms',\n    time: '1m ago',\n    status: 'healthy',\n  },\n  {\n    id: 4,\n    type: 'deploy',\n    title: 'Static asset bundle cached in 32 edge PoPs',\n    latency: '8ms',\n    time: '2m ago',\n    status: 'healthy',\n  },\n]\n\nconst edgeRegions = [\n  { code: 'iad1', name: 'US East (N. Virginia)', status: 'Active', latency: '12ms' },\n  { code: 'fra1', name: 'EU Central (Frankfurt)', status: 'Active', latency: '18ms' },\n  { code: 'hnd1', name: 'AP East (Tokyo)', status: 'Active', latency: '24ms' },\n]\n\nconst eventFilters: { id: BentoEventFilter; label: string }[] = [\n  { id: 'all', label: 'All' },\n  { id: 'deploy', label: 'Deploy' },\n  { id: 'database', label: 'Data' },\n  { id: 'security', label: 'Security' },\n]\n\nconst INITIAL_PROMPT = 'Optimize database indexing for high concurrency tenant reads'\nconst INITIAL_OUTPUT =\n  'Generated compound B-Tree index on `(tenant_id, created_at DESC)` reducing p99 latency from 142ms to 6ms.'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-bento-01, [ui-bento-01]',\n  standalone: true,\n  // React renders the root <section> itself: the host stays out of layout and `class` goes to the root.\n  host: { '[attr.class]': '\"contents\"' },\n  imports: [\n    LucideAngularModule,\n    UiBadgeComponent,\n    UiButtonComponent,\n    UiCardComponent,\n    UiCardContentComponent,\n    UiProgressComponent,\n  ],\n  template: `\n    <section data-slot=\"bento-01\" [class]=\"rootClass\">\n      <div class=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\">\n        <!-- Header -->\n        <div class=\"mb-12 max-w-2xl space-y-3\">\n          <div\n            class=\"border-primary/20 bg-primary/5 text-primary inline-flex items-center gap-2 rounded-full border px-3 py-1 text-xs font-medium shadow-2xs\"\n          >\n            <lucide-icon [img]=\"Layers\" class=\"size-3.5\" />\n            <span>Unified Enterprise Architecture</span>\n          </div>\n          <h2 class=\"text-foreground text-3xl font-bold tracking-tight sm:text-4xl\">\n            Everything your engineering team needs to move at velocity\n          </h2>\n          <p class=\"text-muted-foreground text-base sm:text-lg\">\n            Engineered for extreme performance, continuous security governance, and multi-cloud resilience from day one.\n          </p>\n        </div>\n\n        <!-- Bento Grid (High Density) -->\n        <div class=\"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3\">\n          <!-- Tile 1: AI Code & Query Optimization Copilot (Span 2 cols on desktop) -->\n          <div\n            ui-card\n            class=\"border-border bg-card hover:border-primary/40 relative overflow-hidden shadow-xs transition-colors duration-200 md:col-span-2\"\n          >\n            <div ui-card-content class=\"flex h-full flex-col justify-between space-y-6 p-6 sm:p-8\">\n              <div class=\"flex flex-wrap items-center justify-between gap-4\">\n                <div class=\"flex items-center gap-3\">\n                  <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n                    <lucide-icon [img]=\"Bot\" class=\"size-5\" />\n                  </div>\n                  <div>\n                    <h3 class=\"text-foreground text-lg font-bold tracking-tight sm:text-xl\">\n                      Autonomous AI Query & Performance Copilot\n                    </h3>\n                    <p class=\"text-muted-foreground text-xs\">\n                      Analyzes production query patterns in real-time and recommends zero-downtime optimizations.\n                    </p>\n                  </div>\n                </div>\n                <span\n                  ui-badge\n                  variant=\"secondary\"\n                  class=\"bg-primary/10 text-primary border-primary/20 font-mono text-xs\"\n                >\n                  LLM Grounded · v4.8\n                </span>\n              </div>\n\n              <!-- Interactive Mini Workbench -->\n              <div class=\"border-border bg-muted/30 space-y-4 rounded-xl border p-4 sm:p-5\">\n                <div class=\"flex flex-wrap items-center justify-between gap-2 text-xs\">\n                  <span class=\"text-muted-foreground font-mono\">Input Prompt Context:</span>\n                  <span class=\"text-success inline-flex items-center gap-1 font-medium\">\n                    <lucide-icon [img]=\"CheckCircle2\" class=\"size-3.5\" />\n                    <span>AST Validated</span>\n                  </span>\n                </div>\n                <div class=\"flex items-center gap-2\">\n                  <div class=\"relative flex-1\">\n                    <input\n                      type=\"text\"\n                      [value]=\"aiPromptInput()\"\n                      (input)=\"aiPromptInput.set($any($event.target).value)\"\n                      class=\"border-border bg-card text-foreground focus:border-primary w-full rounded-md border px-3 py-2 font-mono text-xs focus:outline-hidden\"\n                    />\n                  </div>\n                  <button\n                    ui-button\n                    size=\"sm\"\n                    class=\"h-9 gap-1.5 text-xs font-medium\"\n                    [disabled]=\"isSimulatingPrompt()\"\n                    (click)=\"runAiOptimization()\"\n                  >\n                    <lucide-icon [img]=\"Zap\" class=\"size-3.5 fill-current\" />\n                    <span>{{ isSimulatingPrompt() ? 'Running...' : 'Optimize' }}</span>\n                  </button>\n                </div>\n\n                <!-- AI Result Output -->\n                <div\n                  class=\"border-border/80 bg-card text-foreground space-y-2 rounded-lg border p-3.5 font-mono text-xs\"\n                >\n                  <div class=\"text-muted-foreground flex items-center justify-between text-xs\">\n                    <span class=\"flex items-center gap-1.5\">\n                      <lucide-icon [img]=\"Terminal\" class=\"text-primary size-3\" />\n                      <span>Optimization Plan Output</span>\n                    </span>\n                    <span class=\"text-success font-semibold\">98.4% Efficiency Gain</span>\n                  </div>\n                  <p class=\"text-foreground leading-relaxed\">{{ aiDraftOutput() }}</p>\n                </div>\n              </div>\n\n              <div class=\"border-border grid grid-cols-3 gap-4 border-t pt-2 text-center text-xs\">\n                <div>\n                  <p class=\"text-foreground font-mono text-base font-bold\">0.4ms</p>\n                  <p class=\"text-muted-foreground\">Inference Overhead</p>\n                </div>\n                <div>\n                  <p class=\"text-foreground font-mono text-base font-bold\">99.8%</p>\n                  <p class=\"text-muted-foreground\">Syntactic Accuracy</p>\n                </div>\n                <div>\n                  <p class=\"text-foreground font-mono text-base font-bold\">3.4M</p>\n                  <p class=\"text-muted-foreground\">Queries Analyzed</p>\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <!-- Tile 2: Global Edge Network & Latency Radar -->\n          <div\n            ui-card\n            class=\"border-border bg-card hover:border-primary/40 relative overflow-hidden shadow-xs transition-colors duration-200\"\n          >\n            <div ui-card-content class=\"flex h-full flex-col justify-between space-y-6 p-6\">\n              <div class=\"space-y-3\">\n                <div class=\"flex items-center justify-between\">\n                  <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n                    <lucide-icon [img]=\"Globe2\" class=\"size-5\" />\n                  </div>\n                  <span\n                    class=\"bg-success/10 text-success border-success/20 inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 font-mono text-xs font-semibold\"\n                  >\n                    <span class=\"bg-success size-1.5 rounded-full\"></span>\n                    <span>32 Edge PoPs</span>\n                  </span>\n                </div>\n                <div>\n                  <h3 class=\"text-foreground text-lg font-bold tracking-tight\">Global Edge Mesh</h3>\n                  <p class=\"text-muted-foreground text-xs\">\n                    Sub-20ms p99 execution worldwide with automatic zero-downtime failover routing.\n                  </p>\n                </div>\n              </div>\n\n              <!-- Edge Regions List -->\n              <div class=\"border-border bg-muted/20 space-y-2.5 rounded-lg border p-3\">\n                @for (region of regions; track region.code) {\n                  <div class=\"border-border/50 flex items-center justify-between border-b py-1 text-xs last:border-0\">\n                    <div class=\"flex items-center gap-2\">\n                      <span class=\"text-foreground font-mono text-xs font-bold uppercase\">{{ region.code }}</span>\n                      <span class=\"text-muted-foreground max-w-[120px] truncate\">{{ region.name }}</span>\n                    </div>\n                    <span class=\"text-primary font-mono text-xs font-semibold\">{{ region.latency }}</span>\n                  </div>\n                }\n              </div>\n\n              <div class=\"space-y-2\">\n                <div class=\"text-muted-foreground flex justify-between font-mono text-xs\">\n                  <span>Global Route SLA</span>\n                  <span class=\"text-foreground font-bold\">99.995%</span>\n                </div>\n                <ui-progress [value]=\"99.9\" class=\"h-1.5\" aria-label=\"Global route SLA\" />\n              </div>\n            </div>\n          </div>\n\n          <!-- Tile 3: Live Telemetry Event Stream (Span 2 cols on lg) -->\n          <div\n            ui-card\n            class=\"border-border bg-card hover:border-primary/40 relative overflow-hidden shadow-xs transition-colors duration-200 lg:col-span-2\"\n          >\n            <div ui-card-content class=\"flex h-full flex-col justify-between space-y-6 p-6 sm:p-8\">\n              <div class=\"flex flex-wrap items-center justify-between gap-4\">\n                <div class=\"flex items-center gap-3\">\n                  <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n                    <lucide-icon [img]=\"Activity\" class=\"size-5\" />\n                  </div>\n                  <div>\n                    <h3 class=\"text-foreground text-lg font-bold tracking-tight\">Real-Time Event Stream</h3>\n                    <p class=\"text-muted-foreground text-xs\">\n                      Deterministic audit feed capturing deployments, schema migrations, and security operations.\n                    </p>\n                  </div>\n                </div>\n\n                <!-- Filter Tabs -->\n                <div class=\"border-border bg-muted/40 flex items-center gap-1 rounded-lg border p-1\">\n                  @for (filter of filters; track filter.id) {\n                    <button type=\"button\" [class]=\"filterClass(filter.id)\" (click)=\"activeEventFilter.set(filter.id)\">\n                      {{ filter.label }}\n                    </button>\n                  }\n                </div>\n              </div>\n\n              <!-- Event Feed Table -->\n              <div class=\"divide-border border-border bg-muted/20 divide-y rounded-xl border\">\n                @for (ev of filteredEvents(); track ev.id) {\n                  <div\n                    class=\"hover:bg-muted/40 flex flex-wrap items-center justify-between gap-3 p-3.5 text-xs transition-colors\"\n                  >\n                    <div class=\"flex items-center gap-2.5\">\n                      <span class=\"bg-success size-2 rounded-full\"></span>\n                      <span class=\"text-foreground font-medium\">{{ ev.title }}</span>\n                    </div>\n                    <div class=\"text-muted-foreground flex items-center gap-3 font-mono\">\n                      <span class=\"bg-muted text-foreground rounded px-1.5 py-0.5\">{{ ev.latency }}</span>\n                      <span>{{ ev.time }}</span>\n                    </div>\n                  </div>\n                }\n              </div>\n\n              <div\n                class=\"text-muted-foreground border-border flex flex-wrap items-center justify-between gap-2 border-t pt-2 text-xs\"\n              >\n                <span class=\"flex items-center gap-1.5\">\n                  <lucide-icon [img]=\"ShieldCheck\" class=\"text-success size-4\" />\n                  <span>Zero message loss guaranteed via Raft consensus</span>\n                </span>\n                <span class=\"font-mono\">Throughput: ~14,200 ev/sec</span>\n              </div>\n            </div>\n          </div>\n\n          <!-- Tile 4: Enterprise Security & Compliance Vault -->\n          <div\n            ui-card\n            class=\"border-border bg-card hover:border-primary/40 relative overflow-hidden shadow-xs transition-colors duration-200\"\n          >\n            <div ui-card-content class=\"flex h-full flex-col justify-between space-y-6 p-6\">\n              <div class=\"space-y-3\">\n                <div class=\"flex items-center justify-between\">\n                  <div class=\"bg-primary/10 text-primary flex size-10 items-center justify-center rounded-lg\">\n                    <lucide-icon [img]=\"ShieldCheck\" class=\"size-5\" />\n                  </div>\n                  <span ui-badge variant=\"outline\" class=\"font-mono text-xs\">SOC 2 Type II</span>\n                </div>\n                <div>\n                  <h3 class=\"text-foreground text-lg font-bold tracking-tight\">Compliance & Vault</h3>\n                  <p class=\"text-muted-foreground text-xs\">\n                    Continuous cryptographic verification, automated KMS key rotation, and granular RBAC.\n                  </p>\n                </div>\n              </div>\n\n              <div class=\"border-border bg-muted/20 space-y-3 rounded-lg border p-3.5 text-xs\">\n                <div class=\"flex items-center justify-between\">\n                  <span class=\"text-muted-foreground\">AES-256 GCM at rest</span>\n                  <span class=\"text-success flex items-center gap-1 font-semibold\">\n                    <lucide-icon [img]=\"CheckCircle2\" class=\"size-3.5\" /> Enforced\n                  </span>\n                </div>\n                <div class=\"flex items-center justify-between\">\n                  <span class=\"text-muted-foreground\">mTLS v1.3 in transit</span>\n                  <span class=\"text-success flex items-center gap-1 font-semibold\">\n                    <lucide-icon [img]=\"CheckCircle2\" class=\"size-3.5\" /> Enforced\n                  </span>\n                </div>\n                <div class=\"flex items-center justify-between\">\n                  <span class=\"text-muted-foreground\">SCIM v2 Directory Sync</span>\n                  <span class=\"text-foreground font-semibold\">Active</span>\n                </div>\n              </div>\n\n              <button ui-button variant=\"outline\" class=\"h-9 w-full gap-1.5 text-xs font-semibold\">\n                <span>View Trust Center</span>\n                <lucide-icon [img]=\"ArrowRight\" class=\"size-3.5\" />\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </section>\n  `,\n})\nexport class UiBento01Component {\n  protected readonly Activity = Activity\n  protected readonly ArrowRight = ArrowRight\n  protected readonly Bot = Bot\n  protected readonly CheckCircle2 = CheckCircle2\n  protected readonly Globe2 = Globe2\n  protected readonly Layers = Layers\n  protected readonly ShieldCheck = ShieldCheck\n  protected readonly Terminal = Terminal\n  protected readonly Zap = Zap\n\n  protected readonly filters = eventFilters\n  protected readonly regions = edgeRegions\n\n  @Input('class') className?: string\n\n  readonly activeEventFilter = signal<BentoEventFilter>('all')\n  readonly isSimulatingPrompt = signal(false)\n  readonly aiPromptInput = signal(INITIAL_PROMPT)\n  readonly aiDraftOutput = signal(INITIAL_OUTPUT)\n\n  private timer: ReturnType<typeof setTimeout> | undefined\n\n  constructor() {\n    inject(DestroyRef).onDestroy(() => clearTimeout(this.timer))\n  }\n\n  readonly filteredEvents = computed(() => {\n    const filter = this.activeEventFilter()\n    if (filter === 'all') return liveTelemetryEvents\n    return liveTelemetryEvents.filter((e) => e.type === filter)\n  })\n\n  get rootClass(): string {\n    return cn('bg-background w-full py-16 sm:py-24', this.className)\n  }\n\n  filterClass(filter: BentoEventFilter): string {\n    return cn(\n      'rounded-md px-2.5 py-1 text-xs font-medium transition-colors',\n      this.activeEventFilter() === filter\n        ? 'bg-card text-foreground font-semibold shadow-2xs'\n        : 'text-muted-foreground hover:text-foreground',\n    )\n  }\n\n  runAiOptimization(): void {\n    this.isSimulatingPrompt.set(true)\n    this.aiDraftOutput.set('Analyzing query AST and cache hit rates...')\n    clearTimeout(this.timer)\n    this.timer = setTimeout(() => {\n      this.aiDraftOutput.set('Applied index pushdown & partitioned query plan. Estimated cache hit rate: 98.4%.')\n      this.isSimulatingPrompt.set(false)\n    }, 900)\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/bento-01/bento-01.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/bento-01/index.ts",
      "content": "export { UiBento01Component, type BentoEventFilter, type BentoTelemetryEvent } from './bento-01.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/bento-01/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/badge.json",
    "https://uipkge.dev/r/angular/button.json",
    "https://uipkge.dev/r/angular/card.json",
    "https://uipkge.dev/r/angular/progress.json"
  ],
  "description": "High-density bento grid featuring an interactive AI query copilot workbench, real-time edge network telemetry feed, live latency radar, and SOC 2 compliance vault status.",
  "categories": [
    "marketing"
  ]
}