@echoform/echo-ui 0.1.1 → 0.2.1

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 +47 -0
  44. package/dist/components/EchoMoreScreen.d.ts.map +1 -0
  45. package/dist/components/EchoMoreScreen.js +121 -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,286 @@
1
+ "use strict";
2
+ /**
3
+ * EchoDeleteProfilePanel
4
+ *
5
+ * Presentation-only Delete Echo Profile trigger + expanded confirmation panel.
6
+ * Extracted from the delete-account section of the Echo UI Reference account screen.
7
+ *
8
+ * COLLAPSED STATE
9
+ * ───────────────
10
+ * Shows a discrete "Delete Echo Profile" text trigger.
11
+ *
12
+ * EXPANDED STATE
13
+ * ──────────────
14
+ * Shows the full confirmation panel with:
15
+ * • "Before you delete:" info block with five canonical warnings
16
+ * • DELETE confirmation text field
17
+ * • Cancel and Schedule Deletion buttons
18
+ *
19
+ * LOCAL DATA WARNING
20
+ * ──────────────────
21
+ * The text "Your local [hostAppName] data on this device is not affected."
22
+ * uses the supplied hostAppName so this component is host-app neutral.
23
+ * Default: "this app".
24
+ *
25
+ * CONFIRM BUTTON GUARD
26
+ * ────────────────────
27
+ * The Schedule Deletion button is only enabled when:
28
+ * confirmationText.trim() === 'DELETE' && !loading
29
+ * The package enforces this UI condition; onConfirm remains host-owned.
30
+ *
31
+ * HOST RESPONSIBILITIES
32
+ * ─────────────────────
33
+ * • expanded / confirmationText state
34
+ * • onOpen / onChangeConfirmationText / onCancel / onConfirm handlers
35
+ * • Actual account-deletion RPC (onConfirm)
36
+ * • Alerts / announcements after deletion is scheduled
37
+ *
38
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
39
+ * Canonical shared component for @echoform/echo-ui.
40
+ */
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.EchoDeleteProfilePanel = EchoDeleteProfilePanel;
46
+ const react_1 = __importDefault(require("react"));
47
+ const react_native_1 = require("react-native");
48
+ const vector_icons_1 = require("@expo/vector-icons");
49
+ const theme_1 = require("../theme");
50
+ // ─────────────────────────────────────────────────────────────────────────────
51
+ // Warning items (canonical five)
52
+ // ─────────────────────────────────────────────────────────────────────────────
53
+ function warningItems(hostAppName) {
54
+ return [
55
+ {
56
+ icon: 'schedule',
57
+ color: theme_1.COLORS.warning,
58
+ text: 'A 15-day grace period begins. Restore your profile at any time before it expires.',
59
+ },
60
+ {
61
+ icon: 'cloud-off',
62
+ color: theme_1.COLORS.error,
63
+ text: 'All Echoform cloud data associated with your Echo Profile is permanently deleted.',
64
+ },
65
+ {
66
+ icon: 'phone-android',
67
+ color: theme_1.COLORS.neonBlue,
68
+ text: `Your local ${hostAppName} data on this device is not affected.`,
69
+ },
70
+ {
71
+ icon: 'email',
72
+ color: theme_1.COLORS.textMuted,
73
+ text: 'Your email address becomes available for a new account registration.',
74
+ },
75
+ {
76
+ icon: 'warning-amber',
77
+ color: theme_1.COLORS.error,
78
+ text: 'This cannot be undone after the grace period expires.',
79
+ },
80
+ ];
81
+ }
82
+ // ─────────────────────────────────────────────────────────────────────────────
83
+ // Component
84
+ // ─────────────────────────────────────────────────────────────────────────────
85
+ function EchoDeleteProfilePanel({ expanded, confirmationText, loading = false, hostAppName = 'this app', onOpen, onChangeConfirmationText, onCancel, onConfirm, }) {
86
+ const canConfirm = confirmationText.trim() === 'DELETE' && !loading;
87
+ const a11yInfoLabel = [
88
+ 'Before you delete:',
89
+ 'A 15-day grace period begins. Restore your profile at any time before it expires.',
90
+ 'All Echoform cloud data associated with your Echo Profile is permanently deleted.',
91
+ `Your local ${hostAppName} data on this device is not affected.`,
92
+ 'Your email address becomes available for a new account registration.',
93
+ 'This cannot be undone after the grace period expires.',
94
+ ].join(' ');
95
+ if (!expanded) {
96
+ return (<react_native_1.View style={styles.triggerWrap}>
97
+ <react_native_1.Pressable onPress={onOpen} style={({ pressed }) => [
98
+ styles.trigger,
99
+ pressed && { opacity: 0.75 },
100
+ ]} accessibilityLabel="Delete Echo Profile" accessibilityRole="button" accessibilityHint="Opens the account deletion section">
101
+ <vector_icons_1.MaterialIcons name="delete-forever" size={18} color={theme_1.COLORS.error} importantForAccessibility="no" accessibilityElementsHidden/>
102
+ <react_native_1.Text style={styles.triggerText}>Delete Echo Profile</react_native_1.Text>
103
+ </react_native_1.Pressable>
104
+ </react_native_1.View>);
105
+ }
106
+ return (<react_native_1.View style={styles.panel}>
107
+ <react_native_1.Text style={styles.panelTitle} accessibilityRole="header">
108
+ Delete Echo Profile
109
+ </react_native_1.Text>
110
+
111
+ {/* Before you delete info block */}
112
+ <react_native_1.View style={styles.infoBlock} accessible accessibilityRole="text" accessibilityLabel={a11yInfoLabel}>
113
+ <react_native_1.Text style={styles.infoTitle} importantForAccessibility="no">
114
+ Before you delete:
115
+ </react_native_1.Text>
116
+ {warningItems(hostAppName).map((item, i) => (<react_native_1.View key={i} style={styles.infoRow} importantForAccessibility="no" accessibilityElementsHidden>
117
+ <vector_icons_1.MaterialIcons name={item.icon} size={16} color={item.color}/>
118
+ <react_native_1.Text style={[
119
+ styles.infoText,
120
+ { color: item.color === theme_1.COLORS.error ? theme_1.COLORS.error : theme_1.COLORS.textSecondary },
121
+ ]}>
122
+ {item.text}
123
+ </react_native_1.Text>
124
+ </react_native_1.View>))}
125
+ </react_native_1.View>
126
+
127
+ {/* Confirmation field */}
128
+ <react_native_1.View style={styles.confirmRow}>
129
+ <react_native_1.Text style={styles.confirmLabel}>
130
+ {'Type '}
131
+ <react_native_1.Text style={styles.confirmKeyword}>DELETE</react_native_1.Text>
132
+ {' to confirm:'}
133
+ </react_native_1.Text>
134
+ <react_native_1.TextInput style={styles.confirmInput} value={confirmationText} onChangeText={onChangeConfirmationText} placeholder="DELETE" placeholderTextColor={theme_1.COLORS.textMuted} autoCapitalize="characters" autoCorrect={false} accessibilityLabel="Type DELETE to confirm account deletion" accessibilityHint="Must contain DELETE in capitals to enable the confirm button"/>
135
+ </react_native_1.View>
136
+
137
+ {/* Actions */}
138
+ <react_native_1.View style={styles.actions}>
139
+ <react_native_1.Pressable onPress={onCancel} style={({ pressed }) => [
140
+ styles.cancelBtn,
141
+ pressed && { opacity: 0.75 },
142
+ ]} accessibilityLabel="Cancel, do not delete" accessibilityRole="button">
143
+ <react_native_1.Text style={styles.cancelBtnText}>Cancel</react_native_1.Text>
144
+ </react_native_1.Pressable>
145
+
146
+ <react_native_1.Pressable onPress={canConfirm ? onConfirm : undefined} disabled={!canConfirm} style={({ pressed }) => [
147
+ styles.confirmBtn,
148
+ pressed && canConfirm && { opacity: 0.75 },
149
+ !canConfirm && styles.confirmBtnDisabled,
150
+ ]} accessibilityLabel="Confirm Echo Profile deletion" accessibilityRole="button" accessibilityHint="Schedules permanent deletion after a 15-day grace period" accessibilityState={{ disabled: !canConfirm }}>
151
+ {loading ? (<react_native_1.ActivityIndicator size="small" color="#fff"/>) : (<react_native_1.Text style={styles.confirmBtnText}>Schedule Deletion</react_native_1.Text>)}
152
+ </react_native_1.Pressable>
153
+ </react_native_1.View>
154
+ </react_native_1.View>);
155
+ }
156
+ // ─────────────────────────────────────────────────────────────────────────────
157
+ // Styles
158
+ // ─────────────────────────────────────────────────────────────────────────────
159
+ const styles = react_native_1.StyleSheet.create({
160
+ // Collapsed trigger
161
+ triggerWrap: {
162
+ marginTop: theme_1.SPACING.xs,
163
+ },
164
+ trigger: {
165
+ flexDirection: 'row',
166
+ alignItems: 'center',
167
+ justifyContent: 'center',
168
+ gap: theme_1.SPACING.sm,
169
+ paddingVertical: theme_1.SPACING.sm,
170
+ minHeight: 44,
171
+ },
172
+ triggerText: {
173
+ fontSize: theme_1.FONTS.sm,
174
+ color: theme_1.COLORS.error,
175
+ fontWeight: '600',
176
+ opacity: 0.75,
177
+ },
178
+ // Expanded panel
179
+ panel: {
180
+ backgroundColor: theme_1.COLORS.surface,
181
+ borderRadius: theme_1.RADIUS.xl,
182
+ borderWidth: 1,
183
+ borderColor: theme_1.COLORS.error + '55',
184
+ padding: theme_1.SPACING.xl,
185
+ gap: theme_1.SPACING.md,
186
+ },
187
+ panelTitle: {
188
+ fontSize: theme_1.FONTS.lg,
189
+ fontWeight: '800',
190
+ color: theme_1.COLORS.error,
191
+ textAlign: 'center',
192
+ letterSpacing: 0.3,
193
+ },
194
+ // Info block
195
+ infoBlock: {
196
+ backgroundColor: theme_1.COLORS.error + '08',
197
+ borderRadius: theme_1.RADIUS.lg,
198
+ borderWidth: 1,
199
+ borderColor: theme_1.COLORS.error + '22',
200
+ padding: theme_1.SPACING.md,
201
+ gap: theme_1.SPACING.sm,
202
+ },
203
+ infoTitle: {
204
+ fontSize: theme_1.FONTS.sm,
205
+ fontWeight: '700',
206
+ color: theme_1.COLORS.textPrimary,
207
+ marginBottom: theme_1.SPACING.xs,
208
+ },
209
+ infoRow: {
210
+ flexDirection: 'row',
211
+ alignItems: 'flex-start',
212
+ gap: theme_1.SPACING.sm,
213
+ },
214
+ infoText: {
215
+ flex: 1,
216
+ fontSize: theme_1.FONTS.sm,
217
+ lineHeight: 20,
218
+ },
219
+ // Confirmation field
220
+ confirmRow: {
221
+ gap: theme_1.SPACING.xs,
222
+ },
223
+ confirmLabel: {
224
+ fontSize: theme_1.FONTS.sm,
225
+ color: theme_1.COLORS.textSecondary,
226
+ fontWeight: '600',
227
+ },
228
+ confirmKeyword: {
229
+ color: theme_1.COLORS.error,
230
+ fontWeight: '800',
231
+ fontFamily: react_native_1.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
232
+ },
233
+ confirmInput: {
234
+ backgroundColor: theme_1.COLORS.surfaceHigh,
235
+ borderRadius: theme_1.RADIUS.md,
236
+ borderWidth: 1,
237
+ borderColor: theme_1.COLORS.error + '66',
238
+ paddingHorizontal: theme_1.SPACING.md,
239
+ paddingVertical: theme_1.SPACING.sm,
240
+ fontSize: theme_1.FONTS.md,
241
+ color: theme_1.COLORS.textPrimary,
242
+ minHeight: 48,
243
+ fontFamily: react_native_1.Platform.OS === 'ios' ? 'Menlo' : 'monospace',
244
+ letterSpacing: 2,
245
+ },
246
+ // Actions row
247
+ actions: {
248
+ flexDirection: 'row',
249
+ gap: theme_1.SPACING.md,
250
+ },
251
+ cancelBtn: {
252
+ flex: 1,
253
+ alignItems: 'center',
254
+ justifyContent: 'center',
255
+ borderRadius: theme_1.RADIUS.lg,
256
+ borderWidth: 1,
257
+ borderColor: theme_1.COLORS.border,
258
+ backgroundColor: theme_1.COLORS.surfaceHigh,
259
+ paddingVertical: theme_1.SPACING.md,
260
+ minHeight: 48,
261
+ },
262
+ cancelBtnText: {
263
+ fontSize: theme_1.FONTS.sm,
264
+ fontWeight: '600',
265
+ color: theme_1.COLORS.textSecondary,
266
+ },
267
+ confirmBtn: {
268
+ flex: 1,
269
+ alignItems: 'center',
270
+ justifyContent: 'center',
271
+ borderRadius: theme_1.RADIUS.lg,
272
+ backgroundColor: theme_1.COLORS.error,
273
+ paddingVertical: theme_1.SPACING.md,
274
+ minHeight: 48,
275
+ },
276
+ confirmBtnDisabled: {
277
+ opacity: 0.4,
278
+ },
279
+ confirmBtnText: {
280
+ fontSize: theme_1.FONTS.sm,
281
+ fontWeight: '700',
282
+ color: '#fff',
283
+ letterSpacing: 0.3,
284
+ },
285
+ });
286
+ //# sourceMappingURL=EchoDeleteProfilePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoDeleteProfilePanel.js","sourceRoot":"","sources":["../../src/components/EchoDeleteProfilePanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * EchoDeletionIntercept
3
+ *
4
+ * Presentation-only deletion-intercept screen content.
5
+ * Extracted from the deletion_intercept mode of the Echo UI Reference account screen.
6
+ *
7
+ * Shown when the user opens the account screen and an active deletion request
8
+ * is already in progress, blocking normal profile access.
9
+ *
10
+ * STATUS BEHAVIOR
11
+ * ──────────────
12
+ * pending → scheduled date, days remaining, Restore + Continue Deletion actions
13
+ * failed → "being completed" wording, no restore action (Continue Deletion only)
14
+ * processing → "cannot be interrupted" wording, Sign Out / Continue Deletion only
15
+ *
16
+ * HOST RESPONSIBILITIES
17
+ * ─────────────────────
18
+ * • Actual restore/cancel and sign-out operations
19
+ * • Loading state for the restore action (restoreLoading)
20
+ *
21
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
22
+ * Canonical shared component for @echoform/echo-ui.
23
+ */
24
+ import React from 'react';
25
+ export type EchoDeletionInterceptProps = {
26
+ status: 'pending' | 'failed' | 'processing';
27
+ /** ISO date string for the scheduled permanent deletion. */
28
+ scheduledFor?: string | null;
29
+ /** Days remaining until permanent deletion. */
30
+ daysRemaining?: number;
31
+ /** True while the restore RPC is in flight. */
32
+ restoreLoading?: boolean;
33
+ /** Called when the user taps Restore Echo Profile (pending status only). */
34
+ onRestore: () => void;
35
+ /** Called when the user taps Continue Deletion or Sign Out. */
36
+ onContinueDeletion: () => void;
37
+ };
38
+ export declare function EchoDeletionIntercept({ status, scheduledFor, daysRemaining, restoreLoading, onRestore, onContinueDeletion, }: EchoDeletionInterceptProps): React.JSX.Element;
39
+ //# sourceMappingURL=EchoDeletionIntercept.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoDeletionIntercept.d.ts","sourceRoot":"","sources":["../../src/components/EchoDeletionIntercept.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAc,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxD,4DAA4D;IAC5D,YAAY,CAAC,EAAO,MAAM,GAAG,IAAI,CAAC;IAClC,+CAA+C;IAC/C,aAAa,CAAC,EAAM,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,cAAc,CAAC,EAAK,OAAO,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,EAAW,MAAM,IAAI,CAAC;IAC/B,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC,CAAC;AAsBF,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,YAAY,EACZ,aAAkB,EAClB,cAAsB,EACtB,SAAS,EACT,kBAAkB,GACnB,EAAE,0BAA0B,qBA0J5B"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ /**
3
+ * EchoDeletionIntercept
4
+ *
5
+ * Presentation-only deletion-intercept screen content.
6
+ * Extracted from the deletion_intercept mode of the Echo UI Reference account screen.
7
+ *
8
+ * Shown when the user opens the account screen and an active deletion request
9
+ * is already in progress, blocking normal profile access.
10
+ *
11
+ * STATUS BEHAVIOR
12
+ * ──────────────
13
+ * pending → scheduled date, days remaining, Restore + Continue Deletion actions
14
+ * failed → "being completed" wording, no restore action (Continue Deletion only)
15
+ * processing → "cannot be interrupted" wording, Sign Out / Continue Deletion only
16
+ *
17
+ * HOST RESPONSIBILITIES
18
+ * ─────────────────────
19
+ * • Actual restore/cancel and sign-out operations
20
+ * • Loading state for the restore action (restoreLoading)
21
+ *
22
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
23
+ * Canonical shared component for @echoform/echo-ui.
24
+ */
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.EchoDeletionIntercept = EchoDeletionIntercept;
30
+ const react_1 = __importDefault(require("react"));
31
+ const react_native_1 = require("react-native");
32
+ const vector_icons_1 = require("@expo/vector-icons");
33
+ const theme_1 = require("../theme");
34
+ // ─────────────────────────────────────────────────────────────────────────────
35
+ // Package-local date formatter
36
+ // ─────────────────────────────────────────────────────────────────────────────
37
+ function formatDate(iso) {
38
+ try {
39
+ return new Date(iso).toLocaleDateString(undefined, {
40
+ day: 'numeric',
41
+ month: 'long',
42
+ year: 'numeric',
43
+ });
44
+ }
45
+ catch (_a) {
46
+ return iso;
47
+ }
48
+ }
49
+ // ─────────────────────────────────────────────────────────────────────────────
50
+ // Component
51
+ // ─────────────────────────────────────────────────────────────────────────────
52
+ function EchoDeletionIntercept({ status, scheduledFor, daysRemaining = 0, restoreLoading = false, onRestore, onContinueDeletion, }) {
53
+ // ── Accessibility label for the card ──────────────────────────────────────
54
+ const cardA11y = status === 'processing'
55
+ ? 'Echo Profile deletion is in progress and cannot be cancelled.'
56
+ : status === 'failed'
57
+ ? 'Echo Profile deletion is being completed.'
58
+ : `Echo Profile scheduled for deletion on ${scheduledFor ? formatDate(scheduledFor) : 'an upcoming date'}. ${daysRemaining} days remaining.`;
59
+ return (<react_native_1.View style={styles.container}>
60
+ {/* Card */}
61
+ <react_native_1.View style={styles.card} accessible accessibilityLabel={cardA11y}>
62
+ {/* Icon */}
63
+ <react_native_1.View style={[
64
+ styles.iconWrap,
65
+ {
66
+ backgroundColor: status === 'pending'
67
+ ? theme_1.COLORS.warning + '18'
68
+ : theme_1.COLORS.error + '18',
69
+ },
70
+ ]} importantForAccessibility="no" accessibilityElementsHidden>
71
+ <vector_icons_1.MaterialIcons name={status === 'pending' ? 'schedule' : 'delete-forever'} size={36} color={status === 'pending' ? theme_1.COLORS.warning : theme_1.COLORS.error}/>
72
+ </react_native_1.View>
73
+
74
+ {/* Content */}
75
+ {status === 'processing' ? (<>
76
+ <react_native_1.Text style={styles.title} accessibilityRole="header" importantForAccessibility="no">
77
+ Deletion In Progress
78
+ </react_native_1.Text>
79
+ <react_native_1.Text style={styles.body} importantForAccessibility="no">
80
+ Your Echo Profile is currently being permanently deleted. This
81
+ process cannot be interrupted or cancelled.
82
+ </react_native_1.Text>
83
+ </>) : status === 'failed' ? (<>
84
+ <react_native_1.Text style={styles.title} accessibilityRole="header" importantForAccessibility="no">
85
+ Deletion Being Completed
86
+ </react_native_1.Text>
87
+ <react_native_1.Text style={styles.body} importantForAccessibility="no">
88
+ Your Echo Profile deletion is being completed. This may take a
89
+ short while.
90
+ </react_native_1.Text>
91
+ <react_native_1.Text style={styles.body} importantForAccessibility="no">
92
+ If you believe this is an error, please contact support at
93
+ support@echoformproductions.com.
94
+ </react_native_1.Text>
95
+ </>) : (<>
96
+ <react_native_1.Text style={styles.title} accessibilityRole="header" importantForAccessibility="no">
97
+ Your Echo Profile Is Scheduled for Deletion
98
+ </react_native_1.Text>
99
+ <react_native_1.Text style={styles.body} importantForAccessibility="no">
100
+ {`Your profile will be permanently deleted on ${scheduledFor ? formatDate(scheduledFor) : 'an upcoming date'} — ${daysRemaining} day${daysRemaining !== 1 ? 's' : ''} from now.`}
101
+ </react_native_1.Text>
102
+ <react_native_1.Text style={styles.body} importantForAccessibility="no">
103
+ Restoring your profile will cancel the deletion and return
104
+ everything to normal.
105
+ </react_native_1.Text>
106
+ </>)}
107
+ </react_native_1.View>
108
+
109
+ {/* Actions */}
110
+ {status === 'pending' ? (<react_native_1.View style={styles.actions}>
111
+ {/* Restore */}
112
+ <react_native_1.Pressable onPress={onRestore} disabled={restoreLoading} style={({ pressed }) => [
113
+ styles.restoreBtn,
114
+ pressed && { opacity: 0.75 },
115
+ restoreLoading && { opacity: 0.5 },
116
+ ]} accessibilityLabel="Restore Echo Profile and cancel deletion" accessibilityRole="button" accessibilityState={{ busy: restoreLoading }}>
117
+ {restoreLoading ? (<react_native_1.ActivityIndicator size="small" color={theme_1.COLORS.neonGreen} importantForAccessibility="no"/>) : (<vector_icons_1.MaterialIcons name="restore" size={20} color={theme_1.COLORS.neonGreen} importantForAccessibility="no" accessibilityElementsHidden/>)}
118
+ <react_native_1.Text style={styles.restoreBtnText}>Restore Echo Profile</react_native_1.Text>
119
+ </react_native_1.Pressable>
120
+
121
+ {/* Continue Deletion */}
122
+ <react_native_1.Pressable onPress={onContinueDeletion} style={({ pressed }) => [
123
+ styles.continueBtn,
124
+ pressed && { opacity: 0.75 },
125
+ ]} accessibilityLabel="Continue with deletion and sign out" accessibilityRole="button" accessibilityHint="Leaves the deletion request active and signs you out">
126
+ <react_native_1.Text style={styles.continueBtnText}>Continue Deletion</react_native_1.Text>
127
+ </react_native_1.Pressable>
128
+ </react_native_1.View>) : (
129
+ /* processing / failed — Sign Out only */
130
+ <react_native_1.Pressable onPress={onContinueDeletion} style={({ pressed }) => [
131
+ styles.continueBtn,
132
+ { marginTop: theme_1.SPACING.lg },
133
+ pressed && { opacity: 0.75 },
134
+ ]} accessibilityLabel="Sign out" accessibilityRole="button">
135
+ <react_native_1.Text style={styles.continueBtnText}>Sign Out</react_native_1.Text>
136
+ </react_native_1.Pressable>)}
137
+ </react_native_1.View>);
138
+ }
139
+ // ─────────────────────────────────────────────────────────────────────────────
140
+ // Styles
141
+ // ─────────────────────────────────────────────────────────────────────────────
142
+ const styles = react_native_1.StyleSheet.create({
143
+ container: {
144
+ gap: theme_1.SPACING.xl,
145
+ paddingTop: theme_1.SPACING.md,
146
+ },
147
+ card: {
148
+ backgroundColor: theme_1.COLORS.surface,
149
+ borderRadius: theme_1.RADIUS.xl,
150
+ borderWidth: 1,
151
+ borderColor: theme_1.COLORS.error + '44',
152
+ padding: theme_1.SPACING.xl,
153
+ gap: theme_1.SPACING.md,
154
+ alignItems: 'center',
155
+ },
156
+ iconWrap: {
157
+ width: 72,
158
+ height: 72,
159
+ borderRadius: 36,
160
+ alignItems: 'center',
161
+ justifyContent: 'center',
162
+ marginBottom: theme_1.SPACING.sm,
163
+ },
164
+ title: {
165
+ fontSize: theme_1.FONTS.lg,
166
+ fontWeight: '800',
167
+ color: theme_1.COLORS.textPrimary,
168
+ textAlign: 'center',
169
+ letterSpacing: 0.3,
170
+ },
171
+ body: {
172
+ fontSize: theme_1.FONTS.sm,
173
+ color: theme_1.COLORS.textSecondary,
174
+ textAlign: 'center',
175
+ lineHeight: 22,
176
+ },
177
+ actions: {
178
+ gap: theme_1.SPACING.md,
179
+ width: '100%',
180
+ },
181
+ restoreBtn: {
182
+ flexDirection: 'row',
183
+ alignItems: 'center',
184
+ justifyContent: 'center',
185
+ gap: theme_1.SPACING.sm,
186
+ backgroundColor: theme_1.COLORS.neonGreen + '18',
187
+ borderRadius: theme_1.RADIUS.lg,
188
+ borderWidth: 1.5,
189
+ borderColor: theme_1.COLORS.neonGreen + 'CC',
190
+ paddingVertical: theme_1.SPACING.md,
191
+ minHeight: 54,
192
+ },
193
+ restoreBtnText: {
194
+ fontSize: theme_1.FONTS.md,
195
+ fontWeight: '700',
196
+ color: theme_1.COLORS.neonGreen,
197
+ letterSpacing: 0.3,
198
+ },
199
+ continueBtn: {
200
+ alignItems: 'center',
201
+ justifyContent: 'center',
202
+ paddingVertical: theme_1.SPACING.sm,
203
+ minHeight: 44,
204
+ },
205
+ continueBtnText: {
206
+ fontSize: theme_1.FONTS.sm,
207
+ color: theme_1.COLORS.textMuted,
208
+ fontWeight: '600',
209
+ textDecorationLine: 'underline',
210
+ },
211
+ });
212
+ //# sourceMappingURL=EchoDeletionIntercept.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoDeletionIntercept.js","sourceRoot":"","sources":["../../src/components/EchoDeletionIntercept.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * EchoDeletionStatusCard
3
+ *
4
+ * Presentation-only deletion-status card shown on the signed-in profile screen
5
+ * when an Echo Profile deletion has already been scheduled or is processing.
6
+ *
7
+ * Extracted from the deletion-card section of the Echo UI Reference account screen.
8
+ *
9
+ * STATUS BEHAVIOR
10
+ * ──────────────
11
+ * pending / failed → warning-styled "Deletion Scheduled" card with restore button
12
+ * processing → error-styled "Deletion In Progress" card, no restore button
13
+ *
14
+ * HOST RESPONSIBILITIES
15
+ * ─────────────────────
16
+ * • Actual cancellation / restoration RPC (onRestore)
17
+ * • Loading state while the restore RPC is in flight (restoreLoading)
18
+ *
19
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
20
+ * Canonical shared component for @echoform/echo-ui.
21
+ */
22
+ import React from 'react';
23
+ export type EchoDeletionStatusCardProps = {
24
+ status: 'pending' | 'failed' | 'processing';
25
+ /** ISO date string for the scheduled permanent deletion. */
26
+ scheduledFor?: string | null;
27
+ /** Days remaining until permanent deletion. */
28
+ daysRemaining?: number;
29
+ /** True while the restore RPC is in flight. */
30
+ restoreLoading?: boolean;
31
+ /** Called when the user taps Restore Echo Profile. Not rendered for processing. */
32
+ onRestore?: () => void;
33
+ };
34
+ export declare function EchoDeletionStatusCard({ status, scheduledFor, daysRemaining, restoreLoading, onRestore, }: EchoDeletionStatusCardProps): React.JSX.Element;
35
+ //# sourceMappingURL=EchoDeletionStatusCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoDeletionStatusCard.d.ts","sourceRoot":"","sources":["../../src/components/EchoDeletionStatusCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAW,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;IACrD,4DAA4D;IAC5D,YAAY,CAAC,EAAI,MAAM,GAAG,IAAI,CAAC;IAC/B,+CAA+C;IAC/C,aAAa,CAAC,EAAG,MAAM,CAAC;IACxB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mFAAmF;IACnF,SAAS,CAAC,EAAO,MAAM,IAAI,CAAC;CAC7B,CAAC;AAsBF,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,YAAY,EACZ,aAAkB,EAClB,cAAsB,EACtB,SAAS,GACV,EAAE,2BAA2B,qBAkG7B"}