{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "use-cases-role-cards",
  "title": "Use Cases Role Cards",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/use-cases-role-cards/use-cases-role-cards.component.ts",
      "content": "// Grid of role cards, each stating the job to be done, the first week of work,\n// and the metric that role is measured on, so a reader can self-select without\n// a tab interaction. Port of the React block 1:1 (static, no client state).\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { ArrowUpRight, LucideAngularModule } from 'lucide-angular'\nimport { cn } from '@/lib/utils'\nimport { UiAvatarComponent, UiAvatarFallbackComponent } from '@/ui/avatar/avatar.component'\nimport { UiBadgeComponent } from '@/ui/badge/badge.component'\nimport { UiButtonComponent } from '@/ui/button/button.component'\nimport { UiCardComponent, UiCardContentComponent } from '@/ui/card/card.component'\nimport { UiSeparatorComponent } from '@/ui/separator/separator.component'\n\ninterface RoleCard {\n  initials: string\n  role: string\n  job: string\n  week: string\n  metric: string\n}\n\nconst roles: RoleCard[] = [\n  {\n    initials: 'FC',\n    role: 'Financial controller',\n    job: 'Close the books without a reconciliation relay.',\n    week: 'Reconcile revenue and margin against the ledger, then lock the period.',\n    metric: 'Days to close',\n  },\n  {\n    initials: 'AL',\n    role: 'Analytics lead',\n    job: 'Stop being a query queue for the rest of the company.',\n    week: 'Publish the ten numbers that generate the most tickets as certified metrics.',\n    metric: 'Ad-hoc requests per month',\n  },\n  {\n    initials: 'RO',\n    role: 'RevOps',\n    job: 'Make forecast review about the forecast.',\n    week: 'Agree one pipeline definition with finance and snapshot it weekly.',\n    metric: 'Forecast accuracy band',\n  },\n  {\n    initials: 'DE',\n    role: 'Data engineer',\n    job: 'Stop owning an undocumented reporting service.',\n    week: 'Move definitions into the repo and delete the bespoke extract jobs.',\n    metric: 'Pipelines maintained',\n  },\n]\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-use-cases-role-cards, [ui-use-cases-role-cards]',\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    UiAvatarComponent,\n    UiAvatarFallbackComponent,\n    UiBadgeComponent,\n    UiButtonComponent,\n    UiCardComponent,\n    UiCardContentComponent,\n    UiSeparatorComponent,\n  ],\n  template: `\n    <section data-slot=\"use-cases-role-cards\" [class]=\"rootClass\">\n      <div class=\"mx-auto max-w-6xl px-6 py-20 lg:py-28\">\n        <div class=\"max-w-2xl\">\n          <span ui-badge variant=\"secondary\">By role</span>\n          <h2 class=\"mt-4 text-3xl font-semibold tracking-tight sm:text-4xl\">Find the card with your job on it</h2>\n          <p class=\"text-muted-foreground mt-3 text-lg\">\n            Each one names the work of the first week and the number that role is actually judged on.\n          </p>\n        </div>\n\n        <div class=\"mt-10 grid gap-4 sm:grid-cols-2\">\n          @for (role of roles; track role.role) {\n            <div ui-card class=\"group\">\n              <div ui-card-content class=\"flex h-full flex-col p-6\">\n                <div class=\"flex items-center gap-3\">\n                  <ui-avatar class=\"size-9\">\n                    <ui-avatar-fallback class=\"text-xs\">{{ role.initials }}</ui-avatar-fallback>\n                  </ui-avatar>\n                  <p class=\"text-sm font-semibold\">{{ role.role }}</p>\n                </div>\n\n                <p class=\"mt-4 text-base leading-snug font-medium text-balance\">{{ role.job }}</p>\n\n                <ui-separator class=\"my-4\" />\n\n                <p class=\"text-muted-foreground font-mono text-xs tracking-[0.14em] uppercase\">First week</p>\n                <p class=\"text-muted-foreground mt-2 text-sm leading-relaxed\">{{ role.week }}</p>\n\n                <div class=\"border-border mt-auto flex items-center justify-between gap-3 border-t pt-4\">\n                  <span class=\"text-xs\">\n                    <span class=\"text-muted-foreground\">Measured on </span>\n                    <span class=\"font-medium\">{{ role.metric }}</span>\n                  </span>\n                  <button ui-button variant=\"ghost\" size=\"sm\" class=\"h-auto shrink-0 px-2 py-1\">\n                    Read\n                    <lucide-icon\n                      [img]=\"ArrowUpRight\"\n                      class=\"ml-1 size-3.5 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5\"\n                    />\n                  </button>\n                </div>\n              </div>\n            </div>\n          }\n        </div>\n      </div>\n    </section>\n  `,\n})\nexport class UiUseCasesRoleCardsComponent {\n  protected readonly ArrowUpRight = ArrowUpRight\n  protected readonly roles = roles\n\n  @Input('class') className?: string\n\n  get rootClass(): string {\n    return cn('bg-background', this.className)\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/use-cases-role-cards/use-cases-role-cards.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/use-cases-role-cards/index.ts",
      "content": "export { UiUseCasesRoleCardsComponent } from './use-cases-role-cards.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/use-cases-role-cards/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/avatar.json",
    "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/separator.json"
  ],
  "description": "Grid of role cards, each stating the job to be done, the first week of work, and the metric that role is measured on, so a reader can self-select without a tab interaction.",
  "categories": [
    "marketing"
  ],
  "deprecated": true,
  "replacedBy": "use-cases"
}