{
  "name": "cart-page",
  "title": "CartPage",
  "description": "Full-page cart with summary, discount input, and checkout.",
  "type": "component",
  "registryDependencies": [
    "cart-summary",
    "discount-input",
    "cn"
  ],
  "files": [
    {
      "path": "cart-page.tsx",
      "content": "\"use client\";\n\nimport React from \"react\";\nimport { useCart } from \"@cimplify/sdk/react\";\nimport type { DiscountValidation } from \"@cimplify/sdk\";\nimport type { CartLayoutProps } from \"./cart-layouts/shared\";\nimport { DefaultCartLayout } from \"./cart-layouts/default-cart-layout\";\nimport { CompactCartLayout } from \"./cart-layouts/compact-cart-layout\";\nimport { cn } from \"@cimplify/sdk/react\";\n\nexport type { CartLayoutProps };\n\nexport enum CartTemplate {\n  Default = \"default\",\n  Compact = \"compact\",\n}\n\nexport interface CartPageClassNames {\n  root?: string;\n}\n\nexport interface CartPageProps {\n  /** Explicit template. */\n  template?: CartTemplate;\n  /** Layout map for overrides. */\n  layouts?: Partial<Record<CartTemplate | string, React.ComponentType<CartLayoutProps>>>;\n  /** Page title. */\n  title?: string;\n  /** Called when checkout is initiated. */\n  onCheckout?: () => void;\n  /** Called when \"continue shopping\" is clicked. */\n  onContinueShopping?: () => void;\n  /** Called when a valid discount is applied. */\n  onDiscountApply?: (validation: DiscountValidation) => void;\n  /** Called when discount is removed. */\n  onDiscountClear?: () => void;\n  /** Show discount code input. */\n  showDiscount?: boolean;\n  /** Checkout button text. */\n  checkoutLabel?: string;\n  className?: string;\n  classNames?: CartPageClassNames;\n}\n\nconst BUILT_IN_LAYOUTS: Record<string, React.ComponentType<CartLayoutProps>> = {\n  [CartTemplate.Default]: DefaultCartLayout,\n  [CartTemplate.Compact]: CompactCartLayout,\n};\n\nexport function CartPage({\n  template,\n  layouts,\n  onCheckout,\n  onContinueShopping,\n  onDiscountApply,\n  onDiscountClear,\n  showDiscount = true,\n  checkoutLabel,\n  className,\n  classNames,\n}: CartPageProps): React.ReactElement {\n  const cart = useCart();\n\n  const key = template ?? CartTemplate.Default;\n  const Layout = layouts?.[key] ?? BUILT_IN_LAYOUTS[key] ?? DefaultCartLayout;\n\n  return (\n    <div data-cimplify-cart-page className={cn(className, classNames?.root)}>\n      <Layout\n        cart={cart}\n        onCheckout={onCheckout}\n        onContinueShopping={onContinueShopping}\n        onDiscountApply={onDiscountApply}\n        onDiscountClear={onDiscountClear}\n        showDiscount={showDiscount}\n        checkoutLabel={checkoutLabel}\n      />\n    </div>\n  );\n}\n"
    }
  ]
}
