@namiml/expo-sdk 3.4.0-dev.202605060437

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 (60) hide show
  1. package/dist/index.cjs +4000 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.ts +151 -0
  4. package/dist/index.mjs +3966 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/nami-expo-nami-iap.tgz +0 -0
  7. package/package.json +92 -0
  8. package/src/adapters/expo-device.adapter.ts +106 -0
  9. package/src/adapters/expo-purchase.adapter.ts +79 -0
  10. package/src/adapters/expo-storage.adapter.ts +92 -0
  11. package/src/adapters/expo-ui.adapter.ts +57 -0
  12. package/src/adapters/index.ts +33 -0
  13. package/src/amazon-kepler.d.ts +7 -0
  14. package/src/components/NamiView.tsx +1006 -0
  15. package/src/components/PaywallScreen.tsx +245 -0
  16. package/src/components/TemplateRenderer.tsx +243 -0
  17. package/src/components/containers/NamiBackgroundContainer.tsx +103 -0
  18. package/src/components/containers/NamiCarousel.tsx +217 -0
  19. package/src/components/containers/NamiCollapseContainer.tsx +116 -0
  20. package/src/components/containers/NamiContainer.tsx +315 -0
  21. package/src/components/containers/NamiContentContainer.tsx +140 -0
  22. package/src/components/containers/NamiFooter.tsx +35 -0
  23. package/src/components/containers/NamiHeader.tsx +45 -0
  24. package/src/components/containers/NamiProductContainer.tsx +248 -0
  25. package/src/components/containers/NamiRepeatingGrid.tsx +81 -0
  26. package/src/components/containers/NamiResponsiveGrid.tsx +75 -0
  27. package/src/components/containers/NamiStack.tsx +69 -0
  28. package/src/components/elements/NamiButton.tsx +285 -0
  29. package/src/components/elements/NamiCountdownTimer.tsx +123 -0
  30. package/src/components/elements/NamiImage.tsx +177 -0
  31. package/src/components/elements/NamiPlayPauseButton.tsx +93 -0
  32. package/src/components/elements/NamiProgressBar.tsx +90 -0
  33. package/src/components/elements/NamiProgressIndicator.tsx +41 -0
  34. package/src/components/elements/NamiQRCode.tsx +51 -0
  35. package/src/components/elements/NamiRadioButton.tsx +62 -0
  36. package/src/components/elements/NamiSegmentPicker.tsx +67 -0
  37. package/src/components/elements/NamiSegmentPickerItem.tsx +184 -0
  38. package/src/components/elements/NamiSpacer.tsx +23 -0
  39. package/src/components/elements/NamiSymbol.tsx +104 -0
  40. package/src/components/elements/NamiText.tsx +311 -0
  41. package/src/components/elements/NamiToggleButton.tsx +102 -0
  42. package/src/components/elements/NamiToggleSwitch.tsx +64 -0
  43. package/src/components/elements/NamiVideo.kepler.tsx +638 -0
  44. package/src/components/elements/NamiVideo.tsx +133 -0
  45. package/src/components/elements/NamiVolumeButton.tsx +93 -0
  46. package/src/context/FocusContext.tsx +169 -0
  47. package/src/context/PaywallContext.tsx +343 -0
  48. package/src/global.d.ts +5 -0
  49. package/src/index.ts +62 -0
  50. package/src/nami.ts +24 -0
  51. package/src/react-native-qrcode-svg.d.ts +4 -0
  52. package/src/utils/actionHandler.ts +281 -0
  53. package/src/utils/fonts.ts +359 -0
  54. package/src/utils/iconMap.ts +67 -0
  55. package/src/utils/impression.ts +39 -0
  56. package/src/utils/rendering.ts +197 -0
  57. package/src/utils/smartText.ts +148 -0
  58. package/src/utils/styles.ts +668 -0
  59. package/src/utils/tvFocus.ts +31 -0
  60. package/src/utils/videoControls.ts +49 -0
@@ -0,0 +1,151 @@
1
+ import * as _namiml_sdk_core from '@namiml/sdk-core';
2
+ import { IUIAdapter, IPaywall, NamiPaywallLaunchContext, FlowNavigationOptions, PaywallHandle, IStorageAdapter, IDeviceAdapter, DevicePayload, TDevice, ScreenInfo, IPurchaseAdapter, NamiProductDetails, PurchaseContext, PurchaseResult, Nami as Nami$1, NamiPaywallEvent, NamiCampaign, NamiFlow, TPaywallContext, ISkuMenu, TimerState, NamiSKU, NamiAppSuppliedVideoDetails, TPaywallMedia, TComponent } from '@namiml/sdk-core';
3
+ export { CustomerJourneyState, IPurchaseAdapter, NamiCampaign, NamiCampaignManager, NamiConfiguration, NamiCustomerManager, NamiEntitlement, NamiEntitlementManager, NamiFlow, NamiFlowManager, NamiLanguageCodes, NamiLogLevel, NamiPaywallAction, NamiPaywallEvent, NamiPaywallLaunchContext, NamiPaywallManager, NamiProductDetails, NamiProfileManager, NamiPurchase, NamiSKU, NamiSKUType, PurchaseContext, PurchaseResult } from '@namiml/sdk-core';
4
+ import React from 'react';
5
+
6
+ type PaywallListener = (paywall: IPaywall, context: NamiPaywallLaunchContext) => void;
7
+ type ReRenderListener = () => void;
8
+ type FlowNavListener = (paywall: IPaywall, options: FlowNavigationOptions) => void;
9
+ /**
10
+ * Expo UI adapter.
11
+ * Uses a listener pattern so the Expo PaywallView component can register
12
+ * itself to receive create/reRender/flowNav events from the core SDK.
13
+ */
14
+ declare class ExpoUIAdapter implements IUIAdapter {
15
+ private paywallListener;
16
+ private reRenderListener;
17
+ private flowNavListener;
18
+ onPaywallRequested(listener: PaywallListener): () => void;
19
+ onReRenderRequested(listener: ReRenderListener): () => void;
20
+ onFlowNavigationRequested(listener: FlowNavListener): () => void;
21
+ createPaywall(type: string | undefined, value: string, context: NamiPaywallLaunchContext): PaywallHandle;
22
+ reRenderPaywall(): void;
23
+ flowNavigateToScreen(paywall: IPaywall, options: FlowNavigationOptions): void;
24
+ }
25
+
26
+ declare class ExpoStorageAdapter implements IStorageAdapter {
27
+ private db;
28
+ private memoryFallback;
29
+ constructor();
30
+ getItem(key: string): string | null;
31
+ setItem(key: string, value: string): void;
32
+ removeItem(key: string): void;
33
+ clear(): void;
34
+ getAllKeys(): string[];
35
+ }
36
+
37
+ declare class ExpoDeviceAdapter implements IDeviceAdapter {
38
+ getDeviceData(): DevicePayload;
39
+ private getExpoVersion;
40
+ getDeviceFormFactor(): TDevice;
41
+ getDeviceScaleFactor(formFactor?: string): number;
42
+ generateUUID(): string;
43
+ getScreenInfo(): ScreenInfo;
44
+ getLanguage(): string;
45
+ }
46
+
47
+ declare class ExpoPurchaseAdapter implements IPurchaseAdapter {
48
+ getProducts(skuIds: string[]): Promise<NamiProductDetails[]>;
49
+ purchase(skuId: string, context?: PurchaseContext): Promise<PurchaseResult>;
50
+ restorePurchases(): Promise<PurchaseResult[]>;
51
+ }
52
+
53
+ declare class Nami {
54
+ static get sdkVersion(): string;
55
+ static sdkPackageVersion(): string;
56
+ static configure(config: Parameters<typeof Nami$1.configure>[0]): Promise<_namiml_sdk_core.NamiConfigurationState>;
57
+ static reset(): Promise<void>;
58
+ }
59
+
60
+ interface NamiViewProps {
61
+ /** Campaign placement label */
62
+ placement?: string;
63
+ /** Campaign URL for deep-link resolution */
64
+ url?: string;
65
+ /** Called when the paywall should be dismissed */
66
+ onClose?: () => void;
67
+ /** Called when the user taps the sign-in action */
68
+ onSignIn?: () => void;
69
+ /** Called when a deep link action fires */
70
+ onDeepLink?: (url: string) => void;
71
+ /** Called when a purchase is initiated */
72
+ onPurchase?: (sku: any) => void;
73
+ /** Called when the user taps the restore purchases action */
74
+ onRestore?: () => void;
75
+ /** Catch-all callback for every paywall action event */
76
+ onPaywallEvent?: (event: NamiPaywallEvent) => void;
77
+ /** Called when a flow handoff step fires */
78
+ onHandoff?: (handoffTag: string, handoffData?: Record<string, any>) => void;
79
+ /** Called when a flow event fires */
80
+ onFlowEvent?: (event: Record<string, any>) => void;
81
+ }
82
+ declare const NamiView: React.FC<NamiViewProps>;
83
+
84
+ interface PaywallContextValue {
85
+ state: TPaywallContext;
86
+ productDetails: NamiProductDetails[];
87
+ flow?: NamiFlow;
88
+ filteredSkuMenus: ISkuMenu[];
89
+ setPaywall(paywall: IPaywall, context: NamiPaywallLaunchContext, campaign: NamiCampaign): void;
90
+ notifyFirstFocusReady(paywallId: string, page: string, formFactor?: string): void;
91
+ setCurrentPage(page: string): void;
92
+ canGoBackPage(): boolean;
93
+ goBackPage(): boolean;
94
+ setCurrentGroupData(groupId: string, groupName: string): void;
95
+ setSelectedProducts(products: Record<string, string | null>): void;
96
+ setCurrentFormId(formId: string, value?: string): void;
97
+ setFormState(formId: string, value: boolean | string): void;
98
+ setTimerState(timerId: string, remainingSeconds: number, savedAt: number, hasEmittedCompletion: boolean): void;
99
+ getTimerState(timerId: string): TimerState | undefined;
100
+ setProductDetails(details: NamiProductDetails[]): void;
101
+ setPurchaseInProgress(inProgress: boolean): void;
102
+ setPurchase(inProgress: boolean, product?: NamiSKU): void;
103
+ setCustomerAttribute(attributes: Record<string, string>): void;
104
+ removeCustomerAttribute(key: string): void;
105
+ setIsLoggedIn(isLoggedIn: boolean): void;
106
+ setAppSuppliedVideoDetails(details: NamiAppSuppliedVideoDetails): void;
107
+ resetAppSuppliedVideoDetails(): void;
108
+ setMediaList(media: TPaywallMedia[]): void;
109
+ setSafeAreaTop(top: number): void;
110
+ setFullScreenPresentation(full: boolean): void;
111
+ setFormFactor(factor: TDevice): void;
112
+ setUserInteractionEnabled(enabled: boolean): void;
113
+ setUserTags(tags: Record<string, string>): void;
114
+ setLaunchDetails(value: string, type?: string): void;
115
+ setOpenHeaderIds(id: string, sku?: NamiSKU): void;
116
+ setFlow(flow: NamiFlow): void;
117
+ setCurrentSlideIndex(index: number): void;
118
+ getPaywallActionEventData(): Partial<NamiPaywallEvent>;
119
+ getSelectedPaywall(): IPaywall | undefined;
120
+ getSelectedCampaign(): NamiCampaign | undefined;
121
+ }
122
+ declare function usePaywallContext(): PaywallContextValue;
123
+ interface PaywallProviderProps {
124
+ paywall: IPaywall;
125
+ context: NamiPaywallLaunchContext;
126
+ campaign: NamiCampaign;
127
+ flow?: NamiFlow;
128
+ onFirstFocusReady?: (paywallId: string, page: string, formFactor?: string) => void;
129
+ children: React.ReactNode;
130
+ }
131
+ declare const PaywallProvider: React.FC<PaywallProviderProps>;
132
+
133
+ interface Props$1 {
134
+ paywall: IPaywall;
135
+ onClose?: () => void;
136
+ onCommitted?: (paywall: IPaywall, pageName: string, formFactor?: string) => void;
137
+ holdInteractionUntilFocus?: boolean;
138
+ isActive?: boolean;
139
+ }
140
+ declare const PaywallScreen: React.FC<Props$1>;
141
+
142
+ interface Props {
143
+ component: TComponent;
144
+ scaleFactor?: number;
145
+ onClose?: () => void;
146
+ parentDirection?: string;
147
+ parentCrossAxisFitContent?: boolean;
148
+ }
149
+ declare const TemplateRenderer: React.FC<Props>;
150
+
151
+ export { ExpoDeviceAdapter, ExpoPurchaseAdapter, ExpoStorageAdapter, ExpoUIAdapter, Nami, NamiView, PaywallProvider, PaywallScreen, TemplateRenderer, usePaywallContext };