{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "how-it-works-arrow-flow",
  "title": "How It Works — Arrow Flow",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-vue/blocks/how-it-works-arrow-flow/HowItWorksArrowFlow.vue",
      "content": "<script setup lang=\"ts\">\nimport { ArrowRight, Boxes, FileCheck, GitPullRequest, Send } from 'lucide-vue-next'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent } from '@/components/ui/card'\n\nconst stages = [\n  { icon: Boxes, label: 'Connect', body: 'Read-only credentials to the warehouse.', artefact: 'Schema mirror' },\n  { icon: GitPullRequest, label: 'Define', body: 'Metrics authored as reviewable files.', artefact: 'Merged PR' },\n  { icon: FileCheck, label: 'Certify', body: 'Reconciled against the prior quarters.', artefact: 'Sign-off' },\n  { icon: Send, label: 'Publish', body: 'Rolled out to every consumer at once.', artefact: 'Live metric' },\n]\n</script>\n\n<template>\n  <section data-slot=\"how-it-works-arrow-flow\" class=\"bg-background\">\n    <div class=\"mx-auto max-w-6xl px-6 py-20 lg:py-28\">\n      <div class=\"max-w-2xl\">\n        <Badge variant=\"secondary\">The flow</Badge>\n        <h2 class=\"mt-4 text-3xl font-semibold tracking-tight sm:text-4xl\">Four stages, one artefact each</h2>\n        <p class=\"text-muted-foreground mt-3 text-lg\">\n          Every stage ends in something you can point at, so progress is never a status update.\n        </p>\n      </div>\n\n      <!-- Arrows sit between cells rather than inside cards, so they stay put\n           when a card's copy runs longer. Below md the row becomes a rail. -->\n      <div class=\"mt-12 grid gap-4 md:grid-cols-[1fr_auto_1fr_auto_1fr_auto_1fr] md:items-stretch md:gap-0\">\n        <template v-for=\"(stage, index) in stages\" :key=\"stage.label\">\n          <div class=\"flex items-center gap-4 md:contents\">\n            <Card class=\"flex-1 md:h-full\">\n              <CardContent class=\"p-5\">\n                <span\n                  class=\"border-border text-muted-foreground flex size-9 items-center justify-center rounded-lg border\"\n                  aria-hidden=\"true\"\n                >\n                  <component :is=\"stage.icon\" class=\"size-4\" />\n                </span>\n                <p class=\"mt-4 text-sm font-semibold\">{{ stage.label }}</p>\n                <p class=\"text-muted-foreground mt-1.5 text-xs leading-relaxed\">{{ stage.body }}</p>\n                <p class=\"text-muted-foreground/80 mt-3 font-mono text-xs tracking-wide uppercase\">\n                  → {{ stage.artefact }}\n                </p>\n              </CardContent>\n            </Card>\n          </div>\n\n          <div\n            v-if=\"index < stages.length - 1\"\n            class=\"text-muted-foreground/50 hidden items-center justify-center px-2 md:flex\"\n            aria-hidden=\"true\"\n          >\n            <ArrowRight class=\"size-4\" />\n          </div>\n        </template>\n      </div>\n\n      <div class=\"mt-10\">\n        <Button variant=\"outline\">\n          Walk through a real rollout\n          <ArrowRight class=\"ml-2 size-4\" aria-hidden=\"true\" />\n        </Button>\n      </div>\n    </div>\n  </section>\n</template>\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/HowItWorksArrowFlow.vue"
    }
  ],
  "dependencies": [
    "lucide-vue-next"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/vue/badge.json",
    "https://uipkge.dev/r/vue/button.json",
    "https://uipkge.dev/r/vue/card.json"
  ],
  "description": "Four-stage horizontal flow joined by drawn SVG arrows, each stage carrying an icon tile, a short label, and the artefact it produces, wrapping to a vertical rail on narrow screens.",
  "categories": [
    "marketing"
  ]
}