@thorprovider/blocks 3.0.2 → 4.0.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/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/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 +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -0
- package/dist/index.mjs.map +1 -1
- 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 +1861 -88
- package/dist/lib/contracts.d.ts.map +1 -1
- package/dist/lib/contracts.js +252 -25
- package/dist/lib/contracts.js.map +1 -1
- package/dist/lib/contracts.mjs +208 -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 @@
|
|
|
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":[]}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import {
|
|
4
|
+
Field,
|
|
5
|
+
FieldGroup,
|
|
6
|
+
FieldLabel,
|
|
7
|
+
FieldLegend,
|
|
8
|
+
FieldSet
|
|
9
|
+
} from "../../../ui/field.mjs";
|
|
10
|
+
import { Input } from "../../../ui/input.mjs";
|
|
11
|
+
import { CheckoutFieldFeedback, checkoutFieldAria } from "./checkout-field-feedback.mjs";
|
|
12
|
+
import { CheckoutLocationSelect } from "./checkout-location-select.mjs";
|
|
13
|
+
import { useCheckoutIds } from "./checkout-id-context.mjs";
|
|
14
|
+
function CheckoutAddressFields({
|
|
15
|
+
prefix,
|
|
16
|
+
values,
|
|
17
|
+
onChange,
|
|
18
|
+
locations,
|
|
19
|
+
onRetryLocation,
|
|
20
|
+
labels,
|
|
21
|
+
errors,
|
|
22
|
+
descriptions,
|
|
23
|
+
heading,
|
|
24
|
+
description,
|
|
25
|
+
requiredPhone = false
|
|
26
|
+
}) {
|
|
27
|
+
const checkoutId = useCheckoutIds();
|
|
28
|
+
const id = (field) => checkoutId(`checkout-${prefix}-${field}`);
|
|
29
|
+
return /* @__PURE__ */ jsxs(FieldGroup, { className: "grid grid-cols-1 gap-6", children: [
|
|
30
|
+
/* @__PURE__ */ jsxs(FieldSet, { children: [
|
|
31
|
+
heading ? /* @__PURE__ */ jsx(FieldLegend, { children: heading }) : null,
|
|
32
|
+
description ? /* @__PURE__ */ jsx("p", { className: "text-muted-foreground -mt-3 text-sm", children: description }) : null,
|
|
33
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
34
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.firstName?.length, children: [
|
|
35
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("first-name"), children: labels.firstNameLabel }),
|
|
36
|
+
/* @__PURE__ */ jsx(
|
|
37
|
+
Input,
|
|
38
|
+
{
|
|
39
|
+
id: id("first-name"),
|
|
40
|
+
autoComplete: "given-name",
|
|
41
|
+
"aria-required": "true",
|
|
42
|
+
value: values.firstName,
|
|
43
|
+
onChange: (e) => onChange("firstName", e.target.value),
|
|
44
|
+
...checkoutFieldAria(id("first-name"), errors?.firstName)
|
|
45
|
+
}
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ jsx(
|
|
48
|
+
CheckoutFieldFeedback,
|
|
49
|
+
{
|
|
50
|
+
id: id("first-name"),
|
|
51
|
+
errors: errors?.firstName,
|
|
52
|
+
description: descriptions?.firstName
|
|
53
|
+
}
|
|
54
|
+
)
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.lastName?.length, children: [
|
|
57
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("last-name"), children: labels.lastNameLabel }),
|
|
58
|
+
/* @__PURE__ */ jsx(
|
|
59
|
+
Input,
|
|
60
|
+
{
|
|
61
|
+
id: id("last-name"),
|
|
62
|
+
autoComplete: "family-name",
|
|
63
|
+
"aria-required": "true",
|
|
64
|
+
value: values.lastName,
|
|
65
|
+
onChange: (e) => onChange("lastName", e.target.value),
|
|
66
|
+
...checkoutFieldAria(id("last-name"), errors?.lastName)
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
/* @__PURE__ */ jsx(
|
|
70
|
+
CheckoutFieldFeedback,
|
|
71
|
+
{
|
|
72
|
+
id: id("last-name"),
|
|
73
|
+
errors: errors?.lastName,
|
|
74
|
+
description: descriptions?.lastName
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
] })
|
|
78
|
+
] }),
|
|
79
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.company?.length, children: [
|
|
80
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("company"), children: labels.companyLabel }),
|
|
81
|
+
/* @__PURE__ */ jsx(
|
|
82
|
+
Input,
|
|
83
|
+
{
|
|
84
|
+
id: id("company"),
|
|
85
|
+
autoComplete: "organization",
|
|
86
|
+
value: values.company ?? "",
|
|
87
|
+
onChange: (e) => onChange("company", e.target.value),
|
|
88
|
+
...checkoutFieldAria(id("company"), errors?.company)
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ jsx(
|
|
92
|
+
CheckoutFieldFeedback,
|
|
93
|
+
{
|
|
94
|
+
id: id("company"),
|
|
95
|
+
errors: errors?.company,
|
|
96
|
+
description: descriptions?.company
|
|
97
|
+
}
|
|
98
|
+
)
|
|
99
|
+
] }),
|
|
100
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.phone?.length, children: [
|
|
101
|
+
/* @__PURE__ */ jsxs(FieldLabel, { htmlFor: id("phone"), children: [
|
|
102
|
+
labels.phoneLabel,
|
|
103
|
+
!requiredPhone ? /* @__PURE__ */ jsxs("span", { className: "text-muted-foreground", children: [
|
|
104
|
+
" (",
|
|
105
|
+
labels.optionalIndicatorLabel,
|
|
106
|
+
")"
|
|
107
|
+
] }) : null
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ jsx(
|
|
110
|
+
Input,
|
|
111
|
+
{
|
|
112
|
+
id: id("phone"),
|
|
113
|
+
type: "tel",
|
|
114
|
+
inputMode: "tel",
|
|
115
|
+
autoComplete: "tel",
|
|
116
|
+
"aria-required": requiredPhone || void 0,
|
|
117
|
+
value: values.phone ?? "",
|
|
118
|
+
onChange: (e) => onChange("phone", e.target.value),
|
|
119
|
+
...checkoutFieldAria(id("phone"), errors?.phone)
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
/* @__PURE__ */ jsx(
|
|
123
|
+
CheckoutFieldFeedback,
|
|
124
|
+
{
|
|
125
|
+
id: id("phone"),
|
|
126
|
+
errors: errors?.phone,
|
|
127
|
+
description: descriptions?.phone
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
] })
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ jsxs(FieldSet, { children: [
|
|
133
|
+
/* @__PURE__ */ jsx(FieldLegend, { children: labels.addressHeading }),
|
|
134
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.address1?.length, children: [
|
|
135
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("address"), children: labels.addressLabel }),
|
|
136
|
+
/* @__PURE__ */ jsx(
|
|
137
|
+
Input,
|
|
138
|
+
{
|
|
139
|
+
id: id("address"),
|
|
140
|
+
"data-checkout-field": `${prefix}.address1`,
|
|
141
|
+
autoComplete: "address-line1",
|
|
142
|
+
"aria-required": "true",
|
|
143
|
+
value: values.address1,
|
|
144
|
+
onChange: (e) => onChange("address1", e.target.value),
|
|
145
|
+
...checkoutFieldAria(id("address"), errors?.address1)
|
|
146
|
+
}
|
|
147
|
+
),
|
|
148
|
+
/* @__PURE__ */ jsx(
|
|
149
|
+
CheckoutFieldFeedback,
|
|
150
|
+
{
|
|
151
|
+
id: id("address"),
|
|
152
|
+
errors: errors?.address1,
|
|
153
|
+
description: descriptions?.address1
|
|
154
|
+
}
|
|
155
|
+
)
|
|
156
|
+
] }),
|
|
157
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.address2?.length, children: [
|
|
158
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("address2"), children: labels.address2Label }),
|
|
159
|
+
/* @__PURE__ */ jsx(
|
|
160
|
+
Input,
|
|
161
|
+
{
|
|
162
|
+
id: id("address2"),
|
|
163
|
+
autoComplete: "address-line2",
|
|
164
|
+
value: values.address2 ?? "",
|
|
165
|
+
onChange: (e) => onChange("address2", e.target.value),
|
|
166
|
+
...checkoutFieldAria(id("address2"), errors?.address2)
|
|
167
|
+
}
|
|
168
|
+
),
|
|
169
|
+
/* @__PURE__ */ jsx(
|
|
170
|
+
CheckoutFieldFeedback,
|
|
171
|
+
{
|
|
172
|
+
id: id("address2"),
|
|
173
|
+
errors: errors?.address2,
|
|
174
|
+
description: descriptions?.address2
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
] }),
|
|
178
|
+
/* @__PURE__ */ jsx(
|
|
179
|
+
CheckoutLocationSelect,
|
|
180
|
+
{
|
|
181
|
+
id: id("country"),
|
|
182
|
+
label: labels.countryLabel,
|
|
183
|
+
placeholder: labels.countryPlaceholder,
|
|
184
|
+
value: values.countryCode,
|
|
185
|
+
options: locations?.countries ?? [],
|
|
186
|
+
state: locations?.countriesState,
|
|
187
|
+
error: locations?.countriesError,
|
|
188
|
+
onChange: (value) => onChange("countryCode", value),
|
|
189
|
+
onRetry: onRetryLocation ? () => onRetryLocation("countries") : void 0,
|
|
190
|
+
labels,
|
|
191
|
+
errors: errors?.countryCode,
|
|
192
|
+
description: descriptions?.countryCode
|
|
193
|
+
}
|
|
194
|
+
),
|
|
195
|
+
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
196
|
+
/* @__PURE__ */ jsx(
|
|
197
|
+
CheckoutLocationSelect,
|
|
198
|
+
{
|
|
199
|
+
id: id("province"),
|
|
200
|
+
label: labels.stateLabel,
|
|
201
|
+
placeholder: labels.provincePlaceholder,
|
|
202
|
+
value: values.province ?? "",
|
|
203
|
+
options: values.countryCode ? locations?.provinces ?? [] : [],
|
|
204
|
+
state: values.countryCode ? locations?.provincesState : void 0,
|
|
205
|
+
error: values.countryCode ? locations?.provincesError : void 0,
|
|
206
|
+
disabled: !values.countryCode,
|
|
207
|
+
onChange: (value) => onChange("province", value),
|
|
208
|
+
onRetry: onRetryLocation ? () => onRetryLocation("provinces") : void 0,
|
|
209
|
+
labels,
|
|
210
|
+
errors: errors?.province,
|
|
211
|
+
description: descriptions?.province
|
|
212
|
+
}
|
|
213
|
+
),
|
|
214
|
+
/* @__PURE__ */ jsx(
|
|
215
|
+
CheckoutLocationSelect,
|
|
216
|
+
{
|
|
217
|
+
id: id("city"),
|
|
218
|
+
label: labels.cityLabel,
|
|
219
|
+
placeholder: labels.cityPlaceholder,
|
|
220
|
+
value: values.city,
|
|
221
|
+
options: values.province ? locations?.cities ?? [] : [],
|
|
222
|
+
state: values.province ? locations?.citiesState : void 0,
|
|
223
|
+
error: values.province ? locations?.citiesError : void 0,
|
|
224
|
+
disabled: !values.province,
|
|
225
|
+
onChange: (value) => onChange("city", value),
|
|
226
|
+
onRetry: onRetryLocation ? () => onRetryLocation("cities") : void 0,
|
|
227
|
+
labels,
|
|
228
|
+
errors: errors?.city,
|
|
229
|
+
description: descriptions?.city
|
|
230
|
+
}
|
|
231
|
+
)
|
|
232
|
+
] }),
|
|
233
|
+
/* @__PURE__ */ jsxs(Field, { "data-invalid": !!errors?.postalCode?.length, children: [
|
|
234
|
+
/* @__PURE__ */ jsx(FieldLabel, { htmlFor: id("zip"), children: labels.zipCodeLabel }),
|
|
235
|
+
/* @__PURE__ */ jsx(
|
|
236
|
+
Input,
|
|
237
|
+
{
|
|
238
|
+
id: id("zip"),
|
|
239
|
+
autoComplete: "postal-code",
|
|
240
|
+
value: values.postalCode ?? "",
|
|
241
|
+
onChange: (e) => onChange("postalCode", e.target.value),
|
|
242
|
+
...checkoutFieldAria(id("zip"), errors?.postalCode)
|
|
243
|
+
}
|
|
244
|
+
),
|
|
245
|
+
/* @__PURE__ */ jsx(
|
|
246
|
+
CheckoutFieldFeedback,
|
|
247
|
+
{
|
|
248
|
+
id: id("zip"),
|
|
249
|
+
errors: errors?.postalCode,
|
|
250
|
+
description: descriptions?.postalCode
|
|
251
|
+
}
|
|
252
|
+
)
|
|
253
|
+
] })
|
|
254
|
+
] })
|
|
255
|
+
] });
|
|
256
|
+
}
|
|
257
|
+
export {
|
|
258
|
+
CheckoutAddressFields
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=checkout-address-fields.mjs.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":[]}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CheckoutContactValues, CheckoutCustomerIdentity } from '@thorprovider/types';
|
|
2
|
+
import type { CheckoutFieldError } from './checkout-form-types';
|
|
3
|
+
import type { CheckoutContactChangeHandler, CheckoutLabels } from './checkout';
|
|
2
4
|
export interface CheckoutContactStepProps {
|
|
3
|
-
|
|
4
|
-
onChange:
|
|
5
|
+
contact: CheckoutContactValues;
|
|
6
|
+
onChange: CheckoutContactChangeHandler;
|
|
7
|
+
customer?: CheckoutCustomerIdentity | null;
|
|
8
|
+
onSignIn?: () => void;
|
|
9
|
+
onSignOut?: () => void;
|
|
10
|
+
requirePhone?: boolean;
|
|
5
11
|
labels: CheckoutLabels;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
showNewsletter: boolean;
|
|
9
|
-
fieldErrors?: CheckoutValuesFieldErrors;
|
|
10
|
-
fieldDescriptions?: CheckoutFieldDescriptions;
|
|
12
|
+
fieldErrors?: Partial<Record<keyof CheckoutContactValues, CheckoutFieldError[]>>;
|
|
13
|
+
fieldDescriptions?: Partial<Record<keyof CheckoutContactValues, string>>;
|
|
11
14
|
}
|
|
12
|
-
export declare function CheckoutContactStep({
|
|
15
|
+
export declare function CheckoutContactStep({ contact, onChange, customer, onSignIn, onSignOut, requirePhone, labels, fieldErrors, fieldDescriptions, }: CheckoutContactStepProps): import("react").JSX.Element;
|
|
13
16
|
//# sourceMappingURL=checkout-contact-step.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout-contact-step.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkout-contact-step.d.ts","sourceRoot":"","sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAG1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC/D,OAAO,KAAK,EACV,4BAA4B,EAC5B,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,qBAAqB,CAAA;IAC9B,QAAQ,EAAE,4BAA4B,CAAA;IACtC,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAA;IAC1C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,cAAc,CAAA;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAA;IAChF,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAA;CACzE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAoB,EACpB,MAAM,EACN,WAAW,EACX,iBAAiB,GAClB,EAAE,wBAAwB,+BAwG1B"}
|
|
@@ -23,81 +23,95 @@ __export(checkout_contact_step_exports, {
|
|
|
23
23
|
});
|
|
24
24
|
module.exports = __toCommonJS(checkout_contact_step_exports);
|
|
25
25
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
26
|
+
var import_button = require("../../../ui/button.js");
|
|
26
27
|
var import_field = require("../../../ui/field.js");
|
|
27
28
|
var import_input = require("../../../ui/input.js");
|
|
28
|
-
var import_checkbox_check = require("./checkbox-check.js");
|
|
29
29
|
var import_checkout_field_feedback = require("./checkout-field-feedback.js");
|
|
30
|
+
var import_checkout_id_context = require("./checkout-id-context.js");
|
|
30
31
|
function CheckoutContactStep({
|
|
31
|
-
|
|
32
|
+
contact,
|
|
32
33
|
onChange,
|
|
34
|
+
customer,
|
|
35
|
+
onSignIn,
|
|
36
|
+
onSignOut,
|
|
37
|
+
requirePhone = false,
|
|
33
38
|
labels,
|
|
34
|
-
showSaveInfo,
|
|
35
|
-
showNewsletter,
|
|
36
39
|
fieldErrors,
|
|
37
40
|
fieldDescriptions
|
|
38
41
|
}) {
|
|
42
|
+
const checkoutId = (0, import_checkout_id_context.useCheckoutIds)();
|
|
43
|
+
const displayName = [customer?.firstName, customer?.lastName].filter(Boolean).join(" ");
|
|
39
44
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldGroup, { className: "grid grid-cols-1 gap-4", children: [
|
|
40
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
41
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
45
|
+
customer ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "bg-muted/50 flex flex-wrap items-center justify-between gap-3 rounded-lg p-4", children: [
|
|
46
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "min-w-0", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: "text-sm font-medium", children: [
|
|
47
|
+
labels.signedInAsLabel,
|
|
48
|
+
" ",
|
|
49
|
+
displayName ? `${displayName} <${customer.email}>` : customer.email
|
|
50
|
+
] }) }),
|
|
51
|
+
onSignOut ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_button.Button, { type: "button", variant: "outline", size: "sm", onClick: onSignOut, children: labels.signOutLabel }) : null
|
|
52
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!fieldErrors?.email?.length, children: [
|
|
53
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: checkoutId("checkout-email"), children: labels.emailLabel }),
|
|
42
54
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
43
55
|
import_input.Input,
|
|
44
56
|
{
|
|
45
|
-
id: "checkout-email",
|
|
57
|
+
id: checkoutId("checkout-email"),
|
|
58
|
+
"data-checkout-field": "email",
|
|
46
59
|
type: "email",
|
|
47
60
|
inputMode: "email",
|
|
48
61
|
autoComplete: "email",
|
|
49
|
-
value:
|
|
62
|
+
value: contact.email,
|
|
50
63
|
onChange: (e) => onChange("email", e.target.value),
|
|
51
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-email", fieldErrors?.email)
|
|
64
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(checkoutId("checkout-email"), fieldErrors?.email)
|
|
52
65
|
}
|
|
53
66
|
),
|
|
54
67
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
55
68
|
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
56
69
|
{
|
|
57
|
-
id: "checkout-email",
|
|
70
|
+
id: checkoutId("checkout-email"),
|
|
58
71
|
errors: fieldErrors?.email,
|
|
59
72
|
description: fieldDescriptions?.email
|
|
60
73
|
}
|
|
61
|
-
)
|
|
74
|
+
),
|
|
75
|
+
onSignIn ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_button.Button, { type: "button", variant: "link", size: "sm", className: "w-fit px-0", onClick: onSignIn, children: labels.signInLabel }) : null
|
|
62
76
|
] }),
|
|
63
77
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
64
78
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!fieldErrors?.firstName?.length, children: [
|
|
65
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: "checkout-first-name", children: labels.firstNameLabel }),
|
|
79
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: checkoutId("checkout-first-name"), children: labels.firstNameLabel }),
|
|
66
80
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
67
81
|
import_input.Input,
|
|
68
82
|
{
|
|
69
|
-
id: "checkout-first-name",
|
|
83
|
+
id: checkoutId("checkout-first-name"),
|
|
70
84
|
autoComplete: "given-name",
|
|
71
|
-
value:
|
|
85
|
+
value: contact.firstName,
|
|
72
86
|
onChange: (e) => onChange("firstName", e.target.value),
|
|
73
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-first-name", fieldErrors?.firstName)
|
|
87
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(checkoutId("checkout-first-name"), fieldErrors?.firstName)
|
|
74
88
|
}
|
|
75
89
|
),
|
|
76
90
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
77
91
|
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
78
92
|
{
|
|
79
|
-
id: "checkout-first-name",
|
|
93
|
+
id: checkoutId("checkout-first-name"),
|
|
80
94
|
errors: fieldErrors?.firstName,
|
|
81
95
|
description: fieldDescriptions?.firstName
|
|
82
96
|
}
|
|
83
97
|
)
|
|
84
98
|
] }),
|
|
85
99
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!fieldErrors?.lastName?.length, children: [
|
|
86
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: "checkout-last-name", children: labels.lastNameLabel }),
|
|
100
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: checkoutId("checkout-last-name"), children: labels.lastNameLabel }),
|
|
87
101
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
88
102
|
import_input.Input,
|
|
89
103
|
{
|
|
90
|
-
id: "checkout-last-name",
|
|
104
|
+
id: checkoutId("checkout-last-name"),
|
|
91
105
|
autoComplete: "family-name",
|
|
92
|
-
value:
|
|
106
|
+
value: contact.lastName,
|
|
93
107
|
onChange: (e) => onChange("lastName", e.target.value),
|
|
94
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-last-name", fieldErrors?.lastName)
|
|
108
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(checkoutId("checkout-last-name"), fieldErrors?.lastName)
|
|
95
109
|
}
|
|
96
110
|
),
|
|
97
111
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
98
112
|
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
99
113
|
{
|
|
100
|
-
id: "checkout-last-name",
|
|
114
|
+
id: checkoutId("checkout-last-name"),
|
|
101
115
|
errors: fieldErrors?.lastName,
|
|
102
116
|
description: fieldDescriptions?.lastName
|
|
103
117
|
}
|
|
@@ -105,72 +119,36 @@ function CheckoutContactStep({
|
|
|
105
119
|
] })
|
|
106
120
|
] }),
|
|
107
121
|
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { "data-invalid": !!fieldErrors?.phone?.length, children: [
|
|
108
|
-
/* @__PURE__ */ (0, import_jsx_runtime.
|
|
122
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldLabel, { htmlFor: checkoutId("checkout-phone"), children: [
|
|
123
|
+
labels.phoneLabel,
|
|
124
|
+
!requirePhone ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
125
|
+
" (",
|
|
126
|
+
labels.optionalIndicatorLabel,
|
|
127
|
+
")"
|
|
128
|
+
] }) : null
|
|
129
|
+
] }),
|
|
109
130
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
110
131
|
import_input.Input,
|
|
111
132
|
{
|
|
112
|
-
id: "checkout-phone",
|
|
133
|
+
id: checkoutId("checkout-phone"),
|
|
113
134
|
type: "tel",
|
|
114
135
|
inputMode: "tel",
|
|
115
136
|
autoComplete: "tel",
|
|
116
|
-
|
|
137
|
+
"aria-required": requirePhone || void 0,
|
|
138
|
+
value: contact.phone,
|
|
117
139
|
onChange: (e) => onChange("phone", e.target.value),
|
|
118
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-phone", fieldErrors?.phone)
|
|
140
|
+
...(0, import_checkout_field_feedback.checkoutFieldAria)(checkoutId("checkout-phone"), fieldErrors?.phone)
|
|
119
141
|
}
|
|
120
142
|
),
|
|
121
143
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
122
144
|
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
123
145
|
{
|
|
124
|
-
id: "checkout-phone",
|
|
146
|
+
id: checkoutId("checkout-phone"),
|
|
125
147
|
errors: fieldErrors?.phone,
|
|
126
148
|
description: fieldDescriptions?.phone
|
|
127
149
|
}
|
|
128
150
|
)
|
|
129
|
-
] })
|
|
130
|
-
showSaveInfo ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { orientation: "horizontal", className: "gap-2", "data-invalid": !!fieldErrors?.saveInfo?.length, children: [
|
|
131
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
132
|
-
import_checkbox_check.CheckboxCheck,
|
|
133
|
-
{
|
|
134
|
-
id: "checkout-save-info",
|
|
135
|
-
checked: values.saveInfo,
|
|
136
|
-
onCheckedChange: (checked) => onChange("saveInfo", checked === true),
|
|
137
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-save-info", fieldErrors?.saveInfo)
|
|
138
|
-
}
|
|
139
|
-
),
|
|
140
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldContent, { children: [
|
|
141
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: "checkout-save-info", className: "text-sm font-normal", children: labels.saveInfoLabel }),
|
|
142
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
143
|
-
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
144
|
-
{
|
|
145
|
-
id: "checkout-save-info",
|
|
146
|
-
errors: fieldErrors?.saveInfo,
|
|
147
|
-
description: fieldDescriptions?.saveInfo
|
|
148
|
-
}
|
|
149
|
-
)
|
|
150
|
-
] })
|
|
151
|
-
] }) : null,
|
|
152
|
-
showNewsletter ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.Field, { orientation: "horizontal", className: "gap-2", "data-invalid": !!fieldErrors?.newsletter?.length, children: [
|
|
153
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
154
|
-
import_checkbox_check.CheckboxCheck,
|
|
155
|
-
{
|
|
156
|
-
id: "checkout-newsletter",
|
|
157
|
-
checked: values.newsletter,
|
|
158
|
-
onCheckedChange: (checked) => onChange("newsletter", checked === true),
|
|
159
|
-
...(0, import_checkout_field_feedback.checkoutFieldAria)("checkout-newsletter", fieldErrors?.newsletter)
|
|
160
|
-
}
|
|
161
|
-
),
|
|
162
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_field.FieldContent, { children: [
|
|
163
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: "checkout-newsletter", className: "text-sm font-normal", children: labels.newsletterLabel }),
|
|
164
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
165
|
-
import_checkout_field_feedback.CheckoutFieldFeedback,
|
|
166
|
-
{
|
|
167
|
-
id: "checkout-newsletter",
|
|
168
|
-
errors: fieldErrors?.newsletter,
|
|
169
|
-
description: fieldDescriptions?.newsletter
|
|
170
|
-
}
|
|
171
|
-
)
|
|
172
|
-
] })
|
|
173
|
-
] }) : null
|
|
151
|
+
] })
|
|
174
152
|
] });
|
|
175
153
|
}
|
|
176
154
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx"],"sourcesContent":["'use client'\n\nimport { Field,
|
|
1
|
+
{"version":3,"sources":["../../../../src/blocks/e-commerce/checkout-forms/checkout-contact-step.tsx"],"sourcesContent":["'use client'\n\nimport { Button } from '../../../ui/button'\nimport { Field, FieldGroup, FieldLabel } from '../../../ui/field'\nimport { Input } from '../../../ui/input'\nimport type { CheckoutContactValues, CheckoutCustomerIdentity } from '@thorprovider/types'\nimport { CheckoutFieldFeedback, checkoutFieldAria } from './checkout-field-feedback'\nimport { useCheckoutIds } from './checkout-id-context'\nimport type { CheckoutFieldError } from './checkout-form-types'\nimport type {\n CheckoutContactChangeHandler,\n CheckoutLabels,\n} from './checkout'\n\nexport interface CheckoutContactStepProps {\n contact: CheckoutContactValues\n onChange: CheckoutContactChangeHandler\n customer?: CheckoutCustomerIdentity | null\n onSignIn?: () => void\n onSignOut?: () => void\n requirePhone?: boolean\n labels: CheckoutLabels\n fieldErrors?: Partial<Record<keyof CheckoutContactValues, CheckoutFieldError[]>>\n fieldDescriptions?: Partial<Record<keyof CheckoutContactValues, string>>\n}\n\nexport function CheckoutContactStep({\n contact,\n onChange,\n customer,\n onSignIn,\n onSignOut,\n requirePhone = false,\n labels,\n fieldErrors,\n fieldDescriptions,\n}: CheckoutContactStepProps) {\n const checkoutId = useCheckoutIds()\n const displayName = [customer?.firstName, customer?.lastName].filter(Boolean).join(' ')\n\n return (\n <FieldGroup className=\"grid grid-cols-1 gap-4\">\n {customer ? (\n <div className=\"bg-muted/50 flex flex-wrap items-center justify-between gap-3 rounded-lg p-4\">\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium\">\n {labels.signedInAsLabel}{' '}\n {displayName ? `${displayName} <${customer.email}>` : customer.email}\n </p>\n </div>\n {onSignOut ? (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onSignOut}>\n {labels.signOutLabel}\n </Button>\n ) : null}\n </div>\n ) : (\n <Field data-invalid={!!fieldErrors?.email?.length}>\n <FieldLabel htmlFor={checkoutId('checkout-email')}>{labels.emailLabel}</FieldLabel>\n <Input\n id={checkoutId('checkout-email')}\n data-checkout-field=\"email\"\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n value={contact.email}\n onChange={(e) => onChange('email', e.target.value)}\n {...checkoutFieldAria(checkoutId('checkout-email'), fieldErrors?.email)}\n />\n <CheckoutFieldFeedback\n id={checkoutId('checkout-email')}\n errors={fieldErrors?.email}\n description={fieldDescriptions?.email}\n />\n {onSignIn ? (\n <Button type=\"button\" variant=\"link\" size=\"sm\" className=\"w-fit px-0\" onClick={onSignIn}>\n {labels.signInLabel}\n </Button>\n ) : null}\n </Field>\n )}\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <Field data-invalid={!!fieldErrors?.firstName?.length}>\n <FieldLabel htmlFor={checkoutId('checkout-first-name')}>{labels.firstNameLabel}</FieldLabel>\n <Input\n id={checkoutId('checkout-first-name')}\n autoComplete=\"given-name\"\n value={contact.firstName}\n onChange={(e) => onChange('firstName', e.target.value)}\n {...checkoutFieldAria(checkoutId('checkout-first-name'), fieldErrors?.firstName)}\n />\n <CheckoutFieldFeedback\n id={checkoutId('checkout-first-name')}\n errors={fieldErrors?.firstName}\n description={fieldDescriptions?.firstName}\n />\n </Field>\n <Field data-invalid={!!fieldErrors?.lastName?.length}>\n <FieldLabel htmlFor={checkoutId('checkout-last-name')}>{labels.lastNameLabel}</FieldLabel>\n <Input\n id={checkoutId('checkout-last-name')}\n autoComplete=\"family-name\"\n value={contact.lastName}\n onChange={(e) => onChange('lastName', e.target.value)}\n {...checkoutFieldAria(checkoutId('checkout-last-name'), fieldErrors?.lastName)}\n />\n <CheckoutFieldFeedback\n id={checkoutId('checkout-last-name')}\n errors={fieldErrors?.lastName}\n description={fieldDescriptions?.lastName}\n />\n </Field>\n </div>\n\n <Field data-invalid={!!fieldErrors?.phone?.length}>\n <FieldLabel htmlFor={checkoutId('checkout-phone')}>\n {labels.phoneLabel}\n {!requirePhone ? (\n <span className=\"text-muted-foreground\"> ({labels.optionalIndicatorLabel})</span>\n ) : null}\n </FieldLabel>\n <Input\n id={checkoutId('checkout-phone')}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel\"\n aria-required={requirePhone || undefined}\n value={contact.phone}\n onChange={(e) => onChange('phone', e.target.value)}\n {...checkoutFieldAria(checkoutId('checkout-phone'), fieldErrors?.phone)}\n />\n <CheckoutFieldFeedback\n id={checkoutId('checkout-phone')}\n errors={fieldErrors?.phone}\n description={fieldDescriptions?.phone}\n />\n </Field>\n </FieldGroup>\n )\n}\n"],"mappings":"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","names":[]}
|