Cart Drawer
Quero um carrinho lateral (drawer) com atualizar quantidade e checkout. Como implementar?Referência:
seu tema (adaptado do cookbook) + sections/cart-drawer-demo/
Índice: Cookbooks
Objetivo
Contratos utilizados
- Cart Contract
- Cart resource —
StorefrontCartItem @corvex/theme-sdk—formatPrice@corvex/runtime—SectionChrome,useCorvexCart(demo section)
Shape público (useCorvexCart)
StorefrontCartItem:
id, title, name, quantity, linePrice, price, image, productVariantId.
Não usar: cart.lines, productTitle, variantTitle (não públicos).
Arquivos
Snippet (UI)
Estado open/close (local)
Abrir o drawer a partir do header
O SDK não expõe uma função para abrir o drawer de outra seção. Não existe evento global de carrinho. Opções no tema:- Link
/cart— página dedicada (cart template) - Estado React elevado — layout
theme.jsxou provider local do tema compartilhaopenentre header e drawer - Aguardar contrato futuro — não inventar
window.openCart()ou similar
/cart por design.
Subtotal e preços
- Hook expõe
subtotal(número) — useformatPrice(subtotal)do SDK - Linha:
item.linePriceouitem.price(contrato público)
Checkout
checkoutUrl persistido pelo SDK. Botão desabilitado quando items vazio ou mutating.
Acessibilidade
role="dialog"+aria-modal="true"- Botão fechar com
aria-label Escapefecha (handler no overlay)- Overlay click fecha
Edge cases
Checklist
-
useCorvexCartno parent, não no snippet de dados -
updateQuantity/removeItemcomitem.id - Somente campos públicos de
StorefrontCartItem - Estado
openlocal ou elevado no tema — sem API global inventada -
corvex validate .
Veja também
- Header Cookbook —
itemCount+ link/cart - Variant Selector —
addItemantes do drawer - Featured Product —
addItem(product, 1)