@reblu/site-blocks 0.28.0 → 0.30.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/CHANGELOG.md +12 -0
- package/README.md +174 -1
- package/dist/index.cjs +461 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +229 -3
- package/dist/index.d.ts +229 -3
- package/dist/index.js +446 -9
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ShopErrorCode, AcademyCourseDetail, AcademyLessonPreview, PageDetail, PageListItem, ProfessionalField, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, AcademyInstructorPublic, AcademyCategoryPublic, AcademyCatalogFiltersPublic, ShopStaffAutoDiscount, ShopOrder, ShopBillingInput, ShopCheckoutInput, Config, ShopOrderInvoice } from '@reblu/site-contracts';
|
|
1
|
+
import { ShopErrorCode, AcademyCourseDetail, AcademyLessonPreview, PageDetail, PageListItem, ProfessionalField, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, AcademyInstructorPublic, AcademyCategoryPublic, AcademyCatalogFiltersPublic, ShopBundleComponent, ShopStaffAutoDiscount, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopCheckoutDeliveryConfig, ShopCheckoutCopy, ShopFulfillmentInput, ShopQuote, Config, ShopOrderInvoice } from '@reblu/site-contracts';
|
|
2
2
|
export { DATA_REQUEST_TYPES } from '@reblu/site-contracts';
|
|
3
3
|
import { FaqItem } from './seo.cjs';
|
|
4
4
|
export { FaqPageJsonLd, MarkdownToPlainTextOptions, buildFaqPageJsonLd, collectFaqItems, markdownToPlainText } from './seo.cjs';
|
|
@@ -1069,7 +1069,34 @@ interface CartLineListLabels {
|
|
|
1069
1069
|
unitPriceSuffix: string;
|
|
1070
1070
|
/** REB-837 — default copy for `notice={true}`. */
|
|
1071
1071
|
cancelledNotice: string;
|
|
1072
|
+
/** REB-1208 — the summary of the per-line `lineIncludes` disclosure. */
|
|
1073
|
+
includesSummary: string;
|
|
1072
1074
|
}
|
|
1075
|
+
/** REB-1208 — one row of a line's «Qué incluye» detail. */
|
|
1076
|
+
interface CartLineIncludesEntry {
|
|
1077
|
+
label: React.ReactNode;
|
|
1078
|
+
value: React.ReactNode;
|
|
1079
|
+
}
|
|
1080
|
+
interface CartLineIncludesProps {
|
|
1081
|
+
entries: CartLineIncludesEntry[];
|
|
1082
|
+
/** An optional full-width note under the entries (e.g. a condition of use). */
|
|
1083
|
+
note?: React.ReactNode;
|
|
1084
|
+
className?: string;
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
1087
|
+
* `CartLineIncludes` — drop-in body for `CartLineList`'s `lineIncludes`
|
|
1088
|
+
* (REB-1208): a term/description list of what a line includes, built by the
|
|
1089
|
+
* SITE from the product's own data (its custom-field values, or
|
|
1090
|
+
* `bundleComponentsToIncludes(product.bundleComponents)`). Renders nothing
|
|
1091
|
+
* when there are no entries and no note.
|
|
1092
|
+
*/
|
|
1093
|
+
declare function CartLineIncludes({ entries, note, className }: CartLineIncludesProps): react_jsx_runtime.JSX.Element | null;
|
|
1094
|
+
/**
|
|
1095
|
+
* REB-1208 — maps `ShopProductDetail.bundleComponents` (already on the
|
|
1096
|
+
* contract) to `CartLineIncludes` entries: each component's name and its
|
|
1097
|
+
* quantity, in the `x{quantity}` form `OrderConfirmation` uses.
|
|
1098
|
+
*/
|
|
1099
|
+
declare function bundleComponentsToIncludes(components: readonly ShopBundleComponent[]): CartLineIncludesEntry[];
|
|
1073
1100
|
interface CartLineListProps {
|
|
1074
1101
|
items: CartLineItemView[];
|
|
1075
1102
|
onQuantityChange?: (productId: string, variantId: string | null | undefined, quantity: number) => void;
|
|
@@ -1093,12 +1120,19 @@ interface CartLineListProps {
|
|
|
1093
1120
|
* `null`/`undefined` for lines without one.
|
|
1094
1121
|
*/
|
|
1095
1122
|
lineMessage?: (item: CartLineItemView) => React.ReactNode;
|
|
1123
|
+
/**
|
|
1124
|
+
* REB-1208 — what a line includes, shown under it in a collapsed
|
|
1125
|
+
* «Qué incluye» disclosure (`labels.includesSummary`). Return the content
|
|
1126
|
+
* (usually `<CartLineIncludes entries={…} />`), or `null`/`undefined` for
|
|
1127
|
+
* lines with nothing to show. Omit the prop to render no disclosure.
|
|
1128
|
+
*/
|
|
1129
|
+
lineIncludes?: (item: CartLineItemView) => React.ReactNode;
|
|
1096
1130
|
labels?: Partial<CartLineListLabels>;
|
|
1097
1131
|
currencyCode?: string;
|
|
1098
1132
|
locale?: string;
|
|
1099
1133
|
className?: string;
|
|
1100
1134
|
}
|
|
1101
|
-
declare function CartLineList({ items, onQuantityChange, onRemove, liveMessage, notice, lineMessage, labels, currencyCode, locale, className, }: CartLineListProps): react_jsx_runtime.JSX.Element;
|
|
1135
|
+
declare function CartLineList({ items, onQuantityChange, onRemove, liveMessage, notice, lineMessage, lineIncludes, labels, currencyCode, locale, className, }: CartLineListProps): react_jsx_runtime.JSX.Element;
|
|
1102
1136
|
|
|
1103
1137
|
/**
|
|
1104
1138
|
* `CartSummary` — presentational price breakdown (REB-829): subtotal,
|
|
@@ -1547,6 +1581,198 @@ interface FullInvoiceFieldsProps {
|
|
|
1547
1581
|
}
|
|
1548
1582
|
declare function FullInvoiceFields({ value, onChange, overCap, issuesInvoices, errors, countries, labels, className, }: FullInvoiceFieldsProps): react_jsx_runtime.JSX.Element | null;
|
|
1549
1583
|
|
|
1584
|
+
/** The shipping address fields the buyer types (country defaults server-side). */
|
|
1585
|
+
interface CheckoutAddressValue {
|
|
1586
|
+
firstName: string;
|
|
1587
|
+
lastName: string;
|
|
1588
|
+
street: string;
|
|
1589
|
+
postalCode: string;
|
|
1590
|
+
city: string;
|
|
1591
|
+
region: string;
|
|
1592
|
+
}
|
|
1593
|
+
type CheckoutAddressErrors = Partial<Record<keyof CheckoutAddressValue, string>>;
|
|
1594
|
+
declare const EMPTY_CHECKOUT_ADDRESS: CheckoutAddressValue;
|
|
1595
|
+
/** SDK texts of {@link CheckoutDeliveryChoice}; the option names come from the tenant. */
|
|
1596
|
+
interface CheckoutDeliveryChoiceLabels {
|
|
1597
|
+
legend: string;
|
|
1598
|
+
free: string;
|
|
1599
|
+
pickupPointsLegend: string;
|
|
1600
|
+
addressLegend: string;
|
|
1601
|
+
firstName: string;
|
|
1602
|
+
lastName: string;
|
|
1603
|
+
street: string;
|
|
1604
|
+
postalCode: string;
|
|
1605
|
+
city: string;
|
|
1606
|
+
region: string;
|
|
1607
|
+
}
|
|
1608
|
+
declare const DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS: CheckoutDeliveryChoiceLabels;
|
|
1609
|
+
interface CheckoutDeliveryChoiceProps {
|
|
1610
|
+
/** `ShopConfig.delivery`. */
|
|
1611
|
+
delivery: ShopCheckoutDeliveryConfig;
|
|
1612
|
+
/** `ShopConfig.checkout` — the tenant's option names. */
|
|
1613
|
+
copy: Pick<ShopCheckoutCopy, 'shippingOptionLabel' | 'pickupOptionLabel'>;
|
|
1614
|
+
/** The current choice; start from {@link defaultCheckoutFulfillment}. */
|
|
1615
|
+
value: ShopFulfillmentInput | null;
|
|
1616
|
+
onChange: (value: ShopFulfillmentInput) => void;
|
|
1617
|
+
address: CheckoutAddressValue;
|
|
1618
|
+
onAddressChange: (value: CheckoutAddressValue) => void;
|
|
1619
|
+
addressErrors?: CheckoutAddressErrors;
|
|
1620
|
+
/** A delivery error from checkout or the quote (e.g. `PICKUP_LOCATION_INVALID`). */
|
|
1621
|
+
error?: string | null;
|
|
1622
|
+
/** The last quote: its home delivery cost wins over the flat cost (free over the threshold). */
|
|
1623
|
+
quote?: Pick<ShopQuote, 'fulfillment' | 'shipping'> | null;
|
|
1624
|
+
/** `false` for a cart with nothing to ship (see {@link quoteRequiresDelivery}): renders nothing. */
|
|
1625
|
+
requiresDelivery?: boolean;
|
|
1626
|
+
labels?: Partial<CheckoutDeliveryChoiceLabels>;
|
|
1627
|
+
currencyCode?: string;
|
|
1628
|
+
locale?: string;
|
|
1629
|
+
/** Prefix of the element ids and radio names (one choice per page). @default 'checkout-delivery' */
|
|
1630
|
+
id?: string;
|
|
1631
|
+
className?: string;
|
|
1632
|
+
}
|
|
1633
|
+
/**
|
|
1634
|
+
* `CheckoutDeliveryChoice` (REB-1197) — how the order reaches the buyer,
|
|
1635
|
+
* chosen before paying: home delivery (with the shipping address, stored on
|
|
1636
|
+
* the order) or free pickup at one of the tenant's pickup points. Only the
|
|
1637
|
+
* methods the tenant offers (`ShopConfig.delivery.methods`) are shown, with
|
|
1638
|
+
* the tenant's names; home delivery shows its cost and the estimated delivery
|
|
1639
|
+
* term; each pickup point its address, opening hours and ready-in text, all
|
|
1640
|
+
* edited in nexus. Fully controlled, no hooks (RSC-safe root entry); send {@link toCheckoutFulfillmentFields}
|
|
1641
|
+
* with the quote and the checkout body. Place it inside the checkout `<form>`
|
|
1642
|
+
* (the address fields are `required`).
|
|
1643
|
+
*/
|
|
1644
|
+
declare function CheckoutDeliveryChoice({ delivery, copy, value, onChange, address, onAddressChange, addressErrors, error, quote, requiresDelivery, labels, currencyCode, locale, id: uid, className, }: CheckoutDeliveryChoiceProps): react_jsx_runtime.JSX.Element | null;
|
|
1645
|
+
/**
|
|
1646
|
+
* The starting choice: home delivery when offered, else pickup (with the
|
|
1647
|
+
* point preselected when there is only one). `null` when the tenant offers
|
|
1648
|
+
* neither, or against an API that predates the delivery config.
|
|
1649
|
+
*/
|
|
1650
|
+
declare function defaultCheckoutFulfillment(delivery: ShopCheckoutDeliveryConfig | null | undefined): ShopFulfillmentInput | null;
|
|
1651
|
+
/** Whether the cart has something to deliver; `true` until a quote says otherwise. */
|
|
1652
|
+
declare function quoteRequiresDelivery(quote: Pick<ShopQuote, 'lines'> | null | undefined): boolean;
|
|
1653
|
+
/**
|
|
1654
|
+
* The quote and checkout body fields for the delivery choice. Home delivery
|
|
1655
|
+
* carries the address (blank optional fields left out); pickup the point. With
|
|
1656
|
+
* no choice (a cart with nothing to ship) it still sends home delivery: the
|
|
1657
|
+
* server records no delivery for such a cart, and the request stays on the
|
|
1658
|
+
* current contract (REB-1227).
|
|
1659
|
+
*
|
|
1660
|
+
* Pass `requiresDelivery` (`quoteRequiresDelivery(quote)`): when the cart
|
|
1661
|
+
* ships nothing the choice block is hidden and the address stays blank, so no
|
|
1662
|
+
* address and no pickup point are sent — a blank address is refused by the
|
|
1663
|
+
* server (400 INVALID_INPUT) and pickup of nothing is refused too.
|
|
1664
|
+
*/
|
|
1665
|
+
declare function toCheckoutFulfillmentFields(value: ShopFulfillmentInput | null, address: CheckoutAddressValue, requiresDelivery?: boolean): Pick<ShopCheckoutInput, 'fulfillment' | 'shippingAddress'>;
|
|
1666
|
+
|
|
1667
|
+
/** SDK texts of {@link CheckoutQuoteSummary}; the tenant's own ones come in the quote. */
|
|
1668
|
+
interface CheckoutQuoteSummaryLabels {
|
|
1669
|
+
subtotal: string;
|
|
1670
|
+
/** The discount row: its tenant label when automatic, else the code. */
|
|
1671
|
+
discount: (codeOrLabel: string, isAutomatic: boolean) => string;
|
|
1672
|
+
free: string;
|
|
1673
|
+
/** Fallback delivery row name when the quote carries no label. */
|
|
1674
|
+
delivery: string;
|
|
1675
|
+
remainingForFree: (formattedAmount: string) => string;
|
|
1676
|
+
/** A tax row when prices include it («De los cuales IGIC 7 %»). */
|
|
1677
|
+
taxIncluded: (taxLabel: string) => string;
|
|
1678
|
+
total: string;
|
|
1679
|
+
/** Under the total when prices include tax. */
|
|
1680
|
+
taxesIncludedNote: string;
|
|
1681
|
+
quantityTimesUnit: (quantity: number, formattedUnitPrice: string) => string;
|
|
1682
|
+
}
|
|
1683
|
+
declare const DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS: CheckoutQuoteSummaryLabels;
|
|
1684
|
+
interface CheckoutQuoteSummaryProps {
|
|
1685
|
+
/** `useShopQuote().quote` / `client.shop.quote()` — the total Stripe charges. */
|
|
1686
|
+
quote: ShopQuote;
|
|
1687
|
+
heading?: ReactNode;
|
|
1688
|
+
headingLevel?: HeadingLevel;
|
|
1689
|
+
labels?: Partial<CheckoutQuoteSummaryLabels>;
|
|
1690
|
+
/** @default 'EUR' */
|
|
1691
|
+
currencyCode?: string;
|
|
1692
|
+
/** @default 'es-ES' */
|
|
1693
|
+
locale?: string;
|
|
1694
|
+
className?: string;
|
|
1695
|
+
}
|
|
1696
|
+
/**
|
|
1697
|
+
* `CheckoutQuoteSummary` (REB-1197) — the pre-payment summary of the
|
|
1698
|
+
* single-step checkout, rendered from `ShopQuote`: every line with its kind,
|
|
1699
|
+
* quantity and unit price; subtotal; discount; the delivery row (home
|
|
1700
|
+
* delivery cost or «Gratis», or the pickup point); the tax rows the tenant
|
|
1701
|
+
* shows; the total; the estimated delivery term. The amount is exactly what
|
|
1702
|
+
* Stripe charges (the API prices quote and checkout with one function).
|
|
1703
|
+
* Announces why a typed code was not applied (`role=status`) and why the
|
|
1704
|
+
* order cannot be paid (`role=alert`, e.g. over the max weight).
|
|
1705
|
+
*
|
|
1706
|
+
* Presentational and RSC-safe. Tenant texts (delivery labels, tax labels,
|
|
1707
|
+
* line kinds, the estimate) come from the API; `labels` replaces the rest.
|
|
1708
|
+
*/
|
|
1709
|
+
declare function CheckoutQuoteSummary({ quote, heading, headingLevel, labels, currencyCode, locale, className, }: CheckoutQuoteSummaryProps): react_jsx_runtime.JSX.Element;
|
|
1710
|
+
|
|
1711
|
+
/**
|
|
1712
|
+
* `CheckoutTermsAcceptance` (REB-1198) — the mandatory, unticked box «He leído
|
|
1713
|
+
* y acepto las {terms} de {tenant}» of the single-step checkout. Every text is
|
|
1714
|
+
* the tenant's (`ShopConfig.checkout`, edited in nexus › Configuración ›
|
|
1715
|
+
* Legal): `{terms}` becomes the link to the full document (text
|
|
1716
|
+
* `termsLinkText`, target `termsLinkUrl` or the SITE's own `termsHref`, a new
|
|
1717
|
+
* tab when `isTermsLinkNewTab`), `{tenant}` the site name. A label without
|
|
1718
|
+
* `{terms}` gets the link appended.
|
|
1719
|
+
*
|
|
1720
|
+
* Renders nothing while the tenant has published no terms
|
|
1721
|
+
* (`termsVersion: null`): there is nothing to accept and checkout does not
|
|
1722
|
+
* ask. Send {@link toCheckoutTermsFields} with the checkout body; the server
|
|
1723
|
+
* refuses without it (`TERMS_NOT_ACCEPTED`) or with an old version
|
|
1724
|
+
* (`TERMS_VERSION_CHANGED`: reload the config and ask again).
|
|
1725
|
+
*/
|
|
1726
|
+
type CheckoutTermsCopy = Pick<ShopCheckoutCopy, 'tenantName' | 'termsCheckboxLabel' | 'termsLinkText' | 'termsLinkUrl' | 'isTermsLinkNewTab' | 'termsVersion'>;
|
|
1727
|
+
interface CheckoutTermsAcceptanceProps {
|
|
1728
|
+
copy: CheckoutTermsCopy;
|
|
1729
|
+
/** The SITE's route to its terms page, used when the tenant set no `termsLinkUrl`. */
|
|
1730
|
+
termsHref: string;
|
|
1731
|
+
checked: boolean;
|
|
1732
|
+
onCheckedChange: (checked: boolean) => void;
|
|
1733
|
+
/** E.g. «Debes aceptar las condiciones para continuar.» (the SITE's or the API's text). */
|
|
1734
|
+
error?: string | null;
|
|
1735
|
+
/** Appended inside the link when it opens a new tab (screen readers). @default '(se abre en una pestaña nueva)' */
|
|
1736
|
+
newTabHint?: string;
|
|
1737
|
+
/** The checkbox id (one box per page). @default 'checkout-terms' */
|
|
1738
|
+
id?: string;
|
|
1739
|
+
className?: string;
|
|
1740
|
+
}
|
|
1741
|
+
declare function CheckoutTermsAcceptance({ copy, termsHref, checked, onCheckedChange, error, newTabHint, id, className, }: CheckoutTermsAcceptanceProps): react_jsx_runtime.JSX.Element | null;
|
|
1742
|
+
/**
|
|
1743
|
+
* The checkout body fields for the terms box: `acceptsTerms` and the version
|
|
1744
|
+
* shown (`termsVersionId`), or nothing when the tenant published no terms.
|
|
1745
|
+
*/
|
|
1746
|
+
declare function toCheckoutTermsFields(copy: Pick<ShopCheckoutCopy, 'termsVersion'> | null | undefined, accepted: boolean): Pick<ShopCheckoutInput, 'acceptsTerms' | 'termsVersionId'>;
|
|
1747
|
+
|
|
1748
|
+
/**
|
|
1749
|
+
* `CheckoutPayAction` (REB-1198) — the last control of the single-step
|
|
1750
|
+
* checkout: the submit button (`ShopCheckoutCopy.continueToPaymentLabel`,
|
|
1751
|
+
* «Continuar al pago») and, right under it and readable (lawyer, 3-Nov: no
|
|
1752
|
+
* tiny text), the notice with the amount (`ShopQuote.payNotice`, «En el
|
|
1753
|
+
* siguiente paso pagarás {total} en la pasarela segura de Stripe…», already
|
|
1754
|
+
* filled). The button is described by the notice, so a screen reader hears
|
|
1755
|
+
* both. Place it inside the checkout `<form>`.
|
|
1756
|
+
*/
|
|
1757
|
+
interface CheckoutPayActionProps {
|
|
1758
|
+
/** The tenant's button text: `ShopCheckoutCopy.continueToPaymentLabel`. */
|
|
1759
|
+
label: string;
|
|
1760
|
+
/** The tenant's small print: `ShopQuote.payNotice`. Omit while there is no quote. */
|
|
1761
|
+
notice?: string | null;
|
|
1762
|
+
submitting?: boolean;
|
|
1763
|
+
/** Shown on the button while `submitting`. @default 'Procesando…' */
|
|
1764
|
+
submittingLabel?: string;
|
|
1765
|
+
disabled?: boolean;
|
|
1766
|
+
/** Prefix of the element ids (one action per page). @default 'checkout-pay' */
|
|
1767
|
+
id?: string;
|
|
1768
|
+
className?: string;
|
|
1769
|
+
/** Classes for the button; REPLACE the default look. */
|
|
1770
|
+
buttonClassName?: string;
|
|
1771
|
+
/** Classes for the notice; REPLACE the default `text-sm text-muted-foreground`. */
|
|
1772
|
+
noticeClassName?: string;
|
|
1773
|
+
}
|
|
1774
|
+
declare function CheckoutPayAction({ label, notice, submitting, submittingLabel, disabled, id, className, buttonClassName, noticeClassName, }: CheckoutPayActionProps): react_jsx_runtime.JSX.Element;
|
|
1775
|
+
|
|
1550
1776
|
/**
|
|
1551
1777
|
* `ContactInterestField` — the contact form's tenant-configurable interest
|
|
1552
1778
|
* question, drop-in (REB-759). Fully controlled (`value`/`onChange`), no hooks,
|
|
@@ -1596,4 +1822,4 @@ interface OrderInvoiceLinkProps {
|
|
|
1596
1822
|
}
|
|
1597
1823
|
declare function OrderInvoiceLink({ invoice, labels, className }: OrderInvoiceLinkProps): react_jsx_runtime.JSX.Element | null;
|
|
1598
1824
|
|
|
1599
|
-
export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, ArbitrationBadge, type ArbitrationBadgeProps, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, type ContactInterest, ContactInterestField, type ContactInterestFieldProps, CourseCatalogFilters, type CourseCatalogFiltersActive, type CourseCatalogFiltersHrefs, type CourseCatalogFiltersLabels, type CourseCatalogFiltersProps, type CourseCatalogPriceBand, CourseDescription, type CourseDescriptionProps, CoursePurchaseTerms, type CoursePurchaseTermsLabels, type CoursePurchaseTermsProps, DEFAULT_COURSE_CATALOG_FILTERS_LABELS, DEFAULT_COURSE_PRICE_BANDS, DEFAULT_COURSE_PURCHASE_TERMS_LABELS, DEFAULT_INVOICE_COUNTRIES, DEFAULT_LESSON_PREVIEW_LABELS, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, HeadingLevel, LegalDocument, type LegalDocumentProps, LessonPreview, type LessonPreviewLabels, type LessonPreviewProps, type MarkdownImageOptions, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfessionalFields, type ProfessionalFieldsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };
|
|
1825
|
+
export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, ArbitrationBadge, type ArbitrationBadgeProps, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, CartLineIncludes, type CartLineIncludesEntry, type CartLineIncludesProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAddressErrors, type CheckoutAddressValue, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutDeliveryChoice, type CheckoutDeliveryChoiceLabels, type CheckoutDeliveryChoiceProps, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CheckoutPayAction, type CheckoutPayActionProps, CheckoutQuoteSummary, type CheckoutQuoteSummaryLabels, type CheckoutQuoteSummaryProps, CheckoutTermsAcceptance, type CheckoutTermsAcceptanceProps, type CheckoutTermsCopy, type ContactInterest, ContactInterestField, type ContactInterestFieldProps, CourseCatalogFilters, type CourseCatalogFiltersActive, type CourseCatalogFiltersHrefs, type CourseCatalogFiltersLabels, type CourseCatalogFiltersProps, type CourseCatalogPriceBand, CourseDescription, type CourseDescriptionProps, CoursePurchaseTerms, type CoursePurchaseTermsLabels, type CoursePurchaseTermsProps, DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS, DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS, DEFAULT_COURSE_CATALOG_FILTERS_LABELS, DEFAULT_COURSE_PRICE_BANDS, DEFAULT_COURSE_PURCHASE_TERMS_LABELS, DEFAULT_INVOICE_COUNTRIES, DEFAULT_LESSON_PREVIEW_LABELS, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_CHECKOUT_ADDRESS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, HeadingLevel, LegalDocument, type LegalDocumentProps, LessonPreview, type LessonPreviewLabels, type LessonPreviewProps, type MarkdownImageOptions, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfessionalFields, type ProfessionalFieldsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, bundleComponentsToIncludes, defaultCheckoutFulfillment, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, quoteRequiresDelivery, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutFulfillmentFields, toCheckoutInvoiceFields, toCheckoutTermsFields };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ShopErrorCode, AcademyCourseDetail, AcademyLessonPreview, PageDetail, PageListItem, ProfessionalField, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, AcademyInstructorPublic, AcademyCategoryPublic, AcademyCatalogFiltersPublic, ShopStaffAutoDiscount, ShopOrder, ShopBillingInput, ShopCheckoutInput, Config, ShopOrderInvoice } from '@reblu/site-contracts';
|
|
1
|
+
import { ShopErrorCode, AcademyCourseDetail, AcademyLessonPreview, PageDetail, PageListItem, ProfessionalField, ShopProductListItem, ShopProductTrustIcon, ShopProductTrustItem, TrustBadgeType, TrustBadge, BlockType, PageBlock, ResolvedEmbed, ShopFacets, AcademyInstructorPublic, AcademyCategoryPublic, AcademyCatalogFiltersPublic, ShopBundleComponent, ShopStaffAutoDiscount, ShopOrder, ShopBillingInput, ShopCheckoutInput, ShopCheckoutDeliveryConfig, ShopCheckoutCopy, ShopFulfillmentInput, ShopQuote, Config, ShopOrderInvoice } from '@reblu/site-contracts';
|
|
2
2
|
export { DATA_REQUEST_TYPES } from '@reblu/site-contracts';
|
|
3
3
|
import { FaqItem } from './seo.js';
|
|
4
4
|
export { FaqPageJsonLd, MarkdownToPlainTextOptions, buildFaqPageJsonLd, collectFaqItems, markdownToPlainText } from './seo.js';
|
|
@@ -1069,7 +1069,34 @@ interface CartLineListLabels {
|
|
|
1069
1069
|
unitPriceSuffix: string;
|
|
1070
1070
|
/** REB-837 — default copy for `notice={true}`. */
|
|
1071
1071
|
cancelledNotice: string;
|
|
1072
|
+
/** REB-1208 — the summary of the per-line `lineIncludes` disclosure. */
|
|
1073
|
+
includesSummary: string;
|
|
1072
1074
|
}
|
|
1075
|
+
/** REB-1208 — one row of a line's «Qué incluye» detail. */
|
|
1076
|
+
interface CartLineIncludesEntry {
|
|
1077
|
+
label: React.ReactNode;
|
|
1078
|
+
value: React.ReactNode;
|
|
1079
|
+
}
|
|
1080
|
+
interface CartLineIncludesProps {
|
|
1081
|
+
entries: CartLineIncludesEntry[];
|
|
1082
|
+
/** An optional full-width note under the entries (e.g. a condition of use). */
|
|
1083
|
+
note?: React.ReactNode;
|
|
1084
|
+
className?: string;
|
|
1085
|
+
}
|
|
1086
|
+
/**
|
|
1087
|
+
* `CartLineIncludes` — drop-in body for `CartLineList`'s `lineIncludes`
|
|
1088
|
+
* (REB-1208): a term/description list of what a line includes, built by the
|
|
1089
|
+
* SITE from the product's own data (its custom-field values, or
|
|
1090
|
+
* `bundleComponentsToIncludes(product.bundleComponents)`). Renders nothing
|
|
1091
|
+
* when there are no entries and no note.
|
|
1092
|
+
*/
|
|
1093
|
+
declare function CartLineIncludes({ entries, note, className }: CartLineIncludesProps): react_jsx_runtime.JSX.Element | null;
|
|
1094
|
+
/**
|
|
1095
|
+
* REB-1208 — maps `ShopProductDetail.bundleComponents` (already on the
|
|
1096
|
+
* contract) to `CartLineIncludes` entries: each component's name and its
|
|
1097
|
+
* quantity, in the `x{quantity}` form `OrderConfirmation` uses.
|
|
1098
|
+
*/
|
|
1099
|
+
declare function bundleComponentsToIncludes(components: readonly ShopBundleComponent[]): CartLineIncludesEntry[];
|
|
1073
1100
|
interface CartLineListProps {
|
|
1074
1101
|
items: CartLineItemView[];
|
|
1075
1102
|
onQuantityChange?: (productId: string, variantId: string | null | undefined, quantity: number) => void;
|
|
@@ -1093,12 +1120,19 @@ interface CartLineListProps {
|
|
|
1093
1120
|
* `null`/`undefined` for lines without one.
|
|
1094
1121
|
*/
|
|
1095
1122
|
lineMessage?: (item: CartLineItemView) => React.ReactNode;
|
|
1123
|
+
/**
|
|
1124
|
+
* REB-1208 — what a line includes, shown under it in a collapsed
|
|
1125
|
+
* «Qué incluye» disclosure (`labels.includesSummary`). Return the content
|
|
1126
|
+
* (usually `<CartLineIncludes entries={…} />`), or `null`/`undefined` for
|
|
1127
|
+
* lines with nothing to show. Omit the prop to render no disclosure.
|
|
1128
|
+
*/
|
|
1129
|
+
lineIncludes?: (item: CartLineItemView) => React.ReactNode;
|
|
1096
1130
|
labels?: Partial<CartLineListLabels>;
|
|
1097
1131
|
currencyCode?: string;
|
|
1098
1132
|
locale?: string;
|
|
1099
1133
|
className?: string;
|
|
1100
1134
|
}
|
|
1101
|
-
declare function CartLineList({ items, onQuantityChange, onRemove, liveMessage, notice, lineMessage, labels, currencyCode, locale, className, }: CartLineListProps): react_jsx_runtime.JSX.Element;
|
|
1135
|
+
declare function CartLineList({ items, onQuantityChange, onRemove, liveMessage, notice, lineMessage, lineIncludes, labels, currencyCode, locale, className, }: CartLineListProps): react_jsx_runtime.JSX.Element;
|
|
1102
1136
|
|
|
1103
1137
|
/**
|
|
1104
1138
|
* `CartSummary` — presentational price breakdown (REB-829): subtotal,
|
|
@@ -1547,6 +1581,198 @@ interface FullInvoiceFieldsProps {
|
|
|
1547
1581
|
}
|
|
1548
1582
|
declare function FullInvoiceFields({ value, onChange, overCap, issuesInvoices, errors, countries, labels, className, }: FullInvoiceFieldsProps): react_jsx_runtime.JSX.Element | null;
|
|
1549
1583
|
|
|
1584
|
+
/** The shipping address fields the buyer types (country defaults server-side). */
|
|
1585
|
+
interface CheckoutAddressValue {
|
|
1586
|
+
firstName: string;
|
|
1587
|
+
lastName: string;
|
|
1588
|
+
street: string;
|
|
1589
|
+
postalCode: string;
|
|
1590
|
+
city: string;
|
|
1591
|
+
region: string;
|
|
1592
|
+
}
|
|
1593
|
+
type CheckoutAddressErrors = Partial<Record<keyof CheckoutAddressValue, string>>;
|
|
1594
|
+
declare const EMPTY_CHECKOUT_ADDRESS: CheckoutAddressValue;
|
|
1595
|
+
/** SDK texts of {@link CheckoutDeliveryChoice}; the option names come from the tenant. */
|
|
1596
|
+
interface CheckoutDeliveryChoiceLabels {
|
|
1597
|
+
legend: string;
|
|
1598
|
+
free: string;
|
|
1599
|
+
pickupPointsLegend: string;
|
|
1600
|
+
addressLegend: string;
|
|
1601
|
+
firstName: string;
|
|
1602
|
+
lastName: string;
|
|
1603
|
+
street: string;
|
|
1604
|
+
postalCode: string;
|
|
1605
|
+
city: string;
|
|
1606
|
+
region: string;
|
|
1607
|
+
}
|
|
1608
|
+
declare const DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS: CheckoutDeliveryChoiceLabels;
|
|
1609
|
+
interface CheckoutDeliveryChoiceProps {
|
|
1610
|
+
/** `ShopConfig.delivery`. */
|
|
1611
|
+
delivery: ShopCheckoutDeliveryConfig;
|
|
1612
|
+
/** `ShopConfig.checkout` — the tenant's option names. */
|
|
1613
|
+
copy: Pick<ShopCheckoutCopy, 'shippingOptionLabel' | 'pickupOptionLabel'>;
|
|
1614
|
+
/** The current choice; start from {@link defaultCheckoutFulfillment}. */
|
|
1615
|
+
value: ShopFulfillmentInput | null;
|
|
1616
|
+
onChange: (value: ShopFulfillmentInput) => void;
|
|
1617
|
+
address: CheckoutAddressValue;
|
|
1618
|
+
onAddressChange: (value: CheckoutAddressValue) => void;
|
|
1619
|
+
addressErrors?: CheckoutAddressErrors;
|
|
1620
|
+
/** A delivery error from checkout or the quote (e.g. `PICKUP_LOCATION_INVALID`). */
|
|
1621
|
+
error?: string | null;
|
|
1622
|
+
/** The last quote: its home delivery cost wins over the flat cost (free over the threshold). */
|
|
1623
|
+
quote?: Pick<ShopQuote, 'fulfillment' | 'shipping'> | null;
|
|
1624
|
+
/** `false` for a cart with nothing to ship (see {@link quoteRequiresDelivery}): renders nothing. */
|
|
1625
|
+
requiresDelivery?: boolean;
|
|
1626
|
+
labels?: Partial<CheckoutDeliveryChoiceLabels>;
|
|
1627
|
+
currencyCode?: string;
|
|
1628
|
+
locale?: string;
|
|
1629
|
+
/** Prefix of the element ids and radio names (one choice per page). @default 'checkout-delivery' */
|
|
1630
|
+
id?: string;
|
|
1631
|
+
className?: string;
|
|
1632
|
+
}
|
|
1633
|
+
/**
|
|
1634
|
+
* `CheckoutDeliveryChoice` (REB-1197) — how the order reaches the buyer,
|
|
1635
|
+
* chosen before paying: home delivery (with the shipping address, stored on
|
|
1636
|
+
* the order) or free pickup at one of the tenant's pickup points. Only the
|
|
1637
|
+
* methods the tenant offers (`ShopConfig.delivery.methods`) are shown, with
|
|
1638
|
+
* the tenant's names; home delivery shows its cost and the estimated delivery
|
|
1639
|
+
* term; each pickup point its address, opening hours and ready-in text, all
|
|
1640
|
+
* edited in nexus. Fully controlled, no hooks (RSC-safe root entry); send {@link toCheckoutFulfillmentFields}
|
|
1641
|
+
* with the quote and the checkout body. Place it inside the checkout `<form>`
|
|
1642
|
+
* (the address fields are `required`).
|
|
1643
|
+
*/
|
|
1644
|
+
declare function CheckoutDeliveryChoice({ delivery, copy, value, onChange, address, onAddressChange, addressErrors, error, quote, requiresDelivery, labels, currencyCode, locale, id: uid, className, }: CheckoutDeliveryChoiceProps): react_jsx_runtime.JSX.Element | null;
|
|
1645
|
+
/**
|
|
1646
|
+
* The starting choice: home delivery when offered, else pickup (with the
|
|
1647
|
+
* point preselected when there is only one). `null` when the tenant offers
|
|
1648
|
+
* neither, or against an API that predates the delivery config.
|
|
1649
|
+
*/
|
|
1650
|
+
declare function defaultCheckoutFulfillment(delivery: ShopCheckoutDeliveryConfig | null | undefined): ShopFulfillmentInput | null;
|
|
1651
|
+
/** Whether the cart has something to deliver; `true` until a quote says otherwise. */
|
|
1652
|
+
declare function quoteRequiresDelivery(quote: Pick<ShopQuote, 'lines'> | null | undefined): boolean;
|
|
1653
|
+
/**
|
|
1654
|
+
* The quote and checkout body fields for the delivery choice. Home delivery
|
|
1655
|
+
* carries the address (blank optional fields left out); pickup the point. With
|
|
1656
|
+
* no choice (a cart with nothing to ship) it still sends home delivery: the
|
|
1657
|
+
* server records no delivery for such a cart, and the request stays on the
|
|
1658
|
+
* current contract (REB-1227).
|
|
1659
|
+
*
|
|
1660
|
+
* Pass `requiresDelivery` (`quoteRequiresDelivery(quote)`): when the cart
|
|
1661
|
+
* ships nothing the choice block is hidden and the address stays blank, so no
|
|
1662
|
+
* address and no pickup point are sent — a blank address is refused by the
|
|
1663
|
+
* server (400 INVALID_INPUT) and pickup of nothing is refused too.
|
|
1664
|
+
*/
|
|
1665
|
+
declare function toCheckoutFulfillmentFields(value: ShopFulfillmentInput | null, address: CheckoutAddressValue, requiresDelivery?: boolean): Pick<ShopCheckoutInput, 'fulfillment' | 'shippingAddress'>;
|
|
1666
|
+
|
|
1667
|
+
/** SDK texts of {@link CheckoutQuoteSummary}; the tenant's own ones come in the quote. */
|
|
1668
|
+
interface CheckoutQuoteSummaryLabels {
|
|
1669
|
+
subtotal: string;
|
|
1670
|
+
/** The discount row: its tenant label when automatic, else the code. */
|
|
1671
|
+
discount: (codeOrLabel: string, isAutomatic: boolean) => string;
|
|
1672
|
+
free: string;
|
|
1673
|
+
/** Fallback delivery row name when the quote carries no label. */
|
|
1674
|
+
delivery: string;
|
|
1675
|
+
remainingForFree: (formattedAmount: string) => string;
|
|
1676
|
+
/** A tax row when prices include it («De los cuales IGIC 7 %»). */
|
|
1677
|
+
taxIncluded: (taxLabel: string) => string;
|
|
1678
|
+
total: string;
|
|
1679
|
+
/** Under the total when prices include tax. */
|
|
1680
|
+
taxesIncludedNote: string;
|
|
1681
|
+
quantityTimesUnit: (quantity: number, formattedUnitPrice: string) => string;
|
|
1682
|
+
}
|
|
1683
|
+
declare const DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS: CheckoutQuoteSummaryLabels;
|
|
1684
|
+
interface CheckoutQuoteSummaryProps {
|
|
1685
|
+
/** `useShopQuote().quote` / `client.shop.quote()` — the total Stripe charges. */
|
|
1686
|
+
quote: ShopQuote;
|
|
1687
|
+
heading?: ReactNode;
|
|
1688
|
+
headingLevel?: HeadingLevel;
|
|
1689
|
+
labels?: Partial<CheckoutQuoteSummaryLabels>;
|
|
1690
|
+
/** @default 'EUR' */
|
|
1691
|
+
currencyCode?: string;
|
|
1692
|
+
/** @default 'es-ES' */
|
|
1693
|
+
locale?: string;
|
|
1694
|
+
className?: string;
|
|
1695
|
+
}
|
|
1696
|
+
/**
|
|
1697
|
+
* `CheckoutQuoteSummary` (REB-1197) — the pre-payment summary of the
|
|
1698
|
+
* single-step checkout, rendered from `ShopQuote`: every line with its kind,
|
|
1699
|
+
* quantity and unit price; subtotal; discount; the delivery row (home
|
|
1700
|
+
* delivery cost or «Gratis», or the pickup point); the tax rows the tenant
|
|
1701
|
+
* shows; the total; the estimated delivery term. The amount is exactly what
|
|
1702
|
+
* Stripe charges (the API prices quote and checkout with one function).
|
|
1703
|
+
* Announces why a typed code was not applied (`role=status`) and why the
|
|
1704
|
+
* order cannot be paid (`role=alert`, e.g. over the max weight).
|
|
1705
|
+
*
|
|
1706
|
+
* Presentational and RSC-safe. Tenant texts (delivery labels, tax labels,
|
|
1707
|
+
* line kinds, the estimate) come from the API; `labels` replaces the rest.
|
|
1708
|
+
*/
|
|
1709
|
+
declare function CheckoutQuoteSummary({ quote, heading, headingLevel, labels, currencyCode, locale, className, }: CheckoutQuoteSummaryProps): react_jsx_runtime.JSX.Element;
|
|
1710
|
+
|
|
1711
|
+
/**
|
|
1712
|
+
* `CheckoutTermsAcceptance` (REB-1198) — the mandatory, unticked box «He leído
|
|
1713
|
+
* y acepto las {terms} de {tenant}» of the single-step checkout. Every text is
|
|
1714
|
+
* the tenant's (`ShopConfig.checkout`, edited in nexus › Configuración ›
|
|
1715
|
+
* Legal): `{terms}` becomes the link to the full document (text
|
|
1716
|
+
* `termsLinkText`, target `termsLinkUrl` or the SITE's own `termsHref`, a new
|
|
1717
|
+
* tab when `isTermsLinkNewTab`), `{tenant}` the site name. A label without
|
|
1718
|
+
* `{terms}` gets the link appended.
|
|
1719
|
+
*
|
|
1720
|
+
* Renders nothing while the tenant has published no terms
|
|
1721
|
+
* (`termsVersion: null`): there is nothing to accept and checkout does not
|
|
1722
|
+
* ask. Send {@link toCheckoutTermsFields} with the checkout body; the server
|
|
1723
|
+
* refuses without it (`TERMS_NOT_ACCEPTED`) or with an old version
|
|
1724
|
+
* (`TERMS_VERSION_CHANGED`: reload the config and ask again).
|
|
1725
|
+
*/
|
|
1726
|
+
type CheckoutTermsCopy = Pick<ShopCheckoutCopy, 'tenantName' | 'termsCheckboxLabel' | 'termsLinkText' | 'termsLinkUrl' | 'isTermsLinkNewTab' | 'termsVersion'>;
|
|
1727
|
+
interface CheckoutTermsAcceptanceProps {
|
|
1728
|
+
copy: CheckoutTermsCopy;
|
|
1729
|
+
/** The SITE's route to its terms page, used when the tenant set no `termsLinkUrl`. */
|
|
1730
|
+
termsHref: string;
|
|
1731
|
+
checked: boolean;
|
|
1732
|
+
onCheckedChange: (checked: boolean) => void;
|
|
1733
|
+
/** E.g. «Debes aceptar las condiciones para continuar.» (the SITE's or the API's text). */
|
|
1734
|
+
error?: string | null;
|
|
1735
|
+
/** Appended inside the link when it opens a new tab (screen readers). @default '(se abre en una pestaña nueva)' */
|
|
1736
|
+
newTabHint?: string;
|
|
1737
|
+
/** The checkbox id (one box per page). @default 'checkout-terms' */
|
|
1738
|
+
id?: string;
|
|
1739
|
+
className?: string;
|
|
1740
|
+
}
|
|
1741
|
+
declare function CheckoutTermsAcceptance({ copy, termsHref, checked, onCheckedChange, error, newTabHint, id, className, }: CheckoutTermsAcceptanceProps): react_jsx_runtime.JSX.Element | null;
|
|
1742
|
+
/**
|
|
1743
|
+
* The checkout body fields for the terms box: `acceptsTerms` and the version
|
|
1744
|
+
* shown (`termsVersionId`), or nothing when the tenant published no terms.
|
|
1745
|
+
*/
|
|
1746
|
+
declare function toCheckoutTermsFields(copy: Pick<ShopCheckoutCopy, 'termsVersion'> | null | undefined, accepted: boolean): Pick<ShopCheckoutInput, 'acceptsTerms' | 'termsVersionId'>;
|
|
1747
|
+
|
|
1748
|
+
/**
|
|
1749
|
+
* `CheckoutPayAction` (REB-1198) — the last control of the single-step
|
|
1750
|
+
* checkout: the submit button (`ShopCheckoutCopy.continueToPaymentLabel`,
|
|
1751
|
+
* «Continuar al pago») and, right under it and readable (lawyer, 3-Nov: no
|
|
1752
|
+
* tiny text), the notice with the amount (`ShopQuote.payNotice`, «En el
|
|
1753
|
+
* siguiente paso pagarás {total} en la pasarela segura de Stripe…», already
|
|
1754
|
+
* filled). The button is described by the notice, so a screen reader hears
|
|
1755
|
+
* both. Place it inside the checkout `<form>`.
|
|
1756
|
+
*/
|
|
1757
|
+
interface CheckoutPayActionProps {
|
|
1758
|
+
/** The tenant's button text: `ShopCheckoutCopy.continueToPaymentLabel`. */
|
|
1759
|
+
label: string;
|
|
1760
|
+
/** The tenant's small print: `ShopQuote.payNotice`. Omit while there is no quote. */
|
|
1761
|
+
notice?: string | null;
|
|
1762
|
+
submitting?: boolean;
|
|
1763
|
+
/** Shown on the button while `submitting`. @default 'Procesando…' */
|
|
1764
|
+
submittingLabel?: string;
|
|
1765
|
+
disabled?: boolean;
|
|
1766
|
+
/** Prefix of the element ids (one action per page). @default 'checkout-pay' */
|
|
1767
|
+
id?: string;
|
|
1768
|
+
className?: string;
|
|
1769
|
+
/** Classes for the button; REPLACE the default look. */
|
|
1770
|
+
buttonClassName?: string;
|
|
1771
|
+
/** Classes for the notice; REPLACE the default `text-sm text-muted-foreground`. */
|
|
1772
|
+
noticeClassName?: string;
|
|
1773
|
+
}
|
|
1774
|
+
declare function CheckoutPayAction({ label, notice, submitting, submittingLabel, disabled, id, className, buttonClassName, noticeClassName, }: CheckoutPayActionProps): react_jsx_runtime.JSX.Element;
|
|
1775
|
+
|
|
1550
1776
|
/**
|
|
1551
1777
|
* `ContactInterestField` — the contact form's tenant-configurable interest
|
|
1552
1778
|
* question, drop-in (REB-759). Fully controlled (`value`/`onChange`), no hooks,
|
|
@@ -1596,4 +1822,4 @@ interface OrderInvoiceLinkProps {
|
|
|
1596
1822
|
}
|
|
1597
1823
|
declare function OrderInvoiceLink({ invoice, labels, className }: OrderInvoiceLinkProps): react_jsx_runtime.JSX.Element | null;
|
|
1598
1824
|
|
|
1599
|
-
export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, ArbitrationBadge, type ArbitrationBadgeProps, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, type ContactInterest, ContactInterestField, type ContactInterestFieldProps, CourseCatalogFilters, type CourseCatalogFiltersActive, type CourseCatalogFiltersHrefs, type CourseCatalogFiltersLabels, type CourseCatalogFiltersProps, type CourseCatalogPriceBand, CourseDescription, type CourseDescriptionProps, CoursePurchaseTerms, type CoursePurchaseTermsLabels, type CoursePurchaseTermsProps, DEFAULT_COURSE_CATALOG_FILTERS_LABELS, DEFAULT_COURSE_PRICE_BANDS, DEFAULT_COURSE_PURCHASE_TERMS_LABELS, DEFAULT_INVOICE_COUNTRIES, DEFAULT_LESSON_PREVIEW_LABELS, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, HeadingLevel, LegalDocument, type LegalDocumentProps, LessonPreview, type LessonPreviewLabels, type LessonPreviewProps, type MarkdownImageOptions, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfessionalFields, type ProfessionalFieldsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutInvoiceFields };
|
|
1825
|
+
export { ALLOWED_YOUTUBE_HOSTS, AddedToCartToast, type AddedToCartToastLabels, type AddedToCartToastProps, type AddedToCartToastStatus, ArbitrationBadge, type ArbitrationBadgeProps, type BlockRendererProps, type CanonicalBlockType, type CartAdjustmentLine, CartAdjustmentsNotice, type CartAdjustmentsNoticeLabels, type CartAdjustmentsNoticeProps, CartLineIncludes, type CartLineIncludesEntry, type CartLineIncludesProps, type CartLineItemView, CartLineList, type CartLineListLabels, type CartLineListProps, CartSummary, type CartSummaryLabels, type CartSummaryProps, type CheckoutAddressErrors, type CheckoutAddressValue, type CheckoutAppliedDiscount, type CheckoutContactErrors, type CheckoutContactValues, CheckoutDeliveryChoice, type CheckoutDeliveryChoiceLabels, type CheckoutDeliveryChoiceProps, CheckoutForm, type CheckoutFormLabels, type CheckoutFormProps, CheckoutLoginPrompt, type CheckoutLoginPromptLabels, type CheckoutLoginPromptProps, CheckoutPayAction, type CheckoutPayActionProps, CheckoutQuoteSummary, type CheckoutQuoteSummaryLabels, type CheckoutQuoteSummaryProps, CheckoutTermsAcceptance, type CheckoutTermsAcceptanceProps, type CheckoutTermsCopy, type ContactInterest, ContactInterestField, type ContactInterestFieldProps, CourseCatalogFilters, type CourseCatalogFiltersActive, type CourseCatalogFiltersHrefs, type CourseCatalogFiltersLabels, type CourseCatalogFiltersProps, type CourseCatalogPriceBand, CourseDescription, type CourseDescriptionProps, CoursePurchaseTerms, type CoursePurchaseTermsLabels, type CoursePurchaseTermsProps, DEFAULT_CHECKOUT_DELIVERY_CHOICE_LABELS, DEFAULT_CHECKOUT_QUOTE_SUMMARY_LABELS, DEFAULT_COURSE_CATALOG_FILTERS_LABELS, DEFAULT_COURSE_PRICE_BANDS, DEFAULT_COURSE_PURCHASE_TERMS_LABELS, DEFAULT_INVOICE_COUNTRIES, DEFAULT_LESSON_PREVIEW_LABELS, DEFAULT_SHOP_ERROR_FALLBACK_MESSAGE, DEFAULT_SHOP_ERROR_MESSAGES, DEFAULT_SHOP_PRICE_BANDS, DEFAULT_TRUST_BADGE_HEADINGS, DEFAULT_TRUST_BADGE_TYPE_ORDER, DEFAULT_TRUST_ICONS, EMPTY_CHECKOUT_ADDRESS, EMPTY_FULL_INVOICE_VALUE, FaqAccordion, type FaqAccordionProps, FaqItem, type FullInvoiceErrors, FullInvoiceFields, type FullInvoiceFieldsLabels, type FullInvoiceFieldsProps, type FullInvoiceIdType, type FullInvoiceValue, HeadingLevel, LegalDocument, type LegalDocumentProps, LessonPreview, type LessonPreviewLabels, type LessonPreviewProps, type MarkdownImageOptions, MarkdownRenderer, type MarkdownRendererProps, OrderConfirmation, type OrderConfirmationLabels, type OrderConfirmationOrder, type OrderConfirmationProps, type OrderConfirmationStatus, OrderInvoiceLink, type OrderInvoiceLinkLabels, type OrderInvoiceLinkProps, PageBlocks, type PageBlocksComponents, type PageBlocksProps, PageCardGrid, type PageCardGridProps, ParentPage, type ParentPageProps, ProductCard, type ProductCardProps, ProductTrustItems, type ProductTrustItemsProps, ProfessionalFields, type ProfessionalFieldsProps, ProfileCard, type ProfileCardProps, type RenderableBlock, SafeHtml, type SafeHtmlProps, type ShareUrls, type ShopFilterPriceBand, ShopFilters, type ShopFiltersActive, type ShopFiltersHrefs, type ShopFiltersLabels, type ShopFiltersProps, Specialty, type SpecialtyProps, Treatment, type TreatmentProps, TrustBadges, type TrustBadgesProps, type TrustIconComponent, type TrustIconProps, buildShareUrls, bundleComponentsToIncludes, defaultCheckoutFulfillment, formatPrice, getShopErrorMessage, isAllowedYouTubeHost, isOverSimplifiedInvoiceCap, markdownToSafeHtml, quoteRequiresDelivery, readingTime, sanitizeHtml, shopIssuesInvoices, shouldRenderShopFilters, toCheckoutFulfillmentFields, toCheckoutInvoiceFields, toCheckoutTermsFields };
|