@nevios/storefront-kit 1.4.0 → 1.5.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.
- package/dist/index.cjs +764 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +93 -2
- package/dist/index.d.ts +93 -2
- package/dist/index.js +763 -7
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider.tsx","../src/theme.tsx","../src/i18n/en.ts","../src/i18n/cs.ts","../src/i18n/context.tsx","../src/market-switcher.tsx","../src/catalog/money.tsx","../src/catalog/product-card.tsx","../src/catalog/product-gallery.tsx","../src/catalog/variant-picker.tsx","../src/catalog/back-in-stock-form.tsx","../src/catalog/stock-badge.tsx","../src/catalog/product-detail.tsx","../src/catalog/collection.tsx","../src/catalog/filters.tsx","../src/catalog/purchase-options.tsx","../src/cart/cart-context.tsx","../src/cart/add-to-cart.tsx","../src/cart/cart-line-item.tsx","../src/cart/cart-summary.tsx","../src/cart/cart-drawer.tsx","../src/checkout/checkout-context.tsx","../src/checkout/ui.tsx","../src/checkout/address-form.tsx","../src/checkout/shipping-picker.tsx","../src/payment/method-picker.tsx","../src/checkout/subscription-terms.tsx","../src/checkout/payment-section.tsx","../src/checkout/order-summary.tsx","../src/checkout/checkout-flow.tsx","../src/order/use-order-status.tsx","../src/order/use-payment.tsx","../src/order/parts.tsx","../src/order/order-confirmation.tsx","../src/order/order-status-page.tsx","../src/payment/transfer-instructions.tsx","../src/payment/payment-page.tsx","../src/account/account-context.tsx","../src/account/login-form.tsx","../src/account/account-dashboard.tsx","../src/account/order-history.tsx","../src/account/address-form.tsx","../src/account/address-book.tsx","../src/account/profile-editor.tsx","../src/account/account-security.tsx","../src/account/subscriptions.tsx","../src/account/subscription-list.tsx","../src/seo/utils.tsx","../src/seo/product.tsx","../src/seo/breadcrumb.tsx","../src/seo/organization.tsx"],"names":["React","React2","React3","jsx","jsxs","imageSrcSet","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","Row","React15","Fragment","React16","React17","React18","React19","Shell","React20","React21","React22","AddressForm","React23","React24","React25","React26","StorefrontError","React27"],"mappings":"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","file":"index.cjs","sourcesContent":["\"use client\";\n\n/**\n * NeviosProvider — puts a configured storefront client on React context so\n * every kit component + hook can reach it. Wrap your app once at the root.\n *\n * import { createStorefrontClient } from \"@nevios/storefront-js\";\n * import { NeviosProvider } from \"@nevios/storefront-kit\";\n *\n * const client = createStorefrontClient({ publishableKey, market });\n * <NeviosProvider client={client}>{children}</NeviosProvider>\n */\n\nimport * as React from \"react\";\nimport type { StorefrontClient } from \"@nevios/storefront-js\";\n\nconst StorefrontContext = React.createContext<StorefrontClient | null>(null);\n\nexport interface NeviosProviderProps {\n client: StorefrontClient;\n children: React.ReactNode;\n}\n\nexport function NeviosProvider({ client, children }: NeviosProviderProps): React.ReactElement {\n return <StorefrontContext.Provider value={client}>{children}</StorefrontContext.Provider>;\n}\n\n/** Access the storefront client from any kit component / hook. */\nexport function useStorefront(): StorefrontClient {\n const client = React.useContext(StorefrontContext);\n if (!client) {\n throw new Error(\n \"useStorefront must be used inside <NeviosProvider>. Wrap your app root with it.\",\n );\n }\n return client;\n}\n\n/** Non-throwing client access — returns null when no <NeviosProvider> is\n * mounted. For presentational components that want optional client config\n * (e.g. `imageBase` for responsive images) but must still render standalone. */\nexport function useStorefrontOptional(): StorefrontClient | null {\n return React.useContext(StorefrontContext);\n}\n","\"use client\";\n\n/**\n * Theme contract — the customization surface (layer 1) merchants edit in\n * `nevios.config.ts`. Tokens are injected as CSS custom properties on a\n * wrapper, so every kit component reads `var(--nv-…)` and re-skins with zero\n * code. Mirrors the internal `/design` token model, pointed outward.\n *\n * <ThemeProvider theme={{ brand: \"#b1442e\", radius: \"12px\" }}>\n * {storefront}\n * </ThemeProvider>\n */\n\nimport * as React from \"react\";\n\n/** The full token set. All optional — unset tokens fall back to defaults. */\nexport interface StorefrontTheme {\n /** Primary brand / CTA color. */\n brand?: string;\n brandForeground?: string;\n background?: string;\n foreground?: string;\n muted?: string;\n border?: string;\n /** Corner radius for cards/inputs/buttons. */\n radius?: string;\n /** Base font family. */\n fontFamily?: string;\n}\n\nconst DEFAULTS: Required<StorefrontTheme> = {\n brand: \"#111111\",\n brandForeground: \"#ffffff\",\n background: \"#ffffff\",\n foreground: \"#111111\",\n muted: \"#6b7280\",\n border: \"rgba(0,0,0,0.1)\",\n radius: \"12px\",\n fontFamily: \"system-ui, sans-serif\",\n};\n\nconst TOKEN_VAR: Record<keyof StorefrontTheme, string> = {\n brand: \"--nv-brand\",\n brandForeground: \"--nv-brand-foreground\",\n background: \"--nv-bg\",\n foreground: \"--nv-fg\",\n muted: \"--nv-muted\",\n border: \"--nv-border\",\n radius: \"--nv-radius\",\n fontFamily: \"--nv-font\",\n};\n\n/** Resolve a theme into the CSS-var style object the provider applies. */\nexport function themeToCssVars(theme: StorefrontTheme = {}): React.CSSProperties {\n const merged = { ...DEFAULTS, ...theme };\n const vars: Record<string, string> = {};\n for (const key of Object.keys(TOKEN_VAR) as (keyof StorefrontTheme)[]) {\n vars[TOKEN_VAR[key]] = merged[key];\n }\n return vars as React.CSSProperties;\n}\n\nexport interface ThemeProviderProps {\n theme?: StorefrontTheme;\n children: React.ReactNode;\n /** Wrapper element (default `div`). */\n as?: keyof React.JSX.IntrinsicElements;\n}\n\nexport function ThemeProvider({\n theme,\n children,\n as: Tag = \"div\",\n}: ThemeProviderProps): React.ReactElement {\n const style = themeToCssVars(theme);\n return React.createElement(\n Tag,\n { \"data-nevios-theme\": \"\", style },\n children,\n );\n}\n","/**\n * English message bundle — the canonical key set. Every other locale bundle is\n * typed as `Messages` (a `Record<MessageKey, string>`), so the compiler forces\n * it to define exactly these keys: a missing or stray key is a type error.\n *\n * Keys are dot-namespaced by surface (`cart.*`, `checkout.*`, `order.*`).\n * `{name}` placeholders are interpolated by `t(key, { name })`. Plural keys end\n * in a CLDR category (`.one` / `.few` / `.many` / `.other`); call them via the\n * base key with a `count` var — `t(\"shipping.days\", { count })` — and the\n * provider picks the category for the active locale via `Intl.PluralRules`.\n */\n\nexport const en = {\n \"subscriptions.purchaseOption\": \"Purchase option\",\n \"subscriptions.empty\": \"You have no subscriptions yet.\",\n \"subscriptions.status.active\": \"Active\",\n \"subscriptions.status.paused\": \"Paused\",\n \"subscriptions.status.pending\": \"Awaiting payment\",\n \"subscriptions.status.cancelled\": \"Cancelled\",\n \"subscriptions.title\": \"Subscription\",\n \"subscriptions.consent\": \"I agree to the recurring price, delivery schedule and terms shown above.\",\n \"subscriptions.eachDelivery\": \"For each delivery\",\n \"subscriptions.once\": \"One-time purchase\",\n\n // common\n \"common.free\": \"Free\",\n \"common.close\": \"Close\",\n \"common.loadingShort\": \"…\",\n\n // catalog\n \"catalog.addToCart\": \"Add to cart\",\n \"catalog.noProducts\": \"No products yet.\",\n \"catalog.soldOut\": \"Sold out\",\n \"catalog.addError\": \"Couldn't add to cart. Please try again.\",\n \"catalog.inStock\": \"In stock\",\n \"catalog.preorder\": \"Pre-order\",\n // catalog — filters + sort\n \"catalog.filters.sort\": \"Sort by\",\n \"catalog.filters.sortNewest\": \"Newest\",\n \"catalog.filters.sortOldest\": \"Oldest\",\n \"catalog.filters.sortTitleAsc\": \"Name: A–Z\",\n \"catalog.filters.sortTitleDesc\": \"Name: Z–A\",\n \"catalog.filters.sortPriceAsc\": \"Price: low to high\",\n \"catalog.filters.sortPriceDesc\": \"Price: high to low\",\n \"catalog.filters.priceRange\": \"Price\",\n \"catalog.filters.min\": \"Min\",\n \"catalog.filters.max\": \"Max\",\n \"catalog.filters.tags\": \"Tags\",\n \"catalog.filters.inStockOnly\": \"In stock only\",\n \"catalog.filters.clear\": \"Clear filters\",\n // catalog — back in stock\n \"catalog.backInStock.prompt\": \"Out of stock — we'll email you when it's back.\",\n \"catalog.backInStock.email\": \"Email\",\n \"catalog.backInStock.notify\": \"Notify me\",\n \"catalog.backInStock.success\": \"Done — we'll email you when it's back in stock.\",\n \"catalog.backInStock.error\": \"Couldn't subscribe. Please try again.\",\n\n // cart\n \"cart.title\": \"Cart\",\n \"cart.empty\": \"Your cart is empty.\",\n \"cart.remove\": \"Remove\",\n \"cart.increaseQty\": \"Increase quantity\",\n \"cart.decreaseQty\": \"Decrease quantity\",\n \"cart.checkout\": \"Checkout\",\n \"cart.subtotal\": \"Subtotal\",\n \"cart.tax\": \"Tax\",\n \"cart.total\": \"Total\",\n\n // shared totals (checkout + order)\n \"totals.subtotal\": \"Subtotal\",\n \"totals.discount\": \"Discount\",\n \"totals.shipping\": \"Shipping\",\n \"totals.paymentFee\": \"Payment fee\",\n \"totals.taxIncluded\": \"Tax included\",\n \"totals.total\": \"Total\",\n\n // checkout — steps + states\n \"checkout.stepAddress\": \"Address\",\n \"checkout.stepShipping\": \"Shipping\",\n \"checkout.stepPayment\": \"Payment\",\n \"checkout.loading\": \"Loading checkout…\",\n \"checkout.empty\": \"Your checkout is empty.\",\n // checkout — address form\n \"checkout.shippingAddress\": \"Shipping address\",\n \"checkout.continueToShipping\": \"Continue to shipping\",\n \"checkout.email\": \"Email\",\n \"checkout.firstName\": \"First name\",\n \"checkout.lastName\": \"Last name\",\n \"checkout.company\": \"Company (optional)\",\n \"checkout.address\": \"Address\",\n \"checkout.apartment\": \"Apartment, suite, etc. (optional)\",\n \"checkout.city\": \"City\",\n \"checkout.postalCode\": \"Postal code\",\n \"checkout.country\": \"Country\",\n \"checkout.phone\": \"Phone (optional)\",\n // checkout — shipping\n \"checkout.shippingMethod\": \"Shipping method\",\n \"checkout.continueToPayment\": \"Continue to payment\",\n \"checkout.loadingShipping\": \"Loading shipping options…\",\n \"checkout.noShipping\": \"No shipping options for this address.\",\n // checkout — payment\n \"checkout.payment\": \"Payment\",\n \"checkout.loadingPayment\": \"Loading payment options…\",\n \"checkout.noPayment\": \"No payment methods available.\",\n \"checkout.payNow\": \"Pay now\",\n \"checkout.placeOrder\": \"Place order\",\n \"checkout.gatewayRedirectNote\": \"You'll be redirected to complete payment securely.\",\n // checkout — confirmation\n \"checkout.thankYou\": \"Thank you for your order!\",\n \"checkout.orderPlacedBody\":\n \"Your order {order} has been placed. A confirmation has been sent to {email}.\",\n\n // shipping estimate (pluralized)\n \"shipping.days.one\": \"{count} day\",\n \"shipping.days.few\": \"{count} days\",\n \"shipping.days.many\": \"{count} days\",\n \"shipping.days.other\": \"{count} days\",\n \"shipping.daysRange\": \"{min}–{max} days\",\n\n // order — status page + confirmation\n \"order.title\": \"Order {number}\",\n \"order.placedOn\": \"Placed {date}\",\n \"order.loading\": \"Loading order…\",\n \"order.loadError\": \"Couldn't load this order.\",\n \"order.notFound\": \"Order not found.\",\n \"order.confirmLoading\": \"Loading your order…\",\n \"order.confirmLoadError\": \"Couldn't load your order.\",\n \"order.confirmed\": \"Order {number} is confirmed.\",\n \"order.items\": \"Items\",\n \"order.shipping\": \"Shipping\",\n \"order.shipsTo\": \"Ships to\",\n \"order.tracking\": \"Tracking\",\n \"order.payment\": \"Payment\",\n \"order.method\": \"Method\",\n \"order.status\": \"Status\",\n \"order.downloadInvoice\": \"Download invoice\",\n \"order.contactSupport\": \"Contact support\",\n \"order.trackOrder\": \"Track your order\",\n // order — happy-path milestones\n \"order.phase.placed\": \"Placed\",\n \"order.phase.paid\": \"Paid\",\n \"order.phase.fulfilled\": \"Fulfilled\",\n \"order.phase.shipped\": \"Shipped\",\n \"order.phase.delivered\": \"Delivered\",\n // order — terminal banners\n \"order.terminal.cancelled\": \"This order was cancelled.\",\n \"order.terminal.refunded\": \"This order was refunded.\",\n \"order.terminal.returned\": \"This order was returned.\",\n\n // payment page — the four situations it can be in\n \"payment.title\": \"Pay for order {order}\",\n \"payment.amountDue\": \"Amount due\",\n \"payment.methodLabel\": \"Payment method\",\n \"payment.payNow\": \"Pay now\",\n \"payment.finish\": \"Finish payment\",\n \"payment.loading\": \"Loading payment…\",\n \"payment.loadError\": \"Couldn't load this payment.\",\n \"payment.actionError\": \"That didn't go through. Please try again.\",\n // …paid\n \"payment.paidTitle\": \"Paid\",\n \"payment.paidBody\": \"Order {order} is paid. Nothing further is needed.\",\n \"payment.paidAmount\": \"Paid\",\n // …returning from a gateway, callback still in flight\n \"payment.verifyingTitle\": \"Checking your payment…\",\n \"payment.verifyingBody\":\n \"This takes a few seconds. Don't pay again — we'll update this page.\",\n // …locked, one sentence per reason\n \"payment.blockedTitle\": \"This order can't be paid\",\n \"payment.blocked.orderCancelled\": \"This order was cancelled, so there is nothing to pay.\",\n \"payment.blocked.alreadyPaid\": \"This order is already paid.\",\n \"payment.blocked.authorizationHeld\":\n \"Your bank is holding the funds for this order. Once the payment settles this page will show it as paid.\",\n \"payment.blocked.documentIssued\":\n \"An invoice has been issued for this order, so the amount is fixed. Contact us to change how you pay.\",\n // …bank transfer\n \"payment.account\": \"Account\",\n \"payment.beneficiary\": \"Beneficiary\",\n \"payment.variableSymbol\": \"Variable symbol\",\n \"payment.amount\": \"Amount\",\n \"payment.copy\": \"Copy\",\n \"payment.copied\": \"Copied\",\n \"payment.qrAlt\": \"QR code for the payment\",\n \"payment.qrCaption\": \"Scan in your banking app\",\n\n // error pages\n \"error.notFound.title\": \"Page not found\",\n \"error.notFound.body\": \"This page doesn't exist or isn't available in your region.\",\n \"error.generic.title\": \"Something went wrong\",\n \"error.generic.body\": \"Please try again in a moment.\",\n \"error.home\": \"Back to home\",\n\n // account\n \"account.title\": \"Your account\",\n \"account.signIn\": \"Sign in\",\n \"account.signInBlurb\": \"Enter your email and we'll send you a sign-in link.\",\n \"account.email\": \"Email\",\n \"account.sendLink\": \"Send sign-in link\",\n \"account.checkEmail\": \"Check your email for a sign-in link.\",\n \"account.signOut\": \"Sign out\",\n \"account.greeting\": \"Signed in as {email}\",\n \"account.orders\": \"Your orders\",\n \"account.loadError\": \"Could not load your account. Please try again.\",\n \"account.retry\": \"Try again\",\n \"account.loadMore\": \"Load more\",\n \"account.signInError\": \"Could not request a sign-in link. Please try again shortly.\",\n \"account.security\": \"Account security\",\n \"account.newEmail\": \"New email\",\n \"account.changeEmail\": \"Verify new email\",\n \"account.recentLogin\": \"Sign in again by email before making this change.\",\n \"account.sessions\": \"Sessions\",\n \"account.currentSession\": \"Current session\",\n \"account.revokeSession\": \"Sign out\",\n \"account.closeAccount\": \"Close account\",\n \"account.closeWarning\": \"Closing your account signs out all devices and disables account access. Orders and invoices are retained. Contact the shop to restore access.\",\n \"account.confirmClose\": \"Confirm account closure\",\n \"account.noOrders\": \"No orders yet.\",\n \"account.addresses\": \"Saved addresses\",\n \"account.noAddresses\": \"No saved addresses yet.\",\n \"account.viewOrder\": \"View order\",\n \"account.verifying\": \"Signing you in…\",\n \"account.verifyError\": \"This sign-in link is invalid or has expired.\",\n \"account.openDevLink\": \"Open sign-in link (dev)\",\n // account — profile + address editing + reorder (write ops)\n \"account.profile\": \"Profile\",\n \"account.editProfile\": \"Edit profile\",\n \"account.firstName\": \"First name\",\n \"account.lastName\": \"Last name\",\n \"account.phone\": \"Phone\",\n \"account.acceptsMarketing\": \"Email me about news and offers\",\n \"account.save\": \"Save\",\n \"account.cancel\": \"Cancel\",\n \"account.saved\": \"Saved.\",\n \"account.saveError\": \"Couldn't save. Please try again.\",\n \"account.addAddress\": \"Add address\",\n \"account.editAddress\": \"Edit\",\n \"account.deleteAddress\": \"Delete\",\n \"account.confirmDelete\": \"Delete this address?\",\n \"account.setDefault\": \"Set as default\",\n \"account.default\": \"Default\",\n \"account.company\": \"Company\",\n \"account.address\": \"Address\",\n \"account.addressLine2\": \"Apartment, suite, etc.\",\n \"account.city\": \"City\",\n \"account.postalCode\": \"Postal code\",\n \"account.country\": \"Country (2-letter code)\",\n \"account.reorder\": \"Buy again\",\n \"account.reorderDone\": \"Added {added} item(s) to your cart.\",\n \"account.reorderPartial\": \"Added {added}, skipped {skipped} unavailable item(s).\",\n \"account.reorderError\": \"Couldn't reorder. Please try again.\",\n} satisfies Record<string, string>;\n\n/** Every message key, derived from the English bundle (the source of truth). */\nexport type MessageKey = keyof typeof en;\n\n/** A complete message bundle for one locale. */\nexport type Messages = Record<MessageKey, string>;\n","/**\n * Czech message bundle. Typed as `Messages`, so the compiler guarantees it\n * stays in sync with the canonical English key set in `en.ts`. Czech uses four\n * plural categories (one / few / many / other) — see `shipping.days.*`.\n */\n\nimport type { Messages } from \"./en\";\n\nexport const cs: Messages = {\n \"subscriptions.purchaseOption\": \"Způsob nákupu\",\n \"subscriptions.empty\": \"Zatím nemáte žádné předplatné.\",\n \"subscriptions.status.active\": \"Aktivní\",\n \"subscriptions.status.paused\": \"Pozastaveno\",\n \"subscriptions.status.pending\": \"Čeká na platbu\",\n \"subscriptions.status.cancelled\": \"Zrušeno\",\n \"subscriptions.title\": \"Předplatné\",\n \"subscriptions.consent\": \"Souhlasím s uvedenou opakovanou cenou, plánem doručení a podmínkami.\",\n \"subscriptions.eachDelivery\": \"Za každé doručení\",\n \"subscriptions.once\": \"Jednorázový nákup\",\n\n \"common.free\": \"Zdarma\",\n \"common.close\": \"Zavřít\",\n \"common.loadingShort\": \"…\",\n\n \"catalog.addToCart\": \"Přidat do košíku\",\n \"catalog.noProducts\": \"Zatím žádné produkty.\",\n \"catalog.soldOut\": \"Vyprodáno\",\n \"catalog.addError\": \"Nepodařilo se přidat do košíku. Zkuste to znovu.\",\n \"catalog.inStock\": \"Skladem\",\n \"catalog.preorder\": \"Předobjednávka\",\n \"catalog.filters.sort\": \"Řadit podle\",\n \"catalog.filters.sortNewest\": \"Nejnovější\",\n \"catalog.filters.sortOldest\": \"Nejstarší\",\n \"catalog.filters.sortTitleAsc\": \"Název: A–Z\",\n \"catalog.filters.sortTitleDesc\": \"Název: Z–A\",\n \"catalog.filters.sortPriceAsc\": \"Cena: od nejnižší\",\n \"catalog.filters.sortPriceDesc\": \"Cena: od nejvyšší\",\n \"catalog.filters.priceRange\": \"Cena\",\n \"catalog.filters.min\": \"Od\",\n \"catalog.filters.max\": \"Do\",\n \"catalog.filters.tags\": \"Štítky\",\n \"catalog.filters.inStockOnly\": \"Pouze skladem\",\n \"catalog.filters.clear\": \"Zrušit filtry\",\n \"catalog.backInStock.prompt\": \"Vyprodáno — dáme vám e-mailem vědět, až bude zpět.\",\n \"catalog.backInStock.email\": \"E-mail\",\n \"catalog.backInStock.notify\": \"Upozornit mě\",\n \"catalog.backInStock.success\": \"Hotovo — dáme vám vědět, až bude zboží skladem.\",\n \"catalog.backInStock.error\": \"Přihlášení se nezdařilo. Zkuste to znovu.\",\n\n \"cart.title\": \"Košík\",\n \"cart.empty\": \"Váš košík je prázdný.\",\n \"cart.remove\": \"Odebrat\",\n \"cart.increaseQty\": \"Zvýšit množství\",\n \"cart.decreaseQty\": \"Snížit množství\",\n \"cart.checkout\": \"K pokladně\",\n \"cart.subtotal\": \"Mezisoučet\",\n \"cart.tax\": \"DPH\",\n \"cart.total\": \"Celkem\",\n\n \"totals.subtotal\": \"Mezisoučet\",\n \"totals.discount\": \"Sleva\",\n \"totals.shipping\": \"Doprava\",\n \"totals.paymentFee\": \"Poplatek za platbu\",\n \"totals.taxIncluded\": \"Včetně DPH\",\n \"totals.total\": \"Celkem\",\n\n \"checkout.stepAddress\": \"Adresa\",\n \"checkout.stepShipping\": \"Doprava\",\n \"checkout.stepPayment\": \"Platba\",\n \"checkout.loading\": \"Načítání pokladny…\",\n \"checkout.empty\": \"Vaše pokladna je prázdná.\",\n \"checkout.shippingAddress\": \"Dodací adresa\",\n \"checkout.continueToShipping\": \"Pokračovat k dopravě\",\n \"checkout.email\": \"E-mail\",\n \"checkout.firstName\": \"Jméno\",\n \"checkout.lastName\": \"Příjmení\",\n \"checkout.company\": \"Firma (nepovinné)\",\n \"checkout.address\": \"Adresa\",\n \"checkout.apartment\": \"Byt, patro apod. (nepovinné)\",\n \"checkout.city\": \"Město\",\n \"checkout.postalCode\": \"PSČ\",\n \"checkout.country\": \"Země\",\n \"checkout.phone\": \"Telefon (nepovinné)\",\n \"checkout.shippingMethod\": \"Způsob dopravy\",\n \"checkout.continueToPayment\": \"Pokračovat k platbě\",\n \"checkout.loadingShipping\": \"Načítání možností dopravy…\",\n \"checkout.noShipping\": \"Pro tuto adresu nejsou žádné možnosti dopravy.\",\n \"checkout.payment\": \"Platba\",\n \"checkout.loadingPayment\": \"Načítání platebních metod…\",\n \"checkout.noPayment\": \"Žádné platební metody nejsou k dispozici.\",\n \"checkout.payNow\": \"Zaplatit\",\n \"checkout.placeOrder\": \"Odeslat objednávku\",\n \"checkout.gatewayRedirectNote\": \"Budete přesměrováni k bezpečnému dokončení platby.\",\n \"checkout.thankYou\": \"Děkujeme za vaši objednávku!\",\n \"checkout.orderPlacedBody\":\n \"Vaše objednávka {order} byla přijata. Potvrzení jsme odeslali na {email}.\",\n\n \"shipping.days.one\": \"{count} den\",\n \"shipping.days.few\": \"{count} dny\",\n \"shipping.days.many\": \"{count} dne\",\n \"shipping.days.other\": \"{count} dní\",\n \"shipping.daysRange\": \"{min}–{max} dní\",\n\n \"order.title\": \"Objednávka {number}\",\n \"order.placedOn\": \"Vytvořeno {date}\",\n \"order.loading\": \"Načítání objednávky…\",\n \"order.loadError\": \"Objednávku se nepodařilo načíst.\",\n \"order.notFound\": \"Objednávka nenalezena.\",\n \"order.confirmLoading\": \"Načítání vaší objednávky…\",\n \"order.confirmLoadError\": \"Vaši objednávku se nepodařilo načíst.\",\n \"order.confirmed\": \"Objednávka {number} je potvrzena.\",\n \"order.items\": \"Položky\",\n \"order.shipping\": \"Doprava\",\n \"order.shipsTo\": \"Doručení do\",\n \"order.tracking\": \"Sledování\",\n \"order.payment\": \"Platba\",\n \"order.method\": \"Metoda\",\n \"order.status\": \"Stav\",\n \"order.downloadInvoice\": \"Stáhnout fakturu\",\n \"order.contactSupport\": \"Kontaktovat podporu\",\n \"order.trackOrder\": \"Sledovat objednávku\",\n \"order.phase.placed\": \"Přijato\",\n \"order.phase.paid\": \"Zaplaceno\",\n \"order.phase.fulfilled\": \"Připraveno\",\n \"order.phase.shipped\": \"Odesláno\",\n \"order.phase.delivered\": \"Doručeno\",\n \"order.terminal.cancelled\": \"Tato objednávka byla zrušena.\",\n \"order.terminal.refunded\": \"Tato objednávka byla refundována.\",\n \"order.terminal.returned\": \"Tato objednávka byla vrácena.\",\n\n // platební stránka — čtyři situace, ve kterých může být\n \"payment.title\": \"Zaplatit objednávku {order}\",\n \"payment.amountDue\": \"K úhradě\",\n \"payment.methodLabel\": \"Způsob platby\",\n \"payment.payNow\": \"Zaplatit\",\n \"payment.finish\": \"Dokončit platbu\",\n \"payment.loading\": \"Načítání platby…\",\n \"payment.loadError\": \"Platbu se nepodařilo načíst.\",\n \"payment.actionError\": \"Nepovedlo se to. Zkuste to prosím znovu.\",\n \"payment.paidTitle\": \"Zaplaceno\",\n \"payment.paidBody\": \"Objednávka {order} je zaplacená. Nic dalšího dělat nemusíte.\",\n \"payment.paidAmount\": \"Uhrazeno\",\n \"payment.verifyingTitle\": \"Ověřujeme platbu…\",\n \"payment.verifyingBody\":\n \"Chvilku to trvá. Neplaťte prosím znovu — stránka se sama aktualizuje.\",\n \"payment.blockedTitle\": \"Tuhle objednávku teď zaplatit nejde\",\n \"payment.blocked.orderCancelled\": \"Objednávka byla zrušená, takže není co platit.\",\n \"payment.blocked.alreadyPaid\": \"Objednávka je už zaplacená.\",\n \"payment.blocked.authorizationHeld\":\n \"Banka na tuhle objednávku drží peníze. Jakmile se platba dokončí, uvidíte to tady.\",\n \"payment.blocked.documentIssued\":\n \"K objednávce je vystavená faktura, takže je částka pevná. Pokud chcete platit jinak, ozvěte se nám.\",\n \"payment.account\": \"Účet\",\n \"payment.beneficiary\": \"Příjemce\",\n \"payment.variableSymbol\": \"Variabilní symbol\",\n \"payment.amount\": \"Částka\",\n \"payment.copy\": \"Kopírovat\",\n \"payment.copied\": \"Zkopírováno\",\n \"payment.qrAlt\": \"QR kód k platbě\",\n \"payment.qrCaption\": \"Načtěte v bankovní aplikaci\",\n\n \"error.notFound.title\": \"Stránka nenalezena\",\n \"error.notFound.body\": \"Tato stránka neexistuje nebo není ve vašem regionu dostupná.\",\n \"error.generic.title\": \"Něco se pokazilo\",\n \"error.generic.body\": \"Zkuste to prosím za chvíli znovu.\",\n \"error.home\": \"Zpět na úvod\",\n\n \"account.title\": \"Váš účet\",\n \"account.signIn\": \"Přihlásit se\",\n \"account.signInBlurb\": \"Zadejte e-mail a pošleme vám přihlašovací odkaz.\",\n \"account.email\": \"E-mail\",\n \"account.sendLink\": \"Poslat přihlašovací odkaz\",\n \"account.checkEmail\": \"Zkontrolujte e-mail s přihlašovacím odkazem.\",\n \"account.signOut\": \"Odhlásit se\",\n \"account.greeting\": \"Přihlášen jako {email}\",\n \"account.orders\": \"Vaše objednávky\",\n \"account.loadError\": \"Údaje se nepodařilo načíst. Zkuste to znovu.\",\n \"account.retry\": \"Zkusit znovu\",\n \"account.loadMore\": \"Načíst další\",\n \"account.signInError\": \"Přihlášení se nepodařilo zahájit. Zkuste to za chvíli znovu.\",\n \"account.security\": \"Zabezpečení účtu\",\n \"account.newEmail\": \"Nový e-mail\",\n \"account.changeEmail\": \"Ověřit nový e-mail\",\n \"account.recentLogin\": \"Pro tuto změnu se nejprve znovu přihlaste přes e-mail.\",\n \"account.sessions\": \"Přihlášení\",\n \"account.currentSession\": \"Toto přihlášení\",\n \"account.revokeSession\": \"Odhlásit\",\n \"account.closeAccount\": \"Uzavřít účet\",\n \"account.closeWarning\": \"Uzavřením účtu ukončíte přístup a odhlásíte všechna zařízení. Objednávky a doklady zůstanou zachovány. Obnovení přístupu řeší podpora obchodu.\",\n \"account.confirmClose\": \"Potvrdit uzavření účtu\",\n \"account.noOrders\": \"Zatím žádné objednávky.\",\n \"account.addresses\": \"Uložené adresy\",\n \"account.noAddresses\": \"Zatím žádné uložené adresy.\",\n \"account.viewOrder\": \"Zobrazit objednávku\",\n \"account.verifying\": \"Přihlašování…\",\n \"account.verifyError\": \"Přihlašovací odkaz je neplatný nebo vypršel.\",\n \"account.openDevLink\": \"Otevřít přihlašovací odkaz (dev)\",\n \"account.profile\": \"Profil\",\n \"account.editProfile\": \"Upravit profil\",\n \"account.firstName\": \"Jméno\",\n \"account.lastName\": \"Příjmení\",\n \"account.phone\": \"Telefon\",\n \"account.acceptsMarketing\": \"Posílejte mi novinky a nabídky e-mailem\",\n \"account.save\": \"Uložit\",\n \"account.cancel\": \"Zrušit\",\n \"account.saved\": \"Uloženo.\",\n \"account.saveError\": \"Nepodařilo se uložit. Zkuste to znovu.\",\n \"account.addAddress\": \"Přidat adresu\",\n \"account.editAddress\": \"Upravit\",\n \"account.deleteAddress\": \"Smazat\",\n \"account.confirmDelete\": \"Smazat tuto adresu?\",\n \"account.setDefault\": \"Nastavit jako výchozí\",\n \"account.default\": \"Výchozí\",\n \"account.company\": \"Společnost\",\n \"account.address\": \"Adresa\",\n \"account.addressLine2\": \"Byt, patro apod.\",\n \"account.city\": \"Město\",\n \"account.postalCode\": \"PSČ\",\n \"account.country\": \"Země (dvoupísmenný kód)\",\n \"account.reorder\": \"Koupit znovu\",\n \"account.reorderDone\": \"Přidáno {added} položek do košíku.\",\n \"account.reorderPartial\": \"Přidáno {added}, přeskočeno {skipped} nedostupných položek.\",\n \"account.reorderError\": \"Objednávku se nepodařilo zopakovat. Zkuste to znovu.\",\n};\n","\"use client\";\n\n/**\n * I18nProvider + useT — the kit's translation layer. UI strings are bundled\n * (zero network calls); product/collection *content* is localized server-side\n * via the SDK's `X-Locale`. Wrap your app once with the resolved locale:\n *\n * <I18nProvider locale=\"cs-CZ\">{app}</I18nProvider> // auto-picks the cs pack\n * <I18nProvider locale=\"fr-FR\" messages={fr}>… // bring your own pack\n *\n * Components call `const t = useT()` and `t(\"checkout.payNow\")`. Pluralize with\n * a `count` var — `t(\"shipping.days\", { count })` — resolved via Intl.PluralRules\n * for the active locale. With no provider mounted, `useT` falls back to English,\n * so kit components never crash un-wrapped.\n */\n\nimport * as React from \"react\";\n\nimport { en, type MessageKey, type Messages } from \"./en\";\nimport { cs } from \"./cs\";\n\nexport type TVars = Record<string, string | number>;\nexport type TFunction = (key: MessageKey | (string & {}), vars?: TVars) => string;\n\n/** Locale packs the kit ships. Keyed by language subtag. */\nconst BUNDLED: Record<string, Messages> = { en, cs };\n\n/** Language subtag, normalized for matching (\"cs_CZ\" / \"CS-cz\" → \"cs\"). */\nfunction langOf(locale?: string): string {\n return (locale ?? \"en\").toLowerCase().replace(/_/g, \"-\").split(\"-\")[0] || \"en\";\n}\n\n/** Pick a bundled pack by language subtag (\"cs-CZ\" → cs); default English. */\nexport function bundledMessages(locale?: string): Messages {\n return BUNDLED[langOf(locale)] ?? en;\n}\n\nconst warned = new Set<string>();\n/** Best-effort dev-only warning (deduped). No-op in production / no `process`. */\nfunction devWarn(message: string): void {\n let dev = false;\n try {\n const proc = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n dev = !!proc?.env && proc.env.NODE_ENV !== \"production\";\n } catch {\n dev = false;\n }\n if (dev && !warned.has(message)) {\n warned.add(message);\n // eslint-disable-next-line no-console\n console.warn(`[nevios i18n] ${message}`);\n }\n}\n\nexport interface I18nValue {\n locale: string;\n messages: Messages;\n t: TFunction;\n}\n\nfunction interpolate(template: string, vars?: TVars): string {\n if (!vars) return template;\n return template.replace(/\\{(\\w+)\\}/g, (m, k) => (k in vars ? String(vars[k]) : m));\n}\n\nfunction makeI18n(locale: string, messages: Messages): I18nValue {\n let plural: Intl.PluralRules;\n try {\n plural = new Intl.PluralRules(locale);\n } catch {\n plural = new Intl.PluralRules(\"en\");\n }\n const dict = messages as Record<string, string | undefined>;\n const t: TFunction = (key, vars) => {\n let template: string | undefined;\n if (vars && typeof vars.count === \"number\") {\n const cat = plural.select(vars.count);\n template = dict[`${key}.${cat}`] ?? dict[`${key}.other`] ?? dict[key as string];\n } else {\n template = dict[key as string];\n }\n // A missing key returns the key itself — visible + greppable, never a crash.\n if (template == null) {\n devWarn(`missing message key \"${String(key)}\"`);\n return String(key);\n }\n return interpolate(template, vars);\n };\n return { locale, messages, t };\n}\n\nconst DEFAULT_I18N = makeI18n(\"en\", en);\n\nconst I18nContext = React.createContext<I18nValue | null>(null);\n\nexport interface I18nProviderProps {\n /** BCP-47 locale — drives pluralization + (when `messages` is omitted) which\n * bundled pack is used. */\n locale?: string;\n /** Override / extend the messages. Merged over the bundled pack for `locale`,\n * so you can ship custom copy or add a locale the kit doesn't bundle. */\n messages?: Partial<Messages>;\n children: React.ReactNode;\n}\n\nexport function I18nProvider({\n locale,\n messages,\n children,\n}: I18nProviderProps): React.ReactElement {\n const value = React.useMemo<I18nValue>(() => {\n const lang = langOf(locale);\n if (locale && !(lang in BUNDLED) && !messages) {\n devWarn(\n `no bundled pack for \"${locale}\" and no \\`messages\\` override — the UI ` +\n `falls back to English under <html lang=\"${locale}\">. Pass messages={...}.`,\n );\n }\n const base = bundledMessages(locale);\n const merged: Messages = messages ? { ...base, ...messages } : base;\n return makeI18n(locale ?? \"en\", merged);\n }, [locale, messages]);\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n}\n\n/** Full i18n context — locale + messages + t. Falls back to English when no\n * <I18nProvider> is mounted. */\nexport function useI18n(): I18nValue {\n return React.useContext(I18nContext) ?? DEFAULT_I18N;\n}\n\n/** The translate function for the active locale. */\nexport function useT(): TFunction {\n return useI18n().t;\n}\n","\"use client\";\n\n/**\n * MarketSwitcher — lets a shopper change market (and with it currency + locale).\n * Headless about *how* you switch: pass `hrefFor` to navigate to each market's\n * domain/path (the storefront resolves the market from there), or `onSelect`\n * to handle it yourself (e.g. set a cookie + reload). Feed it the list from\n * `client.markets()`.\n *\n * <MarketSwitcher markets={markets} current={market}\n * hrefFor={(m) => m.domain ? `https://${m.domain}` : `/${m.handle}`} />\n */\n\nimport * as React from \"react\";\n\n/** The minimal market shape the switcher needs. Both the SDK's\n * `StorefrontMarket` (from `client.markets()`) and a hand-written config entry\n * satisfy it — `label` wins for display, else `name (CURRENCY)`. */\nexport interface MarketOption {\n handle: string;\n label?: string;\n name?: string;\n currency?: string;\n locale?: string;\n domain?: string | null;\n}\n\nexport interface MarketSwitcherProps {\n markets: readonly MarketOption[];\n /** Current market handle (the selected option). */\n current?: string;\n /** Map a market → the URL to switch to. When set, changing the select\n * navigates there. */\n hrefFor?: (market: MarketOption) => string;\n /** Or handle the switch yourself (cookie + reload). Takes precedence over\n * `hrefFor` if both are given. */\n onSelect?: (market: MarketOption) => void;\n /** Option label. Default: `label`, else `\"Name (CURRENCY)\"`, else handle. */\n renderLabel?: (market: MarketOption) => string;\n \"aria-label\"?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst defaultLabel = (m: MarketOption) =>\n m.label ?? (m.name ? `${m.name}${m.currency ? ` (${m.currency})` : \"\"}` : m.handle);\n\nexport function MarketSwitcher({\n markets,\n current,\n hrefFor,\n onSelect,\n renderLabel = defaultLabel,\n \"aria-label\": ariaLabel = \"Market\",\n className,\n style,\n}: MarketSwitcherProps): React.ReactElement | null {\n if (!markets || markets.length <= 1) return null; // nothing to switch between\n\n function handleChange(e: React.ChangeEvent<HTMLSelectElement>) {\n const m = markets.find((x) => x.handle === e.target.value);\n if (!m) return;\n if (onSelect) {\n onSelect(m);\n } else if (hrefFor && typeof window !== \"undefined\") {\n window.location.assign(hrefFor(m));\n }\n }\n\n return (\n <select\n aria-label={ariaLabel}\n value={current ?? \"\"}\n onChange={handleChange}\n className={className}\n style={{\n font: \"inherit\",\n color: \"var(--nv-fg)\",\n background: \"var(--nv-bg)\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n padding: \"0.4rem 0.6rem\",\n cursor: \"pointer\",\n ...style,\n }}\n >\n {current == null ? <option value=\"\" disabled /> : null}\n {markets.map((m) => (\n <option key={m.handle} value={m.handle}>\n {renderLabel(m)}\n </option>\n ))}\n </select>\n );\n}\n","\"use client\";\n\n/**\n * Money formatting + display. `formatMoney` is the headless helper; `PriceMoney`\n * renders the display price with an optional struck-through compare-at.\n */\n\nimport * as React from \"react\";\nimport type { Money } from \"@nevios/storefront-js\";\n\nimport { useI18n } from \"../i18n\";\n\n/** Format minor units (cents) + currency → a localized string (\"2 999,00 Kč\"). */\nexport function formatCents(cents: number, currency: string, locale?: string): string {\n return new Intl.NumberFormat(locale, { style: \"currency\", currency }).format(cents / 100);\n}\n\n/** Format a Money → a localized currency string. */\nexport function formatMoney(money: Money, locale?: string): string {\n return formatCents(money.amount_cents, money.currency, locale);\n}\n\n/** The formatting locale: the explicit prop, else the active I18nProvider\n * locale. Keeps prices from silently formatting in the runtime default (e.g.\n * \"CZK 2,999.00\" instead of \"2 999,00 Kč\") when a caller omits `locale`. */\nexport function useFormatLocale(locale?: string): string | undefined {\n const { locale: ctxLocale } = useI18n();\n return locale ?? ctxLocale;\n}\n\nexport interface PriceMoneyProps {\n money: Money;\n /** Show the struck-through compare-at price when one is set. */\n showCompareAt?: boolean;\n /** Override the formatting locale (defaults to the I18nProvider locale). */\n locale?: string;\n}\n\nexport function PriceMoney({\n money,\n showCompareAt = true,\n locale,\n}: PriceMoneyProps): React.ReactElement {\n const loc = useFormatLocale(locale);\n const onSale =\n showCompareAt &&\n money.compare_at_cents != null &&\n money.compare_at_cents > money.amount_cents;\n return (\n <span style={{ display: \"inline-flex\", alignItems: \"baseline\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, color: onSale ? \"var(--nv-brand)\" : \"inherit\" }}>\n {formatMoney(money, loc)}\n </span>\n {onSale ? (\n <span\n style={{\n color: \"var(--nv-muted)\",\n textDecoration: \"line-through\",\n fontSize: \"0.875em\",\n }}\n >\n {formatMoney({ ...money, amount_cents: money.compare_at_cents as number }, loc)}\n </span>\n ) : null}\n </span>\n );\n}\n","\"use client\";\n\n/**\n * ProductCard — a product tile for grids (collection pages, search). Image +\n * title + price range. Presentational: pass a `Product`; pass `href` to make\n * the whole tile a link to the PDP. Override via the slot registry to restyle\n * just this without touching the rest.\n */\n\nimport * as React from \"react\";\nimport { imageSrcSet } from \"@nevios/storefront-js\";\nimport type { Product } from \"@nevios/storefront-js\";\nimport { PriceMoney } from \"./money\";\nimport { useStorefrontOptional } from \"../provider\";\n\n// Grid-context render widths → covers 1× and 2× DPR for typical tile sizes.\nconst CARD_WIDTHS = [200, 400, 600];\nconst CARD_SIZES = \"(min-width: 1024px) 25vw, (min-width: 640px) 33vw, 50vw\";\n\nexport interface ProductCardProps {\n product: Product;\n /** When set, the whole card links here (the eshop owns its URL scheme). */\n href?: string;\n locale?: string;\n}\n\nexport function ProductCard({ product, href, locale }: ProductCardProps): React.ReactElement {\n const image = product.media[0];\n const price = product.variants[0]?.price ?? null;\n // Responsive srcset when an image CDN is configured; plain src otherwise.\n const imageBase = useStorefrontOptional()?.imageBase;\n const responsive = image ? imageSrcSet(image, { base: imageBase, widths: CARD_WIDTHS }) : null;\n\n const inner = (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <div\n style={{\n aspectRatio: \"1 / 1\",\n overflow: \"hidden\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {image && responsive ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={responsive.src || image.url}\n srcSet={responsive.srcSet || undefined}\n sizes={responsive.srcSet ? CARD_SIZES : undefined}\n alt={image.alt ?? product.title}\n loading=\"lazy\"\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n ) : null}\n </div>\n <div style={{ fontWeight: 500, lineHeight: 1.3 }}>{product.title}</div>\n {price ? <PriceMoney money={price} locale={locale} /> : null}\n </div>\n );\n\n if (!href) return inner;\n return (\n <a href={href} style={{ color: \"inherit\", textDecoration: \"none\", display: \"block\" }}>\n {inner}\n </a>\n );\n}\n","\"use client\";\n\n/**\n * ProductGallery — the PDP image gallery: a main image + thumbnail strip.\n * Client-interactive (thumbnail selects the main image). Presentational data.\n */\n\nimport * as React from \"react\";\nimport { imageSrcSet } from \"@nevios/storefront-js\";\nimport type { ProductMedia } from \"@nevios/storefront-js\";\n\nimport { useStorefrontOptional } from \"../provider\";\n\nconst MAIN_WIDTHS = [600, 800, 1000];\nconst THUMB_WIDTHS = [56, 112]; // native + 2× DPR for the 56px thumb box\n\nexport interface ProductGalleryProps {\n media: ProductMedia[];\n alt?: string;\n}\n\nexport function ProductGallery({ media, alt }: ProductGalleryProps): React.ReactElement {\n const [active, setActive] = React.useState(0);\n const imageBase = useStorefrontOptional()?.imageBase;\n if (media.length === 0) {\n return (\n <div\n style={{\n aspectRatio: \"1 / 1\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n />\n );\n }\n const main = media[Math.min(active, media.length - 1)];\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div\n style={{\n aspectRatio: \"1 / 1\",\n overflow: \"hidden\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {(() => {\n const r = imageSrcSet(main, { base: imageBase, widths: MAIN_WIDTHS });\n return (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={r.src || main.url}\n srcSet={r.srcSet || undefined}\n sizes={r.srcSet ? \"(min-width: 768px) 600px, 100vw\" : undefined}\n alt={main.alt ?? alt ?? \"\"}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n );\n })()}\n </div>\n {media.length > 1 ? (\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n {media.map((m, i) => (\n <button\n key={m.url + i}\n type=\"button\"\n onClick={() => setActive(i)}\n aria-label={`Image ${i + 1}`}\n aria-pressed={i === active}\n style={{\n width: 56,\n height: 56,\n padding: 0,\n cursor: \"pointer\",\n overflow: \"hidden\",\n borderRadius: \"calc(var(--nv-radius) - 4px)\",\n background: \"transparent\",\n border:\n i === active\n ? \"2px solid var(--nv-brand)\"\n : \"1px solid var(--nv-border)\",\n }}\n >\n {(() => {\n const r = imageSrcSet(m, { base: imageBase, widths: THUMB_WIDTHS });\n return (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={r.src || m.url}\n srcSet={r.srcSet || undefined}\n sizes={r.srcSet ? \"56px\" : undefined}\n alt={m.alt ?? \"\"}\n loading=\"lazy\"\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n );\n })()}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * VariantPicker — one selector row per product option (Color, Size…). Resolves\n * the matching variant from the selected values and reports it via `onChange`,\n * so the PDP knows which variant to price + add to cart. Defaults to the first\n * variant. Single-option-less products (one default variant) render nothing.\n */\n\nimport * as React from \"react\";\nimport type { Product, ProductVariant } from \"@nevios/storefront-js\";\n\nexport interface VariantPickerProps {\n product: Product;\n onChange?: (variant: ProductVariant | null) => void;\n}\n\nfunction matchVariant(product: Product, selected: string[]): ProductVariant | null {\n return (\n product.variants.find(\n (v) =>\n v.options.length === selected.length &&\n v.options.every((o, i) => o === selected[i]),\n ) ?? null\n );\n}\n\nexport function VariantPicker({ product, onChange }: VariantPickerProps): React.ReactElement | null {\n const [selected, setSelected] = React.useState<string[]>(\n () => product.variants[0]?.options ?? [],\n );\n\n React.useEffect(() => {\n onChange?.(matchVariant(product, selected));\n // onChange is intentionally excluded — callers needn't memoize it.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [product, selected]);\n\n if (product.options.length === 0) return null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\" }}>\n {product.options.map((opt, optIndex) => (\n <div key={opt.name} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, fontSize: \"0.875em\" }}>{opt.name}</span>\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n {opt.values.map((value) => {\n const isActive = selected[optIndex] === value;\n return (\n <button\n key={value}\n type=\"button\"\n aria-pressed={isActive}\n onClick={() =>\n setSelected((prev) => {\n const next = [...prev];\n next[optIndex] = value;\n return next;\n })\n }\n style={{\n cursor: \"pointer\",\n padding: \"0.4rem 0.85rem\",\n borderRadius: \"var(--nv-radius)\",\n font: \"inherit\",\n background: isActive ? \"var(--nv-brand)\" : \"transparent\",\n color: isActive ? \"var(--nv-brand-foreground)\" : \"var(--nv-fg)\",\n border: isActive\n ? \"1px solid var(--nv-brand)\"\n : \"1px solid var(--nv-border)\",\n }}\n >\n {value}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * BackInStockForm — an email capture shown when a variant is out of stock.\n * Submits to `client.catalog.inventory.subscribe(variantId, email)`. Renders\n * nothing unless the variant's status is `out_of_stock`, so it's safe to drop\n * straight into a PDP next to (or instead of) the add-to-cart button.\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\n\nexport interface BackInStockFormProps {\n variant: ProductVariant | null;\n /** Prefill the email (e.g. the signed-in customer's). */\n defaultEmail?: string;\n onSuccess?: () => void;\n}\n\ntype State = \"idle\" | \"submitting\" | \"success\" | \"error\";\n\nexport function BackInStockForm({\n variant,\n defaultEmail = \"\",\n onSuccess,\n}: BackInStockFormProps): React.ReactElement | null {\n const t = useT();\n const client = useStorefront();\n const [email, setEmail] = React.useState(defaultEmail);\n const [state, setState] = React.useState<State>(\"idle\");\n\n if (!variant || variant.availability?.status !== \"out_of_stock\") return null;\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n if (!variant || !email.trim()) return;\n setState(\"submitting\");\n try {\n await client.catalog.inventory.subscribe(variant.id, email.trim());\n setState(\"success\");\n onSuccess?.();\n } catch {\n setState(\"error\");\n }\n }\n\n if (state === \"success\") {\n return (\n <p style={{ margin: 0, color: \"var(--nv-muted)\", fontSize: \"0.875rem\" }}>\n {t(\"catalog.backInStock.success\")}\n </p>\n );\n }\n\n return (\n <form onSubmit={submit} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <p style={{ margin: 0, color: \"var(--nv-muted)\", fontSize: \"0.875rem\" }}>\n {t(\"catalog.backInStock.prompt\")}\n </p>\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={t(\"catalog.backInStock.email\")}\n aria-label={t(\"catalog.backInStock.email\")}\n style={{\n font: \"inherit\",\n flex: 1,\n minWidth: \"12rem\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n />\n <button\n type=\"submit\"\n disabled={state === \"submitting\"}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: state === \"submitting\" ? \"default\" : \"pointer\",\n padding: \"0.6rem 1.1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-fg)\",\n opacity: state === \"submitting\" ? 0.6 : 1,\n }}\n >\n {state === \"submitting\" ? \"…\" : t(\"catalog.backInStock.notify\")}\n </button>\n </div>\n {state === \"error\" ? (\n <p style={{ margin: 0, color: \"#b3261e\", fontSize: \"0.8125rem\" }}>\n {t(\"catalog.backInStock.error\")}\n </p>\n ) : null}\n </form>\n );\n}\n","\"use client\";\n\n/**\n * StockBadge — a small availability pill for a variant. Reads\n * `variant.availability.status` (in_stock | preorder | out_of_stock) and renders\n * a themed label. Renders nothing for an untracked in-stock variant when\n * `hideInStock` is set (keeps the PDP quiet for always-available goods).\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\n\nexport interface StockBadgeProps {\n variant: ProductVariant | null;\n /** Don't render anything when the variant is in stock (default false). */\n hideInStock?: boolean;\n}\n\nexport function StockBadge({ variant, hideInStock = false }: StockBadgeProps): React.ReactElement | null {\n const t = useT();\n const status = variant?.availability?.status;\n if (!status) return null;\n if (status === \"in_stock\" && hideInStock) return null;\n\n const { key, color, bg } = {\n in_stock: { key: \"catalog.inStock\", color: \"#0a7c3a\", bg: \"rgba(10,124,58,0.12)\" },\n preorder: { key: \"catalog.preorder\", color: \"var(--nv-fg)\", bg: \"color-mix(in oklab, var(--nv-muted) 16%, transparent)\" },\n out_of_stock: { key: \"catalog.soldOut\", color: \"var(--nv-muted)\", bg: \"color-mix(in oklab, var(--nv-muted) 16%, transparent)\" },\n }[status];\n\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.35rem\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n padding: \"0.2rem 0.55rem\",\n borderRadius: \"999px\",\n color,\n background: bg,\n }}\n >\n <span aria-hidden style={{ width: 6, height: 6, borderRadius: \"50%\", background: \"currentColor\" }} />\n {t(key)}\n </span>\n );\n}\n","\"use client\";\n\n/**\n * ProductDetailPage — the PDP composition: gallery + title + live price for the\n * selected variant + variant picker + an add-to-cart slot. Presentational:\n * the Remix loader fetches the `Product`, this renders it. `addToCart` is a\n * render slot the cart phase (P2) fills with an <AddToCart> bound to the\n * currently-selected variant.\n */\n\nimport * as React from \"react\";\nimport type { Product, ProductVariant } from \"@nevios/storefront-js\";\n\nimport { BackInStockForm } from \"./back-in-stock-form\";\nimport { PriceMoney } from \"./money\";\nimport { ProductGallery } from \"./product-gallery\";\nimport { StockBadge } from \"./stock-badge\";\nimport { VariantPicker } from \"./variant-picker\";\n\nexport interface ProductDetailPageProps {\n product: Product;\n locale?: string;\n /** Render slot for the add-to-cart control, bound to the selected variant. */\n addToCart?: (variant: ProductVariant | null) => React.ReactNode;\n}\n\nexport function ProductDetailPage({\n product,\n locale,\n addToCart,\n}: ProductDetailPageProps): React.ReactElement {\n const [variant, setVariant] = React.useState<ProductVariant | null>(\n product.variants[0] ?? null,\n );\n\n return (\n <div\n style={{\n display: \"grid\",\n gap: \"2rem\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(min(100%, 320px), 1fr))\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n }}\n >\n <ProductGallery media={product.media} alt={product.title} />\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.25rem\" }}>\n <div>\n {product.vendor ? (\n <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>\n {product.vendor}\n </div>\n ) : null}\n <h1 style={{ margin: \"0.25rem 0 0\", fontSize: \"1.6rem\", fontWeight: 500 }}>\n {product.title}\n </h1>\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"1.25rem\" }}>\n {variant ? (\n <PriceMoney money={variant.price} locale={locale} />\n ) : product.price_range ? (\n <PriceMoney\n money={{\n amount_cents: product.price_range.min_cents,\n with_tax_cents: product.price_range.min_cents,\n without_tax_cents: product.price_range.min_cents,\n compare_at_cents: null,\n currency: product.price_range.currency,\n includes_tax: product.market.prices_include_tax,\n }}\n locale={locale}\n />\n ) : null}\n </span>\n <StockBadge variant={variant} hideInStock />\n </div>\n\n <VariantPicker product={product} onChange={setVariant} />\n\n {addToCart ? <div>{addToCart(variant)}</div> : null}\n\n {/* Renders only when the selected variant is out of stock. */}\n <BackInStockForm variant={variant} />\n\n {product.description_html ? (\n <div\n style={{ lineHeight: 1.6 }}\n // Server-projected, sanitized at authoring time in the admin.\n dangerouslySetInnerHTML={{ __html: product.description_html }}\n />\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CollectionPage — collection header + a responsive grid of ProductCards in the\n * collection's curated order. Presentational: the Remix loader fetches the\n * `CollectionDetail` (collection + its products), this renders it. `productHref`\n * lets the eshop own its URL scheme.\n */\n\nimport * as React from \"react\";\nimport type { CollectionDetail, Product } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { ProductCard } from \"./product-card\";\n\nexport interface CollectionPageProps {\n collection: CollectionDetail;\n /** Map a product → its PDP URL (the eshop owns routing). */\n productHref?: (product: Product) => string;\n locale?: string;\n}\n\nexport function CollectionPage({\n collection,\n productHref,\n locale,\n}: CollectionPageProps): React.ReactElement {\n const t = useT();\n return (\n <div style={{ fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <header style={{ marginBottom: \"1.5rem\" }}>\n <h1 style={{ margin: 0, fontSize: \"1.6rem\", fontWeight: 500 }}>\n {collection.title}\n </h1>\n {collection.description_html ? (\n <div\n style={{ marginTop: \"0.5rem\", color: \"var(--nv-muted)\", lineHeight: 1.6 }}\n dangerouslySetInnerHTML={{ __html: collection.description_html }}\n />\n ) : null}\n </header>\n\n {collection.products.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\" }}>{t(\"catalog.noProducts\")}</p>\n ) : (\n <div\n style={{\n display: \"grid\",\n gap: \"1.5rem\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(min(100%, 220px), 1fr))\",\n }}\n >\n {collection.products.map((product) => (\n <ProductCard\n key={product.id}\n product={product}\n href={productHref?.(product)}\n locale={locale}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * Product list filter + sort controls — presentational + controlled. Each holds\n * no state; the parent owns a `ProductListOptions` object, passes the current\n * value in, and re-queries on change. Themeable via `--nv-*`.\n *\n * const [opts, setOpts] = React.useState<ProductListOptions>({ sort: \"newest\" });\n * <SortSelect value={opts.sort} onChange={(sort) => setOpts({ ...opts, sort, offset: 0 })} />\n * // re-run client.catalog.products(opts) when opts changes\n */\n\nimport * as React from \"react\";\nimport type { ProductSort } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"./money\";\n\nconst SORTS: ProductSort[] = [\n \"newest\",\n \"oldest\",\n \"title-asc\",\n \"title-desc\",\n \"price-asc\",\n \"price-desc\",\n];\n\nconst SORT_LABEL: Record<ProductSort, string> = {\n newest: \"catalog.filters.sortNewest\",\n oldest: \"catalog.filters.sortOldest\",\n \"title-asc\": \"catalog.filters.sortTitleAsc\",\n \"title-desc\": \"catalog.filters.sortTitleDesc\",\n \"price-asc\": \"catalog.filters.sortPriceAsc\",\n \"price-desc\": \"catalog.filters.sortPriceDesc\",\n};\n\nconst inputStyle: React.CSSProperties = {\n font: \"inherit\",\n padding: \"0.45rem 0.6rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: \"0.8125rem\",\n color: \"var(--nv-muted)\",\n};\n\nexport interface SortSelectProps {\n value?: ProductSort;\n onChange: (sort: ProductSort) => void;\n}\n\nexport function SortSelect({ value = \"newest\", onChange }: SortSelectProps): React.ReactElement {\n const t = useT();\n return (\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", font: \"inherit\" }}>\n <span style={labelStyle}>{t(\"catalog.filters.sort\")}</span>\n <select\n value={value}\n onChange={(e) => onChange(e.target.value as ProductSort)}\n style={inputStyle}\n >\n {SORTS.map((s) => (\n <option key={s} value={s}>\n {t(SORT_LABEL[s])}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\nexport interface AvailabilityFilterProps {\n checked?: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport function AvailabilityFilter({\n checked = false,\n onChange,\n}: AvailabilityFilterProps): React.ReactElement {\n const t = useT();\n return (\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", font: \"inherit\" }}>\n <input type=\"checkbox\" checked={checked} onChange={(e) => onChange(e.target.checked)} />\n <span style={{ fontSize: \"0.875rem\" }}>{t(\"catalog.filters.inStockOnly\")}</span>\n </label>\n );\n}\n\nexport interface PriceRangeFilterProps {\n /** Current bounds in cents (undefined = open-ended). */\n minCents?: number;\n maxCents?: number;\n currency: string;\n onChange: (minCents: number | undefined, maxCents: number | undefined) => void;\n locale?: string;\n}\n\n/** Two minor-unit (cents) inputs. Emits cents; renders the currency symbol as a\n * hint via the active locale. Empty input → undefined (open-ended). */\nexport function PriceRangeFilter({\n minCents,\n maxCents,\n currency,\n onChange,\n locale,\n}: PriceRangeFilterProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const toMajor = (c?: number) => (c == null ? \"\" : String(Math.round(c / 100)));\n const fromMajor = (v: string): number | undefined => {\n const n = parseInt(v, 10);\n return Number.isFinite(n) && v.trim() !== \"\" ? n * 100 : undefined;\n };\n return (\n <fieldset style={{ border: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\" }}>\n <span style={labelStyle}>\n {t(\"catalog.filters.priceRange\")} ({formatCents(0, currency, loc).replace(/[\\d.,\\s]/g, \"\").trim() || currency})\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\" }}>\n <input\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n placeholder={t(\"catalog.filters.min\")}\n aria-label={t(\"catalog.filters.min\")}\n value={toMajor(minCents)}\n onChange={(e) => onChange(fromMajor(e.target.value), maxCents)}\n style={{ ...inputStyle, width: \"5.5rem\" }}\n />\n <span style={{ color: \"var(--nv-muted)\" }}>–</span>\n <input\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n placeholder={t(\"catalog.filters.max\")}\n aria-label={t(\"catalog.filters.max\")}\n value={toMajor(maxCents)}\n onChange={(e) => onChange(minCents, fromMajor(e.target.value))}\n style={{ ...inputStyle, width: \"5.5rem\" }}\n />\n </div>\n </fieldset>\n );\n}\n\nexport interface TagFilterProps {\n /** All selectable tags (the eshop supplies these, e.g. from its nav). */\n tags: string[];\n selected?: string[];\n onChange: (selected: string[]) => void;\n}\n\n/** Toggleable tag chips. Multi-select; emits the selected list. */\nexport function TagFilter({ tags, selected = [], onChange }: TagFilterProps): React.ReactElement | null {\n const t = useT();\n if (tags.length === 0) return null;\n const set = new Set(selected);\n const toggle = (tag: string) => {\n const next = new Set(set);\n if (next.has(tag)) next.delete(tag);\n else next.add(tag);\n onChange([...next]);\n };\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\" }}>\n <span style={labelStyle}>{t(\"catalog.filters.tags\")}</span>\n <div style={{ display: \"flex\", gap: \"0.4rem\", flexWrap: \"wrap\" }}>\n {tags.map((tag) => {\n const active = set.has(tag);\n return (\n <button\n key={tag}\n type=\"button\"\n aria-pressed={active}\n onClick={() => toggle(tag)}\n style={{\n font: \"inherit\",\n fontSize: \"0.8125rem\",\n cursor: \"pointer\",\n padding: \"0.3rem 0.7rem\",\n borderRadius: \"999px\",\n background: active ? \"var(--nv-brand)\" : \"transparent\",\n color: active ? \"var(--nv-brand-foreground)\" : \"var(--nv-fg)\",\n border: active ? \"1px solid var(--nv-brand)\" : \"1px solid var(--nv-border)\",\n }}\n >\n {tag}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { SubscriptionPlan } from \"@nevios/storefront-js\";\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"./money\";\n\n/** Controlled PDP selector. Pass value to AddToCart.subscriptionPlanId.\n * Plans and prices must come from client.subscriptions.plans(variantId). */\nexport function PurchaseOptions({ plans, value, onChange, disabled, locale }: {\n plans: SubscriptionPlan[]; value: string | null; onChange(planId: string | null): void;\n disabled?: boolean; locale?: string;\n}): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const name = React.useId();\n const options = [{ id: null, name: t(\"subscriptions.once\"), price: undefined }, ...plans];\n return <fieldset disabled={disabled} style={{ border: 0, padding: 0, margin: 0, display: \"grid\", gap: \"0.5rem\" }}>\n <legend style={{ marginBottom: \"0.5rem\", fontWeight: 500 }}>{t(\"subscriptions.purchaseOption\")}</legend>\n {options.map(option => <label key={option.id ?? \"once\"} style={{ display: \"flex\", gap: \"0.6rem\", alignItems: \"center\", padding: \"0.75rem\", border: `1px solid ${value === option.id ? \"var(--nv-fg)\" : \"var(--nv-border)\"}`, borderRadius: \"var(--nv-radius)\", cursor: \"pointer\" }}>\n <input type=\"radio\" name={name} checked={value === option.id} onChange={() => onChange(option.id)} />\n <span style={{ flex: 1 }}>{option.name}</span>\n {option.price ? <span>{formatCents(option.price.amount_cents, option.price.currency, loc)}</span> : null}\n </label>)}\n </fieldset>;\n}\n","\"use client\";\n\n/**\n * CartProvider + useCart — shared cart state for the whole app. The drawer, the\n * PDP add-to-cart, and a header cart count all read the same cart and re-render\n * together. Wraps the SDK's cart namespace (which holds the token) with React\n * state. Mount once inside <NeviosProvider>.\n *\n * <NeviosProvider client={client}>\n * <CartProvider>{app}</CartProvider>\n * </NeviosProvider>\n */\n\nimport * as React from \"react\";\nimport type { AddLineInput, UpdateCartLineInput, Cart } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface CartState {\n cart: Cart | null;\n /** True while a cart request is in flight. */\n loading: boolean;\n itemCount: number;\n addLine(input: AddLineInput): Promise<Cart>;\n updateLine(lineId: string, quantity: number | UpdateCartLineInput): Promise<Cart>;\n removeLine(lineId: string): Promise<Cart>;\n clearSubscription(): Promise<Cart>;\n /** Re-fetch the cart from the server. */\n refresh(): Promise<void>;\n}\n\nconst CartContext = React.createContext<CartState | null>(null);\n\nexport function CartProvider({ children }: { children: React.ReactNode }): React.ReactElement {\n const client = useStorefront();\n const [cart, setCart] = React.useState<Cart | null>(null);\n const [loading, setLoading] = React.useState(false);\n\n const run = React.useCallback(\n async (op: () => Promise<Cart>): Promise<Cart> => {\n setLoading(true);\n try {\n const next = await op();\n setCart(next);\n return next;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n try {\n setCart(await client.cart.get());\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const value = React.useMemo<CartState>(\n () => ({\n cart,\n loading,\n itemCount: cart?.totals.item_count ?? 0,\n addLine: (input) => run(() => client.cart.addLine(input)),\n updateLine: (lineId, quantity) => run(() => client.cart.updateLine(lineId, quantity)),\n clearSubscription: () => run(() => client.cart.clearSubscription()),\n removeLine: (lineId) => run(() => client.cart.removeLine(lineId)),\n refresh,\n }),\n [cart, loading, client, run, refresh],\n );\n\n return <CartContext.Provider value={value}>{children}</CartContext.Provider>;\n}\n\nexport function useCart(): CartState {\n const ctx = React.useContext(CartContext);\n if (!ctx) {\n throw new Error(\"useCart must be used inside <CartProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\n\n/**\n * AddToCart — the PDP buy button. Bound to a selected variant; adds it to the\n * shared cart. Drop into ProductDetailPage's `addToCart` slot:\n *\n * <ProductDetailPage product={p} addToCart={(v) => <AddToCart variant={v} />} />\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface AddToCartProps {\n variant: ProductVariant | null;\n quantity?: number;\n subscriptionPlanId?: string | null;\n /** Button label. Defaults to \"Add to cart\". */\n children?: React.ReactNode;\n onAdded?: () => void;\n}\n\nexport function AddToCart({\n variant,\n quantity = 1,\n subscriptionPlanId,\n children,\n onAdded,\n}: AddToCartProps): React.ReactElement {\n const t = useT();\n const { addLine } = useCart();\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n const disabled = variant == null || busy;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={async () => {\n if (variant == null) return;\n setBusy(true);\n setError(null);\n try {\n await addLine({ variant_id: variant.id, quantity, ...(subscriptionPlanId ? { subscription_plan_id: subscriptionPlanId } : {}) });\n onAdded?.();\n } catch (err) {\n // Never fail silently — a dead button reads as a broken store.\n const code = (err as { code?: string } | null)?.code;\n setError(code === \"variant_out_of_stock\" ? t(\"catalog.soldOut\") : t(\"catalog.addError\"));\n } finally {\n setBusy(false);\n }\n }}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: disabled ? \"default\" : \"pointer\",\n padding: \"0.7rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: disabled ? 0.55 : 1,\n }}\n >\n {busy ? t(\"common.loadingShort\") : (children ?? t(\"catalog.addToCart\"))}\n </button>\n {error ? (\n <p role=\"alert\" style={{ margin: 0, fontSize: \"0.8125rem\", color: \"var(--nv-danger, #b91c1c)\" }}>\n {error}\n </p>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CartLineItem — one cart row: thumbnail, title + variant, a quantity stepper,\n * line total, and remove. Wired to the shared cart (update/remove).\n */\n\nimport * as React from \"react\";\nimport type { CartLine } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartLineItemProps {\n line: CartLine;\n locale?: string;\n}\n\nexport function CartLineItem({ line, locale }: CartLineItemProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { cart, updateLine, removeLine } = useCart();\n\n return (\n <div style={{ display: \"flex\", gap: \"0.85rem\", alignItems: \"flex-start\", padding: \"0.75rem 0\" }}>\n <div\n style={{\n width: 64,\n height: 64,\n flex: \"0 0 auto\",\n borderRadius: \"calc(var(--nv-radius) - 4px)\",\n overflow: \"hidden\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {line.image_url ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={line.image_url}\n alt={line.title ?? \"\"}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n ) : null}\n </div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, lineHeight: 1.3 }}>{line.title}</div>\n {line.variant_title ? (\n <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>{line.variant_title}</div>\n ) : null}\n\n {line.subscription_plan_id ? <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>{cart?.subscription?.plan?.name ?? t(\"subscriptions.title\")}</div> : null}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", marginTop: \"0.5rem\" }}>\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n }}\n >\n <StepBtn\n label=\"−\"\n onClick={() =>\n line.quantity <= 1\n ? removeLine(line.id)\n : updateLine(line.id, line.quantity - 1)\n }\n />\n <span style={{ minWidth: 28, textAlign: \"center\", fontVariantNumeric: \"tabular-nums\" }}>\n {line.quantity}\n </span>\n <StepBtn label=\"+\" onClick={() => updateLine(line.id, line.quantity + 1)} />\n </div>\n <button\n type=\"button\"\n onClick={() => removeLine(line.id)}\n style={{\n font: \"inherit\",\n fontSize: \"0.8125em\",\n background: \"transparent\",\n border: \"none\",\n color: \"var(--nv-muted)\",\n cursor: \"pointer\",\n padding: 0,\n }}\n >\n {t(\"cart.remove\")}\n </button>\n </div>\n </div>\n\n <div style={{ fontWeight: 500, whiteSpace: \"nowrap\" }}>\n {formatCents(line.line_total_cents, line.unit_price.currency, loc)}\n </div>\n </div>\n );\n}\n\nfunction StepBtn({ label, onClick }: { label: string; onClick: () => void }): React.ReactElement {\n const t = useT();\n return (\n <button\n type=\"button\"\n aria-label={label === \"+\" ? t(\"cart.increaseQty\") : t(\"cart.decreaseQty\")}\n onClick={onClick}\n style={{\n font: \"inherit\",\n width: 30,\n height: 30,\n lineHeight: 1,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--nv-fg)\",\n }}\n >\n {label}\n </button>\n );\n}\n","\"use client\";\n\n/**\n * CartSummary — subtotal / tax / total + a checkout CTA. Reads the shared cart.\n * The checkout action is the eshop's (a link to its checkout route, or a\n * callback) — the P3 checkout phase wires it.\n */\n\nimport * as React from \"react\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartSummaryProps {\n /** Checkout button label (defaults to the localized \"Checkout\"). */\n checkoutLabel?: string;\n /** Link to the eshop's checkout route. */\n checkoutHref?: string;\n /** Or a callback (e.g. checkout.create() then navigate). */\n onCheckout?: () => void;\n locale?: string;\n}\n\nexport function CartSummary({\n checkoutLabel,\n checkoutHref,\n onCheckout,\n locale,\n}: CartSummaryProps): React.ReactElement | null {\n const tr = useT();\n const loc = useFormatLocale(locale);\n const { cart } = useCart();\n if (cart == null) return null;\n const t = cart.totals;\n const empty = t.item_count === 0 || cart.subscription?.available === false;\n const cta = checkoutLabel ?? tr(\"cart.checkout\");\n\n const ctaStyle: React.CSSProperties = {\n display: \"block\",\n textAlign: \"center\",\n font: \"inherit\",\n fontWeight: 500,\n cursor: empty ? \"default\" : \"pointer\",\n padding: \"0.75rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n textDecoration: \"none\",\n opacity: empty ? 0.55 : 1,\n };\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <Row label={tr(\"cart.subtotal\")} value={formatCents(t.subtotal_with_tax_cents, t.currency, loc)} />\n {t.tax_cents > 0 ? (\n <Row label={tr(\"cart.tax\")} value={formatCents(t.tax_cents, t.currency, loc)} muted />\n ) : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"cart.total\")} value={formatCents(t.total_cents, t.currency, loc)} strong />\n\n {cart.subscription?.error ? <p role=\"alert\" style={{ margin: 0 }}>{cart.subscription.error.message}</p> : null}\n {checkoutHref && !empty ? (\n <a href={checkoutHref} style={ctaStyle}>\n {cta}\n </a>\n ) : (\n <button type=\"button\" disabled={empty} onClick={onCheckout} style={ctaStyle}>\n {cta}\n </button>\n )}\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 500 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.05em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CartDrawer — a slide-in panel with the cart lines + summary. Controlled\n * (`open`/`onClose`). Reads the shared cart; the checkout CTA is passed through\n * to CartSummary.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { CartLineItem } from \"./cart-line-item\";\nimport { CartSummary, type CartSummaryProps } from \"./cart-summary\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartDrawerProps extends CartSummaryProps {\n open: boolean;\n onClose: () => void;\n /** Drawer heading (defaults to the localized \"Cart\"). */\n title?: string;\n}\n\nexport function CartDrawer({\n open,\n onClose,\n title,\n ...summary\n}: CartDrawerProps): React.ReactElement | null {\n const t = useT();\n const { cart, loading } = useCart();\n const heading = title ?? t(\"cart.title\");\n if (!open) return null;\n const lines = cart?.line_items ?? [];\n\n return (\n <div\n role=\"dialog\"\n aria-label={heading}\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 1000,\n background: \"rgba(0,0,0,0.4)\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n width: \"min(420px, 100%)\",\n height: \"100%\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n fontFamily: \"var(--nv-font)\",\n display: \"flex\",\n flexDirection: \"column\",\n boxShadow: \"-8px 0 24px rgba(0,0,0,0.12)\",\n }}\n >\n <header\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"1rem 1.25rem\",\n borderBottom: \"1px solid var(--nv-border)\",\n }}\n >\n <strong style={{ fontWeight: 500 }}>{heading}</strong>\n <button\n type=\"button\"\n aria-label={t(\"common.close\")}\n onClick={onClose}\n style={{ font: \"inherit\", background: \"transparent\", border: \"none\", cursor: \"pointer\", fontSize: \"1.25rem\" }}\n >\n ×\n </button>\n </header>\n\n <div style={{ flex: 1, overflowY: \"auto\", padding: \"0 1.25rem\" }}>\n {lines.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\", padding: \"2rem 0\", textAlign: \"center\" }}>\n {loading ? t(\"common.loadingShort\") : t(\"cart.empty\")}\n </p>\n ) : (\n lines.map((line, i) => (\n <div\n key={line.id}\n style={i > 0 ? { borderTop: \"1px solid var(--nv-border)\" } : undefined}\n >\n <CartLineItem line={line} locale={summary.locale} />\n </div>\n ))\n )}\n </div>\n\n {lines.length > 0 ? (\n <div style={{ padding: \"1.25rem\", borderTop: \"1px solid var(--nv-border)\" }}>\n <CartSummary {...summary} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CheckoutProvider + useCheckout — shared checkout state for the flow. Wraps the\n * SDK's checkout namespace (which holds the token, created from the cart token)\n * with React state, so AddressForm, ShippingPicker, PaymentSection, and\n * OrderSummary all read and mutate the same checkout and re-render together.\n *\n * Mount inside <NeviosProvider> on the checkout route:\n * <CheckoutProvider>{<CheckoutFlow />}</CheckoutProvider>\n *\n * The provider resumes an in-progress checkout from the stored token on mount;\n * call `create(cartToken)` from the cart's \"Checkout\" CTA to start one.\n */\n\nimport * as React from \"react\";\nimport type {\n Checkout,\n SubscriptionAcceptance,\n SubscriptionEnrollmentResult,\n SubscriptionPayment,\n SubscriptionQuote,\n SubscriptionSelection,\n CreateCheckoutInput,\n PaymentMethod,\n SetAddressInput,\n ShippingQuote,\n} from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\n/** Outcome of `pay()` — a gateway redirect, or a placed order. */\nexport type PayResult =\n | { kind: \"redirect\"; url: string }\n | { kind: \"order\"; checkout: Checkout }\n | { kind: \"subscription\"; subscription: SubscriptionEnrollmentResult }\n | { kind: \"subscription_payment\"; payment: SubscriptionPayment };\n\nexport interface PayOptions {\n /** Explicit acceptance of the currently displayed recurring quote. */\n subscription?: SubscriptionAcceptance;\n /** Where the gateway returns the customer after paying. */\n returnUrl?: string;\n /** Where the gateway returns the customer on cancel. */\n cancelUrl?: string;\n /** Idempotency key for the place-order call. Defaults to the checkout token,\n * which makes completing the same checkout retry-safe. */\n idempotencyKey?: string;\n /** Redirect the browser to the gateway automatically (gateway methods only).\n * Default true; pass false to handle the redirect yourself. */\n redirect?: boolean;\n}\n\nexport interface CheckoutState {\n selectSubscription(selection: SubscriptionSelection): Promise<SubscriptionQuote>;\n clearSubscription(): Promise<Checkout>;\n reviewSubscription(): Promise<SubscriptionQuote>;\n checkout: Checkout | null;\n /** True while a checkout request is in flight. */\n loading: boolean;\n /** The last error from a checkout op (cleared on the next successful op). */\n error: Error | null;\n /** Snapshot the cart into a fresh checkout and hold its token. */\n create(cartToken: string, input?: CreateCheckoutInput): Promise<Checkout>;\n /** Set email + shipping (and optional billing) address. */\n setAddress(input: SetAddressInput): Promise<Checkout>;\n /** Available shipping options for the current address. */\n shippingQuotes(): Promise<ShippingQuote[]>;\n /** Choose a shipping method + rate. */\n setShippingMethod(methodId: string, rateId: string): Promise<Checkout>;\n /** Apply / remove a discount code. */\n applyDiscount(code: string): Promise<Checkout>;\n removeDiscount(code: string): Promise<Checkout>;\n /** Enabled payment methods for the market — the picker rows. */\n paymentMethods(): Promise<PaymentMethod[]>;\n /** Choose a payment method (folds any surcharge into the total). */\n setPaymentMethod(method: string): Promise<Checkout>;\n /** Place the order. Gateway methods start the payment and (by default)\n * redirect the browser to the gateway; cod/bank/manual complete directly. */\n pay(opts?: PayOptions): Promise<PayResult>;\n /** Re-fetch the checkout from the server. */\n refresh(): Promise<void>;\n /** Forget the checkout token (e.g. after the order is placed). */\n clear(): void;\n}\n\nconst CheckoutContext = React.createContext<CheckoutState | null>(null);\n\nexport function CheckoutProvider({\n children,\n}: {\n children: React.ReactNode;\n}): React.ReactElement {\n const client = useStorefront();\n const [checkout, setCheckout] = React.useState<Checkout | null>(null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n /** Run a checkout op: toggle loading, capture errors, store the new checkout\n * when the op returns one. */\n const run = React.useCallback(\n async <T,>(op: () => Promise<T>, store: (r: T) => Checkout | null): Promise<T> => {\n setLoading(true);\n try {\n const result = await op();\n const next = store(result);\n if (next) setCheckout(next);\n setError(null);\n return result;\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n try {\n setCheckout(await client.checkout.get());\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const pay = React.useCallback(\n async (opts: PayOptions = {}): Promise<PayResult> => {\n const co = checkout;\n if (!co) throw new Error(\"pay() called before a checkout exists\");\n const idempotencyKey = opts.idempotencyKey ?? co.token;\n if (co.subscription) {\n if (co.subscription.subscription_id) {\n const payment = await run(() => client.checkout.subscriptionPayment(), () => null);\n setCheckout(await client.checkout.get());\n return { kind: \"subscription_payment\", payment };\n }\n if (!opts.subscription) throw new Error(\"Accept the current subscription terms before paying\");\n const subscription = await run(() => client.checkout.enrollSubscription(opts.subscription!), () => null);\n // Do not retry/confirm a PaymentIntent here: the merchant's Stripe.js\n // handler owns payment entry and explicit customer action.\n setCheckout(await client.checkout.get());\n return { kind: \"subscription\", subscription };\n }\n\n\n if (co.payment_category === \"gateway\") {\n const start = await run(\n () => client.checkout.startPayment({ return_url: opts.returnUrl, cancel_url: opts.cancelUrl }),\n () => null,\n );\n if (!start.redirect_url) throw new Error(\"gateway returned no redirect_url\");\n const shouldRedirect = opts.redirect !== false && typeof window !== \"undefined\";\n if (shouldRedirect) window.location.assign(start.redirect_url);\n return { kind: \"redirect\", url: start.redirect_url };\n }\n\n const done = await run(\n () => client.checkout.complete({ idempotencyKey }),\n (r) => r,\n );\n return { kind: \"order\", checkout: done };\n },\n [checkout, client, run],\n );\n\n const value = React.useMemo<CheckoutState>(\n () => ({\n checkout,\n loading,\n error,\n selectSubscription: (selection) => run(async () => {\n const quote = await client.checkout.selectSubscription(selection);\n setCheckout(await client.checkout.get());\n return quote;\n }, () => null),\n clearSubscription: () => run(() => client.checkout.clearSubscription(), r => r),\n reviewSubscription: () => run(() => client.checkout.reviewSubscription(), () => null),\n create: (cartToken, input) =>\n run(() => client.checkout.create(cartToken, input), (r) => r),\n setAddress: (input) => run(() => client.checkout.setAddress(input), (r) => r),\n shippingQuotes: () => run(() => client.checkout.shippingQuotes(), () => null),\n setShippingMethod: (methodId, rateId) =>\n run(() => client.checkout.setShippingMethod(methodId, rateId), (r) => r),\n applyDiscount: (code) => run(() => client.checkout.applyDiscount(code), (r) => r),\n removeDiscount: (code) => run(() => client.checkout.removeDiscount(code), (r) => r),\n paymentMethods: () => run(() => client.checkout.paymentMethods(), () => null),\n setPaymentMethod: (method) =>\n run(() => client.checkout.setPaymentMethod(method), (r) => r),\n pay,\n refresh,\n clear: () => {\n client.checkout.clear();\n setCheckout(null);\n },\n }),\n [checkout, loading, error, client, run, pay, refresh],\n );\n\n return <CheckoutContext.Provider value={value}>{children}</CheckoutContext.Provider>;\n}\n\nexport function useCheckout(): CheckoutState {\n const ctx = React.useContext(CheckoutContext);\n if (!ctx) {\n throw new Error(\"useCheckout must be used inside <CheckoutProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\n\n/**\n * Small presentational primitives shared by the checkout step components —\n * labelled input, primary button, and a selectable row (for shipping / payment\n * pickers). All themeable via `--nv-*` tokens. Internal to the checkout slice.\n */\n\nimport * as React from \"react\";\n\nexport interface FieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string;\n}\n\nexport function Field({ label, style, ...input }: FieldProps): React.ReactElement {\n return (\n <label style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\", flex: 1 }}>\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>{label}</span>\n <input\n {...input}\n style={{\n font: \"inherit\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n width: \"100%\",\n boxSizing: \"border-box\",\n ...style,\n }}\n />\n </label>\n );\n}\n\n/** A horizontal group of fields (wraps on narrow screens). */\nexport function FieldRow({ children }: { children: React.ReactNode }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", gap: \"0.75rem\", flexWrap: \"wrap\" }}>{children}</div>\n );\n}\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n busy?: boolean;\n}\n\nexport function Button({\n busy,\n disabled,\n children,\n style,\n ...rest\n}: ButtonProps): React.ReactElement {\n const off = disabled || busy;\n return (\n <button\n type=\"button\"\n disabled={off}\n {...rest}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: off ? \"default\" : \"pointer\",\n padding: \"0.75rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: off ? 0.55 : 1,\n ...style,\n }}\n >\n {busy ? \"…\" : children}\n </button>\n );\n}\n\nexport interface SelectRowProps {\n selected: boolean;\n onSelect(): void;\n /** Left side — name / description. */\n children: React.ReactNode;\n /** Right side — price / detail. */\n trailing?: React.ReactNode;\n disabled?: boolean;\n}\n\n/** A radio-style selectable row used by the shipping + payment pickers. */\nexport function SelectRow({\n selected,\n onSelect,\n children,\n trailing,\n disabled,\n}: SelectRowProps): React.ReactElement {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={disabled}\n onClick={onSelect}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"0.75rem\",\n width: \"100%\",\n textAlign: \"left\",\n font: \"inherit\",\n cursor: disabled ? \"default\" : \"pointer\",\n padding: \"0.85rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: `1px solid ${selected ? \"var(--nv-brand)\" : \"var(--nv-border)\"}`,\n boxShadow: selected ? \"0 0 0 1px var(--nv-brand) inset\" : \"none\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n opacity: disabled ? 0.55 : 1,\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"0.6rem\" }}>\n <span\n aria-hidden\n style={{\n width: \"1rem\",\n height: \"1rem\",\n borderRadius: \"50%\",\n border: `1px solid ${selected ? \"var(--nv-brand)\" : \"var(--nv-border)\"}`,\n background: selected\n ? \"radial-gradient(var(--nv-brand) 0 45%, transparent 50%)\"\n : \"transparent\",\n flexShrink: 0,\n }}\n />\n <span>{children}</span>\n </span>\n {trailing != null ? (\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{trailing}</span>\n ) : null}\n </button>\n );\n}\n\n/** A titled step section wrapper. */\nexport function Section({\n title,\n children,\n}: {\n title: string;\n children: React.ReactNode;\n}): React.ReactElement {\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.85rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.05rem\", fontWeight: 600 }}>{title}</h2>\n {children}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * AddressForm — collects email + shipping address (the checkout's first step).\n * On submit it calls `setAddress` on the shared checkout, then `onComplete`.\n * Controlled locally; seeds from the checkout if one already has an address\n * (resumed flow). Billing defaults to the shipping address (same_as_shipping).\n */\n\nimport * as React from \"react\";\nimport type { Address } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, Field, FieldRow, Section } from \"./ui\";\n\nexport interface AddressFormProps {\n /** Override the section heading (defaults to the localized \"Shipping address\"). */\n title?: string;\n /** Override the submit label (defaults to the localized \"Continue to shipping\"). */\n submitLabel?: string;\n /** Called after the address is saved. */\n onComplete?: () => void;\n}\n\ntype FormState = {\n email: string;\n first_name: string;\n last_name: string;\n company: string;\n address1: string;\n address2: string;\n city: string;\n postal_code: string;\n country_code: string;\n phone: string;\n};\n\nconst EMPTY: FormState = {\n email: \"\",\n first_name: \"\",\n last_name: \"\",\n company: \"\",\n address1: \"\",\n address2: \"\",\n city: \"\",\n postal_code: \"\",\n country_code: \"\",\n phone: \"\",\n};\n\nfunction seed(email: string | null, addr: Address | null): FormState {\n return {\n ...EMPTY,\n email: email ?? \"\",\n first_name: (addr?.first_name as string) ?? \"\",\n last_name: (addr?.last_name as string) ?? \"\",\n company: (addr?.company as string) ?? \"\",\n address1: (addr?.address1 as string) ?? \"\",\n address2: (addr?.address2 as string) ?? \"\",\n city: (addr?.city as string) ?? \"\",\n postal_code: (addr?.postal_code as string) ?? \"\",\n country_code: (addr?.country_code as string) ?? \"\",\n phone: (addr?.phone as string) ?? \"\",\n };\n}\n\nexport function AddressForm({\n title,\n submitLabel,\n onComplete,\n}: AddressFormProps): React.ReactElement {\n const t = useT();\n const { checkout, setAddress, loading } = useCheckout();\n const [form, setForm] = React.useState<FormState>(() =>\n seed(checkout?.email ?? null, checkout?.shipping_address ?? null),\n );\n\n const touched = React.useRef(new Set<keyof FormState>());\n // Late account/default data fills only untouched fields; never replace a draft.\n React.useEffect(() => {\n const prefill = checkout?.customer_prefill;\n const addresses = prefill?.addresses.filter((a) => !a.is_pickup);\n const saved = addresses?.find((a) => a.is_default) ?? addresses?.[0];\n const address = checkout?.shipping_address ?? (saved ? { ...saved, postal_code: saved.zip } : null);\n const defaults = seed(checkout?.email ?? prefill?.email ?? null, address as Address | null);\n defaults.first_name ||= prefill?.first_name ?? \"\";\n defaults.last_name ||= prefill?.last_name ?? \"\";\n defaults.phone ||= prefill?.phone ?? \"\";\n setForm((current) => Object.fromEntries(Object.entries(current).map(([key, value]) =>\n [key, touched.current.has(key as keyof FormState) ? value : value || defaults[key as keyof FormState]])) as FormState);\n }, [checkout?.token]);\n\n const set = (key: keyof FormState) => (e: React.ChangeEvent<HTMLInputElement>) =>\n { touched.current.add(key); setForm((f) => ({ ...f, [key]: e.target.value })); }\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n const { email, ...rest } = form;\n await setAddress({\n email,\n shipping_address: rest as Address,\n same_as_shipping: true,\n });\n onComplete?.();\n }\n\n return (\n <form onSubmit={submit}>\n <Section title={title ?? t(\"checkout.shippingAddress\")}>\n <Field label={t(\"checkout.email\")} type=\"email\" required value={form.email} onChange={set(\"email\")} autoComplete=\"email\" />\n <FieldRow>\n <Field label={t(\"checkout.firstName\")} required value={form.first_name} onChange={set(\"first_name\")} autoComplete=\"given-name\" />\n <Field label={t(\"checkout.lastName\")} required value={form.last_name} onChange={set(\"last_name\")} autoComplete=\"family-name\" />\n </FieldRow>\n <Field label={t(\"checkout.company\")} value={form.company} onChange={set(\"company\")} autoComplete=\"organization\" />\n <Field label={t(\"checkout.address\")} required value={form.address1} onChange={set(\"address1\")} autoComplete=\"address-line1\" />\n <Field label={t(\"checkout.apartment\")} value={form.address2} onChange={set(\"address2\")} autoComplete=\"address-line2\" />\n <FieldRow>\n <Field label={t(\"checkout.city\")} required value={form.city} onChange={set(\"city\")} autoComplete=\"address-level2\" />\n <Field label={t(\"checkout.postalCode\")} required value={form.postal_code} onChange={set(\"postal_code\")} autoComplete=\"postal-code\" />\n <Field\n label={t(\"checkout.country\")}\n required\n value={form.country_code}\n onChange={set(\"country_code\")}\n placeholder=\"CZ\"\n autoComplete=\"country\"\n maxLength={2}\n style={{ textTransform: \"uppercase\", maxWidth: \"6rem\" }}\n />\n </FieldRow>\n <Field label={t(\"checkout.phone\")} type=\"tel\" value={form.phone} onChange={set(\"phone\")} autoComplete=\"tel\" />\n <div>\n <Button type=\"submit\" busy={loading}>\n {submitLabel ?? t(\"checkout.continueToShipping\")}\n </Button>\n </div>\n </Section>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * ShippingPicker — fetches the shipping options for the checkout's address and\n * lets the customer pick one. Selecting a row calls `setShippingMethod` (which\n * recomputes totals). Requires the address step to be done first.\n */\n\nimport * as React from \"react\";\nimport type { ShippingQuote } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, SelectRow, Section } from \"./ui\";\n\nexport interface ShippingPickerProps {\n /** Override the section heading (defaults to the localized \"Shipping method\"). */\n title?: string;\n /** Override the submit label (defaults to \"Continue to payment\"). */\n submitLabel?: string;\n /** Called once a method is selected and saved. */\n onComplete?: () => void;\n locale?: string;\n}\n\nexport function ShippingPicker({\n title,\n submitLabel,\n onComplete,\n locale,\n}: ShippingPickerProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { checkout, shippingQuotes, setShippingMethod, loading } = useCheckout();\n const heading = title ?? t(\"checkout.shippingMethod\");\n const [quotes, setQuotes] = React.useState<ShippingQuote[] | null>(null);\n const [selected, setSelected] = React.useState<string | null>(null);\n const [fetching, setFetching] = React.useState(true);\n\n // Load quotes once the address is in place; re-load if it changes.\n const addressKey = checkout?.shipping_address\n ? `${checkout.shipping_address.country_code}:${checkout.shipping_address.postal_code}`\n : null;\n React.useEffect(() => {\n let live = true;\n setFetching(true);\n shippingQuotes()\n .then((qs) => {\n if (!live) return;\n setQuotes(qs);\n // Pre-select the saved method (best-effort match on display name).\n const savedLabel = checkout?.shipping_method?.rate_display_name;\n const match = savedLabel ? qs.find((q) => q.label === savedLabel) : undefined;\n setSelected(match?.rate_id ?? (qs.length === 1 ? qs[0].rate_id : null));\n })\n .catch(() => live && setQuotes([]))\n .finally(() => live && setFetching(false));\n return () => {\n live = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addressKey]);\n\n async function submit() {\n const q = quotes?.find((x) => x.rate_id === selected);\n if (!q) return;\n await setShippingMethod(q.method_id, q.rate_id);\n onComplete?.();\n }\n\n if (fetching && quotes == null) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.loadingShipping\")}</p>\n </Section>\n );\n }\n\n if (!quotes || quotes.length === 0) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.noShipping\")}</p>\n </Section>\n );\n }\n\n return (\n <Section title={heading}>\n <div role=\"radiogroup\" style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.6rem\" }}>\n {quotes.map((q) => {\n return (\n <SelectRow\n key={q.rate_id}\n selected={selected === q.rate_id}\n onSelect={() => setSelected(q.rate_id)}\n trailing={q.is_free ? t(\"common.free\") : formatCents(q.price_cents, q.currency, loc)}\n >\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ fontWeight: 500 }}>{q.label}</span>\n </span>\n </SelectRow>\n );\n })}\n </div>\n <div>\n <Button onClick={submit} busy={loading} disabled={selected == null}>\n {submitLabel ?? t(\"checkout.continueToPayment\")}\n </Button>\n </div>\n </Section>\n );\n}\n\n","\"use client\";\n\n/**\n * PaymentMethodPicker — the ONE payment picker in the kit.\n *\n * Used by both the checkout's payment step and the payment page, and that is\n * the whole point of it existing separately: switching from card to transfer\n * has to look identical in the shop and on the page a customer reaches from an\n * e-mail two days later. Two pickers that drift make the second one feel like\n * somebody else's site — at the exact moment the customer is deciding whether\n * to send money.\n *\n * The surcharge rides on the row because it is the consequence of the choice.\n * Cash on delivery costs 39 Kč more; a picker that hides that until the total\n * moves has let the shopper choose blind.\n */\n\nimport * as React from \"react\";\nimport type { PaymentMethod } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { SelectRow } from \"../checkout/ui\";\n\nexport interface PaymentMethodPickerProps {\n methods: PaymentMethod[];\n /** The chosen method's key (`PaymentMethod.method`), or null when none is. */\n value: string | null;\n onSelect(method: string): void;\n /** Currency of the order/checkout — the surcharge is formatted in it. */\n currency: string;\n locale?: string;\n /** Renders the rows unselectable (e.g. while a switch is in flight). */\n disabled?: boolean;\n /** Accessible name for the group. */\n label?: string;\n}\n\nexport function PaymentMethodPicker({\n methods,\n value,\n onSelect,\n currency,\n locale,\n disabled,\n label,\n}: PaymentMethodPickerProps): React.ReactElement {\n const loc = useFormatLocale(locale);\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.6rem\" }}\n >\n {methods.map((m) => (\n <SelectRow\n key={m.method}\n selected={value === m.method}\n disabled={disabled}\n onSelect={() => onSelect(m.method)}\n trailing={\n m.surcharge_cents > 0\n ? `+${formatCents(m.surcharge_cents, currency, loc)}`\n : undefined\n }\n >\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ fontWeight: 500 }}>{m.display_label}</span>\n {m.display_description ? (\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {m.display_description}\n </span>\n ) : null}\n </span>\n </SelectRow>\n ))}\n </div>\n );\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { SubscriptionQuote } from \"@nevios/storefront-js\";\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\n\n/** Displays the exact server quote. Never pre-check consent or calculate a discount. */\nexport function SubscriptionTerms({ quote, checked, onChange, locale }: {\n quote: SubscriptionQuote; checked: boolean; onChange(checked: boolean): void; locale?: string;\n}): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n return <fieldset style={{ margin: 0, padding: \"1rem\", border: \"1px solid var(--nv-border)\", borderRadius: \"var(--nv-radius)\" }}>\n <legend>{t(\"subscriptions.title\")}</legend>\n <p style={{ margin: \"0 0 0.5rem\", fontWeight: 500 }}>{t(\"subscriptions.eachDelivery\")}: {formatCents(quote.recurring_total_cents, quote.currency, loc)}</p>\n <p style={{ margin: \"0 0 0.75rem\", whiteSpace: \"pre-wrap\" }}>{quote.terms_text}</p>\n <label style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"0.6rem\", cursor: \"pointer\" }}>\n <input type=\"checkbox\" checked={checked} onChange={event => onChange(event.target.checked)} />\n <span>{t(\"subscriptions.consent\")}</span>\n </label>\n </fieldset>;\n}\n","\"use client\";\n\n/**\n * PaymentSection — lists the enabled payment methods, lets the customer pick\n * one, and places the order. The category drives the final action:\n * • gateway → `pay()` starts the payment and redirects to the gateway\n * • cod/bank/manual → `pay()` completes the order directly → `onOrderPlaced`\n * Recurring Stripe payments use the merchant's Stripe.js callback.\n */\n\nimport * as React from \"react\";\nimport type { Checkout, PaymentMethod, SubscriptionPayment } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { PaymentMethodPicker } from \"../payment/method-picker\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, Section } from \"./ui\";\nimport { SubscriptionTerms } from \"./subscription-terms\";\n\nexport interface PaymentSectionProps {\n title?: string;\n /** Where the gateway returns the customer after paying (gateway methods).\n * Defaults to the current URL. */\n returnUrl?: string;\n cancelUrl?: string;\n /** Called when a non-gateway order is placed (gateway flows redirect away). */\n onOrderPlaced?: (checkout: Checkout) => void;\n locale?: string;\n /** Confirm the returned intent using your Stripe.js Payment Element. */\n onSubscriptionPayment?: (payment: SubscriptionPayment) => void | Promise<void>;\n}\n\nexport function PaymentSection({\n title,\n returnUrl,\n cancelUrl,\n onOrderPlaced,\n locale,\n onSubscriptionPayment,\n}: PaymentSectionProps): React.ReactElement {\n const t = useT();\n const heading = title ?? t(\"checkout.payment\");\n const { checkout, paymentMethods, setPaymentMethod, pay, loading, refresh } = useCheckout();\n const [methods, setMethods] = React.useState<PaymentMethod[] | null>(null);\n const [fetching, setFetching] = React.useState(true);\n const selected = checkout?.payment_method ?? null;\n const [acceptedDigest, setAcceptedDigest] = React.useState<string | null>(null);\n const [actionBusy, setActionBusy] = React.useState(false);\n const quote = checkout?.subscription?.quote;\n const needsConsent = Boolean(checkout?.subscription?.requires_consent);\n const clickInFlight = React.useRef(false);\n const [actionError, setActionError] = React.useState<string | null>(null);\n const accepted = Boolean(quote && acceptedDigest === quote.quote_digest);\n\n React.useEffect(() => {\n let live = true;\n setFetching(true);\n paymentMethods()\n .then((ms) => {\n if (!live) return;\n setMethods(ms);\n // Auto-select if the merchant offers exactly one method.\n if (ms.length === 1 && checkout?.payment_method == null) {\n void setPaymentMethod(ms[0].method);\n }\n })\n .catch(() => live && setMethods([]))\n .finally(() => live && setFetching(false));\n return () => {\n live = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkout?.token, checkout?.shipping_method_id, checkout?.subscription?.selection.plan_id]);\n\n const selectedMethod = methods?.find((m) => m.method === selected) ?? null;\n const isGateway = selectedMethod?.category === \"gateway\";\n\n async function placeOrder() {\n if (clickInFlight.current) return;\n clickInFlight.current = true;\n setActionBusy(true);\n setActionError(null);\n try {\n const result = await pay({ returnUrl, cancelUrl,\n ...(needsConsent && quote && accepted ? { subscription: { quote, consent: true as const } } : {}),\n });\n if (result.kind === \"subscription\") await onSubscriptionPayment?.(result.subscription.payment);\n if (result.kind === \"subscription_payment\") await onSubscriptionPayment?.(result.payment);\n if (result.kind === \"subscription\" || result.kind === \"subscription_payment\") await refresh();\n if (result.kind === \"order\") onOrderPlaced?.(result.checkout);\n } catch (err) {\n setActionError(err instanceof Error ? err.message : String(err));\n } finally { clickInFlight.current = false; setActionBusy(false); }\n }\n\n if (fetching && methods == null) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.loadingPayment\")}</p>\n </Section>\n );\n }\n\n if (!methods || methods.length === 0) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.noPayment\")}</p>\n </Section>\n );\n }\n\n return (\n <Section title={heading}>\n {/* The same picker the payment page renders — see payment/method-picker. */}\n <PaymentMethodPicker\n methods={methods}\n value={selected}\n onSelect={(method) => void setPaymentMethod(method)}\n currency={checkout?.totals.currency ?? \"CZK\"}\n locale={locale}\n label={heading}\n />\n {quote && needsConsent ? <SubscriptionTerms locale={locale} quote={quote} checked={accepted} onChange={value => setAcceptedDigest(value && quote ? quote.quote_digest : null)} /> : null}\n {checkout?.subscription?.error ? <p role=\"alert\">{checkout.subscription.error.message}</p> : null}\n {actionError ? <p role=\"alert\">{actionError}</p> : null}\n <div>\n <Button onClick={placeOrder} busy={loading || actionBusy} disabled={selected == null || (Boolean(checkout?.subscription) && ((needsConsent && (!accepted || !quote)) || !onSubscriptionPayment || !checkout?.subscription?.available))}>\n {isGateway ? t(\"checkout.payNow\") : t(\"checkout.placeOrder\")}\n </Button>\n {isGateway && !checkout?.subscription ? (\n <p style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\", marginTop: \"0.6rem\" }}>\n {t(\"checkout.gatewayRedirectNote\")}\n </p>\n ) : null}\n </div>\n </Section>\n );\n}\n","\"use client\";\n\n/**\n * OrderSummary — the checkout's running total: line items + the full breakdown\n * (subtotal · discount · shipping · tax · surcharge · total). Reads the shared\n * checkout; pass `checkout` explicitly to render it standalone (e.g. SSR).\n */\n\nimport * as React from \"react\";\nimport type { Checkout } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\n\nexport interface OrderSummaryProps {\n /** Override the shared checkout (else read from <CheckoutProvider>). */\n checkout?: Checkout;\n /** Hide the line items, show totals only. */\n totalsOnly?: boolean;\n locale?: string;\n}\n\nexport function OrderSummary({\n checkout: override,\n totalsOnly = false,\n locale,\n}: OrderSummaryProps): React.ReactElement | null {\n // Read context unconditionally (hooks rule); prefer the explicit prop.\n const tr = useT();\n const loc = useFormatLocale(locale);\n const ctx = useCheckout();\n const checkout = override ?? ctx.checkout;\n if (checkout == null) return null;\n\n const t = checkout.totals;\n const c = t.currency;\n const money = (cents: number) => formatCents(cents, c, loc);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\" }}>\n {!totalsOnly && checkout.line_items.length > 0 ? (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n {checkout.line_items.map((li) => (\n <li key={li.id} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n {li.image_url ? (\n <img\n src={li.image_url}\n alt=\"\"\n width={48}\n height={48}\n style={{ borderRadius: \"var(--nv-radius)\", objectFit: \"cover\", flexShrink: 0 }}\n />\n ) : null}\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{li.title}</span>\n {li.variant_title ? (\n <span style={{ display: \"block\", fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {li.variant_title}\n </span>\n ) : null}\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>×{li.quantity}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{money(li.line_total_cents)}</span>\n </li>\n ))}\n </ul>\n ) : null}\n\n {!totalsOnly ? <div style={{ height: 1, background: \"var(--nv-border)\" }} /> : null}\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <Row label={tr(\"totals.subtotal\")} value={money(t.subtotal_with_tax_cents)} />\n {t.discount_cents > 0 ? <Row label={tr(\"totals.discount\")} value={`−${money(t.discount_cents)}`} muted /> : null}\n {checkout.shipping_method != null || t.shipping_cents > 0 ? (\n <Row label={tr(\"totals.shipping\")} value={t.shipping_cents > 0 ? money(t.shipping_cents) : tr(\"common.free\")} muted />\n ) : null}\n {t.surcharge_cents > 0 ? <Row label={tr(\"totals.paymentFee\")} value={money(t.surcharge_cents)} muted /> : null}\n {t.tax_cents > 0 ? <Row label={tr(\"totals.taxIncluded\")} value={money(t.tax_cents)} muted /> : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"totals.total\")} value={money(t.total_cents)} strong />\n </div>\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 600 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.1em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CheckoutFlow — the multi-step checkout, composed: address → shipping →\n * payment, with a live OrderSummary alongside. Drop it onto your checkout route\n * inside <CheckoutProvider>; it resumes the checkout from the stored token.\n *\n * <CheckoutProvider>\n * <CheckoutFlow onOrderPlaced={(c) => navigate(`/order/${c.order_id}`)} />\n * </CheckoutProvider>\n *\n * Each step is a standalone component (AddressForm / ShippingPicker /\n * PaymentSection) — use them directly for a fully custom layout.\n */\n\nimport * as React from \"react\";\nimport type { Checkout, SubscriptionPayment } from \"@nevios/storefront-js\";\n\nimport { useT, type MessageKey } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { AddressForm } from \"./address-form\";\nimport { ShippingPicker } from \"./shipping-picker\";\nimport { PaymentSection } from \"./payment-section\";\nimport { OrderSummary } from \"./order-summary\";\n\ntype Step = \"address\" | \"shipping\" | \"payment\";\n\nconst STEPS: Step[] = [\"address\", \"shipping\", \"payment\"];\nconst STEP_KEY: Record<Step, MessageKey> = {\n address: \"checkout.stepAddress\",\n shipping: \"checkout.stepShipping\",\n payment: \"checkout.stepPayment\",\n};\n\nexport interface CheckoutFlowProps {\n /** If set and no checkout exists yet, create one from this cart token. */\n cartToken?: string;\n /** Confirm with Stripe.js, then the flow refreshes the server payment state. */\n onSubscriptionPayment?: (payment: SubscriptionPayment) => void | Promise<void>;\n /** Called when a (non-gateway) order is placed. Gateway flows redirect away\n * before this fires. */\n onOrderPlaced?: (checkout: Checkout) => void;\n /** Rendered when there's nothing to check out (no checkout, no cart token). */\n emptyState?: React.ReactNode;\n /** Rendered after a successful order (else a default confirmation). */\n renderConfirmation?: (checkout: Checkout) => React.ReactNode;\n /** Gateway return/cancel URLs (forwarded to PaymentSection). */\n returnUrl?: string;\n cancelUrl?: string;\n locale?: string;\n}\n\n/** Where the checkout currently stands, from its server state. */\nfunction reachedStep(checkout: Checkout | null): Step {\n if (!checkout) return \"address\";\n if (checkout.shipping_method != null) return \"payment\";\n if (checkout.shipping_address != null) return \"shipping\";\n return \"address\";\n}\n\nexport function CheckoutFlow({\n cartToken,\n onSubscriptionPayment,\n onOrderPlaced,\n emptyState,\n renderConfirmation,\n returnUrl,\n cancelUrl,\n locale,\n}: CheckoutFlowProps): React.ReactElement {\n const t = useT();\n const { checkout, loading, create } = useCheckout();\n const [step, setStep] = React.useState<Step>(\"address\");\n const [bootstrapped, setBootstrapped] = React.useState(false);\n\n // Auto-create from a cart token if asked and none exists yet.\n React.useEffect(() => {\n if (checkout || !cartToken || bootstrapped) return;\n setBootstrapped(true);\n void create(cartToken).catch(() => {});\n }, [checkout, cartToken, bootstrapped, create]);\n\n // Sync the visible step forward to where the server says we are (never\n // backward — the customer may have clicked \"edit\" to revisit a step).\n const serverStep = reachedStep(checkout);\n React.useEffect(() => {\n setStep((cur) => (rank(serverStep) > rank(cur) ? serverStep : cur));\n }, [serverStep]);\n\n // Order placed → confirmation.\n if (checkout?.order_id && (!checkout.subscription || checkout.phase === \"success\")) {\n return (\n <Shell summary={<OrderSummary locale={locale} />}>\n {renderConfirmation ? (\n renderConfirmation(checkout)\n ) : (\n <DefaultConfirmation checkout={checkout} />\n )}\n </Shell>\n );\n }\n\n if (!checkout) {\n if (loading || (cartToken && !bootstrapped)) {\n return <p style={{ color: \"var(--nv-muted)\" }}>{t(\"checkout.loading\")}</p>;\n }\n return <>{emptyState ?? <p style={{ color: \"var(--nv-muted)\" }}>{t(\"checkout.empty\")}</p>}</>;\n }\n\n return (\n <Shell summary={<OrderSummary locale={locale} />}>\n <Steps current={step} reached={serverStep} onJump={setStep} />\n {step === \"address\" ? (\n <AddressForm onComplete={() => setStep(\"shipping\")} />\n ) : step === \"shipping\" ? (\n <ShippingPicker onComplete={() => setStep(\"payment\")} locale={locale} />\n ) : (\n <PaymentSection\n onSubscriptionPayment={onSubscriptionPayment}\n returnUrl={returnUrl}\n cancelUrl={cancelUrl}\n onOrderPlaced={onOrderPlaced}\n locale={locale}\n />\n )}\n </Shell>\n );\n}\n\nfunction rank(step: Step): number {\n return STEPS.indexOf(step);\n}\n\n/** Two-column shell: steps/form on the left, sticky summary on the right. */\nfunction Shell({\n children,\n summary,\n}: {\n children: React.ReactNode;\n summary: React.ReactNode;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) minmax(0, 22rem)\",\n gap: \"2.5rem\",\n alignItems: \"start\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\", minWidth: 0 }}>\n {children}\n </div>\n <aside\n style={{\n position: \"sticky\",\n top: \"1.5rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n {summary}\n </aside>\n </div>\n );\n}\n\n/** The step indicator. Visited steps are clickable to jump back. */\nfunction Steps({\n current,\n reached,\n onJump,\n}: {\n current: Step;\n reached: Step;\n onJump: (s: Step) => void;\n}): React.ReactElement {\n const t = useT();\n return (\n <ol\n style={{\n listStyle: \"none\",\n display: \"flex\",\n gap: \"0.5rem\",\n margin: 0,\n padding: 0,\n fontSize: \"0.875rem\",\n }}\n >\n {STEPS.map((s, i) => {\n const active = s === current;\n const visitable = rank(s) <= rank(reached);\n return (\n <li key={s} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" }}>\n <button\n type=\"button\"\n disabled={!visitable}\n onClick={() => visitable && onJump(s)}\n style={{\n font: \"inherit\",\n fontWeight: active ? 600 : 400,\n color: active ? \"var(--nv-fg)\" : \"var(--nv-muted)\",\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: visitable && !active ? \"pointer\" : \"default\",\n }}\n >\n {i + 1}. {t(STEP_KEY[s])}\n </button>\n {i < STEPS.length - 1 ? <span style={{ color: \"var(--nv-muted)\" }}>→</span> : null}\n </li>\n );\n })}\n </ol>\n );\n}\n\nfunction DefaultConfirmation({ checkout }: { checkout: Checkout }): React.ReactElement {\n const t = useT();\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.3rem\", fontWeight: 600 }}>{t(\"checkout.thankYou\")}</h2>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {t(\"checkout.orderPlacedBody\", { order: `#${checkout.order_id}`, email: checkout.email ?? \"\" })}\n </p>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * useOrderStatus — fetch a placed order by its public status token. No provider:\n * the status page is a leaf, so each mount owns its own fetch. Pass a\n * pre-fetched `initial` order (e.g. from a Remix loader) to render server-side\n * and skip the client fetch.\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface OrderStatusState {\n order: OrderStatus | null;\n loading: boolean;\n error: Error | null;\n reload(): void;\n}\n\nexport function useOrderStatus(\n statusToken: string | null,\n initial?: OrderStatus | null,\n): OrderStatusState {\n const client = useStorefront();\n const [order, setOrder] = React.useState<OrderStatus | null>(initial ?? null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const load = React.useCallback(async () => {\n if (!statusToken) return;\n setLoading(true);\n try {\n setOrder(await client.order.byStatusToken(statusToken));\n setError(null);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, statusToken]);\n\n React.useEffect(() => {\n if (initial) return; // SSR / loader-prefetched → no client fetch\n void load();\n }, [load, initial]);\n\n return { order, loading, error, reload: () => void load() };\n}\n","\"use client\";\n\n/**\n * usePayment — the merchant's own payment page, for a placed order.\n *\n * No provider and no shared state, for the same reason `useOrderStatus` has\n * none: this is a leaf reached from a link in an e-mail, often days later and\n * on a different device. Everything it needs is the payment's own token, which\n * `useOrderStatus` hands over as `order.payment.token`.\n *\n * `token` being null (a paid order) is a normal state, not an error — render\n * nothing rather than a button that leads nowhere.\n */\n\nimport * as React from \"react\";\nimport type { PaymentMethod, PaymentState } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface PaymentPageState {\n payment: PaymentState | null;\n methods: PaymentMethod[];\n loading: boolean;\n /** True while a method change or a gateway start is in flight — the moment\n * to disable the buttons, because both mutate the order. */\n busy: boolean;\n error: Error | null;\n reload(): Promise<void>;\n /** Switch method. The order's total can move with it (the fee differs), so\n * the refreshed state is returned and stored, not merged. */\n selectMethod(method: string): Promise<PaymentState | null>;\n /** Open a gateway session. Returns the URL to send the browser to; null when\n * the connector needs no redirect. */\n startPayment(input?: { returnUrl?: string; cancelUrl?: string }): Promise<string | null>;\n}\n\nexport function usePayment(\n token: string | null,\n initial?: PaymentState | null,\n): PaymentPageState {\n const client = useStorefront();\n const [payment, setPayment] = React.useState<PaymentState | null>(initial ?? null);\n const [methods, setMethods] = React.useState<PaymentMethod[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const load = React.useCallback(async () => {\n if (!token) return;\n setLoading(true);\n try {\n // Together, because a picker that renders before it knows the current\n // method flashes the wrong row as selected.\n const [state, list] = await Promise.all([\n client.payment.get(token),\n client.payment.methods(token),\n ]);\n setPayment(state);\n setMethods(list);\n setError(null);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, token]);\n\n React.useEffect(() => {\n if (!token) return;\n // Skip the fetch when the caller already server-rendered this exact page.\n if (initial && initial.token === token) {\n setPayment(initial);\n client.payment\n .methods(token)\n .then(setMethods)\n .catch(() => setMethods([]));\n return;\n }\n void load();\n // `initial` is a render-time prop; re-running on its identity would refetch\n // on every parent render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [token, load]);\n\n const selectMethod = React.useCallback(\n async (method: string) => {\n if (!token) return null;\n setBusy(true);\n try {\n const next = await client.payment.selectMethod(token, method);\n setPayment(next);\n setError(null);\n return next;\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n return null;\n } finally {\n setBusy(false);\n }\n },\n [client, token],\n );\n\n const startPayment = React.useCallback(\n async (input?: { returnUrl?: string; cancelUrl?: string }) => {\n if (!token) return null;\n setBusy(true);\n try {\n const result = await client.payment.start(token, {\n return_url: input?.returnUrl,\n cancel_url: input?.cancelUrl,\n });\n setError(null);\n return result.redirect_url;\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n return null;\n } finally {\n setBusy(false);\n }\n },\n [client, token],\n );\n\n return { payment, methods, loading, busy, error, reload: load, selectMethod, startPayment };\n}\n","\"use client\";\n\n/**\n * Shared presentational parts for the order views — phase timeline, terminal\n * status banner, line items, and totals. Themeable via `--nv-*`. Internal to\n * the order slice.\n */\n\nimport * as React from \"react\";\nimport type { OrderPhase, OrderStatus } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT, type MessageKey } from \"../i18n\";\n\n// Happy-path rank of each phase; terminal phases handled by the banner.\nconst PHASE_RANK: Record<OrderPhase, number> = {\n placed: 0,\n paid: 1,\n fulfilled: 2,\n shipped: 3,\n out_for_delivery: 4,\n delivered: 5,\n // terminal — never reached on the timeline\n returned: -1,\n refunded: -1,\n cancelled: -1,\n};\n\nconst MILESTONES: { key: MessageKey; rank: number }[] = [\n { key: \"order.phase.placed\", rank: 0 },\n { key: \"order.phase.paid\", rank: 1 },\n { key: \"order.phase.fulfilled\", rank: 2 },\n { key: \"order.phase.shipped\", rank: 3 },\n { key: \"order.phase.delivered\", rank: 5 },\n];\n\nconst TERMINAL: Partial<Record<OrderPhase, { key: MessageKey; tone: string }>> = {\n cancelled: { key: \"order.terminal.cancelled\", tone: \"var(--nv-muted)\" },\n refunded: { key: \"order.terminal.refunded\", tone: \"var(--nv-muted)\" },\n returned: { key: \"order.terminal.returned\", tone: \"var(--nv-muted)\" },\n};\n\nexport function isTerminal(phase: OrderPhase): boolean {\n return phase in TERMINAL;\n}\n\n/** The happy-path progress bar. Hidden for terminal phases (use StatusBanner). */\nexport function PhaseTimeline({ phase }: { phase: OrderPhase }): React.ReactElement | null {\n const t = useT();\n if (isTerminal(phase)) return null;\n const current = PHASE_RANK[phase];\n return (\n <ol\n style={{\n listStyle: \"none\",\n display: \"flex\",\n margin: 0,\n padding: 0,\n gap: \"0.25rem\",\n }}\n >\n {MILESTONES.map((m, i) => {\n const done = current >= m.rank;\n const active = m.rank === current || (i === MILESTONES.length - 1 && current >= m.rank);\n return (\n <li key={m.key} style={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: \"0.4rem\" }}>\n <span\n aria-hidden\n style={{\n height: \"0.35rem\",\n borderRadius: \"999px\",\n background: done ? \"var(--nv-brand)\" : \"var(--nv-border)\",\n }}\n />\n <span\n style={{\n fontSize: \"0.8125rem\",\n fontWeight: active ? 600 : 400,\n color: done ? \"var(--nv-fg)\" : \"var(--nv-muted)\",\n }}\n >\n {t(m.key)}\n </span>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/** Banner shown for terminal phases (cancelled / refunded / returned). */\nexport function StatusBanner({ phase }: { phase: OrderPhase }): React.ReactElement | null {\n const t = useT();\n const meta = TERMINAL[phase];\n if (!meta) return null;\n return (\n <div\n style={{\n padding: \"0.85rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: meta.tone,\n fontWeight: 500,\n }}\n >\n {t(meta.key)}\n </div>\n );\n}\n\nexport function OrderLines({\n order,\n locale,\n}: {\n order: OrderStatus;\n locale?: string;\n}): React.ReactElement {\n const loc = useFormatLocale(locale);\n return (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n {order.line_items.map((li) => (\n <li key={li.id} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n {li.image_url ? (\n <img\n src={li.image_url}\n alt=\"\"\n width={48}\n height={48}\n style={{ borderRadius: \"var(--nv-radius)\", objectFit: \"cover\", flexShrink: 0 }}\n />\n ) : null}\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{li.title}</span>\n {li.variant_title ? (\n <span style={{ display: \"block\", fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {li.variant_title}\n </span>\n ) : null}\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>×{li.quantity}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {formatCents(li.total_with_tax_cents, order.currency, loc)}\n </span>\n </li>\n ))}\n {/* Derived fee lines (e.g. COD/dobírka) — itemised after the products. */}\n {order.fee_lines.map((f, i) => (\n <li key={`fee-${i}`} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{f.title}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {formatCents(f.total_with_tax_cents, order.currency, loc)}\n </span>\n </li>\n ))}\n </ul>\n );\n}\n\nexport function OrderTotals({\n order,\n locale,\n}: {\n order: OrderStatus;\n locale?: string;\n}): React.ReactElement {\n const tr = useT();\n const loc = useFormatLocale(locale);\n const t = order.totals;\n const c = order.currency;\n const money = (cents: number) => formatCents(cents, c, loc);\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <Row label={tr(\"totals.subtotal\")} value={money(t.subtotal_cents)} />\n {t.discount_cents > 0 ? <Row label={tr(\"totals.discount\")} value={`−${money(t.discount_cents)}`} muted /> : null}\n {t.shipping_cents > 0 ? <Row label={tr(\"totals.shipping\")} value={money(t.shipping_cents)} muted /> : null}\n {t.surcharge_cents > 0 ? <Row label={tr(\"totals.paymentFee\")} value={money(t.surcharge_cents)} muted /> : null}\n {t.tax_cents > 0 ? <Row label={tr(\"totals.taxIncluded\")} value={money(t.tax_cents)} muted /> : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"totals.total\")} value={money(t.total_cents)} strong />\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 600 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.1em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderConfirmation — the compact post-checkout \"thank you\" block. Drop it on\n * the return route after `checkout.complete()` / a gateway redirect back, keyed\n * by the order's status token (`checkout.order_status_token`). Pass a\n * pre-fetched `order` to render server-side.\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useOrderStatus } from \"./use-order-status\";\nimport { OrderLines, OrderTotals } from \"./parts\";\n\nexport interface OrderConfirmationProps {\n /** The order's status token (from `checkout.order_status_token`). */\n statusToken?: string | null;\n /** Pre-fetched order (SSR / loader) — skips the client fetch. */\n order?: OrderStatus;\n /** Link to the full order status page. */\n statusHref?: string;\n /** Heading copy (defaults to the localized \"Thank you for your order!\"). */\n title?: string;\n locale?: string;\n}\n\nexport function OrderConfirmation({\n statusToken,\n order: initial,\n statusHref,\n title,\n locale,\n}: OrderConfirmationProps): React.ReactElement {\n const t = useT();\n const { order, loading, error } = useOrderStatus(statusToken ?? null, initial);\n\n if (!order) {\n return (\n <p style={{ color: \"var(--nv-muted)\" }}>\n {loading\n ? t(\"order.confirmLoading\")\n : error\n ? t(\"order.confirmLoadError\")\n : t(\"order.notFound\")}\n </p>\n );\n }\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1.25rem\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n maxWidth: \"34rem\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.4rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.4rem\", fontWeight: 600 }}>\n {title ?? t(\"checkout.thankYou\")}\n </h2>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {t(\"order.confirmed\", { number: order.order_number })}\n </p>\n </div>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n <OrderLines order={order} locale={locale} />\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <OrderTotals order={order} locale={locale} />\n </div>\n\n {statusHref ? (\n <a\n href={statusHref}\n style={{\n alignSelf: \"flex-start\",\n font: \"inherit\",\n fontWeight: 500,\n textDecoration: \"none\",\n padding: \"0.7rem 1.4rem\",\n borderRadius: \"var(--nv-radius)\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n }}\n >\n {t(\"order.trackOrder\")}\n </a>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderStatusPage — the full post-purchase status view: phase timeline (or a\n * terminal banner), line items, totals, shipping method + tracking, the\n * redacted delivery location, and payment. Keyed by the order's status token;\n * pass a pre-fetched `order` to render server-side (Remix loader).\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useOrderStatus } from \"./use-order-status\";\nimport { OrderLines, OrderTotals, PhaseTimeline, StatusBanner, isTerminal } from \"./parts\";\n\nexport interface OrderStatusPageProps {\n statusToken?: string | null;\n /** Pre-fetched order (SSR / loader) — skips the client fetch. */\n order?: OrderStatus;\n /** Contact-support callback (shown when the order allows it). */\n onContactSupport?: () => void;\n /** Builds the URL of your payment page from the payment's token. Given one,\n * an unpaid order shows a \"finish payment\" link; without it the page stays\n * read-only, because a link to a route the shop does not have is worse than\n * no link. */\n payHref?: (paymentToken: string) => string;\n locale?: string;\n}\n\nexport function OrderStatusPage({\n statusToken,\n order: initial,\n onContactSupport,\n payHref,\n locale,\n}: OrderStatusPageProps): React.ReactElement {\n const t = useT();\n const { order, loading, error } = useOrderStatus(statusToken ?? null, initial);\n\n if (!order) {\n return (\n <p style={{ color: \"var(--nv-muted)\" }}>\n {loading ? t(\"order.loading\") : error ? t(\"order.loadError\") : t(\"order.notFound\")}\n </p>\n );\n }\n\n const placed = new Date(order.placed_at);\n const placedLabel = isNaN(placed.getTime())\n ? order.placed_at\n : placed.toLocaleDateString(locale, { year: \"numeric\", month: \"long\", day: \"numeric\" });\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1.5rem\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n maxWidth: \"40rem\",\n }}\n >\n <header style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.3rem\" }}>\n <h1 style={{ margin: 0, fontSize: \"1.5rem\", fontWeight: 600 }}>\n {t(\"order.title\", { number: order.order_number })}\n </h1>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"order.placedOn\", { date: placedLabel })}</p>\n </header>\n\n {isTerminal(order.public_phase) ? (\n <StatusBanner phase={order.public_phase} />\n ) : (\n <PhaseTimeline phase={order.public_phase} />\n )}\n\n <Card title={t(\"order.items\")}>\n <OrderLines order={order} locale={locale} />\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <OrderTotals order={order} locale={locale} />\n </Card>\n\n {order.shipping_method || order.tracking_numbers.length > 0 ? (\n <Card title={t(\"order.shipping\")}>\n {order.shipping_method ? (\n <Line\n label={order.shipping_method.name ?? t(\"order.shipping\")}\n value={\n order.shipping_method.pickup_point_name ??\n order.shipping_method.carrier ??\n \"\"\n }\n />\n ) : null}\n <Line\n label={t(\"order.shipsTo\")}\n value={[order.shipping_address_summary.city, order.shipping_address_summary.country]\n .filter(Boolean)\n .join(\", \")}\n />\n {order.tracking_numbers.length > 0 ? (\n <Line label={t(\"order.tracking\")} value={order.tracking_numbers.join(\", \")} />\n ) : null}\n </Card>\n ) : null}\n\n <Card title={t(\"order.payment\")}>\n <Line label={t(\"order.method\")} value={order.payment.method ?? \"—\"} />\n <Line label={t(\"order.status\")} value={order.payment.status} />\n {/* The token exists only while there is something to pay, so its\n presence IS the decision to offer this. Until now the status page\n carried it and never used it, which left the customer of an unpaid\n order looking at a page that told them nothing to do about it. */}\n {order.payment.token && payHref ? (\n <a href={payHref(order.payment.token)} style={{ color: \"var(--nv-brand)\", fontWeight: 500 }}>\n {t(\"payment.finish\")}\n </a>\n ) : null}\n {order.payment.invoice_available && order.payment.invoice_url ? (\n <a href={order.payment.invoice_url} style={{ color: \"var(--nv-brand)\" }}>\n {t(\"order.downloadInvoice\")}\n </a>\n ) : null}\n </Card>\n\n {order.actions.can_contact_support && onContactSupport ? (\n <button\n type=\"button\"\n onClick={onContactSupport}\n style={{\n alignSelf: \"flex-start\",\n font: \"inherit\",\n fontWeight: 500,\n cursor: \"pointer\",\n padding: \"0.65rem 1.3rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"order.contactSupport\")}\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction Card({ title, children }: { title: string; children: React.ReactNode }): React.ReactElement {\n return (\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.85rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n <h2 style={{ margin: 0, fontSize: \"1rem\", fontWeight: 600 }}>{title}</h2>\n {children}\n </section>\n );\n}\n\nfunction Line({ label, value }: { label: string; value: string }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{label}</span>\n <span style={{ textAlign: \"right\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * TransferInstructions — where to send the money for a bank-transfer order.\n *\n * Nothing in the kit rendered this until now, which meant a shopper who chose\n * \"bank transfer\" placed the order and was told nothing about where to pay.\n * The backend has always returned the account, the variable symbol, the amount\n * and a ready-made QR image; it just had no home.\n *\n * There is deliberately NO button here. For a transfer these details ARE the\n * action — the customer leaves for their banking app. A button would either lie\n * about what it does or do nothing.\n */\n\nimport * as React from \"react\";\nimport type { PaymentInstructions } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\n\nexport interface TransferInstructionsProps {\n instructions: PaymentInstructions;\n locale?: string;\n}\n\nexport function TransferInstructions({\n instructions: i,\n locale,\n}: TransferInstructionsProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const account = i.iban || i.account_number;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"1.25rem\",\n alignItems: \"flex-start\",\n padding: \"1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n }}\n >\n <dl style={{ flex: \"1 1 15rem\", margin: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.7rem\" }}>\n {account ? <CopyRow label={t(\"payment.account\")} value={account} /> : null}\n {i.beneficiary_name ? (\n <Row label={t(\"payment.beneficiary\")} value={i.beneficiary_name} />\n ) : null}\n {/* The variable symbol is what the merchant's bank reconciliation\n matches on. A transfer without it lands as an unidentified credit,\n so it gets the same weight as the account number. */}\n <CopyRow label={t(\"payment.variableSymbol\")} value={i.variable_symbol} />\n <Row\n label={t(\"payment.amount\")}\n value={formatCents(i.amount_cents, i.currency, loc)}\n strong\n />\n </dl>\n\n {i.qr_svg_data_uri ? (\n <figure style={{ margin: 0, textAlign: \"center\" }}>\n <img\n src={i.qr_svg_data_uri}\n alt={t(\"payment.qrAlt\")}\n width={148}\n height={148}\n style={{ display: \"block\", borderRadius: \"var(--nv-radius)\" }}\n />\n <figcaption style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\", marginTop: \"0.4rem\" }}>\n {t(\"payment.qrCaption\")}\n </figcaption>\n </figure>\n ) : null}\n\n {i.instructions ? (\n <p style={{ flexBasis: \"100%\", margin: 0, fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {i.instructions}\n </p>\n ) : null}\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n}): React.ReactElement {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.1rem\" }}>\n <dt style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\" }}>{label}</dt>\n <dd\n style={{\n margin: 0,\n fontWeight: strong ? 600 : 500,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {value}\n </dd>\n </div>\n );\n}\n\n/** A row whose value can be copied — these get retyped into a banking app, and\n * a mistyped account number or variable symbol is a payment that goes missing. */\nfunction CopyRow({ label, value }: { label: string; value: string }): React.ReactElement {\n const t = useT();\n const [copied, setCopied] = React.useState(false);\n\n React.useEffect(() => {\n if (!copied) return;\n const id = setTimeout(() => setCopied(false), 1800);\n return () => clearTimeout(id);\n }, [copied]);\n\n async function copy() {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n } catch {\n // Clipboard blocked (insecure context, permissions) — the value is on\n // screen either way, so this stays silent rather than alarming.\n }\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.1rem\" }}>\n <dt style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\" }}>{label}</dt>\n <dd style={{ margin: 0, display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n <button\n type=\"button\"\n onClick={() => void copy()}\n style={{\n font: \"inherit\",\n fontSize: \"0.75rem\",\n cursor: \"pointer\",\n padding: \"0.15rem 0.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-muted)\",\n }}\n >\n {copied ? t(\"payment.copied\") : t(\"payment.copy\")}\n </button>\n </dd>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * PaymentPage — the merchant's own payment page for a placed order.\n *\n * A whole page, not a widget, because of who reaches it: somebody who clicked\n * \"finish your payment\" in an order e-mail, possibly days later, on a phone,\n * with none of the shop's context around them. It has to answer \"what do I owe\n * and what do I do now\" on its own.\n *\n * <PaymentPage token={order.payment.token} statusHref={`/order/${t}`} />\n *\n * It renders exactly one of four situations, and the difference between them is\n * the entire job:\n *\n * 1. THERE IS SOMETHING TO PAY — the picker plus one button named after what\n * it does. The surcharge sits on the row and the amount due moves when the\n * method changes, so nobody picks cash-on-delivery and watches the total\n * grow afterwards.\n * 2. BANK TRANSFER — account, variable symbol, amount, QR. No\n * button; the details are the action.\n * 3. ALREADY PAID — a receipt, NOT an error. Arriving at a paid\n * link is the normal end of the happy path (and of every gateway return).\n * 4. LOCKED — one of four reasons, each its own sentence.\n * `blocked_reason` carries four values precisely so the page can say four\n * different things; collapsing them into \"cannot pay\" sends the customer\n * to support.\n *\n * `token === null` renders nothing at all. The token is minted only while there\n * is something to pay, so its absence is the server saying \"no button here\" —\n * a disabled button would be a worse answer.\n *\n * **Returning from a gateway.** The page can be the `return_url`. Before it\n * sends the browser to a gateway it remembers that in `sessionStorage`, so on\n * the way back it knows to show \"verifying your payment\" and poll instead of\n * offering to pay again — the callback often lands a second or two after the\n * customer does, and a payable-looking page at that moment invites a double\n * payment. Needs no cooperation from the route.\n */\n\nimport * as React from \"react\";\nimport type { PaymentBlockedReason, PaymentState } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { Button } from \"../checkout/ui\";\nimport { useT, type MessageKey } from \"../i18n\";\nimport { usePayment } from \"../order/use-payment\";\nimport { PaymentMethodPicker } from \"./method-picker\";\nimport { TransferInstructions } from \"./transfer-instructions\";\n\nexport interface PaymentPageProps {\n /** The payment page's own token — the status page hands it over as\n * `order.payment.token`. `null` renders nothing. */\n token: string | null;\n /** Pre-fetched state (SSR / loader) — skips the first client fetch. */\n payment?: PaymentState | null;\n /** Where the gateway returns the customer after paying. Defaults to the\n * current URL, which makes this page its own return route. */\n returnUrl?: string;\n cancelUrl?: string;\n /** Link to the full order status page, offered once there is nothing to pay. */\n statusHref?: string;\n locale?: string;\n /** Called once the payment reads as settled — e.g. to refresh an order view. */\n onPaid?(payment: PaymentState): void;\n}\n\n/** How long a remembered gateway hand-off stays meaningful. Past this the\n * customer is opening the link fresh, not coming back from a payment. */\nconst HANDOFF_TTL_MS = 30 * 60 * 1000;\nconst POLL_MS = 2000;\nconst POLL_ATTEMPTS = 6;\n\nconst BLOCKED_MESSAGE: Record<PaymentBlockedReason, MessageKey> = {\n order_cancelled: \"payment.blocked.orderCancelled\",\n already_paid: \"payment.blocked.alreadyPaid\",\n authorization_held: \"payment.blocked.authorizationHeld\",\n document_issued: \"payment.blocked.documentIssued\",\n};\n\nfunction handoffKey(token: string): string {\n return `nv_payment_handoff_${token}`;\n}\n\nfunction rememberHandoff(token: string): void {\n try {\n sessionStorage.setItem(handoffKey(token), String(Date.now()));\n } catch {\n // Private mode / storage disabled — we lose the \"verifying\" nicety, not\n // correctness. The page still shows the truth on the next load.\n }\n}\n\nfunction consumeHandoff(token: string): boolean {\n try {\n const raw = sessionStorage.getItem(handoffKey(token));\n if (!raw) return false;\n const fresh = Date.now() - Number(raw) < HANDOFF_TTL_MS;\n if (!fresh) sessionStorage.removeItem(handoffKey(token));\n return fresh;\n } catch {\n return false;\n }\n}\n\nfunction forgetHandoff(token: string): void {\n try {\n sessionStorage.removeItem(handoffKey(token));\n } catch {\n /* see rememberHandoff */\n }\n}\n\nexport function PaymentPage({\n token,\n payment: initial,\n returnUrl,\n cancelUrl,\n statusHref,\n locale,\n onPaid,\n}: PaymentPageProps): React.ReactElement | null {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { payment, methods, loading, busy, error, reload, selectMethod, startPayment } =\n usePayment(token, initial);\n\n // \"Came back from a gateway\" — read once on mount, before anything can clear it.\n const [verifying, setVerifying] = React.useState(false);\n React.useEffect(() => {\n if (token) setVerifying(consumeHandoff(token));\n }, [token]);\n\n const settled = payment != null && !payment.can_pay && payment.blocked_reason === \"already_paid\";\n\n // Poll while we are waiting for a gateway callback that is already in flight.\n React.useEffect(() => {\n if (!verifying || !token || settled) return;\n let attempts = 0;\n const id = setInterval(() => {\n attempts += 1;\n if (attempts > POLL_ATTEMPTS) {\n // Give up quietly and show the real state. The money may genuinely not\n // have moved (the customer may have abandoned the gateway page), and\n // pretending otherwise is worse than an honest \"still unpaid\".\n setVerifying(false);\n forgetHandoff(token);\n clearInterval(id);\n return;\n }\n void reload();\n }, POLL_MS);\n return () => clearInterval(id);\n }, [verifying, token, settled, reload]);\n\n React.useEffect(() => {\n if (!settled || !token || !payment) return;\n setVerifying(false);\n forgetHandoff(token);\n onPaid?.(payment);\n }, [settled, token, payment, onPaid]);\n\n // No token = the server says there is nothing to pay here. Render nothing\n // rather than a page that leads nowhere.\n if (!token) return null;\n\n if (payment == null) {\n return (\n <Shell>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {loading ? t(\"payment.loading\") : t(\"payment.loadError\")}\n </p>\n </Shell>\n );\n }\n\n const money = (cents: number) => formatCents(cents, payment.currency, loc);\n\n // ── 3. already paid — a receipt ──────────────────────────────────────\n if (settled) {\n return (\n <Shell title={t(\"payment.paidTitle\")}>\n <p style={{ margin: 0 }}>\n {t(\"payment.paidBody\", { order: payment.order_name ?? payment.order_number })}\n </p>\n <Amount label={t(\"payment.paidAmount\")} value={money(payment.total_cents)} />\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n }\n\n // ── 4. locked for one of four reasons ────────────────────────────────\n if (payment.blocked_reason) {\n return (\n <Shell title={t(\"payment.blockedTitle\")}>\n <p style={{ margin: 0 }}>{t(BLOCKED_MESSAGE[payment.blocked_reason])}</p>\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n }\n\n // ── returning from a gateway, callback not landed yet ────────────────\n if (verifying) {\n return (\n <Shell title={t(\"payment.verifyingTitle\")}>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"payment.verifyingBody\")}</p>\n </Shell>\n );\n }\n\n const isBank = payment.category === \"bank\";\n const isGateway = payment.category === \"gateway\";\n\n async function pay() {\n if (!token) return;\n // Remembered BEFORE the redirect: once the browser leaves, nothing here runs.\n rememberHandoff(token);\n const url = await startPayment({ returnUrl, cancelUrl });\n if (url) {\n window.location.assign(url);\n return;\n }\n // `startPayment` returns null both on failure and when the connector needs\n // no redirect. `error` is what tells them apart — on failure the hand-off\n // never happened, so don't leave a stale marker behind.\n forgetHandoff(token);\n await reload();\n }\n\n // ── 1 + 2. there is something to pay ─────────────────────────────────\n return (\n <Shell title={t(\"payment.title\", { order: payment.order_name ?? payment.order_number })}>\n <Amount label={t(\"payment.amountDue\")} value={money(payment.amount_due_cents)} />\n\n {methods.length > 0 ? (\n <PaymentMethodPicker\n methods={methods}\n value={payment.method}\n onSelect={(method) => void selectMethod(method)}\n currency={payment.currency}\n locale={loc}\n disabled={busy}\n label={t(\"payment.methodLabel\")}\n />\n ) : null}\n\n {isBank && payment.instructions ? (\n <TransferInstructions instructions={payment.instructions} locale={loc} />\n ) : null}\n\n {!isBank ? (\n <div>\n <Button onClick={() => void pay()} busy={busy}>\n {t(\"payment.payNow\")}\n </Button>\n {isGateway ? (\n <p style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\", marginTop: \"0.6rem\" }}>\n {t(\"checkout.gatewayRedirectNote\")}\n </p>\n ) : null}\n </div>\n ) : null}\n\n {error ? (\n <p role=\"alert\" style={{ margin: 0, color: \"var(--nv-danger, #b3261e)\" }}>\n {t(\"payment.actionError\")}\n </p>\n ) : null}\n\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n}\n\nfunction Shell({\n title,\n children,\n}: {\n title?: string;\n children: React.ReactNode;\n}): React.ReactElement {\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\", maxWidth: \"34rem\" }}>\n {title ? <h1 style={{ margin: 0, fontSize: \"1.25rem\", fontWeight: 600 }}>{title}</h1> : null}\n {children}\n </section>\n );\n}\n\nfunction Amount({ label, value }: { label: string; value: string }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"baseline\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{label}</span>\n <strong style={{ fontSize: \"1.35rem\", fontVariantNumeric: \"tabular-nums\" }}>{value}</strong>\n </div>\n );\n}\n\nfunction Link({ href, children }: { href: string; children: React.ReactNode }): React.ReactElement {\n return (\n <a href={href} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {children}\n </a>\n );\n}\n","\"use client\";\n\n/**\n * AccountProvider + useAccount — shared logged-in-customer state. Resolves the\n * session on mount (account.me); LoginForm / AccountDashboard / OrderHistory all\n * read the same customer. Mount inside <NeviosProvider> (it needs the client).\n */\n\nimport * as React from \"react\";\nimport type { Customer, MagicLinkResult } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface AccountState {\n customer: Customer | null;\n signedIn: boolean;\n /** True until the initial session check resolves. */\n loading: boolean;\n error: boolean;\n requestMagicLink(email: string): Promise<MagicLinkResult>;\n /** Exchange a magic token for a session (sets `customer`). */\n verify(token: string): Promise<Customer>;\n logout(): Promise<void>;\n refresh(): Promise<void>;\n}\n\nconst AccountContext = React.createContext<AccountState | null>(null);\n\nexport function AccountProvider({ children }: { children: React.ReactNode }): React.ReactElement {\n const client = useStorefront();\n const [customer, setCustomer] = React.useState<Customer | null>(null);\n const [loading, setLoading] = React.useState(true);\n const [error, setError] = React.useState(false);\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n setError(false);\n try {\n setCustomer(await client.account.me());\n } catch {\n setError(true);\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const value = React.useMemo<AccountState>(\n () => ({\n customer,\n signedIn: customer != null,\n loading,\n error,\n requestMagicLink: (email) => client.account.requestMagicLink(email),\n verify: async (token) => {\n const c = await client.account.verify(token);\n setCustomer(c);\n return c;\n },\n logout: async () => {\n await client.account.logout();\n setCustomer(null);\n },\n refresh,\n }),\n [customer, loading, error, client, refresh],\n );\n\n return <AccountContext.Provider value={value}>{children}</AccountContext.Provider>;\n}\n\nexport function useAccount(): AccountState {\n const ctx = React.useContext(AccountContext);\n if (!ctx) {\n throw new Error(\"useAccount must be used inside <AccountProvider>.\");\n }\n return ctx;\n}\n\nexport type VerifyStatus = \"idle\" | \"verifying\" | \"success\" | \"error\";\n\n/** Drive the magic-link callback route: pass the token from the URL, get back a\n * status to render (and redirect on \"success\"). */\nexport function useMagicLinkVerify(token: string | null): { status: VerifyStatus } {\n const { verify } = useAccount();\n const [status, setStatus] = React.useState<VerifyStatus>(\"idle\");\n const done = React.useRef(false);\n\n React.useEffect(() => {\n if (!token || done.current) return;\n done.current = true;\n setStatus(\"verifying\");\n verify(token)\n .then(() => setStatus(\"success\"))\n .catch(() => setStatus(\"error\"));\n }, [token, verify]);\n\n return { status };\n}\n","\"use client\";\n\n/**\n * LoginForm — passwordless sign-in. Enter an email → we email a one-time link →\n * \"check your email\". For test keys the API returns the link, which we surface\n * as a dev shortcut so you can sign in without a real inbox.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { useAccount } from \"./account-context\";\n\nexport interface LoginFormProps {\n /** Route that handles the magic link (default \"/account/verify\"). The dev\n * shortcut links here as `${verifyPath}?token=…`. */\n verifyPath?: string;\n onSent?: (email: string) => void;\n}\n\nexport function LoginForm({ verifyPath = \"/account/verify\", onSent }: LoginFormProps): React.ReactElement {\n const t = useT();\n const { requestMagicLink } = useAccount();\n const [email, setEmail] = React.useState(\"\");\n const [busy, setBusy] = React.useState(false);\n const [sent, setSent] = React.useState(false);\n const [error, setError] = React.useState(false);\n const [devLink, setDevLink] = React.useState<string | null>(null);\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n setBusy(true);\n setError(false);\n try {\n const r = await requestMagicLink(email);\n setSent(true);\n if (r.devToken) setDevLink(`${verifyPath}?token=${encodeURIComponent(r.devToken)}`);\n onSent?.(email);\n } catch {\n setError(true);\n } finally {\n setBusy(false);\n }\n }\n\n if (sent) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\", maxWidth: \"24rem\" }}>\n <p style={{ margin: 0, color: \"var(--nv-fg)\" }}>{t(\"account.checkEmail\")}</p>\n {devLink ? (\n <a href={devLink} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {t(\"account.openDevLink\")}\n </a>\n ) : null}\n </div>\n );\n }\n\n return (\n <form\n onSubmit={submit}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\", maxWidth: \"24rem\", fontFamily: \"var(--nv-font)\" }}\n >\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"account.signInBlurb\")}</p>\n <label style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\", fontSize: \"0.875rem\" }}>\n <span>{t(\"account.email\")}</span>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n autoComplete=\"email\"\n style={{\n font: \"inherit\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n />\n </label>\n {error ? <p role=\"alert\">{t(\"account.signInError\")}</p> : null}\n <button\n type=\"submit\"\n disabled={busy}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: busy ? \"default\" : \"pointer\",\n padding: \"0.65rem 1.3rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: busy ? 0.6 : 1,\n }}\n >\n {busy ? t(\"common.loadingShort\") : t(\"account.sendLink\")}\n </button>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * AccountDashboard — the signed-in header: greeting + sign-out. Compose\n * OrderHistory / AddressBook (or your own) beneath it. Renders nothing while the\n * session is still resolving; render <LoginForm> yourself when not signed in.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { useAccount } from \"./account-context\";\n\nexport interface AccountDashboardProps {\n children?: React.ReactNode;\n}\n\nexport function AccountDashboard({ children }: AccountDashboardProps): React.ReactElement | null {\n const t = useT();\n const { customer, logout } = useAccount();\n if (customer == null) return null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\", fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{t(\"account.greeting\", { email: customer.email })}</span>\n <button\n type=\"button\"\n onClick={() => void logout()}\n style={{\n font: \"inherit\",\n cursor: \"pointer\",\n padding: \"0.45rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"account.signOut\")}\n </button>\n </header>\n {children}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderHistory — the signed-in customer's past orders, each linking to its\n * public status page. Fetches on mount once signed in.\n */\n\nimport * as React from \"react\";\nimport type { AccountOrder, ReorderResult } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\nexport interface OrderHistoryProps {\n /** Map an order's status token → its status-page URL (default `/order/{token}`). */\n statusHref?: (statusToken: string) => string;\n /** Where to send the shopper after a successful reorder (default `/cart`).\n * Ignored when `onReorder` is provided. */\n cartHref?: string;\n /** Called after a reorder succeeds — override the default navigation. */\n onReorder?: (result: ReorderResult) => void;\n locale?: string;\n}\n\nexport function OrderHistory({\n statusHref = (token) => `/order/${token}`,\n cartHref = \"/cart\",\n onReorder,\n locale,\n}: OrderHistoryProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { signedIn } = useAccount();\n const client = useStorefront();\n const [orders, setOrders] = React.useState<AccountOrder[] | null>(null);\n const [error, setError] = React.useState(false);\n const [nextCursor, setNextCursor] = React.useState<string | null>(null);\n const [pageLoading, setPageLoading] = React.useState(false);\n const [reload, setReload] = React.useState(0);\n const [reordering, setReordering] = React.useState<string | null>(null);\n const [notice, setNotice] = React.useState<{ token: string; text: string; error?: boolean } | null>(null);\n\n React.useEffect(() => {\n let live = true;\n if (!signedIn) {\n setOrders([]);\n return;\n }\n setError(false);\n setOrders(null);\n client.account.ordersPage().then((page) => {\n if (live) { setOrders(page.orders); setNextCursor(page.nextCursor); }\n }).catch(() => { if (live) setError(true); });\n return () => {\n live = false;\n };\n }, [signedIn, client, reload]);\n\n async function loadMore() {\n if (!nextCursor || pageLoading) return;\n setPageLoading(true);\n setError(false);\n try {\n const page = await client.account.ordersPage({ beforeId: nextCursor });\n setOrders((previous) => [...(previous ?? []), ...page.orders]);\n setNextCursor(page.nextCursor);\n } catch { setError(true); }\n finally { setPageLoading(false); }\n }\n\n async function reorder(statusToken: string) {\n setReordering(statusToken);\n setNotice(null);\n try {\n const result = await client.account.reorder(statusToken);\n if (onReorder) {\n onReorder(result);\n } else {\n const text =\n result.skipped > 0\n ? t(\"account.reorderPartial\", { added: result.added, skipped: result.skipped })\n : t(\"account.reorderDone\", { added: result.added });\n setNotice({ token: statusToken, text });\n if (typeof window !== \"undefined\") window.location.assign(cartHref);\n }\n } catch {\n setNotice({ token: statusToken, text: t(\"account.reorderError\"), error: true });\n } finally {\n setReordering(null);\n }\n }\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.orders\")}</h2>\n {error ? <div role=\"alert\"><p>{t(\"account.loadError\")}</p>\n <button type=\"button\" onClick={() => orders ? void loadMore() : setReload((x) => x + 1)}>{t(\"account.retry\")}</button>\n </div> : null}\n {orders == null ? (\n error ? null : <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"common.loadingShort\")}</p>\n ) : orders.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"account.noOrders\")}</p>\n ) : (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n {orders.map((o) => (\n <li\n key={o.status_token}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n padding: \"0.85rem 1rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n }}\n >\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <strong style={{ fontWeight: 600 }}>{o.number}</strong>\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {formatCents(o.total_cents, o.currency, loc)}\n {o.placed_at ? ` · ${new Date(o.placed_at).toLocaleDateString(loc)}` : \"\"}\n </span>\n </span>\n <span style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\", whiteSpace: \"nowrap\" }}>\n <button\n type=\"button\"\n onClick={() => void reorder(o.status_token)}\n disabled={reordering === o.status_token}\n style={{\n font: \"inherit\",\n fontSize: \"0.875rem\",\n cursor: reordering === o.status_token ? \"default\" : \"pointer\",\n background: \"none\",\n border: \"none\",\n color: \"var(--nv-brand)\",\n padding: 0,\n opacity: reordering === o.status_token ? 0.6 : 1,\n }}\n >\n {reordering === o.status_token ? \"…\" : t(\"account.reorder\")}\n </button>\n <a href={statusHref(o.status_token)} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {t(\"account.viewOrder\")}\n </a>\n </span>\n </div>\n {notice && notice.token === o.status_token ? (\n <p style={{ margin: 0, fontSize: \"0.8125rem\", color: notice.error ? \"#b3261e\" : \"var(--nv-muted)\" }}>\n {notice.text}\n </p>\n ) : null}\n </li>\n ))}\n </ul>\n )}\n {nextCursor ? <button type=\"button\" disabled={pageLoading} onClick={() => void loadMore()}>{pageLoading ? t(\"common.loadingShort\") : t(\"account.loadMore\")}</button> : null}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * AddressForm — a controlled create/edit form for a customer address. Reuses the\n * checkout field/button primitives so it matches the rest of the kit. Emits an\n * `AddressInput` via `onSubmit`; the parent (AddressBook) owns the SDK call.\n */\n\nimport * as React from \"react\";\nimport type { AccountAddress, AddressInput } from \"@nevios/storefront-js\";\n\nimport { Button, Field, FieldRow } from \"../checkout/ui\";\nimport { useT } from \"../i18n\";\n\nexport interface AddressFormProps {\n /** Prefill for edit mode. */\n initial?: AccountAddress;\n onSubmit: (data: AddressInput) => void | Promise<void>;\n onCancel?: () => void;\n busy?: boolean;\n}\n\nexport function AddressForm({ initial, onSubmit, onCancel, busy }: AddressFormProps): React.ReactElement {\n const t = useT();\n const [form, setForm] = React.useState<AddressInput>(() => ({\n first_name: initial?.first_name ?? \"\",\n last_name: initial?.last_name ?? \"\",\n company: initial?.company ?? \"\",\n address1: initial?.address1 ?? \"\",\n address2: initial?.address2 ?? \"\",\n city: initial?.city ?? \"\",\n zip: initial?.zip ?? \"\",\n country_code: initial?.country_code ?? \"\",\n phone: initial?.phone ?? \"\",\n is_default: Boolean(initial?.is_default),\n }));\n\n const set = (k: keyof AddressInput) => (e: React.ChangeEvent<HTMLInputElement>) =>\n setForm((f) => ({ ...f, [k]: e.target.value }));\n\n return (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n void onSubmit(form);\n }}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}\n >\n <FieldRow>\n <Field label={t(\"account.firstName\")} value={form.first_name ?? \"\"} onChange={set(\"first_name\")} />\n <Field label={t(\"account.lastName\")} value={form.last_name ?? \"\"} onChange={set(\"last_name\")} />\n </FieldRow>\n <Field label={t(\"account.company\")} value={form.company ?? \"\"} onChange={set(\"company\")} />\n <Field label={t(\"account.address\")} required value={form.address1 ?? \"\"} onChange={set(\"address1\")} />\n <Field label={t(\"account.addressLine2\")} value={form.address2 ?? \"\"} onChange={set(\"address2\")} />\n <FieldRow>\n <Field label={t(\"account.city\")} required value={form.city ?? \"\"} onChange={set(\"city\")} />\n <Field label={t(\"account.postalCode\")} required value={form.zip ?? \"\"} onChange={set(\"zip\")} />\n <Field label={t(\"account.country\")} required value={form.country_code ?? \"\"} onChange={set(\"country_code\")} />\n </FieldRow>\n <Field label={t(\"account.phone\")} value={form.phone ?? \"\"} onChange={set(\"phone\")} />\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", fontSize: \"0.875rem\" }}>\n <input\n type=\"checkbox\"\n checked={Boolean(form.is_default)}\n onChange={(e) => setForm((f) => ({ ...f, is_default: e.target.checked }))}\n />\n {t(\"account.setDefault\")}\n </label>\n <div style={{ display: \"flex\", gap: \"0.5rem\" }}>\n <Button type=\"submit\" busy={busy}>\n {t(\"account.save\")}\n </Button>\n {onCancel ? (\n <button\n type=\"button\"\n onClick={onCancel}\n style={{\n font: \"inherit\",\n cursor: \"pointer\",\n padding: \"0.75rem 1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"account.cancel\")}\n </button>\n ) : null}\n </div>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * AddressBook — the signed-in customer's saved addresses with full management:\n * add, edit, delete, and set-default. Each mutation calls the SDK then refetches\n * the list. The form is the shared <AddressForm>.\n */\n\nimport * as React from \"react\";\nimport type { AccountAddress, AddressInput } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\nimport { AddressForm } from \"./address-form\";\n\nfunction formatAddress(a: AccountAddress): string {\n const name = [a.first_name, a.last_name].filter(Boolean).join(\" \");\n const line = [a.address1, a.address2].filter(Boolean).join(\", \");\n const place = [a.zip, a.city, a.country_code].filter(Boolean).join(\" \");\n return [name, line, place].filter(Boolean).join(\" · \");\n}\n\ntype Mode = { kind: \"list\" } | { kind: \"add\" } | { kind: \"edit\"; id: string };\n\nconst rowStyle: React.CSSProperties = {\n padding: \"0.85rem 1rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n color: \"var(--nv-fg)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n};\n\nconst linkBtn: React.CSSProperties = {\n font: \"inherit\",\n fontSize: \"0.8125rem\",\n cursor: \"pointer\",\n background: \"none\",\n border: \"none\",\n color: \"var(--nv-brand)\",\n padding: 0,\n};\n\nexport function AddressBook(): React.ReactElement {\n const t = useT();\n const { signedIn } = useAccount();\n const client = useStorefront();\n const [addresses, setAddresses] = React.useState<AccountAddress[] | null>(null);\n const [mode, setMode] = React.useState<Mode>({ kind: \"list\" });\n const [busy, setBusy] = React.useState(false);\n\n const load = React.useCallback(() => {\n if (!signedIn) {\n setAddresses([]);\n return;\n }\n client.account\n .addresses()\n .then(setAddresses)\n .catch(() => setAddresses([]));\n }, [signedIn, client]);\n\n React.useEffect(() => {\n load();\n }, [load]);\n\n async function run(fn: () => Promise<unknown>) {\n setBusy(true);\n try {\n await fn();\n setMode({ kind: \"list\" });\n load();\n } finally {\n setBusy(false);\n }\n }\n\n const create = (data: AddressInput) => run(() => client.account.addAddress(data));\n const update = (id: string, data: AddressInput) => run(() => client.account.updateAddress(id, data));\n const remove = (id: string) => {\n // eslint-disable-next-line no-alert\n if (typeof window !== \"undefined\" && !window.confirm(t(\"account.confirmDelete\"))) return;\n void run(() => client.account.deleteAddress(id));\n };\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.addresses\")}</h2>\n {mode.kind === \"list\" ? (\n <button type=\"button\" onClick={() => setMode({ kind: \"add\" })} style={{ ...linkBtn, fontSize: \"0.875rem\" }}>\n {t(\"account.addAddress\")}\n </button>\n ) : null}\n </div>\n\n {mode.kind === \"add\" ? (\n <AddressForm onSubmit={create} onCancel={() => setMode({ kind: \"list\" })} busy={busy} />\n ) : null}\n\n {addresses == null ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"common.loadingShort\")}</p>\n ) : addresses.length === 0 && mode.kind === \"list\" ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"account.noAddresses\")}</p>\n ) : (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n {addresses.map((a, i) => {\n const id = (a.id as string) ?? String(i);\n const isEditing = mode.kind === \"edit\" && mode.id === id;\n return (\n <li key={id} style={rowStyle}>\n {isEditing ? (\n <AddressForm\n initial={a}\n onSubmit={(data) => update(id, data)}\n onCancel={() => setMode({ kind: \"list\" })}\n busy={busy}\n />\n ) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\", alignItems: \"baseline\" }}>\n <span>{formatAddress(a)}</span>\n {a.is_default ? (\n <span style={{ fontSize: \"0.7rem\", fontWeight: 600, color: \"var(--nv-muted)\", textTransform: \"uppercase\" }}>\n {t(\"account.default\")}\n </span>\n ) : null}\n </div>\n <div style={{ display: \"flex\", gap: \"1rem\" }}>\n <button type=\"button\" onClick={() => setMode({ kind: \"edit\", id })} style={linkBtn}>\n {t(\"account.editAddress\")}\n </button>\n {!a.is_default ? (\n <button type=\"button\" onClick={() => void update(id, { is_default: true })} style={linkBtn}>\n {t(\"account.setDefault\")}\n </button>\n ) : null}\n <button type=\"button\" onClick={() => remove(id)} style={{ ...linkBtn, color: \"#b3261e\" }}>\n {t(\"account.deleteAddress\")}\n </button>\n </div>\n </>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * ProfileEditor — view + edit the signed-in customer's name, phone, and\n * marketing consent (email is identity, shown read-only). Calls\n * `account.updateProfile` and refreshes the shared account state on save.\n */\n\nimport * as React from \"react\";\nimport type { ProfileInput } from \"@nevios/storefront-js\";\n\nimport { Button, Field } from \"../checkout/ui\";\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\nexport function ProfileEditor(): React.ReactElement | null {\n const t = useT();\n const client = useStorefront();\n const { customer, refresh } = useAccount();\n const [editing, setEditing] = React.useState(false);\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState(false);\n const [form, setForm] = React.useState<ProfileInput>({});\n\n if (!customer) return null;\n\n function startEdit() {\n setForm({\n first_name: customer!.first_name ?? \"\",\n last_name: customer!.last_name ?? \"\",\n phone: customer!.phone ?? \"\",\n accepts_marketing: customer!.accepts_marketing,\n });\n setError(false);\n setEditing(true);\n }\n\n async function save() {\n setBusy(true);\n setError(false);\n try {\n await client.account.updateProfile(form);\n await refresh();\n setEditing(false);\n } catch {\n setError(true);\n } finally {\n setBusy(false);\n }\n }\n\n const name = [customer.first_name, customer.last_name].filter(Boolean).join(\" \");\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.profile\")}</h2>\n {!editing ? (\n <button\n type=\"button\"\n onClick={startEdit}\n style={{ font: \"inherit\", cursor: \"pointer\", background: \"none\", border: \"none\", color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}\n >\n {t(\"account.editProfile\")}\n </button>\n ) : null}\n </div>\n\n {!editing ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.25rem\", color: \"var(--nv-fg)\" }}>\n {name ? <span style={{ fontWeight: 500 }}>{name}</span> : null}\n <span style={{ color: \"var(--nv-muted)\", fontSize: \"0.9rem\" }}>{customer.email}</span>\n {customer.phone ? <span style={{ color: \"var(--nv-muted)\", fontSize: \"0.9rem\" }}>{customer.phone}</span> : null}\n </div>\n ) : (\n <form onSubmit={(e) => { e.preventDefault(); void save(); }} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <Field label={t(\"account.firstName\")} value={form.first_name ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, first_name: e.target.value }))} />\n <Field label={t(\"account.lastName\")} value={form.last_name ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, last_name: e.target.value }))} />\n <Field label={t(\"account.phone\")} value={form.phone ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, phone: e.target.value }))} />\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", fontSize: \"0.875rem\" }}>\n <input\n type=\"checkbox\"\n checked={Boolean(form.accepts_marketing)}\n onChange={(e) => setForm((f) => ({ ...f, accepts_marketing: e.target.checked }))}\n />\n {t(\"account.acceptsMarketing\")}\n </label>\n {error ? <p style={{ margin: 0, color: \"#b3261e\", fontSize: \"0.8125rem\" }}>{t(\"account.saveError\")}</p> : null}\n <div style={{ display: \"flex\", gap: \"0.5rem\" }}>\n <Button type=\"submit\" busy={busy}>{t(\"account.save\")}</Button>\n <button\n type=\"button\"\n onClick={() => setEditing(false)}\n style={{ font: \"inherit\", cursor: \"pointer\", padding: \"0.75rem 1.25rem\", borderRadius: \"var(--nv-radius)\", border: \"1px solid var(--nv-border)\", background: \"transparent\", color: \"var(--nv-fg)\" }}\n >\n {t(\"account.cancel\")}\n </button>\n </div>\n </form>\n )}\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { StorefrontError, type AccountSession } from \"@nevios/storefront-js\";\nimport { useStorefront } from \"../provider\";\nimport { useT } from \"../i18n\";\nimport { Button, Field } from \"../checkout/ui\";\nimport { useAccount } from \"./account-context\";\n\n/** Email verification, session revocation and explicit account-closure confirmation. */\nexport function AccountSecurity(): React.ReactElement | null {\n const client = useStorefront();\n const account = useAccount();\n const t = useT();\n const [sessions, setSessions] = React.useState<AccountSession[] | null>(null);\n const [email, setEmail] = React.useState(\"\");\n const [busy, setBusy] = React.useState(false);\n const [notice, setNotice] = React.useState<string | null>(null);\n const [confirmClose, setConfirmClose] = React.useState(false);\n const [retry, setRetry] = React.useState(0);\n\n React.useEffect(() => {\n let live = true;\n if (account.signedIn) client.account.sessions().then((s) => { if (live) setSessions(s); })\n .catch(() => { if (live) setNotice(t(\"account.loadError\")); });\n return () => { live = false; };\n }, [client, account.signedIn, retry, t]);\n\n async function act(operation: () => Promise<void>) {\n setBusy(true); setNotice(null);\n try { await operation(); }\n catch (e) { setNotice(e instanceof StorefrontError && e.status === 401\n ? t(\"account.recentLogin\") : t(\"account.loadError\")); }\n finally { setBusy(false); }\n }\n\n if (!account.signedIn) return null;\n return <section style={{ display: \"grid\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.security\")}</h2>\n {notice ? <p role=\"status\">{notice}</p> : null}\n <form style={{ display: \"flex\", gap: \"0.75rem\", flexWrap: \"wrap\", alignItems: \"end\" }}\n onSubmit={(e) => { e.preventDefault(); void act(async () => {\n await client.account.requestEmailChange(email); setNotice(t(\"account.checkEmail\"));\n }); }}>\n <Field label={t(\"account.newEmail\")} type=\"email\" required value={email} onChange={(e) => setEmail(e.target.value)} />\n <Button type=\"submit\" busy={busy}>{t(\"account.changeEmail\")}</Button>\n </form>\n <h3>{t(\"account.sessions\")}</h3>\n {sessions ? sessions.map((s) => <div key={s.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", justifyContent: \"space-between\" }}>\n <span>{s.current ? t(\"account.currentSession\") : <time dateTime={s.created_at}>{s.created_at.slice(0, 10)}</time>}</span>\n <Button busy={busy} onClick={() => void act(async () => {\n await client.account.revokeSession(s.id);\n if (s.current) await account.logout();\n else setSessions((old) => old?.filter((row) => row.id !== s.id) ?? null);\n })}>{t(\"account.revokeSession\")}</Button>\n </div>) : <Button onClick={() => setRetry((x) => x + 1)}>{t(\"account.retry\")}</Button>}\n {confirmClose ? <div>\n <p>{t(\"account.closeWarning\")}</p>\n <Button busy={busy} onClick={() => void act(async () => { await client.account.close(); await account.refresh(); })}>{t(\"account.confirmClose\")}</Button>{\" \"}\n <Button disabled={busy} onClick={() => setConfirmClose(false)}>{t(\"account.cancel\")}</Button>\n </div> : <Button disabled={busy} onClick={() => setConfirmClose(true)}>{t(\"account.closeAccount\")}</Button>}\n </section>;\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { Subscription, SubscriptionDetails } from \"@nevios/storefront-js\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\n/** Customer-only API plus reload-safe query state. Changing a saved account\n * address never silently changes a recurring contract; preview/commit explicitly. */\nexport function useCustomerSubscriptions() {\n const client = useStorefront();\n const { customer } = useAccount();\n const [dataOwner, setDataOwner] = React.useState<string | undefined>(undefined);\n const [subscriptions, setSubscriptions] = React.useState<Subscription[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n const generation = React.useRef(0);\n const owner = customer?.id;\n const api = client.account.subscriptions;\n const refresh = React.useCallback(async () => {\n const current = ++generation.current;\n setError(null);\n if (!owner) { setSubscriptions([]); setLoading(false); return; }\n setLoading(true);\n try {\n const rows = await api.list();\n if (current === generation.current) { setSubscriptions(rows); setDataOwner(owner); setError(null); }\n } catch (err) {\n if (current === generation.current) setError(err instanceof Error ? err : new Error(String(err)));\n } finally { if (current === generation.current) setLoading(false); }\n }, [owner, api]);\n React.useEffect(() => { setSubscriptions([]); void refresh(); return () => { generation.current++; }; }, [refresh]);\n return { subscriptions: dataOwner === owner ? subscriptions : [], loading, error, refresh, api };\n}\n\n/** Unified upcoming/history/items view. Async results never survive a logout or\n * switching customer/contract. Call refresh after an explicitly reviewed change. */\nexport function useCustomerSubscription(id: string | null) {\n const client = useStorefront();\n const { customer } = useAccount();\n const [dataKey, setDataKey] = React.useState(\"\");\n const [subscription, setSubscription] = React.useState<SubscriptionDetails | null>(null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n const generation = React.useRef(0);\n const owner = customer?.id;\n const api = client.account.subscriptions;\n const refresh = React.useCallback(async () => {\n const current = ++generation.current;\n setError(null);\n if (!owner || !id) { setSubscription(null); setLoading(false); return; }\n setLoading(true);\n try {\n const row = await api.management(id);\n if (current === generation.current) { setSubscription(row); setDataKey(`${owner}:${id}`); setError(null); }\n } catch (err) {\n if (current === generation.current) setError(err instanceof Error ? err : new Error(String(err)));\n } finally { if (current === generation.current) setLoading(false); }\n }, [owner, id, api]);\n React.useEffect(() => { setSubscription(null); void refresh(); return () => { generation.current++; }; }, [refresh]);\n return { subscription: dataKey === `${owner}:${id}` ? subscription : null, loading, error, refresh, api };\n}\n","\"use client\";\nimport * as React from \"react\";\nimport { useT } from \"../i18n\";\nimport { useCustomerSubscriptions } from \"./subscriptions\";\n\nexport function SubscriptionList({ href, locale }: { href(id: string): string; locale?: string }): React.ReactElement {\n const t = useT();\n const { subscriptions, loading, error } = useCustomerSubscriptions();\n return <section style={{ fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <h2 style={{ fontSize: \"1.125rem\", fontWeight: 500 }}>{t(\"subscriptions.title\")}</h2>\n {loading ? <p>{t(\"checkout.loading\")}</p> : error ? <p role=\"alert\">{error.message}</p> : subscriptions.length === 0 ? <p>{t(\"subscriptions.empty\")}</p> :\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0 }}>{subscriptions.map(sub => <li key={sub.id} style={{ borderBottom: \"1px solid var(--nv-border)\", padding: \"0.8rem 0\" }}>\n <a href={href(sub.id)} style={{ color: \"inherit\", display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\", flexWrap: \"wrap\" }}>\n <span>#{sub.id}</span><span>{t(`subscriptions.status.${sub.status}`)}</span>\n {sub.status === \"active\" && sub.next_at ? <time dateTime={sub.next_at}>{new Date(sub.next_at).toLocaleDateString(locale)}</time> : null}\n </a>\n </li>)}</ul>}\n </section>;\n}\n","\"use client\";\n\n/**\n * JSON-LD helpers. Structured data is *data*, but it's embedded in an inline\n * `<script>` in the HTML, so it must be escaped against the one thing that can\n * break out of that context: a literal `</script>` (and stray `<`, `>`, `&`).\n * `serializeJsonLd` hex-escapes those; `<JsonLd>` renders the script tag.\n */\n\nimport * as React from \"react\";\n\n/** JSON-safe + HTML-script-safe serialization for embedding in `<script>`. */\nexport function serializeJsonLd(data: unknown): string {\n return JSON.stringify(data)\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\n/** Strip HTML tags + collapse whitespace → plain text (for JSON-LD descriptions). */\nexport function stripHtml(html: string | null | undefined): string | undefined {\n if (!html) return undefined;\n const text = html.replace(/<[^>]*>/g, \" \").replace(/\\s+/g, \" \").trim();\n return text || undefined;\n}\n\n/** Absolutize a possibly-relative URL against an origin. */\nexport function absoluteUrl(url: string, base?: string): string {\n if (!url) return url;\n if (/^https?:\\/\\//i.test(url) || url.startsWith(\"data:\")) return url;\n if (!base) return url;\n return `${base.replace(/\\/+$/, \"\")}/${url.replace(/^\\/+/, \"\")}`;\n}\n\n/** Drop null/undefined keys so the emitted JSON-LD stays clean. */\nexport function compact<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== null && v !== undefined) out[k] = v;\n }\n return out as Partial<T>;\n}\n\nexport interface JsonLdProps {\n data: unknown;\n}\n\n/** Render a JSON-LD `<script>` for the given (already-shaped) data object. */\nexport function JsonLd({ data }: JsonLdProps): React.ReactElement {\n return (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(data) }}\n />\n );\n}\n","\"use client\";\n\n/**\n * ProductJsonLd — schema.org/Product structured data for rich results (price,\n * availability, brand). Drop it in the PDP <head> (or anywhere; it's a script).\n * Availability maps from the variant stock state the storefront now projects.\n *\n * <ProductJsonLd product={product} url={`https://shop.example.com/products/${product.handle}`} />\n */\n\nimport * as React from \"react\";\nimport type { AvailabilityStatus, Product } from \"@nevios/storefront-js\";\n\nimport { JsonLd, absoluteUrl, compact, stripHtml } from \"./utils\";\n\nconst SCHEMA_AVAILABILITY: Record<AvailabilityStatus, string> = {\n in_stock: \"https://schema.org/InStock\",\n preorder: \"https://schema.org/PreOrder\",\n out_of_stock: \"https://schema.org/OutOfStock\",\n};\n\nexport interface ProductJsonLdProps {\n product: Product;\n /** Absolute canonical URL of this product page. */\n url: string;\n /** Origin used to absolutize relative media URLs (defaults to `url`'s origin). */\n baseUrl?: string;\n /** Brand name (defaults to `product.vendor`). */\n brandName?: string;\n}\n\nexport function ProductJsonLd({\n product,\n url,\n baseUrl,\n brandName,\n}: ProductJsonLdProps): React.ReactElement {\n const origin = baseUrl ?? safeOrigin(url);\n const images = product.media.map((m) => absoluteUrl(m.url, origin));\n const brand = brandName ?? product.vendor;\n\n const offers = product.variants.map((v) =>\n compact({\n \"@type\": \"Offer\",\n price: (v.price.amount_cents / 100).toFixed(2),\n priceCurrency: v.price.currency,\n availability: SCHEMA_AVAILABILITY[v.availability?.status ?? \"in_stock\"],\n sku: v.sku ?? undefined,\n url,\n }),\n );\n\n const data = compact({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Product\",\n name: product.title,\n description: stripHtml(product.description_html),\n image: images.length ? images : undefined,\n sku: product.variants[0]?.sku ?? undefined,\n brand: brand ? { \"@type\": \"Brand\", name: brand } : undefined,\n offers: offers.length === 1 ? offers[0] : offers,\n });\n\n return <JsonLd data={data} />;\n}\n\nfunction safeOrigin(url: string): string | undefined {\n try {\n return new URL(url).origin;\n } catch {\n return undefined;\n }\n}\n","\"use client\";\n\n/**\n * BreadcrumbJsonLd — schema.org/BreadcrumbList for the trail Google shows under\n * a result. Pass the crumbs in order (Home → Collection → Product); each needs\n * an absolute URL.\n *\n * <BreadcrumbJsonLd items={[\n * { name: \"Home\", url: \"https://shop.example.com/\" },\n * { name: \"Shoes\", url: \"https://shop.example.com/collections/shoes\" },\n * { name: product.title, url: productUrl },\n * ]} />\n */\n\nimport * as React from \"react\";\n\nimport { JsonLd } from \"./utils\";\n\nexport interface BreadcrumbItem {\n name: string;\n url: string;\n}\n\nexport interface BreadcrumbJsonLdProps {\n items: BreadcrumbItem[];\n}\n\nexport function BreadcrumbJsonLd({ items }: BreadcrumbJsonLdProps): React.ReactElement | null {\n if (!items.length) return null;\n const data = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement: items.map((it, i) => ({\n \"@type\": \"ListItem\",\n position: i + 1,\n name: it.name,\n item: it.url,\n })),\n };\n return <JsonLd data={data} />;\n}\n","\"use client\";\n\n/**\n * OrganizationJsonLd — schema.org/Organization for the shop itself. Mount once\n * (e.g. in the root layout): one Organization per domain is the best practice.\n *\n * <OrganizationJsonLd name={shop.name} url=\"https://shop.example.com\" logo={shop.logo} />\n */\n\nimport * as React from \"react\";\n\nimport { JsonLd, compact } from \"./utils\";\n\nexport interface OrganizationJsonLdProps {\n name: string;\n url?: string;\n /** Logo URL (absolute). */\n logo?: string;\n /** Social / profile URLs. */\n sameAs?: string[];\n}\n\nexport function OrganizationJsonLd({\n name,\n url,\n logo,\n sameAs,\n}: OrganizationJsonLdProps): React.ReactElement {\n const data = compact({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n name,\n url,\n logo,\n sameAs: sameAs && sameAs.length ? sameAs : undefined,\n });\n return <JsonLd data={data} />;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/theme.tsx","../src/i18n/en.ts","../src/i18n/cs.ts","../src/i18n/context.tsx","../src/market-switcher.tsx","../src/catalog/money.tsx","../src/catalog/product-card.tsx","../src/catalog/product-gallery.tsx","../src/catalog/variant-picker.tsx","../src/catalog/back-in-stock-form.tsx","../src/catalog/stock-badge.tsx","../src/catalog/product-detail.tsx","../src/catalog/collection.tsx","../src/catalog/filters.tsx","../src/catalog/purchase-options.tsx","../src/cart/cart-context.tsx","../src/cart/add-to-cart.tsx","../src/cart/cart-line-item.tsx","../src/cart/cart-summary.tsx","../src/cart/cart-drawer.tsx","../src/checkout/checkout-context.tsx","../src/checkout/ui.tsx","../src/checkout/address-form.tsx","../src/checkout/shipping-picker.tsx","../src/payment/method-picker.tsx","../src/checkout/subscription-terms.tsx","../src/checkout/payment-section.tsx","../src/checkout/order-summary.tsx","../src/checkout/checkout-flow.tsx","../src/order/use-order-status.tsx","../src/order/use-payment.tsx","../src/order/parts.tsx","../src/order/order-confirmation.tsx","../src/order/order-status-page.tsx","../src/payment/transfer-instructions.tsx","../src/payment/payment-page.tsx","../src/account/account-context.tsx","../src/account/login-form.tsx","../src/account/account-dashboard.tsx","../src/account/order-history.tsx","../src/account/address-form.tsx","../src/account/address-book.tsx","../src/account/profile-editor.tsx","../src/account/account-security.tsx","../src/account/subscriptions.tsx","../src/account/subscription-list.tsx","../src/catalog/subscription-controls.tsx","../src/account/subscription-manager.tsx","../src/seo/utils.tsx","../src/seo/product.tsx","../src/seo/breadcrumb.tsx","../src/seo/organization.tsx","../src/catalog/subscription-mix.tsx"],"names":["React","React2","React3","jsx","jsxs","imageSrcSet","React4","React5","React6","React7","React8","React9","React10","React11","React12","React13","React14","Row","React15","Fragment","React16","React17","React18","React19","Shell","React20","React21","React22","AddressForm","React23","React24","React25","React26","StorefrontError","React27","React28","React29","React30"],"mappings":"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","file":"index.cjs","sourcesContent":["\"use client\";\n\n/**\n * NeviosProvider — puts a configured storefront client on React context so\n * every kit component + hook can reach it. Wrap your app once at the root.\n *\n * import { createStorefrontClient } from \"@nevios/storefront-js\";\n * import { NeviosProvider } from \"@nevios/storefront-kit\";\n *\n * const client = createStorefrontClient({ publishableKey, market });\n * <NeviosProvider client={client}>{children}</NeviosProvider>\n */\n\nimport * as React from \"react\";\nimport type { StorefrontClient } from \"@nevios/storefront-js\";\n\nconst StorefrontContext = React.createContext<StorefrontClient | null>(null);\n\nexport interface NeviosProviderProps {\n client: StorefrontClient;\n children: React.ReactNode;\n}\n\nexport function NeviosProvider({ client, children }: NeviosProviderProps): React.ReactElement {\n return <StorefrontContext.Provider value={client}>{children}</StorefrontContext.Provider>;\n}\n\n/** Access the storefront client from any kit component / hook. */\nexport function useStorefront(): StorefrontClient {\n const client = React.useContext(StorefrontContext);\n if (!client) {\n throw new Error(\n \"useStorefront must be used inside <NeviosProvider>. Wrap your app root with it.\",\n );\n }\n return client;\n}\n\n/** Non-throwing client access — returns null when no <NeviosProvider> is\n * mounted. For presentational components that want optional client config\n * (e.g. `imageBase` for responsive images) but must still render standalone. */\nexport function useStorefrontOptional(): StorefrontClient | null {\n return React.useContext(StorefrontContext);\n}\n","\"use client\";\n\n/**\n * Theme contract — the customization surface (layer 1) merchants edit in\n * `nevios.config.ts`. Tokens are injected as CSS custom properties on a\n * wrapper, so every kit component reads `var(--nv-…)` and re-skins with zero\n * code. Mirrors the internal `/design` token model, pointed outward.\n *\n * <ThemeProvider theme={{ brand: \"#b1442e\", radius: \"12px\" }}>\n * {storefront}\n * </ThemeProvider>\n */\n\nimport * as React from \"react\";\n\n/** The full token set. All optional — unset tokens fall back to defaults. */\nexport interface StorefrontTheme {\n /** Primary brand / CTA color. */\n brand?: string;\n brandForeground?: string;\n background?: string;\n foreground?: string;\n muted?: string;\n border?: string;\n /** Corner radius for cards/inputs/buttons. */\n radius?: string;\n /** Base font family. */\n fontFamily?: string;\n}\n\nconst DEFAULTS: Required<StorefrontTheme> = {\n brand: \"#111111\",\n brandForeground: \"#ffffff\",\n background: \"#ffffff\",\n foreground: \"#111111\",\n muted: \"#6b7280\",\n border: \"rgba(0,0,0,0.1)\",\n radius: \"12px\",\n fontFamily: \"system-ui, sans-serif\",\n};\n\nconst TOKEN_VAR: Record<keyof StorefrontTheme, string> = {\n brand: \"--nv-brand\",\n brandForeground: \"--nv-brand-foreground\",\n background: \"--nv-bg\",\n foreground: \"--nv-fg\",\n muted: \"--nv-muted\",\n border: \"--nv-border\",\n radius: \"--nv-radius\",\n fontFamily: \"--nv-font\",\n};\n\n/** Resolve a theme into the CSS-var style object the provider applies. */\nexport function themeToCssVars(theme: StorefrontTheme = {}): React.CSSProperties {\n const merged = { ...DEFAULTS, ...theme };\n const vars: Record<string, string> = {};\n for (const key of Object.keys(TOKEN_VAR) as (keyof StorefrontTheme)[]) {\n vars[TOKEN_VAR[key]] = merged[key];\n }\n return vars as React.CSSProperties;\n}\n\nexport interface ThemeProviderProps {\n theme?: StorefrontTheme;\n children: React.ReactNode;\n /** Wrapper element (default `div`). */\n as?: keyof React.JSX.IntrinsicElements;\n}\n\nexport function ThemeProvider({\n theme,\n children,\n as: Tag = \"div\",\n}: ThemeProviderProps): React.ReactElement {\n const style = themeToCssVars(theme);\n return React.createElement(\n Tag,\n { \"data-nevios-theme\": \"\", style },\n children,\n );\n}\n","/**\n * English message bundle — the canonical key set. Every other locale bundle is\n * typed as `Messages` (a `Record<MessageKey, string>`), so the compiler forces\n * it to define exactly these keys: a missing or stray key is a type error.\n *\n * Keys are dot-namespaced by surface (`cart.*`, `checkout.*`, `order.*`).\n * `{name}` placeholders are interpolated by `t(key, { name })`. Plural keys end\n * in a CLDR category (`.one` / `.few` / `.many` / `.other`); call them via the\n * base key with a `count` var — `t(\"shipping.days\", { count })` — and the\n * provider picks the category for the active locale via `Intl.PluralRules`.\n */\n\nexport const en = {\n \"subscriptions.purchaseOption\": \"Purchase option\",\n \"subscriptions.empty\": \"You have no subscriptions yet.\",\n \"subscriptions.status.active\": \"Active\",\n \"subscriptions.status.paused\": \"Paused\",\n \"subscriptions.status.pending\": \"Awaiting payment\",\n \"subscriptions.status.cancelled\": \"Cancelled\",\n \"subscriptions.title\": \"Subscription\",\n \"subscriptions.consent\": \"I agree to the recurring price, delivery schedule and terms shown above.\",\n \"subscriptions.eachDelivery\": \"For each delivery\",\n \"subscriptions.once\": \"One-time purchase\",\n\n // common\n \"common.free\": \"Free\",\n \"common.close\": \"Close\",\n \"common.loadingShort\": \"…\",\n\n // catalog\n \"catalog.addToCart\": \"Add to cart\",\n \"catalog.noProducts\": \"No products yet.\",\n \"catalog.soldOut\": \"Sold out\",\n \"catalog.addError\": \"Couldn't add to cart. Please try again.\",\n \"catalog.inStock\": \"In stock\",\n \"catalog.preorder\": \"Pre-order\",\n // catalog — filters + sort\n \"catalog.filters.sort\": \"Sort by\",\n \"catalog.filters.sortNewest\": \"Newest\",\n \"catalog.filters.sortOldest\": \"Oldest\",\n \"catalog.filters.sortTitleAsc\": \"Name: A–Z\",\n \"catalog.filters.sortTitleDesc\": \"Name: Z–A\",\n \"catalog.filters.sortPriceAsc\": \"Price: low to high\",\n \"catalog.filters.sortPriceDesc\": \"Price: high to low\",\n \"catalog.filters.priceRange\": \"Price\",\n \"catalog.filters.min\": \"Min\",\n \"catalog.filters.max\": \"Max\",\n \"catalog.filters.tags\": \"Tags\",\n \"catalog.filters.inStockOnly\": \"In stock only\",\n \"catalog.filters.clear\": \"Clear filters\",\n // catalog — back in stock\n \"catalog.backInStock.prompt\": \"Out of stock — we'll email you when it's back.\",\n \"catalog.backInStock.email\": \"Email\",\n \"catalog.backInStock.notify\": \"Notify me\",\n \"catalog.backInStock.success\": \"Done — we'll email you when it's back in stock.\",\n \"catalog.backInStock.error\": \"Couldn't subscribe. Please try again.\",\n\n // cart\n \"cart.title\": \"Cart\",\n \"cart.empty\": \"Your cart is empty.\",\n \"cart.remove\": \"Remove\",\n \"cart.increaseQty\": \"Increase quantity\",\n \"cart.decreaseQty\": \"Decrease quantity\",\n \"cart.checkout\": \"Checkout\",\n \"cart.subtotal\": \"Subtotal\",\n \"cart.tax\": \"Tax\",\n \"cart.total\": \"Total\",\n\n // shared totals (checkout + order)\n \"totals.subtotal\": \"Subtotal\",\n \"totals.discount\": \"Discount\",\n \"totals.shipping\": \"Shipping\",\n \"totals.paymentFee\": \"Payment fee\",\n \"totals.taxIncluded\": \"Tax included\",\n \"totals.total\": \"Total\",\n\n // checkout — steps + states\n \"checkout.stepAddress\": \"Address\",\n \"checkout.stepShipping\": \"Shipping\",\n \"checkout.stepPayment\": \"Payment\",\n \"checkout.loading\": \"Loading checkout…\",\n \"checkout.empty\": \"Your checkout is empty.\",\n // checkout — address form\n \"checkout.shippingAddress\": \"Shipping address\",\n \"checkout.continueToShipping\": \"Continue to shipping\",\n \"checkout.email\": \"Email\",\n \"checkout.firstName\": \"First name\",\n \"checkout.lastName\": \"Last name\",\n \"checkout.company\": \"Company (optional)\",\n \"checkout.address\": \"Address\",\n \"checkout.apartment\": \"Apartment, suite, etc. (optional)\",\n \"checkout.city\": \"City\",\n \"checkout.postalCode\": \"Postal code\",\n \"checkout.country\": \"Country\",\n \"checkout.phone\": \"Phone (optional)\",\n // checkout — shipping\n \"checkout.shippingMethod\": \"Shipping method\",\n \"checkout.continueToPayment\": \"Continue to payment\",\n \"checkout.loadingShipping\": \"Loading shipping options…\",\n \"checkout.noShipping\": \"No shipping options for this address.\",\n // checkout — payment\n \"checkout.payment\": \"Payment\",\n \"checkout.loadingPayment\": \"Loading payment options…\",\n \"checkout.noPayment\": \"No payment methods available.\",\n \"checkout.payNow\": \"Pay now\",\n \"checkout.placeOrder\": \"Place order\",\n \"checkout.gatewayRedirectNote\": \"You'll be redirected to complete payment securely.\",\n // checkout — confirmation\n \"checkout.thankYou\": \"Thank you for your order!\",\n \"checkout.orderPlacedBody\":\n \"Your order {order} has been placed. A confirmation has been sent to {email}.\",\n\n // shipping estimate (pluralized)\n \"shipping.days.one\": \"{count} day\",\n \"shipping.days.few\": \"{count} days\",\n \"shipping.days.many\": \"{count} days\",\n \"shipping.days.other\": \"{count} days\",\n \"shipping.daysRange\": \"{min}–{max} days\",\n\n // order — status page + confirmation\n \"order.title\": \"Order {number}\",\n \"order.placedOn\": \"Placed {date}\",\n \"order.loading\": \"Loading order…\",\n \"order.loadError\": \"Couldn't load this order.\",\n \"order.notFound\": \"Order not found.\",\n \"order.confirmLoading\": \"Loading your order…\",\n \"order.confirmLoadError\": \"Couldn't load your order.\",\n \"order.confirmed\": \"Order {number} is confirmed.\",\n \"order.items\": \"Items\",\n \"order.shipping\": \"Shipping\",\n \"order.shipsTo\": \"Ships to\",\n \"order.tracking\": \"Tracking\",\n \"order.payment\": \"Payment\",\n \"order.method\": \"Method\",\n \"order.status\": \"Status\",\n \"order.downloadInvoice\": \"Download invoice\",\n \"order.contactSupport\": \"Contact support\",\n \"order.trackOrder\": \"Track your order\",\n // order — happy-path milestones\n \"order.phase.placed\": \"Placed\",\n \"order.phase.paid\": \"Paid\",\n \"order.phase.fulfilled\": \"Fulfilled\",\n \"order.phase.shipped\": \"Shipped\",\n \"order.phase.delivered\": \"Delivered\",\n // order — terminal banners\n \"order.terminal.cancelled\": \"This order was cancelled.\",\n \"order.terminal.refunded\": \"This order was refunded.\",\n \"order.terminal.returned\": \"This order was returned.\",\n\n // payment page — the four situations it can be in\n \"payment.title\": \"Pay for order {order}\",\n \"payment.amountDue\": \"Amount due\",\n \"payment.methodLabel\": \"Payment method\",\n \"payment.payNow\": \"Pay now\",\n \"payment.finish\": \"Finish payment\",\n \"payment.loading\": \"Loading payment…\",\n \"payment.loadError\": \"Couldn't load this payment.\",\n \"payment.actionError\": \"That didn't go through. Please try again.\",\n // …paid\n \"payment.paidTitle\": \"Paid\",\n \"payment.paidBody\": \"Order {order} is paid. Nothing further is needed.\",\n \"payment.paidAmount\": \"Paid\",\n // …returning from a gateway, callback still in flight\n \"payment.verifyingTitle\": \"Checking your payment…\",\n \"payment.verifyingBody\":\n \"This takes a few seconds. Don't pay again — we'll update this page.\",\n // …locked, one sentence per reason\n \"payment.blockedTitle\": \"This order can't be paid\",\n \"payment.blocked.orderCancelled\": \"This order was cancelled, so there is nothing to pay.\",\n \"payment.blocked.alreadyPaid\": \"This order is already paid.\",\n \"payment.blocked.authorizationHeld\":\n \"Your bank is holding the funds for this order. Once the payment settles this page will show it as paid.\",\n \"payment.blocked.documentIssued\":\n \"An invoice has been issued for this order, so the amount is fixed. Contact us to change how you pay.\",\n // …bank transfer\n \"payment.account\": \"Account\",\n \"payment.beneficiary\": \"Beneficiary\",\n \"payment.variableSymbol\": \"Variable symbol\",\n \"payment.amount\": \"Amount\",\n \"payment.copy\": \"Copy\",\n \"payment.copied\": \"Copied\",\n \"payment.qrAlt\": \"QR code for the payment\",\n \"payment.qrCaption\": \"Scan in your banking app\",\n\n // error pages\n \"error.notFound.title\": \"Page not found\",\n \"error.notFound.body\": \"This page doesn't exist or isn't available in your region.\",\n \"error.generic.title\": \"Something went wrong\",\n \"error.generic.body\": \"Please try again in a moment.\",\n \"error.home\": \"Back to home\",\n\n \"subscriptions.mixPrice\": \"Fixed box price; shipping is separate\",\n \"subscriptions.locked.inactive\": \"This subscription is not active\",\n \"subscriptions.locked.cutoff\": \"The edit cutoff has passed\",\n \"subscriptions.locked.in_flight\": \"This shipment or payment is already being processed\",\n \"subscriptions.quantity\": \"Quantity\",\n \"subscriptions.back\": \"Back\",\n \"subscriptions.loading\": \"Loading subscription…\",\n \"subscriptions.loadingProducts\": \"Loading products…\",\n \"subscriptions.chargeDate\": \"Scheduled charge\",\n \"subscriptions.noticeHeld\": \"The charge is waiting for a confirmed advance notice.\",\n \"subscriptions.nextDelivery\": \"Next shipment\",\n \"subscriptions.onlyNext\": \"Only in this shipment\",\n \"subscriptions.toCharge\": \"Amount to charge\",\n \"subscriptions.noticeStatus\": \"Renewal notice\",\n \"subscriptions.notice.pending\": \"Pending\",\n \"subscriptions.notice.queued\": \"Queued\",\n \"subscriptions.notice.sent\": \"Sent\",\n \"subscriptions.notice.failed\": \"Needs attention\",\n \"subscriptions.notice.superseded\": \"Updated notice pending\",\n \"subscriptions.editUntil\": \"Changes available until\",\n \"subscriptions.changeInterval\": \"Change delivery frequency\",\n \"subscriptions.addNext\": \"Add to next shipment\",\n \"subscriptions.changeMix\": \"Change my mix\",\n \"subscriptions.skip\": \"Skip next shipment\",\n \"subscriptions.skipWarning\": \"This shipment and its one-time additions will be skipped. Following shipments keep their regular contents.\",\n \"subscriptions.futureOnly\": \"Applies to future shipments. Existing orders stay unchanged.\",\n \"subscriptions.nextUnchanged\": \"Next date\",\n \"subscriptions.reviewTotal\": \"Reviewed amount\",\n \"subscriptions.acceptChange\": \"I agree to the displayed contents, schedule and price.\",\n \"subscriptions.reloadBeforeRetry\": \"Reload before another attempt\",\n \"subscriptions.confirmChange\": \"Confirm change\",\n \"subscriptions.reviewChange\": \"Review change\",\n \"subscriptions.unit.week\": \"Every {count} week(s)\",\n \"subscriptions.unit.month\": \"Every {count} month(s)\",\n \"subscriptions.unit.year\": \"Every {count} year(s)\",\n \"subscriptions.searchProducts\": \"Search products\",\n \"subscriptions.addProduct\": \"Add product\",\n \"subscriptions.mixCount\": \"{count} selected · choose {min}–{max} units\",\n \"subscriptions.addMix\": \"Add mix to cart\",\n // account\n \"account.title\": \"Your account\",\n \"account.signIn\": \"Sign in\",\n \"account.signInBlurb\": \"Enter your email and we'll send you a sign-in link.\",\n \"account.email\": \"Email\",\n \"account.sendLink\": \"Send sign-in link\",\n \"account.checkEmail\": \"Check your email for a sign-in link.\",\n \"account.signOut\": \"Sign out\",\n \"account.greeting\": \"Signed in as {email}\",\n \"account.orders\": \"Your orders\",\n \"account.loadError\": \"Could not load your account. Please try again.\",\n \"account.retry\": \"Try again\",\n \"account.loadMore\": \"Load more\",\n \"account.signInError\": \"Could not request a sign-in link. Please try again shortly.\",\n \"account.security\": \"Account security\",\n \"account.newEmail\": \"New email\",\n \"account.changeEmail\": \"Verify new email\",\n \"account.recentLogin\": \"Sign in again by email before making this change.\",\n \"account.sessions\": \"Sessions\",\n \"account.currentSession\": \"Current session\",\n \"account.revokeSession\": \"Sign out\",\n \"account.closeAccount\": \"Close account\",\n \"account.closeWarning\": \"Closing your account signs out all devices and disables account access. Orders and invoices are retained. Contact the shop to restore access.\",\n \"account.confirmClose\": \"Confirm account closure\",\n \"account.noOrders\": \"No orders yet.\",\n \"account.addresses\": \"Saved addresses\",\n \"account.noAddresses\": \"No saved addresses yet.\",\n \"account.viewOrder\": \"View order\",\n \"account.verifying\": \"Signing you in…\",\n \"account.verifyError\": \"This sign-in link is invalid or has expired.\",\n \"account.openDevLink\": \"Open sign-in link (dev)\",\n // account — profile + address editing + reorder (write ops)\n \"account.profile\": \"Profile\",\n \"account.editProfile\": \"Edit profile\",\n \"account.firstName\": \"First name\",\n \"account.lastName\": \"Last name\",\n \"account.phone\": \"Phone\",\n \"account.acceptsMarketing\": \"Email me about news and offers\",\n \"account.save\": \"Save\",\n \"account.cancel\": \"Cancel\",\n \"account.saved\": \"Saved.\",\n \"account.saveError\": \"Couldn't save. Please try again.\",\n \"account.addAddress\": \"Add address\",\n \"account.editAddress\": \"Edit\",\n \"account.deleteAddress\": \"Delete\",\n \"account.confirmDelete\": \"Delete this address?\",\n \"account.setDefault\": \"Set as default\",\n \"account.default\": \"Default\",\n \"account.company\": \"Company\",\n \"account.address\": \"Address\",\n \"account.addressLine2\": \"Apartment, suite, etc.\",\n \"account.city\": \"City\",\n \"account.postalCode\": \"Postal code\",\n \"account.country\": \"Country (2-letter code)\",\n \"account.reorder\": \"Buy again\",\n \"account.reorderDone\": \"Added {added} item(s) to your cart.\",\n \"account.reorderPartial\": \"Added {added}, skipped {skipped} unavailable item(s).\",\n \"account.reorderError\": \"Couldn't reorder. Please try again.\",\n} satisfies Record<string, string>;\n\n/** Every message key, derived from the English bundle (the source of truth). */\nexport type MessageKey = keyof typeof en;\n\n/** A complete message bundle for one locale. */\nexport type Messages = Record<MessageKey, string>;\n","/**\n * Czech message bundle. Typed as `Messages`, so the compiler guarantees it\n * stays in sync with the canonical English key set in `en.ts`. Czech uses four\n * plural categories (one / few / many / other) — see `shipping.days.*`.\n */\n\nimport type { Messages } from \"./en\";\n\nexport const cs: Messages = {\n \"subscriptions.purchaseOption\": \"Způsob nákupu\",\n \"subscriptions.empty\": \"Zatím nemáte žádné předplatné.\",\n \"subscriptions.status.active\": \"Aktivní\",\n \"subscriptions.status.paused\": \"Pozastaveno\",\n \"subscriptions.status.pending\": \"Čeká na platbu\",\n \"subscriptions.status.cancelled\": \"Zrušeno\",\n \"subscriptions.title\": \"Předplatné\",\n \"subscriptions.consent\": \"Souhlasím s uvedenou opakovanou cenou, plánem doručení a podmínkami.\",\n \"subscriptions.eachDelivery\": \"Za každé doručení\",\n \"subscriptions.once\": \"Jednorázový nákup\",\n\n \"common.free\": \"Zdarma\",\n \"common.close\": \"Zavřít\",\n \"common.loadingShort\": \"…\",\n\n \"catalog.addToCart\": \"Přidat do košíku\",\n \"catalog.noProducts\": \"Zatím žádné produkty.\",\n \"catalog.soldOut\": \"Vyprodáno\",\n \"catalog.addError\": \"Nepodařilo se přidat do košíku. Zkuste to znovu.\",\n \"catalog.inStock\": \"Skladem\",\n \"catalog.preorder\": \"Předobjednávka\",\n \"catalog.filters.sort\": \"Řadit podle\",\n \"catalog.filters.sortNewest\": \"Nejnovější\",\n \"catalog.filters.sortOldest\": \"Nejstarší\",\n \"catalog.filters.sortTitleAsc\": \"Název: A–Z\",\n \"catalog.filters.sortTitleDesc\": \"Název: Z–A\",\n \"catalog.filters.sortPriceAsc\": \"Cena: od nejnižší\",\n \"catalog.filters.sortPriceDesc\": \"Cena: od nejvyšší\",\n \"catalog.filters.priceRange\": \"Cena\",\n \"catalog.filters.min\": \"Od\",\n \"catalog.filters.max\": \"Do\",\n \"catalog.filters.tags\": \"Štítky\",\n \"catalog.filters.inStockOnly\": \"Pouze skladem\",\n \"catalog.filters.clear\": \"Zrušit filtry\",\n \"catalog.backInStock.prompt\": \"Vyprodáno — dáme vám e-mailem vědět, až bude zpět.\",\n \"catalog.backInStock.email\": \"E-mail\",\n \"catalog.backInStock.notify\": \"Upozornit mě\",\n \"catalog.backInStock.success\": \"Hotovo — dáme vám vědět, až bude zboží skladem.\",\n \"catalog.backInStock.error\": \"Přihlášení se nezdařilo. Zkuste to znovu.\",\n\n \"cart.title\": \"Košík\",\n \"cart.empty\": \"Váš košík je prázdný.\",\n \"cart.remove\": \"Odebrat\",\n \"cart.increaseQty\": \"Zvýšit množství\",\n \"cart.decreaseQty\": \"Snížit množství\",\n \"cart.checkout\": \"K pokladně\",\n \"cart.subtotal\": \"Mezisoučet\",\n \"cart.tax\": \"DPH\",\n \"cart.total\": \"Celkem\",\n\n \"totals.subtotal\": \"Mezisoučet\",\n \"totals.discount\": \"Sleva\",\n \"totals.shipping\": \"Doprava\",\n \"totals.paymentFee\": \"Poplatek za platbu\",\n \"totals.taxIncluded\": \"Včetně DPH\",\n \"totals.total\": \"Celkem\",\n\n \"checkout.stepAddress\": \"Adresa\",\n \"checkout.stepShipping\": \"Doprava\",\n \"checkout.stepPayment\": \"Platba\",\n \"checkout.loading\": \"Načítání pokladny…\",\n \"checkout.empty\": \"Vaše pokladna je prázdná.\",\n \"checkout.shippingAddress\": \"Dodací adresa\",\n \"checkout.continueToShipping\": \"Pokračovat k dopravě\",\n \"checkout.email\": \"E-mail\",\n \"checkout.firstName\": \"Jméno\",\n \"checkout.lastName\": \"Příjmení\",\n \"checkout.company\": \"Firma (nepovinné)\",\n \"checkout.address\": \"Adresa\",\n \"checkout.apartment\": \"Byt, patro apod. (nepovinné)\",\n \"checkout.city\": \"Město\",\n \"checkout.postalCode\": \"PSČ\",\n \"checkout.country\": \"Země\",\n \"checkout.phone\": \"Telefon (nepovinné)\",\n \"checkout.shippingMethod\": \"Způsob dopravy\",\n \"checkout.continueToPayment\": \"Pokračovat k platbě\",\n \"checkout.loadingShipping\": \"Načítání možností dopravy…\",\n \"checkout.noShipping\": \"Pro tuto adresu nejsou žádné možnosti dopravy.\",\n \"checkout.payment\": \"Platba\",\n \"checkout.loadingPayment\": \"Načítání platebních metod…\",\n \"checkout.noPayment\": \"Žádné platební metody nejsou k dispozici.\",\n \"checkout.payNow\": \"Zaplatit\",\n \"checkout.placeOrder\": \"Odeslat objednávku\",\n \"checkout.gatewayRedirectNote\": \"Budete přesměrováni k bezpečnému dokončení platby.\",\n \"checkout.thankYou\": \"Děkujeme za vaši objednávku!\",\n \"checkout.orderPlacedBody\":\n \"Vaše objednávka {order} byla přijata. Potvrzení jsme odeslali na {email}.\",\n\n \"shipping.days.one\": \"{count} den\",\n \"shipping.days.few\": \"{count} dny\",\n \"shipping.days.many\": \"{count} dne\",\n \"shipping.days.other\": \"{count} dní\",\n \"shipping.daysRange\": \"{min}–{max} dní\",\n\n \"order.title\": \"Objednávka {number}\",\n \"order.placedOn\": \"Vytvořeno {date}\",\n \"order.loading\": \"Načítání objednávky…\",\n \"order.loadError\": \"Objednávku se nepodařilo načíst.\",\n \"order.notFound\": \"Objednávka nenalezena.\",\n \"order.confirmLoading\": \"Načítání vaší objednávky…\",\n \"order.confirmLoadError\": \"Vaši objednávku se nepodařilo načíst.\",\n \"order.confirmed\": \"Objednávka {number} je potvrzena.\",\n \"order.items\": \"Položky\",\n \"order.shipping\": \"Doprava\",\n \"order.shipsTo\": \"Doručení do\",\n \"order.tracking\": \"Sledování\",\n \"order.payment\": \"Platba\",\n \"order.method\": \"Metoda\",\n \"order.status\": \"Stav\",\n \"order.downloadInvoice\": \"Stáhnout fakturu\",\n \"order.contactSupport\": \"Kontaktovat podporu\",\n \"order.trackOrder\": \"Sledovat objednávku\",\n \"order.phase.placed\": \"Přijato\",\n \"order.phase.paid\": \"Zaplaceno\",\n \"order.phase.fulfilled\": \"Připraveno\",\n \"order.phase.shipped\": \"Odesláno\",\n \"order.phase.delivered\": \"Doručeno\",\n \"order.terminal.cancelled\": \"Tato objednávka byla zrušena.\",\n \"order.terminal.refunded\": \"Tato objednávka byla refundována.\",\n \"order.terminal.returned\": \"Tato objednávka byla vrácena.\",\n\n // platební stránka — čtyři situace, ve kterých může být\n \"payment.title\": \"Zaplatit objednávku {order}\",\n \"payment.amountDue\": \"K úhradě\",\n \"payment.methodLabel\": \"Způsob platby\",\n \"payment.payNow\": \"Zaplatit\",\n \"payment.finish\": \"Dokončit platbu\",\n \"payment.loading\": \"Načítání platby…\",\n \"payment.loadError\": \"Platbu se nepodařilo načíst.\",\n \"payment.actionError\": \"Nepovedlo se to. Zkuste to prosím znovu.\",\n \"payment.paidTitle\": \"Zaplaceno\",\n \"payment.paidBody\": \"Objednávka {order} je zaplacená. Nic dalšího dělat nemusíte.\",\n \"payment.paidAmount\": \"Uhrazeno\",\n \"payment.verifyingTitle\": \"Ověřujeme platbu…\",\n \"payment.verifyingBody\":\n \"Chvilku to trvá. Neplaťte prosím znovu — stránka se sama aktualizuje.\",\n \"payment.blockedTitle\": \"Tuhle objednávku teď zaplatit nejde\",\n \"payment.blocked.orderCancelled\": \"Objednávka byla zrušená, takže není co platit.\",\n \"payment.blocked.alreadyPaid\": \"Objednávka je už zaplacená.\",\n \"payment.blocked.authorizationHeld\":\n \"Banka na tuhle objednávku drží peníze. Jakmile se platba dokončí, uvidíte to tady.\",\n \"payment.blocked.documentIssued\":\n \"K objednávce je vystavená faktura, takže je částka pevná. Pokud chcete platit jinak, ozvěte se nám.\",\n \"payment.account\": \"Účet\",\n \"payment.beneficiary\": \"Příjemce\",\n \"payment.variableSymbol\": \"Variabilní symbol\",\n \"payment.amount\": \"Částka\",\n \"payment.copy\": \"Kopírovat\",\n \"payment.copied\": \"Zkopírováno\",\n \"payment.qrAlt\": \"QR kód k platbě\",\n \"payment.qrCaption\": \"Načtěte v bankovní aplikaci\",\n\n \"error.notFound.title\": \"Stránka nenalezena\",\n \"error.notFound.body\": \"Tato stránka neexistuje nebo není ve vašem regionu dostupná.\",\n \"error.generic.title\": \"Něco se pokazilo\",\n \"error.generic.body\": \"Zkuste to prosím za chvíli znovu.\",\n \"error.home\": \"Zpět na úvod\",\n\n \"subscriptions.mixPrice\": \"Pevná cena mixu; doprava se počítá zvlášť\",\n \"subscriptions.locked.inactive\": \"Předplatné není aktivní.\",\n \"subscriptions.locked.cutoff\": \"Termín pro úpravy této zásilky již uplynul.\",\n \"subscriptions.locked.in_flight\": \"Zásilka nebo její platba se již zpracovává.\",\n \"subscriptions.quantity\": \"Množství\",\n \"subscriptions.back\": \"Zpět\",\n \"subscriptions.loading\": \"Načítání předplatného…\",\n \"subscriptions.loadingProducts\": \"Načítání produktů…\",\n \"subscriptions.chargeDate\": \"Plánované stržení\",\n \"subscriptions.noticeHeld\": \"Platba čeká na potvrzené odeslání upozornění a sjednaný předstih.\",\n \"subscriptions.nextDelivery\": \"Příští zásilka\",\n \"subscriptions.onlyNext\": \"Jen v této zásilce\",\n \"subscriptions.toCharge\": \"Částka ke stržení\",\n \"subscriptions.noticeStatus\": \"Upozornění před platbou\",\n \"subscriptions.notice.pending\": \"Čeká na odeslání\",\n \"subscriptions.notice.queued\": \"Ve frontě\",\n \"subscriptions.notice.sent\": \"Odesláno\",\n \"subscriptions.notice.failed\": \"Vyžaduje pozornost\",\n \"subscriptions.notice.superseded\": \"Čeká na aktualizované upozornění\",\n \"subscriptions.editUntil\": \"Úpravy možné do\",\n \"subscriptions.changeInterval\": \"Změnit interval doručení\",\n \"subscriptions.addNext\": \"Přidat k příští zásilce\",\n \"subscriptions.changeMix\": \"Změnit vlastní mix\",\n \"subscriptions.skip\": \"Přeskočit příští zásilku\",\n \"subscriptions.skipWarning\": \"Tato zásilka se přeskočí včetně jednorázově přidaných produktů. Další zásilky budou mít běžný obsah předplatného.\",\n \"subscriptions.futureOnly\": \"Platí pro budoucí zásilky. Existující objednávky se nezmění.\",\n \"subscriptions.nextUnchanged\": \"Nejbližší termín\",\n \"subscriptions.reviewTotal\": \"Potvrzovaná částka\",\n \"subscriptions.acceptChange\": \"Souhlasím se zobrazeným obsahem, termíny a cenou.\",\n \"subscriptions.reloadBeforeRetry\": \"Obnovit před dalším pokusem\",\n \"subscriptions.confirmChange\": \"Potvrdit změnu\",\n \"subscriptions.reviewChange\": \"Zkontrolovat změnu\",\n \"subscriptions.unit.week\": \"Každých {count} týdnů\",\n \"subscriptions.unit.month\": \"Každých {count} měsíců\",\n \"subscriptions.unit.year\": \"Každých {count} let\",\n \"subscriptions.searchProducts\": \"Hledat produkty\",\n \"subscriptions.addProduct\": \"Přidat produkt\",\n \"subscriptions.mixCount\": \"Vybráno {count} · zvolte {min}–{max} kusů\",\n \"subscriptions.addMix\": \"Přidat mix do košíku\",\n \"account.title\": \"Váš účet\",\n \"account.signIn\": \"Přihlásit se\",\n \"account.signInBlurb\": \"Zadejte e-mail a pošleme vám přihlašovací odkaz.\",\n \"account.email\": \"E-mail\",\n \"account.sendLink\": \"Poslat přihlašovací odkaz\",\n \"account.checkEmail\": \"Zkontrolujte e-mail s přihlašovacím odkazem.\",\n \"account.signOut\": \"Odhlásit se\",\n \"account.greeting\": \"Přihlášen jako {email}\",\n \"account.orders\": \"Vaše objednávky\",\n \"account.loadError\": \"Údaje se nepodařilo načíst. Zkuste to znovu.\",\n \"account.retry\": \"Zkusit znovu\",\n \"account.loadMore\": \"Načíst další\",\n \"account.signInError\": \"Přihlášení se nepodařilo zahájit. Zkuste to za chvíli znovu.\",\n \"account.security\": \"Zabezpečení účtu\",\n \"account.newEmail\": \"Nový e-mail\",\n \"account.changeEmail\": \"Ověřit nový e-mail\",\n \"account.recentLogin\": \"Pro tuto změnu se nejprve znovu přihlaste přes e-mail.\",\n \"account.sessions\": \"Přihlášení\",\n \"account.currentSession\": \"Toto přihlášení\",\n \"account.revokeSession\": \"Odhlásit\",\n \"account.closeAccount\": \"Uzavřít účet\",\n \"account.closeWarning\": \"Uzavřením účtu ukončíte přístup a odhlásíte všechna zařízení. Objednávky a doklady zůstanou zachovány. Obnovení přístupu řeší podpora obchodu.\",\n \"account.confirmClose\": \"Potvrdit uzavření účtu\",\n \"account.noOrders\": \"Zatím žádné objednávky.\",\n \"account.addresses\": \"Uložené adresy\",\n \"account.noAddresses\": \"Zatím žádné uložené adresy.\",\n \"account.viewOrder\": \"Zobrazit objednávku\",\n \"account.verifying\": \"Přihlašování…\",\n \"account.verifyError\": \"Přihlašovací odkaz je neplatný nebo vypršel.\",\n \"account.openDevLink\": \"Otevřít přihlašovací odkaz (dev)\",\n \"account.profile\": \"Profil\",\n \"account.editProfile\": \"Upravit profil\",\n \"account.firstName\": \"Jméno\",\n \"account.lastName\": \"Příjmení\",\n \"account.phone\": \"Telefon\",\n \"account.acceptsMarketing\": \"Posílejte mi novinky a nabídky e-mailem\",\n \"account.save\": \"Uložit\",\n \"account.cancel\": \"Zrušit\",\n \"account.saved\": \"Uloženo.\",\n \"account.saveError\": \"Nepodařilo se uložit. Zkuste to znovu.\",\n \"account.addAddress\": \"Přidat adresu\",\n \"account.editAddress\": \"Upravit\",\n \"account.deleteAddress\": \"Smazat\",\n \"account.confirmDelete\": \"Smazat tuto adresu?\",\n \"account.setDefault\": \"Nastavit jako výchozí\",\n \"account.default\": \"Výchozí\",\n \"account.company\": \"Společnost\",\n \"account.address\": \"Adresa\",\n \"account.addressLine2\": \"Byt, patro apod.\",\n \"account.city\": \"Město\",\n \"account.postalCode\": \"PSČ\",\n \"account.country\": \"Země (dvoupísmenný kód)\",\n \"account.reorder\": \"Koupit znovu\",\n \"account.reorderDone\": \"Přidáno {added} položek do košíku.\",\n \"account.reorderPartial\": \"Přidáno {added}, přeskočeno {skipped} nedostupných položek.\",\n \"account.reorderError\": \"Objednávku se nepodařilo zopakovat. Zkuste to znovu.\",\n};\n","\"use client\";\n\n/**\n * I18nProvider + useT — the kit's translation layer. UI strings are bundled\n * (zero network calls); product/collection *content* is localized server-side\n * via the SDK's `X-Locale`. Wrap your app once with the resolved locale:\n *\n * <I18nProvider locale=\"cs-CZ\">{app}</I18nProvider> // auto-picks the cs pack\n * <I18nProvider locale=\"fr-FR\" messages={fr}>… // bring your own pack\n *\n * Components call `const t = useT()` and `t(\"checkout.payNow\")`. Pluralize with\n * a `count` var — `t(\"shipping.days\", { count })` — resolved via Intl.PluralRules\n * for the active locale. With no provider mounted, `useT` falls back to English,\n * so kit components never crash un-wrapped.\n */\n\nimport * as React from \"react\";\n\nimport { en, type MessageKey, type Messages } from \"./en\";\nimport { cs } from \"./cs\";\n\nexport type TVars = Record<string, string | number>;\nexport type TFunction = (key: MessageKey | (string & {}), vars?: TVars) => string;\n\n/** Locale packs the kit ships. Keyed by language subtag. */\nconst BUNDLED: Record<string, Messages> = { en, cs };\n\n/** Language subtag, normalized for matching (\"cs_CZ\" / \"CS-cz\" → \"cs\"). */\nfunction langOf(locale?: string): string {\n return (locale ?? \"en\").toLowerCase().replace(/_/g, \"-\").split(\"-\")[0] || \"en\";\n}\n\n/** Pick a bundled pack by language subtag (\"cs-CZ\" → cs); default English. */\nexport function bundledMessages(locale?: string): Messages {\n return BUNDLED[langOf(locale)] ?? en;\n}\n\nconst warned = new Set<string>();\n/** Best-effort dev-only warning (deduped). No-op in production / no `process`. */\nfunction devWarn(message: string): void {\n let dev = false;\n try {\n const proc = (globalThis as { process?: { env?: Record<string, string | undefined> } }).process;\n dev = !!proc?.env && proc.env.NODE_ENV !== \"production\";\n } catch {\n dev = false;\n }\n if (dev && !warned.has(message)) {\n warned.add(message);\n // eslint-disable-next-line no-console\n console.warn(`[nevios i18n] ${message}`);\n }\n}\n\nexport interface I18nValue {\n locale: string;\n messages: Messages;\n t: TFunction;\n}\n\nfunction interpolate(template: string, vars?: TVars): string {\n if (!vars) return template;\n return template.replace(/\\{(\\w+)\\}/g, (m, k) => (k in vars ? String(vars[k]) : m));\n}\n\nfunction makeI18n(locale: string, messages: Messages): I18nValue {\n let plural: Intl.PluralRules;\n try {\n plural = new Intl.PluralRules(locale);\n } catch {\n plural = new Intl.PluralRules(\"en\");\n }\n const dict = messages as Record<string, string | undefined>;\n const t: TFunction = (key, vars) => {\n let template: string | undefined;\n if (vars && typeof vars.count === \"number\") {\n const cat = plural.select(vars.count);\n template = dict[`${key}.${cat}`] ?? dict[`${key}.other`] ?? dict[key as string];\n } else {\n template = dict[key as string];\n }\n // A missing key returns the key itself — visible + greppable, never a crash.\n if (template == null) {\n devWarn(`missing message key \"${String(key)}\"`);\n return String(key);\n }\n return interpolate(template, vars);\n };\n return { locale, messages, t };\n}\n\nconst DEFAULT_I18N = makeI18n(\"en\", en);\n\nconst I18nContext = React.createContext<I18nValue | null>(null);\n\nexport interface I18nProviderProps {\n /** BCP-47 locale — drives pluralization + (when `messages` is omitted) which\n * bundled pack is used. */\n locale?: string;\n /** Override / extend the messages. Merged over the bundled pack for `locale`,\n * so you can ship custom copy or add a locale the kit doesn't bundle. */\n messages?: Partial<Messages>;\n children: React.ReactNode;\n}\n\nexport function I18nProvider({\n locale,\n messages,\n children,\n}: I18nProviderProps): React.ReactElement {\n const value = React.useMemo<I18nValue>(() => {\n const lang = langOf(locale);\n if (locale && !(lang in BUNDLED) && !messages) {\n devWarn(\n `no bundled pack for \"${locale}\" and no \\`messages\\` override — the UI ` +\n `falls back to English under <html lang=\"${locale}\">. Pass messages={...}.`,\n );\n }\n const base = bundledMessages(locale);\n const merged: Messages = messages ? { ...base, ...messages } : base;\n return makeI18n(locale ?? \"en\", merged);\n }, [locale, messages]);\n return <I18nContext.Provider value={value}>{children}</I18nContext.Provider>;\n}\n\n/** Full i18n context — locale + messages + t. Falls back to English when no\n * <I18nProvider> is mounted. */\nexport function useI18n(): I18nValue {\n return React.useContext(I18nContext) ?? DEFAULT_I18N;\n}\n\n/** The translate function for the active locale. */\nexport function useT(): TFunction {\n return useI18n().t;\n}\n","\"use client\";\n\n/**\n * MarketSwitcher — lets a shopper change market (and with it currency + locale).\n * Headless about *how* you switch: pass `hrefFor` to navigate to each market's\n * domain/path (the storefront resolves the market from there), or `onSelect`\n * to handle it yourself (e.g. set a cookie + reload). Feed it the list from\n * `client.markets()`.\n *\n * <MarketSwitcher markets={markets} current={market}\n * hrefFor={(m) => m.domain ? `https://${m.domain}` : `/${m.handle}`} />\n */\n\nimport * as React from \"react\";\n\n/** The minimal market shape the switcher needs. Both the SDK's\n * `StorefrontMarket` (from `client.markets()`) and a hand-written config entry\n * satisfy it — `label` wins for display, else `name (CURRENCY)`. */\nexport interface MarketOption {\n handle: string;\n label?: string;\n name?: string;\n currency?: string;\n locale?: string;\n domain?: string | null;\n}\n\nexport interface MarketSwitcherProps {\n markets: readonly MarketOption[];\n /** Current market handle (the selected option). */\n current?: string;\n /** Map a market → the URL to switch to. When set, changing the select\n * navigates there. */\n hrefFor?: (market: MarketOption) => string;\n /** Or handle the switch yourself (cookie + reload). Takes precedence over\n * `hrefFor` if both are given. */\n onSelect?: (market: MarketOption) => void;\n /** Option label. Default: `label`, else `\"Name (CURRENCY)\"`, else handle. */\n renderLabel?: (market: MarketOption) => string;\n \"aria-label\"?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst defaultLabel = (m: MarketOption) =>\n m.label ?? (m.name ? `${m.name}${m.currency ? ` (${m.currency})` : \"\"}` : m.handle);\n\nexport function MarketSwitcher({\n markets,\n current,\n hrefFor,\n onSelect,\n renderLabel = defaultLabel,\n \"aria-label\": ariaLabel = \"Market\",\n className,\n style,\n}: MarketSwitcherProps): React.ReactElement | null {\n if (!markets || markets.length <= 1) return null; // nothing to switch between\n\n function handleChange(e: React.ChangeEvent<HTMLSelectElement>) {\n const m = markets.find((x) => x.handle === e.target.value);\n if (!m) return;\n if (onSelect) {\n onSelect(m);\n } else if (hrefFor && typeof window !== \"undefined\") {\n window.location.assign(hrefFor(m));\n }\n }\n\n return (\n <select\n aria-label={ariaLabel}\n value={current ?? \"\"}\n onChange={handleChange}\n className={className}\n style={{\n font: \"inherit\",\n color: \"var(--nv-fg)\",\n background: \"var(--nv-bg)\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n padding: \"0.4rem 0.6rem\",\n cursor: \"pointer\",\n ...style,\n }}\n >\n {current == null ? <option value=\"\" disabled /> : null}\n {markets.map((m) => (\n <option key={m.handle} value={m.handle}>\n {renderLabel(m)}\n </option>\n ))}\n </select>\n );\n}\n","\"use client\";\n\n/**\n * Money formatting + display. `formatMoney` is the headless helper; `PriceMoney`\n * renders the display price with an optional struck-through compare-at.\n */\n\nimport * as React from \"react\";\nimport type { Money } from \"@nevios/storefront-js\";\n\nimport { useI18n } from \"../i18n\";\n\n/** Format minor units (cents) + currency → a localized string (\"2 999,00 Kč\"). */\nexport function formatCents(cents: number, currency: string, locale?: string): string {\n return new Intl.NumberFormat(locale, { style: \"currency\", currency }).format(cents / 100);\n}\n\n/** Format a Money → a localized currency string. */\nexport function formatMoney(money: Money, locale?: string): string {\n return formatCents(money.amount_cents, money.currency, locale);\n}\n\n/** The formatting locale: the explicit prop, else the active I18nProvider\n * locale. Keeps prices from silently formatting in the runtime default (e.g.\n * \"CZK 2,999.00\" instead of \"2 999,00 Kč\") when a caller omits `locale`. */\nexport function useFormatLocale(locale?: string): string | undefined {\n const { locale: ctxLocale } = useI18n();\n return locale ?? ctxLocale;\n}\n\nexport interface PriceMoneyProps {\n money: Money;\n /** Show the struck-through compare-at price when one is set. */\n showCompareAt?: boolean;\n /** Override the formatting locale (defaults to the I18nProvider locale). */\n locale?: string;\n}\n\nexport function PriceMoney({\n money,\n showCompareAt = true,\n locale,\n}: PriceMoneyProps): React.ReactElement {\n const loc = useFormatLocale(locale);\n const onSale =\n showCompareAt &&\n money.compare_at_cents != null &&\n money.compare_at_cents > money.amount_cents;\n return (\n <span style={{ display: \"inline-flex\", alignItems: \"baseline\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, color: onSale ? \"var(--nv-brand)\" : \"inherit\" }}>\n {formatMoney(money, loc)}\n </span>\n {onSale ? (\n <span\n style={{\n color: \"var(--nv-muted)\",\n textDecoration: \"line-through\",\n fontSize: \"0.875em\",\n }}\n >\n {formatMoney({ ...money, amount_cents: money.compare_at_cents as number }, loc)}\n </span>\n ) : null}\n </span>\n );\n}\n","\"use client\";\n\n/**\n * ProductCard — a product tile for grids (collection pages, search). Image +\n * title + price range. Presentational: pass a `Product`; pass `href` to make\n * the whole tile a link to the PDP. Override via the slot registry to restyle\n * just this without touching the rest.\n */\n\nimport * as React from \"react\";\nimport { imageSrcSet } from \"@nevios/storefront-js\";\nimport type { Product } from \"@nevios/storefront-js\";\nimport { PriceMoney } from \"./money\";\nimport { useStorefrontOptional } from \"../provider\";\n\n// Grid-context render widths → covers 1× and 2× DPR for typical tile sizes.\nconst CARD_WIDTHS = [200, 400, 600];\nconst CARD_SIZES = \"(min-width: 1024px) 25vw, (min-width: 640px) 33vw, 50vw\";\n\nexport interface ProductCardProps {\n product: Product;\n /** When set, the whole card links here (the eshop owns its URL scheme). */\n href?: string;\n locale?: string;\n}\n\nexport function ProductCard({ product, href, locale }: ProductCardProps): React.ReactElement {\n const image = product.media[0];\n const price = product.variants[0]?.price ?? null;\n // Responsive srcset when an image CDN is configured; plain src otherwise.\n const imageBase = useStorefrontOptional()?.imageBase;\n const responsive = image ? imageSrcSet(image, { base: imageBase, widths: CARD_WIDTHS }) : null;\n\n const inner = (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <div\n style={{\n aspectRatio: \"1 / 1\",\n overflow: \"hidden\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {image && responsive ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={responsive.src || image.url}\n srcSet={responsive.srcSet || undefined}\n sizes={responsive.srcSet ? CARD_SIZES : undefined}\n alt={image.alt ?? product.title}\n loading=\"lazy\"\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n ) : null}\n </div>\n <div style={{ fontWeight: 500, lineHeight: 1.3 }}>{product.title}</div>\n {price ? <PriceMoney money={price} locale={locale} /> : null}\n </div>\n );\n\n if (!href) return inner;\n return (\n <a href={href} style={{ color: \"inherit\", textDecoration: \"none\", display: \"block\" }}>\n {inner}\n </a>\n );\n}\n","\"use client\";\n\n/**\n * ProductGallery — the PDP image gallery: a main image + thumbnail strip.\n * Client-interactive (thumbnail selects the main image). Presentational data.\n */\n\nimport * as React from \"react\";\nimport { imageSrcSet } from \"@nevios/storefront-js\";\nimport type { ProductMedia } from \"@nevios/storefront-js\";\n\nimport { useStorefrontOptional } from \"../provider\";\n\nconst MAIN_WIDTHS = [600, 800, 1000];\nconst THUMB_WIDTHS = [56, 112]; // native + 2× DPR for the 56px thumb box\n\nexport interface ProductGalleryProps {\n media: ProductMedia[];\n alt?: string;\n}\n\nexport function ProductGallery({ media, alt }: ProductGalleryProps): React.ReactElement {\n const [active, setActive] = React.useState(0);\n const imageBase = useStorefrontOptional()?.imageBase;\n if (media.length === 0) {\n return (\n <div\n style={{\n aspectRatio: \"1 / 1\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n />\n );\n }\n const main = media[Math.min(active, media.length - 1)];\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div\n style={{\n aspectRatio: \"1 / 1\",\n overflow: \"hidden\",\n borderRadius: \"var(--nv-radius)\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {(() => {\n const r = imageSrcSet(main, { base: imageBase, widths: MAIN_WIDTHS });\n return (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={r.src || main.url}\n srcSet={r.srcSet || undefined}\n sizes={r.srcSet ? \"(min-width: 768px) 600px, 100vw\" : undefined}\n alt={main.alt ?? alt ?? \"\"}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n );\n })()}\n </div>\n {media.length > 1 ? (\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n {media.map((m, i) => (\n <button\n key={m.url + i}\n type=\"button\"\n onClick={() => setActive(i)}\n aria-label={`Image ${i + 1}`}\n aria-pressed={i === active}\n style={{\n width: 56,\n height: 56,\n padding: 0,\n cursor: \"pointer\",\n overflow: \"hidden\",\n borderRadius: \"calc(var(--nv-radius) - 4px)\",\n background: \"transparent\",\n border:\n i === active\n ? \"2px solid var(--nv-brand)\"\n : \"1px solid var(--nv-border)\",\n }}\n >\n {(() => {\n const r = imageSrcSet(m, { base: imageBase, widths: THUMB_WIDTHS });\n return (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={r.src || m.url}\n srcSet={r.srcSet || undefined}\n sizes={r.srcSet ? \"56px\" : undefined}\n alt={m.alt ?? \"\"}\n loading=\"lazy\"\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n );\n })()}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * VariantPicker — one selector row per product option (Color, Size…). Resolves\n * the matching variant from the selected values and reports it via `onChange`,\n * so the PDP knows which variant to price + add to cart. Defaults to the first\n * variant. Single-option-less products (one default variant) render nothing.\n */\n\nimport * as React from \"react\";\nimport type { Product, ProductVariant } from \"@nevios/storefront-js\";\n\nexport interface VariantPickerProps {\n product: Product;\n onChange?: (variant: ProductVariant | null) => void;\n}\n\nfunction matchVariant(product: Product, selected: string[]): ProductVariant | null {\n return (\n product.variants.find(\n (v) =>\n v.options.length === selected.length &&\n v.options.every((o, i) => o === selected[i]),\n ) ?? null\n );\n}\n\nexport function VariantPicker({ product, onChange }: VariantPickerProps): React.ReactElement | null {\n const [selected, setSelected] = React.useState<string[]>(\n () => product.variants[0]?.options ?? [],\n );\n\n React.useEffect(() => {\n onChange?.(matchVariant(product, selected));\n // onChange is intentionally excluded — callers needn't memoize it.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [product, selected]);\n\n if (product.options.length === 0) return null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\" }}>\n {product.options.map((opt, optIndex) => (\n <div key={opt.name} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, fontSize: \"0.875em\" }}>{opt.name}</span>\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n {opt.values.map((value) => {\n const isActive = selected[optIndex] === value;\n return (\n <button\n key={value}\n type=\"button\"\n aria-pressed={isActive}\n onClick={() =>\n setSelected((prev) => {\n const next = [...prev];\n next[optIndex] = value;\n return next;\n })\n }\n style={{\n cursor: \"pointer\",\n padding: \"0.4rem 0.85rem\",\n borderRadius: \"var(--nv-radius)\",\n font: \"inherit\",\n background: isActive ? \"var(--nv-brand)\" : \"transparent\",\n color: isActive ? \"var(--nv-brand-foreground)\" : \"var(--nv-fg)\",\n border: isActive\n ? \"1px solid var(--nv-brand)\"\n : \"1px solid var(--nv-border)\",\n }}\n >\n {value}\n </button>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * BackInStockForm — an email capture shown when a variant is out of stock.\n * Submits to `client.catalog.inventory.subscribe(variantId, email)`. Renders\n * nothing unless the variant's status is `out_of_stock`, so it's safe to drop\n * straight into a PDP next to (or instead of) the add-to-cart button.\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\n\nexport interface BackInStockFormProps {\n variant: ProductVariant | null;\n /** Prefill the email (e.g. the signed-in customer's). */\n defaultEmail?: string;\n onSuccess?: () => void;\n}\n\ntype State = \"idle\" | \"submitting\" | \"success\" | \"error\";\n\nexport function BackInStockForm({\n variant,\n defaultEmail = \"\",\n onSuccess,\n}: BackInStockFormProps): React.ReactElement | null {\n const t = useT();\n const client = useStorefront();\n const [email, setEmail] = React.useState(defaultEmail);\n const [state, setState] = React.useState<State>(\"idle\");\n\n if (!variant || variant.availability?.status !== \"out_of_stock\") return null;\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n if (!variant || !email.trim()) return;\n setState(\"submitting\");\n try {\n await client.catalog.inventory.subscribe(variant.id, email.trim());\n setState(\"success\");\n onSuccess?.();\n } catch {\n setState(\"error\");\n }\n }\n\n if (state === \"success\") {\n return (\n <p style={{ margin: 0, color: \"var(--nv-muted)\", fontSize: \"0.875rem\" }}>\n {t(\"catalog.backInStock.success\")}\n </p>\n );\n }\n\n return (\n <form onSubmit={submit} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <p style={{ margin: 0, color: \"var(--nv-muted)\", fontSize: \"0.875rem\" }}>\n {t(\"catalog.backInStock.prompt\")}\n </p>\n <div style={{ display: \"flex\", gap: \"0.5rem\", flexWrap: \"wrap\" }}>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={t(\"catalog.backInStock.email\")}\n aria-label={t(\"catalog.backInStock.email\")}\n style={{\n font: \"inherit\",\n flex: 1,\n minWidth: \"12rem\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n />\n <button\n type=\"submit\"\n disabled={state === \"submitting\"}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: state === \"submitting\" ? \"default\" : \"pointer\",\n padding: \"0.6rem 1.1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-fg)\",\n opacity: state === \"submitting\" ? 0.6 : 1,\n }}\n >\n {state === \"submitting\" ? \"…\" : t(\"catalog.backInStock.notify\")}\n </button>\n </div>\n {state === \"error\" ? (\n <p style={{ margin: 0, color: \"#b3261e\", fontSize: \"0.8125rem\" }}>\n {t(\"catalog.backInStock.error\")}\n </p>\n ) : null}\n </form>\n );\n}\n","\"use client\";\n\n/**\n * StockBadge — a small availability pill for a variant. Reads\n * `variant.availability.status` (in_stock | preorder | out_of_stock) and renders\n * a themed label. Renders nothing for an untracked in-stock variant when\n * `hideInStock` is set (keeps the PDP quiet for always-available goods).\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\n\nexport interface StockBadgeProps {\n variant: ProductVariant | null;\n /** Don't render anything when the variant is in stock (default false). */\n hideInStock?: boolean;\n}\n\nexport function StockBadge({ variant, hideInStock = false }: StockBadgeProps): React.ReactElement | null {\n const t = useT();\n const status = variant?.availability?.status;\n if (!status) return null;\n if (status === \"in_stock\" && hideInStock) return null;\n\n const { key, color, bg } = {\n in_stock: { key: \"catalog.inStock\", color: \"#0a7c3a\", bg: \"rgba(10,124,58,0.12)\" },\n preorder: { key: \"catalog.preorder\", color: \"var(--nv-fg)\", bg: \"color-mix(in oklab, var(--nv-muted) 16%, transparent)\" },\n out_of_stock: { key: \"catalog.soldOut\", color: \"var(--nv-muted)\", bg: \"color-mix(in oklab, var(--nv-muted) 16%, transparent)\" },\n }[status];\n\n return (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"0.35rem\",\n fontSize: \"0.75rem\",\n fontWeight: 600,\n padding: \"0.2rem 0.55rem\",\n borderRadius: \"999px\",\n color,\n background: bg,\n }}\n >\n <span aria-hidden style={{ width: 6, height: 6, borderRadius: \"50%\", background: \"currentColor\" }} />\n {t(key)}\n </span>\n );\n}\n","\"use client\";\n\n/**\n * ProductDetailPage — the PDP composition: gallery + title + live price for the\n * selected variant + variant picker + an add-to-cart slot. Presentational:\n * the Remix loader fetches the `Product`, this renders it. `addToCart` is a\n * render slot the cart phase (P2) fills with an <AddToCart> bound to the\n * currently-selected variant.\n */\n\nimport * as React from \"react\";\nimport type { Product, ProductVariant } from \"@nevios/storefront-js\";\n\nimport { BackInStockForm } from \"./back-in-stock-form\";\nimport { PriceMoney } from \"./money\";\nimport { ProductGallery } from \"./product-gallery\";\nimport { StockBadge } from \"./stock-badge\";\nimport { VariantPicker } from \"./variant-picker\";\n\nexport interface ProductDetailPageProps {\n product: Product;\n locale?: string;\n /** Render slot for the add-to-cart control, bound to the selected variant. */\n addToCart?: (variant: ProductVariant | null) => React.ReactNode;\n}\n\nexport function ProductDetailPage({\n product,\n locale,\n addToCart,\n}: ProductDetailPageProps): React.ReactElement {\n const [variant, setVariant] = React.useState<ProductVariant | null>(\n product.variants[0] ?? null,\n );\n\n return (\n <div\n style={{\n display: \"grid\",\n gap: \"2rem\",\n gridTemplateColumns: \"repeat(auto-fit, minmax(min(100%, 320px), 1fr))\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n }}\n >\n <ProductGallery media={product.media} alt={product.title} />\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.25rem\" }}>\n <div>\n {product.vendor ? (\n <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>\n {product.vendor}\n </div>\n ) : null}\n <h1 style={{ margin: \"0.25rem 0 0\", fontSize: \"1.6rem\", fontWeight: 500 }}>\n {product.title}\n </h1>\n </div>\n\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", flexWrap: \"wrap\" }}>\n <span style={{ fontSize: \"1.25rem\" }}>\n {variant ? (\n <PriceMoney money={variant.price} locale={locale} />\n ) : product.price_range ? (\n <PriceMoney\n money={{\n amount_cents: product.price_range.min_cents,\n with_tax_cents: product.price_range.min_cents,\n without_tax_cents: product.price_range.min_cents,\n compare_at_cents: null,\n currency: product.price_range.currency,\n includes_tax: product.market.prices_include_tax,\n }}\n locale={locale}\n />\n ) : null}\n </span>\n <StockBadge variant={variant} hideInStock />\n </div>\n\n <VariantPicker product={product} onChange={setVariant} />\n\n {addToCart ? <div>{addToCart(variant)}</div> : null}\n\n {/* Renders only when the selected variant is out of stock. */}\n <BackInStockForm variant={variant} />\n\n {product.description_html ? (\n <div\n style={{ lineHeight: 1.6 }}\n // Server-projected, sanitized at authoring time in the admin.\n dangerouslySetInnerHTML={{ __html: product.description_html }}\n />\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CollectionPage — collection header + a responsive grid of ProductCards in the\n * collection's curated order. Presentational: the Remix loader fetches the\n * `CollectionDetail` (collection + its products), this renders it. `productHref`\n * lets the eshop own its URL scheme.\n */\n\nimport * as React from \"react\";\nimport type { CollectionDetail, Product } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { ProductCard } from \"./product-card\";\n\nexport interface CollectionPageProps {\n collection: CollectionDetail;\n /** Map a product → its PDP URL (the eshop owns routing). */\n productHref?: (product: Product) => string;\n locale?: string;\n}\n\nexport function CollectionPage({\n collection,\n productHref,\n locale,\n}: CollectionPageProps): React.ReactElement {\n const t = useT();\n return (\n <div style={{ fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <header style={{ marginBottom: \"1.5rem\" }}>\n <h1 style={{ margin: 0, fontSize: \"1.6rem\", fontWeight: 500 }}>\n {collection.title}\n </h1>\n {collection.description_html ? (\n <div\n style={{ marginTop: \"0.5rem\", color: \"var(--nv-muted)\", lineHeight: 1.6 }}\n dangerouslySetInnerHTML={{ __html: collection.description_html }}\n />\n ) : null}\n </header>\n\n {collection.products.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\" }}>{t(\"catalog.noProducts\")}</p>\n ) : (\n <div\n style={{\n display: \"grid\",\n gap: \"1.5rem\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(min(100%, 220px), 1fr))\",\n }}\n >\n {collection.products.map((product) => (\n <ProductCard\n key={product.id}\n product={product}\n href={productHref?.(product)}\n locale={locale}\n />\n ))}\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * Product list filter + sort controls — presentational + controlled. Each holds\n * no state; the parent owns a `ProductListOptions` object, passes the current\n * value in, and re-queries on change. Themeable via `--nv-*`.\n *\n * const [opts, setOpts] = React.useState<ProductListOptions>({ sort: \"newest\" });\n * <SortSelect value={opts.sort} onChange={(sort) => setOpts({ ...opts, sort, offset: 0 })} />\n * // re-run client.catalog.products(opts) when opts changes\n */\n\nimport * as React from \"react\";\nimport type { ProductSort } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"./money\";\n\nconst SORTS: ProductSort[] = [\n \"newest\",\n \"oldest\",\n \"title-asc\",\n \"title-desc\",\n \"price-asc\",\n \"price-desc\",\n];\n\nconst SORT_LABEL: Record<ProductSort, string> = {\n newest: \"catalog.filters.sortNewest\",\n oldest: \"catalog.filters.sortOldest\",\n \"title-asc\": \"catalog.filters.sortTitleAsc\",\n \"title-desc\": \"catalog.filters.sortTitleDesc\",\n \"price-asc\": \"catalog.filters.sortPriceAsc\",\n \"price-desc\": \"catalog.filters.sortPriceDesc\",\n};\n\nconst inputStyle: React.CSSProperties = {\n font: \"inherit\",\n padding: \"0.45rem 0.6rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n};\n\nconst labelStyle: React.CSSProperties = {\n fontSize: \"0.8125rem\",\n color: \"var(--nv-muted)\",\n};\n\nexport interface SortSelectProps {\n value?: ProductSort;\n onChange: (sort: ProductSort) => void;\n}\n\nexport function SortSelect({ value = \"newest\", onChange }: SortSelectProps): React.ReactElement {\n const t = useT();\n return (\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", font: \"inherit\" }}>\n <span style={labelStyle}>{t(\"catalog.filters.sort\")}</span>\n <select\n value={value}\n onChange={(e) => onChange(e.target.value as ProductSort)}\n style={inputStyle}\n >\n {SORTS.map((s) => (\n <option key={s} value={s}>\n {t(SORT_LABEL[s])}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\nexport interface AvailabilityFilterProps {\n checked?: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport function AvailabilityFilter({\n checked = false,\n onChange,\n}: AvailabilityFilterProps): React.ReactElement {\n const t = useT();\n return (\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", font: \"inherit\" }}>\n <input type=\"checkbox\" checked={checked} onChange={(e) => onChange(e.target.checked)} />\n <span style={{ fontSize: \"0.875rem\" }}>{t(\"catalog.filters.inStockOnly\")}</span>\n </label>\n );\n}\n\nexport interface PriceRangeFilterProps {\n /** Current bounds in cents (undefined = open-ended). */\n minCents?: number;\n maxCents?: number;\n currency: string;\n onChange: (minCents: number | undefined, maxCents: number | undefined) => void;\n locale?: string;\n}\n\n/** Two minor-unit (cents) inputs. Emits cents; renders the currency symbol as a\n * hint via the active locale. Empty input → undefined (open-ended). */\nexport function PriceRangeFilter({\n minCents,\n maxCents,\n currency,\n onChange,\n locale,\n}: PriceRangeFilterProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const toMajor = (c?: number) => (c == null ? \"\" : String(Math.round(c / 100)));\n const fromMajor = (v: string): number | undefined => {\n const n = parseInt(v, 10);\n return Number.isFinite(n) && v.trim() !== \"\" ? n * 100 : undefined;\n };\n return (\n <fieldset style={{ border: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\" }}>\n <span style={labelStyle}>\n {t(\"catalog.filters.priceRange\")} ({formatCents(0, currency, loc).replace(/[\\d.,\\s]/g, \"\").trim() || currency})\n </span>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.4rem\" }}>\n <input\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n placeholder={t(\"catalog.filters.min\")}\n aria-label={t(\"catalog.filters.min\")}\n value={toMajor(minCents)}\n onChange={(e) => onChange(fromMajor(e.target.value), maxCents)}\n style={{ ...inputStyle, width: \"5.5rem\" }}\n />\n <span style={{ color: \"var(--nv-muted)\" }}>–</span>\n <input\n type=\"number\"\n inputMode=\"numeric\"\n min={0}\n placeholder={t(\"catalog.filters.max\")}\n aria-label={t(\"catalog.filters.max\")}\n value={toMajor(maxCents)}\n onChange={(e) => onChange(minCents, fromMajor(e.target.value))}\n style={{ ...inputStyle, width: \"5.5rem\" }}\n />\n </div>\n </fieldset>\n );\n}\n\nexport interface TagFilterProps {\n /** All selectable tags (the eshop supplies these, e.g. from its nav). */\n tags: string[];\n selected?: string[];\n onChange: (selected: string[]) => void;\n}\n\n/** Toggleable tag chips. Multi-select; emits the selected list. */\nexport function TagFilter({ tags, selected = [], onChange }: TagFilterProps): React.ReactElement | null {\n const t = useT();\n if (tags.length === 0) return null;\n const set = new Set(selected);\n const toggle = (tag: string) => {\n const next = new Set(set);\n if (next.has(tag)) next.delete(tag);\n else next.add(tag);\n onChange([...next]);\n };\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\" }}>\n <span style={labelStyle}>{t(\"catalog.filters.tags\")}</span>\n <div style={{ display: \"flex\", gap: \"0.4rem\", flexWrap: \"wrap\" }}>\n {tags.map((tag) => {\n const active = set.has(tag);\n return (\n <button\n key={tag}\n type=\"button\"\n aria-pressed={active}\n onClick={() => toggle(tag)}\n style={{\n font: \"inherit\",\n fontSize: \"0.8125rem\",\n cursor: \"pointer\",\n padding: \"0.3rem 0.7rem\",\n borderRadius: \"999px\",\n background: active ? \"var(--nv-brand)\" : \"transparent\",\n color: active ? \"var(--nv-brand-foreground)\" : \"var(--nv-fg)\",\n border: active ? \"1px solid var(--nv-brand)\" : \"1px solid var(--nv-border)\",\n }}\n >\n {tag}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { SubscriptionPlan } from \"@nevios/storefront-js\";\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"./money\";\n\n/** Controlled PDP selector. Pass value to AddToCart.subscriptionPlanId.\n * Plans and prices must come from client.subscriptions.plans(variantId). */\nexport function PurchaseOptions({ plans, value, onChange, disabled, locale }: {\n plans: SubscriptionPlan[]; value: string | null; onChange(planId: string | null): void;\n disabled?: boolean; locale?: string;\n}): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const name = React.useId();\n const options = [{ id: null, name: t(\"subscriptions.once\"), price: undefined }, ...plans];\n return <fieldset disabled={disabled} style={{ border: 0, padding: 0, margin: 0, display: \"grid\", gap: \"0.5rem\" }}>\n <legend style={{ marginBottom: \"0.5rem\", fontWeight: 500 }}>{t(\"subscriptions.purchaseOption\")}</legend>\n {options.map(option => <label key={option.id ?? \"once\"} style={{ display: \"flex\", gap: \"0.6rem\", alignItems: \"center\", padding: \"0.75rem\", border: `1px solid ${value === option.id ? \"var(--nv-fg)\" : \"var(--nv-border)\"}`, borderRadius: \"var(--nv-radius)\", cursor: \"pointer\" }}>\n <input type=\"radio\" name={name} checked={value === option.id} onChange={() => onChange(option.id)} />\n <span style={{ flex: 1 }}>{option.name}</span>\n {option.price ? <span>{formatCents(option.price.amount_cents, option.price.currency, loc)}</span> : null}\n </label>)}\n </fieldset>;\n}\n","\"use client\";\n\n/**\n * CartProvider + useCart — shared cart state for the whole app. The drawer, the\n * PDP add-to-cart, and a header cart count all read the same cart and re-render\n * together. Wraps the SDK's cart namespace (which holds the token) with React\n * state. Mount once inside <NeviosProvider>.\n *\n * <NeviosProvider client={client}>\n * <CartProvider>{app}</CartProvider>\n * </NeviosProvider>\n */\n\nimport * as React from \"react\";\nimport type {\n AddLineInput,\n UpdateCartLineInput,\n Cart,\n} from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface CartState {\n cart: Cart | null;\n /** True while a cart request is in flight. */\n loading: boolean;\n itemCount: number;\n addLine(input: AddLineInput): Promise<Cart>;\n setSubscriptionMix(\n planId: string,\n lines: { variant_id: string; quantity: number }[],\n expectedLineIds: string[],\n ): Promise<Cart>;\n updateLine(\n lineId: string,\n quantity: number | UpdateCartLineInput,\n ): Promise<Cart>;\n removeLine(lineId: string): Promise<Cart>;\n clearSubscription(): Promise<Cart>;\n /** Re-fetch the cart from the server. */\n refresh(): Promise<void>;\n}\n\nconst CartContext = React.createContext<CartState | null>(null);\n\nexport function CartProvider({\n children,\n}: {\n children: React.ReactNode;\n}): React.ReactElement {\n const client = useStorefront();\n const [cart, setCart] = React.useState<Cart | null>(null);\n const [loading, setLoading] = React.useState(false);\n\n const run = React.useCallback(\n async (op: () => Promise<Cart>): Promise<Cart> => {\n setLoading(true);\n try {\n const next = await op();\n setCart(next);\n return next;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n try {\n setCart(await client.cart.get());\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const value = React.useMemo<CartState>(\n () => ({\n cart,\n loading,\n itemCount: cart?.totals.item_count ?? 0,\n addLine: (input) => run(() => client.cart.addLine(input)),\n setSubscriptionMix: (planId, lines, expectedLineIds) =>\n run(() =>\n client.cart.setSubscriptionMix(planId, lines, expectedLineIds, {\n expectedRevision: cart?.subscription?.revision,\n }),\n ),\n updateLine: (lineId, quantity) =>\n run(() => client.cart.updateLine(lineId, quantity)),\n clearSubscription: () => run(() => client.cart.clearSubscription()),\n removeLine: (lineId) => run(() => client.cart.removeLine(lineId)),\n refresh,\n }),\n [cart, loading, client, run, refresh],\n );\n\n return <CartContext.Provider value={value}>{children}</CartContext.Provider>;\n}\n\nexport function useCart(): CartState {\n const ctx = React.useContext(CartContext);\n if (!ctx) {\n throw new Error(\"useCart must be used inside <CartProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\n\n/**\n * AddToCart — the PDP buy button. Bound to a selected variant; adds it to the\n * shared cart. Drop into ProductDetailPage's `addToCart` slot:\n *\n * <ProductDetailPage product={p} addToCart={(v) => <AddToCart variant={v} />} />\n */\n\nimport * as React from \"react\";\nimport type { ProductVariant } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface AddToCartProps {\n variant: ProductVariant | null;\n quantity?: number;\n subscriptionPlanId?: string | null;\n /** Button label. Defaults to \"Add to cart\". */\n children?: React.ReactNode;\n onAdded?: () => void;\n}\n\nexport function AddToCart({\n variant,\n quantity = 1,\n subscriptionPlanId,\n children,\n onAdded,\n}: AddToCartProps): React.ReactElement {\n const t = useT();\n const { addLine } = useCart();\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState<string | null>(null);\n const disabled = variant == null || busy;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={async () => {\n if (variant == null) return;\n setBusy(true);\n setError(null);\n try {\n await addLine({ variant_id: variant.id, quantity, ...(subscriptionPlanId ? { subscription_plan_id: subscriptionPlanId } : {}) });\n onAdded?.();\n } catch (err) {\n // Never fail silently — a dead button reads as a broken store.\n const code = (err as { code?: string } | null)?.code;\n setError(code === \"variant_out_of_stock\" ? t(\"catalog.soldOut\") : t(\"catalog.addError\"));\n } finally {\n setBusy(false);\n }\n }}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: disabled ? \"default\" : \"pointer\",\n padding: \"0.7rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: disabled ? 0.55 : 1,\n }}\n >\n {busy ? t(\"common.loadingShort\") : (children ?? t(\"catalog.addToCart\"))}\n </button>\n {error ? (\n <p role=\"alert\" style={{ margin: 0, fontSize: \"0.8125rem\", color: \"var(--nv-danger, #b91c1c)\" }}>\n {error}\n </p>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CartLineItem — one cart row: thumbnail, title + variant, a quantity stepper,\n * line total, and remove. Wired to the shared cart (update/remove).\n */\n\nimport * as React from \"react\";\nimport type { CartLine } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartLineItemProps {\n line: CartLine;\n locale?: string;\n}\n\nexport function CartLineItem({ line, locale }: CartLineItemProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { cart, updateLine, removeLine } = useCart();\n\n return (\n <div style={{ display: \"flex\", gap: \"0.85rem\", alignItems: \"flex-start\", padding: \"0.75rem 0\" }}>\n <div\n style={{\n width: 64,\n height: 64,\n flex: \"0 0 auto\",\n borderRadius: \"calc(var(--nv-radius) - 4px)\",\n overflow: \"hidden\",\n background: \"color-mix(in oklab, var(--nv-muted) 12%, transparent)\",\n }}\n >\n {line.image_url ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={line.image_url}\n alt={line.title ?? \"\"}\n style={{ width: \"100%\", height: \"100%\", objectFit: \"cover\", display: \"block\" }}\n />\n ) : null}\n </div>\n\n <div style={{ flex: 1, minWidth: 0 }}>\n <div style={{ fontWeight: 500, lineHeight: 1.3 }}>{line.title}</div>\n {line.variant_title ? (\n <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>{line.variant_title}</div>\n ) : null}\n\n {line.subscription_plan_id ? <div style={{ color: \"var(--nv-muted)\", fontSize: \"0.875em\" }}>{cart?.subscription?.plan?.name ?? t(\"subscriptions.title\")}</div> : null}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", marginTop: \"0.5rem\" }}>\n <div\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n }}\n >\n <StepBtn\n label=\"−\"\n onClick={() =>\n line.quantity <= 1\n ? removeLine(line.id)\n : updateLine(line.id, line.quantity - 1)\n }\n />\n <span style={{ minWidth: 28, textAlign: \"center\", fontVariantNumeric: \"tabular-nums\" }}>\n {line.quantity}\n </span>\n <StepBtn label=\"+\" onClick={() => updateLine(line.id, line.quantity + 1)} />\n </div>\n <button\n type=\"button\"\n onClick={() => removeLine(line.id)}\n style={{\n font: \"inherit\",\n fontSize: \"0.8125em\",\n background: \"transparent\",\n border: \"none\",\n color: \"var(--nv-muted)\",\n cursor: \"pointer\",\n padding: 0,\n }}\n >\n {t(\"cart.remove\")}\n </button>\n </div>\n </div>\n\n <div style={{ fontWeight: 500, whiteSpace: \"nowrap\" }}>\n {formatCents(line.line_total_cents, line.unit_price.currency, loc)}\n </div>\n </div>\n );\n}\n\nfunction StepBtn({ label, onClick }: { label: string; onClick: () => void }): React.ReactElement {\n const t = useT();\n return (\n <button\n type=\"button\"\n aria-label={label === \"+\" ? t(\"cart.increaseQty\") : t(\"cart.decreaseQty\")}\n onClick={onClick}\n style={{\n font: \"inherit\",\n width: 30,\n height: 30,\n lineHeight: 1,\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n color: \"var(--nv-fg)\",\n }}\n >\n {label}\n </button>\n );\n}\n","\"use client\";\n\n/**\n * CartSummary — subtotal / tax / total + a checkout CTA. Reads the shared cart.\n * The checkout action is the eshop's (a link to its checkout route, or a\n * callback) — the P3 checkout phase wires it.\n */\n\nimport * as React from \"react\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartSummaryProps {\n /** Checkout button label (defaults to the localized \"Checkout\"). */\n checkoutLabel?: string;\n /** Link to the eshop's checkout route. */\n checkoutHref?: string;\n /** Or a callback (e.g. checkout.create() then navigate). */\n onCheckout?: () => void;\n locale?: string;\n}\n\nexport function CartSummary({\n checkoutLabel,\n checkoutHref,\n onCheckout,\n locale,\n}: CartSummaryProps): React.ReactElement | null {\n const tr = useT();\n const loc = useFormatLocale(locale);\n const { cart } = useCart();\n if (cart == null) return null;\n const t = cart.totals;\n const empty = t.item_count === 0 || cart.subscription?.available === false;\n const cta = checkoutLabel ?? tr(\"cart.checkout\");\n\n const ctaStyle: React.CSSProperties = {\n display: \"block\",\n textAlign: \"center\",\n font: \"inherit\",\n fontWeight: 500,\n cursor: empty ? \"default\" : \"pointer\",\n padding: \"0.75rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n textDecoration: \"none\",\n opacity: empty ? 0.55 : 1,\n };\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <Row label={tr(\"cart.subtotal\")} value={formatCents(t.subtotal_with_tax_cents, t.currency, loc)} />\n {t.tax_cents > 0 ? (\n <Row label={tr(\"cart.tax\")} value={formatCents(t.tax_cents, t.currency, loc)} muted />\n ) : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"cart.total\")} value={formatCents(t.total_cents, t.currency, loc)} strong />\n\n {cart.subscription?.error ? <p role=\"alert\" style={{ margin: 0 }}>{cart.subscription.error.message}</p> : null}\n {checkoutHref && !empty ? (\n <a href={checkoutHref} style={ctaStyle}>\n {cta}\n </a>\n ) : (\n <button type=\"button\" disabled={empty} onClick={onCheckout} style={ctaStyle}>\n {cta}\n </button>\n )}\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 500 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.05em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CartDrawer — a slide-in panel with the cart lines + summary. Controlled\n * (`open`/`onClose`). Reads the shared cart; the checkout CTA is passed through\n * to CartSummary.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { CartLineItem } from \"./cart-line-item\";\nimport { CartSummary, type CartSummaryProps } from \"./cart-summary\";\nimport { useCart } from \"./cart-context\";\n\nexport interface CartDrawerProps extends CartSummaryProps {\n open: boolean;\n onClose: () => void;\n /** Drawer heading (defaults to the localized \"Cart\"). */\n title?: string;\n}\n\nexport function CartDrawer({\n open,\n onClose,\n title,\n ...summary\n}: CartDrawerProps): React.ReactElement | null {\n const t = useT();\n const { cart, loading } = useCart();\n const heading = title ?? t(\"cart.title\");\n if (!open) return null;\n const lines = cart?.line_items ?? [];\n\n return (\n <div\n role=\"dialog\"\n aria-label={heading}\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 1000,\n background: \"rgba(0,0,0,0.4)\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n }}\n >\n <div\n onClick={(e) => e.stopPropagation()}\n style={{\n width: \"min(420px, 100%)\",\n height: \"100%\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n fontFamily: \"var(--nv-font)\",\n display: \"flex\",\n flexDirection: \"column\",\n boxShadow: \"-8px 0 24px rgba(0,0,0,0.12)\",\n }}\n >\n <header\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"1rem 1.25rem\",\n borderBottom: \"1px solid var(--nv-border)\",\n }}\n >\n <strong style={{ fontWeight: 500 }}>{heading}</strong>\n <button\n type=\"button\"\n aria-label={t(\"common.close\")}\n onClick={onClose}\n style={{ font: \"inherit\", background: \"transparent\", border: \"none\", cursor: \"pointer\", fontSize: \"1.25rem\" }}\n >\n ×\n </button>\n </header>\n\n <div style={{ flex: 1, overflowY: \"auto\", padding: \"0 1.25rem\" }}>\n {lines.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\", padding: \"2rem 0\", textAlign: \"center\" }}>\n {loading ? t(\"common.loadingShort\") : t(\"cart.empty\")}\n </p>\n ) : (\n lines.map((line, i) => (\n <div\n key={line.id}\n style={i > 0 ? { borderTop: \"1px solid var(--nv-border)\" } : undefined}\n >\n <CartLineItem line={line} locale={summary.locale} />\n </div>\n ))\n )}\n </div>\n\n {lines.length > 0 ? (\n <div style={{ padding: \"1.25rem\", borderTop: \"1px solid var(--nv-border)\" }}>\n <CartSummary {...summary} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CheckoutProvider + useCheckout — shared checkout state for the flow. Wraps the\n * SDK's checkout namespace (which holds the token, created from the cart token)\n * with React state, so AddressForm, ShippingPicker, PaymentSection, and\n * OrderSummary all read and mutate the same checkout and re-render together.\n *\n * Mount inside <NeviosProvider> on the checkout route:\n * <CheckoutProvider>{<CheckoutFlow />}</CheckoutProvider>\n *\n * The provider resumes an in-progress checkout from the stored token on mount;\n * call `create(cartToken)` from the cart's \"Checkout\" CTA to start one.\n */\n\nimport * as React from \"react\";\nimport type {\n Checkout,\n SubscriptionAcceptance,\n SubscriptionEnrollmentResult,\n SubscriptionPayment,\n SubscriptionQuote,\n SubscriptionSelection,\n CreateCheckoutInput,\n PaymentMethod,\n SetAddressInput,\n ShippingQuote,\n} from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\n/** Outcome of `pay()` — a gateway redirect, or a placed order. */\nexport type PayResult =\n | { kind: \"redirect\"; url: string }\n | { kind: \"order\"; checkout: Checkout }\n | { kind: \"subscription\"; subscription: SubscriptionEnrollmentResult }\n | { kind: \"subscription_payment\"; payment: SubscriptionPayment };\n\nexport interface PayOptions {\n /** Explicit acceptance of the currently displayed recurring quote. */\n subscription?: SubscriptionAcceptance;\n /** Where the gateway returns the customer after paying. */\n returnUrl?: string;\n /** Where the gateway returns the customer on cancel. */\n cancelUrl?: string;\n /** Idempotency key for the place-order call. Defaults to the checkout token,\n * which makes completing the same checkout retry-safe. */\n idempotencyKey?: string;\n /** Redirect the browser to the gateway automatically (gateway methods only).\n * Default true; pass false to handle the redirect yourself. */\n redirect?: boolean;\n}\n\nexport interface CheckoutState {\n selectSubscription(selection: SubscriptionSelection): Promise<SubscriptionQuote>;\n clearSubscription(): Promise<Checkout>;\n reviewSubscription(): Promise<SubscriptionQuote>;\n checkout: Checkout | null;\n /** True while a checkout request is in flight. */\n loading: boolean;\n /** The last error from a checkout op (cleared on the next successful op). */\n error: Error | null;\n /** Snapshot the cart into a fresh checkout and hold its token. */\n create(cartToken: string, input?: CreateCheckoutInput): Promise<Checkout>;\n /** Set email + shipping (and optional billing) address. */\n setAddress(input: SetAddressInput): Promise<Checkout>;\n /** Available shipping options for the current address. */\n shippingQuotes(): Promise<ShippingQuote[]>;\n /** Choose a shipping method + rate. */\n setShippingMethod(methodId: string, rateId: string): Promise<Checkout>;\n /** Apply / remove a discount code. */\n applyDiscount(code: string): Promise<Checkout>;\n removeDiscount(code: string): Promise<Checkout>;\n /** Enabled payment methods for the market — the picker rows. */\n paymentMethods(): Promise<PaymentMethod[]>;\n /** Choose a payment method (folds any surcharge into the total). */\n setPaymentMethod(method: string): Promise<Checkout>;\n /** Place the order. Gateway methods start the payment and (by default)\n * redirect the browser to the gateway; cod/bank/manual complete directly. */\n pay(opts?: PayOptions): Promise<PayResult>;\n /** Re-fetch the checkout from the server. */\n refresh(): Promise<void>;\n /** Forget the checkout token (e.g. after the order is placed). */\n clear(): void;\n}\n\nconst CheckoutContext = React.createContext<CheckoutState | null>(null);\n\nexport function CheckoutProvider({\n children,\n}: {\n children: React.ReactNode;\n}): React.ReactElement {\n const client = useStorefront();\n const [checkout, setCheckout] = React.useState<Checkout | null>(null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n /** Run a checkout op: toggle loading, capture errors, store the new checkout\n * when the op returns one. */\n const run = React.useCallback(\n async <T,>(op: () => Promise<T>, store: (r: T) => Checkout | null): Promise<T> => {\n setLoading(true);\n try {\n const result = await op();\n const next = store(result);\n if (next) setCheckout(next);\n setError(null);\n return result;\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n throw err;\n } finally {\n setLoading(false);\n }\n },\n [],\n );\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n try {\n setCheckout(await client.checkout.get());\n setError(null);\n } catch (err) {\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const pay = React.useCallback(\n async (opts: PayOptions = {}): Promise<PayResult> => {\n const co = checkout;\n if (!co) throw new Error(\"pay() called before a checkout exists\");\n const idempotencyKey = opts.idempotencyKey ?? co.token;\n if (co.subscription) {\n if (co.subscription.subscription_id) {\n const payment = await run(() => client.checkout.subscriptionPayment(), () => null);\n setCheckout(await client.checkout.get());\n return { kind: \"subscription_payment\", payment };\n }\n if (!opts.subscription) throw new Error(\"Accept the current subscription terms before paying\");\n const subscription = await run(() => client.checkout.enrollSubscription(opts.subscription!), () => null);\n // Do not retry/confirm a PaymentIntent here: the merchant's Stripe.js\n // handler owns payment entry and explicit customer action.\n setCheckout(await client.checkout.get());\n return { kind: \"subscription\", subscription };\n }\n\n\n if (co.payment_category === \"gateway\") {\n const start = await run(\n () => client.checkout.startPayment({ return_url: opts.returnUrl, cancel_url: opts.cancelUrl }),\n () => null,\n );\n if (!start.redirect_url) throw new Error(\"gateway returned no redirect_url\");\n const shouldRedirect = opts.redirect !== false && typeof window !== \"undefined\";\n if (shouldRedirect) window.location.assign(start.redirect_url);\n return { kind: \"redirect\", url: start.redirect_url };\n }\n\n const done = await run(\n () => client.checkout.complete({ idempotencyKey }),\n (r) => r,\n );\n return { kind: \"order\", checkout: done };\n },\n [checkout, client, run],\n );\n\n const value = React.useMemo<CheckoutState>(\n () => ({\n checkout,\n loading,\n error,\n selectSubscription: (selection) => run(async () => {\n const quote = await client.checkout.selectSubscription(selection);\n setCheckout(await client.checkout.get());\n return quote;\n }, () => null),\n clearSubscription: () => run(() => client.checkout.clearSubscription(), r => r),\n reviewSubscription: () => run(() => client.checkout.reviewSubscription(), () => null),\n create: (cartToken, input) =>\n run(() => client.checkout.create(cartToken, input), (r) => r),\n setAddress: (input) => run(() => client.checkout.setAddress(input), (r) => r),\n shippingQuotes: () => run(() => client.checkout.shippingQuotes(), () => null),\n setShippingMethod: (methodId, rateId) =>\n run(() => client.checkout.setShippingMethod(methodId, rateId), (r) => r),\n applyDiscount: (code) => run(() => client.checkout.applyDiscount(code), (r) => r),\n removeDiscount: (code) => run(() => client.checkout.removeDiscount(code), (r) => r),\n paymentMethods: () => run(() => client.checkout.paymentMethods(), () => null),\n setPaymentMethod: (method) =>\n run(() => client.checkout.setPaymentMethod(method), (r) => r),\n pay,\n refresh,\n clear: () => {\n client.checkout.clear();\n setCheckout(null);\n },\n }),\n [checkout, loading, error, client, run, pay, refresh],\n );\n\n return <CheckoutContext.Provider value={value}>{children}</CheckoutContext.Provider>;\n}\n\nexport function useCheckout(): CheckoutState {\n const ctx = React.useContext(CheckoutContext);\n if (!ctx) {\n throw new Error(\"useCheckout must be used inside <CheckoutProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\n\n/**\n * Small presentational primitives shared by the checkout step components —\n * labelled input, primary button, and a selectable row (for shipping / payment\n * pickers). All themeable via `--nv-*` tokens. Internal to the checkout slice.\n */\n\nimport * as React from \"react\";\n\nexport interface FieldProps extends React.InputHTMLAttributes<HTMLInputElement> {\n label: string;\n}\n\nexport function Field({ label, style, ...input }: FieldProps): React.ReactElement {\n return (\n <label style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\", flex: 1 }}>\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>{label}</span>\n <input\n {...input}\n style={{\n font: \"inherit\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n width: \"100%\",\n boxSizing: \"border-box\",\n ...style,\n }}\n />\n </label>\n );\n}\n\n/** A horizontal group of fields (wraps on narrow screens). */\nexport function FieldRow({ children }: { children: React.ReactNode }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", gap: \"0.75rem\", flexWrap: \"wrap\" }}>{children}</div>\n );\n}\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n busy?: boolean;\n}\n\nexport function Button({\n busy,\n disabled,\n children,\n style,\n ...rest\n}: ButtonProps): React.ReactElement {\n const off = disabled || busy;\n return (\n <button\n type=\"button\"\n disabled={off}\n {...rest}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: off ? \"default\" : \"pointer\",\n padding: \"0.75rem 1.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: off ? 0.55 : 1,\n ...style,\n }}\n >\n {busy ? \"…\" : children}\n </button>\n );\n}\n\nexport interface SelectRowProps {\n selected: boolean;\n onSelect(): void;\n /** Left side — name / description. */\n children: React.ReactNode;\n /** Right side — price / detail. */\n trailing?: React.ReactNode;\n disabled?: boolean;\n}\n\n/** A radio-style selectable row used by the shipping + payment pickers. */\nexport function SelectRow({\n selected,\n onSelect,\n children,\n trailing,\n disabled,\n}: SelectRowProps): React.ReactElement {\n return (\n <button\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={disabled}\n onClick={onSelect}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"0.75rem\",\n width: \"100%\",\n textAlign: \"left\",\n font: \"inherit\",\n cursor: disabled ? \"default\" : \"pointer\",\n padding: \"0.85rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: `1px solid ${selected ? \"var(--nv-brand)\" : \"var(--nv-border)\"}`,\n boxShadow: selected ? \"0 0 0 1px var(--nv-brand) inset\" : \"none\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n opacity: disabled ? 0.55 : 1,\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"0.6rem\" }}>\n <span\n aria-hidden\n style={{\n width: \"1rem\",\n height: \"1rem\",\n borderRadius: \"50%\",\n border: `1px solid ${selected ? \"var(--nv-brand)\" : \"var(--nv-border)\"}`,\n background: selected\n ? \"radial-gradient(var(--nv-brand) 0 45%, transparent 50%)\"\n : \"transparent\",\n flexShrink: 0,\n }}\n />\n <span>{children}</span>\n </span>\n {trailing != null ? (\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{trailing}</span>\n ) : null}\n </button>\n );\n}\n\n/** A titled step section wrapper. */\nexport function Section({\n title,\n children,\n}: {\n title: string;\n children: React.ReactNode;\n}): React.ReactElement {\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.85rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.05rem\", fontWeight: 600 }}>{title}</h2>\n {children}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * AddressForm — collects email + shipping address (the checkout's first step).\n * On submit it calls `setAddress` on the shared checkout, then `onComplete`.\n * Controlled locally; seeds from the checkout if one already has an address\n * (resumed flow). Billing defaults to the shipping address (same_as_shipping).\n */\n\nimport * as React from \"react\";\nimport type { Address } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, Field, FieldRow, Section } from \"./ui\";\n\nexport interface AddressFormProps {\n /** Override the section heading (defaults to the localized \"Shipping address\"). */\n title?: string;\n /** Override the submit label (defaults to the localized \"Continue to shipping\"). */\n submitLabel?: string;\n /** Called after the address is saved. */\n onComplete?: () => void;\n}\n\ntype FormState = {\n email: string;\n first_name: string;\n last_name: string;\n company: string;\n address1: string;\n address2: string;\n city: string;\n postal_code: string;\n country_code: string;\n phone: string;\n};\n\nconst EMPTY: FormState = {\n email: \"\",\n first_name: \"\",\n last_name: \"\",\n company: \"\",\n address1: \"\",\n address2: \"\",\n city: \"\",\n postal_code: \"\",\n country_code: \"\",\n phone: \"\",\n};\n\nfunction seed(email: string | null, addr: Address | null): FormState {\n return {\n ...EMPTY,\n email: email ?? \"\",\n first_name: (addr?.first_name as string) ?? \"\",\n last_name: (addr?.last_name as string) ?? \"\",\n company: (addr?.company as string) ?? \"\",\n address1: (addr?.address1 as string) ?? \"\",\n address2: (addr?.address2 as string) ?? \"\",\n city: (addr?.city as string) ?? \"\",\n postal_code: (addr?.postal_code as string) ?? \"\",\n country_code: (addr?.country_code as string) ?? \"\",\n phone: (addr?.phone as string) ?? \"\",\n };\n}\n\nexport function AddressForm({\n title,\n submitLabel,\n onComplete,\n}: AddressFormProps): React.ReactElement {\n const t = useT();\n const { checkout, setAddress, loading } = useCheckout();\n const [form, setForm] = React.useState<FormState>(() =>\n seed(checkout?.email ?? null, checkout?.shipping_address ?? null),\n );\n\n const touched = React.useRef(new Set<keyof FormState>());\n // Late account/default data fills only untouched fields; never replace a draft.\n React.useEffect(() => {\n const prefill = checkout?.customer_prefill;\n const addresses = prefill?.addresses.filter((a) => !a.is_pickup);\n const saved = addresses?.find((a) => a.is_default) ?? addresses?.[0];\n const address = checkout?.shipping_address ?? (saved ? { ...saved, postal_code: saved.zip } : null);\n const defaults = seed(checkout?.email ?? prefill?.email ?? null, address as Address | null);\n defaults.first_name ||= prefill?.first_name ?? \"\";\n defaults.last_name ||= prefill?.last_name ?? \"\";\n defaults.phone ||= prefill?.phone ?? \"\";\n setForm((current) => Object.fromEntries(Object.entries(current).map(([key, value]) =>\n [key, touched.current.has(key as keyof FormState) ? value : value || defaults[key as keyof FormState]])) as FormState);\n }, [checkout?.token]);\n\n const set = (key: keyof FormState) => (e: React.ChangeEvent<HTMLInputElement>) =>\n { touched.current.add(key); setForm((f) => ({ ...f, [key]: e.target.value })); }\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n const { email, ...rest } = form;\n await setAddress({\n email,\n shipping_address: rest as Address,\n same_as_shipping: true,\n });\n onComplete?.();\n }\n\n return (\n <form onSubmit={submit}>\n <Section title={title ?? t(\"checkout.shippingAddress\")}>\n <Field label={t(\"checkout.email\")} type=\"email\" required value={form.email} onChange={set(\"email\")} autoComplete=\"email\" />\n <FieldRow>\n <Field label={t(\"checkout.firstName\")} required value={form.first_name} onChange={set(\"first_name\")} autoComplete=\"given-name\" />\n <Field label={t(\"checkout.lastName\")} required value={form.last_name} onChange={set(\"last_name\")} autoComplete=\"family-name\" />\n </FieldRow>\n <Field label={t(\"checkout.company\")} value={form.company} onChange={set(\"company\")} autoComplete=\"organization\" />\n <Field label={t(\"checkout.address\")} required value={form.address1} onChange={set(\"address1\")} autoComplete=\"address-line1\" />\n <Field label={t(\"checkout.apartment\")} value={form.address2} onChange={set(\"address2\")} autoComplete=\"address-line2\" />\n <FieldRow>\n <Field label={t(\"checkout.city\")} required value={form.city} onChange={set(\"city\")} autoComplete=\"address-level2\" />\n <Field label={t(\"checkout.postalCode\")} required value={form.postal_code} onChange={set(\"postal_code\")} autoComplete=\"postal-code\" />\n <Field\n label={t(\"checkout.country\")}\n required\n value={form.country_code}\n onChange={set(\"country_code\")}\n placeholder=\"CZ\"\n autoComplete=\"country\"\n maxLength={2}\n style={{ textTransform: \"uppercase\", maxWidth: \"6rem\" }}\n />\n </FieldRow>\n <Field label={t(\"checkout.phone\")} type=\"tel\" value={form.phone} onChange={set(\"phone\")} autoComplete=\"tel\" />\n <div>\n <Button type=\"submit\" busy={loading}>\n {submitLabel ?? t(\"checkout.continueToShipping\")}\n </Button>\n </div>\n </Section>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * ShippingPicker — fetches the shipping options for the checkout's address and\n * lets the customer pick one. Selecting a row calls `setShippingMethod` (which\n * recomputes totals). Requires the address step to be done first.\n */\n\nimport * as React from \"react\";\nimport type { ShippingQuote } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, SelectRow, Section } from \"./ui\";\n\nexport interface ShippingPickerProps {\n /** Override the section heading (defaults to the localized \"Shipping method\"). */\n title?: string;\n /** Override the submit label (defaults to \"Continue to payment\"). */\n submitLabel?: string;\n /** Called once a method is selected and saved. */\n onComplete?: () => void;\n locale?: string;\n}\n\nexport function ShippingPicker({\n title,\n submitLabel,\n onComplete,\n locale,\n}: ShippingPickerProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { checkout, shippingQuotes, setShippingMethod, loading } = useCheckout();\n const heading = title ?? t(\"checkout.shippingMethod\");\n const [quotes, setQuotes] = React.useState<ShippingQuote[] | null>(null);\n const [selected, setSelected] = React.useState<string | null>(null);\n const [fetching, setFetching] = React.useState(true);\n\n // Load quotes once the address is in place; re-load if it changes.\n const addressKey = checkout?.shipping_address\n ? `${checkout.shipping_address.country_code}:${checkout.shipping_address.postal_code}`\n : null;\n React.useEffect(() => {\n let live = true;\n setFetching(true);\n shippingQuotes()\n .then((qs) => {\n if (!live) return;\n setQuotes(qs);\n // Pre-select the saved method (best-effort match on display name).\n const savedLabel = checkout?.shipping_method?.rate_display_name;\n const match = savedLabel ? qs.find((q) => q.label === savedLabel) : undefined;\n setSelected(match?.rate_id ?? (qs.length === 1 ? qs[0].rate_id : null));\n })\n .catch(() => live && setQuotes([]))\n .finally(() => live && setFetching(false));\n return () => {\n live = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addressKey]);\n\n async function submit() {\n const q = quotes?.find((x) => x.rate_id === selected);\n if (!q) return;\n await setShippingMethod(q.method_id, q.rate_id);\n onComplete?.();\n }\n\n if (fetching && quotes == null) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.loadingShipping\")}</p>\n </Section>\n );\n }\n\n if (!quotes || quotes.length === 0) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.noShipping\")}</p>\n </Section>\n );\n }\n\n return (\n <Section title={heading}>\n <div role=\"radiogroup\" style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.6rem\" }}>\n {quotes.map((q) => {\n return (\n <SelectRow\n key={q.rate_id}\n selected={selected === q.rate_id}\n onSelect={() => setSelected(q.rate_id)}\n trailing={q.is_free ? t(\"common.free\") : formatCents(q.price_cents, q.currency, loc)}\n >\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ fontWeight: 500 }}>{q.label}</span>\n </span>\n </SelectRow>\n );\n })}\n </div>\n <div>\n <Button onClick={submit} busy={loading} disabled={selected == null}>\n {submitLabel ?? t(\"checkout.continueToPayment\")}\n </Button>\n </div>\n </Section>\n );\n}\n\n","\"use client\";\n\n/**\n * PaymentMethodPicker — the ONE payment picker in the kit.\n *\n * Used by both the checkout's payment step and the payment page, and that is\n * the whole point of it existing separately: switching from card to transfer\n * has to look identical in the shop and on the page a customer reaches from an\n * e-mail two days later. Two pickers that drift make the second one feel like\n * somebody else's site — at the exact moment the customer is deciding whether\n * to send money.\n *\n * The surcharge rides on the row because it is the consequence of the choice.\n * Cash on delivery costs 39 Kč more; a picker that hides that until the total\n * moves has let the shopper choose blind.\n */\n\nimport * as React from \"react\";\nimport type { PaymentMethod } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { SelectRow } from \"../checkout/ui\";\n\nexport interface PaymentMethodPickerProps {\n methods: PaymentMethod[];\n /** The chosen method's key (`PaymentMethod.method`), or null when none is. */\n value: string | null;\n onSelect(method: string): void;\n /** Currency of the order/checkout — the surcharge is formatted in it. */\n currency: string;\n locale?: string;\n /** Renders the rows unselectable (e.g. while a switch is in flight). */\n disabled?: boolean;\n /** Accessible name for the group. */\n label?: string;\n}\n\nexport function PaymentMethodPicker({\n methods,\n value,\n onSelect,\n currency,\n locale,\n disabled,\n label,\n}: PaymentMethodPickerProps): React.ReactElement {\n const loc = useFormatLocale(locale);\n return (\n <div\n role=\"radiogroup\"\n aria-label={label}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.6rem\" }}\n >\n {methods.map((m) => (\n <SelectRow\n key={m.method}\n selected={value === m.method}\n disabled={disabled}\n onSelect={() => onSelect(m.method)}\n trailing={\n m.surcharge_cents > 0\n ? `+${formatCents(m.surcharge_cents, currency, loc)}`\n : undefined\n }\n >\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ fontWeight: 500 }}>{m.display_label}</span>\n {m.display_description ? (\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {m.display_description}\n </span>\n ) : null}\n </span>\n </SelectRow>\n ))}\n </div>\n );\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { SubscriptionQuote } from \"@nevios/storefront-js\";\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\n\n/** Displays the exact server quote. Never pre-check consent or calculate a discount. */\nexport function SubscriptionTerms({ quote, checked, onChange, locale }: {\n quote: SubscriptionQuote; checked: boolean; onChange(checked: boolean): void; locale?: string;\n}): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n return <fieldset style={{ margin: 0, padding: \"1rem\", border: \"1px solid var(--nv-border)\", borderRadius: \"var(--nv-radius)\" }}>\n <legend>{t(\"subscriptions.title\")}</legend>\n <p style={{ margin: \"0 0 0.5rem\", fontWeight: 500 }}>{t(\"subscriptions.eachDelivery\")}: {formatCents(quote.recurring_total_cents, quote.currency, loc)}</p>\n <p style={{ margin: \"0 0 0.75rem\", whiteSpace: \"pre-wrap\" }}>{quote.terms_text}</p>\n <label style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"0.6rem\", cursor: \"pointer\" }}>\n <input type=\"checkbox\" checked={checked} onChange={event => onChange(event.target.checked)} />\n <span>{t(\"subscriptions.consent\")}</span>\n </label>\n </fieldset>;\n}\n","\"use client\";\n\n/**\n * PaymentSection — lists the enabled payment methods, lets the customer pick\n * one, and places the order. The category drives the final action:\n * • gateway → `pay()` starts the payment and redirects to the gateway\n * • cod/bank/manual → `pay()` completes the order directly → `onOrderPlaced`\n * Recurring Stripe payments use the merchant's Stripe.js callback.\n */\n\nimport * as React from \"react\";\nimport type { Checkout, PaymentMethod, SubscriptionPayment } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { PaymentMethodPicker } from \"../payment/method-picker\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, Section } from \"./ui\";\nimport { SubscriptionTerms } from \"./subscription-terms\";\n\nexport interface PaymentSectionProps {\n title?: string;\n /** Where the gateway returns the customer after paying (gateway methods).\n * Defaults to the current URL. */\n returnUrl?: string;\n cancelUrl?: string;\n /** Called when a non-gateway order is placed (gateway flows redirect away). */\n onOrderPlaced?: (checkout: Checkout) => void;\n locale?: string;\n /** Confirm the returned intent using your Stripe.js Payment Element. */\n onSubscriptionPayment?: (payment: SubscriptionPayment) => void | Promise<void>;\n}\n\nexport function PaymentSection({\n title,\n returnUrl,\n cancelUrl,\n onOrderPlaced,\n locale,\n onSubscriptionPayment,\n}: PaymentSectionProps): React.ReactElement {\n const t = useT();\n const heading = title ?? t(\"checkout.payment\");\n const { checkout, paymentMethods, setPaymentMethod, pay, loading, refresh } = useCheckout();\n const [methods, setMethods] = React.useState<PaymentMethod[] | null>(null);\n const [fetching, setFetching] = React.useState(true);\n const selected = checkout?.payment_method ?? null;\n const [acceptedDigest, setAcceptedDigest] = React.useState<string | null>(null);\n const [actionBusy, setActionBusy] = React.useState(false);\n const quote = checkout?.subscription?.quote;\n const needsConsent = Boolean(checkout?.subscription?.requires_consent);\n const clickInFlight = React.useRef(false);\n const [actionError, setActionError] = React.useState<string | null>(null);\n const accepted = Boolean(quote && acceptedDigest === quote.quote_digest);\n\n React.useEffect(() => {\n let live = true;\n setFetching(true);\n paymentMethods()\n .then((ms) => {\n if (!live) return;\n setMethods(ms);\n // Auto-select if the merchant offers exactly one method.\n if (ms.length === 1 && checkout?.payment_method == null) {\n void setPaymentMethod(ms[0].method);\n }\n })\n .catch(() => live && setMethods([]))\n .finally(() => live && setFetching(false));\n return () => {\n live = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [checkout?.token, checkout?.shipping_method_id, checkout?.subscription?.selection.plan_id]);\n\n const selectedMethod = methods?.find((m) => m.method === selected) ?? null;\n const isGateway = selectedMethod?.category === \"gateway\";\n\n async function placeOrder() {\n if (clickInFlight.current) return;\n clickInFlight.current = true;\n setActionBusy(true);\n setActionError(null);\n try {\n const result = await pay({ returnUrl, cancelUrl,\n ...(needsConsent && quote && accepted ? { subscription: { quote, consent: true as const } } : {}),\n });\n if (result.kind === \"subscription\") await onSubscriptionPayment?.(result.subscription.payment);\n if (result.kind === \"subscription_payment\") await onSubscriptionPayment?.(result.payment);\n if (result.kind === \"subscription\" || result.kind === \"subscription_payment\") await refresh();\n if (result.kind === \"order\") onOrderPlaced?.(result.checkout);\n } catch (err) {\n setActionError(err instanceof Error ? err.message : String(err));\n } finally { clickInFlight.current = false; setActionBusy(false); }\n }\n\n if (fetching && methods == null) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.loadingPayment\")}</p>\n </Section>\n );\n }\n\n if (!methods || methods.length === 0) {\n return (\n <Section title={heading}>\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"checkout.noPayment\")}</p>\n </Section>\n );\n }\n\n return (\n <Section title={heading}>\n {/* The same picker the payment page renders — see payment/method-picker. */}\n <PaymentMethodPicker\n methods={methods}\n value={selected}\n onSelect={(method) => void setPaymentMethod(method)}\n currency={checkout?.totals.currency ?? \"CZK\"}\n locale={locale}\n label={heading}\n />\n {quote && needsConsent ? <SubscriptionTerms locale={locale} quote={quote} checked={accepted} onChange={value => setAcceptedDigest(value && quote ? quote.quote_digest : null)} /> : null}\n {checkout?.subscription?.error ? <p role=\"alert\">{checkout.subscription.error.message}</p> : null}\n {actionError ? <p role=\"alert\">{actionError}</p> : null}\n <div>\n <Button onClick={placeOrder} busy={loading || actionBusy} disabled={selected == null || (Boolean(checkout?.subscription) && ((needsConsent && (!accepted || !quote)) || !onSubscriptionPayment || !checkout?.subscription?.available))}>\n {isGateway ? t(\"checkout.payNow\") : t(\"checkout.placeOrder\")}\n </Button>\n {isGateway && !checkout?.subscription ? (\n <p style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\", marginTop: \"0.6rem\" }}>\n {t(\"checkout.gatewayRedirectNote\")}\n </p>\n ) : null}\n </div>\n </Section>\n );\n}\n","\"use client\";\n\n/**\n * OrderSummary — the checkout's running total: line items + the full breakdown\n * (subtotal · discount · shipping · tax · surcharge · total). Reads the shared\n * checkout; pass `checkout` explicitly to render it standalone (e.g. SSR).\n */\n\nimport * as React from \"react\";\nimport type { Checkout } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\n\nexport interface OrderSummaryProps {\n /** Override the shared checkout (else read from <CheckoutProvider>). */\n checkout?: Checkout;\n /** Hide the line items, show totals only. */\n totalsOnly?: boolean;\n locale?: string;\n}\n\nexport function OrderSummary({\n checkout: override,\n totalsOnly = false,\n locale,\n}: OrderSummaryProps): React.ReactElement | null {\n // Read context unconditionally (hooks rule); prefer the explicit prop.\n const tr = useT();\n const loc = useFormatLocale(locale);\n const ctx = useCheckout();\n const checkout = override ?? ctx.checkout;\n if (checkout == null) return null;\n\n const t = checkout.totals;\n const c = t.currency;\n const money = (cents: number) => formatCents(cents, c, loc);\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\" }}>\n {!totalsOnly && checkout.line_items.length > 0 ? (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n {checkout.line_items.map((li) => (\n <li key={li.id} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n {li.image_url ? (\n <img\n src={li.image_url}\n alt=\"\"\n width={48}\n height={48}\n style={{ borderRadius: \"var(--nv-radius)\", objectFit: \"cover\", flexShrink: 0 }}\n />\n ) : null}\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{li.title}</span>\n {li.variant_title ? (\n <span style={{ display: \"block\", fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {li.variant_title}\n </span>\n ) : null}\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>×{li.quantity}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{money(li.line_total_cents)}</span>\n </li>\n ))}\n </ul>\n ) : null}\n\n {!totalsOnly ? <div style={{ height: 1, background: \"var(--nv-border)\" }} /> : null}\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <Row label={tr(\"totals.subtotal\")} value={money(t.subtotal_with_tax_cents)} />\n {t.discount_cents > 0 ? <Row label={tr(\"totals.discount\")} value={`−${money(t.discount_cents)}`} muted /> : null}\n {checkout.shipping_method != null || t.shipping_cents > 0 ? (\n <Row label={tr(\"totals.shipping\")} value={t.shipping_cents > 0 ? money(t.shipping_cents) : tr(\"common.free\")} muted />\n ) : null}\n {t.surcharge_cents > 0 ? <Row label={tr(\"totals.paymentFee\")} value={money(t.surcharge_cents)} muted /> : null}\n {t.tax_cents > 0 ? <Row label={tr(\"totals.taxIncluded\")} value={money(t.tax_cents)} muted /> : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"totals.total\")} value={money(t.total_cents)} strong />\n </div>\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 600 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.1em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * CheckoutFlow — the multi-step checkout, composed: address → shipping →\n * payment, with a live OrderSummary alongside. Drop it onto your checkout route\n * inside <CheckoutProvider>; it resumes the checkout from the stored token.\n *\n * <CheckoutProvider>\n * <CheckoutFlow onOrderPlaced={(c) => navigate(`/order/${c.order_id}`)} />\n * </CheckoutProvider>\n *\n * Each step is a standalone component (AddressForm / ShippingPicker /\n * PaymentSection) — use them directly for a fully custom layout.\n */\n\nimport * as React from \"react\";\nimport type { Checkout, SubscriptionPayment } from \"@nevios/storefront-js\";\n\nimport { useT, type MessageKey } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { AddressForm } from \"./address-form\";\nimport { ShippingPicker } from \"./shipping-picker\";\nimport { PaymentSection } from \"./payment-section\";\nimport { OrderSummary } from \"./order-summary\";\n\ntype Step = \"address\" | \"shipping\" | \"payment\";\n\nconst STEPS: Step[] = [\"address\", \"shipping\", \"payment\"];\nconst STEP_KEY: Record<Step, MessageKey> = {\n address: \"checkout.stepAddress\",\n shipping: \"checkout.stepShipping\",\n payment: \"checkout.stepPayment\",\n};\n\nexport interface CheckoutFlowProps {\n /** If set and no checkout exists yet, create one from this cart token. */\n cartToken?: string;\n /** Confirm with Stripe.js, then the flow refreshes the server payment state. */\n onSubscriptionPayment?: (payment: SubscriptionPayment) => void | Promise<void>;\n /** Called when a (non-gateway) order is placed. Gateway flows redirect away\n * before this fires. */\n onOrderPlaced?: (checkout: Checkout) => void;\n /** Rendered when there's nothing to check out (no checkout, no cart token). */\n emptyState?: React.ReactNode;\n /** Rendered after a successful order (else a default confirmation). */\n renderConfirmation?: (checkout: Checkout) => React.ReactNode;\n /** Gateway return/cancel URLs (forwarded to PaymentSection). */\n returnUrl?: string;\n cancelUrl?: string;\n locale?: string;\n}\n\n/** Where the checkout currently stands, from its server state. */\nfunction reachedStep(checkout: Checkout | null): Step {\n if (!checkout) return \"address\";\n if (checkout.shipping_method != null) return \"payment\";\n if (checkout.shipping_address != null) return \"shipping\";\n return \"address\";\n}\n\nexport function CheckoutFlow({\n cartToken,\n onSubscriptionPayment,\n onOrderPlaced,\n emptyState,\n renderConfirmation,\n returnUrl,\n cancelUrl,\n locale,\n}: CheckoutFlowProps): React.ReactElement {\n const t = useT();\n const { checkout, loading, create } = useCheckout();\n const [step, setStep] = React.useState<Step>(\"address\");\n const [bootstrapped, setBootstrapped] = React.useState(false);\n\n // Auto-create from a cart token if asked and none exists yet.\n React.useEffect(() => {\n if (checkout || !cartToken || bootstrapped) return;\n setBootstrapped(true);\n void create(cartToken).catch(() => {});\n }, [checkout, cartToken, bootstrapped, create]);\n\n // Sync the visible step forward to where the server says we are (never\n // backward — the customer may have clicked \"edit\" to revisit a step).\n const serverStep = reachedStep(checkout);\n React.useEffect(() => {\n setStep((cur) => (rank(serverStep) > rank(cur) ? serverStep : cur));\n }, [serverStep]);\n\n // Order placed → confirmation.\n if (checkout?.order_id && (!checkout.subscription || checkout.phase === \"success\")) {\n return (\n <Shell summary={<OrderSummary locale={locale} />}>\n {renderConfirmation ? (\n renderConfirmation(checkout)\n ) : (\n <DefaultConfirmation checkout={checkout} />\n )}\n </Shell>\n );\n }\n\n if (!checkout) {\n if (loading || (cartToken && !bootstrapped)) {\n return <p style={{ color: \"var(--nv-muted)\" }}>{t(\"checkout.loading\")}</p>;\n }\n return <>{emptyState ?? <p style={{ color: \"var(--nv-muted)\" }}>{t(\"checkout.empty\")}</p>}</>;\n }\n\n return (\n <Shell summary={<OrderSummary locale={locale} />}>\n <Steps current={step} reached={serverStep} onJump={setStep} />\n {step === \"address\" ? (\n <AddressForm onComplete={() => setStep(\"shipping\")} />\n ) : step === \"shipping\" ? (\n <ShippingPicker onComplete={() => setStep(\"payment\")} locale={locale} />\n ) : (\n <PaymentSection\n onSubscriptionPayment={onSubscriptionPayment}\n returnUrl={returnUrl}\n cancelUrl={cancelUrl}\n onOrderPlaced={onOrderPlaced}\n locale={locale}\n />\n )}\n </Shell>\n );\n}\n\nfunction rank(step: Step): number {\n return STEPS.indexOf(step);\n}\n\n/** Two-column shell: steps/form on the left, sticky summary on the right. */\nfunction Shell({\n children,\n summary,\n}: {\n children: React.ReactNode;\n summary: React.ReactNode;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"minmax(0, 1fr) minmax(0, 22rem)\",\n gap: \"2.5rem\",\n alignItems: \"start\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\", minWidth: 0 }}>\n {children}\n </div>\n <aside\n style={{\n position: \"sticky\",\n top: \"1.5rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n {summary}\n </aside>\n </div>\n );\n}\n\n/** The step indicator. Visited steps are clickable to jump back. */\nfunction Steps({\n current,\n reached,\n onJump,\n}: {\n current: Step;\n reached: Step;\n onJump: (s: Step) => void;\n}): React.ReactElement {\n const t = useT();\n return (\n <ol\n style={{\n listStyle: \"none\",\n display: \"flex\",\n gap: \"0.5rem\",\n margin: 0,\n padding: 0,\n fontSize: \"0.875rem\",\n }}\n >\n {STEPS.map((s, i) => {\n const active = s === current;\n const visitable = rank(s) <= rank(reached);\n return (\n <li key={s} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" }}>\n <button\n type=\"button\"\n disabled={!visitable}\n onClick={() => visitable && onJump(s)}\n style={{\n font: \"inherit\",\n fontWeight: active ? 600 : 400,\n color: active ? \"var(--nv-fg)\" : \"var(--nv-muted)\",\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: visitable && !active ? \"pointer\" : \"default\",\n }}\n >\n {i + 1}. {t(STEP_KEY[s])}\n </button>\n {i < STEPS.length - 1 ? <span style={{ color: \"var(--nv-muted)\" }}>→</span> : null}\n </li>\n );\n })}\n </ol>\n );\n}\n\nfunction DefaultConfirmation({ checkout }: { checkout: Checkout }): React.ReactElement {\n const t = useT();\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.3rem\", fontWeight: 600 }}>{t(\"checkout.thankYou\")}</h2>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {t(\"checkout.orderPlacedBody\", { order: `#${checkout.order_id}`, email: checkout.email ?? \"\" })}\n </p>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * useOrderStatus — fetch a placed order by its public status token. No provider:\n * the status page is a leaf, so each mount owns its own fetch. Pass a\n * pre-fetched `initial` order (e.g. from a Remix loader) to render server-side\n * and skip the client fetch.\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface OrderStatusState {\n order: OrderStatus | null;\n loading: boolean;\n error: Error | null;\n reload(): void;\n}\n\nexport function useOrderStatus(\n statusToken: string | null,\n initial?: OrderStatus | null,\n): OrderStatusState {\n const client = useStorefront();\n const [order, setOrder] = React.useState<OrderStatus | null>(initial ?? null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const load = React.useCallback(async () => {\n if (!statusToken) return;\n setLoading(true);\n try {\n setOrder(await client.order.byStatusToken(statusToken));\n setError(null);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, statusToken]);\n\n React.useEffect(() => {\n if (initial) return; // SSR / loader-prefetched → no client fetch\n void load();\n }, [load, initial]);\n\n return { order, loading, error, reload: () => void load() };\n}\n","\"use client\";\n\n/**\n * usePayment — the merchant's own payment page, for a placed order.\n *\n * No provider and no shared state, for the same reason `useOrderStatus` has\n * none: this is a leaf reached from a link in an e-mail, often days later and\n * on a different device. Everything it needs is the payment's own token, which\n * `useOrderStatus` hands over as `order.payment.token`.\n *\n * `token` being null (a paid order) is a normal state, not an error — render\n * nothing rather than a button that leads nowhere.\n */\n\nimport * as React from \"react\";\nimport type { PaymentMethod, PaymentState } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface PaymentPageState {\n payment: PaymentState | null;\n methods: PaymentMethod[];\n loading: boolean;\n /** True while a method change or a gateway start is in flight — the moment\n * to disable the buttons, because both mutate the order. */\n busy: boolean;\n error: Error | null;\n reload(): Promise<void>;\n /** Switch method. The order's total can move with it (the fee differs), so\n * the refreshed state is returned and stored, not merged. */\n selectMethod(method: string): Promise<PaymentState | null>;\n /** Open a gateway session. Returns the URL to send the browser to; null when\n * the connector needs no redirect. */\n startPayment(input?: { returnUrl?: string; cancelUrl?: string }): Promise<string | null>;\n}\n\nexport function usePayment(\n token: string | null,\n initial?: PaymentState | null,\n): PaymentPageState {\n const client = useStorefront();\n const [payment, setPayment] = React.useState<PaymentState | null>(initial ?? null);\n const [methods, setMethods] = React.useState<PaymentMethod[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const load = React.useCallback(async () => {\n if (!token) return;\n setLoading(true);\n try {\n // Together, because a picker that renders before it knows the current\n // method flashes the wrong row as selected.\n const [state, list] = await Promise.all([\n client.payment.get(token),\n client.payment.methods(token),\n ]);\n setPayment(state);\n setMethods(list);\n setError(null);\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n } finally {\n setLoading(false);\n }\n }, [client, token]);\n\n React.useEffect(() => {\n if (!token) return;\n // Skip the fetch when the caller already server-rendered this exact page.\n if (initial && initial.token === token) {\n setPayment(initial);\n client.payment\n .methods(token)\n .then(setMethods)\n .catch(() => setMethods([]));\n return;\n }\n void load();\n // `initial` is a render-time prop; re-running on its identity would refetch\n // on every parent render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [token, load]);\n\n const selectMethod = React.useCallback(\n async (method: string) => {\n if (!token) return null;\n setBusy(true);\n try {\n const next = await client.payment.selectMethod(token, method);\n setPayment(next);\n setError(null);\n return next;\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n return null;\n } finally {\n setBusy(false);\n }\n },\n [client, token],\n );\n\n const startPayment = React.useCallback(\n async (input?: { returnUrl?: string; cancelUrl?: string }) => {\n if (!token) return null;\n setBusy(true);\n try {\n const result = await client.payment.start(token, {\n return_url: input?.returnUrl,\n cancel_url: input?.cancelUrl,\n });\n setError(null);\n return result.redirect_url;\n } catch (e) {\n setError(e instanceof Error ? e : new Error(String(e)));\n return null;\n } finally {\n setBusy(false);\n }\n },\n [client, token],\n );\n\n return { payment, methods, loading, busy, error, reload: load, selectMethod, startPayment };\n}\n","\"use client\";\n\n/**\n * Shared presentational parts for the order views — phase timeline, terminal\n * status banner, line items, and totals. Themeable via `--nv-*`. Internal to\n * the order slice.\n */\n\nimport * as React from \"react\";\nimport type { OrderPhase, OrderStatus } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT, type MessageKey } from \"../i18n\";\n\n// Happy-path rank of each phase; terminal phases handled by the banner.\nconst PHASE_RANK: Record<OrderPhase, number> = {\n placed: 0,\n paid: 1,\n fulfilled: 2,\n shipped: 3,\n out_for_delivery: 4,\n delivered: 5,\n // terminal — never reached on the timeline\n returned: -1,\n refunded: -1,\n cancelled: -1,\n};\n\nconst MILESTONES: { key: MessageKey; rank: number }[] = [\n { key: \"order.phase.placed\", rank: 0 },\n { key: \"order.phase.paid\", rank: 1 },\n { key: \"order.phase.fulfilled\", rank: 2 },\n { key: \"order.phase.shipped\", rank: 3 },\n { key: \"order.phase.delivered\", rank: 5 },\n];\n\nconst TERMINAL: Partial<Record<OrderPhase, { key: MessageKey; tone: string }>> = {\n cancelled: { key: \"order.terminal.cancelled\", tone: \"var(--nv-muted)\" },\n refunded: { key: \"order.terminal.refunded\", tone: \"var(--nv-muted)\" },\n returned: { key: \"order.terminal.returned\", tone: \"var(--nv-muted)\" },\n};\n\nexport function isTerminal(phase: OrderPhase): boolean {\n return phase in TERMINAL;\n}\n\n/** The happy-path progress bar. Hidden for terminal phases (use StatusBanner). */\nexport function PhaseTimeline({ phase }: { phase: OrderPhase }): React.ReactElement | null {\n const t = useT();\n if (isTerminal(phase)) return null;\n const current = PHASE_RANK[phase];\n return (\n <ol\n style={{\n listStyle: \"none\",\n display: \"flex\",\n margin: 0,\n padding: 0,\n gap: \"0.25rem\",\n }}\n >\n {MILESTONES.map((m, i) => {\n const done = current >= m.rank;\n const active = m.rank === current || (i === MILESTONES.length - 1 && current >= m.rank);\n return (\n <li key={m.key} style={{ flex: 1, display: \"flex\", flexDirection: \"column\", gap: \"0.4rem\" }}>\n <span\n aria-hidden\n style={{\n height: \"0.35rem\",\n borderRadius: \"999px\",\n background: done ? \"var(--nv-brand)\" : \"var(--nv-border)\",\n }}\n />\n <span\n style={{\n fontSize: \"0.8125rem\",\n fontWeight: active ? 600 : 400,\n color: done ? \"var(--nv-fg)\" : \"var(--nv-muted)\",\n }}\n >\n {t(m.key)}\n </span>\n </li>\n );\n })}\n </ol>\n );\n}\n\n/** Banner shown for terminal phases (cancelled / refunded / returned). */\nexport function StatusBanner({ phase }: { phase: OrderPhase }): React.ReactElement | null {\n const t = useT();\n const meta = TERMINAL[phase];\n if (!meta) return null;\n return (\n <div\n style={{\n padding: \"0.85rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: meta.tone,\n fontWeight: 500,\n }}\n >\n {t(meta.key)}\n </div>\n );\n}\n\nexport function OrderLines({\n order,\n locale,\n}: {\n order: OrderStatus;\n locale?: string;\n}): React.ReactElement {\n const loc = useFormatLocale(locale);\n return (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n {order.line_items.map((li) => (\n <li key={li.id} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n {li.image_url ? (\n <img\n src={li.image_url}\n alt=\"\"\n width={48}\n height={48}\n style={{ borderRadius: \"var(--nv-radius)\", objectFit: \"cover\", flexShrink: 0 }}\n />\n ) : null}\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{li.title}</span>\n {li.variant_title ? (\n <span style={{ display: \"block\", fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {li.variant_title}\n </span>\n ) : null}\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>×{li.quantity}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {formatCents(li.total_with_tax_cents, order.currency, loc)}\n </span>\n </li>\n ))}\n {/* Derived fee lines (e.g. COD/dobírka) — itemised after the products. */}\n {order.fee_lines.map((f, i) => (\n <li key={`fee-${i}`} style={{ display: \"flex\", gap: \"0.75rem\", alignItems: \"center\" }}>\n <span style={{ flex: 1, minWidth: 0 }}>\n <span style={{ display: \"block\", fontWeight: 500 }}>{f.title}</span>\n </span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>\n {formatCents(f.total_with_tax_cents, order.currency, loc)}\n </span>\n </li>\n ))}\n </ul>\n );\n}\n\nexport function OrderTotals({\n order,\n locale,\n}: {\n order: OrderStatus;\n locale?: string;\n}): React.ReactElement {\n const tr = useT();\n const loc = useFormatLocale(locale);\n const t = order.totals;\n const c = order.currency;\n const money = (cents: number) => formatCents(cents, c, loc);\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n <Row label={tr(\"totals.subtotal\")} value={money(t.subtotal_cents)} />\n {t.discount_cents > 0 ? <Row label={tr(\"totals.discount\")} value={`−${money(t.discount_cents)}`} muted /> : null}\n {t.shipping_cents > 0 ? <Row label={tr(\"totals.shipping\")} value={money(t.shipping_cents)} muted /> : null}\n {t.surcharge_cents > 0 ? <Row label={tr(\"totals.paymentFee\")} value={money(t.surcharge_cents)} muted /> : null}\n {t.tax_cents > 0 ? <Row label={tr(\"totals.taxIncluded\")} value={money(t.tax_cents)} muted /> : null}\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <Row label={tr(\"totals.total\")} value={money(t.total_cents)} strong />\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n muted,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n muted?: boolean;\n}): React.ReactElement {\n return (\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: strong ? 600 : 400,\n color: muted ? \"var(--nv-muted)\" : \"inherit\",\n fontSize: strong ? \"1.1em\" : \"1em\",\n }}\n >\n <span>{label}</span>\n <span style={{ fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderConfirmation — the compact post-checkout \"thank you\" block. Drop it on\n * the return route after `checkout.complete()` / a gateway redirect back, keyed\n * by the order's status token (`checkout.order_status_token`). Pass a\n * pre-fetched `order` to render server-side.\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useOrderStatus } from \"./use-order-status\";\nimport { OrderLines, OrderTotals } from \"./parts\";\n\nexport interface OrderConfirmationProps {\n /** The order's status token (from `checkout.order_status_token`). */\n statusToken?: string | null;\n /** Pre-fetched order (SSR / loader) — skips the client fetch. */\n order?: OrderStatus;\n /** Link to the full order status page. */\n statusHref?: string;\n /** Heading copy (defaults to the localized \"Thank you for your order!\"). */\n title?: string;\n locale?: string;\n}\n\nexport function OrderConfirmation({\n statusToken,\n order: initial,\n statusHref,\n title,\n locale,\n}: OrderConfirmationProps): React.ReactElement {\n const t = useT();\n const { order, loading, error } = useOrderStatus(statusToken ?? null, initial);\n\n if (!order) {\n return (\n <p style={{ color: \"var(--nv-muted)\" }}>\n {loading\n ? t(\"order.confirmLoading\")\n : error\n ? t(\"order.confirmLoadError\")\n : t(\"order.notFound\")}\n </p>\n );\n }\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1.25rem\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n maxWidth: \"34rem\",\n }}\n >\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.4rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.4rem\", fontWeight: 600 }}>\n {title ?? t(\"checkout.thankYou\")}\n </h2>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {t(\"order.confirmed\", { number: order.order_number })}\n </p>\n </div>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n <OrderLines order={order} locale={locale} />\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <OrderTotals order={order} locale={locale} />\n </div>\n\n {statusHref ? (\n <a\n href={statusHref}\n style={{\n alignSelf: \"flex-start\",\n font: \"inherit\",\n fontWeight: 500,\n textDecoration: \"none\",\n padding: \"0.7rem 1.4rem\",\n borderRadius: \"var(--nv-radius)\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n }}\n >\n {t(\"order.trackOrder\")}\n </a>\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderStatusPage — the full post-purchase status view: phase timeline (or a\n * terminal banner), line items, totals, shipping method + tracking, the\n * redacted delivery location, and payment. Keyed by the order's status token;\n * pass a pre-fetched `order` to render server-side (Remix loader).\n */\n\nimport * as React from \"react\";\nimport type { OrderStatus } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useOrderStatus } from \"./use-order-status\";\nimport { OrderLines, OrderTotals, PhaseTimeline, StatusBanner, isTerminal } from \"./parts\";\n\nexport interface OrderStatusPageProps {\n statusToken?: string | null;\n /** Pre-fetched order (SSR / loader) — skips the client fetch. */\n order?: OrderStatus;\n /** Contact-support callback (shown when the order allows it). */\n onContactSupport?: () => void;\n /** Builds the URL of your payment page from the payment's token. Given one,\n * an unpaid order shows a \"finish payment\" link; without it the page stays\n * read-only, because a link to a route the shop does not have is worse than\n * no link. */\n payHref?: (paymentToken: string) => string;\n locale?: string;\n}\n\nexport function OrderStatusPage({\n statusToken,\n order: initial,\n onContactSupport,\n payHref,\n locale,\n}: OrderStatusPageProps): React.ReactElement {\n const t = useT();\n const { order, loading, error } = useOrderStatus(statusToken ?? null, initial);\n\n if (!order) {\n return (\n <p style={{ color: \"var(--nv-muted)\" }}>\n {loading ? t(\"order.loading\") : error ? t(\"order.loadError\") : t(\"order.notFound\")}\n </p>\n );\n }\n\n const placed = new Date(order.placed_at);\n const placedLabel = isNaN(placed.getTime())\n ? order.placed_at\n : placed.toLocaleDateString(locale, { year: \"numeric\", month: \"long\", day: \"numeric\" });\n\n return (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"1.5rem\",\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n maxWidth: \"40rem\",\n }}\n >\n <header style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.3rem\" }}>\n <h1 style={{ margin: 0, fontSize: \"1.5rem\", fontWeight: 600 }}>\n {t(\"order.title\", { number: order.order_number })}\n </h1>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"order.placedOn\", { date: placedLabel })}</p>\n </header>\n\n {isTerminal(order.public_phase) ? (\n <StatusBanner phase={order.public_phase} />\n ) : (\n <PhaseTimeline phase={order.public_phase} />\n )}\n\n <Card title={t(\"order.items\")}>\n <OrderLines order={order} locale={locale} />\n <div style={{ height: 1, background: \"var(--nv-border)\" }} />\n <OrderTotals order={order} locale={locale} />\n </Card>\n\n {order.shipping_method || order.tracking_numbers.length > 0 ? (\n <Card title={t(\"order.shipping\")}>\n {order.shipping_method ? (\n <Line\n label={order.shipping_method.name ?? t(\"order.shipping\")}\n value={\n order.shipping_method.pickup_point_name ??\n order.shipping_method.carrier ??\n \"\"\n }\n />\n ) : null}\n <Line\n label={t(\"order.shipsTo\")}\n value={[order.shipping_address_summary.city, order.shipping_address_summary.country]\n .filter(Boolean)\n .join(\", \")}\n />\n {order.tracking_numbers.length > 0 ? (\n <Line label={t(\"order.tracking\")} value={order.tracking_numbers.join(\", \")} />\n ) : null}\n </Card>\n ) : null}\n\n <Card title={t(\"order.payment\")}>\n <Line label={t(\"order.method\")} value={order.payment.method ?? \"—\"} />\n <Line label={t(\"order.status\")} value={order.payment.status} />\n {/* The token exists only while there is something to pay, so its\n presence IS the decision to offer this. Until now the status page\n carried it and never used it, which left the customer of an unpaid\n order looking at a page that told them nothing to do about it. */}\n {order.payment.token && payHref ? (\n <a href={payHref(order.payment.token)} style={{ color: \"var(--nv-brand)\", fontWeight: 500 }}>\n {t(\"payment.finish\")}\n </a>\n ) : null}\n {order.payment.invoice_available && order.payment.invoice_url ? (\n <a href={order.payment.invoice_url} style={{ color: \"var(--nv-brand)\" }}>\n {t(\"order.downloadInvoice\")}\n </a>\n ) : null}\n </Card>\n\n {order.actions.can_contact_support && onContactSupport ? (\n <button\n type=\"button\"\n onClick={onContactSupport}\n style={{\n alignSelf: \"flex-start\",\n font: \"inherit\",\n fontWeight: 500,\n cursor: \"pointer\",\n padding: \"0.65rem 1.3rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"order.contactSupport\")}\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction Card({ title, children }: { title: string; children: React.ReactNode }): React.ReactElement {\n return (\n <section\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.85rem\",\n padding: \"1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n }}\n >\n <h2 style={{ margin: 0, fontSize: \"1rem\", fontWeight: 600 }}>{title}</h2>\n {children}\n </section>\n );\n}\n\nfunction Line({ label, value }: { label: string; value: string }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{label}</span>\n <span style={{ textAlign: \"right\" }}>{value}</span>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * TransferInstructions — where to send the money for a bank-transfer order.\n *\n * Nothing in the kit rendered this until now, which meant a shopper who chose\n * \"bank transfer\" placed the order and was told nothing about where to pay.\n * The backend has always returned the account, the variable symbol, the amount\n * and a ready-made QR image; it just had no home.\n *\n * There is deliberately NO button here. For a transfer these details ARE the\n * action — the customer leaves for their banking app. A button would either lie\n * about what it does or do nothing.\n */\n\nimport * as React from \"react\";\nimport type { PaymentInstructions } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\n\nexport interface TransferInstructionsProps {\n instructions: PaymentInstructions;\n locale?: string;\n}\n\nexport function TransferInstructions({\n instructions: i,\n locale,\n}: TransferInstructionsProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const account = i.iban || i.account_number;\n\n return (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"1.25rem\",\n alignItems: \"flex-start\",\n padding: \"1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n }}\n >\n <dl style={{ flex: \"1 1 15rem\", margin: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.7rem\" }}>\n {account ? <CopyRow label={t(\"payment.account\")} value={account} /> : null}\n {i.beneficiary_name ? (\n <Row label={t(\"payment.beneficiary\")} value={i.beneficiary_name} />\n ) : null}\n {/* The variable symbol is what the merchant's bank reconciliation\n matches on. A transfer without it lands as an unidentified credit,\n so it gets the same weight as the account number. */}\n <CopyRow label={t(\"payment.variableSymbol\")} value={i.variable_symbol} />\n <Row\n label={t(\"payment.amount\")}\n value={formatCents(i.amount_cents, i.currency, loc)}\n strong\n />\n </dl>\n\n {i.qr_svg_data_uri ? (\n <figure style={{ margin: 0, textAlign: \"center\" }}>\n <img\n src={i.qr_svg_data_uri}\n alt={t(\"payment.qrAlt\")}\n width={148}\n height={148}\n style={{ display: \"block\", borderRadius: \"var(--nv-radius)\" }}\n />\n <figcaption style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\", marginTop: \"0.4rem\" }}>\n {t(\"payment.qrCaption\")}\n </figcaption>\n </figure>\n ) : null}\n\n {i.instructions ? (\n <p style={{ flexBasis: \"100%\", margin: 0, fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {i.instructions}\n </p>\n ) : null}\n </div>\n );\n}\n\nfunction Row({\n label,\n value,\n strong,\n}: {\n label: string;\n value: string;\n strong?: boolean;\n}): React.ReactElement {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.1rem\" }}>\n <dt style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\" }}>{label}</dt>\n <dd\n style={{\n margin: 0,\n fontWeight: strong ? 600 : 500,\n fontVariantNumeric: \"tabular-nums\",\n }}\n >\n {value}\n </dd>\n </div>\n );\n}\n\n/** A row whose value can be copied — these get retyped into a banking app, and\n * a mistyped account number or variable symbol is a payment that goes missing. */\nfunction CopyRow({ label, value }: { label: string; value: string }): React.ReactElement {\n const t = useT();\n const [copied, setCopied] = React.useState(false);\n\n React.useEffect(() => {\n if (!copied) return;\n const id = setTimeout(() => setCopied(false), 1800);\n return () => clearTimeout(id);\n }, [copied]);\n\n async function copy() {\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n } catch {\n // Clipboard blocked (insecure context, permissions) — the value is on\n // screen either way, so this stays silent rather than alarming.\n }\n }\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.1rem\" }}>\n <dt style={{ fontSize: \"0.75rem\", color: \"var(--nv-muted)\" }}>{label}</dt>\n <dd style={{ margin: 0, display: \"flex\", alignItems: \"center\", gap: \"0.5rem\" }}>\n <span style={{ fontWeight: 500, fontVariantNumeric: \"tabular-nums\" }}>{value}</span>\n <button\n type=\"button\"\n onClick={() => void copy()}\n style={{\n font: \"inherit\",\n fontSize: \"0.75rem\",\n cursor: \"pointer\",\n padding: \"0.15rem 0.5rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-muted)\",\n }}\n >\n {copied ? t(\"payment.copied\") : t(\"payment.copy\")}\n </button>\n </dd>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * PaymentPage — the merchant's own payment page for a placed order.\n *\n * A whole page, not a widget, because of who reaches it: somebody who clicked\n * \"finish your payment\" in an order e-mail, possibly days later, on a phone,\n * with none of the shop's context around them. It has to answer \"what do I owe\n * and what do I do now\" on its own.\n *\n * <PaymentPage token={order.payment.token} statusHref={`/order/${t}`} />\n *\n * It renders exactly one of four situations, and the difference between them is\n * the entire job:\n *\n * 1. THERE IS SOMETHING TO PAY — the picker plus one button named after what\n * it does. The surcharge sits on the row and the amount due moves when the\n * method changes, so nobody picks cash-on-delivery and watches the total\n * grow afterwards.\n * 2. BANK TRANSFER — account, variable symbol, amount, QR. No\n * button; the details are the action.\n * 3. ALREADY PAID — a receipt, NOT an error. Arriving at a paid\n * link is the normal end of the happy path (and of every gateway return).\n * 4. LOCKED — one of four reasons, each its own sentence.\n * `blocked_reason` carries four values precisely so the page can say four\n * different things; collapsing them into \"cannot pay\" sends the customer\n * to support.\n *\n * `token === null` renders nothing at all. The token is minted only while there\n * is something to pay, so its absence is the server saying \"no button here\" —\n * a disabled button would be a worse answer.\n *\n * **Returning from a gateway.** The page can be the `return_url`. Before it\n * sends the browser to a gateway it remembers that in `sessionStorage`, so on\n * the way back it knows to show \"verifying your payment\" and poll instead of\n * offering to pay again — the callback often lands a second or two after the\n * customer does, and a payable-looking page at that moment invites a double\n * payment. Needs no cooperation from the route.\n */\n\nimport * as React from \"react\";\nimport type { PaymentBlockedReason, PaymentState } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { Button } from \"../checkout/ui\";\nimport { useT, type MessageKey } from \"../i18n\";\nimport { usePayment } from \"../order/use-payment\";\nimport { PaymentMethodPicker } from \"./method-picker\";\nimport { TransferInstructions } from \"./transfer-instructions\";\n\nexport interface PaymentPageProps {\n /** The payment page's own token — the status page hands it over as\n * `order.payment.token`. `null` renders nothing. */\n token: string | null;\n /** Pre-fetched state (SSR / loader) — skips the first client fetch. */\n payment?: PaymentState | null;\n /** Where the gateway returns the customer after paying. Defaults to the\n * current URL, which makes this page its own return route. */\n returnUrl?: string;\n cancelUrl?: string;\n /** Link to the full order status page, offered once there is nothing to pay. */\n statusHref?: string;\n locale?: string;\n /** Called once the payment reads as settled — e.g. to refresh an order view. */\n onPaid?(payment: PaymentState): void;\n}\n\n/** How long a remembered gateway hand-off stays meaningful. Past this the\n * customer is opening the link fresh, not coming back from a payment. */\nconst HANDOFF_TTL_MS = 30 * 60 * 1000;\nconst POLL_MS = 2000;\nconst POLL_ATTEMPTS = 6;\n\nconst BLOCKED_MESSAGE: Record<PaymentBlockedReason, MessageKey> = {\n order_cancelled: \"payment.blocked.orderCancelled\",\n already_paid: \"payment.blocked.alreadyPaid\",\n authorization_held: \"payment.blocked.authorizationHeld\",\n document_issued: \"payment.blocked.documentIssued\",\n};\n\nfunction handoffKey(token: string): string {\n return `nv_payment_handoff_${token}`;\n}\n\nfunction rememberHandoff(token: string): void {\n try {\n sessionStorage.setItem(handoffKey(token), String(Date.now()));\n } catch {\n // Private mode / storage disabled — we lose the \"verifying\" nicety, not\n // correctness. The page still shows the truth on the next load.\n }\n}\n\nfunction consumeHandoff(token: string): boolean {\n try {\n const raw = sessionStorage.getItem(handoffKey(token));\n if (!raw) return false;\n const fresh = Date.now() - Number(raw) < HANDOFF_TTL_MS;\n if (!fresh) sessionStorage.removeItem(handoffKey(token));\n return fresh;\n } catch {\n return false;\n }\n}\n\nfunction forgetHandoff(token: string): void {\n try {\n sessionStorage.removeItem(handoffKey(token));\n } catch {\n /* see rememberHandoff */\n }\n}\n\nexport function PaymentPage({\n token,\n payment: initial,\n returnUrl,\n cancelUrl,\n statusHref,\n locale,\n onPaid,\n}: PaymentPageProps): React.ReactElement | null {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { payment, methods, loading, busy, error, reload, selectMethod, startPayment } =\n usePayment(token, initial);\n\n // \"Came back from a gateway\" — read once on mount, before anything can clear it.\n const [verifying, setVerifying] = React.useState(false);\n React.useEffect(() => {\n if (token) setVerifying(consumeHandoff(token));\n }, [token]);\n\n const settled = payment != null && !payment.can_pay && payment.blocked_reason === \"already_paid\";\n\n // Poll while we are waiting for a gateway callback that is already in flight.\n React.useEffect(() => {\n if (!verifying || !token || settled) return;\n let attempts = 0;\n const id = setInterval(() => {\n attempts += 1;\n if (attempts > POLL_ATTEMPTS) {\n // Give up quietly and show the real state. The money may genuinely not\n // have moved (the customer may have abandoned the gateway page), and\n // pretending otherwise is worse than an honest \"still unpaid\".\n setVerifying(false);\n forgetHandoff(token);\n clearInterval(id);\n return;\n }\n void reload();\n }, POLL_MS);\n return () => clearInterval(id);\n }, [verifying, token, settled, reload]);\n\n React.useEffect(() => {\n if (!settled || !token || !payment) return;\n setVerifying(false);\n forgetHandoff(token);\n onPaid?.(payment);\n }, [settled, token, payment, onPaid]);\n\n // No token = the server says there is nothing to pay here. Render nothing\n // rather than a page that leads nowhere.\n if (!token) return null;\n\n if (payment == null) {\n return (\n <Shell>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>\n {loading ? t(\"payment.loading\") : t(\"payment.loadError\")}\n </p>\n </Shell>\n );\n }\n\n const money = (cents: number) => formatCents(cents, payment.currency, loc);\n\n // ── 3. already paid — a receipt ──────────────────────────────────────\n if (settled) {\n return (\n <Shell title={t(\"payment.paidTitle\")}>\n <p style={{ margin: 0 }}>\n {t(\"payment.paidBody\", { order: payment.order_name ?? payment.order_number })}\n </p>\n <Amount label={t(\"payment.paidAmount\")} value={money(payment.total_cents)} />\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n }\n\n // ── 4. locked for one of four reasons ────────────────────────────────\n if (payment.blocked_reason) {\n return (\n <Shell title={t(\"payment.blockedTitle\")}>\n <p style={{ margin: 0 }}>{t(BLOCKED_MESSAGE[payment.blocked_reason])}</p>\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n }\n\n // ── returning from a gateway, callback not landed yet ────────────────\n if (verifying) {\n return (\n <Shell title={t(\"payment.verifyingTitle\")}>\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"payment.verifyingBody\")}</p>\n </Shell>\n );\n }\n\n const isBank = payment.category === \"bank\";\n const isGateway = payment.category === \"gateway\";\n\n async function pay() {\n if (!token) return;\n // Remembered BEFORE the redirect: once the browser leaves, nothing here runs.\n rememberHandoff(token);\n const url = await startPayment({ returnUrl, cancelUrl });\n if (url) {\n window.location.assign(url);\n return;\n }\n // `startPayment` returns null both on failure and when the connector needs\n // no redirect. `error` is what tells them apart — on failure the hand-off\n // never happened, so don't leave a stale marker behind.\n forgetHandoff(token);\n await reload();\n }\n\n // ── 1 + 2. there is something to pay ─────────────────────────────────\n return (\n <Shell title={t(\"payment.title\", { order: payment.order_name ?? payment.order_number })}>\n <Amount label={t(\"payment.amountDue\")} value={money(payment.amount_due_cents)} />\n\n {methods.length > 0 ? (\n <PaymentMethodPicker\n methods={methods}\n value={payment.method}\n onSelect={(method) => void selectMethod(method)}\n currency={payment.currency}\n locale={loc}\n disabled={busy}\n label={t(\"payment.methodLabel\")}\n />\n ) : null}\n\n {isBank && payment.instructions ? (\n <TransferInstructions instructions={payment.instructions} locale={loc} />\n ) : null}\n\n {!isBank ? (\n <div>\n <Button onClick={() => void pay()} busy={busy}>\n {t(\"payment.payNow\")}\n </Button>\n {isGateway ? (\n <p style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\", marginTop: \"0.6rem\" }}>\n {t(\"checkout.gatewayRedirectNote\")}\n </p>\n ) : null}\n </div>\n ) : null}\n\n {error ? (\n <p role=\"alert\" style={{ margin: 0, color: \"var(--nv-danger, #b3261e)\" }}>\n {t(\"payment.actionError\")}\n </p>\n ) : null}\n\n {statusHref ? <Link href={statusHref}>{t(\"order.trackOrder\")}</Link> : null}\n </Shell>\n );\n}\n\nfunction Shell({\n title,\n children,\n}: {\n title?: string;\n children: React.ReactNode;\n}): React.ReactElement {\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"1rem\", maxWidth: \"34rem\" }}>\n {title ? <h1 style={{ margin: 0, fontSize: \"1.25rem\", fontWeight: 600 }}>{title}</h1> : null}\n {children}\n </section>\n );\n}\n\nfunction Amount({ label, value }: { label: string; value: string }): React.ReactElement {\n return (\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"baseline\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{label}</span>\n <strong style={{ fontSize: \"1.35rem\", fontVariantNumeric: \"tabular-nums\" }}>{value}</strong>\n </div>\n );\n}\n\nfunction Link({ href, children }: { href: string; children: React.ReactNode }): React.ReactElement {\n return (\n <a href={href} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {children}\n </a>\n );\n}\n","\"use client\";\n\n/**\n * AccountProvider + useAccount — shared logged-in-customer state. Resolves the\n * session on mount (account.me); LoginForm / AccountDashboard / OrderHistory all\n * read the same customer. Mount inside <NeviosProvider> (it needs the client).\n */\n\nimport * as React from \"react\";\nimport type { Customer, MagicLinkResult } from \"@nevios/storefront-js\";\n\nimport { useStorefront } from \"../provider\";\n\nexport interface AccountState {\n customer: Customer | null;\n signedIn: boolean;\n /** True until the initial session check resolves. */\n loading: boolean;\n error: boolean;\n requestMagicLink(email: string): Promise<MagicLinkResult>;\n /** Exchange a magic token for a session (sets `customer`). */\n verify(token: string): Promise<Customer>;\n logout(): Promise<void>;\n refresh(): Promise<void>;\n}\n\nconst AccountContext = React.createContext<AccountState | null>(null);\n\nexport function AccountProvider({ children }: { children: React.ReactNode }): React.ReactElement {\n const client = useStorefront();\n const [customer, setCustomer] = React.useState<Customer | null>(null);\n const [loading, setLoading] = React.useState(true);\n const [error, setError] = React.useState(false);\n\n const refresh = React.useCallback(async () => {\n setLoading(true);\n setError(false);\n try {\n setCustomer(await client.account.me());\n } catch {\n setError(true);\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n React.useEffect(() => {\n void refresh();\n }, [refresh]);\n\n const value = React.useMemo<AccountState>(\n () => ({\n customer,\n signedIn: customer != null,\n loading,\n error,\n requestMagicLink: (email) => client.account.requestMagicLink(email),\n verify: async (token) => {\n const c = await client.account.verify(token);\n setCustomer(c);\n return c;\n },\n logout: async () => {\n await client.account.logout();\n setCustomer(null);\n },\n refresh,\n }),\n [customer, loading, error, client, refresh],\n );\n\n return <AccountContext.Provider value={value}>{children}</AccountContext.Provider>;\n}\n\nexport function useAccount(): AccountState {\n const ctx = React.useContext(AccountContext);\n if (!ctx) {\n throw new Error(\"useAccount must be used inside <AccountProvider>.\");\n }\n return ctx;\n}\n\nexport type VerifyStatus = \"idle\" | \"verifying\" | \"success\" | \"error\";\n\n/** Drive the magic-link callback route: pass the token from the URL, get back a\n * status to render (and redirect on \"success\"). */\nexport function useMagicLinkVerify(token: string | null): { status: VerifyStatus } {\n const { verify } = useAccount();\n const [status, setStatus] = React.useState<VerifyStatus>(\"idle\");\n const done = React.useRef(false);\n\n React.useEffect(() => {\n if (!token || done.current) return;\n done.current = true;\n setStatus(\"verifying\");\n verify(token)\n .then(() => setStatus(\"success\"))\n .catch(() => setStatus(\"error\"));\n }, [token, verify]);\n\n return { status };\n}\n","\"use client\";\n\n/**\n * LoginForm — passwordless sign-in. Enter an email → we email a one-time link →\n * \"check your email\". For test keys the API returns the link, which we surface\n * as a dev shortcut so you can sign in without a real inbox.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { useAccount } from \"./account-context\";\n\nexport interface LoginFormProps {\n /** Route that handles the magic link (default \"/account/verify\"). The dev\n * shortcut links here as `${verifyPath}?token=…`. */\n verifyPath?: string;\n onSent?: (email: string) => void;\n}\n\nexport function LoginForm({ verifyPath = \"/account/verify\", onSent }: LoginFormProps): React.ReactElement {\n const t = useT();\n const { requestMagicLink } = useAccount();\n const [email, setEmail] = React.useState(\"\");\n const [busy, setBusy] = React.useState(false);\n const [sent, setSent] = React.useState(false);\n const [error, setError] = React.useState(false);\n const [devLink, setDevLink] = React.useState<string | null>(null);\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n setBusy(true);\n setError(false);\n try {\n const r = await requestMagicLink(email);\n setSent(true);\n if (r.devToken) setDevLink(`${verifyPath}?token=${encodeURIComponent(r.devToken)}`);\n onSent?.(email);\n } catch {\n setError(true);\n } finally {\n setBusy(false);\n }\n }\n\n if (sent) {\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\", maxWidth: \"24rem\" }}>\n <p style={{ margin: 0, color: \"var(--nv-fg)\" }}>{t(\"account.checkEmail\")}</p>\n {devLink ? (\n <a href={devLink} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {t(\"account.openDevLink\")}\n </a>\n ) : null}\n </div>\n );\n }\n\n return (\n <form\n onSubmit={submit}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\", maxWidth: \"24rem\", fontFamily: \"var(--nv-font)\" }}\n >\n <p style={{ margin: 0, color: \"var(--nv-muted)\" }}>{t(\"account.signInBlurb\")}</p>\n <label style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.35rem\", fontSize: \"0.875rem\" }}>\n <span>{t(\"account.email\")}</span>\n <input\n type=\"email\"\n required\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n autoComplete=\"email\"\n style={{\n font: \"inherit\",\n padding: \"0.6rem 0.75rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n />\n </label>\n {error ? <p role=\"alert\">{t(\"account.signInError\")}</p> : null}\n <button\n type=\"submit\"\n disabled={busy}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n cursor: busy ? \"default\" : \"pointer\",\n padding: \"0.65rem 1.3rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"none\",\n background: \"var(--nv-brand)\",\n color: \"var(--nv-brand-foreground)\",\n opacity: busy ? 0.6 : 1,\n }}\n >\n {busy ? t(\"common.loadingShort\") : t(\"account.sendLink\")}\n </button>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * AccountDashboard — the signed-in header: greeting + sign-out. Compose\n * OrderHistory / AddressBook (or your own) beneath it. Renders nothing while the\n * session is still resolving; render <LoginForm> yourself when not signed in.\n */\n\nimport * as React from \"react\";\n\nimport { useT } from \"../i18n\";\nimport { useAccount } from \"./account-context\";\n\nexport interface AccountDashboardProps {\n children?: React.ReactNode;\n}\n\nexport function AccountDashboard({ children }: AccountDashboardProps): React.ReactElement | null {\n const t = useT();\n const { customer, logout } = useAccount();\n if (customer == null) return null;\n\n return (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"1.5rem\", fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <header style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <span style={{ color: \"var(--nv-muted)\" }}>{t(\"account.greeting\", { email: customer.email })}</span>\n <button\n type=\"button\"\n onClick={() => void logout()}\n style={{\n font: \"inherit\",\n cursor: \"pointer\",\n padding: \"0.45rem 1rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"account.signOut\")}\n </button>\n </header>\n {children}\n </div>\n );\n}\n","\"use client\";\n\n/**\n * OrderHistory — the signed-in customer's past orders, each linking to its\n * public status page. Fetches on mount once signed in.\n */\n\nimport * as React from \"react\";\nimport type { AccountOrder, ReorderResult } from \"@nevios/storefront-js\";\n\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\nexport interface OrderHistoryProps {\n /** Map an order's status token → its status-page URL (default `/order/{token}`). */\n statusHref?: (statusToken: string) => string;\n /** Where to send the shopper after a successful reorder (default `/cart`).\n * Ignored when `onReorder` is provided. */\n cartHref?: string;\n /** Called after a reorder succeeds — override the default navigation. */\n onReorder?: (result: ReorderResult) => void;\n locale?: string;\n}\n\nexport function OrderHistory({\n statusHref = (token) => `/order/${token}`,\n cartHref = \"/cart\",\n onReorder,\n locale,\n}: OrderHistoryProps): React.ReactElement {\n const t = useT();\n const loc = useFormatLocale(locale);\n const { signedIn } = useAccount();\n const client = useStorefront();\n const [orders, setOrders] = React.useState<AccountOrder[] | null>(null);\n const [error, setError] = React.useState(false);\n const [nextCursor, setNextCursor] = React.useState<string | null>(null);\n const [pageLoading, setPageLoading] = React.useState(false);\n const [reload, setReload] = React.useState(0);\n const [reordering, setReordering] = React.useState<string | null>(null);\n const [notice, setNotice] = React.useState<{ token: string; text: string; error?: boolean } | null>(null);\n\n React.useEffect(() => {\n let live = true;\n if (!signedIn) {\n setOrders([]);\n return;\n }\n setError(false);\n setOrders(null);\n client.account.ordersPage().then((page) => {\n if (live) { setOrders(page.orders); setNextCursor(page.nextCursor); }\n }).catch(() => { if (live) setError(true); });\n return () => {\n live = false;\n };\n }, [signedIn, client, reload]);\n\n async function loadMore() {\n if (!nextCursor || pageLoading) return;\n setPageLoading(true);\n setError(false);\n try {\n const page = await client.account.ordersPage({ beforeId: nextCursor });\n setOrders((previous) => [...(previous ?? []), ...page.orders]);\n setNextCursor(page.nextCursor);\n } catch { setError(true); }\n finally { setPageLoading(false); }\n }\n\n async function reorder(statusToken: string) {\n setReordering(statusToken);\n setNotice(null);\n try {\n const result = await client.account.reorder(statusToken);\n if (onReorder) {\n onReorder(result);\n } else {\n const text =\n result.skipped > 0\n ? t(\"account.reorderPartial\", { added: result.added, skipped: result.skipped })\n : t(\"account.reorderDone\", { added: result.added });\n setNotice({ token: statusToken, text });\n if (typeof window !== \"undefined\") window.location.assign(cartHref);\n }\n } catch {\n setNotice({ token: statusToken, text: t(\"account.reorderError\"), error: true });\n } finally {\n setReordering(null);\n }\n }\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.orders\")}</h2>\n {error ? <div role=\"alert\"><p>{t(\"account.loadError\")}</p>\n <button type=\"button\" onClick={() => orders ? void loadMore() : setReload((x) => x + 1)}>{t(\"account.retry\")}</button>\n </div> : null}\n {orders == null ? (\n error ? null : <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"common.loadingShort\")}</p>\n ) : orders.length === 0 ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"account.noOrders\")}</p>\n ) : (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n {orders.map((o) => (\n <li\n key={o.status_token}\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n padding: \"0.85rem 1rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n }}\n >\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <strong style={{ fontWeight: 600 }}>{o.number}</strong>\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>\n {formatCents(o.total_cents, o.currency, loc)}\n {o.placed_at ? ` · ${new Date(o.placed_at).toLocaleDateString(loc)}` : \"\"}\n </span>\n </span>\n <span style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\", whiteSpace: \"nowrap\" }}>\n <button\n type=\"button\"\n onClick={() => void reorder(o.status_token)}\n disabled={reordering === o.status_token}\n style={{\n font: \"inherit\",\n fontSize: \"0.875rem\",\n cursor: reordering === o.status_token ? \"default\" : \"pointer\",\n background: \"none\",\n border: \"none\",\n color: \"var(--nv-brand)\",\n padding: 0,\n opacity: reordering === o.status_token ? 0.6 : 1,\n }}\n >\n {reordering === o.status_token ? \"…\" : t(\"account.reorder\")}\n </button>\n <a href={statusHref(o.status_token)} style={{ color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}>\n {t(\"account.viewOrder\")}\n </a>\n </span>\n </div>\n {notice && notice.token === o.status_token ? (\n <p style={{ margin: 0, fontSize: \"0.8125rem\", color: notice.error ? \"#b3261e\" : \"var(--nv-muted)\" }}>\n {notice.text}\n </p>\n ) : null}\n </li>\n ))}\n </ul>\n )}\n {nextCursor ? <button type=\"button\" disabled={pageLoading} onClick={() => void loadMore()}>{pageLoading ? t(\"common.loadingShort\") : t(\"account.loadMore\")}</button> : null}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * AddressForm — a controlled create/edit form for a customer address. Reuses the\n * checkout field/button primitives so it matches the rest of the kit. Emits an\n * `AddressInput` via `onSubmit`; the parent (AddressBook) owns the SDK call.\n */\n\nimport * as React from \"react\";\nimport type { AccountAddress, AddressInput } from \"@nevios/storefront-js\";\n\nimport { Button, Field, FieldRow } from \"../checkout/ui\";\nimport { useT } from \"../i18n\";\n\nexport interface AddressFormProps {\n /** Prefill for edit mode. */\n initial?: AccountAddress;\n onSubmit: (data: AddressInput) => void | Promise<void>;\n onCancel?: () => void;\n busy?: boolean;\n}\n\nexport function AddressForm({ initial, onSubmit, onCancel, busy }: AddressFormProps): React.ReactElement {\n const t = useT();\n const [form, setForm] = React.useState<AddressInput>(() => ({\n first_name: initial?.first_name ?? \"\",\n last_name: initial?.last_name ?? \"\",\n company: initial?.company ?? \"\",\n address1: initial?.address1 ?? \"\",\n address2: initial?.address2 ?? \"\",\n city: initial?.city ?? \"\",\n zip: initial?.zip ?? \"\",\n country_code: initial?.country_code ?? \"\",\n phone: initial?.phone ?? \"\",\n is_default: Boolean(initial?.is_default),\n }));\n\n const set = (k: keyof AddressInput) => (e: React.ChangeEvent<HTMLInputElement>) =>\n setForm((f) => ({ ...f, [k]: e.target.value }));\n\n return (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n void onSubmit(form);\n }}\n style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}\n >\n <FieldRow>\n <Field label={t(\"account.firstName\")} value={form.first_name ?? \"\"} onChange={set(\"first_name\")} />\n <Field label={t(\"account.lastName\")} value={form.last_name ?? \"\"} onChange={set(\"last_name\")} />\n </FieldRow>\n <Field label={t(\"account.company\")} value={form.company ?? \"\"} onChange={set(\"company\")} />\n <Field label={t(\"account.address\")} required value={form.address1 ?? \"\"} onChange={set(\"address1\")} />\n <Field label={t(\"account.addressLine2\")} value={form.address2 ?? \"\"} onChange={set(\"address2\")} />\n <FieldRow>\n <Field label={t(\"account.city\")} required value={form.city ?? \"\"} onChange={set(\"city\")} />\n <Field label={t(\"account.postalCode\")} required value={form.zip ?? \"\"} onChange={set(\"zip\")} />\n <Field label={t(\"account.country\")} required value={form.country_code ?? \"\"} onChange={set(\"country_code\")} />\n </FieldRow>\n <Field label={t(\"account.phone\")} value={form.phone ?? \"\"} onChange={set(\"phone\")} />\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", fontSize: \"0.875rem\" }}>\n <input\n type=\"checkbox\"\n checked={Boolean(form.is_default)}\n onChange={(e) => setForm((f) => ({ ...f, is_default: e.target.checked }))}\n />\n {t(\"account.setDefault\")}\n </label>\n <div style={{ display: \"flex\", gap: \"0.5rem\" }}>\n <Button type=\"submit\" busy={busy}>\n {t(\"account.save\")}\n </Button>\n {onCancel ? (\n <button\n type=\"button\"\n onClick={onCancel}\n style={{\n font: \"inherit\",\n cursor: \"pointer\",\n padding: \"0.75rem 1.25rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: \"transparent\",\n color: \"var(--nv-fg)\",\n }}\n >\n {t(\"account.cancel\")}\n </button>\n ) : null}\n </div>\n </form>\n );\n}\n","\"use client\";\n\n/**\n * AddressBook — the signed-in customer's saved addresses with full management:\n * add, edit, delete, and set-default. Each mutation calls the SDK then refetches\n * the list. The form is the shared <AddressForm>.\n */\n\nimport * as React from \"react\";\nimport type { AccountAddress, AddressInput } from \"@nevios/storefront-js\";\n\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\nimport { AddressForm } from \"./address-form\";\n\nfunction formatAddress(a: AccountAddress): string {\n const name = [a.first_name, a.last_name].filter(Boolean).join(\" \");\n const line = [a.address1, a.address2].filter(Boolean).join(\", \");\n const place = [a.zip, a.city, a.country_code].filter(Boolean).join(\" \");\n return [name, line, place].filter(Boolean).join(\" · \");\n}\n\ntype Mode = { kind: \"list\" } | { kind: \"add\" } | { kind: \"edit\"; id: string };\n\nconst rowStyle: React.CSSProperties = {\n padding: \"0.85rem 1rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n color: \"var(--nv-fg)\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.5rem\",\n};\n\nconst linkBtn: React.CSSProperties = {\n font: \"inherit\",\n fontSize: \"0.8125rem\",\n cursor: \"pointer\",\n background: \"none\",\n border: \"none\",\n color: \"var(--nv-brand)\",\n padding: 0,\n};\n\nexport function AddressBook(): React.ReactElement {\n const t = useT();\n const { signedIn } = useAccount();\n const client = useStorefront();\n const [addresses, setAddresses] = React.useState<AccountAddress[] | null>(null);\n const [mode, setMode] = React.useState<Mode>({ kind: \"list\" });\n const [busy, setBusy] = React.useState(false);\n\n const load = React.useCallback(() => {\n if (!signedIn) {\n setAddresses([]);\n return;\n }\n client.account\n .addresses()\n .then(setAddresses)\n .catch(() => setAddresses([]));\n }, [signedIn, client]);\n\n React.useEffect(() => {\n load();\n }, [load]);\n\n async function run(fn: () => Promise<unknown>) {\n setBusy(true);\n try {\n await fn();\n setMode({ kind: \"list\" });\n load();\n } finally {\n setBusy(false);\n }\n }\n\n const create = (data: AddressInput) => run(() => client.account.addAddress(data));\n const update = (id: string, data: AddressInput) => run(() => client.account.updateAddress(id, data));\n const remove = (id: string) => {\n // eslint-disable-next-line no-alert\n if (typeof window !== \"undefined\" && !window.confirm(t(\"account.confirmDelete\"))) return;\n void run(() => client.account.deleteAddress(id));\n };\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.addresses\")}</h2>\n {mode.kind === \"list\" ? (\n <button type=\"button\" onClick={() => setMode({ kind: \"add\" })} style={{ ...linkBtn, fontSize: \"0.875rem\" }}>\n {t(\"account.addAddress\")}\n </button>\n ) : null}\n </div>\n\n {mode.kind === \"add\" ? (\n <AddressForm onSubmit={create} onCancel={() => setMode({ kind: \"list\" })} busy={busy} />\n ) : null}\n\n {addresses == null ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"common.loadingShort\")}</p>\n ) : addresses.length === 0 && mode.kind === \"list\" ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>{t(\"account.noAddresses\")}</p>\n ) : (\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0, display: \"flex\", flexDirection: \"column\", gap: \"0.5rem\" }}>\n {addresses.map((a, i) => {\n const id = (a.id as string) ?? String(i);\n const isEditing = mode.kind === \"edit\" && mode.id === id;\n return (\n <li key={id} style={rowStyle}>\n {isEditing ? (\n <AddressForm\n initial={a}\n onSubmit={(data) => update(id, data)}\n onCancel={() => setMode({ kind: \"list\" })}\n busy={busy}\n />\n ) : (\n <>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\", alignItems: \"baseline\" }}>\n <span>{formatAddress(a)}</span>\n {a.is_default ? (\n <span style={{ fontSize: \"0.7rem\", fontWeight: 600, color: \"var(--nv-muted)\", textTransform: \"uppercase\" }}>\n {t(\"account.default\")}\n </span>\n ) : null}\n </div>\n <div style={{ display: \"flex\", gap: \"1rem\" }}>\n <button type=\"button\" onClick={() => setMode({ kind: \"edit\", id })} style={linkBtn}>\n {t(\"account.editAddress\")}\n </button>\n {!a.is_default ? (\n <button type=\"button\" onClick={() => void update(id, { is_default: true })} style={linkBtn}>\n {t(\"account.setDefault\")}\n </button>\n ) : null}\n <button type=\"button\" onClick={() => remove(id)} style={{ ...linkBtn, color: \"#b3261e\" }}>\n {t(\"account.deleteAddress\")}\n </button>\n </div>\n </>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * ProfileEditor — view + edit the signed-in customer's name, phone, and\n * marketing consent (email is identity, shown read-only). Calls\n * `account.updateProfile` and refreshes the shared account state on save.\n */\n\nimport * as React from \"react\";\nimport type { ProfileInput } from \"@nevios/storefront-js\";\n\nimport { Button, Field } from \"../checkout/ui\";\nimport { useT } from \"../i18n\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\nexport function ProfileEditor(): React.ReactElement | null {\n const t = useT();\n const client = useStorefront();\n const { customer, refresh } = useAccount();\n const [editing, setEditing] = React.useState(false);\n const [busy, setBusy] = React.useState(false);\n const [error, setError] = React.useState(false);\n const [form, setForm] = React.useState<ProfileInput>({});\n\n if (!customer) return null;\n\n function startEdit() {\n setForm({\n first_name: customer!.first_name ?? \"\",\n last_name: customer!.last_name ?? \"\",\n phone: customer!.phone ?? \"\",\n accepts_marketing: customer!.accepts_marketing,\n });\n setError(false);\n setEditing(true);\n }\n\n async function save() {\n setBusy(true);\n setError(false);\n try {\n await client.account.updateProfile(form);\n await refresh();\n setEditing(false);\n } catch {\n setError(true);\n } finally {\n setBusy(false);\n }\n }\n\n const name = [customer.first_name, customer.last_name].filter(Boolean).join(\" \");\n\n return (\n <section style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <div style={{ display: \"flex\", justifyContent: \"space-between\", alignItems: \"center\", gap: \"1rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.profile\")}</h2>\n {!editing ? (\n <button\n type=\"button\"\n onClick={startEdit}\n style={{ font: \"inherit\", cursor: \"pointer\", background: \"none\", border: \"none\", color: \"var(--nv-brand)\", fontSize: \"0.875rem\" }}\n >\n {t(\"account.editProfile\")}\n </button>\n ) : null}\n </div>\n\n {!editing ? (\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.25rem\", color: \"var(--nv-fg)\" }}>\n {name ? <span style={{ fontWeight: 500 }}>{name}</span> : null}\n <span style={{ color: \"var(--nv-muted)\", fontSize: \"0.9rem\" }}>{customer.email}</span>\n {customer.phone ? <span style={{ color: \"var(--nv-muted)\", fontSize: \"0.9rem\" }}>{customer.phone}</span> : null}\n </div>\n ) : (\n <form onSubmit={(e) => { e.preventDefault(); void save(); }} style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.75rem\" }}>\n <Field label={t(\"account.firstName\")} value={form.first_name ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, first_name: e.target.value }))} />\n <Field label={t(\"account.lastName\")} value={form.last_name ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, last_name: e.target.value }))} />\n <Field label={t(\"account.phone\")} value={form.phone ?? \"\"} onChange={(e) => setForm((f) => ({ ...f, phone: e.target.value }))} />\n <label style={{ display: \"inline-flex\", alignItems: \"center\", gap: \"0.5rem\", cursor: \"pointer\", fontSize: \"0.875rem\" }}>\n <input\n type=\"checkbox\"\n checked={Boolean(form.accepts_marketing)}\n onChange={(e) => setForm((f) => ({ ...f, accepts_marketing: e.target.checked }))}\n />\n {t(\"account.acceptsMarketing\")}\n </label>\n {error ? <p style={{ margin: 0, color: \"#b3261e\", fontSize: \"0.8125rem\" }}>{t(\"account.saveError\")}</p> : null}\n <div style={{ display: \"flex\", gap: \"0.5rem\" }}>\n <Button type=\"submit\" busy={busy}>{t(\"account.save\")}</Button>\n <button\n type=\"button\"\n onClick={() => setEditing(false)}\n style={{ font: \"inherit\", cursor: \"pointer\", padding: \"0.75rem 1.25rem\", borderRadius: \"var(--nv-radius)\", border: \"1px solid var(--nv-border)\", background: \"transparent\", color: \"var(--nv-fg)\" }}\n >\n {t(\"account.cancel\")}\n </button>\n </div>\n </form>\n )}\n </section>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { StorefrontError, type AccountSession } from \"@nevios/storefront-js\";\nimport { useStorefront } from \"../provider\";\nimport { useT } from \"../i18n\";\nimport { Button, Field } from \"../checkout/ui\";\nimport { useAccount } from \"./account-context\";\n\n/** Email verification, session revocation and explicit account-closure confirmation. */\nexport function AccountSecurity(): React.ReactElement | null {\n const client = useStorefront();\n const account = useAccount();\n const t = useT();\n const [sessions, setSessions] = React.useState<AccountSession[] | null>(null);\n const [email, setEmail] = React.useState(\"\");\n const [busy, setBusy] = React.useState(false);\n const [notice, setNotice] = React.useState<string | null>(null);\n const [confirmClose, setConfirmClose] = React.useState(false);\n const [retry, setRetry] = React.useState(0);\n\n React.useEffect(() => {\n let live = true;\n if (account.signedIn) client.account.sessions().then((s) => { if (live) setSessions(s); })\n .catch(() => { if (live) setNotice(t(\"account.loadError\")); });\n return () => { live = false; };\n }, [client, account.signedIn, retry, t]);\n\n async function act(operation: () => Promise<void>) {\n setBusy(true); setNotice(null);\n try { await operation(); }\n catch (e) { setNotice(e instanceof StorefrontError && e.status === 401\n ? t(\"account.recentLogin\") : t(\"account.loadError\")); }\n finally { setBusy(false); }\n }\n\n if (!account.signedIn) return null;\n return <section style={{ display: \"grid\", gap: \"0.75rem\" }}>\n <h2 style={{ margin: 0, fontSize: \"1.1rem\", fontWeight: 600 }}>{t(\"account.security\")}</h2>\n {notice ? <p role=\"status\">{notice}</p> : null}\n <form style={{ display: \"flex\", gap: \"0.75rem\", flexWrap: \"wrap\", alignItems: \"end\" }}\n onSubmit={(e) => { e.preventDefault(); void act(async () => {\n await client.account.requestEmailChange(email); setNotice(t(\"account.checkEmail\"));\n }); }}>\n <Field label={t(\"account.newEmail\")} type=\"email\" required value={email} onChange={(e) => setEmail(e.target.value)} />\n <Button type=\"submit\" busy={busy}>{t(\"account.changeEmail\")}</Button>\n </form>\n <h3>{t(\"account.sessions\")}</h3>\n {sessions ? sessions.map((s) => <div key={s.id} style={{ display: \"flex\", alignItems: \"center\", gap: \"0.75rem\", justifyContent: \"space-between\" }}>\n <span>{s.current ? t(\"account.currentSession\") : <time dateTime={s.created_at}>{s.created_at.slice(0, 10)}</time>}</span>\n <Button busy={busy} onClick={() => void act(async () => {\n await client.account.revokeSession(s.id);\n if (s.current) await account.logout();\n else setSessions((old) => old?.filter((row) => row.id !== s.id) ?? null);\n })}>{t(\"account.revokeSession\")}</Button>\n </div>) : <Button onClick={() => setRetry((x) => x + 1)}>{t(\"account.retry\")}</Button>}\n {confirmClose ? <div>\n <p>{t(\"account.closeWarning\")}</p>\n <Button busy={busy} onClick={() => void act(async () => { await client.account.close(); await account.refresh(); })}>{t(\"account.confirmClose\")}</Button>{\" \"}\n <Button disabled={busy} onClick={() => setConfirmClose(false)}>{t(\"account.cancel\")}</Button>\n </div> : <Button disabled={busy} onClick={() => setConfirmClose(true)}>{t(\"account.closeAccount\")}</Button>}\n </section>;\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { Subscription, SubscriptionDetails } from \"@nevios/storefront-js\";\nimport { useStorefront } from \"../provider\";\nimport { useAccount } from \"./account-context\";\n\n/** Customer-only API plus reload-safe query state. Changing a saved account\n * address never silently changes a recurring contract; preview/commit explicitly. */\nexport function useCustomerSubscriptions() {\n const client = useStorefront();\n const { customer } = useAccount();\n const [dataOwner, setDataOwner] = React.useState<string | undefined>(\n undefined,\n );\n const [subscriptions, setSubscriptions] = React.useState<Subscription[]>([]);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n const generation = React.useRef(0);\n const owner = customer?.id;\n const api = client.account.subscriptions;\n const refresh = React.useCallback(async () => {\n const current = ++generation.current;\n setError(null);\n if (!owner) {\n setSubscriptions([]);\n setLoading(false);\n return;\n }\n setLoading(true);\n try {\n const rows = await api.list();\n if (current === generation.current) {\n setSubscriptions(rows);\n setDataOwner(owner);\n setError(null);\n }\n } catch (err) {\n if (current === generation.current)\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n if (current === generation.current) setLoading(false);\n }\n }, [owner, api]);\n React.useEffect(() => {\n setSubscriptions([]);\n void refresh();\n return () => {\n generation.current++;\n };\n }, [refresh]);\n return {\n subscriptions: dataOwner === owner ? subscriptions : [],\n loading,\n error,\n refresh,\n api,\n };\n}\n\n/** Unified upcoming/history/items view. Async results never survive a logout or\n * switching customer/contract. Call refresh after an explicitly reviewed change. */\nexport function useCustomerSubscription(id: string | null) {\n const client = useStorefront();\n const { customer } = useAccount();\n const [readRevision, setReadRevision] = React.useState(0);\n const [dataKey, setDataKey] = React.useState(\"\");\n const [subscription, setSubscription] =\n React.useState<SubscriptionDetails | null>(null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n const generation = React.useRef(0);\n const owner = customer?.id;\n const api = client.account.subscriptions;\n const refresh = React.useCallback(async () => {\n const current = ++generation.current;\n setError(null);\n if (!owner || !id) {\n setSubscription(null);\n setLoading(false);\n return;\n }\n setLoading(true);\n try {\n const row = await api.management(id);\n if (current === generation.current) {\n setSubscription(row);\n setReadRevision((n) => n + 1);\n setDataKey(`${owner}:${id}`);\n setError(null);\n }\n } catch (err) {\n if (current === generation.current)\n setError(err instanceof Error ? err : new Error(String(err)));\n } finally {\n if (current === generation.current) setLoading(false);\n }\n }, [owner, id, api]);\n React.useEffect(() => {\n setSubscription(null);\n void refresh();\n return () => {\n generation.current++;\n };\n }, [refresh]);\n return {\n subscription: dataKey === `${owner}:${id}` ? subscription : null,\n loading,\n error,\n refresh,\n api,\n readRevision,\n };\n}\n","\"use client\";\nimport * as React from \"react\";\nimport { useT } from \"../i18n\";\nimport { useCustomerSubscriptions } from \"./subscriptions\";\n\nexport function SubscriptionList({ href, locale }: { href(id: string): string; locale?: string }): React.ReactElement {\n const t = useT();\n const { subscriptions, loading, error } = useCustomerSubscriptions();\n return <section style={{ fontFamily: \"var(--nv-font)\", color: \"var(--nv-fg)\" }}>\n <h2 style={{ fontSize: \"1.125rem\", fontWeight: 500 }}>{t(\"subscriptions.title\")}</h2>\n {loading ? <p>{t(\"checkout.loading\")}</p> : error ? <p role=\"alert\">{error.message}</p> : subscriptions.length === 0 ? <p>{t(\"subscriptions.empty\")}</p> :\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0 }}>{subscriptions.map(sub => <li key={sub.id} style={{ borderBottom: \"1px solid var(--nv-border)\", padding: \"0.8rem 0\" }}>\n <a href={href(sub.id)} style={{ color: \"inherit\", display: \"flex\", justifyContent: \"space-between\", gap: \"1rem\", flexWrap: \"wrap\" }}>\n <span>#{sub.id}</span><span>{t(`subscriptions.status.${sub.status}`)}</span>\n {sub.status === \"active\" && sub.next_at ? <time dateTime={sub.next_at}>{new Date(sub.next_at).toLocaleDateString(locale)}</time> : null}\n </a>\n </li>)}</ul>}\n </section>;\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type {\n SubscriptionProductOption,\n SubscriptionProductOptions,\n} from \"@nevios/storefront-js\";\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"./money\";\nexport const subscriptionPanel: React.CSSProperties = {\n fontFamily: \"var(--nv-font)\",\n color: \"var(--nv-fg)\",\n background: \"var(--nv-bg)\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n padding: \"1rem\",\n};\nexport function SubscriptionButton({\n primary = false,\n style,\n ...props\n}: React.ButtonHTMLAttributes<HTMLButtonElement> & { primary?: boolean }) {\n return (\n <button\n type=\"button\"\n {...props}\n style={{\n font: \"inherit\",\n fontWeight: 500,\n padding: \".5rem .85rem\",\n borderRadius: \"var(--nv-radius)\",\n border: \"1px solid var(--nv-border)\",\n background: primary ? \"var(--nv-brand)\" : \"var(--nv-bg)\",\n color: primary ? \"var(--nv-brand-foreground)\" : \"var(--nv-fg)\",\n cursor: props.disabled ? \"default\" : \"pointer\",\n opacity: props.disabled ? 0.55 : 1,\n ...style,\n }}\n />\n );\n}\nexport function ProductSelection({\n load,\n value,\n onChange,\n initialItems = [],\n locale,\n maxQuantity = 99,\n}: {\n load: (\n q: string,\n offset: number,\n signal: AbortSignal,\n ) => Promise<SubscriptionProductOptions>;\n value: Record<string, number>;\n onChange: (v: Record<string, number>) => void;\n initialItems?: SubscriptionProductOption[];\n locale?: string;\n maxQuantity?: number;\n}) {\n const t = useT(),\n loc = useFormatLocale(locale),\n [query, setQuery] = React.useState(\"\"),\n [page, setPage] = React.useState(0),\n [items, setItems] = React.useState<SubscriptionProductOption[]>([]),\n [more, setMore] = React.useState(false),\n [busy, setBusy] = React.useState(false),\n [error, setError] = React.useState(\"\");\n const known = React.useRef<Record<string, SubscriptionProductOption>>({});\n for (const item of initialItems) known.current[item.variant_id] = item;\n React.useEffect(() => {\n const controller = new AbortController();\n setBusy(true);\n setError(\"\");\n const timer = setTimeout(() => {\n void load(query, page * 50, controller.signal)\n .then((result) => {\n if (controller.signal.aborted) return;\n for (const item of result.items)\n known.current[item.variant_id] = item;\n setItems((old) => (page ? [...old, ...result.items] : result.items));\n setMore(result.more);\n })\n .catch((err) => {\n if (!controller.signal.aborted)\n setError(err instanceof Error ? err.message : String(err));\n })\n .finally(() => {\n if (!controller.signal.aborted) setBusy(false);\n });\n }, 180);\n return () => {\n clearTimeout(timer);\n controller.abort();\n };\n }, [load, query, page]);\n const selected = Object.keys(value)\n .filter((id) => value[id] > 0)\n .map((id) => known.current[id])\n .filter(Boolean);\n return (\n <div style={{ display: \"grid\", gap: \".75rem\" }}>\n {selected.map((p) => (\n <label\n key={p.variant_id}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n alignItems: \"center\",\n }}\n >\n <span>\n {p.title} {p.variant_title}\n <small style={{ display: \"block\", color: \"var(--nv-muted)\" }}>\n {p.sku}\n </small>\n </span>\n <input\n aria-label={`${t(\"subscriptions.quantity\")}: ${p.title}`}\n type=\"number\"\n min={0}\n max={maxQuantity}\n value={value[p.variant_id] ?? 0}\n onChange={(e) =>\n onChange({ ...value, [p.variant_id]: Number(e.target.value) })\n }\n style={{\n font: \"inherit\",\n width: \"4.5rem\",\n padding: \".5rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n color: \"var(--nv-fg)\",\n background: \"var(--nv-bg)\",\n }}\n />\n </label>\n ))}\n <input\n aria-label={t(\"subscriptions.searchProducts\")}\n placeholder={t(\"subscriptions.searchProducts\")}\n value={query}\n onChange={(e) => {\n setQuery(e.target.value);\n setPage(0);\n setItems([]);\n }}\n style={{\n font: \"inherit\",\n padding: \".65rem\",\n border: \"1px solid var(--nv-border)\",\n borderRadius: \"var(--nv-radius)\",\n background: \"var(--nv-bg)\",\n color: \"var(--nv-fg)\",\n }}\n />\n <ul\n style={{\n listStyle: \"none\",\n padding: 0,\n margin: 0,\n maxHeight: \"18rem\",\n overflowY: \"auto\",\n }}\n >\n {items\n .filter((p) => !value[p.variant_id])\n .map((p) => (\n <li\n key={p.variant_id}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n padding: \".5rem 0\",\n borderBottom: \"1px solid var(--nv-border)\",\n }}\n >\n <span>\n {p.title} {p.variant_title}\n <small style={{ display: \"block\", color: \"var(--nv-muted)\" }}>\n {formatCents(p.unit_gross, p.currency, loc)}\n </small>\n </span>\n <SubscriptionButton\n aria-label={`${t(\"subscriptions.addProduct\")}: ${p.title}`}\n onClick={() => onChange({ ...value, [p.variant_id]: 1 })}\n >\n +\n </SubscriptionButton>\n </li>\n ))}\n </ul>\n {busy ? (\n <p role=\"status\">{t(\"subscriptions.loadingProducts\")}</p>\n ) : more ? (\n <SubscriptionButton onClick={() => setPage((p) => p + 1)}>\n {t(\"account.loadMore\")}\n </SubscriptionButton>\n ) : null}\n {error && <p role=\"alert\">{error}</p>}\n </div>\n );\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type {\n SubscriptionChangeQuote,\n SubscriptionNextItemsQuote,\n SubscriptionProductOption,\n} from \"@nevios/storefront-js\";\nimport { useCustomerSubscription } from \"./subscriptions\";\nimport { useAccount } from \"./account-context\";\nimport { useT } from \"../i18n\";\nimport { formatCents, useFormatLocale } from \"../catalog/money\";\nimport {\n ProductSelection,\n SubscriptionButton,\n subscriptionPanel,\n} from \"../catalog/subscription-controls\";\n\n/** Customer-owned, reviewed changes. A failed/ambiguous commit locks the editor\n * until a fresh read; a customer/contract switch unmounts all private drafts. */\nexport function SubscriptionManager({\n subscriptionId,\n locale,\n}: {\n subscriptionId: string;\n locale?: string;\n}): React.ReactElement | null {\n const state = useCustomerSubscription(subscriptionId),\n { customer } = useAccount(),\n t = useT();\n if (!customer) return null;\n if (state.error)\n return (\n <p role=\"alert\">\n {state.error.message}{\" \"}\n <SubscriptionButton onClick={() => void state.refresh()}>\n {t(\"account.retry\")}\n </SubscriptionButton>\n </p>\n );\n if (!state.subscription)\n return <p role=\"status\">{t(\"subscriptions.loading\")}</p>;\n return (\n <Manager\n key={`${customer.id}:${subscriptionId}:${state.subscription.version}:${state.readRevision}`}\n state={state}\n locale={locale}\n />\n );\n}\nfunction Manager({\n state,\n locale,\n}: {\n state: ReturnType<typeof useCustomerSubscription>;\n locale?: string;\n}) {\n const { subscription: s, api, refresh } = state,\n t = useT(),\n loc = useFormatLocale(locale);\n const [mode, setMode] = React.useState<\n \"cadence\" | \"addons\" | \"mix\" | \"skip\" | null\n >(null);\n const [option, setOption] = React.useState(\"\");\n const [quantities, setQuantities] = React.useState<Record<string, number>>(\n {},\n );\n const [quote, setQuote] = React.useState<\n SubscriptionChangeQuote | SubscriptionNextItemsQuote | null\n >(null);\n const [busy, setBusy] = React.useState(false),\n [locked, setLocked] = React.useState(false),\n [error, setError] = React.useState(\"\");\n const [consent, setConsent] = React.useState(false);\n const upcoming = s?.upcoming,\n heading = React.useRef<HTMLHeadingElement>(null);\n const loader = React.useCallback(\n (q: string, offset: number, signal: AbortSignal) =>\n api.products(s!.id, {\n q,\n offset,\n signal,\n scope: mode === \"mix\" ? \"mix\" : \"one_time\",\n }),\n [api, s?.id, mode],\n );\n React.useEffect(() => {\n if (mode) heading.current?.focus();\n }, [mode]);\n if (!s || !upcoming) return null;\n if (s.status !== \"active\")\n return (\n <section style={subscriptionPanel}>\n <h2>{t(`subscriptions.status.${s.status}`)}</h2>\n </section>\n );\n const money = (n: number) => formatCents(n, s.currency, loc);\n const scope = mode === \"mix\" ? \"recurring\" : \"one_time\";\n const selected = Object.entries(quantities)\n .filter(([, quantity]) => quantity > 0)\n .map(([variant_id, quantity]) => ({ variant_id, quantity }));\n const changes =\n mode === \"cadence\" ? { cadence_option_id: option } : { lines: selected };\n const amount = quote\n ? \"recurring_total_cents\" in quote\n ? quote.recurring_total_cents\n : quote.after.total_cents\n : upcoming.total_cents;\n const enter = (next: typeof mode) => {\n setMode(next);\n setQuote(null);\n setConsent(false);\n setError(\"\");\n setOption(\"\");\n setQuantities(\n Object.fromEntries(\n upcoming.lines\n .filter(\n (li) => li.scope === (next === \"mix\" ? \"recurring\" : \"one_time\"),\n )\n .map((li) => [li.variant_id, li.quantity]),\n ),\n );\n };\n return (\n <section\n style={{ ...subscriptionPanel, display: \"grid\", gap: \"1rem\" }}\n aria-busy={busy}\n >\n <header>\n <h2 style={{ margin: 0, fontWeight: 500 }}>\n {t(\"subscriptions.nextDelivery\")}\n </h2>\n <p>\n {t(\"subscriptions.chargeDate\")}:{\" \"}\n <time dateTime={upcoming.due_at}>\n {new Date(upcoming.due_at).toLocaleString(loc)}\n </time>\n </p>\n </header>\n <ul style={{ listStyle: \"none\", margin: 0, padding: 0 }}>\n {upcoming.lines.map((li) => (\n <li\n key={li.line_id}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"1rem\",\n padding: \".65rem 0\",\n borderBottom: \"1px solid var(--nv-border)\",\n }}\n >\n <span>\n {li.title ?? li.sku} × {li.quantity}\n {li.scope === \"one_time\" ? (\n <small style={{ display: \"block\", color: \"var(--nv-muted)\" }}>\n {t(\"subscriptions.onlyNext\")}\n </small>\n ) : null}\n </span>\n <span>\n {money(li.unit_gross * li.quantity - (li.discount_cents ?? 0))}\n </span>\n </li>\n ))}\n </ul>\n <div style={{ display: \"flex\", justifyContent: \"space-between\" }}>\n <span>{t(\"totals.shipping\")}</span>\n <span>{money(upcoming.shipping_cents)}</span>\n </div>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n fontWeight: 500,\n }}\n >\n <span>{t(\"subscriptions.toCharge\")}</span>\n <span>{money(upcoming.total_cents)}</span>\n </div>\n {upcoming.capabilities.reminder?.enabled ? (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>\n {t(\"subscriptions.noticeStatus\")}:{\" \"}\n {t(`subscriptions.notice.${upcoming.reminder?.status ?? \"pending\"}`)}\n </p>\n ) : null}\n {upcoming.charge_held_for_notice && (\n <p role=\"status\">{t(\"subscriptions.noticeHeld\")}</p>\n )}\n {!upcoming.editable ? (\n <p role=\"status\">\n {t(\n `subscriptions.locked.${upcoming.locked_reason_code ?? \"in_flight\"}`,\n )}\n </p>\n ) : (\n <p style={{ color: \"var(--nv-muted)\", margin: 0 }}>\n {t(\"subscriptions.editUntil\")}:{\" \"}\n {new Date(upcoming.edit_cutoff_at).toLocaleString(loc)}\n </p>\n )}\n {!mode ? (\n <div style={{ display: \"flex\", gap: \".5rem\", flexWrap: \"wrap\" }}>\n {!!upcoming.capabilities.cadence_options?.length && (\n <SubscriptionButton\n disabled={!upcoming.editable}\n onClick={() => enter(\"cadence\")}\n >\n {t(\"subscriptions.changeInterval\")}\n </SubscriptionButton>\n )}\n {upcoming.capabilities.one_time_addons && (\n <SubscriptionButton\n disabled={!upcoming.editable}\n onClick={() => enter(\"addons\")}\n >\n {t(\"subscriptions.addNext\")}\n </SubscriptionButton>\n )}\n {upcoming.capabilities.mix && (\n <SubscriptionButton\n disabled={!upcoming.editable}\n onClick={() => enter(\"mix\")}\n >\n {t(\"subscriptions.changeMix\")}\n </SubscriptionButton>\n )}\n {s.allowed_actions.skip && (\n <SubscriptionButton onClick={() => enter(\"skip\")}>\n {t(\"subscriptions.skip\")}\n </SubscriptionButton>\n )}\n </div>\n ) : (\n <form\n noValidate\n onSubmit={async (event) => {\n event.preventDefault();\n if (busy || locked) return;\n setBusy(true);\n setError(\"\");\n try {\n if (mode === \"skip\") {\n if (!consent) return;\n try {\n await api.skipNext(s.id, s.version);\n await refresh();\n } catch (err) {\n setLocked(true);\n throw err;\n }\n } else if (!quote) {\n const q =\n mode === \"addons\"\n ? await api.previewNextItems(s.id, { addons: selected })\n : await api.previewChanges(s.id, changes);\n setQuote(q);\n setConsent(false);\n } else {\n if (!consent) return;\n try {\n if (mode === \"addons\")\n await api.commitNextItems(\n s.id,\n { addons: selected },\n quote as SubscriptionNextItemsQuote,\n \"Customer explicitly accepted the displayed next-delivery contents and total\",\n );\n else\n await api.commitChanges(\n s.id,\n changes,\n quote as SubscriptionChangeQuote,\n \"Customer explicitly accepted the displayed future terms, dates and price\",\n );\n await refresh();\n } catch (err) {\n setLocked(true);\n throw err;\n }\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(false);\n }\n }}\n style={{\n borderTop: \"1px solid var(--nv-border)\",\n paddingTop: \"1rem\",\n display: \"grid\",\n gap: \"1rem\",\n }}\n >\n <fieldset\n disabled={busy}\n style={{\n border: 0,\n margin: 0,\n padding: 0,\n display: \"grid\",\n gap: \"1rem\",\n minWidth: 0,\n }}\n >\n <h3\n ref={heading}\n tabIndex={-1}\n style={{ margin: 0, fontWeight: 500 }}\n >\n {t(\n mode === \"cadence\"\n ? \"subscriptions.changeInterval\"\n : mode === \"mix\"\n ? \"subscriptions.changeMix\"\n : mode === \"skip\"\n ? \"subscriptions.skip\"\n : \"subscriptions.addNext\",\n )}\n </h3>\n {mode === \"skip\" ? (\n <p>{t(\"subscriptions.skipWarning\")}</p>\n ) : quote ? (\n <div role=\"status\">\n <p>\n {t(\n mode === \"addons\"\n ? \"subscriptions.onlyNext\"\n : \"subscriptions.futureOnly\",\n )}\n </p>\n {mode === \"cadence\" ? (\n <p>\n {t(\"subscriptions.nextUnchanged\")}:{\" \"}\n {new Date(\n String((quote.after as Record<string, unknown>).next_at),\n ).toLocaleString(loc)}\n </p>\n ) : null}\n {\"upcoming_dates\" in quote &&\n quote.upcoming_dates?.map((date) => (\n <p key={date}>{new Date(date).toLocaleString(loc)}</p>\n ))}\n {mode === \"addons\" &&\n \"addons\" in quote.after &&\n (quote as SubscriptionNextItemsQuote).after.addons.map(\n (li) => (\n <p key={li.variant_id}>\n {li.title ?? li.sku ?? li.variant_id} × {li.quantity}\n </p>\n ),\n )}\n {\"display_items\" in quote &&\n quote.display_items?.map((li) => (\n <p key={li.variant_id}>\n {li.title} × {li.quantity}\n </p>\n ))}\n <strong>\n {t(\"subscriptions.reviewTotal\")}: {money(amount)}\n </strong>\n </div>\n ) : mode === \"cadence\" ? (\n <div\n role=\"group\"\n aria-label={t(\"subscriptions.changeInterval\")}\n style={{ display: \"flex\", gap: \".5rem\", flexWrap: \"wrap\" }}\n >\n {upcoming.capabilities.cadence_options?.map((o) => (\n <SubscriptionButton\n key={o.id}\n aria-pressed={option === o.id}\n onClick={() => setOption(o.id)}\n >\n {t(`subscriptions.unit.${o.unit}`, { count: o.count })}\n </SubscriptionButton>\n ))}\n </div>\n ) : (\n <ProductSelection\n maxQuantity={\n mode === \"mix\"\n ? (upcoming.capabilities.mix?.per_sku_max ?? 99)\n : 99\n }\n load={loader}\n value={quantities}\n onChange={setQuantities}\n initialItems={\n upcoming.lines\n .filter((li) => li.scope === scope)\n .map((li) => ({\n ...li,\n title: li.title ?? li.sku ?? li.variant_id,\n currency: s.currency,\n variant_title: li.variant_title ?? null,\n sku: li.sku ?? null,\n })) as SubscriptionProductOption[]\n }\n locale={loc}\n />\n )}\n {(quote || mode === \"skip\") && (\n <label\n style={{\n display: \"flex\",\n gap: \".5rem\",\n alignItems: \"flex-start\",\n }}\n >\n <input\n type=\"checkbox\"\n checked={consent}\n onChange={(e) => setConsent(e.target.checked)}\n />\n {t(\"subscriptions.acceptChange\")}\n </label>\n )}\n {error && <p role=\"alert\">{error}</p>}\n {locked ? (\n <SubscriptionButton onClick={() => void refresh()}>\n {t(\"subscriptions.reloadBeforeRetry\")}\n </SubscriptionButton>\n ) : (\n <div style={{ display: \"flex\", gap: \".5rem\", flexWrap: \"wrap\" }}>\n <SubscriptionButton\n disabled={busy}\n onClick={() =>\n quote ? (setQuote(null), setConsent(false)) : enter(null)\n }\n >\n {t(quote ? \"subscriptions.back\" : \"account.cancel\")}\n </SubscriptionButton>\n <SubscriptionButton\n type=\"submit\"\n primary\n disabled={\n busy ||\n (quote || mode === \"skip\"\n ? !consent\n : mode === \"cadence\"\n ? !option\n : mode === \"mix\"\n ? !selected.length\n : false)\n }\n >\n {busy\n ? t(\"subscriptions.loading\")\n : t(\n quote || mode === \"skip\"\n ? \"subscriptions.confirmChange\"\n : \"subscriptions.reviewChange\",\n )}\n </SubscriptionButton>\n </div>\n )}\n </fieldset>\n </form>\n )}\n </section>\n );\n}\n","\"use client\";\n\n/**\n * JSON-LD helpers. Structured data is *data*, but it's embedded in an inline\n * `<script>` in the HTML, so it must be escaped against the one thing that can\n * break out of that context: a literal `</script>` (and stray `<`, `>`, `&`).\n * `serializeJsonLd` hex-escapes those; `<JsonLd>` renders the script tag.\n */\n\nimport * as React from \"react\";\n\n/** JSON-safe + HTML-script-safe serialization for embedding in `<script>`. */\nexport function serializeJsonLd(data: unknown): string {\n return JSON.stringify(data)\n .replace(/</g, \"\\\\u003c\")\n .replace(/>/g, \"\\\\u003e\")\n .replace(/&/g, \"\\\\u0026\");\n}\n\n/** Strip HTML tags + collapse whitespace → plain text (for JSON-LD descriptions). */\nexport function stripHtml(html: string | null | undefined): string | undefined {\n if (!html) return undefined;\n const text = html.replace(/<[^>]*>/g, \" \").replace(/\\s+/g, \" \").trim();\n return text || undefined;\n}\n\n/** Absolutize a possibly-relative URL against an origin. */\nexport function absoluteUrl(url: string, base?: string): string {\n if (!url) return url;\n if (/^https?:\\/\\//i.test(url) || url.startsWith(\"data:\")) return url;\n if (!base) return url;\n return `${base.replace(/\\/+$/, \"\")}/${url.replace(/^\\/+/, \"\")}`;\n}\n\n/** Drop null/undefined keys so the emitted JSON-LD stays clean. */\nexport function compact<T extends Record<string, unknown>>(obj: T): Partial<T> {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(obj)) {\n if (v !== null && v !== undefined) out[k] = v;\n }\n return out as Partial<T>;\n}\n\nexport interface JsonLdProps {\n data: unknown;\n}\n\n/** Render a JSON-LD `<script>` for the given (already-shaped) data object. */\nexport function JsonLd({ data }: JsonLdProps): React.ReactElement {\n return (\n <script\n type=\"application/ld+json\"\n dangerouslySetInnerHTML={{ __html: serializeJsonLd(data) }}\n />\n );\n}\n","\"use client\";\n\n/**\n * ProductJsonLd — schema.org/Product structured data for rich results (price,\n * availability, brand). Drop it in the PDP <head> (or anywhere; it's a script).\n * Availability maps from the variant stock state the storefront now projects.\n *\n * <ProductJsonLd product={product} url={`https://shop.example.com/products/${product.handle}`} />\n */\n\nimport * as React from \"react\";\nimport type { AvailabilityStatus, Product } from \"@nevios/storefront-js\";\n\nimport { JsonLd, absoluteUrl, compact, stripHtml } from \"./utils\";\n\nconst SCHEMA_AVAILABILITY: Record<AvailabilityStatus, string> = {\n in_stock: \"https://schema.org/InStock\",\n preorder: \"https://schema.org/PreOrder\",\n out_of_stock: \"https://schema.org/OutOfStock\",\n};\n\nexport interface ProductJsonLdProps {\n product: Product;\n /** Absolute canonical URL of this product page. */\n url: string;\n /** Origin used to absolutize relative media URLs (defaults to `url`'s origin). */\n baseUrl?: string;\n /** Brand name (defaults to `product.vendor`). */\n brandName?: string;\n}\n\nexport function ProductJsonLd({\n product,\n url,\n baseUrl,\n brandName,\n}: ProductJsonLdProps): React.ReactElement {\n const origin = baseUrl ?? safeOrigin(url);\n const images = product.media.map((m) => absoluteUrl(m.url, origin));\n const brand = brandName ?? product.vendor;\n\n const offers = product.variants.map((v) =>\n compact({\n \"@type\": \"Offer\",\n price: (v.price.amount_cents / 100).toFixed(2),\n priceCurrency: v.price.currency,\n availability: SCHEMA_AVAILABILITY[v.availability?.status ?? \"in_stock\"],\n sku: v.sku ?? undefined,\n url,\n }),\n );\n\n const data = compact({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Product\",\n name: product.title,\n description: stripHtml(product.description_html),\n image: images.length ? images : undefined,\n sku: product.variants[0]?.sku ?? undefined,\n brand: brand ? { \"@type\": \"Brand\", name: brand } : undefined,\n offers: offers.length === 1 ? offers[0] : offers,\n });\n\n return <JsonLd data={data} />;\n}\n\nfunction safeOrigin(url: string): string | undefined {\n try {\n return new URL(url).origin;\n } catch {\n return undefined;\n }\n}\n","\"use client\";\n\n/**\n * BreadcrumbJsonLd — schema.org/BreadcrumbList for the trail Google shows under\n * a result. Pass the crumbs in order (Home → Collection → Product); each needs\n * an absolute URL.\n *\n * <BreadcrumbJsonLd items={[\n * { name: \"Home\", url: \"https://shop.example.com/\" },\n * { name: \"Shoes\", url: \"https://shop.example.com/collections/shoes\" },\n * { name: product.title, url: productUrl },\n * ]} />\n */\n\nimport * as React from \"react\";\n\nimport { JsonLd } from \"./utils\";\n\nexport interface BreadcrumbItem {\n name: string;\n url: string;\n}\n\nexport interface BreadcrumbJsonLdProps {\n items: BreadcrumbItem[];\n}\n\nexport function BreadcrumbJsonLd({ items }: BreadcrumbJsonLdProps): React.ReactElement | null {\n if (!items.length) return null;\n const data = {\n \"@context\": \"https://schema.org\",\n \"@type\": \"BreadcrumbList\",\n itemListElement: items.map((it, i) => ({\n \"@type\": \"ListItem\",\n position: i + 1,\n name: it.name,\n item: it.url,\n })),\n };\n return <JsonLd data={data} />;\n}\n","\"use client\";\n\n/**\n * OrganizationJsonLd — schema.org/Organization for the shop itself. Mount once\n * (e.g. in the root layout): one Organization per domain is the best practice.\n *\n * <OrganizationJsonLd name={shop.name} url=\"https://shop.example.com\" logo={shop.logo} />\n */\n\nimport * as React from \"react\";\n\nimport { JsonLd, compact } from \"./utils\";\n\nexport interface OrganizationJsonLdProps {\n name: string;\n url?: string;\n /** Logo URL (absolute). */\n logo?: string;\n /** Social / profile URLs. */\n sameAs?: string[];\n}\n\nexport function OrganizationJsonLd({\n name,\n url,\n logo,\n sameAs,\n}: OrganizationJsonLdProps): React.ReactElement {\n const data = compact({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n name,\n url,\n logo,\n sameAs: sameAs && sameAs.length ? sameAs : undefined,\n });\n return <JsonLd data={data} />;\n}\n","\"use client\";\nimport * as React from \"react\";\nimport type { SubscriptionPlan } from \"@nevios/storefront-js\";\nimport { useStorefront } from \"../provider\";\nimport { useCart } from \"../cart/cart-context\";\nimport { formatCents, useFormatLocale } from \"./money\";\nimport { useT } from \"../i18n\";\nimport {\n ProductSelection,\n SubscriptionButton,\n subscriptionPanel,\n} from \"./subscription-controls\";\n/** Atomic cart selection. This is a composition offer, not an ordinary bundle SKU. */\nfunction Mix({\n plan,\n marketId,\n locale,\n onAdded,\n}: {\n plan: SubscriptionPlan;\n marketId?: string;\n locale?: string;\n onAdded?: () => void;\n}) {\n const client = useStorefront(),\n cart = useCart(),\n t = useT(),\n [value, setValue] = React.useState<Record<string, number>>({}),\n [busy, setBusy] = React.useState(false),\n [error, setError] = React.useState(\"\"),\n [locked, setLocked] = React.useState(false);\n const load = React.useCallback(\n (q: string, offset: number, signal: AbortSignal) =>\n client.subscriptions.mixProducts(plan.id, {\n q,\n offset,\n marketId,\n signal,\n }),\n [client, plan.id, marketId],\n );\n const loc = useFormatLocale(locale);\n const mix = plan.capabilities?.mix;\n if (!mix) return null;\n const units = Object.values(value).reduce((a, b) => a + b, 0),\n lines = Object.entries(value)\n .filter(([, q]) => q > 0)\n .map(([variant_id, quantity]) => ({ variant_id, quantity }));\n const valid =\n units >= mix.min_units &&\n units <= mix.max_units &&\n lines.every(\n (li) =>\n Number.isInteger(li.quantity) && li.quantity <= (mix.per_sku_max ?? 99),\n ) &&\n (mix.groups ?? []).every((g) => {\n const n = lines\n .filter((li) => g.variant_ids.includes(li.variant_id))\n .reduce((a, li) => a + li.quantity, 0);\n return n >= g.min_units && n <= g.max_units;\n });\n return (\n <section style={{ ...subscriptionPanel, display: \"grid\", gap: \"1rem\" }}>\n <h2 style={{ fontWeight: 500, margin: 0 }}>{plan.name}</h2>\n {plan.price && (\n <p>\n {formatCents(plan.price.amount_cents, plan.price.currency, loc)} ·{\" \"}\n {t(\"subscriptions.mixPrice\")}\n </p>\n )}\n <p role=\"status\">\n {t(\"subscriptions.mixCount\", {\n count: units,\n min: mix.min_units,\n max: mix.max_units,\n })}\n </p>\n {mix.groups?.map((g) => (\n <p key={g.name}>\n {g.name}: {g.min_units}–{g.max_units}\n </p>\n ))}\n <fieldset\n disabled={busy || locked}\n style={{ border: 0, padding: 0, margin: 0, minWidth: 0 }}\n >\n <ProductSelection\n maxQuantity={mix.per_sku_max ?? 99}\n load={load}\n value={value}\n onChange={(v) => {\n setValue(v);\n setError(\"\");\n }}\n locale={locale}\n />\n </fieldset>\n {error && <p role=\"alert\">{error}</p>}\n {locked ? (\n <SubscriptionButton\n onClick={async () => {\n await cart.refresh();\n setLocked(false);\n }}\n >\n {t(\"subscriptions.reloadBeforeRetry\")}\n </SubscriptionButton>\n ) : (\n <SubscriptionButton\n primary\n disabled={!valid || busy || cart.loading}\n onClick={async () => {\n setBusy(true);\n setError(\"\");\n try {\n await cart.setSubscriptionMix(\n plan.id,\n lines,\n cart.cart?.line_items\n .filter((li) => li.subscription_plan_id)\n .map((li) => li.id) ?? [],\n );\n onAdded?.();\n } catch (err) {\n setLocked(true);\n setError(err instanceof Error ? err.message : String(err));\n } finally {\n setBusy(false);\n }\n }}\n >\n {t(\"subscriptions.addMix\")}\n </SubscriptionButton>\n )}\n </section>\n );\n}\n\nexport function SubscriptionMix(props: Parameters<typeof Mix>[0]) {\n return (\n <Mix\n key={`${props.plan.id}:${props.plan.version}:${props.marketId ?? \"\"}`}\n {...props}\n />\n );\n}\n"]}
|