{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"status","type":"registry:ui","title":"Status","description":"A colored dot and a label for showing state, with an optional pulse.","dependencies":["motion@^14.0.0"],"files":[{"path":"components/ui/status.tsx","type":"registry:ui","content":"\"use client\";\n\nimport { motion } from \"motion/react\";\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\ntype StatusTone = \"success\" | \"warning\" | \"info\" | \"danger\" | \"neutral\";\n\nconst statusToneColor: Record<StatusTone, string> = {\n  success: \"bg-status-success\",\n  warning: \"bg-status-warning\",\n  info: \"bg-status-info\",\n  danger: \"bg-status-danger\",\n  neutral: \"bg-status-neutral\",\n};\n\nconst statusToneText: Record<StatusTone, string> = {\n  success: \"text-status-success-text\",\n  warning: \"text-status-warning-text\",\n  info: \"text-status-info-text\",\n  danger: \"text-status-danger-text\",\n  neutral: \"text-muted-foreground\",\n};\n\nfunction Status({\n  tone = \"neutral\",\n  pulse = false,\n  className,\n  children,\n  ...props\n}: React.ComponentProps<\"span\"> & {\n  tone?: StatusTone;\n  pulse?: boolean;\n}) {\n  return (\n    <span\n      data-slot=\"status\"\n      className={cn(\"inline-flex items-center gap-2 text-sm whitespace-nowrap\", className)}\n      {...props}\n    >\n      <span className=\"relative flex size-2 shrink-0\">\n        {pulse && (\n          <motion.span\n            aria-hidden\n            className={cn(\"absolute inset-0 rounded-full\", statusToneColor[tone])}\n            initial={{ scale: 1, opacity: 0.5 }}\n            animate={{ scale: 2.4, opacity: 0 }}\n            transition={{ duration: 1.8, ease: \"easeOut\", repeat: Infinity, repeatDelay: 0.6 }}\n          />\n        )}\n        <span className={cn(\"relative size-2 rounded-full\", statusToneColor[tone])} />\n      </span>\n      {children}\n    </span>\n  );\n}\n\nexport { Status, type StatusTone, statusToneColor, statusToneText };\n"}],"cssVars":{"theme":{"color-status-success":"var(--status-success)","color-status-success-text":"var(--status-success-text)","color-status-warning":"var(--status-warning)","color-status-warning-text":"var(--status-warning-text)","color-status-info":"var(--status-info)","color-status-info-text":"var(--status-info-text)","color-status-danger":"var(--status-danger)","color-status-danger-text":"var(--status-danger-text)","color-status-neutral":"var(--status-neutral)"},"light":{"status-success":"oklch(0.66 0.13 172)","status-success-text":"oklch(0.55 0.11 172)","status-warning":"oklch(0.74 0.16 70)","status-warning-text":"oklch(0.56 0.14 58)","status-info":"oklch(0.6 0.2 266)","status-info-text":"oklch(0.5 0.21 266)","status-danger":"oklch(0.64 0.21 22)","status-danger-text":"oklch(0.56 0.2 24)","status-neutral":"oklch(0.72 0.025 280)"},"dark":{"status-success":"oklch(0.72 0.155 162)","status-success-text":"oklch(0.8 0.14 165)","status-warning":"oklch(0.79 0.16 75)","status-warning-text":"oklch(0.84 0.14 80)","status-info":"oklch(0.64 0.19 258)","status-info-text":"oklch(0.76 0.12 255)","status-danger":"oklch(0.65 0.21 22)","status-danger-text":"oklch(0.74 0.155 22)","status-neutral":"oklch(0.6 0.014 270)"}}}