@thorprovider/blocks 3.0.2 → 4.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.
- package/README.md +61 -21
- package/dist/blocks/designs/checkout-commerce-v1/block.d.ts +49 -0
- package/dist/blocks/designs/checkout-commerce-v1/block.d.ts.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/block.js +2487 -0
- package/dist/blocks/designs/checkout-commerce-v1/block.js.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/block.mjs +2467 -0
- package/dist/blocks/designs/checkout-commerce-v1/block.mjs.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.d.ts +8 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.d.ts.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.js +44 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.js.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.mjs +19 -0
- package/dist/blocks/designs/checkout-commerce-v1/data-context.mjs.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.d.ts +3 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.d.ts.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.js +36 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.js.map +1 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.mjs +6 -0
- package/dist/blocks/designs/checkout-commerce-v1/index.mjs.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/block.d.ts +12 -0
- package/dist/blocks/designs/marketplace-product-card/block.d.ts.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/block.js +243 -0
- package/dist/blocks/designs/marketplace-product-card/block.js.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/block.mjs +233 -0
- package/dist/blocks/designs/marketplace-product-card/block.mjs.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/index.d.ts +3 -0
- package/dist/blocks/designs/marketplace-product-card/index.d.ts.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/index.js +36 -0
- package/dist/blocks/designs/marketplace-product-card/index.js.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/index.mjs +6 -0
- package/dist/blocks/designs/marketplace-product-card/index.mjs.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.d.ts +13 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.d.ts.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.js +36 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.js.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.mjs +12 -0
- package/dist/blocks/designs/marketplace-product-card/normalize.mjs.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/variants.d.ts +72 -0
- package/dist/blocks/designs/marketplace-product-card/variants.d.ts.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/variants.js +123 -0
- package/dist/blocks/designs/marketplace-product-card/variants.js.map +1 -0
- package/dist/blocks/designs/marketplace-product-card/variants.mjs +89 -0
- package/dist/blocks/designs/marketplace-product-card/variants.mjs.map +1 -0
- package/dist/blocks/e-commerce/account/account-frame.d.ts +38 -0
- package/dist/blocks/e-commerce/account/account-frame.d.ts.map +1 -0
- package/dist/blocks/e-commerce/account/account-frame.js +102 -0
- package/dist/blocks/e-commerce/account/account-frame.js.map +1 -0
- package/dist/blocks/e-commerce/account/account-frame.mjs +78 -0
- package/dist/blocks/e-commerce/account/account-frame.mjs.map +1 -0
- package/dist/blocks/e-commerce/account/address-book.d.ts +79 -0
- package/dist/blocks/e-commerce/account/address-book.d.ts.map +1 -0
- package/dist/blocks/e-commerce/account/address-book.js +250 -0
- package/dist/blocks/e-commerce/account/address-book.js.map +1 -0
- package/dist/blocks/e-commerce/account/address-book.mjs +225 -0
- package/dist/blocks/e-commerce/account/address-book.mjs.map +1 -0
- package/dist/blocks/e-commerce/account/profile-form.d.ts +35 -0
- package/dist/blocks/e-commerce/account/profile-form.d.ts.map +1 -0
- package/dist/blocks/e-commerce/account/profile-form.js +100 -0
- package/dist/blocks/e-commerce/account/profile-form.js.map +1 -0
- package/dist/blocks/e-commerce/account/profile-form.mjs +76 -0
- package/dist/blocks/e-commerce/account/profile-form.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts +11 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js +46 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs +22 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts +28 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js +278 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs +260 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +12 -9
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +49 -71
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +50 -72
- package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +6 -3
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +6 -3
- package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts +7 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js +41 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs +16 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts +24 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js +75 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs +58 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +3 -2
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +9 -2
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +9 -2
- package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +23 -8
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +136 -31
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +143 -32
- package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +13 -7
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +179 -28
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +180 -29
- package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts +20 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js +199 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs +175 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts +14 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js +136 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs +109 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +32 -10
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +265 -147
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +272 -148
- package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts +13 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js +74 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs +50 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts +7 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js +91 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs +65 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs.map +1 -0
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +174 -44
- package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout.js +532 -108
- package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -1
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +542 -109
- package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +44 -20
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +44 -20
- package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js +21 -10
- package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -1
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +21 -10
- package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-card.js +36 -9
- package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-card.mjs +36 -9
- package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js +7 -2
- package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -1
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +7 -2
- package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -1
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -1
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +5 -1
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -1
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +5 -1
- package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -1
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -1
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +71 -51
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -1
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +71 -51
- package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -1
- package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -1
- package/dist/blocks/marketing/banners/banner-1.js +15 -27
- package/dist/blocks/marketing/banners/banner-1.js.map +1 -1
- package/dist/blocks/marketing/banners/banner-1.mjs +16 -28
- package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -1
- package/dist/index.d.ts +16 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +13 -0
- package/dist/index.mjs.map +1 -1
- package/dist/lib/contracts/checkout-commerce-v1.d.ts +2350 -0
- package/dist/lib/contracts/checkout-commerce-v1.d.ts.map +1 -0
- package/dist/lib/contracts/checkout-commerce-v1.js +417 -0
- package/dist/lib/contracts/checkout-commerce-v1.js.map +1 -0
- package/dist/lib/contracts/checkout-commerce-v1.mjs +392 -0
- package/dist/lib/contracts/checkout-commerce-v1.mjs.map +1 -0
- package/dist/lib/contracts/marketplace-product-card.d.ts +324 -0
- package/dist/lib/contracts/marketplace-product-card.d.ts.map +1 -0
- package/dist/lib/contracts/marketplace-product-card.js +85 -0
- package/dist/lib/contracts/marketplace-product-card.js.map +1 -0
- package/dist/lib/contracts/marketplace-product-card.mjs +61 -0
- package/dist/lib/contracts/marketplace-product-card.mjs.map +1 -0
- package/dist/lib/contracts.d.ts +2289 -178
- package/dist/lib/contracts.d.ts.map +1 -1
- package/dist/lib/contracts.js +332 -25
- package/dist/lib/contracts.js.map +1 -1
- package/dist/lib/contracts.mjs +278 -5
- package/dist/lib/contracts.mjs.map +1 -1
- package/dist/lib/money-schema.d.ts +19 -0
- package/dist/lib/money-schema.d.ts.map +1 -0
- package/dist/lib/money-schema.js +33 -0
- package/dist/lib/money-schema.js.map +1 -0
- package/dist/lib/money-schema.mjs +9 -0
- package/dist/lib/money-schema.mjs.map +1 -0
- package/dist/lib/motion.d.ts +29 -0
- package/dist/lib/motion.d.ts.map +1 -0
- package/dist/lib/motion.js +65 -0
- package/dist/lib/motion.js.map +1 -0
- package/dist/lib/motion.mjs +41 -0
- package/dist/lib/motion.mjs.map +1 -0
- package/dist/ui/accordion.d.ts +3 -1
- package/dist/ui/accordion.d.ts.map +1 -1
- package/dist/ui/accordion.js +21 -5
- package/dist/ui/accordion.js.map +1 -1
- package/dist/ui/accordion.mjs +21 -5
- package/dist/ui/accordion.mjs.map +1 -1
- package/dist/ui/input-group.d.ts +1 -1
- package/package.json +18 -3
- package/dist/.tsbuildinfo +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var checkout_address_equality_exports = {};
|
|
20
|
+
__export(checkout_address_equality_exports, {
|
|
21
|
+
addressesEqual: () => addressesEqual
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(checkout_address_equality_exports);
|
|
24
|
+
const ADDRESS_KEYS = [
|
|
25
|
+
"firstName",
|
|
26
|
+
"lastName",
|
|
27
|
+
"address1",
|
|
28
|
+
"address2",
|
|
29
|
+
"company",
|
|
30
|
+
"city",
|
|
31
|
+
"province",
|
|
32
|
+
"postalCode",
|
|
33
|
+
"countryCode",
|
|
34
|
+
"phone"
|
|
35
|
+
];
|
|
36
|
+
function normalize(value) {
|
|
37
|
+
return (value ?? "").trim();
|
|
38
|
+
}
|
|
39
|
+
function addressesEqual(a, b) {
|
|
40
|
+
return ADDRESS_KEYS.every((key) => normalize(a[key]) === normalize(b[key]));
|
|
41
|
+
}
|
|
42
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
43
|
+
0 && (module.exports = {
|
|
44
|
+
addressesEqual
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=checkout-address-equality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-address-equality.ts"],"sourcesContent":["import type { CheckoutAddressValues } from '@thorprovider/types'\n\nconst ADDRESS_KEYS: Array<keyof CheckoutAddressValues> = [\n 'firstName',\n 'lastName',\n 'address1',\n 'address2',\n 'company',\n 'city',\n 'province',\n 'postalCode',\n 'countryCode',\n 'phone',\n]\n\nfunction normalize(value: string | undefined): string {\n return (value ?? '').trim()\n}\n\n/**\n * Compare two controlled addresses for the saved-address affordances.\n *\n * The host may serialise an absent optional field as `undefined` or as an\n * empty string; both mean \"not supplied\" and must compare equal. Whitespace is\n * ignored so a value that only gained surrounding spaces is still the same\n * address. Every address key participates.\n */\nexport function addressesEqual(\n a: CheckoutAddressValues,\n b: CheckoutAddressValues,\n): boolean {\n return ADDRESS_KEYS.every((key) => normalize(a[key]) === normalize(b[key]))\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,eAAmD;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,UAAU,OAAmC;AACpD,UAAQ,SAAS,IAAI,KAAK;AAC5B;AAUO,SAAS,eACd,GACA,GACS;AACT,SAAO,aAAa,MAAM,CAAC,QAAQ,UAAU,EAAE,GAAG,CAAC,MAAM,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5E;","names":[]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
const ADDRESS_KEYS = [
|
|
2
|
+
"firstName",
|
|
3
|
+
"lastName",
|
|
4
|
+
"address1",
|
|
5
|
+
"address2",
|
|
6
|
+
"company",
|
|
7
|
+
"city",
|
|
8
|
+
"province",
|
|
9
|
+
"postalCode",
|
|
10
|
+
"countryCode",
|
|
11
|
+
"phone"
|
|
12
|
+
];
|
|
13
|
+
function normalize(value) {
|
|
14
|
+
return (value ?? "").trim();
|
|
15
|
+
}
|
|
16
|
+
function addressesEqual(a, b) {
|
|
17
|
+
return ADDRESS_KEYS.every((key) => normalize(a[key]) === normalize(b[key]));
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
addressesEqual
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=checkout-address-equality.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-address-equality.ts"],"sourcesContent":["import type { CheckoutAddressValues } from '@thorprovider/types'\n\nconst ADDRESS_KEYS: Array<keyof CheckoutAddressValues> = [\n 'firstName',\n 'lastName',\n 'address1',\n 'address2',\n 'company',\n 'city',\n 'province',\n 'postalCode',\n 'countryCode',\n 'phone',\n]\n\nfunction normalize(value: string | undefined): string {\n return (value ?? '').trim()\n}\n\n/**\n * Compare two controlled addresses for the saved-address affordances.\n *\n * The host may serialise an absent optional field as `undefined` or as an\n * empty string; both mean \"not supplied\" and must compare equal. Whitespace is\n * ignored so a value that only gained surrounding spaces is still the same\n * address. Every address key participates.\n */\nexport function addressesEqual(\n a: CheckoutAddressValues,\n b: CheckoutAddressValues,\n): boolean {\n return ADDRESS_KEYS.every((key) => normalize(a[key]) === normalize(b[key]))\n}\n"],"mappings":"AAEA,MAAM,eAAmD;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,UAAU,OAAmC;AACpD,UAAQ,SAAS,IAAI,KAAK;AAC5B;AAUO,SAAS,eACd,GACA,GACS;AACT,SAAO,aAAa,MAAM,CAAC,QAAQ,UAAU,EAAE,GAAG,CAAC,MAAM,UAAU,EAAE,GAAG,CAAC,CAAC;AAC5E;","names":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CheckoutAddressLevel, CheckoutAddressValues, CheckoutLocationOptions } from '@thorprovider/types';
|
|
2
|
+
import type { CheckoutFieldError } from './checkout-form-types';
|
|
3
|
+
import type { CheckoutAddressChangeHandler, CheckoutLabels } from './checkout';
|
|
4
|
+
type AddressErrors = Partial<Record<keyof CheckoutAddressValues, CheckoutFieldError[]>>;
|
|
5
|
+
type AddressDescriptions = Partial<Record<keyof CheckoutAddressValues, string>>;
|
|
6
|
+
export interface CheckoutAddressFieldsProps {
|
|
7
|
+
prefix: 'shipping' | 'billing';
|
|
8
|
+
values: CheckoutAddressValues;
|
|
9
|
+
onChange: CheckoutAddressChangeHandler;
|
|
10
|
+
locations?: CheckoutLocationOptions;
|
|
11
|
+
onRetryLocation?: (level: CheckoutAddressLevel) => void;
|
|
12
|
+
labels: CheckoutLabels;
|
|
13
|
+
errors?: AddressErrors;
|
|
14
|
+
descriptions?: AddressDescriptions;
|
|
15
|
+
/** Rendered only for the shipping variant; billing keeps its own section heading. */
|
|
16
|
+
heading?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
requiredPhone?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The shared address form. The recipient fields come first, then the delivery
|
|
22
|
+
* address in a fixed order: line 1 (required), line 2 (optional), country,
|
|
23
|
+
* state/province, city, postal code. Billing reuses the same fields without the
|
|
24
|
+
* recipient legend.
|
|
25
|
+
*/
|
|
26
|
+
export declare function CheckoutAddressFields({ prefix, values, onChange, locations, onRetryLocation, labels, errors, descriptions, heading, description, requiredPhone, }: CheckoutAddressFieldsProps): import("react").JSX.Element;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=checkout-address-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkout-address-fields.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-address-fields.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EACV,4BAA4B,EAE5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,KAAK,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;AACvF,KAAK,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAA;AAE/E,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAA;IAC9B,MAAM,EAAE,qBAAqB,CAAA;IAC7B,QAAQ,EAAE,4BAA4B,CAAA;IACtC,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;IACvD,MAAM,EAAE,cAAc,CAAA;IACtB,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAClC,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,eAAe,EACf,MAAM,EACN,MAAM,EACN,YAAY,EACZ,OAAO,EACP,WAAW,EACX,aAAqB,GACtB,EAAE,0BAA0B,+BA+L5B"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var checkout_address_fields_exports = {};
|
|
21
|
+
__export(checkout_address_fields_exports, {
|
|
22
|
+
CheckoutAddressFields: () => CheckoutAddressFields
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(checkout_address_fields_exports);
|
|
25
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
var import_field = require("../../../ui/field.js");
|
|
27
|
+
var import_input = require("../../../ui/input.js");
|
|
28
|
+
var import_checkout_field_feedback = require("./checkout-field-feedback.js");
|
|
29
|
+
var import_checkout_location_select = require("./checkout-location-select.js");
|
|
30
|
+
var import_checkout_id_context = require("./checkout-id-context.js");
|
|
31
|
+
function CheckoutAddressFields({
|
|
32
|
+
prefix,
|
|
33
|
+
values,
|
|
34
|
+
onChange,
|
|
35
|
+
locations,
|
|
36
|
+
onRetryLocation,
|
|
37
|
+
labels,
|
|
38
|
+
errors,
|
|
39
|
+
descriptions,
|
|
40
|
+
heading,
|
|
41
|
+
description,
|
|
42
|
+
requiredPhone = false
|
|
43
|
+
}) {
|
|
44
|
+
const checkoutId = (0, import_checkout_id_context.useCheckoutIds)();
|
|
45
|
+
const id = (field) => checkoutId(`checkout-${prefix}-${field}`);
|
|
46
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldGroup, { className: "grid grid-cols-1 gap-6", children: [
|
|
47
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldSet, { children: [
|
|
48
|
+
heading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLegend, { children: heading }) : null,
|
|
49
|
+
description ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "text-muted-foreground -mt-3 text-sm", children: description }) : null,
|
|
50
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.firstName?.length, children: [
|
|
52
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("first-name"), children: labels.firstNameLabel }),
|
|
53
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
54
|
+
import_input.Input,
|
|
55
|
+
{
|
|
56
|
+
id: id("first-name"),
|
|
57
|
+
autoComplete: "given-name",
|
|
58
|
+
"aria-required": "true",
|
|
59
|
+
value: values.firstName,
|
|
60
|
+
onChange: (e) => onChange("firstName", e.target.value),
|
|
61
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("first-name"), errors?.firstName)
|
|
62
|
+
}
|
|
63
|
+
),
|
|
64
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
65
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
66
|
+
{
|
|
67
|
+
id: id("first-name"),
|
|
68
|
+
errors: errors?.firstName,
|
|
69
|
+
description: descriptions?.firstName
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
] }),
|
|
73
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.lastName?.length, children: [
|
|
74
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("last-name"), children: labels.lastNameLabel }),
|
|
75
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
+
import_input.Input,
|
|
77
|
+
{
|
|
78
|
+
id: id("last-name"),
|
|
79
|
+
autoComplete: "family-name",
|
|
80
|
+
"aria-required": "true",
|
|
81
|
+
value: values.lastName,
|
|
82
|
+
onChange: (e) => onChange("lastName", e.target.value),
|
|
83
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("last-name"), errors?.lastName)
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
87
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
88
|
+
{
|
|
89
|
+
id: id("last-name"),
|
|
90
|
+
errors: errors?.lastName,
|
|
91
|
+
description: descriptions?.lastName
|
|
92
|
+
}
|
|
93
|
+
)
|
|
94
|
+
] })
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.company?.length, children: [
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("company"), children: labels.companyLabel }),
|
|
98
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
99
|
+
import_input.Input,
|
|
100
|
+
{
|
|
101
|
+
id: id("company"),
|
|
102
|
+
autoComplete: "organization",
|
|
103
|
+
value: values.company ?? "",
|
|
104
|
+
onChange: (e) => onChange("company", e.target.value),
|
|
105
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("company"), errors?.company)
|
|
106
|
+
}
|
|
107
|
+
),
|
|
108
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
109
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
110
|
+
{
|
|
111
|
+
id: id("company"),
|
|
112
|
+
errors: errors?.company,
|
|
113
|
+
description: descriptions?.company
|
|
114
|
+
}
|
|
115
|
+
)
|
|
116
|
+
] }),
|
|
117
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.phone?.length, children: [
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldLabel, { htmlFor: id("phone"), children: [
|
|
119
|
+
labels.phoneLabel,
|
|
120
|
+
!requiredPhone ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
121
|
+
" (",
|
|
122
|
+
labels.optionalIndicatorLabel,
|
|
123
|
+
")"
|
|
124
|
+
] }) : null
|
|
125
|
+
] }),
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
127
|
+
import_input.Input,
|
|
128
|
+
{
|
|
129
|
+
id: id("phone"),
|
|
130
|
+
type: "tel",
|
|
131
|
+
inputMode: "tel",
|
|
132
|
+
autoComplete: "tel",
|
|
133
|
+
"aria-required": requiredPhone || void 0,
|
|
134
|
+
value: values.phone ?? "",
|
|
135
|
+
onChange: (e) => onChange("phone", e.target.value),
|
|
136
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("phone"), errors?.phone)
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
140
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
141
|
+
{
|
|
142
|
+
id: id("phone"),
|
|
143
|
+
errors: errors?.phone,
|
|
144
|
+
description: descriptions?.phone
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
] })
|
|
148
|
+
] }),
|
|
149
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldSet, { children: [
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLegend, { children: labels.addressHeading }),
|
|
151
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.address1?.length, children: [
|
|
152
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("address"), children: labels.addressLabel }),
|
|
153
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
154
|
+
import_input.Input,
|
|
155
|
+
{
|
|
156
|
+
id: id("address"),
|
|
157
|
+
"data-checkout-field": `${prefix}.address1`,
|
|
158
|
+
autoComplete: "address-line1",
|
|
159
|
+
"aria-required": "true",
|
|
160
|
+
value: values.address1,
|
|
161
|
+
onChange: (e) => onChange("address1", e.target.value),
|
|
162
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("address"), errors?.address1)
|
|
163
|
+
}
|
|
164
|
+
),
|
|
165
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
166
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
167
|
+
{
|
|
168
|
+
id: id("address"),
|
|
169
|
+
errors: errors?.address1,
|
|
170
|
+
description: descriptions?.address1
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
] }),
|
|
174
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.address2?.length, children: [
|
|
175
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("address2"), children: labels.address2Label }),
|
|
176
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
177
|
+
import_input.Input,
|
|
178
|
+
{
|
|
179
|
+
id: id("address2"),
|
|
180
|
+
autoComplete: "address-line2",
|
|
181
|
+
value: values.address2 ?? "",
|
|
182
|
+
onChange: (e) => onChange("address2", e.target.value),
|
|
183
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("address2"), errors?.address2)
|
|
184
|
+
}
|
|
185
|
+
),
|
|
186
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
187
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
188
|
+
{
|
|
189
|
+
id: id("address2"),
|
|
190
|
+
errors: errors?.address2,
|
|
191
|
+
description: descriptions?.address2
|
|
192
|
+
}
|
|
193
|
+
)
|
|
194
|
+
] }),
|
|
195
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
196
|
+
import_checkout_location_select.CheckoutLocationSelect,
|
|
197
|
+
{
|
|
198
|
+
id: id("country"),
|
|
199
|
+
label: labels.countryLabel,
|
|
200
|
+
placeholder: labels.countryPlaceholder,
|
|
201
|
+
value: values.countryCode,
|
|
202
|
+
options: locations?.countries ?? [],
|
|
203
|
+
state: locations?.countriesState,
|
|
204
|
+
error: locations?.countriesError,
|
|
205
|
+
onChange: (value) => onChange("countryCode", value),
|
|
206
|
+
onRetry: onRetryLocation ? () => onRetryLocation("countries") : void 0,
|
|
207
|
+
labels,
|
|
208
|
+
errors: errors?.countryCode,
|
|
209
|
+
description: descriptions?.countryCode
|
|
210
|
+
}
|
|
211
|
+
),
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
213
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
214
|
+
import_checkout_location_select.CheckoutLocationSelect,
|
|
215
|
+
{
|
|
216
|
+
id: id("province"),
|
|
217
|
+
label: labels.stateLabel,
|
|
218
|
+
placeholder: labels.provincePlaceholder,
|
|
219
|
+
value: values.province ?? "",
|
|
220
|
+
options: values.countryCode ? locations?.provinces ?? [] : [],
|
|
221
|
+
state: values.countryCode ? locations?.provincesState : void 0,
|
|
222
|
+
error: values.countryCode ? locations?.provincesError : void 0,
|
|
223
|
+
disabled: !values.countryCode,
|
|
224
|
+
onChange: (value) => onChange("province", value),
|
|
225
|
+
onRetry: onRetryLocation ? () => onRetryLocation("provinces") : void 0,
|
|
226
|
+
labels,
|
|
227
|
+
errors: errors?.province,
|
|
228
|
+
description: descriptions?.province
|
|
229
|
+
}
|
|
230
|
+
),
|
|
231
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
232
|
+
import_checkout_location_select.CheckoutLocationSelect,
|
|
233
|
+
{
|
|
234
|
+
id: id("city"),
|
|
235
|
+
label: labels.cityLabel,
|
|
236
|
+
placeholder: labels.cityPlaceholder,
|
|
237
|
+
value: values.city,
|
|
238
|
+
options: values.province ? locations?.cities ?? [] : [],
|
|
239
|
+
state: values.province ? locations?.citiesState : void 0,
|
|
240
|
+
error: values.province ? locations?.citiesError : void 0,
|
|
241
|
+
disabled: !values.province,
|
|
242
|
+
onChange: (value) => onChange("city", value),
|
|
243
|
+
onRetry: onRetryLocation ? () => onRetryLocation("cities") : void 0,
|
|
244
|
+
labels,
|
|
245
|
+
errors: errors?.city,
|
|
246
|
+
description: descriptions?.city
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
] }),
|
|
250
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!errors?.postalCode?.length, children: [
|
|
251
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: id("zip"), children: labels.zipCodeLabel }),
|
|
252
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
253
|
+
import_input.Input,
|
|
254
|
+
{
|
|
255
|
+
id: id("zip"),
|
|
256
|
+
autoComplete: "postal-code",
|
|
257
|
+
value: values.postalCode ?? "",
|
|
258
|
+
onChange: (e) => onChange("postalCode", e.target.value),
|
|
259
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(id("zip"), errors?.postalCode)
|
|
260
|
+
}
|
|
261
|
+
),
|
|
262
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
263
|
+
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
264
|
+
{
|
|
265
|
+
id: id("zip"),
|
|
266
|
+
errors: errors?.postalCode,
|
|
267
|
+
description: descriptions?.postalCode
|
|
268
|
+
}
|
|
269
|
+
)
|
|
270
|
+
] })
|
|
271
|
+
] })
|
|
272
|
+
] });
|
|
273
|
+
}
|
|
274
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
275
|
+
0 && (module.exports = {
|
|
276
|
+
CheckoutAddressFields
|
|
277
|
+
});
|
|
278
|
+
//# sourceMappingURL=checkout-address-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-address-fields.tsx"],"sourcesContent":["'use client'\n\nimport {\n Field,\n FieldGroup,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from '../../../ui/field'\nimport { Input } from '../../../ui/input'\nimport type {\n CheckoutAddressLevel,\n CheckoutAddressValues,\n CheckoutLocationOptions,\n} from '@thorprovider/types'\nimport { CheckoutFieldFeedback, checkoutFieldAria } from './checkout-field-feedback'\nimport { CheckoutLocationSelect } from './checkout-location-select'\nimport { useCheckoutIds } from './checkout-id-context'\nimport type { CheckoutFieldError } from './checkout-form-types'\nimport type {\n CheckoutAddressChangeHandler,\n CheckoutFieldDescriptions,\n CheckoutLabels,\n} from './checkout'\n\ntype AddressErrors = Partial<Record<keyof CheckoutAddressValues, CheckoutFieldError[]>>\ntype AddressDescriptions = Partial<Record<keyof CheckoutAddressValues, string>>\n\nexport interface CheckoutAddressFieldsProps {\n prefix: 'shipping' | 'billing'\n values: CheckoutAddressValues\n onChange: CheckoutAddressChangeHandler\n locations?: CheckoutLocationOptions\n onRetryLocation?: (level: CheckoutAddressLevel) => void\n labels: CheckoutLabels\n errors?: AddressErrors\n descriptions?: AddressDescriptions\n /** Rendered only for the shipping variant; billing keeps its own section heading. */\n heading?: string\n description?: string\n requiredPhone?: boolean\n}\n\n/**\n * The shared address form. The recipient fields come first, then the delivery\n * address in a fixed order: line 1 (required), line 2 (optional), country,\n * state/province, city, postal code. Billing reuses the same fields without the\n * recipient legend.\n */\nexport function CheckoutAddressFields({\n prefix,\n values,\n onChange,\n locations,\n onRetryLocation,\n labels,\n errors,\n descriptions,\n heading,\n description,\n requiredPhone = false,\n}: CheckoutAddressFieldsProps) {\n const checkoutId = useCheckoutIds()\n const id = (field: string) => checkoutId(`checkout-${prefix}-${field}`)\n\n return (\n <FieldGroup className=\"grid grid-cols-1 gap-6\">\n <FieldSet>\n {heading ? <FieldLegend>{heading}</FieldLegend> : null}\n {description ? (\n <p className=\"text-muted-foreground -mt-3 text-sm\">{description}</p>\n ) : null}\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <Field data-invalid={!!errors?.firstName?.length}>\n <FieldLabel htmlFor={id('first-name')}>{labels.firstNameLabel}</FieldLabel>\n <Input\n id={id('first-name')}\n autoComplete=\"given-name\"\n aria-required=\"true\"\n value={values.firstName}\n onChange={(e) => onChange('firstName', e.target.value)}\n {...checkoutFieldAria(id('first-name'), errors?.firstName)}\n />\n <CheckoutFieldFeedback\n id={id('first-name')}\n errors={errors?.firstName}\n description={descriptions?.firstName}\n />\n </Field>\n <Field data-invalid={!!errors?.lastName?.length}>\n <FieldLabel htmlFor={id('last-name')}>{labels.lastNameLabel}</FieldLabel>\n <Input\n id={id('last-name')}\n autoComplete=\"family-name\"\n aria-required=\"true\"\n value={values.lastName}\n onChange={(e) => onChange('lastName', e.target.value)}\n {...checkoutFieldAria(id('last-name'), errors?.lastName)}\n />\n <CheckoutFieldFeedback\n id={id('last-name')}\n errors={errors?.lastName}\n description={descriptions?.lastName}\n />\n </Field>\n </div>\n\n <Field data-invalid={!!errors?.company?.length}>\n <FieldLabel htmlFor={id('company')}>{labels.companyLabel}</FieldLabel>\n <Input\n id={id('company')}\n autoComplete=\"organization\"\n value={values.company ?? ''}\n onChange={(e) => onChange('company', e.target.value)}\n {...checkoutFieldAria(id('company'), errors?.company)}\n />\n <CheckoutFieldFeedback\n id={id('company')}\n errors={errors?.company}\n description={descriptions?.company}\n />\n </Field>\n\n <Field data-invalid={!!errors?.phone?.length}>\n <FieldLabel htmlFor={id('phone')}>\n {labels.phoneLabel}\n {!requiredPhone ? (\n <span className=\"text-muted-foreground\"> ({labels.optionalIndicatorLabel})</span>\n ) : null}\n </FieldLabel>\n <Input\n id={id('phone')}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel\"\n aria-required={requiredPhone || undefined}\n value={values.phone ?? ''}\n onChange={(e) => onChange('phone', e.target.value)}\n {...checkoutFieldAria(id('phone'), errors?.phone)}\n />\n <CheckoutFieldFeedback\n id={id('phone')}\n errors={errors?.phone}\n description={descriptions?.phone}\n />\n </Field>\n </FieldSet>\n\n <FieldSet>\n <FieldLegend>{labels.addressHeading}</FieldLegend>\n\n <Field data-invalid={!!errors?.address1?.length}>\n <FieldLabel htmlFor={id('address')}>{labels.addressLabel}</FieldLabel>\n <Input\n id={id('address')}\n data-checkout-field={`${prefix}.address1`}\n autoComplete=\"address-line1\"\n aria-required=\"true\"\n value={values.address1}\n onChange={(e) => onChange('address1', e.target.value)}\n {...checkoutFieldAria(id('address'), errors?.address1)}\n />\n <CheckoutFieldFeedback\n id={id('address')}\n errors={errors?.address1}\n description={descriptions?.address1}\n />\n </Field>\n\n <Field data-invalid={!!errors?.address2?.length}>\n <FieldLabel htmlFor={id('address2')}>{labels.address2Label}</FieldLabel>\n <Input\n id={id('address2')}\n autoComplete=\"address-line2\"\n value={values.address2 ?? ''}\n onChange={(e) => onChange('address2', e.target.value)}\n {...checkoutFieldAria(id('address2'), errors?.address2)}\n />\n <CheckoutFieldFeedback\n id={id('address2')}\n errors={errors?.address2}\n description={descriptions?.address2}\n />\n </Field>\n\n <CheckoutLocationSelect\n id={id('country')}\n label={labels.countryLabel}\n placeholder={labels.countryPlaceholder}\n value={values.countryCode}\n options={locations?.countries ?? []}\n state={locations?.countriesState}\n error={locations?.countriesError}\n onChange={(value) => onChange('countryCode', value)}\n onRetry={onRetryLocation ? () => onRetryLocation('countries') : undefined}\n labels={labels}\n errors={errors?.countryCode}\n description={descriptions?.countryCode}\n />\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <CheckoutLocationSelect\n id={id('province')}\n label={labels.stateLabel}\n placeholder={labels.provincePlaceholder}\n value={values.province ?? ''}\n options={values.countryCode ? locations?.provinces ?? [] : []}\n state={values.countryCode ? locations?.provincesState : undefined}\n error={values.countryCode ? locations?.provincesError : undefined}\n disabled={!values.countryCode}\n onChange={(value) => onChange('province', value)}\n onRetry={onRetryLocation ? () => onRetryLocation('provinces') : undefined}\n labels={labels}\n errors={errors?.province}\n description={descriptions?.province}\n />\n <CheckoutLocationSelect\n id={id('city')}\n label={labels.cityLabel}\n placeholder={labels.cityPlaceholder}\n value={values.city}\n options={values.province ? locations?.cities ?? [] : []}\n state={values.province ? locations?.citiesState : undefined}\n error={values.province ? locations?.citiesError : undefined}\n disabled={!values.province}\n onChange={(value) => onChange('city', value)}\n onRetry={onRetryLocation ? () => onRetryLocation('cities') : undefined}\n labels={labels}\n errors={errors?.city}\n description={descriptions?.city}\n />\n </div>\n\n <Field data-invalid={!!errors?.postalCode?.length}>\n <FieldLabel htmlFor={id('zip')}>{labels.zipCodeLabel}</FieldLabel>\n <Input\n id={id('zip')}\n autoComplete=\"postal-code\"\n value={values.postalCode ?? ''}\n onChange={(e) => onChange('postalCode', e.target.value)}\n {...checkoutFieldAria(id('zip'), errors?.postalCode)}\n />\n <CheckoutFieldFeedback\n id={id('zip')}\n errors={errors?.postalCode}\n description={descriptions?.postalCode}\n />\n </Field>\n </FieldSet>\n </FieldGroup>\n )\n}\n"],"mappings":"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","names":[]}
|