@nevios/storefront-kit 0.1.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.
@@ -0,0 +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/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/checkout/payment-section.tsx","../src/checkout/order-summary.tsx","../src/checkout/checkout-flow.tsx","../src/order/use-order-status.tsx","../src/order/parts.tsx","../src/order/order-confirmation.tsx","../src/order/order-status-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/seo/utils.tsx","../src/seo/product.tsx","../src/seo/breadcrumb.tsx","../src/seo/organization.tsx"],"names":["React","React2","React3","jsx","jsxs","React4","imageSrcSet","React5","React6","React7","React8","React9","React11","React12","React13","Row","React14","React15","React16","React17","React18","AddressForm","React19","React20","Fragment","React21"],"mappings":"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","file":"index.js","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 // 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 // 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.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 \"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 \"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.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\";\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, 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): Promise<Cart>;\n removeLine(lineId: string): 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 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 /** 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 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 });\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 } 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 { 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 <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, locale)}\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 } 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 { cart } = useCart();\n if (cart == null) return null;\n const t = cart.totals;\n const empty = t.item_count === 0;\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, locale)} />\n {t.tax_cents > 0 ? (\n <Row label={tr(\"cart.tax\")} value={formatCents(t.tax_cents, t.currency, locale)} 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, locale)} strong />\n\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 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\nexport interface PayOptions {\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 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 } 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\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 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 set = (key: keyof FormState) => (e: React.ChangeEvent<HTMLInputElement>) =>\n 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 } from \"../catalog/money\";\nimport { useT, type TFunction } 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 { 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 const days = estDays(q, t);\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, locale)}\n >\n <span style={{ display: \"flex\", flexDirection: \"column\" }}>\n <span style={{ fontWeight: 500 }}>{q.label}</span>\n {days ? (\n <span style={{ fontSize: \"0.8125rem\", color: \"var(--nv-muted)\" }}>{days}</span>\n ) : null}\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/** Localized delivery estimate, e.g. \"2 days\" / \"2 dny\" / \"1–3 days\". */\nfunction estDays(q: ShippingQuote, t: TFunction): string | null {\n const { estimated_days_min: lo, estimated_days_max: hi } = q;\n if (lo == null && hi == null) return null;\n if (lo != null && hi != null) {\n return lo === hi ? t(\"shipping.days\", { count: lo }) : t(\"shipping.daysRange\", { min: lo, max: hi });\n }\n const n = (lo ?? hi) as number;\n return t(\"shipping.days\", { count: n });\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 * The storefront never embeds a gateway — paying a card means a redirect.\n */\n\nimport * as React from \"react\";\nimport type { Checkout, PaymentMethod } from \"@nevios/storefront-js\";\n\nimport { formatCents } from \"../catalog/money\";\nimport { useT } from \"../i18n\";\nimport { useCheckout } from \"./checkout-context\";\nimport { Button, SelectRow, Section } from \"./ui\";\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}\n\nexport function PaymentSection({\n title,\n returnUrl,\n cancelUrl,\n onOrderPlaced,\n locale,\n}: PaymentSectionProps): React.ReactElement {\n const t = useT();\n const heading = title ?? t(\"checkout.payment\");\n const { checkout, paymentMethods, setPaymentMethod, pay, loading } = 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\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 }, []);\n\n const selectedMethod = methods?.find((m) => m.method === selected) ?? null;\n const isGateway = selectedMethod?.category === \"gateway\";\n\n async function placeOrder() {\n const result = await pay({ returnUrl, cancelUrl });\n if (result.kind === \"order\") onOrderPlaced?.(result.checkout);\n // gateway → pay() already redirected the browser.\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 <div role=\"radiogroup\" style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.6rem\" }}>\n {methods.map((m) => (\n <SelectRow\n key={m.method}\n selected={selected === m.method}\n onSelect={() => void setPaymentMethod(m.method)}\n trailing={\n m.surcharge_cents > 0 && checkout\n ? `+${formatCents(m.surcharge_cents, checkout.totals.currency, locale)}`\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 <div>\n <Button onClick={placeOrder} busy={loading} disabled={selected == null}>\n {isGateway ? t(\"checkout.payNow\") : t(\"checkout.placeOrder\")}\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 </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 } 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 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, locale);\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 } 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 /** 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 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) {\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 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 * 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 } 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 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, locale)}\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, locale)}\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 t = order.totals;\n const c = order.currency;\n const money = (cents: number) => formatCents(cents, c, locale);\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 locale?: string;\n}\n\nexport function OrderStatusPage({\n statusToken,\n order: initial,\n onContactSupport,\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 {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 * 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 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\n const refresh = React.useCallback(async () => {\n setLoading(true);\n try {\n setCustomer(await client.account.me());\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 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, 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 [devLink, setDevLink] = React.useState<string | null>(null);\n\n async function submit(e: React.FormEvent) {\n e.preventDefault();\n setBusy(true);\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 } 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 <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 [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 client.account.orders().then((o) => live && setOrders(o)).catch(() => live && setOrders([]));\n return () => {\n live = false;\n };\n }, [signedIn, client]);\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 {orders == null ? (\n <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 </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\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"]}