@echoform/echo-ui 0.1.1 → 0.2.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 (147) hide show
  1. package/README.md +57 -10
  2. package/dist/components/EchoChangeProfileNameModal.d.ts +59 -0
  3. package/dist/components/EchoChangeProfileNameModal.d.ts.map +1 -0
  4. package/dist/components/EchoChangeProfileNameModal.js +317 -0
  5. package/dist/components/EchoChangeProfileNameModal.js.map +1 -0
  6. package/dist/components/EchoColorPicker.d.ts +34 -0
  7. package/dist/components/EchoColorPicker.d.ts.map +1 -0
  8. package/dist/components/EchoColorPicker.js +206 -0
  9. package/dist/components/EchoColorPicker.js.map +1 -0
  10. package/dist/components/EchoConnectedAppsModal.d.ts +40 -0
  11. package/dist/components/EchoConnectedAppsModal.d.ts.map +1 -0
  12. package/dist/components/EchoConnectedAppsModal.js +220 -0
  13. package/dist/components/EchoConnectedAppsModal.js.map +1 -0
  14. package/dist/components/EchoDeleteProfilePanel.d.ts +63 -0
  15. package/dist/components/EchoDeleteProfilePanel.d.ts.map +1 -0
  16. package/dist/components/EchoDeleteProfilePanel.js +286 -0
  17. package/dist/components/EchoDeleteProfilePanel.js.map +1 -0
  18. package/dist/components/EchoDeletionIntercept.d.ts +39 -0
  19. package/dist/components/EchoDeletionIntercept.d.ts.map +1 -0
  20. package/dist/components/EchoDeletionIntercept.js +212 -0
  21. package/dist/components/EchoDeletionIntercept.js.map +1 -0
  22. package/dist/components/EchoDeletionStatusCard.d.ts +35 -0
  23. package/dist/components/EchoDeletionStatusCard.d.ts.map +1 -0
  24. package/dist/components/EchoDeletionStatusCard.js +156 -0
  25. package/dist/components/EchoDeletionStatusCard.js.map +1 -0
  26. package/dist/components/EchoEmblem.d.ts +1 -1
  27. package/dist/components/EchoEmblemPicker.d.ts +71 -0
  28. package/dist/components/EchoEmblemPicker.d.ts.map +1 -0
  29. package/dist/components/EchoEmblemPicker.js +490 -0
  30. package/dist/components/EchoEmblemPicker.js.map +1 -0
  31. package/dist/components/EchoErrorBanner.d.ts +17 -0
  32. package/dist/components/EchoErrorBanner.d.ts.map +1 -0
  33. package/dist/components/EchoErrorBanner.js +48 -0
  34. package/dist/components/EchoErrorBanner.js.map +1 -0
  35. package/dist/components/EchoFormField.d.ts +27 -0
  36. package/dist/components/EchoFormField.d.ts.map +1 -0
  37. package/dist/components/EchoFormField.js +49 -0
  38. package/dist/components/EchoFormField.js.map +1 -0
  39. package/dist/components/EchoLinkButton.d.ts +16 -0
  40. package/dist/components/EchoLinkButton.d.ts.map +1 -0
  41. package/dist/components/EchoLinkButton.js +37 -0
  42. package/dist/components/EchoLinkButton.js.map +1 -0
  43. package/dist/components/EchoMoreScreen.d.ts +41 -0
  44. package/dist/components/EchoMoreScreen.d.ts.map +1 -0
  45. package/dist/components/EchoMoreScreen.js +94 -0
  46. package/dist/components/EchoMoreScreen.js.map +1 -0
  47. package/dist/components/EchoPasswordField.d.ts +28 -0
  48. package/dist/components/EchoPasswordField.d.ts.map +1 -0
  49. package/dist/components/EchoPasswordField.js +67 -0
  50. package/dist/components/EchoPasswordField.js.map +1 -0
  51. package/dist/components/EchoPrimaryButton.d.ts +23 -0
  52. package/dist/components/EchoPrimaryButton.d.ts.map +1 -0
  53. package/dist/components/EchoPrimaryButton.js +54 -0
  54. package/dist/components/EchoPrimaryButton.js.map +1 -0
  55. package/dist/components/EchoProfileCard.d.ts +7 -3
  56. package/dist/components/EchoProfileCard.d.ts.map +1 -1
  57. package/dist/components/EchoProfileCard.js +5 -10
  58. package/dist/components/EchoProfileCard.js.map +1 -1
  59. package/dist/components/EchoProfileDivider.d.ts +14 -0
  60. package/dist/components/EchoProfileDivider.d.ts.map +1 -0
  61. package/dist/components/EchoProfileDivider.js +31 -0
  62. package/dist/components/EchoProfileDivider.js.map +1 -0
  63. package/dist/components/EchoProfileHero.d.ts +48 -0
  64. package/dist/components/EchoProfileHero.d.ts.map +1 -0
  65. package/dist/components/EchoProfileHero.js +215 -0
  66. package/dist/components/EchoProfileHero.js.map +1 -0
  67. package/dist/components/EchoProfileOverview.d.ts +18 -0
  68. package/dist/components/EchoProfileOverview.d.ts.map +1 -0
  69. package/dist/components/EchoProfileOverview.js +36 -0
  70. package/dist/components/EchoProfileOverview.js.map +1 -0
  71. package/dist/components/EchoProfileRow.d.ts +60 -0
  72. package/dist/components/EchoProfileRow.d.ts.map +1 -0
  73. package/dist/components/EchoProfileRow.js +113 -0
  74. package/dist/components/EchoProfileRow.js.map +1 -0
  75. package/dist/components/EchoProfileSection.d.ts +29 -0
  76. package/dist/components/EchoProfileSection.d.ts.map +1 -0
  77. package/dist/components/EchoProfileSection.js +58 -0
  78. package/dist/components/EchoProfileSection.js.map +1 -0
  79. package/dist/components/EchoRewardNotificationBanner.d.ts +61 -0
  80. package/dist/components/EchoRewardNotificationBanner.d.ts.map +1 -0
  81. package/dist/components/EchoRewardNotificationBanner.js +272 -0
  82. package/dist/components/EchoRewardNotificationBanner.js.map +1 -0
  83. package/dist/components/EchoSettingsRow.d.ts +24 -0
  84. package/dist/components/EchoSettingsRow.d.ts.map +1 -0
  85. package/dist/components/EchoSettingsRow.js +84 -0
  86. package/dist/components/EchoSettingsRow.js.map +1 -0
  87. package/dist/components/EchoSettingsSection.d.ts +16 -0
  88. package/dist/components/EchoSettingsSection.d.ts.map +1 -0
  89. package/dist/components/EchoSettingsSection.js +48 -0
  90. package/dist/components/EchoSettingsSection.js.map +1 -0
  91. package/dist/components/EchoSignOutButton.d.ts +28 -0
  92. package/dist/components/EchoSignOutButton.d.ts.map +1 -0
  93. package/dist/components/EchoSignOutButton.js +67 -0
  94. package/dist/components/EchoSignOutButton.js.map +1 -0
  95. package/dist/components/EchoSuccessBanner.d.ts +17 -0
  96. package/dist/components/EchoSuccessBanner.d.ts.map +1 -0
  97. package/dist/components/EchoSuccessBanner.js +48 -0
  98. package/dist/components/EchoSuccessBanner.js.map +1 -0
  99. package/dist/components/EchoSyncPanel.d.ts +165 -0
  100. package/dist/components/EchoSyncPanel.d.ts.map +1 -0
  101. package/dist/components/EchoSyncPanel.js +913 -0
  102. package/dist/components/EchoSyncPanel.js.map +1 -0
  103. package/dist/components/EchoSyncPromptModal.d.ts +87 -0
  104. package/dist/components/EchoSyncPromptModal.d.ts.map +1 -0
  105. package/dist/components/EchoSyncPromptModal.js +351 -0
  106. package/dist/components/EchoSyncPromptModal.js.map +1 -0
  107. package/dist/components/EchoTitlePicker.d.ts +72 -0
  108. package/dist/components/EchoTitlePicker.d.ts.map +1 -0
  109. package/dist/components/EchoTitlePicker.js +487 -0
  110. package/dist/components/EchoTitlePicker.js.map +1 -0
  111. package/dist/components/EchoVerificationCodeInput.d.ts +40 -0
  112. package/dist/components/EchoVerificationCodeInput.d.ts.map +1 -0
  113. package/dist/components/EchoVerificationCodeInput.js +140 -0
  114. package/dist/components/EchoVerificationCodeInput.js.map +1 -0
  115. package/dist/components/EchoWelcome.d.ts +44 -0
  116. package/dist/components/EchoWelcome.d.ts.map +1 -0
  117. package/dist/components/EchoWelcome.js +289 -0
  118. package/dist/components/EchoWelcome.js.map +1 -0
  119. package/dist/components/EchoWhyBecomeAnEchoModal.d.ts +34 -0
  120. package/dist/components/EchoWhyBecomeAnEchoModal.d.ts.map +1 -0
  121. package/dist/components/EchoWhyBecomeAnEchoModal.js +321 -0
  122. package/dist/components/EchoWhyBecomeAnEchoModal.js.map +1 -0
  123. package/dist/components/EchoformInfoButton.d.ts +27 -0
  124. package/dist/components/EchoformInfoButton.d.ts.map +1 -0
  125. package/dist/components/EchoformInfoButton.js +60 -0
  126. package/dist/components/EchoformInfoButton.js.map +1 -0
  127. package/dist/components/EchoformInfoModal.d.ts +63 -0
  128. package/dist/components/EchoformInfoModal.d.ts.map +1 -0
  129. package/dist/components/EchoformInfoModal.js +347 -0
  130. package/dist/components/EchoformInfoModal.js.map +1 -0
  131. package/dist/echoColors.d.ts +58 -0
  132. package/dist/echoColors.d.ts.map +1 -0
  133. package/dist/echoColors.js +94 -0
  134. package/dist/echoColors.js.map +1 -0
  135. package/dist/index.d.ts +64 -3
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +71 -4
  138. package/dist/index.js.map +1 -1
  139. package/dist/titleRarity.d.ts +5 -0
  140. package/dist/titleRarity.d.ts.map +1 -1
  141. package/dist/titleRarity.js +13 -0
  142. package/dist/titleRarity.js.map +1 -1
  143. package/package.json +2 -3
  144. package/dist/components/EchoUITest.d.ts +0 -14
  145. package/dist/components/EchoUITest.d.ts.map +0 -1
  146. package/dist/components/EchoUITest.js +0 -53
  147. package/dist/components/EchoUITest.js.map +0 -1
@@ -0,0 +1,321 @@
1
+ "use strict";
2
+ /**
3
+ * EchoWhyBecomeAnEchoModal
4
+ *
5
+ * Presentation-only "Why Become an Echo?" modal.
6
+ * Extracted verbatim from the Echo UI Reference welcome section.
7
+ *
8
+ * This component owns the complete shared Echoform explanatory copy and
9
+ * visual presentation. All content is fixed Echoform brand text that never
10
+ * changes per host app.
11
+ *
12
+ * DIMENSIONS
13
+ * ──────────
14
+ * ~88% of window height, max width 520, dark overlay, cyan border,
15
+ * scrollable body, fixed "Got It" footer button.
16
+ *
17
+ * ACCESSIBILITY
18
+ * ─────────────
19
+ * • accessibilityViewIsModal on the outer Modal
20
+ * • Header role on the title
21
+ * • All bullet rows accessible as text
22
+ * • Callout section labeled with accessible text
23
+ * • Close button: "Close", role button
24
+ * • Got It button: "Got it", role button, hint "Closes this popup"
25
+ *
26
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
27
+ * Canonical shared component for @echoform/echo-ui.
28
+ */
29
+ var __importDefault = (this && this.__importDefault) || function (mod) {
30
+ return (mod && mod.__esModule) ? mod : { "default": mod };
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.EchoWhyBecomeAnEchoModal = EchoWhyBecomeAnEchoModal;
34
+ const react_1 = __importDefault(require("react"));
35
+ const react_native_1 = require("react-native");
36
+ const vector_icons_1 = require("@expo/vector-icons");
37
+ const theme_1 = require("../theme");
38
+ // ─────────────────────────────────────────────────────────────────────────────
39
+ // Bullet data (static Echoform copy)
40
+ // ─────────────────────────────────────────────────────────────────────────────
41
+ const BULLETS = [
42
+ {
43
+ text: 'Keep your data synchronized across your devices.',
44
+ a11y: 'Keep your data synchronized across your devices.',
45
+ },
46
+ {
47
+ text: 'Restore your information if you replace or lose a device.',
48
+ a11y: 'Restore your information if you replace or lose a device.',
49
+ },
50
+ {
51
+ text: 'Carry your Echo Emblem, Echo Title, and future unlocks across every Echoform app.',
52
+ a11y: 'Carry your Echo Emblem, Echo Title, and future unlocks across every Echoform app.',
53
+ },
54
+ {
55
+ text: 'Access online features, cloud backup, multiplayer experiences, and community events as they become available.',
56
+ a11y: 'Access online features, cloud backup, multiplayer experiences, and community events as they become available.',
57
+ },
58
+ {
59
+ text: 'Grow one identity that evolves with every new Echoform experience.',
60
+ a11y: 'Grow one identity that evolves with every new Echoform experience.',
61
+ },
62
+ ];
63
+ // ─────────────────────────────────────────────────────────────────────────────
64
+ // Component
65
+ // ─────────────────────────────────────────────────────────────────────────────
66
+ function EchoWhyBecomeAnEchoModal({ visible, onClose, }) {
67
+ const modalCardH = Math.round(react_native_1.Dimensions.get('window').height * 0.88);
68
+ return (<react_native_1.Modal visible={visible} transparent animationType="fade" onRequestClose={onClose} accessibilityViewIsModal>
69
+ <react_native_1.View style={styles.overlay}>
70
+ <react_native_1.View style={[styles.card, { height: modalCardH }]}>
71
+
72
+ {/* Header */}
73
+ <react_native_1.View style={styles.header}>
74
+ <react_native_1.Text style={styles.headerTitle} accessibilityRole="header">
75
+ Why Become an Echo?
76
+ </react_native_1.Text>
77
+ <react_native_1.Pressable onPress={onClose} hitSlop={8} style={({ pressed }) => (pressed ? { opacity: 0.6 } : undefined)} accessibilityLabel="Close" accessibilityRole="button">
78
+ <vector_icons_1.MaterialIcons name="close" size={24} color={theme_1.COLORS.textSecondary}/>
79
+ </react_native_1.Pressable>
80
+ </react_native_1.View>
81
+
82
+ {/* Scrollable body */}
83
+ <react_native_1.View style={styles.scrollRegion}>
84
+ <react_native_1.ScrollView style={styles.scrollView} contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator nestedScrollEnabled keyboardShouldPersistTaps="handled">
85
+ <react_native_1.Text style={styles.sectionHeading} accessibilityRole="header" accessibilityLabel="Welcome to Echoform.">
86
+ Welcome to Echoform.
87
+ </react_native_1.Text>
88
+
89
+ <react_native_1.Text style={styles.bodyText} accessibilityLabel="Echoform was created with a simple goal:">
90
+ Echoform was created with a simple goal:
91
+ </react_native_1.Text>
92
+
93
+ <react_native_1.Text style={styles.emphasis}>
94
+ To build an accessible world with Echoes like you.
95
+ </react_native_1.Text>
96
+
97
+ <react_native_1.Text style={styles.bodyText} accessibilityLabel="An Echo is a member of the Echoform community.">
98
+ An{' '}
99
+ <react_native_1.Text style={styles.inlineBold}>Echo</react_native_1.Text>
100
+ {' '}is a member of the Echoform community.
101
+ </react_native_1.Text>
102
+
103
+ <react_native_1.Text style={styles.bodyText} accessibilityLabel="Every Echoform app can be enjoyed on its own, and you're always welcome to continue offline. Creating an Echo Profile is completely optional—but it unlocks a connected experience that grows with you.">
104
+ Every Echoform app can be enjoyed on its own, and you're always
105
+ welcome to continue offline. Creating an{' '}
106
+ <react_native_1.Text style={styles.inlineBold}>Echo Profile</react_native_1.Text>
107
+ {' '}is completely optional—but it unlocks a connected experience
108
+ that grows with you.
109
+ </react_native_1.Text>
110
+
111
+ <react_native_1.Text style={styles.subheading}>With an Echo Profile, you can:</react_native_1.Text>
112
+
113
+ {BULLETS.map(({ text, a11y }, i) => (<react_native_1.View key={i} style={styles.bulletRow} accessible accessibilityRole="text" accessibilityLabel={a11y}>
114
+ <react_native_1.Text style={styles.bulletDot} importantForAccessibility="no" accessibilityElementsHidden>
115
+
116
+ </react_native_1.Text>
117
+ <react_native_1.Text style={styles.bulletText} importantForAccessibility="no" accessibilityElementsHidden>
118
+ {text}
119
+ </react_native_1.Text>
120
+ </react_native_1.View>))}
121
+
122
+ <react_native_1.Text style={styles.bodyText}>
123
+ Your Echo Profile is not just for this app.
124
+ </react_native_1.Text>
125
+
126
+ <react_native_1.Text style={styles.emphasis} accessibilityLabel="It is your place within the Echoform ecosystem.">
127
+ It is your place within the Echoform ecosystem.
128
+ </react_native_1.Text>
129
+
130
+ {/* Callout */}
131
+ <react_native_1.View style={styles.callout}>
132
+ <react_native_1.Text style={styles.calloutHeading}>One Echo Profile.</react_native_1.Text>
133
+ <react_native_1.Text style={styles.calloutHeading} accessibilityLabel="Every Echoform app.">
134
+ Every Echoform app.
135
+ </react_native_1.Text>
136
+ <react_native_1.Text style={styles.calloutBody}>Every Echo has a story.</react_native_1.Text>
137
+ <react_native_1.Text style={[styles.calloutBody, styles.calloutBodyStrong]}>
138
+ This is where yours begins.
139
+ </react_native_1.Text>
140
+ </react_native_1.View>
141
+
142
+ <react_native_1.Text style={styles.footer}>
143
+ Thank you for helping us build an accessible world with Echoes like you.
144
+ </react_native_1.Text>
145
+ </react_native_1.ScrollView>
146
+ </react_native_1.View>
147
+
148
+ {/* Got It footer */}
149
+ <react_native_1.Pressable onPress={onClose} style={({ pressed }) => [
150
+ styles.gotItBtn,
151
+ pressed && { opacity: 0.75 },
152
+ ]} accessibilityLabel="Got it" accessibilityRole="button" accessibilityHint="Closes this popup">
153
+ <react_native_1.Text style={styles.gotItText}>Got It</react_native_1.Text>
154
+ </react_native_1.Pressable>
155
+
156
+ </react_native_1.View>
157
+ </react_native_1.View>
158
+ </react_native_1.Modal>);
159
+ }
160
+ // ─────────────────────────────────────────────────────────────────────────────
161
+ // Styles
162
+ // ─────────────────────────────────────────────────────────────────────────────
163
+ const styles = react_native_1.StyleSheet.create({
164
+ overlay: {
165
+ flex: 1,
166
+ justifyContent: 'center',
167
+ alignItems: 'center',
168
+ paddingHorizontal: 20,
169
+ paddingVertical: 24,
170
+ backgroundColor: 'rgba(0,0,0,0.75)',
171
+ },
172
+ card: {
173
+ width: '100%',
174
+ maxWidth: 520,
175
+ backgroundColor: theme_1.COLORS.bg,
176
+ borderRadius: 24,
177
+ overflow: 'hidden',
178
+ borderWidth: 1,
179
+ borderColor: theme_1.COLORS.neonCyan + '33',
180
+ },
181
+ // Header
182
+ header: {
183
+ flexDirection: 'row',
184
+ alignItems: 'center',
185
+ justifyContent: 'space-between',
186
+ paddingHorizontal: theme_1.SPACING.lg,
187
+ paddingVertical: theme_1.SPACING.md,
188
+ borderBottomWidth: 1,
189
+ borderBottomColor: theme_1.COLORS.border,
190
+ },
191
+ headerTitle: {
192
+ fontSize: theme_1.FONTS.lg,
193
+ fontWeight: '700',
194
+ color: theme_1.COLORS.textPrimary,
195
+ },
196
+ // Scroll region
197
+ scrollRegion: {
198
+ flex: 1,
199
+ minHeight: 0,
200
+ },
201
+ scrollView: {
202
+ flex: 1,
203
+ },
204
+ scrollContent: {
205
+ paddingHorizontal: theme_1.SPACING.lg,
206
+ paddingTop: theme_1.SPACING.md,
207
+ paddingBottom: theme_1.SPACING.xl,
208
+ },
209
+ // Typography
210
+ sectionHeading: {
211
+ fontSize: theme_1.FONTS.xl,
212
+ fontWeight: '800',
213
+ color: theme_1.COLORS.textPrimary,
214
+ letterSpacing: 0.3,
215
+ marginBottom: theme_1.SPACING.sm,
216
+ },
217
+ bodyText: {
218
+ fontSize: theme_1.FONTS.md,
219
+ color: theme_1.COLORS.textSecondary,
220
+ lineHeight: 26,
221
+ marginBottom: theme_1.SPACING.sm,
222
+ },
223
+ emphasis: {
224
+ fontSize: theme_1.FONTS.md,
225
+ fontWeight: '700',
226
+ color: theme_1.COLORS.neonCyan,
227
+ lineHeight: 26,
228
+ marginBottom: theme_1.SPACING.sm,
229
+ },
230
+ inlineBold: {
231
+ fontWeight: '700',
232
+ color: theme_1.COLORS.textPrimary,
233
+ },
234
+ subheading: {
235
+ fontSize: theme_1.FONTS.md,
236
+ fontWeight: '700',
237
+ color: theme_1.COLORS.textPrimary,
238
+ marginTop: theme_1.SPACING.sm,
239
+ marginBottom: theme_1.SPACING.xs,
240
+ },
241
+ // Bullets
242
+ bulletRow: {
243
+ flexDirection: 'row',
244
+ alignItems: 'flex-start',
245
+ gap: theme_1.SPACING.sm,
246
+ paddingLeft: theme_1.SPACING.sm,
247
+ marginBottom: theme_1.SPACING.xs,
248
+ },
249
+ bulletDot: {
250
+ fontSize: theme_1.FONTS.lg,
251
+ color: theme_1.COLORS.neonCyan,
252
+ lineHeight: 26,
253
+ marginTop: 1,
254
+ },
255
+ bulletText: {
256
+ flex: 1,
257
+ fontSize: theme_1.FONTS.md,
258
+ color: theme_1.COLORS.textSecondary,
259
+ lineHeight: 26,
260
+ },
261
+ // Callout
262
+ callout: {
263
+ backgroundColor: theme_1.COLORS.neonCyan + '0C',
264
+ borderRadius: theme_1.RADIUS.xl,
265
+ borderWidth: 1,
266
+ borderColor: theme_1.COLORS.neonCyan + '33',
267
+ padding: theme_1.SPACING.xl,
268
+ gap: theme_1.SPACING.sm,
269
+ alignItems: 'center',
270
+ marginTop: theme_1.SPACING.sm,
271
+ marginBottom: theme_1.SPACING.md,
272
+ },
273
+ calloutHeading: {
274
+ fontSize: theme_1.FONTS.lg,
275
+ fontWeight: '800',
276
+ color: theme_1.COLORS.neonCyan,
277
+ textAlign: 'center',
278
+ letterSpacing: 0.3,
279
+ },
280
+ calloutBody: {
281
+ fontSize: theme_1.FONTS.md,
282
+ color: theme_1.COLORS.textSecondary,
283
+ textAlign: 'center',
284
+ lineHeight: 24,
285
+ marginTop: theme_1.SPACING.xs,
286
+ },
287
+ calloutBodyStrong: {
288
+ fontWeight: '700',
289
+ color: theme_1.COLORS.textPrimary,
290
+ },
291
+ // Footer text
292
+ footer: {
293
+ fontSize: theme_1.FONTS.sm,
294
+ color: theme_1.COLORS.textMuted,
295
+ textAlign: 'center',
296
+ lineHeight: 22,
297
+ fontStyle: 'italic',
298
+ marginTop: theme_1.SPACING.sm,
299
+ },
300
+ // Got It button
301
+ gotItBtn: {
302
+ marginHorizontal: theme_1.SPACING.lg,
303
+ marginBottom: theme_1.SPACING.md,
304
+ marginTop: theme_1.SPACING.sm,
305
+ backgroundColor: theme_1.COLORS.neonCyan + '18',
306
+ borderRadius: theme_1.RADIUS.lg,
307
+ borderWidth: 1.5,
308
+ borderColor: theme_1.COLORS.neonCyan + 'CC',
309
+ paddingVertical: theme_1.SPACING.md,
310
+ alignItems: 'center',
311
+ justifyContent: 'center',
312
+ minHeight: 52,
313
+ },
314
+ gotItText: {
315
+ fontSize: theme_1.FONTS.md,
316
+ fontWeight: '700',
317
+ color: theme_1.COLORS.neonCyan,
318
+ letterSpacing: 0.3,
319
+ },
320
+ });
321
+ //# sourceMappingURL=EchoWhyBecomeAnEchoModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoWhyBecomeAnEchoModal.js","sourceRoot":"","sources":["../../src/components/EchoWhyBecomeAnEchoModal.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;;;;AAuDH,4DA8JC;AAnND,kDAA0B;AAC1B,+CAQsB;AACtB,qDAAmD;AACnD,oCAA0D;AAW1D,gFAAgF;AAChF,qCAAqC;AACrC,gFAAgF;AAEhF,MAAM,OAAO,GAA0C;IACrD;QACE,IAAI,EAAE,kDAAkD;QACxD,IAAI,EAAE,kDAAkD;KACzD;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,IAAI,EAAE,2DAA2D;KAClE;IACD;QACE,IAAI,EAAE,mFAAmF;QACzF,IAAI,EAAE,mFAAmF;KAC1F;IACD;QACE,IAAI,EAAE,+GAA+G;QACrH,IAAI,EAAE,+GAA+G;KACtH;IACD;QACE,IAAI,EAAE,oEAAoE;QAC1E,IAAI,EAAE,oEAAoE;KAC3E;CACF,CAAC;AAEF,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,SAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,OAAO,GACuB;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtE,OAAO,CACL,CAAC,oBAAK,CACJ,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,WAAW,CACX,aAAa,CAAC,MAAM,CACpB,cAAc,CAAC,CAAC,OAAO,CAAC,CACxB,wBAAwB,CAExB;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B;QAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAEjD;;UAAA,CAAC,YAAY,CACb;UAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB;YAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CACzD;;YACF,EAAE,mBAAI,CACN;YAAA,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,OAAO,CAAC,CAAC,CAAC,CAAC,CACX,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CACjE,kBAAkB,CAAC,OAAO,CAC1B,iBAAiB,CAAC,QAAQ,CAE1B;cAAA,CAAC,4BAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,cAAM,CAAC,aAAa,CAAC,EACpE;YAAA,EAAE,wBAAS,CACb;UAAA,EAAE,mBAAI,CAEN;;UAAA,CAAC,qBAAqB,CACtB;UAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/B;YAAA,CAAC,yBAAU,CACT,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CACzB,qBAAqB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAC5C,4BAA4B,CAC5B,mBAAmB,CACnB,yBAAyB,CAAC,SAAS,CAEnC;cAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAC7B,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,sBAAsB,CAEzC;;cACF,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,kBAAkB,CAAC,0CAA0C,CAE7D;;cACF,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC3B;;cACF,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,kBAAkB,CAAC,gDAAgD,CAEnE;kBAAE,CAAC,GAAG,CACN;gBAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,mBAAI,CAC1C;gBAAA,CAAC,GAAG,CAAC;cACP,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,kBAAkB,CAAC,yMAAyM,CAE5N;;wDACwC,CAAC,GAAG,CAC5C;gBAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,mBAAI,CAClD;gBAAA,CAAC,GAAG,CAAC;;cAEP,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,8BAA8B,EAAE,mBAAI,CAEpE;;cAAA,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAClC,CAAC,mBAAI,CACH,GAAG,CAAC,CAAC,CAAC,CAAC,CACP,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACxB,UAAU,CACV,iBAAiB,CAAC,MAAM,CACxB,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAEzB;kBAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CACxB,yBAAyB,CAAC,IAAI,CAC9B,2BAA2B,CAE3B;;kBACF,EAAE,mBAAI,CACN;kBAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CACzB,yBAAyB,CAAC,IAAI,CAC9B,2BAA2B,CAE3B;oBAAA,CAAC,IAAI,CACP;kBAAA,EAAE,mBAAI,CACR;gBAAA,EAAE,mBAAI,CAAC,CACR,CAAC,CAEF;;cAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAC3B;;cACF,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,kBAAkB,CAAC,iDAAiD,CAEpE;;cACF,EAAE,mBAAI,CAEN;;cAAA,CAAC,aAAa,CACd;cAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B;gBAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,iBAAiB,EAAE,mBAAI,CAC3D;gBAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAC7B,kBAAkB,CAAC,qBAAqB,CAExC;;gBACF,EAAE,mBAAI,CACN;gBAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,uBAAuB,EAAE,mBAAI,CAC9D;gBAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAC1D;;gBACF,EAAE,mBAAI,CACR;cAAA,EAAE,mBAAI,CAEN;;cAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB;;cACF,EAAE,mBAAI,CACR;YAAA,EAAE,yBAAU,CACd;UAAA,EAAE,mBAAI,CAEN;;UAAA,CAAC,mBAAmB,CACpB;UAAA,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ;YACf,OAAO,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC7B,CAAC,CACF,kBAAkB,CAAC,QAAQ,CAC3B,iBAAiB,CAAC,QAAQ,CAC1B,iBAAiB,CAAC,mBAAmB,CAErC;YAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,mBAAI,CAC7C;UAAA,EAAE,wBAAS,CAEb;;QAAA,EAAE,mBAAI,CACR;MAAA,EAAE,mBAAI,CACR;IAAA,EAAE,oBAAK,CAAC,CACT,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE;QACP,IAAI,EAAa,CAAC;QAClB,cAAc,EAAG,QAAQ;QACzB,UAAU,EAAO,QAAQ;QACzB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,kBAAkB;KACpC;IACD,IAAI,EAAE;QACJ,KAAK,EAAY,MAAM;QACvB,QAAQ,EAAS,GAAG;QACpB,eAAe,EAAE,cAAM,CAAC,EAAE;QAC1B,YAAY,EAAK,EAAE;QACnB,QAAQ,EAAS,QAAQ;QACzB,WAAW,EAAM,CAAC;QAClB,WAAW,EAAM,cAAM,CAAC,QAAQ,GAAG,IAAI;KACxC;IAED,SAAS;IACT,MAAM,EAAE;QACN,aAAa,EAAM,KAAK;QACxB,UAAU,EAAS,QAAQ;QAC3B,cAAc,EAAK,eAAe;QAClC,iBAAiB,EAAE,eAAO,CAAC,EAAE;QAC7B,eAAe,EAAI,eAAO,CAAC,EAAE;QAC7B,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,cAAM,CAAC,MAAM;KACjC;IACD,WAAW,EAAE;QACX,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,WAAW;KAC/B;IAED,gBAAgB;IAChB,YAAY,EAAE;QACZ,IAAI,EAAO,CAAC;QACZ,SAAS,EAAE,CAAC;KACb;IACD,UAAU,EAAE;QACV,IAAI,EAAE,CAAC;KACR;IACD,aAAa,EAAE;QACb,iBAAiB,EAAE,eAAO,CAAC,EAAE;QAC7B,UAAU,EAAS,eAAO,CAAC,EAAE;QAC7B,aAAa,EAAM,eAAO,CAAC,EAAE;KAC9B;IAED,aAAa;IACb,cAAc,EAAE;QACd,QAAQ,EAAO,aAAK,CAAC,EAAE;QACvB,UAAU,EAAK,KAAK;QACpB,KAAK,EAAU,cAAM,CAAC,WAAW;QACjC,aAAa,EAAE,GAAG;QAClB,YAAY,EAAG,eAAO,CAAC,EAAE;KAC1B;IACD,QAAQ,EAAE;QACR,QAAQ,EAAM,aAAK,CAAC,EAAE;QACtB,KAAK,EAAS,cAAM,CAAC,aAAa;QAClC,UAAU,EAAI,EAAE;QAChB,YAAY,EAAE,eAAO,CAAC,EAAE;KACzB;IACD,QAAQ,EAAE;QACR,QAAQ,EAAM,aAAK,CAAC,EAAE;QACtB,UAAU,EAAI,KAAK;QACnB,KAAK,EAAS,cAAM,CAAC,QAAQ;QAC7B,UAAU,EAAI,EAAE;QAChB,YAAY,EAAE,eAAO,CAAC,EAAE;KACzB;IACD,UAAU,EAAE;QACV,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,WAAW;KAC/B;IACD,UAAU,EAAE;QACV,QAAQ,EAAM,aAAK,CAAC,EAAE;QACtB,UAAU,EAAI,KAAK;QACnB,KAAK,EAAS,cAAM,CAAC,WAAW;QAChC,SAAS,EAAK,eAAO,CAAC,EAAE;QACxB,YAAY,EAAE,eAAO,CAAC,EAAE;KACzB;IAED,UAAU;IACV,SAAS,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,UAAU,EAAK,YAAY;QAC3B,GAAG,EAAY,eAAO,CAAC,EAAE;QACzB,WAAW,EAAI,eAAO,CAAC,EAAE;QACzB,YAAY,EAAG,eAAO,CAAC,EAAE;KAC1B;IACD,SAAS,EAAE;QACT,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,QAAQ;QAC3B,UAAU,EAAE,EAAE;QACd,SAAS,EAAG,CAAC;KACd;IACD,UAAU,EAAE;QACV,IAAI,EAAQ,CAAC;QACb,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,aAAa;QAChC,UAAU,EAAE,EAAE;KACf;IAED,UAAU;IACV,OAAO,EAAE;QACP,eAAe,EAAE,cAAM,CAAC,QAAQ,GAAG,IAAI;QACvC,YAAY,EAAK,cAAM,CAAC,EAAE;QAC1B,WAAW,EAAM,CAAC;QAClB,WAAW,EAAM,cAAM,CAAC,QAAQ,GAAG,IAAI;QACvC,OAAO,EAAU,eAAO,CAAC,EAAE;QAC3B,GAAG,EAAc,eAAO,CAAC,EAAE;QAC3B,UAAU,EAAO,QAAQ;QACzB,SAAS,EAAQ,eAAO,CAAC,EAAE;QAC3B,YAAY,EAAK,eAAO,CAAC,EAAE;KAC5B;IACD,cAAc,EAAE;QACd,QAAQ,EAAO,aAAK,CAAC,EAAE;QACvB,UAAU,EAAK,KAAK;QACpB,KAAK,EAAU,cAAM,CAAC,QAAQ;QAC9B,SAAS,EAAM,QAAQ;QACvB,aAAa,EAAE,GAAG;KACnB;IACD,WAAW,EAAE;QACX,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,aAAa;QAChC,SAAS,EAAG,QAAQ;QACpB,UAAU,EAAE,EAAE;QACd,SAAS,EAAG,eAAO,CAAC,EAAE;KACvB;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,WAAW;KAC/B;IAED,cAAc;IACd,MAAM,EAAE;QACN,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,SAAS;QAC5B,SAAS,EAAG,QAAQ;QACpB,UAAU,EAAE,EAAE;QACd,SAAS,EAAG,QAAQ;QACpB,SAAS,EAAG,eAAO,CAAC,EAAE;KACvB;IAED,gBAAgB;IAChB,QAAQ,EAAE;QACR,gBAAgB,EAAE,eAAO,CAAC,EAAE;QAC5B,YAAY,EAAM,eAAO,CAAC,EAAE;QAC5B,SAAS,EAAS,eAAO,CAAC,EAAE;QAC5B,eAAe,EAAG,cAAM,CAAC,QAAQ,GAAG,IAAI;QACxC,YAAY,EAAM,cAAM,CAAC,EAAE;QAC3B,WAAW,EAAO,GAAG;QACrB,WAAW,EAAO,cAAM,CAAC,QAAQ,GAAG,IAAI;QACxC,eAAe,EAAG,eAAO,CAAC,EAAE;QAC5B,UAAU,EAAQ,QAAQ;QAC1B,cAAc,EAAI,QAAQ;QAC1B,SAAS,EAAS,EAAE;KACrB;IACD,SAAS,EAAE;QACT,QAAQ,EAAO,aAAK,CAAC,EAAE;QACvB,UAAU,EAAK,KAAK;QACpB,KAAK,EAAU,cAAM,CAAC,QAAQ;QAC9B,aAAa,EAAE,GAAG;KACnB;CACF,CAAC,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * EchoformInfoButton
3
+ *
4
+ * Presentation-only Echoform logo button used in the Echo Profile header.
5
+ * Extracted from the Echo UI Reference account screen menu button.
6
+ *
7
+ * Renders a 44×44 circular image button using the host-supplied logo.
8
+ *
9
+ * ACCESSIBILITY
10
+ * ─────────────
11
+ * • accessibilityLabel: "Echoform Productions Information and Support"
12
+ * • accessibilityRole: "button"
13
+ * • accessibilityHint: "Opens information, privacy, and support options"
14
+ *
15
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
16
+ * Canonical shared component for @echoform/echo-ui.
17
+ */
18
+ import React from 'react';
19
+ import type { ImageSource } from 'expo-image';
20
+ export type EchoformInfoButtonProps = {
21
+ /** Echoform logo image to display inside the button. */
22
+ logoSource: ImageSource;
23
+ /** Called when the user taps the logo button. */
24
+ onPress: () => void;
25
+ };
26
+ export declare function EchoformInfoButton({ logoSource, onPress, }: EchoformInfoButtonProps): React.JSX.Element;
27
+ //# sourceMappingURL=EchoformInfoButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoformInfoButton.d.ts","sourceRoot":"","sources":["../../src/components/EchoformInfoButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,MAAM,MAAM,uBAAuB,GAAG;IACpC,wDAAwD;IACxD,UAAU,EAAE,WAAW,CAAC;IACxB,iDAAiD;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAMF,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,OAAO,GACR,EAAE,uBAAuB,qBAqBzB"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * EchoformInfoButton
4
+ *
5
+ * Presentation-only Echoform logo button used in the Echo Profile header.
6
+ * Extracted from the Echo UI Reference account screen menu button.
7
+ *
8
+ * Renders a 44×44 circular image button using the host-supplied logo.
9
+ *
10
+ * ACCESSIBILITY
11
+ * ─────────────
12
+ * • accessibilityLabel: "Echoform Productions Information and Support"
13
+ * • accessibilityRole: "button"
14
+ * • accessibilityHint: "Opens information, privacy, and support options"
15
+ *
16
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
17
+ * Canonical shared component for @echoform/echo-ui.
18
+ */
19
+ var __importDefault = (this && this.__importDefault) || function (mod) {
20
+ return (mod && mod.__esModule) ? mod : { "default": mod };
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.EchoformInfoButton = EchoformInfoButton;
24
+ const react_1 = __importDefault(require("react"));
25
+ const react_native_1 = require("react-native");
26
+ const expo_image_1 = require("expo-image");
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+ // Component
29
+ // ─────────────────────────────────────────────────────────────────────────────
30
+ function EchoformInfoButton({ logoSource, onPress, }) {
31
+ return (<react_native_1.View style={styles.wrapper}>
32
+ <react_native_1.Pressable onPress={onPress} style={({ pressed }) => [styles.btn, pressed ? { opacity: 0.7 } : null]} accessibilityLabel="Echoform Productions Information and Support" accessibilityRole="button" accessibilityHint="Opens information, privacy, and support options" hitSlop={8}>
33
+ <expo_image_1.Image source={logoSource} style={styles.logo} contentFit="contain" accessible={false} importantForAccessibility="no"/>
34
+ </react_native_1.Pressable>
35
+ </react_native_1.View>);
36
+ }
37
+ // ─────────────────────────────────────────────────────────────────────────────
38
+ // Styles
39
+ // ─────────────────────────────────────────────────────────────────────────────
40
+ const styles = react_native_1.StyleSheet.create({
41
+ wrapper: {
42
+ width: 44,
43
+ height: 44,
44
+ alignItems: 'flex-end',
45
+ justifyContent: 'center',
46
+ },
47
+ btn: {
48
+ width: 44,
49
+ height: 44,
50
+ borderRadius: 22,
51
+ overflow: 'hidden',
52
+ alignItems: 'center',
53
+ justifyContent: 'center',
54
+ },
55
+ logo: {
56
+ width: 44,
57
+ height: 44,
58
+ },
59
+ });
60
+ //# sourceMappingURL=EchoformInfoButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoformInfoButton.js","sourceRoot":"","sources":["../../src/components/EchoformInfoButton.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;AAsBH,gDAwBC;AA5CD,kDAA0B;AAC1B,+CAA2D;AAC3D,2CAAmC;AAcnC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,SAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,OAAO,GACiB;IACxB,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B;MAAA,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxE,kBAAkB,CAAC,8CAA8C,CACjE,iBAAiB,CAAC,QAAQ,CAC1B,iBAAiB,CAAC,iDAAiD,CACnE,OAAO,CAAC,CAAC,CAAC,CAAC,CAEX;QAAA,CAAC,kBAAK,CACJ,MAAM,CAAC,CAAC,UAAU,CAAC,CACnB,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACnB,UAAU,CAAC,SAAS,CACpB,UAAU,CAAC,CAAC,KAAK,CAAC,CAClB,yBAAyB,CAAC,IAAI,EAElC;MAAA,EAAE,wBAAS,CACb;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE;QACP,KAAK,EAAW,EAAE;QAClB,MAAM,EAAU,EAAE;QAClB,UAAU,EAAM,UAAU;QAC1B,cAAc,EAAE,QAAQ;KACzB;IACD,GAAG,EAAE;QACH,KAAK,EAAW,EAAE;QAClB,MAAM,EAAU,EAAE;QAClB,YAAY,EAAI,EAAE;QAClB,QAAQ,EAAQ,QAAQ;QACxB,UAAU,EAAM,QAAQ;QACxB,cAAc,EAAE,QAAQ;KACzB;IACD,IAAI,EAAE;QACJ,KAAK,EAAG,EAAE;QACV,MAAM,EAAE,EAAE;KACX;CACF,CAAC,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * EchoformInfoModal
3
+ *
4
+ * Presentation-only Echoform information and support modal.
5
+ * Extracted from the Echo UI Reference account screen.
6
+ *
7
+ * Renders:
8
+ * • Page-sheet (iOS) / full-screen (other) modal
9
+ * • Echoform heading and close button
10
+ * • Host-supplied Echoform logo
11
+ * • "Echoform" brand name
12
+ * • Host appName displayed as the tagline
13
+ * • Privacy Policy card (action delegated to host)
14
+ * • CONTACT SUPPORT section
15
+ * • Support email with copy button (action delegated to host)
16
+ * • Suggested Format bulleted list
17
+ *
18
+ * HOST RESPONSIBILITIES
19
+ * ─────────────────────
20
+ * • Opening/closing state
21
+ * • Privacy policy URL navigation (onPrivacyPolicy)
22
+ * • Clipboard write (onCopySupportEmail)
23
+ * • Safe-area insets (topInset / bottomInset)
24
+ *
25
+ * The package does NOT import expo-clipboard, Linking, Expo Router,
26
+ * auth, contexts, or services.
27
+ *
28
+ * ACCESSIBILITY
29
+ * ─────────────
30
+ * • accessibilityViewIsModal on the outer Modal
31
+ * • Header role on "Echoform" title
32
+ * • Close button: "Close Echoform", role button
33
+ * • Privacy Policy: role link, hint opens in browser
34
+ * • Support email: selectable, descriptive accessibility label
35
+ * • Copy email: role button, copied/check state
36
+ *
37
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
38
+ * Canonical shared component for @echoform/echo-ui.
39
+ */
40
+ import React from 'react';
41
+ import type { ImageSource } from 'expo-image';
42
+ export type EchoformInfoModalProps = {
43
+ visible: boolean;
44
+ /** Echoform logo image displayed in the modal body. */
45
+ logoSource: ImageSource;
46
+ /** Host application name displayed as the tagline below "Echoform". */
47
+ appName: string;
48
+ /** Support email address. Defaults to support@echoformproductions.com. */
49
+ supportEmail?: string;
50
+ /** Whether the email address has just been copied. Defaults to false. */
51
+ emailCopied?: boolean;
52
+ onClose: () => void;
53
+ /** Host performs URL navigation for the privacy policy. */
54
+ onPrivacyPolicy: () => void;
55
+ /** Host performs clipboard write and manages emailCopied state. */
56
+ onCopySupportEmail: () => void;
57
+ /** Top inset supplied by the host. Defaults to 0. */
58
+ topInset?: number;
59
+ /** Bottom inset supplied by the host. Defaults to 0. */
60
+ bottomInset?: number;
61
+ };
62
+ export declare function EchoformInfoModal({ visible, logoSource, appName, supportEmail, emailCopied, onClose, onPrivacyPolicy, onCopySupportEmail, topInset, bottomInset, }: EchoformInfoModalProps): React.JSX.Element;
63
+ //# sourceMappingURL=EchoformInfoModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoformInfoModal.d.ts","sourceRoot":"","sources":["../../src/components/EchoformInfoModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAQ,OAAO,CAAC;IACvB,uDAAuD;IACvD,UAAU,EAAK,WAAW,CAAC;IAC3B,uEAAuE;IACvE,OAAO,EAAQ,MAAM,CAAC;IACtB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,WAAW,CAAC,EAAG,OAAO,CAAC;IACvB,OAAO,EAAe,MAAM,IAAI,CAAC;IACjC,2DAA2D;IAC3D,eAAe,EAAO,MAAM,IAAI,CAAC;IACjC,mEAAmE;IACnE,kBAAkB,EAAI,MAAM,IAAI,CAAC;IACjC,qDAAqD;IACrD,QAAQ,CAAC,EAAM,MAAM,CAAC;IACtB,wDAAwD;IACxD,WAAW,CAAC,EAAG,MAAM,CAAC;CACvB,CAAC;AAkBF,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,UAAU,EACV,OAAO,EACP,YAAiD,EACjD,WAAqB,EACrB,OAAO,EACP,eAAe,EACf,kBAAkB,EAClB,QAAiB,EACjB,WAAiB,GAClB,EAAE,sBAAsB,qBA8JxB"}