All components below ship from theDocumentation Index
Fetch the complete documentation index at: https://docs-test.rye.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
@rye-api registry at registry.rye.com. Install one at a time as you need them.
<ProductCard />
Catalog tile. Renders one product with its image, vendor, name, subtitle, cash price, and an optional points-equivalent. Handles four availability states: in_stock, out_of_stock, marketplace_down, and image-failed. Ships with a matching <ProductCardSkeleton /> for loading.
<ProductDetails />
Compound PDP. Two-column layout with image gallery (caps at 8 thumbs + overflow caption), variant pickers (swatches / grid / cards, adaptive column count for long labels), inline revalidation alert for sold-out variants, quantity stepper, and a redeem CTA. Ships with <ProductDetailsSkeleton />.
disabled boolean to lock it).
<VariantSelector />
Standalone variant picker. The same swatches / grid / cards picker that lives inside <ProductDetails.Variants />, exposed for reuse — drop it into a <PaymentSheet /> flow or any other surface that needs variant selection without the full PDP.
<PayWithPoints />
Composable redemption slot. <Header /> shows the balance pill, <Slider /> is a keyboard-accessible range slider (arrow keys + Home / End) for picking how many points to apply, and <Summary /> surfaces the after-redemption balance plus a partial-coverage info card when the balance can’t cover the order. Enabling/disabling points is a consumer concern — conditionally render based on your own state.
<PaymentSheet />
Compound checkout sheet. Slot-based — pick the subcomponents you need per state. Covers cash + member-benefit, mixed tender, full points, and five error variants (variant gone, no shipping, unpriceable, marketplace down, card declined).
<PaymentSheet.Shipping /> takes the canonical Buyer shape from checkout-intents/resources — pass intent responses through without remapping.
<OrderTracking />
Compound post-purchase view covering 8 lifecycle states: placed, processing, shipped, out_for_delivery, delivered, cancelled, refunded, stuck_under_investigation. Timeline is semantic <ol> / <li> with aria-current="step". <InvestigationCard /> carries role="status" + aria-live="polite" so screen readers announce status updates.
StatusPill.icon, Callout.icon, Action.leadingIcon / trailingIcon) accept any React.ReactNode — pass lucide elements or your own SVGs.
<AddressForm />
Write-side companion to <PaymentSheet.Shipping />. Compound API produces the same Buyer shape Shipping consumes. Validation is consumer-owned — pass fieldErrors keyed by Buyer field name and the component handles aria-invalid + error message rendering. Plug in zod, react-hook-form, or roll your own.
autoComplete attrs (given-name, family-name, address-line1, postal-code, country, email, tel).
Shared utilities
Each component depends on a small set of shared helpers that the shadcn CLI auto-installs:lib/format.ts— exportsformatMoney(money)andformatPoints(points). Edit this file to localize currency formatting or change the points label (e.g."X,XXX LoC pts"for branded rewards). One edit affects every component that displays money or points.lib/utils.ts— the standard shadcncn()className helper.components/rye-rewards/types/product.ts— canonicalProduct/Money/Marketplace/ProductAvailabilitytypes.components/rye-rewards/types/pdp.ts—ProductDetailsDataplus the shared variant types used byProductDetailsandVariantSelector.

