@onboarding-yak/react-native 0.0.0-stage → 0.6.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/LICENSE +21 -0
- package/README.md +236 -2
- package/lib/appearance.d.ts +6 -0
- package/lib/appearance.d.ts.map +1 -0
- package/lib/appearance.js +45 -0
- package/lib/appearance.js.map +1 -0
- package/lib/countries.d.ts +4 -0
- package/lib/countries.d.ts.map +1 -0
- package/lib/countries.js +28 -0
- package/lib/countries.js.map +1 -0
- package/lib/experiment.d.ts +44 -0
- package/lib/experiment.d.ts.map +1 -0
- package/lib/experiment.js +47 -0
- package/lib/experiment.js.map +1 -0
- package/lib/index.d.ts +249 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +895 -0
- package/lib/index.js.map +1 -0
- package/lib/logic.d.ts +24 -0
- package/lib/logic.d.ts.map +1 -0
- package/lib/logic.js +31 -0
- package/lib/logic.js.map +1 -0
- package/lib/pickers.d.ts +80 -0
- package/lib/pickers.d.ts.map +1 -0
- package/lib/pickers.js +180 -0
- package/lib/pickers.js.map +1 -0
- package/lib/units.d.ts +32 -0
- package/lib/units.d.ts.map +1 -0
- package/lib/units.js +37 -0
- package/lib/units.js.map +1 -0
- package/lib/variables.d.ts +52 -0
- package/lib/variables.d.ts.map +1 -0
- package/lib/variables.js +82 -0
- package/lib/variables.js.map +1 -0
- package/package.json +70 -4
- package/src/appearance.ts +41 -0
- package/src/countries.ts +28 -0
- package/src/experiment.ts +47 -0
- package/src/index.tsx +1053 -0
- package/src/logic.ts +36 -0
- package/src/pickers.tsx +253 -0
- package/src/units.ts +41 -0
- package/src/variables.ts +80 -0
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle } from 'react-native';
|
|
3
|
+
import { type DarkColors } from './appearance';
|
|
4
|
+
import type { UnitOption } from './units';
|
|
5
|
+
import { type MultipleChoice, type ScreenCondition } from './logic';
|
|
6
|
+
import { type VariableFormat, type VariableValue } from './variables';
|
|
7
|
+
import { type FlowTest, type ScreenExperiment } from './experiment';
|
|
8
|
+
export type { VariableValue } from './variables';
|
|
9
|
+
export type EdgeInsets = {
|
|
10
|
+
top?: number;
|
|
11
|
+
right?: number;
|
|
12
|
+
bottom?: number;
|
|
13
|
+
left?: number;
|
|
14
|
+
};
|
|
15
|
+
export type AxisInsets = {
|
|
16
|
+
vertical?: number;
|
|
17
|
+
horizontal?: number;
|
|
18
|
+
};
|
|
19
|
+
export type ScreenTheme = {
|
|
20
|
+
background?: string;
|
|
21
|
+
showImage?: boolean;
|
|
22
|
+
showProgress?: boolean;
|
|
23
|
+
showTitle?: boolean;
|
|
24
|
+
showSubtitle?: boolean;
|
|
25
|
+
showButton?: boolean;
|
|
26
|
+
showSkip?: boolean;
|
|
27
|
+
showBack?: boolean;
|
|
28
|
+
showTerms?: boolean;
|
|
29
|
+
showLoader?: boolean;
|
|
30
|
+
showChecklist?: boolean;
|
|
31
|
+
showCharts?: boolean;
|
|
32
|
+
showProof?: boolean;
|
|
33
|
+
gap?: number;
|
|
34
|
+
margin?: number | AxisInsets;
|
|
35
|
+
headerPadding?: number | EdgeInsets;
|
|
36
|
+
bodyPadding?: number | EdgeInsets;
|
|
37
|
+
footerPadding?: number | EdgeInsets;
|
|
38
|
+
headerMargin?: AxisInsets;
|
|
39
|
+
bodyMargin?: AxisInsets;
|
|
40
|
+
footerMargin?: AxisInsets;
|
|
41
|
+
align?: 'left' | 'center' | 'right';
|
|
42
|
+
text?: string;
|
|
43
|
+
muted?: string;
|
|
44
|
+
primary?: string;
|
|
45
|
+
buttonPadding?: number | EdgeInsets;
|
|
46
|
+
buttonRadius?: number;
|
|
47
|
+
cardPadding?: number | EdgeInsets;
|
|
48
|
+
cardRadius?: number;
|
|
49
|
+
cardBackground?: string;
|
|
50
|
+
imageFit?: 'cover' | 'contain' | 'fill';
|
|
51
|
+
imageWidthMode?: 'fill' | 'fixed';
|
|
52
|
+
imageHeightMode?: 'fill' | 'fixed';
|
|
53
|
+
imageWidth?: number;
|
|
54
|
+
imageHeight?: number;
|
|
55
|
+
imageRadius?: number;
|
|
56
|
+
imagePadding?: number | EdgeInsets;
|
|
57
|
+
imageMargin?: AxisInsets;
|
|
58
|
+
imageBorderWidth?: number;
|
|
59
|
+
imageBorderColor?: string;
|
|
60
|
+
/** 'background' fills the screen behind the content, under a tinted overlay. */
|
|
61
|
+
imagePlacement?: 'inline' | 'background';
|
|
62
|
+
/** Shows an inline image or video inside a phone mockup. */
|
|
63
|
+
imageFrame?: 'none' | 'iphone' | 'android';
|
|
64
|
+
overlayColor?: string;
|
|
65
|
+
overlayOpacity?: number;
|
|
66
|
+
overlayStyle?: 'solid' | 'gradient';
|
|
67
|
+
/** Dark-mode color overrides; anything left out is derived from the light colors. */
|
|
68
|
+
dark?: DarkColors;
|
|
69
|
+
/** Order of parts in the header and body. Missing parts fall back to their default section. */
|
|
70
|
+
arrangement?: {
|
|
71
|
+
header: LayoutPart[];
|
|
72
|
+
body: LayoutPart[];
|
|
73
|
+
};
|
|
74
|
+
/** Which zone each section sits in. Defaults: header top, footer bottom, body bottom on full-photo screens and top otherwise. */
|
|
75
|
+
headerAlign?: SectionAlign;
|
|
76
|
+
bodyAlign?: SectionAlign;
|
|
77
|
+
footerAlign?: SectionAlign;
|
|
78
|
+
progress?: 'above' | 'below';
|
|
79
|
+
progressStyle?: 'segments' | 'bar' | 'dots';
|
|
80
|
+
skipLabel?: string;
|
|
81
|
+
backLabel?: string;
|
|
82
|
+
termsLabel?: string;
|
|
83
|
+
termsUrl?: string;
|
|
84
|
+
font?: string;
|
|
85
|
+
bodyFont?: string;
|
|
86
|
+
titleSize?: number;
|
|
87
|
+
bodySize?: number;
|
|
88
|
+
titleWeight?: 400 | 500 | 700;
|
|
89
|
+
motion?: Partial<Record<MotionPart, PartMotion>>;
|
|
90
|
+
};
|
|
91
|
+
export type MotionPart = 'image' | 'progress' | 'title' | 'subtitle' | 'answers' | 'cards' | 'button' | 'skip' | 'back' | 'terms';
|
|
92
|
+
export type PartMotion = {
|
|
93
|
+
enter: 'fade' | 'rise' | 'slide' | 'pop';
|
|
94
|
+
duration?: number;
|
|
95
|
+
delay?: number;
|
|
96
|
+
};
|
|
97
|
+
export type ScreenChart = {
|
|
98
|
+
id: string;
|
|
99
|
+
kind: 'bar' | 'line' | 'donut';
|
|
100
|
+
title: string;
|
|
101
|
+
points: {
|
|
102
|
+
label: string;
|
|
103
|
+
value: number;
|
|
104
|
+
}[];
|
|
105
|
+
hidden?: boolean;
|
|
106
|
+
motion?: PartMotion;
|
|
107
|
+
};
|
|
108
|
+
export type LayoutPart = 'back' | 'progress' | 'image' | 'loader' | 'title' | 'subtitle' | 'answers' | 'proof' | 'checklist' | 'charts';
|
|
109
|
+
/** Every action except next and complete reaches onAction so the app can make the native request. */
|
|
110
|
+
export type ScreenAction = 'next' | 'complete' | 'requestNotifications' | 'showPaywall' | 'requestTracking' | 'requestLocation' | 'requestCamera' | 'requestPhotos' | 'requestMicrophone' | 'requestContacts' | 'requestHealth' | 'requestBiometrics' | 'requestReview' | 'signUp' | `custom:${string}`;
|
|
111
|
+
/** What onAction returns: nothing or true moves on, false keeps the person on the screen. A Promise makes the flow wait for it. */
|
|
112
|
+
export type ActionResult = void | boolean;
|
|
113
|
+
export type Testimonial = {
|
|
114
|
+
quote: string;
|
|
115
|
+
author: string;
|
|
116
|
+
detail?: string;
|
|
117
|
+
stars?: number;
|
|
118
|
+
};
|
|
119
|
+
export type Appearance = 'light' | 'dark' | 'system';
|
|
120
|
+
export type SectionAlign = 'top' | 'center' | 'bottom';
|
|
121
|
+
export type FlowScreen = {
|
|
122
|
+
id: string;
|
|
123
|
+
kind: 'Welcome' | 'Question' | 'Feature' | 'Permission' | 'Paywall';
|
|
124
|
+
title: string;
|
|
125
|
+
subtitle: string;
|
|
126
|
+
button: string;
|
|
127
|
+
accent: string;
|
|
128
|
+
answerType?: 'text' | 'singleChoice';
|
|
129
|
+
options?: string[];
|
|
130
|
+
/** Choice questions: allow several picks. The answer joins them with ", ". */
|
|
131
|
+
multiple?: MultipleChoice;
|
|
132
|
+
/** Saves this answer under a name later copy can use as {name} or {name|fallback}. */
|
|
133
|
+
variable?: string;
|
|
134
|
+
/** How the saved answer is shown when recalled: a currency for money, a style for dates. */
|
|
135
|
+
variableFormat?: VariableFormat;
|
|
136
|
+
/** Show this screen only when an earlier choice question's answer matches. */
|
|
137
|
+
showIf?: ScreenCondition;
|
|
138
|
+
/** Optional emoji aligned with `options`. Missing or blank means that choice is text only. */
|
|
139
|
+
optionIcons?: string[];
|
|
140
|
+
/** Entry hints for written answers, e.g. a number with a unit. */
|
|
141
|
+
/** Entry for written answers. Wheel: min/max/step/initial. Date: min/max are years; the answer is YYYY-MM-DD. Country: the answer is the English name. */
|
|
142
|
+
input?: {
|
|
143
|
+
format: 'text' | 'number' | 'wheel' | 'date' | 'country';
|
|
144
|
+
unit?: string;
|
|
145
|
+
placeholder?: string;
|
|
146
|
+
min?: number;
|
|
147
|
+
max?: number;
|
|
148
|
+
step?: number;
|
|
149
|
+
initial?: number; /** Other units people can switch to; answers stay in the base unit. */
|
|
150
|
+
units?: UnitOption[];
|
|
151
|
+
};
|
|
152
|
+
/** A "preparing your plan" moment: a ring fills while each step is checked off. */
|
|
153
|
+
loader?: {
|
|
154
|
+
steps: string[];
|
|
155
|
+
duration?: number;
|
|
156
|
+
autoAdvance?: boolean;
|
|
157
|
+
color?: string;
|
|
158
|
+
trackColor?: string;
|
|
159
|
+
textColor?: string;
|
|
160
|
+
};
|
|
161
|
+
/** Benefits shown with check marks. */
|
|
162
|
+
checklist?: {
|
|
163
|
+
items: string[];
|
|
164
|
+
color?: string;
|
|
165
|
+
textColor?: string;
|
|
166
|
+
};
|
|
167
|
+
/** Two or more images shown as an auto-advancing carousel; `illustration` mirrors the first. */
|
|
168
|
+
carousel?: {
|
|
169
|
+
images: string[];
|
|
170
|
+
interval?: number;
|
|
171
|
+
autoplay?: boolean;
|
|
172
|
+
};
|
|
173
|
+
illustration?: string;
|
|
174
|
+
action?: ScreenAction;
|
|
175
|
+
/** Social proof: a star rating, short testimonials, and a stat line. */
|
|
176
|
+
proof?: {
|
|
177
|
+
rating?: {
|
|
178
|
+
score: number;
|
|
179
|
+
count?: string;
|
|
180
|
+
label?: string;
|
|
181
|
+
};
|
|
182
|
+
testimonials?: Testimonial[];
|
|
183
|
+
stat?: string;
|
|
184
|
+
};
|
|
185
|
+
/** A/B test: other versions of this screen's copy or image. Each session sees one version for the whole flow. */
|
|
186
|
+
experiment?: ScreenExperiment;
|
|
187
|
+
buttonStyle?: 'filled' | 'outline' | 'text';
|
|
188
|
+
theme?: ScreenTheme;
|
|
189
|
+
translations?: Record<string, ScreenCopy>;
|
|
190
|
+
charts?: ScreenChart[];
|
|
191
|
+
};
|
|
192
|
+
export type ScreenCopy = {
|
|
193
|
+
title?: string;
|
|
194
|
+
subtitle?: string;
|
|
195
|
+
button?: string;
|
|
196
|
+
options?: string[];
|
|
197
|
+
skipLabel?: string;
|
|
198
|
+
backLabel?: string;
|
|
199
|
+
termsLabel?: string;
|
|
200
|
+
};
|
|
201
|
+
export type OnboardingFlow = {
|
|
202
|
+
schemaVersion: 1;
|
|
203
|
+
id: string;
|
|
204
|
+
version: number;
|
|
205
|
+
updatedAt: string;
|
|
206
|
+
appearance?: Appearance; /** For the {app_name} variable. */
|
|
207
|
+
appName?: string;
|
|
208
|
+
screens: FlowScreen[]; /** A whole-onboarding A/B test; `screens` is version A. */
|
|
209
|
+
experiment?: FlowTest<FlowScreen>;
|
|
210
|
+
};
|
|
211
|
+
type Props = {
|
|
212
|
+
flowId: string;
|
|
213
|
+
/** The app's publishable key (`oy_pub_…`) from the studio. It's meant to ship inside the app, so it can live in source code. */
|
|
214
|
+
apiKey: string;
|
|
215
|
+
baseUrl: string;
|
|
216
|
+
fallbackFlow: OnboardingFlow;
|
|
217
|
+
/** Locale key for translated screen copy, e.g. `fr-CA` or `es`. */
|
|
218
|
+
locale?: string;
|
|
219
|
+
/** `details.variables` holds every saved answer as a typed value (raw value, unit or currency, and the text shown), keyed by variable name. */
|
|
220
|
+
onComplete?: (answers: Record<string, string>, details: {
|
|
221
|
+
variables: Record<string, VariableValue>;
|
|
222
|
+
}) => void;
|
|
223
|
+
/** `values` lists every pick for multiple-choice questions, or the single answer otherwise. */
|
|
224
|
+
onAnswer?: (screen: FlowScreen, answer: string, values: string[], variable?: VariableValue) => void;
|
|
225
|
+
/**
|
|
226
|
+
* Runs for every action except next and complete. Return a Promise to make the flow wait (the button shows a spinner):
|
|
227
|
+
* resolving to false, or rejecting, keeps the person on the screen. `details` holds the answers so far, e.g. to save them to a new account.
|
|
228
|
+
*/
|
|
229
|
+
onAction?: (action: NonNullable<FlowScreen['action']>, screen: FlowScreen, details: {
|
|
230
|
+
answers: Record<string, string>;
|
|
231
|
+
variables: Record<string, VariableValue>;
|
|
232
|
+
}) => ActionResult | Promise<ActionResult>;
|
|
233
|
+
/** Overrides the flow's appearance. 'system' follows the device setting. */
|
|
234
|
+
appearance?: Appearance;
|
|
235
|
+
/** Saves progress on the device so a person who leaves the app (e.g. to sign up in a browser) comes back to the same screen. Defaults to true. */
|
|
236
|
+
resume?: boolean;
|
|
237
|
+
/**
|
|
238
|
+
* Draws the videos a flow can use in place of images, e.g. with expo-video. It should fill `style`, loop, and stay muted.
|
|
239
|
+
* Without it, a video slot shows the screen's illustration color.
|
|
240
|
+
*/
|
|
241
|
+
renderVideo?: (video: OnboardingVideo) => React.ReactNode;
|
|
242
|
+
};
|
|
243
|
+
export type OnboardingVideo = {
|
|
244
|
+
uri: string;
|
|
245
|
+
resizeMode: 'cover' | 'contain' | 'stretch';
|
|
246
|
+
style: StyleProp<ViewStyle>;
|
|
247
|
+
};
|
|
248
|
+
export declare function Onboarding({ flowId, apiKey, baseUrl, fallbackFlow, locale, onComplete, onAction, onAnswer, appearance, resume, renderVideo }: Props): React.JSX.Element;
|
|
249
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|