{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "testimonial-logo-quote-row",
  "title": "Testimonial — Logo & Quote Row",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/testimonial-logo-quote-row/testimonial-logo-quote-row.component.ts",
      "content": "// Three-up inline row pairing each customer wordmark with a one-sentence quote\n// and a compact attribution line, for pages that need proof without a full\n// testimonial block. Port of the Vue/React block 1:1.\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core'\nimport { cn } from '@/lib/utils'\nimport { UiAvatarComponent, UiAvatarFallbackComponent } from '@/ui/avatar/avatar.component'\nimport { UiSeparatorComponent } from '@/ui/separator/separator.component'\n\ninterface LogoQuote {\n  wordmark: string\n  quote: string\n  author: string\n  role: string\n  initials: string\n}\n\n// One sentence each. The row is a proof band, not a testimonial section — if a\n// quote needs two sentences it belongs in a card layout instead.\nconst quotes: LogoQuote[] = [\n  {\n    wordmark: 'Northwind',\n    quote: 'Close starts from a reconciled position now, which it never did before.',\n    author: 'Erin Walsh',\n    role: 'VP Finance',\n    initials: 'EW',\n  },\n  {\n    wordmark: 'Halden',\n    quote: 'Clinic leads answer their own questions without filing a ticket.',\n    author: 'Daniel Brooks',\n    role: 'Head of Analytics',\n    initials: 'DB',\n  },\n  {\n    wordmark: 'Verity',\n    quote: 'Sales and finance forecast off one definition, so review is about the plan.',\n    author: 'Priya Raman',\n    role: 'RevOps Director',\n    initials: 'PR',\n  },\n]\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-testimonial-logo-quote-row, [ui-testimonial-logo-quote-row]',\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: [UiAvatarComponent, UiAvatarFallbackComponent, UiSeparatorComponent],\n  template: `\n    <section data-slot=\"testimonial-logo-quote-row\" [class]=\"rootClass\">\n      <div class=\"mx-auto max-w-6xl px-6 py-16\">\n        <div class=\"grid gap-8 md:grid-cols-3 md:gap-10\">\n          @for (entry of quotes; track entry.wordmark; let index = $index) {\n            <figure class=\"relative\">\n              <span class=\"text-sm font-semibold tracking-[0.18em] uppercase\">{{ entry.wordmark }}</span>\n              <blockquote class=\"mt-4 text-sm leading-relaxed text-pretty\">“{{ entry.quote }}”</blockquote>\n              <figcaption class=\"mt-5 flex items-center gap-3\">\n                <ui-avatar class=\"size-8\">\n                  <ui-avatar-fallback class=\"text-xs\">{{ entry.initials }}</ui-avatar-fallback>\n                </ui-avatar>\n                <div class=\"min-w-0\">\n                  <p class=\"truncate text-xs font-medium\">{{ entry.author }}</p>\n                  <p class=\"text-muted-foreground truncate text-xs\">{{ entry.role }}</p>\n                </div>\n              </figcaption>\n\n              <!-- Vertical rules between columns only, so the row reads as one band. -->\n              @if (index < quotes.length - 1) {\n                <ui-separator orientation=\"vertical\" class=\"absolute top-0 -right-5 hidden h-full md:block\" />\n              }\n            </figure>\n          }\n        </div>\n      </div>\n    </section>\n  `,\n})\nexport class UiTestimonialLogoQuoteRowComponent {\n  protected readonly quotes = quotes\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/testimonial-logo-quote-row/testimonial-logo-quote-row.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/testimonial-logo-quote-row/index.ts",
      "content": "export { UiTestimonialLogoQuoteRowComponent } from './testimonial-logo-quote-row.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/testimonial-logo-quote-row/index.ts"
    }
  ],
  "dependencies": [],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/avatar.json",
    "https://uipkge.dev/r/angular/separator.json"
  ],
  "description": "Three-up inline row pairing each customer wordmark with a one-sentence quote and a compact attribution line, for pages that need proof without a full testimonial block.",
  "categories": [
    "marketing"
  ],
  "deprecated": true,
  "replacedBy": "testimonial"
}