{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "feature-metric-growth-stepper",
  "title": "Feature Metric Growth Stepper",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/feature-metric-growth-stepper/feature-metric-growth-stepper.component.ts",
      "content": "// Scale progression workbench: a milestone stepper bar across growth stages plus an\n// active-stage deep dive (architecture capacity checklist + infrastructure telemetry).\n// Port of the React block 1:1.\nimport { ChangeDetectionStrategy, Component, Input, computed, signal } from '@angular/core'\nimport {\n  Activity,\n  ArrowRight,\n  CheckCircle2,\n  Cpu,\n  Globe,\n  LucideAngularModule,\n  ShieldCheck,\n  TrendingUp,\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'\n\nexport interface GrowthStage {\n  id: string\n  name: string\n  stageLabel: string\n  mrrRange: string\n  description: string\n  users: string\n  qps: string\n  nodes: number\n  sla: string\n  features: string[]\n}\n\nconst DEFAULT_STAGES: GrowthStage[] = [\n  {\n    id: 'seed',\n    name: 'Seed & Validation',\n    stageLabel: 'Stage 01',\n    mrrRange: '$0 – $10k / mo',\n    description:\n      'Instant zero-dependency UI primitives copied directly into your repository. Zero lock-in, zero build overhead.',\n    users: '1k – 25k MAU',\n    qps: '500 req/s',\n    nodes: 3,\n    sla: '99.9% Best Effort',\n    features: [\n      'Unbundled component source ownership',\n      'Tailwind v4 theme variables',\n      'Single-command CLI installation',\n    ],\n  },\n  {\n    id: 'series-a',\n    name: 'Series A Product-Market Fit',\n    stageLabel: 'Stage 02',\n    mrrRange: '$10k – $100k / mo',\n    description: 'Scale complex dashboards and interactive blocks with full Reka UI/Radix headless accessibility.',\n    users: '25k – 250k MAU',\n    qps: '4,500 req/s',\n    nodes: 12,\n    sla: '99.95% Standard SLA',\n    features: [\n      'Complex KPI grids & interactive charts',\n      'RBAC permission workspace switchers',\n      'Dual-framework Astro preview integration',\n    ],\n  },\n  {\n    id: 'scale',\n    name: 'Hypergrowth Expansion',\n    stageLabel: 'Stage 03',\n    mrrRange: '$100k – $1M / mo',\n    description:\n      'High-throughput global edge deployment with sub-millisecond component compilation and dedicated design system sync.',\n    users: '250k – 2.5M MAU',\n    qps: '35,000 req/s',\n    nodes: 48,\n    sla: '99.99% High Availability',\n    features: [\n      'Global edge caching mesh',\n      'Automated cross-framework AST parity tests',\n      'Custom token preset distribution',\n    ],\n  },\n  {\n    id: 'enterprise',\n    name: 'Global Enterprise Scale',\n    stageLabel: 'Stage 04',\n    mrrRange: '$1M+ / mo',\n    description:\n      'Mission-critical resilience with multi-region failover, custom compliance SLAs, and dedicated design engineering support.',\n    users: '10M+ MAU',\n    qps: '250,000 req/s',\n    nodes: 310,\n    sla: '99.999% Fault Tolerant',\n    features: [\n      'SOC2 & HIPAA compliant architecture',\n      'Sub-10ms global TTFB guarantees',\n      '24/7 dedicated incident commander',\n    ],\n  },\n]\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-feature-metric-growth-stepper, [ui-feature-metric-growth-stepper]',\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: [LucideAngularModule, UiBadgeComponent, UiButtonComponent, UiCardComponent, UiCardContentComponent],\n  template: `\n    <section data-slot=\"feature-metric-growth-stepper\" [class]=\"rootClass\">\n      <div class=\"mx-auto max-w-7xl px-4 sm:px-6 lg:px-8\">\n        <!-- Section Header -->\n        <div class=\"mx-auto max-w-3xl space-y-4 text-center\">\n          <a\n            href=\"#growth-scale\"\n            class=\"group border-border/80 bg-secondary/60 hover:bg-secondary text-foreground inline-flex items-center gap-2 rounded-full border px-3.5 py-1 text-xs font-medium shadow-2xs transition-colors\"\n          >\n            <lucide-icon [img]=\"TrendingUp\" class=\"text-primary size-3.5\" />\n            <span>Scale-Ready Architecture Stepper</span>\n            <lucide-icon\n              [img]=\"ArrowRight\"\n              class=\"text-muted-foreground size-3 transition-transform group-hover:translate-x-0.5\"\n            />\n          </a>\n\n          <h2 class=\"text-foreground text-3xl font-bold tracking-tight sm:text-4xl\">\n            {{ title }}\n          </h2>\n\n          <p class=\"text-muted-foreground text-base sm:text-lg\">\n            {{ description }}\n          </p>\n        </div>\n\n        <!-- Stepper Milestone Bar -->\n        <div class=\"mt-12\">\n          <div class=\"grid grid-cols-2 gap-3 sm:grid-cols-4\">\n            @for (stage of activeStages(); track stage.id) {\n              <button type=\"button\" [class]=\"stepperButtonClass(stage.id)\" (click)=\"selectedStageId.set(stage.id)\">\n                <div class=\"flex w-full items-center justify-between\">\n                  <span class=\"text-muted-foreground font-mono text-xs font-semibold tracking-wider uppercase\">\n                    {{ stage.stageLabel }}\n                  </span>\n                  <span\n                    [class]=\"\n                      cn(\n                        'size-2 rounded-full transition-colors',\n                        selectedStageId() === stage.id ? 'bg-primary animate-pulse' : 'bg-muted-foreground/30'\n                      )\n                    \"\n                  ></span>\n                </div>\n\n                <div class=\"text-foreground mt-2 text-sm font-bold\">{{ stage.name }}</div>\n                <div class=\"text-muted-foreground mt-1 font-mono text-xs\">{{ stage.mrrRange }}</div>\n              </button>\n            }\n          </div>\n        </div>\n\n        <!-- Active Stage Deep-Dive Workbench -->\n        <div class=\"mt-8 grid grid-cols-1 gap-6 lg:grid-cols-12\">\n          <!-- Left: Stage Description & Architecture Capabilities (7 Cols) -->\n          <div ui-card class=\"border-border bg-card shadow-xs lg:col-span-7\">\n            <div ui-card-content class=\"space-y-6 p-6\">\n              <div class=\"border-border flex items-center justify-between border-b pb-4\">\n                <div class=\"space-y-0.5\">\n                  <span\n                    ui-badge\n                    variant=\"outline\"\n                    class=\"text-primary border-primary/30 bg-primary/10 font-mono text-xs\"\n                  >\n                    {{ currentStage().stageLabel }} &bull; {{ currentStage().name }}\n                  </span>\n                  <div class=\"text-foreground pt-1 text-xl font-bold tracking-tight\">Architecture Capacity</div>\n                </div>\n                <div class=\"text-right\">\n                  <div class=\"text-muted-foreground text-xs\">Target Growth Band</div>\n                  <div class=\"text-foreground font-mono text-sm font-bold\">{{ currentStage().mrrRange }}</div>\n                </div>\n              </div>\n\n              <p class=\"text-muted-foreground text-sm leading-relaxed\">\n                {{ currentStage().description }}\n              </p>\n\n              <!-- Technical Checklist -->\n              <div class=\"space-y-2.5\">\n                <div class=\"text-muted-foreground text-xs font-semibold tracking-wider uppercase\">\n                  Verified Infrastructure Benchmarks\n                </div>\n                <div class=\"grid grid-cols-1 gap-2\">\n                  @for (feature of currentStage().features; track feature) {\n                    <div\n                      class=\"border-border/80 bg-muted/20 text-foreground flex items-center gap-2.5 rounded-lg border p-2.5 text-xs\"\n                    >\n                      <lucide-icon [img]=\"CheckCircle2\" class=\"text-success size-4 shrink-0\" />\n                      <span>{{ feature }}</span>\n                    </div>\n                  }\n                </div>\n              </div>\n            </div>\n          </div>\n\n          <!-- Right: Infrastructure Load Telemetry (5 Cols) -->\n          <div ui-card class=\"border-border bg-card flex flex-col justify-between shadow-xs lg:col-span-5\">\n            <div ui-card-content class=\"space-y-6 p-6\">\n              <div class=\"border-border flex items-center justify-between border-b pb-3\">\n                <div class=\"flex items-center gap-2\">\n                  <lucide-icon [img]=\"Cpu\" class=\"text-primary size-4\" />\n                  <span class=\"text-foreground text-sm font-semibold\">Infrastructure Profile</span>\n                </div>\n                <span ui-badge variant=\"outline\" class=\"border-border text-success font-mono text-xs\">\n                  {{ currentStage().sla }}\n                </span>\n              </div>\n\n              <!-- Telemetry Metrics Grid -->\n              <div class=\"grid grid-cols-2 gap-3\">\n                <div class=\"border-border bg-background space-y-1 rounded-lg border p-3\">\n                  <div class=\"text-muted-foreground flex items-center gap-1 text-xs\">\n                    <lucide-icon [img]=\"Activity\" class=\"text-success size-3\" />\n                    <span>Monthly Active Users</span>\n                  </div>\n                  <div class=\"text-foreground font-mono text-base font-bold\">{{ currentStage().users }}</div>\n                </div>\n\n                <div class=\"border-border bg-background space-y-1 rounded-lg border p-3\">\n                  <div class=\"text-muted-foreground flex items-center gap-1 text-xs\">\n                    <lucide-icon [img]=\"Zap\" class=\"text-primary size-3\" />\n                    <span>Throughput (QPS)</span>\n                  </div>\n                  <div class=\"text-foreground font-mono text-base font-bold\">{{ currentStage().qps }}</div>\n                </div>\n\n                <div class=\"border-border bg-background space-y-1 rounded-lg border p-3\">\n                  <div class=\"text-muted-foreground flex items-center gap-1 text-xs\">\n                    <lucide-icon [img]=\"Globe\" class=\"text-info size-3\" />\n                    <span>Edge PoP Nodes</span>\n                  </div>\n                  <div class=\"text-foreground font-mono text-base font-bold\">{{ currentStage().nodes }} PoPs</div>\n                </div>\n\n                <div class=\"border-border bg-background space-y-1 rounded-lg border p-3\">\n                  <div class=\"text-muted-foreground flex items-center gap-1 text-xs\">\n                    <lucide-icon [img]=\"ShieldCheck\" class=\"text-success size-3\" />\n                    <span>Uptime Guarantee</span>\n                  </div>\n                  <div class=\"text-foreground font-mono text-base font-bold\">\n                    {{ currentStage().sla.split(' ')[0] }}\n                  </div>\n                </div>\n              </div>\n\n              <button ui-button class=\"w-full gap-2 shadow-xs\" variant=\"outline\">\n                <span>View Infrastructure Blueprint</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 UiFeatureMetricGrowthStepperComponent {\n  protected readonly cn = cn\n  protected readonly Activity = Activity\n  protected readonly ArrowRight = ArrowRight\n  protected readonly CheckCircle2 = CheckCircle2\n  protected readonly Cpu = Cpu\n  protected readonly Globe = Globe\n  protected readonly ShieldCheck = ShieldCheck\n  protected readonly TrendingUp = TrendingUp\n  protected readonly Zap = Zap\n\n  @Input() title = 'Scale your frontend architecture directly as your traffic expands.'\n  @Input() description =\n    'From single-developer seed prototypes to global multi-region enterprise platforms, unbundled components adapt to your infrastructure requirements.'\n  @Input() set stages(v: GrowthStage[] | undefined) {\n    this.customStages.set(v ? v.map((s) => ({ ...s, features: [...s.features] })) : undefined)\n  }\n  @Input('class') className?: string\n\n  private readonly customStages = signal<GrowthStage[] | undefined>(undefined)\n\n  readonly activeStages = computed(() => this.customStages() ?? DEFAULT_STAGES)\n  readonly selectedStageId = signal('seed')\n\n  readonly currentStage = computed(\n    () => this.activeStages().find((s) => s.id === this.selectedStageId()) ?? this.activeStages()[0]!,\n  )\n\n  get rootClass(): string {\n    return cn('bg-background relative overflow-hidden py-16 sm:py-24', this.className)\n  }\n\n  stepperButtonClass(id: string): string {\n    return cn(\n      'group relative flex flex-col items-start rounded-xl border p-4 text-left transition-[color,background-color,border-color,box-shadow,transform] duration-150 active:scale-[0.98] active:duration-100',\n      this.selectedStageId() === id\n        ? 'border-primary bg-primary/5 ring-primary/20 shadow-xs ring-1'\n        : 'border-border bg-card hover:bg-muted/40 text-muted-foreground hover:text-foreground',\n    )\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/feature-metric-growth-stepper/feature-metric-growth-stepper.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/feature-metric-growth-stepper/index.ts",
      "content": "export { UiFeatureMetricGrowthStepperComponent, type GrowthStage } from './feature-metric-growth-stepper.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/feature-metric-growth-stepper/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"
  ],
  "description": "Interactive scale progression workbench showing infrastructure capacity from Seed to Global Enterprise.",
  "categories": [
    "feature",
    "marketing"
  ]
}