{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "timeline",
  "type": "registry:ui",
  "title": "Timeline",
  "description": "Static chronological events with independent status, connectors, descriptions, and metadata.",
  "dependencies": [],
  "registryDependencies": [
    "http://127.0.0.1:3000/r/core.json"
  ],
  "files": [
    {
      "path": "src/registry/sources/control-ui/ui/timeline.tsx",
      "target": "@components/control-ui/ui/timeline.tsx",
      "type": "registry:ui",
      "content": "import type {\n  TimelineContentProps,\n  TimelineDescriptionProps,\n  TimelineIndicatorProps,\n  TimelineItemProps,\n  TimelineMetaProps,\n  TimelineProps,\n  TimelineSeparatorProps,\n  TimelineTitleProps,\n} from \"@/components/control-ui/contracts\";\nimport { cn } from \"@/components/control-ui/lib/cn\";\nimport { skinSlot } from \"@/components/control-ui/skin\";\n\nexport function Timeline({ className, ...props }: TimelineProps) {\n  return (\n    <ol\n      data-control-ui=\"timeline\"\n      data-slot=\"root\"\n      {...props}\n      className={cn(\"grid min-w-0\", skinSlot(\"timeline\", \"root\", {}), className)}\n    />\n  );\n}\n\nexport function TimelineItem({ state = \"neutral\", className, ...props }: TimelineItemProps) {\n  return (\n    <li\n      data-control-ui=\"timeline\"\n      data-slot=\"item\"\n      data-state={state}\n      {...props}\n      className={cn(\n        \"group/timeline-item relative grid min-w-0 grid-cols-[1rem_minmax(0,1fr)] gap-x-3 pb-5 last:pb-0\",\n        skinSlot(\"timeline\", \"item\", { state }),\n        className,\n      )}\n    />\n  );\n}\n\nexport function TimelineIndicator({ className, ...props }: TimelineIndicatorProps) {\n  return (\n    <span\n      aria-hidden=\"true\"\n      data-control-ui=\"timeline\"\n      data-slot=\"indicator\"\n      {...props}\n      className={cn(\n        \"relative z-10 col-start-1 row-start-1 flex size-4 shrink-0 items-center justify-center rounded-full bg-background text-muted-foreground [&_svg]:size-4 group-data-[state=error]/timeline-item:text-destructive-text group-data-[state=running]/timeline-item:text-primary-text group-data-[state=success]/timeline-item:text-foreground\",\n        skinSlot(\"timeline\", \"indicator\", {}),\n        className,\n      )}\n    />\n  );\n}\n\nexport function TimelineSeparator({ className, ...props }: TimelineSeparatorProps) {\n  return (\n    <span\n      aria-hidden=\"true\"\n      data-control-ui=\"timeline\"\n      data-slot=\"separator\"\n      {...props}\n      className={cn(\n        \"absolute top-5 bottom-0 left-[calc(0.5rem-0.5px)] col-start-1 w-px bg-border group-last/timeline-item:hidden\",\n        skinSlot(\"timeline\", \"separator\", {}),\n        className,\n      )}\n    />\n  );\n}\n\nexport function TimelineContent({ className, ...props }: TimelineContentProps) {\n  return (\n    <div\n      data-control-ui=\"timeline\"\n      data-slot=\"content\"\n      {...props}\n      className={cn(\"col-start-2 row-start-1 grid min-w-0 gap-1\", skinSlot(\"timeline\", \"content\", {}), className)}\n    />\n  );\n}\n\nexport function TimelineTitle({ className, ...props }: TimelineTitleProps) {\n  return (\n    <div\n      data-control-ui=\"timeline\"\n      data-slot=\"title\"\n      {...props}\n      className={cn(\"min-w-0 text-label font-medium leading-5 text-foreground\", skinSlot(\"timeline\", \"title\", {}), className)}\n    />\n  );\n}\n\nexport function TimelineDescription({ className, ...props }: TimelineDescriptionProps) {\n  return (\n    <div\n      data-control-ui=\"timeline\"\n      data-slot=\"description\"\n      {...props}\n      className={cn(\"min-w-0 wrap-anywhere text-label leading-5 text-muted-foreground\", skinSlot(\"timeline\", \"description\", {}), className)}\n    />\n  );\n}\n\nexport function TimelineMeta({ className, ...props }: TimelineMetaProps) {\n  return (\n    <div\n      data-control-ui=\"timeline\"\n      data-slot=\"meta\"\n      {...props}\n      className={cn(\"mt-1 flex min-w-0 flex-wrap items-center gap-1.5\", skinSlot(\"timeline\", \"meta\", {}), className)}\n    />\n  );\n}\n"
    }
  ],
  "meta": {}
}
