@revenuecat/purchases-ui-js
Version:
Web components for Paywalls. Powered by RevenueCat
68 lines (67 loc) • 2.18 kB
TypeScript
import type { BaseComponent } from "../base";
import type { Overrides } from "../overrides";
import type { SheetProps } from "./sheet";
import type { StackProps } from "./stack";
interface WorkflowAction {
type: "workflow";
}
interface RestorePurchasesAction {
type: "restore_purchases";
}
interface NavigateBackAction {
type: "navigate_back";
}
interface CloseAction {
type: "close_workflow";
}
interface NavigateToAction {
type: "navigate_to";
destination: "customer_center" | "offer_code" | "screen_redirect";
}
interface NavigateToSheetAction {
type: "navigate_to";
destination: "sheet";
sheet?: SheetProps | null;
}
interface NavigateToWebPurchase {
type: "navigate_to";
destination: "web_paywall_link";
custom_url_options?: unknown;
}
interface NavigateToUrlAction {
type: "navigate_to";
destination: "privacy_policy" | "terms" | "url";
sheet?: null;
url: {
url_lid: string;
method: "deep_link" | "external_browser" | "in_app_browser";
};
}
/** Optional query params for complete_workflow URLs (host merges values). */
export type CompleteWorkflowUrlQueryParams = {
app_user_id?: boolean;
};
/** Args passed to `onCompleteWorkflowNavigate` (host builds final URL if needed). */
export type CompleteWorkflowNavigateArgs = {
url: string;
method: "deep_link" | "external_browser" | "in_app_browser";
url_query_params?: CompleteWorkflowUrlQueryParams;
};
/** End the workflow and open a URL (optional query params, e.g. app user ID). */
interface CompleteWorkflowAction {
type: "complete_workflow";
url: {
url_lid: string;
method: "deep_link" | "external_browser" | "in_app_browser";
};
url_query_params?: CompleteWorkflowUrlQueryParams;
}
export type Action = WorkflowAction | RestorePurchasesAction | NavigateBackAction | CloseAction | NavigateToAction | NavigateToSheetAction | NavigateToWebPurchase | NavigateToUrlAction | CompleteWorkflowAction;
export interface ButtonProps extends BaseComponent {
type: "button";
action: Action;
stack: StackProps;
transition?: null;
overrides?: Overrides<ButtonProps>;
}
export {};