rampkit-mcp-server 0.1.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.
Files changed (62) hide show
  1. package/README.md +160 -0
  2. package/dist/api/rampkit.d.ts +96 -0
  3. package/dist/api/rampkit.d.ts.map +1 -0
  4. package/dist/api/rampkit.js +391 -0
  5. package/dist/api/rampkit.js.map +1 -0
  6. package/dist/detection/platform.d.ts +11 -0
  7. package/dist/detection/platform.d.ts.map +1 -0
  8. package/dist/detection/platform.js +420 -0
  9. package/dist/detection/platform.js.map +1 -0
  10. package/dist/index.d.ts +9 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +13 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/prompts/index.d.ts +24 -0
  15. package/dist/prompts/index.d.ts.map +1 -0
  16. package/dist/prompts/index.js +183 -0
  17. package/dist/prompts/index.js.map +1 -0
  18. package/dist/resources/authoring-guide.d.ts +9 -0
  19. package/dist/resources/authoring-guide.d.ts.map +1 -0
  20. package/dist/resources/authoring-guide.js +487 -0
  21. package/dist/resources/authoring-guide.js.map +1 -0
  22. package/dist/resources/best-practices.d.ts +8 -0
  23. package/dist/resources/best-practices.d.ts.map +1 -0
  24. package/dist/resources/best-practices.js +92 -0
  25. package/dist/resources/best-practices.js.map +1 -0
  26. package/dist/resources/index.d.ts +19 -0
  27. package/dist/resources/index.d.ts.map +1 -0
  28. package/dist/resources/index.js +236 -0
  29. package/dist/resources/index.js.map +1 -0
  30. package/dist/resources/schema.d.ts +42 -0
  31. package/dist/resources/schema.d.ts.map +1 -0
  32. package/dist/resources/schema.js +239 -0
  33. package/dist/resources/schema.js.map +1 -0
  34. package/dist/resources/sdk-guide.d.ts +7 -0
  35. package/dist/resources/sdk-guide.d.ts.map +1 -0
  36. package/dist/resources/sdk-guide.js +368 -0
  37. package/dist/resources/sdk-guide.js.map +1 -0
  38. package/dist/resources/templates.d.ts +9 -0
  39. package/dist/resources/templates.d.ts.map +1 -0
  40. package/dist/resources/templates.js +874 -0
  41. package/dist/resources/templates.js.map +1 -0
  42. package/dist/server.d.ts +10 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +109 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/instructions.d.ts +23 -0
  47. package/dist/tools/instructions.d.ts.map +1 -0
  48. package/dist/tools/instructions.js +74 -0
  49. package/dist/tools/instructions.js.map +1 -0
  50. package/dist/tools/onboarding.d.ts +211 -0
  51. package/dist/tools/onboarding.d.ts.map +1 -0
  52. package/dist/tools/onboarding.js +452 -0
  53. package/dist/tools/onboarding.js.map +1 -0
  54. package/dist/tools/setup.d.ts +61 -0
  55. package/dist/tools/setup.d.ts.map +1 -0
  56. package/dist/tools/setup.js +543 -0
  57. package/dist/tools/setup.js.map +1 -0
  58. package/dist/types.d.ts +280 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +5 -0
  61. package/dist/types.js.map +1 -0
  62. package/package.json +51 -0
@@ -0,0 +1,236 @@
1
+ /**
2
+ * MCP Resources
3
+ *
4
+ * Exposes RampKit schema, templates, and documentation as MCP resources.
5
+ */
6
+ import { ONBOARDING_SCHEMA, HTML_SCREEN_DOCS } from './schema.js';
7
+ import { HTML_TEMPLATES } from './templates.js';
8
+ import { BEST_PRACTICES, CSS_VARIABLES } from './best-practices.js';
9
+ import { HTML_AUTHORING_GUIDE, SCREEN_ID_GUIDE } from './authoring-guide.js';
10
+ import { EXPO_SDK_GUIDE, IOS_SDK_GUIDE, ANDROID_SDK_GUIDE } from './sdk-guide.js';
11
+ export function getResources() {
12
+ return [
13
+ {
14
+ uri: 'rampkit://schema.json',
15
+ name: 'RampKit Onboarding Schema',
16
+ description: 'JSON schema for HTML-first onboarding format',
17
+ mimeType: 'application/json',
18
+ },
19
+ {
20
+ uri: 'rampkit://schema/docs',
21
+ name: 'HTML Screen Documentation',
22
+ description: 'Documentation for creating HTML screens',
23
+ mimeType: 'text/markdown',
24
+ },
25
+ {
26
+ uri: 'rampkit://templates/welcome',
27
+ name: 'Welcome Screen Template',
28
+ description: 'Ready-to-use welcome screen HTML template',
29
+ mimeType: 'text/html',
30
+ },
31
+ {
32
+ uri: 'rampkit://templates/features',
33
+ name: 'Features Screen Template',
34
+ description: 'Ready-to-use features showcase HTML template',
35
+ mimeType: 'text/html',
36
+ },
37
+ {
38
+ uri: 'rampkit://templates/permissions',
39
+ name: 'Permissions Screen Template',
40
+ description: 'Ready-to-use permission request HTML template',
41
+ mimeType: 'text/html',
42
+ },
43
+ {
44
+ uri: 'rampkit://templates/personalization',
45
+ name: 'Personalization Screen Template',
46
+ description: 'Ready-to-use personalization quiz HTML template',
47
+ mimeType: 'text/html',
48
+ },
49
+ {
50
+ uri: 'rampkit://templates/paywall',
51
+ name: 'Paywall Screen Template',
52
+ description: 'Ready-to-use paywall/subscription HTML template',
53
+ mimeType: 'text/html',
54
+ },
55
+ {
56
+ uri: 'rampkit://templates/complete',
57
+ name: 'Completion Screen Template',
58
+ description: 'Ready-to-use success/completion HTML template',
59
+ mimeType: 'text/html',
60
+ },
61
+ {
62
+ uri: 'rampkit://best-practices',
63
+ name: 'Onboarding Best Practices',
64
+ description: 'Guidelines for designing effective onboardings',
65
+ mimeType: 'text/markdown',
66
+ },
67
+ {
68
+ uri: 'rampkit://styles/variables',
69
+ name: 'CSS Variables Reference',
70
+ description: 'CSS custom properties for theming onboardings',
71
+ mimeType: 'application/json',
72
+ },
73
+ {
74
+ uri: 'rampkit://authoring-guide',
75
+ name: 'HTML Authoring Guide',
76
+ description: 'Comprehensive guide for creating HTML screens including RampKit JS API, CSS patterns, and screen structures',
77
+ mimeType: 'text/markdown',
78
+ },
79
+ {
80
+ uri: 'rampkit://screen-ids',
81
+ name: 'Screen ID Conventions',
82
+ description: 'Naming conventions for screen IDs',
83
+ mimeType: 'text/markdown',
84
+ },
85
+ {
86
+ uri: 'rampkit://sdk/expo',
87
+ name: 'Expo SDK Guide',
88
+ description: 'Complete guide for installing and using the RampKit Expo SDK (rampkit-expo-dev)',
89
+ mimeType: 'text/markdown',
90
+ },
91
+ {
92
+ uri: 'rampkit://sdk/ios',
93
+ name: 'iOS SDK Guide',
94
+ description: 'Guide for installing and using the RampKit iOS SDK',
95
+ mimeType: 'text/markdown',
96
+ },
97
+ {
98
+ uri: 'rampkit://sdk/android',
99
+ name: 'Android SDK Guide',
100
+ description: 'Guide for installing and using the RampKit Android SDK',
101
+ mimeType: 'text/markdown',
102
+ },
103
+ ];
104
+ }
105
+ export function readResource(uri) {
106
+ const contents = [];
107
+ switch (uri) {
108
+ case 'rampkit://schema.json':
109
+ contents.push({
110
+ uri,
111
+ mimeType: 'application/json',
112
+ text: JSON.stringify(ONBOARDING_SCHEMA, null, 2),
113
+ });
114
+ break;
115
+ case 'rampkit://schema/docs':
116
+ contents.push({
117
+ uri,
118
+ mimeType: 'text/markdown',
119
+ text: HTML_SCREEN_DOCS,
120
+ });
121
+ break;
122
+ case 'rampkit://templates/welcome':
123
+ contents.push({
124
+ uri,
125
+ mimeType: 'text/html',
126
+ text: HTML_TEMPLATES.welcome,
127
+ });
128
+ break;
129
+ case 'rampkit://templates/features':
130
+ contents.push({
131
+ uri,
132
+ mimeType: 'text/html',
133
+ text: HTML_TEMPLATES.features,
134
+ });
135
+ break;
136
+ case 'rampkit://templates/permissions':
137
+ contents.push({
138
+ uri,
139
+ mimeType: 'text/html',
140
+ text: HTML_TEMPLATES.permissions,
141
+ });
142
+ break;
143
+ case 'rampkit://templates/personalization':
144
+ contents.push({
145
+ uri,
146
+ mimeType: 'text/html',
147
+ text: HTML_TEMPLATES.personalization,
148
+ });
149
+ break;
150
+ case 'rampkit://templates/paywall':
151
+ contents.push({
152
+ uri,
153
+ mimeType: 'text/html',
154
+ text: HTML_TEMPLATES.paywall,
155
+ });
156
+ break;
157
+ case 'rampkit://templates/complete':
158
+ contents.push({
159
+ uri,
160
+ mimeType: 'text/html',
161
+ text: HTML_TEMPLATES.complete,
162
+ });
163
+ break;
164
+ case 'rampkit://best-practices':
165
+ contents.push({
166
+ uri,
167
+ mimeType: 'text/markdown',
168
+ text: formatBestPractices(),
169
+ });
170
+ break;
171
+ case 'rampkit://styles/variables':
172
+ contents.push({
173
+ uri,
174
+ mimeType: 'application/json',
175
+ text: JSON.stringify(CSS_VARIABLES, null, 2),
176
+ });
177
+ break;
178
+ case 'rampkit://authoring-guide':
179
+ contents.push({
180
+ uri,
181
+ mimeType: 'text/markdown',
182
+ text: HTML_AUTHORING_GUIDE,
183
+ });
184
+ break;
185
+ case 'rampkit://screen-ids':
186
+ contents.push({
187
+ uri,
188
+ mimeType: 'text/markdown',
189
+ text: SCREEN_ID_GUIDE,
190
+ });
191
+ break;
192
+ case 'rampkit://sdk/expo':
193
+ contents.push({
194
+ uri,
195
+ mimeType: 'text/markdown',
196
+ text: EXPO_SDK_GUIDE,
197
+ });
198
+ break;
199
+ case 'rampkit://sdk/ios':
200
+ contents.push({
201
+ uri,
202
+ mimeType: 'text/markdown',
203
+ text: IOS_SDK_GUIDE,
204
+ });
205
+ break;
206
+ case 'rampkit://sdk/android':
207
+ contents.push({
208
+ uri,
209
+ mimeType: 'text/markdown',
210
+ text: ANDROID_SDK_GUIDE,
211
+ });
212
+ break;
213
+ default:
214
+ throw new Error(`Unknown resource: ${uri}`);
215
+ }
216
+ return { contents };
217
+ }
218
+ function formatBestPractices() {
219
+ const sections = [
220
+ { title: 'Content Strategy', practices: BEST_PRACTICES.slice(0, 5) },
221
+ { title: 'Visual Design', practices: BEST_PRACTICES.slice(5, 10) },
222
+ { title: 'Screen Types', practices: BEST_PRACTICES.slice(10, 15) },
223
+ { title: 'Technical', practices: BEST_PRACTICES.slice(15, 20) },
224
+ { title: 'Optimization', practices: BEST_PRACTICES.slice(20, 25) },
225
+ ];
226
+ let markdown = '# RampKit Onboarding Best Practices\n\n';
227
+ for (const section of sections) {
228
+ markdown += `## ${section.title}\n\n`;
229
+ for (const practice of section.practices) {
230
+ markdown += `- ${practice}\n`;
231
+ }
232
+ markdown += '\n';
233
+ }
234
+ return markdown;
235
+ }
236
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * RampKit Onboarding Schema
3
+ *
4
+ * Defines the JSON schema for HTML-first onboardings.
5
+ */
6
+ import type { OnboardingSchema } from '../types.js';
7
+ export declare const ONBOARDING_SCHEMA: OnboardingSchema;
8
+ /**
9
+ * HTML Screen Format Documentation
10
+ *
11
+ * Each screen's HTML should be a complete, self-contained document that renders
12
+ * inside the RampKit WebView. Key patterns:
13
+ *
14
+ * 1. DATA ATTRIBUTES:
15
+ * - data-ramp-id="element-name": Marks elements for targeting in overrides/analytics
16
+ * - data-ramp-action="next|back|dismiss|finish": Button actions
17
+ * - data-ramp-screen="screen-id": Navigate to specific screen
18
+ *
19
+ * 2. CSS VARIABLES:
20
+ * - --ramp-primary: Primary brand color
21
+ * - --ramp-background: Background color
22
+ * - --ramp-text: Text color
23
+ * - --ramp-text-secondary: Secondary text color
24
+ * - --ramp-safe-area-top: Safe area inset top
25
+ * - --ramp-safe-area-bottom: Safe area inset bottom
26
+ *
27
+ * 3. JAVASCRIPT:
28
+ * - RampKit.navigate('next'): Go to next screen
29
+ * - RampKit.navigate('back'): Go to previous screen
30
+ * - RampKit.navigate('screen-id'): Go to specific screen
31
+ * - RampKit.dismiss(): Dismiss onboarding
32
+ * - RampKit.finish(): Complete onboarding
33
+ * - RampKit.track('event', {data}): Track custom event
34
+ *
35
+ * 4. STRUCTURE:
36
+ * - Use flexbox for vertical layouts
37
+ * - Include safe area padding at top/bottom
38
+ * - Put CTA buttons at bottom with safe area padding
39
+ * - Use relative units (rem, %) for responsiveness
40
+ */
41
+ export declare const HTML_SCREEN_DOCS = "\n## HTML Screen Format\n\nEach screen is a complete HTML document rendered in a WebView.\n\n### Required Structure\n\n```html\n<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\n <style>\n /* Reset and base styles */\n * { margin: 0; padding: 0; box-sizing: border-box; }\n\n :root {\n --ramp-primary: #007AFF;\n --ramp-background: #FFFFFF;\n --ramp-text: #1C1C1E;\n --ramp-text-secondary: #8E8E93;\n --ramp-safe-area-top: env(safe-area-inset-top, 44px);\n --ramp-safe-area-bottom: env(safe-area-inset-bottom, 34px);\n }\n\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro', 'Segoe UI', sans-serif;\n background: var(--ramp-background);\n color: var(--ramp-text);\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n }\n\n .screen {\n flex: 1;\n display: flex;\n flex-direction: column;\n padding: calc(var(--ramp-safe-area-top) + 20px) 24px calc(var(--ramp-safe-area-bottom) + 20px);\n }\n\n .content {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n text-align: center;\n }\n\n .actions {\n display: flex;\n flex-direction: column;\n gap: 12px;\n }\n\n .btn-primary {\n background: var(--ramp-primary);\n color: white;\n border: none;\n padding: 16px 32px;\n border-radius: 12px;\n font-size: 17px;\n font-weight: 600;\n cursor: pointer;\n }\n </style>\n</head>\n<body>\n <div class=\"screen\">\n <div class=\"content\">\n <h1 data-ramp-id=\"title\">Welcome</h1>\n <p data-ramp-id=\"subtitle\">Get started with our app</p>\n </div>\n <div class=\"actions\">\n <button class=\"btn-primary\" data-ramp-action=\"next\" data-ramp-id=\"cta\">\n Get Started\n </button>\n </div>\n </div>\n\n <script>\n // RampKit SDK will inject the RampKit global object\n document.querySelectorAll('[data-ramp-action]').forEach(el => {\n el.addEventListener('click', () => {\n const action = el.dataset.rampAction;\n const screen = el.dataset.rampScreen;\n if (action === 'next') RampKit.navigate('next');\n else if (action === 'back') RampKit.navigate('back');\n else if (action === 'dismiss') RampKit.dismiss();\n else if (action === 'finish') RampKit.finish();\n else if (screen) RampKit.navigate(screen);\n });\n });\n </script>\n</body>\n</html>\n```\n\n### Data Attributes\n\n- `data-ramp-id=\"name\"`: Identifies element for analytics and overrides\n- `data-ramp-action=\"next|back|dismiss|finish\"`: Button navigation action\n- `data-ramp-screen=\"screen-id\"`: Navigate to specific screen\n\n### CSS Variables\n\n- `--ramp-primary`: Primary brand color (buttons, links)\n- `--ramp-background`: Screen background color\n- `--ramp-text`: Primary text color\n- `--ramp-text-secondary`: Secondary/muted text color\n- `--ramp-safe-area-top`: Safe area inset (notch, status bar)\n- `--ramp-safe-area-bottom`: Safe area inset (home indicator)\n\n### JavaScript API\n\n- `RampKit.navigate('next')`: Go to next screen\n- `RampKit.navigate('back')`: Go to previous screen\n- `RampKit.navigate('screen-id')`: Go to specific screen\n- `RampKit.dismiss()`: Dismiss onboarding (if dismissible)\n- `RampKit.finish()`: Complete onboarding successfully\n- `RampKit.track(event, data)`: Track custom analytics event\n";
42
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/resources/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,iBAAiB,EAAE,gBA2E/B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,eAAO,MAAM,gBAAgB,0hHA2H5B,CAAC"}
@@ -0,0 +1,239 @@
1
+ /**
2
+ * RampKit Onboarding Schema
3
+ *
4
+ * Defines the JSON schema for HTML-first onboardings.
5
+ */
6
+ export const ONBOARDING_SCHEMA = {
7
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
8
+ title: 'RampKit Onboarding',
9
+ description: 'Schema for RampKit HTML-first onboarding flows',
10
+ type: 'object',
11
+ properties: {
12
+ name: {
13
+ type: 'string',
14
+ description: 'Human-readable name for the onboarding (e.g., "Welcome Flow v2")',
15
+ },
16
+ screens: {
17
+ type: 'array',
18
+ description: 'Ordered array of screens in the onboarding flow',
19
+ items: {
20
+ type: 'object',
21
+ description: 'A single screen in the onboarding',
22
+ properties: {
23
+ id: {
24
+ type: 'string',
25
+ description: 'Unique identifier for the screen (e.g., "screen-welcome")',
26
+ },
27
+ label: {
28
+ type: 'string',
29
+ description: 'Display name shown in the editor (e.g., "Welcome")',
30
+ },
31
+ html: {
32
+ type: 'string',
33
+ description: 'Complete HTML content for the screen including inline CSS and JavaScript',
34
+ },
35
+ overrides: {
36
+ type: 'object',
37
+ description: 'Runtime overrides for dynamic content',
38
+ properties: {
39
+ elements: {
40
+ type: 'object',
41
+ description: 'Element-specific overrides keyed by data-ramp-id',
42
+ },
43
+ colors: {
44
+ type: 'object',
45
+ description: 'CSS variable color overrides',
46
+ },
47
+ },
48
+ },
49
+ },
50
+ },
51
+ },
52
+ settings: {
53
+ type: 'object',
54
+ description: 'Global onboarding settings',
55
+ properties: {
56
+ dismissible: {
57
+ type: 'boolean',
58
+ description: 'Whether users can dismiss the onboarding',
59
+ default: false,
60
+ },
61
+ showProgressBar: {
62
+ type: 'boolean',
63
+ description: 'Show progress indicator',
64
+ default: true,
65
+ },
66
+ showBackButton: {
67
+ type: 'boolean',
68
+ description: 'Show back navigation button',
69
+ default: true,
70
+ },
71
+ animationType: {
72
+ type: 'string',
73
+ description: 'Screen transition animation',
74
+ enum: ['slide', 'fade', 'none'],
75
+ default: 'slide',
76
+ },
77
+ },
78
+ },
79
+ },
80
+ required: ['name', 'screens'],
81
+ };
82
+ /**
83
+ * HTML Screen Format Documentation
84
+ *
85
+ * Each screen's HTML should be a complete, self-contained document that renders
86
+ * inside the RampKit WebView. Key patterns:
87
+ *
88
+ * 1. DATA ATTRIBUTES:
89
+ * - data-ramp-id="element-name": Marks elements for targeting in overrides/analytics
90
+ * - data-ramp-action="next|back|dismiss|finish": Button actions
91
+ * - data-ramp-screen="screen-id": Navigate to specific screen
92
+ *
93
+ * 2. CSS VARIABLES:
94
+ * - --ramp-primary: Primary brand color
95
+ * - --ramp-background: Background color
96
+ * - --ramp-text: Text color
97
+ * - --ramp-text-secondary: Secondary text color
98
+ * - --ramp-safe-area-top: Safe area inset top
99
+ * - --ramp-safe-area-bottom: Safe area inset bottom
100
+ *
101
+ * 3. JAVASCRIPT:
102
+ * - RampKit.navigate('next'): Go to next screen
103
+ * - RampKit.navigate('back'): Go to previous screen
104
+ * - RampKit.navigate('screen-id'): Go to specific screen
105
+ * - RampKit.dismiss(): Dismiss onboarding
106
+ * - RampKit.finish(): Complete onboarding
107
+ * - RampKit.track('event', {data}): Track custom event
108
+ *
109
+ * 4. STRUCTURE:
110
+ * - Use flexbox for vertical layouts
111
+ * - Include safe area padding at top/bottom
112
+ * - Put CTA buttons at bottom with safe area padding
113
+ * - Use relative units (rem, %) for responsiveness
114
+ */
115
+ export const HTML_SCREEN_DOCS = `
116
+ ## HTML Screen Format
117
+
118
+ Each screen is a complete HTML document rendered in a WebView.
119
+
120
+ ### Required Structure
121
+
122
+ \`\`\`html
123
+ <!DOCTYPE html>
124
+ <html>
125
+ <head>
126
+ <meta charset="utf-8">
127
+ <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
128
+ <style>
129
+ /* Reset and base styles */
130
+ * { margin: 0; padding: 0; box-sizing: border-box; }
131
+
132
+ :root {
133
+ --ramp-primary: #007AFF;
134
+ --ramp-background: #FFFFFF;
135
+ --ramp-text: #1C1C1E;
136
+ --ramp-text-secondary: #8E8E93;
137
+ --ramp-safe-area-top: env(safe-area-inset-top, 44px);
138
+ --ramp-safe-area-bottom: env(safe-area-inset-bottom, 34px);
139
+ }
140
+
141
+ body {
142
+ font-family: -apple-system, BlinkMacSystemFont, 'SF Pro', 'Segoe UI', sans-serif;
143
+ background: var(--ramp-background);
144
+ color: var(--ramp-text);
145
+ min-height: 100vh;
146
+ display: flex;
147
+ flex-direction: column;
148
+ }
149
+
150
+ .screen {
151
+ flex: 1;
152
+ display: flex;
153
+ flex-direction: column;
154
+ padding: calc(var(--ramp-safe-area-top) + 20px) 24px calc(var(--ramp-safe-area-bottom) + 20px);
155
+ }
156
+
157
+ .content {
158
+ flex: 1;
159
+ display: flex;
160
+ flex-direction: column;
161
+ justify-content: center;
162
+ align-items: center;
163
+ text-align: center;
164
+ }
165
+
166
+ .actions {
167
+ display: flex;
168
+ flex-direction: column;
169
+ gap: 12px;
170
+ }
171
+
172
+ .btn-primary {
173
+ background: var(--ramp-primary);
174
+ color: white;
175
+ border: none;
176
+ padding: 16px 32px;
177
+ border-radius: 12px;
178
+ font-size: 17px;
179
+ font-weight: 600;
180
+ cursor: pointer;
181
+ }
182
+ </style>
183
+ </head>
184
+ <body>
185
+ <div class="screen">
186
+ <div class="content">
187
+ <h1 data-ramp-id="title">Welcome</h1>
188
+ <p data-ramp-id="subtitle">Get started with our app</p>
189
+ </div>
190
+ <div class="actions">
191
+ <button class="btn-primary" data-ramp-action="next" data-ramp-id="cta">
192
+ Get Started
193
+ </button>
194
+ </div>
195
+ </div>
196
+
197
+ <script>
198
+ // RampKit SDK will inject the RampKit global object
199
+ document.querySelectorAll('[data-ramp-action]').forEach(el => {
200
+ el.addEventListener('click', () => {
201
+ const action = el.dataset.rampAction;
202
+ const screen = el.dataset.rampScreen;
203
+ if (action === 'next') RampKit.navigate('next');
204
+ else if (action === 'back') RampKit.navigate('back');
205
+ else if (action === 'dismiss') RampKit.dismiss();
206
+ else if (action === 'finish') RampKit.finish();
207
+ else if (screen) RampKit.navigate(screen);
208
+ });
209
+ });
210
+ </script>
211
+ </body>
212
+ </html>
213
+ \`\`\`
214
+
215
+ ### Data Attributes
216
+
217
+ - \`data-ramp-id="name"\`: Identifies element for analytics and overrides
218
+ - \`data-ramp-action="next|back|dismiss|finish"\`: Button navigation action
219
+ - \`data-ramp-screen="screen-id"\`: Navigate to specific screen
220
+
221
+ ### CSS Variables
222
+
223
+ - \`--ramp-primary\`: Primary brand color (buttons, links)
224
+ - \`--ramp-background\`: Screen background color
225
+ - \`--ramp-text\`: Primary text color
226
+ - \`--ramp-text-secondary\`: Secondary/muted text color
227
+ - \`--ramp-safe-area-top\`: Safe area inset (notch, status bar)
228
+ - \`--ramp-safe-area-bottom\`: Safe area inset (home indicator)
229
+
230
+ ### JavaScript API
231
+
232
+ - \`RampKit.navigate('next')\`: Go to next screen
233
+ - \`RampKit.navigate('back')\`: Go to previous screen
234
+ - \`RampKit.navigate('screen-id')\`: Go to specific screen
235
+ - \`RampKit.dismiss()\`: Dismiss onboarding (if dismissible)
236
+ - \`RampKit.finish()\`: Complete onboarding successfully
237
+ - \`RampKit.track(event, data)\`: Track custom analytics event
238
+ `;
239
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/resources/schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,OAAO,EAAE,8CAA8C;IACvD,KAAK,EAAE,oBAAoB;IAC3B,WAAW,EAAE,gDAAgD;IAC7D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,kEAAkE;SAChF;QACD,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,iDAAiD;YAC9D,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mCAAmC;gBAChD,UAAU,EAAE;oBACV,EAAE,EAAE;wBACF,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,2DAA2D;qBACzE;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,oDAAoD;qBAClE;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,0EAA0E;qBACxF;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,uCAAuC;wBACpD,UAAU,EAAE;4BACV,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,kDAAkD;6BAChE;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8BAA8B;6BAC5C;yBACF;qBACF;iBACF;aACF;SACF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,4BAA4B;YACzC,UAAU,EAAE;gBACV,WAAW,EAAE;oBACX,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,KAAK;iBACf;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,yBAAyB;oBACtC,OAAO,EAAE,IAAI;iBACd;gBACD,cAAc,EAAE;oBACd,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,6BAA6B;oBAC1C,OAAO,EAAE,IAAI;iBACd;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;oBAC1C,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;oBAC/B,OAAO,EAAE,OAAO;iBACjB;aACF;SACF;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2H/B,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * SDK Installation and Usage Guides
3
+ */
4
+ export declare const EXPO_SDK_GUIDE = "# RampKit Expo SDK Guide\n\n## Minimum Requirements\n\n- **iOS 14.0+** (StoreKit 2 transactions automatically tracked on iOS 15+)\n- **Expo SDK 51+**\n\n## Installation\n\n```bash\nnpm install rampkit-expo-dev\n```\n\n## Required Peer Dependencies\n\nInstall these in your app:\n\n```bash\nnpx expo install react-native-webview react-native-pager-view react-native-root-siblings\n```\n\n## Setup\n\nWrap your app with RootSiblingParent (required for the overlay):\n\n```tsx\n// App.tsx\nimport { RootSiblingParent } from 'react-native-root-siblings';\n\nexport default function App() {\n return (\n <RootSiblingParent>\n {/* Your app content */}\n </RootSiblingParent>\n );\n}\n```\n\n## Initialize the SDK\n\n```typescript\nimport { RampKit } from 'rampkit-expo-dev';\n\n// Call once at app startup (e.g., in useEffect or before rendering)\nawait RampKit.configure({\n appId: 'YOUR_APP_ID',\n environment: 'production', // or 'development'\n autoShowOnboarding: false, // true = show immediately after configure\n appUserID: 'your-user-123', // optional: link to your user system\n verboseLogging: false, // true for debug logs\n onOnboardingFinished: (payload) => {\n console.log('Onboarding finished', payload);\n },\n onShowPaywall: (payload) => {\n // Called when onboarding triggers paywall\n // Present your paywall here\n },\n});\n```\n\n## Show Onboarding Manually\n\n```typescript\nRampKit.showOnboarding();\n\n// Or with custom paywall handler:\nRampKit.showOnboarding({\n onShowPaywall: (payload) => { /* show paywall */ }\n});\n```\n\n## Close Onboarding\n\n```typescript\nRampKit.closeOnboarding();\n```\n\n## Get User ID\n\n```typescript\nconst userId = RampKit.getUserId();\n```\n\n## Get User Answers (from onboarding questions)\n\n```typescript\n// All answers\nconst answers = await RampKit.getAnswers();\n\n// Single answer\nconst name = await RampKit.getAnswer('userName');\n```\n\n## Set Custom User ID (after configure)\n\n```typescript\nawait RampKit.setAppUserID('user-abc-123');\n```\n\n## Track Custom Events\n\n```typescript\nRampKit.trackEvent('button_tapped', { buttonId: 'cta-1' });\n```\n\n## Check Initialization\n\n```typescript\nif (RampKit.isInitialized()) {\n RampKit.showOnboarding();\n}\n```\n\n## Reset SDK (logout/clear state)\n\n```typescript\nawait RampKit.reset();\n```\n\n## Complete Example\n\n```tsx\n// App.tsx\nimport { useEffect, useState } from 'react';\nimport { RootSiblingParent } from 'react-native-root-siblings';\nimport { RampKit } from 'rampkit-expo-dev';\n\nexport default function App() {\n const [isReady, setIsReady] = useState(false);\n\n useEffect(() => {\n async function init() {\n await RampKit.configure({\n appId: 'YOUR_APP_ID',\n environment: 'production',\n autoShowOnboarding: true, // Show onboarding automatically\n onOnboardingFinished: (payload) => {\n console.log('User completed onboarding', payload);\n },\n onShowPaywall: (payload) => {\n // Handle paywall presentation\n console.log('Show paywall', payload);\n },\n });\n setIsReady(true);\n }\n init();\n }, []);\n\n if (!isReady) return null;\n\n return (\n <RootSiblingParent>\n {/* Your app content */}\n </RootSiblingParent>\n );\n}\n```\n";
5
+ export declare const IOS_SDK_GUIDE = "# RampKit iOS SDK Guide\n\n## Requirements\n\n- **iOS 14.0+**\n- StoreKit 2 transactions are automatically tracked on iOS 15+\n\n## Installation (Swift Package Manager)\n\nIn Xcode:\n1. File \u2192 Add Package Dependencies\n2. Enter: `https://github.com/getrampkit/rampkit-ios.git`\n3. Select version 1.0.0 or \"Up to Next Major\"\n4. Add to your target\n\nOr in Package.swift:\n\n```swift\ndependencies: [\n .package(url: \"https://github.com/getrampkit/rampkit-ios.git\", from: \"1.0.0\")\n]\n```\n\n## Initialize the SDK\n\n```swift\nimport RampKit\n\n// Call once at app launch (e.g., in AppDelegate or @main App init)\nTask {\n await RampKit.configure(config: RampKitConfig(\n appId: \"YOUR_APP_ID\",\n environment: \"production\",\n autoShowOnboarding: false,\n appUserID: \"your-user-123\", // optional\n verboseLogging: false,\n onOnboardingFinished: { payload in\n print(\"Onboarding finished\", payload ?? \"\")\n },\n onShowPaywall: { payload in\n // Present your paywall here\n }\n ))\n}\n```\n\n## Show Onboarding\n\n```swift\nRampKit.showOnboarding()\n\n// Or with custom paywall handler:\nRampKit.showOnboarding(options: ShowOnboardingOptions(\n onShowPaywall: { payload in /* show paywall */ }\n))\n```\n\n## Close Onboarding\n\n```swift\nRampKit.closeOnboarding()\n```\n\n## Get User ID\n\n```swift\nlet userId = RampKit.getUserId()\n```\n\n## Get User Answers (from onboarding questions)\n\n```swift\n// All answers\nlet answers = RampKit.getAnswers()\n\n// Single answer\nlet name = RampKit.getAnswer(\"userName\")\n```\n\n## Set Custom User ID (after configure)\n\n```swift\nTask {\n await RampKit.setAppUserID(\"user-abc-123\")\n}\n```\n\n## Reset SDK (logout/clear state)\n\n```swift\nTask {\n await RampKit.reset()\n}\n```\n\n## Complete SwiftUI Example\n\n```swift\nimport SwiftUI\nimport RampKit\n\n@main\nstruct MyApp: App {\n init() {\n Task {\n await RampKit.configure(config: RampKitConfig(\n appId: \"YOUR_APP_ID\",\n environment: \"production\",\n autoShowOnboarding: true,\n onOnboardingFinished: { payload in\n print(\"Onboarding finished\", payload ?? \"\")\n },\n onShowPaywall: { payload in\n // Present your paywall\n }\n ))\n }\n }\n\n var body: some Scene {\n WindowGroup {\n ContentView()\n }\n }\n}\n```\n\n## Complete UIKit Example\n\n```swift\nimport UIKit\nimport RampKit\n\n@main\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n func application(\n _ application: UIApplication,\n didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n ) -> Bool {\n Task {\n await RampKit.configure(config: RampKitConfig(\n appId: \"YOUR_APP_ID\",\n environment: \"production\",\n autoShowOnboarding: false,\n onOnboardingFinished: { payload in\n print(\"Onboarding finished\", payload ?? \"\")\n },\n onShowPaywall: { payload in\n // Present your paywall\n }\n ))\n }\n return true\n }\n}\n```\n";
6
+ export declare const ANDROID_SDK_GUIDE = "# RampKit Android SDK Guide\n\n## Installation via Gradle\n\nAdd to your app's build.gradle:\n\n```gradle\nimplementation \"com.rampkit:sdk:1.0.0\"\n```\n\n## Initialize the SDK\n\n```kotlin\nimport com.rampkit.RampKit\n\n// In your Application class or MainActivity\nRampKit.configure(\n context = this,\n appId = \"YOUR_APP_ID\"\n)\n```\n\n## Show Onboarding\n\n```kotlin\nRampKit.showOnboarding(activity)\n```\n\n## Configuration Options\n\n```kotlin\nRampKit.configure(\n context = this,\n appId = \"YOUR_APP_ID\",\n environment = RampKit.Environment.PRODUCTION,\n autoShowOnboarding = false,\n listener = object : RampKitListener {\n override fun onOnboardingFinished(payload: Map<String, Any>) {\n // Handle completion\n }\n\n override fun onPaywallRequested(payload: Map<String, Any>) {\n // Present your paywall\n }\n }\n)\n```\n";
7
+ //# sourceMappingURL=sdk-guide.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-guide.d.ts","sourceRoot":"","sources":["../../src/resources/sdk-guide.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,cAAc,kyGA8J1B,CAAC;AAEF,eAAO,MAAM,aAAa,80GA4JzB,CAAC;AAEF,eAAO,MAAM,iBAAiB,w2BA+C7B,CAAC"}