@thorprovider/blocks 3.0.1 → 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.
Files changed (192) hide show
  1. package/README.md +61 -21
  2. package/dist/blocks/designs/marketplace-product-card/block.d.ts +12 -0
  3. package/dist/blocks/designs/marketplace-product-card/block.d.ts.map +1 -0
  4. package/dist/blocks/designs/marketplace-product-card/block.js +243 -0
  5. package/dist/blocks/designs/marketplace-product-card/block.js.map +1 -0
  6. package/dist/blocks/designs/marketplace-product-card/block.mjs +233 -0
  7. package/dist/blocks/designs/marketplace-product-card/block.mjs.map +1 -0
  8. package/dist/blocks/designs/marketplace-product-card/index.d.ts +3 -0
  9. package/dist/blocks/designs/marketplace-product-card/index.d.ts.map +1 -0
  10. package/dist/blocks/designs/marketplace-product-card/index.js +36 -0
  11. package/dist/blocks/designs/marketplace-product-card/index.js.map +1 -0
  12. package/dist/blocks/designs/marketplace-product-card/index.mjs +6 -0
  13. package/dist/blocks/designs/marketplace-product-card/index.mjs.map +1 -0
  14. package/dist/blocks/designs/marketplace-product-card/normalize.d.ts +13 -0
  15. package/dist/blocks/designs/marketplace-product-card/normalize.d.ts.map +1 -0
  16. package/dist/blocks/designs/marketplace-product-card/normalize.js +36 -0
  17. package/dist/blocks/designs/marketplace-product-card/normalize.js.map +1 -0
  18. package/dist/blocks/designs/marketplace-product-card/normalize.mjs +12 -0
  19. package/dist/blocks/designs/marketplace-product-card/normalize.mjs.map +1 -0
  20. package/dist/blocks/designs/marketplace-product-card/variants.d.ts +72 -0
  21. package/dist/blocks/designs/marketplace-product-card/variants.d.ts.map +1 -0
  22. package/dist/blocks/designs/marketplace-product-card/variants.js +123 -0
  23. package/dist/blocks/designs/marketplace-product-card/variants.js.map +1 -0
  24. package/dist/blocks/designs/marketplace-product-card/variants.mjs +89 -0
  25. package/dist/blocks/designs/marketplace-product-card/variants.mjs.map +1 -0
  26. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js +1 -1
  27. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.js.map +1 -1
  28. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs +1 -1
  29. package/dist/blocks/e-commerce/checkout-forms/checkbox-check.mjs.map +1 -1
  30. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts +11 -0
  31. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.d.ts.map +1 -0
  32. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js +46 -0
  33. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.js.map +1 -0
  34. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs +22 -0
  35. package/dist/blocks/e-commerce/checkout-forms/checkout-address-equality.mjs.map +1 -0
  36. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts +28 -0
  37. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.d.ts.map +1 -0
  38. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js +278 -0
  39. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.js.map +1 -0
  40. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs +260 -0
  41. package/dist/blocks/e-commerce/checkout-forms/checkout-address-fields.mjs.map +1 -0
  42. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts +12 -9
  43. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.d.ts.map +1 -1
  44. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js +49 -71
  45. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.js.map +1 -1
  46. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs +50 -72
  47. package/dist/blocks/e-commerce/checkout-forms/checkout-contact-step.mjs.map +1 -1
  48. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.d.ts.map +1 -1
  49. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js +6 -3
  50. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.js.map +1 -1
  51. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs +6 -3
  52. package/dist/blocks/e-commerce/checkout-forms/checkout-country-field.mjs.map +1 -1
  53. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts +7 -0
  54. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.d.ts.map +1 -0
  55. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js +41 -0
  56. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.js.map +1 -0
  57. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs +16 -0
  58. package/dist/blocks/e-commerce/checkout-forms/checkout-id-context.mjs.map +1 -0
  59. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts +24 -0
  60. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.d.ts.map +1 -0
  61. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js +75 -0
  62. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.js.map +1 -0
  63. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs +58 -0
  64. package/dist/blocks/e-commerce/checkout-forms/checkout-location-select.mjs.map +1 -0
  65. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts +3 -2
  66. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.d.ts.map +1 -1
  67. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js +9 -2
  68. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.js.map +1 -1
  69. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs +9 -2
  70. package/dist/blocks/e-commerce/checkout-forms/checkout-order-summary.mjs.map +1 -1
  71. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts +23 -8
  72. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.d.ts.map +1 -1
  73. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js +136 -31
  74. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.js.map +1 -1
  75. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs +143 -32
  76. package/dist/blocks/e-commerce/checkout-forms/checkout-payment-step.mjs.map +1 -1
  77. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts +13 -7
  78. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.d.ts.map +1 -1
  79. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js +179 -28
  80. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.js.map +1 -1
  81. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs +180 -29
  82. package/dist/blocks/e-commerce/checkout-forms/checkout-review-step.mjs.map +1 -1
  83. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts +20 -0
  84. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.d.ts.map +1 -0
  85. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js +199 -0
  86. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.js.map +1 -0
  87. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs +175 -0
  88. package/dist/blocks/e-commerce/checkout-forms/checkout-saved-addresses.mjs.map +1 -0
  89. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts +14 -0
  90. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.d.ts.map +1 -0
  91. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js +136 -0
  92. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.js.map +1 -0
  93. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs +109 -0
  94. package/dist/blocks/e-commerce/checkout-forms/checkout-section-nav.mjs.map +1 -0
  95. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts +32 -10
  96. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.d.ts.map +1 -1
  97. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js +265 -147
  98. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.js.map +1 -1
  99. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs +272 -148
  100. package/dist/blocks/e-commerce/checkout-forms/checkout-shipping-step.mjs.map +1 -1
  101. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts +13 -0
  102. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.d.ts.map +1 -0
  103. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js +74 -0
  104. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.js.map +1 -0
  105. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs +50 -0
  106. package/dist/blocks/e-commerce/checkout-forms/checkout-step-header.mjs.map +1 -0
  107. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts +7 -0
  108. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.d.ts.map +1 -0
  109. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js +91 -0
  110. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.js.map +1 -0
  111. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs +65 -0
  112. package/dist/blocks/e-commerce/checkout-forms/checkout-step-summary.mjs.map +1 -0
  113. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts +174 -44
  114. package/dist/blocks/e-commerce/checkout-forms/checkout.d.ts.map +1 -1
  115. package/dist/blocks/e-commerce/checkout-forms/checkout.js +532 -108
  116. package/dist/blocks/e-commerce/checkout-forms/checkout.js.map +1 -1
  117. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs +542 -109
  118. package/dist/blocks/e-commerce/checkout-forms/checkout.mjs.map +1 -1
  119. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.d.ts.map +1 -1
  120. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js +44 -20
  121. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.js.map +1 -1
  122. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs +44 -20
  123. package/dist/blocks/e-commerce/navigation/storefront-navbar-cart-sheet.mjs.map +1 -1
  124. package/dist/blocks/e-commerce/navigation/storefront-navbar.d.ts.map +1 -1
  125. package/dist/blocks/e-commerce/navigation/storefront-navbar.js +21 -10
  126. package/dist/blocks/e-commerce/navigation/storefront-navbar.js.map +1 -1
  127. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs +21 -10
  128. package/dist/blocks/e-commerce/navigation/storefront-navbar.mjs.map +1 -1
  129. package/dist/blocks/e-commerce/product-list/product-card.d.ts.map +1 -1
  130. package/dist/blocks/e-commerce/product-list/product-card.js +36 -9
  131. package/dist/blocks/e-commerce/product-list/product-card.js.map +1 -1
  132. package/dist/blocks/e-commerce/product-list/product-card.mjs +36 -9
  133. package/dist/blocks/e-commerce/product-list/product-card.mjs.map +1 -1
  134. package/dist/blocks/e-commerce/product-list/product-showcase-1.d.ts.map +1 -1
  135. package/dist/blocks/e-commerce/product-list/product-showcase-1.js +7 -2
  136. package/dist/blocks/e-commerce/product-list/product-showcase-1.js.map +1 -1
  137. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs +7 -2
  138. package/dist/blocks/e-commerce/product-list/product-showcase-1.mjs.map +1 -1
  139. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.d.ts.map +1 -1
  140. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js +5 -1
  141. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.js.map +1 -1
  142. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs +5 -1
  143. package/dist/blocks/e-commerce/product-overview/product-quick-view-dialog.mjs.map +1 -1
  144. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.d.ts.map +1 -1
  145. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js +71 -51
  146. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.js.map +1 -1
  147. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs +71 -51
  148. package/dist/blocks/e-commerce/storefront-hero/storefront-hero.mjs.map +1 -1
  149. package/dist/blocks/marketing/banners/banner-1.d.ts.map +1 -1
  150. package/dist/blocks/marketing/banners/banner-1.js +15 -27
  151. package/dist/blocks/marketing/banners/banner-1.js.map +1 -1
  152. package/dist/blocks/marketing/banners/banner-1.mjs +16 -28
  153. package/dist/blocks/marketing/banners/banner-1.mjs.map +1 -1
  154. package/dist/index.d.ts +6 -3
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +5 -0
  157. package/dist/index.js.map +1 -1
  158. package/dist/index.mjs +4 -0
  159. package/dist/index.mjs.map +1 -1
  160. package/dist/lib/contracts/marketplace-product-card.d.ts +324 -0
  161. package/dist/lib/contracts/marketplace-product-card.d.ts.map +1 -0
  162. package/dist/lib/contracts/marketplace-product-card.js +85 -0
  163. package/dist/lib/contracts/marketplace-product-card.js.map +1 -0
  164. package/dist/lib/contracts/marketplace-product-card.mjs +61 -0
  165. package/dist/lib/contracts/marketplace-product-card.mjs.map +1 -0
  166. package/dist/lib/contracts.d.ts +1861 -88
  167. package/dist/lib/contracts.d.ts.map +1 -1
  168. package/dist/lib/contracts.js +252 -25
  169. package/dist/lib/contracts.js.map +1 -1
  170. package/dist/lib/contracts.mjs +208 -5
  171. package/dist/lib/contracts.mjs.map +1 -1
  172. package/dist/lib/money-schema.d.ts +19 -0
  173. package/dist/lib/money-schema.d.ts.map +1 -0
  174. package/dist/lib/money-schema.js +33 -0
  175. package/dist/lib/money-schema.js.map +1 -0
  176. package/dist/lib/money-schema.mjs +9 -0
  177. package/dist/lib/money-schema.mjs.map +1 -0
  178. package/dist/lib/motion.d.ts +29 -0
  179. package/dist/lib/motion.d.ts.map +1 -0
  180. package/dist/lib/motion.js +65 -0
  181. package/dist/lib/motion.js.map +1 -0
  182. package/dist/lib/motion.mjs +41 -0
  183. package/dist/lib/motion.mjs.map +1 -0
  184. package/dist/ui/accordion.d.ts +3 -1
  185. package/dist/ui/accordion.d.ts.map +1 -1
  186. package/dist/ui/accordion.js +21 -5
  187. package/dist/ui/accordion.js.map +1 -1
  188. package/dist/ui/accordion.mjs +21 -5
  189. package/dist/ui/accordion.mjs.map +1 -1
  190. package/dist/ui/input-group.d.ts +1 -1
  191. package/package.json +19 -5
  192. 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 { CheckoutChangeHandler, CheckoutFieldDescriptions, CheckoutValuesFieldErrors, CheckoutLabels, CheckoutValues } from './checkout';
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
- values: CheckoutValues;
4
- onChange: CheckoutChangeHandler;
5
+ contact: CheckoutContactValues;
6
+ onChange: CheckoutContactChangeHandler;
7
+ customer?: CheckoutCustomerIdentity | null;
8
+ onSignIn?: () => void;
9
+ onSignOut?: () => void;
10
+ requirePhone?: boolean;
5
11
  labels: CheckoutLabels;
6
- /** Rendered only when the host supplies the corresponding label. */
7
- showSaveInfo: boolean;
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({ values, onChange, labels, showSaveInfo, showNewsletter, fieldErrors, fieldDescriptions, }: CheckoutContactStepProps): import("react").JSX.Element;
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":"AAMA,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACf,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,cAAc,CAAA;IACtB,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,MAAM,EAAE,cAAc,CAAA;IACtB,oEAAoE;IACpE,YAAY,EAAE,OAAO,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,yBAAyB,CAAA;IACvC,iBAAiB,CAAC,EAAE,yBAAyB,CAAA;CAC9C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,cAAc,EACd,WAAW,EACX,iBAAiB,GAClB,EAAE,wBAAwB,+BAmH1B"}
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
- values,
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)(import_field.Field, { "data-invalid": !!fieldErrors?.email?.length, children: [
41
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_field.FieldLabel, { htmlFor: "checkout-email", children: labels.emailLabel }),
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: values.email,
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: values.firstName,
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: values.lastName,
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.jsx)(import_field.FieldLabel, { htmlFor: "checkout-phone", children: labels.phoneLabel }),
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
- value: values.phone,
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, FieldContent, FieldGroup, FieldLabel } from '../../../ui/field'\nimport { Input } from '../../../ui/input'\nimport { CheckboxCheck } from './checkbox-check'\nimport { CheckoutFieldFeedback, checkoutFieldAria } from './checkout-field-feedback'\nimport type {\n CheckoutChangeHandler,\n CheckoutFieldDescriptions,\n CheckoutValuesFieldErrors,\n CheckoutLabels,\n CheckoutValues,\n} from './checkout'\n\nexport interface CheckoutContactStepProps {\n values: CheckoutValues\n onChange: CheckoutChangeHandler\n labels: CheckoutLabels\n /** Rendered only when the host supplies the corresponding label. */\n showSaveInfo: boolean\n showNewsletter: boolean\n fieldErrors?: CheckoutValuesFieldErrors\n fieldDescriptions?: CheckoutFieldDescriptions\n}\n\nexport function CheckoutContactStep({\n values,\n onChange,\n labels,\n showSaveInfo,\n showNewsletter,\n fieldErrors,\n fieldDescriptions,\n}: CheckoutContactStepProps) {\n return (\n <FieldGroup className=\"grid grid-cols-1 gap-4\">\n <Field data-invalid={!!fieldErrors?.email?.length}>\n <FieldLabel htmlFor=\"checkout-email\">{labels.emailLabel}</FieldLabel>\n <Input\n id=\"checkout-email\"\n type=\"email\"\n inputMode=\"email\"\n autoComplete=\"email\"\n value={values.email}\n onChange={(e) => onChange('email', e.target.value)}\n {...checkoutFieldAria('checkout-email', fieldErrors?.email)}\n />\n <CheckoutFieldFeedback\n id=\"checkout-email\"\n errors={fieldErrors?.email}\n description={fieldDescriptions?.email}\n />\n </Field>\n\n <div className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n <Field data-invalid={!!fieldErrors?.firstName?.length}>\n <FieldLabel htmlFor=\"checkout-first-name\">{labels.firstNameLabel}</FieldLabel>\n <Input\n id=\"checkout-first-name\"\n autoComplete=\"given-name\"\n value={values.firstName}\n onChange={(e) => onChange('firstName', e.target.value)}\n {...checkoutFieldAria('checkout-first-name', fieldErrors?.firstName)}\n />\n <CheckoutFieldFeedback\n id=\"checkout-first-name\"\n errors={fieldErrors?.firstName}\n description={fieldDescriptions?.firstName}\n />\n </Field>\n <Field data-invalid={!!fieldErrors?.lastName?.length}>\n <FieldLabel htmlFor=\"checkout-last-name\">{labels.lastNameLabel}</FieldLabel>\n <Input\n id=\"checkout-last-name\"\n autoComplete=\"family-name\"\n value={values.lastName}\n onChange={(e) => onChange('lastName', e.target.value)}\n {...checkoutFieldAria('checkout-last-name', fieldErrors?.lastName)}\n />\n <CheckoutFieldFeedback\n id=\"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=\"checkout-phone\">{labels.phoneLabel}</FieldLabel>\n <Input\n id=\"checkout-phone\"\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel\"\n value={values.phone}\n onChange={(e) => onChange('phone', e.target.value)}\n {...checkoutFieldAria('checkout-phone', fieldErrors?.phone)}\n />\n <CheckoutFieldFeedback\n id=\"checkout-phone\"\n errors={fieldErrors?.phone}\n description={fieldDescriptions?.phone}\n />\n </Field>\n\n {showSaveInfo ? (\n <Field orientation=\"horizontal\" className=\"gap-2\" data-invalid={!!fieldErrors?.saveInfo?.length}>\n <CheckboxCheck\n id=\"checkout-save-info\"\n checked={values.saveInfo}\n onCheckedChange={(checked) => onChange('saveInfo', checked === true)}\n {...checkoutFieldAria('checkout-save-info', fieldErrors?.saveInfo)}\n />\n <FieldContent>\n <FieldLabel htmlFor=\"checkout-save-info\" className=\"text-sm font-normal\">\n {labels.saveInfoLabel}\n </FieldLabel>\n <CheckoutFieldFeedback\n id=\"checkout-save-info\"\n errors={fieldErrors?.saveInfo}\n description={fieldDescriptions?.saveInfo}\n />\n </FieldContent>\n </Field>\n ) : null}\n\n {showNewsletter ? (\n <Field orientation=\"horizontal\" className=\"gap-2\" data-invalid={!!fieldErrors?.newsletter?.length}>\n <CheckboxCheck\n id=\"checkout-newsletter\"\n checked={values.newsletter}\n onCheckedChange={(checked) => onChange('newsletter', checked === true)}\n {...checkoutFieldAria('checkout-newsletter', fieldErrors?.newsletter)}\n />\n <FieldContent>\n <FieldLabel htmlFor=\"checkout-newsletter\" className=\"text-sm font-normal\">\n {labels.newsletterLabel}\n </FieldLabel>\n <CheckoutFieldFeedback\n id=\"checkout-newsletter\"\n errors={fieldErrors?.newsletter}\n description={fieldDescriptions?.newsletter}\n />\n </FieldContent>\n </Field>\n ) : null}\n </FieldGroup>\n )\n}\n"],"mappings":"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","names":[]}
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":[]}