{
"$schema": "https://ui.shadcn.com/schema/registry.json",
"name": "rewards-ui",
"homepage": "https://docs.rye.com/rewards",
"items": [
{
"name": "address-form",
"type": "registry:component",
"title": "Address form",
"description": "Compound form for collecting a buyer's shipping/billing address. Renders the canonical `Buyer` shape from `checkout-intents` so the result drops straight into or a checkout intent. Validation is consumer-owned — pass `fieldErrors` and the component handles aria-invalid + error rendering.",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["checkout-intents"],
"files": [
{
"path": "registry/default/components/address-form.tsx",
"type": "registry:component",
"target": "components/rye-rewards/address-form.tsx"
}
]
},
{
"name": "order-tracking",
"type": "registry:component",
"title": "Order tracking",
"description": "Compound post-purchase tracking layout. Header / StatusCard / InvestigationCard / Timeline / Item / RefundSummary / ActionsCard / InvestigationActions / InvestigationProgress sub-components cover all 8 states (placed, processing, shipped, out-for-delivery, delivered, cancelled, refunded, stuck-under-investigation).",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/order-tracking.tsx",
"type": "registry:component",
"target": "components/rye-rewards/order-tracking.tsx"
},
{
"path": "registry/default/types/product.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/product.ts"
},
{
"path": "lib/format.ts",
"type": "registry:lib",
"target": "lib/format.ts"
}
]
},
{
"name": "payment-sheet",
"type": "registry:component",
"title": "Payment sheet",
"description": "Compound checkout sheet. Header / Alert / Item / Shipping / Section / MemberBenefit / CostBreakdown / Confirm / Actions / Skeleton sub-components compose to handle all three integration patterns (cash + member benefit, mixed tender, full points) plus 5 error variants.",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/payment-sheet.tsx",
"type": "registry:component",
"target": "components/rye-rewards/payment-sheet.tsx"
},
{
"path": "registry/default/types/product.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/product.ts"
},
{
"path": "lib/format.ts",
"type": "registry:lib",
"target": "lib/format.ts"
}
]
},
{
"name": "pay-with-points",
"type": "registry:component",
"title": "Pay with points",
"description": "Composable slot for points-as-tender. Slider + balance pill + toggle + after-redemption preview. Handles mixed-tender, full-points, off, and insufficient-balance states.",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/pay-with-points.tsx",
"type": "registry:component",
"target": "components/rye-rewards/pay-with-points.tsx"
},
{
"path": "lib/format.ts",
"type": "registry:lib",
"target": "lib/format.ts"
}
]
},
{
"name": "product-details",
"type": "registry:component",
"title": "Product details (PDP)",
"description": "Two-column PDP with image gallery, variant pickers (swatches / grid / cards), inline revalidation alert, and redeem CTA. Ships with for loading.",
"registryDependencies": [
"https://ui.shadcn.com/r/styles/new-york/utils.json",
"https://registry.rye.com/r/variant-selector.json"
],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/product-details.tsx",
"type": "registry:component",
"target": "components/rye-rewards/product-details.tsx"
},
{
"path": "registry/default/types/product.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/product.ts"
},
{
"path": "registry/default/types/pdp.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/pdp.ts"
},
{
"path": "lib/format.ts",
"type": "registry:lib",
"target": "lib/format.ts"
}
]
},
{
"name": "variant-selector",
"type": "registry:component",
"title": "Variant selector",
"description": "Standalone variant picker (swatches / grid / cards) with revalidation-error state. Used inside and can be dropped into a PaymentSheet or any flow that needs variant selection separate from the PDP.",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/variant-selector.tsx",
"type": "registry:component",
"target": "components/rye-rewards/variant-selector.tsx"
},
{
"path": "registry/default/types/pdp.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/pdp.ts"
}
]
},
{
"name": "product-card",
"type": "registry:component",
"title": "Product card",
"description": "Catalog tile: image, vendor, name, subtitle, cash price + optional points-equivalent. Handles out-of-stock, subscription-only, marketplace-down, and image-failed states. Ships with a matching for loading.",
"registryDependencies": ["https://ui.shadcn.com/r/styles/new-york/utils.json"],
"dependencies": ["lucide-react"],
"files": [
{
"path": "registry/default/components/product-card.tsx",
"type": "registry:component",
"target": "components/rye-rewards/product-card.tsx"
},
{
"path": "registry/default/types/product.ts",
"type": "registry:lib",
"target": "components/rye-rewards/types/product.ts"
},
{
"path": "lib/format.ts",
"type": "registry:lib",
"target": "lib/format.ts"
}
]
}
]
}