{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "order-confirmation",
  "title": "Order Confirmation",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-react/blocks/order-confirmation/OrderConfirmation.tsx",
      "content": "'use client'\n\nimport {\n  Check,\n  CheckCircle2,\n  CreditCard,\n  Download,\n  ExternalLink,\n  HelpCircle,\n  Mail,\n  MapPin,\n  MessageSquare,\n  Package,\n  Truck,\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 { Separator } from '@/components/ui/separator'\nimport { cn } from '@/lib/utils'\n\ninterface OrderItem {\n  id: string\n  name: string\n  variant: string\n  quantity: number\n  price: string\n  image: string\n}\n\ninterface TrackingStep {\n  id: string\n  title: string\n  date: string\n  status: 'completed' | 'current' | 'upcoming'\n  description: string\n}\n\ninterface OrderConfirmationProps {\n  className?: string\n}\n\nconst orderItems: OrderItem[] = [\n  {\n    id: 'item-1',\n    name: 'Studio Wireless Noise-Canceling Headphones',\n    variant: 'Space Gray • Over-Ear',\n    quantity: 1,\n    price: '$179.00',\n    image: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?w=160&auto=format&fit=crop&q=80',\n  },\n  {\n    id: 'item-2',\n    name: 'Braided USB-C Fast Charging Cable (2m)',\n    variant: 'Midnight Black • 100W PD',\n    quantity: 2,\n    price: '$38.00',\n    image: 'https://images.unsplash.com/photo-1546868871-7041f2a55e12?w=160&auto=format&fit=crop&q=80',\n  },\n  {\n    id: 'item-3',\n    name: 'Magnetic Aluminum Desk Stand',\n    variant: 'Silver • Anodized Aluminum',\n    quantity: 1,\n    price: '$35.00',\n    image: 'https://images.unsplash.com/photo-1586105251261-72a756497a11?w=160&auto=format&fit=crop&q=80',\n  },\n]\n\nconst trackingSteps: TrackingStep[] = [\n  {\n    id: 'step-1',\n    title: 'Order Placed',\n    date: 'Aug 21, 2026 • 10:42 AM',\n    status: 'completed',\n    description: 'Payment authorized & order confirmed',\n  },\n  {\n    id: 'step-2',\n    title: 'Processing',\n    date: 'Aug 22, 2026 • 02:15 PM',\n    status: 'completed',\n    description: 'Item picked & packed at warehouse',\n  },\n  {\n    id: 'step-3',\n    title: 'Shipped',\n    date: 'Aug 23, 2026 • 09:30 AM',\n    status: 'current',\n    description: 'In transit via FedEx Priority • Chicago, IL',\n  },\n  {\n    id: 'step-4',\n    title: 'Delivered',\n    date: 'Est. Aug 27, 2026',\n    status: 'upcoming',\n    description: 'Estimated delivery to front door',\n  },\n]\n\nexport function OrderConfirmation({ className }: OrderConfirmationProps) {\n  return (\n    <div data-slot=\"order-confirmation\" className={cn('w-full space-y-6', className)}>\n      {/* Success Banner Card */}\n      <Card className=\"border shadow-xs\">\n        <CardContent className=\"flex flex-col items-center p-6 text-center sm:p-10\">\n          <div className=\"bg-success/10 text-success ring-success/10 text-success relative flex size-16 items-center justify-center rounded-full ring-8 sm:size-20\">\n            <CheckCircle2 className=\"size-8 sm:size-10\" aria-hidden=\"true\" />\n          </div>\n\n          <div className=\"mt-6 max-w-xl space-y-2\">\n            <div className=\"border-success/20 bg-success/10 text-success inline-flex items-center gap-2 rounded-full border px-3 py-1 text-xs font-medium\">\n              <span className=\"bg-success size-1.5 rounded-full\" />\n              Order Confirmed\n            </div>\n            <h1 className=\"text-foreground text-2xl font-bold tracking-tight sm:text-3xl\">Thank you for your order!</h1>\n            <p className=\"text-muted-foreground text-sm sm:text-base\">\n              We've received your order <span className=\"text-foreground font-mono font-semibold\">#ORD-92841</span> and\n              sent a confirmation email to <span className=\"text-foreground font-medium\">customer@example.com</span>.\n            </p>\n          </div>\n\n          <div className=\"mt-8 flex flex-wrap items-center justify-center gap-3\">\n            <Button className=\"gap-2 shadow-xs\">\n              <ExternalLink className=\"size-4\" aria-hidden=\"true\" />\n              Track Shipment\n            </Button>\n            <Button aria-label=\"Download attachment\" variant=\"outline\" className=\"gap-2 shadow-xs\">\n              <Download className=\"size-4\" aria-hidden=\"true\" />\n              Download Receipt\n            </Button>\n            <Button variant=\"ghost\" className=\"text-muted-foreground hover:text-foreground\">\n              Continue Shopping\n            </Button>\n          </div>\n        </CardContent>\n      </Card>\n\n      {/* Tracking Stepper Card */}\n      <Card className=\"border shadow-xs\">\n        <CardHeader className=\"flex flex-col gap-3 pb-4 sm:flex-row sm:items-center sm:justify-between\">\n          <div className=\"space-y-1\">\n            <div className=\"flex items-center gap-2\">\n              <Truck className=\"text-primary size-4\" aria-hidden=\"true\" />\n              <CardTitle className=\"text-base font-semibold\">Shipment Progress</CardTitle>\n              <Badge variant=\"secondary\" className=\"bg-primary/10 text-primary text-xs font-medium\">\n                In Transit\n              </Badge>\n            </div>\n            <p className=\"text-muted-foreground text-xs\">\n              Carrier: <span className=\"text-foreground font-medium\">FedEx Priority</span> • Tracking:{' '}\n              <span className=\"text-foreground font-mono font-medium\">#FX-9821734910</span>\n            </p>\n          </div>\n          <div className=\"border-border/80 bg-muted/40 rounded-lg border px-3 py-1.5 text-xs\">\n            <span className=\"text-muted-foreground\">Estimated Delivery:</span>\n            <span className=\"text-foreground ml-1 font-semibold\">Thursday, Aug 27, 2026</span>\n          </div>\n        </CardHeader>\n        <CardContent className=\"pt-4\">\n          {/* Desktop Stepper (md+) */}\n          <div className=\"hidden md:block\">\n            <div className=\"grid grid-cols-4 gap-4\">\n              {trackingSteps.map((step, idx) => (\n                <div key={step.id} className=\"relative flex flex-col\">\n                  <div className=\"relative flex items-center\">\n                    {/* Connecting Line before current step */}\n                    {idx > 0 && (\n                      <div\n                        className={cn(\n                          'absolute top-1/2 right-1/2 -z-0 h-0.5 w-full -translate-y-1/2',\n                          step.status === 'upcoming' ? 'bg-muted' : 'bg-primary',\n                        )}\n                      />\n                    )}\n\n                    {/* Connecting Line after current step */}\n                    {idx < trackingSteps.length - 1 && (\n                      <div\n                        className={cn(\n                          'absolute top-1/2 left-1/2 -z-0 h-0.5 w-full -translate-y-1/2',\n                          trackingSteps[idx + 1].status === 'upcoming' ? 'bg-muted' : 'bg-primary',\n                        )}\n                      />\n                    )}\n\n                    {/* Step Indicator Circle */}\n                    <div className=\"relative z-10 mx-auto flex items-center justify-center\">\n                      {step.status === 'completed' ? (\n                        <div className=\"bg-primary text-primary-foreground ring-background flex size-8 items-center justify-center rounded-full ring-4\">\n                          <Check className=\"size-4\" aria-hidden=\"true\" />\n                        </div>\n                      ) : step.status === 'current' ? (\n                        <div className=\"border-primary bg-background text-primary ring-background flex size-8 items-center justify-center rounded-full border-2 ring-4\">\n                          <span className=\"relative flex size-2.5\">\n                            <span className=\"bg-primary absolute inline-flex h-full w-full rounded-full opacity-75\" />\n                            <span className=\"bg-primary relative inline-flex size-2.5 rounded-full\" />\n                          </span>\n                        </div>\n                      ) : (\n                        <div className=\"border-muted-foreground/30 bg-muted/40 text-muted-foreground ring-background flex size-8 items-center justify-center rounded-full border-2 ring-4\">\n                          <Package className=\"size-3.5\" aria-hidden=\"true\" />\n                        </div>\n                      )}\n                    </div>\n                  </div>\n\n                  {/* Step Info */}\n                  <div className=\"mt-3 text-center\">\n                    <p\n                      className={cn(\n                        'text-sm font-semibold',\n                        step.status === 'upcoming' ? 'text-muted-foreground' : 'text-foreground',\n                      )}\n                    >\n                      {step.title}\n                    </p>\n                    <p className=\"text-muted-foreground mt-0.5 text-xs tabular-nums\">{step.date}</p>\n                    <p className=\"text-muted-foreground/80 mt-0.5 text-xs\">{step.description}</p>\n                  </div>\n                </div>\n              ))}\n            </div>\n          </div>\n\n          {/* Mobile Stepper (< md) */}\n          <div className=\"space-y-4 md:hidden\">\n            {trackingSteps.map((step, idx) => (\n              <div key={step.id} className=\"flex items-start gap-3\">\n                <div className=\"flex flex-col items-center\">\n                  {step.status === 'completed' ? (\n                    <div className=\"bg-primary text-primary-foreground flex size-7 shrink-0 items-center justify-center rounded-full\">\n                      <Check className=\"size-3.5\" aria-hidden=\"true\" />\n                    </div>\n                  ) : step.status === 'current' ? (\n                    <div className=\"border-primary bg-background text-primary flex size-7 shrink-0 items-center justify-center rounded-full border-2\">\n                      <span className=\"relative flex size-2\">\n                        <span className=\"bg-primary absolute inline-flex h-full w-full rounded-full opacity-75\" />\n                        <span className=\"bg-primary relative inline-flex size-2 rounded-full\" />\n                      </span>\n                    </div>\n                  ) : (\n                    <div className=\"border-muted-foreground/30 bg-muted/40 text-muted-foreground flex size-7 shrink-0 items-center justify-center rounded-full border-2\">\n                      <Package className=\"size-3\" aria-hidden=\"true\" />\n                    </div>\n                  )}\n\n                  {idx < trackingSteps.length - 1 && (\n                    <div\n                      className={cn(\n                        'mt-1 h-8 w-0.5',\n                        trackingSteps[idx + 1].status === 'upcoming' ? 'bg-muted' : 'bg-primary',\n                      )}\n                    />\n                  )}\n                </div>\n\n                <div className=\"min-w-0 flex-1 pt-0.5 pb-2\">\n                  <div className=\"flex items-center justify-between gap-2\">\n                    <p\n                      className={cn(\n                        'text-sm font-semibold',\n                        step.status === 'upcoming' ? 'text-muted-foreground' : 'text-foreground',\n                      )}\n                    >\n                      {step.title}\n                    </p>\n                    <span className=\"text-muted-foreground text-xs tabular-nums\">{step.date}</span>\n                  </div>\n                  <p className=\"text-muted-foreground mt-0.5 text-xs\">{step.description}</p>\n                </div>\n              </div>\n            ))}\n          </div>\n        </CardContent>\n      </Card>\n\n      {/* 2-Column Details Grid */}\n      <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-12\">\n        {/* Left Column: Itemized Order Summary */}\n        <div className=\"lg:col-span-7\">\n          <Card className=\"border shadow-xs\">\n            <CardHeader className=\"pb-4\">\n              <CardTitle className=\"text-base font-semibold\">Order Summary</CardTitle>\n              <CardDescription>3 items in shipment</CardDescription>\n            </CardHeader>\n            <CardContent className=\"space-y-6\">\n              {/* Items list */}\n              <div className=\"space-y-4\">\n                {orderItems.map((item) => (\n                  <div key={item.id} className=\"flex items-center gap-4\">\n                    <div className=\"border-border bg-muted/40 relative size-16 shrink-0 overflow-hidden rounded-lg border\">\n                      <img src={item.image} alt={item.name} className=\"h-full w-full object-cover\" />\n                    </div>\n                    <div className=\"min-w-0 flex-1\">\n                      <p className=\"text-foreground truncate text-sm font-medium\">{item.name}</p>\n                      <p className=\"text-muted-foreground text-xs\">{item.variant}</p>\n                      <p className=\"text-muted-foreground mt-1 text-xs\">Qty: {item.quantity}</p>\n                    </div>\n                    <div className=\"text-right\">\n                      <p className=\"text-foreground text-sm font-semibold tabular-nums\">{item.price}</p>\n                    </div>\n                  </div>\n                ))}\n              </div>\n\n              <Separator />\n\n              {/* Cost breakdown */}\n              <div className=\"space-y-2 text-sm\">\n                <div className=\"flex items-center justify-between\">\n                  <span className=\"text-muted-foreground\">Subtotal</span>\n                  <span className=\"text-foreground font-medium tabular-nums\">$252.00</span>\n                </div>\n                <div className=\"flex items-center justify-between\">\n                  <span className=\"text-muted-foreground\">Shipping (FedEx Priority)</span>\n                  <span className=\"text-success text-success font-medium tabular-nums\">Free</span>\n                </div>\n                <div className=\"flex items-center justify-between\">\n                  <span className=\"text-muted-foreground\">Estimated Tax</span>\n                  <span className=\"text-foreground font-medium tabular-nums\">$12.50</span>\n                </div>\n              </div>\n\n              <Separator />\n\n              {/* Total */}\n              <div className=\"flex items-center justify-between\">\n                <span className=\"text-foreground text-base font-semibold\">Total</span>\n                <span className=\"text-foreground text-xl font-bold tabular-nums sm:text-2xl\">$264.50</span>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n\n        {/* Right Column: Customer & Delivery Details */}\n        <div className=\"space-y-6 lg:col-span-5\">\n          {/* Shipping Address Card */}\n          <Card className=\"border shadow-xs\">\n            <CardHeader className=\"pb-3\">\n              <div className=\"flex items-center gap-2\">\n                <MapPin className=\"text-muted-foreground size-4\" aria-hidden=\"true\" />\n                <CardTitle className=\"text-base font-semibold\">Shipping Address</CardTitle>\n              </div>\n            </CardHeader>\n            <CardContent className=\"space-y-3 text-sm\">\n              <div className=\"space-y-0.5\">\n                <p className=\"text-foreground font-medium\">Alex Morgan</p>\n                <p className=\"text-muted-foreground\">742 Evergreen Terrace, Suite 4B</p>\n                <p className=\"text-muted-foreground\">Springfield, OR 97477</p>\n                <p className=\"text-muted-foreground\">United States</p>\n                <p className=\"text-muted-foreground mt-1 text-xs\">+1 (555) 234-5678</p>\n              </div>\n              <div className=\"border-border bg-muted/30 rounded-md border p-2.5 text-xs\">\n                <span className=\"text-muted-foreground\">Delivery Method:</span>\n                <span className=\"text-foreground ml-1 font-medium\">FedEx Priority Express</span>\n              </div>\n            </CardContent>\n          </Card>\n\n          {/* Payment Method Card */}\n          <Card className=\"border shadow-xs\">\n            <CardHeader className=\"pb-3\">\n              <div className=\"flex items-center gap-2\">\n                <CreditCard className=\"text-muted-foreground size-4\" aria-hidden=\"true\" />\n                <CardTitle className=\"text-base font-semibold\">Payment Method</CardTitle>\n              </div>\n            </CardHeader>\n            <CardContent className=\"space-y-3 text-sm\">\n              <div className=\"flex items-center justify-between\">\n                <div className=\"flex items-center gap-2.5\">\n                  <div className=\"border-border bg-muted/40 text-foreground flex h-7 w-11 items-center justify-center rounded border font-mono text-xs font-bold\">\n                    VISA\n                  </div>\n                  <div>\n                    <p className=\"text-foreground text-sm font-medium\">Visa ending in 4242</p>\n                    <p className=\"text-muted-foreground text-xs\">Expires 08/29</p>\n                  </div>\n                </div>\n                <Badge variant=\"secondary\" className=\"bg-success/10 text-success\">\n                  Paid\n                </Badge>\n              </div>\n              <p className=\"text-muted-foreground text-xs\">Billing address matches shipping address</p>\n            </CardContent>\n          </Card>\n\n          {/* Need Help Card */}\n          <Card className=\"border shadow-xs\">\n            <CardHeader className=\"pb-3\">\n              <div className=\"flex items-center gap-2\">\n                <HelpCircle className=\"text-muted-foreground size-4\" aria-hidden=\"true\" />\n                <CardTitle className=\"text-base font-semibold\">Need Help?</CardTitle>\n              </div>\n            </CardHeader>\n            <CardContent className=\"space-y-3 text-sm\">\n              <p className=\"text-muted-foreground text-xs\">\n                Questions about your order? Chat with support or email support@example.com.\n              </p>\n              <div className=\"space-y-2 pt-1\">\n                <Button variant=\"outline\" size=\"sm\" className=\"w-full justify-start gap-2 text-xs shadow-xs\">\n                  <MessageSquare className=\"size-3.5\" aria-hidden=\"true\" />\n                  Chat with Support\n                </Button>\n                <Button\n                  variant=\"ghost\"\n                  size=\"sm\"\n                  className=\"text-muted-foreground hover:text-foreground w-full justify-start gap-2 text-xs\"\n                >\n                  <Mail className=\"size-3.5\" aria-hidden=\"true\" />\n                  support@example.com\n                </Button>\n              </div>\n            </CardContent>\n          </Card>\n        </div>\n      </div>\n    </div>\n  )\n}\n",
      "type": "registry:block",
      "target": "~/components/blocks/OrderConfirmation.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/separator.json"
  ],
  "description": "Post-purchase order confirmation & tracking page featuring a success banner with emerald checkmark halo, 4-step shipment progress bar with pulsing active state, itemized order breakdown, and customer delivery & payment cards.",
  "categories": [
    "commerce",
    "ecommerce"
  ]
}