{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "employee-pulse-survey-results",
  "title": "Employee Pulse Survey Results",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/employee-pulse-survey-results/employee-pulse-survey-results.component.ts",
      "content": "// Culture Amp style company pulse and eNPS engagement survey results dashboard with executive\n// KPI scorecards, a department sentiment heatmap, and priority engagement drivers with action\n// items. Port of the React block 1:1.\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport {\n  AlertCircle,\n  Award,\n  FileDown,\n  HeartHandshake,\n  Lightbulb,\n  LucideAngularModule,\n  ShieldCheck,\n  TrendingUp,\n  Users,\n  Zap,\n  type LucideIconData,\n} from 'lucide-angular'\nimport { cn } from '@/lib/utils'\nimport { UiBadgeComponent, type BadgeVariant } from '@/ui/badge/badge.component'\nimport { UiButtonComponent } from '@/ui/button/button.component'\nimport {\n  UiCardComponent,\n  UiCardContentComponent,\n  UiCardDescriptionComponent,\n  UiCardHeaderComponent,\n  UiCardTitleComponent,\n} from '@/ui/card/card.component'\nimport { UiProgressComponent } from '@/ui/progress/progress.component'\nimport {\n  UiTableBodyComponent,\n  UiTableCellComponent,\n  UiTableComponent,\n  UiTableHeadComponent,\n  UiTableHeaderComponent,\n  UiTableRowComponent,\n} from '@/ui/table/table.component'\n\ninterface PrimaryMetric {\n  id: string\n  title: string\n  value: string\n  unit?: string\n  badgeText: string\n  badgeVariant: BadgeVariant\n  detail: string\n  subtext: string\n  progress: number\n  icon: LucideIconData\n}\n\ninterface DepartmentRow {\n  name: string\n  responseCount: string\n  participationRate: string\n  cultureValues: number\n  managementEffectiveness: number\n  workLifeBalance: number\n  compensationGrowth: number\n  enpsFormatted: string\n  enpsRank: string\n}\n\ninterface DriverItem {\n  id: string\n  title: string\n  score: string\n  tag: string\n  impact: string\n  description: string\n  benchmarkDiff: string\n}\n\ninterface OpportunityItem {\n  id: string\n  title: string\n  score: string\n  statusBadge: string\n  owner: string\n  targetDate: string\n  actionSummary: string\n}\n\nconst primaryMetrics: PrimaryMetric[] = [\n  {\n    id: 'enps-score',\n    title: 'Employee Net Promoter Score',\n    value: '+54',\n    unit: 'eNPS',\n    badgeText: '+22 vs tech benchmark',\n    badgeVariant: 'success',\n    detail: '64% Promoters · 26% Passives · 10% Detractors',\n    subtext: 'Benchmark: +32 eNPS across peer tech scaleups',\n    progress: 77,\n    icon: TrendingUp,\n  },\n  {\n    id: 'engagement-index',\n    title: 'Overall Engagement Index',\n    value: '86%',\n    unit: 'Favorable',\n    badgeText: '+4% vs Q2',\n    badgeVariant: 'success',\n    detail: '86% Favorable · 10% Neutral · 4% Unfavorable',\n    subtext: '4.3 / 5.0 mean agreement across all survey items',\n    progress: 86,\n    icon: HeartHandshake,\n  },\n  {\n    id: 'participation-rate',\n    title: 'Survey Participation Rate',\n    value: '94%',\n    unit: '139 / 148',\n    badgeText: 'High Confidence',\n    badgeVariant: 'secondary',\n    detail: '94% across 5 active departments',\n    subtext: 'Statistically significant sample size (p < 0.01)',\n    progress: 94,\n    icon: Users,\n  },\n  {\n    id: 'retention-intent',\n    title: 'Intent to Stay 2+ Years',\n    value: '88%',\n    unit: 'Retention',\n    badgeText: '+6% vs Q2',\n    badgeVariant: 'success',\n    detail: '88% positive retention sentiment',\n    subtext: 'Low voluntary flight risk across engineering & product',\n    progress: 88,\n    icon: ShieldCheck,\n  },\n]\n\nconst departments: DepartmentRow[] = [\n  {\n    name: 'Engineering',\n    responseCount: '46 / 48 responses',\n    participationRate: '96%',\n    cultureValues: 92,\n    managementEffectiveness: 88,\n    workLifeBalance: 84,\n    compensationGrowth: 74,\n    enpsFormatted: '+62',\n    enpsRank: 'Top Quartile',\n  },\n  {\n    name: 'Product & Design',\n    responseCount: '28 / 30 responses',\n    participationRate: '93%',\n    cultureValues: 94,\n    managementEffectiveness: 91,\n    workLifeBalance: 82,\n    compensationGrowth: 76,\n    enpsFormatted: '+58',\n    enpsRank: 'Top Quartile',\n  },\n  {\n    name: 'Marketing',\n    responseCount: '22 / 24 responses',\n    participationRate: '92%',\n    cultureValues: 89,\n    managementEffectiveness: 85,\n    workLifeBalance: 86,\n    compensationGrowth: 71,\n    enpsFormatted: '+48',\n    enpsRank: 'Above Average',\n  },\n  {\n    name: 'Sales & GTM',\n    responseCount: '25 / 26 responses',\n    participationRate: '96%',\n    cultureValues: 86,\n    managementEffectiveness: 84,\n    workLifeBalance: 78,\n    compensationGrowth: 68,\n    enpsFormatted: '+45',\n    enpsRank: 'Above Average',\n  },\n  {\n    name: 'Operations',\n    responseCount: '18 / 20 responses',\n    participationRate: '90%',\n    cultureValues: 90,\n    managementEffectiveness: 87,\n    workLifeBalance: 88,\n    compensationGrowth: 72,\n    enpsFormatted: '+52',\n    enpsRank: 'Top Quartile',\n  },\n]\n\nconst topDrivers: DriverItem[] = [\n  {\n    id: 'driver-1',\n    title: 'Psychological safety & peer collaboration',\n    score: '96% favorable',\n    tag: 'Highest Scored Driver',\n    impact: 'Highest correlation with company eNPS (+0.74 r)',\n    description:\n      'Squads report high mutual trust, blameless incident reviews, and transparent pairing culture without fear of failure.',\n    benchmarkDiff: '+14% vs tech benchmark',\n  },\n  {\n    id: 'driver-2',\n    title: 'Mission alignment & executive transparency',\n    score: '92% favorable',\n    tag: 'Core Driver',\n    impact: 'Strongest predictor of organizational retention',\n    description:\n      'Bi-weekly all-hands, transparent financials, and crisp quarterly OKRs provide unequivocal clarity on company trajectory.',\n    benchmarkDiff: '+11% vs tech benchmark',\n  },\n  {\n    id: 'driver-3',\n    title: 'Manager trust & day-to-day autonomy',\n    score: '90% favorable',\n    tag: 'Core Driver',\n    impact: 'Key catalyst for execution velocity & morale',\n    description:\n      'Team members highlight minimal micromanagement, supportive weekly 1:1 coaching, and autonomy over technical decisions.',\n    benchmarkDiff: '+9% vs tech benchmark',\n  },\n]\n\nconst opportunityAreas: OpportunityItem[] = [\n  {\n    id: 'opp-1',\n    title: 'Clarity on promotion cycles and IC compensation bands',\n    score: '68% favorable',\n    statusBadge: 'Action plan active',\n    owner: 'People Ops & Total Rewards',\n    targetDate: 'Q4 2026 Rollout',\n    actionSummary:\n      'Publish transparent engineering & IC level matrices with defined salary bands, equity guidelines, and semi-annual calibration windows.',\n  },\n  {\n    id: 'opp-2',\n    title: 'Cross-functional roadmap visibility & tool sprawl',\n    score: '71% favorable',\n    statusBadge: 'Action plan active',\n    owner: 'Product Ops & Platform Squad',\n    targetDate: 'End of Q3',\n    actionSummary:\n      'Consolidate sprint tracking into unified Linear workspaces and establish bi-weekly cross-discipline demo showcases.',\n  },\n  {\n    id: 'opp-3',\n    title: 'Focus time & meeting cadence optimization',\n    score: '73% favorable',\n    statusBadge: 'Action plan active',\n    owner: 'Engineering Leadership Council',\n    targetDate: 'Active Trial',\n    actionSummary:\n      'Implement company-wide \"No Meeting Wednesdays\" and audit recurring status meetings in favor of asynchronous updates.',\n  },\n]\n\nfunction getScoreBadgeClass(score: number): string {\n  if (score >= 80) return 'border-success/20 bg-success/10 text-success'\n  if (score >= 70) return 'border-warning/20 bg-warning/10 text-warning'\n  return 'border-destructive/20 bg-destructive/10 text-destructive'\n}\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-employee-pulse-survey-results, [ui-employee-pulse-survey-results]',\n  standalone: true,\n  // React renders the root <div> 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    UiCardDescriptionComponent,\n    UiCardHeaderComponent,\n    UiCardTitleComponent,\n    UiProgressComponent,\n    UiTableComponent,\n    UiTableHeaderComponent,\n    UiTableBodyComponent,\n    UiTableRowComponent,\n    UiTableHeadComponent,\n    UiTableCellComponent,\n  ],\n  template: `\n    <div data-uipkge=\"\" data-slot=\"employee-pulse-survey-results\" [class]=\"rootClass\">\n      <!-- Header Section -->\n      <div ui-card class=\"border-border bg-card shadow-xs\">\n        <div ui-card-content class=\"p-6\">\n          <div class=\"flex flex-col gap-6 lg:flex-row lg:items-center lg:justify-between\">\n            <div class=\"space-y-1.5\">\n              <div class=\"flex flex-wrap items-center gap-2.5\">\n                <h2 class=\"text-foreground text-xl font-bold tracking-tight sm:text-2xl\">\n                  Company Pulse &amp; eNPS Engagement Survey\n                </h2>\n                <span ui-badge variant=\"outline\" [wrap]=\"true\" class=\"font-mono text-xs\">Q3 2026</span>\n              </div>\n              <p class=\"text-muted-foreground text-xs leading-relaxed sm:text-sm\">\n                Q3 2026 Pulse Survey · 94% Participation Rate · 139 / 148 Responses\n              </p>\n            </div>\n\n            <div class=\"flex flex-wrap items-center gap-3\">\n              <div\n                class=\"border-success/30 bg-success/10 text-success dark:text-foreground flex min-w-0 items-center gap-2 rounded-lg border px-3.5 py-2 shadow-xs\"\n              >\n                <lucide-icon [img]=\"TrendingUp\" class=\"text-success size-4 shrink-0\" />\n                <span class=\"text-sm font-bold tracking-tight tabular-nums\">+54 eNPS · Excellent</span>\n              </div>\n              <button ui-button variant=\"outline\" size=\"sm\" class=\"gap-2 shadow-xs\">\n                <lucide-icon [img]=\"FileDown\" class=\"size-4\" />\n                <span>Export Executive Summary</span>\n              </button>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- 4 Primary Engagement KPI Cards -->\n      <div class=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n        @for (metric of primaryMetrics; track metric.id) {\n          <div ui-card class=\"border-border bg-card hover:border-border/80 shadow-xs transition-colors\">\n            <div ui-card-header class=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n              <h3 ui-card-title class=\"text-muted-foreground text-xs font-medium\">{{ metric.title }}</h3>\n              <lucide-icon [img]=\"metric.icon\" class=\"text-muted-foreground size-4\" />\n            </div>\n            <div ui-card-content class=\"space-y-3\">\n              <div class=\"flex flex-wrap items-baseline justify-between gap-2\">\n                <div class=\"flex items-baseline gap-1.5\">\n                  <span class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums sm:text-3xl\">{{\n                    metric.value\n                  }}</span>\n                  @if (metric.unit) {\n                    <span class=\"text-muted-foreground text-xs font-medium\">{{ metric.unit }}</span>\n                  }\n                </div>\n                <span ui-badge [variant]=\"metric.badgeVariant\" [wrap]=\"true\" class=\"text-xs font-medium tabular-nums\">{{\n                  metric.badgeText\n                }}</span>\n              </div>\n\n              <div class=\"space-y-1.5\">\n                <ui-progress [value]=\"metric.progress\" class=\"h-1.5 w-full\" />\n                <div class=\"space-y-0.5 pt-0.5\">\n                  <p class=\"text-foreground text-xs leading-normal font-medium\">{{ metric.detail }}</p>\n                  <p class=\"text-muted-foreground text-xs leading-normal\">{{ metric.subtext }}</p>\n                </div>\n              </div>\n            </div>\n          </div>\n        }\n      </div>\n\n      <!-- Department Sentiment Heatmap Table -->\n      <div ui-card class=\"border-border bg-card shadow-xs\">\n        <div ui-card-header class=\"pb-4\">\n          <div class=\"flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between\">\n            <div>\n              <div class=\"flex min-w-0 items-center gap-2\">\n                <h3 ui-card-title class=\"text-base font-semibold\">Department Sentiment Heatmap</h3>\n                <span ui-badge variant=\"outline\" [wrap]=\"true\" class=\"text-xs font-normal\"\n                  >5 Departments · 139 Responses</span\n                >\n              </div>\n              <p ui-card-description class=\"mt-1 text-xs\">\n                Culture Amp style multidimensional sentiment matrix mapped across key operational pillars.\n              </p>\n            </div>\n\n            <!-- Heatmap Legend -->\n            <div class=\"flex flex-wrap items-center gap-2 pt-1 text-xs sm:pt-0\">\n              <span class=\"text-muted-foreground font-medium\">Sentiment Scale:</span>\n              <div\n                class=\"border-success/20 bg-success/10 text-success flex items-center gap-1 rounded-md border px-2 py-0.5\"\n              >\n                <span class=\"bg-success size-1.5 rounded-full\"></span>\n                <span class=\"font-medium\">Favorable (≥80%)</span>\n              </div>\n              <div\n                class=\"border-warning/20 bg-warning/10 text-warning flex items-center gap-1 rounded-md border px-2 py-0.5\"\n              >\n                <span class=\"bg-warning size-1.5 rounded-full\"></span>\n                <span class=\"font-medium\">Moderate (70-79%)</span>\n              </div>\n              <div\n                class=\"border-destructive/20 bg-destructive/10 text-destructive flex items-center gap-1 rounded-md border px-2 py-0.5\"\n              >\n                <span class=\"bg-destructive size-1.5 rounded-full\"></span>\n                <span class=\"font-medium\">Opportunity (&lt;70%)</span>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div ui-card-content class=\"p-0\">\n          <div class=\"border-border overflow-x-auto border-t\">\n            <table ui-table>\n              <thead ui-table-header class=\"bg-muted/40\">\n                <tr ui-table-row class=\"hover:bg-transparent\">\n                  <th ui-table-head class=\"text-foreground w-60 text-xs font-semibold\">\n                    Department &amp; Participation\n                  </th>\n                  <th ui-table-head class=\"text-foreground text-center text-xs font-semibold\">Culture &amp; Values</th>\n                  <th ui-table-head class=\"text-foreground text-center text-xs font-semibold\">\n                    Management Effectiveness\n                  </th>\n                  <th ui-table-head class=\"text-foreground text-center text-xs font-semibold\">Work-Life Balance</th>\n                  <th ui-table-head class=\"text-foreground text-center text-xs font-semibold\">\n                    Compensation &amp; Growth\n                  </th>\n                  <th ui-table-head class=\"text-foreground text-right text-xs font-semibold\">Overall eNPS Score</th>\n                </tr>\n              </thead>\n              <tbody ui-table-body>\n                @for (dept of departments; track dept.name) {\n                  <tr ui-table-row class=\"hover:bg-muted/30\">\n                    <td ui-table-cell class=\"py-3.5\">\n                      <div class=\"space-y-0.5\">\n                        <p class=\"text-foreground text-sm font-semibold\">{{ dept.name }}</p>\n                        <p class=\"text-muted-foreground text-xs tabular-nums\">\n                          {{ dept.responseCount }} ·\n                          <span class=\"text-foreground font-medium\">{{ dept.participationRate }}</span>\n                        </p>\n                      </div>\n                    </td>\n                    <td ui-table-cell class=\"py-3.5 text-center\">\n                      <div class=\"inline-flex flex-col items-center gap-1\">\n                        <div [class]=\"scoreBadgeClass(dept.cultureValues)\">{{ dept.cultureValues }}%</div>\n                      </div>\n                    </td>\n                    <td ui-table-cell class=\"py-3.5 text-center\">\n                      <div class=\"inline-flex flex-col items-center gap-1\">\n                        <div [class]=\"scoreBadgeClass(dept.managementEffectiveness)\">\n                          {{ dept.managementEffectiveness }}%\n                        </div>\n                      </div>\n                    </td>\n                    <td ui-table-cell class=\"py-3.5 text-center\">\n                      <div class=\"inline-flex flex-col items-center gap-1\">\n                        <div [class]=\"scoreBadgeClass(dept.workLifeBalance)\">{{ dept.workLifeBalance }}%</div>\n                      </div>\n                    </td>\n                    <td ui-table-cell class=\"py-3.5 text-center\">\n                      <div class=\"inline-flex flex-col items-center gap-1\">\n                        <div [class]=\"scoreBadgeClass(dept.compensationGrowth)\">{{ dept.compensationGrowth }}%</div>\n                      </div>\n                    </td>\n                    <td ui-table-cell class=\"py-3.5 text-right\">\n                      <div class=\"flex flex-col items-end gap-1\">\n                        <div\n                          class=\"border-success/30 bg-success/10 text-success inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-bold tabular-nums\"\n                        >\n                          <lucide-icon [img]=\"TrendingUp\" class=\"text-success size-3\" />\n                          <span>{{ dept.enpsFormatted }} eNPS</span>\n                        </div>\n                        <span class=\"text-muted-foreground text-xs font-normal\">{{ dept.enpsRank }}</span>\n                      </div>\n                    </td>\n                  </tr>\n                }\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n\n      <!-- Top Engagement Drivers & Action Items -->\n      <div class=\"grid grid-cols-1 gap-6 lg:grid-cols-2\">\n        <!-- Left Column: Top Engagement Drivers -->\n        <div ui-card class=\"border-border bg-card shadow-xs\">\n          <div ui-card-header class=\"pb-4\">\n            <div class=\"flex flex-wrap items-center justify-between gap-2\">\n              <div class=\"space-y-1\">\n                <div class=\"flex min-w-0 items-center gap-2\">\n                  <h3 ui-card-title class=\"text-base font-semibold\">Top Engagement Drivers</h3>\n                  <span ui-badge variant=\"success\" [wrap]=\"true\" class=\"text-xs\">Organizational Strengths</span>\n                </div>\n                <p ui-card-description class=\"text-xs\">\n                  Highest scored sentiment drivers providing outsized positive impact on overall eNPS.\n                </p>\n              </div>\n              <lucide-icon [img]=\"Award\" class=\"text-success size-5 shrink-0\" />\n            </div>\n          </div>\n\n          <div ui-card-content class=\"space-y-4\">\n            @for (driver of topDrivers; track driver.id) {\n              <div class=\"bg-muted/30 border-border/80 space-y-2.5 rounded-lg border p-4 shadow-xs\">\n                <div class=\"flex flex-wrap items-start justify-between gap-2\">\n                  <div class=\"space-y-1\">\n                    <div class=\"flex flex-wrap items-center gap-2\">\n                      <h4 class=\"text-foreground text-sm font-semibold\">{{ driver.title }}</h4>\n                      <span ui-badge variant=\"outline\" [wrap]=\"true\" class=\"text-xs font-normal\">{{ driver.tag }}</span>\n                    </div>\n                    <p class=\"text-muted-foreground text-xs\">{{ driver.impact }}</p>\n                  </div>\n\n                  <div\n                    class=\"border-success/20 bg-success/10 text-success flex shrink-0 items-center gap-1 rounded-md border px-2.5 py-1 text-xs font-bold tabular-nums\"\n                  >\n                    <lucide-icon [img]=\"TrendingUp\" class=\"text-success size-3\" />\n                    <span>{{ driver.score }}</span>\n                  </div>\n                </div>\n\n                <p class=\"text-muted-foreground text-xs leading-relaxed\">{{ driver.description }}</p>\n\n                <div class=\"border-border/60 flex items-center justify-between border-t pt-2 text-xs\">\n                  <span class=\"text-muted-foreground\">Peer Benchmark:</span>\n                  <span class=\"text-success font-semibold tabular-nums\">{{ driver.benchmarkDiff }}</span>\n                </div>\n              </div>\n            }\n          </div>\n        </div>\n\n        <!-- Right Column: Priority Opportunity Areas -->\n        <div ui-card class=\"border-border bg-card shadow-xs\">\n          <div ui-card-header class=\"pb-4\">\n            <div class=\"flex flex-wrap items-center justify-between gap-2\">\n              <div class=\"space-y-1\">\n                <div class=\"flex min-w-0 items-center gap-2\">\n                  <h3 ui-card-title class=\"text-base font-semibold\">Priority Opportunity Areas</h3>\n                  <span ui-badge variant=\"warning\" [wrap]=\"true\" class=\"text-xs\">Active Remediation</span>\n                </div>\n                <p ui-card-description class=\"text-xs\">\n                  Key focus areas requiring leadership follow-through and documented action plans.\n                </p>\n              </div>\n              <lucide-icon [img]=\"Lightbulb\" class=\"text-warning size-5 shrink-0\" />\n            </div>\n          </div>\n\n          <div ui-card-content class=\"space-y-4\">\n            @for (opp of opportunityAreas; track opp.id) {\n              <div class=\"bg-muted/30 border-border/80 space-y-2.5 rounded-lg border p-4 shadow-xs\">\n                <div class=\"flex flex-wrap items-start justify-between gap-2\">\n                  <div class=\"space-y-1\">\n                    <h4 class=\"text-foreground text-sm font-semibold\">{{ opp.title }}</h4>\n                    <div class=\"flex flex-wrap items-center gap-2\">\n                      <span ui-badge variant=\"warning\" [wrap]=\"true\" class=\"text-xs font-medium\">{{\n                        opp.statusBadge\n                      }}</span>\n                      <span class=\"text-muted-foreground text-xs\">\n                        Target: <strong class=\"text-foreground font-medium\">{{ opp.targetDate }}</strong>\n                      </span>\n                    </div>\n                  </div>\n\n                  <div\n                    class=\"border-warning/20 bg-warning/10 text-warning flex shrink-0 items-center gap-1 rounded-md border px-2.5 py-1 text-xs font-bold tabular-nums\"\n                  >\n                    <lucide-icon [img]=\"AlertCircle\" class=\"text-warning size-3\" />\n                    <span>{{ opp.score }}</span>\n                  </div>\n                </div>\n\n                <div class=\"bg-card/70 border-border/60 space-y-1 rounded-md border p-2.5\">\n                  <div class=\"text-foreground flex items-center gap-1 text-xs font-medium\">\n                    <lucide-icon [img]=\"Zap\" class=\"text-primary size-3 shrink-0\" />\n                    <span>Action Plan &amp; Deliverables</span>\n                  </div>\n                  <p class=\"text-muted-foreground text-xs leading-relaxed\">{{ opp.actionSummary }}</p>\n                </div>\n\n                <div class=\"border-border/60 flex items-center justify-between border-t pt-2 text-xs\">\n                  <span class=\"text-muted-foreground\">Action Owner:</span>\n                  <span class=\"text-foreground font-medium\">{{ opp.owner }}</span>\n                </div>\n              </div>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  `,\n})\nexport class UiEmployeePulseSurveyResultsComponent {\n  protected readonly AlertCircle = AlertCircle\n  protected readonly Award = Award\n  protected readonly FileDown = FileDown\n  protected readonly Lightbulb = Lightbulb\n  protected readonly TrendingUp = TrendingUp\n  protected readonly Zap = Zap\n\n  protected readonly primaryMetrics = primaryMetrics\n  protected readonly departments = departments\n  protected readonly topDrivers = topDrivers\n  protected readonly opportunityAreas = opportunityAreas\n\n  @Input('class') className?: string\n\n  get rootClass(): string {\n    return cn('w-full space-y-6', this.className)\n  }\n\n  scoreBadgeClass(score: number): string {\n    return cn(\n      'flex min-w-[72px] items-center justify-center rounded-md border px-3 py-1.5 text-xs font-bold tabular-nums shadow-xs',\n      getScoreBadgeClass(score),\n    )\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/employee-pulse-survey-results/employee-pulse-survey-results.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/employee-pulse-survey-results/index.ts",
      "content": "export { UiEmployeePulseSurveyResultsComponent } from './employee-pulse-survey-results.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/employee-pulse-survey-results/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",
    "https://uipkge.dev/r/angular/table.json"
  ],
  "description": "Culture Amp style company pulse and eNPS engagement survey results dashboard featuring executive KPI scorecards, department sentiment heatmaps, and priority engagement drivers with action items.",
  "categories": [
    "hr",
    "app",
    "dashboard",
    "analytics"
  ]
}