@rocapine/react-native-onboarding 1.0.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/README.md +216 -0
- package/dist/OnboardingStudioClient.d.ts +13 -0
- package/dist/OnboardingStudioClient.d.ts.map +1 -0
- package/dist/OnboardingStudioClient.js +71 -0
- package/dist/OnboardingStudioClient.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/infra/hooks/index.d.ts +3 -0
- package/dist/infra/hooks/index.d.ts.map +1 -0
- package/dist/infra/hooks/index.js +8 -0
- package/dist/infra/hooks/index.js.map +1 -0
- package/dist/infra/hooks/useOnboarding.d.ts +6 -0
- package/dist/infra/hooks/useOnboarding.d.ts.map +1 -0
- package/dist/infra/hooks/useOnboarding.js +17 -0
- package/dist/infra/hooks/useOnboarding.js.map +1 -0
- package/dist/infra/hooks/useOnboarding.old.d.ts +7 -0
- package/dist/infra/hooks/useOnboarding.old.d.ts.map +1 -0
- package/dist/infra/hooks/useOnboarding.old.js +20 -0
- package/dist/infra/hooks/useOnboarding.old.js.map +1 -0
- package/dist/infra/hooks/useOnboardingStep.d.ts +12 -0
- package/dist/infra/hooks/useOnboardingStep.d.ts.map +1 -0
- package/dist/infra/hooks/useOnboardingStep.js +37 -0
- package/dist/infra/hooks/useOnboardingStep.js.map +1 -0
- package/dist/infra/hooks/useOnboardingStep.old.d.ts +12 -0
- package/dist/infra/hooks/useOnboardingStep.old.d.ts.map +1 -0
- package/dist/infra/hooks/useOnboardingStep.old.js +37 -0
- package/dist/infra/hooks/useOnboardingStep.old.js.map +1 -0
- package/dist/infra/index.d.ts +3 -0
- package/dist/infra/index.d.ts.map +1 -0
- package/dist/infra/index.js +19 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/infra/provider/OnboardingProvider.d.ts +29 -0
- package/dist/infra/provider/OnboardingProvider.d.ts.map +1 -0
- package/dist/infra/provider/OnboardingProvider.js +48 -0
- package/dist/infra/provider/OnboardingProvider.js.map +1 -0
- package/dist/infra/provider/OnboardingProvider.old.d.ts +61 -0
- package/dist/infra/provider/OnboardingProvider.old.d.ts.map +1 -0
- package/dist/infra/provider/OnboardingProvider.old.js +55 -0
- package/dist/infra/provider/OnboardingProvider.old.js.map +1 -0
- package/dist/infra/provider/index.d.ts +2 -0
- package/dist/infra/provider/index.d.ts.map +1 -0
- package/dist/infra/provider/index.js +7 -0
- package/dist/infra/provider/index.js.map +1 -0
- package/dist/infra/queries/getOnboarding.query.d.ts +8 -0
- package/dist/infra/queries/getOnboarding.query.d.ts.map +1 -0
- package/dist/infra/queries/getOnboarding.query.js +52 -0
- package/dist/infra/queries/getOnboarding.query.js.map +1 -0
- package/dist/steps/Carousel/types.d.ts +32 -0
- package/dist/steps/Carousel/types.d.ts.map +1 -0
- package/dist/steps/Carousel/types.js +24 -0
- package/dist/steps/Carousel/types.js.map +1 -0
- package/dist/steps/Commitment/types.d.ts +41 -0
- package/dist/steps/Commitment/types.d.ts.map +1 -0
- package/dist/steps/Commitment/types.js +27 -0
- package/dist/steps/Commitment/types.js.map +1 -0
- package/dist/steps/Loader/types.d.ts +57 -0
- package/dist/steps/Loader/types.d.ts.map +1 -0
- package/dist/steps/Loader/types.js +30 -0
- package/dist/steps/Loader/types.js.map +1 -0
- package/dist/steps/MediaContent/types.d.ts +44 -0
- package/dist/steps/MediaContent/types.d.ts.map +1 -0
- package/dist/steps/MediaContent/types.js +22 -0
- package/dist/steps/MediaContent/types.js.map +1 -0
- package/dist/steps/Picker/types.d.ts +49 -0
- package/dist/steps/Picker/types.d.ts.map +1 -0
- package/dist/steps/Picker/types.js +30 -0
- package/dist/steps/Picker/types.js.map +1 -0
- package/dist/steps/Question/types.d.ts +47 -0
- package/dist/steps/Question/types.d.ts.map +1 -0
- package/dist/steps/Question/types.js +28 -0
- package/dist/steps/Question/types.js.map +1 -0
- package/dist/steps/Ratings/types.d.ts +32 -0
- package/dist/steps/Ratings/types.d.ts.map +1 -0
- package/dist/steps/Ratings/types.js +25 -0
- package/dist/steps/Ratings/types.js.map +1 -0
- package/dist/steps/common.types.d.ts +19 -0
- package/dist/steps/common.types.d.ts.map +1 -0
- package/dist/steps/common.types.js +25 -0
- package/dist/steps/common.types.js.map +1 -0
- package/dist/steps/types.d.ts +9 -0
- package/dist/steps/types.d.ts.map +1 -0
- package/dist/steps/types.js +3 -0
- package/dist/steps/types.js.map +1 -0
- package/dist/types.d.ts +46 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
- package/src/OnboardingStudioClient.ts +92 -0
- package/src/global.d.ts +41 -0
- package/src/index.ts +6 -0
- package/src/infra/hooks/index.ts +2 -0
- package/src/infra/hooks/useOnboarding.ts +16 -0
- package/src/infra/hooks/useOnboardingStep.ts +66 -0
- package/src/infra/index.ts +2 -0
- package/src/infra/provider/OnboardingProvider.tsx +80 -0
- package/src/infra/provider/index.ts +4 -0
- package/src/infra/queries/getOnboarding.query.ts +58 -0
- package/src/steps/Carousel/types.ts +26 -0
- package/src/steps/Commitment/types.ts +28 -0
- package/src/steps/Loader/types.ts +32 -0
- package/src/steps/MediaContent/types.ts +26 -0
- package/src/steps/Picker/types.ts +34 -0
- package/src/steps/Question/types.ts +29 -0
- package/src/steps/Ratings/types.ts +22 -0
- package/src/steps/common.types.ts +25 -0
- package/src/steps/types.ts +16 -0
- package/src/types.ts +51 -0
package/README.md
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# @rocapine/react-native-onboarding-studio
|
|
2
|
+
|
|
3
|
+
**A CMS-driven onboarding system for React Native mobile apps.**
|
|
4
|
+
|
|
5
|
+
Build beautiful, customizable onboarding flows that update instantly without app releases.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ✨ Features
|
|
10
|
+
|
|
11
|
+
- 🎨 **Pre-built Components** - Ready-to-use screens (ratings, pickers, carousels, media content, and more)
|
|
12
|
+
- 🔄 **CMS-Driven** - Update onboarding flows remotely without app releases
|
|
13
|
+
- 📱 **React Native** - Works with Expo and bare React Native projects
|
|
14
|
+
- 🎯 **Type-Safe** - Full TypeScript support with runtime validation
|
|
15
|
+
- 💾 **Offline Support** - Built-in caching with AsyncStorage
|
|
16
|
+
- 🎭 **Themeable** - Customizable colors, typography, and styling
|
|
17
|
+
- 🔧 **Extensible** - Three levels of customization from theme tokens to complete renderer overrides
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🚀 Quick Start
|
|
22
|
+
|
|
23
|
+
### Installation
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm install @rocapine/react-native-onboarding-studio
|
|
27
|
+
npx expo install expo-router
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Setup
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import {
|
|
34
|
+
OnboardingProvider,
|
|
35
|
+
OnboardingStudioClient,
|
|
36
|
+
ProgressBar,
|
|
37
|
+
} from "@rocapine/react-native-onboarding-studio";
|
|
38
|
+
|
|
39
|
+
const client = new OnboardingStudioClient("your-project-id", {
|
|
40
|
+
appVersion: "1.0.0",
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
export default function RootLayout() {
|
|
44
|
+
return (
|
|
45
|
+
<OnboardingProvider
|
|
46
|
+
client={client}
|
|
47
|
+
locale="en"
|
|
48
|
+
customAudienceParams={{ onboardingId: "your-onboarding-id" }}
|
|
49
|
+
>
|
|
50
|
+
<ProgressBar />
|
|
51
|
+
<YourApp />
|
|
52
|
+
</OnboardingProvider>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Use in Your Screens
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import {
|
|
61
|
+
useOnboardingQuestions,
|
|
62
|
+
OnboardingPage,
|
|
63
|
+
} from "@rocapine/react-native-onboarding-studio";
|
|
64
|
+
|
|
65
|
+
export default function OnboardingScreen() {
|
|
66
|
+
const { step, isLastStep } = useOnboardingQuestions({ stepNumber: 1 });
|
|
67
|
+
|
|
68
|
+
const handleContinue = () => {
|
|
69
|
+
if (isLastStep) {
|
|
70
|
+
router.push("/home");
|
|
71
|
+
} else {
|
|
72
|
+
router.push(`/onboarding/${stepNumber + 1}`);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
return <OnboardingPage step={step} onContinue={handleContinue} />;
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
That's it! 🎉
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## 📚 Documentation
|
|
85
|
+
|
|
86
|
+
### For SDK Users
|
|
87
|
+
|
|
88
|
+
Complete documentation for using the SDK in your app:
|
|
89
|
+
|
|
90
|
+
- **[Getting Started](./docs/getting-started.mdx)** - Installation, setup, and your first onboarding flow
|
|
91
|
+
- **[Core Concepts](./docs/core-concepts.mdx)** - How the SDK works, caching, progress tracking
|
|
92
|
+
- **[API Reference](./docs/api-reference.mdx)** - Complete API documentation
|
|
93
|
+
- **[Page Types](./docs/page-types.mdx)** - Available page types and their features
|
|
94
|
+
|
|
95
|
+
### Customization
|
|
96
|
+
|
|
97
|
+
Learn how to customize your onboarding experience:
|
|
98
|
+
|
|
99
|
+
- **[Customization Overview](./docs/customization/intro.mdx)** - Choose your customization level
|
|
100
|
+
- **[Level 1: Theming](./docs/customization/theming.mdx)** - Colors, typography, and semantic styles
|
|
101
|
+
- **[Level 2: Custom Components](./docs/customization/custom-components.mdx)** - Replace specific UI components
|
|
102
|
+
- **[Level 3: Custom Renderers](./docs/customization/custom-renderers.mdx)** - Complete screen control
|
|
103
|
+
|
|
104
|
+
### Support
|
|
105
|
+
|
|
106
|
+
- **[Troubleshooting](./docs/troubleshooting.mdx)** - Common issues and solutions
|
|
107
|
+
|
|
108
|
+
### For Contributors
|
|
109
|
+
|
|
110
|
+
Want to contribute to the SDK?
|
|
111
|
+
|
|
112
|
+
- **[Contributing Guide](./CONTRIBUTING.md)** - Development setup, architecture, and contribution guidelines
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## 🎭 Customization Levels
|
|
117
|
+
|
|
118
|
+
### Level 1: Theming
|
|
119
|
+
|
|
120
|
+
Customize colors, typography, and semantic styles:
|
|
121
|
+
|
|
122
|
+
```typescript
|
|
123
|
+
<OnboardingProvider
|
|
124
|
+
theme={{
|
|
125
|
+
colors: { primary: "#FF5733" },
|
|
126
|
+
typography: { fontFamily: { title: "CustomFont-Bold" } },
|
|
127
|
+
}}
|
|
128
|
+
/>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Level 2: Custom Components
|
|
132
|
+
|
|
133
|
+
Replace specific UI components:
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
<OnboardingProvider
|
|
137
|
+
customComponents={{
|
|
138
|
+
QuestionAnswerButton: CustomButton,
|
|
139
|
+
QuestionAnswersList: AnimatedList,
|
|
140
|
+
}}
|
|
141
|
+
/>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Level 3: Custom Renderers
|
|
145
|
+
|
|
146
|
+
Complete control over entire screens:
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
export default function OnboardingScreen() {
|
|
150
|
+
const { step } = useOnboardingQuestions({ stepNumber });
|
|
151
|
+
|
|
152
|
+
if (step.id === "custom-screen") {
|
|
153
|
+
return <CustomRenderer step={step} onContinue={handleContinue} />;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
return <OnboardingPage step={step} onContinue={handleContinue} />;
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🎨 Available Page Types
|
|
163
|
+
|
|
164
|
+
- **Question** - Interactive questions with single or multiple choice answers
|
|
165
|
+
- **MediaContent** - Display images or videos with title and description
|
|
166
|
+
- **Carousel** - Multi-slide horizontal pagination with page indicators
|
|
167
|
+
- **Picker** - Type-specific input pickers for structured data
|
|
168
|
+
- **Loader** - Sequential progress animation with optional carousel
|
|
169
|
+
- **Ratings** - App store rating prompts with social proof
|
|
170
|
+
- **Commitment** - User commitment and agreement screens
|
|
171
|
+
|
|
172
|
+
[Learn more about page types →](./docs/page-types.mdx)
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 📦 Optional Dependencies
|
|
177
|
+
|
|
178
|
+
Install these only if you're using the specific screen types:
|
|
179
|
+
|
|
180
|
+
| Screen Type | Package | Install Command |
|
|
181
|
+
| -------------------------- | ----------------------------- | ---------------------------------------------- |
|
|
182
|
+
| **Picker** | `@react-native-picker/picker` | `npx expo install @react-native-picker/picker` |
|
|
183
|
+
| **Ratings** | `expo-store-review` | `npx expo install expo-store-review` |
|
|
184
|
+
| **Commitment** (signature) | `@shopify/react-native-skia` | `npx expo install @shopify/react-native-skia` |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## 💡 Example Project
|
|
189
|
+
|
|
190
|
+
Check out the `example/` directory for a complete working example:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
cd example/
|
|
194
|
+
npm install
|
|
195
|
+
npm start
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 🤝 Contributing
|
|
201
|
+
|
|
202
|
+
We welcome contributions! Please see our [Contributing Guide](./CONTRIBUTING.md) for details.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 📧 Support
|
|
207
|
+
|
|
208
|
+
- **Email:** support@rocapine.com
|
|
209
|
+
- **Issues:** [GitHub Issues](https://github.com/rocapine/react-native-onboarding-studio/issues)
|
|
210
|
+
- **Documentation:** [Rocapine Docs](https://docs.rocapine.com)
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 📄 License
|
|
215
|
+
|
|
216
|
+
MIT © [Rocapine](https://rocapine.com)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OnboardingStepType } from "./steps/types";
|
|
2
|
+
import { Onboarding, GetStepsResponseHeaders, OnboardingOptions, OnboardingStudioClientOptions, UserDefinedParams, BaseStepType } from "./types";
|
|
3
|
+
export declare class OnboardingStudioClient {
|
|
4
|
+
private baseUrl;
|
|
5
|
+
projectId: string;
|
|
6
|
+
options: OnboardingStudioClientOptions;
|
|
7
|
+
constructor(projectId: string, options: OnboardingStudioClientOptions);
|
|
8
|
+
getSteps<StepType extends BaseStepType = OnboardingStepType>(onboardingOptions?: OnboardingOptions, userDefinedParams?: UserDefinedParams): Promise<{
|
|
9
|
+
data: Onboarding<StepType>;
|
|
10
|
+
headers: GetStepsResponseHeaders;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=OnboardingStudioClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingStudioClient.d.ts","sourceRoot":"","sources":["../src/OnboardingStudioClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,EACjB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,6BAA6B,CAAC;gBAElC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,6BAA6B;IAS/D,QAAQ,CAAC,QAAQ,SAAS,YAAY,GAAG,kBAAkB,EAC/D,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,OAAO,CAAC;QAAE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAC,OAAO,EAAE,uBAAuB,CAAA;KAAE,CAAC;CA8D7E"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnboardingStudioClient = void 0;
|
|
4
|
+
const react_native_1 = require("react-native");
|
|
5
|
+
class OnboardingStudioClient {
|
|
6
|
+
constructor(projectId, options) {
|
|
7
|
+
console.info("OnboardingStudioClient init: projectId ", projectId);
|
|
8
|
+
this.projectId = projectId;
|
|
9
|
+
this.options = options;
|
|
10
|
+
this.baseUrl =
|
|
11
|
+
options.baseUrl ||
|
|
12
|
+
"https://takbcvjljqialzqyksic.supabase.co/functions/v1";
|
|
13
|
+
}
|
|
14
|
+
async getSteps(onboardingOptions, userDefinedParams) {
|
|
15
|
+
console.info("OnboardingStudioClient getSteps");
|
|
16
|
+
const isSandbox = this.options.isSandbox;
|
|
17
|
+
const urlParams = new URLSearchParams();
|
|
18
|
+
// Add userDefinedParams to URL
|
|
19
|
+
if (userDefinedParams) {
|
|
20
|
+
Object.entries(userDefinedParams).forEach(([key, value]) => {
|
|
21
|
+
urlParams.append(key, value);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
urlParams.append("projectId", this.projectId);
|
|
25
|
+
urlParams.append("platform", react_native_1.Platform.OS);
|
|
26
|
+
const appVersion = this.options.appVersion; // TODO get the version from the expo app
|
|
27
|
+
if (appVersion) {
|
|
28
|
+
urlParams.append("appVersion", appVersion);
|
|
29
|
+
}
|
|
30
|
+
if (isSandbox) {
|
|
31
|
+
urlParams.append("draft", "true");
|
|
32
|
+
}
|
|
33
|
+
// Add onboardingOptions to URL
|
|
34
|
+
if (onboardingOptions === null || onboardingOptions === void 0 ? void 0 : onboardingOptions.locale) {
|
|
35
|
+
urlParams.append("locale", onboardingOptions.locale);
|
|
36
|
+
}
|
|
37
|
+
const url = `${this.baseUrl}/get-onboarding-steps?${urlParams.toString()}`;
|
|
38
|
+
console.info("OnboardingStudioClient getSteps url", url);
|
|
39
|
+
try {
|
|
40
|
+
const response = await fetch(url);
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`Failed to fetch onboarding steps: ${response.status} ${response.statusText}`);
|
|
43
|
+
}
|
|
44
|
+
const data = await response.json();
|
|
45
|
+
return {
|
|
46
|
+
data,
|
|
47
|
+
headers: {
|
|
48
|
+
"ONBS-Onboarding-Id": response.headers.get("ONBS-Onboarding-Id"),
|
|
49
|
+
"ONBS-Audience-Id": response.headers.get("ONBS-Audience-Id"),
|
|
50
|
+
"ONBS-Onboarding-Name": response.headers.get("ONBS-Onboarding-Name"),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.error(error);
|
|
56
|
+
if (this.options.fallbackOnboarding) {
|
|
57
|
+
return {
|
|
58
|
+
data: this.options.fallbackOnboarding,
|
|
59
|
+
headers: {
|
|
60
|
+
"ONBS-Onboarding-Id": "fallback",
|
|
61
|
+
"ONBS-Audience-Id": "fallback",
|
|
62
|
+
"ONBS-Onboarding-Name": "fallback",
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.OnboardingStudioClient = OnboardingStudioClient;
|
|
71
|
+
//# sourceMappingURL=OnboardingStudioClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingStudioClient.js","sourceRoot":"","sources":["../src/OnboardingStudioClient.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,cAAc,SAAS,CAAC;AAGxB,cAAc,SAAS,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.OnboardingStudioClient = void 0;
|
|
18
|
+
// Core client and types
|
|
19
|
+
var OnboardingStudioClient_1 = require("./OnboardingStudioClient");
|
|
20
|
+
Object.defineProperty(exports, "OnboardingStudioClient", { enumerable: true, get: function () { return OnboardingStudioClient_1.OnboardingStudioClient; } });
|
|
21
|
+
__exportStar(require("./types"), exports);
|
|
22
|
+
// Hooks and providers
|
|
23
|
+
__exportStar(require("./infra"), exports);
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,wBAAwB;AACxB,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,0CAAwB;AAExB,sBAAsB;AACtB,0CAAwB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infra/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOnboarding = exports.useOnboardingStep = void 0;
|
|
4
|
+
var useOnboardingStep_1 = require("./useOnboardingStep");
|
|
5
|
+
Object.defineProperty(exports, "useOnboardingStep", { enumerable: true, get: function () { return useOnboardingStep_1.useOnboardingStep; } });
|
|
6
|
+
var useOnboarding_1 = require("./useOnboarding");
|
|
7
|
+
Object.defineProperty(exports, "useOnboarding", { enumerable: true, get: function () { return useOnboarding_1.useOnboarding; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infra/hooks/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboarding.d.ts","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboarding.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;;;;CAYzB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOnboarding = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const OnboardingProvider_1 = require("../provider/OnboardingProvider");
|
|
6
|
+
const useOnboarding = () => {
|
|
7
|
+
const { activeStep, totalSteps, onboarding } = (0, react_1.useContext)(OnboardingProvider_1.OnboardingProgressContext);
|
|
8
|
+
const progressPercentage = totalSteps > 0 ? Math.round((100 * activeStep.number) / totalSteps) : 0;
|
|
9
|
+
const isProgressBarVisible = activeStep.displayProgressHeader;
|
|
10
|
+
return {
|
|
11
|
+
progressPercentage,
|
|
12
|
+
isProgressBarVisible,
|
|
13
|
+
onboarding,
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
exports.useOnboarding = useOnboarding;
|
|
17
|
+
//# sourceMappingURL=useOnboarding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboarding.js","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboarding.ts"],"names":[],"mappings":";;;AAAA,iCAAmC;AACnC,uEAA2E;AAEpE,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EACvD,8CAAyB,CAC1B,CAAC;IACF,MAAM,kBAAkB,GACtB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,oBAAoB,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAC9D,OAAO;QACL,kBAAkB;QAClB,oBAAoB;QACpB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboarding.old.d.ts","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboarding.old.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa;;;;;CAczB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOnboarding = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const UI_1 = require("../../UI");
|
|
6
|
+
const OnboardingProvider_1 = require("../provider/OnboardingProvider");
|
|
7
|
+
const useOnboarding = () => {
|
|
8
|
+
const { activeStep, totalSteps, onboarding } = (0, react_1.useContext)(OnboardingProvider_1.OnboardingProgressContext);
|
|
9
|
+
const progressPercentage = totalSteps > 0 ? Math.round((100 * activeStep.number) / totalSteps) : 0;
|
|
10
|
+
const { theme } = (0, UI_1.useTheme)();
|
|
11
|
+
const isProgressBarVisible = activeStep.displayProgressHeader;
|
|
12
|
+
return {
|
|
13
|
+
progressPercentage,
|
|
14
|
+
theme,
|
|
15
|
+
isProgressBarVisible,
|
|
16
|
+
onboarding,
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
exports.useOnboarding = useOnboarding;
|
|
20
|
+
//# sourceMappingURL=useOnboarding.old.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboarding.old.js","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboarding.old.ts"],"names":[],"mappings":";;;AAAA,iCAAmC;AACnC,iCAAoC;AACpC,uEAA2E;AAEpE,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,IAAA,kBAAU,EACvD,8CAAyB,CAC1B,CAAC;IACF,MAAM,kBAAkB,GACtB,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,aAAQ,GAAE,CAAC;IAC7B,MAAM,oBAAoB,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAC9D,OAAO;QACL,kBAAkB;QAClB,KAAK;QACL,oBAAoB;QACpB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseStepType, OnboardingMetadata } from "../../types";
|
|
2
|
+
import { OnboardingStepType } from "../../steps/types";
|
|
3
|
+
export declare const useOnboardingStep: <StepType extends BaseStepType = OnboardingStepType>({ stepNumber, }: {
|
|
4
|
+
stepNumber: number;
|
|
5
|
+
}) => {
|
|
6
|
+
step: StepType;
|
|
7
|
+
isLastStep: boolean;
|
|
8
|
+
stepsLength: number;
|
|
9
|
+
onboardingMetadata: OnboardingMetadata;
|
|
10
|
+
steps: StepType[];
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=useOnboardingStep.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStep.d.ts","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboardingStep.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAc,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,YAAY,GAAG,kBAAkB,EAClD,iBAEC;IACD,UAAU,EAAE,MAAM,CAAC;CACpB,KAAG;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,KAAK,EAAE,QAAQ,EAAE,CAAC;CA8CnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOnboardingStep = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
6
|
+
const expo_router_1 = require("expo-router");
|
|
7
|
+
const OnboardingProvider_1 = require("../provider/OnboardingProvider");
|
|
8
|
+
const getOnboarding_query_1 = require("../queries/getOnboarding.query");
|
|
9
|
+
const useOnboardingStep = ({ stepNumber, }) => {
|
|
10
|
+
// Get all config from context
|
|
11
|
+
const { client, locale, customAudienceParams, setActiveStep, setTotalSteps, setOnboarding, } = (0, react_1.useContext)(OnboardingProvider_1.OnboardingProgressContext);
|
|
12
|
+
// Build query with config from context
|
|
13
|
+
const { data } = (0, react_query_1.useSuspenseQuery)((0, getOnboarding_query_1.getOnboardingQuery)(client, locale, customAudienceParams, setOnboarding));
|
|
14
|
+
const steps = data.steps;
|
|
15
|
+
const onboardingMetadata = data.metadata;
|
|
16
|
+
(0, expo_router_1.useFocusEffect)((0, react_1.useCallback)(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
const currentStep = steps[stepNumber - 1];
|
|
19
|
+
setActiveStep({
|
|
20
|
+
number: stepNumber,
|
|
21
|
+
displayProgressHeader: (_a = currentStep === null || currentStep === void 0 ? void 0 : currentStep.displayProgressHeader) !== null && _a !== void 0 ? _a : true,
|
|
22
|
+
});
|
|
23
|
+
setTotalSteps(steps.length);
|
|
24
|
+
}, [stepNumber, steps, setActiveStep, setTotalSteps]));
|
|
25
|
+
const step = steps[stepNumber - 1];
|
|
26
|
+
const isLastStep = stepNumber >= steps.length;
|
|
27
|
+
const stepsLength = steps.length;
|
|
28
|
+
return {
|
|
29
|
+
step,
|
|
30
|
+
isLastStep,
|
|
31
|
+
stepsLength,
|
|
32
|
+
onboardingMetadata,
|
|
33
|
+
steps,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
exports.useOnboardingStep = useOnboardingStep;
|
|
37
|
+
//# sourceMappingURL=useOnboardingStep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStep.js","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboardingStep.ts"],"names":[],"mappings":";;;AAAA,iCAAgD;AAChD,uDAAyD;AACzD,6CAA6C;AAC7C,uEAA2E;AAC3E,wEAAoE;AAI7D,MAAM,iBAAiB,GAAG,CAE/B,EACA,UAAU,GAGX,EAMC,EAAE;IACF,8BAA8B;IAC9B,MAAM,EACJ,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,aAAa,GACd,GAAG,IAAA,kBAAU,EAAC,8CAAyB,CAAC,CAAC;IAE1C,uCAAuC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,8BAAgB,EAC/B,IAAA,wCAAkB,EAChB,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,aAA2D,CAC5D,CACF,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEzC,IAAA,4BAAc,EACZ,IAAA,mBAAW,EAAC,GAAG,EAAE;;QACf,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1C,aAAa,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,qBAAqB,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,qBAAqB,mCAAI,IAAI;SAClE,CAAC,CAAC;QACH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CACtD,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAEjC,OAAO;QACL,IAAI;QACJ,UAAU;QACV,WAAW;QACX,kBAAkB;QAClB,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAzDW,QAAA,iBAAiB,qBAyD5B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { OnboardingStepType, BaseStepType } from "../../UI/types";
|
|
2
|
+
import { OnboardingMetadata } from "../../types";
|
|
3
|
+
export declare const useOnboardingStep: <StepType extends BaseStepType = OnboardingStepType>({ stepNumber, }: {
|
|
4
|
+
stepNumber: number;
|
|
5
|
+
}) => {
|
|
6
|
+
step: StepType;
|
|
7
|
+
isLastStep: boolean;
|
|
8
|
+
stepsLength: number;
|
|
9
|
+
onboardingMetadata: OnboardingMetadata;
|
|
10
|
+
steps: StepType[];
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=useOnboardingStep.old.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStep.old.d.ts","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboardingStep.old.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAElE,OAAO,EAAc,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,SAAS,YAAY,GAAG,kBAAkB,EAClD,iBAEC;IACD,UAAU,EAAE,MAAM,CAAC;CACpB,KAAG;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,KAAK,EAAE,QAAQ,EAAE,CAAC;CA8CnB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useOnboardingStep = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_query_1 = require("@tanstack/react-query");
|
|
6
|
+
const expo_router_1 = require("expo-router");
|
|
7
|
+
const OnboardingProvider_1 = require("../provider/OnboardingProvider");
|
|
8
|
+
const getOnboarding_query_1 = require("../queries/getOnboarding.query");
|
|
9
|
+
const useOnboardingStep = ({ stepNumber, }) => {
|
|
10
|
+
// Get all config from context
|
|
11
|
+
const { client, locale, customAudienceParams, setActiveStep, setTotalSteps, setOnboarding, } = (0, react_1.useContext)(OnboardingProvider_1.OnboardingProgressContext);
|
|
12
|
+
// Build query with config from context
|
|
13
|
+
const { data } = (0, react_query_1.useSuspenseQuery)((0, getOnboarding_query_1.getOnboardingQuery)(client, locale, customAudienceParams, setOnboarding));
|
|
14
|
+
const steps = data.steps;
|
|
15
|
+
const onboardingMetadata = data.metadata;
|
|
16
|
+
(0, expo_router_1.useFocusEffect)((0, react_1.useCallback)(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
const currentStep = steps[stepNumber - 1];
|
|
19
|
+
setActiveStep({
|
|
20
|
+
number: stepNumber,
|
|
21
|
+
displayProgressHeader: (_a = currentStep === null || currentStep === void 0 ? void 0 : currentStep.displayProgressHeader) !== null && _a !== void 0 ? _a : true,
|
|
22
|
+
});
|
|
23
|
+
setTotalSteps(steps.length);
|
|
24
|
+
}, [stepNumber, steps, setActiveStep, setTotalSteps]));
|
|
25
|
+
const step = steps[stepNumber - 1];
|
|
26
|
+
const isLastStep = stepNumber >= steps.length;
|
|
27
|
+
const stepsLength = steps.length;
|
|
28
|
+
return {
|
|
29
|
+
step,
|
|
30
|
+
isLastStep,
|
|
31
|
+
stepsLength,
|
|
32
|
+
onboardingMetadata,
|
|
33
|
+
steps,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
exports.useOnboardingStep = useOnboardingStep;
|
|
37
|
+
//# sourceMappingURL=useOnboardingStep.old.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOnboardingStep.old.js","sourceRoot":"","sources":["../../../src/infra/hooks/useOnboardingStep.old.ts"],"names":[],"mappings":";;;AAAA,iCAAgD;AAChD,uDAAyD;AACzD,6CAA6C;AAC7C,uEAA2E;AAE3E,wEAAoE;AAG7D,MAAM,iBAAiB,GAAG,CAE/B,EACA,UAAU,GAGX,EAMC,EAAE;IACF,8BAA8B;IAC9B,MAAM,EACJ,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,aAAa,GACd,GAAG,IAAA,kBAAU,EAAC,8CAAyB,CAAC,CAAC;IAE1C,uCAAuC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,8BAAgB,EAC/B,IAAA,wCAAkB,EAChB,MAAM,EACN,MAAM,EACN,oBAAoB,EACpB,aAA2D,CAC5D,CACF,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAEzC,IAAA,4BAAc,EACZ,IAAA,mBAAW,EAAC,GAAG,EAAE;;QACf,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;QAC1C,aAAa,CAAC;YACZ,MAAM,EAAE,UAAU;YAClB,qBAAqB,EAAE,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,qBAAqB,mCAAI,IAAI;SAClE,CAAC,CAAC;QACH,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CACtD,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC;IAEjC,OAAO;QACL,IAAI;QACJ,UAAU;QACV,WAAW;QACX,kBAAkB;QAClB,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAzDW,QAAA,iBAAiB,qBAyD5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/infra/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./provider"), exports);
|
|
18
|
+
__exportStar(require("./hooks"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/infra/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,0CAAwB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { OnboardingStudioClient } from "../../OnboardingStudioClient";
|
|
2
|
+
import { Onboarding } from "../../types";
|
|
3
|
+
import { OnboardingStepType } from "../../steps/types";
|
|
4
|
+
interface OnboardingProviderProps {
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
client: OnboardingStudioClient;
|
|
7
|
+
locale?: string;
|
|
8
|
+
customAudienceParams?: Record<string, any>;
|
|
9
|
+
}
|
|
10
|
+
export declare const OnboardingProvider: ({ children, client, locale, customAudienceParams, }: OnboardingProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const OnboardingProgressContext: import("react").Context<{
|
|
12
|
+
activeStep: {
|
|
13
|
+
number: number;
|
|
14
|
+
displayProgressHeader: boolean;
|
|
15
|
+
};
|
|
16
|
+
setActiveStep: (step: {
|
|
17
|
+
number: number;
|
|
18
|
+
displayProgressHeader: boolean;
|
|
19
|
+
}) => void;
|
|
20
|
+
totalSteps: number;
|
|
21
|
+
setTotalSteps: (steps: number) => void;
|
|
22
|
+
client: OnboardingStudioClient;
|
|
23
|
+
locale: string;
|
|
24
|
+
customAudienceParams: Record<string, any>;
|
|
25
|
+
onboarding: Onboarding<OnboardingStepType> | null;
|
|
26
|
+
setOnboarding: (onboarding: Onboarding<OnboardingStepType>) => void;
|
|
27
|
+
}>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=OnboardingProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingProvider.d.ts","sourceRoot":"","sources":["../../../src/infra/provider/OnboardingProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAUvD,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5C;AAED,eAAO,MAAM,kBAAkB,GAAI,qDAKhC,uBAAuB,4CA8BzB,CAAC;AAEF,eAAO,MAAM,yBAAyB;gBACxB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,OAAO,CAAA;KAAE;mBAC/C,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;gBACrE,MAAM;mBACH,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;YAC9B,sBAAsB;YACtB,MAAM;0BACQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;gBAC7B,UAAU,CAAC,kBAAkB,CAAC,GAAG,IAAI;mBAClC,CAAC,UAAU,EAAE,UAAU,CAAC,kBAAkB,CAAC,KAAK,IAAI;EAWnE,CAAC"}
|