UNPKG

@frak-labs/components

Version:

Frak Wallet components, helping any person to interact with the Frak wallet.

160 lines (159 loc) 4.83 kB
import { SharingPageProduct } from "@frak-labs/core-sdk"; import * as _$preact from "preact"; //#region src/components/PostPurchase/types.d.ts /** * Props for the {@link PostPurchase} component. * @inline */ type PostPurchaseProps = { /** * Merchant customer ID for purchase tracking fallback. * All three tracking props (`customerId`, `orderId`, `token`) must be * present for tracking to fire. */ customerId?: string; /** * Merchant order ID for purchase tracking fallback. */ orderId?: string; /** * Checkout token for purchase tracking fallback. */ token?: string; /** * Base URL to share. Falls back to the merchant domain returned by * the backend when omitted. */ sharingUrl?: string; /** * Override the merchant ID resolved from the SDK config. */ merchantId?: string; /** * Placement ID for backend-driven CSS customization. */ placement?: string; /** * CSS class names passed through to the root element (Light DOM). */ classname?: string; /** * Force a display variant instead of relying on the backend evaluation. */ variant?: "referrer" | "referee"; /** * Label for the pill badge displayed above the message. * When omitted (and no placement config provides one), the badge is hidden. */ badgeText?: string; /** * Override the message shown to referrers. * Use `{REWARD}` as placeholder for the reward amount. */ referrerText?: string; /** * Override the message shown to referees. * Use `{REWARD}` as placeholder for the reward amount. */ refereeText?: string; /** * Override the CTA button text. * Use `{REWARD}` as placeholder for the reward amount. */ ctaText?: string; /** * Override the image displayed on the left of the post-purchase card. * Accepts an image URL. Falls back to the built-in gift icon when omitted. * The image is constrained to the icon slot via `object-fit: contain`, * so any aspect ratio renders correctly. */ imageUrl?: string; /** * Optional product cards forwarded to the sharing page when the user * clicks the CTA. Accepts either a real {@link SharingPageProduct} * array (when set imperatively via the JS property, * `el.products = [...]`) or a JSON-stringified array (when set as an * HTML attribute, `<frak-post-purchase products='[...]'>`). The HTML * attribute path is required for server-rendered surfaces — e.g. * WooCommerce / Magento plugins — because `preact-custom-element` * delivers attribute values as raw strings. * * Empty arrays / unparseable strings are treated as "no products" so * the sharing page renders without the product card section. */ products?: SharingPageProduct[] | string; /** * When set, renders the card in preview mode (e.g. Shopify/WP editor). * Bypasses the client-ready / RPC gates that normally hide the card * until the backend resolves, and no-ops the click handler so merchants * can see the final layout with their configured copy. */ preview?: string; /** * Which variant to show when {@link preview} is set. * Defaults to `"referrer"`. */ previewVariant?: "referrer" | "referee"; }; //#endregion //#region src/components/PostPurchase/PostPurchase.d.ts /** * Post-purchase card component. * * Renders an inline card on the merchant's thank-you / order-status page * that either congratulates a referee or invites a referrer to share. * * Fetches referral status and merchant information via two independent * RPC calls, then computes the display variant locally. * * @group components * * @example * Minimal — just show the card: * ```html * <frak-post-purchase></frak-post-purchase> * ``` * * @example * With purchase tracking fallback and custom sharing URL: * ```html * <frak-post-purchase * customer-id="cust_123" * order-id="ord_456" * token="checkout_abc" * sharing-url="https://merchant.com/product/shoes" * ></frak-post-purchase> * ``` */ declare function PostPurchase({ customerId, orderId, token, sharingUrl, merchantId, placement: placementId, classname, variant: forcedVariant, badgeText: propBadgeText, referrerText: propReferrerText, refereeText: propRefereeText, ctaText: propCtaText, preview, previewVariant, products, imageUrl }: PostPurchaseProps): _$preact.JSX.Element | null; //#endregion //#region src/components/PostPurchase/index.d.ts /** * Custom element interface for `<frak-post-purchase>`. * Combines standard {@link HTMLElement} with {@link PostPurchaseProps}. */ interface PostPurchaseElement extends HTMLElement, PostPurchaseProps {} declare global { interface HTMLElementTagNameMap { "frak-post-purchase": PostPurchaseElement; } } //#endregion export { PostPurchase, PostPurchaseElement };