@ecomiq/storefront 2.1.4 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +377 -76
  3. package/dist/account-Dx4e3syi.js +258 -0
  4. package/dist/account-forms-AVk71ko7.js +39 -0
  5. package/dist/account-forms.d.ts +13 -0
  6. package/dist/account.d.ts +240 -0
  7. package/dist/address-defaults-BqjRhS82.js +14 -0
  8. package/dist/address-defaults.d.ts +11 -0
  9. package/dist/analytics/analytics-CG1Qagwl.js +148 -0
  10. package/dist/analytics/analytics.d.ts +1 -0
  11. package/dist/analytics/config-DJr-GRhs.js +62 -0
  12. package/dist/analytics/config.d.ts +22 -0
  13. package/dist/analytics/consent-B13rBpBs.js +57 -0
  14. package/dist/analytics/consent-banner-9QvRRy8v.js +239 -0
  15. package/dist/analytics/consent-banner.d.ts +20 -0
  16. package/dist/analytics/cookies-pLozllyB.js +100 -0
  17. package/dist/analytics/cookies.d.ts +6 -0
  18. package/dist/analytics/destinations-iECrlLIr.js +144 -0
  19. package/dist/analytics/events-Dt81tIp1.js +102 -0
  20. package/dist/analytics/events.d.ts +51 -0
  21. package/dist/analytics/tracker-p4yaoOyk.js +51 -0
  22. package/dist/api-cache-DsuIn5hX.js +159 -0
  23. package/dist/bank-accounts-DlEczQQ5.js +81 -0
  24. package/dist/bank-accounts.d.ts +4 -0
  25. package/dist/captcha-DAqaIx8m.js +117 -0
  26. package/dist/captcha.d.ts +34 -0
  27. package/dist/cart-D7DxZ2lD.js +30 -0
  28. package/dist/cart-actions-Bsub_FFG.js +116 -0
  29. package/dist/cart-actions.d.ts +15 -0
  30. package/dist/cart-drawer-B7PPsR69.js +22 -0
  31. package/dist/cart-drawer.d.ts +9 -0
  32. package/dist/cart-form-y9P1r_EX.js +81 -0
  33. package/dist/cart-form.d.ts +24 -0
  34. package/dist/cart-summary-ur2VWKr-.js +89 -0
  35. package/dist/cart-summary.d.ts +31 -0
  36. package/dist/cart.d.ts +4 -0
  37. package/dist/catalog-7gJ-l5hW.js +67 -0
  38. package/dist/catalog-hooks-B7ZP4wYY.js +312 -0
  39. package/dist/catalog-hooks.d.ts +111 -0
  40. package/dist/catalog.d.ts +5 -0
  41. package/dist/checkout-DVWSXANi.js +474 -0
  42. package/dist/checkout-form-CbOIdENC.js +131 -0
  43. package/dist/checkout-form.d.ts +20 -0
  44. package/dist/checkout.d.ts +86 -0
  45. package/dist/complaint-book-BvwLvfx0.js +117 -0
  46. package/dist/complaint-book.d.ts +62 -0
  47. package/dist/culqi-authentication-BGr20vAJ.js +204 -0
  48. package/dist/culqi-authentication.d.ts +15 -0
  49. package/dist/culqi-checkout-CTXpKgp_.js +55 -0
  50. package/dist/culqi-three-ds-HP3mfrvV.js +33 -0
  51. package/dist/culqi-three-ds.d.ts +29 -0
  52. package/dist/customer-avatar-CJXSDroK.js +12 -0
  53. package/dist/customer-avatar.d.ts +5 -0
  54. package/dist/customer-cookies-DHOgFAMV.js +45 -0
  55. package/dist/customer-csrf-C1oDX-Py.js +17 -0
  56. package/dist/customer-csrf.d.ts +3 -0
  57. package/dist/customer-document-fields-C1K-_DAD.js +70 -0
  58. package/dist/customer-document-fields.d.ts +9 -0
  59. package/dist/customer-login-form-C7AC6vXd.js +144 -0
  60. package/dist/customer-login-form.d.ts +17 -0
  61. package/dist/customer-registration-form-BEm_NEfP.js +93 -0
  62. package/dist/customer-registration-form.d.ts +8 -0
  63. package/dist/document-url-CGsAl5Tf.js +9 -0
  64. package/dist/documents-T1mzc_j8.js +38 -0
  65. package/dist/documents.d.ts +16 -0
  66. package/dist/entries/account.d.ts +11 -0
  67. package/dist/entries/account.js +10 -0
  68. package/dist/entries/analytics.d.ts +6 -0
  69. package/dist/entries/analytics.js +5 -0
  70. package/dist/entries/cart.d.ts +8 -0
  71. package/dist/entries/cart.js +7 -0
  72. package/dist/entries/checkout.d.ts +12 -0
  73. package/dist/entries/checkout.js +11 -0
  74. package/dist/entries/order.d.ts +11 -0
  75. package/dist/entries/order.js +11 -0
  76. package/dist/favicon-YpyhVJ9H.js +28 -0
  77. package/dist/favicon.d.ts +4 -0
  78. package/dist/form-BtQcbXlJ.js +18 -0
  79. package/dist/form-contracts-BNpHaTGJ.js +166 -0
  80. package/dist/form-contracts.d.ts +42 -0
  81. package/dist/form.d.ts +3 -0
  82. package/dist/hidden-CCWtOWKR.js +3 -0
  83. package/dist/hidden.d.ts +4 -0
  84. package/dist/index.d.ts +50 -0
  85. package/dist/index.js +50 -0
  86. package/dist/invoice-fields-BG0HjL6T.js +103 -0
  87. package/dist/invoice-fields.d.ts +39 -0
  88. package/dist/links-kFxBZfdb.js +96 -0
  89. package/dist/links.d.ts +21 -0
  90. package/dist/mercadopago-checkout-DC7RXa8k.js +27 -0
  91. package/dist/mercadopago-dialog-UTQev0MG.js +180 -0
  92. package/dist/mercadopago-dialog.d.ts +21 -0
  93. package/dist/money-DtGOtDri.js +32 -0
  94. package/dist/money.d.ts +1 -0
  95. package/dist/optimistic-cart-BveVOHuh.js +53 -0
  96. package/dist/optimistic-cart.d.ts +16 -0
  97. package/dist/order-display-DTt5WBbc.js +112 -0
  98. package/dist/order-display.d.ts +20 -0
  99. package/dist/order-draft-DxV1Uhm3.js +38 -0
  100. package/dist/order-draft.d.ts +16 -0
  101. package/dist/order-pages-Dm6l5m0m.js +38 -0
  102. package/dist/order-pages.d.ts +12 -0
  103. package/dist/order-payment-continuation-D_d5PGA4.js +212 -0
  104. package/dist/order-payment-continuation.d.ts +10 -0
  105. package/dist/order-payment-in-review-x4gdLFHZ.js +65 -0
  106. package/dist/order-payment-in-review.d.ts +5 -0
  107. package/dist/order-status-BJXLJwxq.js +162 -0
  108. package/dist/order-status.d.ts +89 -0
  109. package/dist/order-view-9IlBg5AF.js +62 -0
  110. package/dist/order-view.d.ts +12 -0
  111. package/dist/page-action-Ctkf4xC6.js +7 -0
  112. package/dist/page-seo-a5FJl8x5.js +262 -0
  113. package/dist/page-seo.d.ts +34 -0
  114. package/dist/pages-Ca_Gt6mq.js +150 -0
  115. package/dist/pages.d.ts +45 -0
  116. package/dist/payment-dialog-frame-B-Q_xQ94.js +57 -0
  117. package/dist/payment-logo-BoPaGJc_.js +46 -0
  118. package/dist/payment-logo-svgs-By9lDTLK.js +20 -0
  119. package/dist/payment-logo.d.ts +11 -0
  120. package/dist/payment-logos-BYvdwYyJ.js +23 -0
  121. package/dist/payment-methods-B8ocTgFZ.js +73 -0
  122. package/dist/payment-methods.d.ts +58 -0
  123. package/dist/payment-return-5cjypwIw.js +7 -0
  124. package/dist/place-CmW4hBWY.js +13 -0
  125. package/dist/place.d.ts +4 -0
  126. package/dist/preview-BiIBif3C.js +427 -0
  127. package/dist/preview-address-Cf0sJ-9p.js +21 -0
  128. package/dist/preview-cart-Dg2CVktS.js +376 -0
  129. package/dist/product-preview-BspMAecJ.js +51 -0
  130. package/dist/product-preview.d.ts +5 -0
  131. package/dist/product-variants-BNDHvs1y.js +46 -0
  132. package/dist/product-variants.d.ts +12 -0
  133. package/dist/public-pages-XtwlaLwt.js +194 -0
  134. package/dist/public-pages.d.ts +67 -0
  135. package/dist/registration-CpDcv8ql.js +91 -0
  136. package/dist/registration.d.ts +12 -0
  137. package/dist/request-security-CRsRMgwj.js +76 -0
  138. package/dist/rich-text-M-Ju8RL4.js +9 -0
  139. package/dist/rich-text.d.ts +5 -0
  140. package/dist/route-text-DcJw2SsK.js +9 -0
  141. package/dist/route-text.d.ts +4 -0
  142. package/dist/section-preview-CmsMl3yu.js +83 -0
  143. package/dist/section-preview.d.ts +12 -0
  144. package/dist/sections/account-addresses.d.ts +18 -0
  145. package/dist/sections/account-addresses.js +375 -0
  146. package/dist/sections/account-order.d.ts +12 -0
  147. package/dist/sections/account-order.js +592 -0
  148. package/dist/sections/account-orders.d.ts +8 -0
  149. package/dist/sections/account-orders.js +359 -0
  150. package/dist/sections/account-profile.d.ts +16 -0
  151. package/dist/sections/account-profile.js +123 -0
  152. package/dist/sections/checkout.d.ts +24 -0
  153. package/dist/sections/checkout.js +963 -0
  154. package/dist/sections/complaint-book.d.ts +8 -0
  155. package/dist/sections/complaint-book.js +538 -0
  156. package/dist/sections/design-system.d.ts +1 -0
  157. package/dist/sections/design-system.js +310 -0
  158. package/dist/sections/draft-invoice.d.ts +20 -0
  159. package/dist/sections/draft-invoice.js +158 -0
  160. package/dist/sections/order-tracking.d.ts +19 -0
  161. package/dist/sections/order-tracking.js +141 -0
  162. package/dist/sections-CNUMWTF_.js +77 -0
  163. package/dist/sections.d.ts +19 -0
  164. package/dist/seo-GpDRhAAA.js +78 -0
  165. package/dist/session-CKvmFJyg.js +379 -0
  166. package/dist/session.d.ts +24 -0
  167. package/dist/settings-B0NO2A6Y.js +78 -0
  168. package/dist/settings.d.ts +51 -0
  169. package/dist/source-marker-DhqSkW7n.js +4 -0
  170. package/dist/sources-B-3JFJfb.js +46 -0
  171. package/dist/sources.d.ts +7 -0
  172. package/dist/store-8Q-_LFrQ.js +152 -0
  173. package/dist/store-contact--hY6CoFb.js +19 -0
  174. package/dist/store-contact.d.ts +6 -0
  175. package/dist/store.d.ts +17 -0
  176. package/dist/storefront-language-DrMjVbmk.js +29 -0
  177. package/dist/storefront-language.d.ts +14 -0
  178. package/dist/storefront-text-D25ae1qf.js +11 -0
  179. package/dist/storefront-text-en-ljjjSS4q.js +1030 -0
  180. package/dist/storefront-text-pt-BtHaJLcp.js +1030 -0
  181. package/dist/storefront-text.d.ts +4 -0
  182. package/dist/stripe-dialog-Ev9s3Z62.js +396 -0
  183. package/dist/stripe-dialog.d.ts +30 -0
  184. package/dist/telemetry-HuZXWBPi.js +114 -0
  185. package/dist/telemetry.d.ts +10 -0
  186. package/dist/templates-CAqoNyTW.js +40 -0
  187. package/dist/templates.d.ts +15 -0
  188. package/dist/urls-CpGQPxvf.js +71 -0
  189. package/dist/urls.d.ts +18 -0
  190. package/dist/use-checkout-CZcxXJXi.js +42 -0
  191. package/dist/use-checkout-payment-9R-zacrJ.js +80 -0
  192. package/dist/use-checkout-payment.d.ts +18 -0
  193. package/dist/use-checkout.d.ts +36 -0
  194. package/dist/use-culqi-checkout-CrjLAipU.js +109 -0
  195. package/dist/use-order-payment-BKIz_IO0.js +45 -0
  196. package/dist/use-order-payment.d.ts +18 -0
  197. package/dist/use-payment-token-CErx-tN-.js +105 -0
  198. package/dist/vite-payment-logos-kziu7wKb.js +27 -0
  199. package/dist/vite-payment-logos.d.ts +24 -0
  200. package/dist/vite-public-assets-DW2fgtVb.js +209 -0
  201. package/dist/vite-public-assets.d.ts +29 -0
  202. package/dist/vite-sections-DTBr0-Kg.js +464 -0
  203. package/dist/vite-sections.d.ts +21 -0
  204. package/dist/vite-theme-ui-BMO-CDi3.js +41 -0
  205. package/dist/vite-theme-ui.d.ts +10 -0
  206. package/dist/vite.d.ts +36 -0
  207. package/dist/vite.js +127 -0
  208. package/dist/voucher-payment-CVFDZ1L8.js +66 -0
  209. package/dist/worker-CNi-gzCu.js +86 -0
  210. package/dist/worker.d.ts +27 -0
  211. package/package.json +100 -76
  212. package/src/sections/account-addresses.tsx +215 -0
  213. package/src/sections/account-order.tsx +424 -0
  214. package/src/sections/account-orders.tsx +259 -0
  215. package/src/sections/account-profile.tsx +70 -0
  216. package/src/sections/checkout.tsx +586 -0
  217. package/src/sections/complaint-book.tsx +325 -0
  218. package/src/sections/design-system.tsx +146 -0
  219. package/src/sections/draft-invoice.tsx +105 -0
  220. package/src/sections/order-tracking.tsx +81 -0
  221. package/src/vite-client.d.ts +4 -0
  222. package/bin/ecomiq.mjs +0 -179
  223. package/public/design-bridge.js +0 -318
  224. package/src/api-proxy.ts +0 -194
  225. package/src/auth/create-storefront-auth.ts +0 -94
  226. package/src/auth/ecomiq-oauth-password-client.ts +0 -26
  227. package/src/auth/ecomiq-oauth-password-constants.ts +0 -24
  228. package/src/auth/ecomiq-oauth-password-plugin.ts +0 -294
  229. package/src/auth/ecomiq-oauth-password-types.ts +0 -24
  230. package/src/auth/ecomiq-storefront-sign-in.ts +0 -44
  231. package/src/auth/env.ts +0 -7
  232. package/src/auth/secure-cookies.ts +0 -23
  233. package/src/auth/storefront-auth-base-url.ts +0 -117
  234. package/src/auth/storefront-auth.ts +0 -7
  235. package/src/cart-session.ts +0 -239
  236. package/src/client.ts +0 -48
  237. package/src/codegen.mjs +0 -801
  238. package/src/components/account/customer-addresses-panel.tsx +0 -678
  239. package/src/components/account/customer-order-detail-panel.tsx +0 -285
  240. package/src/components/account/customer-orders-panel.tsx +0 -192
  241. package/src/components/account/customer-profile-panel.tsx +0 -379
  242. package/src/components/checkout/cart-sync.ts +0 -143
  243. package/src/components/checkout/checkout-contact-section.tsx +0 -76
  244. package/src/components/checkout/checkout-external-update-banner.tsx +0 -15
  245. package/src/components/checkout/checkout-form-controls.tsx +0 -139
  246. package/src/components/checkout/checkout-line-items.tsx +0 -43
  247. package/src/components/checkout/checkout-order-summary.tsx +0 -165
  248. package/src/components/checkout/checkout-payment-section.tsx +0 -212
  249. package/src/components/checkout/checkout-session-view.tsx +0 -564
  250. package/src/components/checkout/checkout-shipping-address-section.tsx +0 -400
  251. package/src/components/checkout/checkout-shipping-section.tsx +0 -98
  252. package/src/components/checkout/checkout-states.tsx +0 -73
  253. package/src/components/checkout/checkout-step-card.tsx +0 -101
  254. package/src/components/checkout/checkout-steps.ts +0 -111
  255. package/src/components/checkout/form-schema.ts +0 -281
  256. package/src/components/checkout/format.ts +0 -15
  257. package/src/components/checkout/index.ts +0 -5
  258. package/src/components/checkout/map-customer-to-checkout.ts +0 -188
  259. package/src/components/checkout/types.ts +0 -41
  260. package/src/components/checkout/use-checkout-customer-prefill.ts +0 -409
  261. package/src/components/checkout/use-checkout-geo.ts +0 -50
  262. package/src/components/checkout/use-checkout-session.ts +0 -640
  263. package/src/components/hero.tsx +0 -291
  264. package/src/config.d.ts +0 -94
  265. package/src/config.mjs +0 -146
  266. package/src/format-money.ts +0 -31
  267. package/src/health.ts +0 -90
  268. package/src/hooks/index.ts +0 -9
  269. package/src/hooks/recently-viewed.ts +0 -125
  270. package/src/index.ts +0 -349
  271. package/src/link.tsx +0 -2
  272. package/src/pages/account/account-page-skeleton.tsx +0 -69
  273. package/src/pages/account/account-page-view.tsx +0 -270
  274. package/src/pages/account/account-shell.tsx +0 -101
  275. package/src/pages/account/parse-account-route.ts +0 -36
  276. package/src/pages/account.tsx +0 -16
  277. package/src/pages/api.$.ts +0 -20
  278. package/src/pages/api.auth.$.ts +0 -16
  279. package/src/pages/checkout.$checkoutId.tsx +0 -60
  280. package/src/pages/checkout.tsx +0 -31
  281. package/src/pages/pages.$pageSlug.tsx +0 -74
  282. package/src/pages/thank-you.tsx +0 -53
  283. package/src/providers/auth.tsx +0 -96
  284. package/src/providers/cart.tsx +0 -275
  285. package/src/providers/ecomiq.ts +0 -137
  286. package/src/providers/index.ts +0 -26
  287. package/src/proxy-api.ts +0 -20
  288. package/src/public-config.ts +0 -24
  289. package/src/review-submission.ts +0 -89
  290. package/src/runtime/context.ts +0 -2
  291. package/src/runtime/default-layout.tsx +0 -64
  292. package/src/runtime/head.ts +0 -149
  293. package/src/runtime/page.tsx +0 -143
  294. package/src/runtime/postcss-browser-stub.mjs +0 -5
  295. package/src/server-config-store.ts +0 -35
  296. package/src/server.ts +0 -286
  297. package/src/styles.css +0 -76
  298. package/src/ui/badge.tsx +0 -32
  299. package/src/ui/button.tsx +0 -31
  300. package/src/ui/card.tsx +0 -31
  301. package/src/ui/carousel.tsx +0 -218
  302. package/src/ui/cn.ts +0 -6
  303. package/src/ui/index.ts +0 -8
  304. package/src/ui/separator.tsx +0 -6
  305. package/src/ui/skeleton.tsx +0 -6
  306. package/src/ui/storefront-error.tsx +0 -49
  307. package/src/utils.ts +0 -36
  308. package/src/vite-inline.mjs +0 -263
  309. package/templates/__root.tsx +0 -83
  310. package/templates/router.tsx +0 -19
@@ -0,0 +1,17 @@
1
+ import { useRouteLoaderData } from "react-router";
2
+ import { jsx } from "react/jsx-runtime";
3
+ // src/customer-csrf.tsx
4
+ /** Reads the public antiforgery token supplied by the root loader. */
5
+ function useCustomerCsrfToken() {
6
+ return useRouteLoaderData("root")?.customerCsrfToken ?? "";
7
+ }
8
+ function CustomerCsrfField() {
9
+ const token = useCustomerCsrfToken();
10
+ if (!token) return null;
11
+ return /* @__PURE__ */ jsx("input", {
12
+ type: "hidden",
13
+ name: "__customer_csrf",
14
+ value: token
15
+ });
16
+ }
17
+ export { CustomerCsrfField, useCustomerCsrfToken };
@@ -0,0 +1,3 @@
1
+ /** Reads the public antiforgery token supplied by the root loader. */
2
+ export declare function useCustomerCsrfToken(): string;
3
+ export declare function CustomerCsrfField(): import("react").JSX.Element | null;
@@ -0,0 +1,70 @@
1
+ import { IDENTITY_DOCUMENT_TYPES, identityDocumentRule, isIdentityDocumentType } from "./documents-T1mzc_j8.js";
2
+ import { useStorefrontText } from "./storefront-language-DrMjVbmk.js";
3
+ import { useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ // src/customer-document-fields.tsx
6
+ function CustomerDocumentFields({ customer, countries }) {
7
+ const t = useStorefrontText();
8
+ const [country, setCountry] = useState(customer.identificationCountryCode ?? "");
9
+ const initialType = customer.identificationType;
10
+ const [type, setType] = useState(isIdentityDocumentType(initialType) ? initialType : "NationalId");
11
+ const [number, setNumber] = useState(customer.identificationNumber ?? "");
12
+ const documentType = type;
13
+ const rule = identityDocumentRule(documentType);
14
+ const required = number !== "" || (customer.entityIdentificationNumber ?? "") !== "";
15
+ const inputClass = "h-11 w-full rounded-md border border-input bg-background px-3 text-base font-normal md:text-sm";
16
+ return /* @__PURE__ */ jsxs("fieldset", {
17
+ className: "grid gap-4 sm:grid-cols-2",
18
+ children: [
19
+ /* @__PURE__ */ jsx("legend", {
20
+ className: "mb-4 font-heading text-lg",
21
+ children: t("Documento de identidad")
22
+ }),
23
+ /* @__PURE__ */ jsxs("label", {
24
+ className: "grid gap-1.5 text-sm font-medium",
25
+ children: [t("País emisor del documento"), /* @__PURE__ */ jsxs("select", {
26
+ name: "identificationCountryCode",
27
+ value: country,
28
+ required,
29
+ className: inputClass,
30
+ onChange: (event) => setCountry(event.target.value),
31
+ children: [/* @__PURE__ */ jsx("option", {
32
+ value: "",
33
+ children: t("Selecciona un país")
34
+ }), countries.map((item) => /* @__PURE__ */ jsx("option", {
35
+ value: item.code,
36
+ children: item.name
37
+ }, item.code))]
38
+ })]
39
+ }),
40
+ /* @__PURE__ */ jsxs("label", {
41
+ className: "grid gap-1.5 text-sm font-medium",
42
+ children: [t("Tipo de documento"), /* @__PURE__ */ jsx("select", {
43
+ name: "identificationType",
44
+ value: documentType,
45
+ className: inputClass,
46
+ onChange: (event) => {
47
+ if (isIdentityDocumentType(event.target.value)) setType(event.target.value);
48
+ },
49
+ children: IDENTITY_DOCUMENT_TYPES.map((item) => /* @__PURE__ */ jsx("option", {
50
+ value: item,
51
+ children: t(identityDocumentRule(item).label)
52
+ }, item))
53
+ })]
54
+ }),
55
+ /* @__PURE__ */ jsxs("label", {
56
+ className: "grid gap-1.5 text-sm font-medium sm:col-span-2",
57
+ children: [t("Número de documento"), /* @__PURE__ */ jsx("input", {
58
+ name: "document",
59
+ value: number,
60
+ inputMode: rule.inputMode,
61
+ pattern: rule.pattern,
62
+ maxLength: rule.maxLength,
63
+ className: inputClass,
64
+ onChange: (event) => setNumber(event.target.value)
65
+ })]
66
+ })
67
+ ]
68
+ });
69
+ }
70
+ export { CustomerDocumentFields };
@@ -0,0 +1,9 @@
1
+ import { CustomerMe } from "@ecomiq/core";
2
+ export type CustomerDocumentFieldsProps = {
3
+ customer: Pick<CustomerMe, "identificationType" | "identificationNumber" | "identificationCountryCode" | "entityIdentificationNumber">;
4
+ countries: {
5
+ code: string;
6
+ name: string;
7
+ }[];
8
+ };
9
+ export declare function CustomerDocumentFields({ customer, countries }: CustomerDocumentFieldsProps): import("react").JSX.Element;
@@ -0,0 +1,144 @@
1
+ import { useStorefrontText } from "./storefront-language-DrMjVbmk.js";
2
+ import { Captcha } from "./captcha-DAqaIx8m.js";
3
+ import { Form, useNavigation } from "react-router";
4
+ import { useEffect, useState } from "react";
5
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
+ // src/customer-login-form.tsx
7
+ /** The theme owns the surrounding page and styling; the SDK owns the shared form flow. */
8
+ function CustomerLoginForm({ data, classNames: styles }) {
9
+ const storefrontTranslate = useStorefrontText();
10
+ const busy = useNavigation().state !== "idle";
11
+ const [resending, setResending] = useState(false);
12
+ const [remaining, setRemaining] = useState(null);
13
+ useEffect(() => {
14
+ setResending(false);
15
+ const updateRemaining = () => setRemaining(Math.max(0, Math.ceil((data.retryAt - Date.now()) / 1e3)));
16
+ updateRemaining();
17
+ if (data.retryAt <= Date.now()) return;
18
+ const timer = setInterval(updateRemaining, 1e3);
19
+ return () => clearInterval(timer);
20
+ }, [data.retryAt, data.step]);
21
+ const send = data.step === "email" || resending;
22
+ let button = storefrontTranslate("Enviar código");
23
+ if (!send) button = storefrontTranslate("Ingresar");
24
+ if (resending) button = storefrontTranslate("Reenviar código");
25
+ if (busy) button = storefrontTranslate("Espera un momento…");
26
+ let intent = "verify";
27
+ if (send) intent = "send";
28
+ if (resending) intent = "resend";
29
+ let resendLabel = storefrontTranslate("Solicitar otro código");
30
+ if (remaining !== null && remaining > 0) resendLabel = `${storefrontTranslate("Reenviar código en")} ${remaining}s`;
31
+ return /* @__PURE__ */ jsxs(Form, {
32
+ method: "post",
33
+ className: styles.form,
34
+ children: [
35
+ data.step !== "email" ? /* @__PURE__ */ jsxs("p", {
36
+ className: styles.hint,
37
+ children: [
38
+ storefrontTranslate("Enviamos un código a"),
39
+ " ",
40
+ /* @__PURE__ */ jsx("strong", { children: data.email }),
41
+ "."
42
+ ]
43
+ }) : null,
44
+ data.step === "email" ? /* @__PURE__ */ jsxs("div", {
45
+ className: styles.field,
46
+ children: [/* @__PURE__ */ jsx("label", {
47
+ className: styles.label,
48
+ htmlFor: "customer-email",
49
+ children: storefrontTranslate("Correo electrónico")
50
+ }), /* @__PURE__ */ jsx("input", {
51
+ className: styles.input,
52
+ id: "customer-email",
53
+ name: "email",
54
+ type: "email",
55
+ autoComplete: "email",
56
+ autoFocus: true,
57
+ required: true,
58
+ maxLength: 254,
59
+ defaultValue: data.email,
60
+ placeholder: storefrontTranslate("tu@correo.com")
61
+ })]
62
+ }) : null,
63
+ !send && data.step === "code" ? /* @__PURE__ */ jsxs("div", {
64
+ className: styles.field,
65
+ children: [/* @__PURE__ */ jsx("label", {
66
+ className: styles.label,
67
+ htmlFor: "customer-code",
68
+ children: storefrontTranslate("Código de verificación")
69
+ }), /* @__PURE__ */ jsx("input", {
70
+ className: styles.input,
71
+ id: "customer-code",
72
+ name: "code",
73
+ type: "text",
74
+ inputMode: "numeric",
75
+ pattern: "[0-9]{6}",
76
+ autoComplete: "one-time-code",
77
+ autoFocus: true,
78
+ required: true,
79
+ minLength: 6,
80
+ maxLength: 6,
81
+ placeholder: "000000"
82
+ })]
83
+ }) : null,
84
+ !send && data.step === "secondFactor" ? /* @__PURE__ */ jsxs("div", {
85
+ className: styles.field,
86
+ children: [/* @__PURE__ */ jsx("label", {
87
+ className: styles.label,
88
+ htmlFor: "customer-second-factor",
89
+ children: storefrontTranslate("Código de autenticación o recuperación")
90
+ }), /* @__PURE__ */ jsx("input", {
91
+ className: styles.input,
92
+ id: "customer-second-factor",
93
+ name: "secondFactor",
94
+ type: "text",
95
+ autoComplete: "one-time-code",
96
+ autoFocus: true,
97
+ required: true,
98
+ placeholder: storefrontTranslate("Código de tu aplicación o recuperación")
99
+ })]
100
+ }) : null,
101
+ send ? /* @__PURE__ */ jsx(Captcha, {
102
+ captcha: data.captcha,
103
+ action: "customer_login_code",
104
+ errorClass: styles.error,
105
+ busy
106
+ }, data.retryAt) : null,
107
+ data.error ? /* @__PURE__ */ jsx("p", {
108
+ role: "alert",
109
+ className: styles.error,
110
+ children: storefrontTranslate(data.error)
111
+ }) : null,
112
+ /* @__PURE__ */ jsx("button", {
113
+ className: styles.button,
114
+ type: "submit",
115
+ name: "intent",
116
+ value: intent,
117
+ disabled: busy || send && !data.captcha.isConfigured,
118
+ children: button
119
+ }),
120
+ data.step !== "email" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [resending ? /* @__PURE__ */ jsx("button", {
121
+ type: "button",
122
+ className: styles.secondary,
123
+ disabled: busy,
124
+ onClick: () => setResending(false),
125
+ children: storefrontTranslate("Ya tengo un código")
126
+ }) : /* @__PURE__ */ jsx("button", {
127
+ type: "button",
128
+ className: styles.secondary,
129
+ disabled: busy || remaining === null || remaining > 0,
130
+ onClick: () => setResending(true),
131
+ children: resendLabel
132
+ }), /* @__PURE__ */ jsx("button", {
133
+ className: styles.secondary,
134
+ type: "submit",
135
+ name: "intent",
136
+ value: "reset",
137
+ formNoValidate: true,
138
+ disabled: busy,
139
+ children: storefrontTranslate("Usar otro correo")
140
+ })] }) : null
141
+ ]
142
+ });
143
+ }
144
+ export { CustomerLoginForm };
@@ -0,0 +1,17 @@
1
+ import { CustomerLoginData } from "./session.js";
2
+ export type CustomerLoginFormProps = {
3
+ data: CustomerLoginData;
4
+ /** Classes belong to the theme, so controls follow its own design tokens. */
5
+ classNames: {
6
+ form: string;
7
+ field: string;
8
+ label: string;
9
+ input: string;
10
+ button: string;
11
+ secondary: string;
12
+ error: string;
13
+ hint: string;
14
+ };
15
+ };
16
+ /** The theme owns the surrounding page and styling; the SDK owns the shared form flow. */
17
+ export declare function CustomerLoginForm({ data, classNames: styles }: CustomerLoginFormProps): import("react").JSX.Element;
@@ -0,0 +1,93 @@
1
+ import { useStorefrontText } from "./storefront-language-DrMjVbmk.js";
2
+ import { CustomerCsrfField } from "./customer-csrf-C1oDX-Py.js";
3
+ import { Form, useNavigation } from "react-router";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ // src/customer-registration-form.tsx
6
+ const FIELDS = [
7
+ {
8
+ name: "firstName",
9
+ label: "Nombre",
10
+ type: "text",
11
+ autoComplete: "given-name",
12
+ maxLength: 100
13
+ },
14
+ {
15
+ name: "lastName",
16
+ label: "Apellido",
17
+ type: "text",
18
+ autoComplete: "family-name",
19
+ maxLength: 100
20
+ },
21
+ {
22
+ name: "phone",
23
+ label: "Teléfono",
24
+ type: "tel",
25
+ autoComplete: "tel",
26
+ maxLength: 20
27
+ },
28
+ {
29
+ name: "dateOfBirth",
30
+ label: "Fecha de nacimiento",
31
+ type: "date",
32
+ autoComplete: "bday"
33
+ }
34
+ ];
35
+ function CustomerRegistrationForm({ data, classNames }) {
36
+ const storefrontTranslate = useStorefrontText();
37
+ const busy = useNavigation().state !== "idle";
38
+ const { registration } = data;
39
+ const canSkip = Object.values(registration.fields).every((mode) => mode !== "required");
40
+ return /* @__PURE__ */ jsxs(Form, {
41
+ method: "post",
42
+ action: `/account/register?next=${encodeURIComponent(data.next)}`,
43
+ className: classNames.form,
44
+ children: [
45
+ /* @__PURE__ */ jsx(CustomerCsrfField, {}),
46
+ data.error ? /* @__PURE__ */ jsx("p", {
47
+ role: "alert",
48
+ className: classNames.error,
49
+ children: storefrontTranslate(data.error)
50
+ }) : null,
51
+ FIELDS.map((field) => {
52
+ const mode = registration.fields[field.name];
53
+ if (mode === "hidden") return null;
54
+ return /* @__PURE__ */ jsxs("div", {
55
+ className: classNames.field,
56
+ children: [/* @__PURE__ */ jsxs("label", {
57
+ htmlFor: `registration-${field.name}`,
58
+ className: storefrontTranslate(classNames.label),
59
+ children: [storefrontTranslate(field.label), mode === "optional" ? ` (${storefrontTranslate("opcional")})` : ""]
60
+ }), /* @__PURE__ */ jsx("input", {
61
+ id: `registration-${field.name}`,
62
+ name: field.name,
63
+ type: field.type,
64
+ autoComplete: field.autoComplete,
65
+ defaultValue: registration[field.name] ?? "",
66
+ required: mode === "required",
67
+ maxLength: field.maxLength,
68
+ max: field.type === "date" ? data.today : void 0,
69
+ className: classNames.input
70
+ })]
71
+ }, field.name);
72
+ }),
73
+ /* @__PURE__ */ jsx("button", {
74
+ type: "submit",
75
+ name: "intent",
76
+ value: "complete",
77
+ disabled: busy,
78
+ className: classNames.button,
79
+ children: busy ? storefrontTranslate("Guardando…") : storefrontTranslate("Continuar")
80
+ }),
81
+ canSkip ? /* @__PURE__ */ jsx("button", {
82
+ type: "submit",
83
+ name: "intent",
84
+ value: "skip",
85
+ formNoValidate: true,
86
+ disabled: busy,
87
+ className: classNames.secondary,
88
+ children: storefrontTranslate("Omitir por ahora")
89
+ }) : null
90
+ ]
91
+ });
92
+ }
93
+ export { CustomerRegistrationForm };
@@ -0,0 +1,8 @@
1
+ import { CustomerLoginFormProps } from "./customer-login-form.js";
2
+ import { CustomerRegistrationData } from "./registration.js";
3
+ export type CustomerRegistrationFormProps = {
4
+ data: CustomerRegistrationData;
5
+ /** The theme owns layout, spacing, colors and controls through its classes. */
6
+ classNames: CustomerLoginFormProps["classNames"];
7
+ };
8
+ export declare function CustomerRegistrationForm({ data, classNames }: CustomerRegistrationFormProps): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ // src/document-url.ts
2
+ function documentUrl(value) {
3
+ const url = new URL(value);
4
+ if (url.pathname.endsWith("/_.data")) url.pathname = url.pathname.replace(/_\.data$/, "");
5
+ else url.pathname = url.pathname.replace(/\.data$/, "");
6
+ if (url.searchParams.has("_routes")) url.searchParams.delete("_routes");
7
+ return url;
8
+ }
9
+ export { documentUrl };
@@ -0,0 +1,38 @@
1
+ // src/documents.ts
2
+ const IDENTITY_DOCUMENT_TYPES = [
3
+ "NationalId",
4
+ "TaxId",
5
+ "ForeignId",
6
+ "Passport"
7
+ ];
8
+ function isIdentityDocumentType(value) {
9
+ return value === "NationalId" || value === "TaxId" || value === "ForeignId" || value === "Passport";
10
+ }
11
+ const IDENTITY_DOCUMENT_LABELS = {
12
+ NationalId: "Documento nacional",
13
+ TaxId: "Identificación fiscal",
14
+ ForeignId: "Documento de extranjería",
15
+ Passport: "Pasaporte"
16
+ };
17
+ function identityDocumentRule(type) {
18
+ return {
19
+ label: IDENTITY_DOCUMENT_LABELS[type],
20
+ pattern: "[^\\u0000-\\u001f\\u007f-\\u009f]{1,50}",
21
+ maxLength: 50,
22
+ inputMode: "text",
23
+ error: "Revisa el número de documento."
24
+ };
25
+ }
26
+ function identityDocumentError(type, countryCode, value) {
27
+ if (value === "") return null;
28
+ if (!/^[A-Z]{2}$/.test(countryCode)) return "Elige el país emisor del documento.";
29
+ if (value.trim() === "" || value.length > 50 || /[\u0000-\u001f\u007f-\u009f]/.test(value)) return identityDocumentRule(type).error;
30
+ return null;
31
+ }
32
+ const COMPLAINT_DOCUMENT_TYPES = {
33
+ nationalId: "NationalId",
34
+ taxId: "TaxId",
35
+ foreignId: "ForeignId",
36
+ passport: "Passport"
37
+ };
38
+ export { COMPLAINT_DOCUMENT_TYPES, IDENTITY_DOCUMENT_TYPES, identityDocumentError, identityDocumentRule, isIdentityDocumentType };
@@ -0,0 +1,16 @@
1
+ export type DocumentRule = {
2
+ label: string;
3
+ pattern: string;
4
+ maxLength: number;
5
+ inputMode: "text";
6
+ error: string;
7
+ };
8
+ export declare const IDENTITY_DOCUMENT_TYPES: readonly ["NationalId", "TaxId", "ForeignId", "Passport"];
9
+ export type IdentityDocumentType = (typeof IDENTITY_DOCUMENT_TYPES)[number];
10
+ export declare function identityDocumentRule(type: IdentityDocumentType): DocumentRule;
11
+ export declare const COMPLAINT_DOCUMENT_TYPES: {
12
+ readonly nationalId: "NationalId";
13
+ readonly taxId: "TaxId";
14
+ readonly foreignId: "ForeignId";
15
+ readonly passport: "Passport";
16
+ };
@@ -0,0 +1,11 @@
1
+ import { AddressActionData, OrderFilters, OrderRequestActionData, OrdersData, ProfileActionData, addressAction, loadAccount, loadAddresses, loadOrder, loadOrders, loadProfile, orderFiltersQuery, orderRequestAction, profileAction, readOrderFilters } from "../account.js";
2
+ import { mainPayment, orderStepLabel, orderStepOf, paymentLabel, paymentStatusLabel } from "../order-view.js";
3
+ import { MoreOrders, useOrderPages } from "../order-pages.js";
4
+ import { PayButton, PaymentPreview, ReorderButton, useOrderHeadline, useOrderStepDetail } from "../order-display.js";
5
+ import { AddressForm, AddressFormProps, ProfileForm, ProfileFormProps } from "../account-forms.js";
6
+ import { AddressDefaults, addressDefaults } from "../address-defaults.js";
7
+ import { placeValue, useGeoCascade } from "../catalog-hooks.js";
8
+ import { SummaryLabels, SummaryLine, SummaryOrder, orderSummaryLines } from "../cart-summary.js";
9
+ import { AddressIntent } from "../form-contracts.js";
10
+ import { CustomerDocumentFields, CustomerDocumentFieldsProps } from "../customer-document-fields.js";
11
+ export { type AddressActionData, type AddressDefaults, AddressForm, type AddressFormProps, type AddressIntent, CustomerDocumentFields, type CustomerDocumentFieldsProps, type MoreOrders, type OrderFilters, type OrderRequestActionData, type OrdersData, PayButton, PaymentPreview, type ProfileActionData, ProfileForm, type ProfileFormProps, ReorderButton, type SummaryLabels, type SummaryLine, type SummaryOrder, addressAction, addressDefaults, loadAccount, loadAddresses, loadOrder, loadOrders, loadProfile, mainPayment, orderFiltersQuery, orderRequestAction, orderStepLabel, orderStepOf, orderSummaryLines, paymentLabel, paymentStatusLabel, placeValue, profileAction, readOrderFilters, useGeoCascade, useOrderHeadline, useOrderPages, useOrderStepDetail };
@@ -0,0 +1,10 @@
1
+ import { addressAction, loadAccount, loadAddresses, loadOrder, loadOrders, loadProfile, orderFiltersQuery, orderRequestAction, profileAction, readOrderFilters } from "../account-Dx4e3syi.js";
2
+ import { mainPayment, orderStepLabel, orderStepOf, paymentLabel, paymentStatusLabel } from "../order-view-9IlBg5AF.js";
3
+ import { useOrderPages } from "../order-pages-Dm6l5m0m.js";
4
+ import { PayButton, PaymentPreview, ReorderButton, useOrderHeadline, useOrderStepDetail } from "../order-display-DTt5WBbc.js";
5
+ import { AddressForm, ProfileForm } from "../account-forms-AVk71ko7.js";
6
+ import { addressDefaults } from "../address-defaults-BqjRhS82.js";
7
+ import { placeValue, useGeoCascade } from "../catalog-hooks-B7ZP4wYY.js";
8
+ import { orderSummaryLines } from "../cart-summary-ur2VWKr-.js";
9
+ import { CustomerDocumentFields } from "../customer-document-fields-C1K-_DAD.js";
10
+ export { AddressForm, CustomerDocumentFields, PayButton, PaymentPreview, ProfileForm, ReorderButton, addressAction, addressDefaults, loadAccount, loadAddresses, loadOrder, loadOrders, loadProfile, mainPayment, orderFiltersQuery, orderRequestAction, orderStepLabel, orderStepOf, orderSummaryLines, paymentLabel, paymentStatusLabel, placeValue, profileAction, readOrderFilters, useGeoCascade, useOrderHeadline, useOrderPages, useOrderStepDetail };
@@ -0,0 +1,6 @@
1
+ import { Analytics } from "../analytics/analytics.js";
2
+ import { AnalyticsConfig, readAnalytics } from "../analytics/config.js";
3
+ import { ConsentBanner, ConsentBannerProps, ConsentLink, ConsentLinkProps } from "../analytics/consent-banner.js";
4
+ import { Consent } from "../analytics/cookies.js";
5
+ import { PageAnalytics, catalogAnalytics } from "../analytics/events.js";
6
+ export { Analytics, type AnalyticsConfig, type Consent, ConsentBanner, type ConsentBannerProps, ConsentLink, type ConsentLinkProps, type PageAnalytics, catalogAnalytics, readAnalytics };
@@ -0,0 +1,5 @@
1
+ import { Analytics } from "../analytics/analytics-CG1Qagwl.js";
2
+ import { readAnalytics } from "../analytics/config-DJr-GRhs.js";
3
+ import { ConsentBanner, ConsentLink } from "../analytics/consent-banner-9QvRRy8v.js";
4
+ import { catalogAnalytics } from "../analytics/events-Dt81tIp1.js";
5
+ export { Analytics, ConsentBanner, ConsentLink, catalogAnalytics, readAnalytics };
@@ -0,0 +1,8 @@
1
+ import { readCart } from "../cart.js";
2
+ import { CartActionData, CartData, cartAction, loadCart } from "../cart-actions.js";
3
+ import { CartControls, CartForm, CartFormProps, useCart } from "../cart-form.js";
4
+ import { CartLineLike, OptimisticCart, OptimisticCartLine, useOptimisticCart } from "../optimistic-cart.js";
5
+ import { CartDrawer, CartDrawerProvider, useCartDrawer } from "../cart-drawer.js";
6
+ import { SellerGroup, SellerLine, SummaryCart, SummaryLabels, SummaryLine, SummaryLineKey, groupBySeller, summaryLines } from "../cart-summary.js";
7
+ import { CartIntent } from "../form-contracts.js";
8
+ export { type CartActionData, type CartControls, type CartData, type CartDrawer, CartDrawerProvider, CartForm, type CartFormProps, type CartIntent, type CartLineLike, type OptimisticCart, type OptimisticCartLine, type SellerGroup, type SellerLine, type SummaryCart, type SummaryLabels, type SummaryLine, type SummaryLineKey, cartAction, groupBySeller, loadCart, readCart, summaryLines, useCart, useCartDrawer, useOptimisticCart };
@@ -0,0 +1,7 @@
1
+ import { readCart } from "../cart-D7DxZ2lD.js";
2
+ import { cartAction, loadCart } from "../cart-actions-Bsub_FFG.js";
3
+ import { CartForm, useCart } from "../cart-form-y9P1r_EX.js";
4
+ import { useOptimisticCart } from "../optimistic-cart-BveVOHuh.js";
5
+ import { CartDrawerProvider, useCartDrawer } from "../cart-drawer-B7PPsR69.js";
6
+ import { groupBySeller, summaryLines } from "../cart-summary-ur2VWKr-.js";
7
+ export { CartDrawerProvider, CartForm, cartAction, groupBySeller, loadCart, readCart, summaryLines, useCart, useCartDrawer, useOptimisticCart };
@@ -0,0 +1,12 @@
1
+ import { CheckoutActionData, CheckoutAddressDefaults, CheckoutData, CheckoutPaymentMethod, CheckoutRate, CheckoutShippingGroup, CheckoutStep, checkoutAction, loadCheckout, shouldRevalidateCheckout } from "../checkout.js";
2
+ import { useCheckout } from "../use-checkout.js";
3
+ import { CheckoutPaymentControls, useCheckoutPayment } from "../use-checkout-payment.js";
4
+ import { MercadoPagoDialog, MercadoPagoDialogState } from "../mercadopago-dialog.js";
5
+ import { StripeAuthentication, StripeDialog, StripeDialogState, StripeWallet, findStripeWallet, useAvailableStripeWallets } from "../stripe-dialog.js";
6
+ import { CheckoutForm, CheckoutFormProps, OrderBumpForm, OrderBumpFormProps, PromoCodeForm, PromoCodeFormProps } from "../checkout-form.js";
7
+ import { InvoiceCart, InvoiceFields, InvoiceFieldsProps, InvoiceFieldsState, InvoiceInputProps, InvoiceType } from "../invoice-fields.js";
8
+ import { ManualPaymentDetails, PaymentInputProps, PaymentMethodLike, PaymentMethodOption, PaymentMethodSaving, PaymentMethods, PaymentMethodsProps } from "../payment-methods.js";
9
+ import { SummaryLabels, SummaryLine, summaryLines } from "../cart-summary.js";
10
+ import { CheckoutIntent } from "../form-contracts.js";
11
+ import { CulqiAuthentication } from "../culqi-authentication.js";
12
+ export { type CheckoutActionData, type CheckoutAddressDefaults, type CheckoutData, CheckoutForm, type CheckoutFormProps, type CheckoutIntent, type CheckoutPaymentControls, type CheckoutPaymentMethod, type CheckoutRate, type CheckoutShippingGroup, type CheckoutStep, CulqiAuthentication, type InvoiceCart, InvoiceFields, type InvoiceFieldsProps, type InvoiceFieldsState, type InvoiceInputProps, type InvoiceType, type ManualPaymentDetails, MercadoPagoDialog, type MercadoPagoDialogState, OrderBumpForm, type OrderBumpFormProps, type PaymentInputProps, type PaymentMethodLike, type PaymentMethodOption, type PaymentMethodSaving, PaymentMethods, type PaymentMethodsProps, PromoCodeForm, type PromoCodeFormProps, StripeAuthentication, StripeDialog, type StripeDialogState, type StripeWallet, type SummaryLabels, type SummaryLine, checkoutAction, findStripeWallet, loadCheckout, shouldRevalidateCheckout, summaryLines, useAvailableStripeWallets, useCheckout, useCheckoutPayment };
@@ -0,0 +1,11 @@
1
+ import { checkoutAction, loadCheckout, shouldRevalidateCheckout } from "../checkout-DVWSXANi.js";
2
+ import { useCheckout } from "../use-checkout-CZcxXJXi.js";
3
+ import { useCheckoutPayment } from "../use-checkout-payment-9R-zacrJ.js";
4
+ import { MercadoPagoDialog } from "../mercadopago-dialog-UTQev0MG.js";
5
+ import { StripeAuthentication, StripeDialog, findStripeWallet, useAvailableStripeWallets } from "../stripe-dialog-Ev9s3Z62.js";
6
+ import { CheckoutForm, OrderBumpForm, PromoCodeForm } from "../checkout-form-CbOIdENC.js";
7
+ import { InvoiceFields } from "../invoice-fields-BG0HjL6T.js";
8
+ import { PaymentMethods } from "../payment-methods-B8ocTgFZ.js";
9
+ import { summaryLines } from "../cart-summary-ur2VWKr-.js";
10
+ import { CulqiAuthentication } from "../culqi-authentication-BGr20vAJ.js";
11
+ export { CheckoutForm, CulqiAuthentication, InvoiceFields, MercadoPagoDialog, OrderBumpForm, PaymentMethods, PromoCodeForm, StripeAuthentication, StripeDialog, checkoutAction, findStripeWallet, loadCheckout, shouldRevalidateCheckout, summaryLines, useAvailableStripeWallets, useCheckout, useCheckoutPayment };
@@ -0,0 +1,11 @@
1
+ import { OrderPaymentActionData, OrderProgressStep, OrderStatusData, hasOrderPaymentContinuation, loadOrderStatus, orderPaymentAction, orderProgress, orderStepTitle } from "../order-status.js";
2
+ import { OrderDraftActionData, OrderDraftData, loadOrderDraft, orderDraftAction } from "../order-draft.js";
3
+ import { OrderPaymentControls, useOrderPayment } from "../use-order-payment.js";
4
+ import { OrderPaymentContinuation } from "../order-payment-continuation.js";
5
+ import { OrderPaymentInReview } from "../order-payment-in-review.js";
6
+ import { BankAccountList } from "../bank-accounts.js";
7
+ import { PaymentInputProps, PaymentMethodOption, PaymentMethods, PaymentMethodsProps } from "../payment-methods.js";
8
+ import { SummaryLabels, SummaryLine, SummaryOrder, orderSummaryLines } from "../cart-summary.js";
9
+ import { MercadoPagoDialog } from "../mercadopago-dialog.js";
10
+ import { useOrderAuthentication } from "../culqi-authentication.js";
11
+ export { BankAccountList, MercadoPagoDialog, type OrderDraftActionData, type OrderDraftData, type OrderPaymentActionData, OrderPaymentContinuation, type OrderPaymentControls, OrderPaymentInReview, type OrderProgressStep, type OrderStatusData, type PaymentInputProps, type PaymentMethodOption, PaymentMethods, type PaymentMethodsProps, type SummaryLabels, type SummaryLine, type SummaryOrder, hasOrderPaymentContinuation, loadOrderDraft, loadOrderStatus, orderDraftAction, orderPaymentAction, orderProgress, orderStepTitle, orderSummaryLines, useOrderAuthentication, useOrderPayment };
@@ -0,0 +1,11 @@
1
+ import { hasOrderPaymentContinuation, loadOrderStatus, orderPaymentAction, orderProgress, orderStepTitle } from "../order-status-BJXLJwxq.js";
2
+ import { loadOrderDraft, orderDraftAction } from "../order-draft-DxV1Uhm3.js";
3
+ import { useOrderPayment } from "../use-order-payment-BKIz_IO0.js";
4
+ import { OrderPaymentContinuation } from "../order-payment-continuation-D_d5PGA4.js";
5
+ import { OrderPaymentInReview } from "../order-payment-in-review-x4gdLFHZ.js";
6
+ import { BankAccountList } from "../bank-accounts-DlEczQQ5.js";
7
+ import { PaymentMethods } from "../payment-methods-B8ocTgFZ.js";
8
+ import { orderSummaryLines } from "../cart-summary-ur2VWKr-.js";
9
+ import { MercadoPagoDialog } from "../mercadopago-dialog-UTQev0MG.js";
10
+ import { useOrderAuthentication } from "../culqi-authentication-BGr20vAJ.js";
11
+ export { BankAccountList, MercadoPagoDialog, OrderPaymentContinuation, OrderPaymentInReview, PaymentMethods, hasOrderPaymentContinuation, loadOrderDraft, loadOrderStatus, orderDraftAction, orderPaymentAction, orderProgress, orderStepTitle, orderSummaryLines, useOrderAuthentication, useOrderPayment };
@@ -0,0 +1,28 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ // src/favicon.tsx
3
+ function Favicon({ href }) {
4
+ if (href !== null && href !== "") return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("link", {
5
+ rel: "icon",
6
+ href
7
+ }), /* @__PURE__ */ jsx("link", {
8
+ rel: "apple-touch-icon",
9
+ href
10
+ })] });
11
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
12
+ /* @__PURE__ */ jsx("link", {
13
+ rel: "icon",
14
+ href: "/favicon.ico",
15
+ sizes: "48x48"
16
+ }),
17
+ /* @__PURE__ */ jsx("link", {
18
+ rel: "icon",
19
+ href: "/favicon.svg",
20
+ type: "image/svg+xml"
21
+ }),
22
+ /* @__PURE__ */ jsx("link", {
23
+ rel: "apple-touch-icon",
24
+ href: "/apple-touch-icon.png"
25
+ })
26
+ ] });
27
+ }
28
+ export { Favicon };
@@ -0,0 +1,4 @@
1
+ import { ReactElement } from "react";
2
+ export declare function Favicon({ href }: {
3
+ href: string | null;
4
+ }): ReactElement;
@@ -0,0 +1,18 @@
1
+ import { documentUrl } from "./document-url-CGsAl5Tf.js";
2
+ // src/form.ts
3
+ function text(form, name) {
4
+ const value = form.get(name);
5
+ return typeof value === "string" ? value.trim() : "";
6
+ }
7
+ function optional(form, name) {
8
+ const value = text(form, name);
9
+ return value === "" ? null : value;
10
+ }
11
+ function safeNext(value) {
12
+ if (!value || !value.startsWith("/") || /[\\\u0000-\u0020]/.test(value)) return "/account";
13
+ const base = "https://storefront.invalid";
14
+ const next = documentUrl(new URL(value, base));
15
+ if (next.origin !== base || /^\/account\/(login|callback|logout|register)(\/|$)/.test(next.pathname)) return "/account";
16
+ return `${next.pathname}${next.search}${next.hash}`;
17
+ }
18
+ export { optional, safeNext, text };