{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "sprint-timeline",
  "title": "Sprint Timeline",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-vue/blocks/sprint-timeline/SprintTimeline.vue",
      "content": "<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Calendar, CheckCircle2, Clock, Users, ArrowRight, Zap, Target } from 'lucide-vue-next'\nimport { Button } from '@/components/ui/button'\nimport { Badge } from '@/components/ui/badge'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Gantt, GanttHeader, GanttTree, GanttTimeline, type GanttTask } from '@/components/ui/gantt'\n\ninterface Props {\n  sprintName?: string\n  startDate?: string\n  endDate?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  sprintName: 'Sprint 42: UI Registry 2.3',\n  startDate: '2026-08-10',\n  endDate: '2026-08-24',\n})\n\nconst sprintTasks = ref<GanttTask[]>([\n  {\n    id: 'sp-1',\n    name: 'Gantt Component Specs & Tokens',\n    startDate: '2026-08-10',\n    endDate: '2026-08-13',\n    progress: 100,\n    status: 'done',\n    priority: 'high',\n    assignee: { name: 'Sarah Connor', initials: 'SC' },\n  },\n  {\n    id: 'sp-2',\n    name: 'Vue 3.5 SFC Implementation',\n    startDate: '2026-08-12',\n    endDate: '2026-08-18',\n    progress: 90,\n    status: 'in-progress',\n    priority: 'urgent',\n    dependencies: ['sp-1'],\n    assignee: { name: 'Marcus Rivera', initials: 'MR' },\n  },\n  {\n    id: 'sp-3',\n    name: 'React 19 Parity Mirror',\n    startDate: '2026-08-14',\n    endDate: '2026-08-19',\n    progress: 80,\n    status: 'in-progress',\n    priority: 'high',\n    dependencies: ['sp-1'],\n    assignee: { name: 'Priya Nair', initials: 'PN' },\n  },\n  {\n    id: 'sp-4',\n    name: 'Mid-Sprint Review & Demo',\n    startDate: '2026-08-17',\n    endDate: '2026-08-17',\n    isMilestone: true,\n    status: 'done',\n  },\n  {\n    id: 'sp-5',\n    name: 'Composed Roadmap & Sprint Blocks',\n    startDate: '2026-08-18',\n    endDate: '2026-08-22',\n    progress: 40,\n    status: 'in-progress',\n    priority: 'medium',\n    dependencies: ['sp-2', 'sp-3'],\n    assignee: { name: 'Sundar Krishnan', initials: 'SK' },\n  },\n  {\n    id: 'sp-6',\n    name: 'Sprint Retrospective & Release',\n    startDate: '2026-08-24',\n    endDate: '2026-08-24',\n    isMilestone: true,\n    status: 'todo',\n    dependencies: ['sp-5'],\n  },\n])\n\nconst completedPoints = computed(() => 28)\nconst totalPoints = computed(() => 35)\nconst daysRemaining = computed(() => 6)\n</script>\n\n<template>\n  <div data-uipkge data-slot=\"sprint-timeline\" class=\"border-border bg-card space-y-5 rounded-xl border p-5 shadow-xs\">\n    <!-- Sprint Header Info -->\n    <div class=\"border-border/60 flex flex-col gap-4 border-b pb-4 sm:flex-row sm:items-center sm:justify-between\">\n      <div class=\"space-y-1\">\n        <div class=\"flex items-center gap-2\">\n          <Badge variant=\"outline\" class=\"text-primary border-primary/30\">\n            <Zap class=\"mr-1 size-3\" />\n            Active Sprint\n          </Badge>\n          <span class=\"text-muted-foreground font-mono text-xs\">{{ startDate }} &rarr; {{ endDate }}</span>\n        </div>\n        <h3 class=\"text-foreground text-lg font-bold\">{{ sprintName }}</h3>\n      </div>\n\n      <div class=\"flex items-center gap-4 font-mono text-xs\">\n        <div class=\"flex items-center gap-1.5\">\n          <Target class=\"text-muted-foreground size-4\" />\n          <span>{{ completedPoints }} / {{ totalPoints }} Story Points</span>\n        </div>\n        <div class=\"flex items-center gap-1.5 font-semibold text-amber-500\">\n          <Clock class=\"size-4\" />\n          <span>{{ daysRemaining }} Days Left</span>\n        </div>\n      </div>\n    </div>\n\n    <!-- Sprint Gantt Grid -->\n    <Gantt :tasks=\"sprintTasks\" scale=\"day\" :row-height=\"38\" :tree-width=\"260\" class=\"h-72 border-none shadow-none\">\n      <div class=\"flex min-h-0 flex-1 overflow-hidden\">\n        <GanttTree :show-priority=\"true\" />\n        <GanttTimeline :show-today-line=\"true\" :show-dependencies=\"true\" />\n      </div>\n    </Gantt>\n  </div>\n</template>\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/sprint-timeline/SprintTimeline.vue"
    },
    {
      "path": "packages/registry-vue/blocks/sprint-timeline/index.ts",
      "content": "export { default as SprintTimeline } from './SprintTimeline.vue'\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/sprint-timeline/index.ts"
    }
  ],
  "dependencies": [
    "lucide-vue-next"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/vue/gantt.json",
    "https://uipkge.dev/r/vue/badge.json",
    "https://uipkge.dev/r/vue/button.json",
    "https://uipkge.dev/r/vue/card.json"
  ],
  "description": "Agile sprint tracking timeline block: 2-week deliverable Gantt schedule with story point burndown indicators, milestone demos, dependency handoffs, and assignee tags.",
  "categories": [
    "dashboard",
    "data"
  ]
}