{ "$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" } ] } ] }