@fayz-ai/storefront 0.84.3 → 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/CheckoutPage-4MFKLBEI.js +12 -0
  2. package/dist/{CheckoutPage-G5NYJF3Z.js.map → CheckoutPage-4MFKLBEI.js.map} +1 -1
  3. package/dist/MyPurchasesPage-F25MIFXT.js +11 -0
  4. package/dist/{MyPurchasesPage-GOK2RO7K.js.map → MyPurchasesPage-F25MIFXT.js.map} +1 -1
  5. package/dist/OrderConfirmationPage-SOQDD767.js +10 -0
  6. package/dist/{OrderConfirmationPage-DGLW5W75.js.map → OrderConfirmationPage-SOQDD767.js.map} +1 -1
  7. package/dist/{chunk-P4RRFQQX.js → chunk-BR3XHNVM.js} +5 -5
  8. package/dist/{chunk-P4RRFQQX.js.map → chunk-BR3XHNVM.js.map} +1 -1
  9. package/dist/{chunk-RZWTEC6H.js → chunk-C4XATNI2.js} +3 -3
  10. package/dist/{chunk-RZWTEC6H.js.map → chunk-C4XATNI2.js.map} +1 -1
  11. package/dist/{chunk-45R7CIEA.js → chunk-CE4U65TZ.js} +4 -4
  12. package/dist/{chunk-45R7CIEA.js.map → chunk-CE4U65TZ.js.map} +1 -1
  13. package/dist/{chunk-2D5BEM43.js → chunk-EFHQ5MAJ.js} +3 -3
  14. package/dist/{chunk-2D5BEM43.js.map → chunk-EFHQ5MAJ.js.map} +1 -1
  15. package/dist/{chunk-UJ2TIM4V.js → chunk-ELW7QWDJ.js} +13 -12
  16. package/dist/chunk-ELW7QWDJ.js.map +1 -0
  17. package/dist/{chunk-F3U4KZC7.js → chunk-IUP5SDTX.js} +5 -5
  18. package/dist/{chunk-F3U4KZC7.js.map → chunk-IUP5SDTX.js.map} +1 -1
  19. package/dist/{chunk-ZSNKJGE5.js → chunk-NS6UPIJ3.js} +3 -3
  20. package/dist/{chunk-ZSNKJGE5.js.map → chunk-NS6UPIJ3.js.map} +1 -1
  21. package/dist/{chunk-FPFGRUCS.js → chunk-OOQRYH3N.js} +6 -6
  22. package/dist/{chunk-FPFGRUCS.js.map → chunk-OOQRYH3N.js.map} +1 -1
  23. package/dist/{chunk-GVZ2SAOI.js → chunk-PSDR5TZD.js} +3 -2
  24. package/dist/chunk-PSDR5TZD.js.map +1 -0
  25. package/dist/{chunk-PURHMU2W.js → chunk-RJUEUMR6.js} +4 -4
  26. package/dist/{chunk-PURHMU2W.js.map → chunk-RJUEUMR6.js.map} +1 -1
  27. package/dist/{chunk-BKO2AQ3Q.js → chunk-SLJ4BRXD.js} +3 -3
  28. package/dist/{chunk-BKO2AQ3Q.js.map → chunk-SLJ4BRXD.js.map} +1 -1
  29. package/dist/{chunk-YSQBZ3RM.js → chunk-YCAWAON6.js} +7 -7
  30. package/dist/{chunk-YSQBZ3RM.js.map → chunk-YCAWAON6.js.map} +1 -1
  31. package/dist/{chunk-554XAQWK.js → chunk-YDZU2SZL.js} +4 -4
  32. package/dist/{chunk-554XAQWK.js.map → chunk-YDZU2SZL.js.map} +1 -1
  33. package/dist/{chunk-WSHCQ3Y6.js → chunk-Z5JT7T4I.js} +8 -8
  34. package/dist/{chunk-WSHCQ3Y6.js.map → chunk-Z5JT7T4I.js.map} +1 -1
  35. package/dist/components/delivery/StoreCover.d.ts.map +1 -1
  36. package/dist/document/config.d.ts +8 -0
  37. package/dist/document/config.d.ts.map +1 -1
  38. package/dist/edge.d.ts +1 -1
  39. package/dist/edge.d.ts.map +1 -1
  40. package/dist/edge.js +19 -2
  41. package/dist/edge.js.map +1 -1
  42. package/dist/host/edge-handler.d.ts +26 -0
  43. package/dist/host/edge-handler.d.ts.map +1 -1
  44. package/dist/host.js +4 -4
  45. package/dist/index.js +22 -22
  46. package/dist/render.js +9 -9
  47. package/dist/tanstack.js +8 -8
  48. package/package.json +1 -1
  49. package/dist/CheckoutPage-G5NYJF3Z.js +0 -12
  50. package/dist/MyPurchasesPage-GOK2RO7K.js +0 -11
  51. package/dist/OrderConfirmationPage-DGLW5W75.js +0 -10
  52. package/dist/chunk-GVZ2SAOI.js.map +0 -1
  53. package/dist/chunk-UJ2TIM4V.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { SuccessMark } from './chunk-WDQFNHYO.js';
2
- import { CustomerAccountShell, isPaid, financialStatusBadge, OrderTrackingTimeline } from './chunk-PURHMU2W.js';
2
+ import { CustomerAccountShell, isPaid, financialStatusBadge, OrderTrackingTimeline } from './chunk-RJUEUMR6.js';
3
3
  import { SkeletonGroup, Skeleton } from './chunk-FCPOPWG3.js';
4
- import { useStorefrontHead, TID, SmoothImage, formatMoney } from './chunk-2D5BEM43.js';
5
- import { useStorefrontConfig, Link, navigateTo } from './chunk-GVZ2SAOI.js';
4
+ import { useStorefrontHead, TID, SmoothImage, formatMoney } from './chunk-EFHQ5MAJ.js';
5
+ import { useStorefrontConfig, Link, navigateTo } from './chunk-PSDR5TZD.js';
6
6
  import React, { useState, useEffect } from 'react';
7
7
  import { getShopProvider } from '@fayz-ai/shop/runtime';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -212,5 +212,5 @@ function OrderConfirmationPage({ orderId }) {
212
212
  }
213
213
 
214
214
  export { OrderConfirmationPage };
215
- //# sourceMappingURL=chunk-F3U4KZC7.js.map
216
- //# sourceMappingURL=chunk-F3U4KZC7.js.map
215
+ //# sourceMappingURL=chunk-IUP5SDTX.js.map
216
+ //# sourceMappingURL=chunk-IUP5SDTX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/views/OrderConfirmationPage.tsx"],"names":[],"mappings":"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","file":"chunk-F3U4KZC7.js","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { getShopProvider } from '@fayz-ai/shop/runtime'\nimport { prefersReducedMotion } from '../lib/motion'\nimport type { Order } from '@fayz-ai/shop/types'\nimport { useStorefrontConfig } from '../document/config'\nimport { Link, navigateTo } from '../app/router'\nimport { formatMoney } from '../lib/format'\nimport { TID } from '../lib/testids'\nimport { CustomerAccountShell } from '../components/account/CustomerAccountShell'\nimport { OrderTrackingTimeline } from '../components/order/OrderTrackingTimeline'\nimport { financialStatusBadge, isPaid } from '../data/order-status'\nimport { useStorefrontHead } from '../hooks/use-storefront-head'\nimport { SmoothImage } from '../components/SmoothImage'\nimport { SuccessMark } from '../components/order/SuccessMark'\nimport { Skeleton, SkeletonGroup } from '../components/Skeleton'\n\n/** O contrário do SuccessMark: um pedido que existe e ainda não é uma compra. */\nfunction PendingMark() {\n return (\n <div className=\"relative mx-auto h-24 w-24\">\n <span className=\"absolute inset-0 rounded-full bg-amber-100\" />\n <svg viewBox=\"0 0 48 48\" className=\"absolute inset-0 h-full w-full p-6\" aria-hidden>\n <circle cx=\"24\" cy=\"24\" r=\"17\" fill=\"none\" stroke=\"rgb(180 83 9)\" strokeWidth=\"4\" />\n <path d=\"M24 14 L24 25 L31 29\" fill=\"none\" stroke=\"rgb(180 83 9)\" strokeWidth=\"4\"\n strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n )\n}\n\nexport function OrderConfirmationPage({ orderId }: { orderId: string }) {\n const config = useStorefrontConfig()\n const [order, setOrder] = useState<Order | null>(null)\n const [loading, setLoading] = useState(true)\n const money = (v: number) => formatMoney(v, config.currency, config.locale)\n useStorefrontHead({ title: order ? `Pedido #${order.orderNumber} — ${config.name}` : config.name })\n\n const reload = React.useCallback(() => {\n let cancelled = false\n getShopProvider()\n .getOrder(orderId)\n .then((o) => {\n if (!cancelled) setOrder(o)\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n return () => {\n cancelled = true\n }\n }, [orderId])\n\n useEffect(() => reload(), [reload])\n\n if (loading) {\n // Inside the real shell, so the store never blinks out and back for someone\n // who just paid.\n return (\n <CustomerAccountShell title=\"Detalhe do pedido\" active=\"orders\">\n <SkeletonGroup label=\"Carregando seu pedido\" className=\"rounded-xl border bg-card p-6 sm:p-8\">\n <div className=\"grid gap-6 border-b pb-6 sm:grid-cols-[120px_minmax(0,1fr)]\">\n <Skeleton className=\"mx-auto h-24 w-24 rounded-full\" />\n <div>\n <Skeleton className=\"h-8 w-64 max-w-full\" />\n <Skeleton className=\"mt-2 h-3.5 w-full max-w-md\" />\n <Skeleton className=\"mt-4 h-6 w-48\" />\n </div>\n </div>\n\n <div className=\"mt-6 grid gap-4 rounded-xl border bg-muted/20 p-4 sm:grid-cols-3\">\n {[0, 1, 2].map((column) => (\n <div key={column}>\n <Skeleton className=\"h-3 w-16\" />\n <Skeleton className=\"mt-2 h-4 w-28\" />\n <Skeleton className=\"mt-1.5 h-3 w-20\" />\n </div>\n ))}\n </div>\n\n <div className=\"mt-6\">\n <Skeleton className=\"h-3 w-32\" />\n <div className=\"mt-3 flex items-center gap-2\">\n {[0, 1, 2, 3].map((node) => (\n <React.Fragment key={node}>\n <Skeleton className=\"h-7 w-7 shrink-0 rounded-full\" />\n {node < 3 && <Skeleton className=\"h-px flex-1\" />}\n </React.Fragment>\n ))}\n </div>\n </div>\n\n <div className=\"mt-8 space-y-3\">\n {[0, 1].map((row) => (\n <div key={row} className=\"flex items-center gap-3\">\n <Skeleton className=\"h-12 w-12 rounded-lg\" />\n <Skeleton className=\"h-3.5 flex-1\" />\n <Skeleton className=\"h-3.5 w-16\" />\n </div>\n ))}\n </div>\n\n <div className=\"mt-4 space-y-2 border-t pt-4\">\n <Skeleton className=\"h-3.5 w-full max-w-xs\" />\n <Skeleton className=\"h-3.5 w-full max-w-[14rem]\" />\n <Skeleton className=\"h-5 w-40\" />\n </div>\n </SkeletonGroup>\n </CustomerAccountShell>\n )\n }\n if (!order) {\n return (\n <main className=\"mx-auto max-w-2xl px-4 py-20 text-center\">\n <p className=\"text-muted-foreground\">Pedido não encontrado.</p>\n <Link to=\"/\" className=\"mt-4 inline-block text-primary underline\">Voltar à loja</Link>\n </main>\n )\n }\n\n const paid = isPaid(order.financialStatus)\n\n return (\n <CustomerAccountShell\n title=\"Detalhe do pedido\"\n subtitle={paid ? 'Compra confirmada e vinculada à sua conta.' : 'Pedido guardado, aguardando o pagamento.'}\n active=\"orders\"\n // Sem isto os quatro botões do menu da conta eram BOTÕES MORTOS nesta\n // tela: o shell chama `onSelect?.(id)` e ninguém passava um. A conta é\n // outra rota, então aqui a escolha navega em vez de trocar de aba.\n onSelect={(section) => navigateTo(`/account?section=${section}`)}\n >\n {/* O Pix NÃO mora mais aqui.\n Esta tela abria uma cobrança sobre um pedido que já existia — o\n desenho antigo, em que o pedido nascia antes do dinheiro. Quando o\n adquirente não estava conectado, o que o comprador via era \"Não\n conseguimos abrir o Pix agora\" logo abaixo de \"Falta o pagamento\":\n uma tela que cobra e falha ao mesmo tempo, sem saída. O recebimento\n acontece no passo 3 do checkout, antes de existir pedido. */}\n\n <article data-testid={TID.orderDetail} className=\"animate-fade-up rounded-xl border bg-card p-6 sm:p-8\">\n <div className=\"grid gap-6 border-b pb-6 sm:grid-cols-[120px_minmax(0,1fr)]\">\n {/* Confete só quando o dinheiro entrou. A página comemorava\n \"Pedido confirmado!\" para um pedido `pending` — um comprador que\n ainda não pagou saía daqui achando que tinha comprado, e o lojista\n recebia a cobrança de um pedido que ninguém pagou. */}\n {paid ? <SuccessMark /> : <PendingMark />}\n <div className=\"text-center sm:text-left\">\n <h2 className=\"sf-heading text-3xl font-bold tracking-tight\">\n {paid ? 'Pedido confirmado!' : 'Falta o pagamento'}\n </h2>\n <p className=\"mt-1 text-muted-foreground\">\n {paid\n ? `Obrigado pela compra, ${order.customerName ?? 'cliente'}. A loja já está preparando seu pedido.`\n : `Guardamos seu pedido, ${order.customerName ?? 'cliente'}. Ele só é preparado depois que o pagamento entrar.`}\n </p>\n <p className=\"mt-4 text-lg\">\n Pedido <span data-testid={TID.orderNumber} className=\"font-semibold\">#{order.orderNumber}</span>{' '}\n <span\n data-testid={TID.orderStatus}\n className={`ml-2 inline-flex rounded-full px-2.5 py-0.5 text-sm font-medium ${financialStatusBadge(order.financialStatus).className}`}\n >\n {financialStatusBadge(order.financialStatus).label}\n </span>\n </p>\n </div>\n </div>\n\n <div className=\"mt-6 grid gap-4 rounded-xl border bg-muted/20 p-4 text-sm sm:grid-cols-3\">\n <div>\n <p className=\"text-muted-foreground\">Cliente</p>\n <p className=\"mt-1 font-semibold\">{order.customerName ?? 'Cliente'}</p>\n <p className=\"text-muted-foreground\">{order.customerEmail}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">Entrega</p>\n {/* \"Preparando envio\" era dito para um pedido que ninguém pagou —\n a loja não separa nada antes do dinheiro entrar. */}\n <p className=\"mt-1 font-semibold\">\n {order.fulfillmentStatus === 'fulfilled'\n ? 'Enviado'\n : paid ? 'Preparando envio' : 'Aguardando pagamento'}\n </p>\n <p className=\"text-muted-foreground\">{order.notes ?? 'Endereço salvo no pedido'}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">Pagamento</p>\n <p className=\"mt-1 font-semibold\">{financialStatusBadge(order.financialStatus).label}</p>\n {/* Nada é \"processado no checkout\" enquanto não há cobrança paga. */}\n <p className=\"text-muted-foreground\">\n {paid ? 'Recebido pela loja' : 'Ainda não recebido'}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <h3 className=\"mb-3 text-sm font-semibold uppercase text-muted-foreground\">\n Acompanhamento\n </h3>\n <OrderTrackingTimeline order={order} />\n\n {/* The code itself, under the timeline that says a box exists. Until\n 0052 the buyer could see \"enviado\" and had no way to learn it. */}\n {(order.shipments ?? []).filter((s) => s.trackingCode).map((shipment) => (\n <div\n key={shipment.id}\n data-testid={TID.orderTracking + '-code'}\n className=\"mt-4 flex flex-wrap items-center gap-x-3 gap-y-1 rounded-lg border bg-muted/30 px-4 py-3 text-sm\"\n >\n <span className=\"text-muted-foreground\">\n {shipment.carrier ? `Enviado por ${shipment.carrier}` : 'Enviado'}\n </span>\n {shipment.trackingUrl ? (\n <a\n href={shipment.trackingUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"font-mono font-medium text-primary hover:underline\"\n >\n {shipment.trackingCode}\n </a>\n ) : (\n <span className=\"font-mono font-medium\">{shipment.trackingCode}</span>\n )}\n </div>\n ))}\n </div>\n\n <ul className=\"mt-8 space-y-3 text-left\">\n {order.items.map((item) => (\n <li key={item.id} className=\"flex items-center gap-3 text-sm\">\n {item.imageUrl && <SmoothImage src={item.imageUrl} alt={item.name} className=\"h-12 w-12 rounded-lg border object-cover\" variant={{ width: 48 }} />}\n <span className=\"flex-1\">\n {item.name} <span className=\"text-muted-foreground\">× {item.quantity}</span>\n </span>\n <span data-price={item.total.toFixed(2)}>{money(item.total)}</span>\n </li>\n ))}\n </ul>\n\n <dl className=\"mt-4 space-y-1.5 border-t pt-4 text-left text-sm\">\n <div className=\"flex justify-between\">\n <dt className=\"text-muted-foreground\">Subtotal</dt>\n <dd data-price={order.subtotal.toFixed(2)}>{money(order.subtotal)}</dd>\n </div>\n {order.discountTotal > 0 && (\n <div className=\"flex justify-between text-emerald-600\">\n <dt>Desconto {order.discountCode ? `(${order.discountCode})` : ''}</dt>\n <dd data-price={order.discountTotal.toFixed(2)}>−{money(order.discountTotal)}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"text-muted-foreground\">Frete</dt>\n <dd data-price={order.shippingTotal.toFixed(2)}>\n {order.shippingTotal === 0 ? 'Grátis' : money(order.shippingTotal)}\n </dd>\n </div>\n <div className=\"flex justify-between border-t pt-2 text-base font-semibold\">\n <dt>Total</dt>\n <dd data-testid={TID.orderTotal} data-price={order.total.toFixed(2)}>{money(order.total)}</dd>\n </div>\n </dl>\n\n <div className=\"mt-8 flex flex-wrap gap-3\">\n <Link\n to=\"/account\"\n data-testid={TID.viewPurchases}\n className=\"rounded-xl bg-primary px-5 py-2.5 font-semibold text-primary-foreground hover:opacity-90\"\n >\n Minhas compras\n </Link>\n <Link to={config.catalogPath} className=\"rounded-xl border px-5 py-2.5 font-semibold hover:bg-muted\">\n Continuar comprando\n </Link>\n </div>\n </article>\n </CustomerAccountShell>\n )\n}\n"]}
1
+ {"version":3,"sources":["../src/views/OrderConfirmationPage.tsx"],"names":[],"mappings":"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","file":"chunk-IUP5SDTX.js","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { getShopProvider } from '@fayz-ai/shop/runtime'\nimport { prefersReducedMotion } from '../lib/motion'\nimport type { Order } from '@fayz-ai/shop/types'\nimport { useStorefrontConfig } from '../document/config'\nimport { Link, navigateTo } from '../app/router'\nimport { formatMoney } from '../lib/format'\nimport { TID } from '../lib/testids'\nimport { CustomerAccountShell } from '../components/account/CustomerAccountShell'\nimport { OrderTrackingTimeline } from '../components/order/OrderTrackingTimeline'\nimport { financialStatusBadge, isPaid } from '../data/order-status'\nimport { useStorefrontHead } from '../hooks/use-storefront-head'\nimport { SmoothImage } from '../components/SmoothImage'\nimport { SuccessMark } from '../components/order/SuccessMark'\nimport { Skeleton, SkeletonGroup } from '../components/Skeleton'\n\n/** O contrário do SuccessMark: um pedido que existe e ainda não é uma compra. */\nfunction PendingMark() {\n return (\n <div className=\"relative mx-auto h-24 w-24\">\n <span className=\"absolute inset-0 rounded-full bg-amber-100\" />\n <svg viewBox=\"0 0 48 48\" className=\"absolute inset-0 h-full w-full p-6\" aria-hidden>\n <circle cx=\"24\" cy=\"24\" r=\"17\" fill=\"none\" stroke=\"rgb(180 83 9)\" strokeWidth=\"4\" />\n <path d=\"M24 14 L24 25 L31 29\" fill=\"none\" stroke=\"rgb(180 83 9)\" strokeWidth=\"4\"\n strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n </div>\n )\n}\n\nexport function OrderConfirmationPage({ orderId }: { orderId: string }) {\n const config = useStorefrontConfig()\n const [order, setOrder] = useState<Order | null>(null)\n const [loading, setLoading] = useState(true)\n const money = (v: number) => formatMoney(v, config.currency, config.locale)\n useStorefrontHead({ title: order ? `Pedido #${order.orderNumber} — ${config.name}` : config.name })\n\n const reload = React.useCallback(() => {\n let cancelled = false\n getShopProvider()\n .getOrder(orderId)\n .then((o) => {\n if (!cancelled) setOrder(o)\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n return () => {\n cancelled = true\n }\n }, [orderId])\n\n useEffect(() => reload(), [reload])\n\n if (loading) {\n // Inside the real shell, so the store never blinks out and back for someone\n // who just paid.\n return (\n <CustomerAccountShell title=\"Detalhe do pedido\" active=\"orders\">\n <SkeletonGroup label=\"Carregando seu pedido\" className=\"rounded-xl border bg-card p-6 sm:p-8\">\n <div className=\"grid gap-6 border-b pb-6 sm:grid-cols-[120px_minmax(0,1fr)]\">\n <Skeleton className=\"mx-auto h-24 w-24 rounded-full\" />\n <div>\n <Skeleton className=\"h-8 w-64 max-w-full\" />\n <Skeleton className=\"mt-2 h-3.5 w-full max-w-md\" />\n <Skeleton className=\"mt-4 h-6 w-48\" />\n </div>\n </div>\n\n <div className=\"mt-6 grid gap-4 rounded-xl border bg-muted/20 p-4 sm:grid-cols-3\">\n {[0, 1, 2].map((column) => (\n <div key={column}>\n <Skeleton className=\"h-3 w-16\" />\n <Skeleton className=\"mt-2 h-4 w-28\" />\n <Skeleton className=\"mt-1.5 h-3 w-20\" />\n </div>\n ))}\n </div>\n\n <div className=\"mt-6\">\n <Skeleton className=\"h-3 w-32\" />\n <div className=\"mt-3 flex items-center gap-2\">\n {[0, 1, 2, 3].map((node) => (\n <React.Fragment key={node}>\n <Skeleton className=\"h-7 w-7 shrink-0 rounded-full\" />\n {node < 3 && <Skeleton className=\"h-px flex-1\" />}\n </React.Fragment>\n ))}\n </div>\n </div>\n\n <div className=\"mt-8 space-y-3\">\n {[0, 1].map((row) => (\n <div key={row} className=\"flex items-center gap-3\">\n <Skeleton className=\"h-12 w-12 rounded-lg\" />\n <Skeleton className=\"h-3.5 flex-1\" />\n <Skeleton className=\"h-3.5 w-16\" />\n </div>\n ))}\n </div>\n\n <div className=\"mt-4 space-y-2 border-t pt-4\">\n <Skeleton className=\"h-3.5 w-full max-w-xs\" />\n <Skeleton className=\"h-3.5 w-full max-w-[14rem]\" />\n <Skeleton className=\"h-5 w-40\" />\n </div>\n </SkeletonGroup>\n </CustomerAccountShell>\n )\n }\n if (!order) {\n return (\n <main className=\"mx-auto max-w-2xl px-4 py-20 text-center\">\n <p className=\"text-muted-foreground\">Pedido não encontrado.</p>\n <Link to=\"/\" className=\"mt-4 inline-block text-primary underline\">Voltar à loja</Link>\n </main>\n )\n }\n\n const paid = isPaid(order.financialStatus)\n\n return (\n <CustomerAccountShell\n title=\"Detalhe do pedido\"\n subtitle={paid ? 'Compra confirmada e vinculada à sua conta.' : 'Pedido guardado, aguardando o pagamento.'}\n active=\"orders\"\n // Sem isto os quatro botões do menu da conta eram BOTÕES MORTOS nesta\n // tela: o shell chama `onSelect?.(id)` e ninguém passava um. A conta é\n // outra rota, então aqui a escolha navega em vez de trocar de aba.\n onSelect={(section) => navigateTo(`/account?section=${section}`)}\n >\n {/* O Pix NÃO mora mais aqui.\n Esta tela abria uma cobrança sobre um pedido que já existia — o\n desenho antigo, em que o pedido nascia antes do dinheiro. Quando o\n adquirente não estava conectado, o que o comprador via era \"Não\n conseguimos abrir o Pix agora\" logo abaixo de \"Falta o pagamento\":\n uma tela que cobra e falha ao mesmo tempo, sem saída. O recebimento\n acontece no passo 3 do checkout, antes de existir pedido. */}\n\n <article data-testid={TID.orderDetail} className=\"animate-fade-up rounded-xl border bg-card p-6 sm:p-8\">\n <div className=\"grid gap-6 border-b pb-6 sm:grid-cols-[120px_minmax(0,1fr)]\">\n {/* Confete só quando o dinheiro entrou. A página comemorava\n \"Pedido confirmado!\" para um pedido `pending` — um comprador que\n ainda não pagou saía daqui achando que tinha comprado, e o lojista\n recebia a cobrança de um pedido que ninguém pagou. */}\n {paid ? <SuccessMark /> : <PendingMark />}\n <div className=\"text-center sm:text-left\">\n <h2 className=\"sf-heading text-3xl font-bold tracking-tight\">\n {paid ? 'Pedido confirmado!' : 'Falta o pagamento'}\n </h2>\n <p className=\"mt-1 text-muted-foreground\">\n {paid\n ? `Obrigado pela compra, ${order.customerName ?? 'cliente'}. A loja já está preparando seu pedido.`\n : `Guardamos seu pedido, ${order.customerName ?? 'cliente'}. Ele só é preparado depois que o pagamento entrar.`}\n </p>\n <p className=\"mt-4 text-lg\">\n Pedido <span data-testid={TID.orderNumber} className=\"font-semibold\">#{order.orderNumber}</span>{' '}\n <span\n data-testid={TID.orderStatus}\n className={`ml-2 inline-flex rounded-full px-2.5 py-0.5 text-sm font-medium ${financialStatusBadge(order.financialStatus).className}`}\n >\n {financialStatusBadge(order.financialStatus).label}\n </span>\n </p>\n </div>\n </div>\n\n <div className=\"mt-6 grid gap-4 rounded-xl border bg-muted/20 p-4 text-sm sm:grid-cols-3\">\n <div>\n <p className=\"text-muted-foreground\">Cliente</p>\n <p className=\"mt-1 font-semibold\">{order.customerName ?? 'Cliente'}</p>\n <p className=\"text-muted-foreground\">{order.customerEmail}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">Entrega</p>\n {/* \"Preparando envio\" era dito para um pedido que ninguém pagou —\n a loja não separa nada antes do dinheiro entrar. */}\n <p className=\"mt-1 font-semibold\">\n {order.fulfillmentStatus === 'fulfilled'\n ? 'Enviado'\n : paid ? 'Preparando envio' : 'Aguardando pagamento'}\n </p>\n <p className=\"text-muted-foreground\">{order.notes ?? 'Endereço salvo no pedido'}</p>\n </div>\n <div>\n <p className=\"text-muted-foreground\">Pagamento</p>\n <p className=\"mt-1 font-semibold\">{financialStatusBadge(order.financialStatus).label}</p>\n {/* Nada é \"processado no checkout\" enquanto não há cobrança paga. */}\n <p className=\"text-muted-foreground\">\n {paid ? 'Recebido pela loja' : 'Ainda não recebido'}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <h3 className=\"mb-3 text-sm font-semibold uppercase text-muted-foreground\">\n Acompanhamento\n </h3>\n <OrderTrackingTimeline order={order} />\n\n {/* The code itself, under the timeline that says a box exists. Until\n 0052 the buyer could see \"enviado\" and had no way to learn it. */}\n {(order.shipments ?? []).filter((s) => s.trackingCode).map((shipment) => (\n <div\n key={shipment.id}\n data-testid={TID.orderTracking + '-code'}\n className=\"mt-4 flex flex-wrap items-center gap-x-3 gap-y-1 rounded-lg border bg-muted/30 px-4 py-3 text-sm\"\n >\n <span className=\"text-muted-foreground\">\n {shipment.carrier ? `Enviado por ${shipment.carrier}` : 'Enviado'}\n </span>\n {shipment.trackingUrl ? (\n <a\n href={shipment.trackingUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"font-mono font-medium text-primary hover:underline\"\n >\n {shipment.trackingCode}\n </a>\n ) : (\n <span className=\"font-mono font-medium\">{shipment.trackingCode}</span>\n )}\n </div>\n ))}\n </div>\n\n <ul className=\"mt-8 space-y-3 text-left\">\n {order.items.map((item) => (\n <li key={item.id} className=\"flex items-center gap-3 text-sm\">\n {item.imageUrl && <SmoothImage src={item.imageUrl} alt={item.name} className=\"h-12 w-12 rounded-lg border object-cover\" variant={{ width: 48 }} />}\n <span className=\"flex-1\">\n {item.name} <span className=\"text-muted-foreground\">× {item.quantity}</span>\n </span>\n <span data-price={item.total.toFixed(2)}>{money(item.total)}</span>\n </li>\n ))}\n </ul>\n\n <dl className=\"mt-4 space-y-1.5 border-t pt-4 text-left text-sm\">\n <div className=\"flex justify-between\">\n <dt className=\"text-muted-foreground\">Subtotal</dt>\n <dd data-price={order.subtotal.toFixed(2)}>{money(order.subtotal)}</dd>\n </div>\n {order.discountTotal > 0 && (\n <div className=\"flex justify-between text-emerald-600\">\n <dt>Desconto {order.discountCode ? `(${order.discountCode})` : ''}</dt>\n <dd data-price={order.discountTotal.toFixed(2)}>−{money(order.discountTotal)}</dd>\n </div>\n )}\n <div className=\"flex justify-between\">\n <dt className=\"text-muted-foreground\">Frete</dt>\n <dd data-price={order.shippingTotal.toFixed(2)}>\n {order.shippingTotal === 0 ? 'Grátis' : money(order.shippingTotal)}\n </dd>\n </div>\n <div className=\"flex justify-between border-t pt-2 text-base font-semibold\">\n <dt>Total</dt>\n <dd data-testid={TID.orderTotal} data-price={order.total.toFixed(2)}>{money(order.total)}</dd>\n </div>\n </dl>\n\n <div className=\"mt-8 flex flex-wrap gap-3\">\n <Link\n to=\"/account\"\n data-testid={TID.viewPurchases}\n className=\"rounded-xl bg-primary px-5 py-2.5 font-semibold text-primary-foreground hover:opacity-90\"\n >\n Minhas compras\n </Link>\n <Link to={config.catalogPath} className=\"rounded-xl border px-5 py-2.5 font-semibold hover:bg-muted\">\n Continuar comprando\n </Link>\n </div>\n </article>\n </CustomerAccountShell>\n )\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { useSessionStore } from './chunk-2D5BEM43.js';
1
+ import { useSessionStore } from './chunk-EFHQ5MAJ.js';
2
2
  import { useState, useCallback, useEffect } from 'react';
3
3
  import { getShopProvider } from '@fayz-ai/shop/runtime';
4
4
 
@@ -64,5 +64,5 @@ function useMyOrders() {
64
64
  }
65
65
 
66
66
  export { rememberLocalOrder, useMyOrders };
67
- //# sourceMappingURL=chunk-ZSNKJGE5.js.map
68
- //# sourceMappingURL=chunk-ZSNKJGE5.js.map
67
+ //# sourceMappingURL=chunk-NS6UPIJ3.js.map
68
+ //# sourceMappingURL=chunk-NS6UPIJ3.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/data/local-orders.ts","../src/hooks/use-my-orders.ts"],"names":[],"mappings":"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","file":"chunk-ZSNKJGE5.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Os pedidos que ESTE navegador fez.\n//\n// Existe por causa de 0055. \"Minhas compras\" listava pedidos chamando\n// `shop_list_orders(customer_id)` — e essa função deixava um chamador anônimo\n// ler o histórico de qualquer cliente, com endereço de entrega, a partir de um\n// id que saía de sondar um e-mail. A trava foi corrigida, e com ela caiu a\n// única forma que um convidado tinha de rever a própria compra.\n//\n// A reposição não reabre o buraco: em vez de PERGUNTAR ao servidor \"o que é\n// deste cliente?\", o navegador lembra os ids que ele mesmo criou e busca um a\n// um por `shop_get_order(uuid)`. O uuid v4 é a credencial — o mesmo desenho que\n// já sustenta a página de confirmação — e ninguém consegue listar o que não\n// fez.\n//\n// Some quando o comprador limpa o navegador, e isso é honesto: quem quer\n// histórico que atravessa aparelhos precisa de conta de verdade.\n// ---------------------------------------------------------------------------\n\nconst KEY = 'fayz.storefront.orders.v1'\n/** O bastante para a página de conta; mais que isso é caso de criar conta. */\nconst MAX = 25\n\nfunction read(): string[] {\n try {\n const raw = globalThis.localStorage?.getItem(KEY)\n const parsed = raw ? JSON.parse(raw) : []\n return Array.isArray(parsed) ? parsed.filter((id) => typeof id === 'string') : []\n } catch {\n // Modo privado, storage cheio, JSON corrompido — nenhum deles é motivo para\n // derrubar a loja.\n return []\n }\n}\n\nexport function rememberLocalOrder(orderId: string): void {\n if (!orderId) return\n try {\n const next = [orderId, ...read().filter((id) => id !== orderId)].slice(0, MAX)\n globalThis.localStorage?.setItem(KEY, JSON.stringify(next))\n } catch {\n /* ver acima */\n }\n}\n\n/** Mais recente primeiro, que é a ordem em que foram lembrados. */\nexport function listLocalOrderIds(): string[] {\n return read()\n}\n\nexport function forgetLocalOrders(): void {\n try {\n globalThis.localStorage?.removeItem(KEY)\n } catch {\n /* ver acima */\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { getShopProvider } from '@fayz-ai/shop/runtime'\nimport type { Order } from '@fayz-ai/shop/types'\nimport { useSessionStore } from '../stores/session.store'\nimport { listLocalOrderIds } from '../data/local-orders'\n\nexport function useMyOrders(): { orders: Order[]; loading: boolean; refresh: () => void } {\n const customerId = useSessionStore((s) => s.customerId)\n const email = useSessionStore((s) => s.email)\n const [orders, setOrders] = useState<Order[]>([])\n const [loading, setLoading] = useState(true)\n const [tick, setTick] = useState(0)\n\n const refresh = useCallback(() => setTick((t) => t + 1), [])\n\n useEffect(() => {\n let cancelled = false\n // Um convidado não tem sessão de verdade, então o servidor recusa listar\n // por cliente (0055) — e recusa CERTO. O que ele consegue ver é o que este\n // navegador criou.\n const local = listLocalOrderIds()\n if (!customerId && !email) {\n if (local.length === 0) {\n setOrders([])\n setLoading(false)\n return\n }\n }\n setLoading(true)\n // Scope by customerId (RLS-enforced to the owner on Supabase) when available;\n // fall back to email only for legacy sessions without a linked customer.\n const query = customerId ? { customerId, limit: 50 } : { customerEmail: email!, limit: 50 }\n getShopProvider()\n .listOrders(query)\n .then((data) => {\n if (!cancelled) setOrders(data)\n })\n .catch(async () => {\n // 42501 aqui é a trava de 0055 fazendo o trabalho dela: quem não entrou\n // não lista o histórico de ninguém. Cai para os pedidos deste\n // navegador, buscados um a um pelo uuid — que é a credencial.\n const mine = await Promise.all(\n listLocalOrderIds().map((id) => getShopProvider().getOrder(id).catch(() => null)),\n )\n if (!cancelled) setOrders(mine.filter((o): o is Order => !!o))\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n return () => {\n cancelled = true\n }\n }, [customerId, email, tick])\n\n return { orders, loading, refresh }\n}\n"]}
1
+ {"version":3,"sources":["../src/data/local-orders.ts","../src/hooks/use-my-orders.ts"],"names":[],"mappings":"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","file":"chunk-NS6UPIJ3.js","sourcesContent":["// ---------------------------------------------------------------------------\n// Os pedidos que ESTE navegador fez.\n//\n// Existe por causa de 0055. \"Minhas compras\" listava pedidos chamando\n// `shop_list_orders(customer_id)` — e essa função deixava um chamador anônimo\n// ler o histórico de qualquer cliente, com endereço de entrega, a partir de um\n// id que saía de sondar um e-mail. A trava foi corrigida, e com ela caiu a\n// única forma que um convidado tinha de rever a própria compra.\n//\n// A reposição não reabre o buraco: em vez de PERGUNTAR ao servidor \"o que é\n// deste cliente?\", o navegador lembra os ids que ele mesmo criou e busca um a\n// um por `shop_get_order(uuid)`. O uuid v4 é a credencial — o mesmo desenho que\n// já sustenta a página de confirmação — e ninguém consegue listar o que não\n// fez.\n//\n// Some quando o comprador limpa o navegador, e isso é honesto: quem quer\n// histórico que atravessa aparelhos precisa de conta de verdade.\n// ---------------------------------------------------------------------------\n\nconst KEY = 'fayz.storefront.orders.v1'\n/** O bastante para a página de conta; mais que isso é caso de criar conta. */\nconst MAX = 25\n\nfunction read(): string[] {\n try {\n const raw = globalThis.localStorage?.getItem(KEY)\n const parsed = raw ? JSON.parse(raw) : []\n return Array.isArray(parsed) ? parsed.filter((id) => typeof id === 'string') : []\n } catch {\n // Modo privado, storage cheio, JSON corrompido — nenhum deles é motivo para\n // derrubar a loja.\n return []\n }\n}\n\nexport function rememberLocalOrder(orderId: string): void {\n if (!orderId) return\n try {\n const next = [orderId, ...read().filter((id) => id !== orderId)].slice(0, MAX)\n globalThis.localStorage?.setItem(KEY, JSON.stringify(next))\n } catch {\n /* ver acima */\n }\n}\n\n/** Mais recente primeiro, que é a ordem em que foram lembrados. */\nexport function listLocalOrderIds(): string[] {\n return read()\n}\n\nexport function forgetLocalOrders(): void {\n try {\n globalThis.localStorage?.removeItem(KEY)\n } catch {\n /* ver acima */\n }\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport { getShopProvider } from '@fayz-ai/shop/runtime'\nimport type { Order } from '@fayz-ai/shop/types'\nimport { useSessionStore } from '../stores/session.store'\nimport { listLocalOrderIds } from '../data/local-orders'\n\nexport function useMyOrders(): { orders: Order[]; loading: boolean; refresh: () => void } {\n const customerId = useSessionStore((s) => s.customerId)\n const email = useSessionStore((s) => s.email)\n const [orders, setOrders] = useState<Order[]>([])\n const [loading, setLoading] = useState(true)\n const [tick, setTick] = useState(0)\n\n const refresh = useCallback(() => setTick((t) => t + 1), [])\n\n useEffect(() => {\n let cancelled = false\n // Um convidado não tem sessão de verdade, então o servidor recusa listar\n // por cliente (0055) — e recusa CERTO. O que ele consegue ver é o que este\n // navegador criou.\n const local = listLocalOrderIds()\n if (!customerId && !email) {\n if (local.length === 0) {\n setOrders([])\n setLoading(false)\n return\n }\n }\n setLoading(true)\n // Scope by customerId (RLS-enforced to the owner on Supabase) when available;\n // fall back to email only for legacy sessions without a linked customer.\n const query = customerId ? { customerId, limit: 50 } : { customerEmail: email!, limit: 50 }\n getShopProvider()\n .listOrders(query)\n .then((data) => {\n if (!cancelled) setOrders(data)\n })\n .catch(async () => {\n // 42501 aqui é a trava de 0055 fazendo o trabalho dela: quem não entrou\n // não lista o histórico de ninguém. Cai para os pedidos deste\n // navegador, buscados um a um pelo uuid — que é a credencial.\n const mine = await Promise.all(\n listLocalOrderIds().map((id) => getShopProvider().getOrder(id).catch(() => null)),\n )\n if (!cancelled) setOrders(mine.filter((o): o is Order => !!o))\n })\n .finally(() => {\n if (!cancelled) setLoading(false)\n })\n return () => {\n cancelled = true\n }\n }, [customerId, email, tick])\n\n return { orders, loading, refresh }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { useDeliveryStore, useCartStore, selectSubtotal } from './chunk-RZWTEC6H.js';
2
- import { formatMoney, establishCustomerSession, useSessionStore } from './chunk-2D5BEM43.js';
3
- import { toBlockNodes, defaultPageBlocks, PageDataScope, checkPageBlocks } from './chunk-BKO2AQ3Q.js';
4
- import { useRoutePath, useStorefrontConfigOptional, useStorefrontConfig, translate, Link } from './chunk-GVZ2SAOI.js';
1
+ import { useDeliveryStore, useCartStore, selectSubtotal } from './chunk-C4XATNI2.js';
2
+ import { formatMoney, establishCustomerSession, useSessionStore } from './chunk-EFHQ5MAJ.js';
3
+ import { toBlockNodes, defaultPageBlocks, PageDataScope, checkPageBlocks } from './chunk-SLJ4BRXD.js';
4
+ import { useRoutePath, useStorefrontConfigOptional, useStorefrontConfig, translate, Link } from './chunk-PSDR5TZD.js';
5
5
  import { createContext, useContext, useMemo, useState, useEffect, useCallback } from 'react';
6
6
  import { repairBlockTree, renderBlocks, clearExtensionPoints, defineExtensionPoint, runExtensionPoint, runEscapeValve, getCountrySchema } from '@fayz-ai/core';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
@@ -813,5 +813,5 @@ function returnPath(config) {
813
813
  }
814
814
 
815
815
  export { BEFORE_PLACE_ORDER_VALVE, BUYER_COUNTRY_COOKIE, CART_LINE_ANNOTATION_POINT, CHECKOUT_FIELD_POINT, ORDER_METADATA_POINT, PAGE_DATA_SCRIPT_ID, PRODUCT_CARD_BADGE_POINT, STOREFRONT_SLOTS, SignInModal, Slot, StorefrontPage, collectOrderMetadata, getCartLineAnnotations, getCheckoutFieldContributions, getProductCardBadges, hydratedEntriesFor, identifyStorefrontBuyer, lastStorefrontEventAt, listSlots, onStorefrontBuyer, onStorefrontEvent, readHydratedPageData, registerStorefrontExtensionPoints, rememberReturnPath, resetPageDiagnostics, resetStorefrontExtensionPoints, returnPath, runBeforePlaceOrderValve, serializePageData, setStorefrontIdentifier, toast, trackStorefront, useBuyerCountry, useBuyerStore, useDiscountValidator, useSlotContext, useSlotFilled, useStorefrontPage, useStorefrontPageOptional, useT, useToastStore, usedSlots };
816
- //# sourceMappingURL=chunk-FPFGRUCS.js.map
817
- //# sourceMappingURL=chunk-FPFGRUCS.js.map
816
+ //# sourceMappingURL=chunk-OOQRYH3N.js.map
817
+ //# sourceMappingURL=chunk-OOQRYH3N.js.map