{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "command-waitlist",
  "type": "registry:component",
  "title": "Command waitlist",
  "description": "A React terminal styled waitlist card with a join --email prompt, a required email input and a join button that confirms, springing into view on scroll.",
  "dependencies": [
    "motion"
  ],
  "registryDependencies": [
    "https://ui.minidev.pro/r/button.json",
    "utils"
  ],
  "files": [
    {
      "path": "registry/premium/command-waitlist.tsx",
      "type": "registry:ui",
      "target": "components/ui/command-waitlist.tsx",
      "content": "\"use client\"\nimport * as React from \"react\"\nimport { motion, useReducedMotion } from \"motion/react\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\n\nfunction CommandWaitlist({ className }: { className?: string }) {\n  const reduce = useReducedMotion()\n  const [email, setEmail] = React.useState(\"\")\n  const [done, setDone] = React.useState(false)\n  return (\n    <motion.div\n      data-slot=\"command-waitlist\"\n      data-tier=\"premium\"\n      initial={reduce ? false : { y: 16, scale: 0.98 }}\n      whileInView={{ y: 0, scale: 1 }}\n      viewport={{ once: true }}\n      transition={{ type: \"spring\", stiffness: 160, damping: 20 }}\n      className={cn(\n        \"mx-auto w-full max-w-lg overflow-hidden rounded-2xl border border-border bg-surface shadow-highlight\",\n        className\n      )}\n    >\n      <div className=\"flex items-center justify-between border-b border-border bg-sunken px-4 py-2.5\">\n        <p className=\"text-xs font-medium text-fg-muted\">Waitlist · Lumen 2.0</p>\n        <kbd className=\"rounded border border-border bg-surface px-1.5 py-0.5 font-mono text-[10px] text-fg-muted\">⌘K</kbd>\n      </div>\n      <form\n        className=\"space-y-3 p-4\"\n        onSubmit={(e) => {\n          e.preventDefault()\n          setDone(true)\n        }}\n      >\n        <label className=\"block text-xs text-fg-muted\" htmlFor=\"waitlist-email\">\n          join --email\n        </label>\n        <input\n          id=\"waitlist-email\"\n          type=\"email\"\n          required\n          value={email}\n          onChange={(e) => setEmail(e.target.value)}\n          placeholder=\"you@company.com\"\n          className=\"h-10 w-full rounded-lg border border-border bg-bg px-3 font-mono text-sm text-fg outline-none focus-visible:ring-2 focus-visible:ring-accent\"\n        />\n        <div className=\"flex items-center justify-between gap-3\">\n          <p className=\"text-xs text-fg-muted\">{done ? \"Queued. We will ping you.\" : \"No spam. Launch notes only.\"}</p>\n          <Button type=\"submit\" size=\"sm\" disabled={done}>\n            {done ? \"Joined\" : \"Join\"}\n          </Button>\n        </div>\n      </form>\n    </motion.div>\n  )\n}\nexport { CommandWaitlist }\n"
    }
  ]
}
