{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "coming-soon",
  "title": "Coming Soon",
  "type": "registry:page",
  "files": [
    {
      "path": "packages/registry-react/blocks/coming-soon/ComingSoon.tsx",
      "content": "'use client'\n\nimport * as React from 'react'\nimport {\n  Activity,\n  ArrowRight,\n  ArrowUpRight,\n  Bot,\n  Check,\n  CheckCircle2,\n  Copy,\n  Palette,\n  Rocket,\n  ShieldCheck,\n  Terminal,\n  Zap,\n} from 'lucide-react'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Input } from '@/components/ui/input'\nimport { Progress } from '@/components/ui/progress'\nimport { Separator } from '@/components/ui/separator'\nimport { cn } from '@/lib/utils'\n\nexport interface ComingSoonProps {\n  targetIso?: string\n  statusUrl?: string\n  productVersion?: string\n}\n\nfunction pad(value: number) {\n  return String(value).padStart(2, '0')\n}\n\ninterface Milestone {\n  id: string\n  title: string\n  category: string\n  status: 'completed' | 'in_progress' | 'scheduled'\n  completionPercent: number\n  date: string\n}\n\nconst initialMilestones: Milestone[] = [\n  {\n    id: 'm1',\n    title: 'Dual-Framework Compiler & Monorepo Architecture',\n    category: 'Core Infra',\n    status: 'completed',\n    completionPercent: 100,\n    date: 'Aug 15, 2026',\n  },\n  {\n    id: 'm2',\n    title: 'Tailwind CSS v4 OKLCH Dynamic Theming Engine',\n    category: 'Design System',\n    status: 'completed',\n    completionPercent: 100,\n    date: 'Aug 18, 2026',\n  },\n  {\n    id: 'm3',\n    title: 'Zero-Lockin Code Distribution Registry & CLI',\n    category: 'DX & Tooling',\n    status: 'completed',\n    completionPercent: 100,\n    date: 'Aug 21, 2026',\n  },\n  {\n    id: 'm4',\n    title: 'Multi-Region Edge Registry Cache & Global SLA Testing',\n    category: 'Infrastructure',\n    status: 'in_progress',\n    completionPercent: 88,\n    date: 'Target: 3 Days',\n  },\n  {\n    id: 'm5',\n    title: 'Public V2.0 Global General Availability Rollout',\n    category: 'Release',\n    status: 'scheduled',\n    completionPercent: 0,\n    date: 'Target: 7 Days',\n  },\n]\n\ninterface FeatureTeaser {\n  id: string\n  badge: string\n  title: string\n  description: string\n  icon: React.ElementType\n  statLabel: string\n  statValue: string\n  codeSnippet: string\n}\n\nconst teasers: FeatureTeaser[] = [\n  {\n    id: 'agentic',\n    badge: 'Flagship AI',\n    title: 'Autonomous Multi-Agent Orchestrator',\n    description: 'Decompose complex workflow DAGs into parallel subagent execution with real-time vector memory.',\n    icon: Bot,\n    statLabel: 'DAG Execution Speed',\n    statValue: '120ms P99',\n    codeSnippet: 'npx shadcn-vue@latest add @uipkge/ai-agent-orchestrator',\n  },\n  {\n    id: 'design',\n    badge: 'Design Engineering',\n    title: 'Tailwind v4 OKLCH Fluid Theme Tokens',\n    description: 'Perceptually uniform color spaces with automatic high-contrast dark mode switching & zero CSS bloat.',\n    icon: Palette,\n    statLabel: 'Bundle Size Overhead',\n    statValue: '0.00 kB',\n    codeSnippet: 'npx shadcn-vue@latest add @uipkge/theme-customize',\n  },\n  {\n    id: 'edge',\n    badge: 'Ultra Low Latency',\n    title: 'Cloudflare Workers Multi-Region Cache',\n    description: 'Global component manifest resolution with smart geo-routing and edge-cached JSON trees.',\n    icon: Zap,\n    statLabel: 'Global Median Latency',\n    statValue: '8.4ms',\n    codeSnippet: 'curl -s https://uipkge.dev/r/vue/init.json',\n  },\n]\n\nexport function ComingSoon({\n  targetIso = '',\n  statusUrl = 'https://status.uipkge.dev',\n  productVersion = 'v2.0 Beta',\n}: ComingSoonProps) {\n  const [remaining, setRemaining] = React.useState({ days: '00', hours: '00', minutes: '00', seconds: '00' })\n  const [activeTeaserIndex, setActiveTeaserIndex] = React.useState(0)\n\n  // Waitlist Form State\n  const [email, setEmail] = React.useState('')\n  const [role, setRole] = React.useState<'frontend' | 'architect' | 'founder'>('frontend')\n  const [submitted, setSubmitted] = React.useState(false)\n  const [queuePosition, setQueuePosition] = React.useState<number | null>(null)\n  const [copiedReferral, setCopiedReferral] = React.useState(false)\n  const [copiedCli, setCopiedCli] = React.useState(false)\n\n  // Countdown timer logic\n  React.useEffect(() => {\n    const deadline = targetIso ? new Date(targetIso).getTime() : Date.now() + 7 * 24 * 60 * 60 * 1000\n\n    function tick() {\n      const diff = Math.max(0, deadline - Date.now())\n      setRemaining({\n        days: pad(Math.floor(diff / 86_400_000)),\n        hours: pad(Math.floor((diff % 86_400_000) / 3_600_000)),\n        minutes: pad(Math.floor((diff % 3_600_000) / 60_000)),\n        seconds: pad(Math.floor((diff % 60_000) / 1000)),\n      })\n    }\n\n    tick()\n    const timer = window.setInterval(tick, 1000)\n    return () => window.clearInterval(timer)\n  }, [targetIso])\n\n  const handleWaitlistSubmit = (e: React.FormEvent) => {\n    e.preventDefault()\n    if (!email) return\n    // Simulated VIP queue calculation\n    const randomPos = Math.floor(Math.random() * 80) + 120\n    setQueuePosition(randomPos)\n    setSubmitted(true)\n  }\n\n  const copyReferral = () => {\n    navigator.clipboard.writeText(`https://uipkge.dev/invite?ref=queue_${queuePosition}`)\n    setCopiedReferral(true)\n    setTimeout(() => setCopiedReferral(false), 2000)\n  }\n\n  const copyTeaserSnippet = (snippet: string) => {\n    navigator.clipboard.writeText(snippet)\n    setCopiedCli(true)\n    setTimeout(() => setCopiedCli(false), 2000)\n  }\n\n  const units = [\n    { label: 'Days', value: remaining.days },\n    { label: 'Hours', value: remaining.hours },\n    { label: 'Minutes', value: remaining.minutes },\n    { label: 'Seconds', value: remaining.seconds },\n  ]\n\n  const overallReadiness = Math.round(\n    initialMilestones.reduce((acc, m) => acc + m.completionPercent, 0) / initialMilestones.length,\n  )\n\n  return (\n    <section\n      data-slot=\"coming-soon\"\n      className=\"bg-background relative flex min-h-screen flex-col justify-between overflow-hidden px-4 py-16 sm:px-6 lg:px-8\"\n    >\n      {/* Top Telemetry & Status Bar */}\n      <div className=\"border-border/70 mx-auto flex w-full max-w-6xl flex-col items-center justify-between gap-4 border-b pb-12 sm:flex-row\">\n        <div className=\"flex items-center gap-3\">\n          <div className=\"bg-primary text-primary-foreground flex size-9 items-center justify-center rounded-xl font-bold shadow-xs\">\n            <Rocket className=\"size-5\" />\n          </div>\n          <div>\n            <div className=\"flex items-center gap-2\">\n              <span className=\"text-foreground text-sm font-semibold tracking-tight\">UIPKGE Engine</span>\n              <Badge variant=\"outline\" className=\"border-primary/30 text-primary px-1.5 py-0.5 font-mono text-xs\">\n                {productVersion}\n              </Badge>\n            </div>\n            <p className=\"text-muted-foreground text-xs\">Dual-framework registry & visual workbench suite</p>\n          </div>\n        </div>\n\n        {/* Global SLA Readiness Pill */}\n        <div className=\"bg-muted/40 border-border flex items-center gap-3 rounded-full border px-3.5 py-1.5\">\n          <div className=\"bg-success flex size-2 animate-pulse rounded-full\" />\n          <span className=\"text-muted-foreground font-mono text-xs\">\n            Staging Infrastructure: <strong className=\"text-foreground font-semibold\">99.99% Operational</strong>\n          </span>\n          <Separator orientation=\"vertical\" className=\"h-3.5\" />\n          <a\n            href={statusUrl}\n            target=\"_blank\"\n            rel=\"noreferrer\"\n            className=\"text-primary inline-flex items-center gap-1 font-mono text-xs hover:underline\"\n          >\n            Live Status <ArrowUpRight className=\"size-3\" />\n          </a>\n        </div>\n      </div>\n\n      {/* Main Hero & Countdown Body */}\n      <div className=\"mx-auto my-auto w-full max-w-6xl space-y-16 py-10\">\n        {/* Headline & Subtitle */}\n        <div className=\"mx-auto max-w-3xl space-y-4 text-center\">\n          <Badge variant=\"secondary\" className=\"gap-1.5 px-3 py-1 font-mono text-xs shadow-xs\">\n            <Rocket className=\"text-primary size-3.5\" />\n            V2.0 General Availability Launch Matrix\n          </Badge>\n          <h1 className=\"text-foreground text-4xl leading-[1.1] font-bold tracking-tight sm:text-5xl lg:text-6xl\">\n            Production-grade design engineering workbenches.\n          </h1>\n          <p className=\"text-muted-foreground mx-auto max-w-2xl text-base leading-relaxed sm:text-lg\">\n            We are deploying 281+ production-grade primitives and composed workbenches with zero package dependencies.\n            Own your source code with complete architectural freedom.\n          </p>\n        </div>\n\n        {/* High-Impact Digital Countdown Grid */}\n        <div className=\"mx-auto grid max-w-2xl grid-cols-2 gap-4 sm:grid-cols-4\">\n          {units.map((unit) => (\n            <Card\n              key={unit.label}\n              className=\"border-border bg-card/70 group hover:border-primary/40 relative overflow-hidden p-5 text-center shadow-xs backdrop-blur-xs transition-colors\"\n            >\n              <div className=\"text-foreground font-mono text-4xl font-bold tracking-tight tabular-nums sm:text-5xl\">\n                {unit.value}\n              </div>\n              <div className=\"text-muted-foreground mt-2 font-mono text-xs font-medium tracking-widest uppercase\">\n                {unit.label}\n              </div>\n              <div className=\"bg-primary/20 group-hover:bg-primary absolute right-0 bottom-0 left-0 h-0.5 transition-colors\" />\n            </Card>\n          ))}\n        </div>\n\n        {/* Early Access & Queue Tracker Section */}\n        <div className=\"mx-auto w-full max-w-xl\">\n          <Card className=\"border-border bg-card overflow-hidden shadow-sm\">\n            <CardHeader className=\"pb-4\">\n              <div className=\"flex items-center justify-between\">\n                <CardTitle className=\"flex items-center gap-2 text-base font-semibold\">\n                  <ShieldCheck className=\"text-primary size-4\" />\n                  Early Access Allocation\n                </CardTitle>\n                <Badge variant=\"outline\" className=\"border-success/20 bg-success/10 text-success font-mono text-xs\">\n                  Batch #2 Opening Soon\n                </Badge>\n              </div>\n              <CardDescription className=\"text-xs\">\n                Request priority invite access. Get instant sandbox access to all 281+ blocks before general public\n                launch.\n              </CardDescription>\n            </CardHeader>\n\n            <CardContent>\n              {!submitted ? (\n                <form onSubmit={handleWaitlistSubmit} className=\"space-y-4\">\n                  {/* Role Selector Tabs */}\n                  <div className=\"space-y-1.5\">\n                    <label className=\"text-foreground text-xs font-medium\">Your Primary Engineering Focus</label>\n                    <div className=\"grid grid-cols-3 gap-2\">\n                      {[\n                        { id: 'frontend', label: 'Frontend / UI' },\n                        { id: 'architect', label: 'Tech Lead / Arch' },\n                        { id: 'founder', label: 'CTO / Founder' },\n                      ].map((r) => (\n                        <button\n                          key={r.id}\n                          type=\"button\"\n                          className={cn(\n                            'rounded-lg border px-2.5 py-1.5 text-center text-xs font-medium transition-colors',\n                            role === r.id\n                              ? 'border-primary bg-primary/10 text-primary font-semibold shadow-xs'\n                              : 'border-border bg-background text-muted-foreground hover:text-foreground',\n                          )}\n                          onClick={() => setRole(r.id as any)}\n                        >\n                          {r.label}\n                        </button>\n                      ))}\n                    </div>\n                  </div>\n\n                  {/* Email Input & Submit */}\n                  <div className=\"flex flex-col gap-2 sm:flex-row\">\n                    <div className=\"relative flex-1\">\n                      <Input\n                        type=\"email\"\n                        placeholder=\"you@company.com\"\n                        value={email}\n                        onChange={(e) => setEmail(e.target.value)}\n                        required\n                        className=\"h-10 font-mono text-xs\"\n                      />\n                    </div>\n                    <Button type=\"submit\" className=\"h-10 gap-1.5 px-5 text-xs font-semibold\">\n                      <span>Reserve Spot</span>\n                      <ArrowRight className=\"size-3.5\" />\n                    </Button>\n                  </div>\n                  <p className=\"text-muted-foreground text-center text-xs\">\n                    No spam. You will only receive your single cryptographic invite token.\n                  </p>\n                </form>\n              ) : (\n                <div className=\"bg-muted/40 border-border space-y-4 rounded-xl border p-4 text-center\">\n                  <div className=\"bg-success/10 text-success mx-auto flex size-10 items-center justify-center rounded-full\">\n                    <Check className=\"size-5\" />\n                  </div>\n                  <div className=\"space-y-1\">\n                    <p className=\"text-foreground text-sm font-semibold\">You are #{queuePosition} in queue!</p>\n                    <p className=\"text-muted-foreground text-xs\">\n                      Invitation tokens for Batch #2 will be delivered to{' '}\n                      <strong className=\"text-foreground font-mono\">{email}</strong>.\n                    </p>\n                  </div>\n\n                  <div className=\"border-border flex flex-col items-center justify-between gap-3 border-t pt-2 sm:flex-row\">\n                    <span className=\"text-muted-foreground font-mono text-xs\">\n                      Move up 5 spots per teammate invite:\n                    </span>\n                    <Button\n                      variant=\"outline\"\n                      size=\"sm\"\n                      className=\"h-8 gap-1.5 font-mono text-xs\"\n                      onClick={copyReferral}\n                    >\n                      {copiedReferral ? <Check className=\"text-success size-3\" /> : <Copy className=\"size-3\" />}\n                      <span>{copiedReferral ? 'Copied Link' : 'Copy Invite Link'}</span>\n                    </Button>\n                  </div>\n                </div>\n              )}\n            </CardContent>\n          </Card>\n        </div>\n\n        {/* Interactive Feature Sneak-Peek Carousel & Terminal Preview */}\n        <div className=\"space-y-6\">\n          <div className=\"flex flex-col justify-between gap-4 sm:flex-row sm:items-center\">\n            <div>\n              <h2 className=\"text-foreground flex items-center gap-2 text-lg font-semibold tracking-tight\">\n                <Zap className=\"text-primary size-4\" />\n                Incoming Flagship Capabilities\n              </h2>\n              <p className=\"text-muted-foreground text-xs\">Sneak peek preview of the upcoming architecture release</p>\n            </div>\n\n            {/* Teaser Navigation Tabs */}\n            <div className=\"bg-muted/40 border-border flex items-center gap-1.5 rounded-lg border p-1\">\n              {teasers.map((t, idx) => (\n                <button\n                  key={t.id}\n                  type=\"button\"\n                  className={cn(\n                    'rounded-md px-3 py-1 text-xs font-medium transition-colors',\n                    activeTeaserIndex === idx\n                      ? 'bg-background text-foreground font-semibold shadow-xs'\n                      : 'text-muted-foreground hover:text-foreground',\n                  )}\n                  onClick={() => setActiveTeaserIndex(idx)}\n                >\n                  {t.badge}\n                </button>\n              ))}\n            </div>\n          </div>\n\n          {/* Active Teaser Card */}\n          {(() => {\n            const active = teasers[activeTeaserIndex]\n            const Icon = active.icon\n            return (\n              <Card className=\"border-border bg-card overflow-hidden\">\n                <div className=\"divide-border grid grid-cols-1 divide-y lg:grid-cols-12 lg:divide-x lg:divide-y-0\">\n                  <div className=\"space-y-4 p-6 sm:p-8 lg:col-span-7\">\n                    <div className=\"flex items-center gap-2.5\">\n                      <div className=\"bg-primary/10 text-primary rounded-lg p-2\">\n                        <Icon className=\"size-5\" />\n                      </div>\n                      <Badge variant=\"secondary\" className=\"font-mono text-xs\">\n                        {active.badge}\n                      </Badge>\n                    </div>\n\n                    <h3 className=\"text-foreground text-xl font-bold tracking-tight\">{active.title}</h3>\n                    <p className=\"text-muted-foreground text-xs leading-relaxed sm:text-sm\">{active.description}</p>\n\n                    <div className=\"flex items-center gap-6 pt-2\">\n                      <div>\n                        <p className=\"text-muted-foreground font-mono text-xs\">{active.statLabel}</p>\n                        <p className=\"text-foreground mt-0.5 font-mono text-xl font-bold\">{active.statValue}</p>\n                      </div>\n                      <Separator orientation=\"vertical\" className=\"h-8\" />\n                      <div>\n                        <p className=\"text-muted-foreground font-mono text-xs\">Framework Support</p>\n                        <p className=\"text-success mt-1 text-xs font-semibold\">Vue 3.5 & React 19 Parity</p>\n                      </div>\n                    </div>\n                  </div>\n\n                  {/* Terminal Snippet Box */}\n                  <div className=\"bg-muted/20 flex flex-col justify-between space-y-4 p-6 lg:col-span-5\">\n                    <div className=\"space-y-2\">\n                      <div className=\"flex items-center justify-between\">\n                        <span className=\"text-muted-foreground flex items-center gap-1.5 font-mono text-xs font-medium\">\n                          <Terminal className=\"size-3.5\" /> Direct CLI Command\n                        </span>\n                        <Button\n                          variant=\"ghost\"\n                          size=\"sm\"\n                          className=\"h-7 gap-1.5 px-2 font-mono text-xs\"\n                          onClick={() => copyTeaserSnippet(active.codeSnippet)}\n                        >\n                          {copiedCli ? <Check className=\"text-success size-3\" /> : <Copy className=\"size-3\" />}\n                          <span>{copiedCli ? 'Copied' : 'Copy'}</span>\n                        </Button>\n                      </div>\n                      <div className=\"bg-background border-border text-foreground selection:bg-primary/20 overflow-x-auto rounded-lg border p-3 font-mono text-xs\">\n                        <code>{active.codeSnippet}</code>\n                      </div>\n                    </div>\n\n                    <div className=\"border-border/80 bg-background/50 text-muted-foreground flex items-center gap-2 rounded-lg border p-3 text-xs\">\n                      <CheckCircle2 className=\"text-success size-3.5 shrink-0\" />\n                      <span>Transitive dependencies, OKLCH styles & TS types included.</span>\n                    </div>\n                  </div>\n                </div>\n              </Card>\n            )\n          })()}\n        </div>\n\n        {/* Launch Readiness Milestones Tracker */}\n        <div className=\"border-border/70 space-y-6 border-t pt-4\">\n          <div className=\"flex flex-col justify-between gap-4 sm:flex-row sm:items-center\">\n            <div>\n              <h2 className=\"text-foreground flex items-center gap-2 text-lg font-semibold tracking-tight\">\n                <Activity className=\"text-primary size-4\" />\n                V2.0 Launch Milestones & Engineering Progress\n              </h2>\n              <p className=\"text-muted-foreground text-xs\">Transparent real-time build and release status</p>\n            </div>\n            <div className=\"flex items-center gap-3\">\n              <span className=\"text-foreground font-mono text-xs font-semibold\">\n                Overall Readiness: {overallReadiness}%\n              </span>\n              <Progress value={overallReadiness} className=\"h-2 w-28\" />\n            </div>\n          </div>\n\n          <div className=\"grid grid-cols-1 gap-3 md:grid-cols-2 lg:grid-cols-3\">\n            {initialMilestones.map((m) => (\n              <div\n                key={m.id}\n                className=\"border-border bg-card hover:border-primary/30 flex flex-col justify-between space-y-3 rounded-xl border p-4 shadow-xs transition-colors\"\n              >\n                <div className=\"flex items-start justify-between gap-2\">\n                  <Badge\n                    variant=\"outline\"\n                    className={cn(\n                      'px-2 py-0.5 font-mono text-xs',\n                      m.status === 'completed' && 'border-success/20 bg-success/10 text-success',\n                      m.status === 'in_progress' && 'border-warning/20 bg-warning/10 text-warning',\n                      m.status === 'scheduled' && 'bg-muted text-muted-foreground border-border',\n                    )}\n                  >\n                    {m.status === 'completed' ? 'Completed' : m.status === 'in_progress' ? 'In Progress' : 'Scheduled'}\n                  </Badge>\n                  <span className=\"text-muted-foreground font-mono text-xs\">{m.date}</span>\n                </div>\n\n                <div>\n                  <p className=\"text-foreground text-xs leading-snug font-semibold\">{m.title}</p>\n                  <p className=\"text-muted-foreground mt-1 font-mono text-xs\">{m.category}</p>\n                </div>\n\n                <div className=\"space-y-1 pt-1\">\n                  <div className=\"text-muted-foreground flex justify-between font-mono text-xs\">\n                    <span>Progress</span>\n                    <span>{m.completionPercent}%</span>\n                  </div>\n                  <Progress value={m.completionPercent} className=\"h-1.5\" />\n                </div>\n              </div>\n            ))}\n          </div>\n        </div>\n      </div>\n\n      {/* Footer */}\n      <footer className=\"border-border text-muted-foreground mx-auto flex w-full max-w-6xl flex-col items-center justify-between gap-4 border-t pt-8 text-xs sm:flex-row\">\n        <div className=\"flex items-center gap-2\">\n          <span>&copy; {new Date().getFullYear()} UIPKGE. Open source under MIT License.</span>\n        </div>\n        <div className=\"flex items-center gap-4\">\n          <a\n            href=\"https://github.com/uday-a/uipkge\"\n            target=\"_blank\"\n            rel=\"noreferrer\"\n            className=\"hover:text-foreground transition-colors\"\n          >\n            GitHub\n          </a>\n          <Separator orientation=\"vertical\" className=\"h-3\" />\n          <a\n            href=\"https://uipkge.dev\"\n            target=\"_blank\"\n            rel=\"noreferrer\"\n            className=\"hover:text-foreground transition-colors\"\n          >\n            Registry Docs\n          </a>\n          <Separator orientation=\"vertical\" className=\"h-3\" />\n          <a href={statusUrl} target=\"_blank\" rel=\"noreferrer\" className=\"hover:text-foreground transition-colors\">\n            Status Page\n          </a>\n        </div>\n      </footer>\n    </section>\n  )\n}\nexport default ComingSoon\n",
      "type": "registry:page",
      "target": "~/components/blocks/ComingSoon.tsx"
    }
  ],
  "dependencies": [
    "lucide-react"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/react/badge.json",
    "https://uipkge.dev/r/react/button.json",
    "https://uipkge.dev/r/react/card.json",
    "https://uipkge.dev/r/react/input.json",
    "https://uipkge.dev/r/react/progress.json",
    "https://uipkge.dev/r/react/separator.json"
  ],
  "description": "Interactive launch and maintenance workbench with high-impact countdown, VIP early access waitlist queue allocator, live launch roadmap progress tracker, and feature sneak-peek previews.",
  "categories": [
    "marketing"
  ]
}