@revenuecat/purchases-ui-js 2.2.0 → 2.2.1

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.
@@ -322,3 +322,18 @@
322
322
  paywallData: listTemplate,
323
323
  }}
324
324
  />
325
+
326
+ <Story
327
+ name="Wallet Button"
328
+ args={{
329
+ paywallData: pastaPaywallData,
330
+ walletButtonRender: (element: HTMLElement, selectedPackageId) => {
331
+ const newDiv = document.createElement("div");
332
+ newDiv.innerText = "Hi! I was injected from the walletButtonRender";
333
+ newDiv.style.width = "100%";
334
+ newDiv.style.textAlign = "center";
335
+ element.append(newDiv);
336
+ return {};
337
+ },
338
+ }}
339
+ />
@@ -40,6 +40,13 @@
40
40
  onNavigateToUrlClicked?: (url: string) => void;
41
41
  onActionTriggered?: (actionId: string) => void;
42
42
  onError?: (error: unknown) => void;
43
+ walletButtonRender?: (
44
+ node: HTMLElement,
45
+ selectedPackageId: string,
46
+ ) => {
47
+ destroy?: () => void;
48
+ update?: (selectedPackageId: string) => void;
49
+ };
43
50
  }
44
51
 
45
52
  const {
@@ -56,6 +63,7 @@
56
63
  onActionTriggered,
57
64
  onError,
58
65
  uiConfig,
66
+ walletButtonRender,
59
67
  }: Props = $props();
60
68
 
61
69
  const getColorMode = setColorModeContext(() => preferredColorMode);
@@ -127,6 +135,7 @@
127
135
  infoPerPackage: readable(infoPerPackage),
128
136
  onPurchase,
129
137
  onButtonAction,
138
+ walletButtonRender,
130
139
  uiConfig,
131
140
  });
132
141
 
@@ -16,6 +16,10 @@ interface Props {
16
16
  onNavigateToUrlClicked?: (url: string) => void;
17
17
  onActionTriggered?: (actionId: string) => void;
18
18
  onError?: (error: unknown) => void;
19
+ walletButtonRender?: (node: HTMLElement, selectedPackageId: string) => {
20
+ destroy?: () => void;
21
+ update?: (selectedPackageId: string) => void;
22
+ };
19
23
  }
20
24
  declare const Paywall: import("svelte").Component<Props, {}, "">;
21
25
  type Paywall = ReturnType<typeof Paywall>;
@@ -4,8 +4,17 @@
4
4
  import type { PurchaseButtonProps } from "../../types/components/purchase-button";
5
5
 
6
6
  const { stack }: PurchaseButtonProps = $props();
7
-
8
- const { onPurchase } = getPaywallContext();
7
+ const { onPurchase, walletButtonRender, selectedPackageId } =
8
+ getPaywallContext();
9
9
  </script>
10
10
 
11
+ {#if walletButtonRender}
12
+ {#if $selectedPackageId}
13
+ <div
14
+ style="width: 100%; margin-bottom:20px"
15
+ use:walletButtonRender={$selectedPackageId}
16
+ ></div>
17
+ {/if}
18
+ {/if}
19
+
11
20
  <Stack {...stack} onclick={onPurchase} />
@@ -7,6 +7,10 @@ type PaywallContext = Readonly<{
7
7
  variablesPerPackage: Readable<Record<string, VariableDictionary> | undefined>;
8
8
  infoPerPackage: Readable<Record<string, PackageInfo> | undefined>;
9
9
  onPurchase: () => void;
10
+ walletButtonRender?: (node: HTMLElement, selectedPackageId: string) => {
11
+ destroy?: () => void;
12
+ update?: (selectedPackageId: string) => void;
13
+ };
10
14
  onButtonAction: (action: Action, actionId?: string) => void;
11
15
  uiConfig: UIConfig;
12
16
  }>;
@@ -1,2 +1,5 @@
1
1
  import type { DecoratorFunction, Renderer } from "storybook/internal/csf";
2
- export declare function paywallDecorator<TRenderer extends Renderer, TArgs>(): DecoratorFunction<TRenderer, TArgs>;
2
+ export declare function paywallDecorator<TRenderer extends Renderer, TArgs>(walletButtonRender?: (node: HTMLElement, selectedPackageId: string) => {
3
+ destroy?: () => void;
4
+ update?: (selectedPackageId: string) => void;
5
+ }): DecoratorFunction<TRenderer, TArgs>;
@@ -1,6 +1,6 @@
1
1
  import { setPaywallContext } from "../stores/paywall";
2
2
  import { readable, writable } from "svelte/store";
3
- export function paywallDecorator() {
3
+ export function paywallDecorator(walletButtonRender) {
4
4
  return (Story) => {
5
5
  const selectedPackageId = writable(undefined);
6
6
  selectedPackageId.subscribe((packageId) => {
@@ -19,6 +19,7 @@ export function paywallDecorator() {
19
19
  infoPerPackage: readable(undefined),
20
20
  onPurchase: () => window.alert("Purchase clicked"),
21
21
  onButtonAction: (action, actionId) => window.alert(`Button clicked: ${JSON.stringify({ action, actionId }, undefined, 2)}`),
22
+ walletButtonRender,
22
23
  uiConfig: emptyUiConfig,
23
24
  });
24
25
  return Story();
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@revenuecat/purchases-ui-js",
3
3
  "description": "Web components for Paywalls. Powered by RevenueCat",
4
4
  "private": false,
5
- "version": "2.2.0",
5
+ "version": "2.2.1",
6
6
  "author": {
7
7
  "name": "RevenueCat, Inc."
8
8
  },